diff --git a/build/assets/index-7cbbe5fd.js b/build/assets/index-59a13997.js similarity index 84% rename from build/assets/index-7cbbe5fd.js rename to build/assets/index-59a13997.js index 950091f27..7f87db9a7 100644 --- a/build/assets/index-7cbbe5fd.js +++ b/build/assets/index-59a13997.js @@ -1,4 +1,4 @@ -var r4=Object.defineProperty;var i4=(tt,et,nt)=>et in tt?r4(tt,et,{enumerable:!0,configurable:!0,writable:!0,value:nt}):tt[et]=nt;var o4=(tt,et)=>()=>(et||tt((et={exports:{}}).exports,et),et.exports);var mw=(tt,et,nt)=>(i4(tt,typeof et!="symbol"?et+"":et,nt),nt);var s4=o4((exports,module)=>{function _mergeNamespaces(tt,et){for(var nt=0;ntrt[it]})}}}return Object.freeze(Object.defineProperty(tt,Symbol.toStringTag,{value:"Module"}))}(function(){const et=document.createElement("link").relList;if(et&&et.supports&&et.supports("modulepreload"))return;for(const it of document.querySelectorAll('link[rel="modulepreload"]'))rt(it);new MutationObserver(it=>{for(const ot of it)if(ot.type==="childList")for(const at of ot.addedNodes)at.tagName==="LINK"&&at.rel==="modulepreload"&&rt(at)}).observe(document,{childList:!0,subtree:!0});function nt(it){const ot={};return it.integrity&&(ot.integrity=it.integrity),it.referrerPolicy&&(ot.referrerPolicy=it.referrerPolicy),it.crossOrigin==="use-credentials"?ot.credentials="include":it.crossOrigin==="anonymous"?ot.credentials="omit":ot.credentials="same-origin",ot}function rt(it){if(it.ep)return;it.ep=!0;const ot=nt(it);fetch(it.href,ot)}})();var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(tt){return tt&&tt.__esModule&&Object.prototype.hasOwnProperty.call(tt,"default")?tt.default:tt}function getAugmentedNamespace(tt){if(tt.__esModule)return tt;var et=tt.default;if(typeof et=="function"){var nt=function rt(){return this instanceof rt?Reflect.construct(et,arguments,this.constructor):et.apply(this,arguments)};nt.prototype=et.prototype}else nt={};return Object.defineProperty(nt,"__esModule",{value:!0}),Object.keys(tt).forEach(function(rt){var it=Object.getOwnPropertyDescriptor(tt,rt);Object.defineProperty(nt,rt,it.get?it:{enumerable:!0,get:function(){return tt[rt]}})}),nt}var buffer$2={},base64Js={};base64Js.byteLength=byteLength$1;base64Js.toByteArray=toByteArray;base64Js.fromByteArray=fromByteArray;var lookup$2=[],revLookup=[],Arr=typeof Uint8Array<"u"?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i$8=0,len=code.length;i$80)throw new Error("Invalid string. Length must be a multiple of 4");var nt=tt.indexOf("=");nt===-1&&(nt=et);var rt=nt===et?0:4-nt%4;return[nt,rt]}function byteLength$1(tt){var et=getLens(tt),nt=et[0],rt=et[1];return(nt+rt)*3/4-rt}function _byteLength(tt,et,nt){return(et+nt)*3/4-nt}function toByteArray(tt){var et,nt=getLens(tt),rt=nt[0],it=nt[1],ot=new Arr(_byteLength(tt,rt,it)),at=0,st=it>0?rt-4:rt,lt;for(lt=0;lt>16&255,ot[at++]=et>>8&255,ot[at++]=et&255;return it===2&&(et=revLookup[tt.charCodeAt(lt)]<<2|revLookup[tt.charCodeAt(lt+1)]>>4,ot[at++]=et&255),it===1&&(et=revLookup[tt.charCodeAt(lt)]<<10|revLookup[tt.charCodeAt(lt+1)]<<4|revLookup[tt.charCodeAt(lt+2)]>>2,ot[at++]=et>>8&255,ot[at++]=et&255),ot}function tripletToBase64(tt){return lookup$2[tt>>18&63]+lookup$2[tt>>12&63]+lookup$2[tt>>6&63]+lookup$2[tt&63]}function encodeChunk(tt,et,nt){for(var rt,it=[],ot=et;otst?st:at+ot));return rt===1?(et=tt[nt-1],it.push(lookup$2[et>>2]+lookup$2[et<<4&63]+"==")):rt===2&&(et=(tt[nt-2]<<8)+tt[nt-1],it.push(lookup$2[et>>10]+lookup$2[et>>4&63]+lookup$2[et<<2&63]+"=")),it.join("")}var ieee754={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ieee754.read=function(tt,et,nt,rt,it){var ot,at,st=it*8-rt-1,lt=(1<>1,ut=-7,ht=nt?it-1:0,dt=nt?-1:1,pt=tt[et+ht];for(ht+=dt,ot=pt&(1<<-ut)-1,pt>>=-ut,ut+=st;ut>0;ot=ot*256+tt[et+ht],ht+=dt,ut-=8);for(at=ot&(1<<-ut)-1,ot>>=-ut,ut+=rt;ut>0;at=at*256+tt[et+ht],ht+=dt,ut-=8);if(ot===0)ot=1-ct;else{if(ot===lt)return at?NaN:(pt?-1:1)*(1/0);at=at+Math.pow(2,rt),ot=ot-ct}return(pt?-1:1)*at*Math.pow(2,ot-rt)};ieee754.write=function(tt,et,nt,rt,it,ot){var at,st,lt,ct=ot*8-it-1,ut=(1<>1,dt=it===23?Math.pow(2,-24)-Math.pow(2,-77):0,pt=rt?0:ot-1,mt=rt?1:-1,gt=et<0||et===0&&1/et<0?1:0;for(et=Math.abs(et),isNaN(et)||et===1/0?(st=isNaN(et)?1:0,at=ut):(at=Math.floor(Math.log(et)/Math.LN2),et*(lt=Math.pow(2,-at))<1&&(at--,lt*=2),at+ht>=1?et+=dt/lt:et+=dt*Math.pow(2,1-ht),et*lt>=2&&(at++,lt/=2),at+ht>=ut?(st=0,at=ut):at+ht>=1?(st=(et*lt-1)*Math.pow(2,it),at=at+ht):(st=et*Math.pow(2,ht-1)*Math.pow(2,it),at=0));it>=8;tt[nt+pt]=st&255,pt+=mt,st/=256,it-=8);for(at=at<0;tt[nt+pt]=at&255,pt+=mt,at/=256,ct-=8);tt[nt+pt-mt]|=gt*128};/*! +var i4=Object.defineProperty;var o4=(tt,et,nt)=>et in tt?i4(tt,et,{enumerable:!0,configurable:!0,writable:!0,value:nt}):tt[et]=nt;var s4=(tt,et)=>()=>(et||tt((et={exports:{}}).exports,et),et.exports);var gw=(tt,et,nt)=>(o4(tt,typeof et!="symbol"?et+"":et,nt),nt);var l4=s4((exports,module)=>{function _mergeNamespaces(tt,et){for(var nt=0;ntrt[it]})}}}return Object.freeze(Object.defineProperty(tt,Symbol.toStringTag,{value:"Module"}))}(function(){const et=document.createElement("link").relList;if(et&&et.supports&&et.supports("modulepreload"))return;for(const it of document.querySelectorAll('link[rel="modulepreload"]'))rt(it);new MutationObserver(it=>{for(const ot of it)if(ot.type==="childList")for(const at of ot.addedNodes)at.tagName==="LINK"&&at.rel==="modulepreload"&&rt(at)}).observe(document,{childList:!0,subtree:!0});function nt(it){const ot={};return it.integrity&&(ot.integrity=it.integrity),it.referrerPolicy&&(ot.referrerPolicy=it.referrerPolicy),it.crossOrigin==="use-credentials"?ot.credentials="include":it.crossOrigin==="anonymous"?ot.credentials="omit":ot.credentials="same-origin",ot}function rt(it){if(it.ep)return;it.ep=!0;const ot=nt(it);fetch(it.href,ot)}})();var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(tt){return tt&&tt.__esModule&&Object.prototype.hasOwnProperty.call(tt,"default")?tt.default:tt}function getAugmentedNamespace(tt){if(tt.__esModule)return tt;var et=tt.default;if(typeof et=="function"){var nt=function rt(){return this instanceof rt?Reflect.construct(et,arguments,this.constructor):et.apply(this,arguments)};nt.prototype=et.prototype}else nt={};return Object.defineProperty(nt,"__esModule",{value:!0}),Object.keys(tt).forEach(function(rt){var it=Object.getOwnPropertyDescriptor(tt,rt);Object.defineProperty(nt,rt,it.get?it:{enumerable:!0,get:function(){return tt[rt]}})}),nt}var buffer$2={},base64Js={};base64Js.byteLength=byteLength$1;base64Js.toByteArray=toByteArray;base64Js.fromByteArray=fromByteArray;var lookup$2=[],revLookup=[],Arr=typeof Uint8Array<"u"?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i$8=0,len=code.length;i$80)throw new Error("Invalid string. Length must be a multiple of 4");var nt=tt.indexOf("=");nt===-1&&(nt=et);var rt=nt===et?0:4-nt%4;return[nt,rt]}function byteLength$1(tt){var et=getLens(tt),nt=et[0],rt=et[1];return(nt+rt)*3/4-rt}function _byteLength(tt,et,nt){return(et+nt)*3/4-nt}function toByteArray(tt){var et,nt=getLens(tt),rt=nt[0],it=nt[1],ot=new Arr(_byteLength(tt,rt,it)),at=0,st=it>0?rt-4:rt,lt;for(lt=0;lt>16&255,ot[at++]=et>>8&255,ot[at++]=et&255;return it===2&&(et=revLookup[tt.charCodeAt(lt)]<<2|revLookup[tt.charCodeAt(lt+1)]>>4,ot[at++]=et&255),it===1&&(et=revLookup[tt.charCodeAt(lt)]<<10|revLookup[tt.charCodeAt(lt+1)]<<4|revLookup[tt.charCodeAt(lt+2)]>>2,ot[at++]=et>>8&255,ot[at++]=et&255),ot}function tripletToBase64(tt){return lookup$2[tt>>18&63]+lookup$2[tt>>12&63]+lookup$2[tt>>6&63]+lookup$2[tt&63]}function encodeChunk(tt,et,nt){for(var rt,it=[],ot=et;otst?st:at+ot));return rt===1?(et=tt[nt-1],it.push(lookup$2[et>>2]+lookup$2[et<<4&63]+"==")):rt===2&&(et=(tt[nt-2]<<8)+tt[nt-1],it.push(lookup$2[et>>10]+lookup$2[et>>4&63]+lookup$2[et<<2&63]+"=")),it.join("")}var ieee754={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ieee754.read=function(tt,et,nt,rt,it){var ot,at,st=it*8-rt-1,lt=(1<>1,ut=-7,ht=nt?it-1:0,dt=nt?-1:1,pt=tt[et+ht];for(ht+=dt,ot=pt&(1<<-ut)-1,pt>>=-ut,ut+=st;ut>0;ot=ot*256+tt[et+ht],ht+=dt,ut-=8);for(at=ot&(1<<-ut)-1,ot>>=-ut,ut+=rt;ut>0;at=at*256+tt[et+ht],ht+=dt,ut-=8);if(ot===0)ot=1-ct;else{if(ot===lt)return at?NaN:(pt?-1:1)*(1/0);at=at+Math.pow(2,rt),ot=ot-ct}return(pt?-1:1)*at*Math.pow(2,ot-rt)};ieee754.write=function(tt,et,nt,rt,it,ot){var at,st,lt,ct=ot*8-it-1,ut=(1<>1,dt=it===23?Math.pow(2,-24)-Math.pow(2,-77):0,pt=rt?0:ot-1,mt=rt?1:-1,gt=et<0||et===0&&1/et<0?1:0;for(et=Math.abs(et),isNaN(et)||et===1/0?(st=isNaN(et)?1:0,at=ut):(at=Math.floor(Math.log(et)/Math.LN2),et*(lt=Math.pow(2,-at))<1&&(at--,lt*=2),at+ht>=1?et+=dt/lt:et+=dt*Math.pow(2,1-ht),et*lt>=2&&(at++,lt/=2),at+ht>=ut?(st=0,at=ut):at+ht>=1?(st=(et*lt-1)*Math.pow(2,it),at=at+ht):(st=et*Math.pow(2,ht-1)*Math.pow(2,it),at=0));it>=8;tt[nt+pt]=st&255,pt+=mt,st/=256,it-=8);for(at=at<0;tt[nt+pt]=at&255,pt+=mt,at/=256,ct-=8);tt[nt+pt-mt]|=gt*128};/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh @@ -193,7 +193,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho animation-delay: 200ms; } `),touchRippleClasses$1.rippleVisible,enterKeyframe,DURATION,({theme:tt})=>tt.transitions.easing.easeInOut,touchRippleClasses$1.ripplePulsate,({theme:tt})=>tt.transitions.duration.shorter,touchRippleClasses$1.child,touchRippleClasses$1.childLeaving,exitKeyframe,DURATION,({theme:tt})=>tt.transitions.easing.easeInOut,touchRippleClasses$1.childPulsate,pulsateKeyframe,({theme:tt})=>tt.transitions.easing.easeInOut),TouchRipple=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiTouchRipple"}),{center:it=!1,classes:ot={},className:at}=rt,st=_objectWithoutPropertiesLoose$m(rt,_excluded$1v),[lt,ct]=reactExports.useState([]),ut=reactExports.useRef(0),ht=reactExports.useRef(null);reactExports.useEffect(()=>{ht.current&&(ht.current(),ht.current=null)},[lt]);const dt=reactExports.useRef(!1),pt=reactExports.useRef(0),mt=reactExports.useRef(null),gt=reactExports.useRef(null);reactExports.useEffect(()=>()=>{pt.current&&clearTimeout(pt.current)},[]);const yt=reactExports.useCallback(kt=>{const{pulsate:St,rippleX:Tt,rippleY:At,rippleSize:Et,cb:$t}=kt;ct(Dt=>[...Dt,jsxRuntimeExports.jsx(TouchRippleRipple,{classes:{ripple:clsx$3(ot.ripple,touchRippleClasses$1.ripple),rippleVisible:clsx$3(ot.rippleVisible,touchRippleClasses$1.rippleVisible),ripplePulsate:clsx$3(ot.ripplePulsate,touchRippleClasses$1.ripplePulsate),child:clsx$3(ot.child,touchRippleClasses$1.child),childLeaving:clsx$3(ot.childLeaving,touchRippleClasses$1.childLeaving),childPulsate:clsx$3(ot.childPulsate,touchRippleClasses$1.childPulsate)},timeout:DURATION,pulsate:St,rippleX:Tt,rippleY:At,rippleSize:Et},ut.current)]),ut.current+=1,ht.current=$t},[ot]),bt=reactExports.useCallback((kt={},St={},Tt=()=>{})=>{const{pulsate:At=!1,center:Et=it||St.pulsate,fakeElement:$t=!1}=St;if((kt==null?void 0:kt.type)==="mousedown"&&dt.current){dt.current=!1;return}(kt==null?void 0:kt.type)==="touchstart"&&(dt.current=!0);const Dt=$t?null:gt.current,jt=Dt?Dt.getBoundingClientRect():{width:0,height:0,left:0,top:0};let Pt,Ct,wt;if(Et||kt===void 0||kt.clientX===0&&kt.clientY===0||!kt.clientX&&!kt.touches)Pt=Math.round(jt.width/2),Ct=Math.round(jt.height/2);else{const{clientX:It,clientY:Ot}=kt.touches&&kt.touches.length>0?kt.touches[0]:kt;Pt=Math.round(It-jt.left),Ct=Math.round(Ot-jt.top)}if(Et)wt=Math.sqrt((2*jt.width**2+jt.height**2)/3),wt%2===0&&(wt+=1);else{const It=Math.max(Math.abs((Dt?Dt.clientWidth:0)-Pt),Pt)*2+2,Ot=Math.max(Math.abs((Dt?Dt.clientHeight:0)-Ct),Ct)*2+2;wt=Math.sqrt(It**2+Ot**2)}kt!=null&&kt.touches?mt.current===null&&(mt.current=()=>{yt({pulsate:At,rippleX:Pt,rippleY:Ct,rippleSize:wt,cb:Tt})},pt.current=setTimeout(()=>{mt.current&&(mt.current(),mt.current=null)},DELAY_RIPPLE)):yt({pulsate:At,rippleX:Pt,rippleY:Ct,rippleSize:wt,cb:Tt})},[it,yt]),vt=reactExports.useCallback(()=>{bt({},{pulsate:!0})},[bt]),xt=reactExports.useCallback((kt,St)=>{if(clearTimeout(pt.current),(kt==null?void 0:kt.type)==="touchend"&&mt.current){mt.current(),mt.current=null,pt.current=setTimeout(()=>{xt(kt,St)});return}mt.current=null,ct(Tt=>Tt.length>0?Tt.slice(1):Tt),ht.current=St},[]);return reactExports.useImperativeHandle(nt,()=>({pulsate:vt,start:bt,stop:xt}),[vt,bt,xt]),jsxRuntimeExports.jsx(TouchRippleRoot,_extends$u({className:clsx$3(touchRippleClasses$1.root,ot.root,at),ref:gt},st,{children:jsxRuntimeExports.jsx(TransitionGroup$1,{component:null,exit:!0,children:lt})}))}),TouchRipple$1=TouchRipple;function getButtonBaseUtilityClass(tt){return generateUtilityClass("MuiButtonBase",tt)}const buttonBaseClasses=generateUtilityClasses("MuiButtonBase",["root","disabled","focusVisible"]),buttonBaseClasses$1=buttonBaseClasses,_excluded$1u=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],useUtilityClasses$U=tt=>{const{disabled:et,focusVisible:nt,focusVisibleClassName:rt,classes:it}=tt,at=composeClasses({root:["root",et&&"disabled",nt&&"focusVisible"]},getButtonBaseUtilityClass,it);return nt&&rt&&(at.root+=` ${rt}`),at},ButtonBaseRoot=styled$1("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(tt,et)=>et.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"},[`&.${buttonBaseClasses$1.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),ButtonBase=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiButtonBase"}),{action:it,centerRipple:ot=!1,children:at,className:st,component:lt="button",disabled:ct=!1,disableRipple:ut=!1,disableTouchRipple:ht=!1,focusRipple:dt=!1,LinkComponent:pt="a",onBlur:mt,onClick:gt,onContextMenu:yt,onDragLeave:bt,onFocus:vt,onFocusVisible:xt,onKeyDown:kt,onKeyUp:St,onMouseDown:Tt,onMouseLeave:At,onMouseUp:Et,onTouchEnd:$t,onTouchMove:Dt,onTouchStart:jt,tabIndex:Pt=0,TouchRippleProps:Ct,touchRippleRef:wt,type:It}=rt,Ot=_objectWithoutPropertiesLoose$m(rt,_excluded$1u),Wt=reactExports.useRef(null),zt=reactExports.useRef(null),Ft=useForkRef(zt,wt),{isFocusVisibleRef:Nt,onFocus:Ut,onBlur:Mt,ref:Ht}=useIsFocusVisible(),[en,sn]=reactExports.useState(!1);ct&&en&&sn(!1),reactExports.useImperativeHandle(it,()=>({focusVisible:()=>{sn(!0),Wt.current.focus()}}),[]);const[Kt,rn]=reactExports.useState(!1);reactExports.useEffect(()=>{rn(!0)},[]);const nn=Kt&&!ut&&!ct;reactExports.useEffect(()=>{en&&dt&&!ut&&Kt&&zt.current.pulsate()},[ut,dt,en,Kt]);function hn(Xt,Sn,Rn=ht){return useEventCallback(jn=>(Sn&&Sn(jn),!Rn&&zt.current&&zt.current[Xt](jn),!0))}const vn=hn("start",Tt),an=hn("stop",yt),Qt=hn("stop",bt),_n=hn("stop",Et),Pn=hn("stop",Xt=>{en&&Xt.preventDefault(),At&&At(Xt)}),$n=hn("start",jt),Nn=hn("stop",$t),Tn=hn("stop",Dt),cn=hn("stop",Xt=>{Mt(Xt),Nt.current===!1&&sn(!1),mt&&mt(Xt)},!1),mn=useEventCallback(Xt=>{Wt.current||(Wt.current=Xt.currentTarget),Ut(Xt),Nt.current===!0&&(sn(!0),xt&&xt(Xt)),vt&&vt(Xt)}),In=()=>{const Xt=Wt.current;return lt&<!=="button"&&!(Xt.tagName==="A"&&Xt.href)},An=reactExports.useRef(!1),wn=useEventCallback(Xt=>{dt&&!An.current&&en&&zt.current&&Xt.key===" "&&(An.current=!0,zt.current.stop(Xt,()=>{zt.current.start(Xt)})),Xt.target===Xt.currentTarget&&In()&&Xt.key===" "&&Xt.preventDefault(),kt&&kt(Xt),Xt.target===Xt.currentTarget&&In()&&Xt.key==="Enter"&&!ct&&(Xt.preventDefault(),gt&>(Xt))}),fn=useEventCallback(Xt=>{dt&&Xt.key===" "&&zt.current&&en&&!Xt.defaultPrevented&&(An.current=!1,zt.current.stop(Xt,()=>{zt.current.pulsate(Xt)})),St&&St(Xt),gt&&Xt.target===Xt.currentTarget&&In()&&Xt.key===" "&&!Xt.defaultPrevented&>(Xt)});let pn=lt;pn==="button"&&(Ot.href||Ot.to)&&(pn=pt);const kn={};pn==="button"?(kn.type=It===void 0?"button":It,kn.disabled=ct):(!Ot.href&&!Ot.to&&(kn.role="button"),ct&&(kn["aria-disabled"]=ct));const Dn=useForkRef(nt,Ht,Wt),un=_extends$u({},rt,{centerRipple:ot,component:lt,disabled:ct,disableRipple:ut,disableTouchRipple:ht,focusRipple:dt,tabIndex:Pt,focusVisible:en}),Zt=useUtilityClasses$U(un);return jsxRuntimeExports.jsxs(ButtonBaseRoot,_extends$u({as:pn,className:clsx$3(Zt.root,st),ownerState:un,onBlur:cn,onClick:gt,onContextMenu:an,onFocus:mn,onKeyDown:wn,onKeyUp:fn,onMouseDown:vn,onMouseLeave:Pn,onMouseUp:_n,onDragLeave:Qt,onTouchEnd:Nn,onTouchMove:Tn,onTouchStart:$n,ref:Dn,tabIndex:ct?-1:Pt,type:It},kn,Ot,{children:[at,nn?jsxRuntimeExports.jsx(TouchRipple$1,_extends$u({ref:Ft,center:ot},Ct)):null]}))}),ButtonBase$1=ButtonBase;function getIconButtonUtilityClass(tt){return generateUtilityClass("MuiIconButton",tt)}const iconButtonClasses=generateUtilityClasses("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]),iconButtonClasses$1=iconButtonClasses,_excluded$1t=["edge","children","className","color","disabled","disableFocusRipple","size"],useUtilityClasses$T=tt=>{const{classes:et,disabled:nt,color:rt,edge:it,size:ot}=tt,at={root:["root",nt&&"disabled",rt!=="default"&&`color${capitalize(rt)}`,it&&`edge${capitalize(it)}`,`size${capitalize(ot)}`]};return composeClasses(at,getIconButtonUtilityClass,et)},IconButtonRoot=styled$1(ButtonBase$1,{name:"MuiIconButton",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.color!=="default"&&et[`color${capitalize(nt.color)}`],nt.edge&&et[`edge${capitalize(nt.edge)}`],et[`size${capitalize(nt.size)}`]]}})(({theme:tt,ownerState:et})=>_extends$u({textAlign:"center",flex:"0 0 auto",fontSize:tt.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(tt.vars||tt).palette.action.active,transition:tt.transitions.create("background-color",{duration:tt.transitions.duration.shortest})},!et.disableRipple&&{"&:hover":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},et.edge==="start"&&{marginLeft:et.size==="small"?-3:-12},et.edge==="end"&&{marginRight:et.size==="small"?-3:-12}),({theme:tt,ownerState:et})=>{var nt;const rt=(nt=(tt.vars||tt).palette)==null?void 0:nt[et.color];return _extends$u({},et.color==="inherit"&&{color:"inherit"},et.color!=="inherit"&&et.color!=="default"&&_extends$u({color:rt==null?void 0:rt.main},!et.disableRipple&&{"&:hover":_extends$u({},rt&&{backgroundColor:tt.vars?`rgba(${rt.mainChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(rt.main,tt.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),et.size==="small"&&{padding:5,fontSize:tt.typography.pxToRem(18)},et.size==="large"&&{padding:12,fontSize:tt.typography.pxToRem(28)},{[`&.${iconButtonClasses$1.disabled}`]:{backgroundColor:"transparent",color:(tt.vars||tt).palette.action.disabled}})}),IconButton$1=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiIconButton"}),{edge:it=!1,children:ot,className:at,color:st="default",disabled:lt=!1,disableFocusRipple:ct=!1,size:ut="medium"}=rt,ht=_objectWithoutPropertiesLoose$m(rt,_excluded$1t),dt=_extends$u({},rt,{edge:it,color:st,disabled:lt,disableFocusRipple:ct,size:ut}),pt=useUtilityClasses$T(dt);return jsxRuntimeExports.jsx(IconButtonRoot,_extends$u({className:clsx$3(pt.root,at),centerRipple:!0,focusRipple:!ct,disabled:lt,ref:nt,ownerState:dt},ht,{children:ot}))}),IconButton$2=IconButton$1;function getTypographyUtilityClass(tt){return generateUtilityClass("MuiTypography",tt)}generateUtilityClasses("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const _excluded$1s=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],useUtilityClasses$S=tt=>{const{align:et,gutterBottom:nt,noWrap:rt,paragraph:it,variant:ot,classes:at}=tt,st={root:["root",ot,tt.align!=="inherit"&&`align${capitalize(et)}`,nt&&"gutterBottom",rt&&"noWrap",it&&"paragraph"]};return composeClasses(st,getTypographyUtilityClass,at)},TypographyRoot=styled$1("span",{name:"MuiTypography",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.variant&&et[nt.variant],nt.align!=="inherit"&&et[`align${capitalize(nt.align)}`],nt.noWrap&&et.noWrap,nt.gutterBottom&&et.gutterBottom,nt.paragraph&&et.paragraph]}})(({theme:tt,ownerState:et})=>_extends$u({margin:0},et.variant==="inherit"&&{font:"inherit"},et.variant!=="inherit"&&tt.typography[et.variant],et.align!=="inherit"&&{textAlign:et.align},et.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},et.gutterBottom&&{marginBottom:"0.35em"},et.paragraph&&{marginBottom:16})),defaultVariantMapping={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},colorTransformations={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},transformDeprecatedColors=tt=>colorTransformations[tt]||tt,Typography=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiTypography"}),it=transformDeprecatedColors(rt.color),ot=extendSxProp(_extends$u({},rt,{color:it})),{align:at="inherit",className:st,component:lt,gutterBottom:ct=!1,noWrap:ut=!1,paragraph:ht=!1,variant:dt="body1",variantMapping:pt=defaultVariantMapping}=ot,mt=_objectWithoutPropertiesLoose$m(ot,_excluded$1s),gt=_extends$u({},ot,{align:at,color:it,className:st,component:lt,gutterBottom:ct,noWrap:ut,paragraph:ht,variant:dt,variantMapping:pt}),yt=lt||(ht?"p":pt[dt]||defaultVariantMapping[dt])||"span",bt=useUtilityClasses$S(gt);return jsxRuntimeExports.jsx(TypographyRoot,_extends$u({as:yt,ref:nt,ownerState:gt,className:clsx$3(bt.root,st)},mt))}),Typography$1=Typography;function isHostComponent(tt){return typeof tt=="string"}function appendOwnerState(tt,et,nt){return tt===void 0||isHostComponent(tt)?et:_extends$u({},et,{ownerState:_extends$u({},et.ownerState,nt)})}function areArraysEqual$1(tt,et,nt=(rt,it)=>rt===it){return tt.length===et.length&&tt.every((rt,it)=>nt(rt,et[it]))}const defaultContextValue={disableDefaultClasses:!1},ClassNameConfiguratorContext=reactExports.createContext(defaultContextValue);function useClassNamesOverride(tt){const{disableDefaultClasses:et}=reactExports.useContext(ClassNameConfiguratorContext);return nt=>et?"":tt(nt)}function extractEventHandlers(tt,et=[]){if(tt===void 0)return{};const nt={};return Object.keys(tt).filter(rt=>rt.match(/^on[A-Z]/)&&typeof tt[rt]=="function"&&!et.includes(rt)).forEach(rt=>{nt[rt]=tt[rt]}),nt}function resolveComponentProps(tt,et,nt){return typeof tt=="function"?tt(et,nt):tt}function r$7(tt){var et,nt,rt="";if(typeof tt=="string"||typeof tt=="number")rt+=tt;else if(typeof tt=="object")if(Array.isArray(tt))for(et=0;et!(nt.match(/^on[A-Z]/)&&typeof tt[nt]=="function")).forEach(nt=>{et[nt]=tt[nt]}),et}function mergeSlotProps(tt){const{getSlotProps:et,additionalProps:nt,externalSlotProps:rt,externalForwardedProps:it,className:ot}=tt;if(!et){const pt=clsx$2(it==null?void 0:it.className,rt==null?void 0:rt.className,ot,nt==null?void 0:nt.className),mt=_extends$u({},nt==null?void 0:nt.style,it==null?void 0:it.style,rt==null?void 0:rt.style),gt=_extends$u({},nt,it,rt);return pt.length>0&&(gt.className=pt),Object.keys(mt).length>0&&(gt.style=mt),{props:gt,internalRef:void 0}}const at=extractEventHandlers(_extends$u({},it,rt)),st=omitEventHandlers(rt),lt=omitEventHandlers(it),ct=et(at),ut=clsx$2(ct==null?void 0:ct.className,nt==null?void 0:nt.className,ot,it==null?void 0:it.className,rt==null?void 0:rt.className),ht=_extends$u({},ct==null?void 0:ct.style,nt==null?void 0:nt.style,it==null?void 0:it.style,rt==null?void 0:rt.style),dt=_extends$u({},ct,nt,lt,st);return ut.length>0&&(dt.className=ut),Object.keys(ht).length>0&&(dt.style=ht),{props:dt,internalRef:ct.ref}}const _excluded$1r=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function useSlotProps(tt){var et;const{elementType:nt,externalSlotProps:rt,ownerState:it,skipResolvingSlotProps:ot=!1}=tt,at=_objectWithoutPropertiesLoose$m(tt,_excluded$1r),st=ot?{}:resolveComponentProps(rt,it),{props:lt,internalRef:ct}=mergeSlotProps(_extends$u({},at,{externalSlotProps:st})),ut=useForkRef(ct,st==null?void 0:st.ref,(et=tt.additionalProps)==null?void 0:et.ref);return appendOwnerState(nt,_extends$u({},lt,{ref:ut}),it)}const candidatesSelector=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function getTabIndex(tt){const et=parseInt(tt.getAttribute("tabindex")||"",10);return Number.isNaN(et)?tt.contentEditable==="true"||(tt.nodeName==="AUDIO"||tt.nodeName==="VIDEO"||tt.nodeName==="DETAILS")&&tt.getAttribute("tabindex")===null?0:tt.tabIndex:et}function isNonTabbableRadio(tt){if(tt.tagName!=="INPUT"||tt.type!=="radio"||!tt.name)return!1;const et=rt=>tt.ownerDocument.querySelector(`input[type="radio"]${rt}`);let nt=et(`[name="${tt.name}"]:checked`);return nt||(nt=et(`[name="${tt.name}"]`)),nt!==tt}function isNodeMatchingSelectorFocusable(tt){return!(tt.disabled||tt.tagName==="INPUT"&&tt.type==="hidden"||isNonTabbableRadio(tt))}function defaultGetTabbable(tt){const et=[],nt=[];return Array.from(tt.querySelectorAll(candidatesSelector)).forEach((rt,it)=>{const ot=getTabIndex(rt);ot===-1||!isNodeMatchingSelectorFocusable(rt)||(ot===0?et.push(rt):nt.push({documentOrder:it,tabIndex:ot,node:rt}))}),nt.sort((rt,it)=>rt.tabIndex===it.tabIndex?rt.documentOrder-it.documentOrder:rt.tabIndex-it.tabIndex).map(rt=>rt.node).concat(et)}function defaultIsEnabled(){return!0}function FocusTrap(tt){const{children:et,disableAutoFocus:nt=!1,disableEnforceFocus:rt=!1,disableRestoreFocus:it=!1,getTabbable:ot=defaultGetTabbable,isEnabled:at=defaultIsEnabled,open:st}=tt,lt=reactExports.useRef(!1),ct=reactExports.useRef(null),ut=reactExports.useRef(null),ht=reactExports.useRef(null),dt=reactExports.useRef(null),pt=reactExports.useRef(!1),mt=reactExports.useRef(null),gt=useForkRef(et.ref,mt),yt=reactExports.useRef(null);reactExports.useEffect(()=>{!st||!mt.current||(pt.current=!nt)},[nt,st]),reactExports.useEffect(()=>{if(!st||!mt.current)return;const xt=ownerDocument(mt.current);return mt.current.contains(xt.activeElement)||(mt.current.hasAttribute("tabIndex")||mt.current.setAttribute("tabIndex","-1"),pt.current&&mt.current.focus()),()=>{it||(ht.current&&ht.current.focus&&(lt.current=!0,ht.current.focus()),ht.current=null)}},[st]),reactExports.useEffect(()=>{if(!st||!mt.current)return;const xt=ownerDocument(mt.current),kt=At=>{yt.current=At,!(rt||!at()||At.key!=="Tab")&&xt.activeElement===mt.current&&At.shiftKey&&(lt.current=!0,ut.current&&ut.current.focus())},St=()=>{const At=mt.current;if(At===null)return;if(!xt.hasFocus()||!at()||lt.current){lt.current=!1;return}if(At.contains(xt.activeElement)||rt&&xt.activeElement!==ct.current&&xt.activeElement!==ut.current)return;if(xt.activeElement!==dt.current)dt.current=null;else if(dt.current!==null)return;if(!pt.current)return;let Et=[];if((xt.activeElement===ct.current||xt.activeElement===ut.current)&&(Et=ot(mt.current)),Et.length>0){var $t,Dt;const jt=!!(($t=yt.current)!=null&&$t.shiftKey&&((Dt=yt.current)==null?void 0:Dt.key)==="Tab"),Pt=Et[0],Ct=Et[Et.length-1];typeof Pt!="string"&&typeof Ct!="string"&&(jt?Ct.focus():Pt.focus())}else At.focus()};xt.addEventListener("focusin",St),xt.addEventListener("keydown",kt,!0);const Tt=setInterval(()=>{xt.activeElement&&xt.activeElement.tagName==="BODY"&&St()},50);return()=>{clearInterval(Tt),xt.removeEventListener("focusin",St),xt.removeEventListener("keydown",kt,!0)}},[nt,rt,it,at,st,ot]);const bt=xt=>{ht.current===null&&(ht.current=xt.relatedTarget),pt.current=!0,dt.current=xt.target;const kt=et.props.onFocus;kt&&kt(xt)},vt=xt=>{ht.current===null&&(ht.current=xt.relatedTarget),pt.current=!0};return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{tabIndex:st?0:-1,onFocus:vt,ref:ct,"data-testid":"sentinelStart"}),reactExports.cloneElement(et,{ref:gt,onFocus:bt}),jsxRuntimeExports.jsx("div",{tabIndex:st?0:-1,onFocus:vt,ref:ut,"data-testid":"sentinelEnd"})]})}var top="top",bottom="bottom",right="right",left="left",auto="auto",basePlacements=[top,bottom,right,left],start$2="start",end="end",clippingParents="clippingParents",viewport="viewport",popper="popper",reference="reference",variationPlacements=basePlacements.reduce(function(tt,et){return tt.concat([et+"-"+start$2,et+"-"+end])},[]),placements=[].concat(basePlacements,[auto]).reduce(function(tt,et){return tt.concat([et,et+"-"+start$2,et+"-"+end])},[]),beforeRead="beforeRead",read="read",afterRead="afterRead",beforeMain="beforeMain",main$1="main",afterMain="afterMain",beforeWrite="beforeWrite",write="write",afterWrite="afterWrite",modifierPhases=[beforeRead,read,afterRead,beforeMain,main$1,afterMain,beforeWrite,write,afterWrite];function getNodeName(tt){return tt?(tt.nodeName||"").toLowerCase():null}function getWindow(tt){if(tt==null)return window;if(tt.toString()!=="[object Window]"){var et=tt.ownerDocument;return et&&et.defaultView||window}return tt}function isElement(tt){var et=getWindow(tt).Element;return tt instanceof et||tt instanceof Element}function isHTMLElement$1(tt){var et=getWindow(tt).HTMLElement;return tt instanceof et||tt instanceof HTMLElement}function isShadowRoot(tt){if(typeof ShadowRoot>"u")return!1;var et=getWindow(tt).ShadowRoot;return tt instanceof et||tt instanceof ShadowRoot}function applyStyles(tt){var et=tt.state;Object.keys(et.elements).forEach(function(nt){var rt=et.styles[nt]||{},it=et.attributes[nt]||{},ot=et.elements[nt];!isHTMLElement$1(ot)||!getNodeName(ot)||(Object.assign(ot.style,rt),Object.keys(it).forEach(function(at){var st=it[at];st===!1?ot.removeAttribute(at):ot.setAttribute(at,st===!0?"":st)}))})}function effect$2(tt){var et=tt.state,nt={popper:{position:et.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(et.elements.popper.style,nt.popper),et.styles=nt,et.elements.arrow&&Object.assign(et.elements.arrow.style,nt.arrow),function(){Object.keys(et.elements).forEach(function(rt){var it=et.elements[rt],ot=et.attributes[rt]||{},at=Object.keys(et.styles.hasOwnProperty(rt)?et.styles[rt]:nt[rt]),st=at.reduce(function(lt,ct){return lt[ct]="",lt},{});!isHTMLElement$1(it)||!getNodeName(it)||(Object.assign(it.style,st),Object.keys(ot).forEach(function(lt){it.removeAttribute(lt)}))})}}const applyStyles$1={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles,effect:effect$2,requires:["computeStyles"]};function getBasePlacement(tt){return tt.split("-")[0]}var max$4=Math.max,min$3=Math.min,round$2=Math.round;function getUAString(){var tt=navigator.userAgentData;return tt!=null&&tt.brands&&Array.isArray(tt.brands)?tt.brands.map(function(et){return et.brand+"/"+et.version}).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(tt,et,nt){et===void 0&&(et=!1),nt===void 0&&(nt=!1);var rt=tt.getBoundingClientRect(),it=1,ot=1;et&&isHTMLElement$1(tt)&&(it=tt.offsetWidth>0&&round$2(rt.width)/tt.offsetWidth||1,ot=tt.offsetHeight>0&&round$2(rt.height)/tt.offsetHeight||1);var at=isElement(tt)?getWindow(tt):window,st=at.visualViewport,lt=!isLayoutViewport()&&nt,ct=(rt.left+(lt&&st?st.offsetLeft:0))/it,ut=(rt.top+(lt&&st?st.offsetTop:0))/ot,ht=rt.width/it,dt=rt.height/ot;return{width:ht,height:dt,top:ut,right:ct+ht,bottom:ut+dt,left:ct,x:ct,y:ut}}function getLayoutRect(tt){var et=getBoundingClientRect(tt),nt=tt.offsetWidth,rt=tt.offsetHeight;return Math.abs(et.width-nt)<=1&&(nt=et.width),Math.abs(et.height-rt)<=1&&(rt=et.height),{x:tt.offsetLeft,y:tt.offsetTop,width:nt,height:rt}}function contains(tt,et){var nt=et.getRootNode&&et.getRootNode();if(tt.contains(et))return!0;if(nt&&isShadowRoot(nt)){var rt=et;do{if(rt&&tt.isSameNode(rt))return!0;rt=rt.parentNode||rt.host}while(rt)}return!1}function getComputedStyle$1(tt){return getWindow(tt).getComputedStyle(tt)}function isTableElement(tt){return["table","td","th"].indexOf(getNodeName(tt))>=0}function getDocumentElement(tt){return((isElement(tt)?tt.ownerDocument:tt.document)||window.document).documentElement}function getParentNode(tt){return getNodeName(tt)==="html"?tt:tt.assignedSlot||tt.parentNode||(isShadowRoot(tt)?tt.host:null)||getDocumentElement(tt)}function getTrueOffsetParent(tt){return!isHTMLElement$1(tt)||getComputedStyle$1(tt).position==="fixed"?null:tt.offsetParent}function getContainingBlock(tt){var et=/firefox/i.test(getUAString()),nt=/Trident/i.test(getUAString());if(nt&&isHTMLElement$1(tt)){var rt=getComputedStyle$1(tt);if(rt.position==="fixed")return null}var it=getParentNode(tt);for(isShadowRoot(it)&&(it=it.host);isHTMLElement$1(it)&&["html","body"].indexOf(getNodeName(it))<0;){var ot=getComputedStyle$1(it);if(ot.transform!=="none"||ot.perspective!=="none"||ot.contain==="paint"||["transform","perspective"].indexOf(ot.willChange)!==-1||et&&ot.willChange==="filter"||et&&ot.filter&&ot.filter!=="none")return it;it=it.parentNode}return null}function getOffsetParent(tt){for(var et=getWindow(tt),nt=getTrueOffsetParent(tt);nt&&isTableElement(nt)&&getComputedStyle$1(nt).position==="static";)nt=getTrueOffsetParent(nt);return nt&&(getNodeName(nt)==="html"||getNodeName(nt)==="body"&&getComputedStyle$1(nt).position==="static")?et:nt||getContainingBlock(tt)||et}function getMainAxisFromPlacement(tt){return["top","bottom"].indexOf(tt)>=0?"x":"y"}function within(tt,et,nt){return max$4(tt,min$3(et,nt))}function withinMaxClamp(tt,et,nt){var rt=within(tt,et,nt);return rt>nt?nt:rt}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(tt){return Object.assign({},getFreshSideObject(),tt)}function expandToHashMap(tt,et){return et.reduce(function(nt,rt){return nt[rt]=tt,nt},{})}var toPaddingObject=function(et,nt){return et=typeof et=="function"?et(Object.assign({},nt.rects,{placement:nt.placement})):et,mergePaddingObject(typeof et!="number"?et:expandToHashMap(et,basePlacements))};function arrow(tt){var et,nt=tt.state,rt=tt.name,it=tt.options,ot=nt.elements.arrow,at=nt.modifiersData.popperOffsets,st=getBasePlacement(nt.placement),lt=getMainAxisFromPlacement(st),ct=[left,right].indexOf(st)>=0,ut=ct?"height":"width";if(!(!ot||!at)){var ht=toPaddingObject(it.padding,nt),dt=getLayoutRect(ot),pt=lt==="y"?top:left,mt=lt==="y"?bottom:right,gt=nt.rects.reference[ut]+nt.rects.reference[lt]-at[lt]-nt.rects.popper[ut],yt=at[lt]-nt.rects.reference[lt],bt=getOffsetParent(ot),vt=bt?lt==="y"?bt.clientHeight||0:bt.clientWidth||0:0,xt=gt/2-yt/2,kt=ht[pt],St=vt-dt[ut]-ht[mt],Tt=vt/2-dt[ut]/2+xt,At=within(kt,Tt,St),Et=lt;nt.modifiersData[rt]=(et={},et[Et]=At,et.centerOffset=At-Tt,et)}}function effect$1(tt){var et=tt.state,nt=tt.options,rt=nt.element,it=rt===void 0?"[data-popper-arrow]":rt;it!=null&&(typeof it=="string"&&(it=et.elements.popper.querySelector(it),!it)||contains(et.elements.popper,it)&&(et.elements.arrow=it))}const arrow$1={name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function getVariation(tt){return tt.split("-")[1]}var unsetSides={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(tt,et){var nt=tt.x,rt=tt.y,it=et.devicePixelRatio||1;return{x:round$2(nt*it)/it||0,y:round$2(rt*it)/it||0}}function mapToStyles(tt){var et,nt=tt.popper,rt=tt.popperRect,it=tt.placement,ot=tt.variation,at=tt.offsets,st=tt.position,lt=tt.gpuAcceleration,ct=tt.adaptive,ut=tt.roundOffsets,ht=tt.isFixed,dt=at.x,pt=dt===void 0?0:dt,mt=at.y,gt=mt===void 0?0:mt,yt=typeof ut=="function"?ut({x:pt,y:gt}):{x:pt,y:gt};pt=yt.x,gt=yt.y;var bt=at.hasOwnProperty("x"),vt=at.hasOwnProperty("y"),xt=left,kt=top,St=window;if(ct){var Tt=getOffsetParent(nt),At="clientHeight",Et="clientWidth";if(Tt===getWindow(nt)&&(Tt=getDocumentElement(nt),getComputedStyle$1(Tt).position!=="static"&&st==="absolute"&&(At="scrollHeight",Et="scrollWidth")),Tt=Tt,it===top||(it===left||it===right)&&ot===end){kt=bottom;var $t=ht&&Tt===St&&St.visualViewport?St.visualViewport.height:Tt[At];gt-=$t-rt.height,gt*=lt?1:-1}if(it===left||(it===top||it===bottom)&&ot===end){xt=right;var Dt=ht&&Tt===St&&St.visualViewport?St.visualViewport.width:Tt[Et];pt-=Dt-rt.width,pt*=lt?1:-1}}var jt=Object.assign({position:st},ct&&unsetSides),Pt=ut===!0?roundOffsetsByDPR({x:pt,y:gt},getWindow(nt)):{x:pt,y:gt};if(pt=Pt.x,gt=Pt.y,lt){var Ct;return Object.assign({},jt,(Ct={},Ct[kt]=vt?"0":"",Ct[xt]=bt?"0":"",Ct.transform=(St.devicePixelRatio||1)<=1?"translate("+pt+"px, "+gt+"px)":"translate3d("+pt+"px, "+gt+"px, 0)",Ct))}return Object.assign({},jt,(et={},et[kt]=vt?gt+"px":"",et[xt]=bt?pt+"px":"",et.transform="",et))}function computeStyles(tt){var et=tt.state,nt=tt.options,rt=nt.gpuAcceleration,it=rt===void 0?!0:rt,ot=nt.adaptive,at=ot===void 0?!0:ot,st=nt.roundOffsets,lt=st===void 0?!0:st,ct={placement:getBasePlacement(et.placement),variation:getVariation(et.placement),popper:et.elements.popper,popperRect:et.rects.popper,gpuAcceleration:it,isFixed:et.options.strategy==="fixed"};et.modifiersData.popperOffsets!=null&&(et.styles.popper=Object.assign({},et.styles.popper,mapToStyles(Object.assign({},ct,{offsets:et.modifiersData.popperOffsets,position:et.options.strategy,adaptive:at,roundOffsets:lt})))),et.modifiersData.arrow!=null&&(et.styles.arrow=Object.assign({},et.styles.arrow,mapToStyles(Object.assign({},ct,{offsets:et.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:lt})))),et.attributes.popper=Object.assign({},et.attributes.popper,{"data-popper-placement":et.placement})}const computeStyles$1={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}};var passive={passive:!0};function effect(tt){var et=tt.state,nt=tt.instance,rt=tt.options,it=rt.scroll,ot=it===void 0?!0:it,at=rt.resize,st=at===void 0?!0:at,lt=getWindow(et.elements.popper),ct=[].concat(et.scrollParents.reference,et.scrollParents.popper);return ot&&ct.forEach(function(ut){ut.addEventListener("scroll",nt.update,passive)}),st&<.addEventListener("resize",nt.update,passive),function(){ot&&ct.forEach(function(ut){ut.removeEventListener("scroll",nt.update,passive)}),st&<.removeEventListener("resize",nt.update,passive)}}const eventListeners={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect,data:{}};var hash$6={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(tt){return tt.replace(/left|right|bottom|top/g,function(et){return hash$6[et]})}var hash$5={start:"end",end:"start"};function getOppositeVariationPlacement(tt){return tt.replace(/start|end/g,function(et){return hash$5[et]})}function getWindowScroll(tt){var et=getWindow(tt),nt=et.pageXOffset,rt=et.pageYOffset;return{scrollLeft:nt,scrollTop:rt}}function getWindowScrollBarX(tt){return getBoundingClientRect(getDocumentElement(tt)).left+getWindowScroll(tt).scrollLeft}function getViewportRect(tt,et){var nt=getWindow(tt),rt=getDocumentElement(tt),it=nt.visualViewport,ot=rt.clientWidth,at=rt.clientHeight,st=0,lt=0;if(it){ot=it.width,at=it.height;var ct=isLayoutViewport();(ct||!ct&&et==="fixed")&&(st=it.offsetLeft,lt=it.offsetTop)}return{width:ot,height:at,x:st+getWindowScrollBarX(tt),y:lt}}function getDocumentRect(tt){var et,nt=getDocumentElement(tt),rt=getWindowScroll(tt),it=(et=tt.ownerDocument)==null?void 0:et.body,ot=max$4(nt.scrollWidth,nt.clientWidth,it?it.scrollWidth:0,it?it.clientWidth:0),at=max$4(nt.scrollHeight,nt.clientHeight,it?it.scrollHeight:0,it?it.clientHeight:0),st=-rt.scrollLeft+getWindowScrollBarX(tt),lt=-rt.scrollTop;return getComputedStyle$1(it||nt).direction==="rtl"&&(st+=max$4(nt.clientWidth,it?it.clientWidth:0)-ot),{width:ot,height:at,x:st,y:lt}}function isScrollParent(tt){var et=getComputedStyle$1(tt),nt=et.overflow,rt=et.overflowX,it=et.overflowY;return/auto|scroll|overlay|hidden/.test(nt+it+rt)}function getScrollParent(tt){return["html","body","#document"].indexOf(getNodeName(tt))>=0?tt.ownerDocument.body:isHTMLElement$1(tt)&&isScrollParent(tt)?tt:getScrollParent(getParentNode(tt))}function listScrollParents(tt,et){var nt;et===void 0&&(et=[]);var rt=getScrollParent(tt),it=rt===((nt=tt.ownerDocument)==null?void 0:nt.body),ot=getWindow(rt),at=it?[ot].concat(ot.visualViewport||[],isScrollParent(rt)?rt:[]):rt,st=et.concat(at);return it?st:st.concat(listScrollParents(getParentNode(at)))}function rectToClientRect(tt){return Object.assign({},tt,{left:tt.x,top:tt.y,right:tt.x+tt.width,bottom:tt.y+tt.height})}function getInnerBoundingClientRect(tt,et){var nt=getBoundingClientRect(tt,!1,et==="fixed");return nt.top=nt.top+tt.clientTop,nt.left=nt.left+tt.clientLeft,nt.bottom=nt.top+tt.clientHeight,nt.right=nt.left+tt.clientWidth,nt.width=tt.clientWidth,nt.height=tt.clientHeight,nt.x=nt.left,nt.y=nt.top,nt}function getClientRectFromMixedType(tt,et,nt){return et===viewport?rectToClientRect(getViewportRect(tt,nt)):isElement(et)?getInnerBoundingClientRect(et,nt):rectToClientRect(getDocumentRect(getDocumentElement(tt)))}function getClippingParents(tt){var et=listScrollParents(getParentNode(tt)),nt=["absolute","fixed"].indexOf(getComputedStyle$1(tt).position)>=0,rt=nt&&isHTMLElement$1(tt)?getOffsetParent(tt):tt;return isElement(rt)?et.filter(function(it){return isElement(it)&&contains(it,rt)&&getNodeName(it)!=="body"}):[]}function getClippingRect(tt,et,nt,rt){var it=et==="clippingParents"?getClippingParents(tt):[].concat(et),ot=[].concat(it,[nt]),at=ot[0],st=ot.reduce(function(lt,ct){var ut=getClientRectFromMixedType(tt,ct,rt);return lt.top=max$4(ut.top,lt.top),lt.right=min$3(ut.right,lt.right),lt.bottom=min$3(ut.bottom,lt.bottom),lt.left=max$4(ut.left,lt.left),lt},getClientRectFromMixedType(tt,at,rt));return st.width=st.right-st.left,st.height=st.bottom-st.top,st.x=st.left,st.y=st.top,st}function computeOffsets(tt){var et=tt.reference,nt=tt.element,rt=tt.placement,it=rt?getBasePlacement(rt):null,ot=rt?getVariation(rt):null,at=et.x+et.width/2-nt.width/2,st=et.y+et.height/2-nt.height/2,lt;switch(it){case top:lt={x:at,y:et.y-nt.height};break;case bottom:lt={x:at,y:et.y+et.height};break;case right:lt={x:et.x+et.width,y:st};break;case left:lt={x:et.x-nt.width,y:st};break;default:lt={x:et.x,y:et.y}}var ct=it?getMainAxisFromPlacement(it):null;if(ct!=null){var ut=ct==="y"?"height":"width";switch(ot){case start$2:lt[ct]=lt[ct]-(et[ut]/2-nt[ut]/2);break;case end:lt[ct]=lt[ct]+(et[ut]/2-nt[ut]/2);break}}return lt}function detectOverflow(tt,et){et===void 0&&(et={});var nt=et,rt=nt.placement,it=rt===void 0?tt.placement:rt,ot=nt.strategy,at=ot===void 0?tt.strategy:ot,st=nt.boundary,lt=st===void 0?clippingParents:st,ct=nt.rootBoundary,ut=ct===void 0?viewport:ct,ht=nt.elementContext,dt=ht===void 0?popper:ht,pt=nt.altBoundary,mt=pt===void 0?!1:pt,gt=nt.padding,yt=gt===void 0?0:gt,bt=mergePaddingObject(typeof yt!="number"?yt:expandToHashMap(yt,basePlacements)),vt=dt===popper?reference:popper,xt=tt.rects.popper,kt=tt.elements[mt?vt:dt],St=getClippingRect(isElement(kt)?kt:kt.contextElement||getDocumentElement(tt.elements.popper),lt,ut,at),Tt=getBoundingClientRect(tt.elements.reference),At=computeOffsets({reference:Tt,element:xt,strategy:"absolute",placement:it}),Et=rectToClientRect(Object.assign({},xt,At)),$t=dt===popper?Et:Tt,Dt={top:St.top-$t.top+bt.top,bottom:$t.bottom-St.bottom+bt.bottom,left:St.left-$t.left+bt.left,right:$t.right-St.right+bt.right},jt=tt.modifiersData.offset;if(dt===popper&&jt){var Pt=jt[it];Object.keys(Dt).forEach(function(Ct){var wt=[right,bottom].indexOf(Ct)>=0?1:-1,It=[top,bottom].indexOf(Ct)>=0?"y":"x";Dt[Ct]+=Pt[It]*wt})}return Dt}function computeAutoPlacement(tt,et){et===void 0&&(et={});var nt=et,rt=nt.placement,it=nt.boundary,ot=nt.rootBoundary,at=nt.padding,st=nt.flipVariations,lt=nt.allowedAutoPlacements,ct=lt===void 0?placements:lt,ut=getVariation(rt),ht=ut?st?variationPlacements:variationPlacements.filter(function(mt){return getVariation(mt)===ut}):basePlacements,dt=ht.filter(function(mt){return ct.indexOf(mt)>=0});dt.length===0&&(dt=ht);var pt=dt.reduce(function(mt,gt){return mt[gt]=detectOverflow(tt,{placement:gt,boundary:it,rootBoundary:ot,padding:at})[getBasePlacement(gt)],mt},{});return Object.keys(pt).sort(function(mt,gt){return pt[mt]-pt[gt]})}function getExpandedFallbackPlacements(tt){if(getBasePlacement(tt)===auto)return[];var et=getOppositePlacement(tt);return[getOppositeVariationPlacement(tt),et,getOppositeVariationPlacement(et)]}function flip(tt){var et=tt.state,nt=tt.options,rt=tt.name;if(!et.modifiersData[rt]._skip){for(var it=nt.mainAxis,ot=it===void 0?!0:it,at=nt.altAxis,st=at===void 0?!0:at,lt=nt.fallbackPlacements,ct=nt.padding,ut=nt.boundary,ht=nt.rootBoundary,dt=nt.altBoundary,pt=nt.flipVariations,mt=pt===void 0?!0:pt,gt=nt.allowedAutoPlacements,yt=et.options.placement,bt=getBasePlacement(yt),vt=bt===yt,xt=lt||(vt||!mt?[getOppositePlacement(yt)]:getExpandedFallbackPlacements(yt)),kt=[yt].concat(xt).reduce(function(en,sn){return en.concat(getBasePlacement(sn)===auto?computeAutoPlacement(et,{placement:sn,boundary:ut,rootBoundary:ht,padding:ct,flipVariations:mt,allowedAutoPlacements:gt}):sn)},[]),St=et.rects.reference,Tt=et.rects.popper,At=new Map,Et=!0,$t=kt[0],Dt=0;Dt=0,It=wt?"width":"height",Ot=detectOverflow(et,{placement:jt,boundary:ut,rootBoundary:ht,altBoundary:dt,padding:ct}),Wt=wt?Ct?right:left:Ct?bottom:top;St[It]>Tt[It]&&(Wt=getOppositePlacement(Wt));var zt=getOppositePlacement(Wt),Ft=[];if(ot&&Ft.push(Ot[Pt]<=0),st&&Ft.push(Ot[Wt]<=0,Ot[zt]<=0),Ft.every(function(en){return en})){$t=jt,Et=!1;break}At.set(jt,Ft)}if(Et)for(var Nt=mt?3:1,Ut=function(sn){var Kt=kt.find(function(rn){var nn=At.get(rn);if(nn)return nn.slice(0,sn).every(function(hn){return hn})});if(Kt)return $t=Kt,"break"},Mt=Nt;Mt>0;Mt--){var Ht=Ut(Mt);if(Ht==="break")break}et.placement!==$t&&(et.modifiersData[rt]._skip=!0,et.placement=$t,et.reset=!0)}}const flip$1={name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}};function getSideOffsets(tt,et,nt){return nt===void 0&&(nt={x:0,y:0}),{top:tt.top-et.height-nt.y,right:tt.right-et.width+nt.x,bottom:tt.bottom-et.height+nt.y,left:tt.left-et.width-nt.x}}function isAnySideFullyClipped(tt){return[top,right,bottom,left].some(function(et){return tt[et]>=0})}function hide(tt){var et=tt.state,nt=tt.name,rt=et.rects.reference,it=et.rects.popper,ot=et.modifiersData.preventOverflow,at=detectOverflow(et,{elementContext:"reference"}),st=detectOverflow(et,{altBoundary:!0}),lt=getSideOffsets(at,rt),ct=getSideOffsets(st,it,ot),ut=isAnySideFullyClipped(lt),ht=isAnySideFullyClipped(ct);et.modifiersData[nt]={referenceClippingOffsets:lt,popperEscapeOffsets:ct,isReferenceHidden:ut,hasPopperEscaped:ht},et.attributes.popper=Object.assign({},et.attributes.popper,{"data-popper-reference-hidden":ut,"data-popper-escaped":ht})}const hide$1={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide};function distanceAndSkiddingToXY(tt,et,nt){var rt=getBasePlacement(tt),it=[left,top].indexOf(rt)>=0?-1:1,ot=typeof nt=="function"?nt(Object.assign({},et,{placement:tt})):nt,at=ot[0],st=ot[1];return at=at||0,st=(st||0)*it,[left,right].indexOf(rt)>=0?{x:st,y:at}:{x:at,y:st}}function offset$1(tt){var et=tt.state,nt=tt.options,rt=tt.name,it=nt.offset,ot=it===void 0?[0,0]:it,at=placements.reduce(function(ut,ht){return ut[ht]=distanceAndSkiddingToXY(ht,et.rects,ot),ut},{}),st=at[et.placement],lt=st.x,ct=st.y;et.modifiersData.popperOffsets!=null&&(et.modifiersData.popperOffsets.x+=lt,et.modifiersData.popperOffsets.y+=ct),et.modifiersData[rt]=at}const offset$2={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset$1};function popperOffsets(tt){var et=tt.state,nt=tt.name;et.modifiersData[nt]=computeOffsets({reference:et.rects.reference,element:et.rects.popper,strategy:"absolute",placement:et.placement})}const popperOffsets$1={name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}};function getAltAxis(tt){return tt==="x"?"y":"x"}function preventOverflow(tt){var et=tt.state,nt=tt.options,rt=tt.name,it=nt.mainAxis,ot=it===void 0?!0:it,at=nt.altAxis,st=at===void 0?!1:at,lt=nt.boundary,ct=nt.rootBoundary,ut=nt.altBoundary,ht=nt.padding,dt=nt.tether,pt=dt===void 0?!0:dt,mt=nt.tetherOffset,gt=mt===void 0?0:mt,yt=detectOverflow(et,{boundary:lt,rootBoundary:ct,padding:ht,altBoundary:ut}),bt=getBasePlacement(et.placement),vt=getVariation(et.placement),xt=!vt,kt=getMainAxisFromPlacement(bt),St=getAltAxis(kt),Tt=et.modifiersData.popperOffsets,At=et.rects.reference,Et=et.rects.popper,$t=typeof gt=="function"?gt(Object.assign({},et.rects,{placement:et.placement})):gt,Dt=typeof $t=="number"?{mainAxis:$t,altAxis:$t}:Object.assign({mainAxis:0,altAxis:0},$t),jt=et.modifiersData.offset?et.modifiersData.offset[et.placement]:null,Pt={x:0,y:0};if(Tt){if(ot){var Ct,wt=kt==="y"?top:left,It=kt==="y"?bottom:right,Ot=kt==="y"?"height":"width",Wt=Tt[kt],zt=Wt+yt[wt],Ft=Wt-yt[It],Nt=pt?-Et[Ot]/2:0,Ut=vt===start$2?At[Ot]:Et[Ot],Mt=vt===start$2?-Et[Ot]:-At[Ot],Ht=et.elements.arrow,en=pt&&Ht?getLayoutRect(Ht):{width:0,height:0},sn=et.modifiersData["arrow#persistent"]?et.modifiersData["arrow#persistent"].padding:getFreshSideObject(),Kt=sn[wt],rn=sn[It],nn=within(0,At[Ot],en[Ot]),hn=xt?At[Ot]/2-Nt-nn-Kt-Dt.mainAxis:Ut-nn-Kt-Dt.mainAxis,vn=xt?-At[Ot]/2+Nt+nn+rn+Dt.mainAxis:Mt+nn+rn+Dt.mainAxis,an=et.elements.arrow&&getOffsetParent(et.elements.arrow),Qt=an?kt==="y"?an.clientTop||0:an.clientLeft||0:0,_n=(Ct=jt==null?void 0:jt[kt])!=null?Ct:0,Pn=Wt+hn-_n-Qt,$n=Wt+vn-_n,Nn=within(pt?min$3(zt,Pn):zt,Wt,pt?max$4(Ft,$n):Ft);Tt[kt]=Nn,Pt[kt]=Nn-Wt}if(st){var Tn,cn=kt==="x"?top:left,mn=kt==="x"?bottom:right,In=Tt[St],An=St==="y"?"height":"width",wn=In+yt[cn],fn=In-yt[mn],pn=[top,left].indexOf(bt)!==-1,kn=(Tn=jt==null?void 0:jt[St])!=null?Tn:0,Dn=pn?wn:In-At[An]-Et[An]-kn+Dt.altAxis,un=pn?In+At[An]+Et[An]-kn-Dt.altAxis:fn,Zt=pt&&pn?withinMaxClamp(Dn,In,un):within(pt?Dn:wn,In,pt?un:fn);Tt[St]=Zt,Pt[St]=Zt-In}et.modifiersData[rt]=Pt}}const preventOverflow$1={name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]};function getHTMLElementScroll(tt){return{scrollLeft:tt.scrollLeft,scrollTop:tt.scrollTop}}function getNodeScroll(tt){return tt===getWindow(tt)||!isHTMLElement$1(tt)?getWindowScroll(tt):getHTMLElementScroll(tt)}function isElementScaled(tt){var et=tt.getBoundingClientRect(),nt=round$2(et.width)/tt.offsetWidth||1,rt=round$2(et.height)/tt.offsetHeight||1;return nt!==1||rt!==1}function getCompositeRect(tt,et,nt){nt===void 0&&(nt=!1);var rt=isHTMLElement$1(et),it=isHTMLElement$1(et)&&isElementScaled(et),ot=getDocumentElement(et),at=getBoundingClientRect(tt,it,nt),st={scrollLeft:0,scrollTop:0},lt={x:0,y:0};return(rt||!rt&&!nt)&&((getNodeName(et)!=="body"||isScrollParent(ot))&&(st=getNodeScroll(et)),isHTMLElement$1(et)?(lt=getBoundingClientRect(et,!0),lt.x+=et.clientLeft,lt.y+=et.clientTop):ot&&(lt.x=getWindowScrollBarX(ot))),{x:at.left+st.scrollLeft-lt.x,y:at.top+st.scrollTop-lt.y,width:at.width,height:at.height}}function order(tt){var et=new Map,nt=new Set,rt=[];tt.forEach(function(ot){et.set(ot.name,ot)});function it(ot){nt.add(ot.name);var at=[].concat(ot.requires||[],ot.requiresIfExists||[]);at.forEach(function(st){if(!nt.has(st)){var lt=et.get(st);lt&&it(lt)}}),rt.push(ot)}return tt.forEach(function(ot){nt.has(ot.name)||it(ot)}),rt}function orderModifiers(tt){var et=order(tt);return modifierPhases.reduce(function(nt,rt){return nt.concat(et.filter(function(it){return it.phase===rt}))},[])}function debounce$4(tt){var et;return function(){return et||(et=new Promise(function(nt){Promise.resolve().then(function(){et=void 0,nt(tt())})})),et}}function mergeByName(tt){var et=tt.reduce(function(nt,rt){var it=nt[rt.name];return nt[rt.name]=it?Object.assign({},it,rt,{options:Object.assign({},it.options,rt.options),data:Object.assign({},it.data,rt.data)}):rt,nt},{});return Object.keys(et).map(function(nt){return et[nt]})}var DEFAULT_OPTIONS$k={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var tt=arguments.length,et=new Array(tt),nt=0;nt{ot||st(getContainer$1(it)||document.body)},[it,ot]),useEnhancedEffect$1(()=>{if(at&&!ot)return setRef(nt,at),()=>{setRef(nt,null)}},[nt,at,ot]),ot){if(reactExports.isValidElement(rt)){const ct={ref:lt};return reactExports.cloneElement(rt,ct)}return jsxRuntimeExports.jsx(reactExports.Fragment,{children:rt})}return jsxRuntimeExports.jsx(reactExports.Fragment,{children:at&&reactDomExports.createPortal(rt,at)})});function getPopperUtilityClass(tt){return generateUtilityClass("MuiPopper",tt)}generateUtilityClasses("MuiPopper",["root"]);const _excluded$1q=["anchorEl","children","direction","disablePortal","modifiers","open","placement","popperOptions","popperRef","slotProps","slots","TransitionProps","ownerState"],_excluded2$g=["anchorEl","children","container","direction","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition","slotProps","slots"];function flipPlacement(tt,et){if(et==="ltr")return tt;switch(tt){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return tt}}function resolveAnchorEl$1(tt){return typeof tt=="function"?tt():tt}function isHTMLElement(tt){return tt.nodeType!==void 0}const useUtilityClasses$R=()=>composeClasses({root:["root"]},useClassNamesOverride(getPopperUtilityClass)),defaultPopperOptions={},PopperTooltip=reactExports.forwardRef(function(et,nt){var rt;const{anchorEl:it,children:ot,direction:at,disablePortal:st,modifiers:lt,open:ct,placement:ut,popperOptions:ht,popperRef:dt,slotProps:pt={},slots:mt={},TransitionProps:gt}=et,yt=_objectWithoutPropertiesLoose$m(et,_excluded$1q),bt=reactExports.useRef(null),vt=useForkRef(bt,nt),xt=reactExports.useRef(null),kt=useForkRef(xt,dt),St=reactExports.useRef(kt);useEnhancedEffect$1(()=>{St.current=kt},[kt]),reactExports.useImperativeHandle(dt,()=>xt.current,[]);const Tt=flipPlacement(ut,at),[At,Et]=reactExports.useState(Tt),[$t,Dt]=reactExports.useState(resolveAnchorEl$1(it));reactExports.useEffect(()=>{xt.current&&xt.current.forceUpdate()}),reactExports.useEffect(()=>{it&&Dt(resolveAnchorEl$1(it))},[it]),useEnhancedEffect$1(()=>{if(!$t||!ct)return;const It=zt=>{Et(zt.placement)};let Ot=[{name:"preventOverflow",options:{altBoundary:st}},{name:"flip",options:{altBoundary:st}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:zt})=>{It(zt)}}];lt!=null&&(Ot=Ot.concat(lt)),ht&&ht.modifiers!=null&&(Ot=Ot.concat(ht.modifiers));const Wt=createPopper($t,bt.current,_extends$u({placement:Tt},ht,{modifiers:Ot}));return St.current(Wt),()=>{Wt.destroy(),St.current(null)}},[$t,st,lt,ct,ht,Tt]);const jt={placement:At};gt!==null&&(jt.TransitionProps=gt);const Pt=useUtilityClasses$R(),Ct=(rt=mt.root)!=null?rt:"div",wt=useSlotProps({elementType:Ct,externalSlotProps:pt.root,externalForwardedProps:yt,additionalProps:{role:"tooltip",ref:vt},ownerState:et,className:Pt.root});return jsxRuntimeExports.jsx(Ct,_extends$u({},wt,{children:typeof ot=="function"?ot(jt):ot}))}),Popper$1=reactExports.forwardRef(function(et,nt){const{anchorEl:rt,children:it,container:ot,direction:at="ltr",disablePortal:st=!1,keepMounted:lt=!1,modifiers:ct,open:ut,placement:ht="bottom",popperOptions:dt=defaultPopperOptions,popperRef:pt,style:mt,transition:gt=!1,slotProps:yt={},slots:bt={}}=et,vt=_objectWithoutPropertiesLoose$m(et,_excluded2$g),[xt,kt]=reactExports.useState(!0),St=()=>{kt(!1)},Tt=()=>{kt(!0)};if(!lt&&!ut&&(!gt||xt))return null;let At;if(ot)At=ot;else if(rt){const Dt=resolveAnchorEl$1(rt);At=Dt&&isHTMLElement(Dt)?ownerDocument(Dt).body:ownerDocument(null).body}const Et=!ut&<&&(!gt||xt)?"none":void 0,$t=gt?{in:ut,onEnter:St,onExited:Tt}:void 0;return jsxRuntimeExports.jsx(Portal$1,{disablePortal:st,container:At,children:jsxRuntimeExports.jsx(PopperTooltip,_extends$u({anchorEl:rt,direction:at,disablePortal:st,modifiers:ct,ref:nt,open:gt?!xt:ut,placement:ht,popperOptions:dt,popperRef:pt,slotProps:yt,slots:bt},vt,{style:_extends$u({position:"fixed",top:0,left:0,display:Et},mt),TransitionProps:$t,children:it}))})});function isOverflowing(tt){const et=ownerDocument(tt);return et.body===tt?ownerWindow(tt).innerWidth>et.documentElement.clientWidth:tt.scrollHeight>tt.clientHeight}function ariaHidden(tt,et){et?tt.setAttribute("aria-hidden","true"):tt.removeAttribute("aria-hidden")}function getPaddingRight(tt){return parseInt(ownerWindow(tt).getComputedStyle(tt).paddingRight,10)||0}function isAriaHiddenForbiddenOnElement(tt){const nt=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(tt.tagName)!==-1,rt=tt.tagName==="INPUT"&&tt.getAttribute("type")==="hidden";return nt||rt}function ariaHiddenSiblings(tt,et,nt,rt,it){const ot=[et,nt,...rt];[].forEach.call(tt.children,at=>{const st=ot.indexOf(at)===-1,lt=!isAriaHiddenForbiddenOnElement(at);st&<&&ariaHidden(at,it)})}function findIndexOf(tt,et){let nt=-1;return tt.some((rt,it)=>et(rt)?(nt=it,!0):!1),nt}function handleContainer(tt,et){const nt=[],rt=tt.container;if(!et.disableScrollLock){if(isOverflowing(rt)){const at=getScrollbarSize(ownerDocument(rt));nt.push({value:rt.style.paddingRight,property:"padding-right",el:rt}),rt.style.paddingRight=`${getPaddingRight(rt)+at}px`;const st=ownerDocument(rt).querySelectorAll(".mui-fixed");[].forEach.call(st,lt=>{nt.push({value:lt.style.paddingRight,property:"padding-right",el:lt}),lt.style.paddingRight=`${getPaddingRight(lt)+at}px`})}let ot;if(rt.parentNode instanceof DocumentFragment)ot=ownerDocument(rt).body;else{const at=rt.parentElement,st=ownerWindow(rt);ot=(at==null?void 0:at.nodeName)==="HTML"&&st.getComputedStyle(at).overflowY==="scroll"?at:rt}nt.push({value:ot.style.overflow,property:"overflow",el:ot},{value:ot.style.overflowX,property:"overflow-x",el:ot},{value:ot.style.overflowY,property:"overflow-y",el:ot}),ot.style.overflow="hidden"}return()=>{nt.forEach(({value:ot,el:at,property:st})=>{ot?at.style.setProperty(st,ot):at.style.removeProperty(st)})}}function getHiddenSiblings(tt){const et=[];return[].forEach.call(tt.children,nt=>{nt.getAttribute("aria-hidden")==="true"&&et.push(nt)}),et}class ModalManager{constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}add(et,nt){let rt=this.modals.indexOf(et);if(rt!==-1)return rt;rt=this.modals.length,this.modals.push(et),et.modalRef&&ariaHidden(et.modalRef,!1);const it=getHiddenSiblings(nt);ariaHiddenSiblings(nt,et.mount,et.modalRef,it,!0);const ot=findIndexOf(this.containers,at=>at.container===nt);return ot!==-1?(this.containers[ot].modals.push(et),rt):(this.containers.push({modals:[et],container:nt,restore:null,hiddenSiblings:it}),rt)}mount(et,nt){const rt=findIndexOf(this.containers,ot=>ot.modals.indexOf(et)!==-1),it=this.containers[rt];it.restore||(it.restore=handleContainer(it,nt))}remove(et,nt=!0){const rt=this.modals.indexOf(et);if(rt===-1)return rt;const it=findIndexOf(this.containers,at=>at.modals.indexOf(et)!==-1),ot=this.containers[it];if(ot.modals.splice(ot.modals.indexOf(et),1),this.modals.splice(rt,1),ot.modals.length===0)ot.restore&&ot.restore(),et.modalRef&&ariaHidden(et.modalRef,nt),ariaHiddenSiblings(ot.container,et.mount,et.modalRef,ot.hiddenSiblings,!1),this.containers.splice(it,1);else{const at=ot.modals[ot.modals.length-1];at.modalRef&&ariaHidden(at.modalRef,!1)}return rt}isTopModal(et){return this.modals.length>0&&this.modals[this.modals.length-1]===et}}function getContainer(tt){return typeof tt=="function"?tt():tt}function getHasTransition(tt){return tt?tt.props.hasOwnProperty("in"):!1}const defaultManager=new ModalManager;function useModal$1(tt){const{container:et,disableEscapeKeyDown:nt=!1,disableScrollLock:rt=!1,manager:it=defaultManager,closeAfterTransition:ot=!1,onTransitionEnter:at,onTransitionExited:st,children:lt,onClose:ct,open:ut,rootRef:ht}=tt,dt=reactExports.useRef({}),pt=reactExports.useRef(null),mt=reactExports.useRef(null),gt=useForkRef(mt,ht),[yt,bt]=reactExports.useState(!ut),vt=getHasTransition(lt);let xt=!0;(tt["aria-hidden"]==="false"||tt["aria-hidden"]===!1)&&(xt=!1);const kt=()=>ownerDocument(pt.current),St=()=>(dt.current.modalRef=mt.current,dt.current.mount=pt.current,dt.current),Tt=()=>{it.mount(St(),{disableScrollLock:rt}),mt.current&&(mt.current.scrollTop=0)},At=useEventCallback(()=>{const Ot=getContainer(et)||kt().body;it.add(St(),Ot),mt.current&&Tt()}),Et=reactExports.useCallback(()=>it.isTopModal(St()),[it]),$t=useEventCallback(Ot=>{pt.current=Ot,Ot&&(ut&&Et()?Tt():mt.current&&ariaHidden(mt.current,xt))}),Dt=reactExports.useCallback(()=>{it.remove(St(),xt)},[xt,it]);reactExports.useEffect(()=>()=>{Dt()},[Dt]),reactExports.useEffect(()=>{ut?At():(!vt||!ot)&&Dt()},[ut,Dt,vt,ot,At]);const jt=Ot=>Wt=>{var zt;(zt=Ot.onKeyDown)==null||zt.call(Ot,Wt),!(Wt.key!=="Escape"||!Et())&&(nt||(Wt.stopPropagation(),ct&&ct(Wt,"escapeKeyDown")))},Pt=Ot=>Wt=>{var zt;(zt=Ot.onClick)==null||zt.call(Ot,Wt),Wt.target===Wt.currentTarget&&ct&&ct(Wt,"backdropClick")};return{getRootProps:(Ot={})=>{const Wt=extractEventHandlers(tt);delete Wt.onTransitionEnter,delete Wt.onTransitionExited;const zt=_extends$u({},Wt,Ot);return _extends$u({role:"presentation"},zt,{onKeyDown:jt(zt),ref:gt})},getBackdropProps:(Ot={})=>{const Wt=Ot;return _extends$u({"aria-hidden":!0},Wt,{onClick:Pt(Wt),open:ut})},getTransitionProps:()=>{const Ot=()=>{bt(!1),at&&at()},Wt=()=>{bt(!0),st&&st(),ot&&Dt()};return{onEnter:createChainedFunction(Ot,lt==null?void 0:lt.props.onEnter),onExited:createChainedFunction(Wt,lt==null?void 0:lt.props.onExited)}},rootRef:gt,portalRef:$t,isTopModal:Et,exited:yt,hasTransition:vt}}const INTENTIONAL_DRAG_COUNT_THRESHOLD=2;function asc(tt,et){return tt-et}function clamp$6(tt,et,nt){return tt==null?et:Math.min(Math.max(et,tt),nt)}function findClosest(tt,et){var nt;const{index:rt}=(nt=tt.reduce((it,ot,at)=>{const st=Math.abs(et-ot);return it===null||st({left:`${tt}%`}),leap:tt=>({width:`${tt}%`})},"horizontal-reverse":{offset:tt=>({right:`${tt}%`}),leap:tt=>({width:`${tt}%`})},vertical:{offset:tt=>({bottom:`${tt}%`}),leap:tt=>({height:`${tt}%`})}},Identity$1=tt=>tt;let cachedSupportsTouchActionNone;function doesSupportTouchActionNone(){return cachedSupportsTouchActionNone===void 0&&(typeof CSS<"u"&&typeof CSS.supports=="function"?cachedSupportsTouchActionNone=CSS.supports("touch-action","none"):cachedSupportsTouchActionNone=!0),cachedSupportsTouchActionNone}function useSlider(tt){const{"aria-labelledby":et,defaultValue:nt,disabled:rt=!1,disableSwap:it=!1,isRtl:ot=!1,marks:at=!1,max:st=100,min:lt=0,name:ct,onChange:ut,onChangeCommitted:ht,orientation:dt="horizontal",rootRef:pt,scale:mt=Identity$1,step:gt=1,tabIndex:yt,value:bt}=tt,vt=reactExports.useRef(),[xt,kt]=reactExports.useState(-1),[St,Tt]=reactExports.useState(-1),[At,Et]=reactExports.useState(!1),$t=reactExports.useRef(0),[Dt,jt]=useControlled({controlled:bt,default:nt??lt,name:"Slider"}),Pt=ut&&((kn,Dn,un)=>{const Zt=kn.nativeEvent||kn,Xt=new Zt.constructor(Zt.type,Zt);Object.defineProperty(Xt,"target",{writable:!0,value:{value:Dn,name:ct}}),ut(Xt,Dn,un)}),Ct=Array.isArray(Dt);let wt=Ct?Dt.slice().sort(asc):[Dt];wt=wt.map(kn=>clamp$6(kn,lt,st));const It=at===!0&>!==null?[...Array(Math.floor((st-lt)/gt)+1)].map((kn,Dn)=>({value:lt+gt*Dn})):at||[],Ot=It.map(kn=>kn.value),{isFocusVisibleRef:Wt,onBlur:zt,onFocus:Ft,ref:Nt}=useIsFocusVisible(),[Ut,Mt]=reactExports.useState(-1),Ht=reactExports.useRef(),en=useForkRef(Nt,Ht),sn=useForkRef(pt,en),Kt=kn=>Dn=>{var un;const Zt=Number(Dn.currentTarget.getAttribute("data-index"));Ft(Dn),Wt.current===!0&&Mt(Zt),Tt(Zt),kn==null||(un=kn.onFocus)==null||un.call(kn,Dn)},rn=kn=>Dn=>{var un;zt(Dn),Wt.current===!1&&Mt(-1),Tt(-1),kn==null||(un=kn.onBlur)==null||un.call(kn,Dn)};useEnhancedEffect$1(()=>{if(rt&&Ht.current.contains(document.activeElement)){var kn;(kn=document.activeElement)==null||kn.blur()}},[rt]),rt&&xt!==-1&&kt(-1),rt&&Ut!==-1&&Mt(-1);const nn=kn=>Dn=>{var un;(un=kn.onChange)==null||un.call(kn,Dn);const Zt=Number(Dn.currentTarget.getAttribute("data-index")),Xt=wt[Zt],Sn=Ot.indexOf(Xt);let Rn=Dn.target.valueAsNumber;if(It&>==null){const jn=Ot[Ot.length-1];Rn>jn?Rn=jn:Rn{const{current:un}=Ht,{width:Zt,height:Xt,bottom:Sn,left:Rn}=un.getBoundingClientRect();let jn;vn.indexOf("vertical")===0?jn=(Sn-kn.y)/Xt:jn=(kn.x-Rn)/Zt,vn.indexOf("-reverse")!==-1&&(jn=1-jn);let On;if(On=percentToValue(jn,lt,st),gt)On=roundValueToStep(On,gt,lt);else{const Vn=findClosest(Ot,On);On=Ot[Vn]}On=clamp$6(On,lt,st);let Zn=0;if(Ct){Dn?Zn=hn.current:Zn=findClosest(wt,On),it&&(On=clamp$6(On,wt[Zn-1]||-1/0,wt[Zn+1]||1/0));const Vn=On;On=setValueIndex({values:wt,newValue:On,index:Zn}),it&&Dn||(Zn=On.indexOf(Vn),hn.current=Zn)}return{newValue:On,activeIndex:Zn}},Qt=useEventCallback(kn=>{const Dn=trackFinger(kn,vt);if(!Dn)return;if($t.current+=1,kn.type==="mousemove"&&kn.buttons===0){_n(kn);return}const{newValue:un,activeIndex:Zt}=an({finger:Dn,move:!0});focusThumb({sliderRef:Ht,activeIndex:Zt,setActive:kt}),jt(un),!At&&$t.current>INTENTIONAL_DRAG_COUNT_THRESHOLD&&Et(!0),Pt&&!areValuesEqual(un,Dt)&&Pt(kn,un,Zt)}),_n=useEventCallback(kn=>{const Dn=trackFinger(kn,vt);if(Et(!1),!Dn)return;const{newValue:un}=an({finger:Dn,move:!0});kt(-1),kn.type==="touchend"&&Tt(-1),ht&&ht(kn,un),vt.current=void 0,$n()}),Pn=useEventCallback(kn=>{if(rt)return;doesSupportTouchActionNone()||kn.preventDefault();const Dn=kn.changedTouches[0];Dn!=null&&(vt.current=Dn.identifier);const un=trackFinger(kn,vt);if(un!==!1){const{newValue:Xt,activeIndex:Sn}=an({finger:un});focusThumb({sliderRef:Ht,activeIndex:Sn,setActive:kt}),jt(Xt),Pt&&!areValuesEqual(Xt,Dt)&&Pt(kn,Xt,Sn)}$t.current=0;const Zt=ownerDocument(Ht.current);Zt.addEventListener("touchmove",Qt),Zt.addEventListener("touchend",_n)}),$n=reactExports.useCallback(()=>{const kn=ownerDocument(Ht.current);kn.removeEventListener("mousemove",Qt),kn.removeEventListener("mouseup",_n),kn.removeEventListener("touchmove",Qt),kn.removeEventListener("touchend",_n)},[_n,Qt]);reactExports.useEffect(()=>{const{current:kn}=Ht;return kn.addEventListener("touchstart",Pn,{passive:doesSupportTouchActionNone()}),()=>{kn.removeEventListener("touchstart",Pn,{passive:doesSupportTouchActionNone()}),$n()}},[$n,Pn]),reactExports.useEffect(()=>{rt&&$n()},[rt,$n]);const Nn=kn=>Dn=>{var un;if((un=kn.onMouseDown)==null||un.call(kn,Dn),rt||Dn.defaultPrevented||Dn.button!==0)return;Dn.preventDefault();const Zt=trackFinger(Dn,vt);if(Zt!==!1){const{newValue:Sn,activeIndex:Rn}=an({finger:Zt});focusThumb({sliderRef:Ht,activeIndex:Rn,setActive:kt}),jt(Sn),Pt&&!areValuesEqual(Sn,Dt)&&Pt(Dn,Sn,Rn)}$t.current=0;const Xt=ownerDocument(Ht.current);Xt.addEventListener("mousemove",Qt),Xt.addEventListener("mouseup",_n)},Tn=valueToPercent(Ct?wt[0]:lt,lt,st),cn=valueToPercent(wt[wt.length-1],lt,st)-Tn,mn=(kn={})=>{const Dn=extractEventHandlers(kn),un={onMouseDown:Nn(Dn||{})},Zt=_extends$u({},Dn,un);return _extends$u({},kn,{ref:sn},Zt)},In=kn=>Dn=>{var un;(un=kn.onMouseOver)==null||un.call(kn,Dn);const Zt=Number(Dn.currentTarget.getAttribute("data-index"));Tt(Zt)},An=kn=>Dn=>{var un;(un=kn.onMouseLeave)==null||un.call(kn,Dn),Tt(-1)};return{active:xt,axis:vn,axisProps,dragging:At,focusedThumbIndex:Ut,getHiddenInputProps:(kn={})=>{var Dn;const un=extractEventHandlers(kn),Zt={onChange:nn(un||{}),onFocus:Kt(un||{}),onBlur:rn(un||{})},Xt=_extends$u({},un,Zt);return _extends$u({tabIndex:yt,"aria-labelledby":et,"aria-orientation":dt,"aria-valuemax":mt(st),"aria-valuemin":mt(lt),name:ct,type:"range",min:tt.min,max:tt.max,step:tt.step===null&&tt.marks?"any":(Dn=tt.step)!=null?Dn:void 0,disabled:rt},kn,Xt,{style:_extends$u({},visuallyHidden$1,{direction:ot?"rtl":"ltr",width:"100%",height:"100%"})})},getRootProps:mn,getThumbProps:(kn={})=>{const Dn=extractEventHandlers(kn),un={onMouseOver:In(Dn||{}),onMouseLeave:An(Dn||{})};return _extends$u({},kn,Dn,un)},marks:It,open:St,range:Ct,rootRef:sn,trackLeap:cn,trackOffset:Tn,values:wt,getThumbStyle:kn=>({pointerEvents:xt!==-1&&xt!==kn?"none":void 0})}}const _excluded$1p=["onChange","maxRows","minRows","style","value"];function getStyleValue(tt){return parseInt(tt,10)||0}const styles$5={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}};function isEmpty$1(tt){return tt==null||Object.keys(tt).length===0||tt.outerHeightStyle===0&&!tt.overflow}const TextareaAutosize=reactExports.forwardRef(function(et,nt){const{onChange:rt,maxRows:it,minRows:ot=1,style:at,value:st}=et,lt=_objectWithoutPropertiesLoose$m(et,_excluded$1p),{current:ct}=reactExports.useRef(st!=null),ut=reactExports.useRef(null),ht=useForkRef(nt,ut),dt=reactExports.useRef(null),pt=reactExports.useRef(0),[mt,gt]=reactExports.useState({outerHeightStyle:0}),yt=reactExports.useCallback(()=>{const kt=ut.current,Tt=ownerWindow(kt).getComputedStyle(kt);if(Tt.width==="0px")return{outerHeightStyle:0};const At=dt.current;At.style.width=Tt.width,At.value=kt.value||et.placeholder||"x",At.value.slice(-1)===` -`&&(At.value+=" ");const Et=Tt.boxSizing,$t=getStyleValue(Tt.paddingBottom)+getStyleValue(Tt.paddingTop),Dt=getStyleValue(Tt.borderBottomWidth)+getStyleValue(Tt.borderTopWidth),jt=At.scrollHeight;At.value="x";const Pt=At.scrollHeight;let Ct=jt;ot&&(Ct=Math.max(Number(ot)*Pt,Ct)),it&&(Ct=Math.min(Number(it)*Pt,Ct)),Ct=Math.max(Ct,Pt);const wt=Ct+(Et==="border-box"?$t+Dt:0),It=Math.abs(Ct-jt)<=1;return{outerHeightStyle:wt,overflow:It}},[it,ot,et.placeholder]),bt=(kt,St)=>{const{outerHeightStyle:Tt,overflow:At}=St;return pt.current<20&&(Tt>0&&Math.abs((kt.outerHeightStyle||0)-Tt)>1||kt.overflow!==At)?(pt.current+=1,{overflow:At,outerHeightStyle:Tt}):kt},vt=reactExports.useCallback(()=>{const kt=yt();isEmpty$1(kt)||gt(St=>bt(St,kt))},[yt]);useEnhancedEffect$1(()=>{const kt=()=>{const jt=yt();isEmpty$1(jt)||reactDomExports.flushSync(()=>{gt(Pt=>bt(Pt,jt))})},St=()=>{pt.current=0,kt()};let Tt;const At=debounce$5(St),Et=ut.current,$t=ownerWindow(Et);$t.addEventListener("resize",At);let Dt;return typeof ResizeObserver<"u"&&(Dt=new ResizeObserver(St),Dt.observe(Et)),()=>{At.clear(),cancelAnimationFrame(Tt),$t.removeEventListener("resize",At),Dt&&Dt.disconnect()}},[yt]),useEnhancedEffect$1(()=>{vt()}),reactExports.useEffect(()=>{pt.current=0},[st]);const xt=kt=>{pt.current=0,ct||vt(),rt&&rt(kt)};return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("textarea",_extends$u({value:st,onChange:xt,ref:ht,rows:ot,style:_extends$u({height:mt.outerHeightStyle,overflow:mt.overflow?"hidden":void 0},at)},lt)),jsxRuntimeExports.jsx("textarea",{"aria-hidden":!0,className:et.className,readOnly:!0,ref:dt,tabIndex:-1,style:_extends$u({},styles$5.shadow,at,{paddingTop:0,paddingBottom:0})})]})}),_excluded$1o=["anchorEl","component","components","componentsProps","container","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","transition","slots","slotProps"],PopperRoot=styled$1(Popper$1,{name:"MuiPopper",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),Popper=reactExports.forwardRef(function(et,nt){var rt;const it=useTheme$3(),ot=useThemeProps({props:et,name:"MuiPopper"}),{anchorEl:at,component:st,components:lt,componentsProps:ct,container:ut,disablePortal:ht,keepMounted:dt,modifiers:pt,open:mt,placement:gt,popperOptions:yt,popperRef:bt,transition:vt,slots:xt,slotProps:kt}=ot,St=_objectWithoutPropertiesLoose$m(ot,_excluded$1o),Tt=(rt=xt==null?void 0:xt.root)!=null?rt:lt==null?void 0:lt.Root,At=_extends$u({anchorEl:at,container:ut,disablePortal:ht,keepMounted:dt,modifiers:pt,open:mt,placement:gt,popperOptions:yt,popperRef:bt,transition:vt},St);return jsxRuntimeExports.jsx(PopperRoot,_extends$u({as:st,direction:it==null?void 0:it.direction,slots:{root:Tt},slotProps:kt??ct},At,{ref:nt}))}),MuiPopper=Popper,CancelIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");function getChipUtilityClass(tt){return generateUtilityClass("MuiChip",tt)}const chipClasses=generateUtilityClasses("MuiChip",["root","sizeSmall","sizeMedium","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","filledPrimary","filledSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","deleteIconFilledColorPrimary","deleteIconFilledColorSecondary","focusVisible"]),chipClasses$1=chipClasses,_excluded$1n=["avatar","className","clickable","color","component","deleteIcon","disabled","icon","label","onClick","onDelete","onKeyDown","onKeyUp","size","variant","tabIndex","skipFocusWhenDisabled"],useUtilityClasses$Q=tt=>{const{classes:et,disabled:nt,size:rt,color:it,iconColor:ot,onDelete:at,clickable:st,variant:lt}=tt,ct={root:["root",lt,nt&&"disabled",`size${capitalize(rt)}`,`color${capitalize(it)}`,st&&"clickable",st&&`clickableColor${capitalize(it)}`,at&&"deletable",at&&`deletableColor${capitalize(it)}`,`${lt}${capitalize(it)}`],label:["label",`label${capitalize(rt)}`],avatar:["avatar",`avatar${capitalize(rt)}`,`avatarColor${capitalize(it)}`],icon:["icon",`icon${capitalize(rt)}`,`iconColor${capitalize(ot)}`],deleteIcon:["deleteIcon",`deleteIcon${capitalize(rt)}`,`deleteIconColor${capitalize(it)}`,`deleteIcon${capitalize(lt)}Color${capitalize(it)}`]};return composeClasses(ct,getChipUtilityClass,et)},ChipRoot=styled$1("div",{name:"MuiChip",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt,{color:rt,iconColor:it,clickable:ot,onDelete:at,size:st,variant:lt}=nt;return[{[`& .${chipClasses$1.avatar}`]:et.avatar},{[`& .${chipClasses$1.avatar}`]:et[`avatar${capitalize(st)}`]},{[`& .${chipClasses$1.avatar}`]:et[`avatarColor${capitalize(rt)}`]},{[`& .${chipClasses$1.icon}`]:et.icon},{[`& .${chipClasses$1.icon}`]:et[`icon${capitalize(st)}`]},{[`& .${chipClasses$1.icon}`]:et[`iconColor${capitalize(it)}`]},{[`& .${chipClasses$1.deleteIcon}`]:et.deleteIcon},{[`& .${chipClasses$1.deleteIcon}`]:et[`deleteIcon${capitalize(st)}`]},{[`& .${chipClasses$1.deleteIcon}`]:et[`deleteIconColor${capitalize(rt)}`]},{[`& .${chipClasses$1.deleteIcon}`]:et[`deleteIcon${capitalize(lt)}Color${capitalize(rt)}`]},et.root,et[`size${capitalize(st)}`],et[`color${capitalize(rt)}`],ot&&et.clickable,ot&&rt!=="default"&&et[`clickableColor${capitalize(rt)})`],at&&et.deletable,at&&rt!=="default"&&et[`deletableColor${capitalize(rt)}`],et[lt],et[`${lt}${capitalize(rt)}`]]}})(({theme:tt,ownerState:et})=>{const nt=tt.palette.mode==="light"?tt.palette.grey[700]:tt.palette.grey[300];return _extends$u({maxWidth:"100%",fontFamily:tt.typography.fontFamily,fontSize:tt.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:(tt.vars||tt).palette.text.primary,backgroundColor:(tt.vars||tt).palette.action.selected,borderRadius:32/2,whiteSpace:"nowrap",transition:tt.transitions.create(["background-color","box-shadow"]),cursor:"unset",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box",[`&.${chipClasses$1.disabled}`]:{opacity:(tt.vars||tt).palette.action.disabledOpacity,pointerEvents:"none"},[`& .${chipClasses$1.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:tt.vars?tt.vars.palette.Chip.defaultAvatarColor:nt,fontSize:tt.typography.pxToRem(12)},[`& .${chipClasses$1.avatarColorPrimary}`]:{color:(tt.vars||tt).palette.primary.contrastText,backgroundColor:(tt.vars||tt).palette.primary.dark},[`& .${chipClasses$1.avatarColorSecondary}`]:{color:(tt.vars||tt).palette.secondary.contrastText,backgroundColor:(tt.vars||tt).palette.secondary.dark},[`& .${chipClasses$1.avatarSmall}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:tt.typography.pxToRem(10)},[`& .${chipClasses$1.icon}`]:_extends$u({marginLeft:5,marginRight:-6},et.size==="small"&&{fontSize:18,marginLeft:4,marginRight:-4},et.iconColor===et.color&&_extends$u({color:tt.vars?tt.vars.palette.Chip.defaultIconColor:nt},et.color!=="default"&&{color:"inherit"})),[`& .${chipClasses$1.deleteIcon}`]:_extends$u({WebkitTapHighlightColor:"transparent",color:tt.vars?`rgba(${tt.vars.palette.text.primaryChannel} / 0.26)`:alpha$1(tt.palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:tt.vars?`rgba(${tt.vars.palette.text.primaryChannel} / 0.4)`:alpha$1(tt.palette.text.primary,.4)}},et.size==="small"&&{fontSize:16,marginRight:4,marginLeft:-4},et.color!=="default"&&{color:tt.vars?`rgba(${tt.vars.palette[et.color].contrastTextChannel} / 0.7)`:alpha$1(tt.palette[et.color].contrastText,.7),"&:hover, &:active":{color:(tt.vars||tt).palette[et.color].contrastText}})},et.size==="small"&&{height:24},et.color!=="default"&&{backgroundColor:(tt.vars||tt).palette[et.color].main,color:(tt.vars||tt).palette[et.color].contrastText},et.onDelete&&{[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.selectedChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.focusOpacity}))`:alpha$1(tt.palette.action.selected,tt.palette.action.selectedOpacity+tt.palette.action.focusOpacity)}},et.onDelete&&et.color!=="default"&&{[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette[et.color].dark}})},({theme:tt,ownerState:et})=>_extends$u({},et.clickable&&{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.selectedChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.hoverOpacity}))`:alpha$1(tt.palette.action.selected,tt.palette.action.selectedOpacity+tt.palette.action.hoverOpacity)},[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.selectedChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.focusOpacity}))`:alpha$1(tt.palette.action.selected,tt.palette.action.selectedOpacity+tt.palette.action.focusOpacity)},"&:active":{boxShadow:(tt.vars||tt).shadows[1]}},et.clickable&&et.color!=="default"&&{[`&:hover, &.${chipClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette[et.color].dark}}),({theme:tt,ownerState:et})=>_extends$u({},et.variant==="outlined"&&{backgroundColor:"transparent",border:tt.vars?`1px solid ${tt.vars.palette.Chip.defaultBorder}`:`1px solid ${tt.palette.mode==="light"?tt.palette.grey[400]:tt.palette.grey[700]}`,[`&.${chipClasses$1.clickable}:hover`]:{backgroundColor:(tt.vars||tt).palette.action.hover},[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette.action.focus},[`& .${chipClasses$1.avatar}`]:{marginLeft:4},[`& .${chipClasses$1.avatarSmall}`]:{marginLeft:2},[`& .${chipClasses$1.icon}`]:{marginLeft:4},[`& .${chipClasses$1.iconSmall}`]:{marginLeft:2},[`& .${chipClasses$1.deleteIcon}`]:{marginRight:5},[`& .${chipClasses$1.deleteIconSmall}`]:{marginRight:3}},et.variant==="outlined"&&et.color!=="default"&&{color:(tt.vars||tt).palette[et.color].main,border:`1px solid ${tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / 0.7)`:alpha$1(tt.palette[et.color].main,.7)}`,[`&.${chipClasses$1.clickable}:hover`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette[et.color].main,tt.palette.action.hoverOpacity)},[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / ${tt.vars.palette.action.focusOpacity})`:alpha$1(tt.palette[et.color].main,tt.palette.action.focusOpacity)},[`& .${chipClasses$1.deleteIcon}`]:{color:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / 0.7)`:alpha$1(tt.palette[et.color].main,.7),"&:hover, &:active":{color:(tt.vars||tt).palette[et.color].main}}})),ChipLabel=styled$1("span",{name:"MuiChip",slot:"Label",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt,{size:rt}=nt;return[et.label,et[`label${capitalize(rt)}`]]}})(({ownerState:tt})=>_extends$u({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap"},tt.variant==="outlined"&&{paddingLeft:11,paddingRight:11},tt.size==="small"&&{paddingLeft:8,paddingRight:8},tt.size==="small"&&tt.variant==="outlined"&&{paddingLeft:7,paddingRight:7}));function isDeleteKeyboardEvent(tt){return tt.key==="Backspace"||tt.key==="Delete"}const Chip=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiChip"}),{avatar:it,className:ot,clickable:at,color:st="default",component:lt,deleteIcon:ct,disabled:ut=!1,icon:ht,label:dt,onClick:pt,onDelete:mt,onKeyDown:gt,onKeyUp:yt,size:bt="medium",variant:vt="filled",tabIndex:xt,skipFocusWhenDisabled:kt=!1}=rt,St=_objectWithoutPropertiesLoose$m(rt,_excluded$1n),Tt=reactExports.useRef(null),At=useForkRef(Tt,nt),Et=Ft=>{Ft.stopPropagation(),mt&&mt(Ft)},$t=Ft=>{Ft.currentTarget===Ft.target&&isDeleteKeyboardEvent(Ft)&&Ft.preventDefault(),gt&>(Ft)},Dt=Ft=>{Ft.currentTarget===Ft.target&&(mt&&isDeleteKeyboardEvent(Ft)?mt(Ft):Ft.key==="Escape"&&Tt.current&&Tt.current.blur()),yt&&yt(Ft)},jt=at!==!1&&pt?!0:at,Pt=jt||mt?ButtonBase$1:lt||"div",Ct=_extends$u({},rt,{component:Pt,disabled:ut,size:bt,color:st,iconColor:reactExports.isValidElement(ht)&&ht.props.color||st,onDelete:!!mt,clickable:jt,variant:vt}),wt=useUtilityClasses$Q(Ct),It=Pt===ButtonBase$1?_extends$u({component:lt||"div",focusVisibleClassName:wt.focusVisible},mt&&{disableRipple:!0}):{};let Ot=null;mt&&(Ot=ct&&reactExports.isValidElement(ct)?reactExports.cloneElement(ct,{className:clsx$3(ct.props.className,wt.deleteIcon),onClick:Et}):jsxRuntimeExports.jsx(CancelIcon,{className:clsx$3(wt.deleteIcon),onClick:Et}));let Wt=null;it&&reactExports.isValidElement(it)&&(Wt=reactExports.cloneElement(it,{className:clsx$3(wt.avatar,it.props.className)}));let zt=null;return ht&&reactExports.isValidElement(ht)&&(zt=reactExports.cloneElement(ht,{className:clsx$3(wt.icon,ht.props.className)})),jsxRuntimeExports.jsxs(ChipRoot,_extends$u({as:Pt,className:clsx$3(wt.root,ot),disabled:jt&&ut?!0:void 0,onClick:pt,onKeyDown:$t,onKeyUp:Dt,ref:At,tabIndex:kt&&ut?-1:xt,ownerState:Ct},It,St,{children:[Wt||zt,jsxRuntimeExports.jsx(ChipLabel,{className:clsx$3(wt.label),ownerState:Ct,children:dt}),Ot]}))}),Chip$1=Chip;function formControlState({props:tt,states:et,muiFormControl:nt}){return et.reduce((rt,it)=>(rt[it]=tt[it],nt&&typeof tt[it]>"u"&&(rt[it]=nt[it]),rt),{})}const FormControlContext=reactExports.createContext(void 0),FormControlContext$1=FormControlContext;function useFormControl(){return reactExports.useContext(FormControlContext$1)}function GlobalStyles(tt){return jsxRuntimeExports.jsx(GlobalStyles$1,_extends$u({},tt,{defaultTheme:defaultTheme$1,themeId:THEME_ID}))}function hasValue(tt){return tt!=null&&!(Array.isArray(tt)&&tt.length===0)}function isFilled(tt,et=!1){return tt&&(hasValue(tt.value)&&tt.value!==""||et&&hasValue(tt.defaultValue)&&tt.defaultValue!=="")}function isAdornedStart(tt){return tt.startAdornment}function getInputBaseUtilityClass(tt){return generateUtilityClass("MuiInputBase",tt)}const inputBaseClasses=generateUtilityClasses("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"]),inputBaseClasses$1=inputBaseClasses,_excluded$1m=["aria-describedby","autoComplete","autoFocus","className","color","components","componentsProps","defaultValue","disabled","disableInjectingGlobalStyles","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","size","slotProps","slots","startAdornment","type","value"],rootOverridesResolver=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.formControl&&et.formControl,nt.startAdornment&&et.adornedStart,nt.endAdornment&&et.adornedEnd,nt.error&&et.error,nt.size==="small"&&et.sizeSmall,nt.multiline&&et.multiline,nt.color&&et[`color${capitalize(nt.color)}`],nt.fullWidth&&et.fullWidth,nt.hiddenLabel&&et.hiddenLabel]},inputOverridesResolver=(tt,et)=>{const{ownerState:nt}=tt;return[et.input,nt.size==="small"&&et.inputSizeSmall,nt.multiline&&et.inputMultiline,nt.type==="search"&&et.inputTypeSearch,nt.startAdornment&&et.inputAdornedStart,nt.endAdornment&&et.inputAdornedEnd,nt.hiddenLabel&&et.inputHiddenLabel]},useUtilityClasses$P=tt=>{const{classes:et,color:nt,disabled:rt,error:it,endAdornment:ot,focused:at,formControl:st,fullWidth:lt,hiddenLabel:ct,multiline:ut,readOnly:ht,size:dt,startAdornment:pt,type:mt}=tt,gt={root:["root",`color${capitalize(nt)}`,rt&&"disabled",it&&"error",lt&&"fullWidth",at&&"focused",st&&"formControl",dt&&dt!=="medium"&&`size${capitalize(dt)}`,ut&&"multiline",pt&&"adornedStart",ot&&"adornedEnd",ct&&"hiddenLabel",ht&&"readOnly"],input:["input",rt&&"disabled",mt==="search"&&"inputTypeSearch",ut&&"inputMultiline",dt==="small"&&"inputSizeSmall",ct&&"inputHiddenLabel",pt&&"inputAdornedStart",ot&&"inputAdornedEnd",ht&&"readOnly"]};return composeClasses(gt,getInputBaseUtilityClass,et)},InputBaseRoot=styled$1("div",{name:"MuiInputBase",slot:"Root",overridesResolver:rootOverridesResolver})(({theme:tt,ownerState:et})=>_extends$u({},tt.typography.body1,{color:(tt.vars||tt).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",[`&.${inputBaseClasses$1.disabled}`]:{color:(tt.vars||tt).palette.text.disabled,cursor:"default"}},et.multiline&&_extends$u({padding:"4px 0 5px"},et.size==="small"&&{paddingTop:1}),et.fullWidth&&{width:"100%"})),InputBaseComponent=styled$1("input",{name:"MuiInputBase",slot:"Input",overridesResolver:inputOverridesResolver})(({theme:tt,ownerState:et})=>{const nt=tt.palette.mode==="light",rt=_extends$u({color:"currentColor"},tt.vars?{opacity:tt.vars.opacity.inputPlaceholder}:{opacity:nt?.42:.5},{transition:tt.transitions.create("opacity",{duration:tt.transitions.duration.shorter})}),it={opacity:"0 !important"},ot=tt.vars?{opacity:tt.vars.opacity.inputPlaceholder}:{opacity:nt?.42:.5};return _extends$u({font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":rt,"&::-moz-placeholder":rt,"&:-ms-input-placeholder":rt,"&::-ms-input-placeholder":rt,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},[`label[data-shrink=false] + .${inputBaseClasses$1.formControl} &`]:{"&::-webkit-input-placeholder":it,"&::-moz-placeholder":it,"&:-ms-input-placeholder":it,"&::-ms-input-placeholder":it,"&:focus::-webkit-input-placeholder":ot,"&:focus::-moz-placeholder":ot,"&:focus:-ms-input-placeholder":ot,"&:focus::-ms-input-placeholder":ot},[`&.${inputBaseClasses$1.disabled}`]:{opacity:1,WebkitTextFillColor:(tt.vars||tt).palette.text.disabled},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},et.size==="small"&&{paddingTop:1},et.multiline&&{height:"auto",resize:"none",padding:0,paddingTop:0},et.type==="search"&&{MozAppearance:"textfield"})}),inputGlobalStyles=jsxRuntimeExports.jsx(GlobalStyles,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),InputBase=reactExports.forwardRef(function(et,nt){var rt;const it=useThemeProps({props:et,name:"MuiInputBase"}),{"aria-describedby":ot,autoComplete:at,autoFocus:st,className:lt,components:ct={},componentsProps:ut={},defaultValue:ht,disabled:dt,disableInjectingGlobalStyles:pt,endAdornment:mt,fullWidth:gt=!1,id:yt,inputComponent:bt="input",inputProps:vt={},inputRef:xt,maxRows:kt,minRows:St,multiline:Tt=!1,name:At,onBlur:Et,onChange:$t,onClick:Dt,onFocus:jt,onKeyDown:Pt,onKeyUp:Ct,placeholder:wt,readOnly:It,renderSuffix:Ot,rows:Wt,slotProps:zt={},slots:Ft={},startAdornment:Nt,type:Ut="text",value:Mt}=it,Ht=_objectWithoutPropertiesLoose$m(it,_excluded$1m),en=vt.value!=null?vt.value:Mt,{current:sn}=reactExports.useRef(en!=null),Kt=reactExports.useRef(),rn=reactExports.useCallback(Zt=>{},[]),nn=useForkRef(Kt,xt,vt.ref,rn),[hn,vn]=reactExports.useState(!1),an=useFormControl(),Qt=formControlState({props:it,muiFormControl:an,states:["color","disabled","error","hiddenLabel","size","required","filled"]});Qt.focused=an?an.focused:hn,reactExports.useEffect(()=>{!an&&dt&&hn&&(vn(!1),Et&&Et())},[an,dt,hn,Et]);const _n=an&&an.onFilled,Pn=an&&an.onEmpty,$n=reactExports.useCallback(Zt=>{isFilled(Zt)?_n&&_n():Pn&&Pn()},[_n,Pn]);useEnhancedEffect$1(()=>{sn&&$n({value:en})},[en,$n,sn]);const Nn=Zt=>{if(Qt.disabled){Zt.stopPropagation();return}jt&&jt(Zt),vt.onFocus&&vt.onFocus(Zt),an&&an.onFocus?an.onFocus(Zt):vn(!0)},Tn=Zt=>{Et&&Et(Zt),vt.onBlur&&vt.onBlur(Zt),an&&an.onBlur?an.onBlur(Zt):vn(!1)},cn=(Zt,...Xt)=>{if(!sn){const Sn=Zt.target||Kt.current;if(Sn==null)throw new Error(formatMuiErrorMessage(1));$n({value:Sn.value})}vt.onChange&&vt.onChange(Zt,...Xt),$t&&$t(Zt,...Xt)};reactExports.useEffect(()=>{$n(Kt.current)},[]);const mn=Zt=>{Kt.current&&Zt.currentTarget===Zt.target&&Kt.current.focus(),Dt&&Dt(Zt)};let In=bt,An=vt;Tt&&In==="input"&&(Wt?An=_extends$u({type:void 0,minRows:Wt,maxRows:Wt},An):An=_extends$u({type:void 0,maxRows:kt,minRows:St},An),In=TextareaAutosize);const wn=Zt=>{$n(Zt.animationName==="mui-auto-fill-cancel"?Kt.current:{value:"x"})};reactExports.useEffect(()=>{an&&an.setAdornedStart(!!Nt)},[an,Nt]);const fn=_extends$u({},it,{color:Qt.color||"primary",disabled:Qt.disabled,endAdornment:mt,error:Qt.error,focused:Qt.focused,formControl:an,fullWidth:gt,hiddenLabel:Qt.hiddenLabel,multiline:Tt,size:Qt.size,startAdornment:Nt,type:Ut}),pn=useUtilityClasses$P(fn),kn=Ft.root||ct.Root||InputBaseRoot,Dn=zt.root||ut.root||{},un=Ft.input||ct.Input||InputBaseComponent;return An=_extends$u({},An,(rt=zt.input)!=null?rt:ut.input),jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[!pt&&inputGlobalStyles,jsxRuntimeExports.jsxs(kn,_extends$u({},Dn,!isHostComponent(kn)&&{ownerState:_extends$u({},fn,Dn.ownerState)},{ref:nt,onClick:mn},Ht,{className:clsx$3(pn.root,Dn.className,lt,It&&"MuiInputBase-readOnly"),children:[Nt,jsxRuntimeExports.jsx(FormControlContext$1.Provider,{value:null,children:jsxRuntimeExports.jsx(un,_extends$u({ownerState:fn,"aria-invalid":Qt.error,"aria-describedby":ot,autoComplete:at,autoFocus:st,defaultValue:ht,disabled:Qt.disabled,id:yt,onAnimationStart:wn,name:At,placeholder:wt,readOnly:It,required:Qt.required,rows:Wt,value:en,onKeyDown:Pt,onKeyUp:Ct,type:Ut},An,!isHostComponent(un)&&{as:In,ownerState:_extends$u({},fn,An.ownerState)},{ref:nn,className:clsx$3(pn.input,An.className,It&&"MuiInputBase-readOnly"),onBlur:Tn,onChange:cn,onFocus:Nn}))}),mt,Ot?Ot(_extends$u({},Qt,{startAdornment:Nt})):null]}))]})}),InputBase$1=InputBase;function getInputUtilityClass(tt){return generateUtilityClass("MuiInput",tt)}const inputClasses=_extends$u({},inputBaseClasses$1,generateUtilityClasses("MuiInput",["root","underline","input"])),inputClasses$1=inputClasses;function getOutlinedInputUtilityClass(tt){return generateUtilityClass("MuiOutlinedInput",tt)}const outlinedInputClasses=_extends$u({},inputBaseClasses$1,generateUtilityClasses("MuiOutlinedInput",["root","notchedOutline","input"])),outlinedInputClasses$1=outlinedInputClasses;function getFilledInputUtilityClass(tt){return generateUtilityClass("MuiFilledInput",tt)}const filledInputClasses=_extends$u({},inputBaseClasses$1,generateUtilityClasses("MuiFilledInput",["root","underline","input"])),filledInputClasses$1=filledInputClasses,ArrowDropDownIcon$1=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),_excluded$1l=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],styles$4={entering:{opacity:1},entered:{opacity:1}},Fade=reactExports.forwardRef(function(et,nt){const rt=useTheme(),it={enter:rt.transitions.duration.enteringScreen,exit:rt.transitions.duration.leavingScreen},{addEndListener:ot,appear:at=!0,children:st,easing:lt,in:ct,onEnter:ut,onEntered:ht,onEntering:dt,onExit:pt,onExited:mt,onExiting:gt,style:yt,timeout:bt=it,TransitionComponent:vt=Transition$2}=et,xt=_objectWithoutPropertiesLoose$m(et,_excluded$1l),kt=reactExports.useRef(null),St=useForkRef(kt,st.ref,nt),Tt=wt=>It=>{if(wt){const Ot=kt.current;It===void 0?wt(Ot):wt(Ot,It)}},At=Tt(dt),Et=Tt((wt,It)=>{reflow(wt);const Ot=getTransitionProps({style:yt,timeout:bt,easing:lt},{mode:"enter"});wt.style.webkitTransition=rt.transitions.create("opacity",Ot),wt.style.transition=rt.transitions.create("opacity",Ot),ut&&ut(wt,It)}),$t=Tt(ht),Dt=Tt(gt),jt=Tt(wt=>{const It=getTransitionProps({style:yt,timeout:bt,easing:lt},{mode:"exit"});wt.style.webkitTransition=rt.transitions.create("opacity",It),wt.style.transition=rt.transitions.create("opacity",It),pt&&pt(wt)}),Pt=Tt(mt),Ct=wt=>{ot&&ot(kt.current,wt)};return jsxRuntimeExports.jsx(vt,_extends$u({appear:at,in:ct,nodeRef:kt,onEnter:Et,onEntered:$t,onEntering:At,onExit:jt,onExited:Pt,onExiting:Dt,addEndListener:Ct,timeout:bt},xt,{children:(wt,It)=>reactExports.cloneElement(st,_extends$u({style:_extends$u({opacity:0,visibility:wt==="exited"&&!ct?"hidden":void 0},styles$4[wt],yt,st.props.style),ref:St},It))}))}),Fade$1=Fade;function getBackdropUtilityClass(tt){return generateUtilityClass("MuiBackdrop",tt)}generateUtilityClasses("MuiBackdrop",["root","invisible"]);const _excluded$1k=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],useUtilityClasses$O=tt=>{const{classes:et,invisible:nt}=tt;return composeClasses({root:["root",nt&&"invisible"]},getBackdropUtilityClass,et)},BackdropRoot=styled$1("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.invisible&&et.invisible]}})(({ownerState:tt})=>_extends$u({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},tt.invisible&&{backgroundColor:"transparent"})),Backdrop=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useThemeProps({props:et,name:"MuiBackdrop"}),{children:st,className:lt,component:ct="div",components:ut={},componentsProps:ht={},invisible:dt=!1,open:pt,slotProps:mt={},slots:gt={},TransitionComponent:yt=Fade$1,transitionDuration:bt}=at,vt=_objectWithoutPropertiesLoose$m(at,_excluded$1k),xt=_extends$u({},at,{component:ct,invisible:dt}),kt=useUtilityClasses$O(xt),St=(rt=mt.root)!=null?rt:ht.root;return jsxRuntimeExports.jsx(yt,_extends$u({in:pt,timeout:bt},vt,{children:jsxRuntimeExports.jsx(BackdropRoot,_extends$u({"aria-hidden":!0},St,{as:(it=(ot=gt.root)!=null?ot:ut.Root)!=null?it:ct,className:clsx$3(kt.root,lt,St==null?void 0:St.className),ownerState:_extends$u({},xt,St==null?void 0:St.ownerState),classes:kt,ref:nt,children:st}))}))}),Backdrop$1=Backdrop;function getButtonUtilityClass(tt){return generateUtilityClass("MuiButton",tt)}const buttonClasses=generateUtilityClasses("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]),buttonClasses$1=buttonClasses,ButtonGroupContext=reactExports.createContext({}),ButtonGroupContext$1=ButtonGroupContext,ButtonGroupButtonContext=reactExports.createContext(void 0),ButtonGroupButtonContext$1=ButtonGroupButtonContext,_excluded$1j=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],useUtilityClasses$N=tt=>{const{color:et,disableElevation:nt,fullWidth:rt,size:it,variant:ot,classes:at}=tt,st={root:["root",ot,`${ot}${capitalize(et)}`,`size${capitalize(it)}`,`${ot}Size${capitalize(it)}`,et==="inherit"&&"colorInherit",nt&&"disableElevation",rt&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${capitalize(it)}`],endIcon:["endIcon",`iconSize${capitalize(it)}`]},lt=composeClasses(st,getButtonUtilityClass,at);return _extends$u({},at,lt)},commonIconStyles=tt=>_extends$u({},tt.size==="small"&&{"& > *:nth-of-type(1)":{fontSize:18}},tt.size==="medium"&&{"& > *:nth-of-type(1)":{fontSize:20}},tt.size==="large"&&{"& > *:nth-of-type(1)":{fontSize:22}}),ButtonRoot=styled$1(ButtonBase$1,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiButton",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,et[nt.variant],et[`${nt.variant}${capitalize(nt.color)}`],et[`size${capitalize(nt.size)}`],et[`${nt.variant}Size${capitalize(nt.size)}`],nt.color==="inherit"&&et.colorInherit,nt.disableElevation&&et.disableElevation,nt.fullWidth&&et.fullWidth]}})(({theme:tt,ownerState:et})=>{var nt,rt;const it=tt.palette.mode==="light"?tt.palette.grey[300]:tt.palette.grey[800],ot=tt.palette.mode==="light"?tt.palette.grey.A100:tt.palette.grey[700];return _extends$u({},tt.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(tt.vars||tt).shape.borderRadius,transition:tt.transitions.create(["background-color","box-shadow","border-color","color"],{duration:tt.transitions.duration.short}),"&:hover":_extends$u({textDecoration:"none",backgroundColor:tt.vars?`rgba(${tt.vars.palette.text.primaryChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.text.primary,tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},et.variant==="text"&&et.color!=="inherit"&&{backgroundColor:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette[et.color].main,tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},et.variant==="outlined"&&et.color!=="inherit"&&{border:`1px solid ${(tt.vars||tt).palette[et.color].main}`,backgroundColor:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette[et.color].main,tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},et.variant==="contained"&&{backgroundColor:tt.vars?tt.vars.palette.Button.inheritContainedHoverBg:ot,boxShadow:(tt.vars||tt).shadows[4],"@media (hover: none)":{boxShadow:(tt.vars||tt).shadows[2],backgroundColor:(tt.vars||tt).palette.grey[300]}},et.variant==="contained"&&et.color!=="inherit"&&{backgroundColor:(tt.vars||tt).palette[et.color].dark,"@media (hover: none)":{backgroundColor:(tt.vars||tt).palette[et.color].main}}),"&:active":_extends$u({},et.variant==="contained"&&{boxShadow:(tt.vars||tt).shadows[8]}),[`&.${buttonClasses$1.focusVisible}`]:_extends$u({},et.variant==="contained"&&{boxShadow:(tt.vars||tt).shadows[6]}),[`&.${buttonClasses$1.disabled}`]:_extends$u({color:(tt.vars||tt).palette.action.disabled},et.variant==="outlined"&&{border:`1px solid ${(tt.vars||tt).palette.action.disabledBackground}`},et.variant==="contained"&&{color:(tt.vars||tt).palette.action.disabled,boxShadow:(tt.vars||tt).shadows[0],backgroundColor:(tt.vars||tt).palette.action.disabledBackground})},et.variant==="text"&&{padding:"6px 8px"},et.variant==="text"&&et.color!=="inherit"&&{color:(tt.vars||tt).palette[et.color].main},et.variant==="outlined"&&{padding:"5px 15px",border:"1px solid currentColor"},et.variant==="outlined"&&et.color!=="inherit"&&{color:(tt.vars||tt).palette[et.color].main,border:tt.vars?`1px solid rgba(${tt.vars.palette[et.color].mainChannel} / 0.5)`:`1px solid ${alpha$1(tt.palette[et.color].main,.5)}`},et.variant==="contained"&&{color:tt.vars?tt.vars.palette.text.primary:(nt=(rt=tt.palette).getContrastText)==null?void 0:nt.call(rt,tt.palette.grey[300]),backgroundColor:tt.vars?tt.vars.palette.Button.inheritContainedBg:it,boxShadow:(tt.vars||tt).shadows[2]},et.variant==="contained"&&et.color!=="inherit"&&{color:(tt.vars||tt).palette[et.color].contrastText,backgroundColor:(tt.vars||tt).palette[et.color].main},et.color==="inherit"&&{color:"inherit",borderColor:"currentColor"},et.size==="small"&&et.variant==="text"&&{padding:"4px 5px",fontSize:tt.typography.pxToRem(13)},et.size==="large"&&et.variant==="text"&&{padding:"8px 11px",fontSize:tt.typography.pxToRem(15)},et.size==="small"&&et.variant==="outlined"&&{padding:"3px 9px",fontSize:tt.typography.pxToRem(13)},et.size==="large"&&et.variant==="outlined"&&{padding:"7px 21px",fontSize:tt.typography.pxToRem(15)},et.size==="small"&&et.variant==="contained"&&{padding:"4px 10px",fontSize:tt.typography.pxToRem(13)},et.size==="large"&&et.variant==="contained"&&{padding:"8px 22px",fontSize:tt.typography.pxToRem(15)},et.fullWidth&&{width:"100%"})},({ownerState:tt})=>tt.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${buttonClasses$1.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${buttonClasses$1.disabled}`]:{boxShadow:"none"}}),ButtonStartIcon=styled$1("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.startIcon,et[`iconSize${capitalize(nt.size)}`]]}})(({ownerState:tt})=>_extends$u({display:"inherit",marginRight:8,marginLeft:-4},tt.size==="small"&&{marginLeft:-2},commonIconStyles(tt))),ButtonEndIcon=styled$1("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.endIcon,et[`iconSize${capitalize(nt.size)}`]]}})(({ownerState:tt})=>_extends$u({display:"inherit",marginRight:-4,marginLeft:8},tt.size==="small"&&{marginRight:-2},commonIconStyles(tt))),Button$1=reactExports.forwardRef(function(et,nt){const rt=reactExports.useContext(ButtonGroupContext$1),it=reactExports.useContext(ButtonGroupButtonContext$1),ot=resolveProps(rt,et),at=useThemeProps({props:ot,name:"MuiButton"}),{children:st,color:lt="primary",component:ct="button",className:ut,disabled:ht=!1,disableElevation:dt=!1,disableFocusRipple:pt=!1,endIcon:mt,focusVisibleClassName:gt,fullWidth:yt=!1,size:bt="medium",startIcon:vt,type:xt,variant:kt="text"}=at,St=_objectWithoutPropertiesLoose$m(at,_excluded$1j),Tt=_extends$u({},at,{color:lt,component:ct,disabled:ht,disableElevation:dt,disableFocusRipple:pt,fullWidth:yt,size:bt,type:xt,variant:kt}),At=useUtilityClasses$N(Tt),Et=vt&&jsxRuntimeExports.jsx(ButtonStartIcon,{className:At.startIcon,ownerState:Tt,children:vt}),$t=mt&&jsxRuntimeExports.jsx(ButtonEndIcon,{className:At.endIcon,ownerState:Tt,children:mt}),Dt=it||"";return jsxRuntimeExports.jsxs(ButtonRoot,_extends$u({ownerState:Tt,className:clsx$3(rt.className,At.root,ut,Dt),component:ct,disabled:ht,focusRipple:!pt,focusVisibleClassName:clsx$3(At.focusVisible,gt),ref:nt,type:xt},St,{classes:At,children:[Et,st,$t]}))}),Button$2=Button$1;function getModalUtilityClass(tt){return generateUtilityClass("MuiModal",tt)}generateUtilityClasses("MuiModal",["root","hidden","backdrop"]);const _excluded$1i=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],useUtilityClasses$M=tt=>{const{open:et,exited:nt,classes:rt}=tt;return composeClasses({root:["root",!et&&nt&&"hidden"],backdrop:["backdrop"]},getModalUtilityClass,rt)},ModalRoot=styled$1("div",{name:"MuiModal",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,!nt.open&&nt.exited&&et.hidden]}})(({theme:tt,ownerState:et})=>_extends$u({position:"fixed",zIndex:(tt.vars||tt).zIndex.modal,right:0,bottom:0,top:0,left:0},!et.open&&et.exited&&{visibility:"hidden"})),ModalBackdrop=styled$1(Backdrop$1,{name:"MuiModal",slot:"Backdrop",overridesResolver:(tt,et)=>et.backdrop})({zIndex:-1}),Modal=reactExports.forwardRef(function(et,nt){var rt,it,ot,at,st,lt;const ct=useThemeProps({name:"MuiModal",props:et}),{BackdropComponent:ut=ModalBackdrop,BackdropProps:ht,className:dt,closeAfterTransition:pt=!1,children:mt,container:gt,component:yt,components:bt={},componentsProps:vt={},disableAutoFocus:xt=!1,disableEnforceFocus:kt=!1,disableEscapeKeyDown:St=!1,disablePortal:Tt=!1,disableRestoreFocus:At=!1,disableScrollLock:Et=!1,hideBackdrop:$t=!1,keepMounted:Dt=!1,onBackdropClick:jt,open:Pt,slotProps:Ct,slots:wt}=ct,It=_objectWithoutPropertiesLoose$m(ct,_excluded$1i),Ot=_extends$u({},ct,{closeAfterTransition:pt,disableAutoFocus:xt,disableEnforceFocus:kt,disableEscapeKeyDown:St,disablePortal:Tt,disableRestoreFocus:At,disableScrollLock:Et,hideBackdrop:$t,keepMounted:Dt}),{getRootProps:Wt,getBackdropProps:zt,getTransitionProps:Ft,portalRef:Nt,isTopModal:Ut,exited:Mt,hasTransition:Ht}=useModal$1(_extends$u({},Ot,{rootRef:nt})),en=_extends$u({},Ot,{exited:Mt}),sn=useUtilityClasses$M(en),Kt={};if(mt.props.tabIndex===void 0&&(Kt.tabIndex="-1"),Ht){const{onEnter:_n,onExited:Pn}=Ft();Kt.onEnter=_n,Kt.onExited=Pn}const rn=(rt=(it=wt==null?void 0:wt.root)!=null?it:bt.Root)!=null?rt:ModalRoot,nn=(ot=(at=wt==null?void 0:wt.backdrop)!=null?at:bt.Backdrop)!=null?ot:ut,hn=(st=Ct==null?void 0:Ct.root)!=null?st:vt.root,vn=(lt=Ct==null?void 0:Ct.backdrop)!=null?lt:vt.backdrop,an=useSlotProps({elementType:rn,externalSlotProps:hn,externalForwardedProps:It,getSlotProps:Wt,additionalProps:{ref:nt,as:yt},ownerState:en,className:clsx$3(dt,hn==null?void 0:hn.className,sn==null?void 0:sn.root,!en.open&&en.exited&&(sn==null?void 0:sn.hidden))}),Qt=useSlotProps({elementType:nn,externalSlotProps:vn,additionalProps:ht,getSlotProps:_n=>zt(_extends$u({},_n,{onClick:Pn=>{jt&&jt(Pn),_n!=null&&_n.onClick&&_n.onClick(Pn)}})),className:clsx$3(vn==null?void 0:vn.className,ht==null?void 0:ht.className,sn==null?void 0:sn.backdrop),ownerState:en});return!Dt&&!Pt&&(!Ht||Mt)?null:jsxRuntimeExports.jsx(Portal$1,{ref:Nt,container:gt,disablePortal:Tt,children:jsxRuntimeExports.jsxs(rn,_extends$u({},an,{children:[!$t&&ut?jsxRuntimeExports.jsx(nn,_extends$u({},Qt)):null,jsxRuntimeExports.jsx(FocusTrap,{disableEnforceFocus:kt,disableAutoFocus:xt,disableRestoreFocus:At,isEnabled:Ut,open:Pt,children:reactExports.cloneElement(mt,Kt)})]}))})}),Modal$1=Modal;function getDialogUtilityClass(tt){return generateUtilityClass("MuiDialog",tt)}const dialogClasses=generateUtilityClasses("MuiDialog",["root","scrollPaper","scrollBody","container","paper","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]),dialogClasses$1=dialogClasses,DialogContext=reactExports.createContext({}),DialogContext$1=DialogContext,_excluded$1h=["aria-describedby","aria-labelledby","BackdropComponent","BackdropProps","children","className","disableEscapeKeyDown","fullScreen","fullWidth","maxWidth","onBackdropClick","onClose","open","PaperComponent","PaperProps","scroll","TransitionComponent","transitionDuration","TransitionProps"],DialogBackdrop=styled$1(Backdrop$1,{name:"MuiDialog",slot:"Backdrop",overrides:(tt,et)=>et.backdrop})({zIndex:-1}),useUtilityClasses$L=tt=>{const{classes:et,scroll:nt,maxWidth:rt,fullWidth:it,fullScreen:ot}=tt,at={root:["root"],container:["container",`scroll${capitalize(nt)}`],paper:["paper",`paperScroll${capitalize(nt)}`,`paperWidth${capitalize(String(rt))}`,it&&"paperFullWidth",ot&&"paperFullScreen"]};return composeClasses(at,getDialogUtilityClass,et)},DialogRoot=styled$1(Modal$1,{name:"MuiDialog",slot:"Root",overridesResolver:(tt,et)=>et.root})({"@media print":{position:"absolute !important"}}),DialogContainer=styled$1("div",{name:"MuiDialog",slot:"Container",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.container,et[`scroll${capitalize(nt.scroll)}`]]}})(({ownerState:tt})=>_extends$u({height:"100%","@media print":{height:"auto"},outline:0},tt.scroll==="paper"&&{display:"flex",justifyContent:"center",alignItems:"center"},tt.scroll==="body"&&{overflowY:"auto",overflowX:"hidden",textAlign:"center","&:after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}})),DialogPaper=styled$1(Paper$1,{name:"MuiDialog",slot:"Paper",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.paper,et[`scrollPaper${capitalize(nt.scroll)}`],et[`paperWidth${capitalize(String(nt.maxWidth))}`],nt.fullWidth&&et.paperFullWidth,nt.fullScreen&&et.paperFullScreen]}})(({theme:tt,ownerState:et})=>_extends$u({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"}},et.scroll==="paper"&&{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"},et.scroll==="body"&&{display:"inline-block",verticalAlign:"middle",textAlign:"left"},!et.maxWidth&&{maxWidth:"calc(100% - 64px)"},et.maxWidth==="xs"&&{maxWidth:tt.breakpoints.unit==="px"?Math.max(tt.breakpoints.values.xs,444):`max(${tt.breakpoints.values.xs}${tt.breakpoints.unit}, 444px)`,[`&.${dialogClasses$1.paperScrollBody}`]:{[tt.breakpoints.down(Math.max(tt.breakpoints.values.xs,444)+32*2)]:{maxWidth:"calc(100% - 64px)"}}},et.maxWidth&&et.maxWidth!=="xs"&&{maxWidth:`${tt.breakpoints.values[et.maxWidth]}${tt.breakpoints.unit}`,[`&.${dialogClasses$1.paperScrollBody}`]:{[tt.breakpoints.down(tt.breakpoints.values[et.maxWidth]+32*2)]:{maxWidth:"calc(100% - 64px)"}}},et.fullWidth&&{width:"calc(100% - 64px)"},et.fullScreen&&{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0,[`&.${dialogClasses$1.paperScrollBody}`]:{margin:0,maxWidth:"100%"}})),Dialog=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDialog"}),it=useTheme(),ot={enter:it.transitions.duration.enteringScreen,exit:it.transitions.duration.leavingScreen},{"aria-describedby":at,"aria-labelledby":st,BackdropComponent:lt,BackdropProps:ct,children:ut,className:ht,disableEscapeKeyDown:dt=!1,fullScreen:pt=!1,fullWidth:mt=!1,maxWidth:gt="sm",onBackdropClick:yt,onClose:bt,open:vt,PaperComponent:xt=Paper$1,PaperProps:kt={},scroll:St="paper",TransitionComponent:Tt=Fade$1,transitionDuration:At=ot,TransitionProps:Et}=rt,$t=_objectWithoutPropertiesLoose$m(rt,_excluded$1h),Dt=_extends$u({},rt,{disableEscapeKeyDown:dt,fullScreen:pt,fullWidth:mt,maxWidth:gt,scroll:St}),jt=useUtilityClasses$L(Dt),Pt=reactExports.useRef(),Ct=Wt=>{Pt.current=Wt.target===Wt.currentTarget},wt=Wt=>{Pt.current&&(Pt.current=null,yt&&yt(Wt),bt&&bt(Wt,"backdropClick"))},It=useId(st),Ot=reactExports.useMemo(()=>({titleId:It}),[It]);return jsxRuntimeExports.jsx(DialogRoot,_extends$u({className:clsx$3(jt.root,ht),closeAfterTransition:!0,components:{Backdrop:DialogBackdrop},componentsProps:{backdrop:_extends$u({transitionDuration:At,as:lt},ct)},disableEscapeKeyDown:dt,onClose:bt,open:vt,ref:nt,onClick:wt,ownerState:Dt},$t,{children:jsxRuntimeExports.jsx(Tt,_extends$u({appear:!0,in:vt,timeout:At,role:"presentation"},Et,{children:jsxRuntimeExports.jsx(DialogContainer,{className:clsx$3(jt.container),onMouseDown:Ct,ownerState:Dt,children:jsxRuntimeExports.jsx(DialogPaper,_extends$u({as:xt,elevation:24,role:"dialog","aria-describedby":at,"aria-labelledby":It},kt,{className:clsx$3(jt.paper,kt.className),ownerState:Dt,children:jsxRuntimeExports.jsx(DialogContext$1.Provider,{value:Ot,children:ut})}))})}))}))}),MuiDialog=Dialog;function getDialogActionsUtilityClass(tt){return generateUtilityClass("MuiDialogActions",tt)}generateUtilityClasses("MuiDialogActions",["root","spacing"]);const _excluded$1g=["className","disableSpacing"],useUtilityClasses$K=tt=>{const{classes:et,disableSpacing:nt}=tt;return composeClasses({root:["root",!nt&&"spacing"]},getDialogActionsUtilityClass,et)},DialogActionsRoot=styled$1("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,!nt.disableSpacing&&et.spacing]}})(({ownerState:tt})=>_extends$u({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto"},!tt.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),DialogActions=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDialogActions"}),{className:it,disableSpacing:ot=!1}=rt,at=_objectWithoutPropertiesLoose$m(rt,_excluded$1g),st=_extends$u({},rt,{disableSpacing:ot}),lt=useUtilityClasses$K(st);return jsxRuntimeExports.jsx(DialogActionsRoot,_extends$u({className:clsx$3(lt.root,it),ownerState:st,ref:nt},at))}),DialogActions$1=DialogActions;function getDialogContentUtilityClass(tt){return generateUtilityClass("MuiDialogContent",tt)}generateUtilityClasses("MuiDialogContent",["root","dividers"]);const dialogTitleClasses=generateUtilityClasses("MuiDialogTitle",["root"]),dialogTitleClasses$1=dialogTitleClasses,_excluded$1f=["className","dividers"],useUtilityClasses$J=tt=>{const{classes:et,dividers:nt}=tt;return composeClasses({root:["root",nt&&"dividers"]},getDialogContentUtilityClass,et)},DialogContentRoot=styled$1("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.dividers&&et.dividers]}})(({theme:tt,ownerState:et})=>_extends$u({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px"},et.dividers?{padding:"16px 24px",borderTop:`1px solid ${(tt.vars||tt).palette.divider}`,borderBottom:`1px solid ${(tt.vars||tt).palette.divider}`}:{[`.${dialogTitleClasses$1.root} + &`]:{paddingTop:0}})),DialogContent=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDialogContent"}),{className:it,dividers:ot=!1}=rt,at=_objectWithoutPropertiesLoose$m(rt,_excluded$1f),st=_extends$u({},rt,{dividers:ot}),lt=useUtilityClasses$J(st);return jsxRuntimeExports.jsx(DialogContentRoot,_extends$u({className:clsx$3(lt.root,it),ownerState:st,ref:nt},at))}),DialogContent$1=DialogContent;function getDividerUtilityClass(tt){return generateUtilityClass("MuiDivider",tt)}const dividerClasses=generateUtilityClasses("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),_excluded$1e=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],useUtilityClasses$I=tt=>{const{absolute:et,children:nt,classes:rt,flexItem:it,light:ot,orientation:at,textAlign:st,variant:lt}=tt;return composeClasses({root:["root",et&&"absolute",lt,ot&&"light",at==="vertical"&&"vertical",it&&"flexItem",nt&&"withChildren",nt&&at==="vertical"&&"withChildrenVertical",st==="right"&&at!=="vertical"&&"textAlignRight",st==="left"&&at!=="vertical"&&"textAlignLeft"],wrapper:["wrapper",at==="vertical"&&"wrapperVertical"]},getDividerUtilityClass,rt)},DividerRoot=styled$1("div",{name:"MuiDivider",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.absolute&&et.absolute,et[nt.variant],nt.light&&et.light,nt.orientation==="vertical"&&et.vertical,nt.flexItem&&et.flexItem,nt.children&&et.withChildren,nt.children&&nt.orientation==="vertical"&&et.withChildrenVertical,nt.textAlign==="right"&&nt.orientation!=="vertical"&&et.textAlignRight,nt.textAlign==="left"&&nt.orientation!=="vertical"&&et.textAlignLeft]}})(({theme:tt,ownerState:et})=>_extends$u({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(tt.vars||tt).palette.divider,borderBottomWidth:"thin"},et.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},et.light&&{borderColor:tt.vars?`rgba(${tt.vars.palette.dividerChannel} / 0.08)`:alpha$1(tt.palette.divider,.08)},et.variant==="inset"&&{marginLeft:72},et.variant==="middle"&&et.orientation==="horizontal"&&{marginLeft:tt.spacing(2),marginRight:tt.spacing(2)},et.variant==="middle"&&et.orientation==="vertical"&&{marginTop:tt.spacing(1),marginBottom:tt.spacing(1)},et.orientation==="vertical"&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},et.flexItem&&{alignSelf:"stretch",height:"auto"}),({ownerState:tt})=>_extends$u({},tt.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,"&::before, &::after":{content:'""',alignSelf:"center"}}),({theme:tt,ownerState:et})=>_extends$u({},et.children&&et.orientation!=="vertical"&&{"&::before, &::after":{width:"100%",borderTop:`thin solid ${(tt.vars||tt).palette.divider}`}}),({theme:tt,ownerState:et})=>_extends$u({},et.children&&et.orientation==="vertical"&&{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:`thin solid ${(tt.vars||tt).palette.divider}`}}),({ownerState:tt})=>_extends$u({},tt.textAlign==="right"&&tt.orientation!=="vertical"&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},tt.textAlign==="left"&&tt.orientation!=="vertical"&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})),DividerWrapper=styled$1("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.wrapper,nt.orientation==="vertical"&&et.wrapperVertical]}})(({theme:tt,ownerState:et})=>_extends$u({display:"inline-block",paddingLeft:`calc(${tt.spacing(1)} * 1.2)`,paddingRight:`calc(${tt.spacing(1)} * 1.2)`},et.orientation==="vertical"&&{paddingTop:`calc(${tt.spacing(1)} * 1.2)`,paddingBottom:`calc(${tt.spacing(1)} * 1.2)`})),Divider$2=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDivider"}),{absolute:it=!1,children:ot,className:at,component:st=ot?"div":"hr",flexItem:lt=!1,light:ct=!1,orientation:ut="horizontal",role:ht=st!=="hr"?"separator":void 0,textAlign:dt="center",variant:pt="fullWidth"}=rt,mt=_objectWithoutPropertiesLoose$m(rt,_excluded$1e),gt=_extends$u({},rt,{absolute:it,component:st,flexItem:lt,light:ct,orientation:ut,role:ht,textAlign:dt,variant:pt}),yt=useUtilityClasses$I(gt);return jsxRuntimeExports.jsx(DividerRoot,_extends$u({as:st,className:clsx$3(yt.root,at),role:ht,ref:nt,ownerState:gt},mt,{children:ot?jsxRuntimeExports.jsx(DividerWrapper,{className:yt.wrapper,ownerState:gt,children:ot}):null}))});Divider$2.muiSkipListHighlight=!0;const Divider$3=Divider$2,_excluded$1d=["addEndListener","appear","children","container","direction","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function getTranslateValue(tt,et,nt){const rt=et.getBoundingClientRect(),it=nt&&nt.getBoundingClientRect(),ot=ownerWindow(et);let at;if(et.fakeTransform)at=et.fakeTransform;else{const ct=ot.getComputedStyle(et);at=ct.getPropertyValue("-webkit-transform")||ct.getPropertyValue("transform")}let st=0,lt=0;if(at&&at!=="none"&&typeof at=="string"){const ct=at.split("(")[1].split(")")[0].split(",");st=parseInt(ct[4],10),lt=parseInt(ct[5],10)}return tt==="left"?it?`translateX(${it.right+st-rt.left}px)`:`translateX(${ot.innerWidth+st-rt.left}px)`:tt==="right"?it?`translateX(-${rt.right-it.left-st}px)`:`translateX(-${rt.left+rt.width-st}px)`:tt==="up"?it?`translateY(${it.bottom+lt-rt.top}px)`:`translateY(${ot.innerHeight+lt-rt.top}px)`:it?`translateY(-${rt.top-it.top+rt.height-lt}px)`:`translateY(-${rt.top+rt.height-lt}px)`}function resolveContainer(tt){return typeof tt=="function"?tt():tt}function setTranslateValue(tt,et,nt){const rt=resolveContainer(nt),it=getTranslateValue(tt,et,rt);it&&(et.style.webkitTransform=it,et.style.transform=it)}const Slide=reactExports.forwardRef(function(et,nt){const rt=useTheme(),it={enter:rt.transitions.easing.easeOut,exit:rt.transitions.easing.sharp},ot={enter:rt.transitions.duration.enteringScreen,exit:rt.transitions.duration.leavingScreen},{addEndListener:at,appear:st=!0,children:lt,container:ct,direction:ut="down",easing:ht=it,in:dt,onEnter:pt,onEntered:mt,onEntering:gt,onExit:yt,onExited:bt,onExiting:vt,style:xt,timeout:kt=ot,TransitionComponent:St=Transition$2}=et,Tt=_objectWithoutPropertiesLoose$m(et,_excluded$1d),At=reactExports.useRef(null),Et=useForkRef(lt.ref,At,nt),$t=zt=>Ft=>{zt&&(Ft===void 0?zt(At.current):zt(At.current,Ft))},Dt=$t((zt,Ft)=>{setTranslateValue(ut,zt,ct),reflow(zt),pt&&pt(zt,Ft)}),jt=$t((zt,Ft)=>{const Nt=getTransitionProps({timeout:kt,style:xt,easing:ht},{mode:"enter"});zt.style.webkitTransition=rt.transitions.create("-webkit-transform",_extends$u({},Nt)),zt.style.transition=rt.transitions.create("transform",_extends$u({},Nt)),zt.style.webkitTransform="none",zt.style.transform="none",gt&>(zt,Ft)}),Pt=$t(mt),Ct=$t(vt),wt=$t(zt=>{const Ft=getTransitionProps({timeout:kt,style:xt,easing:ht},{mode:"exit"});zt.style.webkitTransition=rt.transitions.create("-webkit-transform",Ft),zt.style.transition=rt.transitions.create("transform",Ft),setTranslateValue(ut,zt,ct),yt&&yt(zt)}),It=$t(zt=>{zt.style.webkitTransition="",zt.style.transition="",bt&&bt(zt)}),Ot=zt=>{at&&at(At.current,zt)},Wt=reactExports.useCallback(()=>{At.current&&setTranslateValue(ut,At.current,ct)},[ut,ct]);return reactExports.useEffect(()=>{if(dt||ut==="down"||ut==="right")return;const zt=debounce$5(()=>{At.current&&setTranslateValue(ut,At.current,ct)}),Ft=ownerWindow(At.current);return Ft.addEventListener("resize",zt),()=>{zt.clear(),Ft.removeEventListener("resize",zt)}},[ut,dt,ct]),reactExports.useEffect(()=>{dt||Wt()},[dt,Wt]),jsxRuntimeExports.jsx(St,_extends$u({nodeRef:At,onEnter:Dt,onEntered:Pt,onEntering:jt,onExit:wt,onExited:It,onExiting:Ct,addEndListener:Ot,appear:st,in:dt,timeout:kt},Tt,{children:(zt,Ft)=>reactExports.cloneElement(lt,_extends$u({ref:Et,style:_extends$u({visibility:zt==="exited"&&!dt?"hidden":void 0},xt,lt.props.style)},Ft))}))}),Slide$1=Slide,_excluded$1c=["disableUnderline","components","componentsProps","fullWidth","hiddenLabel","inputComponent","multiline","slotProps","slots","type"],useUtilityClasses$H=tt=>{const{classes:et,disableUnderline:nt}=tt,it=composeClasses({root:["root",!nt&&"underline"],input:["input"]},getFilledInputUtilityClass,et);return _extends$u({},et,it)},FilledInputRoot=styled$1(InputBaseRoot,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiFilledInput",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[...rootOverridesResolver(tt,et),!nt.disableUnderline&&et.underline]}})(({theme:tt,ownerState:et})=>{var nt;const rt=tt.palette.mode==="light",it=rt?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",ot=rt?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",at=rt?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",st=rt?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return _extends$u({position:"relative",backgroundColor:tt.vars?tt.vars.palette.FilledInput.bg:ot,borderTopLeftRadius:(tt.vars||tt).shape.borderRadius,borderTopRightRadius:(tt.vars||tt).shape.borderRadius,transition:tt.transitions.create("background-color",{duration:tt.transitions.duration.shorter,easing:tt.transitions.easing.easeOut}),"&:hover":{backgroundColor:tt.vars?tt.vars.palette.FilledInput.hoverBg:at,"@media (hover: none)":{backgroundColor:tt.vars?tt.vars.palette.FilledInput.bg:ot}},[`&.${filledInputClasses$1.focused}`]:{backgroundColor:tt.vars?tt.vars.palette.FilledInput.bg:ot},[`&.${filledInputClasses$1.disabled}`]:{backgroundColor:tt.vars?tt.vars.palette.FilledInput.disabledBg:st}},!et.disableUnderline&&{"&:after":{borderBottom:`2px solid ${(nt=(tt.vars||tt).palette[et.color||"primary"])==null?void 0:nt.main}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:tt.transitions.create("transform",{duration:tt.transitions.duration.shorter,easing:tt.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${filledInputClasses$1.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${filledInputClasses$1.error}`]:{"&:before, &:after":{borderBottomColor:(tt.vars||tt).palette.error.main}},"&:before":{borderBottom:`1px solid ${tt.vars?`rgba(${tt.vars.palette.common.onBackgroundChannel} / ${tt.vars.opacity.inputUnderline})`:it}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:tt.transitions.create("border-bottom-color",{duration:tt.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${filledInputClasses$1.disabled}, .${filledInputClasses$1.error}):before`]:{borderBottom:`1px solid ${(tt.vars||tt).palette.text.primary}`},[`&.${filledInputClasses$1.disabled}:before`]:{borderBottomStyle:"dotted"}},et.startAdornment&&{paddingLeft:12},et.endAdornment&&{paddingRight:12},et.multiline&&_extends$u({padding:"25px 12px 8px"},et.size==="small"&&{paddingTop:21,paddingBottom:4},et.hiddenLabel&&{paddingTop:16,paddingBottom:17}))}),FilledInputInput=styled$1(InputBaseComponent,{name:"MuiFilledInput",slot:"Input",overridesResolver:inputOverridesResolver})(({theme:tt,ownerState:et})=>_extends$u({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12},!tt.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:tt.palette.mode==="light"?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:tt.palette.mode==="light"?null:"#fff",caretColor:tt.palette.mode==="light"?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},tt.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[tt.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},et.size==="small"&&{paddingTop:21,paddingBottom:4},et.hiddenLabel&&{paddingTop:16,paddingBottom:17},et.multiline&&{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0},et.startAdornment&&{paddingLeft:0},et.endAdornment&&{paddingRight:0},et.hiddenLabel&&et.size==="small"&&{paddingTop:8,paddingBottom:9})),FilledInput=reactExports.forwardRef(function(et,nt){var rt,it,ot,at;const st=useThemeProps({props:et,name:"MuiFilledInput"}),{components:lt={},componentsProps:ct,fullWidth:ut=!1,inputComponent:ht="input",multiline:dt=!1,slotProps:pt,slots:mt={},type:gt="text"}=st,yt=_objectWithoutPropertiesLoose$m(st,_excluded$1c),bt=_extends$u({},st,{fullWidth:ut,inputComponent:ht,multiline:dt,type:gt}),vt=useUtilityClasses$H(st),xt={root:{ownerState:bt},input:{ownerState:bt}},kt=pt??ct?deepmerge$1(pt??ct,xt):xt,St=(rt=(it=mt.root)!=null?it:lt.Root)!=null?rt:FilledInputRoot,Tt=(ot=(at=mt.input)!=null?at:lt.Input)!=null?ot:FilledInputInput;return jsxRuntimeExports.jsx(InputBase$1,_extends$u({slots:{root:St,input:Tt},componentsProps:kt,fullWidth:ut,inputComponent:ht,multiline:dt,ref:nt,type:gt},yt,{classes:vt}))});FilledInput.muiName="Input";const FilledInput$1=FilledInput;function getFormControlUtilityClasses(tt){return generateUtilityClass("MuiFormControl",tt)}generateUtilityClasses("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const _excluded$1b=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],useUtilityClasses$G=tt=>{const{classes:et,margin:nt,fullWidth:rt}=tt,it={root:["root",nt!=="none"&&`margin${capitalize(nt)}`,rt&&"fullWidth"]};return composeClasses(it,getFormControlUtilityClasses,et)},FormControlRoot=styled$1("div",{name:"MuiFormControl",slot:"Root",overridesResolver:({ownerState:tt},et)=>_extends$u({},et.root,et[`margin${capitalize(tt.margin)}`],tt.fullWidth&&et.fullWidth)})(({ownerState:tt})=>_extends$u({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},tt.margin==="normal"&&{marginTop:16,marginBottom:8},tt.margin==="dense"&&{marginTop:8,marginBottom:4},tt.fullWidth&&{width:"100%"})),FormControl=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiFormControl"}),{children:it,className:ot,color:at="primary",component:st="div",disabled:lt=!1,error:ct=!1,focused:ut,fullWidth:ht=!1,hiddenLabel:dt=!1,margin:pt="none",required:mt=!1,size:gt="medium",variant:yt="outlined"}=rt,bt=_objectWithoutPropertiesLoose$m(rt,_excluded$1b),vt=_extends$u({},rt,{color:at,component:st,disabled:lt,error:ct,fullWidth:ht,hiddenLabel:dt,margin:pt,required:mt,size:gt,variant:yt}),xt=useUtilityClasses$G(vt),[kt,St]=reactExports.useState(()=>{let Ct=!1;return it&&reactExports.Children.forEach(it,wt=>{if(!isMuiElement(wt,["Input","Select"]))return;const It=isMuiElement(wt,["Select"])?wt.props.input:wt;It&&isAdornedStart(It.props)&&(Ct=!0)}),Ct}),[Tt,At]=reactExports.useState(()=>{let Ct=!1;return it&&reactExports.Children.forEach(it,wt=>{isMuiElement(wt,["Input","Select"])&&(isFilled(wt.props,!0)||isFilled(wt.props.inputProps,!0))&&(Ct=!0)}),Ct}),[Et,$t]=reactExports.useState(!1);lt&&Et&&$t(!1);const Dt=ut!==void 0&&!lt?ut:Et;let jt;const Pt=reactExports.useMemo(()=>({adornedStart:kt,setAdornedStart:St,color:at,disabled:lt,error:ct,filled:Tt,focused:Dt,fullWidth:ht,hiddenLabel:dt,size:gt,onBlur:()=>{$t(!1)},onEmpty:()=>{At(!1)},onFilled:()=>{At(!0)},onFocus:()=>{$t(!0)},registerEffect:jt,required:mt,variant:yt}),[kt,at,lt,ct,Tt,Dt,ht,dt,jt,mt,gt,yt]);return jsxRuntimeExports.jsx(FormControlContext$1.Provider,{value:Pt,children:jsxRuntimeExports.jsx(FormControlRoot,_extends$u({as:st,ownerState:vt,className:clsx$3(xt.root,ot),ref:nt},bt,{children:it}))})}),FormControl$1=FormControl,Stack$4=createStack({createStyledComponent:styled$1("div",{name:"MuiStack",slot:"Root",overridesResolver:(tt,et)=>et.root}),useThemeProps:tt=>useThemeProps({props:tt,name:"MuiStack"})}),Stack$5=Stack$4;function getFormHelperTextUtilityClasses(tt){return generateUtilityClass("MuiFormHelperText",tt)}const formHelperTextClasses=generateUtilityClasses("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]),formHelperTextClasses$1=formHelperTextClasses;var _span$3;const _excluded$1a=["children","className","component","disabled","error","filled","focused","margin","required","variant"],useUtilityClasses$F=tt=>{const{classes:et,contained:nt,size:rt,disabled:it,error:ot,filled:at,focused:st,required:lt}=tt,ct={root:["root",it&&"disabled",ot&&"error",rt&&`size${capitalize(rt)}`,nt&&"contained",st&&"focused",at&&"filled",lt&&"required"]};return composeClasses(ct,getFormHelperTextUtilityClasses,et)},FormHelperTextRoot=styled$1("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.size&&et[`size${capitalize(nt.size)}`],nt.contained&&et.contained,nt.filled&&et.filled]}})(({theme:tt,ownerState:et})=>_extends$u({color:(tt.vars||tt).palette.text.secondary},tt.typography.caption,{textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${formHelperTextClasses$1.disabled}`]:{color:(tt.vars||tt).palette.text.disabled},[`&.${formHelperTextClasses$1.error}`]:{color:(tt.vars||tt).palette.error.main}},et.size==="small"&&{marginTop:4},et.contained&&{marginLeft:14,marginRight:14})),FormHelperText=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiFormHelperText"}),{children:it,className:ot,component:at="p"}=rt,st=_objectWithoutPropertiesLoose$m(rt,_excluded$1a),lt=useFormControl(),ct=formControlState({props:rt,muiFormControl:lt,states:["variant","size","disabled","error","filled","focused","required"]}),ut=_extends$u({},rt,{component:at,contained:ct.variant==="filled"||ct.variant==="outlined",variant:ct.variant,size:ct.size,disabled:ct.disabled,error:ct.error,filled:ct.filled,focused:ct.focused,required:ct.required}),ht=useUtilityClasses$F(ut);return jsxRuntimeExports.jsx(FormHelperTextRoot,_extends$u({as:at,ownerState:ut,className:clsx$3(ht.root,ot),ref:nt},st,{children:it===" "?_span$3||(_span$3=jsxRuntimeExports.jsx("span",{className:"notranslate",children:"​"})):it}))}),FormHelperText$1=FormHelperText;function getFormLabelUtilityClasses(tt){return generateUtilityClass("MuiFormLabel",tt)}const formLabelClasses=generateUtilityClasses("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),formLabelClasses$1=formLabelClasses,_excluded$19=["children","className","color","component","disabled","error","filled","focused","required"],useUtilityClasses$E=tt=>{const{classes:et,color:nt,focused:rt,disabled:it,error:ot,filled:at,required:st}=tt,lt={root:["root",`color${capitalize(nt)}`,it&&"disabled",ot&&"error",at&&"filled",rt&&"focused",st&&"required"],asterisk:["asterisk",ot&&"error"]};return composeClasses(lt,getFormLabelUtilityClasses,et)},FormLabelRoot=styled$1("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:({ownerState:tt},et)=>_extends$u({},et.root,tt.color==="secondary"&&et.colorSecondary,tt.filled&&et.filled)})(({theme:tt,ownerState:et})=>_extends$u({color:(tt.vars||tt).palette.text.secondary},tt.typography.body1,{lineHeight:"1.4375em",padding:0,position:"relative",[`&.${formLabelClasses$1.focused}`]:{color:(tt.vars||tt).palette[et.color].main},[`&.${formLabelClasses$1.disabled}`]:{color:(tt.vars||tt).palette.text.disabled},[`&.${formLabelClasses$1.error}`]:{color:(tt.vars||tt).palette.error.main}})),AsteriskComponent=styled$1("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:(tt,et)=>et.asterisk})(({theme:tt})=>({[`&.${formLabelClasses$1.error}`]:{color:(tt.vars||tt).palette.error.main}})),FormLabel=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiFormLabel"}),{children:it,className:ot,component:at="label"}=rt,st=_objectWithoutPropertiesLoose$m(rt,_excluded$19),lt=useFormControl(),ct=formControlState({props:rt,muiFormControl:lt,states:["color","required","focused","disabled","error","filled"]}),ut=_extends$u({},rt,{color:ct.color||"primary",component:at,disabled:ct.disabled,error:ct.error,filled:ct.filled,focused:ct.focused,required:ct.required}),ht=useUtilityClasses$E(ut);return jsxRuntimeExports.jsxs(FormLabelRoot,_extends$u({as:at,ownerState:ut,className:clsx$3(ht.root,ot),ref:nt},st,{children:[it,ct.required&&jsxRuntimeExports.jsxs(AsteriskComponent,{ownerState:ut,"aria-hidden":!0,className:ht.asterisk,children:[" ","*"]})]}))}),FormLabel$1=FormLabel,_excluded$18=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function getScale(tt){return`scale(${tt}, ${tt**2})`}const styles$3={entering:{opacity:1,transform:getScale(1)},entered:{opacity:1,transform:"none"}},isWebKit154=typeof navigator<"u"&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),Grow=reactExports.forwardRef(function(et,nt){const{addEndListener:rt,appear:it=!0,children:ot,easing:at,in:st,onEnter:lt,onEntered:ct,onEntering:ut,onExit:ht,onExited:dt,onExiting:pt,style:mt,timeout:gt="auto",TransitionComponent:yt=Transition$2}=et,bt=_objectWithoutPropertiesLoose$m(et,_excluded$18),vt=reactExports.useRef(),xt=reactExports.useRef(),kt=useTheme(),St=reactExports.useRef(null),Tt=useForkRef(St,ot.ref,nt),At=It=>Ot=>{if(It){const Wt=St.current;Ot===void 0?It(Wt):It(Wt,Ot)}},Et=At(ut),$t=At((It,Ot)=>{reflow(It);const{duration:Wt,delay:zt,easing:Ft}=getTransitionProps({style:mt,timeout:gt,easing:at},{mode:"enter"});let Nt;gt==="auto"?(Nt=kt.transitions.getAutoHeightDuration(It.clientHeight),xt.current=Nt):Nt=Wt,It.style.transition=[kt.transitions.create("opacity",{duration:Nt,delay:zt}),kt.transitions.create("transform",{duration:isWebKit154?Nt:Nt*.666,delay:zt,easing:Ft})].join(","),lt&<(It,Ot)}),Dt=At(ct),jt=At(pt),Pt=At(It=>{const{duration:Ot,delay:Wt,easing:zt}=getTransitionProps({style:mt,timeout:gt,easing:at},{mode:"exit"});let Ft;gt==="auto"?(Ft=kt.transitions.getAutoHeightDuration(It.clientHeight),xt.current=Ft):Ft=Ot,It.style.transition=[kt.transitions.create("opacity",{duration:Ft,delay:Wt}),kt.transitions.create("transform",{duration:isWebKit154?Ft:Ft*.666,delay:isWebKit154?Wt:Wt||Ft*.333,easing:zt})].join(","),It.style.opacity=0,It.style.transform=getScale(.75),ht&&ht(It)}),Ct=At(dt),wt=It=>{gt==="auto"&&(vt.current=setTimeout(It,xt.current||0)),rt&&rt(St.current,It)};return reactExports.useEffect(()=>()=>{clearTimeout(vt.current)},[]),jsxRuntimeExports.jsx(yt,_extends$u({appear:it,in:st,nodeRef:St,onEnter:$t,onEntered:Dt,onEntering:Et,onExit:Pt,onExited:Ct,onExiting:jt,addEndListener:wt,timeout:gt==="auto"?null:gt},bt,{children:(It,Ot)=>reactExports.cloneElement(ot,_extends$u({style:_extends$u({opacity:0,transform:getScale(.75),visibility:It==="exited"&&!st?"hidden":void 0},styles$3[It],mt,ot.props.style),ref:Tt},Ot))}))});Grow.muiSupportAuto=!0;const Grow$1=Grow;function useMediaQueryOld(tt,et,nt,rt,it){const[ot,at]=reactExports.useState(()=>it&&nt?nt(tt).matches:rt?rt(tt).matches:et);return useEnhancedEffect$1(()=>{let st=!0;if(!nt)return;const lt=nt(tt),ct=()=>{st&&at(lt.matches)};return ct(),lt.addListener(ct),()=>{st=!1,lt.removeListener(ct)}},[tt,nt]),ot}const maybeReactUseSyncExternalStore=React$2["useSyncExternalStore"];function useMediaQueryNew(tt,et,nt,rt,it){const ot=reactExports.useCallback(()=>et,[et]),at=reactExports.useMemo(()=>{if(it&&nt)return()=>nt(tt).matches;if(rt!==null){const{matches:ut}=rt(tt);return()=>ut}return ot},[ot,tt,rt,it,nt]),[st,lt]=reactExports.useMemo(()=>{if(nt===null)return[ot,()=>()=>{}];const ut=nt(tt);return[()=>ut.matches,ht=>(ut.addListener(ht),()=>{ut.removeListener(ht)})]},[ot,nt,tt]);return maybeReactUseSyncExternalStore(lt,st,at)}function useMediaQuery(tt,et={}){const nt=useTheme$3(),rt=typeof window<"u"&&typeof window.matchMedia<"u",{defaultMatches:it=!1,matchMedia:ot=rt?window.matchMedia:null,ssrMatchMedia:at=null,noSsr:st=!1}=getThemeProps({name:"MuiUseMediaQuery",props:et,theme:nt});let lt=typeof tt=="function"?tt(nt):tt;return lt=lt.replace(/^@media( ?)/m,""),(maybeReactUseSyncExternalStore!==void 0?useMediaQueryNew:useMediaQueryOld)(lt,it,ot,at,st)}const _excluded$17=["disableUnderline","components","componentsProps","fullWidth","inputComponent","multiline","slotProps","slots","type"],useUtilityClasses$D=tt=>{const{classes:et,disableUnderline:nt}=tt,it=composeClasses({root:["root",!nt&&"underline"],input:["input"]},getInputUtilityClass,et);return _extends$u({},et,it)},InputRoot=styled$1(InputBaseRoot,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiInput",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[...rootOverridesResolver(tt,et),!nt.disableUnderline&&et.underline]}})(({theme:tt,ownerState:et})=>{let rt=tt.palette.mode==="light"?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return tt.vars&&(rt=`rgba(${tt.vars.palette.common.onBackgroundChannel} / ${tt.vars.opacity.inputUnderline})`),_extends$u({position:"relative"},et.formControl&&{"label + &":{marginTop:16}},!et.disableUnderline&&{"&:after":{borderBottom:`2px solid ${(tt.vars||tt).palette[et.color].main}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:tt.transitions.create("transform",{duration:tt.transitions.duration.shorter,easing:tt.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${inputClasses$1.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${inputClasses$1.error}`]:{"&:before, &:after":{borderBottomColor:(tt.vars||tt).palette.error.main}},"&:before":{borderBottom:`1px solid ${rt}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:tt.transitions.create("border-bottom-color",{duration:tt.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${inputClasses$1.disabled}, .${inputClasses$1.error}):before`]:{borderBottom:`2px solid ${(tt.vars||tt).palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${rt}`}},[`&.${inputClasses$1.disabled}:before`]:{borderBottomStyle:"dotted"}})}),InputInput=styled$1(InputBaseComponent,{name:"MuiInput",slot:"Input",overridesResolver:inputOverridesResolver})({}),Input$2=reactExports.forwardRef(function(et,nt){var rt,it,ot,at;const st=useThemeProps({props:et,name:"MuiInput"}),{disableUnderline:lt,components:ct={},componentsProps:ut,fullWidth:ht=!1,inputComponent:dt="input",multiline:pt=!1,slotProps:mt,slots:gt={},type:yt="text"}=st,bt=_objectWithoutPropertiesLoose$m(st,_excluded$17),vt=useUtilityClasses$D(st),kt={root:{ownerState:{disableUnderline:lt}}},St=mt??ut?deepmerge$1(mt??ut,kt):kt,Tt=(rt=(it=gt.root)!=null?it:ct.Root)!=null?rt:InputRoot,At=(ot=(at=gt.input)!=null?at:ct.Input)!=null?ot:InputInput;return jsxRuntimeExports.jsx(InputBase$1,_extends$u({slots:{root:Tt,input:At},slotProps:St,fullWidth:ht,inputComponent:dt,multiline:pt,ref:nt,type:yt},bt,{classes:vt}))});Input$2.muiName="Input";const Input$3=Input$2;function getInputAdornmentUtilityClass(tt){return generateUtilityClass("MuiInputAdornment",tt)}const inputAdornmentClasses=generateUtilityClasses("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]),inputAdornmentClasses$1=inputAdornmentClasses;var _span$2;const _excluded$16=["children","className","component","disablePointerEvents","disableTypography","position","variant"],overridesResolver$3=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,et[`position${capitalize(nt.position)}`],nt.disablePointerEvents===!0&&et.disablePointerEvents,et[nt.variant]]},useUtilityClasses$C=tt=>{const{classes:et,disablePointerEvents:nt,hiddenLabel:rt,position:it,size:ot,variant:at}=tt,st={root:["root",nt&&"disablePointerEvents",it&&`position${capitalize(it)}`,at,rt&&"hiddenLabel",ot&&`size${capitalize(ot)}`]};return composeClasses(st,getInputAdornmentUtilityClass,et)},InputAdornmentRoot=styled$1("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:overridesResolver$3})(({theme:tt,ownerState:et})=>_extends$u({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(tt.vars||tt).palette.action.active},et.variant==="filled"&&{[`&.${inputAdornmentClasses$1.positionStart}&:not(.${inputAdornmentClasses$1.hiddenLabel})`]:{marginTop:16}},et.position==="start"&&{marginRight:8},et.position==="end"&&{marginLeft:8},et.disablePointerEvents===!0&&{pointerEvents:"none"})),InputAdornment=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiInputAdornment"}),{children:it,className:ot,component:at="div",disablePointerEvents:st=!1,disableTypography:lt=!1,position:ct,variant:ut}=rt,ht=_objectWithoutPropertiesLoose$m(rt,_excluded$16),dt=useFormControl()||{};let pt=ut;ut&&dt.variant,dt&&!pt&&(pt=dt.variant);const mt=_extends$u({},rt,{hiddenLabel:dt.hiddenLabel,size:dt.size,disablePointerEvents:st,position:ct,variant:pt}),gt=useUtilityClasses$C(mt);return jsxRuntimeExports.jsx(FormControlContext$1.Provider,{value:null,children:jsxRuntimeExports.jsx(InputAdornmentRoot,_extends$u({as:at,ownerState:mt,className:clsx$3(gt.root,ot),ref:nt},ht,{children:typeof it=="string"&&!lt?jsxRuntimeExports.jsx(Typography$1,{color:"text.secondary",children:it}):jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[ct==="start"?_span$2||(_span$2=jsxRuntimeExports.jsx("span",{className:"notranslate",children:"​"})):null,it]})}))})}),MuiInputAdornment=InputAdornment;function getInputLabelUtilityClasses(tt){return generateUtilityClass("MuiInputLabel",tt)}generateUtilityClasses("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const _excluded$15=["disableAnimation","margin","shrink","variant","className"],useUtilityClasses$B=tt=>{const{classes:et,formControl:nt,size:rt,shrink:it,disableAnimation:ot,variant:at,required:st}=tt,lt={root:["root",nt&&"formControl",!ot&&"animated",it&&"shrink",rt&&rt!=="normal"&&`size${capitalize(rt)}`,at],asterisk:[st&&"asterisk"]},ct=composeClasses(lt,getInputLabelUtilityClasses,et);return _extends$u({},et,ct)},InputLabelRoot=styled$1(FormLabel$1,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiInputLabel",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[{[`& .${formLabelClasses$1.asterisk}`]:et.asterisk},et.root,nt.formControl&&et.formControl,nt.size==="small"&&et.sizeSmall,nt.shrink&&et.shrink,!nt.disableAnimation&&et.animated,et[nt.variant]]}})(({theme:tt,ownerState:et})=>_extends$u({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},et.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},et.size==="small"&&{transform:"translate(0, 17px) scale(1)"},et.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!et.disableAnimation&&{transition:tt.transitions.create(["color","transform","max-width"],{duration:tt.transitions.duration.shorter,easing:tt.transitions.easing.easeOut})},et.variant==="filled"&&_extends$u({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},et.size==="small"&&{transform:"translate(12px, 13px) scale(1)"},et.shrink&&_extends$u({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},et.size==="small"&&{transform:"translate(12px, 4px) scale(0.75)"})),et.variant==="outlined"&&_extends$u({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},et.size==="small"&&{transform:"translate(14px, 9px) scale(1)"},et.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))),InputLabel=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({name:"MuiInputLabel",props:et}),{disableAnimation:it=!1,shrink:ot,className:at}=rt,st=_objectWithoutPropertiesLoose$m(rt,_excluded$15),lt=useFormControl();let ct=ot;typeof ct>"u"&<&&(ct=lt.filled||lt.focused||lt.adornedStart);const ut=formControlState({props:rt,muiFormControl:lt,states:["size","variant","required"]}),ht=_extends$u({},rt,{disableAnimation:it,formControl:lt,shrink:ct,size:ut.size,variant:ut.variant,required:ut.required}),dt=useUtilityClasses$B(ht);return jsxRuntimeExports.jsx(InputLabelRoot,_extends$u({"data-shrink":ct,ownerState:ht,ref:nt,className:clsx$3(dt.root,at)},st,{classes:dt}))}),InputLabel$1=InputLabel,ListContext=reactExports.createContext({}),ListContext$1=ListContext;function getListUtilityClass(tt){return generateUtilityClass("MuiList",tt)}generateUtilityClasses("MuiList",["root","padding","dense","subheader"]);const _excluded$14=["children","className","component","dense","disablePadding","subheader"],useUtilityClasses$A=tt=>{const{classes:et,disablePadding:nt,dense:rt,subheader:it}=tt;return composeClasses({root:["root",!nt&&"padding",rt&&"dense",it&&"subheader"]},getListUtilityClass,et)},ListRoot=styled$1("ul",{name:"MuiList",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,!nt.disablePadding&&et.padding,nt.dense&&et.dense,nt.subheader&&et.subheader]}})(({ownerState:tt})=>_extends$u({listStyle:"none",margin:0,padding:0,position:"relative"},!tt.disablePadding&&{paddingTop:8,paddingBottom:8},tt.subheader&&{paddingTop:0})),List=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiList"}),{children:it,className:ot,component:at="ul",dense:st=!1,disablePadding:lt=!1,subheader:ct}=rt,ut=_objectWithoutPropertiesLoose$m(rt,_excluded$14),ht=reactExports.useMemo(()=>({dense:st}),[st]),dt=_extends$u({},rt,{component:at,dense:st,disablePadding:lt}),pt=useUtilityClasses$A(dt);return jsxRuntimeExports.jsx(ListContext$1.Provider,{value:ht,children:jsxRuntimeExports.jsxs(ListRoot,_extends$u({as:at,className:clsx$3(pt.root,ot),ref:nt,ownerState:dt},ut,{children:[ct,it]}))})}),List$1=List;function getListItemUtilityClass(tt){return generateUtilityClass("MuiListItem",tt)}const listItemClasses=generateUtilityClasses("MuiListItem",["root","container","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","padding","button","secondaryAction","selected"]),listItemClasses$1=listItemClasses,listItemButtonClasses=generateUtilityClasses("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"]),listItemButtonClasses$1=listItemButtonClasses;function getListItemSecondaryActionClassesUtilityClass(tt){return generateUtilityClass("MuiListItemSecondaryAction",tt)}generateUtilityClasses("MuiListItemSecondaryAction",["root","disableGutters"]);const _excluded$13=["className"],useUtilityClasses$z=tt=>{const{disableGutters:et,classes:nt}=tt;return composeClasses({root:["root",et&&"disableGutters"]},getListItemSecondaryActionClassesUtilityClass,nt)},ListItemSecondaryActionRoot=styled$1("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.disableGutters&&et.disableGutters]}})(({ownerState:tt})=>_extends$u({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)"},tt.disableGutters&&{right:0})),ListItemSecondaryAction=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiListItemSecondaryAction"}),{className:it}=rt,ot=_objectWithoutPropertiesLoose$m(rt,_excluded$13),at=reactExports.useContext(ListContext$1),st=_extends$u({},rt,{disableGutters:at.disableGutters}),lt=useUtilityClasses$z(st);return jsxRuntimeExports.jsx(ListItemSecondaryActionRoot,_extends$u({className:clsx$3(lt.root,it),ownerState:st,ref:nt},ot))});ListItemSecondaryAction.muiName="ListItemSecondaryAction";const ListItemSecondaryAction$1=ListItemSecondaryAction,_excluded$12=["className"],_excluded2$f=["alignItems","autoFocus","button","children","className","component","components","componentsProps","ContainerComponent","ContainerProps","dense","disabled","disableGutters","disablePadding","divider","focusVisibleClassName","secondaryAction","selected","slotProps","slots"],overridesResolver$2=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.dense&&et.dense,nt.alignItems==="flex-start"&&et.alignItemsFlexStart,nt.divider&&et.divider,!nt.disableGutters&&et.gutters,!nt.disablePadding&&et.padding,nt.button&&et.button,nt.hasSecondaryAction&&et.secondaryAction]},useUtilityClasses$y=tt=>{const{alignItems:et,button:nt,classes:rt,dense:it,disabled:ot,disableGutters:at,disablePadding:st,divider:lt,hasSecondaryAction:ct,selected:ut}=tt;return composeClasses({root:["root",it&&"dense",!at&&"gutters",!st&&"padding",lt&&"divider",ot&&"disabled",nt&&"button",et==="flex-start"&&"alignItemsFlexStart",ct&&"secondaryAction",ut&&"selected"],container:["container"]},getListItemUtilityClass,rt)},ListItemRoot=styled$1("div",{name:"MuiListItem",slot:"Root",overridesResolver:overridesResolver$2})(({theme:tt,ownerState:et})=>_extends$u({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left"},!et.disablePadding&&_extends$u({paddingTop:8,paddingBottom:8},et.dense&&{paddingTop:4,paddingBottom:4},!et.disableGutters&&{paddingLeft:16,paddingRight:16},!!et.secondaryAction&&{paddingRight:48}),!!et.secondaryAction&&{[`& > .${listItemButtonClasses$1.root}`]:{paddingRight:48}},{[`&.${listItemClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette.action.focus},[`&.${listItemClasses$1.selected}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.selectedOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity),[`&.${listItemClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.focusOpacity}))`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity+tt.palette.action.focusOpacity)}},[`&.${listItemClasses$1.disabled}`]:{opacity:(tt.vars||tt).palette.action.disabledOpacity}},et.alignItems==="flex-start"&&{alignItems:"flex-start"},et.divider&&{borderBottom:`1px solid ${(tt.vars||tt).palette.divider}`,backgroundClip:"padding-box"},et.button&&{transition:tt.transitions.create("background-color",{duration:tt.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(tt.vars||tt).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${listItemClasses$1.selected}:hover`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.hoverOpacity}))`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity+tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.selectedOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity)}}},et.hasSecondaryAction&&{paddingRight:48})),ListItemContainer=styled$1("li",{name:"MuiListItem",slot:"Container",overridesResolver:(tt,et)=>et.container})({position:"relative"}),ListItem=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiListItem"}),{alignItems:it="center",autoFocus:ot=!1,button:at=!1,children:st,className:lt,component:ct,components:ut={},componentsProps:ht={},ContainerComponent:dt="li",ContainerProps:{className:pt}={},dense:mt=!1,disabled:gt=!1,disableGutters:yt=!1,disablePadding:bt=!1,divider:vt=!1,focusVisibleClassName:xt,secondaryAction:kt,selected:St=!1,slotProps:Tt={},slots:At={}}=rt,Et=_objectWithoutPropertiesLoose$m(rt.ContainerProps,_excluded$12),$t=_objectWithoutPropertiesLoose$m(rt,_excluded2$f),Dt=reactExports.useContext(ListContext$1),jt=reactExports.useMemo(()=>({dense:mt||Dt.dense||!1,alignItems:it,disableGutters:yt}),[it,Dt.dense,mt,yt]),Pt=reactExports.useRef(null);useEnhancedEffect$1(()=>{ot&&Pt.current&&Pt.current.focus()},[ot]);const Ct=reactExports.Children.toArray(st),wt=Ct.length&&isMuiElement(Ct[Ct.length-1],["ListItemSecondaryAction"]),It=_extends$u({},rt,{alignItems:it,autoFocus:ot,button:at,dense:jt.dense,disabled:gt,disableGutters:yt,disablePadding:bt,divider:vt,hasSecondaryAction:wt,selected:St}),Ot=useUtilityClasses$y(It),Wt=useForkRef(Pt,nt),zt=At.root||ut.Root||ListItemRoot,Ft=Tt.root||ht.root||{},Nt=_extends$u({className:clsx$3(Ot.root,Ft.className,lt),disabled:gt},$t);let Ut=ct||"li";return at&&(Nt.component=ct||"div",Nt.focusVisibleClassName=clsx$3(listItemClasses$1.focusVisible,xt),Ut=ButtonBase$1),wt?(Ut=!Nt.component&&!ct?"div":Ut,dt==="li"&&(Ut==="li"?Ut="div":Nt.component==="li"&&(Nt.component="div")),jsxRuntimeExports.jsx(ListContext$1.Provider,{value:jt,children:jsxRuntimeExports.jsxs(ListItemContainer,_extends$u({as:dt,className:clsx$3(Ot.container,pt),ref:Wt,ownerState:It},Et,{children:[jsxRuntimeExports.jsx(zt,_extends$u({},Ft,!isHostComponent(zt)&&{as:Ut,ownerState:_extends$u({},It,Ft.ownerState)},Nt,{children:Ct})),Ct.pop()]}))})):jsxRuntimeExports.jsx(ListContext$1.Provider,{value:jt,children:jsxRuntimeExports.jsxs(zt,_extends$u({},Ft,{as:Ut,ref:Wt},!isHostComponent(zt)&&{ownerState:_extends$u({},It,Ft.ownerState)},Nt,{children:[Ct,kt&&jsxRuntimeExports.jsx(ListItemSecondaryAction$1,{children:kt})]}))})}),ListItem$1=ListItem,listItemIconClasses=generateUtilityClasses("MuiListItemIcon",["root","alignItemsFlexStart"]),listItemIconClasses$1=listItemIconClasses,listItemTextClasses=generateUtilityClasses("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]),listItemTextClasses$1=listItemTextClasses,_excluded$11=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function nextItem$1(tt,et,nt){return tt===et?tt.firstChild:et&&et.nextElementSibling?et.nextElementSibling:nt?null:tt.firstChild}function previousItem$1(tt,et,nt){return tt===et?nt?tt.firstChild:tt.lastChild:et&&et.previousElementSibling?et.previousElementSibling:nt?null:tt.lastChild}function textCriteriaMatches(tt,et){if(et===void 0)return!0;let nt=tt.innerText;return nt===void 0&&(nt=tt.textContent),nt=nt.trim().toLowerCase(),nt.length===0?!1:et.repeating?nt[0]===et.keys[0]:nt.indexOf(et.keys.join(""))===0}function moveFocus$1(tt,et,nt,rt,it,ot){let at=!1,st=it(tt,et,et?nt:!1);for(;st;){if(st===tt.firstChild){if(at)return!1;at=!0}const lt=rt?!1:st.disabled||st.getAttribute("aria-disabled")==="true";if(!st.hasAttribute("tabindex")||!textCriteriaMatches(st,ot)||lt)st=it(tt,st,nt);else return st.focus(),!0}return!1}const MenuList=reactExports.forwardRef(function(et,nt){const{actions:rt,autoFocus:it=!1,autoFocusItem:ot=!1,children:at,className:st,disabledItemsFocusable:lt=!1,disableListWrap:ct=!1,onKeyDown:ut,variant:ht="selectedMenu"}=et,dt=_objectWithoutPropertiesLoose$m(et,_excluded$11),pt=reactExports.useRef(null),mt=reactExports.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});useEnhancedEffect$1(()=>{it&&pt.current.focus()},[it]),reactExports.useImperativeHandle(rt,()=>({adjustStyleForScrollbar:(xt,kt)=>{const St=!pt.current.style.width;if(xt.clientHeight{const kt=pt.current,St=xt.key,Tt=ownerDocument(kt).activeElement;if(St==="ArrowDown")xt.preventDefault(),moveFocus$1(kt,Tt,ct,lt,nextItem$1);else if(St==="ArrowUp")xt.preventDefault(),moveFocus$1(kt,Tt,ct,lt,previousItem$1);else if(St==="Home")xt.preventDefault(),moveFocus$1(kt,null,ct,lt,nextItem$1);else if(St==="End")xt.preventDefault(),moveFocus$1(kt,null,ct,lt,previousItem$1);else if(St.length===1){const At=mt.current,Et=St.toLowerCase(),$t=performance.now();At.keys.length>0&&($t-At.lastTime>500?(At.keys=[],At.repeating=!0,At.previousKeyMatched=!0):At.repeating&&Et!==At.keys[0]&&(At.repeating=!1)),At.lastTime=$t,At.keys.push(Et);const Dt=Tt&&!At.repeating&&textCriteriaMatches(Tt,At);At.previousKeyMatched&&(Dt||moveFocus$1(kt,Tt,!1,lt,nextItem$1,At))?xt.preventDefault():At.previousKeyMatched=!1}ut&&ut(xt)},yt=useForkRef(pt,nt);let bt=-1;reactExports.Children.forEach(at,(xt,kt)=>{if(!reactExports.isValidElement(xt)){bt===kt&&(bt+=1,bt>=at.length&&(bt=-1));return}xt.props.disabled||(ht==="selectedMenu"&&xt.props.selected||bt===-1)&&(bt=kt),bt===kt&&(xt.props.disabled||xt.props.muiSkipListHighlight||xt.type.muiSkipListHighlight)&&(bt+=1,bt>=at.length&&(bt=-1))});const vt=reactExports.Children.map(at,(xt,kt)=>{if(kt===bt){const St={};return ot&&(St.autoFocus=!0),xt.props.tabIndex===void 0&&ht==="selectedMenu"&&(St.tabIndex=0),reactExports.cloneElement(xt,St)}return xt});return jsxRuntimeExports.jsx(List$1,_extends$u({role:"menu",ref:yt,className:st,onKeyDown:gt,tabIndex:it?0:-1},dt,{children:vt}))}),MenuList$1=MenuList;function getPopoverUtilityClass(tt){return generateUtilityClass("MuiPopover",tt)}generateUtilityClasses("MuiPopover",["root","paper"]);const _excluded$10=["onEntering"],_excluded2$e=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],_excluded3$4=["slotProps"];function getOffsetTop(tt,et){let nt=0;return typeof et=="number"?nt=et:et==="center"?nt=tt.height/2:et==="bottom"&&(nt=tt.height),nt}function getOffsetLeft(tt,et){let nt=0;return typeof et=="number"?nt=et:et==="center"?nt=tt.width/2:et==="right"&&(nt=tt.width),nt}function getTransformOriginValue(tt){return[tt.horizontal,tt.vertical].map(et=>typeof et=="number"?`${et}px`:et).join(" ")}function resolveAnchorEl(tt){return typeof tt=="function"?tt():tt}const useUtilityClasses$x=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],paper:["paper"]},getPopoverUtilityClass,et)},PopoverRoot=styled$1(Modal$1,{name:"MuiPopover",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),PopoverPaper=styled$1(Paper$1,{name:"MuiPopover",slot:"Paper",overridesResolver:(tt,et)=>et.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),Popover=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useThemeProps({props:et,name:"MuiPopover"}),{action:st,anchorEl:lt,anchorOrigin:ct={vertical:"top",horizontal:"left"},anchorPosition:ut,anchorReference:ht="anchorEl",children:dt,className:pt,container:mt,elevation:gt=8,marginThreshold:yt=16,open:bt,PaperProps:vt={},slots:xt,slotProps:kt,transformOrigin:St={vertical:"top",horizontal:"left"},TransitionComponent:Tt=Grow$1,transitionDuration:At="auto",TransitionProps:{onEntering:Et}={},disableScrollLock:$t=!1}=at,Dt=_objectWithoutPropertiesLoose$m(at.TransitionProps,_excluded$10),jt=_objectWithoutPropertiesLoose$m(at,_excluded2$e),Pt=(rt=kt==null?void 0:kt.paper)!=null?rt:vt,Ct=reactExports.useRef(),wt=useForkRef(Ct,Pt.ref),It=_extends$u({},at,{anchorOrigin:ct,anchorReference:ht,elevation:gt,marginThreshold:yt,externalPaperSlotProps:Pt,transformOrigin:St,TransitionComponent:Tt,transitionDuration:At,TransitionProps:Dt}),Ot=useUtilityClasses$x(It),Wt=reactExports.useCallback(()=>{if(ht==="anchorPosition")return ut;const _n=resolveAnchorEl(lt),$n=(_n&&_n.nodeType===1?_n:ownerDocument(Ct.current).body).getBoundingClientRect();return{top:$n.top+getOffsetTop($n,ct.vertical),left:$n.left+getOffsetLeft($n,ct.horizontal)}},[lt,ct.horizontal,ct.vertical,ut,ht]),zt=reactExports.useCallback(_n=>({vertical:getOffsetTop(_n,St.vertical),horizontal:getOffsetLeft(_n,St.horizontal)}),[St.horizontal,St.vertical]),Ft=reactExports.useCallback(_n=>{const Pn={width:_n.offsetWidth,height:_n.offsetHeight},$n=zt(Pn);if(ht==="none")return{top:null,left:null,transformOrigin:getTransformOriginValue($n)};const Nn=Wt();let Tn=Nn.top-$n.vertical,cn=Nn.left-$n.horizontal;const mn=Tn+Pn.height,In=cn+Pn.width,An=ownerWindow(resolveAnchorEl(lt)),wn=An.innerHeight-yt,fn=An.innerWidth-yt;if(yt!==null&&Tnwn){const pn=mn-wn;Tn-=pn,$n.vertical+=pn}if(yt!==null&&cnfn){const pn=In-fn;cn-=pn,$n.horizontal+=pn}return{top:`${Math.round(Tn)}px`,left:`${Math.round(cn)}px`,transformOrigin:getTransformOriginValue($n)}},[lt,ht,Wt,zt,yt]),[Nt,Ut]=reactExports.useState(bt),Mt=reactExports.useCallback(()=>{const _n=Ct.current;if(!_n)return;const Pn=Ft(_n);Pn.top!==null&&(_n.style.top=Pn.top),Pn.left!==null&&(_n.style.left=Pn.left),_n.style.transformOrigin=Pn.transformOrigin,Ut(!0)},[Ft]);reactExports.useEffect(()=>($t&&window.addEventListener("scroll",Mt),()=>window.removeEventListener("scroll",Mt)),[lt,$t,Mt]);const Ht=(_n,Pn)=>{Et&&Et(_n,Pn),Mt()},en=()=>{Ut(!1)};reactExports.useEffect(()=>{bt&&Mt()}),reactExports.useImperativeHandle(st,()=>bt?{updatePosition:()=>{Mt()}}:null,[bt,Mt]),reactExports.useEffect(()=>{if(!bt)return;const _n=debounce$5(()=>{Mt()}),Pn=ownerWindow(lt);return Pn.addEventListener("resize",_n),()=>{_n.clear(),Pn.removeEventListener("resize",_n)}},[lt,bt,Mt]);let sn=At;At==="auto"&&!Tt.muiSupportAuto&&(sn=void 0);const Kt=mt||(lt?ownerDocument(resolveAnchorEl(lt)).body:void 0),rn=(it=xt==null?void 0:xt.root)!=null?it:PopoverRoot,nn=(ot=xt==null?void 0:xt.paper)!=null?ot:PopoverPaper,hn=useSlotProps({elementType:nn,externalSlotProps:_extends$u({},Pt,{style:Nt?Pt.style:_extends$u({},Pt.style,{opacity:0})}),additionalProps:{elevation:gt,ref:wt},ownerState:It,className:clsx$3(Ot.paper,Pt==null?void 0:Pt.className)}),vn=useSlotProps({elementType:rn,externalSlotProps:(kt==null?void 0:kt.root)||{},externalForwardedProps:jt,additionalProps:{ref:nt,slotProps:{backdrop:{invisible:!0}},container:Kt,open:bt},ownerState:It,className:clsx$3(Ot.root,pt)}),{slotProps:an}=vn,Qt=_objectWithoutPropertiesLoose$m(vn,_excluded3$4);return jsxRuntimeExports.jsx(rn,_extends$u({},Qt,!isHostComponent(rn)&&{slotProps:an,disableScrollLock:$t},{children:jsxRuntimeExports.jsx(Tt,_extends$u({appear:!0,in:bt,onEntering:Ht,onExited:en,timeout:sn},Dt,{children:jsxRuntimeExports.jsx(nn,_extends$u({},hn,{children:dt}))}))}))}),Popover$1=Popover;function getMenuUtilityClass(tt){return generateUtilityClass("MuiMenu",tt)}generateUtilityClasses("MuiMenu",["root","paper","list"]);const _excluded$$=["onEntering"],_excluded2$d=["autoFocus","children","className","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant","slots","slotProps"],RTL_ORIGIN={vertical:"top",horizontal:"right"},LTR_ORIGIN={vertical:"top",horizontal:"left"},useUtilityClasses$w=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],paper:["paper"],list:["list"]},getMenuUtilityClass,et)},MenuRoot=styled$1(Popover$1,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiMenu",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),MenuPaper=styled$1(PopoverPaper,{name:"MuiMenu",slot:"Paper",overridesResolver:(tt,et)=>et.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),MenuMenuList=styled$1(MenuList$1,{name:"MuiMenu",slot:"List",overridesResolver:(tt,et)=>et.list})({outline:0}),Menu=reactExports.forwardRef(function(et,nt){var rt,it;const ot=useThemeProps({props:et,name:"MuiMenu"}),{autoFocus:at=!0,children:st,className:lt,disableAutoFocusItem:ct=!1,MenuListProps:ut={},onClose:ht,open:dt,PaperProps:pt={},PopoverClasses:mt,transitionDuration:gt="auto",TransitionProps:{onEntering:yt}={},variant:bt="selectedMenu",slots:vt={},slotProps:xt={}}=ot,kt=_objectWithoutPropertiesLoose$m(ot.TransitionProps,_excluded$$),St=_objectWithoutPropertiesLoose$m(ot,_excluded2$d),Tt=useTheme(),At=Tt.direction==="rtl",Et=_extends$u({},ot,{autoFocus:at,disableAutoFocusItem:ct,MenuListProps:ut,onEntering:yt,PaperProps:pt,transitionDuration:gt,TransitionProps:kt,variant:bt}),$t=useUtilityClasses$w(Et),Dt=at&&!ct&&dt,jt=reactExports.useRef(null),Pt=(Ft,Nt)=>{jt.current&&jt.current.adjustStyleForScrollbar(Ft,Tt),yt&&yt(Ft,Nt)},Ct=Ft=>{Ft.key==="Tab"&&(Ft.preventDefault(),ht&&ht(Ft,"tabKeyDown"))};let wt=-1;reactExports.Children.map(st,(Ft,Nt)=>{reactExports.isValidElement(Ft)&&(Ft.props.disabled||(bt==="selectedMenu"&&Ft.props.selected||wt===-1)&&(wt=Nt))});const It=(rt=vt.paper)!=null?rt:MenuPaper,Ot=(it=xt.paper)!=null?it:pt,Wt=useSlotProps({elementType:vt.root,externalSlotProps:xt.root,ownerState:Et,className:[$t.root,lt]}),zt=useSlotProps({elementType:It,externalSlotProps:Ot,ownerState:Et,className:$t.paper});return jsxRuntimeExports.jsx(MenuRoot,_extends$u({onClose:ht,anchorOrigin:{vertical:"bottom",horizontal:At?"right":"left"},transformOrigin:At?RTL_ORIGIN:LTR_ORIGIN,slots:{paper:It,root:vt.root},slotProps:{root:Wt,paper:zt},open:dt,ref:nt,transitionDuration:gt,TransitionProps:_extends$u({onEntering:Pt},kt),ownerState:Et},St,{classes:mt,children:jsxRuntimeExports.jsx(MenuMenuList,_extends$u({onKeyDown:Ct,actions:jt,autoFocus:at&&(wt===-1||ct),autoFocusItem:Dt,variant:bt},ut,{className:clsx$3($t.list,ut.className),children:st}))}))}),Menu$1=Menu;function getMenuItemUtilityClass(tt){return generateUtilityClass("MuiMenuItem",tt)}const menuItemClasses=generateUtilityClasses("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),menuItemClasses$1=menuItemClasses,_excluded$_=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],overridesResolver$1=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.dense&&et.dense,nt.divider&&et.divider,!nt.disableGutters&&et.gutters]},useUtilityClasses$v=tt=>{const{disabled:et,dense:nt,divider:rt,disableGutters:it,selected:ot,classes:at}=tt,lt=composeClasses({root:["root",nt&&"dense",et&&"disabled",!it&&"gutters",rt&&"divider",ot&&"selected"]},getMenuItemUtilityClass,at);return _extends$u({},at,lt)},MenuItemRoot=styled$1(ButtonBase$1,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiMenuItem",slot:"Root",overridesResolver:overridesResolver$1})(({theme:tt,ownerState:et})=>_extends$u({},tt.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!et.disableGutters&&{paddingLeft:16,paddingRight:16},et.divider&&{borderBottom:`1px solid ${(tt.vars||tt).palette.divider}`,backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(tt.vars||tt).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${menuItemClasses$1.selected}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.selectedOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity),[`&.${menuItemClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.focusOpacity}))`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity+tt.palette.action.focusOpacity)}},[`&.${menuItemClasses$1.selected}:hover`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.hoverOpacity}))`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity+tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.selectedOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity)}},[`&.${menuItemClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette.action.focus},[`&.${menuItemClasses$1.disabled}`]:{opacity:(tt.vars||tt).palette.action.disabledOpacity},[`& + .${dividerClasses.root}`]:{marginTop:tt.spacing(1),marginBottom:tt.spacing(1)},[`& + .${dividerClasses.inset}`]:{marginLeft:52},[`& .${listItemTextClasses$1.root}`]:{marginTop:0,marginBottom:0},[`& .${listItemTextClasses$1.inset}`]:{paddingLeft:36},[`& .${listItemIconClasses$1.root}`]:{minWidth:36}},!et.dense&&{[tt.breakpoints.up("sm")]:{minHeight:"auto"}},et.dense&&_extends$u({minHeight:32,paddingTop:4,paddingBottom:4},tt.typography.body2,{[`& .${listItemIconClasses$1.root} svg`]:{fontSize:"1.25rem"}}))),MenuItem$1=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiMenuItem"}),{autoFocus:it=!1,component:ot="li",dense:at=!1,divider:st=!1,disableGutters:lt=!1,focusVisibleClassName:ct,role:ut="menuitem",tabIndex:ht,className:dt}=rt,pt=_objectWithoutPropertiesLoose$m(rt,_excluded$_),mt=reactExports.useContext(ListContext$1),gt=reactExports.useMemo(()=>({dense:at||mt.dense||!1,disableGutters:lt}),[mt.dense,at,lt]),yt=reactExports.useRef(null);useEnhancedEffect$1(()=>{it&&yt.current&&yt.current.focus()},[it]);const bt=_extends$u({},rt,{dense:gt.dense,divider:st,disableGutters:lt}),vt=useUtilityClasses$v(rt),xt=useForkRef(yt,nt);let kt;return rt.disabled||(kt=ht!==void 0?ht:-1),jsxRuntimeExports.jsx(ListContext$1.Provider,{value:gt,children:jsxRuntimeExports.jsx(MenuItemRoot,_extends$u({ref:xt,role:ut,tabIndex:kt,component:ot,focusVisibleClassName:clsx$3(vt.focusVisible,ct),className:clsx$3(vt.root,dt)},pt,{ownerState:bt,classes:vt}))})}),MenuItem$2=MenuItem$1;function getNativeSelectUtilityClasses(tt){return generateUtilityClass("MuiNativeSelect",tt)}const nativeSelectClasses=generateUtilityClasses("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),nativeSelectClasses$1=nativeSelectClasses,_excluded$Z=["className","disabled","error","IconComponent","inputRef","variant"],useUtilityClasses$u=tt=>{const{classes:et,variant:nt,disabled:rt,multiple:it,open:ot,error:at}=tt,st={select:["select",nt,rt&&"disabled",it&&"multiple",at&&"error"],icon:["icon",`icon${capitalize(nt)}`,ot&&"iconOpen",rt&&"disabled"]};return composeClasses(st,getNativeSelectUtilityClasses,et)},nativeSelectSelectStyles=({ownerState:tt,theme:et})=>_extends$u({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":_extends$u({},et.vars?{backgroundColor:`rgba(${et.vars.palette.common.onBackgroundChannel} / 0.05)`}:{backgroundColor:et.palette.mode==="light"?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)"},{borderRadius:0}),"&::-ms-expand":{display:"none"},[`&.${nativeSelectClasses$1.disabled}`]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(et.vars||et).palette.background.paper},"&&&":{paddingRight:24,minWidth:16}},tt.variant==="filled"&&{"&&&":{paddingRight:32}},tt.variant==="outlined"&&{borderRadius:(et.vars||et).shape.borderRadius,"&:focus":{borderRadius:(et.vars||et).shape.borderRadius},"&&&":{paddingRight:32}}),NativeSelectSelect=styled$1("select",{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:rootShouldForwardProp,overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.select,et[nt.variant],nt.error&&et.error,{[`&.${nativeSelectClasses$1.multiple}`]:et.multiple}]}})(nativeSelectSelectStyles),nativeSelectIconStyles=({ownerState:tt,theme:et})=>_extends$u({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(et.vars||et).palette.action.active,[`&.${nativeSelectClasses$1.disabled}`]:{color:(et.vars||et).palette.action.disabled}},tt.open&&{transform:"rotate(180deg)"},tt.variant==="filled"&&{right:7},tt.variant==="outlined"&&{right:7}),NativeSelectIcon=styled$1("svg",{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.icon,nt.variant&&et[`icon${capitalize(nt.variant)}`],nt.open&&et.iconOpen]}})(nativeSelectIconStyles),NativeSelectInput=reactExports.forwardRef(function(et,nt){const{className:rt,disabled:it,error:ot,IconComponent:at,inputRef:st,variant:lt="standard"}=et,ct=_objectWithoutPropertiesLoose$m(et,_excluded$Z),ut=_extends$u({},et,{disabled:it,variant:lt,error:ot}),ht=useUtilityClasses$u(ut);return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(NativeSelectSelect,_extends$u({ownerState:ut,className:clsx$3(ht.select,rt),disabled:it,ref:st||nt},ct)),et.multiple?null:jsxRuntimeExports.jsx(NativeSelectIcon,{as:at,ownerState:ut,className:ht.icon})]})}),NativeSelectInput$1=NativeSelectInput;var _span$1;const _excluded$Y=["children","classes","className","label","notched"],NotchedOutlineRoot$1=styled$1("fieldset")({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),NotchedOutlineLegend=styled$1("legend")(({ownerState:tt,theme:et})=>_extends$u({float:"unset",width:"auto",overflow:"hidden"},!tt.withLabel&&{padding:0,lineHeight:"11px",transition:et.transitions.create("width",{duration:150,easing:et.transitions.easing.easeOut})},tt.withLabel&&_extends$u({display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:et.transitions.create("max-width",{duration:50,easing:et.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}},tt.notched&&{maxWidth:"100%",transition:et.transitions.create("max-width",{duration:100,easing:et.transitions.easing.easeOut,delay:50})})));function NotchedOutline(tt){const{className:et,label:nt,notched:rt}=tt,it=_objectWithoutPropertiesLoose$m(tt,_excluded$Y),ot=nt!=null&&nt!=="",at=_extends$u({},tt,{notched:rt,withLabel:ot});return jsxRuntimeExports.jsx(NotchedOutlineRoot$1,_extends$u({"aria-hidden":!0,className:et,ownerState:at},it,{children:jsxRuntimeExports.jsx(NotchedOutlineLegend,{ownerState:at,children:ot?jsxRuntimeExports.jsx("span",{children:nt}):_span$1||(_span$1=jsxRuntimeExports.jsx("span",{className:"notranslate",children:"​"}))})}))}const _excluded$X=["components","fullWidth","inputComponent","label","multiline","notched","slots","type"],useUtilityClasses$t=tt=>{const{classes:et}=tt,rt=composeClasses({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},getOutlinedInputUtilityClass,et);return _extends$u({},et,rt)},OutlinedInputRoot=styled$1(InputBaseRoot,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiOutlinedInput",slot:"Root",overridesResolver:rootOverridesResolver})(({theme:tt,ownerState:et})=>{const nt=tt.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return _extends$u({position:"relative",borderRadius:(tt.vars||tt).shape.borderRadius,[`&:hover .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:(tt.vars||tt).palette.text.primary},"@media (hover: none)":{[`&:hover .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:tt.vars?`rgba(${tt.vars.palette.common.onBackgroundChannel} / 0.23)`:nt}},[`&.${outlinedInputClasses$1.focused} .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:(tt.vars||tt).palette[et.color].main,borderWidth:2},[`&.${outlinedInputClasses$1.error} .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:(tt.vars||tt).palette.error.main},[`&.${outlinedInputClasses$1.disabled} .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:(tt.vars||tt).palette.action.disabled}},et.startAdornment&&{paddingLeft:14},et.endAdornment&&{paddingRight:14},et.multiline&&_extends$u({padding:"16.5px 14px"},et.size==="small"&&{padding:"8.5px 14px"}))}),NotchedOutlineRoot=styled$1(NotchedOutline,{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:(tt,et)=>et.notchedOutline})(({theme:tt})=>{const et=tt.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:tt.vars?`rgba(${tt.vars.palette.common.onBackgroundChannel} / 0.23)`:et}}),OutlinedInputInput=styled$1(InputBaseComponent,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:inputOverridesResolver})(({theme:tt,ownerState:et})=>_extends$u({padding:"16.5px 14px"},!tt.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:tt.palette.mode==="light"?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:tt.palette.mode==="light"?null:"#fff",caretColor:tt.palette.mode==="light"?null:"#fff",borderRadius:"inherit"}},tt.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[tt.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},et.size==="small"&&{padding:"8.5px 14px"},et.multiline&&{padding:0},et.startAdornment&&{paddingLeft:0},et.endAdornment&&{paddingRight:0})),OutlinedInput=reactExports.forwardRef(function(et,nt){var rt,it,ot,at,st;const lt=useThemeProps({props:et,name:"MuiOutlinedInput"}),{components:ct={},fullWidth:ut=!1,inputComponent:ht="input",label:dt,multiline:pt=!1,notched:mt,slots:gt={},type:yt="text"}=lt,bt=_objectWithoutPropertiesLoose$m(lt,_excluded$X),vt=useUtilityClasses$t(lt),xt=useFormControl(),kt=formControlState({props:lt,muiFormControl:xt,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),St=_extends$u({},lt,{color:kt.color||"primary",disabled:kt.disabled,error:kt.error,focused:kt.focused,formControl:xt,fullWidth:ut,hiddenLabel:kt.hiddenLabel,multiline:pt,size:kt.size,type:yt}),Tt=(rt=(it=gt.root)!=null?it:ct.Root)!=null?rt:OutlinedInputRoot,At=(ot=(at=gt.input)!=null?at:ct.Input)!=null?ot:OutlinedInputInput;return jsxRuntimeExports.jsx(InputBase$1,_extends$u({slots:{root:Tt,input:At},renderSuffix:Et=>jsxRuntimeExports.jsx(NotchedOutlineRoot,{ownerState:St,className:vt.notchedOutline,label:dt!=null&&dt!==""&&kt.required?st||(st=jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[dt," ","*"]})):dt,notched:typeof mt<"u"?mt:!!(Et.startAdornment||Et.filled||Et.focused)}),fullWidth:ut,inputComponent:ht,multiline:pt,ref:nt,type:yt},bt,{classes:_extends$u({},vt,{notchedOutline:null})}))});OutlinedInput.muiName="Input";const OutlinedInput$1=OutlinedInput;function getSelectUtilityClasses(tt){return generateUtilityClass("MuiSelect",tt)}const selectClasses=generateUtilityClasses("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),selectClasses$1=selectClasses;var _span;const _excluded$W=["aria-describedby","aria-label","autoFocus","autoWidth","children","className","defaultOpen","defaultValue","disabled","displayEmpty","error","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"],SelectSelect=styled$1("div",{name:"MuiSelect",slot:"Select",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[{[`&.${selectClasses$1.select}`]:et.select},{[`&.${selectClasses$1.select}`]:et[nt.variant]},{[`&.${selectClasses$1.error}`]:et.error},{[`&.${selectClasses$1.multiple}`]:et.multiple}]}})(nativeSelectSelectStyles,{[`&.${selectClasses$1.select}`]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),SelectIcon=styled$1("svg",{name:"MuiSelect",slot:"Icon",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.icon,nt.variant&&et[`icon${capitalize(nt.variant)}`],nt.open&&et.iconOpen]}})(nativeSelectIconStyles),SelectNativeInput=styled$1("input",{shouldForwardProp:tt=>slotShouldForwardProp(tt)&&tt!=="classes",name:"MuiSelect",slot:"NativeInput",overridesResolver:(tt,et)=>et.nativeInput})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function areEqualValues(tt,et){return typeof et=="object"&&et!==null?tt===et:String(tt)===String(et)}function isEmpty(tt){return tt==null||typeof tt=="string"&&!tt.trim()}const useUtilityClasses$s=tt=>{const{classes:et,variant:nt,disabled:rt,multiple:it,open:ot,error:at}=tt,st={select:["select",nt,rt&&"disabled",it&&"multiple",at&&"error"],icon:["icon",`icon${capitalize(nt)}`,ot&&"iconOpen",rt&&"disabled"],nativeInput:["nativeInput"]};return composeClasses(st,getSelectUtilityClasses,et)},SelectInput=reactExports.forwardRef(function(et,nt){var rt;const{"aria-describedby":it,"aria-label":ot,autoFocus:at,autoWidth:st,children:lt,className:ct,defaultOpen:ut,defaultValue:ht,disabled:dt,displayEmpty:pt,error:mt=!1,IconComponent:gt,inputRef:yt,labelId:bt,MenuProps:vt={},multiple:xt,name:kt,onBlur:St,onChange:Tt,onClose:At,onFocus:Et,onOpen:$t,open:Dt,readOnly:jt,renderValue:Pt,SelectDisplayProps:Ct={},tabIndex:wt,value:It,variant:Ot="standard"}=et,Wt=_objectWithoutPropertiesLoose$m(et,_excluded$W),[zt,Ft]=useControlled({controlled:It,default:ht,name:"Select"}),[Nt,Ut]=useControlled({controlled:Dt,default:ut,name:"Select"}),Mt=reactExports.useRef(null),Ht=reactExports.useRef(null),[en,sn]=reactExports.useState(null),{current:Kt}=reactExports.useRef(Dt!=null),[rn,nn]=reactExports.useState(),hn=useForkRef(nt,yt),vn=reactExports.useCallback(On=>{Ht.current=On,On&&sn(On)},[]),an=en==null?void 0:en.parentNode;reactExports.useImperativeHandle(hn,()=>({focus:()=>{Ht.current.focus()},node:Mt.current,value:zt}),[zt]),reactExports.useEffect(()=>{ut&&Nt&&en&&!Kt&&(nn(st?null:an.clientWidth),Ht.current.focus())},[en,st]),reactExports.useEffect(()=>{at&&Ht.current.focus()},[at]),reactExports.useEffect(()=>{if(!bt)return;const On=ownerDocument(Ht.current).getElementById(bt);if(On){const Zn=()=>{getSelection().isCollapsed&&Ht.current.focus()};return On.addEventListener("click",Zn),()=>{On.removeEventListener("click",Zn)}}},[bt]);const Qt=(On,Zn)=>{On?$t&&$t(Zn):At&&At(Zn),Kt||(nn(st?null:an.clientWidth),Ut(On))},_n=On=>{On.button===0&&(On.preventDefault(),Ht.current.focus(),Qt(!0,On))},Pn=On=>{Qt(!1,On)},$n=reactExports.Children.toArray(lt),Nn=On=>{const Zn=$n.find(Vn=>Vn.props.value===On.target.value);Zn!==void 0&&(Ft(Zn.props.value),Tt&&Tt(On,Zn))},Tn=On=>Zn=>{let Vn;if(Zn.currentTarget.hasAttribute("tabindex")){if(xt){Vn=Array.isArray(zt)?zt.slice():[];const qn=zt.indexOf(On.props.value);qn===-1?Vn.push(On.props.value):Vn.splice(qn,1)}else Vn=On.props.value;if(On.props.onClick&&On.props.onClick(Zn),zt!==Vn&&(Ft(Vn),Tt)){const qn=Zn.nativeEvent||Zn,zn=new qn.constructor(qn.type,qn);Object.defineProperty(zn,"target",{writable:!0,value:{value:Vn,name:kt}}),Tt(zn,On)}xt||Qt(!1,Zn)}},cn=On=>{jt||[" ","ArrowUp","ArrowDown","Enter"].indexOf(On.key)!==-1&&(On.preventDefault(),Qt(!0,On))},mn=en!==null&&Nt,In=On=>{!mn&&St&&(Object.defineProperty(On,"target",{writable:!0,value:{value:zt,name:kt}}),St(On))};delete Wt["aria-invalid"];let An,wn;const fn=[];let pn=!1;(isFilled({value:zt})||pt)&&(Pt?An=Pt(zt):pn=!0);const kn=$n.map(On=>{if(!reactExports.isValidElement(On))return null;let Zn;if(xt){if(!Array.isArray(zt))throw new Error(formatMuiErrorMessage(2));Zn=zt.some(Vn=>areEqualValues(Vn,On.props.value)),Zn&&pn&&fn.push(On.props.children)}else Zn=areEqualValues(zt,On.props.value),Zn&&pn&&(wn=On.props.children);return reactExports.cloneElement(On,{"aria-selected":Zn?"true":"false",onClick:Tn(On),onKeyUp:Vn=>{Vn.key===" "&&Vn.preventDefault(),On.props.onKeyUp&&On.props.onKeyUp(Vn)},role:"option",selected:Zn,value:void 0,"data-value":On.props.value})});pn&&(xt?fn.length===0?An=null:An=fn.reduce((On,Zn,Vn)=>(On.push(Zn),Vn{const{classes:et}=tt;return et},styledRootConfig={name:"MuiSelect",overridesResolver:(tt,et)=>et.root,shouldForwardProp:tt=>rootShouldForwardProp(tt)&&tt!=="variant",slot:"Root"},StyledInput$1=styled$1(Input$3,styledRootConfig)(""),StyledOutlinedInput=styled$1(OutlinedInput$1,styledRootConfig)(""),StyledFilledInput=styled$1(FilledInput$1,styledRootConfig)(""),Select$3=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({name:"MuiSelect",props:et}),{autoWidth:it=!1,children:ot,classes:at={},className:st,defaultOpen:lt=!1,displayEmpty:ct=!1,IconComponent:ut=ArrowDropDownIcon$1,id:ht,input:dt,inputProps:pt,label:mt,labelId:gt,MenuProps:yt,multiple:bt=!1,native:vt=!1,onClose:xt,onOpen:kt,open:St,renderValue:Tt,SelectDisplayProps:At,variant:Et="outlined"}=rt,$t=_objectWithoutPropertiesLoose$m(rt,_excluded$V),Dt=vt?NativeSelectInput$1:SelectInput$1,jt=useFormControl(),Pt=formControlState({props:rt,muiFormControl:jt,states:["variant","error"]}),Ct=Pt.variant||Et,wt=_extends$u({},rt,{variant:Ct,classes:at}),It=useUtilityClasses$r(wt),Ot=_objectWithoutPropertiesLoose$m(It,_excluded2$c),Wt=dt||{standard:jsxRuntimeExports.jsx(StyledInput$1,{ownerState:wt}),outlined:jsxRuntimeExports.jsx(StyledOutlinedInput,{label:mt,ownerState:wt}),filled:jsxRuntimeExports.jsx(StyledFilledInput,{ownerState:wt})}[Ct],zt=useForkRef(nt,Wt.ref);return jsxRuntimeExports.jsx(reactExports.Fragment,{children:reactExports.cloneElement(Wt,_extends$u({inputComponent:Dt,inputProps:_extends$u({children:ot,error:Pt.error,IconComponent:ut,variant:Ct,type:void 0,multiple:bt},vt?{id:ht}:{autoWidth:it,defaultOpen:lt,displayEmpty:ct,labelId:gt,MenuProps:yt,onClose:xt,onOpen:kt,open:St,renderValue:Tt,SelectDisplayProps:_extends$u({id:ht},At)},pt,{classes:pt?deepmerge$1(Ot,pt.classes):Ot},dt?dt.props.inputProps:{})},bt&&vt&&Ct==="outlined"?{notched:!0}:{},{ref:zt,className:clsx$3(Wt.props.className,st,It.root)},!dt&&{variant:Ct},$t))})});Select$3.muiName="Select";const Select$4=Select$3;function getSkeletonUtilityClass(tt){return generateUtilityClass("MuiSkeleton",tt)}generateUtilityClasses("MuiSkeleton",["root","text","rectangular","rounded","circular","pulse","wave","withChildren","fitContent","heightAuto"]);const _excluded$U=["animation","className","component","height","style","variant","width"];let _=tt=>tt,_t,_t2,_t3,_t4;const useUtilityClasses$q=tt=>{const{classes:et,variant:nt,animation:rt,hasChildren:it,width:ot,height:at}=tt;return composeClasses({root:["root",nt,rt,it&&"withChildren",it&&!ot&&"fitContent",it&&!at&&"heightAuto"]},getSkeletonUtilityClass,et)},pulseKeyframe=keyframes(_t||(_t=_` +`&&(At.value+=" ");const Et=Tt.boxSizing,$t=getStyleValue(Tt.paddingBottom)+getStyleValue(Tt.paddingTop),Dt=getStyleValue(Tt.borderBottomWidth)+getStyleValue(Tt.borderTopWidth),jt=At.scrollHeight;At.value="x";const Pt=At.scrollHeight;let Ct=jt;ot&&(Ct=Math.max(Number(ot)*Pt,Ct)),it&&(Ct=Math.min(Number(it)*Pt,Ct)),Ct=Math.max(Ct,Pt);const wt=Ct+(Et==="border-box"?$t+Dt:0),It=Math.abs(Ct-jt)<=1;return{outerHeightStyle:wt,overflow:It}},[it,ot,et.placeholder]),bt=(kt,St)=>{const{outerHeightStyle:Tt,overflow:At}=St;return pt.current<20&&(Tt>0&&Math.abs((kt.outerHeightStyle||0)-Tt)>1||kt.overflow!==At)?(pt.current+=1,{overflow:At,outerHeightStyle:Tt}):kt},vt=reactExports.useCallback(()=>{const kt=yt();isEmpty$1(kt)||gt(St=>bt(St,kt))},[yt]);useEnhancedEffect$1(()=>{const kt=()=>{const jt=yt();isEmpty$1(jt)||reactDomExports.flushSync(()=>{gt(Pt=>bt(Pt,jt))})},St=()=>{pt.current=0,kt()};let Tt;const At=debounce$5(St),Et=ut.current,$t=ownerWindow(Et);$t.addEventListener("resize",At);let Dt;return typeof ResizeObserver<"u"&&(Dt=new ResizeObserver(St),Dt.observe(Et)),()=>{At.clear(),cancelAnimationFrame(Tt),$t.removeEventListener("resize",At),Dt&&Dt.disconnect()}},[yt]),useEnhancedEffect$1(()=>{vt()}),reactExports.useEffect(()=>{pt.current=0},[st]);const xt=kt=>{pt.current=0,ct||vt(),rt&&rt(kt)};return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("textarea",_extends$u({value:st,onChange:xt,ref:ht,rows:ot,style:_extends$u({height:mt.outerHeightStyle,overflow:mt.overflow?"hidden":void 0},at)},lt)),jsxRuntimeExports.jsx("textarea",{"aria-hidden":!0,className:et.className,readOnly:!0,ref:dt,tabIndex:-1,style:_extends$u({},styles$5.shadow,at,{paddingTop:0,paddingBottom:0})})]})}),_excluded$1o=["anchorEl","component","components","componentsProps","container","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","transition","slots","slotProps"],PopperRoot=styled$1(Popper$1,{name:"MuiPopper",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),Popper=reactExports.forwardRef(function(et,nt){var rt;const it=useTheme$3(),ot=useThemeProps({props:et,name:"MuiPopper"}),{anchorEl:at,component:st,components:lt,componentsProps:ct,container:ut,disablePortal:ht,keepMounted:dt,modifiers:pt,open:mt,placement:gt,popperOptions:yt,popperRef:bt,transition:vt,slots:xt,slotProps:kt}=ot,St=_objectWithoutPropertiesLoose$m(ot,_excluded$1o),Tt=(rt=xt==null?void 0:xt.root)!=null?rt:lt==null?void 0:lt.Root,At=_extends$u({anchorEl:at,container:ut,disablePortal:ht,keepMounted:dt,modifiers:pt,open:mt,placement:gt,popperOptions:yt,popperRef:bt,transition:vt},St);return jsxRuntimeExports.jsx(PopperRoot,_extends$u({as:st,direction:it==null?void 0:it.direction,slots:{root:Tt},slotProps:kt??ct},At,{ref:nt}))}),MuiPopper=Popper,CancelIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");function getChipUtilityClass(tt){return generateUtilityClass("MuiChip",tt)}const chipClasses=generateUtilityClasses("MuiChip",["root","sizeSmall","sizeMedium","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","filledPrimary","filledSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","deleteIconFilledColorPrimary","deleteIconFilledColorSecondary","focusVisible"]),chipClasses$1=chipClasses,_excluded$1n=["avatar","className","clickable","color","component","deleteIcon","disabled","icon","label","onClick","onDelete","onKeyDown","onKeyUp","size","variant","tabIndex","skipFocusWhenDisabled"],useUtilityClasses$Q=tt=>{const{classes:et,disabled:nt,size:rt,color:it,iconColor:ot,onDelete:at,clickable:st,variant:lt}=tt,ct={root:["root",lt,nt&&"disabled",`size${capitalize(rt)}`,`color${capitalize(it)}`,st&&"clickable",st&&`clickableColor${capitalize(it)}`,at&&"deletable",at&&`deletableColor${capitalize(it)}`,`${lt}${capitalize(it)}`],label:["label",`label${capitalize(rt)}`],avatar:["avatar",`avatar${capitalize(rt)}`,`avatarColor${capitalize(it)}`],icon:["icon",`icon${capitalize(rt)}`,`iconColor${capitalize(ot)}`],deleteIcon:["deleteIcon",`deleteIcon${capitalize(rt)}`,`deleteIconColor${capitalize(it)}`,`deleteIcon${capitalize(lt)}Color${capitalize(it)}`]};return composeClasses(ct,getChipUtilityClass,et)},ChipRoot=styled$1("div",{name:"MuiChip",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt,{color:rt,iconColor:it,clickable:ot,onDelete:at,size:st,variant:lt}=nt;return[{[`& .${chipClasses$1.avatar}`]:et.avatar},{[`& .${chipClasses$1.avatar}`]:et[`avatar${capitalize(st)}`]},{[`& .${chipClasses$1.avatar}`]:et[`avatarColor${capitalize(rt)}`]},{[`& .${chipClasses$1.icon}`]:et.icon},{[`& .${chipClasses$1.icon}`]:et[`icon${capitalize(st)}`]},{[`& .${chipClasses$1.icon}`]:et[`iconColor${capitalize(it)}`]},{[`& .${chipClasses$1.deleteIcon}`]:et.deleteIcon},{[`& .${chipClasses$1.deleteIcon}`]:et[`deleteIcon${capitalize(st)}`]},{[`& .${chipClasses$1.deleteIcon}`]:et[`deleteIconColor${capitalize(rt)}`]},{[`& .${chipClasses$1.deleteIcon}`]:et[`deleteIcon${capitalize(lt)}Color${capitalize(rt)}`]},et.root,et[`size${capitalize(st)}`],et[`color${capitalize(rt)}`],ot&&et.clickable,ot&&rt!=="default"&&et[`clickableColor${capitalize(rt)})`],at&&et.deletable,at&&rt!=="default"&&et[`deletableColor${capitalize(rt)}`],et[lt],et[`${lt}${capitalize(rt)}`]]}})(({theme:tt,ownerState:et})=>{const nt=tt.palette.mode==="light"?tt.palette.grey[700]:tt.palette.grey[300];return _extends$u({maxWidth:"100%",fontFamily:tt.typography.fontFamily,fontSize:tt.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:(tt.vars||tt).palette.text.primary,backgroundColor:(tt.vars||tt).palette.action.selected,borderRadius:32/2,whiteSpace:"nowrap",transition:tt.transitions.create(["background-color","box-shadow"]),cursor:"unset",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box",[`&.${chipClasses$1.disabled}`]:{opacity:(tt.vars||tt).palette.action.disabledOpacity,pointerEvents:"none"},[`& .${chipClasses$1.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:tt.vars?tt.vars.palette.Chip.defaultAvatarColor:nt,fontSize:tt.typography.pxToRem(12)},[`& .${chipClasses$1.avatarColorPrimary}`]:{color:(tt.vars||tt).palette.primary.contrastText,backgroundColor:(tt.vars||tt).palette.primary.dark},[`& .${chipClasses$1.avatarColorSecondary}`]:{color:(tt.vars||tt).palette.secondary.contrastText,backgroundColor:(tt.vars||tt).palette.secondary.dark},[`& .${chipClasses$1.avatarSmall}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:tt.typography.pxToRem(10)},[`& .${chipClasses$1.icon}`]:_extends$u({marginLeft:5,marginRight:-6},et.size==="small"&&{fontSize:18,marginLeft:4,marginRight:-4},et.iconColor===et.color&&_extends$u({color:tt.vars?tt.vars.palette.Chip.defaultIconColor:nt},et.color!=="default"&&{color:"inherit"})),[`& .${chipClasses$1.deleteIcon}`]:_extends$u({WebkitTapHighlightColor:"transparent",color:tt.vars?`rgba(${tt.vars.palette.text.primaryChannel} / 0.26)`:alpha$1(tt.palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:tt.vars?`rgba(${tt.vars.palette.text.primaryChannel} / 0.4)`:alpha$1(tt.palette.text.primary,.4)}},et.size==="small"&&{fontSize:16,marginRight:4,marginLeft:-4},et.color!=="default"&&{color:tt.vars?`rgba(${tt.vars.palette[et.color].contrastTextChannel} / 0.7)`:alpha$1(tt.palette[et.color].contrastText,.7),"&:hover, &:active":{color:(tt.vars||tt).palette[et.color].contrastText}})},et.size==="small"&&{height:24},et.color!=="default"&&{backgroundColor:(tt.vars||tt).palette[et.color].main,color:(tt.vars||tt).palette[et.color].contrastText},et.onDelete&&{[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.selectedChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.focusOpacity}))`:alpha$1(tt.palette.action.selected,tt.palette.action.selectedOpacity+tt.palette.action.focusOpacity)}},et.onDelete&&et.color!=="default"&&{[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette[et.color].dark}})},({theme:tt,ownerState:et})=>_extends$u({},et.clickable&&{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.selectedChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.hoverOpacity}))`:alpha$1(tt.palette.action.selected,tt.palette.action.selectedOpacity+tt.palette.action.hoverOpacity)},[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.selectedChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.focusOpacity}))`:alpha$1(tt.palette.action.selected,tt.palette.action.selectedOpacity+tt.palette.action.focusOpacity)},"&:active":{boxShadow:(tt.vars||tt).shadows[1]}},et.clickable&&et.color!=="default"&&{[`&:hover, &.${chipClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette[et.color].dark}}),({theme:tt,ownerState:et})=>_extends$u({},et.variant==="outlined"&&{backgroundColor:"transparent",border:tt.vars?`1px solid ${tt.vars.palette.Chip.defaultBorder}`:`1px solid ${tt.palette.mode==="light"?tt.palette.grey[400]:tt.palette.grey[700]}`,[`&.${chipClasses$1.clickable}:hover`]:{backgroundColor:(tt.vars||tt).palette.action.hover},[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette.action.focus},[`& .${chipClasses$1.avatar}`]:{marginLeft:4},[`& .${chipClasses$1.avatarSmall}`]:{marginLeft:2},[`& .${chipClasses$1.icon}`]:{marginLeft:4},[`& .${chipClasses$1.iconSmall}`]:{marginLeft:2},[`& .${chipClasses$1.deleteIcon}`]:{marginRight:5},[`& .${chipClasses$1.deleteIconSmall}`]:{marginRight:3}},et.variant==="outlined"&&et.color!=="default"&&{color:(tt.vars||tt).palette[et.color].main,border:`1px solid ${tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / 0.7)`:alpha$1(tt.palette[et.color].main,.7)}`,[`&.${chipClasses$1.clickable}:hover`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette[et.color].main,tt.palette.action.hoverOpacity)},[`&.${chipClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / ${tt.vars.palette.action.focusOpacity})`:alpha$1(tt.palette[et.color].main,tt.palette.action.focusOpacity)},[`& .${chipClasses$1.deleteIcon}`]:{color:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / 0.7)`:alpha$1(tt.palette[et.color].main,.7),"&:hover, &:active":{color:(tt.vars||tt).palette[et.color].main}}})),ChipLabel=styled$1("span",{name:"MuiChip",slot:"Label",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt,{size:rt}=nt;return[et.label,et[`label${capitalize(rt)}`]]}})(({ownerState:tt})=>_extends$u({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap"},tt.variant==="outlined"&&{paddingLeft:11,paddingRight:11},tt.size==="small"&&{paddingLeft:8,paddingRight:8},tt.size==="small"&&tt.variant==="outlined"&&{paddingLeft:7,paddingRight:7}));function isDeleteKeyboardEvent(tt){return tt.key==="Backspace"||tt.key==="Delete"}const Chip=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiChip"}),{avatar:it,className:ot,clickable:at,color:st="default",component:lt,deleteIcon:ct,disabled:ut=!1,icon:ht,label:dt,onClick:pt,onDelete:mt,onKeyDown:gt,onKeyUp:yt,size:bt="medium",variant:vt="filled",tabIndex:xt,skipFocusWhenDisabled:kt=!1}=rt,St=_objectWithoutPropertiesLoose$m(rt,_excluded$1n),Tt=reactExports.useRef(null),At=useForkRef(Tt,nt),Et=Ft=>{Ft.stopPropagation(),mt&&mt(Ft)},$t=Ft=>{Ft.currentTarget===Ft.target&&isDeleteKeyboardEvent(Ft)&&Ft.preventDefault(),gt&>(Ft)},Dt=Ft=>{Ft.currentTarget===Ft.target&&(mt&&isDeleteKeyboardEvent(Ft)?mt(Ft):Ft.key==="Escape"&&Tt.current&&Tt.current.blur()),yt&&yt(Ft)},jt=at!==!1&&pt?!0:at,Pt=jt||mt?ButtonBase$1:lt||"div",Ct=_extends$u({},rt,{component:Pt,disabled:ut,size:bt,color:st,iconColor:reactExports.isValidElement(ht)&&ht.props.color||st,onDelete:!!mt,clickable:jt,variant:vt}),wt=useUtilityClasses$Q(Ct),It=Pt===ButtonBase$1?_extends$u({component:lt||"div",focusVisibleClassName:wt.focusVisible},mt&&{disableRipple:!0}):{};let Ot=null;mt&&(Ot=ct&&reactExports.isValidElement(ct)?reactExports.cloneElement(ct,{className:clsx$3(ct.props.className,wt.deleteIcon),onClick:Et}):jsxRuntimeExports.jsx(CancelIcon,{className:clsx$3(wt.deleteIcon),onClick:Et}));let Wt=null;it&&reactExports.isValidElement(it)&&(Wt=reactExports.cloneElement(it,{className:clsx$3(wt.avatar,it.props.className)}));let zt=null;return ht&&reactExports.isValidElement(ht)&&(zt=reactExports.cloneElement(ht,{className:clsx$3(wt.icon,ht.props.className)})),jsxRuntimeExports.jsxs(ChipRoot,_extends$u({as:Pt,className:clsx$3(wt.root,ot),disabled:jt&&ut?!0:void 0,onClick:pt,onKeyDown:$t,onKeyUp:Dt,ref:At,tabIndex:kt&&ut?-1:xt,ownerState:Ct},It,St,{children:[Wt||zt,jsxRuntimeExports.jsx(ChipLabel,{className:clsx$3(wt.label),ownerState:Ct,children:dt}),Ot]}))}),Chip$1=Chip;function formControlState({props:tt,states:et,muiFormControl:nt}){return et.reduce((rt,it)=>(rt[it]=tt[it],nt&&typeof tt[it]>"u"&&(rt[it]=nt[it]),rt),{})}const FormControlContext=reactExports.createContext(void 0),FormControlContext$1=FormControlContext;function useFormControl(){return reactExports.useContext(FormControlContext$1)}function GlobalStyles(tt){return jsxRuntimeExports.jsx(GlobalStyles$1,_extends$u({},tt,{defaultTheme:defaultTheme$1,themeId:THEME_ID}))}function hasValue(tt){return tt!=null&&!(Array.isArray(tt)&&tt.length===0)}function isFilled(tt,et=!1){return tt&&(hasValue(tt.value)&&tt.value!==""||et&&hasValue(tt.defaultValue)&&tt.defaultValue!=="")}function isAdornedStart(tt){return tt.startAdornment}function getInputBaseUtilityClass(tt){return generateUtilityClass("MuiInputBase",tt)}const inputBaseClasses=generateUtilityClasses("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"]),inputBaseClasses$1=inputBaseClasses,_excluded$1m=["aria-describedby","autoComplete","autoFocus","className","color","components","componentsProps","defaultValue","disabled","disableInjectingGlobalStyles","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","size","slotProps","slots","startAdornment","type","value"],rootOverridesResolver=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.formControl&&et.formControl,nt.startAdornment&&et.adornedStart,nt.endAdornment&&et.adornedEnd,nt.error&&et.error,nt.size==="small"&&et.sizeSmall,nt.multiline&&et.multiline,nt.color&&et[`color${capitalize(nt.color)}`],nt.fullWidth&&et.fullWidth,nt.hiddenLabel&&et.hiddenLabel]},inputOverridesResolver=(tt,et)=>{const{ownerState:nt}=tt;return[et.input,nt.size==="small"&&et.inputSizeSmall,nt.multiline&&et.inputMultiline,nt.type==="search"&&et.inputTypeSearch,nt.startAdornment&&et.inputAdornedStart,nt.endAdornment&&et.inputAdornedEnd,nt.hiddenLabel&&et.inputHiddenLabel]},useUtilityClasses$P=tt=>{const{classes:et,color:nt,disabled:rt,error:it,endAdornment:ot,focused:at,formControl:st,fullWidth:lt,hiddenLabel:ct,multiline:ut,readOnly:ht,size:dt,startAdornment:pt,type:mt}=tt,gt={root:["root",`color${capitalize(nt)}`,rt&&"disabled",it&&"error",lt&&"fullWidth",at&&"focused",st&&"formControl",dt&&dt!=="medium"&&`size${capitalize(dt)}`,ut&&"multiline",pt&&"adornedStart",ot&&"adornedEnd",ct&&"hiddenLabel",ht&&"readOnly"],input:["input",rt&&"disabled",mt==="search"&&"inputTypeSearch",ut&&"inputMultiline",dt==="small"&&"inputSizeSmall",ct&&"inputHiddenLabel",pt&&"inputAdornedStart",ot&&"inputAdornedEnd",ht&&"readOnly"]};return composeClasses(gt,getInputBaseUtilityClass,et)},InputBaseRoot=styled$1("div",{name:"MuiInputBase",slot:"Root",overridesResolver:rootOverridesResolver})(({theme:tt,ownerState:et})=>_extends$u({},tt.typography.body1,{color:(tt.vars||tt).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",[`&.${inputBaseClasses$1.disabled}`]:{color:(tt.vars||tt).palette.text.disabled,cursor:"default"}},et.multiline&&_extends$u({padding:"4px 0 5px"},et.size==="small"&&{paddingTop:1}),et.fullWidth&&{width:"100%"})),InputBaseComponent=styled$1("input",{name:"MuiInputBase",slot:"Input",overridesResolver:inputOverridesResolver})(({theme:tt,ownerState:et})=>{const nt=tt.palette.mode==="light",rt=_extends$u({color:"currentColor"},tt.vars?{opacity:tt.vars.opacity.inputPlaceholder}:{opacity:nt?.42:.5},{transition:tt.transitions.create("opacity",{duration:tt.transitions.duration.shorter})}),it={opacity:"0 !important"},ot=tt.vars?{opacity:tt.vars.opacity.inputPlaceholder}:{opacity:nt?.42:.5};return _extends$u({font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":rt,"&::-moz-placeholder":rt,"&:-ms-input-placeholder":rt,"&::-ms-input-placeholder":rt,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},[`label[data-shrink=false] + .${inputBaseClasses$1.formControl} &`]:{"&::-webkit-input-placeholder":it,"&::-moz-placeholder":it,"&:-ms-input-placeholder":it,"&::-ms-input-placeholder":it,"&:focus::-webkit-input-placeholder":ot,"&:focus::-moz-placeholder":ot,"&:focus:-ms-input-placeholder":ot,"&:focus::-ms-input-placeholder":ot},[`&.${inputBaseClasses$1.disabled}`]:{opacity:1,WebkitTextFillColor:(tt.vars||tt).palette.text.disabled},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},et.size==="small"&&{paddingTop:1},et.multiline&&{height:"auto",resize:"none",padding:0,paddingTop:0},et.type==="search"&&{MozAppearance:"textfield"})}),inputGlobalStyles=jsxRuntimeExports.jsx(GlobalStyles,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),InputBase=reactExports.forwardRef(function(et,nt){var rt;const it=useThemeProps({props:et,name:"MuiInputBase"}),{"aria-describedby":ot,autoComplete:at,autoFocus:st,className:lt,components:ct={},componentsProps:ut={},defaultValue:ht,disabled:dt,disableInjectingGlobalStyles:pt,endAdornment:mt,fullWidth:gt=!1,id:yt,inputComponent:bt="input",inputProps:vt={},inputRef:xt,maxRows:kt,minRows:St,multiline:Tt=!1,name:At,onBlur:Et,onChange:$t,onClick:Dt,onFocus:jt,onKeyDown:Pt,onKeyUp:Ct,placeholder:wt,readOnly:It,renderSuffix:Ot,rows:Wt,slotProps:zt={},slots:Ft={},startAdornment:Nt,type:Ut="text",value:Mt}=it,Ht=_objectWithoutPropertiesLoose$m(it,_excluded$1m),en=vt.value!=null?vt.value:Mt,{current:sn}=reactExports.useRef(en!=null),Kt=reactExports.useRef(),rn=reactExports.useCallback(Zt=>{},[]),nn=useForkRef(Kt,xt,vt.ref,rn),[hn,vn]=reactExports.useState(!1),an=useFormControl(),Qt=formControlState({props:it,muiFormControl:an,states:["color","disabled","error","hiddenLabel","size","required","filled"]});Qt.focused=an?an.focused:hn,reactExports.useEffect(()=>{!an&&dt&&hn&&(vn(!1),Et&&Et())},[an,dt,hn,Et]);const _n=an&&an.onFilled,Pn=an&&an.onEmpty,$n=reactExports.useCallback(Zt=>{isFilled(Zt)?_n&&_n():Pn&&Pn()},[_n,Pn]);useEnhancedEffect$1(()=>{sn&&$n({value:en})},[en,$n,sn]);const Nn=Zt=>{if(Qt.disabled){Zt.stopPropagation();return}jt&&jt(Zt),vt.onFocus&&vt.onFocus(Zt),an&&an.onFocus?an.onFocus(Zt):vn(!0)},Tn=Zt=>{Et&&Et(Zt),vt.onBlur&&vt.onBlur(Zt),an&&an.onBlur?an.onBlur(Zt):vn(!1)},cn=(Zt,...Xt)=>{if(!sn){const Sn=Zt.target||Kt.current;if(Sn==null)throw new Error(formatMuiErrorMessage(1));$n({value:Sn.value})}vt.onChange&&vt.onChange(Zt,...Xt),$t&&$t(Zt,...Xt)};reactExports.useEffect(()=>{$n(Kt.current)},[]);const mn=Zt=>{Kt.current&&Zt.currentTarget===Zt.target&&Kt.current.focus(),Dt&&Dt(Zt)};let In=bt,An=vt;Tt&&In==="input"&&(Wt?An=_extends$u({type:void 0,minRows:Wt,maxRows:Wt},An):An=_extends$u({type:void 0,maxRows:kt,minRows:St},An),In=TextareaAutosize);const wn=Zt=>{$n(Zt.animationName==="mui-auto-fill-cancel"?Kt.current:{value:"x"})};reactExports.useEffect(()=>{an&&an.setAdornedStart(!!Nt)},[an,Nt]);const fn=_extends$u({},it,{color:Qt.color||"primary",disabled:Qt.disabled,endAdornment:mt,error:Qt.error,focused:Qt.focused,formControl:an,fullWidth:gt,hiddenLabel:Qt.hiddenLabel,multiline:Tt,size:Qt.size,startAdornment:Nt,type:Ut}),pn=useUtilityClasses$P(fn),kn=Ft.root||ct.Root||InputBaseRoot,Dn=zt.root||ut.root||{},un=Ft.input||ct.Input||InputBaseComponent;return An=_extends$u({},An,(rt=zt.input)!=null?rt:ut.input),jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[!pt&&inputGlobalStyles,jsxRuntimeExports.jsxs(kn,_extends$u({},Dn,!isHostComponent(kn)&&{ownerState:_extends$u({},fn,Dn.ownerState)},{ref:nt,onClick:mn},Ht,{className:clsx$3(pn.root,Dn.className,lt,It&&"MuiInputBase-readOnly"),children:[Nt,jsxRuntimeExports.jsx(FormControlContext$1.Provider,{value:null,children:jsxRuntimeExports.jsx(un,_extends$u({ownerState:fn,"aria-invalid":Qt.error,"aria-describedby":ot,autoComplete:at,autoFocus:st,defaultValue:ht,disabled:Qt.disabled,id:yt,onAnimationStart:wn,name:At,placeholder:wt,readOnly:It,required:Qt.required,rows:Wt,value:en,onKeyDown:Pt,onKeyUp:Ct,type:Ut},An,!isHostComponent(un)&&{as:In,ownerState:_extends$u({},fn,An.ownerState)},{ref:nn,className:clsx$3(pn.input,An.className,It&&"MuiInputBase-readOnly"),onBlur:Tn,onChange:cn,onFocus:Nn}))}),mt,Ot?Ot(_extends$u({},Qt,{startAdornment:Nt})):null]}))]})}),InputBase$1=InputBase;function getInputUtilityClass(tt){return generateUtilityClass("MuiInput",tt)}const inputClasses=_extends$u({},inputBaseClasses$1,generateUtilityClasses("MuiInput",["root","underline","input"])),inputClasses$1=inputClasses;function getOutlinedInputUtilityClass(tt){return generateUtilityClass("MuiOutlinedInput",tt)}const outlinedInputClasses=_extends$u({},inputBaseClasses$1,generateUtilityClasses("MuiOutlinedInput",["root","notchedOutline","input"])),outlinedInputClasses$1=outlinedInputClasses;function getFilledInputUtilityClass(tt){return generateUtilityClass("MuiFilledInput",tt)}const filledInputClasses=_extends$u({},inputBaseClasses$1,generateUtilityClasses("MuiFilledInput",["root","underline","input"])),filledInputClasses$1=filledInputClasses,ArrowDropDownIcon$1=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),_excluded$1l=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],styles$4={entering:{opacity:1},entered:{opacity:1}},Fade=reactExports.forwardRef(function(et,nt){const rt=useTheme(),it={enter:rt.transitions.duration.enteringScreen,exit:rt.transitions.duration.leavingScreen},{addEndListener:ot,appear:at=!0,children:st,easing:lt,in:ct,onEnter:ut,onEntered:ht,onEntering:dt,onExit:pt,onExited:mt,onExiting:gt,style:yt,timeout:bt=it,TransitionComponent:vt=Transition$2}=et,xt=_objectWithoutPropertiesLoose$m(et,_excluded$1l),kt=reactExports.useRef(null),St=useForkRef(kt,st.ref,nt),Tt=wt=>It=>{if(wt){const Ot=kt.current;It===void 0?wt(Ot):wt(Ot,It)}},At=Tt(dt),Et=Tt((wt,It)=>{reflow(wt);const Ot=getTransitionProps({style:yt,timeout:bt,easing:lt},{mode:"enter"});wt.style.webkitTransition=rt.transitions.create("opacity",Ot),wt.style.transition=rt.transitions.create("opacity",Ot),ut&&ut(wt,It)}),$t=Tt(ht),Dt=Tt(gt),jt=Tt(wt=>{const It=getTransitionProps({style:yt,timeout:bt,easing:lt},{mode:"exit"});wt.style.webkitTransition=rt.transitions.create("opacity",It),wt.style.transition=rt.transitions.create("opacity",It),pt&&pt(wt)}),Pt=Tt(mt),Ct=wt=>{ot&&ot(kt.current,wt)};return jsxRuntimeExports.jsx(vt,_extends$u({appear:at,in:ct,nodeRef:kt,onEnter:Et,onEntered:$t,onEntering:At,onExit:jt,onExited:Pt,onExiting:Dt,addEndListener:Ct,timeout:bt},xt,{children:(wt,It)=>reactExports.cloneElement(st,_extends$u({style:_extends$u({opacity:0,visibility:wt==="exited"&&!ct?"hidden":void 0},styles$4[wt],yt,st.props.style),ref:St},It))}))}),Fade$1=Fade;function getBackdropUtilityClass(tt){return generateUtilityClass("MuiBackdrop",tt)}generateUtilityClasses("MuiBackdrop",["root","invisible"]);const _excluded$1k=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],useUtilityClasses$O=tt=>{const{classes:et,invisible:nt}=tt;return composeClasses({root:["root",nt&&"invisible"]},getBackdropUtilityClass,et)},BackdropRoot=styled$1("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.invisible&&et.invisible]}})(({ownerState:tt})=>_extends$u({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},tt.invisible&&{backgroundColor:"transparent"})),Backdrop=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useThemeProps({props:et,name:"MuiBackdrop"}),{children:st,className:lt,component:ct="div",components:ut={},componentsProps:ht={},invisible:dt=!1,open:pt,slotProps:mt={},slots:gt={},TransitionComponent:yt=Fade$1,transitionDuration:bt}=at,vt=_objectWithoutPropertiesLoose$m(at,_excluded$1k),xt=_extends$u({},at,{component:ct,invisible:dt}),kt=useUtilityClasses$O(xt),St=(rt=mt.root)!=null?rt:ht.root;return jsxRuntimeExports.jsx(yt,_extends$u({in:pt,timeout:bt},vt,{children:jsxRuntimeExports.jsx(BackdropRoot,_extends$u({"aria-hidden":!0},St,{as:(it=(ot=gt.root)!=null?ot:ut.Root)!=null?it:ct,className:clsx$3(kt.root,lt,St==null?void 0:St.className),ownerState:_extends$u({},xt,St==null?void 0:St.ownerState),classes:kt,ref:nt,children:st}))}))}),Backdrop$1=Backdrop;function getButtonUtilityClass(tt){return generateUtilityClass("MuiButton",tt)}const buttonClasses=generateUtilityClasses("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]),buttonClasses$1=buttonClasses,ButtonGroupContext=reactExports.createContext({}),ButtonGroupContext$1=ButtonGroupContext,ButtonGroupButtonContext=reactExports.createContext(void 0),ButtonGroupButtonContext$1=ButtonGroupButtonContext,_excluded$1j=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],useUtilityClasses$N=tt=>{const{color:et,disableElevation:nt,fullWidth:rt,size:it,variant:ot,classes:at}=tt,st={root:["root",ot,`${ot}${capitalize(et)}`,`size${capitalize(it)}`,`${ot}Size${capitalize(it)}`,et==="inherit"&&"colorInherit",nt&&"disableElevation",rt&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${capitalize(it)}`],endIcon:["endIcon",`iconSize${capitalize(it)}`]},lt=composeClasses(st,getButtonUtilityClass,at);return _extends$u({},at,lt)},commonIconStyles=tt=>_extends$u({},tt.size==="small"&&{"& > *:nth-of-type(1)":{fontSize:18}},tt.size==="medium"&&{"& > *:nth-of-type(1)":{fontSize:20}},tt.size==="large"&&{"& > *:nth-of-type(1)":{fontSize:22}}),ButtonRoot=styled$1(ButtonBase$1,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiButton",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,et[nt.variant],et[`${nt.variant}${capitalize(nt.color)}`],et[`size${capitalize(nt.size)}`],et[`${nt.variant}Size${capitalize(nt.size)}`],nt.color==="inherit"&&et.colorInherit,nt.disableElevation&&et.disableElevation,nt.fullWidth&&et.fullWidth]}})(({theme:tt,ownerState:et})=>{var nt,rt;const it=tt.palette.mode==="light"?tt.palette.grey[300]:tt.palette.grey[800],ot=tt.palette.mode==="light"?tt.palette.grey.A100:tt.palette.grey[700];return _extends$u({},tt.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(tt.vars||tt).shape.borderRadius,transition:tt.transitions.create(["background-color","box-shadow","border-color","color"],{duration:tt.transitions.duration.short}),"&:hover":_extends$u({textDecoration:"none",backgroundColor:tt.vars?`rgba(${tt.vars.palette.text.primaryChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.text.primary,tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},et.variant==="text"&&et.color!=="inherit"&&{backgroundColor:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette[et.color].main,tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},et.variant==="outlined"&&et.color!=="inherit"&&{border:`1px solid ${(tt.vars||tt).palette[et.color].main}`,backgroundColor:tt.vars?`rgba(${tt.vars.palette[et.color].mainChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette[et.color].main,tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},et.variant==="contained"&&{backgroundColor:tt.vars?tt.vars.palette.Button.inheritContainedHoverBg:ot,boxShadow:(tt.vars||tt).shadows[4],"@media (hover: none)":{boxShadow:(tt.vars||tt).shadows[2],backgroundColor:(tt.vars||tt).palette.grey[300]}},et.variant==="contained"&&et.color!=="inherit"&&{backgroundColor:(tt.vars||tt).palette[et.color].dark,"@media (hover: none)":{backgroundColor:(tt.vars||tt).palette[et.color].main}}),"&:active":_extends$u({},et.variant==="contained"&&{boxShadow:(tt.vars||tt).shadows[8]}),[`&.${buttonClasses$1.focusVisible}`]:_extends$u({},et.variant==="contained"&&{boxShadow:(tt.vars||tt).shadows[6]}),[`&.${buttonClasses$1.disabled}`]:_extends$u({color:(tt.vars||tt).palette.action.disabled},et.variant==="outlined"&&{border:`1px solid ${(tt.vars||tt).palette.action.disabledBackground}`},et.variant==="contained"&&{color:(tt.vars||tt).palette.action.disabled,boxShadow:(tt.vars||tt).shadows[0],backgroundColor:(tt.vars||tt).palette.action.disabledBackground})},et.variant==="text"&&{padding:"6px 8px"},et.variant==="text"&&et.color!=="inherit"&&{color:(tt.vars||tt).palette[et.color].main},et.variant==="outlined"&&{padding:"5px 15px",border:"1px solid currentColor"},et.variant==="outlined"&&et.color!=="inherit"&&{color:(tt.vars||tt).palette[et.color].main,border:tt.vars?`1px solid rgba(${tt.vars.palette[et.color].mainChannel} / 0.5)`:`1px solid ${alpha$1(tt.palette[et.color].main,.5)}`},et.variant==="contained"&&{color:tt.vars?tt.vars.palette.text.primary:(nt=(rt=tt.palette).getContrastText)==null?void 0:nt.call(rt,tt.palette.grey[300]),backgroundColor:tt.vars?tt.vars.palette.Button.inheritContainedBg:it,boxShadow:(tt.vars||tt).shadows[2]},et.variant==="contained"&&et.color!=="inherit"&&{color:(tt.vars||tt).palette[et.color].contrastText,backgroundColor:(tt.vars||tt).palette[et.color].main},et.color==="inherit"&&{color:"inherit",borderColor:"currentColor"},et.size==="small"&&et.variant==="text"&&{padding:"4px 5px",fontSize:tt.typography.pxToRem(13)},et.size==="large"&&et.variant==="text"&&{padding:"8px 11px",fontSize:tt.typography.pxToRem(15)},et.size==="small"&&et.variant==="outlined"&&{padding:"3px 9px",fontSize:tt.typography.pxToRem(13)},et.size==="large"&&et.variant==="outlined"&&{padding:"7px 21px",fontSize:tt.typography.pxToRem(15)},et.size==="small"&&et.variant==="contained"&&{padding:"4px 10px",fontSize:tt.typography.pxToRem(13)},et.size==="large"&&et.variant==="contained"&&{padding:"8px 22px",fontSize:tt.typography.pxToRem(15)},et.fullWidth&&{width:"100%"})},({ownerState:tt})=>tt.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${buttonClasses$1.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${buttonClasses$1.disabled}`]:{boxShadow:"none"}}),ButtonStartIcon=styled$1("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.startIcon,et[`iconSize${capitalize(nt.size)}`]]}})(({ownerState:tt})=>_extends$u({display:"inherit",marginRight:8,marginLeft:-4},tt.size==="small"&&{marginLeft:-2},commonIconStyles(tt))),ButtonEndIcon=styled$1("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.endIcon,et[`iconSize${capitalize(nt.size)}`]]}})(({ownerState:tt})=>_extends$u({display:"inherit",marginRight:-4,marginLeft:8},tt.size==="small"&&{marginRight:-2},commonIconStyles(tt))),Button$1=reactExports.forwardRef(function(et,nt){const rt=reactExports.useContext(ButtonGroupContext$1),it=reactExports.useContext(ButtonGroupButtonContext$1),ot=resolveProps(rt,et),at=useThemeProps({props:ot,name:"MuiButton"}),{children:st,color:lt="primary",component:ct="button",className:ut,disabled:ht=!1,disableElevation:dt=!1,disableFocusRipple:pt=!1,endIcon:mt,focusVisibleClassName:gt,fullWidth:yt=!1,size:bt="medium",startIcon:vt,type:xt,variant:kt="text"}=at,St=_objectWithoutPropertiesLoose$m(at,_excluded$1j),Tt=_extends$u({},at,{color:lt,component:ct,disabled:ht,disableElevation:dt,disableFocusRipple:pt,fullWidth:yt,size:bt,type:xt,variant:kt}),At=useUtilityClasses$N(Tt),Et=vt&&jsxRuntimeExports.jsx(ButtonStartIcon,{className:At.startIcon,ownerState:Tt,children:vt}),$t=mt&&jsxRuntimeExports.jsx(ButtonEndIcon,{className:At.endIcon,ownerState:Tt,children:mt}),Dt=it||"";return jsxRuntimeExports.jsxs(ButtonRoot,_extends$u({ownerState:Tt,className:clsx$3(rt.className,At.root,ut,Dt),component:ct,disabled:ht,focusRipple:!pt,focusVisibleClassName:clsx$3(At.focusVisible,gt),ref:nt,type:xt},St,{classes:At,children:[Et,st,$t]}))}),Button$2=Button$1;function getModalUtilityClass(tt){return generateUtilityClass("MuiModal",tt)}generateUtilityClasses("MuiModal",["root","hidden","backdrop"]);const _excluded$1i=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],useUtilityClasses$M=tt=>{const{open:et,exited:nt,classes:rt}=tt;return composeClasses({root:["root",!et&&nt&&"hidden"],backdrop:["backdrop"]},getModalUtilityClass,rt)},ModalRoot=styled$1("div",{name:"MuiModal",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,!nt.open&&nt.exited&&et.hidden]}})(({theme:tt,ownerState:et})=>_extends$u({position:"fixed",zIndex:(tt.vars||tt).zIndex.modal,right:0,bottom:0,top:0,left:0},!et.open&&et.exited&&{visibility:"hidden"})),ModalBackdrop=styled$1(Backdrop$1,{name:"MuiModal",slot:"Backdrop",overridesResolver:(tt,et)=>et.backdrop})({zIndex:-1}),Modal=reactExports.forwardRef(function(et,nt){var rt,it,ot,at,st,lt;const ct=useThemeProps({name:"MuiModal",props:et}),{BackdropComponent:ut=ModalBackdrop,BackdropProps:ht,className:dt,closeAfterTransition:pt=!1,children:mt,container:gt,component:yt,components:bt={},componentsProps:vt={},disableAutoFocus:xt=!1,disableEnforceFocus:kt=!1,disableEscapeKeyDown:St=!1,disablePortal:Tt=!1,disableRestoreFocus:At=!1,disableScrollLock:Et=!1,hideBackdrop:$t=!1,keepMounted:Dt=!1,onBackdropClick:jt,open:Pt,slotProps:Ct,slots:wt}=ct,It=_objectWithoutPropertiesLoose$m(ct,_excluded$1i),Ot=_extends$u({},ct,{closeAfterTransition:pt,disableAutoFocus:xt,disableEnforceFocus:kt,disableEscapeKeyDown:St,disablePortal:Tt,disableRestoreFocus:At,disableScrollLock:Et,hideBackdrop:$t,keepMounted:Dt}),{getRootProps:Wt,getBackdropProps:zt,getTransitionProps:Ft,portalRef:Nt,isTopModal:Ut,exited:Mt,hasTransition:Ht}=useModal$1(_extends$u({},Ot,{rootRef:nt})),en=_extends$u({},Ot,{exited:Mt}),sn=useUtilityClasses$M(en),Kt={};if(mt.props.tabIndex===void 0&&(Kt.tabIndex="-1"),Ht){const{onEnter:_n,onExited:Pn}=Ft();Kt.onEnter=_n,Kt.onExited=Pn}const rn=(rt=(it=wt==null?void 0:wt.root)!=null?it:bt.Root)!=null?rt:ModalRoot,nn=(ot=(at=wt==null?void 0:wt.backdrop)!=null?at:bt.Backdrop)!=null?ot:ut,hn=(st=Ct==null?void 0:Ct.root)!=null?st:vt.root,vn=(lt=Ct==null?void 0:Ct.backdrop)!=null?lt:vt.backdrop,an=useSlotProps({elementType:rn,externalSlotProps:hn,externalForwardedProps:It,getSlotProps:Wt,additionalProps:{ref:nt,as:yt},ownerState:en,className:clsx$3(dt,hn==null?void 0:hn.className,sn==null?void 0:sn.root,!en.open&&en.exited&&(sn==null?void 0:sn.hidden))}),Qt=useSlotProps({elementType:nn,externalSlotProps:vn,additionalProps:ht,getSlotProps:_n=>zt(_extends$u({},_n,{onClick:Pn=>{jt&&jt(Pn),_n!=null&&_n.onClick&&_n.onClick(Pn)}})),className:clsx$3(vn==null?void 0:vn.className,ht==null?void 0:ht.className,sn==null?void 0:sn.backdrop),ownerState:en});return!Dt&&!Pt&&(!Ht||Mt)?null:jsxRuntimeExports.jsx(Portal$1,{ref:Nt,container:gt,disablePortal:Tt,children:jsxRuntimeExports.jsxs(rn,_extends$u({},an,{children:[!$t&&ut?jsxRuntimeExports.jsx(nn,_extends$u({},Qt)):null,jsxRuntimeExports.jsx(FocusTrap,{disableEnforceFocus:kt,disableAutoFocus:xt,disableRestoreFocus:At,isEnabled:Ut,open:Pt,children:reactExports.cloneElement(mt,Kt)})]}))})}),Modal$1=Modal;function getDialogUtilityClass(tt){return generateUtilityClass("MuiDialog",tt)}const dialogClasses=generateUtilityClasses("MuiDialog",["root","scrollPaper","scrollBody","container","paper","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]),dialogClasses$1=dialogClasses,DialogContext=reactExports.createContext({}),DialogContext$1=DialogContext,_excluded$1h=["aria-describedby","aria-labelledby","BackdropComponent","BackdropProps","children","className","disableEscapeKeyDown","fullScreen","fullWidth","maxWidth","onBackdropClick","onClose","open","PaperComponent","PaperProps","scroll","TransitionComponent","transitionDuration","TransitionProps"],DialogBackdrop=styled$1(Backdrop$1,{name:"MuiDialog",slot:"Backdrop",overrides:(tt,et)=>et.backdrop})({zIndex:-1}),useUtilityClasses$L=tt=>{const{classes:et,scroll:nt,maxWidth:rt,fullWidth:it,fullScreen:ot}=tt,at={root:["root"],container:["container",`scroll${capitalize(nt)}`],paper:["paper",`paperScroll${capitalize(nt)}`,`paperWidth${capitalize(String(rt))}`,it&&"paperFullWidth",ot&&"paperFullScreen"]};return composeClasses(at,getDialogUtilityClass,et)},DialogRoot=styled$1(Modal$1,{name:"MuiDialog",slot:"Root",overridesResolver:(tt,et)=>et.root})({"@media print":{position:"absolute !important"}}),DialogContainer=styled$1("div",{name:"MuiDialog",slot:"Container",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.container,et[`scroll${capitalize(nt.scroll)}`]]}})(({ownerState:tt})=>_extends$u({height:"100%","@media print":{height:"auto"},outline:0},tt.scroll==="paper"&&{display:"flex",justifyContent:"center",alignItems:"center"},tt.scroll==="body"&&{overflowY:"auto",overflowX:"hidden",textAlign:"center","&:after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}})),DialogPaper=styled$1(Paper$1,{name:"MuiDialog",slot:"Paper",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.paper,et[`scrollPaper${capitalize(nt.scroll)}`],et[`paperWidth${capitalize(String(nt.maxWidth))}`],nt.fullWidth&&et.paperFullWidth,nt.fullScreen&&et.paperFullScreen]}})(({theme:tt,ownerState:et})=>_extends$u({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"}},et.scroll==="paper"&&{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"},et.scroll==="body"&&{display:"inline-block",verticalAlign:"middle",textAlign:"left"},!et.maxWidth&&{maxWidth:"calc(100% - 64px)"},et.maxWidth==="xs"&&{maxWidth:tt.breakpoints.unit==="px"?Math.max(tt.breakpoints.values.xs,444):`max(${tt.breakpoints.values.xs}${tt.breakpoints.unit}, 444px)`,[`&.${dialogClasses$1.paperScrollBody}`]:{[tt.breakpoints.down(Math.max(tt.breakpoints.values.xs,444)+32*2)]:{maxWidth:"calc(100% - 64px)"}}},et.maxWidth&&et.maxWidth!=="xs"&&{maxWidth:`${tt.breakpoints.values[et.maxWidth]}${tt.breakpoints.unit}`,[`&.${dialogClasses$1.paperScrollBody}`]:{[tt.breakpoints.down(tt.breakpoints.values[et.maxWidth]+32*2)]:{maxWidth:"calc(100% - 64px)"}}},et.fullWidth&&{width:"calc(100% - 64px)"},et.fullScreen&&{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0,[`&.${dialogClasses$1.paperScrollBody}`]:{margin:0,maxWidth:"100%"}})),Dialog=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDialog"}),it=useTheme(),ot={enter:it.transitions.duration.enteringScreen,exit:it.transitions.duration.leavingScreen},{"aria-describedby":at,"aria-labelledby":st,BackdropComponent:lt,BackdropProps:ct,children:ut,className:ht,disableEscapeKeyDown:dt=!1,fullScreen:pt=!1,fullWidth:mt=!1,maxWidth:gt="sm",onBackdropClick:yt,onClose:bt,open:vt,PaperComponent:xt=Paper$1,PaperProps:kt={},scroll:St="paper",TransitionComponent:Tt=Fade$1,transitionDuration:At=ot,TransitionProps:Et}=rt,$t=_objectWithoutPropertiesLoose$m(rt,_excluded$1h),Dt=_extends$u({},rt,{disableEscapeKeyDown:dt,fullScreen:pt,fullWidth:mt,maxWidth:gt,scroll:St}),jt=useUtilityClasses$L(Dt),Pt=reactExports.useRef(),Ct=Wt=>{Pt.current=Wt.target===Wt.currentTarget},wt=Wt=>{Pt.current&&(Pt.current=null,yt&&yt(Wt),bt&&bt(Wt,"backdropClick"))},It=useId(st),Ot=reactExports.useMemo(()=>({titleId:It}),[It]);return jsxRuntimeExports.jsx(DialogRoot,_extends$u({className:clsx$3(jt.root,ht),closeAfterTransition:!0,components:{Backdrop:DialogBackdrop},componentsProps:{backdrop:_extends$u({transitionDuration:At,as:lt},ct)},disableEscapeKeyDown:dt,onClose:bt,open:vt,ref:nt,onClick:wt,ownerState:Dt},$t,{children:jsxRuntimeExports.jsx(Tt,_extends$u({appear:!0,in:vt,timeout:At,role:"presentation"},Et,{children:jsxRuntimeExports.jsx(DialogContainer,{className:clsx$3(jt.container),onMouseDown:Ct,ownerState:Dt,children:jsxRuntimeExports.jsx(DialogPaper,_extends$u({as:xt,elevation:24,role:"dialog","aria-describedby":at,"aria-labelledby":It},kt,{className:clsx$3(jt.paper,kt.className),ownerState:Dt,children:jsxRuntimeExports.jsx(DialogContext$1.Provider,{value:Ot,children:ut})}))})}))}))}),MuiDialog=Dialog;function getDialogActionsUtilityClass(tt){return generateUtilityClass("MuiDialogActions",tt)}generateUtilityClasses("MuiDialogActions",["root","spacing"]);const _excluded$1g=["className","disableSpacing"],useUtilityClasses$K=tt=>{const{classes:et,disableSpacing:nt}=tt;return composeClasses({root:["root",!nt&&"spacing"]},getDialogActionsUtilityClass,et)},DialogActionsRoot=styled$1("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,!nt.disableSpacing&&et.spacing]}})(({ownerState:tt})=>_extends$u({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto"},!tt.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),DialogActions=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDialogActions"}),{className:it,disableSpacing:ot=!1}=rt,at=_objectWithoutPropertiesLoose$m(rt,_excluded$1g),st=_extends$u({},rt,{disableSpacing:ot}),lt=useUtilityClasses$K(st);return jsxRuntimeExports.jsx(DialogActionsRoot,_extends$u({className:clsx$3(lt.root,it),ownerState:st,ref:nt},at))}),DialogActions$1=DialogActions;function getDialogContentUtilityClass(tt){return generateUtilityClass("MuiDialogContent",tt)}generateUtilityClasses("MuiDialogContent",["root","dividers"]);const dialogTitleClasses=generateUtilityClasses("MuiDialogTitle",["root"]),dialogTitleClasses$1=dialogTitleClasses,_excluded$1f=["className","dividers"],useUtilityClasses$J=tt=>{const{classes:et,dividers:nt}=tt;return composeClasses({root:["root",nt&&"dividers"]},getDialogContentUtilityClass,et)},DialogContentRoot=styled$1("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.dividers&&et.dividers]}})(({theme:tt,ownerState:et})=>_extends$u({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px"},et.dividers?{padding:"16px 24px",borderTop:`1px solid ${(tt.vars||tt).palette.divider}`,borderBottom:`1px solid ${(tt.vars||tt).palette.divider}`}:{[`.${dialogTitleClasses$1.root} + &`]:{paddingTop:0}})),DialogContent=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDialogContent"}),{className:it,dividers:ot=!1}=rt,at=_objectWithoutPropertiesLoose$m(rt,_excluded$1f),st=_extends$u({},rt,{dividers:ot}),lt=useUtilityClasses$J(st);return jsxRuntimeExports.jsx(DialogContentRoot,_extends$u({className:clsx$3(lt.root,it),ownerState:st,ref:nt},at))}),DialogContent$1=DialogContent;function getDividerUtilityClass(tt){return generateUtilityClass("MuiDivider",tt)}const dividerClasses=generateUtilityClasses("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),_excluded$1e=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],useUtilityClasses$I=tt=>{const{absolute:et,children:nt,classes:rt,flexItem:it,light:ot,orientation:at,textAlign:st,variant:lt}=tt;return composeClasses({root:["root",et&&"absolute",lt,ot&&"light",at==="vertical"&&"vertical",it&&"flexItem",nt&&"withChildren",nt&&at==="vertical"&&"withChildrenVertical",st==="right"&&at!=="vertical"&&"textAlignRight",st==="left"&&at!=="vertical"&&"textAlignLeft"],wrapper:["wrapper",at==="vertical"&&"wrapperVertical"]},getDividerUtilityClass,rt)},DividerRoot=styled$1("div",{name:"MuiDivider",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.absolute&&et.absolute,et[nt.variant],nt.light&&et.light,nt.orientation==="vertical"&&et.vertical,nt.flexItem&&et.flexItem,nt.children&&et.withChildren,nt.children&&nt.orientation==="vertical"&&et.withChildrenVertical,nt.textAlign==="right"&&nt.orientation!=="vertical"&&et.textAlignRight,nt.textAlign==="left"&&nt.orientation!=="vertical"&&et.textAlignLeft]}})(({theme:tt,ownerState:et})=>_extends$u({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(tt.vars||tt).palette.divider,borderBottomWidth:"thin"},et.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},et.light&&{borderColor:tt.vars?`rgba(${tt.vars.palette.dividerChannel} / 0.08)`:alpha$1(tt.palette.divider,.08)},et.variant==="inset"&&{marginLeft:72},et.variant==="middle"&&et.orientation==="horizontal"&&{marginLeft:tt.spacing(2),marginRight:tt.spacing(2)},et.variant==="middle"&&et.orientation==="vertical"&&{marginTop:tt.spacing(1),marginBottom:tt.spacing(1)},et.orientation==="vertical"&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},et.flexItem&&{alignSelf:"stretch",height:"auto"}),({ownerState:tt})=>_extends$u({},tt.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,"&::before, &::after":{content:'""',alignSelf:"center"}}),({theme:tt,ownerState:et})=>_extends$u({},et.children&&et.orientation!=="vertical"&&{"&::before, &::after":{width:"100%",borderTop:`thin solid ${(tt.vars||tt).palette.divider}`}}),({theme:tt,ownerState:et})=>_extends$u({},et.children&&et.orientation==="vertical"&&{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:`thin solid ${(tt.vars||tt).palette.divider}`}}),({ownerState:tt})=>_extends$u({},tt.textAlign==="right"&&tt.orientation!=="vertical"&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},tt.textAlign==="left"&&tt.orientation!=="vertical"&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})),DividerWrapper=styled$1("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.wrapper,nt.orientation==="vertical"&&et.wrapperVertical]}})(({theme:tt,ownerState:et})=>_extends$u({display:"inline-block",paddingLeft:`calc(${tt.spacing(1)} * 1.2)`,paddingRight:`calc(${tt.spacing(1)} * 1.2)`},et.orientation==="vertical"&&{paddingTop:`calc(${tt.spacing(1)} * 1.2)`,paddingBottom:`calc(${tt.spacing(1)} * 1.2)`})),Divider$2=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDivider"}),{absolute:it=!1,children:ot,className:at,component:st=ot?"div":"hr",flexItem:lt=!1,light:ct=!1,orientation:ut="horizontal",role:ht=st!=="hr"?"separator":void 0,textAlign:dt="center",variant:pt="fullWidth"}=rt,mt=_objectWithoutPropertiesLoose$m(rt,_excluded$1e),gt=_extends$u({},rt,{absolute:it,component:st,flexItem:lt,light:ct,orientation:ut,role:ht,textAlign:dt,variant:pt}),yt=useUtilityClasses$I(gt);return jsxRuntimeExports.jsx(DividerRoot,_extends$u({as:st,className:clsx$3(yt.root,at),role:ht,ref:nt,ownerState:gt},mt,{children:ot?jsxRuntimeExports.jsx(DividerWrapper,{className:yt.wrapper,ownerState:gt,children:ot}):null}))});Divider$2.muiSkipListHighlight=!0;const Divider$3=Divider$2,_excluded$1d=["addEndListener","appear","children","container","direction","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function getTranslateValue(tt,et,nt){const rt=et.getBoundingClientRect(),it=nt&&nt.getBoundingClientRect(),ot=ownerWindow(et);let at;if(et.fakeTransform)at=et.fakeTransform;else{const ct=ot.getComputedStyle(et);at=ct.getPropertyValue("-webkit-transform")||ct.getPropertyValue("transform")}let st=0,lt=0;if(at&&at!=="none"&&typeof at=="string"){const ct=at.split("(")[1].split(")")[0].split(",");st=parseInt(ct[4],10),lt=parseInt(ct[5],10)}return tt==="left"?it?`translateX(${it.right+st-rt.left}px)`:`translateX(${ot.innerWidth+st-rt.left}px)`:tt==="right"?it?`translateX(-${rt.right-it.left-st}px)`:`translateX(-${rt.left+rt.width-st}px)`:tt==="up"?it?`translateY(${it.bottom+lt-rt.top}px)`:`translateY(${ot.innerHeight+lt-rt.top}px)`:it?`translateY(-${rt.top-it.top+rt.height-lt}px)`:`translateY(-${rt.top+rt.height-lt}px)`}function resolveContainer(tt){return typeof tt=="function"?tt():tt}function setTranslateValue(tt,et,nt){const rt=resolveContainer(nt),it=getTranslateValue(tt,et,rt);it&&(et.style.webkitTransform=it,et.style.transform=it)}const Slide=reactExports.forwardRef(function(et,nt){const rt=useTheme(),it={enter:rt.transitions.easing.easeOut,exit:rt.transitions.easing.sharp},ot={enter:rt.transitions.duration.enteringScreen,exit:rt.transitions.duration.leavingScreen},{addEndListener:at,appear:st=!0,children:lt,container:ct,direction:ut="down",easing:ht=it,in:dt,onEnter:pt,onEntered:mt,onEntering:gt,onExit:yt,onExited:bt,onExiting:vt,style:xt,timeout:kt=ot,TransitionComponent:St=Transition$2}=et,Tt=_objectWithoutPropertiesLoose$m(et,_excluded$1d),At=reactExports.useRef(null),Et=useForkRef(lt.ref,At,nt),$t=zt=>Ft=>{zt&&(Ft===void 0?zt(At.current):zt(At.current,Ft))},Dt=$t((zt,Ft)=>{setTranslateValue(ut,zt,ct),reflow(zt),pt&&pt(zt,Ft)}),jt=$t((zt,Ft)=>{const Nt=getTransitionProps({timeout:kt,style:xt,easing:ht},{mode:"enter"});zt.style.webkitTransition=rt.transitions.create("-webkit-transform",_extends$u({},Nt)),zt.style.transition=rt.transitions.create("transform",_extends$u({},Nt)),zt.style.webkitTransform="none",zt.style.transform="none",gt&>(zt,Ft)}),Pt=$t(mt),Ct=$t(vt),wt=$t(zt=>{const Ft=getTransitionProps({timeout:kt,style:xt,easing:ht},{mode:"exit"});zt.style.webkitTransition=rt.transitions.create("-webkit-transform",Ft),zt.style.transition=rt.transitions.create("transform",Ft),setTranslateValue(ut,zt,ct),yt&&yt(zt)}),It=$t(zt=>{zt.style.webkitTransition="",zt.style.transition="",bt&&bt(zt)}),Ot=zt=>{at&&at(At.current,zt)},Wt=reactExports.useCallback(()=>{At.current&&setTranslateValue(ut,At.current,ct)},[ut,ct]);return reactExports.useEffect(()=>{if(dt||ut==="down"||ut==="right")return;const zt=debounce$5(()=>{At.current&&setTranslateValue(ut,At.current,ct)}),Ft=ownerWindow(At.current);return Ft.addEventListener("resize",zt),()=>{zt.clear(),Ft.removeEventListener("resize",zt)}},[ut,dt,ct]),reactExports.useEffect(()=>{dt||Wt()},[dt,Wt]),jsxRuntimeExports.jsx(St,_extends$u({nodeRef:At,onEnter:Dt,onEntered:Pt,onEntering:jt,onExit:wt,onExited:It,onExiting:Ct,addEndListener:Ot,appear:st,in:dt,timeout:kt},Tt,{children:(zt,Ft)=>reactExports.cloneElement(lt,_extends$u({ref:Et,style:_extends$u({visibility:zt==="exited"&&!dt?"hidden":void 0},xt,lt.props.style)},Ft))}))}),Slide$1=Slide,_excluded$1c=["disableUnderline","components","componentsProps","fullWidth","hiddenLabel","inputComponent","multiline","slotProps","slots","type"],useUtilityClasses$H=tt=>{const{classes:et,disableUnderline:nt}=tt,it=composeClasses({root:["root",!nt&&"underline"],input:["input"]},getFilledInputUtilityClass,et);return _extends$u({},et,it)},FilledInputRoot=styled$1(InputBaseRoot,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiFilledInput",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[...rootOverridesResolver(tt,et),!nt.disableUnderline&&et.underline]}})(({theme:tt,ownerState:et})=>{var nt;const rt=tt.palette.mode==="light",it=rt?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",ot=rt?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",at=rt?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",st=rt?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return _extends$u({position:"relative",backgroundColor:tt.vars?tt.vars.palette.FilledInput.bg:ot,borderTopLeftRadius:(tt.vars||tt).shape.borderRadius,borderTopRightRadius:(tt.vars||tt).shape.borderRadius,transition:tt.transitions.create("background-color",{duration:tt.transitions.duration.shorter,easing:tt.transitions.easing.easeOut}),"&:hover":{backgroundColor:tt.vars?tt.vars.palette.FilledInput.hoverBg:at,"@media (hover: none)":{backgroundColor:tt.vars?tt.vars.palette.FilledInput.bg:ot}},[`&.${filledInputClasses$1.focused}`]:{backgroundColor:tt.vars?tt.vars.palette.FilledInput.bg:ot},[`&.${filledInputClasses$1.disabled}`]:{backgroundColor:tt.vars?tt.vars.palette.FilledInput.disabledBg:st}},!et.disableUnderline&&{"&:after":{borderBottom:`2px solid ${(nt=(tt.vars||tt).palette[et.color||"primary"])==null?void 0:nt.main}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:tt.transitions.create("transform",{duration:tt.transitions.duration.shorter,easing:tt.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${filledInputClasses$1.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${filledInputClasses$1.error}`]:{"&:before, &:after":{borderBottomColor:(tt.vars||tt).palette.error.main}},"&:before":{borderBottom:`1px solid ${tt.vars?`rgba(${tt.vars.palette.common.onBackgroundChannel} / ${tt.vars.opacity.inputUnderline})`:it}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:tt.transitions.create("border-bottom-color",{duration:tt.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${filledInputClasses$1.disabled}, .${filledInputClasses$1.error}):before`]:{borderBottom:`1px solid ${(tt.vars||tt).palette.text.primary}`},[`&.${filledInputClasses$1.disabled}:before`]:{borderBottomStyle:"dotted"}},et.startAdornment&&{paddingLeft:12},et.endAdornment&&{paddingRight:12},et.multiline&&_extends$u({padding:"25px 12px 8px"},et.size==="small"&&{paddingTop:21,paddingBottom:4},et.hiddenLabel&&{paddingTop:16,paddingBottom:17}))}),FilledInputInput=styled$1(InputBaseComponent,{name:"MuiFilledInput",slot:"Input",overridesResolver:inputOverridesResolver})(({theme:tt,ownerState:et})=>_extends$u({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12},!tt.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:tt.palette.mode==="light"?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:tt.palette.mode==="light"?null:"#fff",caretColor:tt.palette.mode==="light"?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},tt.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[tt.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},et.size==="small"&&{paddingTop:21,paddingBottom:4},et.hiddenLabel&&{paddingTop:16,paddingBottom:17},et.multiline&&{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0},et.startAdornment&&{paddingLeft:0},et.endAdornment&&{paddingRight:0},et.hiddenLabel&&et.size==="small"&&{paddingTop:8,paddingBottom:9})),FilledInput=reactExports.forwardRef(function(et,nt){var rt,it,ot,at;const st=useThemeProps({props:et,name:"MuiFilledInput"}),{components:lt={},componentsProps:ct,fullWidth:ut=!1,inputComponent:ht="input",multiline:dt=!1,slotProps:pt,slots:mt={},type:gt="text"}=st,yt=_objectWithoutPropertiesLoose$m(st,_excluded$1c),bt=_extends$u({},st,{fullWidth:ut,inputComponent:ht,multiline:dt,type:gt}),vt=useUtilityClasses$H(st),xt={root:{ownerState:bt},input:{ownerState:bt}},kt=pt??ct?deepmerge$1(pt??ct,xt):xt,St=(rt=(it=mt.root)!=null?it:lt.Root)!=null?rt:FilledInputRoot,Tt=(ot=(at=mt.input)!=null?at:lt.Input)!=null?ot:FilledInputInput;return jsxRuntimeExports.jsx(InputBase$1,_extends$u({slots:{root:St,input:Tt},componentsProps:kt,fullWidth:ut,inputComponent:ht,multiline:dt,ref:nt,type:gt},yt,{classes:vt}))});FilledInput.muiName="Input";const FilledInput$1=FilledInput;function getFormControlUtilityClasses(tt){return generateUtilityClass("MuiFormControl",tt)}generateUtilityClasses("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const _excluded$1b=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],useUtilityClasses$G=tt=>{const{classes:et,margin:nt,fullWidth:rt}=tt,it={root:["root",nt!=="none"&&`margin${capitalize(nt)}`,rt&&"fullWidth"]};return composeClasses(it,getFormControlUtilityClasses,et)},FormControlRoot=styled$1("div",{name:"MuiFormControl",slot:"Root",overridesResolver:({ownerState:tt},et)=>_extends$u({},et.root,et[`margin${capitalize(tt.margin)}`],tt.fullWidth&&et.fullWidth)})(({ownerState:tt})=>_extends$u({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},tt.margin==="normal"&&{marginTop:16,marginBottom:8},tt.margin==="dense"&&{marginTop:8,marginBottom:4},tt.fullWidth&&{width:"100%"})),FormControl=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiFormControl"}),{children:it,className:ot,color:at="primary",component:st="div",disabled:lt=!1,error:ct=!1,focused:ut,fullWidth:ht=!1,hiddenLabel:dt=!1,margin:pt="none",required:mt=!1,size:gt="medium",variant:yt="outlined"}=rt,bt=_objectWithoutPropertiesLoose$m(rt,_excluded$1b),vt=_extends$u({},rt,{color:at,component:st,disabled:lt,error:ct,fullWidth:ht,hiddenLabel:dt,margin:pt,required:mt,size:gt,variant:yt}),xt=useUtilityClasses$G(vt),[kt,St]=reactExports.useState(()=>{let Ct=!1;return it&&reactExports.Children.forEach(it,wt=>{if(!isMuiElement(wt,["Input","Select"]))return;const It=isMuiElement(wt,["Select"])?wt.props.input:wt;It&&isAdornedStart(It.props)&&(Ct=!0)}),Ct}),[Tt,At]=reactExports.useState(()=>{let Ct=!1;return it&&reactExports.Children.forEach(it,wt=>{isMuiElement(wt,["Input","Select"])&&(isFilled(wt.props,!0)||isFilled(wt.props.inputProps,!0))&&(Ct=!0)}),Ct}),[Et,$t]=reactExports.useState(!1);lt&&Et&&$t(!1);const Dt=ut!==void 0&&!lt?ut:Et;let jt;const Pt=reactExports.useMemo(()=>({adornedStart:kt,setAdornedStart:St,color:at,disabled:lt,error:ct,filled:Tt,focused:Dt,fullWidth:ht,hiddenLabel:dt,size:gt,onBlur:()=>{$t(!1)},onEmpty:()=>{At(!1)},onFilled:()=>{At(!0)},onFocus:()=>{$t(!0)},registerEffect:jt,required:mt,variant:yt}),[kt,at,lt,ct,Tt,Dt,ht,dt,jt,mt,gt,yt]);return jsxRuntimeExports.jsx(FormControlContext$1.Provider,{value:Pt,children:jsxRuntimeExports.jsx(FormControlRoot,_extends$u({as:st,ownerState:vt,className:clsx$3(xt.root,ot),ref:nt},bt,{children:it}))})}),FormControl$1=FormControl,Stack$4=createStack({createStyledComponent:styled$1("div",{name:"MuiStack",slot:"Root",overridesResolver:(tt,et)=>et.root}),useThemeProps:tt=>useThemeProps({props:tt,name:"MuiStack"})}),Stack$5=Stack$4;function getFormHelperTextUtilityClasses(tt){return generateUtilityClass("MuiFormHelperText",tt)}const formHelperTextClasses=generateUtilityClasses("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]),formHelperTextClasses$1=formHelperTextClasses;var _span$3;const _excluded$1a=["children","className","component","disabled","error","filled","focused","margin","required","variant"],useUtilityClasses$F=tt=>{const{classes:et,contained:nt,size:rt,disabled:it,error:ot,filled:at,focused:st,required:lt}=tt,ct={root:["root",it&&"disabled",ot&&"error",rt&&`size${capitalize(rt)}`,nt&&"contained",st&&"focused",at&&"filled",lt&&"required"]};return composeClasses(ct,getFormHelperTextUtilityClasses,et)},FormHelperTextRoot=styled$1("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.size&&et[`size${capitalize(nt.size)}`],nt.contained&&et.contained,nt.filled&&et.filled]}})(({theme:tt,ownerState:et})=>_extends$u({color:(tt.vars||tt).palette.text.secondary},tt.typography.caption,{textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${formHelperTextClasses$1.disabled}`]:{color:(tt.vars||tt).palette.text.disabled},[`&.${formHelperTextClasses$1.error}`]:{color:(tt.vars||tt).palette.error.main}},et.size==="small"&&{marginTop:4},et.contained&&{marginLeft:14,marginRight:14})),FormHelperText=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiFormHelperText"}),{children:it,className:ot,component:at="p"}=rt,st=_objectWithoutPropertiesLoose$m(rt,_excluded$1a),lt=useFormControl(),ct=formControlState({props:rt,muiFormControl:lt,states:["variant","size","disabled","error","filled","focused","required"]}),ut=_extends$u({},rt,{component:at,contained:ct.variant==="filled"||ct.variant==="outlined",variant:ct.variant,size:ct.size,disabled:ct.disabled,error:ct.error,filled:ct.filled,focused:ct.focused,required:ct.required}),ht=useUtilityClasses$F(ut);return jsxRuntimeExports.jsx(FormHelperTextRoot,_extends$u({as:at,ownerState:ut,className:clsx$3(ht.root,ot),ref:nt},st,{children:it===" "?_span$3||(_span$3=jsxRuntimeExports.jsx("span",{className:"notranslate",children:"​"})):it}))}),FormHelperText$1=FormHelperText;function getFormLabelUtilityClasses(tt){return generateUtilityClass("MuiFormLabel",tt)}const formLabelClasses=generateUtilityClasses("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),formLabelClasses$1=formLabelClasses,_excluded$19=["children","className","color","component","disabled","error","filled","focused","required"],useUtilityClasses$E=tt=>{const{classes:et,color:nt,focused:rt,disabled:it,error:ot,filled:at,required:st}=tt,lt={root:["root",`color${capitalize(nt)}`,it&&"disabled",ot&&"error",at&&"filled",rt&&"focused",st&&"required"],asterisk:["asterisk",ot&&"error"]};return composeClasses(lt,getFormLabelUtilityClasses,et)},FormLabelRoot=styled$1("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:({ownerState:tt},et)=>_extends$u({},et.root,tt.color==="secondary"&&et.colorSecondary,tt.filled&&et.filled)})(({theme:tt,ownerState:et})=>_extends$u({color:(tt.vars||tt).palette.text.secondary},tt.typography.body1,{lineHeight:"1.4375em",padding:0,position:"relative",[`&.${formLabelClasses$1.focused}`]:{color:(tt.vars||tt).palette[et.color].main},[`&.${formLabelClasses$1.disabled}`]:{color:(tt.vars||tt).palette.text.disabled},[`&.${formLabelClasses$1.error}`]:{color:(tt.vars||tt).palette.error.main}})),AsteriskComponent=styled$1("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:(tt,et)=>et.asterisk})(({theme:tt})=>({[`&.${formLabelClasses$1.error}`]:{color:(tt.vars||tt).palette.error.main}})),FormLabel=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiFormLabel"}),{children:it,className:ot,component:at="label"}=rt,st=_objectWithoutPropertiesLoose$m(rt,_excluded$19),lt=useFormControl(),ct=formControlState({props:rt,muiFormControl:lt,states:["color","required","focused","disabled","error","filled"]}),ut=_extends$u({},rt,{color:ct.color||"primary",component:at,disabled:ct.disabled,error:ct.error,filled:ct.filled,focused:ct.focused,required:ct.required}),ht=useUtilityClasses$E(ut);return jsxRuntimeExports.jsxs(FormLabelRoot,_extends$u({as:at,ownerState:ut,className:clsx$3(ht.root,ot),ref:nt},st,{children:[it,ct.required&&jsxRuntimeExports.jsxs(AsteriskComponent,{ownerState:ut,"aria-hidden":!0,className:ht.asterisk,children:[" ","*"]})]}))}),FormLabel$1=FormLabel,_excluded$18=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function getScale(tt){return`scale(${tt}, ${tt**2})`}const styles$3={entering:{opacity:1,transform:getScale(1)},entered:{opacity:1,transform:"none"}},isWebKit154=typeof navigator<"u"&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),Grow=reactExports.forwardRef(function(et,nt){const{addEndListener:rt,appear:it=!0,children:ot,easing:at,in:st,onEnter:lt,onEntered:ct,onEntering:ut,onExit:ht,onExited:dt,onExiting:pt,style:mt,timeout:gt="auto",TransitionComponent:yt=Transition$2}=et,bt=_objectWithoutPropertiesLoose$m(et,_excluded$18),vt=reactExports.useRef(),xt=reactExports.useRef(),kt=useTheme(),St=reactExports.useRef(null),Tt=useForkRef(St,ot.ref,nt),At=It=>Ot=>{if(It){const Wt=St.current;Ot===void 0?It(Wt):It(Wt,Ot)}},Et=At(ut),$t=At((It,Ot)=>{reflow(It);const{duration:Wt,delay:zt,easing:Ft}=getTransitionProps({style:mt,timeout:gt,easing:at},{mode:"enter"});let Nt;gt==="auto"?(Nt=kt.transitions.getAutoHeightDuration(It.clientHeight),xt.current=Nt):Nt=Wt,It.style.transition=[kt.transitions.create("opacity",{duration:Nt,delay:zt}),kt.transitions.create("transform",{duration:isWebKit154?Nt:Nt*.666,delay:zt,easing:Ft})].join(","),lt&<(It,Ot)}),Dt=At(ct),jt=At(pt),Pt=At(It=>{const{duration:Ot,delay:Wt,easing:zt}=getTransitionProps({style:mt,timeout:gt,easing:at},{mode:"exit"});let Ft;gt==="auto"?(Ft=kt.transitions.getAutoHeightDuration(It.clientHeight),xt.current=Ft):Ft=Ot,It.style.transition=[kt.transitions.create("opacity",{duration:Ft,delay:Wt}),kt.transitions.create("transform",{duration:isWebKit154?Ft:Ft*.666,delay:isWebKit154?Wt:Wt||Ft*.333,easing:zt})].join(","),It.style.opacity=0,It.style.transform=getScale(.75),ht&&ht(It)}),Ct=At(dt),wt=It=>{gt==="auto"&&(vt.current=setTimeout(It,xt.current||0)),rt&&rt(St.current,It)};return reactExports.useEffect(()=>()=>{clearTimeout(vt.current)},[]),jsxRuntimeExports.jsx(yt,_extends$u({appear:it,in:st,nodeRef:St,onEnter:$t,onEntered:Dt,onEntering:Et,onExit:Pt,onExited:Ct,onExiting:jt,addEndListener:wt,timeout:gt==="auto"?null:gt},bt,{children:(It,Ot)=>reactExports.cloneElement(ot,_extends$u({style:_extends$u({opacity:0,transform:getScale(.75),visibility:It==="exited"&&!st?"hidden":void 0},styles$3[It],mt,ot.props.style),ref:Tt},Ot))}))});Grow.muiSupportAuto=!0;const Grow$1=Grow;function useMediaQueryOld(tt,et,nt,rt,it){const[ot,at]=reactExports.useState(()=>it&&nt?nt(tt).matches:rt?rt(tt).matches:et);return useEnhancedEffect$1(()=>{let st=!0;if(!nt)return;const lt=nt(tt),ct=()=>{st&&at(lt.matches)};return ct(),lt.addListener(ct),()=>{st=!1,lt.removeListener(ct)}},[tt,nt]),ot}const maybeReactUseSyncExternalStore=React$2["useSyncExternalStore"];function useMediaQueryNew(tt,et,nt,rt,it){const ot=reactExports.useCallback(()=>et,[et]),at=reactExports.useMemo(()=>{if(it&&nt)return()=>nt(tt).matches;if(rt!==null){const{matches:ut}=rt(tt);return()=>ut}return ot},[ot,tt,rt,it,nt]),[st,lt]=reactExports.useMemo(()=>{if(nt===null)return[ot,()=>()=>{}];const ut=nt(tt);return[()=>ut.matches,ht=>(ut.addListener(ht),()=>{ut.removeListener(ht)})]},[ot,nt,tt]);return maybeReactUseSyncExternalStore(lt,st,at)}function useMediaQuery(tt,et={}){const nt=useTheme$3(),rt=typeof window<"u"&&typeof window.matchMedia<"u",{defaultMatches:it=!1,matchMedia:ot=rt?window.matchMedia:null,ssrMatchMedia:at=null,noSsr:st=!1}=getThemeProps({name:"MuiUseMediaQuery",props:et,theme:nt});let lt=typeof tt=="function"?tt(nt):tt;return lt=lt.replace(/^@media( ?)/m,""),(maybeReactUseSyncExternalStore!==void 0?useMediaQueryNew:useMediaQueryOld)(lt,it,ot,at,st)}const _excluded$17=["disableUnderline","components","componentsProps","fullWidth","inputComponent","multiline","slotProps","slots","type"],useUtilityClasses$D=tt=>{const{classes:et,disableUnderline:nt}=tt,it=composeClasses({root:["root",!nt&&"underline"],input:["input"]},getInputUtilityClass,et);return _extends$u({},et,it)},InputRoot=styled$1(InputBaseRoot,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiInput",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[...rootOverridesResolver(tt,et),!nt.disableUnderline&&et.underline]}})(({theme:tt,ownerState:et})=>{let rt=tt.palette.mode==="light"?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return tt.vars&&(rt=`rgba(${tt.vars.palette.common.onBackgroundChannel} / ${tt.vars.opacity.inputUnderline})`),_extends$u({position:"relative"},et.formControl&&{"label + &":{marginTop:16}},!et.disableUnderline&&{"&:after":{borderBottom:`2px solid ${(tt.vars||tt).palette[et.color].main}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:tt.transitions.create("transform",{duration:tt.transitions.duration.shorter,easing:tt.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${inputClasses$1.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${inputClasses$1.error}`]:{"&:before, &:after":{borderBottomColor:(tt.vars||tt).palette.error.main}},"&:before":{borderBottom:`1px solid ${rt}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:tt.transitions.create("border-bottom-color",{duration:tt.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${inputClasses$1.disabled}, .${inputClasses$1.error}):before`]:{borderBottom:`2px solid ${(tt.vars||tt).palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${rt}`}},[`&.${inputClasses$1.disabled}:before`]:{borderBottomStyle:"dotted"}})}),InputInput=styled$1(InputBaseComponent,{name:"MuiInput",slot:"Input",overridesResolver:inputOverridesResolver})({}),Input$2=reactExports.forwardRef(function(et,nt){var rt,it,ot,at;const st=useThemeProps({props:et,name:"MuiInput"}),{disableUnderline:lt,components:ct={},componentsProps:ut,fullWidth:ht=!1,inputComponent:dt="input",multiline:pt=!1,slotProps:mt,slots:gt={},type:yt="text"}=st,bt=_objectWithoutPropertiesLoose$m(st,_excluded$17),vt=useUtilityClasses$D(st),kt={root:{ownerState:{disableUnderline:lt}}},St=mt??ut?deepmerge$1(mt??ut,kt):kt,Tt=(rt=(it=gt.root)!=null?it:ct.Root)!=null?rt:InputRoot,At=(ot=(at=gt.input)!=null?at:ct.Input)!=null?ot:InputInput;return jsxRuntimeExports.jsx(InputBase$1,_extends$u({slots:{root:Tt,input:At},slotProps:St,fullWidth:ht,inputComponent:dt,multiline:pt,ref:nt,type:yt},bt,{classes:vt}))});Input$2.muiName="Input";const Input$3=Input$2;function getInputAdornmentUtilityClass(tt){return generateUtilityClass("MuiInputAdornment",tt)}const inputAdornmentClasses=generateUtilityClasses("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]),inputAdornmentClasses$1=inputAdornmentClasses;var _span$2;const _excluded$16=["children","className","component","disablePointerEvents","disableTypography","position","variant"],overridesResolver$3=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,et[`position${capitalize(nt.position)}`],nt.disablePointerEvents===!0&&et.disablePointerEvents,et[nt.variant]]},useUtilityClasses$C=tt=>{const{classes:et,disablePointerEvents:nt,hiddenLabel:rt,position:it,size:ot,variant:at}=tt,st={root:["root",nt&&"disablePointerEvents",it&&`position${capitalize(it)}`,at,rt&&"hiddenLabel",ot&&`size${capitalize(ot)}`]};return composeClasses(st,getInputAdornmentUtilityClass,et)},InputAdornmentRoot=styled$1("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:overridesResolver$3})(({theme:tt,ownerState:et})=>_extends$u({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(tt.vars||tt).palette.action.active},et.variant==="filled"&&{[`&.${inputAdornmentClasses$1.positionStart}&:not(.${inputAdornmentClasses$1.hiddenLabel})`]:{marginTop:16}},et.position==="start"&&{marginRight:8},et.position==="end"&&{marginLeft:8},et.disablePointerEvents===!0&&{pointerEvents:"none"})),InputAdornment=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiInputAdornment"}),{children:it,className:ot,component:at="div",disablePointerEvents:st=!1,disableTypography:lt=!1,position:ct,variant:ut}=rt,ht=_objectWithoutPropertiesLoose$m(rt,_excluded$16),dt=useFormControl()||{};let pt=ut;ut&&dt.variant,dt&&!pt&&(pt=dt.variant);const mt=_extends$u({},rt,{hiddenLabel:dt.hiddenLabel,size:dt.size,disablePointerEvents:st,position:ct,variant:pt}),gt=useUtilityClasses$C(mt);return jsxRuntimeExports.jsx(FormControlContext$1.Provider,{value:null,children:jsxRuntimeExports.jsx(InputAdornmentRoot,_extends$u({as:at,ownerState:mt,className:clsx$3(gt.root,ot),ref:nt},ht,{children:typeof it=="string"&&!lt?jsxRuntimeExports.jsx(Typography$1,{color:"text.secondary",children:it}):jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[ct==="start"?_span$2||(_span$2=jsxRuntimeExports.jsx("span",{className:"notranslate",children:"​"})):null,it]})}))})}),MuiInputAdornment=InputAdornment;function getInputLabelUtilityClasses(tt){return generateUtilityClass("MuiInputLabel",tt)}generateUtilityClasses("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const _excluded$15=["disableAnimation","margin","shrink","variant","className"],useUtilityClasses$B=tt=>{const{classes:et,formControl:nt,size:rt,shrink:it,disableAnimation:ot,variant:at,required:st}=tt,lt={root:["root",nt&&"formControl",!ot&&"animated",it&&"shrink",rt&&rt!=="normal"&&`size${capitalize(rt)}`,at],asterisk:[st&&"asterisk"]},ct=composeClasses(lt,getInputLabelUtilityClasses,et);return _extends$u({},et,ct)},InputLabelRoot=styled$1(FormLabel$1,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiInputLabel",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[{[`& .${formLabelClasses$1.asterisk}`]:et.asterisk},et.root,nt.formControl&&et.formControl,nt.size==="small"&&et.sizeSmall,nt.shrink&&et.shrink,!nt.disableAnimation&&et.animated,et[nt.variant]]}})(({theme:tt,ownerState:et})=>_extends$u({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},et.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},et.size==="small"&&{transform:"translate(0, 17px) scale(1)"},et.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!et.disableAnimation&&{transition:tt.transitions.create(["color","transform","max-width"],{duration:tt.transitions.duration.shorter,easing:tt.transitions.easing.easeOut})},et.variant==="filled"&&_extends$u({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},et.size==="small"&&{transform:"translate(12px, 13px) scale(1)"},et.shrink&&_extends$u({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},et.size==="small"&&{transform:"translate(12px, 4px) scale(0.75)"})),et.variant==="outlined"&&_extends$u({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},et.size==="small"&&{transform:"translate(14px, 9px) scale(1)"},et.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))),InputLabel=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({name:"MuiInputLabel",props:et}),{disableAnimation:it=!1,shrink:ot,className:at}=rt,st=_objectWithoutPropertiesLoose$m(rt,_excluded$15),lt=useFormControl();let ct=ot;typeof ct>"u"&<&&(ct=lt.filled||lt.focused||lt.adornedStart);const ut=formControlState({props:rt,muiFormControl:lt,states:["size","variant","required"]}),ht=_extends$u({},rt,{disableAnimation:it,formControl:lt,shrink:ct,size:ut.size,variant:ut.variant,required:ut.required}),dt=useUtilityClasses$B(ht);return jsxRuntimeExports.jsx(InputLabelRoot,_extends$u({"data-shrink":ct,ownerState:ht,ref:nt,className:clsx$3(dt.root,at)},st,{classes:dt}))}),InputLabel$1=InputLabel,ListContext=reactExports.createContext({}),ListContext$1=ListContext;function getListUtilityClass(tt){return generateUtilityClass("MuiList",tt)}generateUtilityClasses("MuiList",["root","padding","dense","subheader"]);const _excluded$14=["children","className","component","dense","disablePadding","subheader"],useUtilityClasses$A=tt=>{const{classes:et,disablePadding:nt,dense:rt,subheader:it}=tt;return composeClasses({root:["root",!nt&&"padding",rt&&"dense",it&&"subheader"]},getListUtilityClass,et)},ListRoot=styled$1("ul",{name:"MuiList",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,!nt.disablePadding&&et.padding,nt.dense&&et.dense,nt.subheader&&et.subheader]}})(({ownerState:tt})=>_extends$u({listStyle:"none",margin:0,padding:0,position:"relative"},!tt.disablePadding&&{paddingTop:8,paddingBottom:8},tt.subheader&&{paddingTop:0})),List=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiList"}),{children:it,className:ot,component:at="ul",dense:st=!1,disablePadding:lt=!1,subheader:ct}=rt,ut=_objectWithoutPropertiesLoose$m(rt,_excluded$14),ht=reactExports.useMemo(()=>({dense:st}),[st]),dt=_extends$u({},rt,{component:at,dense:st,disablePadding:lt}),pt=useUtilityClasses$A(dt);return jsxRuntimeExports.jsx(ListContext$1.Provider,{value:ht,children:jsxRuntimeExports.jsxs(ListRoot,_extends$u({as:at,className:clsx$3(pt.root,ot),ref:nt,ownerState:dt},ut,{children:[ct,it]}))})}),List$1=List;function getListItemUtilityClass(tt){return generateUtilityClass("MuiListItem",tt)}const listItemClasses=generateUtilityClasses("MuiListItem",["root","container","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","padding","button","secondaryAction","selected"]),listItemClasses$1=listItemClasses,listItemButtonClasses=generateUtilityClasses("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"]),listItemButtonClasses$1=listItemButtonClasses;function getListItemSecondaryActionClassesUtilityClass(tt){return generateUtilityClass("MuiListItemSecondaryAction",tt)}generateUtilityClasses("MuiListItemSecondaryAction",["root","disableGutters"]);const _excluded$13=["className"],useUtilityClasses$z=tt=>{const{disableGutters:et,classes:nt}=tt;return composeClasses({root:["root",et&&"disableGutters"]},getListItemSecondaryActionClassesUtilityClass,nt)},ListItemSecondaryActionRoot=styled$1("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.disableGutters&&et.disableGutters]}})(({ownerState:tt})=>_extends$u({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)"},tt.disableGutters&&{right:0})),ListItemSecondaryAction=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiListItemSecondaryAction"}),{className:it}=rt,ot=_objectWithoutPropertiesLoose$m(rt,_excluded$13),at=reactExports.useContext(ListContext$1),st=_extends$u({},rt,{disableGutters:at.disableGutters}),lt=useUtilityClasses$z(st);return jsxRuntimeExports.jsx(ListItemSecondaryActionRoot,_extends$u({className:clsx$3(lt.root,it),ownerState:st,ref:nt},ot))});ListItemSecondaryAction.muiName="ListItemSecondaryAction";const ListItemSecondaryAction$1=ListItemSecondaryAction,_excluded$12=["className"],_excluded2$f=["alignItems","autoFocus","button","children","className","component","components","componentsProps","ContainerComponent","ContainerProps","dense","disabled","disableGutters","disablePadding","divider","focusVisibleClassName","secondaryAction","selected","slotProps","slots"],overridesResolver$2=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.dense&&et.dense,nt.alignItems==="flex-start"&&et.alignItemsFlexStart,nt.divider&&et.divider,!nt.disableGutters&&et.gutters,!nt.disablePadding&&et.padding,nt.button&&et.button,nt.hasSecondaryAction&&et.secondaryAction]},useUtilityClasses$y=tt=>{const{alignItems:et,button:nt,classes:rt,dense:it,disabled:ot,disableGutters:at,disablePadding:st,divider:lt,hasSecondaryAction:ct,selected:ut}=tt;return composeClasses({root:["root",it&&"dense",!at&&"gutters",!st&&"padding",lt&&"divider",ot&&"disabled",nt&&"button",et==="flex-start"&&"alignItemsFlexStart",ct&&"secondaryAction",ut&&"selected"],container:["container"]},getListItemUtilityClass,rt)},ListItemRoot=styled$1("div",{name:"MuiListItem",slot:"Root",overridesResolver:overridesResolver$2})(({theme:tt,ownerState:et})=>_extends$u({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left"},!et.disablePadding&&_extends$u({paddingTop:8,paddingBottom:8},et.dense&&{paddingTop:4,paddingBottom:4},!et.disableGutters&&{paddingLeft:16,paddingRight:16},!!et.secondaryAction&&{paddingRight:48}),!!et.secondaryAction&&{[`& > .${listItemButtonClasses$1.root}`]:{paddingRight:48}},{[`&.${listItemClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette.action.focus},[`&.${listItemClasses$1.selected}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.selectedOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity),[`&.${listItemClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.focusOpacity}))`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity+tt.palette.action.focusOpacity)}},[`&.${listItemClasses$1.disabled}`]:{opacity:(tt.vars||tt).palette.action.disabledOpacity}},et.alignItems==="flex-start"&&{alignItems:"flex-start"},et.divider&&{borderBottom:`1px solid ${(tt.vars||tt).palette.divider}`,backgroundClip:"padding-box"},et.button&&{transition:tt.transitions.create("background-color",{duration:tt.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(tt.vars||tt).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${listItemClasses$1.selected}:hover`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.hoverOpacity}))`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity+tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.selectedOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity)}}},et.hasSecondaryAction&&{paddingRight:48})),ListItemContainer=styled$1("li",{name:"MuiListItem",slot:"Container",overridesResolver:(tt,et)=>et.container})({position:"relative"}),ListItem=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiListItem"}),{alignItems:it="center",autoFocus:ot=!1,button:at=!1,children:st,className:lt,component:ct,components:ut={},componentsProps:ht={},ContainerComponent:dt="li",ContainerProps:{className:pt}={},dense:mt=!1,disabled:gt=!1,disableGutters:yt=!1,disablePadding:bt=!1,divider:vt=!1,focusVisibleClassName:xt,secondaryAction:kt,selected:St=!1,slotProps:Tt={},slots:At={}}=rt,Et=_objectWithoutPropertiesLoose$m(rt.ContainerProps,_excluded$12),$t=_objectWithoutPropertiesLoose$m(rt,_excluded2$f),Dt=reactExports.useContext(ListContext$1),jt=reactExports.useMemo(()=>({dense:mt||Dt.dense||!1,alignItems:it,disableGutters:yt}),[it,Dt.dense,mt,yt]),Pt=reactExports.useRef(null);useEnhancedEffect$1(()=>{ot&&Pt.current&&Pt.current.focus()},[ot]);const Ct=reactExports.Children.toArray(st),wt=Ct.length&&isMuiElement(Ct[Ct.length-1],["ListItemSecondaryAction"]),It=_extends$u({},rt,{alignItems:it,autoFocus:ot,button:at,dense:jt.dense,disabled:gt,disableGutters:yt,disablePadding:bt,divider:vt,hasSecondaryAction:wt,selected:St}),Ot=useUtilityClasses$y(It),Wt=useForkRef(Pt,nt),zt=At.root||ut.Root||ListItemRoot,Ft=Tt.root||ht.root||{},Nt=_extends$u({className:clsx$3(Ot.root,Ft.className,lt),disabled:gt},$t);let Ut=ct||"li";return at&&(Nt.component=ct||"div",Nt.focusVisibleClassName=clsx$3(listItemClasses$1.focusVisible,xt),Ut=ButtonBase$1),wt?(Ut=!Nt.component&&!ct?"div":Ut,dt==="li"&&(Ut==="li"?Ut="div":Nt.component==="li"&&(Nt.component="div")),jsxRuntimeExports.jsx(ListContext$1.Provider,{value:jt,children:jsxRuntimeExports.jsxs(ListItemContainer,_extends$u({as:dt,className:clsx$3(Ot.container,pt),ref:Wt,ownerState:It},Et,{children:[jsxRuntimeExports.jsx(zt,_extends$u({},Ft,!isHostComponent(zt)&&{as:Ut,ownerState:_extends$u({},It,Ft.ownerState)},Nt,{children:Ct})),Ct.pop()]}))})):jsxRuntimeExports.jsx(ListContext$1.Provider,{value:jt,children:jsxRuntimeExports.jsxs(zt,_extends$u({},Ft,{as:Ut,ref:Wt},!isHostComponent(zt)&&{ownerState:_extends$u({},It,Ft.ownerState)},Nt,{children:[Ct,kt&&jsxRuntimeExports.jsx(ListItemSecondaryAction$1,{children:kt})]}))})}),ListItem$1=ListItem,listItemIconClasses=generateUtilityClasses("MuiListItemIcon",["root","alignItemsFlexStart"]),listItemIconClasses$1=listItemIconClasses,listItemTextClasses=generateUtilityClasses("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]),listItemTextClasses$1=listItemTextClasses,_excluded$11=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function nextItem$1(tt,et,nt){return tt===et?tt.firstChild:et&&et.nextElementSibling?et.nextElementSibling:nt?null:tt.firstChild}function previousItem$1(tt,et,nt){return tt===et?nt?tt.firstChild:tt.lastChild:et&&et.previousElementSibling?et.previousElementSibling:nt?null:tt.lastChild}function textCriteriaMatches(tt,et){if(et===void 0)return!0;let nt=tt.innerText;return nt===void 0&&(nt=tt.textContent),nt=nt.trim().toLowerCase(),nt.length===0?!1:et.repeating?nt[0]===et.keys[0]:nt.indexOf(et.keys.join(""))===0}function moveFocus$1(tt,et,nt,rt,it,ot){let at=!1,st=it(tt,et,et?nt:!1);for(;st;){if(st===tt.firstChild){if(at)return!1;at=!0}const lt=rt?!1:st.disabled||st.getAttribute("aria-disabled")==="true";if(!st.hasAttribute("tabindex")||!textCriteriaMatches(st,ot)||lt)st=it(tt,st,nt);else return st.focus(),!0}return!1}const MenuList=reactExports.forwardRef(function(et,nt){const{actions:rt,autoFocus:it=!1,autoFocusItem:ot=!1,children:at,className:st,disabledItemsFocusable:lt=!1,disableListWrap:ct=!1,onKeyDown:ut,variant:ht="selectedMenu"}=et,dt=_objectWithoutPropertiesLoose$m(et,_excluded$11),pt=reactExports.useRef(null),mt=reactExports.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});useEnhancedEffect$1(()=>{it&&pt.current.focus()},[it]),reactExports.useImperativeHandle(rt,()=>({adjustStyleForScrollbar:(xt,kt)=>{const St=!pt.current.style.width;if(xt.clientHeight{const kt=pt.current,St=xt.key,Tt=ownerDocument(kt).activeElement;if(St==="ArrowDown")xt.preventDefault(),moveFocus$1(kt,Tt,ct,lt,nextItem$1);else if(St==="ArrowUp")xt.preventDefault(),moveFocus$1(kt,Tt,ct,lt,previousItem$1);else if(St==="Home")xt.preventDefault(),moveFocus$1(kt,null,ct,lt,nextItem$1);else if(St==="End")xt.preventDefault(),moveFocus$1(kt,null,ct,lt,previousItem$1);else if(St.length===1){const At=mt.current,Et=St.toLowerCase(),$t=performance.now();At.keys.length>0&&($t-At.lastTime>500?(At.keys=[],At.repeating=!0,At.previousKeyMatched=!0):At.repeating&&Et!==At.keys[0]&&(At.repeating=!1)),At.lastTime=$t,At.keys.push(Et);const Dt=Tt&&!At.repeating&&textCriteriaMatches(Tt,At);At.previousKeyMatched&&(Dt||moveFocus$1(kt,Tt,!1,lt,nextItem$1,At))?xt.preventDefault():At.previousKeyMatched=!1}ut&&ut(xt)},yt=useForkRef(pt,nt);let bt=-1;reactExports.Children.forEach(at,(xt,kt)=>{if(!reactExports.isValidElement(xt)){bt===kt&&(bt+=1,bt>=at.length&&(bt=-1));return}xt.props.disabled||(ht==="selectedMenu"&&xt.props.selected||bt===-1)&&(bt=kt),bt===kt&&(xt.props.disabled||xt.props.muiSkipListHighlight||xt.type.muiSkipListHighlight)&&(bt+=1,bt>=at.length&&(bt=-1))});const vt=reactExports.Children.map(at,(xt,kt)=>{if(kt===bt){const St={};return ot&&(St.autoFocus=!0),xt.props.tabIndex===void 0&&ht==="selectedMenu"&&(St.tabIndex=0),reactExports.cloneElement(xt,St)}return xt});return jsxRuntimeExports.jsx(List$1,_extends$u({role:"menu",ref:yt,className:st,onKeyDown:gt,tabIndex:it?0:-1},dt,{children:vt}))}),MenuList$1=MenuList;function getPopoverUtilityClass(tt){return generateUtilityClass("MuiPopover",tt)}generateUtilityClasses("MuiPopover",["root","paper"]);const _excluded$10=["onEntering"],_excluded2$e=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],_excluded3$4=["slotProps"];function getOffsetTop(tt,et){let nt=0;return typeof et=="number"?nt=et:et==="center"?nt=tt.height/2:et==="bottom"&&(nt=tt.height),nt}function getOffsetLeft(tt,et){let nt=0;return typeof et=="number"?nt=et:et==="center"?nt=tt.width/2:et==="right"&&(nt=tt.width),nt}function getTransformOriginValue(tt){return[tt.horizontal,tt.vertical].map(et=>typeof et=="number"?`${et}px`:et).join(" ")}function resolveAnchorEl(tt){return typeof tt=="function"?tt():tt}const useUtilityClasses$x=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],paper:["paper"]},getPopoverUtilityClass,et)},PopoverRoot=styled$1(Modal$1,{name:"MuiPopover",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),PopoverPaper=styled$1(Paper$1,{name:"MuiPopover",slot:"Paper",overridesResolver:(tt,et)=>et.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),Popover=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useThemeProps({props:et,name:"MuiPopover"}),{action:st,anchorEl:lt,anchorOrigin:ct={vertical:"top",horizontal:"left"},anchorPosition:ut,anchorReference:ht="anchorEl",children:dt,className:pt,container:mt,elevation:gt=8,marginThreshold:yt=16,open:bt,PaperProps:vt={},slots:xt,slotProps:kt,transformOrigin:St={vertical:"top",horizontal:"left"},TransitionComponent:Tt=Grow$1,transitionDuration:At="auto",TransitionProps:{onEntering:Et}={},disableScrollLock:$t=!1}=at,Dt=_objectWithoutPropertiesLoose$m(at.TransitionProps,_excluded$10),jt=_objectWithoutPropertiesLoose$m(at,_excluded2$e),Pt=(rt=kt==null?void 0:kt.paper)!=null?rt:vt,Ct=reactExports.useRef(),wt=useForkRef(Ct,Pt.ref),It=_extends$u({},at,{anchorOrigin:ct,anchorReference:ht,elevation:gt,marginThreshold:yt,externalPaperSlotProps:Pt,transformOrigin:St,TransitionComponent:Tt,transitionDuration:At,TransitionProps:Dt}),Ot=useUtilityClasses$x(It),Wt=reactExports.useCallback(()=>{if(ht==="anchorPosition")return ut;const _n=resolveAnchorEl(lt),$n=(_n&&_n.nodeType===1?_n:ownerDocument(Ct.current).body).getBoundingClientRect();return{top:$n.top+getOffsetTop($n,ct.vertical),left:$n.left+getOffsetLeft($n,ct.horizontal)}},[lt,ct.horizontal,ct.vertical,ut,ht]),zt=reactExports.useCallback(_n=>({vertical:getOffsetTop(_n,St.vertical),horizontal:getOffsetLeft(_n,St.horizontal)}),[St.horizontal,St.vertical]),Ft=reactExports.useCallback(_n=>{const Pn={width:_n.offsetWidth,height:_n.offsetHeight},$n=zt(Pn);if(ht==="none")return{top:null,left:null,transformOrigin:getTransformOriginValue($n)};const Nn=Wt();let Tn=Nn.top-$n.vertical,cn=Nn.left-$n.horizontal;const mn=Tn+Pn.height,In=cn+Pn.width,An=ownerWindow(resolveAnchorEl(lt)),wn=An.innerHeight-yt,fn=An.innerWidth-yt;if(yt!==null&&Tnwn){const pn=mn-wn;Tn-=pn,$n.vertical+=pn}if(yt!==null&&cnfn){const pn=In-fn;cn-=pn,$n.horizontal+=pn}return{top:`${Math.round(Tn)}px`,left:`${Math.round(cn)}px`,transformOrigin:getTransformOriginValue($n)}},[lt,ht,Wt,zt,yt]),[Nt,Ut]=reactExports.useState(bt),Mt=reactExports.useCallback(()=>{const _n=Ct.current;if(!_n)return;const Pn=Ft(_n);Pn.top!==null&&(_n.style.top=Pn.top),Pn.left!==null&&(_n.style.left=Pn.left),_n.style.transformOrigin=Pn.transformOrigin,Ut(!0)},[Ft]);reactExports.useEffect(()=>($t&&window.addEventListener("scroll",Mt),()=>window.removeEventListener("scroll",Mt)),[lt,$t,Mt]);const Ht=(_n,Pn)=>{Et&&Et(_n,Pn),Mt()},en=()=>{Ut(!1)};reactExports.useEffect(()=>{bt&&Mt()}),reactExports.useImperativeHandle(st,()=>bt?{updatePosition:()=>{Mt()}}:null,[bt,Mt]),reactExports.useEffect(()=>{if(!bt)return;const _n=debounce$5(()=>{Mt()}),Pn=ownerWindow(lt);return Pn.addEventListener("resize",_n),()=>{_n.clear(),Pn.removeEventListener("resize",_n)}},[lt,bt,Mt]);let sn=At;At==="auto"&&!Tt.muiSupportAuto&&(sn=void 0);const Kt=mt||(lt?ownerDocument(resolveAnchorEl(lt)).body:void 0),rn=(it=xt==null?void 0:xt.root)!=null?it:PopoverRoot,nn=(ot=xt==null?void 0:xt.paper)!=null?ot:PopoverPaper,hn=useSlotProps({elementType:nn,externalSlotProps:_extends$u({},Pt,{style:Nt?Pt.style:_extends$u({},Pt.style,{opacity:0})}),additionalProps:{elevation:gt,ref:wt},ownerState:It,className:clsx$3(Ot.paper,Pt==null?void 0:Pt.className)}),vn=useSlotProps({elementType:rn,externalSlotProps:(kt==null?void 0:kt.root)||{},externalForwardedProps:jt,additionalProps:{ref:nt,slotProps:{backdrop:{invisible:!0}},container:Kt,open:bt},ownerState:It,className:clsx$3(Ot.root,pt)}),{slotProps:an}=vn,Qt=_objectWithoutPropertiesLoose$m(vn,_excluded3$4);return jsxRuntimeExports.jsx(rn,_extends$u({},Qt,!isHostComponent(rn)&&{slotProps:an,disableScrollLock:$t},{children:jsxRuntimeExports.jsx(Tt,_extends$u({appear:!0,in:bt,onEntering:Ht,onExited:en,timeout:sn},Dt,{children:jsxRuntimeExports.jsx(nn,_extends$u({},hn,{children:dt}))}))}))}),Popover$1=Popover;function getMenuUtilityClass(tt){return generateUtilityClass("MuiMenu",tt)}generateUtilityClasses("MuiMenu",["root","paper","list"]);const _excluded$$=["onEntering"],_excluded2$d=["autoFocus","children","className","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant","slots","slotProps"],RTL_ORIGIN={vertical:"top",horizontal:"right"},LTR_ORIGIN={vertical:"top",horizontal:"left"},useUtilityClasses$w=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],paper:["paper"],list:["list"]},getMenuUtilityClass,et)},MenuRoot=styled$1(Popover$1,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiMenu",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),MenuPaper=styled$1(PopoverPaper,{name:"MuiMenu",slot:"Paper",overridesResolver:(tt,et)=>et.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),MenuMenuList=styled$1(MenuList$1,{name:"MuiMenu",slot:"List",overridesResolver:(tt,et)=>et.list})({outline:0}),Menu=reactExports.forwardRef(function(et,nt){var rt,it;const ot=useThemeProps({props:et,name:"MuiMenu"}),{autoFocus:at=!0,children:st,className:lt,disableAutoFocusItem:ct=!1,MenuListProps:ut={},onClose:ht,open:dt,PaperProps:pt={},PopoverClasses:mt,transitionDuration:gt="auto",TransitionProps:{onEntering:yt}={},variant:bt="selectedMenu",slots:vt={},slotProps:xt={}}=ot,kt=_objectWithoutPropertiesLoose$m(ot.TransitionProps,_excluded$$),St=_objectWithoutPropertiesLoose$m(ot,_excluded2$d),Tt=useTheme(),At=Tt.direction==="rtl",Et=_extends$u({},ot,{autoFocus:at,disableAutoFocusItem:ct,MenuListProps:ut,onEntering:yt,PaperProps:pt,transitionDuration:gt,TransitionProps:kt,variant:bt}),$t=useUtilityClasses$w(Et),Dt=at&&!ct&&dt,jt=reactExports.useRef(null),Pt=(Ft,Nt)=>{jt.current&&jt.current.adjustStyleForScrollbar(Ft,Tt),yt&&yt(Ft,Nt)},Ct=Ft=>{Ft.key==="Tab"&&(Ft.preventDefault(),ht&&ht(Ft,"tabKeyDown"))};let wt=-1;reactExports.Children.map(st,(Ft,Nt)=>{reactExports.isValidElement(Ft)&&(Ft.props.disabled||(bt==="selectedMenu"&&Ft.props.selected||wt===-1)&&(wt=Nt))});const It=(rt=vt.paper)!=null?rt:MenuPaper,Ot=(it=xt.paper)!=null?it:pt,Wt=useSlotProps({elementType:vt.root,externalSlotProps:xt.root,ownerState:Et,className:[$t.root,lt]}),zt=useSlotProps({elementType:It,externalSlotProps:Ot,ownerState:Et,className:$t.paper});return jsxRuntimeExports.jsx(MenuRoot,_extends$u({onClose:ht,anchorOrigin:{vertical:"bottom",horizontal:At?"right":"left"},transformOrigin:At?RTL_ORIGIN:LTR_ORIGIN,slots:{paper:It,root:vt.root},slotProps:{root:Wt,paper:zt},open:dt,ref:nt,transitionDuration:gt,TransitionProps:_extends$u({onEntering:Pt},kt),ownerState:Et},St,{classes:mt,children:jsxRuntimeExports.jsx(MenuMenuList,_extends$u({onKeyDown:Ct,actions:jt,autoFocus:at&&(wt===-1||ct),autoFocusItem:Dt,variant:bt},ut,{className:clsx$3($t.list,ut.className),children:st}))}))}),Menu$1=Menu;function getMenuItemUtilityClass(tt){return generateUtilityClass("MuiMenuItem",tt)}const menuItemClasses=generateUtilityClasses("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),menuItemClasses$1=menuItemClasses,_excluded$_=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],overridesResolver$1=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,nt.dense&&et.dense,nt.divider&&et.divider,!nt.disableGutters&&et.gutters]},useUtilityClasses$v=tt=>{const{disabled:et,dense:nt,divider:rt,disableGutters:it,selected:ot,classes:at}=tt,lt=composeClasses({root:["root",nt&&"dense",et&&"disabled",!it&&"gutters",rt&&"divider",ot&&"selected"]},getMenuItemUtilityClass,at);return _extends$u({},at,lt)},MenuItemRoot=styled$1(ButtonBase$1,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiMenuItem",slot:"Root",overridesResolver:overridesResolver$1})(({theme:tt,ownerState:et})=>_extends$u({},tt.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!et.disableGutters&&{paddingLeft:16,paddingRight:16},et.divider&&{borderBottom:`1px solid ${(tt.vars||tt).palette.divider}`,backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(tt.vars||tt).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${menuItemClasses$1.selected}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.selectedOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity),[`&.${menuItemClasses$1.focusVisible}`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.focusOpacity}))`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity+tt.palette.action.focusOpacity)}},[`&.${menuItemClasses$1.selected}:hover`]:{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / calc(${tt.vars.palette.action.selectedOpacity} + ${tt.vars.palette.action.hoverOpacity}))`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity+tt.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.selectedOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.selectedOpacity)}},[`&.${menuItemClasses$1.focusVisible}`]:{backgroundColor:(tt.vars||tt).palette.action.focus},[`&.${menuItemClasses$1.disabled}`]:{opacity:(tt.vars||tt).palette.action.disabledOpacity},[`& + .${dividerClasses.root}`]:{marginTop:tt.spacing(1),marginBottom:tt.spacing(1)},[`& + .${dividerClasses.inset}`]:{marginLeft:52},[`& .${listItemTextClasses$1.root}`]:{marginTop:0,marginBottom:0},[`& .${listItemTextClasses$1.inset}`]:{paddingLeft:36},[`& .${listItemIconClasses$1.root}`]:{minWidth:36}},!et.dense&&{[tt.breakpoints.up("sm")]:{minHeight:"auto"}},et.dense&&_extends$u({minHeight:32,paddingTop:4,paddingBottom:4},tt.typography.body2,{[`& .${listItemIconClasses$1.root} svg`]:{fontSize:"1.25rem"}}))),MenuItem$2=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiMenuItem"}),{autoFocus:it=!1,component:ot="li",dense:at=!1,divider:st=!1,disableGutters:lt=!1,focusVisibleClassName:ct,role:ut="menuitem",tabIndex:ht,className:dt}=rt,pt=_objectWithoutPropertiesLoose$m(rt,_excluded$_),mt=reactExports.useContext(ListContext$1),gt=reactExports.useMemo(()=>({dense:at||mt.dense||!1,disableGutters:lt}),[mt.dense,at,lt]),yt=reactExports.useRef(null);useEnhancedEffect$1(()=>{it&&yt.current&&yt.current.focus()},[it]);const bt=_extends$u({},rt,{dense:gt.dense,divider:st,disableGutters:lt}),vt=useUtilityClasses$v(rt),xt=useForkRef(yt,nt);let kt;return rt.disabled||(kt=ht!==void 0?ht:-1),jsxRuntimeExports.jsx(ListContext$1.Provider,{value:gt,children:jsxRuntimeExports.jsx(MenuItemRoot,_extends$u({ref:xt,role:ut,tabIndex:kt,component:ot,focusVisibleClassName:clsx$3(vt.focusVisible,ct),className:clsx$3(vt.root,dt)},pt,{ownerState:bt,classes:vt}))})}),MenuItem$3=MenuItem$2;function getNativeSelectUtilityClasses(tt){return generateUtilityClass("MuiNativeSelect",tt)}const nativeSelectClasses=generateUtilityClasses("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),nativeSelectClasses$1=nativeSelectClasses,_excluded$Z=["className","disabled","error","IconComponent","inputRef","variant"],useUtilityClasses$u=tt=>{const{classes:et,variant:nt,disabled:rt,multiple:it,open:ot,error:at}=tt,st={select:["select",nt,rt&&"disabled",it&&"multiple",at&&"error"],icon:["icon",`icon${capitalize(nt)}`,ot&&"iconOpen",rt&&"disabled"]};return composeClasses(st,getNativeSelectUtilityClasses,et)},nativeSelectSelectStyles=({ownerState:tt,theme:et})=>_extends$u({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":_extends$u({},et.vars?{backgroundColor:`rgba(${et.vars.palette.common.onBackgroundChannel} / 0.05)`}:{backgroundColor:et.palette.mode==="light"?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)"},{borderRadius:0}),"&::-ms-expand":{display:"none"},[`&.${nativeSelectClasses$1.disabled}`]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(et.vars||et).palette.background.paper},"&&&":{paddingRight:24,minWidth:16}},tt.variant==="filled"&&{"&&&":{paddingRight:32}},tt.variant==="outlined"&&{borderRadius:(et.vars||et).shape.borderRadius,"&:focus":{borderRadius:(et.vars||et).shape.borderRadius},"&&&":{paddingRight:32}}),NativeSelectSelect=styled$1("select",{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:rootShouldForwardProp,overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.select,et[nt.variant],nt.error&&et.error,{[`&.${nativeSelectClasses$1.multiple}`]:et.multiple}]}})(nativeSelectSelectStyles),nativeSelectIconStyles=({ownerState:tt,theme:et})=>_extends$u({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(et.vars||et).palette.action.active,[`&.${nativeSelectClasses$1.disabled}`]:{color:(et.vars||et).palette.action.disabled}},tt.open&&{transform:"rotate(180deg)"},tt.variant==="filled"&&{right:7},tt.variant==="outlined"&&{right:7}),NativeSelectIcon=styled$1("svg",{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.icon,nt.variant&&et[`icon${capitalize(nt.variant)}`],nt.open&&et.iconOpen]}})(nativeSelectIconStyles),NativeSelectInput=reactExports.forwardRef(function(et,nt){const{className:rt,disabled:it,error:ot,IconComponent:at,inputRef:st,variant:lt="standard"}=et,ct=_objectWithoutPropertiesLoose$m(et,_excluded$Z),ut=_extends$u({},et,{disabled:it,variant:lt,error:ot}),ht=useUtilityClasses$u(ut);return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(NativeSelectSelect,_extends$u({ownerState:ut,className:clsx$3(ht.select,rt),disabled:it,ref:st||nt},ct)),et.multiple?null:jsxRuntimeExports.jsx(NativeSelectIcon,{as:at,ownerState:ut,className:ht.icon})]})}),NativeSelectInput$1=NativeSelectInput;var _span$1;const _excluded$Y=["children","classes","className","label","notched"],NotchedOutlineRoot$1=styled$1("fieldset")({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),NotchedOutlineLegend=styled$1("legend")(({ownerState:tt,theme:et})=>_extends$u({float:"unset",width:"auto",overflow:"hidden"},!tt.withLabel&&{padding:0,lineHeight:"11px",transition:et.transitions.create("width",{duration:150,easing:et.transitions.easing.easeOut})},tt.withLabel&&_extends$u({display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:et.transitions.create("max-width",{duration:50,easing:et.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}},tt.notched&&{maxWidth:"100%",transition:et.transitions.create("max-width",{duration:100,easing:et.transitions.easing.easeOut,delay:50})})));function NotchedOutline(tt){const{className:et,label:nt,notched:rt}=tt,it=_objectWithoutPropertiesLoose$m(tt,_excluded$Y),ot=nt!=null&&nt!=="",at=_extends$u({},tt,{notched:rt,withLabel:ot});return jsxRuntimeExports.jsx(NotchedOutlineRoot$1,_extends$u({"aria-hidden":!0,className:et,ownerState:at},it,{children:jsxRuntimeExports.jsx(NotchedOutlineLegend,{ownerState:at,children:ot?jsxRuntimeExports.jsx("span",{children:nt}):_span$1||(_span$1=jsxRuntimeExports.jsx("span",{className:"notranslate",children:"​"}))})}))}const _excluded$X=["components","fullWidth","inputComponent","label","multiline","notched","slots","type"],useUtilityClasses$t=tt=>{const{classes:et}=tt,rt=composeClasses({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},getOutlinedInputUtilityClass,et);return _extends$u({},et,rt)},OutlinedInputRoot=styled$1(InputBaseRoot,{shouldForwardProp:tt=>rootShouldForwardProp(tt)||tt==="classes",name:"MuiOutlinedInput",slot:"Root",overridesResolver:rootOverridesResolver})(({theme:tt,ownerState:et})=>{const nt=tt.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return _extends$u({position:"relative",borderRadius:(tt.vars||tt).shape.borderRadius,[`&:hover .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:(tt.vars||tt).palette.text.primary},"@media (hover: none)":{[`&:hover .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:tt.vars?`rgba(${tt.vars.palette.common.onBackgroundChannel} / 0.23)`:nt}},[`&.${outlinedInputClasses$1.focused} .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:(tt.vars||tt).palette[et.color].main,borderWidth:2},[`&.${outlinedInputClasses$1.error} .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:(tt.vars||tt).palette.error.main},[`&.${outlinedInputClasses$1.disabled} .${outlinedInputClasses$1.notchedOutline}`]:{borderColor:(tt.vars||tt).palette.action.disabled}},et.startAdornment&&{paddingLeft:14},et.endAdornment&&{paddingRight:14},et.multiline&&_extends$u({padding:"16.5px 14px"},et.size==="small"&&{padding:"8.5px 14px"}))}),NotchedOutlineRoot=styled$1(NotchedOutline,{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:(tt,et)=>et.notchedOutline})(({theme:tt})=>{const et=tt.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:tt.vars?`rgba(${tt.vars.palette.common.onBackgroundChannel} / 0.23)`:et}}),OutlinedInputInput=styled$1(InputBaseComponent,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:inputOverridesResolver})(({theme:tt,ownerState:et})=>_extends$u({padding:"16.5px 14px"},!tt.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:tt.palette.mode==="light"?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:tt.palette.mode==="light"?null:"#fff",caretColor:tt.palette.mode==="light"?null:"#fff",borderRadius:"inherit"}},tt.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[tt.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},et.size==="small"&&{padding:"8.5px 14px"},et.multiline&&{padding:0},et.startAdornment&&{paddingLeft:0},et.endAdornment&&{paddingRight:0})),OutlinedInput=reactExports.forwardRef(function(et,nt){var rt,it,ot,at,st;const lt=useThemeProps({props:et,name:"MuiOutlinedInput"}),{components:ct={},fullWidth:ut=!1,inputComponent:ht="input",label:dt,multiline:pt=!1,notched:mt,slots:gt={},type:yt="text"}=lt,bt=_objectWithoutPropertiesLoose$m(lt,_excluded$X),vt=useUtilityClasses$t(lt),xt=useFormControl(),kt=formControlState({props:lt,muiFormControl:xt,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),St=_extends$u({},lt,{color:kt.color||"primary",disabled:kt.disabled,error:kt.error,focused:kt.focused,formControl:xt,fullWidth:ut,hiddenLabel:kt.hiddenLabel,multiline:pt,size:kt.size,type:yt}),Tt=(rt=(it=gt.root)!=null?it:ct.Root)!=null?rt:OutlinedInputRoot,At=(ot=(at=gt.input)!=null?at:ct.Input)!=null?ot:OutlinedInputInput;return jsxRuntimeExports.jsx(InputBase$1,_extends$u({slots:{root:Tt,input:At},renderSuffix:Et=>jsxRuntimeExports.jsx(NotchedOutlineRoot,{ownerState:St,className:vt.notchedOutline,label:dt!=null&&dt!==""&&kt.required?st||(st=jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[dt," ","*"]})):dt,notched:typeof mt<"u"?mt:!!(Et.startAdornment||Et.filled||Et.focused)}),fullWidth:ut,inputComponent:ht,multiline:pt,ref:nt,type:yt},bt,{classes:_extends$u({},vt,{notchedOutline:null})}))});OutlinedInput.muiName="Input";const OutlinedInput$1=OutlinedInput;function getSelectUtilityClasses(tt){return generateUtilityClass("MuiSelect",tt)}const selectClasses=generateUtilityClasses("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),selectClasses$1=selectClasses;var _span;const _excluded$W=["aria-describedby","aria-label","autoFocus","autoWidth","children","className","defaultOpen","defaultValue","disabled","displayEmpty","error","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"],SelectSelect=styled$1("div",{name:"MuiSelect",slot:"Select",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[{[`&.${selectClasses$1.select}`]:et.select},{[`&.${selectClasses$1.select}`]:et[nt.variant]},{[`&.${selectClasses$1.error}`]:et.error},{[`&.${selectClasses$1.multiple}`]:et.multiple}]}})(nativeSelectSelectStyles,{[`&.${selectClasses$1.select}`]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),SelectIcon=styled$1("svg",{name:"MuiSelect",slot:"Icon",overridesResolver:(tt,et)=>{const{ownerState:nt}=tt;return[et.icon,nt.variant&&et[`icon${capitalize(nt.variant)}`],nt.open&&et.iconOpen]}})(nativeSelectIconStyles),SelectNativeInput=styled$1("input",{shouldForwardProp:tt=>slotShouldForwardProp(tt)&&tt!=="classes",name:"MuiSelect",slot:"NativeInput",overridesResolver:(tt,et)=>et.nativeInput})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function areEqualValues(tt,et){return typeof et=="object"&&et!==null?tt===et:String(tt)===String(et)}function isEmpty(tt){return tt==null||typeof tt=="string"&&!tt.trim()}const useUtilityClasses$s=tt=>{const{classes:et,variant:nt,disabled:rt,multiple:it,open:ot,error:at}=tt,st={select:["select",nt,rt&&"disabled",it&&"multiple",at&&"error"],icon:["icon",`icon${capitalize(nt)}`,ot&&"iconOpen",rt&&"disabled"],nativeInput:["nativeInput"]};return composeClasses(st,getSelectUtilityClasses,et)},SelectInput=reactExports.forwardRef(function(et,nt){var rt;const{"aria-describedby":it,"aria-label":ot,autoFocus:at,autoWidth:st,children:lt,className:ct,defaultOpen:ut,defaultValue:ht,disabled:dt,displayEmpty:pt,error:mt=!1,IconComponent:gt,inputRef:yt,labelId:bt,MenuProps:vt={},multiple:xt,name:kt,onBlur:St,onChange:Tt,onClose:At,onFocus:Et,onOpen:$t,open:Dt,readOnly:jt,renderValue:Pt,SelectDisplayProps:Ct={},tabIndex:wt,value:It,variant:Ot="standard"}=et,Wt=_objectWithoutPropertiesLoose$m(et,_excluded$W),[zt,Ft]=useControlled({controlled:It,default:ht,name:"Select"}),[Nt,Ut]=useControlled({controlled:Dt,default:ut,name:"Select"}),Mt=reactExports.useRef(null),Ht=reactExports.useRef(null),[en,sn]=reactExports.useState(null),{current:Kt}=reactExports.useRef(Dt!=null),[rn,nn]=reactExports.useState(),hn=useForkRef(nt,yt),vn=reactExports.useCallback(On=>{Ht.current=On,On&&sn(On)},[]),an=en==null?void 0:en.parentNode;reactExports.useImperativeHandle(hn,()=>({focus:()=>{Ht.current.focus()},node:Mt.current,value:zt}),[zt]),reactExports.useEffect(()=>{ut&&Nt&&en&&!Kt&&(nn(st?null:an.clientWidth),Ht.current.focus())},[en,st]),reactExports.useEffect(()=>{at&&Ht.current.focus()},[at]),reactExports.useEffect(()=>{if(!bt)return;const On=ownerDocument(Ht.current).getElementById(bt);if(On){const Zn=()=>{getSelection().isCollapsed&&Ht.current.focus()};return On.addEventListener("click",Zn),()=>{On.removeEventListener("click",Zn)}}},[bt]);const Qt=(On,Zn)=>{On?$t&&$t(Zn):At&&At(Zn),Kt||(nn(st?null:an.clientWidth),Ut(On))},_n=On=>{On.button===0&&(On.preventDefault(),Ht.current.focus(),Qt(!0,On))},Pn=On=>{Qt(!1,On)},$n=reactExports.Children.toArray(lt),Nn=On=>{const Zn=$n.find(Vn=>Vn.props.value===On.target.value);Zn!==void 0&&(Ft(Zn.props.value),Tt&&Tt(On,Zn))},Tn=On=>Zn=>{let Vn;if(Zn.currentTarget.hasAttribute("tabindex")){if(xt){Vn=Array.isArray(zt)?zt.slice():[];const qn=zt.indexOf(On.props.value);qn===-1?Vn.push(On.props.value):Vn.splice(qn,1)}else Vn=On.props.value;if(On.props.onClick&&On.props.onClick(Zn),zt!==Vn&&(Ft(Vn),Tt)){const qn=Zn.nativeEvent||Zn,zn=new qn.constructor(qn.type,qn);Object.defineProperty(zn,"target",{writable:!0,value:{value:Vn,name:kt}}),Tt(zn,On)}xt||Qt(!1,Zn)}},cn=On=>{jt||[" ","ArrowUp","ArrowDown","Enter"].indexOf(On.key)!==-1&&(On.preventDefault(),Qt(!0,On))},mn=en!==null&&Nt,In=On=>{!mn&&St&&(Object.defineProperty(On,"target",{writable:!0,value:{value:zt,name:kt}}),St(On))};delete Wt["aria-invalid"];let An,wn;const fn=[];let pn=!1;(isFilled({value:zt})||pt)&&(Pt?An=Pt(zt):pn=!0);const kn=$n.map(On=>{if(!reactExports.isValidElement(On))return null;let Zn;if(xt){if(!Array.isArray(zt))throw new Error(formatMuiErrorMessage(2));Zn=zt.some(Vn=>areEqualValues(Vn,On.props.value)),Zn&&pn&&fn.push(On.props.children)}else Zn=areEqualValues(zt,On.props.value),Zn&&pn&&(wn=On.props.children);return reactExports.cloneElement(On,{"aria-selected":Zn?"true":"false",onClick:Tn(On),onKeyUp:Vn=>{Vn.key===" "&&Vn.preventDefault(),On.props.onKeyUp&&On.props.onKeyUp(Vn)},role:"option",selected:Zn,value:void 0,"data-value":On.props.value})});pn&&(xt?fn.length===0?An=null:An=fn.reduce((On,Zn,Vn)=>(On.push(Zn),Vn{const{classes:et}=tt;return et},styledRootConfig={name:"MuiSelect",overridesResolver:(tt,et)=>et.root,shouldForwardProp:tt=>rootShouldForwardProp(tt)&&tt!=="variant",slot:"Root"},StyledInput$1=styled$1(Input$3,styledRootConfig)(""),StyledOutlinedInput=styled$1(OutlinedInput$1,styledRootConfig)(""),StyledFilledInput=styled$1(FilledInput$1,styledRootConfig)(""),Select$3=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({name:"MuiSelect",props:et}),{autoWidth:it=!1,children:ot,classes:at={},className:st,defaultOpen:lt=!1,displayEmpty:ct=!1,IconComponent:ut=ArrowDropDownIcon$1,id:ht,input:dt,inputProps:pt,label:mt,labelId:gt,MenuProps:yt,multiple:bt=!1,native:vt=!1,onClose:xt,onOpen:kt,open:St,renderValue:Tt,SelectDisplayProps:At,variant:Et="outlined"}=rt,$t=_objectWithoutPropertiesLoose$m(rt,_excluded$V),Dt=vt?NativeSelectInput$1:SelectInput$1,jt=useFormControl(),Pt=formControlState({props:rt,muiFormControl:jt,states:["variant","error"]}),Ct=Pt.variant||Et,wt=_extends$u({},rt,{variant:Ct,classes:at}),It=useUtilityClasses$r(wt),Ot=_objectWithoutPropertiesLoose$m(It,_excluded2$c),Wt=dt||{standard:jsxRuntimeExports.jsx(StyledInput$1,{ownerState:wt}),outlined:jsxRuntimeExports.jsx(StyledOutlinedInput,{label:mt,ownerState:wt}),filled:jsxRuntimeExports.jsx(StyledFilledInput,{ownerState:wt})}[Ct],zt=useForkRef(nt,Wt.ref);return jsxRuntimeExports.jsx(reactExports.Fragment,{children:reactExports.cloneElement(Wt,_extends$u({inputComponent:Dt,inputProps:_extends$u({children:ot,error:Pt.error,IconComponent:ut,variant:Ct,type:void 0,multiple:bt},vt?{id:ht}:{autoWidth:it,defaultOpen:lt,displayEmpty:ct,labelId:gt,MenuProps:yt,onClose:xt,onOpen:kt,open:St,renderValue:Tt,SelectDisplayProps:_extends$u({id:ht},At)},pt,{classes:pt?deepmerge$1(Ot,pt.classes):Ot},dt?dt.props.inputProps:{})},bt&&vt&&Ct==="outlined"?{notched:!0}:{},{ref:zt,className:clsx$3(Wt.props.className,st,It.root)},!dt&&{variant:Ct},$t))})});Select$3.muiName="Select";const Select$4=Select$3;function getSkeletonUtilityClass(tt){return generateUtilityClass("MuiSkeleton",tt)}generateUtilityClasses("MuiSkeleton",["root","text","rectangular","rounded","circular","pulse","wave","withChildren","fitContent","heightAuto"]);const _excluded$U=["animation","className","component","height","style","variant","width"];let _=tt=>tt,_t,_t2,_t3,_t4;const useUtilityClasses$q=tt=>{const{classes:et,variant:nt,animation:rt,hasChildren:it,width:ot,height:at}=tt;return composeClasses({root:["root",nt,rt,it&&"withChildren",it&&!ot&&"fitContent",it&&!at&&"heightAuto"]},getSkeletonUtilityClass,et)},pulseKeyframe=keyframes(_t||(_t=_` 0% { opacity: 1; } @@ -323,7 +323,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho * Copyright (c) 2014-2015, Fedor Indutny (MIT License) * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). * https://github.com/bcoin-org/bcoin - */let EncodingError$5=class gw extends Error{constructor(et,nt,rt){super(),this.type="EncodingError",this.name="EncodingError",this.code="ERR_ENCODING",this.message=`${nt} (offset=${et}).`,Error.captureStackTrace&&Error.captureStackTrace(this,rt||gw)}};var error=EncodingError$5;/*! + */let EncodingError$5=class yw extends Error{constructor(et,nt,rt){super(),this.type="EncodingError",this.name="EncodingError",this.code="ERR_ENCODING",this.message=`${nt} (offset=${et}).`,Error.captureStackTrace&&Error.captureStackTrace(this,rt||yw)}};var error=EncodingError$5;/*! * encoding.js - encoding utils for bcoin * Copyright (c) 2014-2015, Fedor Indutny (MIT License) * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). @@ -333,7 +333,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho * Copyright (c) 2014-2015, Fedor Indutny (MIT License) * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). * https://github.com/bcoin-org/bcoin - */const enforce$5=enforce_1,encoding$3=encoding$4,EncodingError$3=error,EMPTY$1=Buffer.alloc(0);let BufferReader$3=class{constructor(et,nt=!1){mw(this,"data");enforce$5(Buffer.isBuffer(et),"data","buffer"),enforce$5(typeof nt=="boolean","zeroCopy","boolean"),this.data=et,this.offset=0,this.zeroCopy=nt,this.stack=[]}check(et){if(this.offset+et>this.data.length)throw new EncodingError$3(this.offset,"Out of bounds read",this.check)}getSize(){return this.data.length}left(){return this.check(0),this.data.length-this.offset}seek(et){if(enforce$5(Number.isSafeInteger(et),"off","integer"),this.offset+et<0)throw new EncodingError$3(this.offset,"Out of bounds read");return this.check(et),this.offset+=et,this}start(){return this.stack.push(this.offset),this.offset}end(){if(this.stack.length===0)throw new Error("Cannot end without a stack item.");const et=this.stack.pop();return this.offset-et}endData(et=!1){if(enforce$5(typeof et=="boolean","zeroCopy","boolean"),this.stack.length===0)throw new Error("Cannot end without a stack item.");const nt=this.stack.pop(),rt=this.offset,it=rt-nt,ot=this.data;if(it===ot.length)return ot;if(this.zeroCopy||et)return ot.slice(nt,rt);const at=Buffer.allocUnsafeSlow(it);return ot.copy(at,0,nt,rt),at}destroy(){return this.data=EMPTY$1,this.offset=0,this.stack.length=0,this}readU8(){this.check(1);const et=this.data[this.offset];return this.offset+=1,et}readU16(){this.check(2);const et=encoding$3.readU16(this.data,this.offset);return this.offset+=2,et}readU16BE(){this.check(2);const et=encoding$3.readU16BE(this.data,this.offset);return this.offset+=2,et}readU24(){this.check(3);const et=encoding$3.readU24(this.data,this.offset);return this.offset+=3,et}readU24BE(){this.check(3);const et=encoding$3.readU24BE(this.data,this.offset);return this.offset+=3,et}readU32(){this.check(4);const et=encoding$3.readU32(this.data,this.offset);return this.offset+=4,et}readU32BE(){this.check(4);const et=encoding$3.readU32BE(this.data,this.offset);return this.offset+=4,et}readU40(){this.check(5);const et=encoding$3.readU40(this.data,this.offset);return this.offset+=5,et}readU40BE(){this.check(5);const et=encoding$3.readU40BE(this.data,this.offset);return this.offset+=5,et}readU48(){this.check(6);const et=encoding$3.readU48(this.data,this.offset);return this.offset+=6,et}readU48BE(){this.check(6);const et=encoding$3.readU48BE(this.data,this.offset);return this.offset+=6,et}readU56(){this.check(7);const et=encoding$3.readU56(this.data,this.offset);return this.offset+=7,et}readU56BE(){this.check(7);const et=encoding$3.readU56BE(this.data,this.offset);return this.offset+=7,et}readBigU56(){this.check(7);const et=encoding$3.readBigU56(this.data,this.offset);return this.offset+=7,et}readBigU56BE(){this.check(7);const et=encoding$3.readBigU56BE(this.data,this.offset);return this.offset+=7,et}readU64(){this.check(8);const et=encoding$3.readU64(this.data,this.offset);return this.offset+=8,et}readU64BE(){this.check(8);const et=encoding$3.readU64BE(this.data,this.offset);return this.offset+=8,et}readBigU64(){this.check(8);const et=encoding$3.readBigU64(this.data,this.offset);return this.offset+=8,et}readBigU64BE(){this.check(8);const et=encoding$3.readBigU64BE(this.data,this.offset);return this.offset+=8,et}readBigU128(){this.check(16);const et=encoding$3.readBigU128(this.data,this.offset);return this.offset+=16,et}readBigU128BE(){this.check(16);const et=encoding$3.readBigU128BE(this.data,this.offset);return this.offset+=16,et}readBigU256(){this.check(32);const et=encoding$3.readBigU256(this.data,this.offset);return this.offset+=32,et}readBigU256BE(){this.check(32);const et=encoding$3.readBigU256BE(this.data,this.offset);return this.offset+=32,et}readI8(){this.check(1);const et=encoding$3.readI8(this.data,this.offset);return this.offset+=1,et}readI16(){this.check(2);const et=encoding$3.readI16(this.data,this.offset);return this.offset+=2,et}readI16BE(){this.check(2);const et=encoding$3.readI16BE(this.data,this.offset);return this.offset+=2,et}readI24(){this.check(3);const et=encoding$3.readI24(this.data,this.offset);return this.offset+=3,et}readI24BE(){this.check(3);const et=encoding$3.readI24BE(this.data,this.offset);return this.offset+=3,et}readI32(){this.check(4);const et=encoding$3.readI32(this.data,this.offset);return this.offset+=4,et}readI32BE(){this.check(4);const et=encoding$3.readI32BE(this.data,this.offset);return this.offset+=4,et}readI40(){this.check(5);const et=encoding$3.readI40(this.data,this.offset);return this.offset+=5,et}readI40BE(){this.check(5);const et=encoding$3.readI40BE(this.data,this.offset);return this.offset+=5,et}readI48(){this.check(6);const et=encoding$3.readI48(this.data,this.offset);return this.offset+=6,et}readI48BE(){this.check(6);const et=encoding$3.readI48BE(this.data,this.offset);return this.offset+=6,et}readI56(){this.check(7);const et=encoding$3.readI56(this.data,this.offset);return this.offset+=7,et}readI56BE(){this.check(7);const et=encoding$3.readI56BE(this.data,this.offset);return this.offset+=7,et}readBigI56(){this.check(7);const et=encoding$3.readBigI56(this.data,this.offset);return this.offset+=7,et}readBigI56BE(){this.check(7);const et=encoding$3.readBigI56BE(this.data,this.offset);return this.offset+=7,et}readI64(){this.check(8);const et=encoding$3.readI64(this.data,this.offset);return this.offset+=8,et}readI64BE(){this.check(8);const et=encoding$3.readI64BE(this.data,this.offset);return this.offset+=8,et}readBigI64(){this.check(8);const et=encoding$3.readBigI64(this.data,this.offset);return this.offset+=8,et}readBigI64BE(){this.check(8);const et=encoding$3.readBigI64BE(this.data,this.offset);return this.offset+=8,et}readFloat(){this.check(4);const et=encoding$3.readFloat(this.data,this.offset);return this.offset+=4,et}readFloatBE(){this.check(4);const et=encoding$3.readFloatBE(this.data,this.offset);return this.offset+=4,et}readDouble(){this.check(8);const et=encoding$3.readDouble(this.data,this.offset);return this.offset+=8,et}readDoubleBE(){this.check(8);const et=encoding$3.readDoubleBE(this.data,this.offset);return this.offset+=8,et}readVarint(){const{size:et,value:nt}=encoding$3.readVarint(this.data,this.offset);return this.offset+=et,nt}readVarint2(){const{size:et,value:nt}=encoding$3.readVarint2(this.data,this.offset);return this.offset+=et,nt}readBytes(et,nt=!1){enforce$5(et>>>0===et,"size","integer"),enforce$5(typeof nt=="boolean","zeroCopy","boolean"),this.check(et);let rt;return this.zeroCopy||nt?rt=this.data.slice(this.offset,this.offset+et):(rt=Buffer.allocUnsafeSlow(et),this.data.copy(rt,0,this.offset,this.offset+et)),this.offset+=et,rt}readVarBytes(et=!1){return this.readBytes(this.readVarint(),et)}readChild(et){enforce$5(et>>>0===et,"size","integer"),this.check(et);const nt=this.data.slice(0,this.offset+et),rt=new this.constructor(nt);return rt.offset=this.offset,this.offset+=et,rt}readString(et,nt){nt==null&&(nt="binary"),enforce$5(et>>>0===et,"size","integer"),enforce$5(typeof nt=="string","enc","string"),this.check(et);const rt=this.data.toString(nt,this.offset,this.offset+et);return this.offset+=et,rt}readHash(et){return et?this.readString(32,et):this.readBytes(32)}readVarString(et,nt=0){et==null&&(et="binary"),enforce$5(typeof et=="string","enc","string"),enforce$5(nt>>>0===nt,"limit","integer");const rt=this.readVarint();if(nt!==0&&rt>nt)throw new EncodingError$3(this.offset,"String exceeds limit");return this.readString(rt,et)}readNullString(et){et==null&&(et="binary"),enforce$5(typeof et=="string","enc","string");let nt=this.offset;for(;nt0&&(nt=this.stack[this.stack.length-1]);const rt=this.data.slice(nt,this.offset),it=et.digest?et.digest(rt):et(rt);return encoding$3.readU32(it,0)}verifyChecksum(et){const nt=this.createChecksum(et),rt=this.readU32();if(nt!==rt)throw new EncodingError$3(this.offset,"Checksum mismatch");return nt}};var reader=BufferReader$3;/*! + */const enforce$5=enforce_1,encoding$3=encoding$4,EncodingError$3=error,EMPTY$1=Buffer.alloc(0);let BufferReader$3=class{constructor(et,nt=!1){gw(this,"data");enforce$5(Buffer.isBuffer(et),"data","buffer"),enforce$5(typeof nt=="boolean","zeroCopy","boolean"),this.data=et,this.offset=0,this.zeroCopy=nt,this.stack=[]}check(et){if(this.offset+et>this.data.length)throw new EncodingError$3(this.offset,"Out of bounds read",this.check)}getSize(){return this.data.length}left(){return this.check(0),this.data.length-this.offset}seek(et){if(enforce$5(Number.isSafeInteger(et),"off","integer"),this.offset+et<0)throw new EncodingError$3(this.offset,"Out of bounds read");return this.check(et),this.offset+=et,this}start(){return this.stack.push(this.offset),this.offset}end(){if(this.stack.length===0)throw new Error("Cannot end without a stack item.");const et=this.stack.pop();return this.offset-et}endData(et=!1){if(enforce$5(typeof et=="boolean","zeroCopy","boolean"),this.stack.length===0)throw new Error("Cannot end without a stack item.");const nt=this.stack.pop(),rt=this.offset,it=rt-nt,ot=this.data;if(it===ot.length)return ot;if(this.zeroCopy||et)return ot.slice(nt,rt);const at=Buffer.allocUnsafeSlow(it);return ot.copy(at,0,nt,rt),at}destroy(){return this.data=EMPTY$1,this.offset=0,this.stack.length=0,this}readU8(){this.check(1);const et=this.data[this.offset];return this.offset+=1,et}readU16(){this.check(2);const et=encoding$3.readU16(this.data,this.offset);return this.offset+=2,et}readU16BE(){this.check(2);const et=encoding$3.readU16BE(this.data,this.offset);return this.offset+=2,et}readU24(){this.check(3);const et=encoding$3.readU24(this.data,this.offset);return this.offset+=3,et}readU24BE(){this.check(3);const et=encoding$3.readU24BE(this.data,this.offset);return this.offset+=3,et}readU32(){this.check(4);const et=encoding$3.readU32(this.data,this.offset);return this.offset+=4,et}readU32BE(){this.check(4);const et=encoding$3.readU32BE(this.data,this.offset);return this.offset+=4,et}readU40(){this.check(5);const et=encoding$3.readU40(this.data,this.offset);return this.offset+=5,et}readU40BE(){this.check(5);const et=encoding$3.readU40BE(this.data,this.offset);return this.offset+=5,et}readU48(){this.check(6);const et=encoding$3.readU48(this.data,this.offset);return this.offset+=6,et}readU48BE(){this.check(6);const et=encoding$3.readU48BE(this.data,this.offset);return this.offset+=6,et}readU56(){this.check(7);const et=encoding$3.readU56(this.data,this.offset);return this.offset+=7,et}readU56BE(){this.check(7);const et=encoding$3.readU56BE(this.data,this.offset);return this.offset+=7,et}readBigU56(){this.check(7);const et=encoding$3.readBigU56(this.data,this.offset);return this.offset+=7,et}readBigU56BE(){this.check(7);const et=encoding$3.readBigU56BE(this.data,this.offset);return this.offset+=7,et}readU64(){this.check(8);const et=encoding$3.readU64(this.data,this.offset);return this.offset+=8,et}readU64BE(){this.check(8);const et=encoding$3.readU64BE(this.data,this.offset);return this.offset+=8,et}readBigU64(){this.check(8);const et=encoding$3.readBigU64(this.data,this.offset);return this.offset+=8,et}readBigU64BE(){this.check(8);const et=encoding$3.readBigU64BE(this.data,this.offset);return this.offset+=8,et}readBigU128(){this.check(16);const et=encoding$3.readBigU128(this.data,this.offset);return this.offset+=16,et}readBigU128BE(){this.check(16);const et=encoding$3.readBigU128BE(this.data,this.offset);return this.offset+=16,et}readBigU256(){this.check(32);const et=encoding$3.readBigU256(this.data,this.offset);return this.offset+=32,et}readBigU256BE(){this.check(32);const et=encoding$3.readBigU256BE(this.data,this.offset);return this.offset+=32,et}readI8(){this.check(1);const et=encoding$3.readI8(this.data,this.offset);return this.offset+=1,et}readI16(){this.check(2);const et=encoding$3.readI16(this.data,this.offset);return this.offset+=2,et}readI16BE(){this.check(2);const et=encoding$3.readI16BE(this.data,this.offset);return this.offset+=2,et}readI24(){this.check(3);const et=encoding$3.readI24(this.data,this.offset);return this.offset+=3,et}readI24BE(){this.check(3);const et=encoding$3.readI24BE(this.data,this.offset);return this.offset+=3,et}readI32(){this.check(4);const et=encoding$3.readI32(this.data,this.offset);return this.offset+=4,et}readI32BE(){this.check(4);const et=encoding$3.readI32BE(this.data,this.offset);return this.offset+=4,et}readI40(){this.check(5);const et=encoding$3.readI40(this.data,this.offset);return this.offset+=5,et}readI40BE(){this.check(5);const et=encoding$3.readI40BE(this.data,this.offset);return this.offset+=5,et}readI48(){this.check(6);const et=encoding$3.readI48(this.data,this.offset);return this.offset+=6,et}readI48BE(){this.check(6);const et=encoding$3.readI48BE(this.data,this.offset);return this.offset+=6,et}readI56(){this.check(7);const et=encoding$3.readI56(this.data,this.offset);return this.offset+=7,et}readI56BE(){this.check(7);const et=encoding$3.readI56BE(this.data,this.offset);return this.offset+=7,et}readBigI56(){this.check(7);const et=encoding$3.readBigI56(this.data,this.offset);return this.offset+=7,et}readBigI56BE(){this.check(7);const et=encoding$3.readBigI56BE(this.data,this.offset);return this.offset+=7,et}readI64(){this.check(8);const et=encoding$3.readI64(this.data,this.offset);return this.offset+=8,et}readI64BE(){this.check(8);const et=encoding$3.readI64BE(this.data,this.offset);return this.offset+=8,et}readBigI64(){this.check(8);const et=encoding$3.readBigI64(this.data,this.offset);return this.offset+=8,et}readBigI64BE(){this.check(8);const et=encoding$3.readBigI64BE(this.data,this.offset);return this.offset+=8,et}readFloat(){this.check(4);const et=encoding$3.readFloat(this.data,this.offset);return this.offset+=4,et}readFloatBE(){this.check(4);const et=encoding$3.readFloatBE(this.data,this.offset);return this.offset+=4,et}readDouble(){this.check(8);const et=encoding$3.readDouble(this.data,this.offset);return this.offset+=8,et}readDoubleBE(){this.check(8);const et=encoding$3.readDoubleBE(this.data,this.offset);return this.offset+=8,et}readVarint(){const{size:et,value:nt}=encoding$3.readVarint(this.data,this.offset);return this.offset+=et,nt}readVarint2(){const{size:et,value:nt}=encoding$3.readVarint2(this.data,this.offset);return this.offset+=et,nt}readBytes(et,nt=!1){enforce$5(et>>>0===et,"size","integer"),enforce$5(typeof nt=="boolean","zeroCopy","boolean"),this.check(et);let rt;return this.zeroCopy||nt?rt=this.data.slice(this.offset,this.offset+et):(rt=Buffer.allocUnsafeSlow(et),this.data.copy(rt,0,this.offset,this.offset+et)),this.offset+=et,rt}readVarBytes(et=!1){return this.readBytes(this.readVarint(),et)}readChild(et){enforce$5(et>>>0===et,"size","integer"),this.check(et);const nt=this.data.slice(0,this.offset+et),rt=new this.constructor(nt);return rt.offset=this.offset,this.offset+=et,rt}readString(et,nt){nt==null&&(nt="binary"),enforce$5(et>>>0===et,"size","integer"),enforce$5(typeof nt=="string","enc","string"),this.check(et);const rt=this.data.toString(nt,this.offset,this.offset+et);return this.offset+=et,rt}readHash(et){return et?this.readString(32,et):this.readBytes(32)}readVarString(et,nt=0){et==null&&(et="binary"),enforce$5(typeof et=="string","enc","string"),enforce$5(nt>>>0===nt,"limit","integer");const rt=this.readVarint();if(nt!==0&&rt>nt)throw new EncodingError$3(this.offset,"String exceeds limit");return this.readString(rt,et)}readNullString(et){et==null&&(et="binary"),enforce$5(typeof et=="string","enc","string");let nt=this.offset;for(;nt0&&(nt=this.stack[this.stack.length-1]);const rt=this.data.slice(nt,this.offset),it=et.digest?et.digest(rt):et(rt);return encoding$3.readU32(it,0)}verifyChecksum(et){const nt=this.createChecksum(et),rt=this.readU32();if(nt!==rt)throw new EncodingError$3(this.offset,"Checksum mismatch");return nt}};var reader=BufferReader$3;/*! * writer.js - buffer writer for bcoin * Copyright (c) 2014-2015, Fedor Indutny (MIT License) * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). @@ -546,9 +546,9 @@ PROCEED WITH CAUTION! color: ${colors.GRAY6}; cursor: pointer; z-index: 1; -`,BaseModal=({background:tt="modalBg",children:et,id:nt,hideBg:rt,kind:it,preventOutsideClose:ot,noWrap:at=!1,onClose:st})=>{const{visible:lt,close:ct}=useModal(nt);return lt?jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:jsxRuntimeExports.jsx(Bg,{align:"center",hideBg:rt,justify:"center",onClick:ut=>{ot||(ut.stopPropagation(),ct())},children:jsxRuntimeExports.jsxs(ModalContainer,{background:tt,borderRadius:9,id:nt,kind:it,onClick:ut=>{ut.stopPropagation()},px:at?0:20,py:at?0:20,children:[st&&jsxRuntimeExports.jsx(CloseButton$7,{onClick:st,children:jsxRuntimeExports.jsx(ClearIcon$1,{})}),et]})})}):null},{origin:origin$1,host}=window.location,isDevelopment=origin$1==="http://localhost:3000"||origin$1==="http://localhost:3001"||origin$1==="https://sphinx-jarvis-david.sphinx1.repl.co",getUrlFormEnv=()=>({}).VITE_APP_API_URL,API_URL=getUrlFormEnv()||apiUrlFromSwarmHost()||"https://knowledge-graph.sphinx.chat";console.log("🚀 ~ file: index.ts:12 ~ API_URL:",API_URL);console.log("🚀 ~ file: index.ts:12 ~ getUrlFormEnv:",getUrlFormEnv());const isChileGraph=API_URL.includes("boltwall");function apiUrlFromSwarmHost(){if(host.includes("swarm")&&host.startsWith("nav")){const tt=host.split(".");tt[0]="boltwall";const nt=`https://${tt.join(".")}`;return console.log("API URL:",nt),nt}}const AWS_IMAGE_BUCKET_URL="https://stakwork-uploads.s3.amazonaws.com/",CLOUDFRONT_IMAGE_BUCKET_URL="https://d1gd7b7slyku8k.cloudfront.net/",GRAPH_FOG_COLOR="blue",GRAPH_GROUND_COLOR=13421772,GRAPH_LIGHT_INTENSITY=.8,BOOST_SUCCESS="Boosted successfully",BOOST_ERROR_BUDGET="Boost failed, insufficient budget",NODE_ADD_SUCCESS="Submitted!",NODE_ADD_ERROR="Submission failed, please try again.",NODE_RELATIVE_HIGHLIGHT_COLORS={children:{nodeColor:"green",segmentColor:4063109},guests:{nodeColor:"purple",segmentColor:14504191},topics:{nodeColor:"purple",segmentColor:5273842},pathway:{nodeColor:"#ffffff",segmentColor:16777215}},LINK="link",TWITTER_HANDLE="twitter_handle",GITHUB_REPOSITORY="github_repository",YOUTUBE_CHANNEL="youtube_channel",WEB_PAGE="web_page",RSS="rss",TWITTER_SOURCE="tweet",TOPIC="topic",DOCUMENT="document",isE2E=!!{}.VITE_APP_IS_E2E,request=async(tt,et)=>{const nt=await fetch(tt,et);if(!nt.ok)throw nt;return nt.json()},api={delete:(tt,et)=>request(`${API_URL}${tt}`,{headers:{...et,"Content-Type":"application/json"},method:"DELETE"}),get:(tt,et)=>request(`${API_URL}${tt}`,et?{headers:et}:void 0),post:(tt,et,nt)=>request(`${API_URL}${tt}`,{body:et,headers:{...nt,"Content-Type":"application/json"},method:"POST"}),put:(tt,et,nt)=>request(`${API_URL}${tt}`,{body:et,headers:{...nt,"Content-Type":"application/json"},method:"PUT"})},defaultParams={skip:"0",limit:"500"},getRadarData=async(tt=defaultParams)=>await api.get(`/radar?${new URLSearchParams({...defaultParams,...tt}).toString()}`),getTopicsData=async(tt=defaultParams)=>await api.get(`/topics?${new URLSearchParams({...defaultParams,...tt}).toString()}`),getAboutData=async()=>await api.get("/about"),postAboutData=async tt=>await api.post("/about",JSON.stringify(tt)),triggerRadarJob=async()=>api.get("/radar/trigger-job"),putRadarData=async(tt,et)=>await api.put(`/radar/${tt}`,JSON.stringify(et)),putNodeData=async tt=>await api.put("/node",JSON.stringify(tt)),approveRadarData=async(tt,et)=>await api.put(`/radar/${tt}/approve`,JSON.stringify({approve:"True",pubkey:et})),deleteRadarData=async tt=>await api.delete(`/radar/${tt}`),defaultData$9={isAdmin:!1,pubKey:"",budget:0},useUserStore=react(tt=>({...defaultData$9,setIsAdmin:et=>tt({isAdmin:et}),setPubKey:et=>tt({pubKey:et}),setBudget:et=>tt({budget:et})})),getLSat=async()=>{try{const tt=localStorage.getItem("lsat");if(tt){const nt=JSON.parse(tt);return lsatToken(nt.macaroon,nt.preimage)}if(await distExports$1.enable()){const nt=await distExports$1.getLsat();return nt.macaroon?(localStorage.setItem("lsat",JSON.stringify({macaroon:nt.macaroon,identifier:nt.identifier,preimage:nt.preimage})),lsatToken(nt.macaroon,nt.preimage)):""}return""}catch(tt){return console.warn(tt),""}};function lsatToken(tt,et){return`LSAT ${tt}:${et}`}var lib$2={},client={},errors={},__extends$1=commonjsGlobal&&commonjsGlobal.__extends||function(){var tt=function(et,nt){return tt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(rt,it){rt.__proto__=it}||function(rt,it){for(var ot in it)Object.prototype.hasOwnProperty.call(it,ot)&&(rt[ot]=it[ot])},tt(et,nt)};return function(et,nt){if(typeof nt!="function"&&nt!==null)throw new TypeError("Class extends value "+String(nt)+" is not a constructor or null");tt(et,nt);function rt(){this.constructor=et}et.prototype=nt===null?Object.create(nt):(rt.prototype=nt.prototype,new rt)}}();Object.defineProperty(errors,"__esModule",{value:!0});errors.InternalError=errors.InvalidDataError=errors.RoutingError=errors.UnsupportedMethodError=errors.ConnectionError=errors.RejectionError=errors.MissingProviderError=void 0;function fixError(tt,et,nt){if(Object.setPrototypeOf(tt,nt.prototype),et===nt)if(tt.name=et.name,Error.captureStackTrace)Error.captureStackTrace(tt,nt);else{var rt=new Error(tt.message).stack;rt&&(tt.stack=fixStack(rt,"new ".concat(et.name)))}}function fixStack(tt,et){if(!tt||!et)return tt;var nt=new RegExp("\\s+at\\s".concat(et,"\\s")),rt=tt.split(` +`,BaseModal=({background:tt="modalBg",children:et,id:nt,hideBg:rt,kind:it,preventOutsideClose:ot,noWrap:at=!1,onClose:st})=>{const{visible:lt,close:ct}=useModal(nt);return lt?jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:jsxRuntimeExports.jsx(Bg,{align:"center",hideBg:rt,justify:"center",onClick:ut=>{ot||(ut.stopPropagation(),ct())},children:jsxRuntimeExports.jsxs(ModalContainer,{background:tt,borderRadius:9,id:nt,kind:it,onClick:ut=>{ut.stopPropagation()},px:at?0:20,py:at?0:20,children:[st&&jsxRuntimeExports.jsx(CloseButton$7,{onClick:st,children:jsxRuntimeExports.jsx(ClearIcon$1,{})}),et]})})}):null},{origin:origin$1,host}=window.location,isDevelopment=origin$1==="http://localhost:3000"||origin$1==="http://localhost:3001"||origin$1==="https://sphinx-jarvis-david.sphinx1.repl.co",getUrlFormEnv=()=>({}).VITE_APP_API_URL,API_URL=getUrlFormEnv()||apiUrlFromSwarmHost()||"https://knowledge-graph.sphinx.chat";console.log("🚀 ~ file: index.ts:12 ~ API_URL:",API_URL);console.log("🚀 ~ file: index.ts:12 ~ getUrlFormEnv:",getUrlFormEnv());const isChileGraph=API_URL.includes("boltwall");function apiUrlFromSwarmHost(){if(host.includes("swarm")&&host.startsWith("nav")){const tt=host.split(".");tt[0]="boltwall";const nt=`https://${tt.join(".")}`;return console.log("API URL:",nt),nt}}const AWS_IMAGE_BUCKET_URL="https://stakwork-uploads.s3.amazonaws.com/",CLOUDFRONT_IMAGE_BUCKET_URL="https://d1gd7b7slyku8k.cloudfront.net/",GRAPH_FOG_COLOR="blue",GRAPH_GROUND_COLOR=13421772,GRAPH_LIGHT_INTENSITY=.8,BOOST_SUCCESS="Boosted successfully",BOOST_ERROR_BUDGET="Boost failed, insufficient budget",NODE_ADD_SUCCESS="Submitted!",NODE_ADD_ERROR="Submission failed, please try again.",DEFAULT$1="default",DATE$1="date",EDGES="edges",NODE_RELATIVE_HIGHLIGHT_COLORS={children:{nodeColor:"green",segmentColor:4063109},guests:{nodeColor:"purple",segmentColor:14504191},topics:{nodeColor:"purple",segmentColor:5273842},pathway:{nodeColor:"#ffffff",segmentColor:16777215}},LINK="link",TWITTER_HANDLE="twitter_handle",GITHUB_REPOSITORY="github_repository",YOUTUBE_CHANNEL="youtube_channel",WEB_PAGE="web_page",RSS="rss",TWITTER_SOURCE="tweet",TOPIC="topic",DOCUMENT="document",isE2E=!!{}.VITE_APP_IS_E2E,request=async(tt,et)=>{const nt=await fetch(tt,et);if(!nt.ok)throw nt;return nt.json()},api={delete:(tt,et)=>request(`${API_URL}${tt}`,{headers:{...et,"Content-Type":"application/json"},method:"DELETE"}),get:(tt,et)=>request(`${API_URL}${tt}`,et?{headers:et}:void 0),post:(tt,et,nt)=>request(`${API_URL}${tt}`,{body:et,headers:{...nt,"Content-Type":"application/json"},method:"POST"}),put:(tt,et,nt)=>request(`${API_URL}${tt}`,{body:et,headers:{...nt,"Content-Type":"application/json"},method:"PUT"})},defaultParams={skip:"0",limit:"500"},getRadarData=async(tt=defaultParams)=>await api.get(`/radar?${new URLSearchParams({...defaultParams,...tt}).toString()}`),getTopicsData=async(tt=defaultParams)=>await api.get(`/topics?${new URLSearchParams({...defaultParams,...tt}).toString()}`),getAboutData=async()=>await api.get("/about"),postAboutData=async tt=>await api.post("/about",JSON.stringify(tt)),triggerRadarJob=async()=>api.get("/radar/trigger-job"),putRadarData=async(tt,et)=>await api.put(`/radar/${tt}`,JSON.stringify(et)),putNodeData=async tt=>await api.put("/node",JSON.stringify(tt)),approveRadarData=async(tt,et)=>await api.put(`/radar/${tt}/approve`,JSON.stringify({approve:"True",pubkey:et})),deleteRadarData=async tt=>await api.delete(`/radar/${tt}`),defaultData$9={isAdmin:!1,pubKey:"",budget:0},useUserStore=react(tt=>({...defaultData$9,setIsAdmin:et=>tt({isAdmin:et}),setPubKey:et=>tt({pubKey:et}),setBudget:et=>tt({budget:et})})),getLSat=async()=>{try{const tt=localStorage.getItem("lsat");if(tt){const nt=JSON.parse(tt);return lsatToken(nt.macaroon,nt.preimage)}if(await distExports$1.enable()){const nt=await distExports$1.getLsat();return nt.macaroon?(localStorage.setItem("lsat",JSON.stringify({macaroon:nt.macaroon,identifier:nt.identifier,preimage:nt.preimage})),lsatToken(nt.macaroon,nt.preimage)):""}return""}catch(tt){return console.warn(tt),""}};function lsatToken(tt,et){return`LSAT ${tt}:${et}`}var lib$2={},client={},errors={},__extends$1=commonjsGlobal&&commonjsGlobal.__extends||function(){var tt=function(et,nt){return tt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(rt,it){rt.__proto__=it}||function(rt,it){for(var ot in it)Object.prototype.hasOwnProperty.call(it,ot)&&(rt[ot]=it[ot])},tt(et,nt)};return function(et,nt){if(typeof nt!="function"&&nt!==null)throw new TypeError("Class extends value "+String(nt)+" is not a constructor or null");tt(et,nt);function rt(){this.constructor=et}et.prototype=nt===null?Object.create(nt):(rt.prototype=nt.prototype,new rt)}}();Object.defineProperty(errors,"__esModule",{value:!0});errors.InternalError=errors.InvalidDataError=errors.RoutingError=errors.UnsupportedMethodError=errors.ConnectionError=errors.RejectionError=errors.MissingProviderError=void 0;function fixError(tt,et,nt){if(Object.setPrototypeOf(tt,nt.prototype),et===nt)if(tt.name=et.name,Error.captureStackTrace)Error.captureStackTrace(tt,nt);else{var rt=new Error(tt.message).stack;rt&&(tt.stack=fixStack(rt,"new ".concat(et.name)))}}function fixStack(tt,et){if(!tt||!et)return tt;var nt=new RegExp("\\s+at\\s".concat(et,"\\s")),rt=tt.split(` `),it=rt.filter(function(ot){return!ot.match(nt)});return it.join(` -`)}var MissingProviderError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.MissingProviderError=MissingProviderError;var RejectionError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.RejectionError=RejectionError;var ConnectionError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.ConnectionError=ConnectionError;var UnsupportedMethodError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.UnsupportedMethodError=UnsupportedMethodError;var RoutingError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.RoutingError=RoutingError;var InvalidDataError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.InvalidDataError=InvalidDataError;var InternalError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.InternalError=InternalError;Object.defineProperty(client,"__esModule",{value:!0});client.requestProvider=void 0;var errors_1=errors;function requestProvider(tt){return new Promise(function(et,nt){if(typeof window>"u")return nt(new Error("Must be called in a browser context"));var rt=window.webln;if(!rt)return nt(new errors_1.MissingProviderError("Your browser has no WebLN provider"));rt.enable().then(function(){return et(rt)}).catch(function(it){return nt(it)})})}client.requestProvider=requestProvider;var provider={};Object.defineProperty(provider,"__esModule",{value:!0});(function(tt){var et=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(rt,it,ot,at){at===void 0&&(at=ot);var st=Object.getOwnPropertyDescriptor(it,ot);(!st||("get"in st?!it.__esModule:st.writable||st.configurable))&&(st={enumerable:!0,get:function(){return it[ot]}}),Object.defineProperty(rt,at,st)}:function(rt,it,ot,at){at===void 0&&(at=ot),rt[at]=it[ot]}),nt=commonjsGlobal&&commonjsGlobal.__exportStar||function(rt,it){for(var ot in rt)ot!=="default"&&!Object.prototype.hasOwnProperty.call(it,ot)&&et(it,rt,ot)};Object.defineProperty(tt,"__esModule",{value:!0}),nt(client,tt),nt(provider,tt),nt(errors,tt)})(lib$2);async function payLsat(tt){if(await distExports$1.enable()){const it=localStorage.getItem("lsat");if(it){localStorage.removeItem("lsat");const at=JSON.parse(it);await distExports$1.updateLsat(at.identifier,"expired")}const ot=await distExports$1.saveLsat(tt.invoice,tt.baseMacaroon,window.location.host);ot.success===!1&&await distExports$1.topup(),localStorage.setItem("lsat",JSON.stringify({macaroon:tt.baseMacaroon,identifier:tt.id,preimage:ot.lsat.split(":")[1]}));return}localStorage.removeItem("lsat");const rt=await(await lib$2.requestProvider()).sendPayment(tt.invoice);localStorage.setItem("lsat",JSON.stringify({macaroon:tt.baseMacaroon,identifier:tt.id,preimage:rt.preimage}))}async function updateBudget(tt){await distExports$1.enable();const et=await distExports$1.getBudget();(et==null?void 0:et.msg)==="Invalid Action"?tt(null):et!=null&&et.budget&&tt(et.budget)}const executeIfTetsRunning=tt=>{isE2E&&tt()};function executeIfProd(tt){return isDevelopment||isE2E?null:tt()}function addToGlobalForE2e(tt,et){executeIfTetsRunning(()=>{window.e2e||(window.e2e={}),window.e2e[et]=tt})}const E2E=()=>{const tt=useUserStore();return reactExports.useEffect(()=>{isE2E&&(console.log({isE2E}),addToGlobalForE2e(tt,"userStore"))},[tt]),jsxRuntimeExports.jsx("div",{id:"e2e-check"})},E2ETests=reactExports.memo(()=>isE2E?jsxRuntimeExports.jsx(E2E,{}):null);function timeToMilliseconds(tt){const[et,nt,rt]=tt.split(":").map(Number);return Number((et*60*60*1e3+nt*60*1e3+rt*1e3).toFixed(6))}/** +`)}var MissingProviderError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.MissingProviderError=MissingProviderError;var RejectionError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.RejectionError=RejectionError;var ConnectionError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.ConnectionError=ConnectionError;var UnsupportedMethodError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.UnsupportedMethodError=UnsupportedMethodError;var RoutingError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.RoutingError=RoutingError;var InvalidDataError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.InvalidDataError=InvalidDataError;var InternalError=function(tt){__extends$1(et,tt);function et(nt){var rt=this.constructor,it=tt.call(this,nt)||this;return fixError(it,rt,et),it}return et}(Error);errors.InternalError=InternalError;Object.defineProperty(client,"__esModule",{value:!0});client.requestProvider=void 0;var errors_1=errors;function requestProvider(tt){return new Promise(function(et,nt){if(typeof window>"u")return nt(new Error("Must be called in a browser context"));var rt=window.webln;if(!rt)return nt(new errors_1.MissingProviderError("Your browser has no WebLN provider"));rt.enable().then(function(){return et(rt)}).catch(function(it){return nt(it)})})}client.requestProvider=requestProvider;var provider={};Object.defineProperty(provider,"__esModule",{value:!0});(function(tt){var et=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(rt,it,ot,at){at===void 0&&(at=ot);var st=Object.getOwnPropertyDescriptor(it,ot);(!st||("get"in st?!it.__esModule:st.writable||st.configurable))&&(st={enumerable:!0,get:function(){return it[ot]}}),Object.defineProperty(rt,at,st)}:function(rt,it,ot,at){at===void 0&&(at=ot),rt[at]=it[ot]}),nt=commonjsGlobal&&commonjsGlobal.__exportStar||function(rt,it){for(var ot in rt)ot!=="default"&&!Object.prototype.hasOwnProperty.call(it,ot)&&et(it,rt,ot)};Object.defineProperty(tt,"__esModule",{value:!0}),nt(client,tt),nt(provider,tt),nt(errors,tt)})(lib$2);async function payLsat(tt){if(await distExports$1.enable()){const it=localStorage.getItem("lsat");if(it){localStorage.removeItem("lsat");const at=JSON.parse(it);await distExports$1.updateLsat(at.identifier,"expired")}const ot=await distExports$1.saveLsat(tt.invoice,tt.baseMacaroon,window.location.host);ot.success===!1&&await distExports$1.topup(),localStorage.setItem("lsat",JSON.stringify({macaroon:tt.baseMacaroon,identifier:tt.id,preimage:ot.lsat.split(":")[1]}));return}localStorage.removeItem("lsat");const rt=await(await lib$2.requestProvider()).sendPayment(tt.invoice);localStorage.setItem("lsat",JSON.stringify({macaroon:tt.baseMacaroon,identifier:tt.id,preimage:rt.preimage}))}async function updateBudget(tt){const et=await distExports$1.getBudget();(et==null?void 0:et.msg)==="Invalid Action"?tt(null):et!=null&&et.budget&&tt(et.budget)}const executeIfTetsRunning=tt=>{isE2E&&tt()};function executeIfProd(tt){return isDevelopment||isE2E?null:tt()}function addToGlobalForE2e(tt,et){executeIfTetsRunning(()=>{window.e2e||(window.e2e={}),window.e2e[et]=tt})}const E2E=()=>{const tt=useUserStore();return reactExports.useEffect(()=>{isE2E&&(console.log({isE2E}),addToGlobalForE2e(tt,"userStore"))},[tt]),jsxRuntimeExports.jsx("div",{id:"e2e-check"})},E2ETests=reactExports.memo(()=>isE2E?jsxRuntimeExports.jsx(E2E,{}):null);function timeToMilliseconds(tt){const[et,nt,rt]=tt.split(":").map(Number);return Number((et*60*60*1e3+nt*60*1e3+rt*1e3).toFixed(6))}/** * @license * Copyright 2010-2022 Three.js Authors * SPDX-License-Identifier: MIT @@ -3688,7 +3688,7 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function WebGLShadowMap(tt,et,nt){let rt=new Frustum;const it=new Vector2,ot=new Vector2,at=new Vector4,st=new MeshDepthMaterial({depthPacking:RGBADepthPacking}),lt=new MeshDistanceMaterial,ct={},ut=nt.maxTextureSize,ht={0:BackSide,1:FrontSide,2:DoubleSide},dt=new ShaderMaterial({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Vector2},radius:{value:4}},vertexShader:vertex,fragmentShader:fragment$h}),pt=dt.clone();pt.defines.HORIZONTAL_PASS=1;const mt=new BufferGeometry;mt.setAttribute("position",new BufferAttribute(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const gt=new Mesh(mt,dt),yt=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=PCFShadowMap,this.render=function(kt,St,Tt){if(yt.enabled===!1||yt.autoUpdate===!1&&yt.needsUpdate===!1||kt.length===0)return;const At=tt.getRenderTarget(),Et=tt.getActiveCubeFace(),$t=tt.getActiveMipmapLevel(),Dt=tt.state;Dt.setBlending(NoBlending),Dt.buffers.color.setClear(1,1,1,1),Dt.buffers.depth.setTest(!0),Dt.setScissorTest(!1);for(let jt=0,Pt=kt.length;jtut||it.y>ut)&&(it.x>ut&&(ot.x=Math.floor(ut/It.x),it.x=ot.x*It.x,wt.mapSize.x=ot.x),it.y>ut&&(ot.y=Math.floor(ut/It.y),it.y=ot.y*It.y,wt.mapSize.y=ot.y)),wt.map===null){const Wt=this.type!==VSMShadowMap?{minFilter:NearestFilter,magFilter:NearestFilter}:{};wt.map=new WebGLRenderTarget(it.x,it.y,Wt),wt.map.texture.name=Ct.name+".shadowMap",wt.camera.updateProjectionMatrix()}tt.setRenderTarget(wt.map),tt.clear();const Ot=wt.getViewportCount();for(let Wt=0;Wt0){const Pt=Dt.uuid,Ct=St.uuid;let wt=ct[Pt];wt===void 0&&(wt={},ct[Pt]=wt);let It=wt[Ct];It===void 0&&(It=Dt.clone(),wt[Ct]=It),Dt=It}return Dt.visible=St.visible,Dt.wireframe=St.wireframe,$t===VSMShadowMap?Dt.side=St.shadowSide!==null?St.shadowSide:St.side:Dt.side=St.shadowSide!==null?St.shadowSide:ht[St.side],Dt.alphaMap=St.alphaMap,Dt.alphaTest=St.alphaTest,Dt.clipShadows=St.clipShadows,Dt.clippingPlanes=St.clippingPlanes,Dt.clipIntersection=St.clipIntersection,Dt.displacementMap=St.displacementMap,Dt.displacementScale=St.displacementScale,Dt.displacementBias=St.displacementBias,Dt.wireframeLinewidth=St.wireframeLinewidth,Dt.linewidth=St.linewidth,Tt.isPointLight===!0&&Dt.isMeshDistanceMaterial===!0&&(Dt.referencePosition.setFromMatrixPosition(Tt.matrixWorld),Dt.nearDistance=At,Dt.farDistance=Et),Dt}function xt(kt,St,Tt,At,Et){if(kt.visible===!1)return;if(kt.layers.test(St.layers)&&(kt.isMesh||kt.isLine||kt.isPoints)&&(kt.castShadow||kt.receiveShadow&&Et===VSMShadowMap)&&(!kt.frustumCulled||rt.intersectsObject(kt))){kt.modelViewMatrix.multiplyMatrices(Tt.matrixWorldInverse,kt.matrixWorld);const jt=et.update(kt),Pt=kt.material;if(Array.isArray(Pt)){const Ct=jt.groups;for(let wt=0,It=Ct.length;wt=1):zt.indexOf("OpenGL ES")!==-1&&(Wt=parseFloat(/^OpenGL ES (\d)/.exec(zt)[1]),Ot=Wt>=2);let Ft=null,Nt={};const Ut=tt.getParameter(3088),Mt=tt.getParameter(2978),Ht=new Vector4().fromArray(Ut),en=new Vector4().fromArray(Mt);function sn(zn,Jn,Hn){const pr=new Uint8Array(4),fr=tt.createTexture();tt.bindTexture(zn,fr),tt.texParameteri(zn,10241,9728),tt.texParameteri(zn,10240,9728);for(let xr=0;xrkn||wn.height>kn)&&(Dn=kn/Math.max(wn.width,wn.height)),Dn<1||fn===!0)if(typeof HTMLImageElement<"u"&&wn instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&wn instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&wn instanceof ImageBitmap){const un=fn?floorPowerOfTwo:Math.floor,Zt=un(Dn*wn.width),Xt=un(Dn*wn.height);gt===void 0&&(gt=vt(Zt,Xt));const Sn=pn?vt(Zt,Xt):gt;return Sn.width=Zt,Sn.height=Xt,Sn.getContext("2d").drawImage(wn,0,0,Zt,Xt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+wn.width+"x"+wn.height+") to ("+Zt+"x"+Xt+")."),Sn}else return"data"in wn&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+wn.width+"x"+wn.height+")."),wn;return wn}function kt(wn){return isPowerOfTwo(wn.width)&&isPowerOfTwo(wn.height)}function St(wn){return st?!1:wn.wrapS!==ClampToEdgeWrapping||wn.wrapT!==ClampToEdgeWrapping||wn.minFilter!==NearestFilter&&wn.minFilter!==LinearFilter}function Tt(wn,fn){return wn.generateMipmaps&&fn&&wn.minFilter!==NearestFilter&&wn.minFilter!==LinearFilter}function At(wn){tt.generateMipmap(wn)}function Et(wn,fn,pn,kn,Dn=!1){if(st===!1)return fn;if(wn!==null){if(tt[wn]!==void 0)return tt[wn];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+wn+"'")}let un=fn;return fn===6403&&(pn===5126&&(un=33326),pn===5131&&(un=33325),pn===5121&&(un=33321)),fn===33319&&(pn===5126&&(un=33328),pn===5131&&(un=33327),pn===5121&&(un=33323)),fn===6408&&(pn===5126&&(un=34836),pn===5131&&(un=34842),pn===5121&&(un=kn===sRGBEncoding&&Dn===!1?35907:32856),pn===32819&&(un=32854),pn===32820&&(un=32855)),(un===33325||un===33326||un===33327||un===33328||un===34842||un===34836)&&et.get("EXT_color_buffer_float"),un}function $t(wn,fn,pn){return Tt(wn,pn)===!0||wn.isFramebufferTexture&&wn.minFilter!==NearestFilter&&wn.minFilter!==LinearFilter?Math.log2(Math.max(fn.width,fn.height))+1:wn.mipmaps!==void 0&&wn.mipmaps.length>0?wn.mipmaps.length:wn.isCompressedTexture&&Array.isArray(wn.image)?fn.mipmaps.length:1}function Dt(wn){return wn===NearestFilter||wn===NearestMipmapNearestFilter||wn===NearestMipmapLinearFilter?9728:9729}function jt(wn){const fn=wn.target;fn.removeEventListener("dispose",jt),Ct(fn),fn.isVideoTexture&&mt.delete(fn)}function Pt(wn){const fn=wn.target;fn.removeEventListener("dispose",Pt),It(fn)}function Ct(wn){const fn=rt.get(wn);if(fn.__webglInit===void 0)return;const pn=wn.source,kn=yt.get(pn);if(kn){const Dn=kn[fn.__cacheKey];Dn.usedTimes--,Dn.usedTimes===0&&wt(wn),Object.keys(kn).length===0&&yt.delete(pn)}rt.remove(wn)}function wt(wn){const fn=rt.get(wn);tt.deleteTexture(fn.__webglTexture);const pn=wn.source,kn=yt.get(pn);delete kn[fn.__cacheKey],at.memory.textures--}function It(wn){const fn=wn.texture,pn=rt.get(wn),kn=rt.get(fn);if(kn.__webglTexture!==void 0&&(tt.deleteTexture(kn.__webglTexture),at.memory.textures--),wn.depthTexture&&wn.depthTexture.dispose(),wn.isWebGLCubeRenderTarget)for(let Dn=0;Dn<6;Dn++)tt.deleteFramebuffer(pn.__webglFramebuffer[Dn]),pn.__webglDepthbuffer&&tt.deleteRenderbuffer(pn.__webglDepthbuffer[Dn]);else{if(tt.deleteFramebuffer(pn.__webglFramebuffer),pn.__webglDepthbuffer&&tt.deleteRenderbuffer(pn.__webglDepthbuffer),pn.__webglMultisampledFramebuffer&&tt.deleteFramebuffer(pn.__webglMultisampledFramebuffer),pn.__webglColorRenderbuffer)for(let Dn=0;Dn=lt&&console.warn("THREE.WebGLTextures: Trying to use "+wn+" texture units while this GPU supports only "+lt),Ot+=1,wn}function Ft(wn){const fn=[];return fn.push(wn.wrapS),fn.push(wn.wrapT),fn.push(wn.magFilter),fn.push(wn.minFilter),fn.push(wn.anisotropy),fn.push(wn.internalFormat),fn.push(wn.format),fn.push(wn.type),fn.push(wn.generateMipmaps),fn.push(wn.premultiplyAlpha),fn.push(wn.flipY),fn.push(wn.unpackAlignment),fn.push(wn.encoding),fn.join()}function Nt(wn,fn){const pn=rt.get(wn);if(wn.isVideoTexture&&In(wn),wn.isRenderTargetTexture===!1&&wn.version>0&&pn.__version!==wn.version){const kn=wn.image;if(kn===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(kn.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{nn(pn,wn,fn);return}}nt.activeTexture(33984+fn),nt.bindTexture(3553,pn.__webglTexture)}function Ut(wn,fn){const pn=rt.get(wn);if(wn.version>0&&pn.__version!==wn.version){nn(pn,wn,fn);return}nt.activeTexture(33984+fn),nt.bindTexture(35866,pn.__webglTexture)}function Mt(wn,fn){const pn=rt.get(wn);if(wn.version>0&&pn.__version!==wn.version){nn(pn,wn,fn);return}nt.activeTexture(33984+fn),nt.bindTexture(32879,pn.__webglTexture)}function Ht(wn,fn){const pn=rt.get(wn);if(wn.version>0&&pn.__version!==wn.version){hn(pn,wn,fn);return}nt.activeTexture(33984+fn),nt.bindTexture(34067,pn.__webglTexture)}const en={[RepeatWrapping]:10497,[ClampToEdgeWrapping]:33071,[MirroredRepeatWrapping]:33648},sn={[NearestFilter]:9728,[NearestMipmapNearestFilter]:9984,[NearestMipmapLinearFilter]:9986,[LinearFilter]:9729,[LinearMipmapNearestFilter]:9985,[LinearMipmapLinearFilter]:9987};function Kt(wn,fn,pn){if(pn?(tt.texParameteri(wn,10242,en[fn.wrapS]),tt.texParameteri(wn,10243,en[fn.wrapT]),(wn===32879||wn===35866)&&tt.texParameteri(wn,32882,en[fn.wrapR]),tt.texParameteri(wn,10240,sn[fn.magFilter]),tt.texParameteri(wn,10241,sn[fn.minFilter])):(tt.texParameteri(wn,10242,33071),tt.texParameteri(wn,10243,33071),(wn===32879||wn===35866)&&tt.texParameteri(wn,32882,33071),(fn.wrapS!==ClampToEdgeWrapping||fn.wrapT!==ClampToEdgeWrapping)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),tt.texParameteri(wn,10240,Dt(fn.magFilter)),tt.texParameteri(wn,10241,Dt(fn.minFilter)),fn.minFilter!==NearestFilter&&fn.minFilter!==LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),et.has("EXT_texture_filter_anisotropic")===!0){const kn=et.get("EXT_texture_filter_anisotropic");if(fn.type===FloatType&&et.has("OES_texture_float_linear")===!1||st===!1&&fn.type===HalfFloatType&&et.has("OES_texture_half_float_linear")===!1)return;(fn.anisotropy>1||rt.get(fn).__currentAnisotropy)&&(tt.texParameterf(wn,kn.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(fn.anisotropy,it.getMaxAnisotropy())),rt.get(fn).__currentAnisotropy=fn.anisotropy)}}function rn(wn,fn){let pn=!1;wn.__webglInit===void 0&&(wn.__webglInit=!0,fn.addEventListener("dispose",jt));const kn=fn.source;let Dn=yt.get(kn);Dn===void 0&&(Dn={},yt.set(kn,Dn));const un=Ft(fn);if(un!==wn.__cacheKey){Dn[un]===void 0&&(Dn[un]={texture:tt.createTexture(),usedTimes:0},at.memory.textures++,pn=!0),Dn[un].usedTimes++;const Zt=Dn[wn.__cacheKey];Zt!==void 0&&(Dn[wn.__cacheKey].usedTimes--,Zt.usedTimes===0&&wt(fn)),wn.__cacheKey=un,wn.__webglTexture=Dn[un].texture}return pn}function nn(wn,fn,pn){let kn=3553;fn.isDataArrayTexture&&(kn=35866),fn.isData3DTexture&&(kn=32879);const Dn=rn(wn,fn),un=fn.source;if(nt.activeTexture(33984+pn),nt.bindTexture(kn,wn.__webglTexture),un.version!==un.__currentVersion||Dn===!0){tt.pixelStorei(37440,fn.flipY),tt.pixelStorei(37441,fn.premultiplyAlpha),tt.pixelStorei(3317,fn.unpackAlignment),tt.pixelStorei(37443,0);const Zt=St(fn)&&kt(fn.image)===!1;let Xt=xt(fn.image,Zt,!1,ut);Xt=An(fn,Xt);const Sn=kt(Xt)||st,Rn=ot.convert(fn.format,fn.encoding);let jn=ot.convert(fn.type),On=Et(fn.internalFormat,Rn,jn,fn.encoding,fn.isVideoTexture);Kt(kn,fn,Sn);let Zn;const Vn=fn.mipmaps,qn=st&&fn.isVideoTexture!==!0,zn=un.__currentVersion===void 0||Dn===!0,Jn=$t(fn,Xt,Sn);if(fn.isDepthTexture)On=6402,st?fn.type===FloatType?On=36012:fn.type===UnsignedIntType?On=33190:fn.type===UnsignedInt248Type?On=35056:On=33189:fn.type===FloatType&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),fn.format===DepthFormat&&On===6402&&fn.type!==UnsignedShortType&&fn.type!==UnsignedIntType&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),fn.type=UnsignedIntType,jn=ot.convert(fn.type)),fn.format===DepthStencilFormat&&On===6402&&(On=34041,fn.type!==UnsignedInt248Type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),fn.type=UnsignedInt248Type,jn=ot.convert(fn.type))),zn&&(qn?nt.texStorage2D(3553,1,On,Xt.width,Xt.height):nt.texImage2D(3553,0,On,Xt.width,Xt.height,0,Rn,jn,null));else if(fn.isDataTexture)if(Vn.length>0&&Sn){qn&&zn&&nt.texStorage2D(3553,Jn,On,Vn[0].width,Vn[0].height);for(let Hn=0,pr=Vn.length;Hn>=1,pr>>=1}}else if(Vn.length>0&&Sn){qn&&zn&&nt.texStorage2D(3553,Jn,On,Vn[0].width,Vn[0].height);for(let Hn=0,pr=Vn.length;Hn0&&zn++,nt.texStorage2D(34067,zn,Zn,Xt[0].width,Xt[0].height));for(let Hn=0;Hn<6;Hn++)if(Zt){Vn?nt.texSubImage2D(34069+Hn,0,0,0,Xt[Hn].width,Xt[Hn].height,jn,On,Xt[Hn].data):nt.texImage2D(34069+Hn,0,Zn,Xt[Hn].width,Xt[Hn].height,0,jn,On,Xt[Hn].data);for(let pr=0;pr0&&mn(wn)===!1){const Xt=un?fn:[fn];pn.__webglMultisampledFramebuffer=tt.createFramebuffer(),pn.__webglColorRenderbuffer=[],nt.bindFramebuffer(36160,pn.__webglMultisampledFramebuffer);for(let Sn=0;Sn0&&mn(wn)===!1){const fn=wn.isWebGLMultipleRenderTargets?wn.texture:[wn.texture],pn=wn.width,kn=wn.height;let Dn=16384;const un=[],Zt=wn.stencilBuffer?33306:36096,Xt=rt.get(wn),Sn=wn.isWebGLMultipleRenderTargets===!0;if(Sn)for(let Rn=0;Rn0&&et.has("WEBGL_multisampled_render_to_texture")===!0&&fn.__useRenderToTexture!==!1}function In(wn){const fn=at.render.frame;mt.get(wn)!==fn&&(mt.set(wn,fn),wn.update())}function An(wn,fn){const pn=wn.encoding,kn=wn.format,Dn=wn.type;return wn.isCompressedTexture===!0||wn.isVideoTexture===!0||wn.format===_SRGBAFormat||pn!==LinearEncoding&&(pn===sRGBEncoding?st===!1?et.has("EXT_sRGB")===!0&&kn===RGBAFormat?(wn.format=_SRGBAFormat,wn.minFilter=LinearFilter,wn.generateMipmaps=!1):fn=ImageUtils.sRGBToLinear(fn):(kn!==RGBAFormat||Dn!==UnsignedByteType)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",pn)),fn}this.allocateTextureUnit=zt,this.resetTextureUnits=Wt,this.setTexture2D=Nt,this.setTexture2DArray=Ut,this.setTexture3D=Mt,this.setTextureCube=Ht,this.rebindTextures=Pn,this.setupRenderTarget=$n,this.updateRenderTargetMipmap=Nn,this.updateMultisampleRenderTarget=Tn,this.setupDepthRenderbuffer=_n,this.setupFrameBufferTexture=vn,this.useMultisampledRTT=mn}function WebGLUtils(tt,et,nt){const rt=nt.isWebGL2;function it(ot,at=null){let st;if(ot===UnsignedByteType)return 5121;if(ot===UnsignedShort4444Type)return 32819;if(ot===UnsignedShort5551Type)return 32820;if(ot===ByteType)return 5120;if(ot===ShortType)return 5122;if(ot===UnsignedShortType)return 5123;if(ot===IntType)return 5124;if(ot===UnsignedIntType)return 5125;if(ot===FloatType)return 5126;if(ot===HalfFloatType)return rt?5131:(st=et.get("OES_texture_half_float"),st!==null?st.HALF_FLOAT_OES:null);if(ot===AlphaFormat)return 6406;if(ot===RGBAFormat)return 6408;if(ot===LuminanceFormat)return 6409;if(ot===LuminanceAlphaFormat)return 6410;if(ot===DepthFormat)return 6402;if(ot===DepthStencilFormat)return 34041;if(ot===RedFormat)return 6403;if(ot===RGBFormat)return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"),6408;if(ot===_SRGBAFormat)return st=et.get("EXT_sRGB"),st!==null?st.SRGB_ALPHA_EXT:null;if(ot===RedIntegerFormat)return 36244;if(ot===RGFormat)return 33319;if(ot===RGIntegerFormat)return 33320;if(ot===RGBAIntegerFormat)return 36249;if(ot===RGB_S3TC_DXT1_Format||ot===RGBA_S3TC_DXT1_Format||ot===RGBA_S3TC_DXT3_Format||ot===RGBA_S3TC_DXT5_Format)if(at===sRGBEncoding)if(st=et.get("WEBGL_compressed_texture_s3tc_srgb"),st!==null){if(ot===RGB_S3TC_DXT1_Format)return st.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(ot===RGBA_S3TC_DXT1_Format)return st.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(ot===RGBA_S3TC_DXT3_Format)return st.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(ot===RGBA_S3TC_DXT5_Format)return st.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(st=et.get("WEBGL_compressed_texture_s3tc"),st!==null){if(ot===RGB_S3TC_DXT1_Format)return st.COMPRESSED_RGB_S3TC_DXT1_EXT;if(ot===RGBA_S3TC_DXT1_Format)return st.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(ot===RGBA_S3TC_DXT3_Format)return st.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(ot===RGBA_S3TC_DXT5_Format)return st.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(ot===RGB_PVRTC_4BPPV1_Format||ot===RGB_PVRTC_2BPPV1_Format||ot===RGBA_PVRTC_4BPPV1_Format||ot===RGBA_PVRTC_2BPPV1_Format)if(st=et.get("WEBGL_compressed_texture_pvrtc"),st!==null){if(ot===RGB_PVRTC_4BPPV1_Format)return st.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(ot===RGB_PVRTC_2BPPV1_Format)return st.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(ot===RGBA_PVRTC_4BPPV1_Format)return st.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(ot===RGBA_PVRTC_2BPPV1_Format)return st.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(ot===RGB_ETC1_Format)return st=et.get("WEBGL_compressed_texture_etc1"),st!==null?st.COMPRESSED_RGB_ETC1_WEBGL:null;if(ot===RGB_ETC2_Format||ot===RGBA_ETC2_EAC_Format)if(st=et.get("WEBGL_compressed_texture_etc"),st!==null){if(ot===RGB_ETC2_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ETC2:st.COMPRESSED_RGB8_ETC2;if(ot===RGBA_ETC2_EAC_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:st.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(ot===RGBA_ASTC_4x4_Format||ot===RGBA_ASTC_5x4_Format||ot===RGBA_ASTC_5x5_Format||ot===RGBA_ASTC_6x5_Format||ot===RGBA_ASTC_6x6_Format||ot===RGBA_ASTC_8x5_Format||ot===RGBA_ASTC_8x6_Format||ot===RGBA_ASTC_8x8_Format||ot===RGBA_ASTC_10x5_Format||ot===RGBA_ASTC_10x6_Format||ot===RGBA_ASTC_10x8_Format||ot===RGBA_ASTC_10x10_Format||ot===RGBA_ASTC_12x10_Format||ot===RGBA_ASTC_12x12_Format)if(st=et.get("WEBGL_compressed_texture_astc"),st!==null){if(ot===RGBA_ASTC_4x4_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:st.COMPRESSED_RGBA_ASTC_4x4_KHR;if(ot===RGBA_ASTC_5x4_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:st.COMPRESSED_RGBA_ASTC_5x4_KHR;if(ot===RGBA_ASTC_5x5_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:st.COMPRESSED_RGBA_ASTC_5x5_KHR;if(ot===RGBA_ASTC_6x5_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:st.COMPRESSED_RGBA_ASTC_6x5_KHR;if(ot===RGBA_ASTC_6x6_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:st.COMPRESSED_RGBA_ASTC_6x6_KHR;if(ot===RGBA_ASTC_8x5_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:st.COMPRESSED_RGBA_ASTC_8x5_KHR;if(ot===RGBA_ASTC_8x6_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:st.COMPRESSED_RGBA_ASTC_8x6_KHR;if(ot===RGBA_ASTC_8x8_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:st.COMPRESSED_RGBA_ASTC_8x8_KHR;if(ot===RGBA_ASTC_10x5_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:st.COMPRESSED_RGBA_ASTC_10x5_KHR;if(ot===RGBA_ASTC_10x6_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:st.COMPRESSED_RGBA_ASTC_10x6_KHR;if(ot===RGBA_ASTC_10x8_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:st.COMPRESSED_RGBA_ASTC_10x8_KHR;if(ot===RGBA_ASTC_10x10_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:st.COMPRESSED_RGBA_ASTC_10x10_KHR;if(ot===RGBA_ASTC_12x10_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:st.COMPRESSED_RGBA_ASTC_12x10_KHR;if(ot===RGBA_ASTC_12x12_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:st.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(ot===RGBA_BPTC_Format)if(st=et.get("EXT_texture_compression_bptc"),st!==null){if(ot===RGBA_BPTC_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:st.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;return ot===UnsignedInt248Type?rt?34042:(st=et.get("WEBGL_depth_texture"),st!==null?st.UNSIGNED_INT_24_8_WEBGL:null):tt[ot]!==void 0?tt[ot]:null}return{convert:it}}class ArrayCamera extends PerspectiveCamera{constructor(et=[]){super(),this.isArrayCamera=!0,this.cameras=et}}class Group extends Object3D{constructor(){super(),this.isGroup=!0,this.type="Group"}}const _moveEvent={type:"move"};class WebXRController{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Group,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Group,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new Vector3,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new Vector3),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Group,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new Vector3,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new Vector3),this._grip}dispatchEvent(et){return this._targetRay!==null&&this._targetRay.dispatchEvent(et),this._grip!==null&&this._grip.dispatchEvent(et),this._hand!==null&&this._hand.dispatchEvent(et),this}disconnect(et){return this.dispatchEvent({type:"disconnected",data:et}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(et,nt,rt){let it=null,ot=null,at=null;const st=this._targetRay,lt=this._grip,ct=this._hand;if(et&&nt.session.visibilityState!=="visible-blurred"){if(ct&&et.hand){at=!0;for(const gt of et.hand.values()){const yt=nt.getJointPose(gt,rt);if(ct.joints[gt.jointName]===void 0){const vt=new Group;vt.matrixAutoUpdate=!1,vt.visible=!1,ct.joints[gt.jointName]=vt,ct.add(vt)}const bt=ct.joints[gt.jointName];yt!==null&&(bt.matrix.fromArray(yt.transform.matrix),bt.matrix.decompose(bt.position,bt.rotation,bt.scale),bt.jointRadius=yt.radius),bt.visible=yt!==null}const ut=ct.joints["index-finger-tip"],ht=ct.joints["thumb-tip"],dt=ut.position.distanceTo(ht.position),pt=.02,mt=.005;ct.inputState.pinching&&dt>pt+mt?(ct.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:et.handedness,target:this})):!ct.inputState.pinching&&dt<=pt-mt&&(ct.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:et.handedness,target:this}))}else lt!==null&&et.gripSpace&&(ot=nt.getPose(et.gripSpace,rt),ot!==null&&(lt.matrix.fromArray(ot.transform.matrix),lt.matrix.decompose(lt.position,lt.rotation,lt.scale),ot.linearVelocity?(lt.hasLinearVelocity=!0,lt.linearVelocity.copy(ot.linearVelocity)):lt.hasLinearVelocity=!1,ot.angularVelocity?(lt.hasAngularVelocity=!0,lt.angularVelocity.copy(ot.angularVelocity)):lt.hasAngularVelocity=!1));st!==null&&(it=nt.getPose(et.targetRaySpace,rt),it===null&&ot!==null&&(it=ot),it!==null&&(st.matrix.fromArray(it.transform.matrix),st.matrix.decompose(st.position,st.rotation,st.scale),it.linearVelocity?(st.hasLinearVelocity=!0,st.linearVelocity.copy(it.linearVelocity)):st.hasLinearVelocity=!1,it.angularVelocity?(st.hasAngularVelocity=!0,st.angularVelocity.copy(it.angularVelocity)):st.hasAngularVelocity=!1,this.dispatchEvent(_moveEvent)))}return st!==null&&(st.visible=it!==null),lt!==null&&(lt.visible=ot!==null),ct!==null&&(ct.visible=at!==null),this}}class DepthTexture extends Texture{constructor(et,nt,rt,it,ot,at,st,lt,ct,ut){if(ut=ut!==void 0?ut:DepthFormat,ut!==DepthFormat&&ut!==DepthStencilFormat)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");rt===void 0&&ut===DepthFormat&&(rt=UnsignedIntType),rt===void 0&&ut===DepthStencilFormat&&(rt=UnsignedInt248Type),super(null,it,ot,at,st,lt,ut,rt,ct),this.isDepthTexture=!0,this.image={width:et,height:nt},this.magFilter=st!==void 0?st:NearestFilter,this.minFilter=lt!==void 0?lt:NearestFilter,this.flipY=!1,this.generateMipmaps=!1}}class WebXRManager extends EventDispatcher$1{constructor(et,nt){super();const rt=this;let it=null,ot=1,at=null,st="local-floor",lt=null,ct=null,ut=null,ht=null,dt=null,pt=null;const mt=nt.getContextAttributes();let gt=null,yt=null;const bt=[],vt=[],xt=new PerspectiveCamera;xt.layers.enable(1),xt.viewport=new Vector4;const kt=new PerspectiveCamera;kt.layers.enable(2),kt.viewport=new Vector4;const St=[xt,kt],Tt=new ArrayCamera;Tt.layers.enable(1),Tt.layers.enable(2);let At=null,Et=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(Ft){let Nt=bt[Ft];return Nt===void 0&&(Nt=new WebXRController,bt[Ft]=Nt),Nt.getTargetRaySpace()},this.getControllerGrip=function(Ft){let Nt=bt[Ft];return Nt===void 0&&(Nt=new WebXRController,bt[Ft]=Nt),Nt.getGripSpace()},this.getHand=function(Ft){let Nt=bt[Ft];return Nt===void 0&&(Nt=new WebXRController,bt[Ft]=Nt),Nt.getHandSpace()};function $t(Ft){const Nt=vt.indexOf(Ft.inputSource);if(Nt===-1)return;const Ut=bt[Nt];Ut!==void 0&&Ut.dispatchEvent({type:Ft.type,data:Ft.inputSource})}function Dt(){it.removeEventListener("select",$t),it.removeEventListener("selectstart",$t),it.removeEventListener("selectend",$t),it.removeEventListener("squeeze",$t),it.removeEventListener("squeezestart",$t),it.removeEventListener("squeezeend",$t),it.removeEventListener("end",Dt),it.removeEventListener("inputsourceschange",jt);for(let Ft=0;Ft=0&&(vt[Mt]=null,bt[Mt].dispatchEvent({type:"disconnected",data:Ut}))}for(let Nt=0;Nt=vt.length){vt.push(Ut),Mt=en;break}else if(vt[en]===null){vt[en]=Ut,Mt=en;break}if(Mt===-1)break}const Ht=bt[Mt];Ht&&Ht.dispatchEvent({type:"connected",data:Ut})}}const Pt=new Vector3,Ct=new Vector3;function wt(Ft,Nt,Ut){Pt.setFromMatrixPosition(Nt.matrixWorld),Ct.setFromMatrixPosition(Ut.matrixWorld);const Mt=Pt.distanceTo(Ct),Ht=Nt.projectionMatrix.elements,en=Ut.projectionMatrix.elements,sn=Ht[14]/(Ht[10]-1),Kt=Ht[14]/(Ht[10]+1),rn=(Ht[9]+1)/Ht[5],nn=(Ht[9]-1)/Ht[5],hn=(Ht[8]-1)/Ht[0],vn=(en[8]+1)/en[0],an=sn*hn,Qt=sn*vn,_n=Mt/(-hn+vn),Pn=_n*-hn;Nt.matrixWorld.decompose(Ft.position,Ft.quaternion,Ft.scale),Ft.translateX(Pn),Ft.translateZ(_n),Ft.matrixWorld.compose(Ft.position,Ft.quaternion,Ft.scale),Ft.matrixWorldInverse.copy(Ft.matrixWorld).invert();const $n=sn+_n,Nn=Kt+_n,Tn=an-Pn,cn=Qt+(Mt-Pn),mn=rn*Kt/Nn*$n,In=nn*Kt/Nn*$n;Ft.projectionMatrix.makePerspective(Tn,cn,mn,In,$n,Nn)}function It(Ft,Nt){Nt===null?Ft.matrixWorld.copy(Ft.matrix):Ft.matrixWorld.multiplyMatrices(Nt.matrixWorld,Ft.matrix),Ft.matrixWorldInverse.copy(Ft.matrixWorld).invert()}this.updateCamera=function(Ft){if(it===null)return;Tt.near=kt.near=xt.near=Ft.near,Tt.far=kt.far=xt.far=Ft.far,(At!==Tt.near||Et!==Tt.far)&&(it.updateRenderState({depthNear:Tt.near,depthFar:Tt.far}),At=Tt.near,Et=Tt.far);const Nt=Ft.parent,Ut=Tt.cameras;It(Tt,Nt);for(let Ht=0;Ht0&&(gt.alphaTest.value=yt.alphaTest);const bt=et.get(yt).envMap;if(bt&&(gt.envMap.value=bt,gt.flipEnvMap.value=bt.isCubeTexture&&bt.isRenderTargetTexture===!1?-1:1,gt.reflectivity.value=yt.reflectivity,gt.ior.value=yt.ior,gt.refractionRatio.value=yt.refractionRatio),yt.lightMap){gt.lightMap.value=yt.lightMap;const kt=tt.physicallyCorrectLights!==!0?Math.PI:1;gt.lightMapIntensity.value=yt.lightMapIntensity*kt}yt.aoMap&&(gt.aoMap.value=yt.aoMap,gt.aoMapIntensity.value=yt.aoMapIntensity);let vt;yt.map?vt=yt.map:yt.specularMap?vt=yt.specularMap:yt.displacementMap?vt=yt.displacementMap:yt.normalMap?vt=yt.normalMap:yt.bumpMap?vt=yt.bumpMap:yt.roughnessMap?vt=yt.roughnessMap:yt.metalnessMap?vt=yt.metalnessMap:yt.alphaMap?vt=yt.alphaMap:yt.emissiveMap?vt=yt.emissiveMap:yt.clearcoatMap?vt=yt.clearcoatMap:yt.clearcoatNormalMap?vt=yt.clearcoatNormalMap:yt.clearcoatRoughnessMap?vt=yt.clearcoatRoughnessMap:yt.iridescenceMap?vt=yt.iridescenceMap:yt.iridescenceThicknessMap?vt=yt.iridescenceThicknessMap:yt.specularIntensityMap?vt=yt.specularIntensityMap:yt.specularColorMap?vt=yt.specularColorMap:yt.transmissionMap?vt=yt.transmissionMap:yt.thicknessMap?vt=yt.thicknessMap:yt.sheenColorMap?vt=yt.sheenColorMap:yt.sheenRoughnessMap&&(vt=yt.sheenRoughnessMap),vt!==void 0&&(vt.isWebGLRenderTarget&&(vt=vt.texture),vt.matrixAutoUpdate===!0&&vt.updateMatrix(),gt.uvTransform.value.copy(vt.matrix));let xt;yt.aoMap?xt=yt.aoMap:yt.lightMap&&(xt=yt.lightMap),xt!==void 0&&(xt.isWebGLRenderTarget&&(xt=xt.texture),xt.matrixAutoUpdate===!0&&xt.updateMatrix(),gt.uv2Transform.value.copy(xt.matrix))}function ot(gt,yt){gt.diffuse.value.copy(yt.color),gt.opacity.value=yt.opacity}function at(gt,yt){gt.dashSize.value=yt.dashSize,gt.totalSize.value=yt.dashSize+yt.gapSize,gt.scale.value=yt.scale}function st(gt,yt,bt,vt){gt.diffuse.value.copy(yt.color),gt.opacity.value=yt.opacity,gt.size.value=yt.size*bt,gt.scale.value=vt*.5,yt.map&&(gt.map.value=yt.map),yt.alphaMap&&(gt.alphaMap.value=yt.alphaMap),yt.alphaTest>0&&(gt.alphaTest.value=yt.alphaTest);let xt;yt.map?xt=yt.map:yt.alphaMap&&(xt=yt.alphaMap),xt!==void 0&&(xt.matrixAutoUpdate===!0&&xt.updateMatrix(),gt.uvTransform.value.copy(xt.matrix))}function lt(gt,yt){gt.diffuse.value.copy(yt.color),gt.opacity.value=yt.opacity,gt.rotation.value=yt.rotation,yt.map&&(gt.map.value=yt.map),yt.alphaMap&&(gt.alphaMap.value=yt.alphaMap),yt.alphaTest>0&&(gt.alphaTest.value=yt.alphaTest);let bt;yt.map?bt=yt.map:yt.alphaMap&&(bt=yt.alphaMap),bt!==void 0&&(bt.matrixAutoUpdate===!0&&bt.updateMatrix(),gt.uvTransform.value.copy(bt.matrix))}function ct(gt,yt){gt.specular.value.copy(yt.specular),gt.shininess.value=Math.max(yt.shininess,1e-4)}function ut(gt,yt){yt.gradientMap&&(gt.gradientMap.value=yt.gradientMap)}function ht(gt,yt){gt.roughness.value=yt.roughness,gt.metalness.value=yt.metalness,yt.roughnessMap&&(gt.roughnessMap.value=yt.roughnessMap),yt.metalnessMap&&(gt.metalnessMap.value=yt.metalnessMap),et.get(yt).envMap&&(gt.envMapIntensity.value=yt.envMapIntensity)}function dt(gt,yt,bt){gt.ior.value=yt.ior,yt.sheen>0&&(gt.sheenColor.value.copy(yt.sheenColor).multiplyScalar(yt.sheen),gt.sheenRoughness.value=yt.sheenRoughness,yt.sheenColorMap&&(gt.sheenColorMap.value=yt.sheenColorMap),yt.sheenRoughnessMap&&(gt.sheenRoughnessMap.value=yt.sheenRoughnessMap)),yt.clearcoat>0&&(gt.clearcoat.value=yt.clearcoat,gt.clearcoatRoughness.value=yt.clearcoatRoughness,yt.clearcoatMap&&(gt.clearcoatMap.value=yt.clearcoatMap),yt.clearcoatRoughnessMap&&(gt.clearcoatRoughnessMap.value=yt.clearcoatRoughnessMap),yt.clearcoatNormalMap&&(gt.clearcoatNormalScale.value.copy(yt.clearcoatNormalScale),gt.clearcoatNormalMap.value=yt.clearcoatNormalMap,yt.side===BackSide&>.clearcoatNormalScale.value.negate())),yt.iridescence>0&&(gt.iridescence.value=yt.iridescence,gt.iridescenceIOR.value=yt.iridescenceIOR,gt.iridescenceThicknessMinimum.value=yt.iridescenceThicknessRange[0],gt.iridescenceThicknessMaximum.value=yt.iridescenceThicknessRange[1],yt.iridescenceMap&&(gt.iridescenceMap.value=yt.iridescenceMap),yt.iridescenceThicknessMap&&(gt.iridescenceThicknessMap.value=yt.iridescenceThicknessMap)),yt.transmission>0&&(gt.transmission.value=yt.transmission,gt.transmissionSamplerMap.value=bt.texture,gt.transmissionSamplerSize.value.set(bt.width,bt.height),yt.transmissionMap&&(gt.transmissionMap.value=yt.transmissionMap),gt.thickness.value=yt.thickness,yt.thicknessMap&&(gt.thicknessMap.value=yt.thicknessMap),gt.attenuationDistance.value=yt.attenuationDistance,gt.attenuationColor.value.copy(yt.attenuationColor)),gt.specularIntensity.value=yt.specularIntensity,gt.specularColor.value.copy(yt.specularColor),yt.specularIntensityMap&&(gt.specularIntensityMap.value=yt.specularIntensityMap),yt.specularColorMap&&(gt.specularColorMap.value=yt.specularColorMap)}function pt(gt,yt){yt.matcap&&(gt.matcap.value=yt.matcap)}function mt(gt,yt){gt.referencePosition.value.copy(yt.referencePosition),gt.nearDistance.value=yt.nearDistance,gt.farDistance.value=yt.farDistance}return{refreshFogUniforms:nt,refreshMaterialUniforms:rt}}function WebGLUniformsGroups(tt,et,nt,rt){let it={},ot={},at=[];const st=nt.isWebGL2?tt.getParameter(35375):0;function lt(vt,xt){const kt=xt.program;rt.uniformBlockBinding(vt,kt)}function ct(vt,xt){let kt=it[vt.id];kt===void 0&&(mt(vt),kt=ut(vt),it[vt.id]=kt,vt.addEventListener("dispose",yt));const St=xt.program;rt.updateUBOMapping(vt,St);const Tt=et.render.frame;ot[vt.id]!==Tt&&(dt(vt),ot[vt.id]=Tt)}function ut(vt){const xt=ht();vt.__bindingPointIndex=xt;const kt=tt.createBuffer(),St=vt.__size,Tt=vt.usage;return tt.bindBuffer(35345,kt),tt.bufferData(35345,St,Tt),tt.bindBuffer(35345,null),tt.bindBufferBase(35345,xt,kt),kt}function ht(){for(let vt=0;vt0){Tt=kt%St;const jt=St-Tt;Tt!==0&&jt-Dt.boundary<0&&(kt+=St-Tt,$t.__offset=kt)}kt+=Dt.storage}return Tt=kt%St,Tt>0&&(kt+=St-Tt),vt.__size=kt,vt.__cache={},this}function gt(vt){const xt=vt.value,kt={boundary:0,storage:0};return typeof xt=="number"?(kt.boundary=4,kt.storage=4):xt.isVector2?(kt.boundary=8,kt.storage=8):xt.isVector3||xt.isColor?(kt.boundary=16,kt.storage=12):xt.isVector4?(kt.boundary=16,kt.storage=16):xt.isMatrix3?(kt.boundary=48,kt.storage=48):xt.isMatrix4?(kt.boundary=64,kt.storage=64):xt.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",xt),kt}function yt(vt){const xt=vt.target;xt.removeEventListener("dispose",yt);const kt=at.indexOf(xt.__bindingPointIndex);at.splice(kt,1),tt.deleteBuffer(it[xt.id]),delete it[xt.id],delete ot[xt.id]}function bt(){for(const vt in it)tt.deleteBuffer(it[vt]);at=[],it={},ot={}}return{bind:lt,update:ct,dispose:bt}}function createCanvasElement(){const tt=createElementNS("canvas");return tt.style.display="block",tt}function WebGLRenderer(tt={}){this.isWebGLRenderer=!0;const et=tt.canvas!==void 0?tt.canvas:createCanvasElement(),nt=tt.context!==void 0?tt.context:null,rt=tt.depth!==void 0?tt.depth:!0,it=tt.stencil!==void 0?tt.stencil:!0,ot=tt.antialias!==void 0?tt.antialias:!1,at=tt.premultipliedAlpha!==void 0?tt.premultipliedAlpha:!0,st=tt.preserveDrawingBuffer!==void 0?tt.preserveDrawingBuffer:!1,lt=tt.powerPreference!==void 0?tt.powerPreference:"default",ct=tt.failIfMajorPerformanceCaveat!==void 0?tt.failIfMajorPerformanceCaveat:!1;let ut;nt!==null?ut=nt.getContextAttributes().alpha:ut=tt.alpha!==void 0?tt.alpha:!1;let ht=null,dt=null;const pt=[],mt=[];this.domElement=et,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=LinearEncoding,this.physicallyCorrectLights=!1,this.toneMapping=NoToneMapping,this.toneMappingExposure=1,Object.defineProperties(this,{gammaFactor:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."),2},set:function(){console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.")}}});const gt=this;let yt=!1,bt=0,vt=0,xt=null,kt=-1,St=null;const Tt=new Vector4,At=new Vector4;let Et=null,$t=et.width,Dt=et.height,jt=1,Pt=null,Ct=null;const wt=new Vector4(0,0,$t,Dt),It=new Vector4(0,0,$t,Dt);let Ot=!1;const Wt=new Frustum;let zt=!1,Ft=!1,Nt=null;const Ut=new Matrix4,Mt=new Vector2,Ht=new Vector3,en={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function sn(){return xt===null?jt:1}let Kt=nt;function rn(dn,Jt){for(let En=0;En0?dt=mt[mt.length-1]:dt=null,pt.pop(),pt.length>0?ht=pt[pt.length-1]:ht=null};function Ar(dn,Jt,En,Ln){if(dn.visible===!1)return;if(dn.layers.test(Jt.layers)){if(dn.isGroup)En=dn.renderOrder;else if(dn.isLOD)dn.autoUpdate===!0&&dn.update(Jt);else if(dn.isLight)dt.pushLight(dn),dn.castShadow&&dt.pushShadow(dn);else if(dn.isSprite){if(!dn.frustumCulled||Wt.intersectsSprite(dn)){Ln&&Ht.setFromMatrixPosition(dn.matrixWorld).applyMatrix4(Ut);const nr=cn.update(dn),lr=dn.material;lr.visible&&ht.push(dn,nr,lr,En,Ht.z,null)}}else if((dn.isMesh||dn.isLine||dn.isPoints)&&(dn.isSkinnedMesh&&dn.skeleton.frame!==an.render.frame&&(dn.skeleton.update(),dn.skeleton.frame=an.render.frame),!dn.frustumCulled||Wt.intersectsObject(dn))){Ln&&Ht.setFromMatrixPosition(dn.matrixWorld).applyMatrix4(Ut);const nr=cn.update(dn),lr=dn.material;if(Array.isArray(lr)){const cr=nr.groups;for(let Hr=0,vr=cr.length;Hr0&&jr(Un,Jt,En),Ln&&vn.viewport(Tt.copy(Ln)),Un.length>0&&Fr(Un,Jt,En),Kn.length>0&&Fr(Kn,Jt,En),nr.length>0&&Fr(nr,Jt,En),vn.buffers.depth.setTest(!0),vn.buffers.depth.setMask(!0),vn.buffers.color.setMask(!0),vn.setPolygonOffset(!1)}function jr(dn,Jt,En){const Ln=hn.isWebGL2;Nt===null&&(Nt=new WebGLRenderTarget(1,1,{generateMipmaps:!0,type:nn.has("EXT_color_buffer_half_float")?HalfFloatType:UnsignedByteType,minFilter:LinearMipmapLinearFilter,samples:Ln&&ot===!0?4:0})),gt.getDrawingBufferSize(Mt),Ln?Nt.setSize(Mt.x,Mt.y):Nt.setSize(floorPowerOfTwo(Mt.x),floorPowerOfTwo(Mt.y));const Un=gt.getRenderTarget();gt.setRenderTarget(Nt),gt.clear();const Kn=gt.toneMapping;gt.toneMapping=NoToneMapping,Fr(dn,Jt,En),gt.toneMapping=Kn,_n.updateMultisampleRenderTarget(Nt),_n.updateRenderTargetMipmap(Nt),gt.setRenderTarget(Un)}function Fr(dn,Jt,En){const Ln=Jt.isScene===!0?Jt.overrideMaterial:null;for(let Un=0,Kn=dn.length;Un0&&_n.useMultisampledRTT(dn)===!1?Un=Qt.get(dn).__webglMultisampledFramebuffer:Un=Hr,Tt.copy(dn.viewport),At.copy(dn.scissor),Et=dn.scissorTest}else Tt.copy(wt).multiplyScalar(jt).floor(),At.copy(It).multiplyScalar(jt).floor(),Et=Ot;if(vn.bindFramebuffer(36160,Un)&&hn.drawBuffers&&Ln&&vn.drawBuffers(dn,Un),vn.viewport(Tt),vn.scissor(At),vn.setScissorTest(Et),Kn){const cr=Qt.get(dn.texture);Kt.framebufferTexture2D(36160,36064,34069+Jt,cr.__webglTexture,En)}else if(nr){const cr=Qt.get(dn.texture),Hr=Jt||0;Kt.framebufferTextureLayer(36160,36064,cr.__webglTexture,En||0,Hr)}kt=-1},this.readRenderTargetPixels=function(dn,Jt,En,Ln,Un,Kn,nr){if(!(dn&&dn.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let lr=Qt.get(dn).__webglFramebuffer;if(dn.isWebGLCubeRenderTarget&&nr!==void 0&&(lr=lr[nr]),lr){vn.bindFramebuffer(36160,lr);try{const cr=dn.texture,Hr=cr.format,vr=cr.type;if(Hr!==RGBAFormat&&Xt.convert(Hr)!==Kt.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const Nr=vr===HalfFloatType&&(nn.has("EXT_color_buffer_half_float")||hn.isWebGL2&&nn.has("EXT_color_buffer_float"));if(vr!==UnsignedByteType&&Xt.convert(vr)!==Kt.getParameter(35738)&&!(vr===FloatType&&(hn.isWebGL2||nn.has("OES_texture_float")||nn.has("WEBGL_color_buffer_float")))&&!Nr){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}Jt>=0&&Jt<=dn.width-Ln&&En>=0&&En<=dn.height-Un&&Kt.readPixels(Jt,En,Ln,Un,Xt.convert(Hr),Xt.convert(vr),Kn)}finally{const cr=xt!==null?Qt.get(xt).__webglFramebuffer:null;vn.bindFramebuffer(36160,cr)}}},this.copyFramebufferToTexture=function(dn,Jt,En=0){const Ln=Math.pow(2,-En),Un=Math.floor(Jt.image.width*Ln),Kn=Math.floor(Jt.image.height*Ln);_n.setTexture2D(Jt,0),Kt.copyTexSubImage2D(3553,En,0,0,dn.x,dn.y,Un,Kn),vn.unbindTexture()},this.copyTextureToTexture=function(dn,Jt,En,Ln=0){const Un=Jt.image.width,Kn=Jt.image.height,nr=Xt.convert(En.format),lr=Xt.convert(En.type);_n.setTexture2D(En,0),Kt.pixelStorei(37440,En.flipY),Kt.pixelStorei(37441,En.premultiplyAlpha),Kt.pixelStorei(3317,En.unpackAlignment),Jt.isDataTexture?Kt.texSubImage2D(3553,Ln,dn.x,dn.y,Un,Kn,nr,lr,Jt.image.data):Jt.isCompressedTexture?Kt.compressedTexSubImage2D(3553,Ln,dn.x,dn.y,Jt.mipmaps[0].width,Jt.mipmaps[0].height,nr,Jt.mipmaps[0].data):Kt.texSubImage2D(3553,Ln,dn.x,dn.y,nr,lr,Jt.image),Ln===0&&En.generateMipmaps&&Kt.generateMipmap(3553),vn.unbindTexture()},this.copyTextureToTexture3D=function(dn,Jt,En,Ln,Un=0){if(gt.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const Kn=dn.max.x-dn.min.x+1,nr=dn.max.y-dn.min.y+1,lr=dn.max.z-dn.min.z+1,cr=Xt.convert(Ln.format),Hr=Xt.convert(Ln.type);let vr;if(Ln.isData3DTexture)_n.setTexture3D(Ln,0),vr=32879;else if(Ln.isDataArrayTexture)_n.setTexture2DArray(Ln,0),vr=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}Kt.pixelStorei(37440,Ln.flipY),Kt.pixelStorei(37441,Ln.premultiplyAlpha),Kt.pixelStorei(3317,Ln.unpackAlignment);const Nr=Kt.getParameter(3314),Gr=Kt.getParameter(32878),eo=Kt.getParameter(3316),Zr=Kt.getParameter(3315),Jr=Kt.getParameter(32877),wr=En.isCompressedTexture?En.mipmaps[0]:En.image;Kt.pixelStorei(3314,wr.width),Kt.pixelStorei(32878,wr.height),Kt.pixelStorei(3316,dn.min.x),Kt.pixelStorei(3315,dn.min.y),Kt.pixelStorei(32877,dn.min.z),En.isDataTexture||En.isData3DTexture?Kt.texSubImage3D(vr,Un,Jt.x,Jt.y,Jt.z,Kn,nr,lr,cr,Hr,wr.data):En.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),Kt.compressedTexSubImage3D(vr,Un,Jt.x,Jt.y,Jt.z,Kn,nr,lr,cr,wr.data)):Kt.texSubImage3D(vr,Un,Jt.x,Jt.y,Jt.z,Kn,nr,lr,cr,Hr,wr),Kt.pixelStorei(3314,Nr),Kt.pixelStorei(32878,Gr),Kt.pixelStorei(3316,eo),Kt.pixelStorei(3315,Zr),Kt.pixelStorei(32877,Jr),Un===0&&Ln.generateMipmaps&&Kt.generateMipmap(vr),vn.unbindTexture()},this.initTexture=function(dn){dn.isCubeTexture?_n.setTextureCube(dn,0):dn.isData3DTexture?_n.setTexture3D(dn,0):dn.isDataArrayTexture?_n.setTexture2DArray(dn,0):_n.setTexture2D(dn,0),vn.unbindTexture()},this.resetState=function(){bt=0,vt=0,xt=null,vn.reset(),Sn.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}class WebGL1Renderer extends WebGLRenderer{}WebGL1Renderer.prototype.isWebGL1Renderer=!0;class FogExp2{constructor(et,nt=25e-5){this.isFogExp2=!0,this.name="",this.color=new Color$1(et),this.density=nt}clone(){return new FogExp2(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}class Fog{constructor(et,nt=1,rt=1e3){this.isFog=!0,this.name="",this.color=new Color$1(et),this.near=nt,this.far=rt}clone(){return new Fog(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}class Scene extends Object3D{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(et,nt){return super.copy(et,nt),et.background!==null&&(this.background=et.background.clone()),et.environment!==null&&(this.environment=et.environment.clone()),et.fog!==null&&(this.fog=et.fog.clone()),et.overrideMaterial!==null&&(this.overrideMaterial=et.overrideMaterial.clone()),this.autoUpdate=et.autoUpdate,this.matrixAutoUpdate=et.matrixAutoUpdate,this}toJSON(et){const nt=super.toJSON(et);return this.fog!==null&&(nt.object.fog=this.fog.toJSON()),nt}}class InterleavedBuffer{constructor(et,nt){this.isInterleavedBuffer=!0,this.array=et,this.stride=nt,this.count=et!==void 0?et.length/nt:0,this.usage=StaticDrawUsage,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=generateUUID$1()}onUploadCallback(){}set needsUpdate(et){et===!0&&this.version++}setUsage(et){return this.usage=et,this}copy(et){return this.array=new et.array.constructor(et.array),this.count=et.count,this.stride=et.stride,this.usage=et.usage,this}copyAt(et,nt,rt){et*=this.stride,rt*=nt.stride;for(let it=0,ot=this.stride;itet.far||nt.push({distance:lt,point:_intersectPoint.clone(),uv:Triangle.getUV(_intersectPoint,_vA,_vB,_vC,_uvA,_uvB,_uvC,new Vector2),face:null,object:this})}copy(et,nt){return super.copy(et,nt),et.center!==void 0&&this.center.copy(et.center),this.material=et.material,this}}function transformVertex(tt,et,nt,rt,it,ot){_alignedPosition.subVectors(tt,nt).addScalar(.5).multiply(rt),it!==void 0?(_rotatedPosition.x=ot*_alignedPosition.x-it*_alignedPosition.y,_rotatedPosition.y=it*_alignedPosition.x+ot*_alignedPosition.y):_rotatedPosition.copy(_alignedPosition),tt.copy(et),tt.x+=_rotatedPosition.x,tt.y+=_rotatedPosition.y,tt.applyMatrix4(_viewWorldMatrix)}const _v1$2=new Vector3,_v2$1=new Vector3;class LOD extends Object3D{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(et){super.copy(et,!1);const nt=et.levels;for(let rt=0,it=nt.length;rt0){let rt,it;for(rt=1,it=nt.length;rt0){_v1$2.setFromMatrixPosition(this.matrixWorld);const it=et.ray.origin.distanceTo(_v1$2);this.getObjectForDistance(it).raycast(et,nt)}}update(et){const nt=this.levels;if(nt.length>1){_v1$2.setFromMatrixPosition(et.matrixWorld),_v2$1.setFromMatrixPosition(this.matrixWorld);const rt=_v1$2.distanceTo(_v2$1)/et.zoom;nt[0].object.visible=!0;let it,ot;for(it=1,ot=nt.length;it=nt[it].distance;it++)nt[it-1].object.visible=!1,nt[it].object.visible=!0;for(this._currentLevel=it-1;itlt)continue;dt.applyMatrix4(this.matrixWorld);const Et=et.ray.origin.distanceTo(dt);Etet.far||nt.push({distance:Et,point:ht.clone().applyMatrix4(this.matrixWorld),index:xt,face:null,faceIndex:null,object:this})}}else{const bt=Math.max(0,at.start),vt=Math.min(yt.count,at.start+at.count);for(let xt=bt,kt=vt-1;xtlt)continue;dt.applyMatrix4(this.matrixWorld);const Tt=et.ray.origin.distanceTo(dt);Ttet.far||nt.push({distance:Tt,point:ht.clone().applyMatrix4(this.matrixWorld),index:xt,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const nt=this.geometry.morphAttributes,rt=Object.keys(nt);if(rt.length>0){const it=nt[rt[0]];if(it!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let ot=0,at=it.length;ot0){const it=nt[rt[0]];if(it!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let ot=0,at=it.length;otit.far)return;ot.push({distance:ct,distanceToRay:Math.sqrt(st),point:lt,index:et,face:null,object:at})}}class VideoTexture extends Texture{constructor(et,nt,rt,it,ot,at,st,lt,ct){super(et,nt,rt,it,ot,at,st,lt,ct),this.isVideoTexture=!0,this.minFilter=at!==void 0?at:LinearFilter,this.magFilter=ot!==void 0?ot:LinearFilter,this.generateMipmaps=!1;const ut=this;function ht(){ut.needsUpdate=!0,et.requestVideoFrameCallback(ht)}"requestVideoFrameCallback"in et&&et.requestVideoFrameCallback(ht)}clone(){return new this.constructor(this.image).copy(this)}update(){const et=this.image;"requestVideoFrameCallback"in et===!1&&et.readyState>=et.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class FramebufferTexture extends Texture{constructor(et,nt,rt){super({width:et,height:nt}),this.isFramebufferTexture=!0,this.format=rt,this.magFilter=NearestFilter,this.minFilter=NearestFilter,this.generateMipmaps=!1,this.needsUpdate=!0}}class CompressedTexture extends Texture{constructor(et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt){super(null,at,st,lt,ct,ut,it,ot,ht,dt),this.isCompressedTexture=!0,this.image={width:nt,height:rt},this.mipmaps=et,this.flipY=!1,this.generateMipmaps=!1}}class CanvasTexture extends Texture{constructor(et,nt,rt,it,ot,at,st,lt,ct){super(et,nt,rt,it,ot,at,st,lt,ct),this.isCanvasTexture=!0,this.needsUpdate=!0}}let Curve$1=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(et,nt){const rt=this.getUtoTmapping(et);return this.getPoint(rt,nt)}getPoints(et=5){const nt=[];for(let rt=0;rt<=et;rt++)nt.push(this.getPoint(rt/et));return nt}getSpacedPoints(et=5){const nt=[];for(let rt=0;rt<=et;rt++)nt.push(this.getPointAt(rt/et));return nt}getLength(){const et=this.getLengths();return et[et.length-1]}getLengths(et=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===et+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const nt=[];let rt,it=this.getPoint(0),ot=0;nt.push(0);for(let at=1;at<=et;at++)rt=this.getPoint(at/et),ot+=rt.distanceTo(it),nt.push(ot),it=rt;return this.cacheArcLengths=nt,nt}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(et,nt){const rt=this.getLengths();let it=0;const ot=rt.length;let at;nt?at=nt:at=et*rt[ot-1];let st=0,lt=ot-1,ct;for(;st<=lt;)if(it=Math.floor(st+(lt-st)/2),ct=rt[it]-at,ct<0)st=it+1;else if(ct>0)lt=it-1;else{lt=it;break}if(it=lt,rt[it]===at)return it/(ot-1);const ut=rt[it],dt=rt[it+1]-ut,pt=(at-ut)/dt;return(it+pt)/(ot-1)}getTangent(et,nt){let it=et-1e-4,ot=et+1e-4;it<0&&(it=0),ot>1&&(ot=1);const at=this.getPoint(it),st=this.getPoint(ot),lt=nt||(at.isVector2?new Vector2:new Vector3);return lt.copy(st).sub(at).normalize(),lt}getTangentAt(et,nt){const rt=this.getUtoTmapping(et);return this.getTangent(rt,nt)}computeFrenetFrames(et,nt){const rt=new Vector3,it=[],ot=[],at=[],st=new Vector3,lt=new Matrix4;for(let pt=0;pt<=et;pt++){const mt=pt/et;it[pt]=this.getTangentAt(mt,new Vector3)}ot[0]=new Vector3,at[0]=new Vector3;let ct=Number.MAX_VALUE;const ut=Math.abs(it[0].x),ht=Math.abs(it[0].y),dt=Math.abs(it[0].z);ut<=ct&&(ct=ut,rt.set(1,0,0)),ht<=ct&&(ct=ht,rt.set(0,1,0)),dt<=ct&&rt.set(0,0,1),st.crossVectors(it[0],rt).normalize(),ot[0].crossVectors(it[0],st),at[0].crossVectors(it[0],ot[0]);for(let pt=1;pt<=et;pt++){if(ot[pt]=ot[pt-1].clone(),at[pt]=at[pt-1].clone(),st.crossVectors(it[pt-1],it[pt]),st.length()>Number.EPSILON){st.normalize();const mt=Math.acos(clamp$5(it[pt-1].dot(it[pt]),-1,1));ot[pt].applyMatrix4(lt.makeRotationAxis(st,mt))}at[pt].crossVectors(it[pt],ot[pt])}if(nt===!0){let pt=Math.acos(clamp$5(ot[0].dot(ot[et]),-1,1));pt/=et,it[0].dot(st.crossVectors(ot[0],ot[et]))>0&&(pt=-pt);for(let mt=1;mt<=et;mt++)ot[mt].applyMatrix4(lt.makeRotationAxis(it[mt],pt*mt)),at[mt].crossVectors(it[mt],ot[mt])}return{tangents:it,normals:ot,binormals:at}}clone(){return new this.constructor().copy(this)}copy(et){return this.arcLengthDivisions=et.arcLengthDivisions,this}toJSON(){const et={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return et.arcLengthDivisions=this.arcLengthDivisions,et.type=this.type,et}fromJSON(et){return this.arcLengthDivisions=et.arcLengthDivisions,this}};class EllipseCurve extends Curve$1{constructor(et=0,nt=0,rt=1,it=1,ot=0,at=Math.PI*2,st=!1,lt=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=et,this.aY=nt,this.xRadius=rt,this.yRadius=it,this.aStartAngle=ot,this.aEndAngle=at,this.aClockwise=st,this.aRotation=lt}getPoint(et,nt){const rt=nt||new Vector2,it=Math.PI*2;let ot=this.aEndAngle-this.aStartAngle;const at=Math.abs(ot)it;)ot-=it;ot0?0:(Math.floor(Math.abs(st)/ot)+1)*ot:lt===0&&st===ot-1&&(st=ot-2,lt=1);let ct,ut;this.closed||st>0?ct=it[(st-1)%ot]:(tmp.subVectors(it[0],it[1]).add(it[0]),ct=tmp);const ht=it[st%ot],dt=it[(st+1)%ot];if(this.closed||st+2it.length-2?it.length-1:at+1],ht=it[at>it.length-3?it.length-1:at+2];return rt.set(CatmullRom(st,lt.x,ct.x,ut.x,ht.x),CatmullRom(st,lt.y,ct.y,ut.y,ht.y)),rt}copy(et){super.copy(et),this.points=[];for(let nt=0,rt=et.points.length;nt=rt){const at=it[ot]-rt,st=this.curves[ot],lt=st.getLength(),ct=lt===0?0:1-at/lt;return st.getPointAt(ct,nt)}ot++}return null}getLength(){const et=this.getCurveLengths();return et[et.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const et=[];let nt=0;for(let rt=0,it=this.curves.length;rt1&&!nt[nt.length-1].equals(nt[0])&&nt.push(nt[0]),nt}copy(et){super.copy(et),this.curves=[];for(let nt=0,rt=et.curves.length;nt0){const ht=ct.getPoint(0);ht.equals(this.currentPoint)||this.lineTo(ht.x,ht.y)}this.curves.push(ct);const ut=ct.getPoint(1);return this.currentPoint.copy(ut),this}copy(et){return super.copy(et),this.currentPoint.copy(et.currentPoint),this}toJSON(){const et=super.toJSON();return et.currentPoint=this.currentPoint.toArray(),et}fromJSON(et){return super.fromJSON(et),this.currentPoint.fromArray(et.currentPoint),this}};class LatheGeometry extends BufferGeometry{constructor(et=[new Vector2(0,-.5),new Vector2(.5,0),new Vector2(0,.5)],nt=12,rt=0,it=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:et,segments:nt,phiStart:rt,phiLength:it},nt=Math.floor(nt),it=clamp$5(it,0,Math.PI*2);const ot=[],at=[],st=[],lt=[],ct=[],ut=1/nt,ht=new Vector3,dt=new Vector2,pt=new Vector3,mt=new Vector3,gt=new Vector3;let yt=0,bt=0;for(let vt=0;vt<=et.length-1;vt++)switch(vt){case 0:yt=et[vt+1].x-et[vt].x,bt=et[vt+1].y-et[vt].y,pt.x=bt*1,pt.y=-yt,pt.z=bt*0,gt.copy(pt),pt.normalize(),lt.push(pt.x,pt.y,pt.z);break;case et.length-1:lt.push(gt.x,gt.y,gt.z);break;default:yt=et[vt+1].x-et[vt].x,bt=et[vt+1].y-et[vt].y,pt.x=bt*1,pt.y=-yt,pt.z=bt*0,mt.copy(pt),pt.x+=gt.x,pt.y+=gt.y,pt.z+=gt.z,pt.normalize(),lt.push(pt.x,pt.y,pt.z),gt.copy(mt)}for(let vt=0;vt<=nt;vt++){const xt=rt+vt*ut*it,kt=Math.sin(xt),St=Math.cos(xt);for(let Tt=0;Tt<=et.length-1;Tt++){ht.x=et[Tt].x*kt,ht.y=et[Tt].y,ht.z=et[Tt].x*St,at.push(ht.x,ht.y,ht.z),dt.x=vt/nt,dt.y=Tt/(et.length-1),st.push(dt.x,dt.y);const At=lt[3*Tt+0]*kt,Et=lt[3*Tt+1],$t=lt[3*Tt+0]*St;ct.push(At,Et,$t)}}for(let vt=0;vt0&&xt(!0),nt>0&&xt(!1)),this.setIndex(ut),this.setAttribute("position",new Float32BufferAttribute(ht,3)),this.setAttribute("normal",new Float32BufferAttribute(dt,3)),this.setAttribute("uv",new Float32BufferAttribute(pt,2));function vt(){const kt=new Vector3,St=new Vector3;let Tt=0;const At=(nt-et)/rt;for(let Et=0;Et<=ot;Et++){const $t=[],Dt=Et/ot,jt=Dt*(nt-et)+et;for(let Pt=0;Pt<=it;Pt++){const Ct=Pt/it,wt=Ct*lt+st,It=Math.sin(wt),Ot=Math.cos(wt);St.x=jt*It,St.y=-Dt*rt+yt,St.z=jt*Ot,ht.push(St.x,St.y,St.z),kt.set(It,At,Ot).normalize(),dt.push(kt.x,kt.y,kt.z),pt.push(Ct,1-Dt),$t.push(mt++)}gt.push($t)}for(let Et=0;Et.9&&At<.1&&(xt<.2&&(at[vt+0]+=1),kt<.2&&(at[vt+2]+=1),St<.2&&(at[vt+4]+=1))}}function dt(vt){ot.push(vt.x,vt.y,vt.z)}function pt(vt,xt){const kt=vt*3;xt.x=et[kt+0],xt.y=et[kt+1],xt.z=et[kt+2]}function mt(){const vt=new Vector3,xt=new Vector3,kt=new Vector3,St=new Vector3,Tt=new Vector2,At=new Vector2,Et=new Vector2;for(let $t=0,Dt=0;$t80*nt){st=ct=tt[0],lt=ut=tt[1];for(let mt=nt;mtct&&(ct=ht),dt>ut&&(ut=dt);pt=Math.max(ct-st,ut-lt),pt=pt!==0?1/pt:0}return earcutLinked(ot,at,nt,st,lt,pt),at}};function linkedList(tt,et,nt,rt,it){let ot,at;if(it===signedArea(tt,et,nt,rt)>0)for(ot=et;ot=et;ot-=rt)at=insertNode(ot,tt[ot],tt[ot+1],at);return at&&equals(at,at.next)&&(removeNode(at),at=at.next),at}function filterPoints(tt,et){if(!tt)return tt;et||(et=tt);let nt=tt,rt;do if(rt=!1,!nt.steiner&&(equals(nt,nt.next)||area(nt.prev,nt,nt.next)===0)){if(removeNode(nt),nt=et=nt.prev,nt===nt.next)break;rt=!0}else nt=nt.next;while(rt||nt!==et);return et}function earcutLinked(tt,et,nt,rt,it,ot,at){if(!tt)return;!at&&ot&&indexCurve(tt,rt,it,ot);let st=tt,lt,ct;for(;tt.prev!==tt.next;){if(lt=tt.prev,ct=tt.next,ot?isEarHashed(tt,rt,it,ot):isEar(tt)){et.push(lt.i/nt),et.push(tt.i/nt),et.push(ct.i/nt),removeNode(tt),tt=ct.next,st=ct.next;continue}if(tt=ct,tt===st){at?at===1?(tt=cureLocalIntersections(filterPoints(tt),et,nt),earcutLinked(tt,et,nt,rt,it,ot,2)):at===2&&splitEarcut(tt,et,nt,rt,it,ot):earcutLinked(filterPoints(tt),et,nt,rt,it,ot,1);break}}}function isEar(tt){const et=tt.prev,nt=tt,rt=tt.next;if(area(et,nt,rt)>=0)return!1;let it=tt.next.next;for(;it!==tt.prev;){if(pointInTriangle(et.x,et.y,nt.x,nt.y,rt.x,rt.y,it.x,it.y)&&area(it.prev,it,it.next)>=0)return!1;it=it.next}return!0}function isEarHashed(tt,et,nt,rt){const it=tt.prev,ot=tt,at=tt.next;if(area(it,ot,at)>=0)return!1;const st=it.xot.x?it.x>at.x?it.x:at.x:ot.x>at.x?ot.x:at.x,ut=it.y>ot.y?it.y>at.y?it.y:at.y:ot.y>at.y?ot.y:at.y,ht=zOrder(st,lt,et,nt,rt),dt=zOrder(ct,ut,et,nt,rt);let pt=tt.prevZ,mt=tt.nextZ;for(;pt&&pt.z>=ht&&mt&&mt.z<=dt;){if(pt!==tt.prev&&pt!==tt.next&&pointInTriangle(it.x,it.y,ot.x,ot.y,at.x,at.y,pt.x,pt.y)&&area(pt.prev,pt,pt.next)>=0||(pt=pt.prevZ,mt!==tt.prev&&mt!==tt.next&&pointInTriangle(it.x,it.y,ot.x,ot.y,at.x,at.y,mt.x,mt.y)&&area(mt.prev,mt,mt.next)>=0))return!1;mt=mt.nextZ}for(;pt&&pt.z>=ht;){if(pt!==tt.prev&&pt!==tt.next&&pointInTriangle(it.x,it.y,ot.x,ot.y,at.x,at.y,pt.x,pt.y)&&area(pt.prev,pt,pt.next)>=0)return!1;pt=pt.prevZ}for(;mt&&mt.z<=dt;){if(mt!==tt.prev&&mt!==tt.next&&pointInTriangle(it.x,it.y,ot.x,ot.y,at.x,at.y,mt.x,mt.y)&&area(mt.prev,mt,mt.next)>=0)return!1;mt=mt.nextZ}return!0}function cureLocalIntersections(tt,et,nt){let rt=tt;do{const it=rt.prev,ot=rt.next.next;!equals(it,ot)&&intersects(it,rt,rt.next,ot)&&locallyInside(it,ot)&&locallyInside(ot,it)&&(et.push(it.i/nt),et.push(rt.i/nt),et.push(ot.i/nt),removeNode(rt),removeNode(rt.next),rt=tt=ot),rt=rt.next}while(rt!==tt);return filterPoints(rt)}function splitEarcut(tt,et,nt,rt,it,ot){let at=tt;do{let st=at.next.next;for(;st!==at.prev;){if(at.i!==st.i&&isValidDiagonal(at,st)){let lt=splitPolygon(at,st);at=filterPoints(at,at.next),lt=filterPoints(lt,lt.next),earcutLinked(at,et,nt,rt,it,ot),earcutLinked(lt,et,nt,rt,it,ot);return}st=st.next}at=at.next}while(at!==tt)}function eliminateHoles(tt,et,nt,rt){const it=[];let ot,at,st,lt,ct;for(ot=0,at=et.length;ot=nt.next.y&&nt.next.y!==nt.y){const dt=nt.x+(it-nt.y)*(nt.next.x-nt.x)/(nt.next.y-nt.y);if(dt<=rt&&dt>ot){if(ot=dt,dt===rt){if(it===nt.y)return nt;if(it===nt.next.y)return nt.next}at=nt.x=nt.x&&nt.x>=lt&&rt!==nt.x&&pointInTriangle(itat.x||nt.x===at.x&§orContainsSector(at,nt)))&&(at=nt,ut=ht)),nt=nt.next;while(nt!==st);return at}function sectorContainsSector(tt,et){return area(tt.prev,tt,et.prev)<0&&area(et.next,tt,tt.next)<0}function indexCurve(tt,et,nt,rt){let it=tt;do it.z===null&&(it.z=zOrder(it.x,it.y,et,nt,rt)),it.prevZ=it.prev,it.nextZ=it.next,it=it.next;while(it!==tt);it.prevZ.nextZ=null,it.prevZ=null,sortLinked(it)}function sortLinked(tt){let et,nt,rt,it,ot,at,st,lt,ct=1;do{for(nt=tt,tt=null,ot=null,at=0;nt;){for(at++,rt=nt,st=0,et=0;et0||lt>0&&rt;)st!==0&&(lt===0||!rt||nt.z<=rt.z)?(it=nt,nt=nt.nextZ,st--):(it=rt,rt=rt.nextZ,lt--),ot?ot.nextZ=it:tt=it,it.prevZ=ot,ot=it;nt=rt}ot.nextZ=null,ct*=2}while(at>1);return tt}function zOrder(tt,et,nt,rt,it){return tt=32767*(tt-nt)*it,et=32767*(et-rt)*it,tt=(tt|tt<<8)&16711935,tt=(tt|tt<<4)&252645135,tt=(tt|tt<<2)&858993459,tt=(tt|tt<<1)&1431655765,et=(et|et<<8)&16711935,et=(et|et<<4)&252645135,et=(et|et<<2)&858993459,et=(et|et<<1)&1431655765,tt|et<<1}function getLeftmost(tt){let et=tt,nt=tt;do(et.x=0&&(tt-at)*(rt-st)-(nt-at)*(et-st)>=0&&(nt-at)*(ot-st)-(it-at)*(rt-st)>=0}function isValidDiagonal(tt,et){return tt.next.i!==et.i&&tt.prev.i!==et.i&&!intersectsPolygon(tt,et)&&(locallyInside(tt,et)&&locallyInside(et,tt)&&middleInside(tt,et)&&(area(tt.prev,tt,et.prev)||area(tt,et.prev,et))||equals(tt,et)&&area(tt.prev,tt,tt.next)>0&&area(et.prev,et,et.next)>0)}function area(tt,et,nt){return(et.y-tt.y)*(nt.x-et.x)-(et.x-tt.x)*(nt.y-et.y)}function equals(tt,et){return tt.x===et.x&&tt.y===et.y}function intersects(tt,et,nt,rt){const it=sign$2(area(tt,et,nt)),ot=sign$2(area(tt,et,rt)),at=sign$2(area(nt,rt,tt)),st=sign$2(area(nt,rt,et));return!!(it!==ot&&at!==st||it===0&&onSegment(tt,nt,et)||ot===0&&onSegment(tt,rt,et)||at===0&&onSegment(nt,tt,rt)||st===0&&onSegment(nt,et,rt))}function onSegment(tt,et,nt){return et.x<=Math.max(tt.x,nt.x)&&et.x>=Math.min(tt.x,nt.x)&&et.y<=Math.max(tt.y,nt.y)&&et.y>=Math.min(tt.y,nt.y)}function sign$2(tt){return tt>0?1:tt<0?-1:0}function intersectsPolygon(tt,et){let nt=tt;do{if(nt.i!==tt.i&&nt.next.i!==tt.i&&nt.i!==et.i&&nt.next.i!==et.i&&intersects(nt,nt.next,tt,et))return!0;nt=nt.next}while(nt!==tt);return!1}function locallyInside(tt,et){return area(tt.prev,tt,tt.next)<0?area(tt,et,tt.next)>=0&&area(tt,tt.prev,et)>=0:area(tt,et,tt.prev)<0||area(tt,tt.next,et)<0}function middleInside(tt,et){let nt=tt,rt=!1;const it=(tt.x+et.x)/2,ot=(tt.y+et.y)/2;do nt.y>ot!=nt.next.y>ot&&nt.next.y!==nt.y&&it<(nt.next.x-nt.x)*(ot-nt.y)/(nt.next.y-nt.y)+nt.x&&(rt=!rt),nt=nt.next;while(nt!==tt);return rt}function splitPolygon(tt,et){const nt=new Node$1(tt.i,tt.x,tt.y),rt=new Node$1(et.i,et.x,et.y),it=tt.next,ot=et.prev;return tt.next=et,et.prev=tt,nt.next=it,it.prev=nt,rt.next=nt,nt.prev=rt,ot.next=rt,rt.prev=ot,rt}function insertNode(tt,et,nt,rt){const it=new Node$1(tt,et,nt);return rt?(it.next=rt.next,it.prev=rt,rt.next.prev=it,rt.next=it):(it.prev=it,it.next=it),it}function removeNode(tt){tt.next.prev=tt.prev,tt.prev.next=tt.next,tt.prevZ&&(tt.prevZ.nextZ=tt.nextZ),tt.nextZ&&(tt.nextZ.prevZ=tt.prevZ)}function Node$1(tt,et,nt){this.i=tt,this.x=et,this.y=nt,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea(tt,et,nt,rt){let it=0;for(let ot=et,at=nt-rt;ot2&&tt[et-1].equals(tt[0])&&tt.pop()}function addContour(tt,et){for(let nt=0;ntNumber.EPSILON){const pn=Math.sqrt(wn),kn=Math.sqrt(In*In+An*An),Dn=_n.x-mn/pn,un=_n.y+cn/pn,Zt=Pn.x-An/kn,Xt=Pn.y+In/kn,Sn=((Zt-Dn)*An-(Xt-un)*In)/(cn*An-mn*In);$n=Dn+cn*Sn-Qt.x,Nn=un+mn*Sn-Qt.y;const Rn=$n*$n+Nn*Nn;if(Rn<=2)return new Vector2($n,Nn);Tn=Math.sqrt(Rn/2)}else{let pn=!1;cn>Number.EPSILON?In>Number.EPSILON&&(pn=!0):cn<-Number.EPSILON?In<-Number.EPSILON&&(pn=!0):Math.sign(mn)===Math.sign(An)&&(pn=!0),pn?($n=-mn,Nn=cn,Tn=Math.sqrt(wn)):($n=cn,Nn=mn,Tn=Math.sqrt(wn/2))}return new Vector2($n/Tn,Nn/Tn)}const Ft=[];for(let Qt=0,_n=wt.length,Pn=_n-1,$n=Qt+1;Qt<_n;Qt++,Pn++,$n++)Pn===_n&&(Pn=0),$n===_n&&($n=0),Ft[Qt]=zt(wt[Qt],wt[Pn],wt[$n]);const Nt=[];let Ut,Mt=Ft.concat();for(let Qt=0,_n=jt.length;Qt<_n;Qt++){const Pn=jt[Qt];Ut=[];for(let $n=0,Nn=Pn.length,Tn=Nn-1,cn=$n+1;$n=0;Qt--){const _n=Qt/yt,Pn=pt*Math.cos(_n*Math.PI/2),$n=mt*Math.sin(_n*Math.PI/2)+gt;for(let Nn=0,Tn=wt.length;Nn=0;){const $n=Pn;let Nn=Pn-1;Nn<0&&(Nn=Qt.length-1);for(let Tn=0,cn=ut+yt*2;Tn0)&&pt.push(xt,kt,Tt),(bt!==rt-1||lt0!=et>0&&this.version++,this._sheen=et}get clearcoat(){return this._clearcoat}set clearcoat(et){this._clearcoat>0!=et>0&&this.version++,this._clearcoat=et}get iridescence(){return this._iridescence}set iridescence(et){this._iridescence>0!=et>0&&this.version++,this._iridescence=et}get transmission(){return this._transmission}set transmission(et){this._transmission>0!=et>0&&this.version++,this._transmission=et}copy(et){return super.copy(et),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=et.clearcoat,this.clearcoatMap=et.clearcoatMap,this.clearcoatRoughness=et.clearcoatRoughness,this.clearcoatRoughnessMap=et.clearcoatRoughnessMap,this.clearcoatNormalMap=et.clearcoatNormalMap,this.clearcoatNormalScale.copy(et.clearcoatNormalScale),this.ior=et.ior,this.iridescence=et.iridescence,this.iridescenceMap=et.iridescenceMap,this.iridescenceIOR=et.iridescenceIOR,this.iridescenceThicknessRange=[...et.iridescenceThicknessRange],this.iridescenceThicknessMap=et.iridescenceThicknessMap,this.sheen=et.sheen,this.sheenColor.copy(et.sheenColor),this.sheenColorMap=et.sheenColorMap,this.sheenRoughness=et.sheenRoughness,this.sheenRoughnessMap=et.sheenRoughnessMap,this.transmission=et.transmission,this.transmissionMap=et.transmissionMap,this.thickness=et.thickness,this.thicknessMap=et.thicknessMap,this.attenuationDistance=et.attenuationDistance,this.attenuationColor.copy(et.attenuationColor),this.specularIntensity=et.specularIntensity,this.specularIntensityMap=et.specularIntensityMap,this.specularColor.copy(et.specularColor),this.specularColorMap=et.specularColorMap,this}}class MeshPhongMaterial extends Material{constructor(et){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Color$1(16777215),this.specular=new Color$1(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=TangentSpaceNormalMap,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=MultiplyOperation,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(et)}copy(et){return super.copy(et),this.color.copy(et.color),this.specular.copy(et.specular),this.shininess=et.shininess,this.map=et.map,this.lightMap=et.lightMap,this.lightMapIntensity=et.lightMapIntensity,this.aoMap=et.aoMap,this.aoMapIntensity=et.aoMapIntensity,this.emissive.copy(et.emissive),this.emissiveMap=et.emissiveMap,this.emissiveIntensity=et.emissiveIntensity,this.bumpMap=et.bumpMap,this.bumpScale=et.bumpScale,this.normalMap=et.normalMap,this.normalMapType=et.normalMapType,this.normalScale.copy(et.normalScale),this.displacementMap=et.displacementMap,this.displacementScale=et.displacementScale,this.displacementBias=et.displacementBias,this.specularMap=et.specularMap,this.alphaMap=et.alphaMap,this.envMap=et.envMap,this.combine=et.combine,this.reflectivity=et.reflectivity,this.refractionRatio=et.refractionRatio,this.wireframe=et.wireframe,this.wireframeLinewidth=et.wireframeLinewidth,this.wireframeLinecap=et.wireframeLinecap,this.wireframeLinejoin=et.wireframeLinejoin,this.flatShading=et.flatShading,this.fog=et.fog,this}}class MeshToonMaterial extends Material{constructor(et){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Color$1(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=TangentSpaceNormalMap,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(et)}copy(et){return super.copy(et),this.color.copy(et.color),this.map=et.map,this.gradientMap=et.gradientMap,this.lightMap=et.lightMap,this.lightMapIntensity=et.lightMapIntensity,this.aoMap=et.aoMap,this.aoMapIntensity=et.aoMapIntensity,this.emissive.copy(et.emissive),this.emissiveMap=et.emissiveMap,this.emissiveIntensity=et.emissiveIntensity,this.bumpMap=et.bumpMap,this.bumpScale=et.bumpScale,this.normalMap=et.normalMap,this.normalMapType=et.normalMapType,this.normalScale.copy(et.normalScale),this.displacementMap=et.displacementMap,this.displacementScale=et.displacementScale,this.displacementBias=et.displacementBias,this.alphaMap=et.alphaMap,this.wireframe=et.wireframe,this.wireframeLinewidth=et.wireframeLinewidth,this.wireframeLinecap=et.wireframeLinecap,this.wireframeLinejoin=et.wireframeLinejoin,this.fog=et.fog,this}}class MeshNormalMaterial extends Material{constructor(et){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=TangentSpaceNormalMap,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(et)}copy(et){return super.copy(et),this.bumpMap=et.bumpMap,this.bumpScale=et.bumpScale,this.normalMap=et.normalMap,this.normalMapType=et.normalMapType,this.normalScale.copy(et.normalScale),this.displacementMap=et.displacementMap,this.displacementScale=et.displacementScale,this.displacementBias=et.displacementBias,this.wireframe=et.wireframe,this.wireframeLinewidth=et.wireframeLinewidth,this.flatShading=et.flatShading,this}}class MeshLambertMaterial extends Material{constructor(et){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Color$1(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=MultiplyOperation,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(et)}copy(et){return super.copy(et),this.color.copy(et.color),this.map=et.map,this.lightMap=et.lightMap,this.lightMapIntensity=et.lightMapIntensity,this.aoMap=et.aoMap,this.aoMapIntensity=et.aoMapIntensity,this.emissive.copy(et.emissive),this.emissiveMap=et.emissiveMap,this.emissiveIntensity=et.emissiveIntensity,this.specularMap=et.specularMap,this.alphaMap=et.alphaMap,this.envMap=et.envMap,this.combine=et.combine,this.reflectivity=et.reflectivity,this.refractionRatio=et.refractionRatio,this.wireframe=et.wireframe,this.wireframeLinewidth=et.wireframeLinewidth,this.wireframeLinecap=et.wireframeLinecap,this.wireframeLinejoin=et.wireframeLinejoin,this.fog=et.fog,this}}class MeshMatcapMaterial extends Material{constructor(et){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Color$1(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=TangentSpaceNormalMap,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(et)}copy(et){return super.copy(et),this.defines={MATCAP:""},this.color.copy(et.color),this.matcap=et.matcap,this.map=et.map,this.bumpMap=et.bumpMap,this.bumpScale=et.bumpScale,this.normalMap=et.normalMap,this.normalMapType=et.normalMapType,this.normalScale.copy(et.normalScale),this.displacementMap=et.displacementMap,this.displacementScale=et.displacementScale,this.displacementBias=et.displacementBias,this.alphaMap=et.alphaMap,this.flatShading=et.flatShading,this.fog=et.fog,this}}class LineDashedMaterial extends LineBasicMaterial{constructor(et){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(et)}copy(et){return super.copy(et),this.scale=et.scale,this.dashSize=et.dashSize,this.gapSize=et.gapSize,this}}function arraySlice(tt,et,nt){return isTypedArray$2(tt)?new tt.constructor(tt.subarray(et,nt!==void 0?nt:tt.length)):tt.slice(et,nt)}function convertArray(tt,et,nt){return!tt||!nt&&tt.constructor===et?tt:typeof et.BYTES_PER_ELEMENT=="number"?new et(tt):Array.prototype.slice.call(tt)}function isTypedArray$2(tt){return ArrayBuffer.isView(tt)&&!(tt instanceof DataView)}function getKeyframeOrder(tt){function et(it,ot){return tt[it]-tt[ot]}const nt=tt.length,rt=new Array(nt);for(let it=0;it!==nt;++it)rt[it]=it;return rt.sort(et),rt}function sortedArray(tt,et,nt){const rt=tt.length,it=new tt.constructor(rt);for(let ot=0,at=0;at!==rt;++ot){const st=nt[ot]*et;for(let lt=0;lt!==et;++lt)it[at++]=tt[st+lt]}return it}function flattenJSON(tt,et,nt,rt){let it=1,ot=tt[0];for(;ot!==void 0&&ot[rt]===void 0;)ot=tt[it++];if(ot===void 0)return;let at=ot[rt];if(at!==void 0)if(Array.isArray(at))do at=ot[rt],at!==void 0&&(et.push(ot.time),nt.push.apply(nt,at)),ot=tt[it++];while(ot!==void 0);else if(at.toArray!==void 0)do at=ot[rt],at!==void 0&&(et.push(ot.time),at.toArray(nt,nt.length)),ot=tt[it++];while(ot!==void 0);else do at=ot[rt],at!==void 0&&(et.push(ot.time),nt.push(at)),ot=tt[it++];while(ot!==void 0)}function subclip(tt,et,nt,rt,it=30){const ot=tt.clone();ot.name=et;const at=[];for(let lt=0;lt=rt)){ht.push(ct.times[pt]);for(let gt=0;gtot.tracks[lt].times[0]&&(st=ot.tracks[lt].times[0]);for(let lt=0;lt=st.times[mt]){const bt=mt*ht+ut,vt=bt+ht-ut;gt=arraySlice(st.values,bt,vt)}else{const bt=st.createInterpolant(),vt=ut,xt=ht-ut;bt.evaluate(ot),gt=arraySlice(bt.resultBuffer,vt,xt)}lt==="quaternion"&&new Quaternion().fromArray(gt).normalize().conjugate().toArray(gt);const yt=ct.times.length;for(let bt=0;bt=ot)){const st=nt[1];et=ot)break t}at=rt,rt=0;break n}break e}for(;rt>>1;etnt;)--at;if(++at,ot!==0||at!==it){ot>=at&&(at=Math.max(at,1),ot=at-1);const st=this.getValueSize();this.times=arraySlice(rt,ot,at),this.values=arraySlice(this.values,ot*st,at*st)}return this}validate(){let et=!0;const nt=this.getValueSize();nt-Math.floor(nt)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),et=!1);const rt=this.times,it=this.values,ot=rt.length;ot===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),et=!1);let at=null;for(let st=0;st!==ot;st++){const lt=rt[st];if(typeof lt=="number"&&isNaN(lt)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,st,lt),et=!1;break}if(at!==null&&at>lt){console.error("THREE.KeyframeTrack: Out of order keys.",this,st,lt,at),et=!1;break}at=lt}if(it!==void 0&&isTypedArray$2(it))for(let st=0,lt=it.length;st!==lt;++st){const ct=it[st];if(isNaN(ct)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,st,ct),et=!1;break}}return et}optimize(){const et=arraySlice(this.times),nt=arraySlice(this.values),rt=this.getValueSize(),it=this.getInterpolation()===InterpolateSmooth,ot=et.length-1;let at=1;for(let st=1;st0){et[at]=et[ot];for(let st=ot*rt,lt=at*rt,ct=0;ct!==rt;++ct)nt[lt+ct]=nt[st+ct];++at}return at!==et.length?(this.times=arraySlice(et,0,at),this.values=arraySlice(nt,0,at*rt)):(this.times=et,this.values=nt),this}clone(){const et=arraySlice(this.times,0),nt=arraySlice(this.values,0),rt=this.constructor,it=new rt(this.name,et,nt);return it.createInterpolant=this.createInterpolant,it}}KeyframeTrack.prototype.TimeBufferType=Float32Array;KeyframeTrack.prototype.ValueBufferType=Float32Array;KeyframeTrack.prototype.DefaultInterpolation=InterpolateLinear;class BooleanKeyframeTrack extends KeyframeTrack{}BooleanKeyframeTrack.prototype.ValueTypeName="bool";BooleanKeyframeTrack.prototype.ValueBufferType=Array;BooleanKeyframeTrack.prototype.DefaultInterpolation=InterpolateDiscrete;BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear=void 0;BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class ColorKeyframeTrack extends KeyframeTrack{}ColorKeyframeTrack.prototype.ValueTypeName="color";class NumberKeyframeTrack extends KeyframeTrack{}NumberKeyframeTrack.prototype.ValueTypeName="number";class QuaternionLinearInterpolant extends Interpolant{constructor(et,nt,rt,it){super(et,nt,rt,it)}interpolate_(et,nt,rt,it){const ot=this.resultBuffer,at=this.sampleValues,st=this.valueSize,lt=(rt-nt)/(it-nt);let ct=et*st;for(let ut=ct+st;ct!==ut;ct+=4)Quaternion.slerpFlat(ot,0,at,ct-st,at,ct,lt);return ot}}class QuaternionKeyframeTrack extends KeyframeTrack{InterpolantFactoryMethodLinear(et){return new QuaternionLinearInterpolant(this.times,this.values,this.getValueSize(),et)}}QuaternionKeyframeTrack.prototype.ValueTypeName="quaternion";QuaternionKeyframeTrack.prototype.DefaultInterpolation=InterpolateLinear;QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class StringKeyframeTrack extends KeyframeTrack{}StringKeyframeTrack.prototype.ValueTypeName="string";StringKeyframeTrack.prototype.ValueBufferType=Array;StringKeyframeTrack.prototype.DefaultInterpolation=InterpolateDiscrete;StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear=void 0;StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class VectorKeyframeTrack extends KeyframeTrack{}VectorKeyframeTrack.prototype.ValueTypeName="vector";class AnimationClip{constructor(et,nt=-1,rt,it=NormalAnimationBlendMode){this.name=et,this.tracks=rt,this.duration=nt,this.blendMode=it,this.uuid=generateUUID$1(),this.duration<0&&this.resetDuration()}static parse(et){const nt=[],rt=et.tracks,it=1/(et.fps||1);for(let at=0,st=rt.length;at!==st;++at)nt.push(parseKeyframeTrack(rt[at]).scale(it));const ot=new this(et.name,et.duration,nt,et.blendMode);return ot.uuid=et.uuid,ot}static toJSON(et){const nt=[],rt=et.tracks,it={name:et.name,duration:et.duration,tracks:nt,uuid:et.uuid,blendMode:et.blendMode};for(let ot=0,at=rt.length;ot!==at;++ot)nt.push(KeyframeTrack.toJSON(rt[ot]));return it}static CreateFromMorphTargetSequence(et,nt,rt,it){const ot=nt.length,at=[];for(let st=0;st1){const ht=ut[1];let dt=it[ht];dt||(it[ht]=dt=[]),dt.push(ct)}}const at=[];for(const st in it)at.push(this.CreateFromMorphTargetSequence(st,it[st],nt,rt));return at}static parseAnimation(et,nt){if(!et)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const rt=function(ht,dt,pt,mt,gt){if(pt.length!==0){const yt=[],bt=[];flattenJSON(pt,yt,bt,mt),yt.length!==0&>.push(new ht(dt,yt,bt))}},it=[],ot=et.name||"default",at=et.fps||30,st=et.blendMode;let lt=et.length||-1;const ct=et.hierarchy||[];for(let ht=0;ht{nt&&nt(ot),this.manager.itemEnd(et)},0),ot;if(loading[et]!==void 0){loading[et].push({onLoad:nt,onProgress:rt,onError:it});return}loading[et]=[],loading[et].push({onLoad:nt,onProgress:rt,onError:it});const at=new Request(et,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),st=this.mimeType,lt=this.responseType;fetch(at).then(ct=>{if(ct.status===200||ct.status===0){if(ct.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||ct.body===void 0||ct.body.getReader===void 0)return ct;const ut=loading[et],ht=ct.body.getReader(),dt=ct.headers.get("Content-Length"),pt=dt?parseInt(dt):0,mt=pt!==0;let gt=0;const yt=new ReadableStream({start(bt){vt();function vt(){ht.read().then(({done:xt,value:kt})=>{if(xt)bt.close();else{gt+=kt.byteLength;const St=new ProgressEvent("progress",{lengthComputable:mt,loaded:gt,total:pt});for(let Tt=0,At=ut.length;Tt{switch(lt){case"arraybuffer":return ct.arrayBuffer();case"blob":return ct.blob();case"document":return ct.text().then(ut=>new DOMParser().parseFromString(ut,st));case"json":return ct.json();default:if(st===void 0)return ct.text();{const ht=/charset="?([^;"\s]*)"?/i.exec(st),dt=ht&&ht[1]?ht[1].toLowerCase():void 0,pt=new TextDecoder(dt);return ct.arrayBuffer().then(mt=>pt.decode(mt))}}}).then(ct=>{Cache.add(et,ct);const ut=loading[et];delete loading[et];for(let ht=0,dt=ut.length;ht{const ut=loading[et];if(ut===void 0)throw this.manager.itemError(et),ct;delete loading[et];for(let ht=0,dt=ut.length;ht{this.manager.itemEnd(et)}),this.manager.itemStart(et)}setResponseType(et){return this.responseType=et,this}setMimeType(et){return this.mimeType=et,this}}class AnimationLoader extends Loader$2{constructor(et){super(et)}load(et,nt,rt,it){const ot=this,at=new FileLoader(this.manager);at.setPath(this.path),at.setRequestHeader(this.requestHeader),at.setWithCredentials(this.withCredentials),at.load(et,function(st){try{nt(ot.parse(JSON.parse(st)))}catch(lt){it?it(lt):console.error(lt),ot.manager.itemError(et)}},rt,it)}parse(et){const nt=[];for(let rt=0;rt0:it.vertexColors=et.vertexColors),et.uniforms!==void 0)for(const ot in et.uniforms){const at=et.uniforms[ot];switch(it.uniforms[ot]={},at.type){case"t":it.uniforms[ot].value=rt(at.value);break;case"c":it.uniforms[ot].value=new Color$1().setHex(at.value);break;case"v2":it.uniforms[ot].value=new Vector2().fromArray(at.value);break;case"v3":it.uniforms[ot].value=new Vector3().fromArray(at.value);break;case"v4":it.uniforms[ot].value=new Vector4().fromArray(at.value);break;case"m3":it.uniforms[ot].value=new Matrix3().fromArray(at.value);break;case"m4":it.uniforms[ot].value=new Matrix4().fromArray(at.value);break;default:it.uniforms[ot].value=at.value}}if(et.defines!==void 0&&(it.defines=et.defines),et.vertexShader!==void 0&&(it.vertexShader=et.vertexShader),et.fragmentShader!==void 0&&(it.fragmentShader=et.fragmentShader),et.extensions!==void 0)for(const ot in et.extensions)it.extensions[ot]=et.extensions[ot];if(et.shading!==void 0&&(it.flatShading=et.shading===1),et.size!==void 0&&(it.size=et.size),et.sizeAttenuation!==void 0&&(it.sizeAttenuation=et.sizeAttenuation),et.map!==void 0&&(it.map=rt(et.map)),et.matcap!==void 0&&(it.matcap=rt(et.matcap)),et.alphaMap!==void 0&&(it.alphaMap=rt(et.alphaMap)),et.bumpMap!==void 0&&(it.bumpMap=rt(et.bumpMap)),et.bumpScale!==void 0&&(it.bumpScale=et.bumpScale),et.normalMap!==void 0&&(it.normalMap=rt(et.normalMap)),et.normalMapType!==void 0&&(it.normalMapType=et.normalMapType),et.normalScale!==void 0){let ot=et.normalScale;Array.isArray(ot)===!1&&(ot=[ot,ot]),it.normalScale=new Vector2().fromArray(ot)}return et.displacementMap!==void 0&&(it.displacementMap=rt(et.displacementMap)),et.displacementScale!==void 0&&(it.displacementScale=et.displacementScale),et.displacementBias!==void 0&&(it.displacementBias=et.displacementBias),et.roughnessMap!==void 0&&(it.roughnessMap=rt(et.roughnessMap)),et.metalnessMap!==void 0&&(it.metalnessMap=rt(et.metalnessMap)),et.emissiveMap!==void 0&&(it.emissiveMap=rt(et.emissiveMap)),et.emissiveIntensity!==void 0&&(it.emissiveIntensity=et.emissiveIntensity),et.specularMap!==void 0&&(it.specularMap=rt(et.specularMap)),et.specularIntensityMap!==void 0&&(it.specularIntensityMap=rt(et.specularIntensityMap)),et.specularColorMap!==void 0&&(it.specularColorMap=rt(et.specularColorMap)),et.envMap!==void 0&&(it.envMap=rt(et.envMap)),et.envMapIntensity!==void 0&&(it.envMapIntensity=et.envMapIntensity),et.reflectivity!==void 0&&(it.reflectivity=et.reflectivity),et.refractionRatio!==void 0&&(it.refractionRatio=et.refractionRatio),et.lightMap!==void 0&&(it.lightMap=rt(et.lightMap)),et.lightMapIntensity!==void 0&&(it.lightMapIntensity=et.lightMapIntensity),et.aoMap!==void 0&&(it.aoMap=rt(et.aoMap)),et.aoMapIntensity!==void 0&&(it.aoMapIntensity=et.aoMapIntensity),et.gradientMap!==void 0&&(it.gradientMap=rt(et.gradientMap)),et.clearcoatMap!==void 0&&(it.clearcoatMap=rt(et.clearcoatMap)),et.clearcoatRoughnessMap!==void 0&&(it.clearcoatRoughnessMap=rt(et.clearcoatRoughnessMap)),et.clearcoatNormalMap!==void 0&&(it.clearcoatNormalMap=rt(et.clearcoatNormalMap)),et.clearcoatNormalScale!==void 0&&(it.clearcoatNormalScale=new Vector2().fromArray(et.clearcoatNormalScale)),et.iridescenceMap!==void 0&&(it.iridescenceMap=rt(et.iridescenceMap)),et.iridescenceThicknessMap!==void 0&&(it.iridescenceThicknessMap=rt(et.iridescenceThicknessMap)),et.transmissionMap!==void 0&&(it.transmissionMap=rt(et.transmissionMap)),et.thicknessMap!==void 0&&(it.thicknessMap=rt(et.thicknessMap)),et.sheenColorMap!==void 0&&(it.sheenColorMap=rt(et.sheenColorMap)),et.sheenRoughnessMap!==void 0&&(it.sheenRoughnessMap=rt(et.sheenRoughnessMap)),it}setTextures(et){return this.textures=et,this}static createMaterialFromType(et){const nt={ShadowMaterial,SpriteMaterial,RawShaderMaterial,ShaderMaterial,PointsMaterial,MeshPhysicalMaterial,MeshStandardMaterial,MeshPhongMaterial,MeshToonMaterial,MeshNormalMaterial,MeshLambertMaterial,MeshDepthMaterial,MeshDistanceMaterial,MeshBasicMaterial,MeshMatcapMaterial,LineDashedMaterial,LineBasicMaterial,Material};return new nt[et]}}class LoaderUtils{static decodeText(et){if(typeof TextDecoder<"u")return new TextDecoder().decode(et);let nt="";for(let rt=0,it=et.length;rt0){const lt=new LoadingManager(nt);ot=new ImageLoader(lt),ot.setCrossOrigin(this.crossOrigin);for(let ct=0,ut=et.length;ct0){it=new ImageLoader(this.manager),it.setCrossOrigin(this.crossOrigin);for(let at=0,st=et.length;at"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(et){return this.options=et,this}load(et,nt,rt,it){et===void 0&&(et=""),this.path!==void 0&&(et=this.path+et),et=this.manager.resolveURL(et);const ot=this,at=Cache.get(et);if(at!==void 0)return ot.manager.itemStart(et),setTimeout(function(){nt&&nt(at),ot.manager.itemEnd(et)},0),at;const st={};st.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",st.headers=this.requestHeader,fetch(et,st).then(function(lt){return lt.blob()}).then(function(lt){return createImageBitmap(lt,Object.assign(ot.options,{colorSpaceConversion:"none"}))}).then(function(lt){Cache.add(et,lt),nt&&nt(lt),ot.manager.itemEnd(et)}).catch(function(lt){it&&it(lt),ot.manager.itemError(et),ot.manager.itemEnd(et)}),ot.manager.itemStart(et)}}let _context$1;const AudioContext={getContext:function(){return _context$1===void 0&&(_context$1=new(window.AudioContext||window.webkitAudioContext)),_context$1},setContext:function(tt){_context$1=tt}};class AudioLoader extends Loader$2{constructor(et){super(et)}load(et,nt,rt,it){const ot=this,at=new FileLoader(this.manager);at.setResponseType("arraybuffer"),at.setPath(this.path),at.setRequestHeader(this.requestHeader),at.setWithCredentials(this.withCredentials),at.load(et,function(st){try{const lt=st.slice(0);AudioContext.getContext().decodeAudioData(lt,function(ut){nt(ut)})}catch(lt){it?it(lt):console.error(lt),ot.manager.itemError(et)}},rt,it)}}class HemisphereLightProbe extends LightProbe{constructor(et,nt,rt=1){super(void 0,rt),this.isHemisphereLightProbe=!0;const it=new Color$1().set(et),ot=new Color$1().set(nt),at=new Vector3(it.r,it.g,it.b),st=new Vector3(ot.r,ot.g,ot.b),lt=Math.sqrt(Math.PI),ct=lt*Math.sqrt(.75);this.sh.coefficients[0].copy(at).add(st).multiplyScalar(lt),this.sh.coefficients[1].copy(at).sub(st).multiplyScalar(ct)}}class AmbientLightProbe extends LightProbe{constructor(et,nt=1){super(void 0,nt),this.isAmbientLightProbe=!0;const rt=new Color$1().set(et);this.sh.coefficients[0].set(rt.r,rt.g,rt.b).multiplyScalar(2*Math.sqrt(Math.PI))}}const _eyeRight=new Matrix4,_eyeLeft=new Matrix4,_projectionMatrix=new Matrix4;class StereoCamera{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new PerspectiveCamera,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new PerspectiveCamera,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(et){const nt=this._cache;if(nt.focus!==et.focus||nt.fov!==et.fov||nt.aspect!==et.aspect*this.aspect||nt.near!==et.near||nt.far!==et.far||nt.zoom!==et.zoom||nt.eyeSep!==this.eyeSep){nt.focus=et.focus,nt.fov=et.fov,nt.aspect=et.aspect*this.aspect,nt.near=et.near,nt.far=et.far,nt.zoom=et.zoom,nt.eyeSep=this.eyeSep,_projectionMatrix.copy(et.projectionMatrix);const it=nt.eyeSep/2,ot=it*nt.near/nt.focus,at=nt.near*Math.tan(DEG2RAD$1*nt.fov*.5)/nt.zoom;let st,lt;_eyeLeft.elements[12]=-it,_eyeRight.elements[12]=it,st=-at*nt.aspect+ot,lt=at*nt.aspect+ot,_projectionMatrix.elements[0]=2*nt.near/(lt-st),_projectionMatrix.elements[8]=(lt+st)/(lt-st),this.cameraL.projectionMatrix.copy(_projectionMatrix),st=-at*nt.aspect-ot,lt=at*nt.aspect-ot,_projectionMatrix.elements[0]=2*nt.near/(lt-st),_projectionMatrix.elements[8]=(lt+st)/(lt-st),this.cameraR.projectionMatrix.copy(_projectionMatrix)}this.cameraL.matrixWorld.copy(et.matrixWorld).multiply(_eyeLeft),this.cameraR.matrixWorld.copy(et.matrixWorld).multiply(_eyeRight)}}let Clock$1=class{constructor(et=!0){this.autoStart=et,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=now$5(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let et=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const nt=now$5();et=(nt-this.oldTime)/1e3,this.oldTime=nt,this.elapsedTime+=et}return et}};function now$5(){return(typeof performance>"u"?Date:performance).now()}const _position$1=new Vector3,_quaternion$1=new Quaternion,_scale$1=new Vector3,_orientation$1=new Vector3;class AudioListener extends Object3D{constructor(){super(),this.type="AudioListener",this.context=AudioContext.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Clock$1}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(et){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=et,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(et){return this.gain.gain.setTargetAtTime(et,this.context.currentTime,.01),this}updateMatrixWorld(et){super.updateMatrixWorld(et);const nt=this.context.listener,rt=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(_position$1,_quaternion$1,_scale$1),_orientation$1.set(0,0,-1).applyQuaternion(_quaternion$1),nt.positionX){const it=this.context.currentTime+this.timeDelta;nt.positionX.linearRampToValueAtTime(_position$1.x,it),nt.positionY.linearRampToValueAtTime(_position$1.y,it),nt.positionZ.linearRampToValueAtTime(_position$1.z,it),nt.forwardX.linearRampToValueAtTime(_orientation$1.x,it),nt.forwardY.linearRampToValueAtTime(_orientation$1.y,it),nt.forwardZ.linearRampToValueAtTime(_orientation$1.z,it),nt.upX.linearRampToValueAtTime(rt.x,it),nt.upY.linearRampToValueAtTime(rt.y,it),nt.upZ.linearRampToValueAtTime(rt.z,it)}else nt.setPosition(_position$1.x,_position$1.y,_position$1.z),nt.setOrientation(_orientation$1.x,_orientation$1.y,_orientation$1.z,rt.x,rt.y,rt.z)}}let Audio$1=class extends Object3D{constructor(et){super(),this.type="Audio",this.listener=et,this.context=et.context,this.gain=this.context.createGain(),this.gain.connect(et.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(et){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=et,this.connect(),this}setMediaElementSource(et){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(et),this.connect(),this}setMediaStreamSource(et){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(et),this.connect(),this}setBuffer(et){return this.buffer=et,this.sourceType="buffer",this.autoplay&&this.play(),this}play(et=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+et;const nt=this.context.createBufferSource();return nt.buffer=this.buffer,nt.loop=this.loop,nt.loopStart=this.loopStart,nt.loopEnd=this.loopEnd,nt.onended=this.onEnded.bind(this),nt.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=nt,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let et=1,nt=this.filters.length;et0){this.source.disconnect(this.filters[0]);for(let et=1,nt=this.filters.length;et0&&this._mixBufferRegionAdditive(rt,it,this._addIndex*nt,1,nt);for(let lt=nt,ct=nt+nt;lt!==ct;++lt)if(rt[lt]!==rt[lt+nt]){st.setValue(rt,it);break}}saveOriginalState(){const et=this.binding,nt=this.buffer,rt=this.valueSize,it=rt*this._origIndex;et.getValue(nt,it);for(let ot=rt,at=it;ot!==at;++ot)nt[ot]=nt[it+ot%rt];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const et=this.valueSize*3;this.binding.setValue(this.buffer,et)}_setAdditiveIdentityNumeric(){const et=this._addIndex*this.valueSize,nt=et+this.valueSize;for(let rt=et;rt=.5)for(let at=0;at!==ot;++at)et[nt+at]=et[rt+at]}_slerp(et,nt,rt,it){Quaternion.slerpFlat(et,nt,et,nt,et,rt,it)}_slerpAdditive(et,nt,rt,it,ot){const at=this._workIndex*ot;Quaternion.multiplyQuaternionsFlat(et,at,et,nt,et,rt),Quaternion.slerpFlat(et,nt,et,nt,et,at,it)}_lerp(et,nt,rt,it,ot){const at=1-it;for(let st=0;st!==ot;++st){const lt=nt+st;et[lt]=et[lt]*at+et[rt+st]*it}}_lerpAdditive(et,nt,rt,it,ot){for(let at=0;at!==ot;++at){const st=nt+at;et[st]=et[st]+et[rt+at]*it}}}const _RESERVED_CHARS_RE="\\[\\]\\.:\\/",_reservedRe=new RegExp("["+_RESERVED_CHARS_RE+"]","g"),_wordChar="[^"+_RESERVED_CHARS_RE+"]",_wordCharOrDot="[^"+_RESERVED_CHARS_RE.replace("\\.","")+"]",_directoryRe=/((?:WC+[\/:])*)/.source.replace("WC",_wordChar),_nodeRe=/(WCOD+)?/.source.replace("WCOD",_wordCharOrDot),_objectRe=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",_wordChar),_propertyRe=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",_wordChar),_trackRe=new RegExp("^"+_directoryRe+_nodeRe+_objectRe+_propertyRe+"$"),_supportedObjectNames=["material","materials","bones"];class Composite{constructor(et,nt,rt){const it=rt||PropertyBinding.parseTrackName(nt);this._targetGroup=et,this._bindings=et.subscribe_(nt,it)}getValue(et,nt){this.bind();const rt=this._targetGroup.nCachedObjects_,it=this._bindings[rt];it!==void 0&&it.getValue(et,nt)}setValue(et,nt){const rt=this._bindings;for(let it=this._targetGroup.nCachedObjects_,ot=rt.length;it!==ot;++it)rt[it].setValue(et,nt)}bind(){const et=this._bindings;for(let nt=this._targetGroup.nCachedObjects_,rt=et.length;nt!==rt;++nt)et[nt].bind()}unbind(){const et=this._bindings;for(let nt=this._targetGroup.nCachedObjects_,rt=et.length;nt!==rt;++nt)et[nt].unbind()}}class PropertyBinding{constructor(et,nt,rt){this.path=nt,this.parsedPath=rt||PropertyBinding.parseTrackName(nt),this.node=PropertyBinding.findNode(et,this.parsedPath.nodeName)||et,this.rootNode=et,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(et,nt,rt){return et&&et.isAnimationObjectGroup?new PropertyBinding.Composite(et,nt,rt):new PropertyBinding(et,nt,rt)}static sanitizeNodeName(et){return et.replace(/\s/g,"_").replace(_reservedRe,"")}static parseTrackName(et){const nt=_trackRe.exec(et);if(nt===null)throw new Error("PropertyBinding: Cannot parse trackName: "+et);const rt={nodeName:nt[2],objectName:nt[3],objectIndex:nt[4],propertyName:nt[5],propertyIndex:nt[6]},it=rt.nodeName&&rt.nodeName.lastIndexOf(".");if(it!==void 0&&it!==-1){const ot=rt.nodeName.substring(it+1);_supportedObjectNames.indexOf(ot)!==-1&&(rt.nodeName=rt.nodeName.substring(0,it),rt.objectName=ot)}if(rt.propertyName===null||rt.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+et);return rt}static findNode(et,nt){if(nt===void 0||nt===""||nt==="."||nt===-1||nt===et.name||nt===et.uuid)return et;if(et.skeleton){const rt=et.skeleton.getBoneByName(nt);if(rt!==void 0)return rt}if(et.children){const rt=function(ot){for(let at=0;at=ot){const ht=ot++,dt=et[ht];nt[dt.uuid]=ut,et[ut]=dt,nt[ct]=ht,et[ht]=lt;for(let pt=0,mt=it;pt!==mt;++pt){const gt=rt[pt],yt=gt[ht],bt=gt[ut];gt[ut]=yt,gt[ht]=bt}}}this.nCachedObjects_=ot}uncache(){const et=this._objects,nt=this._indicesByUUID,rt=this._bindings,it=rt.length;let ot=this.nCachedObjects_,at=et.length;for(let st=0,lt=arguments.length;st!==lt;++st){const ct=arguments[st],ut=ct.uuid,ht=nt[ut];if(ht!==void 0)if(delete nt[ut],ht0&&(nt[pt.uuid]=ht),et[ht]=pt,et.pop();for(let mt=0,gt=it;mt!==gt;++mt){const yt=rt[mt];yt[ht]=yt[dt],yt.pop()}}}this.nCachedObjects_=ot}subscribe_(et,nt){const rt=this._bindingsIndicesByPath;let it=rt[et];const ot=this._bindings;if(it!==void 0)return ot[it];const at=this._paths,st=this._parsedPaths,lt=this._objects,ct=lt.length,ut=this.nCachedObjects_,ht=new Array(ct);it=ot.length,rt[et]=it,at.push(et),st.push(nt),ot.push(ht);for(let dt=ut,pt=lt.length;dt!==pt;++dt){const mt=lt[dt];ht[dt]=new PropertyBinding(mt,et,nt)}return ht}unsubscribe_(et){const nt=this._bindingsIndicesByPath,rt=nt[et];if(rt!==void 0){const it=this._paths,ot=this._parsedPaths,at=this._bindings,st=at.length-1,lt=at[st],ct=et[st];nt[ct]=rt,at[rt]=lt,at.pop(),ot[rt]=ot[st],ot.pop(),it[rt]=it[st],it.pop()}}}class AnimationAction{constructor(et,nt,rt=null,it=nt.blendMode){this._mixer=et,this._clip=nt,this._localRoot=rt,this.blendMode=it;const ot=nt.tracks,at=ot.length,st=new Array(at),lt={endingStart:ZeroCurvatureEnding,endingEnd:ZeroCurvatureEnding};for(let ct=0;ct!==at;++ct){const ut=ot[ct].createInterpolant(null);st[ct]=ut,ut.settings=lt}this._interpolantSettings=lt,this._interpolants=st,this._propertyBindings=new Array(at),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=LoopRepeat,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(et){return this._startTime=et,this}setLoop(et,nt){return this.loop=et,this.repetitions=nt,this}setEffectiveWeight(et){return this.weight=et,this._effectiveWeight=this.enabled?et:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(et){return this._scheduleFading(et,0,1)}fadeOut(et){return this._scheduleFading(et,1,0)}crossFadeFrom(et,nt,rt){if(et.fadeOut(nt),this.fadeIn(nt),rt){const it=this._clip.duration,ot=et._clip.duration,at=ot/it,st=it/ot;et.warp(1,at,nt),this.warp(st,1,nt)}return this}crossFadeTo(et,nt,rt){return et.crossFadeFrom(this,nt,rt)}stopFading(){const et=this._weightInterpolant;return et!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(et)),this}setEffectiveTimeScale(et){return this.timeScale=et,this._effectiveTimeScale=this.paused?0:et,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(et){return this.timeScale=this._clip.duration/et,this.stopWarping()}syncWith(et){return this.time=et.time,this.timeScale=et.timeScale,this.stopWarping()}halt(et){return this.warp(this._effectiveTimeScale,0,et)}warp(et,nt,rt){const it=this._mixer,ot=it.time,at=this.timeScale;let st=this._timeScaleInterpolant;st===null&&(st=it._lendControlInterpolant(),this._timeScaleInterpolant=st);const lt=st.parameterPositions,ct=st.sampleValues;return lt[0]=ot,lt[1]=ot+rt,ct[0]=et/at,ct[1]=nt/at,this}stopWarping(){const et=this._timeScaleInterpolant;return et!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(et)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(et,nt,rt,it){if(!this.enabled){this._updateWeight(et);return}const ot=this._startTime;if(ot!==null){const lt=(et-ot)*rt;if(lt<0||rt===0)return;this._startTime=null,nt=rt*lt}nt*=this._updateTimeScale(et);const at=this._updateTime(nt),st=this._updateWeight(et);if(st>0){const lt=this._interpolants,ct=this._propertyBindings;switch(this.blendMode){case AdditiveAnimationBlendMode:for(let ut=0,ht=lt.length;ut!==ht;++ut)lt[ut].evaluate(at),ct[ut].accumulateAdditive(st);break;case NormalAnimationBlendMode:default:for(let ut=0,ht=lt.length;ut!==ht;++ut)lt[ut].evaluate(at),ct[ut].accumulate(it,st)}}}_updateWeight(et){let nt=0;if(this.enabled){nt=this.weight;const rt=this._weightInterpolant;if(rt!==null){const it=rt.evaluate(et)[0];nt*=it,et>rt.parameterPositions[1]&&(this.stopFading(),it===0&&(this.enabled=!1))}}return this._effectiveWeight=nt,nt}_updateTimeScale(et){let nt=0;if(!this.paused){nt=this.timeScale;const rt=this._timeScaleInterpolant;if(rt!==null){const it=rt.evaluate(et)[0];nt*=it,et>rt.parameterPositions[1]&&(this.stopWarping(),nt===0?this.paused=!0:this.timeScale=nt)}}return this._effectiveTimeScale=nt,nt}_updateTime(et){const nt=this._clip.duration,rt=this.loop;let it=this.time+et,ot=this._loopCount;const at=rt===LoopPingPong;if(et===0)return ot===-1?it:at&&(ot&1)===1?nt-it:it;if(rt===LoopOnce){ot===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(it>=nt)it=nt;else if(it<0)it=0;else{this.time=it;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=it,this._mixer.dispatchEvent({type:"finished",action:this,direction:et<0?-1:1})}}else{if(ot===-1&&(et>=0?(ot=0,this._setEndings(!0,this.repetitions===0,at)):this._setEndings(this.repetitions===0,!0,at)),it>=nt||it<0){const st=Math.floor(it/nt);it-=nt*st,ot+=Math.abs(st);const lt=this.repetitions-ot;if(lt<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,it=et>0?nt:0,this.time=it,this._mixer.dispatchEvent({type:"finished",action:this,direction:et>0?1:-1});else{if(lt===1){const ct=et<0;this._setEndings(ct,!ct,at)}else this._setEndings(!1,!1,at);this._loopCount=ot,this.time=it,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:st})}}else this.time=it;if(at&&(ot&1)===1)return nt-it}return it}_setEndings(et,nt,rt){const it=this._interpolantSettings;rt?(it.endingStart=ZeroSlopeEnding,it.endingEnd=ZeroSlopeEnding):(et?it.endingStart=this.zeroSlopeAtStart?ZeroSlopeEnding:ZeroCurvatureEnding:it.endingStart=WrapAroundEnding,nt?it.endingEnd=this.zeroSlopeAtEnd?ZeroSlopeEnding:ZeroCurvatureEnding:it.endingEnd=WrapAroundEnding)}_scheduleFading(et,nt,rt){const it=this._mixer,ot=it.time;let at=this._weightInterpolant;at===null&&(at=it._lendControlInterpolant(),this._weightInterpolant=at);const st=at.parameterPositions,lt=at.sampleValues;return st[0]=ot,lt[0]=nt,st[1]=ot+et,lt[1]=rt,this}}const _controlInterpolantsResultBuffer=new Float32Array(1);class AnimationMixer extends EventDispatcher$1{constructor(et){super(),this._root=et,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(et,nt){const rt=et._localRoot||this._root,it=et._clip.tracks,ot=it.length,at=et._propertyBindings,st=et._interpolants,lt=rt.uuid,ct=this._bindingsByRootAndName;let ut=ct[lt];ut===void 0&&(ut={},ct[lt]=ut);for(let ht=0;ht!==ot;++ht){const dt=it[ht],pt=dt.name;let mt=ut[pt];if(mt!==void 0)++mt.referenceCount,at[ht]=mt;else{if(mt=at[ht],mt!==void 0){mt._cacheIndex===null&&(++mt.referenceCount,this._addInactiveBinding(mt,lt,pt));continue}const gt=nt&&nt._propertyBindings[ht].binding.parsedPath;mt=new PropertyMixer(PropertyBinding.create(rt,pt,gt),dt.ValueTypeName,dt.getValueSize()),++mt.referenceCount,this._addInactiveBinding(mt,lt,pt),at[ht]=mt}st[ht].resultBuffer=mt.buffer}}_activateAction(et){if(!this._isActiveAction(et)){if(et._cacheIndex===null){const rt=(et._localRoot||this._root).uuid,it=et._clip.uuid,ot=this._actionsByClip[it];this._bindAction(et,ot&&ot.knownActions[0]),this._addInactiveAction(et,it,rt)}const nt=et._propertyBindings;for(let rt=0,it=nt.length;rt!==it;++rt){const ot=nt[rt];ot.useCount++===0&&(this._lendBinding(ot),ot.saveOriginalState())}this._lendAction(et)}}_deactivateAction(et){if(this._isActiveAction(et)){const nt=et._propertyBindings;for(let rt=0,it=nt.length;rt!==it;++rt){const ot=nt[rt];--ot.useCount===0&&(ot.restoreOriginalState(),this._takeBackBinding(ot))}this._takeBackAction(et)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const et=this;this.stats={actions:{get total(){return et._actions.length},get inUse(){return et._nActiveActions}},bindings:{get total(){return et._bindings.length},get inUse(){return et._nActiveBindings}},controlInterpolants:{get total(){return et._controlInterpolants.length},get inUse(){return et._nActiveControlInterpolants}}}}_isActiveAction(et){const nt=et._cacheIndex;return nt!==null&&nt=0;--rt)et[rt].stop();return this}update(et){et*=this.timeScale;const nt=this._actions,rt=this._nActiveActions,it=this.time+=et,ot=Math.sign(et),at=this._accuIndex^=1;for(let ct=0;ct!==rt;++ct)nt[ct]._update(it,et,ot,at);const st=this._bindings,lt=this._nActiveBindings;for(let ct=0;ct!==lt;++ct)st[ct].apply(at);return this}setTime(et){this.time=0;for(let nt=0;ntthis.max.x||et.ythis.max.y)}containsBox(et){return this.min.x<=et.min.x&&et.max.x<=this.max.x&&this.min.y<=et.min.y&&et.max.y<=this.max.y}getParameter(et,nt){return nt.set((et.x-this.min.x)/(this.max.x-this.min.x),(et.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(et){return!(et.max.xthis.max.x||et.max.ythis.max.y)}clampPoint(et,nt){return nt.copy(et).clamp(this.min,this.max)}distanceToPoint(et){return _vector$4.copy(et).clamp(this.min,this.max).sub(et).length()}intersect(et){return this.min.max(et.min),this.max.min(et.max),this}union(et){return this.min.min(et.min),this.max.max(et.max),this}translate(et){return this.min.add(et),this.max.add(et),this}equals(et){return et.min.equals(this.min)&&et.max.equals(this.max)}}const _startP=new Vector3,_startEnd=new Vector3;class Line3{constructor(et=new Vector3,nt=new Vector3){this.start=et,this.end=nt}set(et,nt){return this.start.copy(et),this.end.copy(nt),this}copy(et){return this.start.copy(et.start),this.end.copy(et.end),this}getCenter(et){return et.addVectors(this.start,this.end).multiplyScalar(.5)}delta(et){return et.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(et,nt){return this.delta(nt).multiplyScalar(et).add(this.start)}closestPointToPointParameter(et,nt){_startP.subVectors(et,this.start),_startEnd.subVectors(this.end,this.start);const rt=_startEnd.dot(_startEnd);let ot=_startEnd.dot(_startP)/rt;return nt&&(ot=clamp$5(ot,0,1)),ot}closestPointToPoint(et,nt,rt){const it=this.closestPointToPointParameter(et,nt);return this.delta(rt).multiplyScalar(it).add(this.start)}applyMatrix4(et){return this.start.applyMatrix4(et),this.end.applyMatrix4(et),this}equals(et){return et.start.equals(this.start)&&et.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const _vector$3=new Vector3;class SpotLightHelper extends Object3D{constructor(et,nt){super(),this.light=et,this.light.updateMatrixWorld(),this.matrix=et.matrixWorld,this.matrixAutoUpdate=!1,this.color=nt;const rt=new BufferGeometry,it=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let at=0,st=1,lt=32;at.99999)this.quaternion.set(0,0,0,1);else if(et.y<-.99999)this.quaternion.set(1,0,0,0);else{_axis.set(et.z,0,-et.x).normalize();const nt=Math.acos(et.y);this.quaternion.setFromAxisAngle(_axis,nt)}}setLength(et,nt=et*.2,rt=nt*.2){this.line.scale.set(1,Math.max(1e-4,et-nt),1),this.line.updateMatrix(),this.cone.scale.set(rt,nt,rt),this.cone.position.y=et,this.cone.updateMatrix()}setColor(et){this.line.material.color.set(et),this.cone.material.color.set(et)}copy(et){return super.copy(et,!1),this.line.copy(et.line),this.cone.copy(et.cone),this}}class AxesHelper extends LineSegments{constructor(et=1){const nt=[0,0,0,et,0,0,0,0,0,0,et,0,0,0,0,0,0,et],rt=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],it=new BufferGeometry;it.setAttribute("position",new Float32BufferAttribute(nt,3)),it.setAttribute("color",new Float32BufferAttribute(rt,3));const ot=new LineBasicMaterial({vertexColors:!0,toneMapped:!1});super(it,ot),this.type="AxesHelper"}setColors(et,nt,rt){const it=new Color$1,ot=this.geometry.attributes.color.array;return it.set(et),it.toArray(ot,0),it.toArray(ot,3),it.set(nt),it.toArray(ot,6),it.toArray(ot,9),it.set(rt),it.toArray(ot,12),it.toArray(ot,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class ShapePath{constructor(){this.type="ShapePath",this.color=new Color$1,this.subPaths=[],this.currentPath=null}moveTo(et,nt){return this.currentPath=new Path$1,this.subPaths.push(this.currentPath),this.currentPath.moveTo(et,nt),this}lineTo(et,nt){return this.currentPath.lineTo(et,nt),this}quadraticCurveTo(et,nt,rt,it){return this.currentPath.quadraticCurveTo(et,nt,rt,it),this}bezierCurveTo(et,nt,rt,it,ot,at){return this.currentPath.bezierCurveTo(et,nt,rt,it,ot,at),this}splineThru(et){return this.currentPath.splineThru(et),this}toShapes(et,nt){function rt(vt){const xt=[];for(let kt=0,St=vt.length;ktNumber.EPSILON){if(jt<0&&(Et=xt[At],Dt=-Dt,$t=xt[Tt],jt=-jt),vt.y$t.y)continue;if(vt.y===Et.y){if(vt.x===Et.x)return!0}else{const Pt=jt*(vt.x-Et.x)-Dt*(vt.y-Et.y);if(Pt===0)return!0;if(Pt<0)continue;St=!St}}else{if(vt.y!==Et.y)continue;if($t.x<=vt.x&&vt.x<=Et.x||Et.x<=vt.x&&vt.x<=$t.x)return!0}}return St}const ot=ShapeUtils.isClockWise,at=this.subPaths;if(at.length===0)return[];if(nt===!0)return rt(at);let st,lt,ct;const ut=[];if(at.length===1)return lt=at[0],ct=new Shape$1,ct.curves=lt.curves,ut.push(ct),ut;let ht=!ot(at[0].getPoints());ht=et?!ht:ht;const dt=[],pt=[];let mt=[],gt=0,yt;pt[gt]=void 0,mt[gt]=[];for(let vt=0,xt=at.length;vt1){let vt=!1,xt=0;for(let kt=0,St=pt.length;kt0&&vt===!1&&(mt=dt)}let bt;for(let vt=0,xt=pt.length;vt>-ct-14,rt[lt|256]=1024>>-ct-14|32768,it[lt]=-ct-1,it[lt|256]=-ct-1):ct<=15?(rt[lt]=ct+15<<10,rt[lt|256]=ct+15<<10|32768,it[lt]=13,it[lt|256]=13):ct<128?(rt[lt]=31744,rt[lt|256]=64512,it[lt]=24,it[lt|256]=24):(rt[lt]=31744,rt[lt|256]=64512,it[lt]=13,it[lt|256]=13)}const ot=new Uint32Array(2048),at=new Uint32Array(64),st=new Uint32Array(64);for(let lt=1;lt<1024;++lt){let ct=lt<<13,ut=0;for(;!(ct&8388608);)ct<<=1,ut-=8388608;ct&=-8388609,ut+=947912704,ot[lt]=ct|ut}for(let lt=1024;lt<2048;++lt)ot[lt]=939524096+(lt-1024<<13);for(let lt=1;lt<31;++lt)at[lt]=lt<<23;at[31]=1199570944,at[32]=2147483648;for(let lt=33;lt<63;++lt)at[lt]=2147483648+(lt-32<<23);at[63]=3347054592;for(let lt=1;lt<64;++lt)lt!==32&&(st[lt]=1024);return{floatView:et,uint32View:nt,baseTable:rt,shiftTable:it,mantissaTable:ot,exponentTable:at,offsetTable:st}}function toHalfFloat(tt){Math.abs(tt)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),tt=clamp$5(tt,-65504,65504),_tables.floatView[0]=tt;const et=_tables.uint32View[0],nt=et>>23&511;return _tables.baseTable[nt]+((et&8388607)>>_tables.shiftTable[nt])}function fromHalfFloat(tt){const et=tt>>10;return _tables.uint32View[0]=_tables.mantissaTable[_tables.offsetTable[et]+(tt&1023)]+_tables.exponentTable[et],_tables.floatView[0]}var DataUtils=Object.freeze({__proto__:null,toHalfFloat,fromHalfFloat});class ParametricGeometry extends BufferGeometry{constructor(){console.error("THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js"),super()}}class TextGeometry extends BufferGeometry{constructor(){console.error("THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js"),super()}}function FontLoader(){console.error("THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js")}function Font(){console.error("THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js")}function ImmediateRenderObject(){console.error("THREE.ImmediateRenderObject has been removed.")}class WebGLMultisampleRenderTarget extends WebGLRenderTarget{constructor(et,nt,rt){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the "samples" property to greater 0 to enable multisampling.'),super(et,nt,rt),this.samples=4}}class DataTexture2DArray extends DataArrayTexture{constructor(et,nt,rt,it){console.warn("THREE.DataTexture2DArray has been renamed to DataArrayTexture."),super(et,nt,rt,it)}}class DataTexture3D extends Data3DTexture{constructor(et,nt,rt,it){console.warn("THREE.DataTexture3D has been renamed to Data3DTexture."),super(et,nt,rt,it)}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:REVISION}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=REVISION);const THREE$1=Object.freeze(Object.defineProperty({__proto__:null,ACESFilmicToneMapping,AddEquation,AddOperation,AdditiveAnimationBlendMode,AdditiveBlending,AlphaFormat,AlwaysDepth,AlwaysStencilFunc,AmbientLight,AmbientLightProbe,AnimationClip,AnimationLoader,AnimationMixer,AnimationObjectGroup,AnimationUtils,ArcCurve,ArrayCamera,ArrowHelper,Audio:Audio$1,AudioAnalyser,AudioContext,AudioListener,AudioLoader,AxesHelper,BackSide,BasicDepthPacking,BasicShadowMap,Bone,BooleanKeyframeTrack,Box2,Box3,Box3Helper,BoxBufferGeometry:BoxGeometry,BoxGeometry,BoxHelper,BufferAttribute,BufferGeometry,BufferGeometryLoader,ByteType,Cache,Camera,CameraHelper,CanvasTexture,CapsuleBufferGeometry:CapsuleGeometry,CapsuleGeometry,CatmullRomCurve3,CineonToneMapping,CircleBufferGeometry:CircleGeometry,CircleGeometry,ClampToEdgeWrapping,Clock:Clock$1,Color:Color$1,ColorKeyframeTrack,ColorManagement,CompressedTexture,CompressedTextureLoader,ConeBufferGeometry:ConeGeometry,ConeGeometry,CubeCamera,CubeReflectionMapping,CubeRefractionMapping,CubeTexture,CubeTextureLoader,CubeUVReflectionMapping,CubicBezierCurve,CubicBezierCurve3,CubicInterpolant,CullFaceBack,CullFaceFront,CullFaceFrontBack,CullFaceNone,Curve:Curve$1,CurvePath,CustomBlending,CustomToneMapping,CylinderBufferGeometry:CylinderGeometry,CylinderGeometry,Cylindrical,Data3DTexture,DataArrayTexture,DataTexture,DataTexture2DArray,DataTexture3D,DataTextureLoader,DataUtils,DecrementStencilOp,DecrementWrapStencilOp,DefaultLoadingManager,DepthFormat,DepthStencilFormat,DepthTexture,DirectionalLight,DirectionalLightHelper,DiscreteInterpolant,DodecahedronBufferGeometry:DodecahedronGeometry,DodecahedronGeometry,DoubleSide,DstAlphaFactor,DstColorFactor,DynamicCopyUsage,DynamicDrawUsage,DynamicReadUsage,EdgesGeometry,EllipseCurve,EqualDepth,EqualStencilFunc,EquirectangularReflectionMapping,EquirectangularRefractionMapping,Euler,EventDispatcher:EventDispatcher$1,ExtrudeBufferGeometry:ExtrudeGeometry,ExtrudeGeometry,FileLoader,FlatShading,Float16BufferAttribute,Float32BufferAttribute,Float64BufferAttribute,FloatType,Fog,FogExp2,Font,FontLoader,FramebufferTexture,FrontSide,Frustum,GLBufferAttribute,GLSL1,GLSL3,GreaterDepth,GreaterEqualDepth,GreaterEqualStencilFunc,GreaterStencilFunc,GridHelper,Group,HalfFloatType,HemisphereLight,HemisphereLightHelper,HemisphereLightProbe,IcosahedronBufferGeometry:IcosahedronGeometry,IcosahedronGeometry,ImageBitmapLoader,ImageLoader,ImageUtils,ImmediateRenderObject,IncrementStencilOp,IncrementWrapStencilOp,InstancedBufferAttribute,InstancedBufferGeometry,InstancedInterleavedBuffer,InstancedMesh,Int16BufferAttribute,Int32BufferAttribute,Int8BufferAttribute,IntType,InterleavedBuffer,InterleavedBufferAttribute,Interpolant,InterpolateDiscrete,InterpolateLinear,InterpolateSmooth,InvertStencilOp,KeepStencilOp,KeyframeTrack,LOD,LatheBufferGeometry:LatheGeometry,LatheGeometry,Layers,LessDepth,LessEqualDepth,LessEqualStencilFunc,LessStencilFunc,Light,LightProbe,Line:Line$2,Line3,LineBasicMaterial,LineCurve,LineCurve3,LineDashedMaterial,LineLoop,LineSegments,LinearEncoding,LinearFilter,LinearInterpolant,LinearMipMapLinearFilter,LinearMipMapNearestFilter,LinearMipmapLinearFilter,LinearMipmapNearestFilter,LinearSRGBColorSpace:LinearSRGBColorSpace$1,LinearToneMapping,Loader:Loader$2,LoaderUtils,LoadingManager,LoopOnce,LoopPingPong,LoopRepeat,LuminanceAlphaFormat,LuminanceFormat,MOUSE,Material,MaterialLoader,MathUtils,Matrix3,Matrix4,MaxEquation,Mesh,MeshBasicMaterial,MeshDepthMaterial,MeshDistanceMaterial,MeshLambertMaterial,MeshMatcapMaterial,MeshNormalMaterial,MeshPhongMaterial,MeshPhysicalMaterial,MeshStandardMaterial,MeshToonMaterial,MinEquation,MirroredRepeatWrapping,MixOperation,MultiplyBlending,MultiplyOperation,NearestFilter,NearestMipMapLinearFilter,NearestMipMapNearestFilter,NearestMipmapLinearFilter,NearestMipmapNearestFilter,NeverDepth,NeverStencilFunc,NoBlending,NoColorSpace:NoColorSpace$1,NoToneMapping,NormalAnimationBlendMode,NormalBlending,NotEqualDepth,NotEqualStencilFunc,NumberKeyframeTrack,Object3D,ObjectLoader,ObjectSpaceNormalMap,OctahedronBufferGeometry:OctahedronGeometry,OctahedronGeometry,OneFactor,OneMinusDstAlphaFactor,OneMinusDstColorFactor,OneMinusSrcAlphaFactor,OneMinusSrcColorFactor,OrthographicCamera,PCFShadowMap,PCFSoftShadowMap,PMREMGenerator,ParametricGeometry,Path:Path$1,PerspectiveCamera,Plane,PlaneBufferGeometry:PlaneGeometry,PlaneGeometry,PlaneHelper,PointLight,PointLightHelper,Points,PointsMaterial,PolarGridHelper,PolyhedronBufferGeometry:PolyhedronGeometry,PolyhedronGeometry,PositionalAudio,PropertyBinding,PropertyMixer,QuadraticBezierCurve,QuadraticBezierCurve3,Quaternion,QuaternionKeyframeTrack,QuaternionLinearInterpolant,REVISION,RGBADepthPacking,RGBAFormat,RGBAIntegerFormat,RGBA_ASTC_10x10_Format,RGBA_ASTC_10x5_Format,RGBA_ASTC_10x6_Format,RGBA_ASTC_10x8_Format,RGBA_ASTC_12x10_Format,RGBA_ASTC_12x12_Format,RGBA_ASTC_4x4_Format,RGBA_ASTC_5x4_Format,RGBA_ASTC_5x5_Format,RGBA_ASTC_6x5_Format,RGBA_ASTC_6x6_Format,RGBA_ASTC_8x5_Format,RGBA_ASTC_8x6_Format,RGBA_ASTC_8x8_Format,RGBA_BPTC_Format,RGBA_ETC2_EAC_Format,RGBA_PVRTC_2BPPV1_Format,RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format,RGBA_S3TC_DXT3_Format,RGBA_S3TC_DXT5_Format,RGBFormat,RGB_ETC1_Format,RGB_ETC2_Format,RGB_PVRTC_2BPPV1_Format,RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format,RGFormat,RGIntegerFormat,RawShaderMaterial,Ray,Raycaster,RectAreaLight,RedFormat,RedIntegerFormat,ReinhardToneMapping,RepeatWrapping,ReplaceStencilOp,ReverseSubtractEquation,RingBufferGeometry:RingGeometry,RingGeometry,SRGBColorSpace:SRGBColorSpace$1,Scene,ShaderChunk,ShaderLib,ShaderMaterial,ShadowMaterial,Shape:Shape$1,ShapeBufferGeometry:ShapeGeometry,ShapeGeometry,ShapePath,ShapeUtils,ShortType,Skeleton,SkeletonHelper,SkinnedMesh,SmoothShading,Source:Source$1,Sphere,SphereBufferGeometry:SphereGeometry,SphereGeometry,Spherical,SphericalHarmonics3,SplineCurve,SpotLight,SpotLightHelper,Sprite,SpriteMaterial,SrcAlphaFactor,SrcAlphaSaturateFactor,SrcColorFactor,StaticCopyUsage,StaticDrawUsage,StaticReadUsage,StereoCamera,StreamCopyUsage,StreamDrawUsage,StreamReadUsage,StringKeyframeTrack,SubtractEquation,SubtractiveBlending,TOUCH,TangentSpaceNormalMap,TetrahedronBufferGeometry:TetrahedronGeometry,TetrahedronGeometry,TextGeometry,Texture,TextureLoader,TorusBufferGeometry:TorusGeometry,TorusGeometry,TorusKnotBufferGeometry:TorusKnotGeometry,TorusKnotGeometry,Triangle,TriangleFanDrawMode,TriangleStripDrawMode,TrianglesDrawMode,TubeBufferGeometry:TubeGeometry,TubeGeometry,UVMapping,Uint16BufferAttribute,Uint32BufferAttribute,Uint8BufferAttribute,Uint8ClampedBufferAttribute,Uniform,UniformsGroup,UniformsLib,UniformsUtils,UnsignedByteType,UnsignedInt248Type,UnsignedIntType,UnsignedShort4444Type,UnsignedShort5551Type,UnsignedShortType,VSMShadowMap,Vector2,Vector3,Vector4,VectorKeyframeTrack,VideoTexture,WebGL1Renderer,WebGL3DRenderTarget,WebGLArrayRenderTarget,WebGLCubeRenderTarget,WebGLMultipleRenderTargets,WebGLMultisampleRenderTarget,WebGLRenderTarget,WebGLRenderer,WebGLUtils,WireframeGeometry,WrapAroundEnding,ZeroCurvatureEnding,ZeroFactor,ZeroSlopeEnding,ZeroStencilOp,_SRGBAFormat,sRGBEncoding},Symbol.toStringTag,{value:"Module"})),variableVector3$1=new Vector3(0,0,0),outlineEffectColor=16777215,nodesAreRelatives=(tt,et)=>{var ot,at;if(!(tt!=null&&tt.ref_id)||!(et!=null&&et.ref_id))return!1;let nt=!1;const rt=tt.guests,it=et.guests;return((ot=tt.children)!=null&&ot.includes(et.ref_id)||(at=et.children)!=null&&at.includes(tt.ref_id))&&(nt=!0),(rt!=null&&rt.find(st=>st.ref_id===et.ref_id)||it!=null&&it.find(st=>st.ref_id===tt.ref_id))&&(nt=!0),nt},mock={exact:[{boost:0,date:1672152975,description:"The credit card debt and job growth in the US economy",episode_title:"Café ₿: #Bitcoin Holiday Hangout & @StatusMoneyUSA a #BTC Credit Card",guests:[{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"a3dbdb56-e228-4382-98bc-d4495ff6dfbd",twitter_handle:"samcallah"},{name:" taodejing2",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"4914799b-a230-4bee-95c9-cf3ac44b6b70",twitter_handle:"TyonClubhouse"},{name:" MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1607490976670519296/vhLAojMR_400x400.jpg",ref_id:"01d6ee68-c0ef-4ead-b2b7-7eb04694519e",twitter_handle:"MrHodl"},{name:" TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"57beb381-b9e8-4dd1-82f6-4e544a63146b",twitter_handle:"TomerStrolight"},{name:" VailshireCap",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"73c15965-ddad-4e32-9746-da92f5d24134",twitter_handle:"VailshireCap"},{name:"bergealex4",profile_picture:"https://pbs.twimg.com/profile_images/1273374628577247233/tYigkAZH_400x400.jpg",ref_id:"da4bb8ab-540d-4f88-a2a6-f3a3941c5b74",twitter_handle:"bergealex4"},{name:" LukeMikic21",profile_picture:"https://pbs.twimg.com/profile_images/1604626418708742147/gWyVLeqa_400x400.jpg",ref_id:"0a907108-f59f-420f-9986-79b0f060f690",twitter_handle:"LukeMikic21"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" majdmaksad",profile_picture:"https://pbs.twimg.com/profile_images/1483883774471516167/zvEjiCTO_400x400.jpg",ref_id:"1a63c59d-a760-4f8b-bba9-ddfd3cff9f33",twitter_handle:"majdmaksad"}],hosts:[{name:" PeterAnsel9",profile_picture:"https://pbs.twimg.com/profile_images/1607979298153197568/JqAbDyi__400x400.jpg",ref_id:"6cb2b160-fa27-4fac-9ccf-77886ba01521",twitter_handle:"PeterAnsel9"},{name:" NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"c61e3ff9-f540-4343-bc26-1c3a4b537b78",twitter_handle:"NeilJacobs"},{name:" nathanfast",profile_picture:"https://pbs.twimg.com/profile_images/1545758157103697920/RyLn465N_400x400.jpg",ref_id:"739d907e-cbc6-4a05-9246-45c7c5d2a853",twitter_handle:"nathanfast"},{name:"TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"cc057990-16d0-4588-83c7-1eb9734eb994",twitter_handle:"tyonclubhouse"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b27dcf88-bdfb-4433-b0fe-c9040dbf392f/11aa5648-d416-46f3-a66a-0750e9d71ccd.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"ada07186-c3fc-4b5e-b9c7-3ce54e1b94c7",show_title:"Swan.com",text:"I do want to ask you quickly about, you mentioned the credit card debt that is soaring and savings rates going down. It is a small percentage of the overall kind of US household net worth, which I believe is about well over 100 trillion, maybe 140,000,000,000,000. When housing prices were high. But it does seem like this 1 trillion or whatever of credit card debt, while it's serious, is still a fairly small percentage of overall US. Household net worth. And I was wondering if you could comment on that. Yeah, that's a great point, Terrence. And you got to think in terms of the strata of economics, right? So people who are generally wealthy and then sort of the middle class, which has been decimated, and then the poorer classes, this is obviously affecting really harshly the poorer classes, right. Inflation just crushes people in the lower classes, financially speaking. They have minimum wage jobs. We've talked about this many times on here, but you cannot survive on one minimum wage job. So maybe they have two or three. And then as the economy tightens, they're starting to get fired from some of these. The cost of goods and services is rapidly increasing. So they can't even afford their basic groceries. They may not be able to afford gas to drive to work. All of these things, they just get worse and worse. So it does affect the lower economic classes. Disproportionately that's what drives me nuts, right. That's what makes Bitcoin so beautiful, is those are the same classes who can benefit most strongly from Bitcoin, from a fair type of money instead of the unjust system that we have. So, yeah, it's affecting them. Now. I will say, though, that the wealth effect is real, too, and that affects the upper classes. Disproportionately why? Because wealthier people own more assets, right? They own houses, they own stocks, they own bonds, they own art, they own whatever. And the valuations of those kind of things have also come down dramatically. So we're actually seeing that across the board, which is sort of interesting. And you don't always see this. You only see this in like real recessions where the poor people are buying less of their normal goods and services, the consumer staples, and the wealthier people are actually buying less of their garbage that they buy diamond rings and pearls and boats and wealthy person things, yachts, those kind of sales are all significantly down as well. So it's affecting everybody, but it affects everybody. Disproportionately that makes a lot of sense. Yeah. Thank you for that breakdown. I wanted to ask you and Sam about job growth because Nick Temeros from the Wall Street Journal, the so called Fed whisperer who seems to have inside info sometimes on what the Fed is about to do, he said that incorrectly, that we've never seen a period like this where we've had so much job growth. This is part ways wrong. There is no job growth, but so little demand for any type of housing. Talking about the housing slump, and I posted in the Nest something from gaming grandpa La Urban Nerd at La Urban Nerd, who replied the job growth is a mirage will become very clear in the next few months. And then they posted, the alleged job growth and all these downward revisions, they seem to be all happening in a downward direction where they're off by over a million, 1.1 million jobs that never existed. And the Philadelphia Fed recently admitted that US jobs were overstated by at least 1.1 million. Sam Callahan had pointed this out to us at Swan, our great economist and researcher, and I was hoping both of you could comment on this. I've never been called an economist before. Oh, sorry. Hey, I mentioned it as a compliment. Yeah. No, I have been under the belief that the labor market is not as strong as being portrayed by government officials and Fed officials for a long time. And it's because of the methodology of how these things are calculated. The payrolls number uses these really large adjustments that are basically pulled out of thin air with, as we're seeing now, large backward revisions. And the Philly Fed themselves did a report. I think that's what's showing in the nest that a lot of these jobs in those payrolls weren't actually there. Right? So they were basically over a million that were set in the headline that were there are not there now. What is this, like, six months later? Eight months later? And that's usually what happens, but nobody really thinks about that, or nobody goes back and checks up on these revisions. But it's basically painting this picture that the labor force is stronger than it is. And we know that a lot of it is what Dr. Jeff was saying, how this is, like people thinking on second jobs. We know that the jolts, like the job openings that they always talk about, it's a lot of people basically being poached from other jobs, so there isn't any new jobs being created. It's people getting poached. And there's a lot of these, like, fake job postings where they put out, like, thousands of job openings. And then this one researcher went through them and applied to all of them and heard back from a very, very tiny percentage of them at all. And so that's the kind of numbers that are used in how these things are calculated. And you have to dig into the methodology, how they're calculated. Then they always point to the unemployment rate being low. But the US. Unemployment rate is low today, not because there's an actual increase of number of people working, but because the labor force itself is shrinking since COVID There's 3.5 million people that are no longer in the workforce. A lot of that is from early retirements as well as just regular retirements. Baby boomers retiring. And so that's a sign of a tight labor market and structurally tight labor market. There's not a lot of workers out there, and the Fed doesn't like that. The Fed wants to see the labor market gets some more slack into it. They want the unemployment rate to go up, but it's kind of hard to do that. When there's just not that many people actually in the active workforce. So there's like a misunderstanding of why the unemployment rate is even low. At 50 year lows is what you often hear. And so personally, I think that has the potential for a trapdoor effect where people think the labor market is stronger than it is until it's not. And oftentimes unemployment rate is reflected where it doesn't just creep up, it kind of spikes a little bit. And so that's what I think I expect to happen in Q one of 2023. We see actually more layoffs start to happen because of the Fed's overtightening and all these other factors. But yeah, that's kind of my summary of the labor market. I think it's a circus. There's a lot of the sharad being pushed out by the Fed officials and it's not as strong as people think. ",timestamp:"01:37:18-01:44:39",topics:["US economy","credit card debt","job growth","US labour market"],type:"twitter_space",weight:127.51501043433724},{boost:0,date:1672152975,description:"Dr. Jeff Ross, of Vailshire Capital, gives his Bitcoin and overall marco outlook for 2023",episode_title:"Café ₿: #Bitcoin Holiday Hangout & @StatusMoneyUSA a #BTC Credit Card",guests:[{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"a3dbdb56-e228-4382-98bc-d4495ff6dfbd",twitter_handle:"samcallah"},{name:" taodejing2",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"4914799b-a230-4bee-95c9-cf3ac44b6b70",twitter_handle:"TyonClubhouse"},{name:" MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1607490976670519296/vhLAojMR_400x400.jpg",ref_id:"01d6ee68-c0ef-4ead-b2b7-7eb04694519e",twitter_handle:"MrHodl"},{name:" TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"57beb381-b9e8-4dd1-82f6-4e544a63146b",twitter_handle:"TomerStrolight"},{name:" VailshireCap",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"73c15965-ddad-4e32-9746-da92f5d24134",twitter_handle:"VailshireCap"},{name:"bergealex4",profile_picture:"https://pbs.twimg.com/profile_images/1273374628577247233/tYigkAZH_400x400.jpg",ref_id:"da4bb8ab-540d-4f88-a2a6-f3a3941c5b74",twitter_handle:"bergealex4"},{name:" LukeMikic21",profile_picture:"https://pbs.twimg.com/profile_images/1604626418708742147/gWyVLeqa_400x400.jpg",ref_id:"0a907108-f59f-420f-9986-79b0f060f690",twitter_handle:"LukeMikic21"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" majdmaksad",profile_picture:"https://pbs.twimg.com/profile_images/1483883774471516167/zvEjiCTO_400x400.jpg",ref_id:"1a63c59d-a760-4f8b-bba9-ddfd3cff9f33",twitter_handle:"majdmaksad"}],hosts:[{name:" PeterAnsel9",profile_picture:"https://pbs.twimg.com/profile_images/1607979298153197568/JqAbDyi__400x400.jpg",ref_id:"6cb2b160-fa27-4fac-9ccf-77886ba01521",twitter_handle:"PeterAnsel9"},{name:" NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"c61e3ff9-f540-4343-bc26-1c3a4b537b78",twitter_handle:"NeilJacobs"},{name:" nathanfast",profile_picture:"https://pbs.twimg.com/profile_images/1545758157103697920/RyLn465N_400x400.jpg",ref_id:"739d907e-cbc6-4a05-9246-45c7c5d2a853",twitter_handle:"nathanfast"},{name:"TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"cc057990-16d0-4588-83c7-1eb9734eb994",twitter_handle:"tyonclubhouse"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/515f3625-8d91-439b-8d44-968fe6ab16de/19ec29f4-268c-4015-aa6e-245563dbc49d.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"2a0fb607-c735-4b09-809a-3c74cc61de97",show_title:"Swan.com",text:"have Dr. Jeff Ross from Valshire Capital. Welcome. I was hoping you could give us your usual sort of breakdown on the state of the markets and what you're seeing, how was the Christmas sales and so forth. Thank you. Yeah. Hey, Terrence, thanks for having me up. And hey, everybody. It's fun to hear you all. I hope you all had a great Christmas or just happy holidays and have had some good time off. It's been good for me. Been refreshing hanging out with family a bit here. I think the main thing, I spent a lot of time over the longer weekend kind of just looking from 30,000ft up at what's going on, kind of with macro and what's happening with bitcoin in particular. 2022 was kind of a rough year. It was a confusing year for a lot of people. I think that the setup still remains pretty rough. I think retail sales are just showing a continuously weakening consumer. Interestingly, consumer confidence is rising. I think it's because consumers think that inflation, or at least high inflation, isn't going to last forever, so they're getting more confident. But savings rates are near all time lows right now. Credit card usage is near all time highs. People are basically maxing out their credit cards. They're draining their savings. That bodes poorly. A lot of companies, if you've been paying attention to any earnings reports, most major companies are preparing for recession. They just say, yeah, it's inevitable, it's coming. So we have to kind of prepare for this. Companies that have lots of merchandise, they're having a really hard time selling it. Again, that's not good from a consumer perspective. And if you understand that the GDP in the US. 70% of the GDP, approximately 70%, is based on the consumer, based on consumption. So weak consumer just means a weak economy. So we still have the same setup we've had going for a while, right? We have a slowing economy, we have some disinflation, and we have a hawkish Fed, and we have those three factors that is just always historically poor for risk assets. So until something changes, you still got to be prepared for more downside. I said I was looking at the 30,000 foot view, so I'm really bearish at the moment, but I will tell you that I think we're moving along in bitcoin. I tweeted this out on Christmas a couple of days ago. As far as the four year kind of cycle goes for bitcoin, I think we're moving out of the year of widespread panic and disillusionment. That happened in 2018 and it happened again, I think, this last year in 2022. And I think we're moving into and we're probably already there in disinterest. What does disinterest mean? It basically means there's nobody really left who cares other than the hardcore bitcoiners, right? It's just us left. We have our little rooms, we keep each other motivated. We're encouraging each other. We're still dollar cost averaging. It's basically us left. The traders don't care anymore. There's no volatility in the space anymore. Most of the garbage crypto exchanges have gotten liquidated. There may be a few more to come still. I think there probably will be. I think we're going to see some bitcoin miners still go out of business before this is over. It's going to get worse before it gets better. But that period of disinterest is when new bull markets start. So I'm actually really encouraged the best businesses for bitcoin typically start during those periods of widespread panic and disillusionment. Basically when everybody else is panicking, that's when people, the creative people, get the best ideas for how they can make something better for the next go around. So that's what I'm looking at. I'm actually really encouraged that we're getting really close to a bottom. I think we still have more pain to come, but it's in the short term, in the next couple of quarters, I think, at the latest. And then I'm really encouraged. I was telling the people over at Bitcoin magazine, I think there's a really good chance we've hit a bottom in the price of bitcoin before the bitcoin covers in Miami. And then it's basically just up from there. So I think, by the way, I think the bull market will start out slowly again because we're still in this period of disinterest. I think most people won't believe it when we start, but it's setting the stage for 2024, and 2025 being just absolutely fantastic year. So I hope people are dollar costs averaging with me. If not, if you're a trader, that's fine too, but don't try to pick a bottom. That's very hard to do. But I'm very excited for people and my friends who are dollar costs averaging right now because I think finally we're going to have better days ahead by the end of 2023. I love that. Yeah. I think during this period of disinterest, there's also just people are not taking crypto and altcoins seriously because they've obviously failed and there's all this fraud with FTX and so forth. So it's a time for bitcoiners, the ones that are left to get to know each other even better and learn from each other and just go deeper, right, and maybe upsell ourselves or just increase our conviction. And like you said, this is a time when a lot of great ideas will come and creative people will people be more creative and hopefully come up with some new projects and ideas and startups that can really move the needle. I do want to ask you quickly about, you mentioned the credit card debt that is soaring and savings rates going down. It is a small percentage of the overall kind of US household net worth, which I believe is about well over 100 trillion, maybe 140,000,000,000,000. When housing prices were high. But it does seem like this 1 trillion or whatever of credit card debt, while it's serious, is still a fairly small percentage of overall US. Household net worth. And I was wondering if you could comment on that. Yeah, that's a great point, Terrence. And you got to think in terms of the strata of economics, right? So people who are generally wealthy and then sort of the middle class, which has been decimated, and then the poorer classes, this is obviously affecting really harshly the poorer classes, right. Inflation just crushes people in the lower classes, financially speaking. They have minimum wage jobs. We've talked about this many times on here, but you cannot survive on one minimum wage job. So maybe they have two or three. And then as the economy tightens, they're starting to get fired from some of these. The cost of goods and services is rapidly increasing. So they can't even afford their basic groceries. They may not be able to afford gas to drive to work. All of these things, they just get worse and worse. So it does affect the lower economic classes. Disproportionately that's what drives me nuts, right. That's what makes Bitcoin so beautiful, is those are the same classes who can benefit most strongly from Bitcoin, from a fair type of money instead of the unjust system that we have. So, yeah, it's affecting them. Now. I will say, though, that the wealth effect is real, too, and that affects the upper classes. Disproportionately why? Because wealthier people own more assets, right? They own houses, they own stocks, they own bonds, they own art, they own whatever. And the valuations of those kind of things have also come down dramatically. So we're actually seeing that across the board, which is sort of interesting. And you don't always see this. You only see this in like real recessions where the poor people are buying less of their normal goods and services, the consumer staples, and the wealthier people are actually buying less of their garbage that they buy diamond rings and pearls and boats and wealthy person things, yachts, those kind of sales are all significantly down as well. So it's affecting everybody, but it affects everybody. Disproportionately that makes a lot of sense. Yeah. Thank you for that breakdown. ",timestamp:"01:31:53-01:39:57",topics:["Jeff Ross","Bitcoin macro outlook","poor outlook for risk assets","hawkish US Fed","Disinflation","shitcoin failures"],type:"twitter_space",weight:122.72901871778198},{boost:0,date:1672152975,description:"Bitcoin regulations in America",episode_title:"Café ₿: #Bitcoin Holiday Hangout & @StatusMoneyUSA a #BTC Credit Card",guests:[{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"a3dbdb56-e228-4382-98bc-d4495ff6dfbd",twitter_handle:"samcallah"},{name:" taodejing2",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"4914799b-a230-4bee-95c9-cf3ac44b6b70",twitter_handle:"TyonClubhouse"},{name:" MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1607490976670519296/vhLAojMR_400x400.jpg",ref_id:"01d6ee68-c0ef-4ead-b2b7-7eb04694519e",twitter_handle:"MrHodl"},{name:" TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"57beb381-b9e8-4dd1-82f6-4e544a63146b",twitter_handle:"TomerStrolight"},{name:" VailshireCap",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"73c15965-ddad-4e32-9746-da92f5d24134",twitter_handle:"VailshireCap"},{name:"bergealex4",profile_picture:"https://pbs.twimg.com/profile_images/1273374628577247233/tYigkAZH_400x400.jpg",ref_id:"da4bb8ab-540d-4f88-a2a6-f3a3941c5b74",twitter_handle:"bergealex4"},{name:" LukeMikic21",profile_picture:"https://pbs.twimg.com/profile_images/1604626418708742147/gWyVLeqa_400x400.jpg",ref_id:"0a907108-f59f-420f-9986-79b0f060f690",twitter_handle:"LukeMikic21"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" majdmaksad",profile_picture:"https://pbs.twimg.com/profile_images/1483883774471516167/zvEjiCTO_400x400.jpg",ref_id:"1a63c59d-a760-4f8b-bba9-ddfd3cff9f33",twitter_handle:"majdmaksad"}],hosts:[{name:" PeterAnsel9",profile_picture:"https://pbs.twimg.com/profile_images/1607979298153197568/JqAbDyi__400x400.jpg",ref_id:"6cb2b160-fa27-4fac-9ccf-77886ba01521",twitter_handle:"PeterAnsel9"},{name:" NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"c61e3ff9-f540-4343-bc26-1c3a4b537b78",twitter_handle:"NeilJacobs"},{name:" nathanfast",profile_picture:"https://pbs.twimg.com/profile_images/1545758157103697920/RyLn465N_400x400.jpg",ref_id:"739d907e-cbc6-4a05-9246-45c7c5d2a853",twitter_handle:"nathanfast"},{name:"TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"cc057990-16d0-4588-83c7-1eb9734eb994",twitter_handle:"tyonclubhouse"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b27dcf88-bdfb-4433-b0fe-c9040dbf392f/11aa5648-d416-46f3-a66a-0750e9d71ccd.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"2969a789-41bf-4e23-8ab8-31a76c5a5754",show_title:"Swan.com",text:"very quickly, just before perhaps we could give the mic to Luke. But I just want to quickly echo what Sam was saying and it just pinned at the top. The report from Pierre Rashard and I think Jill Burnett at Block, where I think they've done a very fantastic job of dispelling a lot of the fun around the security budget and actually sort of introducing, perhaps not introducing, for everyone. But bringing back to the front a different way to discuss that, wherein, when we're discussing minors, we're really discussing finality and not security. And I think when you considered that under this optic, you can look at it in very different ways. That makes sense. Luke, go ahead. Yeah. To the discussion about America losing the war and really burdensome regulation being pushed for in America. What odds do you guys put on, say, like a Texas or even a shitcoin in Miami actually succeeding and forming their own independent state? I shared something in the nest. I think it was the former Russian president put out some very interesting and provocative predictions for the year 2030. But he talked about the possibility, probably a very small possibility, of a Texas forming like an allied state with Mexico. Obviously that's madness and probably won't happen in a long time, but what odds do you guys genuinely put on like a Texas succeeding from the US. If the US Tries to attack bitcoin? Yeah. The balkanization of the US. Has been discussed a lot about in Bitcoin circles. Tone Vase swears by it and thinks by 2030, 2035, you'll see the Balkanization. And I've put some thought into it. And if you think about it, what is one of the glue that is keeping a lot of these states together, even though ideologically they're radically different? Right. Like, people in California want a certain type of government. People in Texas want a certain type of government. People in Florida want a certain type of government. People in New York want a certain type of government. The glue that's keeping it together is the common currency. It's the US. Dollar. Right. So what happens if and Parker Lewis has touched upon this before in the past? What happens if all of a sudden state like Florida, Wyoming, starts putting bitcoin on its balance sheet and starts to realize that it doesn't need those federal dollars anymore, basically becoming self sufficient in a sense? Right. It's a very interesting question. And now think about how the marijuana industry has been treated in the United States, right? On a federal level, marijuana is illegal, right? But on a state level, it's thriving, right? California, Colorado, Oregon, washington State. So you can kind of see it in that direction. I think on a federal level, they're extremely hostile to bitcoin, obviously, because they get a tremendous amount of power from being able to control the monetary policy it funds themselves and also this world police type of outlook, right. The ability for the US government to place sanctions on entire countries through the office of foreign asset Control, that gives them a tremendous amount of power. Bitcoin is a threat to that. So obviously, I don't think on the federal level, I think on the federal level, bitcoin could be the last to be really accepted. But on a state level, that's a whole different conversation. I think states like Texas that get a tremendous amount of economic opportunity from the bitcoin mining industry, I think they're going to try to protect it tooth and nail. It's very similar to how the marijuana industry played out. I think that's what's going to happen perhaps on a state level. And I think that as soon as a state that brave state starts to put bitcoin on their balance sheet, man, in my opinion, that's game over. Like it's done right now. Hold on, Nico. You don't think the federal government is not going to enforce the constitution and not allow that to happen with military? I mean, that's like seceding, dude. That's a big deal. I think that things are going to get so crazy, and I think that we're all feeling it right now. I think that we're all feeling the fourth turning vibes. The corruption, the theft is so blatant, so in your face. The $1.7 trillion optimus bill, bro, I'm not going to get into any of the political stuff in there, but they had $65 million just into the research of fish, bro, there was a point in the bill. I'm not kidding. This is 100% real. There was $120,000 being dedicated to researching whether thanos the fictional character from the Avengers movies, whether he could really snap his fingers or not. Right? I couldn't agree with you more. There's a bill about a bee crossing on a fucking highway, but $3.5 million dedicated to bees? The theft is so blatant, bro, it's in your face, right? And it goes to are we at the very dying ends of an empire, the American empire, right? Empires usually last 300 years. We're about that point. It's so blatant. It's so corrupt. It's so in your face. And I don't know, man, if I'm a state like Texas, if I'm a state like Florida, ideologically I'm very different. And I'm seeing this and all of a sudden I have an alternative. I have an option to opt out of that entirely. I don't know why you wouldn't take that. Right? And then that goes to the other theory that. Ex former president of Russia said that you could potentially see an American civil war. I don't want to talk about that because war is terrible. War is hell. Of course we'd want to avoid that, but, I mean, if the momentum of history is going in that direction, so be it. But I don't know what's going to happen. On a macro level, I think predicting that it's, like, almost impossible. But what I can tell you, and I think what makes me, as an individual extremely optimistic, is that if my wealth is in bitcoin, my family's future, my future is protected because I can go where I'm treated best. If it means picking up and leaving and taking everything with me, I can only by writing down twelve words or 24 words. And I think that by itself is going to radically change the world. Because what I think governments are doing today is I think that they have a lot of their citizens hostage, and then they force their citizens to use money that steals from them. And perhaps in the United States, it's not quite noticeable because the inflation rate is only two to 4%. It got all the way up to 7%. But if you live in Argentina, where that inflation rate is 92%, man, bitcoin isn't a speculation for you. Bitcoin is survival. Those people already understand what it means to live in a country where their government currency fails, right? So that's what I'm bullish on, man. I'm bullish on individuals. I'm bullish on Central and Latin America. I'm bullish on what's going on over there in the United States. We shall see. I'm going to fight like hell. I love my country. I'm a first generation immigrant. I love not what the American government stands for, but what the original vision of America stood for. And I love it, and I'm going to fight for it. I'm going to stay here to the very bitter end. But, you know, if it comes to being thrown in a gulag because I'm writing twelve words or taking, like, uprooting my my life and my family's life and moving to El Salvador, then so be it. Obviously, I don't want to do that. I want to fight. And I want to win the race of adoption, get the ideals of bitcoin into the mainstream consciousness of America so that we could avoid that fucking war altogether. And I think that's what I try to do every single day. And that's what swan tries to do every single day. And that's what all bitcoiners try to do every single day. We fight this. We fight this information war, this psychological warfare that's happening every single day. It's trench warfare on the battlegrounds of the internet, man. And I think we're going to win. I think bitcoin's incentives are going to be any type of coercion that they try to jump, that they try to throw at us. Anyways, I'm sorry for ranting a little bit it's just a very passionate topic for me. ",timestamp:"01:05:44-01:15:03",topics:["Bitcoin regulation","bitcoin attack"],type:"twitter_space",weight:79.79824311351389},{boost:0,date:1672152975,description:"Discussion on Dmitry Medvedev's 2023 global predictions, the US losing the Bitcoin regulation war and Texas succeeding from the union due to bitcoin",episode_title:"Café ₿: #Bitcoin Holiday Hangout & @StatusMoneyUSA a #BTC Credit Card",guests:[{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"a3dbdb56-e228-4382-98bc-d4495ff6dfbd",twitter_handle:"samcallah"},{name:" taodejing2",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"4914799b-a230-4bee-95c9-cf3ac44b6b70",twitter_handle:"TyonClubhouse"},{name:" MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1607490976670519296/vhLAojMR_400x400.jpg",ref_id:"01d6ee68-c0ef-4ead-b2b7-7eb04694519e",twitter_handle:"MrHodl"},{name:" TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"57beb381-b9e8-4dd1-82f6-4e544a63146b",twitter_handle:"TomerStrolight"},{name:" VailshireCap",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"73c15965-ddad-4e32-9746-da92f5d24134",twitter_handle:"VailshireCap"},{name:"bergealex4",profile_picture:"https://pbs.twimg.com/profile_images/1273374628577247233/tYigkAZH_400x400.jpg",ref_id:"da4bb8ab-540d-4f88-a2a6-f3a3941c5b74",twitter_handle:"bergealex4"},{name:" LukeMikic21",profile_picture:"https://pbs.twimg.com/profile_images/1604626418708742147/gWyVLeqa_400x400.jpg",ref_id:"0a907108-f59f-420f-9986-79b0f060f690",twitter_handle:"LukeMikic21"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" majdmaksad",profile_picture:"https://pbs.twimg.com/profile_images/1483883774471516167/zvEjiCTO_400x400.jpg",ref_id:"1a63c59d-a760-4f8b-bba9-ddfd3cff9f33",twitter_handle:"majdmaksad"}],hosts:[{name:" PeterAnsel9",profile_picture:"https://pbs.twimg.com/profile_images/1607979298153197568/JqAbDyi__400x400.jpg",ref_id:"6cb2b160-fa27-4fac-9ccf-77886ba01521",twitter_handle:"PeterAnsel9"},{name:" NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"c61e3ff9-f540-4343-bc26-1c3a4b537b78",twitter_handle:"NeilJacobs"},{name:" nathanfast",profile_picture:"https://pbs.twimg.com/profile_images/1545758157103697920/RyLn465N_400x400.jpg",ref_id:"739d907e-cbc6-4a05-9246-45c7c5d2a853",twitter_handle:"nathanfast"},{name:"TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"cc057990-16d0-4588-83c7-1eb9734eb994",twitter_handle:"tyonclubhouse"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/515f3625-8d91-439b-8d44-968fe6ab16de/19ec29f4-268c-4015-aa6e-245563dbc49d.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"12445bad-9deb-4bff-ba8a-e8a490b00cc5",show_title:"Swan.com",text:"Luke, go ahead. Yeah. To the discussion about America losing the war and really burdensome regulation being pushed for in America. What odds do you guys put on, say, like a Texas or even a shitcoin in Miami actually succeeding and forming their own independent state? I shared something in the nest. I think it was the former Russian president put out some very interesting and provocative predictions for the year 2030. But he talked about the possibility, probably a very small possibility, of a Texas forming like an allied state with Mexico. Obviously that's madness and probably won't happen in a long time, but what odds do you guys genuinely put on like a Texas succeeding from the US. If the US Tries to attack bitcoin? Yeah. The balkanization of the US. Has been discussed a lot about in Bitcoin circles. Tone Vase swears by it and thinks by 2030, 2035, you'll see the Balkanization. And I've put some thought into it. And if you think about it, what is one of the glue that is keeping a lot of these states together, even though ideologically they're radically different? Right. Like, people in California want a certain type of government. People in Texas want a certain type of government. People in Florida want a certain type of government. People in New York want a certain type of government. The glue that's keeping it together is the common currency. It's the US. Dollar. Right. So what happens if and Parker Lewis has touched upon this before in the past? What happens if all of a sudden state like Florida, Wyoming, starts putting bitcoin on its balance sheet and starts to realize that it doesn't need those federal dollars anymore, basically becoming self sufficient in a sense? Right. It's a very interesting question. And now think about how the marijuana industry has been treated in the United States, right? On a federal level, marijuana is illegal, right? But on a state level, it's thriving, right? California, Colorado, Oregon, washington State. So you can kind of see it in that direction. I think on a federal level, they're extremely hostile to bitcoin, obviously, because they get a tremendous amount of power from being able to control the monetary policy it funds themselves and also this world police type of outlook, right. The ability for the US government to place sanctions on entire countries through the office of foreign asset Control, that gives them a tremendous amount of power. Bitcoin is a threat to that. So obviously, I don't think on the federal level, I think on the federal level, bitcoin could be the last to be really accepted. But on a state level, that's a whole different conversation. I think states like Texas that get a tremendous amount of economic opportunity from the bitcoin mining industry, I think they're going to try to protect it tooth and nail. It's very similar to how the marijuana industry played out. I think that's what's going to happen perhaps on a state level. And I think that as soon as a state that brave state starts to put bitcoin on their balance sheet, man, in my opinion, that's game over. Like it's done right now. Hold on, Nico. You don't think the federal government is not going to enforce the constitution and not allow that to happen with military? I mean, that's like seceding, dude. That's a big deal. I think that things are going to get so crazy, and I think that we're all feeling it right now. I think that we're all feeling the fourth turning vibes. The corruption, the theft is so blatant, so in your face. The $1.7 trillion optimus bill, bro, I'm not going to get into any of the political stuff in there, but they had $65 million just into the research of fish, bro, there was a point in the bill. I'm not kidding. This is 100% real. There was $120,000 being dedicated to researching whether thanos the fictional character from the Avengers movies, whether he could really snap his fingers or not. Right? I couldn't agree with you more. There's a bill about a bee crossing on a fucking highway, but $3.5 million dedicated to bees? The theft is so blatant, bro, it's in your face, right? And it goes to are we at the very dying ends of an empire, the American empire, right? Empires usually last 300 years. We're about that point. It's so blatant. It's so corrupt. It's so in your face. And I don't know, man, if I'm a state like Texas, if I'm a state like Florida, ideologically I'm very different. And I'm seeing this and all of a sudden I have an alternative. I have an option to opt out of that entirely. I don't know why you wouldn't take that. Right? And then that goes to the other theory that. Ex former president of Russia said that you could potentially see an American civil war. I don't want to talk about that because war is terrible. War is hell. Of course we'd want to avoid that, but, I mean, if the momentum of history is going in that direction, so be it. But I don't know what's going to happen. On a macro level, I think predicting that it's, like, almost impossible. But what I can tell you, and I think what makes me, as an individual extremely optimistic, is that if my wealth is in bitcoin, my family's future, my future is protected because I can go where I'm treated best. If it means picking up and leaving and taking everything with me, I can only by writing down twelve words or 24 words. And I think that by itself is going to radically change the world. Because what I think governments are doing today is I think that they have a lot of their citizens hostage, and then they force their citizens to use money that steals from them. And perhaps in the United States, it's not quite noticeable because the inflation rate is only two to 4%. It got all the way up to 7%. But if you live in Argentina, where that inflation rate is 92%, man, bitcoin isn't a speculation for you. Bitcoin is survival. Those people already understand what it means to live in a country where their government currency fails, right? So that's what I'm bullish on, man. I'm bullish on individuals. I'm bullish on Central and Latin America. I'm bullish on what's going on over there in the United States. We shall see. I'm going to fight like hell. I love my country. I'm a first generation immigrant. I love not what the American government stands for, but what the original vision of America stood for. And I love it, and I'm going to fight for it. I'm going to stay here to the very bitter end. But, you know, if it comes to being thrown in a gulag because I'm writing twelve words or taking, like, uprooting my my life and my family's life and moving to El Salvador, then so be it. Obviously, I don't want to do that. I want to fight. And I want to win the race of adoption, get the ideals of bitcoin into the mainstream consciousness of America so that we could avoid that fucking war altogether. And I think that's what I try to do every single day. And that's what swan tries to do every single day. And that's what all bitcoiners try to do every single day. We fight this. We fight this information war, this psychological warfare that's happening every single day. It's trench warfare on the battlegrounds of the internet, man. And I think we're going to win. I think bitcoin's incentives are going to be any type of coercion that they try to jump, that they try to throw at us. Anyways, I'm sorry for ranting a little bit it's just a very passionate topic for me. I love your quote unquote rants. I think to me they just come across passionate and well thought out. I am. Thanks, Terry. Just to go back and answer League's question maybe a little bit differently, I think this session, it would be very hostile. Like, that's a totally different ball game. It would be on the brink of civil war. We're also intertwined and the whole country depends on, say, Texas and Florida for different resources. That's just not going to happen without some kind of military response. But in the Constitution, there is the 10th Amendment right that powers not delegated to the United States by the Constitution are reserved to the states respectively, or to the people. And so I always said the migration of hash rate was bullish to go to America because I called it the disunited king of hash rate because they're strong state government and to avoid tyranny and the ineffective central planning, every state is free to enact its own policies that work for its own populations. And so unless the government banned, outright banned bitcoin a commodity, I don't see how they could stop states from adding it to their balance sheets or the Treasuries just saying, hey, we're going to buy a little bit of bitcoin unless there was some federal ban on bitcoin. And so there's a difference between suspicion and just purchasing bitcoin right now because there's no kind of federal law preventing them from doing that. And they have states rights and that's protected by the Constitution, the 10th Amendment. So that's how I kind of see that scenario. ",timestamp:"01:06:40-01:16:49",topics:["Dmitry Medvedev","balkanization of the us","Bitcoin regulation","Texas secession"],type:"twitter_space",weight:76.08473176624994},{boost:0,date:1671644776,description:"The BCV foundation and Bitcoin education in Nigeria",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b18df9d2-d034-4e1f-bcd1-d70b30fe9059/506355bc-c119-4f18-bf0b-abe9be8c17d6.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"0330ada0-fbc0-4f8f-a560-a6c059a72907",show_title:"Geyser 🌊",text:"So, yeah, tell us a bit about your project and I'm sure more and more people will join up. All right. I'm just handle that because I'm just like handling the accounts where I really know about this project because I'm a beneficiary of the project. So they have been going around in communities in Nigeria and some other places, and they've been giving out pamphlets, teaching people about Bitcoin and how we can help them secure financial power or financial freedom yet. So basically I got about 100,000 from them after the education. And also I've been keeping in touch with these people and they offered me because I really don't have anything doing. So they offered me to get this job to just handle the account. And I'm still learning about the project. But basically what they do is they just teach people. We just tell people about it's more like we're going to like the grassroots. I don't know if you're with me. We're going to the grassroots to really uneducated places, to just teach people, like traders and random people on the streets. We're just teaching them and telling them stuff about bitcoin, because I think it starts from there, because education is a big problem. There's this gap, there's this space between the educator and the uneducated ones that the uneducators also never really get the chance to understand what this is all about. They just keep suffering and suffering and they don't really know how to really get out of the circle or the matrix of just being suppressed financially. Right. So that's basically what it's all about. So they've been doing a great job. They've been going around. And I'm a beneficiary, so it's more like my testimony, right? Yeah. I'm just saying that to the space, basically wait, I'm sure if it worked, but basically they're receiving donations of Geyser. And the main purpose of the initiative is essentially reaching out to rural communities, doing basic education about bitcoin. And there's also an element of mining, is that right? Not really, but solar. Really? Solar power. About renewable energy. Because Nigeria has power issues. Has power issues, especially in the local communities, the grassroots, like I said. That'S incredible. So we just try to help people with small solar power generators that they used to. And we have some people that mine bitcoin in very small scale. They have this really small miners, so they use our solar power generators. Got you. So I can see here you guys are focused on six African communities in three countries. Ghana, Kenya, Nigeria. Yes. And you guys are an NGO dedicated to promoting, expanding bitcoin across the world. Yes. Focusing on education, school and rural areas. Yes. Yes. So this is an incredible project. You guys are calling it bits and stats and help educate school students and other individuals. So how do you guys do that? And what's your experience so far? Like, how has it been received? It has been really good because when schools were still in session, because now schools are on holidays now, vacation. Right. When schools were still in session, like secondary school education, we used to go around and teach, like, school children in classes. We just take minutes of their time because in schools they have recess and different times and other stuff like that. So we just go around and we try to teach and we hand out pamphlets, like I said. But we haven't really given out bitcoin to this secondary school students because most of them don't really, like, possess phones and other things like that. So we just basically teach them how it works. But then we go around and trade as people that sell stuff, people that just, like, randomly work on things, like outside. We just try to teach them on the streets, we just walk around. Have you tried using different tools like machancura to use SMS to send people? I just learnt about machancura last month and it's really innovative, but I haven't really done anything and I haven't really connected with people. So I think we should do more of that. We would have to connect with people because we had one representative in Ghana for the Afro Bitcoin conference some weeks back. It's just a tool that you can start using. I recommend you just playing with it, and it really just means that you can use your feature phone and some of the old phones to receive. Satoshi is pretty straightforward. Okay, that's great. Yes, I saw some stuff about it, so I'll definitely play around with it. And I can't people around too, since. That'S how you really learn, right? You learn and practice with really feeling it. Yes. That's cool. Yeah. Thank you for the awesome initiative, for the opportunity. Also really appreciate of ",timestamp:"00:10:34-00:16:46",topics:["Bitcoin education","Nigeria","Bitcoin mining","BCV foundation","Geyser"],type:"twitter_space",weight:62.68289275364415},{boost:0,date:1671644776,description:"The introduction to Bitcoin in Nigeria and how it's gradually taking it's place",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/885fe09b-bb21-49a5-8667-3c73ed36918f/196dc1e8-c7a4-4dc7-902f-d00107aefb42.mp3",node_type:"clip",pub_key:"0372cd0c8469f2034336a243e018d4d60e07efef8e7d10417807da1173bd5b002f",ref_id:"83ce1420-66d3-41e6-b987-b35fe2cf019f",show_title:"Geyser 🌊",text:"All right. Hello. Good evening. Hey, good evening. Yeah, how's it going? It's going great. Thanks, guys, for the opportunity to speak. Yes, I'm grateful. Fantastic. Yeah. I mean, not many people today. We've had better turnouts. I think it was a bit of a last minute call, but I wasn't. Even expecting I just saw a notification and I came up. Awesome. Yeah, it's cool, man. So, yeah, tell us a bit about your project and I'm sure more and more people will join up. All right. I'm just handle that because I'm just like handling the accounts where I really know about this project because I'm a beneficiary of the project. So they have been going around in communities in Nigeria and some other places, and they've been giving out pamphlets, teaching people about Bitcoin and how we can help them secure financial power or financial freedom yet. So basically I got about 100,000 from them after the education. And also I've been keeping in touch with these people and they offered me because I really don't have anything doing. So they offered me to get this job to just handle the account. And I'm still learning about the project. But basically what they do is they just teach people. We just tell people about it's more like we're going to like the grassroots. I don't know if you're with me. We're going to the grassroots to really uneducated places, to just teach people, like traders and random people on the streets. We're just teaching them and telling them stuff about bitcoin, because I think it starts from there, because education is a big problem. There's this gap, there's this space between the educator and the uneducated ones that the uneducators also never really get the chance to understand what this is all about. They just keep suffering and suffering and they don't really know how to really get out of the circle or the matrix of just being suppressed financially. Right. So that's basically what it's all about. So they've been doing a great job. They've been going around. And I'm a beneficiary, so it's more like my testimony, right? Yeah. I'm just saying that to the space, basically wait, I'm sure if it worked, but basically they're receiving donations of Geyser. And the main purpose of the initiative is essentially reaching out to rural communities, doing basic education about bitcoin. And there's also an element of mining, is that right? Not really, but solar. Really? Solar power. About renewable energy. Because Nigeria has power issues. Has power issues, especially in the local communities, the grassroots, like I said. That'S incredible. So we just try to help people with small solar power generators that they used to. And we have some people that mine bitcoin in very small scale. They have this really small miners, so they use our solar power generators. Got you. So I can see here you guys are focused on six African communities in three countries. Ghana, Kenya, Nigeria. Yes. And you guys are an NGO dedicated to promoting, expanding bitcoin across the world. Yes. Focusing on education, school and rural areas. Yes. Yes. So this is an incredible project. You guys are calling it bits and stats and help educate school students and other individuals. So how do you guys do that? And what's your experience so far? Like, how has it been received? It has been really good because when schools were still in session, because now schools are on holidays now, vacation. Right. When schools were still in session, like secondary school education, we used to go around and teach, like, school children in classes. We just take minutes of their time because in schools they have recess and different times and other stuff like that. So we just go around and we try to teach and we hand out pamphlets, like I said. But we haven't really given out bitcoin to this secondary school students because most of them don't really, like, possess phones and other things like that. So we just basically teach them how it works. But then we go around and trade as people that sell stuff, people that just, like, randomly work on things, like outside. We just try to teach them on the streets, we just walk around. Have you tried using different tools like machancura to use SMS to send people? I just learnt about machancura last month and it's really innovative, but I haven't really done anything and I haven't really connected with people. So I think we should do more of that. We would have to connect with people because we had one representative in Ghana for the Afro Bitcoin conference some weeks back. It's just a tool that you can start using. I recommend you just playing with it, and it really just means that you can use your feature phone and some of the old phones to receive. Satoshi is pretty straightforward. Okay, that's great. Yes, I saw some stuff about it, so I'll definitely play around with it. And I can't people around too, since. That'S how you really learn, right? You learn and practice with really feeling it. Yes. That's cool. Yeah. Thank you for the awesome initiative, ",timestamp:"00:09:59-00:16:41",topics:["Nigeria","Bitcoin adoption"],type:"twitter_space",weight:61.64845435071934},{boost:0,date:null,description:"Greg Foss' Thoughts on countries interested in joining the BRICS forum",episode_title:"Café ₿: #Bitcoin News & Trusted P2P Reviews w/ @Apollosats",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@FossGregfoss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"09913e9b-38dc-4465-9d4d-ae0c9ba9eeca",twitter_handle:"Fuckkkk"},{name:"@w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"b178b239-3b18-4a16-9d43-c5d15ba6f7f4",twitter_handle:"w_s_bitcoin"},{name:"@NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"4b6997e1-ce0b-4a1d-90e7-dbaccef4b783",twitter_handle:"NeilJacobs"},{name:"@brandon_gentile",profile_picture:"https://pbs.twimg.com/profile_images/1561369452284895236/-8WgdwEm_400x400.jpg",ref_id:"f940c5e8-4808-4197-a38f-3f19d311a7ad",twitter_handle:"brandon_gentile"},{name:"@apollosats",profile_picture:"https://pbs.twimg.com/profile_images/1576946734927794176/2ail9FoU_400x400.jpg",ref_id:"74f4280f-5fdb-4bbc-aee2-a2ed32d64372",twitter_handle:"apollosats"},{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7cf57bdb-c905-46e3-a7e5-4c0bfd4f8d04/71c08fae-cce8-4600-ab9e-758420e78dcf.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"639d4f31-2190-4fc2-a0dc-57cf53c3d97b",show_title:"Swan.com",text:"a question. I got a question coming in. Wicked. Yeah, go ahead. This is coming in from text greg, I don't know how much longer we've got you for. That's why I wanted to get this to you before. I didn't mean to cut you off. But this comes from Sholey, and his question is, foss, I'm interested in your take on countries wanting to join the BRICS and move away from the US dollar for trade. Apparently this was a tweet from Kim.com, so please don't shoot me for the source, but apparently Russia has announced that twelve more countries are interested in joining the BRICS. What do you think about all this? Yeah, well, it's not hard to see the playbook, right? When you have your US dollar controlled reserve asset of the world, which is US treasuries, when that gets frozen and you need to call on it and you can't so I'm talking about Putin here. You look for alternatives. Now, Marty Ben here's a shout out to my friend Marty. He had an amazing publication on Friday, okay, calling the same thing, but says it won't be gold backed oil trades, it'll eventually be bitcoin backed oil trades. And that makes sense from my perspective of digital energy versus natural resource energy. And why sell valuable natural resource energy for US dollar fee when ultimately, rather than selling it for gold, which is a far better store of value than US dollars or US treasuries, but you could sell it for digital energy. As an engineer, I'm not a physicist, so there's some physicists that hate the fact that sailor, and maybe me, at times refer to bitcoin as digital energy. But I don't care. Understand? It's selling natural resource energy for digital energy is just about the smartest thing you can do in a closed loop energy frame. Okay? So one more shout out, I'll step down or try and shut up. So thank you, wicked for great input, Terence. Great input, aunt. Great input. And a shout out to one of your listeners that just reached out to me via DM. We want to talk some more about the big utilities in the US. Becoming bitcoin miners. It's the most logical step in the world. The energy guys know it. The ESG guys, they already have their heads shoved firmly up their ass, so they're not going to hear it. But people who manage the grid and manage energy understand that bitcoin and bitcoin mining is the perfect regulator, okay? With a switch, you can turn power up or power down your bitcoin miners, and you create incremental cash flow to defease capital expenditures, to building things like, oh, nuclear power plants. Because normally a nuclear power plant has a 20 year return on investment profile. And if you insert bitcoin mining in there, you can reduce that return on investment profile by at least one half, okay? And that's a meaningful adjustment to the capex that's required for building a core nuclear generator. So small nuclear modular reactors, big core nuclear reactors, it's what's going to really solve the energy crisis, people. And bitcoin is going to help with that. So don't overthink things. ",timestamp:"01:11:11-01:14:33",topics:["BRICS forum"],type:"twitter_space",weight:25.360525131225586},{boost:0,date:0,description:"What will Bitcoin look like in a scenario of global adoption? ",episode_title:"Café ₿: #Bitcoin Fix the Money, Fix the World",guests:[{name:"OrangePild",profile_picture:"https://pbs.twimg.com/profile_images/1608905201334845441/SHUsfTBW_400x400.jpg",ref_id:"1c33ba0e-3e6b-41f6-aed4-5217aa534521",twitter_handle:"OrangePild"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Dr. Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"51a969bb-dbf7-4d20-b128-74dcc5f560f6",twitter_handle:"VailshireCap"},{name:"Jason Brett",profile_picture:"https://pbs.twimg.com/profile_images/1591476397847060482/bNapBM4Y_400x400.jpg",ref_id:"750a85f9-59f2-4627-817c-a437b65ee45e",twitter_handle:"RegulatoryJason"},{name:"Tatum Turn Up",profile_picture:"https://pbs.twimg.com/profile_images/1600036563429343233/PXP0gxRj_400x400.jpg",ref_id:"31824d8a-a2a6-434e-8d10-f0be1c2f8389",twitter_handle:"tatumturnup"},{name:"Stackchain ⛓ Signal",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"b0242af7-0d94-4551-ba25-a8b216b82fce",twitter_handle:"StackchainSig"},{name:"Ross",profile_picture:"https://pbs.twimg.com/profile_images/1602431687564357632/57oH7beH_400x400.jpg",ref_id:"cdb90285-daa9-4dd2-b96a-78dd5e8ba468",twitter_handle:"theyoungrossco"},{name:"BTC Sessions",profile_picture:"https://pbs.twimg.com/profile_images/1602307254937866240/CKiRrFui_400x400.jpg",ref_id:"e207ef16-44d1-40c4-929a-ea2736f60a94",twitter_handle:"BTCsessions"},{name:"TC",profile_picture:"https://pbs.twimg.com/profile_images/1607590332925095937/6CTv4688_400x400.jpg",ref_id:"083ddb42-c4a0-4360-8de3-6178e3b659ec",twitter_handle:"Meditation_Man"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"}],hosts:[{name:"Swan.com",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"995b79e6-02fe-4395-8aa7-fdc000584e71",twitter_handle:"SwanBitcoin"},{name:"PB23 😎 Pacific Bitcoin Festival",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"9dd05f7c-4891-440c-aa61-677a92e70a0f",twitter_handle:"pacificbitcoin"},{name:"NICO⚡️",profile_picture:"https://pbs.twimg.com/profile_images/1513692277515997188/t5Ja3SFr_400x400.jpg",ref_id:"ccd52021-88cc-4e7d-9822-6eed5a169ca9",twitter_handle:"nico_lechuga"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/84e104dc-230e-40a7-9ec0-16c5a0d6873b/e7948dc4-eff7-4d6e-8ed2-80f524a8c494.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"1171938e-b754-45ff-958d-ca89aa3ab235",show_title:"Swan.com",text:"Ross, you have your hands up. Thanks to ross, you have your hands up, and then we're going to wrap it up. Yeah, thanks for letting me speak. I want to ask a question to the experts here that have been around longer than me. My reason for asking the question is actually someone in my twitter feed asked the question. They said, construct a sentence that would really piss off a bitcoiner. And I constructed one so well that I would like to know the answer to my own question. So, what I wrote is, assuming 10 billion people in the world and an absolute global adoption of Bitcoin, if every single person in the world wanted to make a single layer, one transaction just multiplying out 2500 to 3000 transactions per block times, hours, years, et cetera. It would take somewhere between 60 and 70 ish years for one person, for each person in the world to make a single transaction on layer one. So with that and the ultimate vision of bitcoin being the kind of global reserve asset and understanding, there's more layers like lightning and possibly even layer three, et cetera, that will come in time, what do you guys see as the, I guess, endgame of the landscape of what bitcoin would look like in a global adoption scenario? Let me ask you something. So most transactions right now are through debit cards, credit cards, electronic transfers. What layer do you think that is in the traditional? Well, I would say it's layer three at least, if not higher. It's layer three. Right. So how long has that system been around? Like 50 years, give or take? Exactly. It's been around for 60 years. Bitcoin's roughly a decade and a half old. Decade and change. Right. I think lightning is a great solution, but I still think that it needs a lot of work. I think there's so many awesome projects that are being worked on, and I think that we will find a solution to the problem that you're talking about. And that was a very big component of the block size for us. Right. We must, and I'm aware of that history too. But the thing is, even with a. Smaller block size, it still can't like every blockchain is too slow for global layer one transactions per person. Eventually. I think that's where layer two is going to come in. There's been speculation that the blocks are going to be filled. That's been said for the last five years or so. That still hasn't been the case. There's been times where the men pool gets cleared out. So I mean, like, I don't know, man. I think Tomer actually was talking about this yesterday. I think that it could potentially be a problem in the future. But I think where we are now, we have much bigger, clear and present dangers in front of us. And I think that's what Jason was really talking about today from the regulatory perspective. And I think that's really where my worry is. That that's really where my concern is in terms of scaling. Yes, I agree. I think that what's the Lightning Network capacity right now? It's $89 million. That's not a large amount in a global sense. Obviously there needs to be more. But if you look back and see how far we've come, I remember when the Lightning Network first became a thing, people were like, no, this isn't going to work. Right? And the fact that we've come from zero dollars to eighty nine million dollars lighting network capacity, I think is a massive deal and I think it's just going to continue to get bigger and better. Maybe that's the optimist to me. I have no idea. I don't know if Dr. Ross, Neil or Tomer, Jason, any of you guys want to chime in on that? TC yeah, I mean, my answer can be slightly adapted from the one you were referencing that I made yesterday. It's like we will cross that bridge and the bridges that lead to it as we come to them. There's so many different ways that we can scale this technology as demand increases for utilizing it. And what tends to be the surprising thing is many ways, just do nothing and let people figure out how to use it more efficiently. There were all these people who were clamoring for bigger blocks through a hard fork and we kept the blocks small and people figured out how to cram a lot more transactions. So that now the calculus that you're doing is, oh, there's 2500 to 3000 transactions per block, not 1000 transactions per block, which is what we were seeing beforehand. And there's so many different things that will be developed in cryptography. In fact, the fact that Schnor's signatures exist right now with cross signature aggregation can make transactions so much smaller. And of course there's all these other layers. So give a time. Like all technologies that you've seen before, they look like they're not going to work for the whole world. Early on. I don't know how old you are, but if you were here for the early days of the Internet, you could barely get a JPEG through the thing in. 15 minutes. And so it looked like it wouldn't scale. And I remember a couple of decades ago there being some fun about the Internet, that there's only so many addresses that would go around and so wouldn't the Internet fail in a few years time as more and more people came on? And of course, we've engineered a way around all these things. So I think especially when you're dealing with technology that's immaterial in its nature, that's non physical, that's purely digital, there are so many different ways to scale it that it won't end up being a concern. There will be many concerns along the way, but they will all be solved and surmounted. ",timestamp:"02:02:51-02:08:46",topics:["Bitcoin Adoption","Hyperbitcoinization"],type:"twitter_space",weight:25.169692039489746},{boost:0,date:1671644776,description:"Crowdfunding for different Bitcoin communities using Geyser",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b18df9d2-d034-4e1f-bcd1-d70b30fe9059/506355bc-c119-4f18-bf0b-abe9be8c17d6.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"70cd556c-8349-4f80-b276-4c0056b46536",show_title:"Geyser 🌊",text:"so we have people in Africa and I think possibly Asia. But yeah, we have again, we have I think in around three days, we had 30 new projects being created on Geyser using this Lightning address feature, which is pretty big deal. We have you really need six clicks to create a project on Geyser. It's pretty seamless. And we had quite a lot of educators create projects on Geyser. We had Bitcoin community in Honduras, bitcoin in Hausa, Nigeria, and also we just heard from BCB based in Ghana as well, bitcoin, Essex, UK, and Orange Pill Yosemite, which is in California. So really featuring four different continents. These are micro communities. These are little micro communities that are focused on meetups focus on orange Peel in the community, raising funds for supporting education initiatives that are pretty small scale but nonetheless importance. Again, Bitcoin is a grassroots movement, and so what these creators are doing is that they're setting up these super micro, grassroot level initiatives to get support from the community and create their own community on Geyser. Again, Geyser is, yes, a crowdfunding platform, but it's really a place where people can come together to support common causes and support getting shit done. You have an idea and you get some people together, some people throw in new ideas, some people throw some money, some people throw resources. And so gather should be seen a little bit more widely and we will soon have more features to enable these types of feedback loops and conversations. ",timestamp:"00:17:16-00:19:06",topics:["Bitcoin","crowdfunding","Geyser"],type:"twitter_space",weight:55.39905291682817},{boost:0,date:null,description:"About ApolloSats: P2P reviews for Bitcoin related products and services",episode_title:"Café ₿: #Bitcoin News & Trusted P2P Reviews w/ @Apollosats",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@FossGregfoss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"09913e9b-38dc-4465-9d4d-ae0c9ba9eeca",twitter_handle:"Fuckkkk"},{name:"@w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"b178b239-3b18-4a16-9d43-c5d15ba6f7f4",twitter_handle:"w_s_bitcoin"},{name:"@NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"4b6997e1-ce0b-4a1d-90e7-dbaccef4b783",twitter_handle:"NeilJacobs"},{name:"@brandon_gentile",profile_picture:"https://pbs.twimg.com/profile_images/1561369452284895236/-8WgdwEm_400x400.jpg",ref_id:"f940c5e8-4808-4197-a38f-3f19d311a7ad",twitter_handle:"brandon_gentile"},{name:"@apollosats",profile_picture:"https://pbs.twimg.com/profile_images/1576946734927794176/2ail9FoU_400x400.jpg",ref_id:"74f4280f-5fdb-4bbc-aee2-a2ed32d64372",twitter_handle:"apollosats"},{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7cf57bdb-c905-46e3-a7e5-4c0bfd4f8d04/71c08fae-cce8-4600-ab9e-758420e78dcf.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"7c3d3625-4308-437e-80bb-38fb8b2a678c",show_title:"Swan.com",text:"want to welcome up Apollo and Julian from Apollo. So, Apollo, just a really quick intro. If I understand it right, they're building the first review site, leveraging sets, and you log in with lightning. So basically, you get to review the products you love, find companies you trust, and earn bitcoin. Julian, good morning. Welcome. Talk to us about what you're doing and why are you doing it, and then maybe we can open it up for some questions, if you like. Sounds good, Alex. Yeah, thanks so much for having me, and, yeah, I really enjoyed the conversation this morning. Sorry to interrupt the crucible, but I think it's actually a pretty great segue into talking about what we do at Apollo, which is finding the truth right, through the contest of ideas and context of information. So, yeah, you gave a really great intro. Basically, we are a marketplace for user reviews of bitcoin products and services, and the idea is pretty simple. We wanted to build somewhere for bitcoin is to educate other bitcoinrs about not only what products and services exist in the space, but also how to compare them and what basis. And we felt that that was kind of missing in the space and probably needed to just help adoption, which is the mission we started the company on the basis of, hey, we want to do whatever we can to help bitcoin adoption. It's the most important thing we could be spending our time on. And in the process of doing that, and I can talk a little bit more about that. Of what we learned from one of the biggest challenges to work on bitcoin adoption, we realized that we kind of needed something like this, which was we needed somewhere that we could send new bitcoiners who just wanted to start the process of going down the rabbit hole. So, yes, pause there, but happy to take any questions. I love it. That is the mission. I agree. What I'm excited about is I'm starting to see a lot more of this kind of direction where people are recognizing that is the mission increasing adoption as much which is possible. Let's go ahead and open it up. If anybody up here on the panel has questions for Jillian, go ahead. And if you're in the audience and you have questions about what these guys are doing and how it works and all that kind of stuff, you can request to come up. You can ask questions in Telegram if you like. Tmecafetcoinclub, I've got a question. So to use this service, I'm assuming you have to run your own Lightning network node, is that right? You don't have to, no. So you can sign up in a few different ways. You can just sign up with an email address or with your Twitter account, or you can log in with Light. But for now, on the infrastructure side is pretty straightforward. Like we just kind of run our own we're not running a node yet ourselves, but we just have our kind of own internal Sachs ledger, maintaining everybody's account balances. And we will send SATS to whatever address that users have on their end. Got it. Cool. So you can hook it up with like a Wallet of Satoshi account or whatever, something like that, you're saying? Yeah, exactly. So Wallet of Satoshi or Zebony account, I mean, a lot of people are using kind of Lightning addresses, like ball toll addresses for the first time, which is really cool to see. But yeah, whatever Lightning address you have spin line up, send it to us and we'll send you Sat. How do you know the reviews are legit reviews and not just someone trying to accumulate Sat? Yeah, it's a great question, to be honest. And it's the best one we're focused on that happen from day one. And there are a couple of answers, right? Like one is in the longer term, what we're building is a marketplace that run like a market, right? And the idea is it's a market for information. So we want the best, most reliable reviews to organically surface to the top and the way that that is going to happen. And what we're building is that there is a system of incentives between these two sides of the marketplace, right? Reviewers on the one hand and readers of reviews on the other. That allows for that. Right. So how can that happen? Well, basically reviews after they're written and we publish them, and I'll talk a little bit about the moderation that we do before we actually publish, but after they're published, they can be uploaded and kind of similar to stack and use, if you guys are familiar with that. Basically every upvote is actually, in effect a transaction, right? So you have users sending SATS from their account to the author of a review to upload that review. So the idea is people vote with SATS on what is most helpful, most reliable. And so if the market works effectively, then the best reviews, most helpful reviews are going to rise to the top. That's what we're kind of building for the longer run. Now, obviously in the short run, we need to do some things to bootstrap that market and also put up some guardrails to obviously make sure that people aren't gaming the system, which certainly they are trying to do already. Right? So we have a few things that we do upfront to filter for spam and other kind of obvious bad actors that are going to come in and just try and publish a bunch of reviews and earn as many stats as possible. But you end up again. So if you got a follow up, yeah, I got a couple of other ones if no one else wants to go. So is it going to be bitcoin only companies because I see or bitcoin only things because I see Anthony Pompeano's newsletters on here, clearly like he's a controversial person. So I'm just curious if you guys are how you decide what companies get to go on here or newsletters or whatever. Yeah, so short answer is yes, bitcoin only. Like that's the mission. It's bitcoin adoption. And specifically it's like we want to educate bitcoin is and help bitcoin is educate each other. And so the mission is bitcoin only. The products are almost entirely bitcoin only, except where I would say for a couple of instances, right? One is where there's some just overlap between bitcoin only products and crypto stuff. Like there are exchanges that we want people to review that obviously have bitcoin and crypto and maybe some newsletters or other content pieces or wallets or whatever the case may be. It's obviously relevant for us to let people educate each other on those products, even if they're not bitcoin only. So that's one instance of where they overlap. When it comes to things. Julian, don't you think that's a little conflicting, just a little bit? I mean, first you say bitcoin only, but it's bitcoin only except when it's not coin only. I know there's a lot of bitcoinners are going to take issue with that. And if what you're trying to do is increase bitcoin adoption, giving any kind of platform for something that's distracting people into bullshit is maybe that's I just know there's a lot of bitcoin is going to have an issue with that. And I know right now, Julian, I see like the Pump newsletter has an awful rating on your site. So I'm assuming mostly bitcoiners are the only ones kind of going on here right now. But what happens when he or a bunch of crypto people find this site, right? Then it just becomes a review site. Yeah, well, so a couple of things, right? One is at the moment, because we're so early, we're running a bunch of little experiments, right? So we don't really know how this is going to play out. So we've got the pop newsletter on there. We put the bankless newsletter on there too. Right. And part of that was to see how are people going to respond. And pretty much all of our users right now are bitcoin only users from what we can tell. And the results have been whether it's for those newsletters or for like Coinbase or other crypto exchanges. Right. Many of the reviews coming through, a lot of them are kind of nuanced and are actually bitcoin is telling. Other bitcoin is like, hey, this is an exchange that if you really have to use it as your first place to buy bitcoin, you can do that. But get your coins off exchanges, find an alternative. Like people are writing reviews, for example, of Coinbase saying like, hey, don't use this platform, go and use Swamp instead. And the reason why I think it actually is important to have all of this information at people's disposal is because people have these questions, they are going to find out coinbase is going to be top of mind for them. So we want to build somewhere where people can, I guess, do a bit of self directed learning, learn from bitcoin is who have been through these on ramps, have been through these experiences and are going to be able to answer the questions that I think people are going to inevitably have. Does that answer the question? No, but I'll let Neil go. Well, yeah, and that's kind of like a shameless plug. But are you going to be adding bitcoin merch and apparel companies? Because I would love my company to be on it. Sure, yeah. We're taking recommendations on constantly on categories, products and it's to some degree like demand driven. Obviously we're not going to put anything that people just request up there, but yeah, shoot me a note and we'll add it to the list of things to consider. Sure, I'll dare so. I just want to reiterate, I mean, I'm not going to beat a dead horse, but I would suggest to you, Jillian, to consider that you don't have non bitcoin things on there. And the reason why I say that is you use the term get on the mission and that's start or you use the term the mission, I say get on the mission. But this concept of on being on the mission, of bitcoin adoption is starting to permeate through the interwebs a little bit. And I would just suggest be careful about that because like anything that you're doing to give a platform to something that's going to draw people off mission, what I call being on the mission and what I think a lot of other bitcoinners agree is on the mission I think is going to be looked at in the long term. I think you're going to see that that was a mistake. When you say things like, well, we're doing a bunch of experiments. Like what it sounds like to a bitcoin? Or is you're experimenting to figure out where you're going to make the most money? This is very fiat mindset, in my opinion. It's very much like opens you wide open to being sponsored by shitcoins. And that's not a good place to be, man. Yeah, I see you're right there. That we absolutely do need to stay focused. And we will. And I guess to that end, we have some principles that we're sure very firmly aligned with. One is we know that ultimately whatever we are doing is in service of that mission of increasing Bitcoin adoption. And so we're open to feedback and changing what we list, how the incentives work, everything else along the way, and we certainly will be. The other thing too is we're just not going to do certain things that you might ordinarily see with some other types of companies in this category. Right. So we're not going to be running ads, we're not going to be taking sponsorships from companies. There's not going to be any pay to play or like affiliate linking or anything like that. Really what we're building is okay, let me ask you a question then. The way the system works, if I'm understanding it correctly, is people boost with SATS, who gets the stats? If you write a great review and other users are sending you stats because they find it helpful, all of those stats go to you. Okay, but then how do you make money? Well, right now we don't. Right. We're a startup. What's the business model? How do you intend to make money? Well, so there are a couple of potential ways we can. Right. So what we're trying to do is build this marketplace that is a meeting place for potential users of products, people who have used them, and then the companies themselves. And so we want to be able to mediate a really great high signal conversation between these three sides of the marketplace. And so we think that that's going to generate a lot of value not just for users of people who review them, but also the companies themselves. I get the concept, but what I'm asking you is how do you make money on that sort of triumvirate of people talking to each other and creating this marketplace of ideas? Yeah. So one way that we could is partnering with companies directly in a transparent way. So if Swan or anybody else is talking to users on our platform and we're providing this meeting place for great quality conversation, then we can have companies that could potentially use that. Okay, so this is my point. This is what I'm getting at. What if that company that comes to you and offers you that sweet, juicy, lucrative deal, what if it's Sam Bankman Freed, and he's like, hey Julian, I'm going to give you $100 million if you help us out here. Well, the short answer is like, we're just not going to do that because it would so obviously undermine the integrity of the platform that it just wouldn't be I appreciate the hypothetical, but it would just be so contrary to what we're trying to do that it's just not something that is realistic for us. All right, cool. I hope time proves that out. Okay, we're very close to the end of the show. We've got time for maybe one or two more questions. We'll give you some time to make some closing comments, Jillian, and then we'll move to wrap. Go ahead. Wicked. Yeah, kind of. In summary and you can correct me if I'm wrong here, but it sounds like you might allow reviews to be written about companies that are crypto friendly or crypto curious. But in the long run, you don't plan to ever partner with those companies, and you plan to stick with only bitcoin, only companies that you may generate revenue from in the future. Is that correct? That's right. Yeah. We are a bitcoin only company for bitcoiners and bitcoin only companies. And to the extent that there's going to be any information on crypto products on our website, it is specifically for the purpose of steering bitcoins away from them. And so that will be borne out both by the content we produce and have on the platform. And also, I'm assuming, from what other bitcoin is going to help other bitcoin learn about as well. I would just, like, make one last thought. I mean, this is your company, obviously you run it the way you like, but the whole steering away thing, you're actually just giving them a platform that potentially will cause them to lose a lot of money. And my observation is that when people get burned, they figure that shit out on their own. They don't need to be led down these pathways where they might go look at this stuff. That's just my opinion. Let's go with simplest and then we're going to give you a few minutes to make closing thoughts, Jillian, and then we'll wrap. Go ahead, simplest. Hey, thanks so much. Yeah, a quick question because I'm just aware of the dynamics of how you keep these sort of platforms, these review platforms, honest. And I've always kind of wondered, like with Yelp and everything, just how they do that. And in your case, and regarding the point that Alex is making about the crypto so called curious companies is how do you prevent down the road? Like, if those companies become aware once you grow big enough to really be having an impact in the market, what if they use their armies of whatever to be coming in and just giving themselves glowing ratings? And like, I understand you have some measures in place, but when that becomes overwhelming and if there's a few of those companies or a number of them, how do you prevent them from providing millions of five star reviews to themselves, so to speak? Yeah, that's a really great question and so there are a couple of different ways that we can address that in the short term and then longer run it's going to be more of an engineering challenge, but it's certainly on our minds, right. In the kind of short to medium term, what we're going to do is implement basically a cost to posting. So right now we're kind of bootstrapping the marketplace by rewarding people just for posting reviews and sending them sentence of doing that. We want to get to the point where people are actually willing to pay a small fee to actually write and post their reviews and so on. Like a small scale. We think that's going to disincentivize people just costlessly attacking us with that information right at a small scale. But your question about how do we disincentivize or just prevent large scale attacks like that, then things get a little bit more sophisticated. But there's a really interesting concept called a web of trust, which is a way of basically preventing this kind of class of civil attacks on information platforms. Won't go into the details, but essentially you can implement a range of preventative measures where you can make the cost of posting scale exponentially. For people who are posting a lot in a short space of time. You can do a whole bunch of things where we can identify sophisticated attackers and impose basically a big enough cost so that it's not actually economical for them to engage in that behavior. ",timestamp:"01:48:01-02:07:24",topics:["ApolloSats","P2P reviews"],type:"twitter_space",weight:21.470260620117188},{boost:0,date:null,description:"The Bitcoin Village project in Nigeria",episode_title:"The Orange Sun ☀️ #Bitcoin News and Talk",guests:[{name:"Portland Hodl",profile_picture:"https://pbs.twimg.com/profile_images/1562306406526492672/LiqmI9NS_400x400.jpg",ref_id:"530aba21-392f-4156-9e91-4fc5c76fced1",twitter_handle:"PortlandHODL"},{name:"Miykael Woodward",profile_picture:"https://pbs.twimg.com/profile_images/1473433558475689985/CM0o3oWu_400x400.jpg",ref_id:"6fe02a78-4f07-47e7-8e64-b278a3167835",twitter_handle:"MiykaelWoodward"},{name:"Okin Mobi",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"bbd18918-7758-4bdb-b9a5-641bf92748a6",twitter_handle:"OKIN_17"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"Funsho Jimoh",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"a237ffb0-792b-484e-b12f-65a2b679eaf1",twitter_handle:"fnicencool"},{name:"prince ogbonna",profile_picture:"https://pbs.twimg.com/profile_images/1595693872637681664/TeWJzTut_400x400.jpg",ref_id:"0b0c70b1-23b1-4d98-b259-6dbb67b7481d",twitter_handle:"princejoj0"},{name:"The Bitcoin Village",profile_picture:"https://pbs.twimg.com/profile_images/1544318244789649410/kQ2G1MCE_400x400.jpg",ref_id:"d894aca4-36f6-4821-a00b-a4e860b19502",twitter_handle:"VillageBitcoin"},{name:"Masterguantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"29baf525-42eb-41a6-98f9-a0d6b4480af0",twitter_handle:"MasterGuantai"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/bef977d0-8a6a-441b-a8cb-58baebe2bfd7/b9ec2918-1059-48ac-b5ee-69018c42a07c.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"6cbed027-125f-454c-b03a-865df0b60d36",show_title:"Satoshi’s Journal",text:"intent of the village was, of course, first and foremost to have a school that we could educate that village about Bitcoin and then bring the plebs along as we build it so that they can see the proof of work. And using Satoshi's Journal, the media company, as the videographer, so to speak, as the media, we can bring that to you live from Nigeria. So it's actually a really cool way to be able to have the pleb, see what we're doing in real life, and then along the way, if donations want to be donated, so be it. And we're already seeing that, so we will document the whole thing all the way up from the foundation to final erection, to the ribbon cutting, to the first graduates of Lightning Development Academy, to you name it. It's going to be basically old, and I plan on when we die, we hope that there's many, many more schools built like this, and we plan on building more because we know that in the future, we will be, with the help of the plebs, educating the future businessmen and women of the world. And we're living a small snippet of a Bitcoin standard, and if we can instill education in this village in the form of what money is and what Bitcoin is, bitcoin being the best money ever known by man, we are basically allowing them to have a bright future. And I've told Olu and our team that we don't know what's going to happen in the future with what we're doing, but I'm confident that what we're doing and what all you guys are doing as plebs in your respective areas on an individual basis, you can move a mountain, so to speak. So don't ever underestimate what you can do as an individual. Yeah, so that's ",timestamp:"02:48:50-02:51:13",topics:["The Bitcoin Village","Nigeria","Bitcoin Adoption"],type:"twitter_space",weight:19.850265502929688},{boost:0,date:null,description:"Immutability of the Bitcoin consensus code ",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"2a3ee0fe-bcfc-412d-b1ee-2ba7f72528bd",show_title:"Swan.com",text:"something that's probably important to bring up for people who are brand new and they're listening to this and they're new to bitcoin. They're trying to figure all this stuff out. Bitcoin is always say, well, you can't change bitcoin it's mutable. Like there's no small group of people controlling it. You can't change it. Right? I think that deserves a bit of explanation, because some people are going to be listening to this, going, look, you just changed it. Does somebody want to take a shot of this? Tom or go ahead, please. Yeah. The consensus rules of bitcoin remain completely unchanged. This reference client offers new interface features and spending preferences that make certain things that were harder to do before easier to do, or certain things that were toggled off before toggled on by default now. And that's what happens in 90% of these releases of bitcoin core. It's like support for having multiple wallet files, support for enabling, replaced by fee transactions by default. This feature, which I haven't really looked into, that I guess allows you to spend the entire contents of a wallet without change or something. I'm not sure what this feature does yet. So these are new features that keep coming out from time to time, and occasionally some API call. Again, nothing to do with the consensus algorithm will get retired or replaced by something else so that it works better, or bugs are resolved where interface issues happen. But the actual operation of bitcoin itself remains unchanged, which is why only three or 4% of people are running this new release right now. And there's no incompatibility there's no one getting all this. Block was okay for version 24, but it wasn't okay for version 23, or vice versa. The same rules apply, the same spending rules for each transaction. The same consensus rules for each block remain completely unchanged. Any attempt to change those things is known as a soft fork or a hard fork. Hard forks don't happen in bitcoin, so they're soft forks. And these are very infrequent things. And if there was one in the works, everyone here would know about it. They're widely discussed, and they must be adopted by all minors, and they generally also need to be supported by all clients or an overwhelming majority of clients. Soft forks are somewhat backwards. They are backwards compatible, so that even if not everybody upgrades, everyone will remain in perfect consensus that the state of the chain is valid. But the miners almost can check for the new rules that come with software. So I'll kind of stop there because I'm already maybe over complicating a little bit of what your question was. I thought that was a pretty good explanation. I like to keep it even dumber, but I think that was pretty good for me. I always go back to the monopoly board analogy because I think they're just easy. Maybe I could offer one other little explanation that I hope will keep it easy but paint a big picture for people. Bitcoin core is the piece of software known as the satoshi client, and it's a piece of software that was first launched, that bitcoin launched on, and it does everything that bitcoin does. It allows someone to mine, it allows someone to create a wallet. It allows them to secure the wallet. It allows them to create transactions and receive transactions to that wallet. It does everything that the bitcoin ecosystem does. It's the reference client. And so it is bitcoin, and it establishes the peer to peer network. Like, if you run it, it connects it's the note, it creates a copy of the blockchain, it stores a copy of the blockchain. It does everything that you've ever heard that bitcoin does. And it is a very tight piece of software. But as it ages, the open source developers who work on it make it easier to use. Initially, there were only like a few buttons you can press and only a few things you can do. And over the years, they've added user interface improvements and additional commands that don't break the consensus algorithm that make it easier to do things. And that's really why new versions, for the most part keep coming out, that there are ideas that the community feels make it easier to use, better to use, more secure to use. And so those features are added to bitcoin core. Right, okay. But I think what people wonder is, if you can make changes to it, how can we be sure that it's not going to be changed for evil purposes against the best, it's not in the best interests of the common man, it's not going to benefit some small group of people over everybody else. How do we know that that's going to happen tomorrow? Yeah, the first point that I was making is changes to the consensus code of, like, what it takes to spend bitcoin or how many bitcoin can get generated or what makes a valid block are not changes that can be made in bitcoin core without complete consensus of the entire community. All the miners and all the use. Words that have nothing to do with Vicky. Try to use words that people are going to understand everything you just said. If I was brand new, I wouldn't understand a damn thing you just said. Right. Changes to bitcoin core don't change the rules of bitcoin, if that's what you want to say. Like, if someone tried to change the rules of bitcoin in bitcoin core, what would quickly happen is there would be a split in the network. It would be what's called a hard fork. And then people that splits the monopoly board into right, okay. People would have to if you want to do that, anybody can change that. But if you want to do that, you're creating a new monopoly board and saying, come play with me. And what ends up happening is nobody comes to play with you and then your monopoly game dies. Right. That's what's happened historically, yes. Perfect example is like bitcoin cash, right? They changed the rules, it made a different version of bitcoin, and now that version of bitcoin is worth like one half of 1% of what bitcoin is worth. BCH and BSV have basically been both deplatformed off the exchanges at this point. And they're just dying. They're just like these. They're making their last little twitches as they perish. ",timestamp:"00:48:29-00:55:14",topics:["Bitcoin core update","Satoshi client"],type:"twitter_space",weight:18.508241653442383},{boost:0,date:null,description:"UTXO and release of Bitcoin version 24.0 features",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"48de736c-df85-48ea-9856-e9b608a6025e",show_title:"Swan.com",text:"I was just going to echo back to some of the points that Tomar was making about utxels and stuff. Did you guys see that, the release of bitcoin cord 24.0? It has some really great features into it that allow users to sort of, like, spend all UTXOs. So when you're sending a transaction, you don't generate change, which I think it's really cool. It's a really cool feature for privacy. It's kind of like, explain that. What does that mean? You know how Sparrow gives you the ability to sort of create, like, if you're going to send bitcoin or receive bitcoin, you can create, like, new addresses in order to sort of get past the common input ownership heuristic of chain analysis. Use English. Use words that explain it, like you're explaining it to a five year old. Okay, so essentially what this code is allowing you to do is you can. Empty out a wallet. You know, when you send out a transaction, you're actually sending all of the amount of all the BTC you have. In that wallet address. You're sending it out, and then you're receiving a UTXO back from the receiving address, from the address you said, like, change. So in other words, if I'm buying something and let's say I've got one UTXO or one address that is in the denomination of a $10 bill, for example, I go and buy let's call it a cheeseburger for $5, I get $5 and change. And the problem with the $5 and change is that that's trackable, right? Yes, 100%. Yeah. And they're also including a change output randomization, which is kind of like what Monero does, but not really. It's a way to sort of, like, generate random amounts so that anybody watching the chain can't really tell which UTXO belongs to you. And they do it in a very technical way, but yeah, man, I'm super excited about it because this is increasing the level of privacy that you can achieve just with bitcoin core. These are small tweaks to the privacy enhancements of bitcoin. And these are all backwards compatible, right? Like, if people don't want to adopt this, they don't have to kind of thing. Yes. Ant, do you have any comments? Full RBF equals one. Oh, yeah, let's get that. Bitcoin core version 24. There's already 3.8, maybe 4% of total public bitcoin nodes running. It interesting across the world. ",timestamp:"00:45:21-00:48:27",topics:["UTXOs feature","Bitcoin core v24.0"],type:"twitter_space",weight:18.260805130004883},{boost:0,date:1671644776,description:"The Orange Pill app and it's piggybank feature",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b18df9d2-d034-4e1f-bcd1-d70b30fe9059/506355bc-c119-4f18-bf0b-abe9be8c17d6.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"fed2b741-e9a2-4858-bee8-faa259806d3e",show_title:"Geyser 🌊",text:"orange Fill up. Do you want to come up and tell us a bit about your project? Let me add it to the spaces too. Did you get the invite? I'd love to hear about what your features releases are up to. So Builders feature orangeville app. We have Lightning Piggybank, which is essentially an electronic cash piggy bank for children that accepts bitcoin sent over lightning. So this is a pretty small project, but it's a pretty sweet thing, actually. So let me add this to the it's pretty incredible, actually. I need to show you guys. I need to show you this. Imagine a piggy bank, but instead of an actual pig, it's like a cardboard box with a Geyser satoshi. Yes, we did. What's up, mate? I cannot do from the desk, though. You cannot talk? I'm not on desktop. Oh, no. You can't talk from desktop? No, it's got to be mobile. Yeah. It'S painful. Yeah, we got to talk to you. Yeah, exactly. But yeah, just to finish up this thought, there you have this really cool piggy bank which has this, like essentially this counter, this wallet counter of how many Satoshi the project has, which is really cool. And this person is just raising money connecting their Geyser project onto their Lightning Piggy Bank, which is fucking cool. I mean, this looks like a little DIY type of fun project that a father did for his son or something super cool. But let's go back to you, Matteo. Let's talk about orangeville app. Why not? What's up with you? Yeah, for sure. Orange. Bill app is a mobile app. We use Geolocation, which is the only approximate to connect you with nearby users, nearby pledge, and soon we'll let you find events. So meet up, conference, whatever. Actually, it could be anything because the user can create events straight from the App and then put the address. And then you'll be able to invite people there nearby to the event. So it doesn't have to be a meetup. It could be like a soccer game or picnic on the beach or anything. That's pretty cool. Hopefully it comes out January or February. Definitely February. And then we're going to launch the search feature, which will allow you to search for people all over the world. So if you're traveling and you're going to Ghana, you'll be able to look for clubs in the App there in Ghana. And then you can chat them up and say, hey, I'm coming to Ghana next week or next month or whatever, and I'd like to meet with you. I don't know anybody in Ghana. And of course, you can also search by gender for dating, age, profession. Right? We got to do yeah, I'm sure it's going to be like 95% guys, though. It's not can you confirm that? No, it's not. I don't have the number precisely because some users, they don't put a picture. And I know there's one woman that I talk to, obviously I talk to everybody on the app and you wouldn't know she's a woman, but it's a woman. But I think it's about 10% women and 90% men, which it looks it doesn't look good. But Tinder, which is the biggest dating app on planet, the ratio meant to women, it's 97% men, 3% women. No way. I know, it's crazy. Wow. But there's so much there's so many. Better than they are. Yeah, we're doing better than Tinder. Yeah. The point is that when you have, I don't know, hundreds of millions of user, it works even if you have one or 2%. But yeah. So with the search, you'll be able to search, obviously only if the other users have disclosed those information. So age, gender, profession, which is going to I think the profession looking for Profession is going to kickstart the Bitcoin secular economy, right? Because imagining you can look plumber in Oxford and then you can paint that because obviously if it's in the app, it's a bitcoin max. Right. So that's going to be very exciting. ",timestamp:"00:19:33-00:24:59",topics:["Orange pill app","Geyser","piggybank","piggybank"],type:"twitter_space",weight:42.97230338635478},{boost:0,date:null,description:"The solutions to main challenges facing the ranching industry in Nigeria ",episode_title:"The Orange Sun 🌞 Let's talk #Bitcoin & Cattle Ranching/Sustainability",guests:[{name:"Texas Slim",profile_picture:"https://pbs.twimg.com/profile_images/1589784780970795011/02jf0fqp_400x400.jpg",ref_id:"b4448c8e-9238-4aba-bd25-efb329ea5a72",twitter_handle:"modernTman"},{name:"Lucas",profile_picture:"https://pbs.twimg.com/profile_images/1596345084966014976/maviSGq3_400x400.jpg",ref_id:"e3adb591-b29f-435b-bd34-210f2dbcedaa",twitter_handle:"impossiblyso"},{name:"Firebust",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"0fb6c7f3-a673-4fe5-9599-8165800a2ff0",twitter_handle:"FireBursts"},{name:"Hamza Yusuf",profile_picture:"https://pbs.twimg.com/profile_images/1318064165030940672/sakbSOvT_400x400.jpg",ref_id:"03a74669-b653-4c57-8799-a312cb041089",twitter_handle:"Hamzayu28849293"},{name:"Adenekan's Father",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"b8259997-2ef0-4e6e-8d58-a69b5eda550a",twitter_handle:"AdenekanFatai4"},{name:"Adenekan",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"ca6a563e-0e84-4811-be82-a3b3cd12d399",twitter_handle:"AdenekanFatai4"},{name:"Heritage",profile_picture:"https://pbs.twimg.com/profile_images/1510397558652350469/jYOl00tU_400x400.jpg",ref_id:"98a6d9df-3c39-49ec-8a39-074e61af4ece",twitter_handle:"herrytheeagle"},{name:"Enoch",profile_picture:"https://pbs.twimg.com/profile_images/1596235105663533056/5mRUbLm3_400x400.jpg",ref_id:"4f8af040-3d0c-49c1-806e-aef89d8693fb",twitter_handle:"KazEnoch"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/a91f79fd-d85f-4440-b012-4bdafdc83341/f1d1c5b5-b8c9-44ed-a217-f75b398376d5.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"754762ac-7680-4b80-9ff4-f314ae65d146",show_title:"Satoshi’s Journal",text:"Good morning, everyone. Such an insightful, interesting topic we have today. Like when she said we don't have all the time to dictate it so that we respect our guest time. But Ariel, thank you, sir, for being with us. I mean, it's no small thing that you're here. We know what your time means to us and all that. Thank you. It's such an honor to have you here. I'll just go right into it. I may not be able to exhaust my questions and I planned on, but just to make some few comments here, that bitcoin builds communities. And I think that is what Texas Lime has been trying to point out. It's all about community building and we can achieve that. But the pain point for catering is in interior that quickly. I heard from identity is one, security is a big issue. And that's because one of the reason is that we're not doing ranching here. Okay? We're not doing ranching here. The farmers get to the railroads, get to move around and all that. We don't have a ranching system. But a ranching system is so important where they are set out, places where that is, well, knowledge that these cows can feed on, the advantage is big. The advantages, less risks of diseases, we can have less risk. And also when these cattle are moving and moving, they don't get the right yield in terms of adding weight and pounds and all that. So that's a challenge I think we can sort out. And how do we sort that out? I mean, I know we're having a big project where we can begin to have a bitcoin only ranching system built in Nigeria that will technique one, security two, it will help us foster bitcoin education easily. And also we begin to have the fattest and the biggest cows and the most healthiest cows that Nigerian can produce. I think satoshi journal, we can do that. We can push that. I know we have a big project, but for now let me just quickly drop so that we can respect that. Yes, this time. Thank you so much. Yeah, no problem. And last but not least, lucas, do you have a question or comment? Oh, I'm glad we had time. I'm sorry to come late to the conversation, but I work with towns in New Mexico and Colorado trying to get them to adopt bitcoin to begin a. Localized currency based on their water system. And I grew up on a farm ranch, and to me. Giving rural areas starts with like, valuing water and watersheds. More yeah, I totally drive with that. And I highly recommend that you follow Texas, slim and a dennett and anyone else on this panel if you want to partner up and see if you guys can help further what you're trying to do. It's right in line with what Texas and slim is doing ",timestamp:"01:59:32-02:02:45",topics:["Bitcoin ranching system","ranching"],type:"twitter_space",weight:17.55785369873047},{boost:0,date:1671644776,description:"The Bridge2Bitcoin project",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b18df9d2-d034-4e1f-bcd1-d70b30fe9059/506355bc-c119-4f18-bf0b-abe9be8c17d6.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"c11fe5dc-bed6-408f-ae1b-650580184f3e",show_title:"Geyser 🌊",text:"love to hear from Bridge to Bitcoin, because I know you guys, I don't know if you've created it or if you're well, it's a Bitcoin asset project, right? Let's talk about that. Welcome. Hey, Mick. How are you? This is Christopher from bridge to bitcoin. Hi guys. How is everyone this evening? Good to be here. Great to join you guys in your space. So thanks for setting this up. Mick, apologies for joining late. So apologies if I go over ground that you've already talked about out. Oh, no, don't worry. Sorry for tagging you last minute. No worries. Thanks for tagging. It's been great to speak with Connet. And also I just want to bring it back. Well, actually, I'll start off by saying congratulations on getting 30 projects listed this week on Geyser. That's fantastic. That's really great. And just to resonate with what Connett was saying in terms of things get built in a bear market, I think it's fantastic. And you guys are really promoting it. So thank you for everything that you and the Geyser team are doing, helping people, or Bitcoin is build in this bear market. Because for me, for the rest of the team, it's really important that we build foundations now so we're ready as the ball comes out. It's fantastic to see. So for those who don't know about bridge, for those who don't know about bridge to bitcoin, we onboard merchants to accept bitcoin payments. And we received a grant from Geyser early this year. I'm ashamed to say we haven't yet, and it's been on our to do list for weeks, months, to put up a project, a crowdfunding project on Geyser. And we should really do that soon. But, yeah, we'll get that. It's definitely on our to do list. So we hope to do that soon, especially now, as you say, Nick, the ease of putting up a lightning address. And that makes it so easy, as Joe Nakamoto tweeted about earlier this week. So we shall definitely get on to that. But I just want to go back on what I heard Mateo from Orange Pellet talking about, because he dropped off the call now. I think he has. That's a shame. But I really resonate with what he was saying in terms of how. For. Us, onboarding merchants is one of the cornerstones of Bitcoin success, certainly from my perspective, and making the user interface really easy is really important. I sort of resonate with what Mate was saying in that I think most people are currently not fussed about decentralization, they're not fussed about privacy. We as Bitcoin as are, we get it, we've been down the rabbit hole. But most of the society, they want convenience, they want ease. And that's unfortunately why I think CBDCs are going to hit hard, because people won't do their homework, they won't do their research, people are going to welcome it with open arms, unfortunately. So for me, merchant adoption is really important and introducing that in a way that's really easy. So the way we do that for Bridget to Bitcoin, ironically, it's not Bitcoin that we're selling merchants. For us, it's about creating additional revenue for them by saying, oh, hi, guys. Hi, merchants. What we're going to do is we're going to create a new customer base for you called Bitcoinners, and they're going to come and spend their currency for at your shop service and it's going to create additional revenue. And so for me, it's a slow orange bill, because what happens is a lot of these merchants get bitcoin is coming and using their services or buying their products, and we as Bitcoin as we're fantastic customers. We're so enthusiastic. We travel miles, we buy stuff from all over the globe, we get it shipped over, because you as a Bitcoin business, we want to support you. But if you're new to Bitcoin as a merchant, you kind of get overwhelmed quite quickly with how much attention you get by accepting Bitcoin. And it's great, because what that happens, and what we've evidently seen is that those new merchants suddenly get this influx of bitcoiners and it leads them down the rabbit hole without us having to do anything. Because bitcoin is they make an impression because we're such happy people, especially in these economic times where everyone's feeling the pinch, we will go that extra mile, literally, to spend our bitcoin, to spend our SATS, and replace them. And we're happy about it. We're more than happy, we're enthusiastic. We're the best customers you could ever have. That's amazing. For me, it's kind of a cornerstone of how we can it's sort of a Trojan horse. Trojan horse orange pill. So we're going around to regular businesses so who don't even know about bitcoin, and that's what we're planning on next year. We're going to trade shows. We're just to speak to regular people. We've got no idea about bitcoin, and we're going to talk to them about this fantastic payment processing network called the lightning network. And bitcoin normally is quite late on in the conversation, actually, because as everyone, I think, on the call knows, the processing fees on the lightning network are next to zero. They're really cheap compared to what our fiat counterparts are charging. Plus we've got instant settlement, all those fantastic things. So we talk about it's really interesting. We talk about the payment rails. That lightning network is a payment rail and how better than it and eventually we get to the bitcoin piece. But, yeah, for me, it's about making their businesses more profitable, having additional revenue, and it's fantastic because you literally see them fall down the rabbit hole. So we had that recently with a small chain of pubs, just two pubs that we onboarded last month, I think it was last month or the month before. So this landlord, he owned two pubs and he was not a bitcoiner, and he was not interested in bitcoin. But when James, my partner, said, right, we can bring extra customers to your pub, they're called bitcoin as, and they will spend their currency, but it will create additional revenue, he was like, fine, okay, I'm not interested in bitcoin, but I am interested in additional revenue. So if they're going to come and spend their currency and I can give it to my local currency, great, because it's good for my business, I said, fantastic. ",timestamp:"00:51:38-00:58:00",topics:["Bridge2Bitcoin","Bitcoin payments"],type:"twitter_space",weight:35.60085180856705},{boost:0,date:1671735703,description:"Tips for building a bitcoin community",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"d65c7fdb-df02-4bef-a6e6-8d214f6284d4",show_title:"PUBLORD",text:"will be here, too, of course. Yeah. I'm planning on setting up on the Tribe relay. Like when I get up. I'm going to get a laptop next week before I head was just talking about it. Honestly. Brian, DM me a list of like, some of the top speakers you think would be able to explain it because look at us, we're a bunch of regards, as they say, explain it to us like we're five and wear masks in a swimming pool. Like that kind of level. Yeah. Let's talk offline, brother, because I want to hear more about this wearing masks in your cart. All right. Sounds good, Bobby. I'm heading out with Brian as well. Always a blast. I appreciate the invite. I thoroughly enjoyed the Noster talk, to be quite honest with you. BTC sessions. Have a wonderful bonanza tomorrow. Looks awesome. Yellow, I really came here today just to kind of be around you and just love this group. I love you, Preston. Man thanks again for stopping Preston. Good, deep Preston. Happy holidays. Thanks for all you do for the space. Preston. Oh, yeah, man, my pleasure. And I'm honored to be a part of this movement with everybody else. Okay. Let that putt with Preston fish sink in. Preston. Just let it sink in. Oh, wait, yeah. Preston, before you go, because listen, I had an idea for you guys, because, listen, I like to go skiing in Colorado every year. And there's a place there go to Breckenridge or Keystone, but they've got this one little area where they had Lindsey Vaughn do a run, okay? And this for the kids for the most part, even though the adults can't hit it either. But they've got I don't know how many hundreds of meters it is, but they've got to run at a time there, and you get to try to test yourself against a time. So what I'm thinking is pressing you go solo on that course early, all right? You put your score up there, and then anyone who beats it, you get some SAS. Preston puts up the initial score, and you get SAS if you beat it. Just saying. I'm there. On a serious note, I am going to this Jackson Hole event in 1 March to I don't know if it's the second or the 3 March, but I'll be out there for that if anybody's in that area. All right, guys, see you. Thanks for the have a good one, man. Take care. Okay. BTC session. Ben, sorry, one question. Just say one quick thing. Just because BT session is in and probably I wanted to get your support on it as well. I'm trying to start a small bitcoin community in South London. And I'll put in your chat and mentioned earlier, I just wondered if I could get support from you guys because of BT sessions just turned up just now. I just wondered if I could get some maybe some help on some talking points as well, because I'm just trying to build something that's very I wanted to be very simple conversational. It's the first one, but I want to build on it. It's free. And I'm going to get some sponsors from some beer companies so we can do free beer as a kind of a pool. But it's going to be my pub that I run. I put it in a chat. So I just wanted some help, really. It doesn't have to be big. It's not going to be nothing like the Harvey party right now, but I'm planning on being there as well, so maybe I can get some people to come along for that as well. Sounds awesome, man. What kind of people are you expecting? Is there going to be some experienced bitcoiners? Is there going to be a mix of newbies what's the demographic you're looking at first? It's yeah, mix. I mean, I've got an old far who's written about 20 books about my favorite football team, which is Crystal Palace, but he's got a few properties and stuff and he wants to invest in Bitcoin. And I said to him it's exactly the same thing I said. It's like if I tried to explain to you how a car works, the fact that he knows how a car works, you still need to learn how to drive it. I can tell you all the benefits of how good a car is against a horse, but you still need to learn to drive. You wouldn't give a car to a ten year old and all this sort of stuff. There's an education that still needs to be learned. So we got to start small and then build up because he's got property, he writes books and stuff. I've got mathematician coming, a C plus plus, programmer coming, people I know, and obviously there is some shit coinners who want to come along and learn. But obviously you look at the meeting, I put it in the chat, it is Bitcoin. And I've called it Bring the chat. As in BTC. That's the breakdown of BTC. But obviously it's Bitcoin and it's the first one, so it's kind of build from there. But it is a case of break them in gently and I don't want to be fun. It's not about let's overload them with too much tech. But I kind of want to go with if we want to go down the economic rule road, then we'll go down the economic rule if we want to get to understand how Bitcoin works. But it's a case of it will evolve because of I can do as many I could do one a week, I could do one a month. It's about that engagement and just making it fun and free. That's the main thing. I think that's great. What I would say is maybe if you're doing a couple each month, then you could look at it as there's always going to be kind of like a beginner night, and then there will always be like the secondary. One will be maybe more in depth topics that will be of interest to the people that have been there for a while and have leveled up or the ones that are coming in already with a good base knowledge. And then that way you various things, I could actually split it. So we do the first one and then we work out how to split it on the technical to the beginner type side of things. And then I could do alternative nights based on maybe work it that way. Because probably knows that I love these spaces and I love learning myself and I want to share what I learn. And I think the best way to learn is to share your knowledge. The more I want to share it, the more I have to learn myself to make sure that what I'm saying is correct. And that's why I love these spaces so much, because I'm addicted to him. London I would just posit one thing. And this is cool that you're here asking these questions when Ben is here, because if anyone wants to learn anything about Wallace in general, see reviews and learn how to do things, you go to BTC sessions on YouTube, you can learn so much. However, there's a different level when you can do it sort of in person and you see it happening. And Ben. We did Halloween in Charlotte, North Carolina. And what was really cool, and I was mentioning this earlier on the space, and people don't understand, even if you've been here a year, you forget how far advanced you are when it comes to not only understanding Bitcoin and what it means, but the technology behind it. So if you can set up London, just a simple thing where you just show somebody how to download a wallet, either moon wallet, whatever wasabi wallet, and send them some SATS, dude, they are blown away and they'll be new to the space. But I'll tell you what, that changes lives when they see that. When you do that, that is like putting a couple shovels about 3ft down into the ground to start that rabbit hole journey. When they see that you just sent them value outside of the Swiss system, it was pretty cool to see. And yeah, when I saw that, I forgot, man. Sometimes it's like when you used to believe in Santa Claus, man. Used to believe in Santa Claus. Then you got older. But when you see people that do Lightning Network for the first time, you believe in Santa Claus again yourself. You see that spark of joy in their eye. Wait, you don't believe in capitals? What are you talking about? I was going to say Santiago. I think he pulled it back. ",timestamp:"02:14:38-02:24:14",topics:["bitcoin community"],type:"twitter_space",weight:36.0744936342072},{boost:0,date:1671735703,description:"What bitcoin represent vs what Nodster network represent?",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"fbefee4e-b2e3-4635-88ac-800d3482e9f8",show_title:"PUBLORD",text:"on Craig's recommendation. I went to Jack.com. Was not what I thought it was going to be. Thank you, Craig. I had an education. Look, we'll talk about the notes a lot of times. All the fact Preston jumped in, I wanted to just have a few more words. I know he's got a busy schedule, but preston, you're coming to the end of 2022 investor podcast, one of the best ones we have any tweaks to next year. Guests are looking forward to have not really just doing the same thing in reference to the Noster conversation there. The thing that's such a game changer for folks is if you want to run your own relay and host your own data, you can do it. And the barrier to entry to do it is really low. In fact, that's what I've been doing while I'm here talking to you guys is I'm setting up my own relay to host my own data and to make sure fucking go that nobody can mess with it. And so when you look at what this protocol represents, when we look at Bitcoin, it represents it's like equal sign free and open money, free and open markets. When you look at Noster, it's similar to Bitcoin in the regard that equals sign free and open speech around the world. Nobody can shut it down. Right. That's what it represents. Now, we are in the very, very early days of this, and so whether we can pull it off or not at scale, I don't know. It sure seems like we can. When you have guys like Jack Dorsey in there, like every minute of the day working on the protocol and working on I don't know if he's working on clients or if he's just working on the protocol, but he's in there. And that guy wouldn't be in there if he didn't find a whole lot of promise behind the rudimentary building block of an event. That is where it all starts, with this protocol and everybody's just building around it. It's pretty exciting. Hey, Preston, are you able to limit who can see your data that you host by only letting people that you trade public keys with access it or something like that? Is that a concept? Yeah. And Brian, correct me if I'm wrong, because you seem to be pretty well versed in all this, but from what I understand, as I'm literally trying to set this thing up, I'm struggling a lot setting this up because this is not my area of expertise, but I have an appreciation for what it represents. I'm trying to learn along the way. But my understanding is you can host, you can relay whatever accounts you want, as many as you want or as little as you want, and people can connect to it. And you can allow that connection or not allow that connection, but it's creating this web of interaction between these encrypted messages that are of very small size, and they're just being passed around from relay to relay. Jim, are you basically asking, is there a way of blocking people? I guess it's more my thinking was more if you're going to host data, so maybe you want some of it open to anybody so you have a permission set on that data where anybody can just log on with a public key. You don't know if they're a bot or anything else, and they can see your stuff. But then maybe there's other stuff you only want your followers to see or something like that. I don't know. Maybe testify. Just let me know. There's a new version of Domas just got released. Is that relevant? I'm sorry. We ",timestamp:"01:35:32-01:39:29",topics:["Nodster network"],type:"twitter_space",weight:35.643925540367206},{boost:0,date:0,description:"The Genesis crypto lending fraud",episode_title:"The Orange Sun ☀️ #Bitcoin News and Talk",guests:[{name:"Portland Hodl",profile_picture:"https://pbs.twimg.com/profile_images/1562306406526492672/LiqmI9NS_400x400.jpg",ref_id:"530aba21-392f-4156-9e91-4fc5c76fced1",twitter_handle:"PortlandHODL"},{name:"Miykael Woodward",profile_picture:"https://pbs.twimg.com/profile_images/1473433558475689985/CM0o3oWu_400x400.jpg",ref_id:"6fe02a78-4f07-47e7-8e64-b278a3167835",twitter_handle:"MiykaelWoodward"},{name:"Okin Mobi",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"bbd18918-7758-4bdb-b9a5-641bf92748a6",twitter_handle:"OKIN_17"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"Funsho Jimoh",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"a237ffb0-792b-484e-b12f-65a2b679eaf1",twitter_handle:"fnicencool"},{name:"prince ogbonna",profile_picture:"https://pbs.twimg.com/profile_images/1595693872637681664/TeWJzTut_400x400.jpg",ref_id:"0b0c70b1-23b1-4d98-b259-6dbb67b7481d",twitter_handle:"princejoj0"},{name:"The Bitcoin Village",profile_picture:"https://pbs.twimg.com/profile_images/1544318244789649410/kQ2G1MCE_400x400.jpg",ref_id:"d894aca4-36f6-4821-a00b-a4e860b19502",twitter_handle:"VillageBitcoin"},{name:"Masterguantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"29baf525-42eb-41a6-98f9-a0d6b4480af0",twitter_handle:"MasterGuantai"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://s3.amazonaws.com/stakwork-uploads/uploads/customers/2707/media_to_local/a99c4b03-009f-4027-a9c7-3c249a0cf9b7/a99c4b03-009f-4027-a9c7-3c249a0cf9b7.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"663836ff-8d5a-4037-a62f-72568fff46f1",show_title:"Satoshi’s Journal",text:"that's very interesting. But Genesis future is more uncertain because the business is heavily focused on lending out customer crypto and has already engaged restructuring advisers. The crypto lender is part of DCG, the conglomerate controlled by Barry Silbert. SEC officials said the possibility of a DCG or Genesis bankruptcy had no bearing on deciding whether to pursue a charge. It is the latest in a series of recent crypto enforcement actions led by Gensler after the collapse of FTX Bankman Freed's crypto exchange late last year, Genzler was roundly criticized on social media and by lawmakers for the SEC's failure to impose safeguards on the nascent crypto industry. Gentler's SEC and Commodity Futures Trading Commission, chaired by Roston Benham, are the two regulators that oversee crypto activity in the US. Both agencies filed complaints against Bankman Freed, but the SEC has of late revved up the pace and the scope of enforcement actions. The SEC brought a similar action against now bankrupt crypto lender BlockFi and settled last year. Earlier this month, Coinbase settled with New York State regulators over historically inadequate know your customer protocols. Since Bankman Freed was indicted on federal fraud charges in December, the SEC has filed five crypto related enforcement actions. So the SEC is finally getting some stuff done. They have been criticized, and it's really great to see them finally do their job. And hopefully they'll essentially what I see happening is, of course, the Winkleboss twins are pissed because they are like a little cornered animal. And you know what happens when you corner an animal? They'll fight you back, but they're fighting back. And they're in a corner because they're trying to get their customers paid back. But they're having a little war with Barry Sober, and Barry Sobert is not paying them back. So now you got basically a pending, they're probably going to go and sue Barry Sobert and then now you have the SEC charge them with those charges. So once again it's just going to show you this is all inevitable. They should have all known better but I think it just they're not idiots. They should have known better but I think that they do idiotic stuff because there's already been a precedence by which people that do bad stuff, they end up just getting bailed out anyways or they just get out of it with a little slap on their hand. And we saw that many times in our history. And it's sad because basically these crypto exchanges are going to be probably let off with a small little slap on the hand but at the expense of millions and millions of dollars from their customers who they basically took advantage of. They were not good stewards of their customers money and they were using that customer's money to borrow against, to buy more assets and just become over leveraged. So we don't know what the balance sheets of Barry Silbert's DCG company is and we don't know the balance sheets of Gemini but yes, who knows, they may be worse than what we think and this could cause further cascading of crypto in general. The unfortunate part about this is that as we all know, crypto and bitcoin are two separate things. Bitcoin is not competing against any of those cryptocurrencies that are on exchanges of which there's 20,000 plus and that's still defined. But essentially as those cryptocurrencies as they get rug pulled and litigated against, so to speak, bitcoin is going to go down with them. But when it's all said and done, bitcoin just keeps doing what it's supposed to be doing every ten minutes, just block by block verifies transactions, validate transactions and it could give the rats ass about what's happening around it. Nevertheless, the cascading effect of the shit coins caused bitcoin to go down. So who knows, there might be some further damage, so to speak. Damage is not the right word. There can be some further lowering of the price of bitcoin just because of the shit coins getting finally rug pulled by regulation. It was highly necessary and I'm glad that they're finally doing something. It'll be interesting to see what the SEC does as far as new laws and regulation that come out of this. And it will also be interesting to see if the Winklevoss twins have the liquidity to be able to sustain multiple litigations and perhaps even further degradation of the value of what's on their balance sheet. I think another thing that's interesting we all know about Binance, it'd be interesting to see what their balance sheets look like if they're as bad as we think they are. According to Binat's CEO, in a stone cold manner, he told them that they're good to go and they have the liquidity to sustain even a further drop. But that was a huge liquidation. They went under anyways. We're seeing it all. Rugpool and Bitcoin will stand on the end, we all know that. And it'll be interesting just to see if everything pans out. Just another game, theoretically, in bitcoin. ",timestamp:"00:41:05-00:48:14",topics:["crypto lending fraud","DCG","SCC","Winklevoss"],type:"twitter_space",weight:14.263422012329102},{boost:0,date:null,description:"Decentralization of bitcoin and holding ",episode_title:"Café ₿: Thanksgiving Special 🦃 w/ the Café Bitcoin Crew",guests:[{name:"Rob Hamilton",profile_picture:"https://pbs.twimg.com/profile_images/1524033110630969351/wTUr8S36_400x400.jpg",ref_id:"94b18625-4778-4cfe-9c78-823704d1c1b1",twitter_handle:"Rob1Ham"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"DJ Satoshi",profile_picture:"https://pbs.twimg.com/profile_images/915987644043030528/5nh3JQSz_400x400.jpg",ref_id:"02ae35cb-3728-441f-84c5-a8db5d9150b4",twitter_handle:"satoshi__tomiie"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Shaeroden",profile_picture:"https://pbs.twimg.com/profile_images/1560742113410678789/cHZ2tUjU_400x400.jpg",ref_id:"0da06a5c-038f-4737-9af7-17bed3712e68",twitter_handle:"Shaeroden"},{name:"Andres",profile_picture:"https://pbs.twimg.com/profile_images/1401952614795943950/aL2h3Wb4_400x400.jpg",ref_id:"db4abfe9-e3bb-4ffa-9783-ce67f5b20270",twitter_handle:"andresvbr9"},{name:"Peter Ansel",profile_picture:"https://pbs.twimg.com/profile_images/1374726811221954565/R7ttqYMI_400x400.jpg",ref_id:"2d418514-e03c-414d-8ed1-10c894aacb6e",twitter_handle:"peteransell"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c25e3b3c-b5ef-435e-9e7d-9e406089e7b1/572908d4-f2cc-4c7b-980c-8359d2c8000d.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"2acb23ed-c7ca-4f51-abb6-bfcc0a87316a",show_title:"Swan.com",text:"I'm amazed you fell for like well, I don't know if they fell for the Rogers thing, because I think Roger believed what he was saying, but it's like, who's Roger to understand how an exchange works, right? Because I don't know. I was friends with Roger. I was talking to I know, but I was friends with him. I was talking to him all the time back then. I was working with the guy, and even I was like, but I worked a bit instant, so I had to work directly with Mount Cox back then. And it was such a shit show because I had all my funds on Cox, too. But after that experience, I was like, okay, I'm never using Cox again. These guys are a train wreck, dude. You guys got to understand that Brad was raised not only Mormon, but Canadian, which is a double whammy of gullibility. That's true. The truth is right there. Take that with some extra maple syrup today. Wow. Good one. It's amazing you're not a bee catcher, Brad. Well, Brad's also smart. He's just really nice. So he keeps being like, oh, I guess it's true. Maybe Roger does know things I don't. That's the one thing, though, I knew the entire time, was that Bitcoin was the thing to pay attention to, and you always wanted more Bitcoin, and that decentralization was the most important thing about why this asset is valuable in the first place. And sacrificing any form, any sort of decentralization, invalidates the investment case for bitcoin. So if you're going to make the blocks bigger so that people can't run nodes as easier or set a precedent that some centralized cartel of businesses or devs even, can just change the parameters of either the code or the monetary policy, that completely invalidates the sound money properties of the asset. Which is why I never fell for bitcoin cash or ethereum or any of these things, because decentralization is the most important thing. So that also is what I focused on the whole time. It's like, this is only important because of decentralization. And you have to maximize decentralization even at the expense of pumping mentals, as Richard Hart would like to say, or Fomonomics or whatever you want to call it. Like the ethereum people sacrifice their ceremony properties for ponzi. Nomics, they actually made a centralized change in the code with the IP one five nine to try to actually make the stock to flow meme of ethereum better than the stock to flow meme of bitcoin. And it's the stupidest thing, and I'm so glad, is that when they became Brad, is that when they became ultrasound money? Because I have to tell you, I've talked to many ultrasound technicians and none of them are using ethereum. So I don't think it caught on. Hey, Brad, I think the real lesson that I've learned from you, because I love when we get in clubhouse and we just rib you, it's a good time. But I think the real lesson of Brad is you can make some of the dumbest, stupidest fucking mistakes for a decade and you still come out just fine. You have a core bitcoin position. Yeah, it's good. Literally, you have to do this thing where if you're not a conservative person who's able to just safely rationally hold bitcoin and not get distracted, you know, auto diagnosed me with what was it? Activity bias. Auto. Yeah. So this is probably worth going over for anybody in the room, but everyone has activity bias. It's not just Brad. Brad just has maybe more pronounced activity bias than others. Hyperactivity bias. Yeah. So this comes from evolutionary biology, essentially, which is that, like, let's imagine you're a small mammal on the grasslands and the grass blows, but it's above your head, you can't see what's behind it. Nine times out of ten, it's going to be the wind that's moving the grass. One time out of ten, it's going to be something that's going to eat you. And so it behooves you to run away to have a strong bias towards action. Which is why all organisms on earth have a strong bias towards action. Right. Cause one out of ten times you get totally eaten by a predator. So in markets, though, this works against us because you want to have a strong bias against action, and it's very difficult to just sit still like this is the quote I posted from Jesse Livermore's book, which, again, go read reminisces of a stock operator, this bear market. It's a very instructive book. It was written in the early 19 hundreds. And interestingly enough, a lot of what was going on, like pre collapse of 1929, is very similar to what's going on in cryptocurrency today, like the bucket shops and everything. It's really an interesting parallel. But basically you want to have a strong bias against action in investing terms. And so huddling at its most simple basic level is just getting a bitcoin position and then saying no every single day to selling that bitcoin position. That's it. And then if you want to sort of judo your activity bias, right, make it work for you, you go from huddling, which is mainly a passive activity, to stacking SATS, which is an active activity. So what do you do when the price is down? You stack SATS, right? And this is a way that you could actually hijack your own activity bias for something beneficial, but you don't want to use your activity bias to trade chick coins to sell in and out of your position, generate taxable events. You want to sit on your ass and do nothing. And that's the hardest thing to do. I love it. This episode of Cafe Bitcoin has been legendary and epic in that this will be the one remembered as when American hotel compared Brad Mills to a small furry mammal in the grass trying to avoid being eaten by predators. I thought it was the wind. You blow us canadian and not a Mormon. Yeah, not anymore. One of the things that you said, the thing that you just said was great and all, but most of us don't have the ability to control our activity bias. So I think most people, like some less so than others, they're going to come in and they're going to try to trade. They're going to go search YouTube about crypto and they're going to find, like, you know, people who think they're smart, who are actually just drinking koolaid themselves. And there's a lot of people in that category, like, sure, there's bitboy and people like that who are just grifters that are getting paid to show garbage, but then there's like, people who are unbiased, they're not getting paid to show garbage. They actually are good at technical analysis and trend following things like that, but they drink the Kool Aid of Defy and crypto and NFPs and they start giving smart sounding advice to new entrants and then they just create a whole class of people that are going to just go repeat all the mistakes that all the early bitcoiners made with their activity bias. So the thing is I think we really should push the idea of for new market participants and even people in here that maybe got ripped off on Luna or Celsius or FTX or any of these things we've all kind of had those types of experiences in the past. The way you get forward from it. I think honestly if you can't do what Hauddle said and actually control your activity bias and recognize that and just sit patient just buy and hold and dollar cost average and maybe had your risk at the top or something like that is create an internal bitcoin maxi personality like this is what the allship owners should do they should drink the bitcoin Koolaid like Jekyll and Hyde style have a bitcoin maxi personality inside of them. Even if they think bitcoin Maxis are cringe and stupid and boomers and don't understand utility, blah blah blah, every shift corner should have a bitcoin Maxi inside of them. Wait that doesn't sound right. Okay, so every shit corner should have a bitcoin maxi inside of them that controls their bitcoin, the private keys to the bitcoin and that bitcoin maxi personality needs to sign up with Casa or Unchained or somebody to do multi stig to protect the other personality. The FOMO sapien activity bias personality from going out and gambling away all their money. Yolo betting on some ICO buying a JPEG because Gary vee told them it's going to get them into his bedroom or something like that there needs to be like everybody should have a bitcoin max inside them. I'm just calling it that's what they got to do. And let the bitcoin maximize personality. Manage your bitcoin and segregate your portfolio so that you're protecting yourself from your Dgen side and if everybody did that they'd be like me because I made all these mistakes and then I'm still here and bitcoin changed my life. So most people are going to shit coin they should just do it in a way that protects themselves from what inevitably is going to happen. ",timestamp:"01:43:16-01:52:28",topics:["ultrasound money","Ethereum","bitcoin maxi"],type:"twitter_space",weight:13.933148503303528},{boost:0,date:1671644776,description:"Some of the importance of Bitcoin Creator spaces and how it helps Bitcoiners",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/885fe09b-bb21-49a5-8667-3c73ed36918f/196dc1e8-c7a4-4dc7-902f-d00107aefb42.mp3",node_type:"clip",pub_key:"0372cd0c8469f2034336a243e018d4d60e07efef8e7d10417807da1173bd5b002f",ref_id:"c80659ad-87eb-488c-be5d-00ac386a2b15",show_title:"Geyser 🌊",text:"Did you get the invite? I'd love to hear about what your features releases are up to. So Builders feature orangeville app. We have Lightning Piggybank, which is essentially an electronic cash piggy bank for children that accepts bitcoin sent over lightning. So this is a pretty small project, but it's a pretty sweet thing, actually. So let me add this to the it's pretty incredible, actually. I need to show you guys. I need to show you this. Imagine a piggy bank, but instead of an actual pig, it's like a cardboard box with a Geyser satoshi. Yes, we did. What's up, mate? I cannot do from the desk, though. You cannot talk? I'm not on desktop. Oh, no. You can't talk from desktop? No, it's got to be mobile. Yeah. It'S painful. Yeah, we got to talk to you. Yeah, exactly. But yeah, just to finish up this thought, there you have this really cool piggy bank which has this, like essentially this counter, this wallet counter of how many Satoshi the project has, which is really cool. And this person is just raising money connecting their Geyser project onto their Lightning Piggy Bank, which is fucking cool. I mean, this looks like a little DIY type of fun project that a father did for his son or something super cool. But let's go back to you, Matteo. Let's talk about orangeville app. Why not? What's up with you? Yeah, for sure. Orange. Bill app is a mobile app. We use Geolocation, which is the only approximate to connect you with nearby users, nearby pledge, and soon we'll let you find events. So meet up, conference, whatever. Actually, it could be anything because the user can create events straight from the App and then put the address. And then you'll be able to invite people there nearby to the event. So it doesn't have to be a meetup. It could be like a soccer game or picnic on the beach or anything. That's pretty cool. Hopefully it comes out January or February. Definitely February. And then we're going to launch the search feature, which will allow you to search for people all over the world. So if you're traveling and you're going to Ghana, you'll be able to look for clubs in the App there in Ghana. And then you can chat them up and say, hey, I'm coming to Ghana next week or next month or whatever, and I'd like to meet with you. I don't know anybody in Ghana. And of course, you can also search by gender for dating, age, profession. Right? We got to do yeah, I'm sure it's going to be like 95% guys, though. It's not can you confirm that? No, it's not. I don't have the number precisely because some users, they don't put a picture. And I know there's one woman that I talk to, obviously I talk to everybody on the app and you wouldn't know she's a woman, but it's a woman. But I think it's about 10% women and 90% men, which it looks it doesn't look good. But Tinder, which is the biggest dating app on planet, the ratio meant to women, it's 97% men, 3% women. No way. I know, it's crazy. Wow. But there's so much there's so many. Better than they are. Yeah, we're doing better than Tinder. Yeah. The point is that when you have, I don't know, hundreds of millions of user, it works even if you have one or 2%. But yeah. So with the search, you'll be able to search, obviously only if the other users have disclosed those information. So age, gender, profession, which is going to I think the profession looking for Profession is going to kickstart the Bitcoin secular economy, right? Because imagining you can look plumber in Oxford and then you can paint that because obviously if it's in the app, it's a bitcoin max. Right. So that's going to be very exciting. The Meetups is really the first iteration of the social movements, right? It's a social network that Bitcoin is creating that you are enabling through the IRL meetups. But that's really the first iteration. Well, the Meetup is every meet up is not necessary. You can search for plumber and connect with the guy or girl, whatever, and then it's like you found the plumber online instead of on the app. And, you know, he's already a player because he's on the app and he's paying to be in the app. So we filed through all that kind of stuff. So Profession, I think, is going to be a big game changer for Bitcoin ecosystem. And then location again, travel, or if you just move to a place or whatever, and then obviously user name. So if you want to connect with some specific plan. So the search yeah, it's going to be amazing. So when's the search coming out? I think we're launching the search on a limited version of Search. We can only search by username probably this week or next week. And then we're going to expand it like, we're going to expand it ideally in January. Right now we're focusing 100% on Android because obviously, especially in some part of the part of the world, most labs have an Android. And so we need to be on Android ASAP, which will come in January. But yeah, searches come in ASAP. I think January, February, like Q One, 2023, we're going to launch pretty much everything. And then after that, we're going to launch the Orange Pages. So Orange Pages, it's in the name, right? We have partnered with oh, nice. Yeah, we partnered with BTC Map, and they have all the merchants that accept bitcoin. We got the API, and so you'll be able to look grocery store or airstalls, whatever you need right through the app on a map. So one place to find all these people, all these merchants and businesses and friends and girlfriend and boyfriend and events and meets up. So it's one stop. For all on Top Shopify. All the Bitcoin connections in real life in the offline. Right. The goal is to foster as many in real life connection as possible because I think that's how you win the battle when we meet him in real life is 100 times more powerful than meeting sending a DM or an email or a zoom call, right? Yeah. Right. So where does Geyser come in here? You guys are launching a project, right? We are. So what's the idea? Like, what's the idea behind the project? Yeah, probably today, maybe tomorrow. We're going to launch the campaign on Geyser. If you get a membership, orange fill up is a membership based up. Why? Because first, we don't want to do advertising. Everybody hates advertising, I think, especially the clubs. Second, we don't want to do any tracking of data, any data monetization, any of that. Third, we don't want spammers and scammers and bots and people that they just don't care about Bitcoin. So the app is membership based. If you go through the app, unfortunately, you have to pay with Fiat because Apple doesn't let us take payment in SATS, but we also have membership in SATS that you can buy on our website, which is Theorangeprop.com. Actually, it's my domain. It's also bitcoin is social. Just put it yesterday and then on Geyser. Nice. Yeah, I know. It was available. That's amazing. $10 on Geyser. That's going to be worth millions ",timestamp:"00:19:42-00:29:28",topics:["Bitcoin Creator space"],type:"twitter_space",weight:33.67529732328345},{boost:0,date:null,description:"Problems with the beef industry in the United States",episode_title:"The Orange Sun 🌞 Let's talk #Bitcoin & Cattle Ranching/Sustainability",guests:[{name:"Texas Slim",profile_picture:"https://pbs.twimg.com/profile_images/1589784780970795011/02jf0fqp_400x400.jpg",ref_id:"b4448c8e-9238-4aba-bd25-efb329ea5a72",twitter_handle:"modernTman"},{name:"Lucas",profile_picture:"https://pbs.twimg.com/profile_images/1596345084966014976/maviSGq3_400x400.jpg",ref_id:"e3adb591-b29f-435b-bd34-210f2dbcedaa",twitter_handle:"impossiblyso"},{name:"Firebust",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"0fb6c7f3-a673-4fe5-9599-8165800a2ff0",twitter_handle:"FireBursts"},{name:"Hamza Yusuf",profile_picture:"https://pbs.twimg.com/profile_images/1318064165030940672/sakbSOvT_400x400.jpg",ref_id:"03a74669-b653-4c57-8799-a312cb041089",twitter_handle:"Hamzayu28849293"},{name:"Adenekan's Father",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"b8259997-2ef0-4e6e-8d58-a69b5eda550a",twitter_handle:"AdenekanFatai4"},{name:"Adenekan",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"ca6a563e-0e84-4811-be82-a3b3cd12d399",twitter_handle:"AdenekanFatai4"},{name:"Heritage",profile_picture:"https://pbs.twimg.com/profile_images/1510397558652350469/jYOl00tU_400x400.jpg",ref_id:"98a6d9df-3c39-49ec-8a39-074e61af4ece",twitter_handle:"herrytheeagle"},{name:"Enoch",profile_picture:"https://pbs.twimg.com/profile_images/1596235105663533056/5mRUbLm3_400x400.jpg",ref_id:"4f8af040-3d0c-49c1-806e-aef89d8693fb",twitter_handle:"KazEnoch"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/a91f79fd-d85f-4440-b012-4bdafdc83341/f1d1c5b5-b8c9-44ed-a217-f75b398376d5.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"d8a44c3b-6219-49d5-9a35-4b2ca5972d7c",show_title:"Satoshi’s Journal",text:"at this time I wanted to get the perspective of Texas Lim and Dennekin and Hansa, I'm sorry if I'm mispronouncing your name, but Texas Limb, could you just briefly tell us what the problem is with the beef industry in the United States relative to the commercialization thereof? And then I also want to just hear the same thing from Adenikan to see if they have similar problems as we do here in the US. Please go ahead there. Texas Lim. Yeah, you brought up earlier basically the multinational processors in the United States and whenever we say processors, okay, that's the same as, you know, in Nigeria then using the butcher. So let's make sure everybody has that perspective and understanding. We have processors and butchers are basically the same thing. They're the ones that harvest the animal, they're the ones that cut the animal up and in the United States they also control the distribution. What has happened in the United States throughout the my lifetime. Basically. I'll use Texas as an example. We had a processor butcher in every county across the state of Texas. That was 254 butcher processors. They were called microprocessing centers. They're called abortoires butchers, whatever you want to say, but they're the ones that harvest the animal. Well, in my lifetime now, those 254 processing centers are no more. And what we have is for multinational processing, basically corporations, they're not basically housed in the United States. Three of them are from Brazil, South America. And what they do is they control the butchering, the processing of the cows. They also control the distribution. The distribution is a global market in which United States consumers do not have access to. The beef has grown in the United States, the beef is harvested. In the United States, the beef is shipped overseas to the highest bidder. This happens across many different countries. In Australia, they're up against the same thing. A lot of their beef is shipped across seas to the highest bidder. Same thing in Africa. Africa's beef is not basically being consumed by the African people in a way. Or basically the distribution is not controlled by the butcher processors. I'm not for sure exactly on the same level, and it can speak to that. But in the United States, we've always said that we have to feed the world. Well, we never did feed the world. What we did was we created distribution centers across the world to a lot of the highest bidders. And what we did in the United States is we quit feeding our communities. We took the most powerful food sources and we shipped them overseas to where the American people are suffering. And one of the biggest bottlenecks to our basically beef in the United States are these multiprocessing centers, the multinationals JBS Cargill, national and Tyson. And so they have a lot of poll across the globe. Nigerian beef is also sold on that same global brokerage market, same as Australia, same as South America, same as so many small countries that basically do not have access to sound money. And basically all of that energy is stolen and shipped to the highest bidders. Eliminating any form of distribution to local communities. That is what we have to get back to. That's what the Beef Initiative is accomplishing right now. We're building out nodes across the United States where we're back to feeding our communities first, and then we distribute across the nation. And we do it by ourselves. We do not have to have permission from the multinational processing centers. We have our opening up our own processing centers. And therefore we control the distribution. And that's kind of a good long and short of it as far as what we are up against. As I say, the biggest threat to the American rancher at this time is the multinational processing centers, which takes away basically the power to steward the animal to its right age and age and weight and basically how they do that is they do not give access to processing centers in a timely manner. And a lot of times you will have to basically schedule kill dates within the cattle industry in the United States a year and basically 18 months out. That is hard to do as a rancher in the United States, because you quit being a rancher and what you become is basically a babysitter of that cow all the way until it's going to be harvested and the money is made by the distribution in the processor, not the cattle rancher. Whenever you do not have access to that processing center, you lose out probably two thirds of what your margins could be in the United States. And therefore, if you have access to a decentralized processing center, as you do through the beef initiative, let's say you sell a cow, if you're having to use one of the multinational processings, you'll make maybe $400 profit off that cow. If you're able to take that cow all the way to the consumer themselves, in which the beef initiative gives people market access to be able to do that, $400 basically turns into anything between probably 25 and $3,500 margin. So you can understand how much control of the margins profits that the distribution, the multinationals have taken away from the American rancher. I have to say that it's probably the same in a lot of similarities across the globe, because if you control the butchery, the processing, you control the cow in a way that has been taken away from the rancher. And I think that's amazing, the parallel, because the fact that money has been controlled since the advent of money by central authorities so as to have power over the people, it's the same thing. Cattle industry and in farming is the powers that be. If they can control the land and they can basically monopolize the farming and ranching, then they can control the people to a certain extent. That's the reason why we have to get onto a decentralized money and onto decentralized farming. And that's essentially what the beef initiative ",timestamp:"00:53:50-01:00:33",topics:["Beef processing centers","Beef distribution","butchering"],type:"twitter_space",weight:13.423835754394531},{boost:0,date:null,description:"Changing the narrative about Stackchain and Bitcoin",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"d72f67b3-c42f-43cf-8e01-47065fe8e638",show_title:"Swan.com",text:"Good morning. Good morning. Alex is getting him up here, but what's up, Derek? What's up, Hand? Good morning, sir. Morning. I've seen you down on the trenches, Derek, defending the stock chain. Oh, absolutely. There's a lot of defending going on last evening. It was fun though. We made progress. He seems to be changing his stance. Yeah, it was great. It was actually one of our best shows we've done in a while. Tell us a little bit about it. Well, yesterday during Cafe Bitcoin, brad Mills had tweeted out that Stack Chain was a shit coin and then proceeded to run with that narrative throughout the day and different polls and post comments. Whatnot? Peter and Greg Foss and others called him out during the show. But throughout the day he continued to talk about Stack Chain in that way. We thought that it was kind of a lack of information available, right? And we had hoped that once he saw what Stack Chain was, our community project, what it was all about, what we were doing, that he would change his tune. So we invited him to our evening spaces and for 2 hours we talked Stack Chain about basically all of our accomplishments and different things that we've done over the past four months. And he changed his tune. He is not sure about our massive Twitter thread, the actual Stack Chain itself, but he understands and understood every other aspect of our community from lightning nodes to support, to donations across the world, to bitcoin communities, to having fun and stacking stats. It's an interesting progression. What did he not get about the long Twitter thread? He took back his initial statement too because he was talking a lot of crap yesterday. I mean, he got a first hand experience of that Stack Chain energy all day. He was basically calling everyone in Stock Chain shit coin and calling Stack Chain a shit coin and so doing like polls and all kinds of stuff. And so Stack Chainers weren't too happy about that. I'll tell you what though, him talking about it was great for Stack Chain because it spread awareness that a lot of his followers had no clue what Stack Chain was. We had new Stackers come in last night and do stack joins and get new blocks. So. Hey, fudd is great for stack chain. Apparently it spreads awareness. It's like bitcoin. It's funny, it's like the ECB, the more they shit talk bitcoin, the more relevant bitcoin becomes. Absolutely. They don't even talking about bitcoin. What's that like? Yeah, like they're huge. Bitcoin is so small, what are they. Even doing talking about bitcoin? No, that's the point though, if they are talking about it, that means it is relevant regardless of whether they're trying. You see what I'm saying? Oh, I see. All right, I'll be right back, I'm going to grab my coffee. Do what you want. I am pretty surprised that he stayed in there for the whole two and a half hours and just kind of listened to what everyone had to say. I thought that was actually pretty decent of him. Absolutely. Especially in the beginning he was getting attacked a little bit, everyone's defensive of our community, so I think that he had a fixed skin and he stayed around and he learned his final conclusion was basically like oh, Stack Chain similar to the community that I have over on Clubhouse. I was like, well yeah, we're literally just friends buying bitcoin together and having fucking fun. He compared it to the original Pleb movement, which I wasn't really understanding that comparison, but it was an interesting conversation for sure. That poll that he did was pretty funny. Most people are like what is Stock chain, right? And then Lauren's response in that thread was the absolute best. She did another poll. How many of these people voting are shitcoiners or followers or shit winners? Really funny. Yeah, I wasn't triggered at all. Alex. Mowing bare action coming in. No talking about bitcoin at Thanksgiving. Marin yeah. Alex my mom sent me another text yesterday. I don't know what her vendetta is about bitcoin, but I can't talk about it at Thanksgiving now. I have online friends that are bitcoiners that she's coming at and text messages. We added my mom, just as a joke to one of the stack chain, like, back end chats. And it's really funny. She has no idea what's going on in there, so now she has a lot to say about that. So one of two things is either is going to happen, it's either slowly going to sink in that she's maybe a little off base, or she's going to double. Triple down. Yeah, she's tripling down right now. Oh, that's too funny. That's an interesting phenomenon. That was well documented, I thought, in that article was talking about the other day. What was it called? Why people struggle with bitcoin by Nick Beard. You guys should go check that out. I thought it was really well written talks about people who just can't, for whatever reason, they just can't. They tend to double down. Down, triple. I have yet to see somebody who's tripled down, so to speak, come around. Have you guys seen examples of that? A triple down person would be somebody like a Rubini or a chef or a monger or you guys understand what I'm saying? They go from, yeah, I don't think this thing is a thing to just full on attacking it's immoral. It's going to destroy society in the environment, et cetera. Those people are married to their beliefs, and you're not going to change them at least anytime in the near future. So that's like an ideologue, right? It doesn't matter what the facts are. They're going to believe what they're going to believe. And a lot of that, I think, is tied to their survival in some ways. Back to that saying you can't convince somebody of anything if it directly contradicts what they use to make a living or whatever. ",timestamp:"00:04:20-00:11:57",topics:["Stackchain"],type:"twitter_space",weight:13.423835754394531},{boost:0,date:1670706053,description:"Stacks is trying to reinvent the wheel - Bitcoin Maxi",episode_title:"Bear Market Buidl — Major #Bitcoin developments! #Stacks #Sidechains",guests:[{name:"@GriffdenNFT",profile_picture:"https://pbs.twimg.com/profile_images/1604377729062895617/R4pSEdH4_400x400.png",ref_id:"dafdf7ec-28c0-43d3-a0d9-b2d266f38738",twitter_handle:"GriffdenNFT"},{name:"@Chad_333",profile_picture:"https://pbs.twimg.com/profile_images/1592310541732970496/o1tbw9Eo_400x400.jpg",ref_id:"484c7695-6a4e-4141-9585-1109bf23f8cf",twitter_handle:"Chad_333"},{name:"@jackbinswitch",profile_picture:"https://pbs.twimg.com/profile_images/1601214177439260672/O0SpU5B1_400x400.jpg",ref_id:"9685e7f3-3e0c-4b84-9fd9-b8a1d96f6ae9",twitter_handle:"jackbinswitch"},{name:"@jimdotbtc",profile_picture:"https://pbs.twimg.com/profile_images/1593210347825119237/L_SNThWQ_400x400.png",ref_id:"5dcf5545-fad6-44ee-ae56-360c5efe1151",twitter_handle:"jimdotbtc"}],hosts:[{name:"@BigRpic",profile_picture:"https://pbs.twimg.com/profile_images/1604962150388219904/WqiCye-r_400x400.jpg",ref_id:"726f0c95-9d94-4d44-a056-8ad3c9e3ddd5",twitter_handle:"BigRpic"},{name:"@CarlsonDoc",profile_picture:"https://pbs.twimg.com/profile_images/1597382056308350977/1NPexynZ_400x400.png",ref_id:"e34fa2b2-a58e-4461-81a0-d10c1058dfc2",twitter_handle:"CarlsonDoc"},{name:"@STXLDN",profile_picture:"https://pbs.twimg.com/profile_images/1533793338931007488/o3laQDCp_400x400.jpg",ref_id:"5c3bc906-3aed-44f9-851a-94804c6fe5ca",twitter_handle:"STXLDN"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99046513-2614-4eae-9de4-5781ba4b330a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/fc3bebcb-8271-433e-8d81-84dd06f3b022/aec527bc-539d-4d3b-9bad-db4af9e1a1ba.mp3",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"3cced3da-246a-4df7-884c-689661de7d66",show_title:"STX:LDN",text:"conversation in one Twitter spaces where somebody had actually said something about I think their analogy was like, oh, so Stacks is trying to reinvent the wheel and you don't need to reinvent the wheel. Everyone's heard that argument comes from the max before. I mean, I think people repeat what they hear and it's like, ultimately I'm a bitcoin Maxi. What really shocked me when I got to the Bitcoin conference was that it's like, oh, I'm like out. I like, really helped back in 2013, I think 2012, actually, dash and I went to our first bitcoin. I've got a photo on Facebook. We went to a Bitcoin London conference because we'd made our minds that we were going to get this ATM. It took quite a long time to kind of sort it out, but yeah, I think with 2012, we went to the Bitcoin conference and it was just such a small space and then to walk in. I'd never been to the Bitcoin conference in Miami before. I was really lucky enough to get invited by the Stack conference to go and talk. So while I was there, I thought, well, I'll buy a ticket for the Bitcoin conference. It was like $1,000 or something, and I was out of there within an hour. And I was quite depressed because I was like, I'm not part of that gang. And I felt like walking in there being like, hey, look, we've come. And actually it was like, oh, I'm kind of out. And I do think that there's there's just forces at work here, unfortunately, which are kind of corporate forces, which are setting the tone and just slowing things down. But, you know, I know we're all impatient, but ultimately time will tell. And I'm sure that the open source, decentralized nature of Stacks means it will be an unstoppable juggernaut, just as Bitcoin was. But there's literally people trying to slow it down, trying to play the advantage while we're small to keep us silent. And part of that is kind of brainwashing people. There are several things at work, and it's cool that you brought it up, Jim. The first thing is, we're the early adopters. We're the earliest adopters of early adopters on a macro time frame. If you look at how long, if you look at the scope of what's actually happening here, this is a move to it. Like, we talk about the industrial age, you talk about the Bronze Age, you talk about the no, we're at an epoch of time in human history with this information age or whatever you want to call it. And as we are right now, if you were looking at a chart, we're just barely making ripples in this macro time frame. What we do now is going to reverberate for several generations after us. And the thing is, when you were talking about one of the things that Stacks has to address is everybody knows what Bitcoin is. But then the second you hear anything else and you see the three letters, whether it's sol or STX or whatever it is, stacks just gets put in that category of, oh, that's just another coin to address that. You have to assume the audience has a basic understanding of crypto, has a basic understanding of why crypto matters, has all of these different things. So a lot of I think what we're fighting against right now are headwinds that won't exist in 20 years. Getting rid of the crypto element, that's the way it gets important, is once people don't even associate the word crypto with what they're doing. And one of the things that I'm working on, hopefully for next year is we've got a comedy festival in Brighton, and we're working with experts to see if we can come up with an entire ticketing solution in time. This is I think it's in February 2024. And so if we can come up with an X verse wallet that holds a ticket and a kind of process for the stewards, reading those tickets and letting people into the venue. We can onboard 20,000 people. That's a long weekend. It's a Thursday to a Sunday and we have three large venues. We get about 20 to 25,000 people through in those four days and they will all have an expert wallet. That's what we're trying. That's what I'm hoping for. Luckily, my wife is the producer of the festival, so she's witnessed a decade of me going through this stuff. So she's trusting me that I can kind of say, I think I can pull this off now. I've spoken about it for years, obviously since 2015. Like we were talking about, Alice is like, yeah, Straightaway is going right, this is going to replace all tickets. Do it now. Within two weeks, we'll just be all on the blockchain. But here we are several years later. But now it's actually a possibility with stacks and with experts. We had to have mobile. That was the frustration a year ago. We were like, yeah, this is ideal. We were even trying to do a fat boy slim gig where I was asking for guest list for it, which is a big live show he was doing. But I was like, Give me some guest list. I will stand at the gate with my laptop and figure out how to get people through. You don't worry about that. I'll make sure the right people get in because I was just like, let's just at least do something because we can do this. But now that they're on mobile, hopefully we've got a year or more than a year to kind of pull together a solution where suddenly we get 20,000 tickets into people's walls. And what some people don't sometimes appreciate is that the whole beauty of crypto with this pseudonymous network is that a payment network is a communication network. They're the same thing. And so the minute you've got tickets in someone's wallet, well, you can now communicate with them. You've got like a reach to them. You don't know they've not given you any information. You don't know who they are. But you've got a communication channel. So now they've got a ticket. You can now say, okay, well, now your ticket. Maybe we can maybe if we've got time to get there, it's like, now your ticket can be staked after the event. The ticket is an NFT and now you can stake your ticket and that's earning you money off your next year's tickets. And these are all non crypto people. And that, I think, is, I guess, our key because ultimately that's all I found within crypto is just walls. It's amazing to have these bridges. It's amazing that this stuff is going on, but it's still just a real battle. And actually what's going to really change things is when we can get those applications out there that are onboarding masses of non crypto people who just have a phone, and now they have an app on their phone and that app is connected to Stacks, and they don't even need to know about the connection to Stacks. They just have an app on their phone that holds their tickets and gets promotions out to them and they just show it to someone. When they turn up at a venue, it gives them a QR code in the when we get there, I think that's when we can really onboard the message. ",timestamp:"00:48:55-00:55:58",topics:["Bitcoin Maxi"],type:"twitter_space",weight:24.555915094150443},{boost:0,date:1672099200,description:"Controversies about energy sources in the world",episode_title:"Blockware Intelligence Podcast: 2022 Highlights",guests:[{name:"Michael",profile_picture:"https://pbs.twimg.com/profile_images/1558687629599657990/vf-bU14b_400x400.jpg",ref_id:"c7b4faa1-db77-4459-b03f-0e41e15efae7",twitter_handle:"MichaelHawaii"},{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Joe Consorti",profile_picture:"https://pbs.twimg.com/profile_images/1596902707511664640/GYGWVDts_400x400.jpg",ref_id:"8d2024b2-03bb-454d-9bd6-bb121904b76a",twitter_handle:"JoeConsorti"},{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"James Lavish",profile_picture:"https://pbs.twimg.com/profile_images/1466279082157502464/flD6cWI3_400x400.jpg",ref_id:"cf06ab2d-2ff3-4d7b-bef6-b996ae68517a",twitter_handle:"jameslavish"},{name:"Adam O",profile_picture:"https://pbs.twimg.com/profile_images/1395896857990160391/tJpgS2_p_400x400.jpg",ref_id:"95af0dd3-1e27-41b9-a36b-8a2c44438e85",twitter_handle:"denverbitcoin"},{name:"Jack Mallers",profile_picture:"https://pbs.twimg.com/profile_images/1599778945699909632/O0qc9ykA_400x400.jpg",ref_id:"d2e4aac5-e5e1-42fc-8f08-b3a77c076a64",twitter_handle:"jackmallers"},{name:"Lyn Alden",profile_picture:"https://pbs.twimg.com/profile_images/1521181379677073414/bm4LcJTr_400x400.jpg",ref_id:"903381dd-4b8a-4b59-8ecd-3281ae3ba297",twitter_handle:"LynAldenContact"},{name:"Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1508157904913899522/3l7ctauV_400x400.jpg",ref_id:"283edea0-55cf-4245-95df-8d6d3dcb1851",twitter_handle:"DylanLeClair_"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Stacy Herbert",profile_picture:"https://pbs.twimg.com/profile_images/1546484196750905346/5WYPz-bc_400x400.jpg",ref_id:"7477463b-1f3a-4b83-94c3-9d5a63b576c0",twitter_handle:"Stacyherbert"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"}],hosts:[{name:"Blockware Intelligence",profile_picture:"https://pbs.twimg.com/profile_images/953108582110781441/irB2GVXn_400x400.jpg",ref_id:"0ff00f04-2450-4699-b6a3-0467e29cddde",twitter_handle:"BlockwareTeam"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ea2cf2ae-76de-4185-818c-384b3b06228b.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=WxGMeufy8jw",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"144eff69-fd7a-48da-b92f-bb5b13e0b4f7",show_title:"Blockware Intelligence",text:"a mismatch between perceptions and reality about where some of the technology is in terms of different energy sources, right? So something, you know, like three quarters of global energy comes from hydrocarbons and then the rest, you know, hydro and nuclear are big chunks, and only something like 5% is wind and solar. But as wind and solar have kind of been pushed to be larger and larger parts of the grid, and there are certainly applications where they're useful, there's very hot and dry regions of the world. Rooftop solar can give you kind of more autonomy from the local grid if you have, say, rooftop solar and a battery backup, for example. But as they've kind of put policies ahead of technology and you kind of like obfuscate the cost, overstate the strengths and get that into the grid, it's kind of caused some issues. There's also a challenge where there's not a lot of investment in the grid itself, right? So, for example, California keeps having their electrical grid parts, electrical grid, face rolling. Brownouts you can imagine if you were to say ten x the number of electrical vehicles that are drawing power from that grid instead of through the gasoline distribution system we have. If that starts going over the grid, that's more stress on the grid. You need more copper, you need more redundancy, you need more cables bringing that around. And so I think the short term way out of this is frankly, there needs to be more supply of hydrocarbons, natural gas, oil and coal because that's what the world is currently short of, especially in certain locations. Longer term, I'd like to see a nuclear renaissance. Combination of smaller reactors and a better regulatory environment could really make nuclear come back. I mean, decades ago, it was actually pretty cheap and quick to build a nuclear plant, as there have been a handful of accidents, which even if you add up all those accidents, even if you take the worst case, scenario of not just immediate death, which is very few, but if you kind of take the high end estimates for environmental damage and what that could have caused kind of in the region, it's like it killed fewer people than coal kills, like every year, for example, through particulates in the air. But nuclear got that kind of increasing regulatory burden and that now makes it almost impossible in many places in the world to build a new nuclear facility. And of course, you want safe operations. So, for example, part of why Chernobyl was so bad is they didn't even have the shield. That now is standard practice among the nuclear facilities. Obviously, there's really bad ways to build a nuclear facility, but the modern ways and back then, even the responsible ways can build safe nuclear. And so I'd like to see that combination of they've developed small modular reactors that's been a bit like a push lately. And if there were kind of easing regulatory environment, I think that nuclear can at least solve a lot of the baseload grid power. And then longer term there's interesting things like ocean thermal energy that I think is under explored. There are other ways to get baseload power, but the general thing you need is that you need to have nature do as much of the storage and concentration as possible because the more that you have to replicate with machines, the less efficient and energy dense that's going to be. And so I think that's the big theme that a lot of people are missing in the energy space. ",timestamp:"00:49:04-00:52:35",topics:["energy sources"],type:"youtube",weight:37.306806397580786},{boost:0,date:1672099200,description:"Institutional adoption lowering Bitcoin's volatility",episode_title:"Blockware Intelligence Podcast: 2022 Highlights",guests:[{name:"Michael",profile_picture:"https://pbs.twimg.com/profile_images/1558687629599657990/vf-bU14b_400x400.jpg",ref_id:"c7b4faa1-db77-4459-b03f-0e41e15efae7",twitter_handle:"MichaelHawaii"},{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Joe Consorti",profile_picture:"https://pbs.twimg.com/profile_images/1596902707511664640/GYGWVDts_400x400.jpg",ref_id:"8d2024b2-03bb-454d-9bd6-bb121904b76a",twitter_handle:"JoeConsorti"},{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"James Lavish",profile_picture:"https://pbs.twimg.com/profile_images/1466279082157502464/flD6cWI3_400x400.jpg",ref_id:"cf06ab2d-2ff3-4d7b-bef6-b996ae68517a",twitter_handle:"jameslavish"},{name:"Adam O",profile_picture:"https://pbs.twimg.com/profile_images/1395896857990160391/tJpgS2_p_400x400.jpg",ref_id:"95af0dd3-1e27-41b9-a36b-8a2c44438e85",twitter_handle:"denverbitcoin"},{name:"Jack Mallers",profile_picture:"https://pbs.twimg.com/profile_images/1599778945699909632/O0qc9ykA_400x400.jpg",ref_id:"d2e4aac5-e5e1-42fc-8f08-b3a77c076a64",twitter_handle:"jackmallers"},{name:"Lyn Alden",profile_picture:"https://pbs.twimg.com/profile_images/1521181379677073414/bm4LcJTr_400x400.jpg",ref_id:"903381dd-4b8a-4b59-8ecd-3281ae3ba297",twitter_handle:"LynAldenContact"},{name:"Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1508157904913899522/3l7ctauV_400x400.jpg",ref_id:"283edea0-55cf-4245-95df-8d6d3dcb1851",twitter_handle:"DylanLeClair_"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Stacy Herbert",profile_picture:"https://pbs.twimg.com/profile_images/1546484196750905346/5WYPz-bc_400x400.jpg",ref_id:"7477463b-1f3a-4b83-94c3-9d5a63b576c0",twitter_handle:"Stacyherbert"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"}],hosts:[{name:"Blockware Intelligence",profile_picture:"https://pbs.twimg.com/profile_images/953108582110781441/irB2GVXn_400x400.jpg",ref_id:"0ff00f04-2450-4699-b6a3-0467e29cddde",twitter_handle:"BlockwareTeam"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ea2cf2ae-76de-4185-818c-384b3b06228b.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=WxGMeufy8jw",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"9f9305dd-fff2-4bb3-9e3f-698a55090999",show_title:"Blockware Intelligence",text:"Look, the people who are interested in this space, in the institutions, they're from the technology side. They look at this as technology. The technology analysts are the ones who are the ones who are analyzing it, the ones who understand cryptography and cryptocurrency implications and how it all fits into the space. But once that kind of bleeds over and really moves into the financial world and people start looking at this as digital money, I think that's where it starts to differentiate itself. But the big break will be when people understand that it's a store of value. Now, how do we get there? Right? So the question is, what is it going to take for bitcoin to be, in particular, to be seen as a store of value? And I think it's going to take the asset to have enough market value and liquidity that the volatility dampens and it's going to happen in steps, right? So it's going to take a few very large institutional investors to start buying Bitcoin, right, and not just buying it, but then also announcing that they bought it, right? So you've got what, you've got five firms, we talked about this before, we got five firms that control $30 trillion of investment assets in the world. So if you figure that there's about $700 trillion in total investment assets, $730,000,000,000,000 in investment assets, that's a lot. 30 trillion out of 700, $720. But five of those firms, you got BlackRock, Vanguard, Fidelity, State Street and Morgan Stanley. And if any of those firms start announcing that they've really taken this and considered a separate asset and we know that, we talked about Fidelity, we know that they're doing something. BlackRock, of course, is doing something. But when Vanguard comes out, when Morgan Stanley comes out and says, we are putting this in our portfolios, that's going to be a big deal. And once they do that and they start buying it, then you're going to get a lot of other investment managers that feel like they've got to do this. So it. Takes time, but we'll come back to that in a second. But once they start buying this and they decide they want to have a 1% position in this, well then bitcoin 1% position in all assets, right? So if you look at all portfolios across all asset classes, between bonds, investment bonds, corporate bonds, sovereign bonds, you've got stocks, you've got real estate, you've got art and collectibles, and you've got gold and silver and metals. But if you put all of that in a basket in one big portfolio and you say that 1% of that has to be the separate asset class, well then you're already at $350,000,000 bitcoin. $350,000 bitcoin. Sorry, don't want to get it right. Too excited. But $350,000 bitcoin. Okay. Now you're talking about a $7 trillion asset, right? You get that up to 2% and you're talking about over a $10 trillion, $14 trillion asset. Now you, now you really do have the ability to put money in this and not see that same volatility. It's just not going to move the same way as it does here as such a small asset. I mean, we're not even half a trillion dollars anymore. But once you have that, then I think that it takes off. And I don't know where that breaking point is, but it's somewhere before that store value recognition that it just becomes completely uncorrelated. So maybe somewhere between 100 and $200,000 bitcoin where it just, it rips up and it just complete completely decorates to the rest of the market. ",timestamp:"00:27:01-00:31:15",topics:["Institutional Bitcoin adoption","Bitcoin volatility","bitcoin"],type:"youtube",weight:37.30680637726857},{boost:0,date:null,description:"Discussion on how do you sell the value proposition of Bitcoin to small investors circa late 2022",episode_title:"TOXIC HAPPY HOUR! #Bitcoin is Easy Like Sunday Morning! 🍻😂",guests:[{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:" TC",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"dac0717a-a743-40d4-a89f-7523f071bbb0",twitter_handle:"publordhodl"},{name:" kann b",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"1170bde7-7f3c-4c4f-a158-5c48a98fe92b",twitter_handle:"publordhodl"},{name:" Dallas Rushing",profile_picture:"https://pbs.twimg.com/profile_images/1602759767029604352/hzuwh5ZB_400x400.jpg",ref_id:"13fed037-77ce-48eb-9544-25e7abff9395",twitter_handle:"dallasirushing"},{name:" Lisa Hough",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"5e154adf-d8bd-4adf-a23b-47a51c183163",twitter_handle:"lisa_hough_"},{name:" Collectooor of sats",profile_picture:"https://pbs.twimg.com/profile_images/1594362077132587009/cNAE2FU5_400x400.jpg",ref_id:"c84d0e47-7eeb-419b-a36e-5055b96044f0",twitter_handle:"hoardingsats"},{name:" Gold Leader",profile_picture:"https://pbs.twimg.com/profile_images/1594152783011250176/lHMHv3gB_400x400.jpg",ref_id:"96c4f802-25ff-4a81-b91f-cae5562bf4a3",twitter_handle:"GoldLeader89"}],hosts:[{name:"Publordhodl",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5e189a7b-56c3-40ae-834e-4e2ccee3a9ad",twitter_handle:"Publordhodl"},{name:" Anders_",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"15bdd6b9-bdfd-492d-b7bf-c5a56ecadc50",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/4e00853b-49e3-4b46-bd13-bf7f2aa25905/56f0089c-a7f2-4b1b-8576-a3e4ddb9791f.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"28845fb4-d3b9-4615-af36-f3f3862d93f7",show_title:"PUBLORD",text:"I'm just going to ask a general question here. Again, thanks, guys, for having me up. First of all, so how do you sell to someone? Again, I'm really small investor, like maybe 20 grand that I'm putting in. But how do you sell to anyone at this point who's looking at the price today and going, you know what, I got in at 30. If you did, and it's now at 17, where where do you at all try to convince someone at that point to put any more money in based on on what you see? Again, you can look historically at where it's gone to and where it's gone up to, but I'm constantly trying to talk to people and trying to orange pill them, for lack of a better term. And I cannot at all find the vernacular to try to convince someone because it seems so nefarious in terms of what's happening. Again, this is really common. You guys have or I'll buy at 16 and throw another ten grand in or 20 grand or whatever it is, but when it drops another 50% down to 10,000, how do you hold all the words you hear about, you know, diamond hands and can you hear me? It's so difficult. And again, I'm just a 58 or 52 year old guy who's trying to, you know, take some of his savings and, you know, make some money out of it, but it's anyone to hear me. Yeah, you're good. TC, can you hear TC or no, sorry. Did you hear TC was trying not a great answer for you, but I. Don'T think you can hear me. I put money in in 2020 when COVID hit into an ETF following an index, and I've made more money in that ETF index than I did in any of my Bitcoin. I'll have an answer for you here in a second. I got my own views on this, but TC yeah, you had your hand up. I don't know if you can even hear me, though. Wait, let me check. Conn, can you hear TC right now speaking? No, I can't. I'm going to go out and come back. Okay. If you drop and come back, I. Got a good answer for you. Yeah, jump out and come back. I can go for an hour on this one, but you go first. I know, man. It's a great question. It's an absolute great question. It's the question. And what it is, is it's the portal through this threshold where you leave behind the purely speculative, fiat minded way of analyzing everything, and you start your journey understanding Bitcoin. You heard him say it about the investment part. I was making more money. He's new. We'll talk. Man, I hope he comes back here soon, but Jesus, that is the question. Yeah, you're right. I guess I'll just start off by saying this is the problem with focusing on the price, because the price is actually distracting you and it's giving you bad information. Much like everything in markets today, in the legacy fiat system, the signals are all distorted. They're all warped. And during the bull market, we see everything warped in the overvalued direction. And in the bear market, you see things destroyed. And through a lens of just looking at percentage gains or losses, all you're determining is which direction the market moved. And that doesn't tell you anything when it comes to Bitcoin. As far as what Bitcoin is, the momentum that Bitcoin has in the world, it's one of the things that greases the wheels for all the legacy financial, media and governments to continue to fudge bitcoin because they've got such an easy sell to people when they say, hey, look, this thing's down 70%. How could it possibly be good? How could it possibly be healthy? Elizabeth Warren says, oh, how are you going to let people put themselves at risk owning this kind of horrible asset? It's such a narrow, small minded way to look at the whole thing. When you actually start understanding bitcoin, and you realize that right now, at the depths of the bear market, bitcoin is absolutely alive and kicking, and it has got amazing momentum, and there is so many people building and investing and adopting and adapting to bitcoin. There's major, major industries today. We stopped even, like, making a big deal out of it. You remember back in 2020 where every little insurance company or bank that even sniffed at bitcoin, it was like a huge story. Oh, my god, so and so is looking at it's happening so frequently now. We don't even pay attention to it anymore. The world is plowing towards a bitcoin reality here. And what's beautiful about it is that anybody who really wants to use Bitcoin as a way to preserve their wealth and improve their future, you have such an opportunity, especially during the bear market, to arbitrage the lack of knowledge that people have on average and to see through the fed and realize how healthy and alive and strong and growing stronger bitcoin is. And at that point, you realize how absolutely inaccurate the price is as a signal. And if anything, you're just able to arbitrage that knowledge gap. You realize that you're looking at something that's basically better than it was a year ago when it was 70% higher and it's on sale and you go from there. This is so on point. Look, Ben, this is the journey that everyone takes. Everyone takes a journey for the most part. You come in for number, go up technology, dude, I was there. And in fact, I got to look at the exact date of my first I'm almost at the five year anniversary because it was in mid December, mid December 2017. And yeah, you guys can thank me. I think I got into the market like three weeks before you. Dude, me and you are the exact same era. Bitcoin was at 17 five with my first purchase, not that I was going to buy a whole god amp coin, and it spiked up to almost 20. And you're right, I spent 2018, man. I was catching those knives all the way down. And the more I learned about bitcoin and what it represented, the more I understood it. But I'll tell you what, man. Yeah, go ahead. Sorry, just one more thing I wanted to add is the other thing that really dissuades people or points them in the wrong direction is they think about how many dollars they're putting into bitcoin, and what they need to really realize is how much capital and how much monetary energy they are removing from the fiat legacy system. That is one of the key perspectives that if you don't have that perspective, you don't realize what you're actually doing. You're not investing in bitcoin. You're not speculating on bitcoin's price. You're literally removing your capital and your monetary energy that you've accrued from a system that is so riddled with risk and uncertainty, and you're moving it into a brand new system. It's not controlled by any of these governments or central banks and allows you as a sovereign individual to hold your own wealth and remove it from that giant house of cards. That's I think equally as important a concept to understand. Yeah. And this goes into and con saying, well, what do you tell a friend? Or how do you explain to somebody what this means? And believe it or not, man, it's different things to different people and different cultures, okay? And what I mean is this. If you're in Venezuela or you're in Turkey watching your currency go through hyperinflation, guess where you want some of your life value, all the work that you did, you probably want a little bit in bitcoin. Let's say you're in some war torn country, you're trying to cross borders. Guess what, man? You're going to get jacked up for cash. You're going to be standing at an ATM hoping to get, like, €400 out before you leave, okay? The value in bitcoin is immense. And in the US. Oh, my god. What about in the US. What could you guys possibly see in bitcoin? And I've talked to many people like this. You want to talk about orange filling? There's one guy talking to I just don't get it. What is the use case? I said, well, listen, you're pretty well off this guy's, like, in his 60s, everything. And I just mentioned to him, can you name one thing? Just name one thing that you own that can't be confiscated by the government or bank. Name one thing you own and you can see the wheels turning. He's thinking of the two homes. He's looking at the credit cards that will be shut down, and I'll get back to that in a second. He's looking at the cars, okay? He's got a boat. And he goes, I got nothing. I said, well, that's why bitcoin is something you should at least be interested in. I'm not telling him, sell everything you own and buy bitcoin. I'm saying you just may want to have some exposure to this. And you want to talk about the volatility or the price. We talk about this quite a bit, man. In Canada, some truckers got ten grand in a bank account, and he's got a $10,000 line of credit that was shut down overnight. I'd rather have an asset class that can take can take a hit. Okay? Maybe it goes down 70%, but it's what the best bitcoiners around are. The ones that start at the top and when those prices are dropping, man, I was giddy as a schoolgirl when it went from 20 and we're down under six and then five and then four. I'm realizing, my God, this is what an amazing opportunity just to have this exposure. But TCI, I like what you said, man. It's more about you're not moving fiat. You're gaining. You're transferring the value of your work. You're taking chips off the table. You're removing your chips from the casino. Look, you're talking about insolvency. Jump out there and came back in and heard everything everyone said. Yeah, you were talking about insolvency. Hold on 1 second. Con again, when I hear someone like you guys talk, I'm always assuming that your dollar cost overall price right now is much lower than, let's say, $17,000, right? Pub, you just said that you bought in law. So if you told me right now, if you wanted to, you know what my average cost has been? Like 3000. So you're already that's nothing to do with it, dude. That's nothing to do with it. I don't think you can hear me. For some reason. You can't here. I'm going to leave and come back. Yeah, go ahead, TC. Leave. I'll bring you finish and then I'll just jump. Stay up here, man. Stay up here because we may have some questions for you. Go ahead. I want to be able to be here because, again, what I keep on trying to wrap my head around is, okay, so again, I'm I'm in. I'm down 50, 60%, to be honest, and I'm trying to decide, okay, so that was money that I didn't, you know, I don't need right now, but I have other money that I want to now possibly invest. And as you said, catching the knives on the way down. I got you. If you can hear me, I got you. Dude, can you hear me? I'm not going to get some Black Swan event or some can you hear. TC when he jumps in? Can you hear him? No, I can't. It just says host there. I'm not seeing anything. So again, I'm going to just back out again and come back in and listen, you guys, you're helping. So just let you know that. Let me go. I got a whole another one that's pretty simple to understand, which is basically, man, there are people who are millionaires in Lebanon who, after a bank bail in, it doesn't matter how much you have in the bank, you can't access it. They'll give you $100 and say, come back next week if you want more. We're watching Canada, trying to figure out how they're going to just strengthen their authoritarian ability to wield the banking system to punish people who don't politically align with them. We're seeing in China the use of the banking system to control people's movement. We're seeing the same things happening in Iran where there's a huge protest underway and the government is using the banking system to punish people who are protesting. We have rules coming into place in Europe where you're no longer going to be able to do any cash transaction above, I think, €10,000. There are similar things in the United States where every single transaction above $600, you have to account for and disclose and fill out paperwork. If you don't see what's happening here, you're blind. You're in denial. We're marching towards a world of infinitely more capital controls than what we currently have. And in this context, the price of bitcoin is irrelevant, other than how many stats can you get for every dollar that you're moving out of that other system, period? It has nothing to do with the price, because real bitcoiners are not interested in what the price is going to be tomorrow or next month or next year. I mean, I'm not even tripping what's the price going to be in 2030? I'm looking at a little kid that I intend on handing down most, if not all of it to decades from now. This is about preservation of your ability to have choices, because what happens when crisis hits, whether it's in your own life, your own little personal sphere, or if it's strife in your nation or in the world at large, what matters is what choices you have, and that's what your money and your capital represent. It's your ability to actually do something in a situation that you don't want to be in. Can you acquire food for your family? Can you put a roof over your family's head? Can you acquire transportation to remove your family from a bad situation? I'll tell you, with all these capital controls coming in, the ordinary person on the street is quickly losing. Optionality in the future. The future is becoming more and more certain that you're going to have less choices than you have today. That's what this is about. The price is irrelevant except for how many facts you can get for each dollar you're moving out of that fiat system. That's the point here. DC. Listen, what's nice is we got a good plan, because when they try to make you eat the bugs, I know of a few guys that are still selling stakes for bitcoin. Air Texas Swim. I wish he was around. There's going to be a circular side economy, a black market economy for bitcoin, for sure. This is great, man. Hey, you got, like, anyone whose handle is Fording SAS collector or what's ",timestamp:"01:12:05-01:28:25",topics:["Bitcoin value proposition","New Bitcoin investors","Bitcoin price volatility"],type:"twitter_space",weight:13.165740966796875},{boost:0,date:null,description:"The Nigerian butcher enterprise ",episode_title:"The Orange Sun 🌞 Let's talk #Bitcoin & Cattle Ranching/Sustainability",guests:[{name:"Texas Slim",profile_picture:"https://pbs.twimg.com/profile_images/1589784780970795011/02jf0fqp_400x400.jpg",ref_id:"b4448c8e-9238-4aba-bd25-efb329ea5a72",twitter_handle:"modernTman"},{name:"Lucas",profile_picture:"https://pbs.twimg.com/profile_images/1596345084966014976/maviSGq3_400x400.jpg",ref_id:"e3adb591-b29f-435b-bd34-210f2dbcedaa",twitter_handle:"impossiblyso"},{name:"Firebust",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"0fb6c7f3-a673-4fe5-9599-8165800a2ff0",twitter_handle:"FireBursts"},{name:"Hamza Yusuf",profile_picture:"https://pbs.twimg.com/profile_images/1318064165030940672/sakbSOvT_400x400.jpg",ref_id:"03a74669-b653-4c57-8799-a312cb041089",twitter_handle:"Hamzayu28849293"},{name:"Adenekan's Father",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"b8259997-2ef0-4e6e-8d58-a69b5eda550a",twitter_handle:"AdenekanFatai4"},{name:"Adenekan",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"ca6a563e-0e84-4811-be82-a3b3cd12d399",twitter_handle:"AdenekanFatai4"},{name:"Heritage",profile_picture:"https://pbs.twimg.com/profile_images/1510397558652350469/jYOl00tU_400x400.jpg",ref_id:"98a6d9df-3c39-49ec-8a39-074e61af4ece",twitter_handle:"herrytheeagle"},{name:"Enoch",profile_picture:"https://pbs.twimg.com/profile_images/1596235105663533056/5mRUbLm3_400x400.jpg",ref_id:"4f8af040-3d0c-49c1-806e-aef89d8693fb",twitter_handle:"KazEnoch"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/a91f79fd-d85f-4440-b012-4bdafdc83341/f1d1c5b5-b8c9-44ed-a217-f75b398376d5.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"da54483f-f9f4-4c4b-9320-6ba317e64b44",show_title:"Satoshi’s Journal",text:"Thank you, Jeremy. I'm so glad to do this. Thank you, Texasleam. That was a fantastic one, OG. Or should I say big omi. I already have multiple questions from what you said because Katie Ranchon is a big business in Nigeria. That's the number one business of the number one man leading the federal republic of Nigeria, the president of the federal Republic of Nigeria. And the person of General Mohammedu Buhari loves caterbranching. We could call him a herdman. He loves cataracting so much that there is a big discussion about re energizing the grazing routes in Nigeria. Whether that's good or bad, it's a tough conversation. This is a conversation that causes opera in Nigeria. Good and bad people die. Machetes are used, guns are used. It's a billion dollar empire in Nigeria. But the stats are not really open because of so many underlying tone. So I don't think this conversation will end here. Looking forward to something bigger, most likely, maybe at a conference, inviting our top executive of the government and so on and so forth. It's something we've been trying to solve. I'm so glad I missed identity here. So let me use the opportunity to say a big welcome to a highly respected man, of course, the father of our regular listener here, Adenica, is the leader of the Nigeria butcher association and the leader of the Paraguay Butcher enterprise. If you understand the butcher's business in Nigeria, you would know that it's not a small game at all. You must have butchers most likely around every market. And if you're not eating beef in Nigeria, you're most likely eating fish. And I think beef is the biggest protein in Nigeria that people really go for, whether it is ram, whether it is cow or cali or whatever it is you want to call it. It's a big business. I eat beef all the time. And I also have beef with the altcoin. Mr. Adelekon, once again, is the Nigeria Butcher's Association leader. One of the leaders and the leader of paracoli butcher's enterprise is also the array, bobani atundda Liquid of Bagura land. Please join us to welcome this respectable Nigerian, Mr. Adeniko. Thank you, Mr. Denikon. You're welcome to the microphone, sir. Eric, bobanizi going to come? Is your daddy going to come as a speaker or you're going to do most of this speaking for him? Yeah, he's going to join as a speaker also because I would like us to just hear from his experience and we should learn a lot. Okay. Please send Mr. Adenikan. Oh, I'm sorry. Okay, I'm biting him now. I'm so sorry. I forgot to bite him up for some reason. I thought it was going to be with Adenikin, but Adenikin, I just invited him Upani. It's a big title. From my understanding. Maybe I'm going to ask him what's that title means. For my understanding, Bob Banigi means elevate the king. Or should I say give the king some worthy respect. Give the king some worthy respect. So when they say you are the Arab, Bobani, you are like the king elevator the king. Should I say positive image? Because anybody that means respect, value, something like that. I read Bobani. That's a fantastic title. I sent your dad an invite, Dennekin, but if it's not working, your dad may have to just request to speak because I don't think the invite to Texas slim worked. So, Mr. Dennekin, if you could kindly click the there you go. No, that's not you. Hansa yusuf bhagudo. That's not him trying to invite him up. Maybe it'll work with you. I've already tried to invite him up several times. So just give us a few seconds, and we'll get Mr. Denikin up here. And in the interim, what I was saying earlier, though, is the similarities between bitcoin and farming and ranchers are uncanny. Farmers and ranchers are such that they are super sovereign. They know the land, they know how to work it. They know how to get it to the point where, on a selfsustainable manner, it could actually regeneratively, produce what it needs to produce, and they use their intellect to get the land to do what it naturally does, and then they use the animals to do what they naturally do. And when you get those two things in synchronization, the land and the animals, you have a beautiful thing. Unfortunately, due to the commercialization of food and the industry around food, that whole cycle has been screwed up. Okay, so there he is. Let me let him know. Jeremy, real quick, before I just accepted Mr. Identical, the Arab bobani of boogeland. But quickly. I also accepted Amaza Yusuf. But I want to ask AMA Yuzu a question before I push him back to a listener mode and maybe bring him back later. Please, quickly, tell me your name, what you do, and why you requested to speak, because your name sounds like you're from the north, and you may be a butcher or you may be into categorization. Real quick. I invited also he's a fellow member, and we are doing something with Texas. So he's a full animal and has been a friend since secondary school days. So you can just let him speak and just introduce himself. Oh, okay. All right. We're going to do that much later. So, first of all, we have in the building we don't need about anymore. Good morning, sir. Can you speak to us so we hear from you? Mr. Dennett, you may have to click on the bottom left hand corner. On your screen, there's a mic button. You have to unmike that. It's a little purple button, because right now you're on mute if you're trying to talk. Yeah. Can you hear me now? Yes, sir. Welcome to the I was happy to be on this platform because there is a lot of challenges in doing category in Nigeria. There's more challenges. I think you have more to make a mistake. I think we have to orientate us about the challenges. It's not easy. I do have a past five years now. I've been in the business so long. So what is coming up that I'm here, and I think it's a kind of opportunity for us to move up. I appreciate it. Thank you very much. Mr. So what Mr. Adele just said clearly is you guys should orientate everybody here. Basically us and the orientation team on, I think maybe how bitcoin can be of value to them. However, there's a lot of challenges that the butcher and khaki ranching industry is going through. But he's very appreciative of the invite and he's been on this Johnny for 35 years and he's glad to be here. Thank you very much. ",timestamp:"00:22:56-00:32:14",topics:["Butchers sovereignty"],type:"twitter_space",weight:13.040050506591797},{boost:0,date:1672099200,description:" Natalie Brunell's thoughs around SBF's unethical fraud",episode_title:"Blockware Intelligence Podcast: 2022 Highlights",guests:[{name:"Michael",profile_picture:"https://pbs.twimg.com/profile_images/1558687629599657990/vf-bU14b_400x400.jpg",ref_id:"c7b4faa1-db77-4459-b03f-0e41e15efae7",twitter_handle:"MichaelHawaii"},{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Joe Consorti",profile_picture:"https://pbs.twimg.com/profile_images/1596902707511664640/GYGWVDts_400x400.jpg",ref_id:"8d2024b2-03bb-454d-9bd6-bb121904b76a",twitter_handle:"JoeConsorti"},{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"James Lavish",profile_picture:"https://pbs.twimg.com/profile_images/1466279082157502464/flD6cWI3_400x400.jpg",ref_id:"cf06ab2d-2ff3-4d7b-bef6-b996ae68517a",twitter_handle:"jameslavish"},{name:"Adam O",profile_picture:"https://pbs.twimg.com/profile_images/1395896857990160391/tJpgS2_p_400x400.jpg",ref_id:"95af0dd3-1e27-41b9-a36b-8a2c44438e85",twitter_handle:"denverbitcoin"},{name:"Jack Mallers",profile_picture:"https://pbs.twimg.com/profile_images/1599778945699909632/O0qc9ykA_400x400.jpg",ref_id:"d2e4aac5-e5e1-42fc-8f08-b3a77c076a64",twitter_handle:"jackmallers"},{name:"Lyn Alden",profile_picture:"https://pbs.twimg.com/profile_images/1521181379677073414/bm4LcJTr_400x400.jpg",ref_id:"903381dd-4b8a-4b59-8ecd-3281ae3ba297",twitter_handle:"LynAldenContact"},{name:"Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1508157904913899522/3l7ctauV_400x400.jpg",ref_id:"283edea0-55cf-4245-95df-8d6d3dcb1851",twitter_handle:"DylanLeClair_"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Stacy Herbert",profile_picture:"https://pbs.twimg.com/profile_images/1546484196750905346/5WYPz-bc_400x400.jpg",ref_id:"7477463b-1f3a-4b83-94c3-9d5a63b576c0",twitter_handle:"Stacyherbert"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"}],hosts:[{name:"Blockware Intelligence",profile_picture:"https://pbs.twimg.com/profile_images/953108582110781441/irB2GVXn_400x400.jpg",ref_id:"0ff00f04-2450-4699-b6a3-0467e29cddde",twitter_handle:"BlockwareTeam"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ea2cf2ae-76de-4185-818c-384b3b06228b.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=WxGMeufy8jw",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"d98bc278-4c35-4325-992c-78437ccf3569",show_title:"Blockware Intelligence",text:"I'm curious, what are your thoughts on the whole SBF debacle? Is he just going to be in the Bahamas forever, or do you think he might get arrested at some point? And also, why do you think the media isn't necessarily painting him as this obvious villain? Yeah, I'm really disappointed by everything that's happened with SPF. And it's sad that bitcoin looks bad in this whole thing, especially for people who don't understand the space. But it's neutral. It did nothing wrong. It was just cross collateralized. And people like SBF create these paper versions of Bitcoin, and that's so unethical. So my reaction is, I hope that the DOJ I hope that the SEC, I hope that law enforcement agencies go after him and bring him in and formally charge him. Because in my opinion, what he did was fraudulent. It was a Ponzi scheme. It was to enrich himself. I mean, the fact that he was basically loaning money, using an air token as collateral loaning money to himself, that people affiliated with him, including his parents, may have purchased expensive properties, this is wrong. This is not what this revolution of Bitcoin and removing the power of money from the state. This is not what this is about. It's not about enriching a small group of individuals who think that they have the right decisions on how the future should be created. It's wrong. And he duped so many smart people, which is amazing to me, these massive institutions, from the VCs to these celebrities who had a ton of money. You would think that they would all do their due diligence to make sure that they're not just, like, putting their money into a group of Silicon Valley former Ivy League nerds who are going to basically wash trade it. With themselves to pump up the value and take out loans and to become their own bank and take out credit lines and then trade it and pay off politicians and then lose all the money. I mean, this is ridiculous. And they did it all offshore for a reason because everything that they did is inherently illegal. And so I hope that it's a huge lesson. I hope that in the end, I think it actually strengthens Bitcoin and what bitcoin is all about and bitcoin's value proposition. But in the meantime, I just hope that these policy makers actually hold them accountable and take the time to learn about why this happened and how the fact that he's sort of, as of right now, getting a little bit of a pass, like Representative Maxine Waters, I think, tweeted at him something that was equivalent to, oh, please talk to us, Sam. Thank you for explaining the things that have been going wrong. It's like, no, hold this guy accountable. This is the Bernie Madoff of crypto right now and everybody's just sort of approaching him on eggshells and I don't understand that. So I think that charges will come down. I saw that Caroline Ellison was spotted in New York. I'm sure she's working with an attorney who wants to get her some sort of a plea deal. The only way that that will happen is if she divulges a ton of information. So I think it's going to be a couple of people pitted against each other. Caroline versus SBF, and we're going to learn more in the coming days. And I don't buy any of the crap he's been selling to the media. He knew what he was doing. He just thought he would get away with it, to be able to complete his mission and plan of whatever he wants to do with all that money. But it was wrong. He was using customer funds and he should be in jail, I think. Yeah. I mean, it's pretty insane how it got so big and how so many big names, whether it's like Tom Brady or Sequoia, were just full fledged behind FTX and SPF. It's pretty wild. The ",timestamp:"00:56:24-01:00:18",topics:["Natalie Brunell","SBF"],type:"youtube",weight:36.019356007815745},{boost:0,date:1672207217,description:"Receiving geyser donations directly to your wallet and tipping creators with Mash",episode_title:'The Orange 🌞 Reading/Discussion "The Book of Satoshi" & Bitcoin News',guests:[{name:"CouncilmannJamm",profile_picture:"https://pbs.twimg.com/profile_images/1251040014152024066/dD3b2eA4_400x400.jpg",ref_id:"6c989c2c-d24d-49a2-8eb1-1d2f1c47f347",twitter_handle:"jamm_councilman"},{name:"thotsnplayerz",profile_picture:"https://pbs.twimg.com/profile_images/1608733749663109120/wwYEZgF2_400x400.jpg",ref_id:"66bbe365-9e85-4c34-9d51-39d8b49937b7",twitter_handle:"thotsnplayerz"},{name:"Will Schoellkopf",profile_picture:"https://pbs.twimg.com/profile_images/1487515153302130691/t5sDMzZW_400x400.jpg",ref_id:"461e2245-1672-4fa1-94f5-7aaf1afa531f",twitter_handle:"realBitcoinDog"},{name:"OKIN_17",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"dbcdeab8-4824-43f7-aeb8-2b9eda6cbbad",twitter_handle:"OKIN_17"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"},{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ecefba20-39fd-4974-8388-066857965b2a/cf486c39-08f9-4ada-9b72-7a297ad74d74.mp3",node_type:"clip",pub_key:"",ref_id:"b8080ee6-90b2-4f75-8c69-79510c82aa08",show_title:"Satoshi’s Journal",text:"The next little piece in here is to talk about make your Geyser donations flow to your own wallet. So a bit more than a week ago, geyser, for those that don't know who Geyser is or what it is, geyser is a company or website that allows you to earn Satoshi's for whatever you're trying to earn them for. So if you are trying to earn Satoshi's for a book, to write a book, you can put your project on there. There's a vetting system you have to go through. We're probably going to put the Bitcoin village on there. We haven't done it yet, but if anyone wants to donate to the Bitcoin village, that's yet another place they can go to if and when we get onto the Geyser fund. But you can find a bunch of other different donations for different things that are happening in bitcoin. So anyways, this article says a bit more than a week ago, guys are rolled out. A very neat feature that I missed. So here it is. You can now, as a project creator, receive donations directly to your own wallet through a lightning address. This allows you to receive the funds straight to the wallet of your choice, ideally on custodial, without them ever sitting on geyser's node. So that is pretty cool and I didn't know about that until I read this article. The next thing is mash. For those that don't know what Mash is, mash is a company that allows you to integrate their software into your website and allow such things as tips to happen. We just integrated it into our website. So if you go to our website and I have yet to unveil it because I'm trying to come up with a way to best unveil it, but essentially, if you go to our website now, there's a little button on the bottom right? You click it, it'll allow you to create a Mash account. And then once you create a Mash account, you can tip our website and the tips that are on our website are going to go to our content creators. So if people find value with the content of our content creators, they can click the button, they can send a tip of whatever value they want. All those tips accumulate on a wallet that we have associated with our Getmash account and then we will disperse those to our content creators how we deem fit. It's pretty cool feature. So Mash, basically it says here Mash got a small lifting to better suit creators and what they want to do with their content. Mash is a service that allows content creators to monetize what they create in a user friendly way. It just got easier to use with more customization available Ie themes. Mash button placement, push button placement, cherry on top what previously required copy pasting multiple snippets to make the Mash magic work on a custom website now requires only one code snippet. Cool. So that's pretty cool. I didn't set up the Mash on our website, but whoever did probably would relate with this feature. And there's a few more things. Looks like Albie got an extension for developers. Looks like there's some Sat streaming in the Pod verse and a bunch of other things. This is a long article, so I'm not going to read it all, but I highly recommend you check it out on ",timestamp:"00:14:17-00:18:05",topics:["Geyser Fund","crowdfunding","Mash"],type:"twitter_space",weight:37.03219712996155},{boost:0,date:1672207217,description:"Making payments on the Lightning Network",episode_title:'The Orange 🌞 Reading/Discussion "The Book of Satoshi" & Bitcoin News',guests:[{name:"CouncilmannJamm",profile_picture:"https://pbs.twimg.com/profile_images/1251040014152024066/dD3b2eA4_400x400.jpg",ref_id:"6c989c2c-d24d-49a2-8eb1-1d2f1c47f347",twitter_handle:"jamm_councilman"},{name:"thotsnplayerz",profile_picture:"https://pbs.twimg.com/profile_images/1608733749663109120/wwYEZgF2_400x400.jpg",ref_id:"66bbe365-9e85-4c34-9d51-39d8b49937b7",twitter_handle:"thotsnplayerz"},{name:"Will Schoellkopf",profile_picture:"https://pbs.twimg.com/profile_images/1487515153302130691/t5sDMzZW_400x400.jpg",ref_id:"461e2245-1672-4fa1-94f5-7aaf1afa531f",twitter_handle:"realBitcoinDog"},{name:"OKIN_17",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"dbcdeab8-4824-43f7-aeb8-2b9eda6cbbad",twitter_handle:"OKIN_17"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"},{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ecefba20-39fd-4974-8388-066857965b2a/cf486c39-08f9-4ada-9b72-7a297ad74d74.mp3",node_type:"clip",pub_key:"",ref_id:"9f2d3be4-e7df-4b86-981c-466bde0d92ad",show_title:"Satoshi’s Journal",text:"Today I found a really good article. It's basically, I've never heard of this, but it's called the Twitter handle is at all end markets. So, like at Lightning network markets, but it's spelled with an all and an end and then markets. And I guess they post a newsletter. And what's cool is that they basically track what's happening in Lightning. So I'm going to really quickly go over some of the things that are happening in Lightning that I didn't know what was happening. So this one covers the week of the 19th to the 25th, and if you want to follow along, you click the article. Second one to the left on the nest. So it looks like some guy, his. Name is Renee Aaron. He's been working on connecting vending machines to Lightning. So that's pretty cool to do. So he designed a small, easily pluggable module that comes with its own screen and can be used by the vending machine to generate a Lightning invoice and display it as a QR code. The product is currently being tested by a bunch of merchants in Europe, but given its plug and playiness and the benefits of using Lightning in this type of machines. I'd say I'm quite bullish on this. That is pretty awesome. I mean, anything that you can plug into, anything that you need to pay, especially Lightning, that just helps with even more people getting used to using everyday things with bitcoin. So in this case, you can go to an arcade room, arcade game place, and there's a Lightning network module that allows you to scan a QR code and pay instead of having to put quarters and then play your game. So someday that will probably be just commonplace. Probably every machine that can have the ability to be have payments will have Lightning network. And for those that are new, lightning network is a second layered on top of bitcoin that allows instant and basically free transactions. And there's a common misconception amongst normies that think that bitcoin is slow, but when they're talking about that, they're talking about the first layer. And because of the first layer, transactions are completed about every ten minutes. That's why people think it's slow. But even relatively speaking, that's faster than a lot of other things in this world that we use for payments. And one thing is credit cards. Although credit cards can be swiped and allow payment to be done instantly, when you go to the store, that payment is still not instant because it hasn't been quote, unquote, validate or verified 30 days. 30 days later. 30 days later you get a credit card statement and then that's quote unquote finality versus in ten minutes on the bitcoin layer, one network, you have finality in ten minutes. Now, when you go on to the second layer with Lightning, you have basically finality in seconds and for free. Another problem, of course, with Visa, Mastercard and other credit cards is the exorbitant fees you have to pay. So it's an amazing thing what's being done, and the rest of the rule hasn't come to their awakening on it. ",timestamp:"00:10:27-00:14:17",topics:["Lightning Network"],type:"twitter_space",weight:37.03219711188569},{boost:0,date:null,description:"Related news and updates on Start9 operating system",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"0fe0af9b-421e-43ab-800d-7354379ea21f",show_title:"Swan.com",text:"Yeah, I should mention the embassy pro. As I said earlier, our business model is selling computers. We just launched a new one. It begins shipping next week. We've been preselling it for months. It required version 00:33 in order to run, which is why it hasn't shipped yet. So 33 is now done, so it will be shipping next week. These are very powerful mini PCs, 32 gigs of Ram. It's got a very powerful processor and two terabyte NVMe drive. So your disk storage is going to be very fast. And when it comes to running Bitcoin and Lightning and Electrs and then anything else under the sun, you might want to self host. It really is nice to have this sort of like device that's not a Raspberry Pi, right? Raspberry Pi is cool, but ultimately if you want to do this right and you want to have a good time doing it and not run into resource ceilings constantly, then you're going to need a more powerful device. So if you don't already have a mini PC or laptop or desktop that is adequately powered from a CPU Ram and storage standpoint and you want to run a server and you want to do it right, you're going to have to buy something. We actually have an incredible deal. Right. So the device that we are selling, if you were to go online and price out an Intel Nook, say, which is like the goto kind of mini PC solution, if you were to go build an Intel Nook to the exact specification that we sell the Embassy Pro, it would be a few hundred dollars more expensive. So we are not like this luxury overpriced product. We are actually undercutting the computer hardware market for a comparable device. So if you do need to buy something, come buy it from us. Because again, we're not gouging the price. In fact we're undercutting the price. And two, this is how we survive and how we're going to continue to build what we're building, which we hope you all can agree is a good purpose. So do business with us if you can. The Embassy Pro is the best headless server on the market for the best price on the market. And now we can get into whatever you want. And you also mentioned a moment earlier about people like the Federation model, about people running servers for their friends. And that's a lot of what we are thinking about as we put together this product, as we put together the Embassy Pro, that we are trying to get a more powerful product so that people can support more users on the device. Uncle Jim. Right. The Uncle Jim model. And we think it is a little. Bit. We have an ideal in our head that everybody on the planet will be running their own servers and connecting peer to peer. But we also know that that's not reality. As you mentioned earlier, it's not how humans work. And so we are acknowledging that. And while we will hold that as an ideal, this strategy for expansion is actually to go after families, organizations, content creators who have followers, to get them on board with the idea of self hosting and then gradually push to the edges. Right? So the Embassy Pro 33 and our entire roadmap for the next couple of years is really oriented around, do you get this, do you understand what's happening? Do you want to protect yourself and those who trust you? This is the best and easiest way that has ever existed for you to do that. We want to be that solution because we know that once, say, I use the church a lot because quite frankly, churches are going to be very quick to adopt this technology. We've actually had multiple conversations with heads of churches who are looking to do this because churches have been sort of under attack recently from this perspective. We know that when the pastor of a church sets up a private server, you know, in the back office and tells everyone in the congregation like, hey, we're not going to use Discord anymore, we're not going to use Telegram anymore, we're going to use our own private chat server. And in order to do that, all you have to do is go to Church of Christ.com, sign in with an email and password and chat with the members of the congregation. As in, there's no difference to what you are accustomed to. It's exactly the same experience from the congregation member perspective. They're having the same experience differences. Now it's just private and there's no intermediary. Scooping all your info churches, but it's a trusted intermediary. Exactly. But now the people in the audience understand this and they're like, wow, I want to do that for my family. So the head of family or whoever the most technical person in the family is, is now going to go get a device, put it in the home and be like, hey family, we're going to have private family talks, we're going to share pictures with each other in. A way that it doesn't in the future. Every tribe and every family is going to have its own CTO. Yeah, but we're trying to make that job really easy. Right? We're trying to take the job of system administrator, which is traditionally very hard job, highly paid job. We're trying to turn it into a Gui, a graphical user interface that a college intern could do. Right. Anybody? You're making the user interface very simple or the experience very simple. Okay, so question, you're basically building an operating system. Yes. That seems like a really hard thing to do. Why not just use Linux or something like that? We do use linux. Linux? Linux is a very unfortunately a very small part of an operating system. The basis of what we've built. We use Linux, we use docker, we use all of these tools that already exist in our open source. We're not shying away from any of the intellectual capital that has been built in the open source community over the many years. But there's a lot that has to be built for the user experience that we want. Okay, so in other words this is like a Linux stack but you guys are designing it in a way so it's super easy for people to use and it's focused on decentralizing stuff. Yes, but almost every Linux distro out there. When you say I'm running Linux, you're running probably one of two desktop environments like Gnome or KDE and we don't have any of that. We had to start pretty low in the stack in order to be able to design the experience towards a server device as opposed to a client device. So a lot of it is different than what you'd expect out of something like Ubuntu or ",timestamp:"01:49:29-01:56:20",topics:["Embassy Pro","Data protection solution","Start9 operating system"],type:"twitter_space",weight:12.334749221801758},{boost:0,date:1668866400,description:"Listener question: Is there counterparty risk to USDC given banks exposure to the stablecoin?",episode_title:"FTX Is Worse Than Enron w/ Lawrence Lepard, Caitlin Long, Dylan LeClair, and Dr. Jeff Ross",guests:[{name:" Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1307109108127019008/rPNj47yJ_400x400.jpg",ref_id:"4f4f53c7-5a3a-46df-b334-9951fe38dc96",twitter_handle:"realjeffreyross"},{name:" Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1599858581611941922/XxvPPWAt_400x400.jpg",ref_id:"c1d20e9f-7362-47be-a3a0-5b9c004cd58e",twitter_handle:"DylanLeClair_"},{name:"Sam Rule",profile_picture:"https://pbs.twimg.com/profile_images/1522271013026729987/RQZOdzjq_400x400.jpg",ref_id:"09214ea0-d8ff-47cb-84fe-08e8517768e5",twitter_handle:"samjrule"},{name:" Caitlin Long",profile_picture:"https://pbs.twimg.com/profile_images/1362592672150528003/iYZ84uXB_400x400.jpg",ref_id:"c0244641-6347-4b82-b2a9-0ee38b600c08",twitter_handle:"CaitlinLong_"},{name:" Lawrence Lepard",profile_picture:"https://pbs.twimg.com/profile_images/1114275000889032704/mOUsG1XC_400x400.png",ref_id:"bafa8935-8957-4a9f-aaaa-e45fb46615d4",twitter_handle:"LawrenceLepard"}],hosts:[{name:"q_liketheletter",profile_picture:"https://pbs.twimg.com/profile_images/1560683048680665088/4MrHM_UY_400x400.jpg",ref_id:"3303023d-a793-432c-8020-9151bd237523",twitter_handle:"q_liketheletter"},{name:" phjlljp",profile_picture:"https://pbs.twimg.com/profile_images/1601641645572767745/2Obq9UgK_400x400.jpg",ref_id:"2e5ffdd9-fea5-4daf-85e5-27015890442f",twitter_handle:"phjlljp"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/1583c7c4-f4f2-4e52-8f27-a1eaeb6289fd.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/bitcoinmagazine/22.11.18_FTX_Worse_Than_ENRON_Moon_and_Crowd_Health.mp3?dest-id=1210361",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"8b94fbcf-e349-4b2f-8425-66287345b9ae",show_title:"Bitcoin Magazine Podcast",text:"also wonder a little bit with the risk with these banks. Like, yes, a lot of crypto companies use these banks, but these banks also interact with USDC, and USDC interacts with a lot of other counterparties. And so, like, is there some level of counterparty risk or credit risk that USDC faces with some of these financial institutions as well? And what does that mean? And I've also kind of been scratching my head a little bit about why all of these just have stopped processing US. DC. On Salona. And I don't think I've ever seen an example before of a stable coin kind of dying on a specific protocol and what that even means. Either of you have thoughts on that? Yeah, anybody else? Yes? I'm not sure. I think it's more so just like it was more of an FTX thing. I don't know the long history of stable coins. On Salana, but I do know that they were one of the first ones to kind of have like coinbase. You could do each base withdrawals, but FTX had all the rap soul tokens. Maybe it's just like finance and everyone else just kind of sticking a fork in them. I'm not really sure. Well, I guess what I'm asking is I'm guessing that USDC on Solana would follow the same minting and burning processes as USDC on any other protocol and that it's circle at the end of the day that has some process for ensuring that a fraudulent party couldn't just MIT a bunch of USDC and injected into the system. And so whatever the risk is there with Salana, does that also extend to Tron for example, or some of these other parties and I just don't know enough about how these stable coins actually interrupt with the banking system trying to get an understanding of that risk. Yeah, I think the scary thing is and I was listening to that Larry, you were saying something about that Mark guy and he's like a known short seller with the banks. And Caitlyn, your point about firing from the hip on rumors is totally true in finance and crypto. It's no different from the legacy system. But if there is somewhat of just because of the rumors or because of the potential for a fraud case, we don't know. This is more so to speculation than anything. But if there's like, you know, I mean these are fractional reserve banks, right? So if there is a kind of a run right, and like the crypto, native companies don't really have many places to go, but just, you know, I think these things are non zero probability. That could get pretty hairy for an ecosystem that doesn't really have any options. Well, that's what Ryan Selkus has been talking about. Yeah, sorry, go ahead. No, I think that's just one of the things I'm looking at is like, OK, you have not only like the companies, but you have some stable coins on these rails and the Send network and hearing some I got some McBurnie's in my ear and my DMs that are saying like certain counterparties as of yesterday, not too well known, just some very small scale institutional players have alerted their clients that they're no longer accepting sen like Sen Silvergate exchange network wires out of an abundance of caution and stuff like that. Just kind of flares my kind of senses up a little bit, kind of ring some alarm bells when you see like, an institution, say, hey, we're no longer accepting this crypto exchange network wire out of an abundance of caution. And the stock's down 50% month over month and 10% day every day. Are you referring to Falcon act? That was true, yeah, they sent it out to clients. So Falcon X is not small. I mean, Falcon X is one of the biggest institutional custodians. I don't know exactly how they describe their platform, but they're big. Again, I just careful here. Yeah, but that may be rumor, it may be true. But one thing to caution everybody. There are laws in the United States against a bank run. There are actually laws against that. I would just encourage everybody take a deep breath. It may or may not be true. There are so many rumors floating around this sector right now. And maybe this is where those of us who have the proverbial gray hair can think back to the times that we've been through. The various financial crises, the bond market correction, the Long Term Capital Management collapse in 1997, you know, the tech stock bubble bursting in 2001, and then of course, the mortgage bubble bursting. And seven into eight and nine through the great financial crisis, the rumors fly. And it's not until afterwards that you see where the real truth was. The sad thing about this sector is that there's definitely things move fast, right? And so the rumor mill can move things a lot faster than they otherwise might. So I would just caution everybody, especially when it comes to the banks, just definitely ",timestamp:"00:28:12-00:33:48",topics:["counterparty risk of USDC","USDC on Solana","Circle","stablecoins","SEN network","falconx"],type:"podcast",weight:15.743046803788744},{boost:0,date:1672207217,description:"Improvements made to the Bitcoin node",episode_title:'The Orange 🌞 Reading/Discussion "The Book of Satoshi" & Bitcoin News',guests:[{name:"CouncilmannJamm",profile_picture:"https://pbs.twimg.com/profile_images/1251040014152024066/dD3b2eA4_400x400.jpg",ref_id:"6c989c2c-d24d-49a2-8eb1-1d2f1c47f347",twitter_handle:"jamm_councilman"},{name:"thotsnplayerz",profile_picture:"https://pbs.twimg.com/profile_images/1608733749663109120/wwYEZgF2_400x400.jpg",ref_id:"66bbe365-9e85-4c34-9d51-39d8b49937b7",twitter_handle:"thotsnplayerz"},{name:"Will Schoellkopf",profile_picture:"https://pbs.twimg.com/profile_images/1487515153302130691/t5sDMzZW_400x400.jpg",ref_id:"461e2245-1672-4fa1-94f5-7aaf1afa531f",twitter_handle:"realBitcoinDog"},{name:"OKIN_17",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"dbcdeab8-4824-43f7-aeb8-2b9eda6cbbad",twitter_handle:"OKIN_17"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"},{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ecefba20-39fd-4974-8388-066857965b2a/cf486c39-08f9-4ada-9b72-7a297ad74d74.mp3",node_type:"clip",pub_key:"",ref_id:"51926635-4d2a-47d0-9e11-62c173898631",show_title:"Satoshi’s Journal",text:"like I said, I've been listening to that bitcoin explained podcast, digging into it lately, just plowing through all of it, because that's what I love about the podcast so far, is that the episodes are only like 30, 40 minutes long. They're all these long two hour, three hour drawing out conversations about bitcoin. They really just get to the point and get to the meat and potatoes, so to speak, of whatever they're talking about. And the most recent episode I listen to was about bitcoin core. Update 21. So this was like two years ago almost already now. And it's cool to see what Satoshi was talking about and what the nodes did then to the improvements that we've made since then and then where the mindset was then, and then where we are now, and the things that we've done with Taproot and everything else. It's really cool to see that transition and be able to look back and see the inner workings. Like I said, these guys go into the real deep nitty gritty how the nodes communicate with one another, why they communicate with one another in certain ways, and how they used to communicate with each other in which there were basically ways for people to attack you, essentially. Or act maliciously against your node because of the way that the original protocol used to work and how they've improved upon it to where those options are no longer viable. And you really get to see that bitcoin core developers really do have an adversarial mindset when it comes to the meticulous choices of what bits they choose, why they choose them, and why they do integrate them overall. Yeah, I think that's one of the most powerful things about bitcoin is it's very slow in its evolution. Well, it's exactly like how evolution is happening on earth. I mean, it doesn't happen overnight and it happens very slowly. And in many ways, it actually requires a consensus of nature to be able to make that evolution. And so, like bitcoin, you're not just going to make a change overnight. When these developers are developing, they first have to do a bit, then that bit has to be talked about by the developers. And then before you can even integrate it, there's a long, drawn out process, vetting process that I'm not even aware of, but they're very meticulous, like Tk said, to implement any changes into bitcoin. And these changes would be like soft forks. That wouldn't be hard forks, they would just be little tiny changes that could be done. And of course, you then have to update those have to get updated, minors have to get updated, and they have to have the consensus to accept those updates. It's just not like an easy process. It's a long, arduous process to finally get to the point where you can actually implement it. That's how I understand it, anyways. And because of that, it's a beautiful thing because bitcoin is like actually think about it this way. One of the oldest creatures on Earth is a crocodile. A crocodile from millions of years ago till now has evolved, but for the most part, it's still the same, but it's become more resilient. And the tiny, small changes that has happened to that crocodile have made it that much more resilient. So that's the same thing with bitcoin. It just gets hardened and hardened and hardened and hardened after many, many years. And so hundreds of years from now. Bitcoin is going to be a hardened freaking crocodile, so to speak. Anyways, that might have been a dumb ",timestamp:"00:32:45-00:36:44",topics:["Bitcoin improvement"],type:"twitter_space",weight:35.70854341455261},{boost:0,date:1670706053,description:"On-chain game for stack",episode_title:"Bear Market Buidl — Major #Bitcoin developments! #Stacks #Sidechains",guests:[{name:"@GriffdenNFT",profile_picture:"https://pbs.twimg.com/profile_images/1604377729062895617/R4pSEdH4_400x400.png",ref_id:"dafdf7ec-28c0-43d3-a0d9-b2d266f38738",twitter_handle:"GriffdenNFT"},{name:"@Chad_333",profile_picture:"https://pbs.twimg.com/profile_images/1592310541732970496/o1tbw9Eo_400x400.jpg",ref_id:"484c7695-6a4e-4141-9585-1109bf23f8cf",twitter_handle:"Chad_333"},{name:"@jackbinswitch",profile_picture:"https://pbs.twimg.com/profile_images/1601214177439260672/O0SpU5B1_400x400.jpg",ref_id:"9685e7f3-3e0c-4b84-9fd9-b8a1d96f6ae9",twitter_handle:"jackbinswitch"},{name:"@jimdotbtc",profile_picture:"https://pbs.twimg.com/profile_images/1593210347825119237/L_SNThWQ_400x400.png",ref_id:"5dcf5545-fad6-44ee-ae56-360c5efe1151",twitter_handle:"jimdotbtc"}],hosts:[{name:"@BigRpic",profile_picture:"https://pbs.twimg.com/profile_images/1604962150388219904/WqiCye-r_400x400.jpg",ref_id:"726f0c95-9d94-4d44-a056-8ad3c9e3ddd5",twitter_handle:"BigRpic"},{name:"@CarlsonDoc",profile_picture:"https://pbs.twimg.com/profile_images/1597382056308350977/1NPexynZ_400x400.png",ref_id:"e34fa2b2-a58e-4461-81a0-d10c1058dfc2",twitter_handle:"CarlsonDoc"},{name:"@STXLDN",profile_picture:"https://pbs.twimg.com/profile_images/1533793338931007488/o3laQDCp_400x400.jpg",ref_id:"5c3bc906-3aed-44f9-851a-94804c6fe5ca",twitter_handle:"STXLDN"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99046513-2614-4eae-9de4-5781ba4b330a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/fc3bebcb-8271-433e-8d81-84dd06f3b022/aec527bc-539d-4d3b-9bad-db4af9e1a1ba.mp3",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"09e8e827-fd7b-4800-8633-9f4fe7416210",show_title:"STX:LDN",text:"I'm just going to pop in and just thank you for those kind words, Jack. You've been an awesome peer alongside everybody else in there. To have a more Stacks native user and a big voice for Stacks is great to have in the group. You have some amazing questions. I've learned a lot just from you being curious and sharing those curiosities with our mentors and I can echo everything you said. I think that it's such a fantastic opportunity, especially for someone like me who has minimal real world business experience, to be able to go in and learn the Lean Startup method from all of our mentors. Did I get rugged? Sorry. No, you're here. I thought I got rugged. Okay, just making sure. Thank you. And for anyone who's interested in building in Stacks and wants to open your network and meet some great people, possibly or some great team members, I could highly recommend the Web three pre accelerator startup Lab. And I'm really excited to see everybody start to get their ideas formed and just this great experience. And of course, being kind of brought into the Sachs community in this way, it gives me a lot of exposure to small, big, all types of people in this community. So I guess I could talk a bit about what we're doing. My team and I have pretty much landed on our idea. We have to speak to a few mentors here soon to make sure we can get some legal clarity before we continue on because it is going to be on chain gambling and that's a really important part, I believe, to build an investment ready startup. We have to have all those things in line before we go forward into the stacks. Accelerator, hopefully. And we're currently just building out one simple game. It's going to be an on chain digital coin flipping game with 50 50 odds playing against the house. We have many ways that we want to expand upon that, but if we see some success with this project and building more on chain games for Stacks, that is our grand vision. And we would love to also open up our platform to other builders or other people who want to build on chain gambling games but might not have the resources, whether it be a dev or the marketing sense. So it's really going to be a bit more than just the fungible flip game. But one thing we learned in the Pre accelerator is go for that one killer feature and shoot for something simple and something that was maybe done on another chain. So I had just remembered this game I had played on Salana about a year ago called Djen Coin Flip and that's where I drew the inspiration for our game from. And yeah, it's looking like it's going to turn out to be a success. The reason I thought this would be a good application for Stacks is I come from the NFT trading world where we're all degenerates mainly, and I look to that as being one of the bigger consumers, consumer groups, I should say, in web three, kind of like the Degenerate Gamblers or Speculators. And I truly haven't seen a ton of degenerate outlets for users on Stacks. So we want to be able to build out some of those fun games or gambling s games for Stacks users. We're mainly shooting for more non traditional gambling games, as I've noticed, that's blown up in the online gambling world over the past couple of years. But we really think that transparency is important when you're online gambling and we're going to be able to provide that through smart contracts on Stacks, of course. ",timestamp:"00:20:15-00:24:50",topics:["On-chain game"],type:"twitter_space",weight:22.50741216002476},{boost:0,date:1633737600,description:"Public mempools versus private mempools ",episode_title:"Understanding Miner Extractable Value On Ethereum",guests:[{name:"Nathan Worsley",profile_picture:"https://pbs.twimg.com/profile_images/1576238702908637186/xzcScTyV_400x400.jpg",ref_id:"20529242-4546-475a-af1a-125b83aedd81",twitter_handle:"NathanWorsley_"},{name:"Robert Miller",profile_picture:"https://pbs.twimg.com/profile_images/1595788538938695680/w6i5Q6s4_400x400.jpg",ref_id:"292cfadd-7e67-4e34-876b-99804d416e20",twitter_handle:"robertjmiller_"},{name:"Jordan Frankfurt",profile_picture:"https://pbs.twimg.com/profile_images/1544902585462788097/bGe0hNIi_400x400.png",ref_id:"149db25a-26b1-4f69-8c9e-ec87e08ab8c8",twitter_handle:"jordanfrankfurt"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=6IxaLCPm6_E",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"330a0238-1acc-47fe-b809-48cc986a0b21",show_title:"Compass Mining",text:"I'll rise to the challenge. Jordan, at flush spots, we like to point out the places in which our projects fall short so people can hold us accountable and I hope those of you on the panel do and the community abroad. So I think private mempos could be something that is very centralizing for the network overall. And I think it also turns the network into something more opaque. For better or for worse, the public mempool is that it is public and so everyone can sort of see transactions passing through. They have the same information that it has a level of transparency to it somewhat. There are kind of nuances over there, but you don't know what's going on with your transaction when it goes to flashpots protect you assume that we are a good actor. You assume that we're passing your transaction on without doing anything. And this is a repeated game where you see the game update, right? So you pass a transaction to us, you see the state of the chain, you see if you're a front run or not. You can choose to not use this if you don't want, but there are trust assumptions baked into that and it is a more centralized vector that has less transparency over the outcomes. I think, to be clear for the listeners, I'm not shitting on flashbacks. Protect I think it's a really cool thing. We are planning on integrating it into uniflop. Oh, some alpha. Yeah, we are actively working on utilizing this service. So we're big fans of flashbacks. Maybe I could give a little bit of color to some theoretical problems with having completely private mempools as Robert touched on. I think this is very important. Anyone running a full note or mining doesn't actually have access to the entire MEMP pool. They only have access to a small part of the men pool. The mempool is being shared around everywhere, but each person only can see a small piece of it. And the mempool is like communicating information that traders are using to capture mev. But that's not the only kind of information it's communicating. It's also communicating information about load on the network and it's communicating information about appropriate prices to set the transactions. And if you start to close off all of the menpoles, then that information is no longer being communicated around the network and you have to find other ways of communicating it. And also another point that Robert touched on as well is this issue of censorship. When the mental is open and everything is being shared around the network, you have some assurances about whether you're being censored or not, whether something is happening to your transaction. Maybe it's getting delayed and someone's doing some kind of private statistical extraction that you don't know about. If you have confidence that your transaction is going everywhere around the mempool to all these different nodes, and you can see that, then you can have some proof that that's not happening. That's not to say that I don't like the idea of private MEMP pools, but this is like maybe an argument that you could make sure sorry, go ahead. One thing that just crossed my mind, as you're saying that is a proliferation of private or at least like secondary mental mechanisms or gossip mechanisms would be essentially allowing users more choice in their privacy of the transactions. We see them, like the Quinn, things like Clover and Dandelion as mechanisms for providing users with better safety and defense against Eclipse attacks or whatever their Node. And maybe that's one point in favor of a proliferation of transaction relay mechanisms. ",timestamp:"00:45:01-00:48:33",topics:["Public Mempool","Private Mempool"],type:"youtube",weight:12.134265304355546},{boost:0,date:1670706053,description:"Deep Lake finance: built for stacks",episode_title:"Bear Market Buidl — Major #Bitcoin developments! #Stacks #Sidechains",guests:[{name:"@GriffdenNFT",profile_picture:"https://pbs.twimg.com/profile_images/1604377729062895617/R4pSEdH4_400x400.png",ref_id:"dafdf7ec-28c0-43d3-a0d9-b2d266f38738",twitter_handle:"GriffdenNFT"},{name:"@Chad_333",profile_picture:"https://pbs.twimg.com/profile_images/1592310541732970496/o1tbw9Eo_400x400.jpg",ref_id:"484c7695-6a4e-4141-9585-1109bf23f8cf",twitter_handle:"Chad_333"},{name:"@jackbinswitch",profile_picture:"https://pbs.twimg.com/profile_images/1601214177439260672/O0SpU5B1_400x400.jpg",ref_id:"9685e7f3-3e0c-4b84-9fd9-b8a1d96f6ae9",twitter_handle:"jackbinswitch"},{name:"@jimdotbtc",profile_picture:"https://pbs.twimg.com/profile_images/1593210347825119237/L_SNThWQ_400x400.png",ref_id:"5dcf5545-fad6-44ee-ae56-360c5efe1151",twitter_handle:"jimdotbtc"}],hosts:[{name:"@BigRpic",profile_picture:"https://pbs.twimg.com/profile_images/1604962150388219904/WqiCye-r_400x400.jpg",ref_id:"726f0c95-9d94-4d44-a056-8ad3c9e3ddd5",twitter_handle:"BigRpic"},{name:"@CarlsonDoc",profile_picture:"https://pbs.twimg.com/profile_images/1597382056308350977/1NPexynZ_400x400.png",ref_id:"e34fa2b2-a58e-4461-81a0-d10c1058dfc2",twitter_handle:"CarlsonDoc"},{name:"@STXLDN",profile_picture:"https://pbs.twimg.com/profile_images/1533793338931007488/o3laQDCp_400x400.jpg",ref_id:"5c3bc906-3aed-44f9-851a-94804c6fe5ca",twitter_handle:"STXLDN"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99046513-2614-4eae-9de4-5781ba4b330a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/fc3bebcb-8271-433e-8d81-84dd06f3b022/aec527bc-539d-4d3b-9bad-db4af9e1a1ba.mp3",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"a3fe7197-5948-404f-a8b0-f04bb130db27",show_title:"STX:LDN",text:"can you tell me? I'm friends with Rafa, and as I understand it, he's co founder on Deep Lake. What are they actually doing? How does it work? Well, I can't tell you from a technical standpoint, but I can tell you from a Djen trader standpoint, deep Lake Finances is a way for people to trade perpetual futures instead of using a centralized exchange like BitMEX or what have you. It's a D Five protocol that allows you to do that. Really, the ultimate thing is the way it's being built is whatever kind of liquidity providers you want to have, you'll be able to make these pairs on this platform and trade their futures so the applications go bigger than just Bitcoin and Stacks or whatever. The applications for something like that can be scaled up tremendously, but just that in and of itself. So there's a huge need in the market for such an app. Hey? Well, yeah, I think right now there's a huge need for a lot. Right? I mean, you don't know what you don't know, but something like that. Absolutely. 100%. Just from a trader standpoint, which before I, when I learned about crypto, the next thing I learned was trading crypto from a trader standpoint, a decentralized exchange that I can trade futures on and not have to risk leaving my coins in a centralized exchange, especially status posts, FTX and all of this other nonsense we've watched. That's massive. That's absolutely massive. The audience for that is enormous. Well, that's great. I'm so happy for RAF coming up with this and putting his team together. It's really impressive. I had no idea what it really meant by a perpetual and when you say futures market, well, yeah, I understand that and that's great. That's just great. Yeah, it's awesome. Right? A lot of tech people don't like to think about it this way, but I think about it this way because this is just what I've seen. What's being built in Web Three started on the back of traders period when the news and when everyone in the real world and everyone was just insisting bitcoin itself was a scam and it was tulips and it was this, it was that, and the other traders were out there with their skin in the game, day one. And the liquidity that we've provided to these various chains, sometimes more liquidity than we cared to, but the liquidity we've provided has built this market. And I think that that natural progression is still there because it's still such a young market. Like I said, this is what we're seeing happen right now. The fruits that come to all this labor are going to take generations to ultimately come to fruition. But yeah, traders bring eyeballs, traders bring liquidity. And having apps like that on any chain are really going to bring the investment, bring the capital, bring the interest. It's going to do just like it did with me when I discovered crypto. The giant green candles makes people be like, hey, what's going on over there? I'm going to check this out. Or with NFTs, they come for the pictures and they leave with the understanding of the evils of Fiat. Right? I mean, this is what we're doing. So, yeah, having something like that being built right now, is just huge for Sax. 100%. Yeah. I didn't know what Rafa was trying to put together. And when they published that landing page for Deep Lake, I thought, well, that's interesting. I just didn't know what they meant by perpetuals. And when you talk about futures oh, of course, right. Makes a lot of sense. One thing I do know is I don't believe Rafa is the co founder of Deep Lake, but he is partnering with them for whatever project he is building. Is that right? Rafa is not the co founder of Deep Lake. No. I just dropped an article in a link if you want to check it out. It's a small dive about what they're working on. The guy who started, a guy named Abdel Harass. Really just cool dude, really smart guy. But yeah, there's a little article down there below if you want to check it out. Absolutely amazing tech. Thank you. ",timestamp:"01:02:21-01:08:24",topics:["Deep Lake finance","stacks"],type:"twitter_space",weight:21.730685924323048},{boost:0,date:1671735703,description:"Steps to onboarding a new bitcoiner",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"4491ca29-82ab-4599-8d39-039653b35aa3",show_title:"PUBLORD",text:"No, I just did that last night. I literally sent a text to it. I got this guy that I onboarded this year. A few months ago, he's bought a little bit of Bitcoin. He's got like maybe a couple of $100 worth on cash app. And last night, he was finally asking me, he was asking a question. I was like, oh, shit. I left before I could teach you how to use wallet. So literally, I spent 45 minutes writing this text, basically explaining exactly in detail and taking pictures, like how to download, like, blue wallet, create a wallet, save his keys, told him to write them down, and then how to copy and paste the address and explain private keys. And it took a while, but I sent it. And at the bottom, it's like, congratulations. Like, you now own value that nobody can take for you. And I know that when he finishes that, he's a little older guy and he doesn't really know much about tech, he's going to feel really accomplished when he gets that done. And that's such a good feeling. It's like you do forget like Pablo was saying, you get down the rabbit hole, and you forget there are still people at the Tilt, like, they haven't even crossed in yet. And pulling them across even just a little bit and planting that seed, it's an amazing it's an amazing part. I love hearing all this stuff. You're absolutely right. That feeling of that person kind of having and you just know that there's going to be many more AHA moments throughout their bitcoin journey. But witnessing some of those first ones are pretty incredible. And especially this past month or so, I've had an influx and this gets me so bullish. I've had an influx of people booking me for one on ones saying, I've never self custody before, and now is the time, because this year has scared the hell out of me. So SBF has gifted us with a whole new generation of self sovereign hoddlers that are getting their shit off exchanges. I had a session earlier this week with a dude, probably 20s, early 30s, something like that, and his mom, and they were both taking self custody for the first time, and they were doing it on cold cards. His mom learned how to air gap in a transaction, which is incredible, and she did very well. That's amazing. Yeah. And she understood what was happening. As I was saying, like, oh, well, you just need when I was explaining the SD card, I was like, yeah, you bring it over. All you're doing is you're giving a signature like you would on using your credit card. You're signing the transaction. You're giving permission to send only the transaction that's in front of you. And she's like, okay, that makes sense. And she got it. I've been through a ton of these sessions this month, and it's just every time the people are like, this is really not that bad. Like, once you kind of understand what you're doing, it's just getting over the hurdle of saying, okay, I'm going to spend some time to learn this. But once they do, they're like, oh, my God. I don't know why I was so afraid. It's such an amazing feeling. If I did this where I'm doing on the 18th, would any of you be happy to dial in and answer questions? We kind of did, like, a Twitter space for it, maybe I'd be happy to join the space that you're talking about setting up. Also, I'm a fan of the idea of doing a split night. Like, one more for the beginners and one for the people who are kind of well into their journey and just want to connect on more up to date things. You could have sections to the night I've seen people do where, okay, from this time to this time is beginners, and then from this time to this time is advanced. And then you can also encourage the advanced folks to show up for the beginner section so that you have hands on deck to assist individuals as they set up the first wall. Very good. That's a great idea right there. I'll go one further and you have different sections. You can have, like, an upstairs for advanced, downstairs for beginners. Because I'll tell you what, when I saw BTC session in action, trying to explain Bitcoin from zero to now, you are running your own node in 20 minutes. One of the most impressive things you'll ever see. Let me tell you something. Ben knows his stuff. And it was PowerPoint after PowerPoint after PowerPoint, and my eyes were glazed over. I was learning a lot, man. But then he brought it home, beginning to end. Yeah. You got to break it down in small bites. I think that's exactly what I want to do. I want to try and make it, like, fun. We're going to have a laugh and joke. We can make it really typical, but I don't really want to bamboozle people as well. At the same time, I kind of want to build the community like we do on this space. This is a great thing I love about your space, probably, is that we can talk about some random stuff sometimes, but it's just because we're all on the same wavelength. This is why I love hanging out. You know what I mean? It's just hanging out with mates. Yeah. This is where we sort of begin, man. I've always started with just simple questions between each other. But it's tough, man. I mean, to come into this. First off, you're not going to drag anybody 26 miles to a marathon. So the ones that you try to orange pill that you wish, guess what? They better have a good foundational. Understanding that the money system is broken to begin with after that, that's just the beginning, man. That's just beginning. Going down this rabbit hole. Okay, now you think I understood what? I never heard the term Austrian economics until I found bitcoin. What do you mean, Austrian economics? What the hell is going on here? You don't understand that stuff, man. You just go down there, you start learning about the debatement of currency and the Fed, how this all began. Yeah, that's hard to put into one weekend, let alone one day. The money system is broken. You all we know. And the prophecy is coming true tomorrow. It's like Saturday. Easy. It's easy. Educator, sir. ",timestamp:"02:24:15-02:31:42",topics:["bitcoin self custody","bitcoin education"],type:"twitter_space",weight:28.510520965677095},{boost:0,date:1671735703,description:"Possibility of block mining on the hash rate",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"c09cfdab-f18f-45ad-9542-bd095f3ef52a",show_title:"PUBLORD",text:"Well said, DC. Just real quick, I see bitcoin blue. We respect the hands here. I didn't know if you're going to change topics. Did I ever tell you my Easter egg analogy? Easter egg analogy for that? Yeah, I've heard it. Tell it again, though. I like it. Yeah, so it's pretty cool. At a club here, they had different age groups for an Easter egg hunt, and what they did like kids. They had like five and under in one area. Then they had like kids that were six to eight and then like nine to eleven, but they had three different Easter egg hunts going on. All right, so those little kids, look, they're not going to really surf too deep, so they literally would just leave the eggs open on the ground. I mean literally on the ground next to the tree, whatever, progressively got a little bit harder. So the other kids sort of hit them. You can only see a little bit of the egg. They would find them. And for the older kids, of course, man, you got to stuff very deep. So the difficulty adjusting to me is, guess what? There's a certain number of eggs we got to find every hour. You got little kids looking for hard eggs to find. Guess what, man? It's going to take a while. So what do they do? Difficulty adjustment. We're going to take you guys and we're going to put you we're going to take you from the hard part, and once in a while, we got to shift you back down to where everything is out in the open. We're going to give you some of the easy eggs to find, and over the course of everything, that's going to average out to our ten minute block time. I love it. And it's a great metaphor. It's amazing how something like that is like the missing ingredient to a system that can actually regulate itself over a long period of time. It's like truly mind boggling when you consider the computing power that's on Bitcoin today versus when it started. Satoshi ran that shit for like a week before he found Howl, who started running it, or however long it was, how Hal joined. And now there was two people with computers running this code. And today it's just like, absurd. The number of machines that are just computing as fast as they possibly can. Here's the same issuance timing. Here's some fed. TC what guarantees that the next block will be guessed correctly? Nothing. So essentially, there is a possibility for the block. The next block never gets mine. It's true, but we've never seen that happen so far. And the thing about it is, again, humans don't do so well with big numbers. You look at the total hash rate, and it's like over 200 x a hash overhead. That's over 200 million trillion guesses per second. You're saying I'm thinking of a number and you got a million trillion people no, 200 million trillion people standing in front of you all guessing. Wait a minute. 200 million trillion. Is that the omnibus, the next spending bill for the government? Oh, yeah, definitely no. TC it's amazing the foresight that Satoshi had, because in some of his writings you could see that he was saying that, I know in the future, because of Moore's Law, like, computing power is going to increase and blah, blah, blah, blah, blah. And so he's like, oh, it is necessary for this network, for its longevity, to have a way to, like, self regulate. And it's just the level of fucking, like, genius you have to have in order to foresee all this shit and write the code that makes it work. It's just fucking unbelievable. I was telling my friend that the difficulty adjustment is like, what makes it work? It's one of the things that makes it work. But to me, it's like, if it wasn't there, bitcoin wouldn't function the way it does, right? It wouldn't. It's a perfect balance. And where we saw it, really, the first time I saw it unleashed was when China took all those miners offline. And I forget the percentage that came offline. It was 50%. Oh, man. And it worked. It was just beautiful to watch unfold. Because when that adjusted, guess what, TikTok neck block. There's no stopping bitcoin. You can break it down even more, and it's even more beautiful. It's like the hash rate started to come offline. Blocks start to come in slower. Then no more than two weeks later, this adjustment occurs and re incentivizes whoever's still hashing gives them a bonus. They were sitting on the sideline, an incentive to start doing that activity. Dude, I know this first hand. I FOMOD into mining. Last summer, June, July 21, I saw the hash rate plummet. I realized that the difficulty adjustment had crashed, and it was easier to find blocks today than it was a couple of months ago. Let's fucking go. And that's what's really incredible about it, is the resulting incentives that come from those changes while simultaneously stabilizing a system that's having absolute volatile changes. How do you kill something like that? Where the human incentives are, the greed is just, like, ever present. If the fucking hash rate drops, everyone's going to foAmal into mining. Like the small people, like everybody in their house. And it's just so beautifully. It's so elegant, because in a way, it's harnessing forces and variables that are so hard to human psychologies. Like game theory. Whoever came up with bitcoin, whoever Satoshi is, bro, I'll get on your knees and suck your dick. That's the level of fucking, like, why does this shit keep coming up in this room, man? I swear to God. First breakfast because it sucks. The happy hour, bro. I think the longest I've ever had to wait for a confirm that I knew was going to be next block was like, 84 minutes, and the shortest I've gotten I've gotten them were like, literally by the time I go to check, it's confirmed, like, within, like, 20 seconds. So it's crazy how the variance can be. Yeah, bitcoin is beautiful. I said it. Bitcoin ",timestamp:"00:21:59-00:29:16",topics:["block mining","hash rate"],type:"twitter_space",weight:28.510520950548525},{boost:0,date:0,description:"More thoughts, questions and answers on Nation States and the Information age",episode_title:"The Sovereign Individual - The End of Egalitarian Economics",guests:[{name:"chriskapilla",profile_picture:"https://pbs.twimg.com/profile_images/1362817539135463427/2AXUeFLV_400x400.jpg",ref_id:"9d495790-93f2-4d6c-b770-b2885f66859d",twitter_handle:"chriskapilla"},{name:"remydenton",profile_picture:"",ref_id:"5c5beb0c-c214-4f23-b79a-e71bf9368f2d",twitter_handle:""},{name:"JackRonaldi",profile_picture:"https://pbs.twimg.com/profile_images/1583261828628496384/IazkwYjk_400x400.jpg",ref_id:"01621476-f040-49dd-8160-4035228faf78",twitter_handle:"JackRonaldi"},{name:"AlistairZ80Aftw",profile_picture:"https://pbs.twimg.com/profile_images/1362882489895841795/gH2zix3l_400x400.jpg",ref_id:"3dcba197-47ca-40c0-857d-73cec4325801",twitter_handle:"AlistairZ80Aftw"},{name:"mattonbtc",profile_picture:"https://pbs.twimg.com/profile_images/1549459254280687618/jzdHJou3_400x400.jpg",ref_id:"998167d3-e036-4ef1-9a05-4f062903f0c5",twitter_handle:"mattonbtc"},{name:"wai_wairua",profile_picture:"https://pbs.twimg.com/profile_images/1536570699761848320/T10Owc60_400x400.jpg",ref_id:"c4d4ff36-73fa-4471-91ba-de0f99a49e99",twitter_handle:"wai_wairua"},{name:"UltraSolomon",profile_picture:"https://pbs.twimg.com/profile_images/1468332451055427601/YVgUuUHc_400x400.jpg",ref_id:"6371d519-cc98-4bf4-9f82-be17b1ea532a",twitter_handle:"UltraSolomon"}],hosts:[{name:"BTC_Venetians",profile_picture:"https://pbs.twimg.com/profile_images/1557482467539521537/Kel-eVww_400x400.jpg",ref_id:"a6313ca9-3869-4477-88ad-30172957edcf",twitter_handle:"BTC_Venetians"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/75ec86b1-cb6d-467f-a66e-5e642e5c126a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c8cc9ec1-061d-4f53-a24b-ee43a56c7715/e650057e-2369-4e75-8119-4975a1fc4cac.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"af7832e4-45e7-44e6-a91c-04652f9ce4fa",show_title:"Bitcoin Venetians Book Club",text:"let's move on to my favorite question that I came up with, which was, let's imagine that the nation state doesn't survive and it's a bunch of small sovereignties. I guess where I'm always confused is, as a bigger entity, you're more powerful. So if we split up into a bunch of smaller ones, like, what's to prevent, like, some Genghis Khan coming around and conquering the small, weaker sovereignties, small sovereignties. I guess part of it is the wealth being unconfiscatable, the wealth being situated online rather than in terms of physical resources, in terms of information, and in terms of Internet native money. I find this very interesting. Like, it's kind of the Jason P. Lowry form of address. And I challenge that. Because if you have one country with nukes or greater violence in one country without, and this is physical violence, not informational violence. And the authors having talked about infrastructure being a key component of wealth, it does strike me that the physical you can't just ignore the physical component and a lot of the debates. The nature of violence is shifting, and it's easier to defend your wealth than ever before and much more costly to attack that wealth. And so therefore, the cost of violence is changing and favoring the individual. And I understand that. But at the same time, I just don't think you can ever discount an army moving onto your front doorstep and taking your culture and your home and your roads and everything else. I think I'd have a very similar critique of Jason Larry, whose name was previously banned in the book club, but we'll let you off as you've been away. But I guess the question is maybe the relevant question isn't if there was a large country with big armies, couldn't they just bulldoze everything? But would such a nation be one of the ones that collapsed? Would it be sustainable if it could no longer use extractive techniques against its own population to fund that war? I sometimes wonder if we'll see, like, I don't know, I got to find the right phrase, like cyber Vikings. I wonder if all of the kind of plundering of, like, other small sovereignties would be technological purely rather than physical. Yeah, I think maybe the violence will go into both domains. And I think we already kind of see that with hackers attacking people, especially, like, in the ethereum and rest of the crypto space where people are a bit more careless and there's a lot of security vulnerabilities you keep seeing like hacks tens of millions of dollars stolen all the time. But I think on the physical versus digital violence, I don't know, I think it'd be a calculus for even if it's a smaller attacker and smaller sovereignty, it would be a calculus. Like, let's say we're all on bitcoin and it's sound money. What if we came off of sound money and we funded a big war effort and we could steal people's maybe not their digital welcome bitcoin because you can't crack that security. But I think money at the end of the day is like a means to an end, not an end itself. And the means that it is the end that it's a means to is in the physical world mostly, at least for the time being. And if you can appropriate all of that wealth physically doesn't really matter in my opinion, or it doesn't matter as much what the ledger of bitcoin says if you have the physical wealth. And I mean, I guess a relevant factor is that is the armies these days are less and less human based and more and more technologically based in terms of drones and remote fighting and things like that. So you don't even have the hearts and minds issue that you may have had in the past in persuading people to go to war and give up their lives for this fictitious entity of the nation. I know we've had this discussion quite a few times. Yeah. And I'm just wondering if you follow the trend of the book and you say I mean, we've seen it already, these hyper wealth concentrations where we've already got single people who are more wealthy than entire nations. Significantly more. In some cases and whether or not they will have private armies and then able to fund those armies to then kind of perhaps do what they want. So there is countercases to be made against this claim that things will be defendable in the informational age. But I'm not wanting to get too dystopian. I still think that it is a powerful force for positive, and it's quite hard to weigh. It's very hard to weigh what force will mean more and how it gets discounted. Talking about a nation state funding its military, how much of that defunding through perhaps bitcoin, how much of that will actually have an effect. It's really hard to quantify. ",timestamp:"01:02:09-01:08:19",topics:["Economies of Scale","Nation States","Information Age"],type:"twitter_space",weight:10.800045251846313},{boost:0,date:null,description:"Hosting family thanksgiving and discussing bitcoin",episode_title:"Café ₿: Thanksgiving Special 🦃 w/ the Café Bitcoin Crew",guests:[{name:"Rob Hamilton",profile_picture:"https://pbs.twimg.com/profile_images/1524033110630969351/wTUr8S36_400x400.jpg",ref_id:"94b18625-4778-4cfe-9c78-823704d1c1b1",twitter_handle:"Rob1Ham"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"DJ Satoshi",profile_picture:"https://pbs.twimg.com/profile_images/915987644043030528/5nh3JQSz_400x400.jpg",ref_id:"02ae35cb-3728-441f-84c5-a8db5d9150b4",twitter_handle:"satoshi__tomiie"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Shaeroden",profile_picture:"https://pbs.twimg.com/profile_images/1560742113410678789/cHZ2tUjU_400x400.jpg",ref_id:"0da06a5c-038f-4737-9af7-17bed3712e68",twitter_handle:"Shaeroden"},{name:"Andres",profile_picture:"https://pbs.twimg.com/profile_images/1401952614795943950/aL2h3Wb4_400x400.jpg",ref_id:"db4abfe9-e3bb-4ffa-9783-ce67f5b20270",twitter_handle:"andresvbr9"},{name:"Peter Ansel",profile_picture:"https://pbs.twimg.com/profile_images/1374726811221954565/R7ttqYMI_400x400.jpg",ref_id:"2d418514-e03c-414d-8ed1-10c894aacb6e",twitter_handle:"peteransell"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c25e3b3c-b5ef-435e-9e7d-9e406089e7b1/572908d4-f2cc-4c7b-980c-8359d2c8000d.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"5faa3765-8f15-41c7-8c8e-6136a0e67b5f",show_title:"Swan.com",text:"Hey, I appreciate what American Huddle said. I don't know if it's a funny story, but it's a few years now that I've been hosting my family's thanksgiving. And I'll tell you that flips everything on its head when you're the host, I tend to find that there's a lot less of that kind of reactionary stuff in your direction. I don't know if people are just minding their manners more because you're serving them a feast, but it goes a little easier. And a couple of days ago, my mother in law rolls into town. Last year, I was talking her up about bitcoin. I sent a small amount to a blue wallet on her phone, got her set up, and first thing she says to me when she shows up, she says, did you see what happened to bitcoin? And that's when last night I thought it was funny. I sat her down in front of YouTube, and I played her this one time, and then it crashed. Video from YouTube, and she kind of had a blank stare after that thing played. I hope you guys know what video I'm talking about. The guy who says, this one time, bitcoin went from way up to $36 and then it crashed down to $20. Yeah. Anyways, find that video if you haven't seen it, but you fill in the blanks. I think that one ended at the cycle that peaked at around 1200. So you kind of fill in the blanks of then it went to 20 and crashed down to three, and then it went to 69 and it crashed down to 15. And you kind of help them fire off a couple of brain cells and put two and two together and realize sort of the bigger picture and the fact that they have the time frame of a mosquito and the way they're thinking about it. So for me, that was gratifying to kind of actually see a little light bulb go off in my mother in law's eyes last night when I was showing her that. So yeah, I don't know, maybe that works for somebody else. I've never actually heard that one. Jacob found it. No, he's going to play it right now. Oh, epic. Right now. Role. This one time bitcoin went from way to it crashed down to another time bitcoin went from way to $29. And then it crashed $3. And then another time bitcoin went all the way to $213. And then it crashed all the way to $70. And then another time bitcoin went all the way to $1,100. And then it crashed all the way to $239. So the moral of the story is don't buy bitcoin because you know it's going to crash again. He did a follow up tweet too. Then like the next bull market, he also said nothing. That video is so priceless because I'm pretty sure he's serious. I keep going back and forth between it's sarcasm or he's actually serious. But either way you got to watch it, Alex, because just the expression on the guys face. And then he's a bitcoin on Twitter. I didn't know his name. What's his name? Let me give his last name. 1 second. Yeah, I mean, I played that for my mother in law last night and then continued it. It went all the way up to 20,000 and it crashed down to 3000. You kind of have to help people because they still don't realize they hear that word crash and all they think is bad, bad, bad. You kind of have to put two and two together for them. But yes. Anyways, maybe that will help anybody with their relatives. You're welcome. That's hilarious. Shout out to Q in the audience. Going to throw you an invite. We need to remove somebody. Jacob, you be the bad guy. Take me off. Take me off. I'm handling my kids. And then also Brad Mills. What we're doing today, guys, is we're just telling funny or interesting thanksgiving or otherwise bitcoin stories. It's been pretty light, pretty chill and fun. I think it's worth noting. I think it's worth noting too, when you're talking with family and bitcoin, especially over. Time because you're going to be right. With time, you're going to be right. The bear markets, people poke funny or whatever, that's fine. But given enough time, you're going to come out looking so smart and so intelligent. I think that's where the stay humble part comes in. And you kind of have to be a little graceful with being right, at least around family, in my opinion. Sometimes when you're on Twitter, it's fun to be like, yeah, what's up, bitch? You were wrong, motherfucker. But like, I don't really say that's, like my aunt or something. The problem is if your family finds your Twitter and then they know how you're thinking anyway, so you can, like, try and be so polite. But then, like, three days before you showed up to Thanksgiving, you were like, bro, when I see these pores, I'm going to be just thinking, fuck you in my head. So just don't tweet stuff like that. You know what I mean? Don't be one to yourself. Maybe share that with your wife. We're all learning here. Hey, Q, tell us some funny or interesting bitcoin stories, man. I told you so. I've gotten this week have been actually kind of hilarious, I will say. Just the overall response and naivety of normaland versus especially those of us who I think very much understand the difference between bitcoin and crypto. The conversations I keep hearing is like, oh, shit, bitcoin is going to go to zero now because Sam is like, not going to be a thing that FTX is going under. It's really funny, at least to me, because at this point, I'm just like, you're right. You're absolutely right. We're not going to make it. And then I love my favorite thing is it's always people who are very bullish on the tech industry as a whole. And so it's just a very simple, how's your SaaS portfolio doing? How's that Facebook stock treating you? Everything's kind of gone to shit. So I don't know. It's pour yourself a nice heavy glass of whiskey, put your legs on the table and just let's see who bled the least, not who made the most, if you will. But I don't know. Painkillers are fun right now. I just wanted to say to the Swan family, thank you very much for everyone who hit me up after Pacific Bitcoin. Like, I am successful surgery and fully recovering right now. My Achilles. That's awesome too. I have this one uncles who will not stop calling bitcoin bitcoin, and they've been calling it bitcoin to my face since 2015. And I'm like, did you guys all miss the part where I became the richest person in the family or no, a ",timestamp:"01:05:22-01:13:51",topics:["family thanksgiving","bitcoin crash","bitcoin discuss"],type:"twitter_space",weight:10.792905569076538},{boost:0,date:1637366400,description:"The narrative around nuclear energy is getting louder and more encouraging for Bitcoin mining communities",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"34c231bc-7fcf-4f55-a124-d67b008399a0",show_title:"Compass Mining",text:"to have you continue that train of thought, elaborate more on where nuclear stands now compared to maybe where it did a decade ago. Well, the Fukushima event definitely derailed the deployment of generation four reactors and put that on delay for a while. So it seems like we're finally just starting to get back around to that. But I agree with you. The narrative around nuclear has gone for a complete flip just in the last few months, and it's reinvigorating and very encouraging to see that level of public participation and growth and notoriety growing and getting better and leaning less away from outdated, basically, flood. For nuclear relies on the old technology and basically problems that have been solved or in the process of being solved. My interest has been mostly in the advanced reactors, in the small modular reactors like the little little guys like the 1, because I've gotten really obsessed with the small the SMR action plan here in Canada where we are planning to basically upgrade remote communities from diesel generation to nuclear power. And some of these communities, the electricity prices out there are outrageous. It's pretty lucky for the communities that can get diesel barged in. But some communities that need to get their fuel shipped in, they're paying as much as ninety cents a kilowatt hour, sometimes even more. And that all gets subsidized so that it equalizes with the on grid prices. So that's a lot of money that could be spent for better investments if we could get a more stable long term energy supply in there that doesn't need to be constantly refueled. But the reason that I see Bitcoin mining being a super good amplification for that is that it just completely eliminates the demand risk of making these investments before the current situation is there's a lot of hesitancy to build large generation projects in far remote communities because there isn't a customer base to recoup that investment. But now we can deploy in excess and deploy a customer right alongside the reactor that will scoop up everything and then be perfectly aligned to the generation profile and they can be scaled and adjusted as needed. Depends on how communities grow there's. A lot of this is going to be used for remote conventional mining applications so they can incorporate bitcoin mining as a way to just better economize the reactors that they plan to use for their operations. And this is going to be a complete game changer for these communities that they've been energy impoverished for generations. And some of the stories that you hear about remote communities in Canada, especially indigenous ones, it's hard to hear and you want to come up with a solution to fix it. But the conventional problem has just been throw money at it and all that does is it just seems to just go down a hole and it invites corruption and it never goes to places that it needs to. These people need water resources, they need better food and just fixing the energy will have a cascade effect and resolve all of that. Yeah, no I agree 100% with all of that and it's crazy to watch people sort of in these conversations realize the location independence and almost unlimited demand for energy from bitcoin miners and how that resource can be deployed to very quickly and easily expand like energy infrastructure for nuclear or other energy sources. It's just insane and almost unprecedented. Before we dig into that though, I did want to know if peru if you had anything to add on to that with regards to the inflection point, a flip in public perception, nuclear skills poised for massive growth, like real growth infrastructure wise and popularity growth as well. Yeah, I think that makes sense to me. Also, one more thing I want to point out is a lot of the reactors that we see online today have been built out to 1970s and we haven't seen growth in reactor build out since then. And I think it's important to understand the energy market that we are currently living in to figure out why nuclear hasn't made a push so far. Nuclear accidents have definitely changed the world public perception over time and they do not help for sure because it's such a political thing. But apart from that, if you look at the energy build out that's happened especially in the United States, and if you look at the generations have been brought online then you'll see a period between 2000 and 2005 where there was a massive build out of natural gas power plants all around the United States. I think combined my numbers might be slightly off but I think in those five, six years combined there was around 200 gigawatts of natural gas power plants just built in the United States. And what led from there was just cheap natural gas prices. And nuclear has found really tough and not just nuclear, even coal power plants have found it really difficult to exist in a market environment like this where natural gas is certainly so cheap. So it just depends on like the build up that happens and now, I think the opportunity for special advanced nuclear reactors would come probably, I think, in 2030 to 2040s. That's the time frame where a lot of these existing power plants that we have currently are going to retire, especially, I mean, any predictions on energy markets generally are wrong, but I don't want to say that, but I'm looking at the trends. I think a lot of the existing plans are going to retire in 2030. And that's where I also wrote this on a Twitter thread where I feel that's exactly the opportunity which a lot of these private companies in the advanced nuclear reactor space are trying to fight for. So that's another important factor, aside from the accidents over time which have changed public perception. Got ",timestamp:"00:15:37-00:21:49",topics:["Nuclear Energy Narrative","Bitcoin Mining"],type:"youtube",weight:10.626491553126828},{boost:0,date:1633737600,description:"Miner extractable value on Bitcoin",episode_title:"Understanding Miner Extractable Value On Ethereum",guests:[{name:"Nathan Worsley",profile_picture:"https://pbs.twimg.com/profile_images/1576238702908637186/xzcScTyV_400x400.jpg",ref_id:"20529242-4546-475a-af1a-125b83aedd81",twitter_handle:"NathanWorsley_"},{name:"Robert Miller",profile_picture:"https://pbs.twimg.com/profile_images/1595788538938695680/w6i5Q6s4_400x400.jpg",ref_id:"292cfadd-7e67-4e34-876b-99804d416e20",twitter_handle:"robertjmiller_"},{name:"Jordan Frankfurt",profile_picture:"https://pbs.twimg.com/profile_images/1544902585462788097/bGe0hNIi_400x400.png",ref_id:"149db25a-26b1-4f69-8c9e-ec87e08ab8c8",twitter_handle:"jordanfrankfurt"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=6IxaLCPm6_E",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"03c6b2f5-685e-4921-a230-e14e5679f792",show_title:"Compass Mining",text:"on some level the answer is very simple in terms of comparative me v opportunities and strategies and development on Ethereum other chains versus bitcoin. On another level, maybe the answer is a little bit more intricate. But my question is basically in context of everything we've described and explained and understood so far in this conversation about Me V. Like why basically are there this many opportunities and this much development attention to minor and maximum extractable value on the bitcoin chain as opposed to a theorem and other chains? And maybe to add a little bit more interesting content to that answer, like if or when would anything like that change for Bitcoin? Maybe as a preface or to set up some of your answers, I know we're seeing an increasing amount of developer attention paid to covenant contracts, bills for bitcoin and Lightning and if those reach a pretty high level of sophistication there could be some interesting opportunities for MVP on bitcoin. Right now there just really isn't that much. So I'm curious to know your guys'insights on why that is and what, if anything, would sort of be a catalyst to kind of change that situation for bitcoin miners. Nathan, maybe you go first and then everybody else can jump in. Yeah, sure. I think it's just simply a function of the size of D five currently on bitcoin and that if we see that start to change, then we'll see the me the situation starts to change on bitcoin. Really like the incentives and the opportunity from me v not entirely, but mostly being generated by DFI and the DFI economy is just bigger than Ethereum at the moment. We are seeing people starting to make inroads into bitcoin with D five development and as that becomes bigger, I think these problems will become more pertinent bitcoin. I've been philosophically, it takes a very conservative approach to a lot of these issues. So they've pushed off a little bit of the default development down the road a little bit and I guess using Ethereum more as a testing ground to see how these issues have worked out. Yes, for sure. Robert, go ahead. Anybody? I think Nathan hit the spoke to it very well, I think. I would also note that there's more mev on bitcoin than I think bitcoin is like to acknowledge. In particular, there's a lot of griefing vectors that you can make money if you assume that you are a counterparty in a channel and a minor in the lightning network. So you just grief. Your counterparty take a lot of their money and I think most of that payment ends up going into a minor. There's like a bunch of different vectors for that as possible. There's a good article on this by a lightning developer, Lisa Nicole on Twitter. And then I think that there's some mev in bitcoin that just isn't really being exercised by miners right now. And there's some sort of theoretical mev that you could imagine too. So I kind of think of if there's giant arbitrage opportunities between centralized exchanges and you really wanted to be the first person to make a deposit at one centralized exchange, everybody is sold. You need to get new bitcoin on boarded there. You could imagine a minor exercising their control over yeah, this is the one. You could imagine a minor exercising their control over transaction ordering to be the only party that deposits at that centralized exchange and thus is able to capture the arbitrage. Something like that. Yeah, no, that makes sense. I actually forgot about this article at Austin Bit Devs a bit ago. They mentioned this for anyone watching who's interested in lightning and also mud, which I guess the Venn diagram there might be pretty small, but it's a great read. She explains some pretty interesting concepts. Yeah, Jordan, curious to know your insight too. You and I personally offline talk a lot about bitcoin and ethereum compared to ecosystems. MVP on bitcoin pretty small. What, if anything, would change that? Yeah, I think actually, Robert, the clockwork paper that you wrote had there's a section of it that gave me, I think, a decent or a better generalized framework for thinking about MVP opportunities. And it's just that, like, every MVP opportunity is like highly context dependent. And when you have a chain like ethereum where there is more context, like there's more state that can be manipulated, you therefore will have more MEB opportunities. So in the state, or in the case of bitcoin where you're primarily just managing transfers and just etxo's everywhere, there's a much simpler state surface on the chain than there is on ethereum. And ethereum is like orders of magnitude more complex and therefore creative people can find more interesting things to do to manipulate. So that state surface might change. For bitcoin. With ethereum, there's obviously certain changes that are happening with like, channel disputes and we'll see if there are more in the future. I'm sure that people are going to keep building on bitcoin and maybe someday we'll see some cool new opportunities arise. Maybe we should build it. Jordan. I mean, there's already plans, right, for AMM on bitcoin. I think Jack Dorsey said he's going to build it. So, I mean, as soon as that AMM is this, there's instantly mere available on Bitcoin, you can't have the AMM without having mev. It goes back all the way to that FHIR network or something like that back in 2015 that Matt Carello tried to build was that relay network. Those are also I always see them as infrastructure for maintaining mev, so it certainly exists. And James Preswich and Hustle and one other author have a paper back in 2019 talking about bitcoin mev and how that would lead to chain instability, which, Robert, I know you and I had a few Twitter DMs about. That subject like, what would it look like for transaction fees to become such a bounty for miners to start looking at reorganizing that network? Which would be pretty interesting. ",timestamp:"00:21:48-00:27:58",topics:["Bitcoin Miner Extractable Value","Lightning Miner Extractable Value"],type:"youtube",weight:10.626491547282228},{boost:0,date:null,description:"Experimenting with the Raspberry Pi",episode_title:"Reverse Proxy - #Bitcoin Nodes - NGINX is the Answer!🦾",guests:[{name:"Pedro",profile_picture:"https://pbs.twimg.com/profile_images/1395874649876140035/z-IycTAj_400x400.jpg",ref_id:"78acd8b7-3097-40c3-b626-245bc911dc49",twitter_handle:"pedromvpg"},{name:"Machankura",profile_picture:"https://pbs.twimg.com/profile_images/1536075376409059331/0zddZFmE_400x400.jpg",ref_id:"855f2d8f-2230-475d-b5c1-dcaace579de4",twitter_handle:"Machankura8333"},{name:"DJ Satoshi",profile_picture:"https://pbs.twimg.com/profile_images/915987644043030528/5nh3JQSz_400x400.jpg",ref_id:"02ae35cb-3728-441f-84c5-a8db5d9150b4",twitter_handle:"satoshi__tomiie"},{name:"Portland.HODL",profile_picture:"https://pbs.twimg.com/profile_images/1562306406526492672/LiqmI9NS_400x400.jpg",ref_id:"aaa58ce5-7907-4c3a-9881-839cd012c456",twitter_handle:"PortlandHODL"},{name:"anonsats",profile_picture:"https://pbs.twimg.com/profile_images/1601204123818401792/iQ85pwvS_400x400.jpg",ref_id:"f3bf3677-9864-4fe3-a8b0-976a67be45cd",twitter_handle:"anonsats"},{name:"₿rettInThe13%",profile_picture:"https://pbs.twimg.com/profile_images/1593104719311929345/tTSjoS2n_400x400.jpg",ref_id:"0ad02828-02ee-465b-87c6-96e559905ed8",twitter_handle:"brettinthewoods"},{name:"EasySats",profile_picture:"https://pbs.twimg.com/profile_images/1593330030905540618/ZHqVPhTM_400x400.jpg",ref_id:"d6d16cf5-4a9b-4517-897d-5cf98467ed1a",twitter_handle:"EasySats_"}],hosts:[{name:"okin@8333.mobi",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"7af60fa9-1611-4029-b691-aa1481f99062",twitter_handle:"OKIN_17"},{name:"Dread",profile_picture:"https://pbs.twimg.com/profile_images/1532557131819491328/vvs1cD-7_400x400.jpg",ref_id:"e61af76b-8fbd-4719-b753-0a70edd22fa8",twitter_handle:"PoleVaultDream"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/30180c4d-27f9-4215-81e0-6a22b16aba43.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/e464bf90-24b2-48ec-b50a-e51c45412a19/00d3308d-b0b8-452b-a4bb-6025a731c457.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"896a10a9-621e-4f5e-a8d7-d4504dffd923",show_title:"okin@8333.mobi ⚡️ 🏰",text:"Dell laptop, right? You can install NGINX on that, and then you can forward traffic through that Dell laptop into a Raspberry Pi that's running another node for you. You can do literally whatever. You can create this mangled net of whatever you want and point anything to anything internally. It typically works. There are a couple of caveats, but overall yeah, you don't even have to have it running on the same machine. Just the traffic has to initially hit NGINX first. That's the only requirement that it goes through NGINX first so that it can get routed. Blessings, blessings. I'm just going to have so much fun. Wow. Do it. Well, the Dell laptop is currently not a laptop anymore. That is an embassy node. As Dread said, once you use the X 86 hardware, it literally you put another OS on it. So it's running. I don't think it has any access to terminal anymore. But I do have my 20, my 2011 2010 MacBook Pro. So that one I'll probably do it. On, and you can still SSH into it and you know, you I mean, you still have root access to your machine, so you could do whatever you want. Yeah, you still do that's true experiment? Yeah. Go for it. Portland. Oh, I was going to say, as a note, we kind of mentioned earlier that Ram was one of the biggest factors as part of the IBD. So the initial block download. So when your device downloads the Bitcoin Core client, then you got to sync it up. My experimentation on specifically the Raspberry Pi is that the Raspberry Pi is not memory limited, it's processing power limited. And that is due to the Secpk basically message the elliptic curve cryptography that is happening, the processor literally cannot handle that amount of processing quickly. Like it takes forever. And I did this by doing the Perf tools in Linux and basically watched for which functions it was calling the most often. And the two of them were basically some square operations for that encryption library and some multiplication operations that were just getting ran again and again and again. And that's why on these Raspberry PiS it makes sense that they typically with the initial block download, it does really good until you kind of hit like 2017 or block right around like 500,000 or so. And then Seguit comes in and you start getting actually like complex transactions in there. And that is because it's spending so much time processing all these encrypted messages and validating that they're all valid. And where that goes is x 86 hardware is so much faster at doing these operations and that's why even installing bitcoin core and downloading these initial block downloads over on these x 86 machines that aren't as small as the raspberry pi. But it's so much more performant is because of the fact that these machines are so much better at handling these kind of operations quickly and efficiently. The Raspberry Pi just sits there and churns and churns and churns. And that's why even towards the very last part of the IBD nowadays, usually like the last like 10%, it is just excruciating while this little pie is just churning numbers all the time. And whether you have 4GB or 8GB, I found does not matter one bit. Both still take a long time. Two to four is a difference, I will note that. But four to eight, there's no difference at all. That's interesting. I had a different result because testing all the embassies we've had to down, I've done like 20 IBDs in the last month, and I have a Raspberry Pi for four gig and a Raspberry Pi for eight gig with the exact same config set up on the embassy. And the four gig took usually between seven to 14 days to finish. To your point, excruciatingly slow for the last 5%, but the eight gig actually did it in 72 hours, sometimes a little bit less in some cases. I'm not sure that's because we cranked up the cores in the bitcoin.com, but it definitely moves faster than the four gig for us. I would like to look into this because my theory was based on one thing as well. So I looked at the memory usage and both for me, this is just bitcoin core. I'm not running a suite on top, right? So I'm just running bitcoin core. Both Raspberry PiS basically tapped out at about 2.7 to 2.8gb of memory usage. So that was kind of like I double checked and that's why I ran the perf tools, is to verify that what's actually going on under the hood here. And I verified same SD card in both of them. So they both have the same transfer speed. The memory isn't being used. So my thought is like, tell me if I'm wrong here, but if it's only using 2.7 gigs and both are taken like you said, it was roughly about two weeks to complete on both the four and the eight gigabyte, and it's not using the extra Ram. That's why the results are roughly the same, I believe, but those are my thoughts there. Even if you get eight, it's not going to touch that amount of memory. Have you measured the memory usage when you're doing these IBDs? Not going to remember. I remember they were both being maxed out on the processing power, but the memory usage, I don't remember if it was using more than 2.7. I didn't check it. But the one thing that I was going to ask you is, did you tinker with the bitcoin.com any at all? Did you try to change any of the settings? There no okay. On my actual production node I do, but on this, for this experiment, no, I did not. And I actually have a nice little write up on my Twitter where I also compared this to the IBD on some X 86 architectures as well as the IBD on different types of devices, HDD, SSDs and 2.5 inch 5400 rpm laptop drives. This was just like a barrage of different tests I was running on these to see, like, okay, where is the Achilles heel in the initial block download? And one thing you noted thread that I think points to my theory being maybe more correct. And again, anybody come up and tell me if there's a reason why this is wrong? You mentioned that the Raspberry Pi processor was at 100%. That's the bottleneck at that point, right? That means the car is floored, it can't go any faster. And those Raspberry PiS between the four and the eight gigabyte are basically the same frequency. So I don't know unless there's some other little bottleneck or something that I could be missing that the limitation at that point is literally how many cycles does it take to complete this total download? And that is if you're running at 100% CPU, which is the case. That's why I experimented with this, is that, yeah, the CPU, it's bound to that. That's as fast as it can go because it's using all of the resources of the brain to do it. Yeah. I would need someone smarter than me to tell you what resources are being used to make it go faster in each case. But what I can tell you is that in the conf, I would tinker if I were you. I tinker with the RPC threads, the threads that are used to handle and also tinker with the work queue to service the RPC calls. I think those two settings and the configuration might boost even though the processing power is maxed out. I'm not sure how it goes faster, but it seems to handle the heavier blocks better. It's almost the same speed for the first four years of IBD. But after that, it seems like if you increase the work beyond the queue, the work queue and the threads, it seems to speed up on the bigger blocks. ",timestamp:"01:47:37-01:55:51",topics:["Raspberry Pi"],type:"twitter_space",weight:10.239102840423584},{boost:0,date:1671735703,description:"What is Difficulty Adjustments?",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"17d338d5-a11d-405f-bbc1-257b4e145723",show_title:"PUBLORD",text:"I tried something new out. I just put out the first little sort of educational thread from the time chain calendar account. It's the last one on the next at the top. It's only four posts really short. It's just a little explanation of the difficulty adjustment. I'm just floating it out there. I want to see if anybody appreciates that, if it's useful to anyone. I want to start basically sort of attempting to describe the most important aspects of bitcoin in these very small bitesized chunks that people can hopefully wrap their head around and then put those things together and have a better understanding of things like city showers. He might appreciate it. He might need to update his mental model of what the difficulty adjustment is. Difficulty adjustments means, for example, instead of just talking bitcoin, like, do something with a bitcoin. I'm just setting up my new hosting service in Europe, which is going to provide self custodonial virtual private servers with the preinstalled BTC pay server, whoever is interested to I'm still not going to announce the official link to the website because I'm working on It hosted service for self custody. So it means like no. Is that not an oxymoron? No, it's no KYC. Because me, as a hosting provider, I'm just dealing with infrastructure. I'm not holding the code. Yeah, but if you're providing the infrastructure, how is it well, that's really stupid of you to say that. If you were like an It guy, you would understand. That's funny. I'm speaking English. It is my native tongue. Try again. City show. Here's the thing, my man. Go ahead, hit the little mute button. I muted you for a second there. You can unmute yourself. Well, that's the thing about custody behavior. Like in these democratic spaces where everyone can vote their opinion, there is always our it's not democratic. We're having a party. We love to talk bitcoin, we love to meet new friends. Same thing. But the warm welcoming from the Pub Lord was like really unnecessary. Whoa. It wasn't Puppy. It was TC. Man, puppy has been quiet. This is TC. I like to mute people when it gets out of hand. Sometimes it's as simple as just something absurd has been said. I haven't said a word yet today, but what's up, Pubby? How are you doing? I'm doing good, man. We're off to another rousing start like we were yesterday. Yeah, goers. I really do want to know truthfully. Please. How is you hosting a service, self custody, for anyone? Because you own the root privileges to that server. So it means you are the only person who is in charge of that instance. So whatever happens with that instance is up to you. I'm not managing how do I know you don't have the root credentials? Well, it means like, if you're running a route and you can check out the ch root group, you can only see that you are the only user in that. Right, but if you set it up, how do I know you don't have the same credentials? I don't have the credentials because when you spin up the template of the OS, for example, Linux instance, or whatsoever, you are the only person who can access the server and manage it on the root level. Wait, so you're creating software that other people host themselves? No, the software has been already created by the community. Of course it's open source. You can check it out. Go on to Btcpaserver.org. I know. BTC pay server. I'm familiar with BTC pay server. Yeah, to promote a bitcoin and to teach people how they can manage their own funds. What part are you hosting? That's the only part I'm trying to understand. I'm just hosting the machine like CPU Ram and the storage space. That's it? Yeah. So how is it self custody? Well, self custody is because you're going to have a ledger wallet being connected with the BTC based server. So you're going to think, no, run away. Anybody that's in public, in the audience, listening, don't do that. That's a bad idea. Why not? Because you're trusting a third party, and that goes against the whole self custody thing that PC is trying to point out. Well, if you're going to host your own BTC based server on your computer, on your home network, if you think that's really smart from the security perspective, I'll go ahead, my friend. Once when you wake up with some Chinese IP address on your Zix or router because your telcos are not updating their boxes and you lose your so I have to trust you. No, you're trusting the tier three data center level of security and their architecture behind. Okay, so I have to trust someone, though. Well, are you not trusting, satoshi Nakamoto, that there is no American government, there are no private keys, like of the majority of the bitcoin network? Maybe the feds? Do you think they have the master key to shah 256? Do you really think that the banks have allowed bitcoin to exist and to convert? Bitcoin needs permission from the bank, okay? I mean, you can swap pictures of a hotel. The banks have to give permission, or the government has to give permission to bitcoin. Is bitcoin asking permission? Well, you can exchange and swap the pictures of hot ladies with your friends. No one forbids them. All right? This guy is not serious. Puppy. I don't know what to say. There it is again. Why is it two days in a row, man? They just come in from everywhere now. Wait, what about here's the advantage of toju you know what the funny thing is? You're treating bitcoin as I treat the IPV four layer, or IPV six, with SSL encryption only. It's a better way to encrypt it, and it's another layer on the network. You're just talking about the network infrastructure, and you make belief like value. Oh, we believe in God. We believe in bitcoin. Well, it's okay now. It's 16 grand bitcoin to the moon. 100,000, 1 million. It's a perceived value. I'm not against it. I'm just saying I'm dealing with bitcoin as a technology. You brought the server, man. Listen, what you're offering up is centralized, dude. I would rather centralize. You said yourself I have to trust the data center provider and their equipment and their good faith, and that is completely against the tenets of bitcoin. Don't you get it? Do we need to draw it up on a little board so you can get it? No. You can take your computer and you can put it in the living room. Or you can take your computer and put it in, like, your basement. Or you can take your computer and put it in your neighbor's house. Or you can take your computer and put it in a cloud or so you could just do either of those and just keep your fucking seat phrase in a place that no one's going to find. The stamped like titanium. And then that's your fucking bitcoin. You don't need to fucking put it anywhere else other than a place where you have it. I'm saying you can run a lightning note and you don't have to use the same bitcoin address to receive the funds, but still, you're going to have to allow the technology and instruments of trade to exist somewhere. I say only that's better if you have a root privileges on your own box. Are you new to bitcoin? Are you an It guy that just found out about Bitcoin, like, a year ago? Don't be ridiculous. Come on. Oh, so you're Satoshi's son. Okay, I get it. No, I'm a Commodore 64 guy and like, Cube Basic, literally before the 90s, so you can speak whatever you want to enter. A piece of shit. You sound like someone that gets very technically well versed, but it has no idea of bitcoin and how it works and the philosophy behind it. I know that only if you want to receive the bitcoin for your services. Downloadable digital products. I'm not saying about the physical goods because it's stupid. ",timestamp:"00:07:11-00:16:55",topics:["Difficulty Adjustments","bitcoin payment"],type:"twitter_space",weight:25.58466473425889},{boost:0,date:null,description:"Governments attack on Bitcoin and anonymity",episode_title:"Café ₿: #Bitcoin News & Trusted P2P Reviews w/ @Apollosats",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@FossGregfoss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"09913e9b-38dc-4465-9d4d-ae0c9ba9eeca",twitter_handle:"Fuckkkk"},{name:"@w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"b178b239-3b18-4a16-9d43-c5d15ba6f7f4",twitter_handle:"w_s_bitcoin"},{name:"@NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"4b6997e1-ce0b-4a1d-90e7-dbaccef4b783",twitter_handle:"NeilJacobs"},{name:"@brandon_gentile",profile_picture:"https://pbs.twimg.com/profile_images/1561369452284895236/-8WgdwEm_400x400.jpg",ref_id:"f940c5e8-4808-4197-a38f-3f19d311a7ad",twitter_handle:"brandon_gentile"},{name:"@apollosats",profile_picture:"https://pbs.twimg.com/profile_images/1576946734927794176/2ail9FoU_400x400.jpg",ref_id:"74f4280f-5fdb-4bbc-aee2-a2ed32d64372",twitter_handle:"apollosats"},{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7cf57bdb-c905-46e3-a7e5-4c0bfd4f8d04/71c08fae-cce8-4600-ab9e-758420e78dcf.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"75ac478b-3dfa-45a8-9fa0-cebaacccfc05",show_title:"Swan.com",text:"if you're from anywhere in the world, the same logic applies. It's starting in the EU. But don't be surprised when the same type of Draconian laws and the rules that they're trying to implement around Bitcoin spread around the rest of the world. Because the legacy system is losing, right? They've already lost. They just haven't realized it yet. And so once they start to realize it, we all want them to surrender and to adopt this new standard which will bring about peace and prosperity to the entire world. But it's very likely they won't, and they'll go down kicking and screaming, and when they do, they're going to try to claw back as much power as possible that they've lost. And in an attempt to do so, they're going to make it very difficult for you to acquire bitcoin, most likely. So it's kind of now or never. Like, you don't have much longer to build your stack and take it into self custody, at least not to do it easily. It's a exit. Lagarde talked about this, Madame Lazard, where she was like, there can be no exit, basically, because if there's an exit, they can escape or control the lizard people system. It just feels a lot like the Drowning Man, you know, grasping anything they can and that will end up being just keeps feeling like that. What cracks me about this is that a lot of this kind of stuff was basically in the yea zone two years ago. Like, all this was, like total conspiracy tinfoil hat shit. But as it turns out, it's all real. Those conspiracy theorist guys were right. You know, what happens over time is that overturn window shifts little by little. And the stuff that people used to say, wow, that's crazy. You know who says it's crazy? The lizard people. Because they want you to think that the people who are calling them out for their crazy are crazy. That's called gas lighting. Doesn't help when you keep calling them lizard people. But no, I totally agree. I do that on purpose because I know it triggers the fuck out of people, and I don't care. How does Europe get there in the first place? Just what platitudes over principles? First principles? I guess just in the last decade or two of energy policies. I mean, my gosh. Neil Jacobs, you've been very quiet this morning. You have anything? Thoughts? No. Stage camper. Hey, guys. He is there? No, I had to shut my door. I had to shut my door in my office. What's up? What's going on in your world, Neil? Nothing, just listening in, keeping up with all the bitcoin news. I find it really interesting that there was that Reuters story about prosecutors at the Justice Department saying that they have enough evidence to criminally charge Czech. Yeah. So you haven't seen this? I heard a rumor. I didn't see it. Tell us what you tell us. Well, basically, they've been investigating finance since 2018. So this isn't a new thing, just that they violated certain anti money laundering laws. And there's a lot of conspiracies, obviously, on Twitter of why it was leaked. Now, apparently the prosecutors at the Justice Department are kind of split on whether they should file criminal charges or not, and there's prosecutors who think there's plenty of evidence to do so. So maybe there's some disgruntled prosecutors who wanted to get the message out. And there's a Reuters story on it. I could find it and pin it. This is binance us only. Correct? I don't know if it goes back, it doesn't have to be by 2018? I don't think so, because I don't think Finance US existed in 2018. Yeah, that's just it. That's what a lot of people a lot of people may assume that for the US to have jurisdictional authority over an entity, it has to be a United States company. That's not true. As far as the US is concerned, us regulators have been doing this for a while. They basically said, if what you're doing interfaces with US citizens, we have jurisdiction. Right. Even if you're in another country. Now, again, the question becomes, well, how do you enforce extra jurisdictional authority? Well, the US figured out how to do it because they weaponized the US dollar to do it, and that's the reason they were able to get away with nonsense. So when other countries try to do it, can they do it? I don't know. That ultimately comes down to cooperation. Right? So if one country goes to another and says, hey, you have a guy we think is a criminal, hand him over, that's called an extradition agreement. They have to agree to do that where the US has just gotten so used to beating up the whole world with the US dollar stick, you don't comply, we're just going to turn off your US dollar payment rails and then you're screwed. So I pinned the Reuters article at the top if anyone wants to read it, find out a little more details. Yeah, it's fascinating. The question to me becomes, are they going to be able to find him? That's a good point. I just heard a lot of people saying, oh, they're thinking about charging him, why not SBF? It's like this investigation has been going on for four years, so you could say the timing is curious, for sure. I don't know if there's some conspiracy here. I don't know, man. I learned a long time ago, I used to second guess my suspicions. And then I learned from Jim Rickards, there's no such thing as a coincidence. At least that's what they're taught. Like intel officers respect the coincidence. Because if there's a coincidence, there's a chance there's something there. And then the other side of that is growing up in the hood, I suspect everything. Brandon knows what I'm talking about. It's not necessarily a bad thing. It's a crucible, baby. It's crucible 100%. If you put it in the crucible and you love on fire and you burn it and you purify it and it turns out it was bullshit, great. But if it turns out it was something, well, then, hey, sometimes people don't like it. When I talk about stuff that's getting into that yeastone window. I get taddled on. I feel a separate spaces eventually, alex is that what you're saying? No, it's not what I'm saying. Cory gives me pretty wide latitude. I mean, he mentions to me when I get tattled on, but he doesn't tell me to stop talking about what I'm talking about. You do a job threading the needle. Well, okay, so here's where I draw the line. I don't want to hurt Bitcoin and I don't want to hurt Swan. So if there's something that's potentially going to be damaging to bitcoin or Swan, I probably won't go there. But as you well know, there's lots of stuff that in that gray zone. Over the target, sir. See, that's what I'm saying. If it's over the target, then why not? To me, that's fair game. Because this is what I think. This is just my opinion. Some of you may think I'm crazy and not like this, and that's okay. I think the lizard people already look at it like they're at war. It's just we haven't figured that out yet, and they're not playing by the same rules. Until we accept that as reality, we're going to be on the back foot the entire time. Well, you're spot on in my opinion, because Greg touched on this earlier, right? It's we are what the 300 billion market cap. It's a rounding error, and we're that small subset of society. I rate transient minority that's feeling that way and understand that so few people get that. I think we get that. And then, like you said, the lizard people get that. But eventually, as we know, bitcoin changes you. And more and more people, as they come into the space, as we've all seen as bitcoins all changed us, they start thinking more like us. And it's the number responsibility go up technologies, as Vesky says. So people start coming into our thinking and into exactly what you're saying. Alex well, it's not really even our thinking, I don't think being responsible is like a tribal thing. It's just good for humanity, full stop. There's nothing wrong with that. Correct? Rob Salt. And good morning. I suppose you have something to add to this. Yeah, what I was wondering is the conversation seems to constantly get brought up of how anonymous are we on bitcoin and they're going to be coming after it and this and that, and I just think to myself, how many options are there to be anonymous on bitcoin? Is that really even a thing? Because last time I checked this ledger system, it's both a big net positive and a huge net negative as well. So the ledger system, it's almost like the perfect way to be having money of the future that is governed money. It's like being sovereign. It's not going to be the first ten years of adoption in bitcoin. Seems being sovereign is going to be about 50 years down the line when we're in a hyper bikinize world. If that does happen, a game theory out in my mind, it's almost going to be used against bitcoiners, it seems like, in the very beginning. And I think they're starting to realize that that this ledger. So it's like the best thing, if you want to really onboard bitcoin and you want bitcoin to get adopted, the best thing you can do is get rich in a legal way. I'm just being dead point blank serious about it. There's so much I hate, man. I got my .2 bitcoin in cold storage and I got it non KYC. It's like, no, the best way to get this to adopt is to become a multimillionaire, get rich and do it in a legal way and pay your taxes on it, be smart about it. There's ways to build corporations, there's ways to do things in a smart and efficient way, but more bitcoinners need to get filthy fucking rich. And I hate to be like the guy, the bearer of bad news, but that just is what needs to happen for it to get adopted, it seems like. Because this whole non KYC stuff, I don't think it's going to cut it. I think it's going to get used against them. So I don't know, it's kind of what my it might. Sure it might. But the question becomes, how enforceable is it? That's really the argument. I don't think there's a question that there are tools you can use for privacy in bitcoin. It's so what rob said, like, will the privacy be used against people? I don't know. The exchanges that we bought our bitcoin from, I know there's going to be some select few that were in very early from mining and things like that. But for the majority of the exchanges you bought the bitcoin from whether it's cash app, whether it's swan, whether it's coinbase, wherever it's from, if they come to your exchange and they say, hey, we are now legally requiring and they probably already have done this. Someone can correct me if I'm wrong and say we need their Social Security number of every single person that has bought Bitcoin from your exchange. Yeah, sure, Rob, but I mean, that's the beginning of a pathway that potentially leads into the mist and disappears. Like, you're right, KYC exchanges. And you know what? The exchanges have been warned for a long time that eventually they're going to have to give up their customer lists. Right? But when I'm talking about privacy tools in Bitcoin, what I'm saying is there are ways to break all of those links and the question then becomes, if you choose to break those links, what then happens on the other side of that? We could go ahead and then we'll go TC yeah, so a couple of points here I agree with Rob. Like, I think, first of all, if you're trying to come in into Bitcoin in size, non KYC is not an option. I mean, go try and buy a million dollars with a Bitcoin. Non KYC ain't going to happen. And even if you're able to find a buyer, a peer to peer or seller, rather peer to peer seller, you're still trying to leave the legacy system with a million dollars. You don't think they're going to fucking know when you take that million dollars out of the system and then transfer it. That's just crazy talk. And then number two, in terms of privacy, this is something I used to be pretty worried about, but I'm honestly not worried about it at all anymore. I'm very bullish on Fedramps. We have yet to see if they actually play out and work the way that we're being told they're going to work. But if they do, we're talking about fucking perfect privacy. We're talking about us setting up the Cafe Fediment, which we obviously will do, right? I mean, Alex will be a guardian, aunt's going to be a guardian, so we're going to have trusted second parties. These are people that we know we've met in person because we went to Pacific Bitcoin. They're trusted second parties. Guardian setting up a guardian system, multistic system, protecting all of our Bitcoin. And then guess what we can do inside of that mint. We can fucking transact with each other with perfect privacy and nobody can see when we pass SATS back and forth, which, by the way, will be instant and free because you know how we do on Cafe Bitcoin. I'm not worried about the privacy aspect of it at all. I think the tools are going to be coming soon and I'm hopeful that they're going to work as advertised. And anyone who's going to try to track what we're doing are going to find themselves kind of at a loss once these tools come online and we have these second layers that allow us to basically fucking put the big old middle finger up to one. We got about four minutes to finish up on this topic and they're going to be introducing a featured guest here. So let's TC, what are you thinking? Okay, I'll just keep it to the one point. I was going to make two points, but my point is really, I disagree wholeheartedly with what Rob is saying. The public nature of the bitcoin blockchain is an absolute feature and it's not a bug and it's not a problem. Part of the reason that this system actually works for a new global monetary system is the fact that anybody can audit it. The fact that if I do a transaction with you and we don't know each other and you're on the other side of the planet, you have just as much visibility over that as I do. These are absolutely essential, non negotiable features of bitcoin. And that being said, you have to keep in mind, too, that there's a real distinction between the information that's outside of bitcoin and the information that's actually inside bitcoin. There's no names or addresses or phone numbers or email addresses or photos of your face on the bitcoin network. You have to keep in mind that there's a really clear distinction between what's on chain and what's outside of that. And then the last thing I'll say is that just even if somebody knows what you have or what transactions you make, there's a big leap between that and what any potential consequences might be, both from the point of view of laws and regulations and anything you may or may not have done wrong. And then exactly what Alex said, which is the enforceability of all of this. So I think, Rob, you did a great job scaring a bunch of people. I wanted to kind of counter that and remind people that this is not a problem or a bug or something broken. Just to be clear, I said people need to get wealthy in a legal way so they can legally own large amounts of people need to take their money that they earn and they need to save it in the right format so that it actually is theirs and it actually has some purchasing power in the future. This is not about everybody needs to be a millionaire right now. That's not the right message. Yeah, I would like more bitcoinner to be millions. I definitely stand by exactly with what I said. More bitcoinners do need to be millionaires. That'd be a great thing. More bitcoinners do need to own businesses in a legal way. That'd be a great thing. Less bitcoiners need to be sitting there with non KYC bitcoin and being excited about it. Even if bitcoin goes to 10 million, a lot of bitcoinners still won't be rich. And they'll think they're rich in their mind because they have 0.1 bitcoin non KYC fiat. This is such a Fiat mindframe. This is garbage, dude. Where are you talking about? Decent? Okay, let me say it in a nicer way. What are you saying to a person that works hard? Maybe they have two jobs and they're just paying their bills and they're just getting by and they are diligently stacking SATS and saving, and you come to them and say they need to be a millionaire. What does that do for them? What's the actual point there? Okay, you guys are talking past each other. You're both right. Relax. I understand both of your points of view. I get it. There's a place for both of you in the world. You're both correct. Let's leave it at that. There's no point in we don't have time to cage match. Like, if we had another 20 minutes in the show, I'd be like, Go for it. But we need to move on here. We could go yeah, I'm just going to wrap a bow on this. We're all going to be Fiat Millionaires at some point in the future. It's not a matter of if, but when. Right? But the thing is, that million dollars is going to buy you a fucking gallon of milk because it won't matter anymore. You've all seen that cartoon where it's, like, showing the different stages, like, decade over decade of bitcoin, and it's like Fiat Millionaire on the left and then bitcoin on the right. And as each decade progresses, the millionaire gets poorer and poorer until the end, when they're living in a beat down house with broken windows and shit. And then that bitcoin on the right is living in the castle at the end. I mean, that's basically where we're headed. Fiat on the left and bitcoin on the right. With Fiat, a million dollars is constantly getting devalued, debased, and eventually will be worth fucking nothing. So I'm going to be millionaires eventually, I won't get a million bucks and instantly turn it into bitcoin today. Yeah, exactly. I love that. Meme, like, at the end of it, it's like I heard he's a bitcoiner there's another one with a bubble. It's a bubble. It's a bubble. It's a bubble. And in the end, he's like living in a dome with a whole beautiful existence inside. It's a bubble. Yes, it is a bubble. ",timestamp:"01:26:29-01:46:21",topics:["Anonymity"],type:"twitter_space",weight:10.214787483215332},{boost:0,date:1671644776,description:"Thoughts on how Bitcoin may evolve over the coming years and would have a high price",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/885fe09b-bb21-49a5-8667-3c73ed36918f/196dc1e8-c7a4-4dc7-902f-d00107aefb42.mp3",node_type:"clip",pub_key:"0372cd0c8469f2034336a243e018d4d60e07efef8e7d10417807da1173bd5b002f",ref_id:"ee9d0400-3d38-46f6-9741-f99864e86ed4",show_title:"Geyser 🌊",text:"is Christopher from bridge to bitcoin. Hi guys. How is everyone this evening? Good to be here. Great to join you guys in your space. So thanks for setting this up. Mick, apologies for joining late. So apologies if I go over ground that you've already talked about out. Oh, no, don't worry. Sorry for tagging you last minute. No worries. Thanks for tagging. It's been great to speak with Connet. And also I just want to bring it back. Well, actually, I'll start off by saying congratulations on getting 30 projects listed this week on Geyser. That's fantastic. That's really great. And just to resonate with what Connett was saying in terms of things get built in a bear market, I think it's fantastic. And you guys are really promoting it. So thank you for everything that you and the Geyser team are doing, helping people, or Bitcoin is build in this bear market. Because for me, for the rest of the team, it's really important that we build foundations now so we're ready as the ball comes out. It's fantastic to see. So for those who don't know about bridge, for those who don't know about bridge to bitcoin, we onboard merchants to accept bitcoin payments. And we received a grant from Geyser early this year. I'm ashamed to say we haven't yet, and it's been on our to do list for weeks, months, to put up a project, a crowdfunding project on Geyser. And we should really do that soon. But, yeah, we'll get that. It's definitely on our to do list. So we hope to do that soon, especially now, as you say, Nick, the ease of putting up a lightning address. And that makes it so easy, as Joe Nakamoto tweeted about earlier this week. So we shall definitely get on to that. But I just want to go back on what I heard Mateo from Orange Pellet talking about, because he dropped off the call now. I think he has. That's a shame. But I really resonate with what he was saying in terms of how. For. Us, onboarding merchants is one of the cornerstones of Bitcoin success, certainly from my perspective, and making the user interface really easy is really important. I sort of resonate with what Mate was saying in that I think most people are currently not fussed about decentralization, they're not fussed about privacy. We as Bitcoin as are, we get it, we've been down the rabbit hole. But most of the society, they want convenience, they want ease. And that's unfortunately why I think CBDCs are going to hit hard, because people won't do their homework, they won't do their research, people are going to welcome it with open arms, unfortunately. So for me, merchant adoption is really important and introducing that in a way that's really easy. So the way we do that for Bridget to Bitcoin, ironically, it's not Bitcoin that we're selling merchants. For us, it's about creating additional revenue for them by saying, oh, hi, guys. Hi, merchants. What we're going to do is we're going to create a new customer base for you called Bitcoinners, and they're going to come and spend their currency for at your shop service and it's going to create additional revenue. And so for me, it's a slow orange bill, because what happens is a lot of these merchants get bitcoin is coming and using their services or buying their products, and we as Bitcoin as we're fantastic customers. We're so enthusiastic. We travel miles, we buy stuff from all over the globe, we get it shipped over, because you as a Bitcoin business, we want to support you. But if you're new to Bitcoin as a merchant, you kind of get overwhelmed quite quickly with how much attention you get by accepting Bitcoin. And it's great, because what that happens, and what we've evidently seen is that those new merchants suddenly get this influx of bitcoiners and it leads them down the rabbit hole without us having to do anything. Because bitcoin is they make an impression because we're such happy people, especially in these economic times where everyone's feeling the pinch, we will go that extra mile, literally, to spend our bitcoin, to spend our SATS, and replace them. And we're happy about it. We're more than happy, we're enthusiastic. We're the best customers you could ever have. That's amazing. For me, it's kind of a cornerstone of how we can it's sort of a Trojan horse. Trojan horse orange pill. So we're going around to regular businesses so who don't even know about bitcoin, and that's what we're planning on next year. We're going to trade shows. We're just to speak to regular people. We've got no idea about bitcoin, and we're going to talk to them about this fantastic payment processing network called the lightning network. And bitcoin normally is quite late on in the conversation, actually, because as everyone, I think, on the call knows, the processing fees on the lightning network are next to zero. They're really cheap compared to what our fiat counterparts are charging. Plus we've got instant settlement, all those fantastic things. So we talk about it's really interesting. We talk about the payment rails. That lightning network is a payment rail and how better than it and eventually we get to the bitcoin piece. But, yeah, for me, it's about making their businesses more profitable, having additional revenue, and it's fantastic because you literally see them fall down the rabbit hole. So we had that recently with a small chain of pubs, just two pubs that we onboarded last month, I think it was last month or the month before. So this landlord, he owned two pubs and he was not a bitcoiner, and he was not interested in bitcoin. But when James, my partner, said, right, we can bring extra customers to your pub, they're called bitcoin as, and they will spend their currency, but it will create additional revenue, he was like, fine, okay, I'm not interested in bitcoin, but I am interested in additional revenue. So if they're going to come and spend their currency and I can give it to my local currency, great, because it's good for my business, I said, fantastic. Do you set them up with the bdcpa server or what is it that you guys do? We look at the plethora of solutions that are currently in the market, depending on how that particular business is structured. Depends on which solution we sign, post them towards. Generally, the smaller the business, the more options they have. As the business gets bigger and more complicated, it sort of narrows it down quite quickly. So as a one man band, as a mum and pop shop, with just maybe one or two employees, you could literally just have a wallet satoshi, especially if you're just a guy who runs a food truck, all you need is a wallet. Satoshi really, isn't it? Just sat that on your phone because it's you. But as the business gets bigger, it gets more complicated, because you might be looking at multiple employees, multistate. You might have a board of directors who want to have multistake and so on. Yeah, I was also thinking for, like, exchanging back from Landing to Fiat, how would you guys recommend they do that? So in the UK and Europe, you can use a service called Coin Corner, and we'll help you get set up with that. Outside of Europe, we're speaking to IBEX, so we love the IBEX team. IBEX are looking at coming over to Europe, so fingers crossed that hopefully they'll have that flipping service, as I call it, hopefully in 2023 at some point. So I think that we'll see more of this, because for us, what our push is, especially when we're going to the likes of Coin Corner and IBACs, what we're saying is it's really important for merchants at the moment, in these early days, that there is this ability for new businesses to flip into their local currency. But having said that, coming back to my story about the pub for this landlord, not interested in Bitcoin at all, and we said, that's fine from my perspective, I don't mind that because they're adding to the liquidity of the lightning network and the liquidity of Bitcoin because they're a new merchant. That's absolutely fine. That's great. Another business that gets bitcoin. That's fantastic. So we set him up in his first pub, put in place his point of sale devices, made sure his admin console was all set up and everything was fine. And then two weeks later, we went to his second pub. And bear in mind, we hadn't spoken to this landlord during those two weeks. So we set him up in his first pub so that all his transactions, all his sales that he was receiving, flipped instantly into the local currency. So he wasn't holding Bitcoin on his books or balance sheet. Not interested in bitcoin. Two weeks later, we go to his second pub to do the same again, put in place the hardware devices, set up his console, make sure he's happy with anything. He came up to us completely unprompted, and he said to myself and my colleague James, he said, Kristen James, at this pub, I'd like to hold the Bitcoin. I don't want to flip it into the local currency. And we said nothing. Bear in mind, two weeks beforehand, not interested in Bitcoin and just wanted Fiat currency. We said nothing to him in those two weeks. For me, that's a really good example of how Bitcoin is coming into the past have set him off on that rabbit hole journey. And for whatever reason, Bitcoin is coming in, as I say, being enthusiastic. He's obviously either spoken to Bitcoinrs or he's read up and he's realized that there's value. And that's why I say it's a really soft orange pill and it's really valuable because we're not having to orange pill individuals. It's almost an organic process and it's quite controversial, but I think that the way we orange pill individuals is wrong in so much. It's really resource heavy and it's quite cultish, isn't it? We come across as cultish very quickly. We meet new coiners or complete newbies, but this merchant adoption is a really soft orange pill Trojan horse. And that's why I say when we speak to the likes of IBEX, what we say is having that ability to flip, to offer that service, is really important to get our foot into the door for merchants currently. And then what we're finding is merchants are going, actually, I get bitcoin now, now I want some bitcoin. And so it's really interesting, I was just leaping that back to what Mate was saying in terms of how we need to make the interface easy and effectively smooth and almost non threatening, because the services we provide run alongside the current systems that merchants have. So at the moment, we're not replacing anything. So we come in and go, this is a bolt on for your service, for your product, for your shop. We literally bolt it on and it provides you additional revenue. And the same for Ecommerce, it's a plug in that just bolts on, you don't have to change anything, swap anything out, it's just an additional service that you can have to create additional revenue for your business. So, yeah, completely agree with Mateo. If we need to get the UX and the UI really smooth, make it really non threatening, really simple. So, yeah, I'd love for more projects to help with that, that would be fantastic. And then hopefully what we're seeing is they fall deeper and deeper down the rabbit hole really quickly and they turn into bitcoin really quickly. But. Yeah. Thanks, Mick. Thanks for everything that guys are doing. I'm loving oh my God, thank you, Chris. I'm loving the building that's going on. And we've also launched another business, actually, me and the team, and we take on a couple of other people and we're probably going to put this on Geyser as well. But we've launched and you've seen that, we've given you a cardmaker, laser Eyes cards. So if anyone on the basis is listening, check out Laserrise cards, send Twitter handle. They're essentially Bolt cards, but they're completely blank in terms of the electronics in them. And you can do what you like with them, so you can link them to your own node and your own wallet, or you can use a custodial service like Coin Corner, but there are risks, of course, because they're an exchange and so on. Get money off exchanges, yada, yada, yada. I won't go on about that. But you can do what you like with them. But the unique selling point is that you can have whatever images you like on your cards. And we've got a gallery on our website and they're called laser eyes cards because we put places on them. And the idea is when you tap on to make your payment, so they contact us, pick on debit cards, NFC cards. When you tap on the point of sale device, your eyes turn to laser. So we literally give you laser eyes. So we hope to be adding that to your crowdfunding project platform on guys as soon because we have a couple more products in the pipeline and we. Think, yeah, ",timestamp:"00:51:49-01:04:53",topics:["Bitcoin evolution"],type:"twitter_space",weight:24.426984779829223},{boost:0,date:1665946635,description:"Hodl, Ben and Evan's review of TABConf",episode_title:"TABConf Mixtape Vol 2: Sound Bites from TABConf",guests:[{name:"Michael",profile_picture:"https://pbs.twimg.com/profile_images/1558687629599657990/vf-bU14b_400x400.jpg",ref_id:"c7b4faa1-db77-4459-b03f-0e41e15efae7",twitter_handle:"MichaelHawaii"},{name:"Ben",profile_picture:"https://pbs.twimg.com/profile_images/1580596905721171969/0NnLeJWA_400x400.jpg",ref_id:"da0132b9-0d19-43e6-bc1a-9c7818c79ba4",twitter_handle:"benshapiro"},{name:"brandon",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"8a27da7a-c05c-44da-8247-3c5f68bc3164",twitter_handle:"ThrillerBitcoin"},{name:"shane",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"2e5ce678-7d04-4a48-8bd1-281329ea9424",twitter_handle:"ThrillerBitcoin"},{name:"exfrog",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"d0dc102c-404e-4753-9290-9a3fe27fe2ee",twitter_handle:"ThrillerBitcoin"},{name:"josh",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"34eb29e3-da86-485f-b20a-059f7d41f6ad",twitter_handle:"ThrillerBitcoin"},{name:"autumn",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"3224f2ec-3e77-485f-88b8-6930e19f8ac6",twitter_handle:"ThrillerBitcoin"},{name:"buck",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"00a55ec0-9b1a-482a-893a-345d350a33a0",twitter_handle:"ThrillerBitcoin"},{name:"stephen",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"9dc56711-eacc-4691-821e-fe2a26855ea9",twitter_handle:"ThrillerBitcoin"},{name:"hodl",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"b012eda0-b78c-46e7-ab46-6a7139584fc7",twitter_handle:"ThrillerBitcoin"},{name:"evan",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"9a8418e9-8976-425c-95ce-ed2fe307e380",twitter_handle:"ThrillerBitcoin"},{name:"muzz",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"444b8330-caa1-4bcf-8144-7d9110ae2242",twitter_handle:"ThrillerBitcoin"},{name:"thomas",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"e2140e58-314d-4425-bc97-20f52f951866",twitter_handle:"ThrillerBitcoin"},{name:"justin",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"2ce04090-b9b1-4e84-a87f-9c9dc9ececec",twitter_handle:"ThrillerBitcoin"},{name:"stakamoto",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"8b249d9b-8521-4e0e-bf24-2d8b8721d26b",twitter_handle:"ThrillerBitcoin"}],hosts:[{name:"ThrillerX",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"231d171e-06a4-4294-9cf2-6640e27429ea",twitter_handle:"ThrillerBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/4240c90e-0086-4ece-bfe5-84a282c5059e.jpg",keyword:!0,link:"https://2.gum.fm/op3.dev/e/pdst.fm/e/dts.podtrac.com/redirect.mp3/media.transistor.fm/82539eb6/c2b4aa1b.mp3",node_type:"clip",pub_key:"",ref_id:"821f7b5c-c6ad-422b-b4e1-ed34f915e4af",show_title:"Thriller Bitcoin",text:"a lot of fun. I very much appreciate you. Anything cool that you've seen here, like as far as the talks, because you're a bitcoin or, you know, all these things, what do you think has been like the most, most memorable thing that you've seen? Well, I mean, that's one of the unfortunate things is because I'm responsible for all five rooms, I only ever get to spend like moments making sure that the room is good before I have to go to the next room. So I got to see a bunch of like a little bit of a bunch of talks that I really wish I could have sat there and engaged in. The coolest thing I've seen so far was probably Andrew Polestra's codex thing, like making a paper computer at the end of yesterday's event in the Socratic village. It's a really neat, complicated thing. There were, like, 20 to 30 people in there with scissors, cutting out these things, putting them together that help you code and decode without a computer. It was really neat and very engaging, and it was like I don't often see events have engaging workshops that actually are well attended, like people who will sit down and focus and learn a thing for 3 hours. That's kind of what sets Tabcomp apart from every other conference I've done is people are actually here to do the thing, not just watch someone talk and then watch someone else talk. Yeah. Do you think there's room for both at the conferences? I think there very much is, and I think that's one of the things that this year at Tabcomp was kind of missing compared to last year is there's no real beginner track if you're not ready to dive into command line stuff. There's not really a whole lot, but the next gen village is doing a good job of getting, like, the younger kids involved and having content for that. I think we have too many conferences that project to the lowest common denominator that have the same speakers come giving kind of the same talks to the same audience a lot. And events like Tabcomp and BTC Plus are kind of not that they're really more about learning and doing and doing it in an environment of your peers and friends. Yeah, that's cool. Thanks for coming on the pod, man. Appreciate it. I appreciate everything you do, by the way. You too. I really love hanging out with you, man. Paul, do you want to be on my podcast? Sure. 40. What do you like about tapcom this year? It's just like last year, but more Tabcomp is, like, getting, like, a semester of Bitcoin education. Four days? Yeah. In four days. Does it feel like every day has gotten better? I feel like every day has gotten relatively better than the day past. It's almost like it's like steps. Yeah, I didn't know about that. I run out of room in my brain, so at some point I'm stopped learning. But, yeah, I've gone to so many good talks and learn so much from so many different angles. There's a really interesting theme this year about how lightning is totally broken. Really? Okay, tell me more. Macarola did a talk on lightning is broken, but we can fix it. And there's a lot of terrible news about problems with lightning. And there are things that these are problems that have been pretty well known that we basically need to work on and improve to make, basically, lightning. Right now, you basically want to trust your channel partner. There are things that your channel partner can do to make your life miserable. There's attacks that we know about that just don't happen a lot. Because it's a small community. But as we become like a big deal, either we're basically only going to have to make channel relationships, business relationships and just formalize that kind of way, or we're going to find more cipher punk ways to do this in kind of a bitcoin ethos because we'd like to be able to open up anonymous channels but it's just a little bit dangerous. So it's kind of this long to do list and it really kind of depends on who you talk to after that talk of how bummed they are versus how kind of exciting. You're kind of bumming me out right now. It's like it's sounding like it's a major thing, but if you think about it from an engineer perspective, right, any engineer, you start out a project, you have 100% problems, nothing works, right? And then you start fixing one problem at a time and you make it a little bit better. And maybe at some point you're 75%, you ship it, and then you keep on fixing problems and maybe new problems you didn't know about come up. You try to fix those. So from an engineering perspective, these are all things that we believe we can find, we hope we can find good solutions for. And everybody I talk to that is working on it is excited to work on these problems and wants to think deeply about them. So it's kind of an exciting talk to like, hey, let's not let's not hide. Let's not pretend like everything's perfect right now. Let's engage with the issues that we have. Like, lightning works really great right now for for what we're doing. It could just it could be a lot better, and we need to be aware of how it could be better and not just pretend that it's perfect right now. Yeah. What's the most memorable thing you've seen? Is it Ben Carmen? I love seeing Ben Carmen. I think Ben Carmen is the most memorable thing I've seen. This is such a beautiful site. I'm actually excited he's going to do, like, live coding. Oh, really? You're going to watch it? Yeah, I've hung out with him a million times, but I've never actually sat there and watched him code before. So he's going to be coding in like an hour. So I'm going to watch that. I actually got to watch Epic Coludus live. Yeah. That was awesome, right? Dude, everybody keeps bringing this up and this recording. Yeah, actually. I didn't know I would like it that much, but something happened to me, like in the middle of yesterday where I was like, maybe my head was starting to fill up with ideas. I was like, I want to sit down and start building something, I think something I'm going to try to talk to the organizers about. There's a lot of after parties. The last talk happens at 05:00 p.m.. People go to dinner. Then there's an after party, then there's another after party, but I'd like to have a quiet room to go after the last talk and just people are there with laptops building stuff because I don't like the idea that I'm still, like, two days away from having my laptop open and really coded. Speaking of Evan, I've been recording everybody for this mix tape that I'm doing, and everybody keeps saying your thing is, like, the most memorable thing here. What do you have to say about that? Well, first, I'm flattered, but I think there's much more epic things I've seen. I got a demo of Stratum V Two that's going to be super impactful, super important for decentralizing mining. So I think that's near the top of the list for me. Also really cool to see tony, Giorgio's, Ellen, spoit. Ellen. Ellen spoit has so much potential. The workshop was awesome. I was able to execute that attack that we saw last week on LNG nodes 15.1 and under. That was pretty awesome to compare. Yeah. Tony walked us through, like, hands on. We could do it on our own laptops. We set up a virtual lightning network, and we would steal funds from one of the nodes on that lightning network. Dude, that was sick. Do you see how many nervous people I saw some BCS in the room. They look nervous. Oh, yeah. I mean, listen, the thing is, we need to be doing these things now. Stuff like the Ellen Depog. We need to get that out of the way now before it becomes, like, a headline on New York Times, Financial Times next time that happens. Right. And, yeah, we need tools like L and Spoid to, like, you know, see how things hold up and find where things break. So I'm looking forward to more exploits being released. I think it's an excellent foundation, and I hope more people try to break Ln and contribute to Ellen spoiled. Do you think Ben's going to break Ln? I'm not breaking. Or is it going to help? I'm helping lightning, making lightning more private. Carmen, how's your tab comp? It's been great. Best tab comp ever. Better than last year, I think. So we got more people here. Workshops have been really good. Talks have been really good. More of my friends are here. You're here. Thank you, Ben. Yeah, it's been really good. I've had a lot of fun. It's got out of the attacking lightning panel. That was phenomenal. So Paul was saying yeah, it was really good. Probably going to have to turn off my lightning note eventually. This is terrifying. Really? Not really, but how do we fix it? Just talk about it? Well, talking doesn't actually do anything. We have to write code. But a lot of it's, like, research as well. It's like, we just know there's problems and we have ideas of solutions, but not like, oh, this is a real fix. It's like, oh, this is an approximation of a fix. So we're just still a lot of research to do by always smart people, hopefully to figure out better mitigations and solutions to these problems. But I'm not going to be able to do it. But smarter people than me are working on it, thankfully. Thank you guys for coming on the pod. I appreciate you all. ",timestamp:"00:50:17-01:00:04",topics:["TABConf","Bitcoin community"],type:"podcast",weight:9.932519761232543},{boost:0,date:null,description:"Introducing the Start9 sovereign computing model",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"700e8ab8-7cc3-476c-87ea-524081f2322c",show_title:"Swan.com",text:"right, Matt. Well, thanks for joining us. Very excited to be talking to you guys about what you're doing. I know there's a bunch of swans who have ordered stuff from you guys, and it's pretty fascinating. So for those people who don't know what Star Nine is, if you don't mind, would you give, like, a five minute summary on what start Nine is, what are you guys doing? Why are you doing it? And then we'll start opening it up to whatever it is you guys are working on, and then we can do some Q and A, if you like. Yeah, sounds good. So we are, in the broadest sense, a computer company. And our goal as a company is to make self hosting software, open source software, accessible to everyone. And that might sound really boring right out of the gate, right? But when you understand what that means, and you understand that in the current model of computing, that basically your cell phone and your laptop, all these things that you call computers or devices, are really functioning as remote controls that are operating somebody else's computer somewhere else. And oftentimes the computer that you're operating most of the time, in fact, is owned and controlled by one of the Big Ten tech giants. Other times, it is just a small cloud computer that is hosted by the app that you happen to be using in that moment. So, for example, there might be a Notetaking app on your phone that is plugging into a server somewhere that is owned by two founders in a room running that server. And so every piece of information that you write in that Notepad, every time you use it, those signals are flowing through their servers. All the data is stored on their servers. And this scales all the way up to whenever you use Twitter, for instance, or Facebook or Google. Every piece of information is flowing through their servers. So all your communications are intermediated. You are never talking to somebody directly. You are always talking to somebody through a messenger. And that messenger very often has full access to everything you're saying, when you're saying it, et cetera. And secondly, all the data that is produced in those interactions, whether it's you storing a photo or you sending a message to somebody, all that data is likewise stored forever on those third party servers. And sort of how it's always been. When I say always, I mean since the second computing revolution, the cloud computing revolution took off about 20 years ago, give or take. This is just how it is and we've gotten very used to it and it's been very convenient of course has led to many conveniences and superpowers that people have to get more done in a day. But I forget who says this definitely Lornal Arcos in Red Rising but I'm sure somebody in the real world has said it as well. The bill comes due at the end of the meal so the bill is coming due. This wasn't free. It comes at enormous unforeseen costs that are just now starting to be felt and will continue to rise. And so we recognize this as a company, as individuals and we set out to kind of do something about it. And our solution to this is the solution to this which is a disintermediated computing paradigm where human beings and their computers are interacting with each other and those computers are interacting with other computers without the involvement of trusted central third parties. That doesn't mean it's PeerToPeer. It just means federation is okay too. Meaning I can run a server and people who trust me, who are close to me in my life can use my server to interact with each other. It's okay to trust people that you know and who have earned it. So we envision a computing paradigm where people are either communicating PeerToPeer or at least utilizing the servers of people that they trust. You know, members of families, the organization that you belong to, whatever it is. And in order to make that possible, for that computing paradigm to be possible at all it requires people to run their own servers. And I don't mean a server sitting in a bunker somewhere that you don't control. I mean a physical server that you have physical access to. It requires that. And secondly it requires you to be able to use that server. So it's not enough to just buy a Raspberry Pi and install Linux. The vast majority of people in the world are incapable or at least don't have the time and energy and patience to use that thing properly and in perpetuity. These things require enormous amounts of technical acumen. They require time, they require ongoing maintenance forever. It's not a set up and forget type of thing. And so what we have set out to do is provide the tools, namely in the form of an operating system that enables a totally non technical individual to set up and administer a physical personal server for the purpose. Of installing and running almost any variety of self hosted open source software under the sun and converting their computing life to a private one that excludes any trusted third parties. And we try to do this without compromise. It's an ongoing series of trade offs but we are really taking a purist approach to this and trying to do without compromise ultimately resulting in you. When you say without compromise what do you mean by that? I mean that to make anything functional. There's always this trade off between user experience, like making something super easy and convenient, and the principle underlying your purpose, which is to enforce privacy censorship resistance. It's the age old issue of security is basically it's the exact opposite of convenience, right? Like you always have this battle going on between the two things where you're trying to protect your stuff, it just makes it less convenient. And finding the balance there is pretty tough. It's a hard it's a hard computer science problem. It is. And under certain paradigms of computing, like once you have accepted the cloud computing paradigm, this intermediated custodial computing paradigm, you're sort of bound to fail at the privacy and censorship resistance principles because it's. Not really you can't do it with that. You can't without an enormous injection of trust and oversight, which itself just raises costs and ultimately corrupts. Right? So the stance is that we got away with this for a while because it was young and new. It's like in a man. I don't know. There are also massive, massive honey pots for hackers, right? Like when you have these centralized databases full of everybody's information. How many times have we heard this story over the last ten years where even huge credit rating agencies that have hundreds of millions of people, hundreds of millions of records on people get hacked and everybody's information gets stolen and it's big problem. Yeah. The four costs that we talk about with the current computing paradigm are privacy, invasion of privacy, censorship, the security vulnerability that you just mentioned, which is that anything that is worth hacking will eventually be hacked. Period. That's an axiom. And lastly is cost because in order to try to preserve the things that consumers want, like privacy and censorship resistance, the costs forever rise because there's more and more middlemen, right? Security is just more and more layers. And so what's happening here is these tech giants and to be honest, some of the smaller software as a service providers as well, like I mentioned, the tiny little note taking app that's on your phone or something, their costs are rising. It is not a good business to be a service provider of information and data. That is a bad thesis. It was the thesis in Silicon Valley for the last few decades. It's what their bread and butter was, was this idea of, you know, give away some free software product and then just become an indispensable middle man, like to sit right in the middle of everyone's stuff and make them totally dependent on you and then eventually, someday we'll figure out how to see them. Which is the problem. It's what the problem we're facing with everything today. You're seeing it used as a method of control over the masses. A great example of this is Apple and the Apple Store, right? They're threatening to remove Twitter from the Apple store. You need their permission. They are the gatekeepers with the power. That is correct. Apple, as Quick Anecdote canceled our original app, right? Originally, we wrote an Android and iOS app that you would use to connect to your embassy. That is how you administered. Your server was through a native app for these platforms. And Apple shut us down. They told us that we can no longer release additional updates. They provided very little information or guidance. We appealed through multiple boards, and eventually they just said, you're out. And our response to that, I wrote up a huge blog post about this and posted it from my Twitter account and from the start, Nine Twitter account a couple of days ago, if anyone wants to read it. But our response was the proper one, which is what you do when any central authority, whether it's Apple or in a nation state, becomes sort of domineering in your life. You can't punch back. That's their game, right? You're not going to win through you're not going to beat politics with politics. You're not going to beat, you know, business through trying to compete with Apple, you have to opt out, right? This is the most powerful tool available to a club. It's the most powerful tool available to all of us is to simply stop feeding the beast, stop using the things that they offer. Don't fight them for better offerings. You don't go to Apple and say, hey, I want better privacy. Just stop using them. And when I say just, that's actually really hard, right? Like, it's not easy to go on strike and to opt out of these highly convenient systems that we've become largely dependent on. But that's our job. That's what we're doing in Star Nines. We are trying to give people the tools that enable them to opt out of these massive big data surveillance systems. And the good news is that it's not all or nothing. You don't have to, like, take the full plunge. It's not like this huge daunting thing. You just need to take that first step and then gradually, over the course of years, even move your digital life on to systems that you control or that someone in your family controls. And by doing this, not only will you be protecting yourself with minimal convenience loss, by the way, because what we have done is not some crazy, esoteric, inconvenient thing. It's for anyone who has and uses an embassy. You'll know, like, it's not that bad, and it's going to get better and better and better by the month. We're moving very fast and making it very convenient. But not only are you protecting yourself with minimal loss of convenience, but you are almost indirectly fighting back, right? It's a consequence. You're doing something that's in your own best selfish interest while simultaneously benefiting the world by starving out the beasts that are suffocating it. And that's a very powerful idea. In fact, we think it's so powerful that it's bound to happen. I do think that there are scenarios where we go through an enormous period of history where something like this does not come about, but so long as we and others and quite frankly, the whole Bitcoin space keeps pushing for these opt out abilities, which is what Bitcoin is, by the way. Bitcoin is this huge opt out technology for opting out of the fiat monetary system and it's a huge one. And we're just taking that same idea and be like, yo, opt out ",timestamp:"01:17:40-01:30:45",topics:["Start9 computing model","Cloud computing revolution","Computing paradigms","Opt-out technology"],type:"twitter_space",weight:9.312597274780273},{boost:0,date:1670878744,description:"Thoughts on Binance and CZ",episode_title:"Escaping $ Debasement With #Bitcoin",guests:[{name:"Joe Consorti",profile_picture:"https://pbs.twimg.com/profile_images/1596902707511664640/GYGWVDts_400x400.jpg",ref_id:"8d2024b2-03bb-454d-9bd6-bb121904b76a",twitter_handle:"JoeConsorti"},{name:"Nik Bhatia",profile_picture:"https://pbs.twimg.com/profile_images/1496241412580397058/s7jy5g3a_400x400.jpg",ref_id:"d76f4499-ccf6-4153-9bc1-257a580aa079",twitter_handle:"timevalueofbtc"},{name:"Sam Callahan",profile_picture:"https://pbs.twimg.com/profile_images/1592532728775409667/0DayEP2Q_400x400.jpg",ref_id:"5a044a91-8dee-421c-86dd-8c734dc9bc32",twitter_handle:"CallahanMusic_"},{name:"Brian De Mint",profile_picture:"https://pbs.twimg.com/profile_images/1546297674512470016/oEVF8rJQ_400x400.jpg",ref_id:"064e04f7-8320-4854-8325-0cc19cd7ff55",twitter_handle:"BrianTheMint"},{name:"Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1508157904913899522/3l7ctauV_400x400.jpg",ref_id:"283edea0-55cf-4245-95df-8d6d3dcb1851",twitter_handle:"DylanLeClair_"},{name:"@coryklippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"21aca21d-9a96-40a9-a8b8-a523ae6591c3",twitter_handle:"coryklippsten"},{name:"Matt C",profile_picture:"",ref_id:"337e3256-0602-4baf-a4b7-ca6d0655c569",twitter_handle:""}],hosts:[{name:"Bitcoin Magazine",profile_picture:"https://pbs.twimg.com/profile_images/1444022922377576453/AzvXYXGr_400x400.jpg",ref_id:"0e7b904e-5161-4aa8-9f0b-65bee6050ddd",twitter_handle:"BitcoinMagazine"},{name:"Chris Alaimo",profile_picture:"https://pbs.twimg.com/profile_images/1579209742370672646/rck7M_MR_400x400.jpg",ref_id:"3a1bd698-9d67-40e4-ba6d-3e2262b385ca",twitter_handle:"ChrisAlaimo6"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f3a55dda-3dd5-4f62-99c1-bab3a88c27c1.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/80ab6951-8961-4aad-a458-a397ed6fd3cf/88c750f6-7569-4f69-947c-d61a398c358c.mp3",node_type:"clip",pub_key:"02814a5050f43a36bb052c7a3f22f0e86700abe037a44d99b45e0cb424d9398cbf",ref_id:"ea039879-1342-42d9-92e1-1fd4b6561488",show_title:"Bitcoin Magazine",text:"You'Ve been all over the scams in 2022 and even before that. But I've posted a little bit today, and some people have said this is valuable. Some people have said you're just a paranoid floodster. But I've been posting a little bit today about finance BNB. If you take a peek at BNB and bitcoin terms to basically add all time highs, ten X in the span of week in 2021, and just for instance, right, like, I like to evaluate things in bitcoin terms in this industry, whether it's private valuations, public valuations, crypto tokens, right? And B. And B is worth 2.8 million bitcoin, which is certainly fascinating, right, given that it's a centralized fork of ethereum that finance spun up from nothing. They've arbitrarily halted the BNB chain multiple times. So thoughts on thoughts on CZ? Obviously, he's the main character now, which we've seen in crypto doesn't usually end well, I guess. Just give me your preliminary thoughts. Yeah, I mean, it won't end well eventually, one way or another. We don't know if it'll be some cataclysm or some kind of like, slow bleed just chipping away at regulation. And at the end of the day, the assets that are trading on this platform, finance aren't worth anything. So the trading infrastructure itself that only trades worthless assets isn't worth anything either. And I think that basically makes crypto trading platforms inherent value pretty much zero, other than whoever is still playing greater fool crypto gambling games on their platforms. So as long as that continues, maybe they can continue to extract value. But I don't think you can actually end up going public or monetizing this thing with some kind of exit through this sort of offshore distributed type thing. It's just easy getting rich basically, as long as you possibly can and trying to keep the window open as long as possible. I 100% agree with you on BNB. Obviously, this is company script. It's you know, he can pause the validators at any time. I think he, you know, if he wants to replace one of these guys on the, on the zoom calls at any moment, he can do it really easily. And there aren't that many of them, and they collude and cooperate, obviously, so nothing decentralized about that. Yeah, it's just weird. People betting on B and B is just kind of being long CZ and jumping on trades that he's also long. Kind of just betting on this guy to be smarter than the other people betting on him to be. The smartest guy in the room. Which is the same trade that 100 crypto funds NVCs have had on Sam bank and Creed for the last couple of years, which is just basically belong anything Sam's involved in. Because Even if it's a total scam and even if it's total bullshit. He's so smart that if you just pile into the same trade and ape him, then you'll probably do well. Right? And that's what so many of these people did. It was kind of like the new version of the GBTC ARB trade, which everybody piled into in 2000 and 22,021 and then got burned and led to this next brainless move of just going along salana and salana ecosystem crap. And, you know, it's just not a lot of independent thought. And nor would you expect there to be much, because when it comes to crypto, folks like these are people that have chosen to spend their life's work on something worthless. So I'm not sure why you would have high expectations for them. So, Matt, I see you have your hand up. Corey, I just want to add one thing to the combo and then would love to hear your thoughts on Matt. I can't confirm this, but heard from an extremely reliable source over the weekend, just kind of on your GBTC thread a little bit and waiting for confirmation on this. Decided. I haven't posted this officially on Twitter, but hearing from the extremely reliable source, heard that Alameda was actually very much involved in the GBTC trade of Genesis. Posted to Genesis, borrow more, lever up long the GBTC discount premium with leverage essentially, apparently, according to the source, who will remain nameless, but definitely very much in the know in terms of all of this happening in the industry. Very connected person. Told me that DCG executives were actually going around and this is in 2000 and 22,021 were actually going around and pitching these three Arrows capital and now meters of the world and everyone else to go do this trade, this leveraged circle jerk with DCG entities of buying the bitcoin or sending dollars to DCG. I can be a source for that. This was active and very heavily promoted. Everybody was doing it back in 2021. Buy a bunch of bitcoin or even just send cash and they would just convert it into bitcoin for you. And then remember, it used to be a one year lock up. And then when they started really wanting to push it, they changed it to a six month lock up. And that's when the flood really came. And this is where all the BlockFi yield was coming from because it doesn't matter what asset it was like, let's say that you could get, you know, essentially like risk free 20 or 30% on this GBTC premium. You can double that out a bunch of different ways. Even if it started to drop a little bit, even if your expectation was six or eight, you could still pay like 10% on stables and consider three or 4% to be like customer acquisition costs, like marketing costs, and still have some left over to pay some yield on that. But at the end of the day, all this is is something that is illegal in traditional finance, which is funding institutional trading and leverage with retail deposits. It's not something that you can do. It's not something you can get away with. So it's funny Sam Bankman Freed even tweeted out in the wake of the Celsius collapse in June that Instow to Instow loans are fine because both are sophisticated, but retail lending to Enstow is shady. Well, at the same time, of course, doing exactly that in a slightly murkier way. Yeah, I think it's interesting to see the pattern. And maybe this is just trying to frame a lot of these industry participants under the same light, and maybe CZ or other actors are more legitimate. But it's interesting, the same kind of like position of strength kind of shoot down on some industry players say this is a poor risk model. It's like position of weakness and act really, really strong. Right? We've seen this happen over and over and over again. And in the reality, none of these guys were all that sophisticated and they were just levered to the tips in various ways and various carry trades that blew up in their face. The other funny thing was this thread that came out yesterday or the day before, and obviously I think it was Rom he's like crypto CFA or something like that, and I retweeted him and tweeted a couple of his things out over the last week. But basically just sniffing out and putting together that Alameda was probably made money at first when the only people on FTX were relatively unsophisticated or small fish, basically. And then when the big guys came, the smarter guys that were way smarter than people with 18 months of junior experience at James Street, or someone who looks and talks like Caroline and everybody on math or whatever, like when real shops came and started trading on FTX, they just started ripping Alameda's face off. And I verified with multiple funds that they were duplicating. The strategy that I tweeted out about, basically just at closing, there was some kind of like rebalancing or refunding of these leverage tokens that existed on FTT. And one guy made 50 X on his money in a year or something like that, and lots of other people were on that trade. I guess at least a few people have pointed to CMS Holdings as having really ripped the face off of Alameda for the last few years, basically doing this, and lots of other people learned how to do it too. It just really wasn't that complicated. So I think that thesis of this guy basically wasn't nearly as smart as people thought. Not some kind of like super genius, obviously just losing money. And the reason that he started getting into retail. As long as people were dumb enough to go along with this theory of FTX equity is valuable and FTT token is valuable. And all this other stuff the move into retail, like sponsoring the arenas and buying blockfolio and sponsoring Pomp and all this other stuff was really just to try to get into a position where they could take fees off of people. Because this is Ben Hunt. Excellent theory. Talking about this a lot too, in the last few days that you want to be in the flows, right? You don't want to be in directional bets at some point. So it's just like this houdini escape attempt to try somehow to get into the retail business where low end people will eat fees and build this big financial institution that's kind of more retail focused since they obviously couldn't make money trading. ",timestamp:"00:08:42-00:19:36",topics:["Binance BNB","Changpeng Zhao","Alameda Research","bnb"],type:"twitter_space",weight:17.912974381160645},{boost:0,date:null,description:"Brad Mills explains his stance that Stackchain is a shitcoin",episode_title:"Café ₿: Bitcoin Lightning ⚡️ Q&A w/ Bobby & Paul From Voltage!",guests:[{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:" Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"560cf9ee-2844-4ced-bbfd-d0ec639b2177",twitter_handle:"CitizenBitcoin"},{name:" Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1307109108127019008/rPNj47yJ_400x400.jpg",ref_id:"4f4f53c7-5a3a-46df-b334-9951fe38dc96",twitter_handle:"realjeffreyross"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" q_liketheletter",profile_picture:"https://pbs.twimg.com/profile_images/1560683048680665088/4MrHM_UY_400x400.jpg",ref_id:"d82c0d30-d0d3-4947-a358-d28f1cd5292e",twitter_handle:"q_liketheletter"},{name:" iBobbyShell",profile_picture:"https://pbs.twimg.com/profile_images/1583132979571920896/1Std3_ya_400x400.jpg",ref_id:"2f9bd0a3-1215-4a89-9dc6-d64f170961af",twitter_handle:"iBobbyShell"},{name:" Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"ac43b4f0-9056-4a6b-9d30-4a6250405ade",twitter_handle:"ToneVays"},{name:" sonofsats",profile_picture:"https://pbs.twimg.com/profile_images/1593080311000211456/Dr_NQ9Iw_400x400.jpg",ref_id:"d584f070-a66a-4b53-b15a-8142f8daea66",twitter_handle:"sonofsats"},{name:" futurepaul",profile_picture:"https://pbs.twimg.com/profile_images/1508452962917666821/1QheRD09_400x400.jpg",ref_id:"fcb50ec8-2669-47da-87b9-1702affb30c9",twitter_handle:"futurepaul"},{name:" Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"a2ba4e1e-aab7-43b0-90d7-d3c6a9738ad0",twitter_handle:"FossGregfoss"},{name:" Brad Mills",profile_picture:"https://pbs.twimg.com/profile_images/1541955880752750592/XJqwIn2E_400x400.jpg",ref_id:"9a49201c-3b03-4a83-bcb8-d92dbf3d55b6",twitter_handle:"bradmillscan"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ad62f26-289d-4eba-af0b-0da68515cbb6/c5c6ea3d-df5a-464d-9b41-a6bf3a0372a9.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"929def08-6b32-4313-a296-eaa1e5ee8d1b",show_title:"Swan.com",text:"Alex, can I ask Brad a quick question? Of course, go ahead. Hey, Brad. Stack chain is just the gamification of turning Kuckbucks into SATS. And the only reward is people get more SATS. So I'm curious, why did you post that stack chain was a shit coin this morning? Oh, my God. Here we go. Shot fired. Bread went off the stage. He's requesting come back up to defend himself. It should be interesting. The reality is that there are lots of detractors of stock chain. For various reasons. It is something that can. Oh, my God. What's up, Brad? How can you declare it? How come you posted as a shit coin? Do you not understand what we're doing over there? 3 million cookbooks converted hold on. 3 million cookbooks converted in four months by $500. I spent a lot of time in the Djen pits of shitcoinery, and this feels like a shit coiny thing to me. So that's why I said that, because the shit coins do stuff like that. Which means you're buying right now, right? Buying bitcoin. I'm always buying bitcoin. None at all. Good burn, Alex. What? Buying bitcoin? No, I'm not buying can we just back up? What exactly is stock chain? Sorry, I'm sort of be the idiot on the panel. Here we go. Look, this is what it is. It's a bunch of clubs decided we're going to stack some bitcoin and play a fun game on Twitter and post memes and kind of replicate what a blockchain is while they stack bitcoin and compete for blocks in a big long Twitter thread and kind of meme about it. But to me, I was a big fan of like, the Lightning Trust torch and all those things like the state chain torch and things like that. I loved that stuff. I thought that was cool because it served the purpose. It was like a political message. The lightning torch was similar, but the Lightning torch was like almost a political message because we were sending the lightning torch proving to the shit pointers, like to Roger Fur and all the BCRs that lightning wasn't vapourware and that you were sending it across borders. People were kind of like making a political statement. Like somebody received it in Iran and then sent it back over to someone else in another country. And it was kind of like a political statement that I could get behind. But the stock chain culture, I think, to me looks more like a little bit useless and a waste of energy. It looks like we could be doing better things with our time. And as an outsider looking in on it, that isn't part of bitcoin culture. It does look like a bunch of weird people, like, bragging about pumping the price of bitcoin even though they're only buying like, $5. It just feels okay, hold on. Brad, Brad, Brad. It's fasci. OK, as a proud stock chainer, I think you need to do more. Okay? I would happy to talk to you offline because it actually is a very noble cause. Nothing more than a bunch of clubs, but that's exactly what it is. Okay? Okay. And I just want to end with this. I have a proud stock chainer. I think I've done it four times. That being said, it is the total antithesis of shit coinery. Okay? It actually is a disciplined and find the stock chain tip. Sort of teaches you how the blockchain works indirectly. Just my opinion from a 60 year old fuck. Okay, this actually is a cool thing. Because there's at least a dozen swans who are stack chainers, including Corey Clifton and oh, by the way, Michael Sailors. A stack chainer. Everybody's a shit owner now. No, I'm on the other side of it. I think Brad has way too much free time in his hands. I guess he needs to find. It. I didn't get in on the premiere of the Fact chain, so maybe that's why I'm salty. For those of you who missed it, you got to go back and listen to the podcast recording of this show for the Thanksgiving special was so goddamn funny. There was one part where American Hall was comparing Brad Mills to a small furry mammal in the grass. It's great. I'll leave it at that. You got to go check it out. It's hilarious. So, Brad, I think some of your concerns are probably valid. It does look a little odd from the outside, but honestly, it's just a bunch of plebs having fun stacking SATS in the bear market. That's really what it comes down to. Ant is also correct. There probably is our $3 million cuckbuck mark. He said asterisks. And that's probably correct because there are some people who play this game and squash or they create fake receipts or whatever, but they're losers because they didn't get a stack stats by doing that. And then the other thing is that in effect, it actually increases the difficulty adjustment because the block height goes up. There's another dollar added once that happens. So somebody else is purchasing more Sass and it's really just a fun way. To shift the gamification of stacking. That's really what it is. And a way for people to talk shit about each other while doing it, which makes it fun. I don't know something about it. It's all good. I'm a fan of both of yours. I'm a fan. And if we are all thinking alike, then somebody isn't thinking right. Quoting General George Patton. If all bitcoiners are thinking alike, then somebody isn't thinking. So thank you for your input, Brad and everybody, I'm signing off. I'll listen to voltage. Thanks, guys. Don't worry. Normally I'm not aligned with the things that you say, but I think stacking is pretty dumb. I'm just going to take this one. That's for a back ended compliment. Brad. That change. Awesome. Well, I just followed Brad because. Nice. Alright, Brad, I just want to say we all love you, man. Let's keep ",timestamp:"01:23:39-01:30:26",topics:["Brad Mills","Stackchain is a shitcoin","what is a stackchain"],type:"twitter_space",weight:9.22888708114624},{boost:0,date:null,description:"Tone Vays gives his analysis about what is needed for a final Bitcoin capitulation and the return to a bull market",episode_title:"Café ₿: Bitcoin Lightning ⚡️ Q&A w/ Bobby & Paul From Voltage!",guests:[{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:" Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"560cf9ee-2844-4ced-bbfd-d0ec639b2177",twitter_handle:"CitizenBitcoin"},{name:" Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1307109108127019008/rPNj47yJ_400x400.jpg",ref_id:"4f4f53c7-5a3a-46df-b334-9951fe38dc96",twitter_handle:"realjeffreyross"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" q_liketheletter",profile_picture:"https://pbs.twimg.com/profile_images/1560683048680665088/4MrHM_UY_400x400.jpg",ref_id:"d82c0d30-d0d3-4947-a358-d28f1cd5292e",twitter_handle:"q_liketheletter"},{name:" iBobbyShell",profile_picture:"https://pbs.twimg.com/profile_images/1583132979571920896/1Std3_ya_400x400.jpg",ref_id:"2f9bd0a3-1215-4a89-9dc6-d64f170961af",twitter_handle:"iBobbyShell"},{name:" Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"ac43b4f0-9056-4a6b-9d30-4a6250405ade",twitter_handle:"ToneVays"},{name:" sonofsats",profile_picture:"https://pbs.twimg.com/profile_images/1593080311000211456/Dr_NQ9Iw_400x400.jpg",ref_id:"d584f070-a66a-4b53-b15a-8142f8daea66",twitter_handle:"sonofsats"},{name:" futurepaul",profile_picture:"https://pbs.twimg.com/profile_images/1508452962917666821/1QheRD09_400x400.jpg",ref_id:"fcb50ec8-2669-47da-87b9-1702affb30c9",twitter_handle:"futurepaul"},{name:" Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"a2ba4e1e-aab7-43b0-90d7-d3c6a9738ad0",twitter_handle:"FossGregfoss"},{name:" Brad Mills",profile_picture:"https://pbs.twimg.com/profile_images/1541955880752750592/XJqwIn2E_400x400.jpg",ref_id:"9a49201c-3b03-4a83-bcb8-d92dbf3d55b6",twitter_handle:"bradmillscan"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ad62f26-289d-4eba-af0b-0da68515cbb6/c5c6ea3d-df5a-464d-9b41-a6bf3a0372a9.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"332af4b9-782f-40e4-878c-45bb9d7edcdc",show_title:"Swan.com",text:"Yeah, for sure. Shout out to Tone Vays throwing you an invite to come up. Brady Swenson in the audience throwing you invites. Guys, Tone Vays had a well, there was an article regarding Tone Vays in a strategy session he did on YouTube talking about what we need to see before he's convinced we've got capitulation. We're moving up again. Hey, good morning. How's it going, Tom? Morning, guys. So would you mind just taking two minutes? And when I say two minutes, I'm serious about two minutes. Because sometimes you can go for like a 20 minutes rant. Alright, five minutes. You want to tell us what you're thinking in terms of what we need to see in prices, et cetera, what we need to hold before we know we're back into a bull market. There's a lot of speculation that we're hitting the bottom. There's a lot of market indicators popping up that people are saying mean at the bottom. I don't know if at the bottom. What do you think, Tom? Yes. I have to go and check the price of bitcoin real quick because it just woke up in time for spaces. Lucifer, back up to 16, I'll tell you. 16,370? Yeah. Well, we're back to 16 four after flirting with 1601 more time. So I am one of the view that if you get too many chances to buy the perfect low, it's not the low unless you get so many chances to buy the low that everyone gets bored and thinks bitcoin is never going up again. So at the moment we've had too many chances to buy the perfect low of 1600 or a little bit under. And that makes me so right now I am leaning towards the direction of one more capitulation. How long can it go? Hard to say. 1413, but it's the structure of the capitulation, right? 15 and a half, like we did a few weeks ago. And if we were already at $20,000, I would be full on full market right now. That's it. That was the low. Kind of like what happened with COLVID, but right now it feels more like 2015, where we crashed into the sub 200 low and then we spent like five months, six months flirting between 203 hundred, maybe got to 350. And then once again, like after January we crashed the below 200, and then again in August we crashed to below 200. So now it feels more like 2015 again, like we spent so much time at the low. And it wasn't even the low. So people A, got bored and then B, got hit with one more capitulation. So for me to call a bull market right now, I would need a clean, higher high, which means we go up to 21 22 $23,000 range, and then on the way back, don't go below 19 and reverse at 19 and start to push towards 21 22 again. So that's what it would take for me right now to consider a bull market or, you know, a quick drop to below 14 followed by a swift rebound back to 18. That would also get me super bullish. Got it. That was a great summary. So shout out to Jeff Ross in the audience throwing you an invite. If you want to come up and give us your five minutes on what's going on in the markets, you're welcome too. For those of us who are aggressively stacking this low or this correction, you're telling me that we still have a chance that this might last a little while longer? Yeah, it feels like it. But keep stacking because time wise, this can't last too much longer. I can't see this. I'm already a little bit like, wow, this thing lasted far too long. But I guess as late as March, there is no way we're going to be sitting at these lows with less than twelve months to go to the having. With everyone having their countdown in days when it's less than 365 on their wall, I just can't see it. I love it. Personally. I've been super aggressively stacking this entire time, and I know many others are. There's some new data out from Glass Node that says entities owning less than one bitcoin of collectively accumulated 1.5 billion so added 96,200 bitcoin to their holdings since the FTX collapsed, all time high balance increase. And then entities owning less than ten bitcoin have added over 3 billion worth in the last month. Yeah, those are my two favorite metrics. Wallets that have accumulated over one bitcoin has just crossed 950,000. Let's hope that's 1 million leading into before the having, right? Like in the next three months, by the end of Q one, I would love to see that metric break 1 million wallets that have stacked more than one bitcoin. And the other metric, well, double metric, how many bitcoins are entering the Lightning network and how many bitcoins are entering the liquid network? That one is super small because once bitcoin enters those networks, it doesn't really leave. There's no reason for it to leave. It's better there in both of those networks because it's there because it solves a problem. And that problem requires bitcoin liquidity to come off on shape. Not the solution. I should say not that problem. Yeah. But it's also a way to mark sort of network growth. So we talk about this thing called the Network of Fact where and Lawrence LaPard says that like one of the only things that would concern him is if the bitcoin network started getting weaker, meaning less users, less lightning growth, all that other kind of stuff. That's an interesting point, because as long as bitcoin keeps getting stronger, it's already the super dominant. It's the only proof of work network really worth talking about at this point. And that's exciting because that just means it's just getting stronger all the time, regardless of price. Jeff ",timestamp:"00:16:01-00:22:44",topics:["Tone Vays analysis","Bitcoin capitulation","Bitcoin bull market signals","Lightning and Liquid networks"],type:"twitter_space",weight:9.22888708114624},{boost:0,date:1637366400,description:"Nuclear Reactors are safe - salt cooled reactors with TRISO nuclear fuel particles",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"d1295013-33f3-431f-99a0-baa6d83500ad",show_title:"Compass Mining",text:"I think Eric said pretty much everything I had to add. I think apart from the safety case, I think it's a really heavy regulated industry which not a lot of people understand. You can't just make a reactor in your backyard and put it online. It doesn't happen that easily. Right. So there's a lot of regulatory compliance that goes into it. And especially if you work in the industry, you realize, which I had not a huge amount of appreciation for, which I've realized over the last four years that licensing of reactors not super easy now. So that's another drag on the industry which has been happening. But I mean, part of it is required because of just how the technology is. And like Eric was saying, it's like we pay the price for it. But apart from that, I feel like we just have to point out how cool nuclear technology really is. Like, if you are really serious about climate crisis and everything else that you see in the mainstream media and you're not pro nuclear, you're just kidding yourself because the energy mat just doesn't add up. So I feel like apart from validating the safety cases for the advanced reactors specially, which have really improved over the build up that we've seen over the 1970s, which were mostly pressurized like auto reactors. So a lot of the reactors that we are probably going to see over the next decade or so would be sold reactors which will have these trip particle fuels, which if you look at it, I think they're pretty much the most robust fuel on the planet today. So I would ask anyone to go Google tripod fuel and look up what they actually are and realize how cool that technology really is and how badly we need it. Because that small amount of particle which is the size of a golf ball, can produce power as much as a coal plant or natural plant can. So that's just really powerful, right? I mean, nuclear reactors are safe today. Like the build up that we're seeing, we'll probably see in the licensing that I've been part of the technologies out there. It's just a matter of building it. And I think it just depends on the economic incentives. If the incentives are right there, then people are going to go out there and build it. And the opportunity I was talking about is going to show up sometime over the next decade where a lot of these private companies which have been involved in the space for a while now. I kind of like relate this to the space race for these private companies, which was happening in the early 2000s, where companies like SpaceX and Blue Origin were just starting out and not a lot of people had heard about SpaceX for the first ten years, right? Like we just started hearing about when they start launching rockets, but they had a massive amount of failure going into those rocket launches. And I think it's similar with these private nuclear companies of today where they're slowly and privately building out these technology options for us. I think we'll start to hear more of those in the next five years or so and it's just going to happen. And I think the public sentiment will drive from that because people will soon realize that if you want to be serious about climate change, then you have to be on the side of nuclear. I think it's very similar to like even with Bitcoin, I feel like that's just the sentiment. I think there's just the economic incentives are going to be such that it'll just drive adoption naturally. I'm with you there, ",timestamp:"00:35:08-00:38:18",topics:["Nuclear Reactors Technology","TRISO Particle Nuclear Fuel"],type:"youtube",weight:9.170270925405587},{boost:0,date:null,description:"Relationship of Year-on-Year change of Bitcoin Hashrate, the Bitcoin Economy and The Energy Industry",episode_title:"Café ₿: #Bitcoin News & Trusted P2P Reviews w/ @Apollosats",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@FossGregfoss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"09913e9b-38dc-4465-9d4d-ae0c9ba9eeca",twitter_handle:"Fuckkkk"},{name:"@w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"b178b239-3b18-4a16-9d43-c5d15ba6f7f4",twitter_handle:"w_s_bitcoin"},{name:"@NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"4b6997e1-ce0b-4a1d-90e7-dbaccef4b783",twitter_handle:"NeilJacobs"},{name:"@brandon_gentile",profile_picture:"https://pbs.twimg.com/profile_images/1561369452284895236/-8WgdwEm_400x400.jpg",ref_id:"f940c5e8-4808-4197-a38f-3f19d311a7ad",twitter_handle:"brandon_gentile"},{name:"@apollosats",profile_picture:"https://pbs.twimg.com/profile_images/1576946734927794176/2ail9FoU_400x400.jpg",ref_id:"74f4280f-5fdb-4bbc-aee2-a2ed32d64372",twitter_handle:"apollosats"},{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7cf57bdb-c905-46e3-a7e5-4c0bfd4f8d04/71c08fae-cce8-4600-ab9e-758420e78dcf.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"2b1c8514-7d10-4e83-9006-9974ec31d35a",show_title:"Swan.com",text:"I appreciate it. I wasn't going to do, like, anti who's holding bitcoin rant and who's mining bitcoin rant? Whenever we could ask that question. I wanted to look at these kind of hash rate numbers year over year and just going back to late 2018, and this isn't like exact science. I just basically picked the first dates that I could find in January for that year. So just take it with a grain of salt. But January 8, in 2018, hash rate was around 16 X A hash. January 9, wow. 2019, it was floating around 45 X A hash, which was like 181% increase. I believe January 20 was around 100 X A hash, which would have been like 122% increase over the previous year of 45. And then January 21 was 150 x a hash about which was, you know, about a 50% increase. So where are we going to be in January 2020? Oh, I guess that was 2021. January 2022, I didn't get that one, so I'm missing that one. But January 2023, you know, I don't know where we're going to be for there, but I mean, right now, today, it's 260. The problem is they're not making money, right? So there's an overhashing, arguably, miners bought a lot of rigs last year. They were overfunded, and they thought number would go up, and now they're hashing like, there's no tomorrow and selling every bitcoin. They mine pretty much immediately because they're losing money left and right in the bear market. So you could easily see rigs going offline soon and the hash rate coming down to match the price better. So here's the interesting thing, because I agree with you. I did just go grab January 2022, and it looked like that it was floating around basically, like 175, 190 x A hash. If the year before was like 150, it's like even less as far as is like, the increase. You're going from like 181% to 120% down to 50, and then like, a little bit less. But now it's like up to 260. So I know it's like a lot of numbers. If you're not looking at it, like, I am right here to kind of hear it I hope I'm relaying it correctly for everyone to understand. I feel like we already had a massive correction in the amount of X A hash, and now it feels like it's going back up. Well, exactly. And if you pull this up over like this same time frame, like go back to like I just pulled it up to like 2016 now, and I can see all this hash rate. And you can see it like goes from like this little line there's like this kind of upward, you know, trajectory. And then right around May 2021, you know, of course there was like a big drop. Like it it gets, you know, June, July, July it drops. June, it drops way down to like 87 from and this was in 2021, so May 2021, it had been cranking along. It was like 179 X A hash doing great. Then all of a sudden it dropped huge, down 87 X A hash per second. And then from there you can see it's almost like a bunch of miners turned off. And then here goes a bunch of new ones. Bump bump, bum bum bum bum, boom boom boom. And it goes all the way up. And here we are, 260 something. Yes, I show this article, I've been showing it a lot recently on this show, and I know a lot of you still haven't fucking read it, so I put it up in the nest for those who still haven't checked it out, because it is really fucking interesting. And it's exactly what we talk about every single time we talk about this. It's this bitcoin energy gravity idea that Joe Burnett came up with. But it's a really simple and beautiful idea. It's this idea that when bitcoin is flying high and the prices is surging, it becomes very profitable to mine. So new investors, instead of just aping into bitcoin, what they do instead is they ape into mine. Charts are bullshit. I'm sorry. Because you can't tell what's going on right now when bitcoin dropped from 69 to ten because they're using this log ten bullshit scale. Like, I like the chart idea. It's just that execution is atrocious because they should just show what happens when you go from linearly, what happens when you go from 69 to 17 in terms because I can't tell because it's all gobbled up by this bullshit. Learn how to read log charts and then get back to me. But anyways, what I was saying is like, no, it's bullshit. Log chart. This is exactly what can be used. It's exactly what plan B used to fool everybody into bullshit. I'm sorry, it's bullshit. Get a better chart. The plan B thing is a completely different problem. But yeah, no, all this is saying this is saying something that's fundamental to bitcoin. And honestly, I don't think you can argue against it because this is what happens with capital in the bitcoin ecosystem. At least now that it's been fully capitalized is like when the price is flying high and it's cheaper to mine a bitcoin than to buy it outright, then what you get is you get investment in miners, and that naturally stifles aping into bitcoin. It naturally stifles investment in actual just buying bitcoin spot. And so then you get half rate increase, and then once the price starts falling and it gets to a certain point and it actually becomes more expensive to mine than to buy spot bitcoin, then that flips. And then instead of investing in miners or keeping miners on, you just start buying spot. So it's this dance that goes back and forth. And that's why he's called this bitcoin energy gravity, because it's basically when the price flies too quickly up too high, then there's this natural gravity that brings it back down, which is the flip from investing in spot into cash rate instead, because it becomes cheaper just to set up miners and mine bitcoin than to buy the spot itself. Right? If it costs five grand to mine a bitcoin, you're not going to buy bitcoin. You're going to buy miners and mine in bitcoin for five grand to pop. You know what I'm saying? But if all of a sudden it costs 20 grand to mine a bitcoin and you're not going to invest in miners anymore, you're going to just buy the spot bitcoin instead if you want to invest in bitcoin. So that's kind of like that's the natural back and forth that we see playing out over and over again. So one thing that I think could get us to a peda hash very quickly is if we do get this next run in price, that's like crazy, right? And this is not concerning retail. Retail, they all buy bitcoin spot. This is concerning more like institutional grade investment, which we've been seeing a lot going into mining this past cycle. But I think this will kind of continue this back and forth dynamic between supporting further hash rate and then just buying spot bitcoin. All it comes down to is, what's the cheapest way we can get bitcoin? That's really it. Yeah, I agree with that. It's good evidence for what I think people know from first principles. You have a volatile asset. So when the price goes up and it's cheaper to mine bitcoin instead of buying it, people are going to buy bitcoin. And then because it's volatile and because there's a lot of opium, they're going to overbuy and over invest, and then bitcoin will crash at some point because it's so volatile. And then you're going to overhash and miners will go bankrupt, and then the hash rate comes back down and then go back up. But, yeah, it's good evidence for that. He could have explained it in plain English the way you just did, by the way. I don't know why I'm a big fan of plain English bullshit terms. Doesn't he explain it in the article? Did you click into the article? Are you just reading the tweet? No, I'm just saying, like energy, gravity. BS. He could just say like, when the price goes up, you have overhauling and people over invest when the price goes down. You don't need these kind of terms necessarily. There's a certain segment of the population who's not interested in these things unless it has new terminology because they feel like they're smarter, because they're reading new words. That's true. Fair enough. It's marketing. And gravity is one of these fundamental things that everyone feels like is such an important thing in the universe. And it is. We wouldn't be here without gravity. So, I mean, why not name this? See the meaning, man. It always comes back to the same shit. All these different areas. Terminology, analogies are great because they make it easy for people to understand. But at the end of the day, to me, all I know is these motherfuckers will never stop printing. Ever. They've done it my whole life. I came up with a new term recently. So instead of looking at bitcoin year over year growth, I think we should now start looking at it. Epoch over epoch growth. EOE. There is a tweet from bitcoin magazine. It's a billboard in Kansas City. So there's this huge billboard. It's got a US dollar bill on it that says BTC in the middle. It's really funny, but it says, $1 from 2010 will buy you forty two cents of goods today. Do you know why? I think it's fantastic. Human race needs to wake the fuck up. I don't know who's next. Foster tomer. I've spoken already. Let Greg go. Well, good morning, guys. Greg. I'm doing well, guys. Nice conversation. Can I just interesting conversation. Remember, there are a ton of equity investors who cannot buy spot bitcoin. So they buy bitcoin miners as a proxy for bitcoin spot exposure. So in a perfect world with efficient markets, your argument would make 100% sense. But in the absence of equity buyers who cannot buy bitcoin spot and buy bitcoin for miners for what's called beta exposure, that's why the price of bitcoin miners went up into unrealistic levels on a valuation basis relative to the price of spot bitcoin. Okay? So then think of when investors have unit price bias. Mom and pop retail, oh, I can buy a stock of a bitcoin miner at $4 a share rather than buying bitcoin for 40,000. They don't understand that you can't buy a partial bitcoin. They just have unit price bias. So there's that coming into the equation. And then remember, bitcoin mining is a shit business. Okay? Describe to me any other business where you don't control your energy input costs and you don't control your output revenue. Both are set by markets outside of your control. So you want to be a publicly traded bitcoin miner. That's a shit business. Okay? So any bitcoin miner that does not control the cost of their energy is not a great business. And then back to Alex's comment. You're totally right. You can't stop printing. Why? Because it's pure mathematics. The debt spiral is funded by printing more fiat. Fiat is the error term in the debt spiral. So don't overthink things, but try and explain supply and demand where you have a $350,000,000,000 asset, where the Bitcoin publicly traded bitcoin miners at the top of their market cap at the top of their market caps weren't even measured more than $50 billion. Remember that. I'm curious. Like, got to see your hand. But, Greg, I want to ask you a question. I asked this question, I think, to Tone or somebody else the other day, but okay, for these people who cannot buy Bitcoin, the actual layer, one base layer asset, they have to buy a derivative or a security. Do you think MicroStrategy is a better proxy for bitcoin than any other securitized bitcoin product? So, having spent a dinner with Michael Sailor in La and having owned his MicroStrategy at times over common stock, at times over the past, I believe MicroStrategy today is an exceptional buy. Why? Not because of their bitcoin holdings, but because of Mr. Sailor's vision and where lightning and payment rails are going. But I can't talk too much out of school about that. I will just tell you. The capital structure of MicroStrategy is so hedged and wedged with capital structure arbitrage players convert ARB players, to be exact, where they bought almost zero coupon bonds. Some of them had a nominal coupon on them in order to play the optionality of the MicroStrategy stock, because that's all convert ARB desks do, is get optionality out of a convertible ARB excuse me, a convertible bond and play the ball game and play put Call parody on options markets using a convertible bond. That's what they did there. So that capital structure is a little Bit. It's extremely levered to the convert ARB equity desks and convert ARB desks on Wall Street at a price of under $200. I did the math recently. Yes, I did buy some MicroStrategy stock after having the pleasure of sitting down with the CEO face to face. But I don't own it because it owns Bitcoin. I own it because of a vision of a CEO who I really like. Okay, I'm not going to tell other people how to buy Bitcoin, but I'll just tell you if you're buying Bitcoin using other derivatives rather than buying spot Bitcoin, go and get your fucking investment policy guidelines changed, please. So that you can actually invest efficiently on behalf of your unitholders, rather than with one hand tied behind your back because you're too fancy to buy spot bitcoin, but you're going to buy all these other derivatives that's absolutely atrocious risk management. Oh, guess what? That reflects probably 90% of the pension funds and money managers in America and Canada. You know what? Let's apply Kui bono to that, though. Why are those entities precluded from buying underlying assets? You might ask yourself that question. Because the market is so manipulated. Alex, that's not what I think. I mean, Greg can probably back. No, it's more it takes time, gentlemen and ladies. It takes time to change an investment policy. Why are those policies like that in the first place? Greg, I'll tell you why. Because they are staffed by people that are septogenarians. Like, I know Warren and Charlie Munger aren't septogenarians, they're octogenarians and whatever 90 year old people are. But at the end of the day, they're fucking they're from past times, right? They're trying to COVID their ass. They're all invested in bank stocks and everything that bitcoin is going to disintermediate. So God forbid they should buy the spot. But yeah, we'll buy these Bitcoin buyers. Do you think it has anything to do, anything at all to do with the fact that Wall Street can't make a profit if pension fund is buying an underlying asset versus a Securitized product? Yeah, 100%. Yeah, that's not a bad thing. Greg, have you also in the past talked about how these funds are dumping grounds for crappy wall? That was Max Kaiser. Max Kaiser went on Tucker and completely explained how all that works. That was my true. Yeah. Now don't forget, look, there are structured products that make sense. There are all sorts of things that when you get the alchemist, when I say alchemists, these are the structured product derivatives guys that turn a single B structure into AAA structure like they did on The Big Short and that's bullshit. But there are actually a lot of good structured products that make things more efficient for a large fund. Now, I'm talking a large fund that cannot buy. Remember, if you're a really large fund and you have to own at least 1% of your fund in something in order to justify allocating an analyst time to that particular investment, if you're a trillion dollar fund, 1% of a trillion dollars restricts you to basically large cap everything. Which means you'll never be able to get into small cap anything unless you can do it through a structured product. So understand that there's different ways of skinning that fish, but it's the difference between big money and mom and pop retail money, okay? And you can't apply a blanket solution to everything and then I just want to start by or end by saying this, look, log scale is log scale. Don't confuse it for what it is, but don't say that people are trying to terence, this is not a shout out or a shot at you. It's just saying as long as people understand they're looking at a log scale, they shouldn't call it. It's just a part of mathematics. And log scales mean a ton to the mathematicians. They may not mean a ton to the mom and pop retail crowd. So just, guys, if you break everything down to first principles, mathematics. You break things down into what's a good business and a bad business. I don't know if I'd want to be a bitcoin miner where you have no control over your business, but then you were able to sell stock to the public at an inflated price and feel good about yourself. Look at Argo Blockchain right now. They are living the nightmare of taking capital at the wrong price and deploying it wrongly. And, yes, you're right. There's a lot of hash that will come off of the system. Why? Guys are running rigs because they're trying to generate cash flow. It doesn't mean they're trying to generate a profit. They're trying to generate cash flow. There's a big difference. People understand that difference. Yeah, the thing you said about any business where you can't control your input costs or your price of sale, I had not heard it put quite that way before, but that makes a lot of damn sense. I was like, oh, damn. Yeah, you're kind of right. Which leads me to the next thing. Those businesses might only make sense if they're actually power producers. Amen, brother. Amen. And that's where the world's going. When you see Duke Energy mining bitcoin and stabilizing the grid, you'll understand that bitcoin and its beauty have arrived in capitalist America right now. It was just a precursor and a fucking horror film because it was sold to unsophisticated investors at the wrong price by people that were CEOs of mining companies because they did it in their parents basement. Very simple. Yeah. So when you see announcements like ExxonMobil rolling out this flared gas project where they believe it's going to reduce their greenhouse gas emissions by, like, 63%, they're rolling it out across four countries where they're taking this flared gas. My understanding is they're not actually giving a crap about the bitcoin, just trying to reduce emissions so it looks good on their books. Alexand, respectfully, that's not the energy producers we're thinking about here. We're thinking about the electricity distributors. We're thinking about Shameless promotion of a business I'm involved in. We own peaker plants that are on call. They are not running 95% of the time, but we have capital costs. Don't you think it would be wise for us to figure out how to explain this concept? I've heard the word before, but I'm not sure I understand what it means. It's a peaker plant. Okay. The grid is inherently unstable because the grid and the demand for electricity fluctuates during the day. Right? The biggest electricity draw on a grid is when people get home from work and they turn on their stoves. Electric stoves. They turn up their heat. Electric heat. They turn on their hair dryers because they're going out at night. Anyway, the point is, the grid is set up for maximum demand. But there's not always maximum demand going on in the grid. But it's an ancient technology that needs you to be able to supply that power so that the grid does not black out when everybody goes to maximum demand. So in a given day, if you have 100 megawatt demand or peak demand, 100 megawatt, I'm talking about a micro grid here that's set up for the 06:00 P.m. Draw versus during the day, the true demand from the grid might be half of that, meaning 50 MW. So you have power producers that are primed to provide 100 MW, but only 50 MW is being used during the day or in the middle of the night. So what are you supposed to do with that? You're probably supposed to mine bitcoin to defray your capital costs of building these plants. Now, I talked about a peaker plant. This is a plant that is on call so that when you have a draw because of really exceptionally cold weather or really hot weather in the summertime when everyone's turning on their air conditioners and you have rolling blackouts, that's when the peaker plants come on. But a regular utility is always load balancing during the day just because that's the draw on the grid. So you'll have the Duke energies of the world that are baseload providers, not peakers baseload providers that are going to be mining energy because it helps to stabilize their grid. Why? Because you want demand for when your turbines are turning and no one has demand for it. Well, in Canada, we pay Americans to take that electricity from us. We don't sell it to them cheaply. Alex. We pay you lucky people to take our electricity. How messed up is that versus us mining bitcoin with that excess power capacity, and that is a fact. One of our nuclear generators sells not cells, gives power to the northern peninsula in Michigan, and doesn't just give it to them, we pay them money to take it as well. Well, if that's a good business model, you've rewritten fucking capitalism. Okay? So start mining bitcoin Canada, and get your fucking asses and gear. ",timestamp:"00:35:14-00:58:57",topics:["Bitcoin Hashrate","Bitcoin Economy","Energy Industry"],type:"twitter_space",weight:9.1248779296875},{boost:0,date:null,description:"Discussion on how much information investors and promotors knew about how BlockFi (and others) business's worked",episode_title:"TOXIC HAPPY HOUR! #Bitcoin is Easy Like Sunday Morning! 🍻😂",guests:[{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:" TC",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"dac0717a-a743-40d4-a89f-7523f071bbb0",twitter_handle:"publordhodl"},{name:" kann b",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"1170bde7-7f3c-4c4f-a158-5c48a98fe92b",twitter_handle:"publordhodl"},{name:" Dallas Rushing",profile_picture:"https://pbs.twimg.com/profile_images/1602759767029604352/hzuwh5ZB_400x400.jpg",ref_id:"13fed037-77ce-48eb-9544-25e7abff9395",twitter_handle:"dallasirushing"},{name:" Lisa Hough",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"5e154adf-d8bd-4adf-a23b-47a51c183163",twitter_handle:"lisa_hough_"},{name:" Collectooor of sats",profile_picture:"https://pbs.twimg.com/profile_images/1594362077132587009/cNAE2FU5_400x400.jpg",ref_id:"c84d0e47-7eeb-419b-a36e-5055b96044f0",twitter_handle:"hoardingsats"},{name:" Gold Leader",profile_picture:"https://pbs.twimg.com/profile_images/1594152783011250176/lHMHv3gB_400x400.jpg",ref_id:"96c4f802-25ff-4a81-b91f-cae5562bf4a3",twitter_handle:"GoldLeader89"}],hosts:[{name:"Publordhodl",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5e189a7b-56c3-40ae-834e-4e2ccee3a9ad",twitter_handle:"Publordhodl"},{name:" Anders_",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"15bdd6b9-bdfd-492d-b7bf-c5a56ecadc50",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/4e00853b-49e3-4b46-bd13-bf7f2aa25905/56f0089c-a7f2-4b1b-8576-a3e4ddb9791f.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"c9e43dce-1fac-4545-be91-7aa8594fa7e6",show_title:"PUBLORD",text:"you're good. I was just going to ask DC or Gold I'm definitely familiar with I would take a decent amount of the details with a lot of these centralized earn yield type of products that all blew up. Do you guys know? Two questions would be one, do you think that investors like Pump or you Scope had full access to know all that they were doing to generate yield on those funds? And if that already has come out definitively, then cool. I just haven't been following that super close and because like I mean with them being a US company, like I figured there'd be access into like seeing exactly what they're doing to earn yield on that even by like investors. Maybe not like super tiny investors, but like if you're there from like if you're a seed guy, like you probably have access to know what they were doing to generate all that yield. Is that can you guys confirm if that was the case? Yeah, I'll take this one. Started proof of keys. Not your keys, not your coin. Listen, here's the problem. Even if McCormick would have said to block by, hey listen, I'm not sure what are you guys doing here? I'd like to have you as a sponsor. Thank you for whatever amount of money you're doing or anyone else that promotes it. Here's what goes on man, for proof of reserves. And it reminds me from the movie The Big Short, all right, if you remember, they go down to the rating agencies saying, what the hell is going on here? What is going on with these bonds? These bonds, you know, are just full of dog shit wrapped in cat shit and then layered with some more dog shit. How are they getting these ratings? And they finally get the lead to admit, listen, if we don't give them the rating. They'll just go down the street to Moody's and get the rating they want. This is exactly the same thing. So we can beat these guys up. Okay? But at the end of the day, there's always going to be another grip, another angle. It's going to be someone else that, oh, yeah, let's start a company. Proof of reserves. All right? We'll get proofofreserves.com, and we'll get all these companies to write us checks. And then when they go out and they want to be sponsored by someone, that person is going to call us, hey, you guys are proofofreserves.com. Does BlockFi have all this stuff? Oh, yeah, man. Yeah. So we're cashing checks from BlockFi and it's proof of reserves.com. We're making a mint until the ponzi blows up. It always blows up. James Ma'am real quick, if I could. Just add one thing on that. I think the question, too, is like, that people should ask is, you're like, okay, this exchange is offering me 6% yield on Bitcoin. You're like, well, where exactly is that yield coming from? Who's paying 6% to borrow Bitcoin? And why would somebody do that? And one of the reasons is that people will borrow Bitcoin to short it, and they'll pay a yield for that. But that 6% is still pretty rich. But I think what a lot of these companies were doing was basically like, for a Bit, you could earn 20% on UST. And so there were companies were probably taking dollar loans against an asset like Bitcoin, and maybe they're paying whatever, 8%, even 10% to borrow those dollars and then trying to go earn 20 over on Terra and then make that gap between the two. And they could pay that out as a yield into Bitcoin. But either way, the problem is, like, all of this sort of set on each other, and a lot of them start to go well, each competitor starts to move it further out on the risk curve, and they're like, well, they're doing it. Maybe we can inch a little bit more, a little bit more. And then by the time a couple of months goes by, everybody looks up and everybody is just, like, waist deep and fucking risk and systemic potential bulbs and stuff. And then there's no way to really unwind that correctly without there being shortfalls and you can't liquidate everything in time. So it's unfortunate that, like, a lot of them felt the need to take on more risk to stay competitive, which ultimately is probably the reason why all of the above kind of blew up. Yeah. James go ahead, man. Let's see your hand up. Hey, good morning, guys. Morning, Dallas. Puppy. Yeah, I just wanted to weigh in on some of the comments regarding I mean, there's a lot that's been said, so I'm going to try and synthesize my thoughts. I'll just start with the Exchange avenue because that's obviously who I work for. There is a palpable kind of steering via the capital stack of the ideas and execution of some of these exchanges. Meaning, like, if you're going to continue to ship coin, your cap table may have some influence on that, which is a real problem. So I just wanted to acknowledge the fact that Lisa, who was just in here, and myself, there are a layer of toxic, extremely, extremely toxic individuals who are working within these what we'll call third generation exchanges that are going to come out of this shitstorm and are extremely adamant about, obviously, for pledge to hold your own keys, but also to provide a level of we'll call it proper fiduciary custody, like a traditional bank does, being bitcoin only for institutionals. So I understand that you should never leave your keys on an exchange, but we're also preparing for governance models where they're not allowed to hold their own keys. So there's a really deep balance and I think that what you're hitting on pubby is important because you can only protect yourself so much reputationally wise in this space. Like TC and Gold said earlier, you should be fucking Ostracized. Like, you really need to understand this is not about this other bullshit, it's about Bitcoin. And there's a huge segment of the market that's going to get captured by an exchange, especially a US regulated exchange, that acts like a real fiduciary for the first time in this space. And they do have proof of reserves and they'll most likely be audited either after IPO or they will give out some kind of information to show their liabilities as well. So it's a complete transition. The fraud and the corruption in this space has just shown everything is getting whittled down and we see it on a regular basis and it's just very exciting to kind of help push that extreme toxicity on some pretty high levels of capital inflow into the space. You made some excellent points there and one I want to highlight was anyone that came in, which is, I know the majority of us, you heard about this thing called Mount Cocks, Mount Cox blowing up. Everybody came in in 2017. You start hearing this thing about not your keys, not your coin. Well, guess what, man, that was being preached. But honestly, aside from a couple of small exchanges, it never really sunk in with many people, all right? Until this year. Until this year, when you started seeing everything unwind, from Luna and Celsius and Voyager, now FTX and Blockbuster, now you're seeing it unwind and you understand what that means. Not your keys, not your coin. And this isn't to say, look, if you're new, yes, practically, you need an exchange to buy your bitcoin. For many people, however, anything else, you're going to do all right with your bitcoin, you can leave it there, not a problem. You just better understand the risk. Here's the assumption you're making that one, they bought the bitcoin. They say they did all right, because it's easily just a number on a balance sheet. That's a good feeling. You log into your account and you see that whole coin you bought. That's great. Your assumption is that they have it. Okay? That's your assumption. And two, that they're going to stay solvent. They're going to stay solvent. It's not going to go away. This is the wild rest, man. And there's a reason, all right? The government obviously is fearful, fearful of an asset class that is decentralized, censorship resistant. Anything they can do that will allow anything conflated with the wild west. They don't care. The more people that lose their money, the more people that lose their money is better for them. Most people are going to find bitcoin or people that are going to stay away from it for the longer time. But I think you have some great points here, man. Yeah, I appreciate it. I just want to make one more quick comment. There are varying. Like, we've sat down on regular basis and formed products and offerings for clients that can help alleviate some of the initial transition. Right. We don't want to hold any of your keys. We don't want to hold any of it. It's a risk to us. We get a withdrawal fee on the way out. We're good with that, man. Have a nice day. Here's your keys. But we do have some smaller options. Like, for example, we can give someone an address on the blockchain to see their funds and literally have them. It's kind of like our pleb level, easy access to verify exactly what's there. But I get it. At the end of the day, the private key is the asset itself. So there's a level of extreme balance between acting as a fiduciary, like a bank, which we're happy to have that bank underneath to provide that further security for people coming in, not having to seek yield from other parts of the business like the exchange, because you have a bank underneath. But it's definitely a really intense issue that's going on right now in particularly, and I'm narrowing this to the we'll call it the institutionalization or the financial end of bitcoin. And obviously we're really excited to help miners out and help all the parts of the bitcoin space. And I couldn't be more happy to be in a community of guys like yourself. Pubby, TC, Dallas, everyone, where this isn't a fucking joke. This is truly something important and I'm ready to lose my job every day going in and speaking the truth. Yeah, here's the hard part, man. You just want to have faith in something. If I could just find faith with one institution in this quote unquote industry. I hate using that term, my God. But like you say, man, we got to slow our heroes. Every month it's another company disappointing us. It's another person that you thought was bitcoin only that is rug pulling shit coining. Whatever. That's the disheartening thing. Dear God, why can't there just be an honest damn company? And you're right. Look, I get it. There's got to be a company that can offer some sort of on exchange solution for clients. Well, you know, develop a company where it's an easy multi safe for someone to handle. I don't know. I don't have all those answers. Until then, I'll just always say my assumption is if I have in self custody, it's not mine. It's zero, it's nothing. It's gone into somebody's pocket. It sucks that we have to be like that, because I know then you get, oh, my God, they're so toxic. Well, guess what? We've seen so many people they're targeting. You get people come in, they came into Celsius, they came into Luna, and they're in the space. Oh, my God. Bitcoin is at what, 20, 30, 40,000, whatever it was at that time, they came in, well, I missed a boat. I got to find this next bitcoin. That's a nickel, because that's my ticket out of here. The system is broken outside. My 401K sucks, so I'm going all in on this thing. That's a nickel. It's going to be $30 next year, and I'll be saved. It's a battle that we love to fight, man. It gives me purpose. Gives me a great purpose in life, is to help people understand what both systems are like, but it's disheartening the number of people that are coming into a space that has genuine intentions to help people and just rug pulling them as well. That's all I have to say ",timestamp:"00:55:59-01:08:18",topics:["yield generating products","investor disclosures","influencer marketing"],type:"twitter_space",weight:8.947233200073242},{boost:0,date:null,description:"Current bitcoin mining energy situation in Kenya",episode_title:"#Bitcoin Kenya 🇰🇪 - meet the Kenya Bitcoin community",guests:[{name:"Noelyne Sumba",profile_picture:"https://pbs.twimg.com/profile_images/1585949523901292545/tWf-IwWO_400x400.jpg",ref_id:"44455b1d-76cf-49df-baa0-cd606652885b",twitter_handle:"noelynesumba"},{name:"Okjodom",profile_picture:"https://pbs.twimg.com/profile_images/1577811376487088128/J2Z4nIgI_400x400.jpg",ref_id:"4c9df92d-3bb5-4d08-9a7e-a9ba15f58f03",twitter_handle:"okjodom"},{name:"Master Guantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"64c326c4-d4a9-4e6c-82fe-0c9bac8a7094",twitter_handle:"MasterGuantai"},{name:"Lorraine Marcel",profile_picture:"https://pbs.twimg.com/profile_images/2361719231/German_sheperd_Puppies_400x400.jpg",ref_id:"ab30679d-7931-4921-a4f8-6fee74e412c8",twitter_handle:"lorrainemarcel1"}],hosts:[{name:"Mary Imasuen",profile_picture:"https://pbs.twimg.com/profile_images/1465290507752558596/lZVbU9np_400x400.jpg",ref_id:"2d8ed8ce-5112-4dfa-9aa2-5fa8b874af68",twitter_handle:"mary_imasuen"},{name:"Lukas Poland",profile_picture:"https://pbs.twimg.com/profile_images/1382603302160932865/RgeQnCXM_400x400.jpg",ref_id:"217a2c5a-1cfd-4840-bbff-eec43da8c52f",twitter_handle:"duczko"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/56bbafde-60ef-4e4b-b930-978429c6a635.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/9f2ebf6e-a880-4579-986c-ff0c9c517559/2cb59251-775d-4691-9c8f-30fb9d7707b9.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"3dff5b59-31e0-4ce9-8add-c8a2ba564259",show_title:"Global Bitcoin Fest",text:"so much for sharing. That sounds like a lot going on. How many people do you usually get to those meetups? Okay, so we have we it changes from 30 to 50. 30 to 50 people. Whoa, that's a lot. But part of it at our class, like the class and then the others are newbies and then we have the speakers and of course just anybody else in the bitcoin community. Okay, do you get swamped with bitcoin or so you manage to. Yeah, they come. But here's the thing, I am not that kind of a person who blocks people from getting to these meetings because at the end of the day, I want them to see why bitcoin and not shit coin. So I don't like tend to block people from coming to our meetups as long as you understand this is about bitcoin and not sheetcoin. So I find it important for them to learn and understand why we are advocating for bitcoin and not the sheet coins that they are probably participating in. And I have students, I can tell you for a fact, I've had students who are actually participating in shit coins. And they come, they listen, they learn, and they're like, okay, I'm just going to drop these and focus on bitcoin. So, yeah, so that's my approach. That's the female approach. Awesome. I guess most of us have been there, at least for sure. I was the shit corner, and I think that's the past many of us walk through. So I feel sympathy for the people in the shitcoin game. As long as they're not the main shillers, I feel sympathy. Exactly. So, Gridless, I'd like to hear a little bit about what you guys are doing with mining. And yes, could you share a little bit about that? Yes. So what we do is we find mini grid developers who are in rural communities who have overbuilt their mini grid capacity. So they have for instance, I'll just talk real numbers. There's a site in Morgana about two and a half hours outside of Nairobi that has a 50 kilowatt mini grid that was built a couple of years ago. The community only needs 30. It during the day, and then at night, between six and 10:00 p.m., the usage goes up another 10. So what that means is throughout 20 hours of the day, there's 20 kw available for use. And it's not being used, it's just being dissipated as heat. And that means that the developer, the mini grid developer isn't getting the full amount of revenue that they could get. And during those other 4 hours between six and ten, there's still 10 kw that are not being used. So what we did is we went, we walked in and we did a deal with them to buy that extra capacity as a buyer of last resort. It's just stranded electricity. And then what we do is we put in six minors in that case, because each of them takes about just over 3 kw. So we put six miners in that location on site and just started mining. The effects of that are pretty interesting in that, first of all, the sustainability of the business for that mini grid developer increases. It means they have full usage all the time. We can curtail our energy use within minutes and we can do it remotely. So it's automated even. And the plan is that we can continue to grow with other mini grids like this. So some of them will be small, 50 kw, like where we are. Others will be larger. 500 kw is the next site that's actually, we're about a third of the way built out with miners on it this week. And it might get even larger than that at some point. But really we focus on these smaller mini grids that don't have any grid connection back to the main national grid. And so it really helps strengthen them as a business. Sometimes I can't promise this at all, always happen, but at least in this case it has. Because they're getting the returns from us and being able to utilize their energy at full capacity, they can lower the cost of the energy for the people in the community. So in this case it dropped from about 1000 shillings per month per family, so household group to around 400 shillings per month. And so it's a sizable decrease in costs for a rural household. And it means that they can go from just first when families get this, they put on Led lights and then the second thing they do is make sure they can charge their phones. And then after that, if they still have some extra disposable income, they might look at buying a television or refrigerator or something like that. But what they can do is slowly, over time, this usually takes five to ten years. That community increases the amount of power they need. And with our set up and the way we've done, our business relationship with the mini grid provider is that we can just decrease the number of miners that are on site and move into a new location. So the community always comes first for power. That community means both households and local businesses. And then we come third. And then if the community and businesses increase, then we decrease. Is that clear? Does that make sense to everybody? Yeah. This sounds like the perfect model to showcase for all the bitcoin haters and energy use. Haters basically empowering local communities through bitcoin mining. What's the model? Do you buy the energy from them? That's right. We go ahead and structure a deal with the mini grid provider. So obviously we get a wholesale rate because we're coming in and buying the stranded electricity that nobody else can buy. But it is still significant enough because we're utilizing that excess energy 24/7, that it makes a significant impact on their business. Who is we? This is what we as gridless. So I should make sure everybody understands this too, that with hydro and possibly geothermal, but we're not doing that yet, that's 24/7. So it's very efficient power. As we look at the models for mining, however, if we look at solar and wind, it has a lot more variability in that the sun doesn't shine at night and the wind doesn't always blow and we can't just go put storage, battery storage in place for those dead times because that increases the expense significantly to install. So mining in those locations is a little different. You can still do it, but your return on investment goes from, you know, twelve to 15 months to maybe three years and and so you have to think a lot more you know, you have to think a lot more creatively about how you solve for solar and wind, but hydro and geothermal are particularly good for this. And how large is the market? How many minute grids are there in Kenya would you estimate that need this service? Yeah, so our estimate in East Africa, most of this Kenya, is there's about 200 stranded energy, renewable energy. Now, not all of that is going to be super useful because some of it's solar and wind. But even within the hydro mini grid space, there's a significant amount. So one of the things we did, we announced at the Africa Bitcoin Conference this last week was the Green Africa Mining Alliance. You can find out about it by going to just Gamma Africa or on Twitter. It's gamma underscore Africa. And the reason we did that is because there is a few other miners in Africa doing either on a small, very small kind of grassroots scale, like Carbon Coin is doing in Nigeria, or larger, like we see with Sebastian and his crew doing it called Big Block Data Center in the Congo. So there are a couple of people doing it in different stages, and we need more of it. Even as Grid list, we can never do all the mini grids that need this, even in East Africa, much less the rest of Africa. So Gamma is really about trying to get more people mining across Africa and creating a place that they can go to understand it, find help, be connected with good mining resources, including the people who sell it so they don't get scammed on buying the actual miners and then understanding what models work. What I'd like to see as well with Gamma is that we provide a body of knowledge and data, real information from the mining sites that can be helpful for policy and regulatory bodies as they start to make the rules around this across the continent so that they're at least coming from a position of information, of knowledge, not of ignorance. So, yes, what I'd like to do in the future is create a way that people can get real information and start their own mining. That's super awesome. Angola seems to have a fairly thriving mining community. Maybe I don't know if you're in contact with them in orland okay, yeah. Thank you. So I'd like to highlight I got to meet Eric in Ghana. Eric, thank you for the Tshirt. I really loved it. So if anyone saw the video that's the Gamma Tshirt Eric is talking about and maybe I'd just like to highlight the importance of what I saw Griddless is doing in Kenya. And so just recently there was news that came out that our solar electricity distributor is about to start billing people, that is, electricity consumers in dollars, Euros, and other foreign currencies. So this is because of the Depreciating Shilling. And of course, it's a bitching shortage of forex in the domestic market. So with this, we have companies like Gridless giving us a solution for cheap energy. And I think it's going to be a game changer for Kenya. For example, just today, I did not have power for a few hours before this space started. And I was worried, I was like, come on, what's happening? And it's been happening in terms of power shortages. So I think gridlock is doing a wonderful job and if Kenya can be able to receive cheap energy, then yes, I understand it's necessary. Thanks Darwin. What I hope we can do too, speaking to that is let me give you a story. So if you guys remember here in Kenya two weeks ago, we had a nationwide power outage for 5 hours and the people on the mini grid didn't lose power, the people that were on the main grid did. And so there's something interesting that's going on that's counterintuitive about national grid connection versus microgrid or mini grid connection. And I think especially for people in rural parts of the country, it becomes really interesting when you can start pushing electrification to the edges, making it less expensive, more available and more reliable than the national grid. And I think that bitcoin mining is the thing that can actually drive that. It's that silver bullet that was missing from it. Most people don't realize this, but any mini grid operator of any type, whether it's hydro or solar or wind, has had a real fight to be sustainable in this country, sorry, not even just in this country, across East Africa. So bitcoin mining as a buyer of last resort that's geographically agnostic, can go anywhere, I think can solve a lot of those issues and increase the connectivity and electrification that's needed in the country. So, ",timestamp:"01:28:52-01:41:46",topics:["bitcoin mining Kenya","bitcoin energy","Gridless Kenya","Kenya National grid"],type:"twitter_space",weight:8.81690502166748},{boost:0,date:0,description:"What is a speedy trial?",episode_title:"Taproot Activation Q&A with Bitcoin Devs - TABConf 2021",guests:[{name:"Andrew Chow",profile_picture:"https://pbs.twimg.com/profile_images/1452266201770496010/44FHCtZM_400x400.jpg",ref_id:"f96d87ca-5060-4021-aeb9-61db03312027",twitter_handle:"andrewrchow"},{name:"Ben Carman",profile_picture:"https://pbs.twimg.com/profile_images/1550704386007089152/pLwUSeff_400x400.jpg",ref_id:"1d1e95ba-b4af-415f-aafe-85c6dd7571b8",twitter_handle:"benthecarman"},{name:"Matt Corallo",profile_picture:"https://pbs.twimg.com/profile_images/697361498587451394/_rX0-O0W_400x400.png",ref_id:"08cb3c45-c0bc-4a60-ae5b-a1283d352c8b",twitter_handle:"TheBlueMatt"},{name:"Pieter Wuille",profile_picture:"https://pbs.twimg.com/profile_images/1264051937172836353/n7gHdLbB_400x400.jpg",ref_id:"40260d2f-3480-47d6-8515-d2e780901273",twitter_handle:"pwuille"},{name:"Vivek Kasarabada",profile_picture:"",ref_id:"60ed22d0-8cf3-410e-8a7c-9c343ae109ca",twitter_handle:""},{name:"Murch",profile_picture:"https://pbs.twimg.com/profile_images/1269477743525130241/-U843Cmt_400x400.png",ref_id:"3e2c1c73-a057-4475-9782-3bb0d3d8cc62",twitter_handle:"murchandamus"},{name:"Andrew Poelstra",profile_picture:"https://pbs.twimg.com/profile_images/1316562683009921024/FSscAYvJ_400x400.jpg",ref_id:"15fb9c53-c988-4af1-bbf0-4832d71b0a01",twitter_handle:"Blockstream"}],hosts:[{name:" TABConf (The Atlanta Bitcoin Conference)",profile_picture:"https://pbs.twimg.com/profile_images/1596233571521499138/YE8Us_Ml_400x400.jpg",ref_id:"eb1b6016-6223-4b2b-9264-2423ce66304f",twitter_handle:"tabconf"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e7d2a4ca-6b44-4a45-a94c-6f48987979f7.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=MrxtqAlRI2U",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"88a4665a-7414-4ccd-96e4-3fb43f93d9bc",show_title:"TABConf (The Atlanta Bitcoin Conference)",text:"For context, maybe we could explain what Speedy Trial is. My understanding is it basically allows you to put a delay between activation and signaling, but there's also a way to back out if things seem to be going wrong. The activation mechanism we have used previously for CSV and SegWit was called Bit nine version bits. Speedy Trial is a modification to this where we have the start time of the first signaling period was really soon after the parameters had been finalized. And this allowed us to then see very quickly if nodes and minors were upgrading and then were starting to signal for Taproom. And one of the other key features in the speedy trial is that we added a minimum activation height. So this allowed us to delay the activation to a height in the future once there was enough signaling and the software cab locked in. So what this allows us to do is we can see whether Taproot would fail really early on and if it would fail, then it would fail quickly and we could try a different deployment method. I'd rather mention the end time. So the end time for the signaling was also fairly short. There was a whole period of about three months, but we activated it in like four weeks. The lock in was after was it. The second or a third signal? It was a third, I think. Anyways, we have a minimum activation height so that in between the the lock in time and the actual activation time, that's when everyone can upgrade. Everyone knows that Tap Rout going to happen and so they can be ready by the time we reach that minimum activation height. And so for Taproot, that minimum activation height is that 709,000, whatever. So here a small call to action. If you're running a full node and you're not running one or 22.0 or a newer version than that, you might want to upgrade when you get home immediately. Go ahead. ",timestamp:"00:05:16-00:07:48",topics:["speedy trial","minimum height activation"],type:"youtube",weight:8.499536991119385},{boost:0,date:1632355200,description:"The overview of the current state of the ASIC Bitcoin mining hardware market",episode_title:"The ASIC Mining Hardware Market",guests:[{name:"Vincent Zhang",profile_picture:"https://pbs.twimg.com/profile_images/1158285609196109825/fuB-e6lm_400x400.jpg",ref_id:"98e7bc98-3a3b-4ddf-9b48-5dcd78973739",twitter_handle:"Whatsminer_MBT"},{name:"Vincent Vuong",profile_picture:"https://pbs.twimg.com/profile_images/1260974518547312640/n47yvbNL_400x400.jpg",ref_id:"8390e230-e36b-4e0d-9f5d-70c6635bf3c2",twitter_handle:"BitcoinVincent"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=qKeUCNXa4Uc",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"198dfd3b-7d1b-422c-b118-48520629af43",show_title:"Compass Mining",text:"kind of want to kick off the general ASIC market conversation with us today with just like a general question on an update or an overview of the current state of the market. Like, if you look at price charts for the assets themselves right now, you see a little bit of selling activity over the past couple of days, maybe a little bit of fear, some dicey news coming from different regulators around the world. But if we focus on the hardware market, like if you were to give sort of a concise update on the state of Bitcoin mining hardware right now, what does the market look like? What are some key data points or movers and shakers jostling for leadership positions? And whatnot in this slice of the market? What things sort of stand out to you? Vincent from Compass I'll toss it back to you and then vincent from what's? Minor also, for sure. I appreciate that. I personally see that. I think in July we saw a lot of people had excess inventory, but we slowly starting to see markets pick back up again, especially with the coin wrapping up. Even with that slight dip down to 42K ish, we haven't seen too much selling and too much decreases in hardware. Typically. I spoke about this on an article with Coin desk where the asics generally don't go down in value as quickly as they go up in value. And we're starting to see that a bunch of public companies are making large announcements about picking up machines for Q two, Q three, Q four of next year. And for me, I think that it's extremely bullish because there's a lot of equipment that is on the secondary markets that these publicly traded companies can't touch. And so that's why it's going to be an interesting little bit. They're basically just purchasing from the manufacturer when sometimes specifically in July and August, the secondary market was cheaper than what was on the threat from the manufacturer. And I think that once people realize that and they realize they need to take advantage of all these areas, it's going to change how people procure their asics. That is interesting. Yeah, we saw a lot of heat on secondary markets there. Vincent, from what's minor? Same question to you. When you look at the ASIC market in general right now, what's the status of the market? What are key things that you see that stand out to you? Yeah, so market so in this year actually changed a lot. So we have to say change a lot. And the first change, so what I can see is actually this change happened since last year, not only this year, but this year, the trend was enhanced. So what I observed is the capital from North America and Europe. So they invested huge since the year 2020. So the big players, they sign agreement, longterm agreement, either with us or with Bitmen, and the procurement plan and quantity is really huge. And so the trend was changed, even enhanced this year, because this year, the investors in China, they were not able to put the Arctic minus in China mining further. So some small players doing mining in China, however, the large data center, all of them are almost closed and the regulation and the policies becoming more strict. So the investors from China, they reduce procurement quantity in big quantity. So we have to say more miners are moving outside of China and we can see that. So more miners are actually purchased by the investors outside of China. This is number one. Number two is that right now the big players, they prefer purchase the minus in advance. For example, as Vincent said just now, big players, they even purchase the supply of the in the year to some 22. Okay. Q. Two. Q two. Q three. Q four. They have the contract with us or with some other purchasers. So they prefer purchase even more than half year earlier than the supply time. And so, however, we are not saying the minus in stock are not able to be sold out. So some small and medium investors, they are trying to access to the minus available immediately. And this is not a small portion. So also big quantity can be traded. And also the Easter miner. So in the month of May and June, so the Easter miner becomes really cheap due to the regulations published in China. However, it's recovered very fast. But what I can see is probably from October, November onwards. So if bitcoin price will not have a significant increase or growth, I think the price of the miners may drop down. And another point is, so right now we can say the vendors like us, ask hardware providers like us. So we will prefer have long term cooperation with big players and investors. Okay, so you can see that right now, the sales policy from asik provider vendors also change a lot comparing with a few years back. It is totally changed and slowly it is not becoming the vendor market. So also it is well balanced right now between the vendor market and the purchase market. Okay, so these are the observations I can share. ",timestamp:"00:07:45-00:15:02",topics:["ASIC","Bitcoin Mining Hardware Market","markets"],type:"youtube",weight:8.467833996035228},{boost:0,date:1671029781,description:"Aftermath of the crypto market crash: Financial standings of DCG and Genesis",episode_title:"Café ₿: GBTC was the Genesis of the Crypto Contagion w/ @samcallah",guests:[{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@Meditation_Man",profile_picture:"https://pbs.twimg.com/profile_images/1597303881339314176/kFqDWvq0_400x400.jpg",ref_id:"cf7119ec-50a5-4ba2-a9a6-4a24835f3364",twitter_handle:"Meditation_Man"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"},{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:" @samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"ee5d0119-780d-4539-9b84-83025e95c03f",twitter_handle:"samcallah"},{name:"@sonofsats",profile_picture:"https://pbs.twimg.com/profile_images/1593080311000211456/Dr_NQ9Iw_400x400.jpg",ref_id:"07f15eea-1f9a-41bc-b974-ffd370885708",twitter_handle:"sonofsats"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/75d674de-3859-49f5-abcd-927017e3a24f/b763dc91-acba-4530-9c22-88fea8193185.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"7b90a2ff-ac29-43a9-9911-0eec916e3088",show_title:"Swan.com",text:"happens to DCG? What happens now? Are these guys in trouble? What do you think? DCG and Genesis are definitely in a tough spot right now because basically they basically have huge holes in their balance sheets from having exposure to all these blow ups. Genesis had exposure to three AC. Like I just said, they also had maybe the worst trade in history when they traded $1 billion worth of Bitcoin for $1 billion worth of UST with the Luna Foundation, which basically went to zero. So they gave, like, the hardest money in the world for an Elgo stable coin. And so they got crushed on that. They got crushed on three AC, and then they had 175,000,000 trapped on FTX when that collapsed. And so Genesis has a huge hole in its balance sheet as well as DCG, because DCG actually bailed out Genesis after they blew up from three AC. And then DCG has been kind of they have a ton of debt on their balance sheet now after they did that. So essentially, they took on that Three Arrows Capital loan, that $1.1 billion hole on Genesis. They basically just assumed it on their balance sheet. And then they also took out a $575,000,000 loan with Genesis to basically try to buy more GBTC shares themselves to try to prop it up. And if you look at, like, their buys, you can just look at their SEC filings. And when they bought the GBTC shares, they're down about 77% on those GBTC purchases themselves. Basically, the problem is liquidity here, where Genesis needs liquidity to fund withdrawals and pay its creditors. But they don't. They have all these, like, long term investments on their balance sheet. They basically have a ten year loan to DCG. So that's not like a short term that's not liquid. And they also have a lot of GBTC shares which aren't really liquid for Genesis or DCG, because there's a rule where if you are the issuer of a security like Genesis or DCG, you can't sell more than 1% of the outstanding shares for every quarter. And so right now, DCG owns 66 million shares of GBTC. But according to that rule, they can only sell about 6 million or 7 million shares a quarter. And so that's why it's extremely ill liquid right now that they have all this GBTC on their balance sheets. And so basically, they're desperate for cash. And DCG owes Genesis $1.7 billion, and they're both trying to fill that hole. And so, yeah, the question becomes, what happens to DCG? What options do they have? What does it mean for GBTC holders and what does it mean for the price of bitcoin? And there's a lot of options they have. They can sell GBTC shares. But it's like I said, there's a rule about it. And I think they are doing that right now. I think that's why you're seeing the discount widen right now. You're seeing Genesis and DCG probably selling what they can, according to that rule, to try to raise cash. But again, that's not even close to the $1.7 billion hole that's in their balance sheet or just that they owe to Genesis in terms of DCG. And so that's not enough. So what else could they do? Well, DCG could raise funds. It was previously valued at $10 billion. It'd probably be a fraction of that today because that was at the top of the bull market. And so there's still value in DCG. They have a giant venture portfolio, and they can kind of leverage Grayscale itself. So Grayscale still brings in $300 million in fees a year. And so they can leverage that annual revenue to try to raise funds, to try to raise cash, essentially, so they can leverage those future cash flows. And then they have assets like CoinDesk and Foundry. They have those GBTC shares. That's about 10% of the total supply right now. They have those. They can leverage those to raise money. They also have bankruptcy claims at three AC and FTX and elementary Research. You don't know what's in that value there, but there's probably some residual value in those bankruptcy claims. And so they can leverage all those assets to raise capital. But again, that's probably not enough. And then the next thing they could do is they could sell the assets themselves. So there's a rumor that they could sell Coin for $300 million because they have consensus conference, and they actually make like 50 million in annual revenue at Coin. So they can sell that asset. They could sell Grayscale itself to another sponsor, and that would probably bring in like 400 to 500 million. But again, it's still probably not enough for them to fill the hole. And why would they sell Grayscale the trust? Because it would basically put them out of business because that's their big cash cow. And so they would basically sell the trust to raise all this money to try to stay alive. But then why even stay alive? Because you just sold your main cash cow. The next thing they could do is they could restructure the loans. And so they have a bunch of loans with Genesis and you could restructure the loan so that both parties could have more runway. And so it's the best interest, kind of, of both parties to negotiate a deal to allow both parties to avoid bankruptcy. And so you can do a lot of different things. It could raise a little bit of money for the reasons that I just said, and they could give some of that to Genesis to kind of help them pay off their withdrawals and stay alive a little bit. The Genesis creditors could roll their debt into DCG warrants so they can have a senior claim on the cash flow from GBTC. There's a lot of different ways they could kind of negotiate their debts to try to keep themselves alive. And I think that's probably what's happening right now. It's probably quiet. They're trying to figure out how they can kind of manage this and all of these things, like selling off the trust to a different sponsor, that wouldn't affect GBTC holders at all. I mean, that would just change the sponsor and none of that would affect GBTC shareholders. Now, what would affect GBTC shareholders if they seek something called Reg M exemption? And so if the SEC approved this, grayscale would have to apply for Reg M relief, which would allow GBTC shareholders to redeem their shares for the underlying assets at a one to one ratio. And so it basically eliminate the discount to NAV overnight. And so that 45% would disappear. GBTC shareholders would be able to wait. Let me see if I understand this right. You're saying that under Reg M, they would redeem in kind, meaning shareholders would get the bitcoin. Yeah, if the Sac allowed that, they would have to basically approve in kind redemption for shareholders to take custody of the underlying bitcoin. But this would pose a lot of challenges for GBTC shareholders because a lot of it is in those retirement accounts that aren't legally allowed to hold spot bitcoin. But they could redeem at one to one in cash, too. So it wouldn't be the worst thing for them either. They would just get cash, but it wouldn't be a 45% discount. Then it would be a wow, that. Actually seems like a pretty reasonable solution. Yeah, no, it is. It would be the best solution if you're a GBDC shareholder. Right? Yeah, I would definitely say that. I just don't think it's going to happen because Reg M exemption and an ETF approval are pretty much the same thing. I mean, you're basically giving Grayscale the ability to create and redeem shares simultaneously. And so it becomes political, where the SEC would be seen as supportive for the cryptocurrency industry in the wake of the FTX collapse. In other words, screw the TBDC shareholders. Like, screw all you guys. This is important to us politically, so you're just going to have to suck it up. That's messed up. Yeah, exactly. Yeah, that's exactly what's happening. And so they could do that. I just don't think it's going to happen. Now, here's where it gets interesting, is because there's no reason why Grayscale can't offer redemptions today. And if they actually cared about GBTC shareholders, they would allow that. When you say offer redemptions, what do you mean by that? Like, redemptions in kind or what are you talking about? I'm talking about redemptions in kind. So back in 2014, actually, the trust was doing this. So it was allowing the issuance of shares and the redemption of the underlying bitcoin. But then they got a cease and desist letter from the SEC, and this was kind of finished in 2014, where they had to stop doing that. Ever since then, they haven't allowed redemptions because they got a cease and desist. They're like, hey, you're not need cap. You're violating reg. M. You can't do that. And and Grayscale was like, okay, but the key point here is that it's only a violation of Reg M if Grayscale is issuing and redeeming shares at the exact same time. Now, when the premium was there, they were issuing shares like crazy because all these institutional investors were putting on this trade. And Grayscow, can you unpack that? I'm sorry to interrupt you there, but what does that mean at the exact same time? It doesn't make sense to me. What does that mean? So, like I said, an ETF can issue and redeem shares at the same time to keep the trust in NAV. That's what I mean. Right? So that's what I mean by at the same time. They can basically fluctuate and redeem and issue it at the same time. Right. And so after they were doing they got the cease and dislike from the SEC, they were essentially only issuing shares. They weren't redeeming the shares anymore. Hey, Sam. Sam, why does the SEC zero in on that particular issue? To determine that something is an ETF versus not. That's just a rule from the Exchange Act, where it's just only certain securities can do Reg M, essentially, where they issue a redeem. Usually it's like Treasuries and money market funds and things like that. It's just in the laws since the 40s or something. 30s or 40s. What we're trying to zero in on is why. I don't understand that part. We don't have to get yes, it. Doesn'T honestly, yeah, it doesn't seem important. Let's move on. They were issuing shares like crazy when they were putting on a premium trade. So they created 422,000,000 shares from January 2020 to March 2021. Now, once the premium trade disappeared, they haven't issued or created any new shares, so it's stuck at 692,000,000 shares. And so since they aren't issuing shares, they can allow redemptions right now legally. And this would close the NAV to discount almost overnight, because all of these GBTC shareholders, the accredited investors, would be able to basically have a reverse arbitrage where they could sell GBTC or redeem GBTC shares for spot bitcoin underlying in the trust and take that bitcoin and then sell it for dollars and collect the difference in the discount. And so you would see that discount get armed away extremely quickly if DCG or Grayscale just allowed redemptions. And they could do it legally. There's literally it's kind of an administrative thing, basically. If I understand right, they would have to make a filing with the SEC and say, we're no longer issuing shares, we're now redeeming shares. And at that point, they can just go ahead and do it. Yeah, exactly. Honestly, the negative to the sponsor would be that they can't collect the 2% on the value of the underlying asset. It starts to erode their assets under management, so to speak. That's exactly right. That's why they're not doing it, is because as people would redeem the bitcoin, it would be less bitcoin in the trust and that would lower their fee and that's their cash cow. And so the premium trade added bitcoin to the trust and it also added a ton of buy pressure to spot bitcoin, because people would put on this trade and the bitcoin would go in the trust and it would never get sold, it would just sit there. But if they allow it to happen. So they're trying to figure out right now, how do we stay alive without losing the assets under management, which is bitcoin? It's ideal for them to keep the bitcoin in the trust, basically, because, by the way, 2% is a gigantic amount on these assets. Oh, yeah. That's another reason why you can be critical of DCG, because the Toronto ETF is a 1% fee, and then there's another similar Osprey bitcoin trust, that's zero point 49% fee, and there's no reason to have a huge management fee for these trusts. I mean, it's a gigantic cash cow. It's unbelievable in the gold world. If you were to compare it to the largest ETF in the gold world, which is GLD, I think the sponsor collects 15 basis points or something like it's some really small amount. But the point is that if it's worth tens of billions of dollars and it starts to turn into some real. Money yeah, it costs, like, less than $1,000 to set up a trust. And basically all they have to do is collect the bitcoin, but then they just, like, give it to coinbase. So they don't really do anything. They literally just sit there and collect the 2%. Yeah. Depending upon how you manage it, the operational cost of administering one of these things could be like 100 grand plus a month. But, I mean, that's a drop in the well compared to the well collecting. It's unbelievable. Yeah, but you have to understand, like, redemptions. If they allowed redemptions, it would be good for GBTC shareholders, it would be bad for spot bitcoin holders, because, like, I said they would put on this trade where they would redeem GBTC shares for spot bitcoin and then sell the spot bitcoin to collect the difference. Where's the premium pressure in the market right away, basically. Yeah, exactly. They would meet in the middle, so the premium would meet in the middle and the spot would go down. Meet somewhere in the middle, right? Yeah. I mean, the discount would go to NAV, so GBCC holders would love it. But the reason that's happening is because the bitcoin is leaving the trust and theoretically, those institutional credit investors would sell that bitcoin to collect the discount that currently exists. So whereas the premium trade added a ton of buy pressure to spot bitcoin, if they added redemptions, it would actually add a lot of sell pressure to spot bitcoin. That's assuming that they want to hold dollars in the end, though, right? Yeah. That is assuming as the discount. There'S going to be an arbitrage. The bottom line is, if somebody can arbit and collect a spread, they're going to. Right? I mean, that's just going to happen. What is the fiduciary responsibility of the trust? I guess my question is, is there any conflicting fiduciary kinds of responsibilities at this point during whatever this process that you're talking about is going to happen? Yes. I mean, this is why there's been a recent lawsuit that just got filed by Firtree saying that Grayscale basically breached the trust agreement by not allowing shareholders to review relevant documents, as well as not allowing a redemption when there's no legal reason for them not to allow it. And so I'm not a lawyer, but they're getting sued for potential mismanagement or wrongdoing of the trust because they're basically hiding behind this idea that they're going to get approval for BTF, because that would allow the discount to disappear, but then it would also allow the bitcoin not to leave the trust. And so it's their best option. Right. It's the best option for GBC shareholders, but it's also the best option for Grayscale because they would get to keep their AUM, but they keep getting rejected. Right. And the SEC just had a response on December 9 that basically was very like they were just like, this isn't happening, is how I would summarize it. And so Firtree, in that lawsuit, they're saying they keep hiding behind this idea that they're going to get approved from an ETF and that's why they're not allowing redemptions right now, but it's not going well and GBTC shareholders getting hurt for it. Yeah, that seems like a pretty bullshit excuse because we're going to become an ETF, therefore we're not going to I mean, that's pretty bullshit, obviously, to me anyway. And the way they kind of change the trust charter over the years, that's another thing they have a problem with, because shareholders used to have kind of ways they could vote greater than 75% to avoid any kind of, like, liquidation. They. Had some rights before, but as of 2017, Grace Kell basically removed that in the trust. And now it's basically all in their court in terms of what they can do. And so there's a lot of issues around how they change the trust charter and basically give all the power to Grayscale and not to any power to the shareholders. And that's kind of all in this lawsuit that just came out, like, last week. But it's been an ongoing thing for years now. ",timestamp:"01:24:54-01:44:01",topics:["DCG","Genesis"],type:"twitter_space",weight:16.40026499856909},{boost:0,date:1677582e3,description:"The goal of Blockchain Boy",episode_title:"Ep. 514 The Future of Crypto in the Media with Blockchain Boy",guests:[{name:"Lucas Dimos",profile_picture:"https://pbs.twimg.com/profile_images/1092408696838197250/n0-St2nZ_400x400.jpg",ref_id:"9ac17e2f-49bd-4fc5-bfe5-2f380ca63574",twitter_handle:"lucasdimos"},{name:"Blockchain Boy",profile_picture:"https://pbs.twimg.com/profile_images/1602154101642592256/A0OX97CT_400x400.jpg",ref_id:"4b070a6f-bcc8-4708-abaf-cc830709600f",twitter_handle:"BlockchainBoyy"}],hosts:[{name:"Aaron Malone",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"bd103540-8c0a-4ab3-b5cd-24a3f2c43ab2",twitter_handle:"pizzamind"},{name:"Bryce Paul",profile_picture:"https://pbs.twimg.com/profile_images/1182725652794892288/QbDOKHcP_400x400.jpg",ref_id:"0d670dbf-f434-43b6-b454-8e5345d7ee51",twitter_handle:"BrycePaul101"},{name:"Pizza Mind",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"16cb01cf-9f04-45db-a440-47259b02b86a",twitter_handle:"pizzamind"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/93a6fe5b-364c-43f4-9f38-7da3e811460b.jpg",keyword:!0,link:"https://audio1.redcircle.com/episodes/68f31cee-f404-40fe-85d7-a406019e916f/stream.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"2485d5dc-6159-4638-aef1-e645f226a8a1",show_title:"CRYPTO 101",text:"gamble to bet on them. Like anything is. Same thing with Raddix, like I mentioned before. Although anything but salon or cardano I'll just say. That interesting take. All right, yeah. Could you expand on that last point? Anything but solana and cardano. What's the reason? That's half a joke. I don't mind cardano, but I think Salona is pretty centralized. VC garbage. I've been calling it Mid forever, and I felt very vindicated when it finally shit the bed. Fair enough. Well, you are only a couple of years away from really being able to do whatever you want in life, and I mean whatever you want. Your businesses are going to be able to be ran on autopilot. You're going to have more money than you can count in a multitude of different currencies with the way things are. Headed to be able to rent a car in the States. Yeah, well, you can't do that yet. But the point I'm getting at is what are your real dreams and goals? Like, when you're fully empowered to do literally anything you want in this world, what do you want your impact and your legacy to be? That's a great question, and I'm still figuring out what I really want to do with the rest of my life. I just know that I really like building cool things with cool people, and I think I'm always going to do that, no matter whether it's big or small. I think it's just I have to do something. I'm like a shark. Sharks have to keep swimming or they sink. Right? And so it's very similar with me. Maybe I'll have some more time to go live in the country and be away from people for times. But no, I really like empowering people to be their best selves. That's really what makes me the happiest, is, like, I'm a very loving and caring person, and I love to see people do good things and succeed. So I would really love to get into sort of micro loans and sort of entrepreneurship guidance and maybe even ethical VCs, because I don't think a lot of VCs are very ethical. And so I'd love to do something along the lines of that to empower more entrepreneurs to have an effect in their community and environment outside of Web Three, too. I've been doing micro loans on the platform called Kiva for many years, and I think it's super cool and needs a Web Three version. Yeah, I've actually never heard of Kiva. Tell us a little bit more about what micro loans are. And has that been a way that you could generate passive income or anything? No, it's just mostly a tax write off for really rich people. It's not like super well known, but you get to actually empower entrepreneurs in other countries. Oh, there's Jonah. Jonah. I'm on a podcast. Oh, he's bringing stuff. Jonah. What's up, brother? Thanks, bro. No, he's one of my fantastic team members over here. Thanks, bro. I wish I got a coffee delivery in the middle of podcast. That was sick, wasn't it? Look at that. Yeah, look at that. Dude, he hooked me up. I bet there's even an espresso shot in there. That's crazy, man. Fantastic. So where was I? Oh, yeah. So you can empower entrepreneurs from other places around the world who need maybe an $800 loan to get more fertilizer for their crops, to double their yield, or who are opening a small store in their community. And it's a way because charities actually can be actually very damaging ",timestamp:"00:21:17-00:24:30",topics:["Blockchain Boy"],type:"podcast",weight:79.08077270705402},{boost:0,date:1642464e3,description:"Channels jamming and Lightning invoice on the Lightning network",episode_title:"Lightning for Plebs - TABConf 2021",guests:[{name:"ketominer",profile_picture:"https://pbs.twimg.com/profile_images/1245972079528329218/YDUD9N2Q_400x400.jpg",ref_id:"2f8b0b59-6f23-4c89-973c-668cc7666998",twitter_handle:"ketominer"},{name:"Ryan Gentry",profile_picture:"https://pbs.twimg.com/profile_images/1362751223217160203/ekMa_yY-_400x400.jpg",ref_id:"8fe78b55-bc38-40df-9cb5-ffd5c84166a2",twitter_handle:"RyanTheGentry"},{name:"Dread",profile_picture:"https://pbs.twimg.com/profile_images/1532557131819491328/vvs1cD-7_400x400.jpg",ref_id:"e61af76b-8fbd-4719-b753-0a70edd22fa8",twitter_handle:"PoleVaultDream"},{name:"Andre Neves",profile_picture:"https://pbs.twimg.com/profile_images/1604172627550969856/bYCGb7Ev_400x400.jpg",ref_id:"227e071d-f8a6-4137-8078-729fa9eb3a13",twitter_handle:"andreneves"},{name:"Nate G",profile_picture:"https://pbs.twimg.com/profile_images/1542983032507858944/9w_UUx5Z_400x400.jpg",ref_id:"bda29551-f17f-452c-9204-4d6cafdf4f3b",twitter_handle:"natecgriffin"}],hosts:[{name:"TABConf ",profile_picture:"https://pbs.twimg.com/profile_images/1596233571521499138/YE8Us_Ml_400x400.jpg",ref_id:"d2f50d77-ec8d-4554-bc40-387ababbb536",twitter_handle:"tabconf"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e7d2a4ca-6b44-4a45-a94c-6f48987979f7.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=mQOBuXsGZt0",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"cd29b1a1-f94b-4eee-84ce-ddf8a4fcb0c5",show_title:"TABConf (The Atlanta Bitcoin Conference)",text:"let's theorize a little bit. You know, I know, like, one that always, you know, the the Dodge's always point out is the flood and loop attack, right? Which I think is like mostly mitigated by anchor channels. But what are some things that, you know, like, for instance, somebody a country that really doesn't like Bukle and El Salvador. Like, what are some things that you think they could do to try and mess with their infrastructure? What were some things you'd watch out for? Jam all the channels. All of them. Just jam them all. Okay. It's a real thing. Channels have limits in HLCs and in flights. And also there are a couple of ways where you can essentially deploy very small sorry, very small value payments in terms of let me rephrase large volume of payments with very small amounts. And then you can also lock up liquidity on routes by using small number of payments with large amounts. So for making a payment through Ryan and Ryan's node goes offline after the HLC sent, I now have liquidity stuck on one side and I can't do anything until it settles, right, until it cancels or airs out. So imagine someone spending an attacker, spending up hundreds of nodes, deploying some capital to the network, and then using some form of scripting to jam a lot of channels. All of a sudden in El Salvador, you can't make a payment through open node to buy your McDonald's, right. Because channels are jammed or liquidity is not unavailable. So channel jamming is one. I guess spamming and probing is a big one as well. On our nodes at least, we're seeing the numbers vary, but any given month is like 50%, 60% are probing, probing payments and probes are essentially I'm trying to get an estimate of whether this payment will clear and I'm trying to get an estimate of the fee that will cost me. So a lot of wallets do this probing mechanism to find out for users. And so, hey, your payment is 1000 SATS. It's going to cost you ten stats to make this payment and you send that fake payment across once the returns failed back, you now have a very discreet estimate. We're seeing lots of spam in the network, but again, it's in its infancy. What happens if someone is actively trying to spam it? Twenty four seven? I think we have yet to see what it's like. And there's also a vulnerability in the invoices, right? Like if you give an invoice out, like let's say you're asking for tips on Twitter, or you put an invoice out on a post, you're showing your information, right? Like they can see your note at that point. So I feel like, what is it, about twelve that might solve that, but things like that, maybe not. Things that provide more privacy for us. Would be good to be able to remain anonymous as possible while still conducting your transactions. Rendezvous routing. Let's go from your lips to God's ears, man. Yeah, right now a regular lightning invoice can be decoded and you can see. Imagine that I give you an invoice, you pay it and you could decode the invoice and says, that is actually going to me. Right? But if I can give you an invoice where you don't see where the final destination is, that protects your nodes privacy, but you still get paid for it. So that's something that hopefully in the future we can get going. Is rendezvous the same as trampoline? No. Yeah, you give me that. Fight for it. You're going to get in trouble asking that. I think conceptually, high level, they're the same. But this is the type of thing where it's like the differences are so small, but so important that Tbast and Connor would like get into a fistfight or something. Hilarious. Yeah, I think all of those attacks are. The thing that I love about the Bitcoin community is that we're very honest about this type of stuff and we're continually critically thinking about what are the ways in which this could fail, what are the ways and thinking about what are the ways that we can protect ourselves against these adversarial environments. Because absolutely, I know it's like the protocol developers a lot of the time are kind of like, this is ridiculous that you guys are having fun and making friendship channels and stuff. Like, you know, this is going to be an adversarial environment. And I think we are aware, but it just hasn't been the case just yet. And so I think kind of to close here again, this has all been about lighting for Plebs. I'm curious. The Plebnet now, I think is it like 1000 registered nodes. 5000 registered nodes. Holy shit. Thousand nodes. Okay, 1000 registered nodes, 5000 users, which is incredible. ",timestamp:"00:24:02-00:28:52",topics:["Lightning Liquidity","Lightning invoice","Lightning channels jamming"],type:"youtube",weight:8.078713541988659},{boost:0,date:1637366400,description:"Education efforts and safety regulations in the nuclear energy sector",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"475acbce-5a5c-4881-a93d-7d41edf1ae84",show_title:"Compass Mining",text:"Eric, I wanted to pick up on that note a hint to you next exactly for the reason that I know you work in a lot of the education efforts and dialogue and conversation. And as I'm sure we're all familiar, facts and data don't always win the day, and bitcoin people know that as well as any other industry. I'm just curious if you have any extra color to add on how those conversations are going in terms of education and presenting the tech as it stands, reliability, safety and just general promise. How are those conversations going? Well, I think you're exactly right. A lot of times in our industry, we argue with facts and data in the face of emotion, and it doesn't always work. I think what's important, and I take this line from one of my colleagues in the industry it's no more and fearless. And the more that we talk about what our real record is. And I think we've got a record to be proud of, especially here in the United States, since Three Mile Island, where we've not only done tremendous work in upgrading safety standards and operational standards here in the United States, but we've also done a lot of really important work in terms of regulating ourselves. Coming out of Three Mile Island. We established the Nuclear Regulatory Commission. We used to have the Atomic Energy Commission, which had the dual mission of promoting the industry and guaranteeing its safety. And it was decided by President Carter and Congress that those two missions were incompatible. We needed to break this apart. So we created the Nuclear Regulatory Commission, the Department of Energy to it on the promotional aspect of that. So that was one thing was great. We have a very, very tough regulator. There are two resident inspectors at every plant in the United States. And those guys and women and women have the ability to shut those plants down if they're operating unsafely. It's never happened, but they do have the authority to do so, and people need to know that. It's something that's very important to know. The other thing that's important to know is that also growing out at Three Mile Island, we established something called the Institution of Nuclear Power Operations, which was an internal industry peerreview group where we would all evaluate each other's operational safety together and decide and rank our plants according to how well they matched up against our standards. Column one through column four. And the fact is that within our business, you're known, I mean, number one is the best and number four is the lowest. And if you're a plant manager. You're running a plant. You following the info column force into your career. We do not tolerate that kind of operational pace in our industry and we got to get people up at the very top because the fact of it is that we're held to a different standard than other industries and we're not afraid of that. We've been held to different standards now for a very long time. We're not afraid of that. And we need to tell that story. We need to be very out front about that. A lot of really talented social scientists who look at our industry did some research a couple of years ago and they found that a lot of the public still has what they call existential threat about nuclear power. It's born out of the fact that we're born out of a weapons program. Even the first commercial reactor in the United States was built by the United States Navy under the supervision of Hymen Rica Over. You pile that on top of you can't see radiation. You can't smell it, you can't taste it. It feels like a risk that you can't mitigate when in fact, we know what we can do and we can what we need to do is we need to meet people where they live and we need to address their fears and let them ask any question that they like. We want to let them know that we have safety systems on top of safety systems that guarantee the operations of our plants. We've got to talk about things like the people who seem to support us most in the world or the communities that are closest to our plants. They know the people who work in them. They know how much their communities mean to them and when they go to work every day. They know that they're guaranteeing not only the safety operations of the plant, they're also guaranteeing the continued operation of economic engine for the community that they live in. These plants throw off tens of millions of dollars in property taxes. They provide direct support for education and first responders, public safety, public libraries. I mean, they're really, really very important to the communities that they're based in. So I believe as long as we're upfront about who we are, what we're doing, meeting people where they are and addressing their fears directly, I think we're in a much better place than we were, let's say, 30, 40 years ago. And I was very small and still remember my father telling me about his tour of TMI back in the ",timestamp:"00:24:37-00:29:38",topics:["Nuclear Energy Education","Nuclear Energy Regulations"],type:"youtube",weight:8.023174886839682},{boost:0,date:1596686400,description:"Environmental Issues in Planet",episode_title:"Chat 45 - Bitcoin an Energy Revolution A panel at the VOB Conf",guests:[{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Christopher Bendikson",profile_picture:"",ref_id:"d72ead54-7bff-4874-870f-123e665fddfd",twitter_handle:""},{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"4fdf8ab1-a3e8-4390-b618-a8a915fa3f68",show_title:"Bitcoin Audible",text:"issues that we have on the planet. Today are how is steel produced, how are metals produced, how is concrete produced, how is electricity produced and how it's farming done. Everything else makes almost no difference. Those are the big issues. If our ground is in any way. It doesn't matter how much energy we use. If our mining and our metal production is done in a clean way, it doesn't matter how many metals we use. The earth is completely full. The cost of the earth is just materials. So if we're looking at the long term sustainability, it's a question of how these couple of processes are done. And so the question of bitcoin's impact on that gets such a small percentage of consumption. The question is more of which way does it incentivize production? Because if you see even a small swing in the way that if bitcoin for example, is able to balance grids and enable them to use higher percentage renewables, then you'll see a higher renewable penetration and you'll see overall lower utilization of fossil fuels than you would in a situation without bitcoin. ",timestamp:"00:29:09-00:30:22",topics:[],type:"podcast",weight:7.965680956840515},{boost:0,date:1672207217,description:"Satoshi Nakamoto on Double Spin, Proof of Work and transaction fees",episode_title:'The Orange 🌞 Reading/Discussion "The Book of Satoshi" & Bitcoin News',guests:[{name:"CouncilmannJamm",profile_picture:"https://pbs.twimg.com/profile_images/1251040014152024066/dD3b2eA4_400x400.jpg",ref_id:"6c989c2c-d24d-49a2-8eb1-1d2f1c47f347",twitter_handle:"jamm_councilman"},{name:"thotsnplayerz",profile_picture:"https://pbs.twimg.com/profile_images/1608733749663109120/wwYEZgF2_400x400.jpg",ref_id:"66bbe365-9e85-4c34-9d51-39d8b49937b7",twitter_handle:"thotsnplayerz"},{name:"Will Schoellkopf",profile_picture:"https://pbs.twimg.com/profile_images/1487515153302130691/t5sDMzZW_400x400.jpg",ref_id:"461e2245-1672-4fa1-94f5-7aaf1afa531f",twitter_handle:"realBitcoinDog"},{name:"OKIN_17",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"dbcdeab8-4824-43f7-aeb8-2b9eda6cbbad",twitter_handle:"OKIN_17"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"},{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ecefba20-39fd-4974-8388-066857965b2a/cf486c39-08f9-4ada-9b72-7a297ad74d74.mp3",node_type:"clip",pub_key:"",ref_id:"bd8acc65-31a6-4d6c-93e2-cb91d3909825",show_title:"Satoshi’s Journal",text:"15. It's entitled more on double spend proof of work and transaction fees. In this exchange, Satoshi provides several clarifications and discusses compensation of miners, ie. Nodes via transaction fees once the entire supply of Bitcoin has been created. So once again, he's asked about that. On Monday, November 7 17th, 2008, at 904, Satoshi Nakamoto wrote I'll try and hurry up and release the source code as soon as possible to serve as a reference to help clear up all these implementation questions. Ray Dillinger, who goes by I Guess Bear, wrote when a coin is spent, the buyer and seller digitally signed a blinded transaction record. Satoshi Nakamoto replies only the buyer signs and there's no blinding. If someone doublespends, then the transaction record can be unblinded, revealing the identity of the cheater. Identities are not used and there is no reliance on recourse. It's all prevention. This is done via a fairly standard cut and choose algorithm where the buyer responds to several challenges with secret shares. Okay, so I'm trying to remember who this person was. I think this is Ray Dillinger that said that. So Ray says this is done via a fairly standard cut and choose algorithm where the buyer responds to several challenges with secret shares. Satoshi says no challenges or secret shares. A basic transaction is just what you see in the figure in section two. A signature of the buyer, satisfying the public key of the previous transaction and a new public key of the seller that must be satisfied to spend the next time. Then Ray Dillinger says they may also. Receive chains as long as the one they're trying to extend while they work, in which the last few links are links that are not common with the chain on which they are working. These they ignore. Satoshi says. Right. If it's equal in length, ties are broken by keeping the earliest one received, and then Ray says, if it contains a double spend, then they create a transaction which is proof of double spending, add it to their Pool A, broadcast it, and continue work. Satoshi responds, there's no need for reporting of proof of double spending like that. If the same chain contains both spends, then the block is invalid and rejected. Same. If a block didn't have enough proof of work, that block is invalid and rejected. There's no need to circulate a report about it. Every node could see that and reject it before laying it. If there are two competing chains, each containing a different version of the same transaction, with one trying to give money to the one person and the other trying to give the same money to someone else, resolving which of the spends is valid is what the whole proof of work chain is about. We're not, quote unquote, on the lookout for double spends to sound the alarm and cast a cheater. We merely adjudicate which one of the spends is valid. Receivers of transactions must wait a few blocks to make sure that resolution has had time to complete. Wouldbe cheaters can try and simultaneously double spend all they want, and all they accomplish is that within a few blocks, one of the spends becomes valid and the other becomes invalid. Any later double spends are immediately rejected once there's already a spend in the main chain. Even if an earlier spend wasn't in the chain yet, if it was already in all the other nodes pools, then the second spend would be turned away by all those nodes that already have the first spend. Then Ray says. If the new chain. Is accepted, then they give up on adding their current link, dump all the transactions from pool l back into pool A along with transactions they've received or created since starting work. Eliminate from pool A those transaction records which are already part of the link in the new chain, and start working again trying to extend the new chain. Satoshi says. Right, they also refresh whenever a new transaction comes in, so Al pretty much contains everything in A all the time. Ray comments CPU intensive digital signature algorithm to sign the chain, including the new block Al. Satoshi responds It's a hash cache style shaw 256 proof of work partial preimage of zero, not a signature. Ray says, Is there a mechanism to make sure that the chain does not consist solely of links added by just three or four fastest nodes? Cause a broadcast transaction record could easily miss those three or four nodes. And if it does, and those nodes continue to dominate the chain, the transaction might never get added. And Satoshi responds, if you're thinking of it as a CPU intensive digital signing, then you may be thinking of a race to finish a long operation first and the fastest always winning. The proof of work is a hash cast style two shot, 256 collision finding. It's a memoryless process where you do millions of hashes a second with a small chance of finding one each time. The three or four fastest nodes dominance would only be proportional to their share of the total CPU power. Anyone's chance of finding a solution at any time is proportional to their CPU power. There will be transaction fees, so nodes will be an incentive to receive and include all the transactions they can. Nodes will eventually be compensated by transaction fees alone when the total coins created hits the predetermined ceiling. So they continue. Ray Dillinger then says, also the work requirement for adding a link to the chain should vary with the numbers of links adding to that chain in the previous week, causing the rate of the coin generation to be strictly controlled. Satoshi says right. Ray says you need coin aggregation for this to scale. There needs to be a provable transaction where someone retires ten single coins and creates a new coin with denomination ten, et cetera. Satoshi says every transaction is one of these section nine combining and splitting value. So I guess he just referred to him a section. So yeah, in that. Exchange they use the word note a lot, but in the context of that it's synonymous with miners, just to make that clear. So a miner of course, is a computer that is specifically used to mine Bitcoin. That's all it can do. And it validates transactions and the node is what? Verifies transactions. So, like on the Bitcoin blockchain, for you to be truly certain that your transaction has gone through a minimum of six, validations is required, meaning that six other nodes have looked at your transaction and deemed it verifiable. And once it's verifiable, you can essentially be confident that you have achieved, not consensus you've achieved, yeah, consensus, your transaction is good to go. And so Portland asked me a trick question the other day. He said, if there are five blocks that have been mined, how many times has your transaction been verified? And it just stumped me, I don't know why, because the thing that came to my head was that minimum six validations, I just was stumped. And he asked me like three times, and I said, I don't know the answer. And he says five. And anyway, so the answer was right in front of me. So every block is basically mined approximately every ten minutes, and in five blocks you can basically equivocate that to five validations of your transaction. The more validations of your transaction, the more set in stone, so to speak. That transaction is. So it's just like if you solve a problem, if I give you a sheet of paper and it says has an equation ten times ten and I give it to you and you have to write the answer on the paper while you put 100. And then I tell you to give that to six other people to make sure that your calculations are right. Those six people check, and they do indeed concur that ten times ten is 100. And since I made the rule, when I get those six confirmations from those six people that you did your math correctly, then that gives me confidence that the calculation is done is correct. And so that's what basically the nodes are doing. When you broadcast a transaction, the nodes are all looking at it, and it takes a minimum of six to basically solidify that into the bitcoin blockchain forever. That'll give you full insurance, full confidence that your transaction is good to go. And all that happens in basically six blocks, which is 60 minutes. And the beautiful thing about that is the fact that that's all being done with computers and no intermediary. Whereas if you were to go and swipe your card at McDonald's to make a transaction, you're doing that first through essential authority, and the verifiability of that transaction doesn't happen. And the finalization of it doesn't happen until basically 30 days when you get your bank statement, and it shows that you have a charge for $10 at McDonald's. So, relatively speaking, bitcoin is way faster than legacy systems. Although you can swipe your credit card fast and think that you have paid for what you think you paid for, there could be an error in the system, and maybe you could get charged falsely for something, or someone could go and double pay for something, or someone could steal your credit card and pay for other things. So that's the problem with legacy system, is there's just so many damn intermediaries, whereas bitcoin, you just freaking do your lightning transaction or your bitcoin on chain transaction, and there's no one in the middle. So it's pretty profound. ",timestamp:"01:07:07-01:19:03",topics:["Satoshi Nakamoto","Double Spin","Proof of Work","transaction fees"],type:"twitter_space",weight:23.245500377568373},{boost:0,date:1672167683,description:"Bitcoin as a superior savings system",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Beer and Plebs! 🍻😂🤌🏻",guests:[{name:"Dr. Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"51a969bb-dbf7-4d20-b128-74dcc5f560f6",twitter_handle:"VailshireCap"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"Laura Shin",profile_picture:"https://pbs.twimg.com/profile_images/1539462748173746176/hxR80FYT_400x400.png",ref_id:"a56a7b4d-edca-41d5-9d51-33396aa05b96",twitter_handle:"laurashin"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders Jensen",profile_picture:"https://pbs.twimg.com/profile_images/1382039124991954947/Wb9kT7MO_400x400.jpg",ref_id:"af45195e-77a6-463f-ba64-29c6b0437d9c",twitter_handle:"andersjensenorg"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2a1450bc-0649-4dc5-8ec9-1474af1ea1c3.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f7b6cfcb-7cd4-4401-a3fb-7735bb570c07/2ae49fca-a048-4a34-93b9-247513af5699.mp3",node_type:"clip",pub_key:"",ref_id:"433eb4ba-ba64-468f-9e3c-130fbc948adf",show_title:"Anders_🍆",text:"what. Do you do in your IRA? What can you put your money in that's going to be better? Well, the one I have doesn't have it's limited to some of the access. In fact, once I found bitcoin, those contributions stopped, to be honest with you. And, yeah, whatever they're in, they're in, but they're limited in where they can go, you see? So I'm letting that one ride out. Just another hedge, but everything else now, man, is straight. Bitcoin, brother. What's going on, Clark? Just chilling, man. Putting up some overhead storage in the garage. Take a couple of weeks off at the end of every year to recoup. Kind of feel blessed that I was able to work 50 weeks out of the year. So take these last two off. Yeah, on stage, Craig. Well, Jeff Ben, I don't know who else is going to Miami. ANZ and I, we're starting to spread our wings a little bit this year. We made it up to Charlotte for Halloween. Anderson pacific bitcoin. Now we're rolling into Bitcoin Day in Naples. It's been really cool to see all these other conferences and meetups start and look, I don't even care how small they are to get their foot in the door, but hey, we may have a dinner date with Fosse and Lawrence LaPard. They're going to be down there, man. So we'll hook up with them. And I think we're trying to get James Lavish to go. So when you get some of those quality folks showing up at a smaller type venue, it's really cool, man. You get to just hang out. You meet them offline, just the nicest people in the world. So if you're in the central, southeastern, southwestern Florida area and can make it over to Naples, yeah, we'll be there. Hey, shoot, I'm coming all the way from that west coast. If you're anywhere in the United States or anywhere in this universe, you should be at bitcoin day. It'll be fun. So the problem is, puppy. I think the reason why I haven't been given a feeling of 100% confirmation of our little gig there is probably because, as you said, they're trying to get James Lavish. If he's coming, I don't think there's any room left for us, bro. He'll be on stage with us if we do it. That's right. That's what we'll do. Just like Dr. Jeff came on. Toxic happier in Swan Dome, pacific bitcoin. But he was big timing us after 15 minutes. He just left. He just walked out. And you know why? Because he is part of a documentary. When is that coming out, Dr. Jeff? Well, first of all, I left because you always got to leave early to keep the people wanting for more, right? You can't overstay your welcome. So that's number one. That's the number one. Rule two, that documentary, I don't know when it's coming out. They're doing a good job with it, though. It's pretty sweet, but we'll see. So I think they interviewed a bunch of people at the conference, and I think they're going to try to get it out as a Netflix kind of movie. And I can't remember what they're calling it. It's like, God bless bitcoin or something like that. And just basically what bitcoin is. And I like to talk about sort of the social justice side of bitcoin and how it's meant for the plebs, not for the institutional elites and things like that. I don't know when it's coming out, but I'm guessing sometime maybe this year. I love it. Just like casually. So this documentary about me is going on the biggest network in the world ever called Netflix. No, we're just happy for you, Jeff. I'm looking forward to see it. I know if you're in it, it's going to be high quality work. So a quick shout out on that note to JD down there is Bitcoin Bacon. He does documentaries as well, and he's going to do one on toxicity. I'm honored and looking forward to play a small role in that. And yeah, that's it, I guess. But when it comes to bitcoin, really, the way I look at it is it's my love. If there's anything, bitcoin is love. And ",timestamp:"01:12:02-01:16:37",topics:["Bitcoin Hodling","Pacific Bitcoin Conference"],type:"twitter_space",weight:22.774441499003483},{boost:0,date:null,description:"Bitcoin Timechain: How Difficulty adjustment factors into the Timechain",episode_title:"Café ₿: Bitcoin News, Bitcoin Timechain ⛓Day w/ Ant & TC",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@Meditation_Man",profile_picture:"https://pbs.twimg.com/profile_images/1597303881339314176/kFqDWvq0_400x400.jpg",ref_id:"cf7119ec-50a5-4ba2-a9a6-4a24835f3364",twitter_handle:"Meditation_Man"},{name:"@TimechainStats",profile_picture:"https://pbs.twimg.com/profile_images/1316207411741569028/LpDkqBMv_400x400.png",ref_id:"48e0e34d-8e04-47c0-972c-96cda708a719",twitter_handle:"TimechainStats"},{name:"@TimechainCaL",profile_picture:"https://pbs.twimg.com/profile_images/1589772501638184961/0qP3C4Wk_400x400.jpg",ref_id:"72d94cc5-b62e-4fe2-8275-837eab35a74a",twitter_handle:"TimechainCaL"}],hosts:[{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"},{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/678e39f2-a92a-4745-b875-02645e38e747/9499bd7b-c204-4ad2-aa5b-d046f95f5a09.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"49fe88a8-79ec-423c-a550-a32eb875f090",show_title:"Swan.com",text:"And so I think the difficulty adjustment is a huge part of this, right? And so I don't know if either one of you guys can extrapolate on how the difficulty adjustment plays into this. Anybody could jump on that. I can comment. We could go for it. Yeah. So basically, depending on how quickly the blocks are coming in or how slowly the issuance of bitcoin is set in stone, or the targeted issuance is set in stone, so we know how many bitcoin should be mined in a given span of time. And so if blocks are coming in too quickly, in other words, if the timestamps are coming in closer than ten minutes, on average than every 2016 blocks, which is roughly two weeks, if they're coming in the way they should be. But if they're coming in quicker than the difficulty goes up, and it gets harder to mine. And the reason why they were coming in quicker in the first place is very likely because there were more miners on the network mining than there were the previous two weeks. And so they were hitting those blocks a little bit faster than they were before. So when the difficulty goes up, then all those new miners that just joined have to compete in a little bit harder fashion to bring in new blocks and you get the issuance back on track. And that's part of I think this is also like a very key point of what makes bitcoin hard money as well, right? Like the fact that we can predict how much bitcoin is going to be mined far, far into the future. We know with a pretty high degree of certainty that on average, for the next year and a half, 900 bitcoin are going to be mined a day, right? It might be like a few bitcoin more, a few bitcoin less, but in terms of any monetary system that we've ever had as humans, I mean, we've never had even anything close to this degree of certainty, right? I mean, it is fucking insane how crazy that is. Right. We have a totally automated system that handles the issuance of Bitcoin and there's really nothing else like it. It's one of the most exquisite engineering solutions ever in my mind. And the fact that it's such small lines of code, it's a beautiful system and once you fully understand or start to understand the way that it works, you'll lose a lot. It smashes a lot of the fudge out of your mind, like minor death spiral, stuff like that. Whenever you start hearing these headlines about price being a certain point and like, miners are going to go off the network and oh my gosh, Bitcoin is going to fail and die, they're not thinking about the difficulty adjustment when they write those types of headlines. Well, maybe they are, but they don't. Yeah. And the other thing that is important to remember is despite few lines of code, there's the whole fact that the code meets the real world through difficulty adjusted proof of work. So it's not just the fact that those in the mining portion of the architecture are having to expend real world energy at a real cost, and that this difficulty adjustment kicks in every two weeks to ensure a balancing effect. No matter how many or how few participants are mining in order to target ten minute average block times. This is where the rubber meets the road. It's code, it's real world participants, it's the boundaries and limitations of the expenditure of real cost and real energy. All these things coming together. And this is why this thing, I think, is so challenging for people who are on the outside just peering at the price and trying to understand what the hell is going on, let alone the whole fog and cloud of crypto and shit coins that just distracts and confuses. This thing is truly, truly special. ",timestamp:"01:14:46-01:19:27",topics:["Bitcoin Timechain","Difficulty adjustment"],type:"twitter_space",weight:7.870050430297852},{boost:0,date:1596671100,description:"Unfair ways Bitcoin mining is assessed;Electricity consumption",episode_title:"Chat_45 - Bitcoin & an Energy Revolution, A panel at the VOB Conf",guests:[{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Christopher Bendiksen",profile_picture:"https://pbs.twimg.com/profile_images/1362772558882484233/3nS-l35s_400x400.jpg",ref_id:"d99d354e-41d4-4117-9b70-05955a85f9da",twitter_handle:"C_Bendiksen"}],hosts:[{name:"Guy Swann",profile_picture:"https://pbs.twimg.com/profile_images/1401969630634196995/DqOuszMi_400x400.jpg",ref_id:"39c31930-d799-40a0-9a46-193117d03418",twitter_handle:"TheGuySwann"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"2b8ef20b-4134-4d6a-bb2f-ee72a42468d2",show_title:"Bitcoin Audible",text:"And I have to interject there too, that there is something important to keep in mind. When you look at different people comparing energy consumption, they very often talk about electricity consumption on a national scale. But that's not energy consumption. The electricity consumption of the country is only a small part of their primary energy consumption. So electricity is only, I think, a small double digit percentage of the total energy that we go through as a species. Sorry, go ahead. But I was going to say, in addition to that, not only is electricity a smaller percentage, electricity is a sizable percentage of total consumption, but for a given country, a huge percentage of most countries, energy use is outsourced. So if you're not a country like the US or China that's manufacturing for the world and you're a country that's importing, you are artificially reporting lower energy consumption numbers because all the products that made that everybody uses those emissions are reported under China or they're reported under the US. But in reality that's still energy consumption. So it's not really a fair comparison to say like bitcoin uses x amount of energy, like electricity versus x whatever small country, when you're only looking at the direct energy consumption in that country and not looking at the fact that they're getting all the resources from other countries that are consuming it elsewhere. Not only that, but you can flip that entire narrative on its head and say like when bitcoin uses more electricity than Chile, that means that even if Chile flipped their entire electricity infrastructure to try to mess with the bitcoin blockchain, they couldn't. Yeah, I mean, energy consumption is a good thing. It's just a matter of how it's consumed and how we produce that. Let me add one more thing. Everybody knows the market cap of gold, right? That's around 9 trillion. And that's 50 times more than bitcoin. And we know it from bitcoin. That by theory, if the bitcoin price is 9000 ethnic and by theory the production foster formed by bitcoin should also be 9000. It's not the case, I know, but by theory it should be the case. So now take gold. Honestly, nobody discusses gold. If gold, if the market is having a market cap of 9 billion and times 50 times more than bitcoin, then in case gold is produced, then what is in theory the production price of gold. That's the market cap of today. So 50 times more resources are being spent second by second, day by day, to somehow get gold out of good to ground. But this is not electricity. That's equipment and machinery and that's kind of, I don't know, all kinds of things which are working in some kind of gold mine. But isn't this also wasted resources to some degree? Nobody discusses this and it's 50 times higher at this point. I remember I remember a paper from Cruze Tomato that are exactly comparing metal mining with crypto mining. Oh, interesting. Okay. It was Nature Sustainability 2018. Bitcoin mining waste, ridiculously dangerous to the environment, like the cyanide that is used to extract the gold. And then if you just go through all of the environmental damage that gold mining does, bitcoin is like a space compared to what goes on in order to get gold out of the ground. And it was funny when gaming was brought up, I was speaking a concert, I think it was decentralized, in Athens Beach back in November and there were a lot of people there that is a stake and other nonsense. And I got into this big argument with someone that kept saying how bitcoin is so bad for the environment and mining can't continue to happen and how proof of stake of currency is the future. So it was a lot younger than me. And I asked him, do you play video games? I haven't played video games since I was about 21, 22. And I asked them do you play video games? And you said yes. And I said, well, how much electricity are you wasting by playing video games? Where is the productivity in that? So if you take all the gaming in the world, everyone that ever plays video games, you combine all that, how much electricity that is using, and please make an argument that that is more productive use of electricity than bitcoin, that is trying to give everyone politically neutral government free money. This is why this entire line of discussion is kind of like a bit of a red herring because the problem is that we don't have a good way to price externalities and if we did, then the price mechanism would take care of the rep. So I think it's partially done and it's partially I agree. I think a lot of it is a red herring and kind of missing the major point, which is the real environmental issues that we have on the planet today are how is steel produced, how are metals produced, how is concrete produced, how is electricity produced and how is farming done? Everything else makes almost no difference. Like those are the big issues. If our farms produce any way, it doesn't matter how much energy we use. If our mining and our metal production is done in a clean way, it doesn't matter how many metals we use. The earth is completely full. Like the cost of the earth is just materials. So if we're looking at the long term sustainability, it's a question of how these couple of processes are done and so the question of bitcoin's impact on that. It's such a small percentage of consumption. The question is more of which way does it incentivize production? Because if you see even a small swing in the way that if bitcoin, for example, is able to balance grids and enable them to use higher percentage renewables, then you'll see a higher renewable penetration and you'll see overall lower utilization of fossil fuels than you would in a situation without bitcoin. ",timestamp:"00:23:49-00:30:20",topics:["Bitcoin mining"],type:"podcast",weight:7.813010811805725},{boost:0,date:1637366400,description:"Bitcoin can act as a baseload for energy, including nuclear energy",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"42296529-2820-4c4f-be26-e12104e2b723",show_title:"Compass Mining",text:"it's about, like, the base load status of bitcoin mining and how the industry kind of use bitcoin itself. I'm assuming that it's not understood among most nuclear engineers or people working on these plans that bitcoin can act as a base load for energy. I mean, it's becoming a more prevalent talking point in a lot of different industries, especially natural gas. Is there an education initiative that's needed to that process, or do you guys see that it's already happening, that these plants are all across the US. All across canada and elsewhere, are already doing bitcoin as a buyer of last resort for energy? Back to you. Actually, yeah, definitely need some educational input there, I think, from other communities, because I think, like, one thing we need to understand, like, very few people today believe in bitcoin and bitcoin mining, and equally, very few people out there believe in nuclear, and there's a very fine nexus of people who believe in both. Right. So there's a big gap of knowledge in either industries about each other, and I think there's a lot of gaps to be filled there. One last thing I'll add to that point is this is something I've been thinking about for a while. I think sean connell tweeted this out too is like, I think bitcoin mining will serve as a global energy floor because suddenly you have a source, like a demand source, which will take up any energy above a certain price, and it'll just mine until it's profitable. I think it's going to have a massive impact on the energy markets, which people are authorizing right now, where a lot of these commodity prices are going to converge together because suddenly you'll realize that today, if I'm running a power plant and I'm selling my electricity to the grid, why am I doing it? Why don't I just mine bitcoin with it? Why sell it to the grid? Because I'm ten times more profitable just mining bitcoin rather than selling it to the grid. So if you believe in free markets out there and you believe in the economic incentives, then it just makes so much sense to these power providers. Just mine bitcoin because you don't even have to go anywhere. You can just colocate these in your own facilities and the footprint is so small, they're traveling in these mini huts where you can stack up these miners together and just mine on site and that you have a demand for there. So that's why I'm saying I think the grid will have to pay up a premium on top of the bitcoin mining for them to be incentivised to sell to the grid. And that's going to have massive ramifications for the energy market, which will completely change the game, I think, especially for all these advanced new technologies or other renewable technologies in the future. Yeah, peru is exactly right. We already have one example. Talent energy is building 150 megawatt mine as a joint venture with terror at Susquehanna nuclear generating station in Pennsylvania. That's going to be electricity that's flowing directly to their bottom line as bitcoin. When that announcement was made in July, after like a preliminary sort of heads up in an investor call in March, I was shocked that it happened that quickly. I mean, I'd been doing a lot of thinking about that and I didn't think it would happen as quickly as it did. Now that it has, now that they've broken the seal and, you know, as operators get their heads around this and understand that there are a variety of different models that they could use, they can do a straight power purchase agreement, they could do a joint venture. Maybe they do something as simple as taking some of the ample real estate they have inside the wire at these plants and just leasing it back to the mining company and maybe granting them access to office space for them to base. The employees are going to service that site and you can rely on the industry best security in nuclear. Physical security is credible on our planet. I think you're going to see more and more of these again. I talked to an industry executive just a couple of hours ago. He said he's up to his elbows and bitcoin miners coming to him. Okay, so it's happening. I'm doing my best to educate my members. I've held three webinars this year on the opportunity in bitcoin. I've been asked to establish a bitcoin cryptocurrency task force within NEI. We're going to be doing more events like this. So yeah, we understand what the. Opportunity is we're moving as quickly as we can and we're trying to get our people as comfortable as possible with it because we think there's a great future in it. That's insane. It's insanely awesome to hear all of that, especially, you know, building a task force internally to focus on this sort of stuff. Whoever that executives up to his elbows, he'll be, I'm sure, up to his eyeballs before too long or too much longer. But we're sort of at the top of the hour here and we want to wrap up relatively shortly. I wish we had time this conversation to go on for at least a couple more hours. This has been insanely bullish and insightful and like, just hearing you guys, you know, working full time in the nuclear industry, echoing a lot of the same things we talk about in our own niche, twitter circles and communities, we are speaking the same language and thinking along the same lines and it's incredibly, incredibly bullish. ",timestamp:"00:54:47-01:00:12",topics:["Bitcoin Energy Baseload","Bitcoin Mining","Bitcoin Education"],type:"youtube",weight:7.779880290018898},{boost:0,date:1596686400,description:"Impact of [[Electricity Consumption]]",episode_title:"Chat 45 - Bitcoin an Energy Revolution A panel at the VOB Conf",guests:[{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Christopher Bendikson",profile_picture:"",ref_id:"d72ead54-7bff-4874-870f-123e665fddfd",twitter_handle:""},{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"30641d73-c61d-47f4-bf37-f78566574dc8",show_title:"Bitcoin Audible",text:"kind of an inherent moral question there as well, is that do we get to subjectively put our values on to them? Like in making judgments over whether or not they can make that choice as to whether or not it is their value or not? And obviously, in a decentralized system, where are you going to do to stop it anyway? It's inherently an incredibly difficult thing to control or alter. Yeah, this gets to a very steep level of freedom versus coercion. Domini, to say that you watching a Netflix show is a waste of our common resources. I mean, that's not my difference. Did anybody compute how much electricity costs to watch 90 minutes Netflix movie? Honestly, there's research out there looking into data centers which is directly linked to subjectivity. So I have one student that looks into Amazon currently for the comfort print of Amazon, where you exactly have streaming as one source of electricity consumption. I made an estimate, I think two years ago of the electricity draw just gaming console Iceland in the United States, and it's on the level of 50 kilowatt hours. I like to make a couple of points here. I think that one of the important points to note is that electricity consumption is not in itself a bad thing. So electricity production and consumption is good, that provides value. The negative side is when there are externalities associated with how that is produced. So if we enable more renewables, more sustainable energy sources through bitcoin mining, then it's a net positive. I think the other part that is important to note here is that in the total scale of human energy consumption, bitcoin is nothing. It is completely dwarfed by any industrial process. Aluminum smelting, like concrete production, steel production. Bitcoin is such a small drop in the bucket compared to any of that, that any effects that bitcoin has on a more financial level, like if there's restructuring in the way that business is done, that will be far more significant than any effect of the direct energy consumption of bitcoin. And I have to interject there too, that there is something important to keep in mind. When you look at different people comparing energy consumption, they very often talk about electricity consumption on a national scale. But that's not energy consumption. The electricity consumption of the country is only a small part of their primary energy consumption. So electricity is only, I think, a small double digit percent of the total energy that we go through as a species. Sorry, go ahead. But I was going to say, in addition to that, not only is electricity a smaller percentage, electricity is a sizable percentage of total consumption, but for a given country, a huge percentage of energy use. Of most countries, energy use is outsourced. So if you're not a country like the US. Or China that's manufacturing for the world, and you're a country that's importing, you are artificially reporting lower energy consumption numbers. Because all those products that made that everybody uses, those emissions are reported under China or they're reported under the US. But in reality that's still energy consumption. So it's not ",timestamp:"00:21:14-00:25:05",topics:["electricity consumption"],type:"podcast",weight:7.691150903701782},{boost:0,date:1632355200,description:"Accessibility and the price of manufacturing potential ASIC home miners ",episode_title:"The ASIC Mining Hardware Market",guests:[{name:"Vincent Zhang",profile_picture:"https://pbs.twimg.com/profile_images/1158285609196109825/fuB-e6lm_400x400.jpg",ref_id:"98e7bc98-3a3b-4ddf-9b48-5dcd78973739",twitter_handle:"Whatsminer_MBT"},{name:"Vincent Vuong",profile_picture:"https://pbs.twimg.com/profile_images/1260974518547312640/n47yvbNL_400x400.jpg",ref_id:"8390e230-e36b-4e0d-9f5d-70c6635bf3c2",twitter_handle:"BitcoinVincent"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=qKeUCNXa4Uc",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"8dbb367b-5cba-4f05-a1db-104d0c66b579",show_title:"Compass Mining",text:"shift this exact same conversation into the accessibility and the price of manufacturing of hardware with a slant towards retail or home miners or hosted miners. If Damien doesn't mind throwing up my screen one more time here, I'll share it for you. In the market multiple times over the past, over previous market cycles, we've seen sort of small gimmicky devices that try and make it easier for people to mine at home. This one you see here, featured in a CNBC article with a variety of inputs there on some little plastic power strip is the latest version. We've also seen companies like Coin Mine try and offer products like this. How viable, long term or at all are these types of hardware devices when you're looking at a market filled with like top tier leading hardware, like what's miners manufacturing? And will this ever have sort of any place in the hardware market or are they mostly cyclical gimmicks that catch headlines, maybe sell a few units, but don't really have any profitability or long term lifespan? Curious to know both of your thoughts on these little devices we see popping up all the time. Vincent from what's minor? I'll toss it back to you and then Vincent from Compass, I want to hear your thoughts too. Yeah, so what we can see is in the year 20, 17, 20, 18, so people can easily mine at home because at that point of time the power consumption of the minus is lower and so the current brought by the minus is not so high. However, since 2019, so almost all the minus switched to more than 3000 watts. Okay, like our minus is 3400, 500 watts. So based on the 220 watts power, so the currency of the minor goes to 16 amp. So it is higher than the staff at home appliance at home. So we can see that some investors or some individuals, they have interest to invest because they might have some capital available, cash flow available, they just want to buy some minors and put it at home for mining bitcoin. So no matter this is interest or is kind of the investment, however, there are a lot of people try to do that. So from our point of view, this will not become the mainstream. Okay. Because right now you can see that the mining facility data center are becoming bigger and bigger. So earlier you hardly can see hundred megawatts mining farms. Right now you can see even one gigawatts mining data centers. So all those data centers are hosting the miners, most likely from the big investors. So this will consume, you can say 99% or 95% at least the supply capacity from our site. So the strength of our R and D will not be put to the 5% market. However, right now what we are trying to do is for mining business, one of the most important factor is that the power cost should be lower as much as possible. As lower as possible. So what we are trying to look into is how to reutilize the heat generated by the minus. So if we can reuse those heat generated by the minus, which means, for example, if we can share those hit at the power cost that we paid, which means you reduce the power cost to 20%, right now you have. So that's why we are looking into those areas. So how we can reduce the operation cost of the investors as much as possible. So that's why we spend a lot of time and they invested a lot into water cooling minus and the immersive mining minus. Okay. Because by concentrating more hardware together, so the heat generated by the miners may be reutilized in some of the cases, so it will reduce the cost of the mining. Okay, so this is the area where we are trying to work, because what we can see, at least from my side, I can see that the power cost of individual at home, actually it is not competitive. Okay. This will require the individual. Investors always should upgrade their or minus with the latest power efficiency ones. So otherwise it may not have the good profit level as they expected when the time goes. This is the share from my side. Yeah, it's interesting to see all sorts of creative solutions that homeowners try and make. And over the past year or two, or maybe a little bit more, we've seen, like you mentioned across the board, a crazy push to expand immersion mining tools and heat reuse tools for all sorts of novel and creative use cases. Again, to sort of maximize the amount of utility we can get out of a mining operation and sort of trim costs as well. Vincent, same question to you. Like what sort of utility or place in the market, if any of these sort of, not to be too critical, but kind of gimmicky small machines have when people are trying to look for cheap, affordable ways to start mining? Yeah, for sure. For me, I think that these smaller miners are like, especially retail miners. They're not 100% profit driven, so a lot of them are. They need to find alternative use cases. So a lot of people will run a minor instead of running a heater. Same thing, a little bit louder, but you still can heat your entire force. So by doing that, you kind of get two and one, and you're also mining some big one at the same time. And there's also people that are also interested in doing lottery mining. Lottery mining is basically solo mining with one machine where you have one in a million chance of getting it. But that's way better than winning it's, better odds than winning the lottery at least, right? So there's people that will do that and run their machines at Lost. And then there's people that just want to support the network as well, right? So people that want to just support the network, run a machine and kind of like put their vote in, cast their vote in, and that's totally fine. Not everything in the world is entirely profit driven. And then there's also use cases where sometimes when people have a solar set up in their house, right, the solar curve kind of goes up like this over time, where the peak happens in the middle of the day. In the middle of day is when people aren't at home. And so what you can do is you can start utilizing miners to kind of use that power when it's peaked, when you're not using anything else. And so there are a lot of alternative uses for these kind of small giving miners that allow retail to kind of keep themselves competitive. I think that's the best thing about retail miners is they can take advantage of these, whereas for the large institutional players, it's a lot harder to kind of push that kind of stuff through because there's a lot more involved with regards to the decision making and everything. For me, I think the simplest solution is like a retail investor, and I'm not trying to be a shield or anything, but it would be to purchase from Compass. The whole solution is very simple. Like, you don't have to invest in infrastructure, you don't have to invest in upgrading electrical, and you have to deal with the heat, the noise, the screen. It becomes a lot more simple like that. But there is definitely a larger subclass of people that want to get their hands on a minor and get dirty with it and try to find use cases for it. And I think there is a time and place and everybody in retail has the opportunity to do that, especially right now, when it's profitable for everybody. You can't guarantee that for the future, but as long as you find an alternative view sport, it's doable. ",timestamp:"00:25:59-00:36:02",topics:["ASIC Home Miners"],type:"youtube",weight:7.590939760401884},{boost:0,date:1639872e3,description:"Big States and Small States",episode_title:"PFP016 Remigijus Šimašius, Bullies as Neighbors-on the Foreign Policy of Small Countries (PFS 2008)",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/624262ef-b30f-4114-8061-e310187e6bb4.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=0WAituFO614",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"4369ba7b-c9c8-4bf8-906a-1d8e27b1558b",show_title:"Property and Freedom Society",text:"private privilege for people those days to discuss about imperialism and because it is usually not small stages who act such first ones it's usually big stages who start some kind of ongoing work to what you say when people try to draft the practical institution practically is when we discuss theoretical aspects of prior traditional defense but we see that our reality and general public do not allow is never to defend a country because ",timestamp:"00:01:04-00:06:14",topics:["Big States","Small States","imperialism"],type:"youtube",weight:7.585623406215426},{boost:0,date:null,description:"Bitcoin non-profitable projects and Bitcoin tipping",episode_title:"The Orange Sun 🌞 VISA, MasterCard & #Bitcoin #BOLT12",guests:[{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"~₿ Maxi~",profile_picture:"https://pbs.twimg.com/profile_images/1446241859651637250/i67F3y9p_400x400.jpg",ref_id:"ad997ae7-0726-431a-9f72-82da091c0658",twitter_handle:"fede0891"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"FireBurs†s",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"cda1d3ad-dd80-458b-a5fb-a28861df10a7",twitter_handle:"FireBursts"},{name:"Nikolai Tjongarero",profile_picture:"https://pbs.twimg.com/profile_images/1578458155964682274/_SzDxkAJ_400x400.jpg",ref_id:"821ee040-2267-454e-a59a-92da51568afa",twitter_handle:"BitcoinNaijaShw"},{name:"ブランドン",profile_picture:"https://pbs.twimg.com/profile_images/834861311762649090/N0KAP4zH_400x400.jpg",ref_id:"3d41531d-6a59-4771-81f9-0924b4c02561",twitter_handle:"blario"}],hosts:[{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/94a86a32-91c2-4717-b5cb-b36cef925776/38decc02-c922-4c1d-a605-7cd54c91a01d.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"5e6d5d88-bdb0-4350-8c03-13b0a24d3050",show_title:"Satoshi’s Journal",text:"else was I going to go over? Did I forget anything on charitable stuff that we're working on? Oh, master Gaunte is going to be coming out with a video. I'll give you guys a sneak peek. So we came upon a project, eva Kamani. She came to our space. She's actually going to be working with us out of Kenya. And she brought to my knowledge, a children's. I don't know what they call it, actually. It's not a school. It's like a kid house or children house where they take care of children by providing them food and water and maybe some education. And it's been a while since I read up exactly what they do, but she bought it to my attention. The guy that runs it has been running it for years. I think he has like 30 kids that he takes care of. And when I heard about it, I told her, hey, I want to help them. Master Gaunte is going to go and do a documentary and orange pill them. So we're not just going to give him satoshi orange pill them. So that's an up and coming video. That's the sneak peek. So someday you guys will see a pretty cool video of us orange peeling. And then at the same time, if we can get them to the point where they understand what bitcoin is, this children's home actually could be the first children's home that accepts bitcoin, and they could actually end up making a bunch of more children home. We all know that the value of bitcoin is going to go up. So those first few businesses that start, whether they're a nonprofit or not, the compounding effects of bitcoin over time is such that this one children's home could actually unfold and fund a bunch of others if they use the bitcoin that we donate to them wisely. So that's one of the biggest reasons why if you have a chance and you're so inclined, you can send a few sets. I think the best thing about bitcoin is you can send freaking one satoshi, ten satoshi, 100 satoshi. Anyone can afford to send one satoshi is $0.04, last I checked. I think it's less now. Anyone has the capacity with the lightning wallet to send ten satoshi's, and every satoshi counts. And you can't do that with dollars. You can't send half of a penny to somebody with not even visa. It's not like you can physically get a penny and cut it into multiple pieces. With bitcoin, you can send freaking increments of a penny and increments of a satoshi. I've never sent microsets. Have you ever sent microsets, olu or tk? I've never done it. But my understanding is one satoshi can be actually denominator. You can actually send parts of a satoshi. So from a charitable standpoint, there's no excuse, so to speak, because there's no room for someone saying, well, I can't afford one satoshi, I can't afford a fraction of a satoshi. Every satoshi counts. And in the end, when we get the dollar SAP parity dollar SAP parity, meaning that one bitcoin will someday be worth that 100 million, I think. So that's why literally every set counts. If you can send satoshi to somebody in central South Africa, central America, anywhere, get them orange filled, support them, send them the stats, tell them the importance of saving those stats. I'll tell you an example. It was actually Alexander the Great. Oh, so go ahead, be maxi, because I've been talking long time. Go ahead, it's fine. I was just curious because the first time I heard about what's like a micro, as you said, like micro. My understanding, simple understanding, is that once the toshi can be, you can send transactions via lightning in such a manner where you can send parts of a satoshi. So a satoshi can be divisible into. What they're called, and they're actually not defended by your actual node. That's what makes it so hard to actually defend using such a thing, because the milestones that are in between you and your channel partner within the lightning network, the nodes don't defend those. It's like a weird tracking system they have for the like it's almost like dust limit type stuff. If your partner channel closes it, and for close to your channel, those milliseconds are lost. There's nothing guaranteeing that you get those milliseats back from that other person, from your counterparty, because they really don't like it's, not really. They don't really exist. So this is how we get into this argument of all bitcoin is divisible infinitely. And that's not how it works. You can't just keep dividing bitcoin forever. What ends up happening is you end up just multiplying the supply because then you'll have a smaller denominated unit that's actually going to be worth more because it's smaller and more divisible. Therefore it would be a secondary monetary asset on the network itself. It's a very nuanced topic, but once you get down to integrity of it. So is it more like, let's say sorry, is it more like a theory, some sort like conspiracy theory that some people believe you can, like, you know, create? Like Microsoft like today is very small unit of a sad essentially. Essentially that's what it is. Because bitcoin itself only recognizes the units individually, which is 2.1 quadrillion satoshis. That's all there ever is. Well, with lightning, we have the ability to send fractions of those satoshis which are denominated as millisats. The only thing is when you settle those millisets, that those millisets can't get settled on chain because they don't exist. So you see where we have this dichotomy of when you lose a channel partner. Those milliseconds are just dumb. That's why if your balance is that small at closing time of the deal on the chain, you won't see your balance because there are many sites. They. Only exist within the lightning network. And that's it. They don't exist anywhere else. Yeah, that's what lightning network is going to take over everywhere. Because if your balance is that small, this is very, very small. But of course can be broken in lightning. It's long. You will get any transaction that you do. But with lightning, you can actually still have something still smaller than the smallest partnership. Actually, you can have something so smaller than that. And I think everything will be repricing bitcoin, because everything will not be valuable if one start can be equal to one dollars. Jesus Christ. So if you just have 100 and you have $100, and imagine the inflation that would have messed up with the dollar. In fact, all bitcoin has to be the richest in the world. And that's why it's just 21 million. Try and get some guys, please. Yeah. And I'm sure in the future will get to the point where these millisets won't be as theoretical per se. There's not a conspiracy or anything behind it's possible using lightning and the possibilities of lightning are as much as a developer can develop and make things more possible. So we're seeing developments in lightning all the time. I mean, I just talked about eight companies that are contenders for the I think it's a both for fun competition. Yeah, that one, I bought it like yesterday for the first time. The both twelve that you can they're trying to integrate the onion, like anonymous chat where if a buyer wants to shout and tell them how I'm here or whatever. But I don't know what the issue is because I was listening to someone and they said it was really hard to integrate the bolt twelve. Yeah, no, that twelve is going to be awesome because it allows you to have a static QR code that you don't have to. So right now when you use lightning invoices, they expire and bolt twelve will allow a lightning invoice to be used into perpetuity is how I understand it. And bolt twelve will be we're going to try to get that integrated as soon as possible. It's just a matter of I'm sure some developer has already got it to the point where they're using it and it just hasn't proliferated. But as soon as it becomes basically unleashed in full, then everyone's going to have the ability just to real quickly create a lightning address and post it at their business and that lightning address will last forever. The implications of that are awesome. I mean, that's just one innovation that's happening of many in the future. We don't even know what's going to happen in the future. Open source. So like you can put that on basically any lightning network apps. Yeah, I mean, that's the cool thing about lightning is anybody that develops on lightning, because lightning is an open protocol, anything developed is complimentary of anything else that's developed. So whether you're building an exchange or you're building whatever you want to build on bitcoin or lightning, the open source part of it allows the system or everything on top of it just to get better and be complimentary. So it's freaking awesome, man. I think almost every day I hear something new that's happening. Portland Hodl, he does a space every week and he talks about the bitcoin improvement plan. Yeah, bitcoin improvement proposals. And every week he talks about a new BIP and he explains what that BIP is. So these bitcoinners that are developing on top of bitcoin, they come to the table with a proposal and whether it's implemented or not is a whole different story. But they at least come to the table and they say, hey, we would like to implement this proposal and that's on bitcoin. I don't know if they have a similar thing for lightning. Do they have like a thing for lightning that's like a lightning improvement? They do. I think it is called bulk. I think that's why the bitcoin. Is what you have said. The fact that you can reuse the QR code and look at how interesting that is going to be. I think Bmax was talking about lightning apps, but what about other things like billboard, like your shirts. If you are a walking billboard for Satoshi John, there is a cure code. Boom. Just imagine. Or for any business at all, especially road fines, billboard, books, souvenirs tea cups, frames, just imagine on posters, on stickers, initially on both eleven, we could not use more than one invoice for one transaction. If you try to reuse it, you may be in trouble, you may find yourself in trouble. So that's what is making both twelve very more interesting. Everything that both level does is what both twelve can do and do better. But now you can actually use one QR code on lightning. You don't have to be changing it. You can put it on anything. You can put it on a tattoo. Wow. That'S a really good point. If you were actually to use these static QR codes from both twelve and put them on billboards, put them on shirts. If you're a businessman or woman, you just prominently display them everywhere. People could just literally scan the QR code off the side of your car, off of bill billboard, off the side of your hat. If you do get a tattooed on your shirt, on your skin, I mean jeez, the implications are amazing because people can just send payments to each other using the bolt twelve wherever they put it. ",timestamp:"01:10:47-01:25:10",topics:["Bitcoin Charity","Bitcoin Ttipping"],type:"twitter_space",weight:7.444137096405029},{boost:0,date:1677582e3,description:"What Micro Loans are and the motivation behind them",episode_title:"Ep. 514 The Future of Crypto in the Media with Blockchain Boy",guests:[{name:"Lucas Dimos",profile_picture:"https://pbs.twimg.com/profile_images/1092408696838197250/n0-St2nZ_400x400.jpg",ref_id:"9ac17e2f-49bd-4fc5-bfe5-2f380ca63574",twitter_handle:"lucasdimos"},{name:"Blockchain Boy",profile_picture:"https://pbs.twimg.com/profile_images/1602154101642592256/A0OX97CT_400x400.jpg",ref_id:"4b070a6f-bcc8-4708-abaf-cc830709600f",twitter_handle:"BlockchainBoyy"}],hosts:[{name:"Aaron Malone",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"bd103540-8c0a-4ab3-b5cd-24a3f2c43ab2",twitter_handle:"pizzamind"},{name:"Bryce Paul",profile_picture:"https://pbs.twimg.com/profile_images/1182725652794892288/QbDOKHcP_400x400.jpg",ref_id:"0d670dbf-f434-43b6-b454-8e5345d7ee51",twitter_handle:"BrycePaul101"},{name:"Pizza Mind",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"16cb01cf-9f04-45db-a440-47259b02b86a",twitter_handle:"pizzamind"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/93a6fe5b-364c-43f4-9f38-7da3e811460b.jpg",keyword:!0,link:"https://chrt.fm/track/DD9393/audio1.redcircle.com/episodes/68f31cee-f404-40fe-85d7-a406019e916f/stream.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"e2a347d3-a7ce-4200-836e-0c3df94980ce",show_title:"CRYPTO 101",text:"Look at that. Yeah, look at that. Dude, he hooked me up. I bet there's even an espresso shot in there. That's crazy, man. Fantastic. So where was I? Oh, yeah. So you can empower entrepreneurs from other places around the world who need maybe an $800 loan to get more fertilizer for their crops, to double their yield, or who are opening a small store in their community. And it's a way because charities actually can be actually very damaging for local communities. Like with those Tom shoes. You buy a pair of shoes, they ship a pair to somebody who needs them in Africa or whatever, you're putting the shoemaker out of business. It's ridiculous. And you're hurting the local economy by making them dependent on foreign aid. And I don't believe in that. I don't want to give people what they need. I want to give them the tools to get them where they need to be by themselves. And I think that's really what makes me happiest. And so I want to find ways of doing that, and that's just one way of doing that. Yeah, no, I love it, man. So I kind of want to talk back to Tik tok I was just thinking, I saw the other day there was a potential ban on TikTok that, like, lawmakers are out. What's your take on that? You have a quick take? Well, we can choose who we want to sell our data to, but it's going to be sold anyways, and they just want American companies to own our data and not China. But I mean, they just let that weather balloon get across the entire continent in the United States before shooting it down. So ",timestamp:"00:24:04-00:25:29",topics:["Micro Loans"],type:"podcast",weight:72.76897614568216},{boost:0,date:1637366400,description:"Anticipated Bitcoin mining industry and nuclear energy industry intersections in the near future",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"27290854-e30c-4f09-aee9-c6ee23a4854d",show_title:"Compass Mining",text:"thing I would want to wrap up with is a little bit of an open ended, forward looking question. Like we've talked about a lot of the dynamics for bitcoin miners and nuclear power producers to work together, a lot of the mainstream perceptions on both of these sectors. If you had to, I guess, pick one or two things in the very near term future that you're expecting to see. I know a couple of you guys have mentioned that some of the recent developments have surprised you or been larger and faster than maybe you expected. Looking forward to the next two years? What's something at the intersection of bitcoin mining and nuclear energy that you are expecting to see you're looking forward to? Whether it's one particular company or maybe a broader trend in adoption, I'm not really sure. I'll leave that up to you, but yeah. Any expectations, Ryan? I'll hand it back to you. Well, in the next few years, I would love to see bitcoin mining be applied in such a way that we could save the Pickering reactor from being shut down, because that is a travesty. That we're going to lose. That and nuclear power in Ontario is one of the biggest reasons why we were able to eliminate a lot of our coal power. And if we lose a reactor, it's going to just go back in the wrong direction because we've got the refurbishing, the Bruce reactor and the Darlington reactor right now, there's no reason why they couldn't go ahead and do the Pickering as well. But I think one of the big concerns is those demand risks. With more renewables coming online and there are intermittent seats, it causes too many surplus generation events and then it creates massive economic liabilities on the reactors and then they get deemed economical and then they get shut down. And so we now have an opportunity to kind of reverse that trend in a way. And make a big gains in the saving reactors and refurbishing them because we could keep it going for another 40 years easily if we just put the time and money into it. Interesting. That's actually fascinating. Peru, I want to ask you to same question. Anything in particular you're expecting over the next short term? Two, three years? Yeah, not two three years, but I feel like by mid 20s what you'll see there's a lot of these small modular reactors that Ryan been talking about for a while too. I think those are going to come online, either demonstration plans or companies are going to start making them because the life cycle of making constructing these plants is much shorter compared to the full scale plants that we've seen in the past and companies are already developing it. And I think, like I talked about, I think it makes so much economic sense to just mine bitcoin with them until the grid providers are offering you prices which are comparable or a premium on top of the bitcoin mining price. Like if I'm running a nuclear advanced technology company today and I understand bitcoin mining and I'm just like trying to get these reactors online as soon as possible and colocating a mid bitcoin mining rig at the same site. And just mining with bitcoin with it until the grid prices reflect a premium which I'm willing to take and provide my power to the grid. I don't want to bet on the timing of this, but I think we'll definitely see this over the deck and I think it's going to be great to see. I think bitcoin mining industry will also evolve over the next few years for sure, based on just how much hash power is going to come online over the next couple of years. I think both industries are going to benefit from this. That's awesome. Eric? Yeah. Same question. You just wrap up on anything you're expecting, I guess. Well, I mean, when you ask me what's going to happen in nuclear next two, three years, I have to remind you we plan 510, 15 and 25 year increments. So that could be tough. So I'm going to say more of the same. I mean, we had those three announcements in July, talent and Terrawolf energy, harbor and Standard power, and then of course Oklahoma and Compass within like ten days of one another. Bang, bang, bang. It just completely changed the way we look at the world. And I think we're going to see more of that. We're going to see more of that. We're going to see it happen more rapidly. From any eyes perspective, we're hoping that one of the introductions that we've brokered will turn into an actual deal. Whether it's a straight power purchase agreement or something more profound like a joint venture between a minor and an operating plant site. We're crossing our fingers that we'll be able to say we helped something like that happen sometime soon, but I would say more of the same. The one thing that I will think that I'm going to project may happen in five to seven years and it builds up something. Peru said. I think you may very well see an announcement about new build for An SMR where the miner is twinned with the construction of the reactor. That they will happen at the same time, or roughly at the same time. So when the reactor goes critical, that miner will be able to take that power immediately. I think that we're going to see that kind of coordination. I would like to see that kind of coordination between advanced reactor manufacturers and mine. How's that? That's awesome. That's perfect. To seeing some agreement from the other gentleman here on the panel with regards to that. That would be beautiful to see. Getting more conversation in the chat. We're a little bit over time now, so unfortunately we do have to wrap up. But I will say for everyone watching, all three of these guys are on Twitter. Relatively active, but definitely must follows. You can find their handles in the description below this video. It's all three of you. Thank you again so much for coming on the stream, chatting with Will and me. It's been a super fun, informative, insightful conversation. Super glad we found time to do this and that's a route for us here at the Compass Livestream. Appreciate y'all watching. Be sure to like and subscribe if you enjoyed the conversation. Helps other miners find this content. This conversation in particular was just outstanding. So, again, thanks to all three of you. Appreciate your time. And that's a wrap. ",timestamp:"01:00:13-01:06:32",topics:["Bitcoin Mining Industry","Nuclear Energy Industry"],type:"youtube",weight:7.335028414441784},{boost:0,date:1670706053,description:"Understanding stacks",episode_title:"Bear Market Buidl — Major #Bitcoin developments! #Stacks #Sidechains",guests:[{name:"@GriffdenNFT",profile_picture:"https://pbs.twimg.com/profile_images/1604377729062895617/R4pSEdH4_400x400.png",ref_id:"dafdf7ec-28c0-43d3-a0d9-b2d266f38738",twitter_handle:"GriffdenNFT"},{name:"@Chad_333",profile_picture:"https://pbs.twimg.com/profile_images/1592310541732970496/o1tbw9Eo_400x400.jpg",ref_id:"484c7695-6a4e-4141-9585-1109bf23f8cf",twitter_handle:"Chad_333"},{name:"@jackbinswitch",profile_picture:"https://pbs.twimg.com/profile_images/1601214177439260672/O0SpU5B1_400x400.jpg",ref_id:"9685e7f3-3e0c-4b84-9fd9-b8a1d96f6ae9",twitter_handle:"jackbinswitch"},{name:"@jimdotbtc",profile_picture:"https://pbs.twimg.com/profile_images/1593210347825119237/L_SNThWQ_400x400.png",ref_id:"5dcf5545-fad6-44ee-ae56-360c5efe1151",twitter_handle:"jimdotbtc"}],hosts:[{name:"@BigRpic",profile_picture:"https://pbs.twimg.com/profile_images/1604962150388219904/WqiCye-r_400x400.jpg",ref_id:"726f0c95-9d94-4d44-a056-8ad3c9e3ddd5",twitter_handle:"BigRpic"},{name:"@CarlsonDoc",profile_picture:"https://pbs.twimg.com/profile_images/1597382056308350977/1NPexynZ_400x400.png",ref_id:"e34fa2b2-a58e-4461-81a0-d10c1058dfc2",twitter_handle:"CarlsonDoc"},{name:"@STXLDN",profile_picture:"https://pbs.twimg.com/profile_images/1533793338931007488/o3laQDCp_400x400.jpg",ref_id:"5c3bc906-3aed-44f9-851a-94804c6fe5ca",twitter_handle:"STXLDN"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99046513-2614-4eae-9de4-5781ba4b330a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/fc3bebcb-8271-433e-8d81-84dd06f3b022/aec527bc-539d-4d3b-9bad-db4af9e1a1ba.mp3",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"3008a0a4-d3c8-4d33-aa67-f39e4ce1a87c",show_title:"STX:LDN",text:"Yeah, that's awesome. I definitely agree with the degenerate part, for sure, but no, I'm looking forward to it. Thank you. Yeah, I appreciate that. It sounds really good. Thanks, Chad. Yeah, it's not really what our mentors are maybe pushing us to kind of do, which is more build infrastructure for Stacks, but that's where we can hopefully turn this into a more dev tool for users or creators, I should say builders that want to build on chain gambling games. And yeah, we're really excited about it. Thank you, guys. Yeah, I personally think the more user ability there is like, things to do based on chain I find more appealing than I guess, like, the super techy stuff because hold on 1 second. My daughter just pulled food out the fridge and I'm not even ready to start dinner yet. Yeah. Griffin, you were more of an Ethereal native before you came to Stacks. Kind of like myself, I think it'd be interesting to talk to you about the most striking thing that you notice switching from Eve to kind of get an exposure to this ecosystem, which I find to be completely unique in the crypto space. I hadn't found anything like it thus far. Right. And so when I came here, I'm like, oh, yeah, I'm home. This is where I'm supposed to be. So I think you probably also have some really good perspective where that's concerned. Yeah, I'd love to touch on that. That's a great point, and I'd love to make that clear to you. I missed our conversation the other day. I don't know if you saw my DM on Zoom, but I'd love to catch up one on one sometime too. But coming from Aetherium, I first tried out Stacks maybe three or four months ago, and I guess I truly didn't understand the awesome tech behind it. And as someone who is used to my transactions completing about 30 seconds to a minute, I wasn't super excited to use Stacks. But once I understood that they at the foundation and a hero all understand that's one of the biggest issues users have with Stacks and that they're working on Scaling, then I really realize that this is going to be a viable competitor to the other smart contract blockchains one day. And I'm just happy to be here. Like Trevor had mentioned before, all the noise happens and it's a smaller community. So you guys obviously are a bit more tight knit and respecting to community members, which is something that has dropped significantly in the Ethereum community as it grew. So I really hope that Stacks can find a way to carry on that great culture that it's got right now and be that inviting blockchain that Ethereum and Solana have failed to be as they grew. It's that, like, feels at home type feel. I know exactly what you're saying. Yeah. I mean web three. A big part of web three is community. Right. That's one of the underlying pillars of what it is. And I have faith that this community will be able to grow and maintain its character. I think it's one of the benefits of Stacks, being a community that has been slow to grow. You have guys like Jim and Dash who were here at the very beginning. Right. And so they have such interesting perspective to see how it's shaped so far. Yeah, I think that you cannot have where we're going with being disjointed and just kind of when someone new comes in, they just feel like a mark being ready to be ripped off, right? You need cohesiveness and you need good people trying to go towards a common vision. And the common vision here is having a user owned internet built on Bitcoin, right? That's really what it's all about. And I think that we're off to a damn good start. So I'm excited. I don't worry about us losing our character. I think that the fact that this thing has just been building slowly over the past few years only reinforces the foundation. And that's the thing as well, jack I say this to a lot of people about the build up lap. Because the build up here, if we actually look at things and I know you guys, that Dash and Jim have been here for a lot longer than me, but even I had heard of blockstep when it first came out, and not first came out, I'd say probably a bit later on towards the ICO or the token. So, shall we say. So I'd heard about it and I was a bit dubious because it was kind of like, okay, it's bitcoin not on bitcoin, it's a bit weird. Sounds a bit weird to do another chain. I suppose at that time, maybe I wasn't as experienced. I was just starting out professionally in crypto, so maybe I wasn't that experienced as I am now. But when I first kind of started researching back into it and I've seen stacks and then I started researching and I realized it was block stack, it was like, wow, so this has been here for a long time because I remembered that block stack had been around since even a few years prior to the whole token. So going back and looking at the whole kind of long history of block stack in the game and stacks in its current form, it's been around a lot longer than a lot of stuff, like a hell of a lot of stuff. It actually borders on being around a lot longer than even Ethereum itself. Do you understand what I'm trying to say? It borders on being around longer than the theorem itself. So it's like yeah, I think it's just great to see that at this moment in time with obviously the Stack 2.0 upgrade, we've got 2.1 coming and all of the hard work that the builders that were here before us have done. It just really just seems like it is the right time for this to be out there in the world. And as what Trevor said to Grifton, it's like before the noise comes, isn't it? Like you said, you've got the tight knit community and you've got everybody just building. And because everybody has that focus, as you said, Jack, of the user user on Internet, on bitcoin, nobody's like there's not a million other 29 880,000 different coins and tokens that we're all talking about. I suppose that's one of the key or some of the key elements, but yeah, sorry, Jim, go ahead. I was just going to say, well, thanks for doing this call. It's really been interesting hearing you guys, and thanks for all the big intros, jack it's actually really interesting just even listening to this call and taking myself back to the same sort of point in the last cycle, because I think Dash and I were kind of working with Stacks probably around 2017, possibly a little earlier. I think it was interesting as we we imported one of the we imported the first two way bitcoin ATM into the UK in 2014, and it was just a big, you know, it was a big bet on bitcoin. And, you know, we were, we were thinking about remittance and, you know, the difference it was going to make for, you know, the world's unbanked. That was kind of the initial reason we got into it. And so we met quite a few really interesting people, not being not crypto people prior to that. So we were actually musicians working in the music industry, so it was a steep learning curve. But we met this guy, Mike Cohen, who's one of the core developers on Stacks now. I remember him coming into where we had the ATM, possibly around 2015, and saying he was like, oh, have you heard of ethereum? There's a big thing coming along, it's going to be really exciting. It's got the security of bitcoin in a way, but it operates really quickly, so you can have these things called smart contracts. And, of course, I'm going into my old work in music and thinking how we could set up all these amazing payment mechanisms where a stage manager presses a button to say that the band has finished the gig, and then there's this whole domino effect of payments. And then by the time you get on the bus, you've been paid. That sort of got us thinking. So I really got into a theory briefly, but Mike had already said, this is what we're kind of working on is doing on bitcoin. You know, it can be done on bitcoin, right? And this is just vitalics kind of jump the gun. It's really, really cool, but it should be done properly, it should be done in a different way, and it will happen. And I think he was already involved with Blocksack, and then, yes, probably a year or two later, we started doing this stuff, this at Mining, which didn't really work too well. I think it was a bit of a scrum for just lots of people with lots of ideas and no real central. It just didn't feel like it was really working. And then I think that was running up to the beginning of sort of 20 end of 2020, beginning of 2021, when it felt bit similar like this. You know, things were just about to sort of certainly with Stacks, the main net was about to launch, but there was no one really there. But there were people coming in. It was a really exciting vibe. Lots and lots of community, really great sense of just a handful of you sort of doing this really exciting stuff. And I was just buzzing because for years I've been thinking, this is coming and suddenly it's here and we can make NFTs. And so I'm like, we got to go big. And then dash. And I like, let's get fat, boy slim. It struck me, the last big Whiff and Brighton fat Boy Slim was the last big sort of global superstar that came out of Brighton, which was why Thoughts instantly went to go, let's get Fat Boy Slim on board. But it was just such a funny environment because we started with all these huge names. Fatboy Slim, Cara Delevingne, Orbital, Dave Stewart from the Arithmetic and Chemical X got them all together, all through various we're friends with a lot of people through music anyway, and Chemical let's very good friends with Kara Delevingne. And so we then march these guys into this empty network and it was a hell of a sales pitch, I tell you, because we were saying, this isn't going to be the hype that you're expecting. If you go and do this in a theorem, yes, it will be worth you probably make millions out of it, but this is bitcoin and in ten years time you're going to be revered as Legends for being so ahead of the game for doing this. So we did manage somehow to get them in, but then it was funny because there just was no one there. We were lucky that we sold, I think the Car One sold for 20 or $30,000 worth of stacks, which she gave to her charity. So that was really successful in that. We got some noise out there, but I guess I was thinking things would move a bit quicker. I got kicked out of so many reddit and different groups for going in there and trying to say, hey, this is it. This is the thing everyone's been waiting for. And everyone's just like, shit coin, shit coin to get out. I mean, I just got kicked out so many forums and just everywhere I went, the moderators just kicked me. And I mean, I can't necessarily blame them because at the end of the day, as we've said, there's this huge number of pointless coins and you know, 99.9% of them are just scams. And so you can't blame someone's defense mechanism for that. It's operating correctly, ultimately, to call me a shit coin, but I'm just in there trying to say, research, look into this. This is the way that Vitalics should have done. It kind of unfortunate. They probably had this minibus idea was at the same time or around the same time, but he just wanted to do it properly, which was another thing I was especially at the time, back in 2018, 2017, the Tether thing had been massive. There. Was this whole security thing was just flying around, and it was like, this is the right way to do it. But at the same time, the whole time that Stacks was trying to decentralize to the point where it could start bringing in the audiences, the ethereum mess was just growing. The off bitcoin, blockchain, unmined kind of mess was just growing at a rate of knots. And it's just kind of sad that didn't kind of just have that leap of instead of burning, because they always knew burning was bad, and that's for people who don't know. That's how theorem kind of started. You had to get value in there for people to stake, and mine and all the rest of it, it was burning bitcoin. And so the quicker they got that value locked into ethereum, then they got people going, okay, we've got a network here, and we're all supporting it, we're all invested. And if only you'd had the thought to just do proof of transfer, because we wouldn't have this whole mess, we wouldn't be here now. We'd all just be in that. I don't know what it would have been like, but it'd be a very different world if everything had just had just started from here. But here we are trying to do it. But yes, it feels like a really big battle now, because it was really interesting when we had that Sappy Seals thing a few couple of months ago. I think that was really interesting. It was someone with an enormous following on a theorem doing kind of follower farming or something, just trying to go out and get people to follow on Twitter, and just said, I'm thinking of moving to Stacks and everything. Everyone on Stacks flipped out and go, quick, I'll post on this guy's thing. He's got 100,000 followers a day. But what was really interesting was that was what triggered the BNS rush, because all these people that kind of I've been trying to get my voice into their forums, they suddenly just got introduced by a person who wasn't going to get shut down, and he was even trolling in a way. But suddenly these people, all it took was someone to say, there's something you can do with bitcoin. And then the cleverer of those lot looked into it and then went, holy shit, this is a really cool idea. And then it was a really amazing event, and it does fill me with confidence that we're in the right place, we're doing the right thing. But it is quite a battle going through this and actually getting everyone to kind of get on board. I was shocked by the bitcoin conference when I went out to Miami, went down to the conference on the Friday I was with Drew Falkman, and we went in and we were just instantly taken by just a funny vibe. And we'd been talking about I was going out there with a special work of art that I really wanted to get into the conference and went down there and they were just like, no stacks there's. No stacks. NFTs are allowed in here. But in the center of the conference was a huge array of screens selling Ethereum NFTs. And I was quite shocked, I was quite shocked that it was preferred to put Ethereum NFTs on screens in there and somehow put it under an umbrella of being valid at the Bitcoin event. But that was shut out. And then I got a photo, I think, of which one was it, Miami Coin or New York Coin? It was the closest we got to that conference was about three blocks away and I've got a photo of this truck with just a flatbed lorry with a Miami Coin sign on. And I kind of felt at the time that there was a bit of a bit of a there's like a kind of old boys club already in Bitcoin with these guys from I guess from Block Stream that started all this stuff with side chains and they kind of create they were kind of, in a way, the original Bitcoin accelerator, I guess. But they were going down a route of everything being federated and centralized and so now we've sort of got it from both sides. We've got established businesses who have an inferior way of operating, basically, and a business model that was always going to get swamped by decentralization eventually. Maybe they thought they'd have a bigger head start, I don't know, but now they're definitely not happy about stacks and doing it on. There was a big thing with Adam back and maneuver on Twitter. Manev was being very reasonable and Adam pack just kept going back to pre mine, pre mine and lack of Bitcoin miners, which I couldn't actually disagree with him with the bitcoin mining thing, which sounds like this new upgrade is going to allow decentralized mining, which could in the perfect world, you've got everyone in Bitcoin. Like, again, if I think go back to Vitalic, if he had done what Mane did, I think at that point the small Bitcoin community would have said, it's our job now to mine this smart contract network. So while it's just automatically assigned 1% of what you're holding to mine, we'd just be in this amazing world where this smart network is just accepted as being a good thing, but instead we kind of got to fight for that. But decentralized mining is a massive step towards that because that does allow people, hopefully to mine with very small amounts, which will be that's a game changer because that's when we can just start getting people. That argument then falls away once you've got the centralized mining, that argument goes. The other arguments were just, in my opinion, bullshit, because the whole pre mining thing, it's like, I mean, look at Bitcoin, look at him. And every successful network kind of started that's the process of decentralizing who mines it. In the beginning, it's just kind of got to be done. And it sounded like an argument of a corporation fighting against something that they know is good and know is competitive and know is worthwhile, but they're going to argue it till they're ready in the face that they're going to find some some issues with it. So anyway, yeah, it's been a long journey, but it's really nice hearing you guys tonight and seeing some new people coming on. It does feel like we're just getting into that bit where the markets have kind of got close enough to the bottom that people start kind of moving again and then some people are looking for other change while things are down, they're looking around and some people are coming here and finding this amazing network. And thanks for letting me go on, Jim. Totally, totally. Respect goes out to you, my brother. And it's funny hearing your story as well, especially yourself being from the UK. Because part of the reason why we started up Stacks London, we kind of just started off out of the blue because I've been around in the space for a minute and I've not really seen anybody talking about Stacks since, you know, the old block stack days. So when I, when I really dove in in 2020, I was like, you know, after a couple of months, I was like, well, what's going on? And I'm going to all these events and speaking to all, you know, same people and same networks, and it's like, nobody's talking about Stacks and talk to people about Stacks, they're like, you know what, Stacks? And then now go block stack. And they're like, oh yeah, block stack. You know, we remember block Stack, like. What'S going on over there right now? So it's really weird. And then there's a lot of synonymity as well, with your early story as well, because, I mean, my first real kind of, I would say, dive into learning about bitcoin was around 2013, 2014, and then when I first kind of discovered, let's say, all right, blockchain and what blockchains are and how blockchain operates wasn't until like, a year later and again, coming from a music background, my first thing was, okay, so when you said that bit about people getting paid, I swear that we literally had that same we was in the studio having that same conversation. I think everyone who got in at that time immediately, if your mind operates quite quickly, like a lot of, I think, builders minds do, you do tend to jump instantly to the ultimate solution, which is like, oh, look, here we go. Everyone in the world who has a phone now can transact with anyone else in the world. Great poverty is kind of on its way out, but now later on, you're like, yeah, we're ten years into this game now and it still feels a long way away. Even in terms of just that kind of accessibility for people. That focus really isn't on remittance, I guess it's more on certainly now it's like on people sort of surviving and building businesses and making money. But it would be great once that kind of rush gets in the same way. Like the.com bubble, it's like this massive rush and then afterwards the really useful shit sort of starts happening and hopefully we'll sort of get to that point soon when the real thing that bitcoin has to give humanity can really start working for people. Yeah, definitely. I think that's part of a lot of people's entrance into Stacks as it being stacked rather than Block Stack is that kind of frustration. I think that's where it definitely sits for me, having that frustration that you're watching this thing play out all over again and everybody's heads just in the clouds and you've got all of these new people coming in. Nobody wants to let people or teach people the actual core fundamentals. They just want to, I feel like, a feeling of they want to sell their particular idea. So I feel that a lot of projects have just completely run away with that. And again, not to say that there's not a lot of other great projects out there, let's say Blockchains and the technology and cryptocurrencies themselves do kind of provide that open medium for people to create these ideas and do these things. So that kind of what you said about walking in the room and everybody's like, we don't want to do anything different. That kind of Maxi rooms where we just want to stick with just this. That is an absolute ludicrous idea. I've said this in plenty of Maxi spaces, so if any Maxis decided to jump in there, it's no different than what I say in their spaces. At the end of the day, ",timestamp:"00:24:51-00:48:54",topics:["Stacks","Web 3"],type:"twitter_space",weight:13.500243841282398},{boost:0,date:1632355200,description:"Vincent Zhang and WhatsMiner introduction",episode_title:"The ASIC Mining Hardware Market",guests:[{name:"Vincent Zhang",profile_picture:"https://pbs.twimg.com/profile_images/1158285609196109825/fuB-e6lm_400x400.jpg",ref_id:"98e7bc98-3a3b-4ddf-9b48-5dcd78973739",twitter_handle:"Whatsminer_MBT"},{name:"Vincent Vuong",profile_picture:"https://pbs.twimg.com/profile_images/1260974518547312640/n47yvbNL_400x400.jpg",ref_id:"8390e230-e36b-4e0d-9f5d-70c6635bf3c2",twitter_handle:"BitcoinVincent"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=qKeUCNXa4Uc",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"3cb5fd13-1b10-4dc0-b8e3-f2fc0f1ec406",show_title:"Compass Mining",text:"the two Vincents are going to unload a lot of information, insights and some fun opinions on us. This conversation, I want to give you both a chance to introduce yourselves, give us a little background on sort of how you got into the mining industry and your focus on the ASIC markets. Vincent, from What's Minor, do you mind just introducing yourself and giving us maybe a brief history of What's Minor and what led up to where you are today? Yeah. So I should say good morning. So here it's midnight in China. My name is Vincent. Right now I serve in as a sales director in Watts Minor. So actually there's a small story for myself being in this industry. So before I joined What's Minor, I was working in telecommunication industry. So I worked in DT Corporation for 14 years. I sold a lot of telecommunication equipment to India. However, in the year 2018, I just quit the job, my previous job, and by chance I got joined in What's Minor. And so when I joined what's? Minor? So actually the situation of Microbity What's Minor is not as good as right now we are because though we released the most efficient minus based on 16 nanometer from TSMC, however, we were not able to get a sufficient supply capacity in the year 2018. And of course, everybody knows that the mining profit in the year 2018 is not so good. So due to these reasons, the situation of What's Minor in the year 2018 is not so good. So however, this situation get changed in the year 2019. And so myself is very pleased to join work with Microbity as Sales Director because starting from the year 2019, so we export more business chances outside of China. So we can say after I joined what's minus, our overseas market enhance a lot, probably later via the conversation, so we can share more information about What's Minor and myself. But I'm already in this industry for three years. ",timestamp:"00:01:34-00:05:06",topics:["Vincent Zhang","WhatsMiner","minor"],type:"youtube",weight:7.285317421145426},{boost:0,date:1677582e3,description:"Lucas' real dreams and goals in life",episode_title:"Ep. 514 The Future of Crypto in the Media with Blockchain Boy",guests:[{name:"Lucas Dimos",profile_picture:"https://pbs.twimg.com/profile_images/1092408696838197250/n0-St2nZ_400x400.jpg",ref_id:"9ac17e2f-49bd-4fc5-bfe5-2f380ca63574",twitter_handle:"lucasdimos"},{name:"Blockchain Boy",profile_picture:"https://pbs.twimg.com/profile_images/1602154101642592256/A0OX97CT_400x400.jpg",ref_id:"4b070a6f-bcc8-4708-abaf-cc830709600f",twitter_handle:"BlockchainBoyy"}],hosts:[{name:"Aaron Malone",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"bd103540-8c0a-4ab3-b5cd-24a3f2c43ab2",twitter_handle:"pizzamind"},{name:"Bryce Paul",profile_picture:"https://pbs.twimg.com/profile_images/1182725652794892288/QbDOKHcP_400x400.jpg",ref_id:"0d670dbf-f434-43b6-b454-8e5345d7ee51",twitter_handle:"BrycePaul101"},{name:"Pizza Mind",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"16cb01cf-9f04-45db-a440-47259b02b86a",twitter_handle:"pizzamind"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/93a6fe5b-364c-43f4-9f38-7da3e811460b.jpg",keyword:!0,link:"https://chrt.fm/track/DD9393/audio1.redcircle.com/episodes/68f31cee-f404-40fe-85d7-a406019e916f/stream.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"d266ac59-706d-4b4c-b0ca-d9ea3ae4fc34",show_title:"CRYPTO 101",text:"to be? That's a great question, and I'm still figuring out what I really want to do with the rest of my life. I just know that I really like building cool things with cool people, and I think I'm always going to do that, no matter whether it's big or small. I think it's just I have to do something. I'm like a shark. Sharks have to keep swimming or they sink. Right? And so it's very similar with me. Maybe I'll have some more time to go live in the country and be away from people for times. But no, I really like empowering people to be their best selves. That's really what makes me the happiest, is, like, I'm a very loving and caring person, and I love to see people do good things and succeed. So I would really love to get into sort of micro loans and sort of entrepreneurship guidance and maybe even ethical VCs, because I don't think a lot of VCs are very ethical. And so I'd love to do something along the lines of that to empower more entrepreneurs to have an effect in their community and environment outside of Web Three, too. I've been doing micro loans on the platform called Kiva for many years, and I think it's super cool and needs a Web Three version. Yeah, I've actually never heard of Kiva. Tell us a little bit more about what micro loans are. And has that been a way that you could generate passive income or anything? No, it's just mostly a tax write off for really rich people. It's not like super well known, but you get to actually empower entrepreneurs in other countries. Oh, there's Jonah. Jonah. I'm on a podcast. Oh, he's bringing stuff. Jonah. What's up, brother? Thanks, bro. No, he's one of my fantastic team members over here. Thanks, bro. I wish I got ",timestamp:"00:22:22-00:24:01",topics:["Lucas Dimos"],type:"podcast",weight:71.21921050996978},{boost:0,date:1625958277,description:"How Bitcoin helps increase business competitiveness and change business model",episode_title:"WHY ARE WE BULLISH? Brandon Quittem, Timothy Kim, Shinobi, Steve Barbour ep185",guests:[{name:"Brandon Quittem",profile_picture:"https://pbs.twimg.com/profile_images/1502403738861940736/9J5VuTye_400x400.jpg",ref_id:"65512044-7810-4ece-8156-5519e072cb66",twitter_handle:"Bquittem"},{name:"Shinobi",profile_picture:"https://pbs.twimg.com/profile_images/1526590501742428160/0Y5H2uJK_400x400.jpg",ref_id:"a05dface-33a7-400d-a749-99efe0d96118",twitter_handle:"shinobi602"},{name:"Steve Barbour",profile_picture:"https://pbs.twimg.com/profile_images/1592714173469065216/q8kXPyQI_400x400.jpg",ref_id:"63a731b8-4759-4360-9e9d-d66f884e12d8",twitter_handle:"SGBarbour"},{name:"Timothy Kim",profile_picture:"https://pbs.twimg.com/profile_images/1569681307029934081/2s_nWYo__400x400.jpg",ref_id:"e0323798-c70f-4cc3-96ff-87bab50c2313",twitter_handle:"realtimothykim"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/37027401/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2021-6-10%252Ffb6d5638-4579-5707-9740-0e586c980ba7.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"fe680ae3-835d-492f-b664-7d645d02a99f",show_title:"BTC Sessions",text:"Can I pivot into why I think why I'm bullish on this episode? Yeah, man, let's do it. As I'm on my fourth shot of Ryan, I'm about to lose any coherency on the same topic. I just love seeing any startups, especially any Bitcoin related, like pro bitcoin related startups do well. One of my favorite follows on Twitter is like, Tahini's Restaurant. Like a little franchise that's like big into bitcoin and you know they're going to kill it because just having bitcoin in your treasury, it makes it so difficult for any other competitor, to any other competitor, they're a restaurant business. Any other competitor that's in a restaurant, that's a tough freaking market to be in. Like the restaurant business, maybe bitcoin mining is like the only harder market because it's so easy to get into. But like, restauranting, it's an easy business. The low barrier to entry, tough margins. But Tahini, I don't know who else who's a direct competitor in their area. I think they're based in Ontario. It's probably a million Sharma places that do like what Tahini does. He's going to fucking kill those guys. They're going to kill all their competition because they might have the exact same profit margin. They might have at the end of the year, 10% profit, just like every other competitor in the area. Sort of like plus or minus a few percent. Some guys in the negative, whatnot, the team is going to kill them. They're going to kill them because they're going to have this bitcoin treasury. And I was saying that locally on a local podcast. And Lloyd, I got this small wheel field business we're getting into motors and stuff. Aside from the bitcoin mining focus that we have, what we're doing is actually not that different than what a lot of oil service companies do. And I said on this podcast locally, I'm like, my competition will have no chance to compete with me if they don't adopt a bitcoin treasury. And they don't even have to build bitcoin mines. All you have to do as any small business owner is convert a little bit of your treasury and your profits into bitcoin and to hoddle it and to speculate properly on it. And you're going to crush your competition, like your feet of competition. So my bullishness that I wanted to bring to this episode is like. I think that small businesses and true entrepreneurs. Not Fiat entrepreneurs. Not the guys just going out and trying to get raising money from these VCs and not really building anything. But actually true entrepreneurs. People going out and starting small businesses. I think we're going to see finally a true economic boom in small businesses that we've seen suppression over for over 100 years. Like over 50 years for sure. Ever since. Like the full on 1971 Fiat standard. But when I showed up on the show, I was driving. I do a lot of driving around Alberta, Saskatchewan, you know, Alberta, well, Sessions, we go through all these small towns. Every small town is fucking same. And I think about it from like, the bitcoin perspective. All these small towns are identical. They have the same franchises. They got the Mr. Lube. They got, like, the petro Canada. They got gas station. They all got franchises. There's no fucking small businesses anywhere. They're all dead. They're dead. Everything's a franchise now, right? Which in and of itself isn't a problem. But the fact is, these people are just licensees of a business model. They're not finding their own supply chains and building a small business. They're going out and becoming a licensee of a big Fiat, like a big corporation that ends up benefiting from the Fiat. ",timestamp:"01:23:33-01:27:13",topics:["business model"],type:"podcast",weight:7.273831367495893},{boost:0,date:null,description:"The future of payments on Bitcoin and on the Lightning Network",episode_title:"The Orange Sun 🌞 VISA, MasterCard & #Bitcoin #BOLT12",guests:[{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"~₿ Maxi~",profile_picture:"https://pbs.twimg.com/profile_images/1446241859651637250/i67F3y9p_400x400.jpg",ref_id:"ad997ae7-0726-431a-9f72-82da091c0658",twitter_handle:"fede0891"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"FireBurs†s",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"cda1d3ad-dd80-458b-a5fb-a28861df10a7",twitter_handle:"FireBursts"},{name:"Nikolai Tjongarero",profile_picture:"https://pbs.twimg.com/profile_images/1578458155964682274/_SzDxkAJ_400x400.jpg",ref_id:"821ee040-2267-454e-a59a-92da51568afa",twitter_handle:"BitcoinNaijaShw"},{name:"ブランドン",profile_picture:"https://pbs.twimg.com/profile_images/834861311762649090/N0KAP4zH_400x400.jpg",ref_id:"3d41531d-6a59-4771-81f9-0924b4c02561",twitter_handle:"blario"}],hosts:[{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/94a86a32-91c2-4717-b5cb-b36cef925776/38decc02-c922-4c1d-a605-7cd54c91a01d.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"1984e7b9-23f1-4ef0-8fcb-deac4ef23cc7",show_title:"Satoshi’s Journal",text:"Yeah, and that's one of the tools we're working at Satoshi Journalist. We've always paid our writers in Satoshi's, but once these QR codes become static through both twelve, we'll have the ability for all content creators to be have their associated lighting address prominently displayed next to their profile. And people want to tip them. They can be tipped. I mean, that's what basically the future is going to be. And of course Twitter is going to do the same thing. I listened to a long interview with Elon Musk when he acquired Twitter and he mentioned that he's going to allow content creators to be paid. And so I bet you he'll probably integrate the Volt twelve static QR code in such a manner where all content creators will have their respective QR code. And if they have good content, then you can send them tips, or if they don't, then you don't send them tips. And then what Olu said, it's going to catch fire because as soon as Mastercard and Visa are undermined by the fact that people can simply send Satoshis to other people instantly and basically for free via a static QR code, you don't need to freaking swipe cards no more. You don't need to freaking do all this stupid legacy system, fiat minded crap. You just get the QR code, have it into perpetuity as long as you want it, and boom, boom, boom. So the implications are huge from a game theory standpoint, although it might not happen right away if Visa and Mastercard aren't watching their back, so to speak, they're going to be like Blockbuster. And then you have a block stream, of course, is working on it. Another interesting angle is just imagine all these card issues, right? They integrate with Lightning because they want to catch up with technology. Don't forget, technology is always ahead of regulation. Regulation will have to catch up to technology. And these other companies that would actually make interoperability with Lightning even more accessible and easy with what they already have in their system, will be the one to accelerate this adoption. But this is how the game theory may even play out more interestingly, once they integrate with both twelve, because of the technology and the potential risk to them not integrating with it, they begin to see more adoption, right? And usually they are used to texting their people, their users. They have so much user base, they have so much merchants, so they just apply a little more fees. That's how to generate revenue on the cards. And now they've given many financial institutions the opportunity to print their own cards, right? So you go to the bank, the bank prints instant card for you. You just take the card and you start swiping once you leave the banking off. Or you just go to the nearest ATM, even, right at the banking.org, and you start swiping. That's my diamond. My daughter, she's just purchasing. My point, she's a bitcoin, a little bitcoin. And the card issuers, their competition will start from the people that can just begin an SME and start to create cards that you can spend lightning on. You do not need Mastercard, Visa card integration. That's where the competition will start from. The competition will not be a bigger company. It will be small companies. You can't you see all these bitcoin companies, they're going to come in droves and just small, small companies. SMEs everywhere will now have the ability to make cars that we just QR code you can actually tap and go. I think it's going to be fantastic. If you can use a platform that will charge you ten times lesser than what Mastercard and Visa is charging you right now, you save a lot of money in one year. And in Nigeria, it will cash fire ease in Africa. It will catch fire ease once people realize, because we are the experiment for the west, for Swift, for Mastercard, for Visa. Go and check their database. Africa is where the number is. Nigeria is number one. South Africa, Kenya. So the market of many of these companies is in Africa. 1.5 billion people will be 3 billion people in the shop field for 30 years. And you have 500 million people. Internet penetration is already more than 100 million people as we speak. You can access Internet with USA. So it's a fantastic thing to have the opportunity to do. Charitable effort. Just imagine the air drop you can do with lightning, static curl code to the entire nation, and you're not even spending much, but you're on boarding lots of people at once, and you're not curing too much fees. You can't do that on chain. You're going to cure too much crazy fees. I've tried it over and over again. But on Lightning, you're giving it away. You can give out a hundred thousand satoshi to 100,000 people. Wow. And you probably wouldn't have spent nothing with one QR code. And repeatedly you can keep paying it. You can do a minus A toshi. This gonna be fantastic, dude. I mean, more and more you talk about it, I get more and more excited. But one thing that's kind of interesting is once Visa Master become obsolete from Bitcoin and lightning, nevertheless, there'll probably be some iterations of the legacy system around. But once we get to the point where those individuals or sorry, those companies go obsolete, since you're in the payment sector, you know, the answer is this probably better than most is. I mean, for them to make money in the future, they'll probably end up running their own lightning node kind of deal and trying to make money through running transactions to their node because they would provide liquidity to the network and that would be one method by which they could make money. There are going to be other ways, but do you foresee them maybe becoming lightning node operators and taking I mean, I don't know how profitable that is, but what do you think about that? I'm not very active in this area. Portland is working right now, so I don't think he can talk. I would have suggested maybe a king can take this part, but I think it's very technical. I may be able to say some terrible part of it. Like I've already said, it's just going to be interesting when I talk, but people may not be able to see it insightfully from the length of somebody who puts together the code and understand how the pipe is supposed to look. I feel that the decentralization of nodes in general will create pipes of money. Our partner used the word pipe the other day when we're having a conversation and I could get it instantly because that was a very glaring example. So the bigger the pipe, the bigger the transactions I can pass through that pipe. I think it would be more interesting here because bitcoin is already everything. There will be proof of stake to a level, but it cannot have power over proof of work. It's just going to be proof of stake basically in the area of, oh, I got a bigger pipe, so bigger transactions come my way. And you can't query that because you don't have that. You know how I mean? I think people will run lightning nodes, but you're going to still have to have enough bitcoin to be able to do that. If you don't, then your transaction capacity will not be as much. Banks will run nodes, community microfinances will run notes. I mean, I think this is going to basically change regulation general, because it's an opportunity for revenue generation for the government. If I look at it from a public private partnership perspective, what I see is many opportunities for taxation for the government. So if the government is wise, you can't you shouldn't bitcoin it gets on now the quicker you can start to accumulate SATS and maybe some bitcoin in some very rare cases, you give people international money transfer patrol license to do legitimate bitcoin transaction in your country. You know how I mean? Because whether you give them or not, it's already happening. It's under your radar, but you can't stop it. Why don't you allow people run nodes? Why don't you expand that economy in general so you can see it, let it be transparent, but it's already decentralized. People would do it with or without you. So a lot of people would be able to run a node, but you know, the space needed for that purpose becomes larger. So I don't know, I think it's going to get like five terabytes in some decades and I don't know if it's going to be cheaper to get the necessary tools you need for that or it's going to be more affordable. Depends on how the world is. But in an imagine world, I want to believe that things will get cheaper because bitcoin will price stuff and in fact, once you have some, you can actually confidently spend and acquire what you want even more better than operating on the fiat monetary experience where things are very difficult. Even when you put the proof of work and you don't get to be paid what you deserve, you get cheated and somebody to come and tax you. They come and tax you for the services they don't offer you. So yeah, a lot of people want to know it depends on how cheaper it is in the future or affordable. But I think I kind of answered it to the best of my knowledge, jeremy, if I didn't. Yeah, no problem. Hey. Good morning, Oakland. ",timestamp:"01:42:06-01:53:40",topics:["Bitcoin Payment","Lightning Network Payment"],type:"twitter_space",weight:7.166842460632324},{boost:0,date:null,description:"The sovereign individual's role in Bitcoin and vice versa",episode_title:"Bitcoin Charlotte Book Club - Sovereign Individual Ch 1-7",guests:[{name:"Bolt",profile_picture:"https://pbs.twimg.com/profile_images/1352721439879786496/wfevZ8bG_400x400.jpg",ref_id:"b165e497-f255-4ce5-9762-30c90dcf776d",twitter_handle:"Bitcoin_CLT"},{name:"Victor",profile_picture:"https://pbs.twimg.com/profile_images/1519726025013350400/GHxSzgA3_400x400.jpg",ref_id:"d91fff8d-e4c6-4aeb-9f32-021e4a4ff9a6",twitter_handle:"victorwong"},{name:"George",profile_picture:"https://pbs.twimg.com/profile_images/1173474608856608768/vEBnPUdm_400x400.jpg",ref_id:"5946bdf6-8feb-43aa-b2ca-46b2944b0572",twitter_handle:"GeorgeNotFound"},{name:"Mark",profile_picture:"https://pbs.twimg.com/profile_images/1511102924310544387/j6E29xq6_400x400.jpg",ref_id:"c8cd0c95-c105-41c4-8fae-9dbfa76d84f2",twitter_handle:"markiplier"}],hosts:[{name:"Jacob Parrish",profile_picture:"https://pbs.twimg.com/profile_images/1552345395195412481/bgjme0Jh_400x400.jpg",ref_id:"476161bc-6773-4695-845f-15fe87affd67",twitter_handle:"Jacobp102"},{name:"Liz",profile_picture:"https://pbs.twimg.com/profile_images/1256650517549211648/cHwvj5o9_400x400.jpg",ref_id:"6538f07d-01e3-43c7-9068-55f3ec737d65",twitter_handle:"LIZ_Y2K"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/fe6bdbce-e91d-43cf-ab33-0e98bffabecc.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/3a4d250d-90a6-417a-a6b4-0f701bdd9e2e/daa90ea7-aa7e-41f5-9fec-7e513ca75667.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"5efbc2c3-e67a-4b16-9c9d-285bdd37e906",show_title:"Bitcoin Charlotte",text:"One of the things that I thought was really cool, which I never thought about with Bitcoin, this kind of goes into violence as well as he or she will even be able to act after death. For the first time, an individual will be capable of carrying on elaborate tasks even if he is biologically dead. It will no longer be possible for either an enemy at war or criminal to completely extinguish the capability of an individual to retaliate by killing him. This is one of the more revolutionary innovations in the logic of violence in the whole history. And so that really gets you to start thinking, what if someone came to get your money and you go, don't kill me, because if you kill me, I have money that will be paid to other people to come find you or your family. That would be pretty scary. Would you come after me then? Let's see. I'm not the best to have in dialogue with myself, so I'm going to just keep on looking around. So I got to page around a page 186, I think. So I had about 40 pages left to reach the desired area, which goes to the chapter eight, which starts with the end of egalitarian economics. But yeah, I think the book really starts to just get exciting for me. So I'm excited to move forward at this point, but it is a tricky one to get through if you're not an avid reader. But I'm getting better at it. Trying to think of some other really good points that I liked about this book. Unions. That was the word I was thinking of before. Unions were a really interesting topic in this book, and I want to find these quotes on some of it that were really cool. But the working so the idea with unions in this was they could use violence to get what they wanted. And that's one of the big turning points, too. It doesn't make much sense for unions to form anymore because companies do not have to be in a central location where they have all this manufacturing going on, and there's a lot of valuable stuff there that they know how to use. The worker simply sees the factories and ransom them back to the owners. The tactic of great simplicity, and one that in most cases, was profitable and fun for those participating. One sit down striker wrote, I'm having a great time. Something new, something different. Lots of grub and music. Maybe someone requested we got bro. So I was listening to the prior unions today, and so they were saying that those don't really exist anymore. Correct, because when I was working my government job, I was part of a union, really, and people would definitely abuse it. You could say something happened, and then the union would come and support you, basically, and you would kind of get whatever you wanted. How did the union have their power? What do you mean? How are they able to demand things? Well, you had someone from the union come and support you if you said this was like this one lady I worked with. She said she was getting harassed at work in our signal shop. So then the union came and like, an attorney, almost like it was an attorney, but someone had the union to take it her side of the story. And then it was kind of funny because we were all in the union. So then they had to get all of our other sides of the story, but they had to support us, too, like any people she was complaining about. I got you. Where was the union from? It was a union. You work for the DLP. I should know that, but I don't remember that's. Okay. How's it been going? Oh, we're just kind of monologuing over here, and I can't remember much of the book. How about you? How's it going? It's all right. Just cooking some steaks and pizza. The union is UFCW local 1994 Montgomery County Employee Union. That is a voice for working America. I'm not familiar. Mark, did the sovereign individual talk about unions? Yeah, quite a bit. We're talking about how violence, the use of violence or union is basically saying, hey, we're not working and we can also run the factory. We run the factory, we know how to do it, and they can hold the factory hostage. But that's basically dying away because things are getting more decentralized with the information age. Right, that makes sense. I listened to the book, actually, and I did it a while ago. I don't exactly what you guys discussed. I found it to be really good. I definitely didn't capture near as much of it as you do when you read it because you get through it a lot faster. The time you're committing to the book is a lot less. But yeah, it's so much to tackle. I mean, you could have long conversations about any small parts if you really dive deep into them. So I don't know if there's any particular subject you guys are talking about, but we have many people in here. But if there's anything interesting anybody wants to talk about. ",timestamp:"00:21:00-00:27:56",topics:["Sovereign individual's role"],type:"twitter_space",weight:7.131711006164551},{boost:0,date:1671720944,description:"@mattyicesensei and @johnmichaeldrew's opinions on Web3",episode_title:"Café ₿: #Bitcoin News & Bitcoin Day w/ @Bitcoindayio",guests:[{name:"@johnmichaeldrew",profile_picture:"https://pbs.twimg.com/profile_images/1512897699942744064/PuRU3K8P_400x400.jpg",ref_id:"6b72ee7f-52ef-4847-96ed-78ea09e3f19b",twitter_handle:"johnmichaeldrew"},{name:"@mattyicesensei",profile_picture:"https://pbs.twimg.com/profile_images/1607138483579101186/0qm0xaCF_400x400.jpg",ref_id:"286abd3b-cecc-4ec5-bf88-2a9fd5393083",twitter_handle:"mattyicesensei"},{name:"@Bitcoindayio",profile_picture:"https://pbs.twimg.com/profile_images/1493098733608837121/tLI-XTwl_400x400.jpg",ref_id:"6a87699e-7a27-4928-89e8-d884f1458bf9",twitter_handle:"Bitcoindayio"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/83744e68-b563-4004-b52a-cfdfff89748f/12c9b9f2-fbce-4784-9404-88a574baa762.mp3",node_type:"clip",pub_key:"",ref_id:"f80dd079-1a9d-4bda-b8dd-81c05d203533",show_title:"Swan.com",text:"Thank you, John. Maddie, I was just wondering, I'm just kind of looking through your stuff, recent stuff. Can you tell me your opinions on web three and products like step in, for example, and just where are you on ethereum? Where are you on crypto? Bitcoin? What do you think about web three in its future? This can be for either of you, actually. Alex, are you going to allow that on this? I was going to ask him. Maddie's very knowledgeable. Maddie's knowledgeable. I'm sure he can answer. But you want us to answer that, Alex? Yeah, we do this thing called the crucible on this show sometimes where sometimes there's hard questions. So I don't mind. Go ahead. Sure. Let me take it from here then. Me personally, I use different platforms, different things. I like to gamble. I like to do different things. So where I'm at with web three, I'm fully bullish web three, I'm fully bullish bitcoin. Bitcoin is my savings. It's where I store most of my wealth. When I like to gamble, I use stuff on ethereum. I play different metaverse games. I do all sorts of stuff. So for me, there's a use case, there's a value there. It's not anywhere near the same value as bitcoin. But, yeah, I have fun with all sorts of stuff. I like to gamble. I like to go to the casino. I like to do all sorts of stuff. So with a small portion of my wealth, I gamble and do that kind of stuff. Does that answer your question? When you say gamble, do you mean literally gaming, or are you talking about purchasing shit coins and then gambling on return? Oh, all of the above. So quite literally, I go, like, for example, if you use a theorem, if you've ever heard of the metaverse, if you go into, say you go into central land, you can literally go to a casino into central land and gamble. So I like to do stuff like that. There's all sorts of different things you can do gamble for returns. But for the most of my wealth, I'm just dollar cost. Averaging and stacking stats, but there's a lot of different fun things you can do out there. Most of it, probably 90% of all of it is scams, ponzi schemes, all sorts of different stuff. But there's definitely things that I find value and personally, aside from bitcoin, although I just think they're different things. Right. You don't store all your wealth and Bakarat casino chips, but you might like to go play and gamble and do different things. So that's the way I like to look at it, if that makes sense. ",timestamp:"01:56:23-01:59:20",topics:["Web3"],type:"twitter_space",weight:16.6951974581924},{boost:0,date:1667347200,description:"The business model of Amboss",episode_title:"Meet the Makers: Anthony & Dolu",guests:[{name:"Anthony Potdevin",profile_picture:"https://pbs.twimg.com/profile_images/1252630766909079555/qf-qI5EZ_400x400.jpg",ref_id:"da0a9fdc-eda1-4e07-8341-2100428065d1",twitter_handle:"thunderhubio"},{name:"Dolu Zerologin",profile_picture:"https://pbs.twimg.com/profile_images/1577320325158682626/igGerO9A_400x400.jpg",ref_id:"4c228a2d-4f9c-4bbd-bf49-d2be3159c6a4",twitter_handle:"Dolu_Web"}],hosts:[{name:"Zapp Ed",profile_picture:"https://pbs.twimg.com/profile_images/1519990234070540288/adGqlFoj_400x400.jpg",ref_id:"bbe7cf1d-cd8d-4d36-926d-76f41b775fbb",twitter_handle:"zapp_ed"},{name:"Moritz",profile_picture:"https://pbs.twimg.com/profile_images/1452933125743460360/5xkRoFj7_400x400.jpg",ref_id:"e23e282d-82b3-4c9d-859c-c1c7f41eef84",twitter_handle:"getAlby"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/965489b4-a414-4fd0-ab8c-55911b1596aa.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=wiIzexAc2gs",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"7ef24d02-66fe-4872-b1f1-ea144bfcaf5c",show_title:"BOLT FUN",text:"model of Ambulance today? Yeah, so this is a very interesting point because a lot of feedback that we get is like you're in this growth phase, don't charge anything. Just try to get as much users as possible. And while I think it is in a way correct, like we should be looking to get as much users and as much feedback as possible for our products having a price for the different products, which at this point the price is very minimal. The space is very small. Like the lightning. Space is very small. And what we charge for our product is also very small. So overall revenue still is very small. So it's more of like a symbolic thing. But what it helps us is see where there is interest or where there is value that people are willing to pay for some services, right? For example, if we were to do a magma our marketplace and have everything free. We wouldn't really know if people are using it because it's useful to them or just because it's free. People love free stuff. If it's free, they will use it even if they don't really need it. If you see enlightening with rebalancing, people rebalance all the time and if it costs them almost nothing, then they just do it because they want to, not really, because it could be something that is useful to them. Right? So adding this price point on top does help us see like, okay, there's interest from the community to further expand this service. They do see value in it. Let's maybe put more focus towards that part. And in terms of business model right now for us, we have ads on our home page. We focus on Bitcoin and Lightning ads and then we have subscriptions that you get some additional perks you can personalize further your node page you can add like a node and then for the more analytics interested people there is time series that they can access like further get further insights into what is happening around nodes or around the Lightning space. In general, for us, it's really about experimenting. So we're trying out all these different revenue models, like figuring out where people see value, where they're willing to give us some stats to improve their experience or have something nicer or more data or something that gets improved for them. Yeah, thanks a lot for sharing this. I think it's very, very encouraging also for new developers in this space to learn from you. And I think people should take the time to experiment and learn as much as possible. And I'm also curious to learn from you Dulo, what experiments or what experience also led to the most recent project zero lock in. Can you share some history on that? ",timestamp:"00:16:35-00:19:57",topics:["Amboss","Lightning ads"],type:"youtube",weight:7.334451631469231},{boost:0,date:null,description:"Bitcoin News for December 20th, 2022",episode_title:"The Orange Sun 🌞 Interview with Nzonda Fotsing Sr. #Bitcoin",guests:[{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"Funsho Jimoh",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"a237ffb0-792b-484e-b12f-65a2b679eaf1",twitter_handle:"fnicencool"},{name:"Heritage Falodun",profile_picture:"https://pbs.twimg.com/profile_images/1510397558652350469/jYOl00tU_400x400.jpg",ref_id:"b2bcc65a-b060-4dbe-b9ac-a7d64a11d2ac",twitter_handle:"herrytheeagle"},{name:"Nzonda Fotsing Sr",profile_picture:"https://pbs.twimg.com/profile_images/1458565804291670016/XaLi8e6a_400x400.jpg",ref_id:"53fe4486-5ef3-4988-8ada-47c3cb1c2d51",twitter_handle:"BitcoinSophist"},{name:"ROB",profile_picture:"https://pbs.twimg.com/profile_images/1605484577669074946/CkYjFUxH_400x400.jpg",ref_id:"25c5f080-fd07-4b37-9014-7fc05419edce",twitter_handle:"robertlamonta15"}],hosts:[{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/e4a700c7-f311-4270-be71-e2783252be6c/d4cb7ccf-f7e8-4071-a74b-943cc09fd967.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"ed128fbb-3ad8-4d26-921c-495edfda3cbd",show_title:"Satoshi’s Journal",text:"So as soon as she comes up, I will put the focus and landlight on him. But the first thing I have in the nest is I try to let you up top. Tiki. I'm not sure what happened. I'll send you an invite. So, bitcoin sapiens, he's been on a roll these last few weeks. You could tell he's taking some time to think out some really good quotes. And this quote he says, I think I'm here. Yeah. Okay, I'm up. Hey, what's up, tk? Yeah, it's showing on my end. Like, you know how it gets louder when you come to speaker? It got louder. So I assumed that I bumped up to speaker, but then I look and I'm still listening and I have mike. I'm like, what the heck? That was weird. Yeah, I don't know. That is weird. I'm going to share the nest or share the space now. Okay. So bitcoin sapien says, a common misconception is thinking bitcoin is the first iteration of a new tech, when in truth, bitcoin is the final iteration of a dream that took decades to achieve and includes the hard work of incredibly smart people from all around the world. And that's a very good point to make because a lot of people think that bitcoin was the first cryptocurrency and it was the first iteration of an innovation. But bitcoin came upon the hard work of many cryptographers, engineers, scientists, mathematicians, just people in general trying to study how to get a digital money that was totally out of the hands of government. And so up until bitcoin, many people tried many different things. And finally, satoshi nakamoto was able to put together an iteration of all the things that had been done before him or her or them and come up with bitcoin. So I like that quote from bitcoin sapiens. It's a good one. The next thing I have up here was another quote, this one by Jeff Booth. He says, trying to measure a non linear system. The economy, like a linear system, ensures you miss small changes in conditions that lead to critical states, which also means that you might dramatically underestimate the risk. Of said system bitcoin. Yeah, I think a lot of people try to think that economy is a linear system. And they use these linear metrics to try to measure a system that you can't measure on a linear basis. One thing like the CPI, we all know that's also known as the CPI, the Consumer Price Index, is a basket of weighted goods and services that people, that the economists use as a means to try to gauge what inflation is. But that's their linear way of trying to measure something that's not linear. And that's just one metric of many that economists try to use to measure an economy. I mean, it's almost like it's using the wrong tool, basically. If you have a system that has so many variables and it's really what it comes down to. It's such a complex system. How do you measure such a complex system? How do you try to think just in your human body right now? How do you measure all of the complexities that are happening in your body? How are you to measure every freaking neuron that's going in your head right now? Just back and forth, back and forth, exploding, firing off information, the blood going through your veins? How do you measure that? The pumping of your heart, the treble of your voice? You can't measure the human body with linear metrics. The human body is a complex organism. And I implore anybody to try to measure the human body using a linear metric. So that's basically what Jeff Booth is saying. The economy is a living organism that has so many variables, and if you're trying to measure it with a linear system, then you're going to miss a lot of he says, small changes and conditions. I'm thinking you miss big changes. Anyways, that was a cool quote. I liked it. The next thing I got up here is, ",timestamp:"00:05:39-00:11:10",topics:["Bitcoin News"],type:"twitter_space",weight:6.58552348613739},{boost:0,date:null,description:"Interesting predictions from the Sovereign Individual",episode_title:"Bitcoin Charlotte Book Club - Sovereign Individual Ch 1-7",guests:[{name:"Bolt",profile_picture:"https://pbs.twimg.com/profile_images/1352721439879786496/wfevZ8bG_400x400.jpg",ref_id:"b165e497-f255-4ce5-9762-30c90dcf776d",twitter_handle:"Bitcoin_CLT"},{name:"Victor",profile_picture:"https://pbs.twimg.com/profile_images/1519726025013350400/GHxSzgA3_400x400.jpg",ref_id:"d91fff8d-e4c6-4aeb-9f32-021e4a4ff9a6",twitter_handle:"victorwong"},{name:"George",profile_picture:"https://pbs.twimg.com/profile_images/1173474608856608768/vEBnPUdm_400x400.jpg",ref_id:"5946bdf6-8feb-43aa-b2ca-46b2944b0572",twitter_handle:"GeorgeNotFound"},{name:"Mark",profile_picture:"https://pbs.twimg.com/profile_images/1511102924310544387/j6E29xq6_400x400.jpg",ref_id:"c8cd0c95-c105-41c4-8fae-9dbfa76d84f2",twitter_handle:"markiplier"}],hosts:[{name:"Jacob Parrish",profile_picture:"https://pbs.twimg.com/profile_images/1552345395195412481/bgjme0Jh_400x400.jpg",ref_id:"476161bc-6773-4695-845f-15fe87affd67",twitter_handle:"Jacobp102"},{name:"Liz",profile_picture:"https://pbs.twimg.com/profile_images/1256650517549211648/cHwvj5o9_400x400.jpg",ref_id:"6538f07d-01e3-43c7-9068-55f3ec737d65",twitter_handle:"LIZ_Y2K"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/fe6bdbce-e91d-43cf-ab33-0e98bffabecc.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/3a4d250d-90a6-417a-a6b4-0f701bdd9e2e/daa90ea7-aa7e-41f5-9fec-7e513ca75667.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"1ba72c1d-ff22-4572-ad24-8171bfce9de3",show_title:"Bitcoin Charlotte",text:"I guess that is hard for me to get through. But when they talk about what they predicted happened in 2000, I mean, they weren't right on that, correct? Yeah, I think the reality of that is there were some really interesting predictions that were right or close to right. There's plenty of things that weren't right, but anytime you're predicting the future, if you're right at all, it's usually pretty impressive, especially with the way technology is and how things change, it's hard to predict about anything. So I think they made some pretty bold claims that were shown to be pretty true. And I think that's what people get attracted to when you kind of look back on it and say, wow, they're actually right on some of these things, whether it's digital currency or they even reference pandemic and how the state will control people. And there's just so much overlap with the reality we're living through. I definitely find that stuff interesting. I already knew all that stuff before I read it, though, because I've been talking about so much on podcast and things. You're just so smart, bro. Well, a lot of people talk about especially Robert Breedlove. He references the sovereign individual a lot, so if you're listening to his podcast, you're going to know a lot of that stuff. These authors take in a ton of information and I do kind of like how they seem to make the best logical conclusion from the information. There's bias here, of course, but they really analyze all these things. They take in a lot of different authors and they look at what they wrote and what they think is wrong about what other authors wrote and they cite all those things and kind of go through that and a journey with all this. And it is I do like that part of it. It just seems like it takes quite a while to get through some of those points. But mark so what we started with was the gist that I got from this book was those in control of violence. Where violence is incentivized is basically how you can predict what's going to happen in the future and who's going to be in control. Whoever has the best leverage on violence. So they're reading part of the book. They're talking about the state didn't have any really control because there were nights. And the nights because of some of the metal workers and stuff, made certain improvements to the horses and forget about the stirrups and something else to make them just badass soldiers. And one night can take out like 20 guys or something. And so if you had a group of that, you can basically go in, pillage and go anywhere you wanted and do what you wanted and no one else could stop you, not even a state. But they kind of lead you through that, through all those things. And I was wondering if you got that from listening it from it, if it was like they seem to be the theme. The people control it. I'm saying that monopoly on force or something like that. Yeah, I think are you talking about just how technology brings a lot of it continues to show that that monopoly gets weakened and the power to individuals get strengthened. It can go both ways because technology can be used in either direction. I know they talk about that quite a bit. I guess I'm talking about the incentive for violence. So before agriculture, there was all these groups and every day they had to go out and find food and bring it home. They're very busy dealing with that and they couldn't store food for that long. So the incentive to go and take out some other village wasn't that great because they didn't have a lot of stuff and they had to keep themselves alive anyway. So once agriculture wasn't developed, all of a sudden a lot of wealth started to become available, which then made it so there was something to steal. So then you could go then it made sense. Oh, if I become a violent person here, I can get a lot of riches or a lot of food or a lot of whatever. That kind of leads all the way into the nation state to where we're at now, where violence can be incentivized because you can actually take over a lot of stuff. That's what I'm getting at. Which leads to Bitcoin, where we talk about this a lot, where storing your money the proper way with Bitcoin, with cold storage or multisig makes the incentive for someone to come steal it very small because you got to go through so many hoops to make that actually happen. Yeah, I 100% agree with you. The incentives in a fiat based system and basically throughout all of history, except for a few periods of time when gold worked pretty well, of course you could still steal it and you could confiscate it, but at a different time with different ways of doing, forcing people to give things up and stuff. You could secure something physical like that pretty good and that provided people some way to store value and protect their property rights, really, and their wealth. But it obviously has major issues and failures, just the physical realm. And then bitcoin solves that by creating an uncomplicated property. And it seems that they definitely dialed into that some in the sovereign individual that will be a natural evolution of humanity because they've recognized this problem with the incentives, which is basically what you were saying. It's inevitable that those things are going to happen because humans were incentivized to gain that power and to control people either through what they thought was best for the people morally or immorally and then eventually they would abuse that power and that brought us to where we are. I think that makes a lot of sense. I think another thing where they just use their philosophy and all their research and hard work to really dial into some things that are really important that a lot of people don't understand on just human nature. ",timestamp:"00:27:58-00:34:52",topics:["The Sovereign Individual predictions"],type:"twitter_space",weight:6.520025253295898},{boost:0,date:1647576e3,description:"Introduction - How [[Bitcoin UASF]] went down, [[taproot]] lot=true, speedy trial, [[small blocks]]",episode_title:"How Bitcoin UASF went down taproot lot true speedy trial small blocks",guests:[{name:"Luke Dashjr",profile_picture:"",ref_id:"c3b2367f-2863-421b-8b2c-c093423f0eaa",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b79a3eb8-bcd0-4338-b979-d32aef360785.jpg",keyword:!1,link:"https://www.youtube.com/watch?v=rspXF6Gp3-g",node_type:"clip",pub_key:"",ref_id:"b1eabcd8-8d00-4950-b264-f4f2741ca3a7",show_title:"Stephan Livera Podcast",text:"",timestamp:"00:00:00-00:03:40",topics:["bitcoin uasf","taproot","small blocks"],type:"youtube",weight:6.440371671951619},{boost:0,date:1647576e3,description:"[[Small blocks]]",episode_title:"How Bitcoin UASF went down taproot lot true speedy trial small blocks",guests:[{name:"Luke Dashjr",profile_picture:"",ref_id:"c3b2367f-2863-421b-8b2c-c093423f0eaa",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b79a3eb8-bcd0-4338-b979-d32aef360785.jpg",keyword:!1,link:"https://www.youtube.com/watch?v=rspXF6Gp3-g",node_type:"clip",pub_key:"",ref_id:"a61c7685-556b-4886-8908-fd0ead4dc1f2",show_title:"Stephan Livera Podcast",text:"",timestamp:"00:43:55-00:00:00",topics:["small blocks"],type:"youtube",weight:6.440371671951619},{boost:0,date:null,description:"Cory Klippsten and John Ely's words on the Bold Bitcoin credit card and Bitcoin space",episode_title:"Café ₿: Bitcoin Credit Card w/ @BoldBitcoin @John_ely_21m",guests:[{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Wicked",profile_picture:"",ref_id:"fee44016-b05f-4961-a6d8-7dac655cd931",twitter_handle:""},{name:"@BoldBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1559592705231044609/iJrNKxF9_400x400.png",ref_id:"dd4e1c4c-d111-4f01-ad95-18200d50cdb8",twitter_handle:"BoldBitcoin"},{name:"@John_ely_21m",profile_picture:"https://pbs.twimg.com/profile_images/1560444673046585346/VN8n2LtM_400x400.jpg",ref_id:"a24436b1-5992-4711-a4a5-0770546ea80a",twitter_handle:"John_Ely_21m"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7061be6d-b144-4a81-a13b-3d125e3e2812/edf29ab4-2b4b-4fdf-9998-8a9b8e9437c8.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"7fea625e-c79b-402b-bce5-66e4e97d9598",show_title:"Swan.com",text:"going to give you a couple of moments to make some closing comments, but before we do that, I want to welcome up Corey Clips and CEO Swan Bitcoin. Corey, do you have something you want to add? Absolutely, yeah. I just wanted to just give the backstory of how we connected with Bold in the first place. I think it'll be kind of fun for people to hear. I don't know if John even knows the story from Zach, but from like November through February of this year, so this was probably three or four months, we were deeply exploring, mostly me and Jeremy show. Walter had a product who was new to the company. We were really exploring whether to launch a Swan card and what that might look like and what we can do. And we were talking to all the providers and the program managers and digging the interchange fees and all this kind of stuff and basically netted out saying, that's a whole company. It's just way too complicated to do just with, like, a small team inside of a small but growing company like Swan. And so basically it was kind of wanting to kill it, but was still keeping the consideration open. And then I think Zach just reached out and I was like, oh, yeah, that's it. You need a team that's just doing this literally every day. And I'd rather partner with these guys in the future or something like that, but just see a team just go hard after that specific problem and nail it. So then we invested out of both Bitcoin or Ventures and Elzonte Capital and obviously have been rolling out the red carpet for them at our events and things like that. So really psyched to have you guys in the space. And this was illuminating the parts I heard and want to thank you for coming and sharing. That's awesome. Thank you, Corey. Yeah, it was great meeting you in La. You know how to throw a good party. A great party. I'll be there for the festival next year for sure. That's awesome. Just to wrap up. I know Alex wants me to wrap up. So appreciative you guys having me. We're excited at Bold to launch in the US next year. We're an amazing team of bitcoiners building an innovative product to help other bitcoiners and also to attract precoiners to make the Bold move to live on a bitcoin standard. You can follow us at bold bitcoin on Twitter. You can take the 30 seconds to go to get Bold IO to sign up for our waitlist. We certainly got some fun things in store for you. Before we launch, we'll be giving you a few ways to earn some stats and have some fun. And thanks again. My DMs are open. Love to hear what you guys all think. Awesome. John, thanks so much for being here. Very excited about what you guys are doing. I wish you the best. Hope it works out great. We'll probably have you back from time to time, check out where your progress is at and how things are going. Go ahead, Corey. So, I don't know if anybody switched over for a minute, but I just went and toured into the CoinDesk space doing their rundown of the top 40 most influential people in crypto for 2022. And they let me up on stage, and you'll probably hear about it on Twitter later today. That was pretty fun. Oh, God. Here's Tom. Tory. I honestly was really trying to pull punches and not be mean. I mean, these reporters hosting a space about this, they have no idea, but it's like you had literally zero bitcoiners out of 40. The only person that writes about bitcoin that got honored was Nick Carter, and he was honored for attacking toxic bitcoin maximus, and that's why he made the list. So, yeah, it's pretty funny, I bet. I hope it's recorded okay. I think it was recorded, yeah. So it would be toward the end, probably 15 minutes before the end of their space or before, whatever, 09:00 a.m. Pacific was, I think a space spun up already right now talking about it. So I'm going to see if I can find that good stuff. ",timestamp:"02:03:53-02:08:08",topics:["Cory Klippsten","John Ely","Bold Bitcoin credit card"],type:"twitter_space",weight:6.436822414398193},{boost:0,date:1587380431,description:"The availability of foods and other supplies during the covid 19 pandemic",episode_title:"Life in Interesting Times - Part 1",guests:[{name:"Matt Murray",profile_picture:"https://pbs.twimg.com/profile_images/1273726156236140544/SJjI1WD7_400x400.jpg",ref_id:"72ce0a76-8593-4898-9369-f39b4bc3d2d3",twitter_handle:"MattMurray28"},{name:"Louise Reynolds",profile_picture:"https://pbs.twimg.com/profile_images/602592582754050048/RbAMd-Re_400x400.jpg",ref_id:"b4c2b12b-96a1-4d37-ae74-5be0883f3091",twitter_handle:"reynoldslouise"},{name:"Jon Slaughter",profile_picture:"https://pbs.twimg.com/profile_images/1336713360/samantha_test_090_400x400.jpg",ref_id:"a295820c-0098-433a-8cc3-cc13085b85c8",twitter_handle:"jonslaughtermd"}],hosts:[{name:"Kim Howerton",profile_picture:"https://pbs.twimg.com/profile_images/858822375457964032/Of4fbmsT_400x400.jpg",ref_id:"49ab70ff-a8e5-4e0f-855a-49abe8a5b645",twitter_handle:"theketonist"},{name:"Daisy Brackenhall ",profile_picture:"https://pbs.twimg.com/profile_images/858822375457964032/Of4fbmsT_400x400.jpg",ref_id:"d68ff5aa-c521-4199-9a6d-bf2cf077ccaa",twitter_handle:"theketonist"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/a8e3517b-b44d-4270-adaa-57587896b1e7.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/ketolifesupport/ketolifesupport-0031-life-in-interesting-times_tc.mp3?dest-id=2479037",node_type:"clip",pub_key:"032318b5d36e680f7ce77f01e1e5e848da79bbd8c86018513c77b32a869e080e90",ref_id:"51ef662a-201f-4c3c-b60d-bbc627c74e8e",show_title:"Keto Life Support",text:"You've got a huge apartment. We can see it. We're looking at each other on Zoom. Kim, you have a very small apartment. Don't you have a partner that you have to share it with all the time? How's that going? Yeah, it's very small here and we don't have really any outdoor space, which is kind of a bummer. And, like, it's in some ways awesome. We're getting along super well and everything's really, like, great. And at the same time, like, there's no space. So working from home is more challenging because you don't want to bother the other person and, like, you know, you're like, talking about this whatever topic and, like, I'm sure they could care less. So I think it's trying to be respectful of more of the ears space than anything else, but everything's, you know, I think there's just a certain amount of surrender that has to happen. This is what is and this is what's going on in terms of what you can and can't do. I mean, I realized all of my hobbies involved shopping, things like that, but in terms of availability here, the first week was rough. In terms of shopping, like, meat was sold out in a lot of stores for when I would go in, but within a couple of days to a week, that seemed to shake out. And now the only thing you can't find here are paper towels and toilet paper. You have to get in line before the store opens to be able to get those but everything else, there's a vegetable. There's like a call Monterey Market. There's a market a block away from me. It's like if you put an incredible farmers market in a building, like they get all the produce from all the local farms and things. It's just a couple of blocks, like a block away from me. And that is like superstar. I shouldn't tell people if you're in the Bay Area. No, it's super stocked and full. But they're only letting like a quarter of the people in that their usual occupancy is. So you have to stand in line outside and you can only go in when somebody comes out. And so that's pretty much what's going on here with the social distinguish thing, is causing things to go at a slightly slower pace, but you just kind of put your earbuds in and listen to some music and just wait in line for an hour and you're fine. And so food seems really well handled here in the Bay Area in terms of being able to access we want we don't have any limits. I don't know how I would do with a family of five to only be able to buy like £2 of meat. You'd have to go to the store like every day, which seems to be kind of counter to what you want to do. I'm trying to limit my trips maybe once a week. So there are no limits. It's very state to state here, though, because I hear from a lot of people, like a lot of clients in their state, they're having a lot of supply issues. But you can get your deliveries. I can't. You can still get Whole Foods and you can still get your Amazon deliveries to you. Yes, but so many people are having so much stuff delivered that everything is booked way out. And so, like, you might place an Instacart or Amazon order and instead of coming in a day or two days or whatever day, whatever the appropriate amount of time, it might be weeks. Instacart is supposed to come the same day, but it's like Instacart is a program. You can shop for groceries and they deliver them. There are other similar programs. It used to be you book it in the morning, you get it in the midday. Now you book it in the morning, you get it four days later. And so they're trying to hire staff to catch that up. I just got a notification that a local Whole Foods is actually closing at 01:00 in the afternoon. So all afternoon they can just do deliveries. And so I think that people are shaking out how to make this work. I think that a lot of it is people hoarding buy more than that they need, which is understandable because no one wants to go out. Kim, if you need toilet paper, I didn't hoard, but buying one pack at one of those box stores will last me an entire year. So I can always send you some. We are fine. Because I actually did get up very early the other day and go to get in line at Target before they opened and it worked and we were fine on toilet paper. The bigger issue was paper towels. Those things hardly. I use a lot of paper towels when I cook because especially with chicken or something, I wash my hands. I use paper towels instead of a dish towel because that way I'm just throwing it away, drying off meat. I use paper towels. I use paper towels a lot. I find this toilet paper thing is weird. I can almost understand the initial rush, but why is it still out of people can't still be I said the same thing. I was like the hoarders have hoarded. What is happening? Well, I actually heard that because nobody's going to work. Exactly. Well, they make those gigantic rolls of single ply garbage toilet paper that are at work, but no one's using that toilet paper. Everybody needs residential size roles and they're not told to make that many. So they've got a shift from making commercial grade toilet paper to residential grade toilet paper and plus the panic buying. So there is a shortage of supply. But human nature it's a weird thing to grasp on to, but I think it's just a control issue. Yeah, I think it's something people can control in an uncontrollable environment. And luckily for me, as I said, I'm not a hoarder, but I do keep meat in the freezer and stuff. So at the end of February, we went to Pipers play. Matt's daughter had a play and we had some friends that came into town and we cooked ribs, baby back ribs and wings before we all went to the play. So the very next day I was going to the box store and I got replacement ribs and replacement wings. And this was just at the start of the spread of the disease as well here in the US. So I had those things in the freezer to begin with and restock them when I use them. Yeah, I think there are a lot of services like butcher box and where you can get meat delivered. And I guess so many people started doing that. They are now have a waitlist. But one of the things that is coming out of this time, in the United States anyway, is a lot of people are getting more interested in their food supply chain. And so in California, I'm in Northern California, but even north of me, about 4 hours up towards Oregon, california is really a big state for anybody that doesn't know. So about 4 hours above me there are a bunch of farms and like one of them is called Five Mary's Farm and they sell direct to the public. They said their number of orders to the public have tripled. So people placing orders to be shipped or to be picked up. And a lot of the restaurant supply farms, a lot of farms just are like connected to a farm to table restaurant. And so with the restaurants closing down, a lot of the restaurants have started supplying to homes. And so, you know, one of the silver linings is I think a lot of people might get a lot more intimately acquainted with where their food comes from, start to form relationships with food producers. And so I'm actually going to do a blog post about it this week where you can find in your area or as close to your area as I know about a local food producer who you can order directly from. Kim ",timestamp:"00:36:39-00:44:02",topics:["Covid 19 pandemic","toilet paper","food supplies"],type:"podcast",weight:6.419591903686523},{boost:0,date:1672772445,description:"Bitcoin mining and malicious attacks",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Foss, Max Keiser & the Plebs! 🍻😂",guests:[{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"Max Keiser",profile_picture:"https://pbs.twimg.com/profile_images/1361873587582472195/y57DiTYX_400x400.jpg",ref_id:"743efd07-d194-4c74-8663-45c3b8646b8e",twitter_handle:"Maxkeiser"},{name:"Isabel Foxen Duke",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"58989d4a-4a96-4ffc-8cbe-f233ffb10420",twitter_handle:"isabelfoxenduke"}],hosts:[{name:"Publord",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5b7b7e22-fe55-4e1c-933d-6544f6600351",twitter_handle:"publordhodl"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7de8e4aa-50a6-4f57-a8ff-6ca16a4f0ae4/76c3395a-4fe5-4802-8d2a-92cca1f1ea0b.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"e4520df5-b812-4247-bd2d-7db10bc5b51f",show_title:"PUBLORD",text:"Brandon gentley here. I don't know how far down the road you guys are going with this, but I just was reading a bunch of stuff over the Christmas holiday just on grid attacks and just stuff that I was only somewhat aware of over the last ten years and seeing some little more high profile ones. But there's a lot more than I had ever thought. There were just minor attacks, thousands of people losing power, things like that, all over America, et cetera. How does bitcoin mining does it, can it? Will it? How does it kind of stabilize just from more malicious attacks? Damn, that's a great question. Cyber warfare? I'm not an expert there, Brennan, so I can't help you with that. I'll just tell you, it's pretty easy to knock out the North American power grid, okay, with some sort of carbon bomb that sprinkles carbon all over the transformers of every single major US. City. I'm not telling you how to do it, and maybe I've got my facts wrong, but I don't know how bitcoin mining helps with that, except to say the following there will be lots of bitcoin miners that are still spinning even if a major North American grid goes down. And that's the beauty of the bitcoin mining network. How could it help, actually, in a pure capitalist way? Well, if you get utilities creating more revenue streams and therefore getting increased revenues and using what's called operating leverage, meaning every single cent of electricity that they get demand for, over and above their fixed cost base creates enormous profits. Well, then the bitcoin miners can increase the revenues of the utilities, which allow them to be able to spend more money to defend their grid against cyber attack. Does that make any sense? Yeah, it does. Greg, I appreciate it. And I'm sure that there's whether it's the Jason Lowry of the world who you've mentioned numerous times kind of going down this type of road thinking about things like that, and then that's just one of those things where I was shocked. I was really blown away, actually, at how much it was happening. And it seems to be happening at the small level where no one notices. And I would imagine that there are some type of, like you said, some capitalistic approaches that either are being done or will be done eventually and just kind of figure out as it's kind of become more prominent, which, like you said, cyber warfare. The biowarfare aspects we know are going to be more of the future and not so much the kinetic side. So yeah. Thanks, Greg. So you're welcome. And you know, what makes me happy is like, smart kids like you are asking these questions. This is what gives me for those of you who don't know, I've met Brandon in in La. And he and Larry LaPard and I, you know, talked about these things. And the world's in good shape when young kids and when I say kids, I mean anyone younger than 35 when young kids are asking these questions and planning for the future. Not everyone's a fan of Jason Lowry. I'm going to see him in Boston in a couple of weeks. I've met him before. Look, the kid has ideas that turn some people off and that's fine. No one else. We can't be groupthink. If everyone's thinking alike, then somebody isn't thinking according to General George Patton, right? So let's keep the lines of communication open for people that might have different ideas or ideology than you have. So the world is in good shape when the kids are asking these questions and not the old men like Max and myself. I don't know the fucking answer. All I know is I want the kids to ask these questions so that when they are my age, they will have solved a lot of the problems that we're now dealing with. Right, Max? Hey, Greg. Yeah, we're going to solve them all. I'm curious your opinion. You have a lot of experience. You're gaining new knowledge over time, like we all are. I personally see a time where no matter what the cost of electricity, individuals randomly all over the world are going to be willing to run miners, especially when they're configured to produce heat for a home if you're going to have to buy heat anyway. And you could run a minor to heat your home and generate SATS for doing it. I even believe some people would be willing to lose money to accumulate SAS. Do you feel similar about the overall worldwide market for mining because of the pools that are out there? The ability for anybody to mine even with just one machine and still gain some SAS, I feel like it's a great opportunity that's never going to go away. Potentially just about your no. Let's take it to one of our power plants in northern Ontario. We are considering adding a greenhouse right next door that will create leafy greens for the indigenous community. So the indigenous communities in Canada have some of the highest tuberculosis rates because they don't get enough sunlight. And if you had a 35 megawatt mining facility, which we do, it's operated by Hut Eight, a publicly traded bitcoin miner. If the heat from that bitcoin mining facility was vented into a greenhouse and used to grow leafy greens for the indigenous communities, do you think that would be a benefit? And so that's just one extension on an industrial size project from exactly what you're saying. Okay, these are secondary and tertiary benefits from the efficient use of energy and its byproducts, which are heat in terms of making life better for various communities around you. So whether it's heating your home or heating a greenhouse to grow leafy greens to allow to combat tuberculosis, lots of these indigenous communities in northern Ontario, there's less than 100 people living in these communities. And if you could put an entire ecosystem to work around a bitcoin mining facility, I'm not going to. I'm not indigenous, and I really don't want to offend any of them if I'm pining on something. But I do think it would make sense to take that heat and heat the school, heat the greenhouse, heat the local tribunal. Every single indigenous community is set up in a similar way. So this is really good stuff as far as I'm concerned. I got to make sure I don't get between the wall and the wallpaper, because I don't know this stuff inside out. But there are people that are studying these projects for the benefit of remote communities everywhere in the world, not just in Canada, but remote communities in Africa, et cetera. So your idea on a home basis, Jim, can be taken to a village in Africa or a remote community in northern Canada for the benefit of all the less privileged. And I got to be careful, not less privileged, just less electricity centric populations. In the case of northern Canada, all of these communities run off of diesel reciprocating engines, diesel fuel, rather than having some sort of electricity solution that incorporates bitcoin mining. So you guys have seen ice road truckers and you've seen their trucking, diesel fuel to northern remote communities. Don't you think the environment would benefit by having a bitcoin mining solution that allowed for an electrification of a remote community running on, let's say, liquefied natural gas rather than diesel fuel? All of these things are possible with bitcoin mining. You never hear any of this from the politicians because, well, first of all, they're not smart enough to think this way. And secondly, they're biased because, you know, oh my God, bitcoin mining is bad. So peel away a layer of the onion and you'll see all the different ways that Bitcoin mining can help remote communities, whether it's your own house or a small village in northern Canada. ",timestamp:"01:07:37-01:16:31",topics:["bitcoin mining attacks","bitcoin mining facility"],type:"twitter_space",weight:22.711352085784924},{boost:0,date:1629691200,description:"[[Bitcoiners]] seeing the signals of the depreciation of [[fiat money]]",episode_title:"WHY ARE WE BULLISH Bitcoin Meme Hub Jan Capek Bitcoin Mechanic Max Hillebrand ep195",guests:[{name:"Max Hillebrand",profile_picture:"https://pbs.twimg.com/profile_images/1311357499514269696/-HQFwyFH_400x400.jpg",ref_id:"9a86cc59-ed01-4757-88f6-e9d9d63067b9",twitter_handle:"HillebrandMax"},{name:"Bitcoin Mechanic",profile_picture:"",ref_id:"faae3a37-0115-4074-af21-7d79c429c7cb",twitter_handle:""},{name:"Jan Capek",profile_picture:"",ref_id:"ec6f8b14-6c4b-42e9-8e86-9aa902c0906d",twitter_handle:""},{name:"Bitcoin Meme Hub",profile_picture:"",ref_id:"dcd5a590-2018-4707-a49b-8142d7b14e33",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/39201536/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-7-23%2F214267789-44100-2-17e9fbafdf841.m4a",node_type:"clip",pub_key:"",ref_id:"b03519b0-5139-4ad4-910a-40f40e332352",show_title:"BTC Sessions",text:"I was like six years old, my parents had we still have a house, small cottage in the mountains and when you bought it, it was actually an old house with all these relics from the beginning of the century. And what I actually discovered there was like a small envelope. When I opened it, there were like the German marks, but these were already the million banknotes. And at that time I was like, wow, this is a lot of money. And then I had this discussion with my dad explaining me that, well actually this was not worth even like you should put it into a stove. They used it for heating because you couldn't buy a bread with that recently. I'm kind of afraid that you just exhausted my reasoning as well with this, but let's wait with them. Back in 2019, I got the purse made from the Venezuelan Bolivars. It was being sold at some conference and I even bought a small backpack for my daughter. So this is really a topic that not too many people realize and I think we are in our own bubble as Bitcoin is that we do like watch for all these things and we're like seeing, I don't think we're seeing like Bitcoin appreciation, but this is the depreciation of all the paper toy money. And then I think Max already hit a few points basically saying that the merchants are greedy and they're like increasing the prices. But the problem is that the merchants also have info. They have to pay whatever transportation for the goods they have to buy, the raw materials if they're actually manufacturing and directly to selling. It all adds up. And I actually had a talk with a friend of mine who has a big machining shop and he produces parts and thousands of pieces on CNC lights. And he said, well, the iron material, which used to be like the cheapest material being used, went up 100% in last month. And when you look at the development of iron ore now, it dropped actually at the end of July. But this is a strong signal that something is already going on and it will be projected into the economy eventually because these are the initial parts of the whole economical chain, the people who are actually manufacturing something. And at the end you have the merchants selling you your airports or whatever. So we are going to see something interesting in a couple of months or years. So I'm kind of scared of that. It ",timestamp:"00:16:17-00:18:55",topics:["bitcoiners","fiat money"],type:"podcast",weight:6.382523059875072},{boost:0,date:1669766400,description:"Konstantin Wünscher narrates how he founded Kollider",episode_title:"Meet the Makers: Konstantin & Arvin",guests:[{name:"Konstantin Wünscher",profile_picture:"https://pbs.twimg.com/profile_images/917464868663582720/PMFCqusG_400x400.jpg",ref_id:"5f027fce-7775-4824-b941-d2f4120d2d0f",twitter_handle:"krychtiukmd"},{name:"Arvin Galoy",profile_picture:"https://pbs.twimg.com/profile_images/1429792764464611329/4VQqlZiM_400x400.jpg",ref_id:"e0eb434a-9219-4c57-b9e4-da6ceeaec040",twitter_handle:"GaloyMoney"}],hosts:[{name:"Zapp Ed",profile_picture:"https://pbs.twimg.com/profile_images/1519990234070540288/adGqlFoj_400x400.jpg",ref_id:"bbe7cf1d-cd8d-4d36-926d-76f41b775fbb",twitter_handle:"zapp_ed"},{name:"Moritz Alby",profile_picture:"https://pbs.twimg.com/profile_images/859727763292512258/kiFpZ2vO_400x400.jpg",ref_id:"e88efbf8-3809-4508-a86a-d7bf9effb574",twitter_handle:"MoritzKaminski"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/965489b4-a414-4fd0-ab8c-55911b1596aa.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=CjwjScc0TYg",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"caca294d-8661-49a2-80a9-32e4e8452c03",show_title:"BOLT FUN",text:"content. What about you? Did you immediately start with Collider or was there also some experimentation in between? Yeah, there was a lot of experimentation. Actually, I remember our first product that we build had nothing to do with trading. It was actually a data labeling service that used Lightning to pay people to label images. Because my background is machine learning and AI, that's what I studied. So even though I came out of this finance job, I thought I got, well, payments, that's pretty cool. Maybe start with customer facing product rather than having to deal with other big trading firms. So basically what we're trying to test is whether people are into micro payments of this. Because the idea was just like this labeling model that was pretty state of the art back then, which basically enabled you to make some sort of very rough outline and then we'll do the rest for you. In terms of labeling was sort of an unsupervised learning technique. But anyway, so we were paying people for like every time they made a label, they would get some SATS and we were just thinking, would people do that? And we kind of realized quite quickly is that these were really very neat things combined. Like people that would label data, they probably wouldn't know about Lightning or it would be not usable to them. And also it was just like people didn't really care about very small amounts. So basically we're just testing whether Michael payments are so popular. I don't know. We did test it and we didn't get any of this. So we kind of scrapped that idea, although I thought it was a cool product. And then we started basically focusing on something that we know more about, which was obviously finance trading and stuff. And then we built a very simple spread betting interface, which was not like an exchange, was just like, you can make it back with someone else about price. And yeah, we did that. And then I don't know why, I think we sort of realized that the problem this is, again, people don't necessarily need to want to do that in a very small again, basically, again, it was focused on very small payments, and people didn't care about very small amounts that much for that application as well, like trading. So if they want to trade, they want to trade size. We kind of come to terms like, in order for this to work, we actually have to build a proper exchange where people can basically trade whatever amounts they want and make it very similar to what already exists in order to kind of ease in the users into this new idea of using lightning rather than just throwing something completely different at him. It was sort of the journey that we went down. But yeah, compared to Arman, it was very like product driven. We were only thinking about products most of the time. We were thinking, how do we get this technology into as many hands as possible? And again, trading is probably one of the most popular things to do in crypto. If there's any application, it's like used very like a lot and then trading. And so we thought, well, that's a good starting point, let's just try to create what already exists. But with Lightning kind of derisk, that's what we narrowed down on and that's how we then build. And yeah, I think this is sort of it. And now we obviously made branch out a little bit away from just trading. I was thinking about more payments and more of the stuff that is probably like what Alan mentioned. Actual sort of problems that you could solve with this technology because trading is obviously it's needed as a backbone but the things that that enables is not necessarily very obvious to people but it can enable other financial sort of instruments or abilities for people. But yeah, so this is what was the journey, very product driven, quite a bit of experimentation with different ideas. ",timestamp:"00:10:10-00:15:01",topics:["Konstantin Wünscher","Kollider"],type:"youtube",weight:9.398438332070137},{boost:0,date:null,description:"Solution for the massive debt growth in third world countries",episode_title:"Gladstein & Sam Callahan - World Bank / IMF & #Bitcoin",guests:[{name:"Sam Callahan",profile_picture:"https://pbs.twimg.com/profile_images/1592532728775409667/0DayEP2Q_400x400.jpg",ref_id:"5a044a91-8dee-421c-86dd-8c734dc9bc32",twitter_handle:"CallahanMusic_"},{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Brady",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"45bbbb01-6163-4b3b-905a-fc67174893d9",twitter_handle:"CitizenBitcoin"}],hosts:[{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f8be7c60-94a5-41d0-972c-6301cd4ad7f0/4e5bf86b-6193-4f6e-8fa3-933344b2053e.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"f76300e2-dc0d-4960-a1cf-6c7b90ad4cfa",show_title:"Swan.com",text:"Yeah. So it creates these dependence on these international financial institutions. And when these poor countries get into debt, usually they just need to get in more debt. And, you know, the IMF mission statement is to achieve sustainable growth and prosperity for all of its 190 member countries. And the World Bank's mission statement is to, is to reduce poverty and improve living standards by promoting sustainable growth and investment in people. Now, when these poor countries need money, there's really not many places to go. The IMF and World Bank are some of their only options. And if you look at the data, Alex, I'd love, if you just go over, have they achieved their mission, would you say? And can you talk about the amount of growth that's happened in the debt over the last, say, four or five decades for these third world countries? Because it's just insane to me. Yeah, a country I looked at, Bangladesh, had a couple of hundred million dollars in external debt in the early seventy s and now has $100 billion today, for example. So the whole machine has basically made it so that these countries have more debt than they could ever possibly pay back. And again, the debt is denominated in a currency that they cannot print. So the whole system just needs to be disrupted and broken. I think that in the future that if we do end up having a bitcoin standard, that the system would be disrupted and broken, because then you wouldn't have certain countries that could issue with paperwork, the reserve currency. All countries would be on the same standard, and every country would be able to, if it wanted to without needing permission from a great power, they could convert their energy into this reserve currency through mining. And maybe that's not sufficient. Right? And I'm not suggesting that all countries will become equal. You're still going to have huge inequities that result from labor productivity and all kinds of other things. But the point being that even small countries, they won't necessarily have to shape their economy to suit the needs of foreign powers to get foreign hard currency. They could, for example, invest in local electricity production, which is good for the local population anyway, and then use that to mine Bitcoin or to power the local economy. And I think that's a much better kind of choice than selling stuff for other countries that is just going to go to paying it back more debt. So I think there's like a light at the end of the tunnel. Maybe there's a way out. And that's something that I try to be pretty hopeful about. Certainly a lot of people at the African Bitcoin conference think this, and I think it just starts to make sense once you talk to enough people. We should all speak the same monetary language. There should be one standard. It is completely ridiculous that there's 41 central banks in Africa. Each one is its own lording over everybody else. And then there's also the French, who still control a huge chunk of Africa. So in a Bitcoin standard, the power of these institutions to repress people is dramatically diminished. It's not eliminated at all, but it's certainly diminished by a lot. So that keeps me optimistic about the future. Yeah, absolutely. Bitcoin is a light at the end of the tunnel because it's hard to see another way for this to get disrupted, in ",timestamp:"00:59:02-01:02:59",topics:["Debt growth solution"],type:"twitter_space",weight:6.3401312828063965},{boost:0,date:0,description:"Implications of Taproot activation on the protocol",episode_title:"Taproot Activation Q&A with Bitcoin Devs - TABConf 2021",guests:[{name:"Andrew Chow",profile_picture:"https://pbs.twimg.com/profile_images/1452266201770496010/44FHCtZM_400x400.jpg",ref_id:"f96d87ca-5060-4021-aeb9-61db03312027",twitter_handle:"andrewrchow"},{name:"Ben Carman",profile_picture:"https://pbs.twimg.com/profile_images/1550704386007089152/pLwUSeff_400x400.jpg",ref_id:"1d1e95ba-b4af-415f-aafe-85c6dd7571b8",twitter_handle:"benthecarman"},{name:"Matt Corallo",profile_picture:"https://pbs.twimg.com/profile_images/697361498587451394/_rX0-O0W_400x400.png",ref_id:"08cb3c45-c0bc-4a60-ae5b-a1283d352c8b",twitter_handle:"TheBlueMatt"},{name:"Pieter Wuille",profile_picture:"https://pbs.twimg.com/profile_images/1264051937172836353/n7gHdLbB_400x400.jpg",ref_id:"40260d2f-3480-47d6-8515-d2e780901273",twitter_handle:"pwuille"},{name:"Vivek Kasarabada",profile_picture:"",ref_id:"60ed22d0-8cf3-410e-8a7c-9c343ae109ca",twitter_handle:""},{name:"Murch",profile_picture:"https://pbs.twimg.com/profile_images/1269477743525130241/-U843Cmt_400x400.png",ref_id:"3e2c1c73-a057-4475-9782-3bb0d3d8cc62",twitter_handle:"murchandamus"},{name:"Andrew Poelstra",profile_picture:"https://pbs.twimg.com/profile_images/1316562683009921024/FSscAYvJ_400x400.jpg",ref_id:"15fb9c53-c988-4af1-bbf0-4832d71b0a01",twitter_handle:"Blockstream"}],hosts:[{name:" TABConf (The Atlanta Bitcoin Conference)",profile_picture:"https://pbs.twimg.com/profile_images/1596233571521499138/YE8Us_Ml_400x400.jpg",ref_id:"eb1b6016-6223-4b2b-9264-2423ce66304f",twitter_handle:"tabconf"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e7d2a4ca-6b44-4a45-a94c-6f48987979f7.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=MrxtqAlRI2U",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"f9d1d228-19db-4a2d-bfb3-7853fd745ea0",show_title:"TABConf (The Atlanta Bitcoin Conference)",text:"implications does it have for the protocol? What are some things that will be possible day one on activation? And also what are some things that you guys see coming in the future that will take advantage of these changes that aren't really being built yet? It all depends on your wallet. If your question is from the perspective of a wallet developer, well, as soon as Tap root activates, they will be able to make use of the features that Taproot introduces. If you're just using a wallet, well, you are restricted to whatever your wallet can do. So there is no impact as a wallet user. There is no impact on you unless you update to a wallet that can. Make use of these features more generally. So first you'll see transactions that make use of Schneider's signatures. Schneider signatures are slightly smaller than the current ECDSA signatures. So there is a small savings there for the inputs if you are involved in multisig multisig that uses K of K keys. So two of two or three of three can be expressed as a Tweak in the keypath. So when people implement a signature or sorry, a public key aggregation method like for example, music, they'll be able to do keypath spins and multisig wallets will be able to look the same as single SIG underwire. And I know for a fact that a few companies are working on this already because it will be huge savings compared to having an actual multisig script in the transaction to just have a keypad spend. Yeah, go ahead. Good. We'll move on to lightning at the end. Okay. So more generally, I mean, this is the design goal of Taproot that it introduces a new address type that can be used for everything. So before we had separate output types, separate addresses for the simple pay to pubkey pay to pubkey hash style things. And on the one hand and on the other hand, p to SHP to WSH for the more complicated script things Taproot produces allows it to produce a single address that is different from all of the ones before. But it can be used by everything and even better at spending time. In many cases, you cannot distinguish what it was. So this is both an efficiency saving because it's cheaper, it's also privacy saving because you're not revealing to the world what kind of wallet construction you are using. So, for example, right now you can detect like, there's some fairly large multi sigs that are basically only used by one entity. And so you can very trivially detect like, oh, all of these, I don't know, what's the liquid policy now? Like nine of 15, like all of the nine of 15s are liquid, basically. Okay, well, whatever. And so you could hide some of that policy, so you wouldn't necessarily reveal that when you spend the transaction. Another thing that's a little bit down the line, but a cool crypto trick you can do with Taproot is you can produce a ring signature over all. Of the Taproot outputs or all of. Your Taproot outputs above a certain threshold and prove that you are holding a coin of a certain value without revealing which one. Other than that one of the tapered ones. Yeah. So it's generally that kind of fits into a broader category, like Schnorzigs are much simpler mathematically. And so there's a lot of cool tricks you can do like that and other stuff like the signature aggregation and whatnot. And then also with lightning, this is also something that's kind of further down the line. And there's no real concrete I guess AJ has one concrete proposal for it, but eventually we're going to get PTLCs instead of HTLCs. So instead of using a hash, we can use public keys and revealing the private key for it, or revealing a signature, an adapter signature for it. And that allows us to decorate payments across hops, right? So right now, if you go to send an HTLC or you go to send a payment enlightening, it goes through four hops. And all of those four hops see it's payment hash, you know, ABC, and they all see the same payment hash. And so later they could, you know, get together and correlate and say like, hey, I saw a payment hash ABC. It's like, yeah, I saw that too. And you can correlate and tell where that payment maybe came from, where it went to. And with PTLCs, there's an additional blinding factor added at each hop, so they won't see the same data and only kind of their immediate peers will see the same ID. So if you're missing a hop, you won't necessarily be as able to correlate that. So it's one fewer correlation metric. There's obviously other time based correlation metrics that are problematic, but like the on chain stuff, it's one fewer correlation metric where you can group certain types of transactions. There are other issues, but remove one at a time. I'd say the explain like I'm five, is just like standard user wallet is basically the same, and then all the fancy stuff gets cheaper once actually people build up stuff. I think that's a good summary. What will change on activation time for a normal wallet user is absolutely nothing until their wallet starts making use of it. ",timestamp:"00:12:40-00:18:29",topics:["Taproot","Taproot activation"],type:"youtube",weight:6.240247130393982},{boost:0,date:1671634578,description:"How Bitcoin mining will open up more markets",episode_title:"Café ₿: 23’ Macro Outlook w/ Joe Burnett & Mitch from Blockware",guests:[{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"Joe Burnnet",profile_picture:"https://pbs.twimg.com/profile_images/1601649626754564105/9TubQjRd_400x400.jpg",ref_id:"1c849151-1cca-44db-9a69-665fac5dc6f6",twitter_handle:"IIICapital"},{name:"Mitchell Askew",profile_picture:"https://pbs.twimg.com/profile_images/435841191524204544/mzKR9KCX_400x400.jpeg",ref_id:"fc4ba3ae-eacc-489d-a888-397ba6b1f842",twitter_handle:"mitchell_askew"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/601898b8-8964-48ba-aa92-ab3f1c4ad0bb/75f49b1a-9dce-41fd-8517-77b607c9c154.mp3",node_type:"clip",pub_key:"",ref_id:"6c3edea1-97d0-41d4-a015-0f16417f2ee7",show_title:"Swan.com",text:"Why couldn't it work? I think it's fascinating because if you think about power generation, the power generation and distribution has been hand in hand at the absolute key to prosperity globally ever since we figured out how to leverage rubbing two sticks together and making a fire in a cave. And the fact that they're bringing on six new nuclear reactors, they're embracing Bitcoin mining, and they have these alliances in the chip industry. Wow, man, that's a freaking power move. I mean, more in terms of sorry, go ahead, nuclear, my bad. Well, this isn't just that building new nuclear reactors. There is intention to do that. This is restarting their existing fleet. They've got 30 gigawatts sitting on the sideline right now just waiting to be put back into action. And then on top of that, they do want to get into the small modular reactor game and also build new nuclear assets, nuclear in Japan. And Bitcoin mining is going to be very interesting. What I was getting at, Alex, when I said I don't know if it could work, what I meant is literally backing their currency with the Bitcoin that they're mining. So keeping the Bitcoin and then somehow backing their currency with it. I just don't know how those dynamics work. I mean, they have so much debt that would they technically have to default on that before they make the switch over to a Bitcoin backed currency. Or like I don't even know how that would work because obviously they can't back their currency with Bitcoin and then still expect to be able to pay off their debts if their currency is backed in Bitcoin at that point because you can't print more of it anymore. To me, the simplest way would just be to hyperinflate the currency, switch the currency to a new Bitcoin backed currency and then get to hit the reset switch. So all the debts basically go to zero in real purchasing terms and they can reset the whole currency. This is the idea behind gold. You know, the funny thing about central bankers and gold is if you watch what they say, when they're no longer in charge of the central bank, many of them will admit candidly in interviews that the reason that they hold gold is that it's the emergency reset switch. If the currency ever blows up and collapses, they can use gold to basically declare that currency the old one and this is the new one. And gold is the reset switch. You have to have some trustable reset switch. I'm not saying it needs to be gold, but I can see how it would be a pretty I'm not going to say seamless, but it seems to make a lot of sense to me. Like, okay, you know what's super interesting? Wiremart hyperinflation. I know you guys are probably sick of hearing me talk about wire, but it's fascinating. Do you know how they reset the currency? One dude came along and he introduced a new money, and guess what? The money had as its primary attribute. He said there was a limited quantity. We will never print more than this amount. And instantly the people accepted it. And then what did they do a few years later? Well, yeah, obviously they can renege on those promises, but my point is that confidence is the key to all currency systems, and in context of Japan, I think that would work. Yeah. There's no easier way to convince a populace of a better currency when your current currency is collapsing and failing. So when you are kind of under that pressure and you're getting squeezed from every angle, it's easy to get out by saying, hey, well, look at this new one we have. It's backed by this underlying thing called Bitcoin that can't be printed more of, so we won't print more of it either. And, I mean, who knows if they'll keep that promise, but at least it'll be better than what they have now. And I don't know. Again, looking my only exposure to kind of where the Japanese yen is in terms of its purchasing power is what the price of Bitcoin is in terms of yen. And it doesn't look like it's inflating that much, at least relative to its exchange rate for Bitcoin. So, like, I don't know if they're being squeezed that much at the moment, but obviously it's only a matter of time before all fiats have to squeeze, as we always talk about here, right? Yeah, I don't know. Interesting times ahead, for sure. Nuclear, what's the latest in regard to small modular reactors? SMRs people who don't take two minutes and explain what the heck they are and then tell us what's going on in that space. Yeah, so small modular reactors are basically just smaller versions of a nuclear reactor. Anything less than 300 MW is what fits into this small modular category. There's many different designs. I think 70 are being proposed right now globally. About half of them are just smaller versions of the existing boiled water reactors that most of the global reactor fleet is designed by, based on. But some of them are going to be using new cooling technologies like high temperature gas and liquid metal cooling and solid state cooling, various technologies that have been proven in the past but put on a shelf as they only stuck with one design and just built many of those. But right now in Canada, there are several projects ongoing. There's a 300 megawatt BWRX reactor by GE attachee that just got nearly a billion dollars in financing from the federal government and the province. So there's a lot of money being funneled into these projects. The Go dates are still looking 2027 28 to have these demonstration units operated. And I'm just actively trying to connect the dots and see how we can integrate bitcoin mining into this new future that nuclear power is getting into, because I think it'll be greatly beneficial and open up even more markets than the small modular reactors would be capable of. Because now we can essentially play out the pioneer species idea and drop a nuclear reactor wherever we want, monetize it immediately, and then just start building around it. So it's going to be very exciting. Lots of countries are pursuing different versions of the SMRs. I just happen to be most familiar with what's going on in Canada. It's looking like Argentina might actually be the first country to have a deployable commercial scale SMR outside of besides China, obviously. But that's going to be a very interesting future for Nuclear. And we'll keep you guys updated as things go along. Awesome, obviously. Happy to have you back. Anytime, nuclear, you've got some great stuff, and I'm super fascinated by the SMR industry. ",timestamp:"00:54:19-01:01:51",topics:["Bitcoin mining","Currency hyperinflation"],type:"twitter_space",weight:14.955047728896634},{boost:0,date:1666137600,description:"Tools for managing Lightning nodes",episode_title:"Meet the Makers: Alan & Kwinten",guests:[{name:"Alan Plus",profile_picture:"https://pbs.twimg.com/profile_images/1565235279451103233/XD8pJuIo_400x400.jpg",ref_id:"e362fed6-ec06-4d8a-a052-3137b24f213f",twitter_handle:"alnboltn"},{name:"Kwinten De Backe",profile_picture:"https://pbs.twimg.com/profile_images/917859380699320320/p_v-fjmh_400x400.jpg",ref_id:"be68f240-1f4c-4b27-b4bb-752c90cbe0c3",twitter_handle:"QuintenDeBacke1"}],hosts:[{name:"Moritz Alby",profile_picture:"https://pbs.twimg.com/profile_images/859727763292512258/kiFpZ2vO_400x400.jpg",ref_id:"e88efbf8-3809-4508-a86a-d7bf9effb574",twitter_handle:"MoritzKaminski"},{name:"Zapp Ed",profile_picture:"https://pbs.twimg.com/profile_images/1519990234070540288/adGqlFoj_400x400.jpg",ref_id:"bbe7cf1d-cd8d-4d36-926d-76f41b775fbb",twitter_handle:"zapp_ed"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/965489b4-a414-4fd0-ab8c-55911b1596aa.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=GyA8tHNKmig",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"7e996fc8-37c7-447f-b0e5-c6dbf58015fe",show_title:"BOLT FUN",text:"Now, as we have now, both of you come from the field of node operations. Can you share a bit like the tools that you use and why you use these tools to manage Lightning nodes? Alan, if you want to go first. Well, actually I don't actively manage my node at all, so I manually go in every day and do things, but I don't use any tools. And the reason is because I don't want to compete with other node operators, so I don't want to outcompete them. So my role is really to make sure that everyone else is successful and making money and make sure that the network is decentralized as much as we can do it and everyone has capacity both ways and stuff like that. So I don't want to be like a routing node, so I'm kind of supporting smaller nodes while still growing and stuff like that and for that I don't need automated tools. Can you tell us a bit more? You mentioned just the purpose you want to help smaller nodes, but do you do that under like the Lightning network plus node or how does it work and how do I get support from you if I am a small node operator? So one way I do it is, for example, if there is a swap that is open between smaller nodes and it's failing because somebody fell out of the swap, these liquidity swaps and let's say there are three people and one node is just out because something happened, then I take their place. This happens quite often and my node is quite big. So those other two node operators are typically satisfied with me taking the place because they get more connectivity. And the other thing is I allow anybody to open a channel to us if they want to, even small channels like 50K sets or something like that, which is typically not possible to other big nodes because they don't want small channels. The minimum is usually a million or 2 million nowadays, which could be a bit too much for a beginner because they don't want to risk that much money. And sometimes I do open to people that I chat with and so these are the ways basically I just create liquidity for people or help them organize their own little swaps and stuff. And you do that all really manually or rely on standard tools that are out there? Yes, mostly like 90% of the time. I did try a couple of tools because I wanted to learn. So there are some situations where I use some automation. I also wrote some scripts of my own for setting fees. For example, I experimented with all kinds of different fee structures. Zero fee, very low fee, higher fees, optimal fees, all kinds. And I found that all of those strategies have an advantage and a disadvantage. So there's no optimal perfect strategy. You can make money in different ways really. You just have to find your own niche. And I also found that being a completely zero fee node is not beneficial for other nodes. So unless I want to be like zero fee routing who makes money on being super well connected and selling channels? That's a different story. But I don't want to be a zero fee routing because that's too much competition to other nodes. So setting some small reasonable fee is probably the best way how I can stay out of other people's business. But at the same time it's kind of like the best of two worlds. Like trying to be a good router for others but also not taking their profits. And where do you see does this go to in the future? So it seems for me like you are very much supporting the operations of your platform basically right when someone needs a replacement also then you jump in and help out to create one of these swaps or to complete them. But where does this go to? Do you always think, okay, this is where you want to stay or do you have some ideas where this could lead to? Yeah, I have ideas and I think the future is going to be more and more automation in this swap creation. So for example, I have this idea where I could have a wallet, a brand new wallet that I create or maybe join some existing wallet. Basically when a new user wants to open a channel they would open it through a swap immediately. So they would have two channels immediately on the at the beginning, one incoming, one outgoing. So it would be all the swap creation would be done through an API and transparently for the users. Because this way you don't have to go to a website and you don't have to log in and do all of those things. It's just all done in the background. So yes, this is I think is the future where this is going to be one of the ways how you get incoming liquidity? Yes, I think that's a very interesting topic. We should come to that in a second. ",timestamp:"00:16:30-00:23:25",topics:["Lightning nodes","nodes operators"],type:"youtube",weight:6.396489111901376},{boost:0,date:null,description:"The Bitcoin Village project in Nigeria",episode_title:"The Orange Sun ☀️ #Bitcoin News and Talk",guests:[{name:"Portland Hodl",profile_picture:"https://pbs.twimg.com/profile_images/1562306406526492672/LiqmI9NS_400x400.jpg",ref_id:"530aba21-392f-4156-9e91-4fc5c76fced1",twitter_handle:"PortlandHODL"},{name:"Miykael Woodward",profile_picture:"https://pbs.twimg.com/profile_images/1473433558475689985/CM0o3oWu_400x400.jpg",ref_id:"6fe02a78-4f07-47e7-8e64-b278a3167835",twitter_handle:"MiykaelWoodward"},{name:"Okin Mobi",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"bbd18918-7758-4bdb-b9a5-641bf92748a6",twitter_handle:"OKIN_17"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"Funsho Jimoh",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"a237ffb0-792b-484e-b12f-65a2b679eaf1",twitter_handle:"fnicencool"},{name:"prince ogbonna",profile_picture:"https://pbs.twimg.com/profile_images/1595693872637681664/TeWJzTut_400x400.jpg",ref_id:"0b0c70b1-23b1-4d98-b259-6dbb67b7481d",twitter_handle:"princejoj0"},{name:"The Bitcoin Village",profile_picture:"https://pbs.twimg.com/profile_images/1544318244789649410/kQ2G1MCE_400x400.jpg",ref_id:"d894aca4-36f6-4821-a00b-a4e860b19502",twitter_handle:"VillageBitcoin"},{name:"Masterguantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"29baf525-42eb-41a6-98f9-a0d6b4480af0",twitter_handle:"MasterGuantai"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/bef977d0-8a6a-441b-a8cb-58baebe2bfd7/b9ec2918-1059-48ac-b5ee-69018c42a07c.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"63cc2dff-cc56-40e2-8c22-93153e7d3255",show_title:"Satoshi’s Journal",text:"It looks like Olu finally got up here. I know he's having some issues. I think he's at the Bitcoin village, so connection is not very good, so give him a chance. Olu, if you can hear me, how's everything going at the Bitcoin village? Yes. I have to hide myself in the heart to be able to talk. Can you guys hear me? I'm in a whole place. Can you hear me? What did you say? You're hiding in, like, a heart, like a small bamboo and tree kind of thing we put together so we can hide our head here when the sun is very construction site. Hello, everybody. Top of the morning. It's been crazy. Bad network, but still we have some level of internet. Anyway, thank you. Jeremy Tk. Towel. Prince Blanca out there. I see Janet. I see amica. Extremely. Daniel, lots of you. Big respect. Thank you. Thank you so much. I'm freaking excited. We're getting donations. $1,500. We're getting donations. It's crazy. Yeah. No, it is, man. Yeah. I can hear you. We can hear you, Olivia. Oh, yeah. Okay. It's so amazing that you have to look. Things happen, right? Nigeria's name is known for multiple things. Apart from our musicians painting the country in a positive color by winning Grammy awards, BT awards, and whiskey. David Bernarboy doing well. Our politicians are denting our name with their corruption and some fraud. Stars are also messing up the name of the country with scam. But bitcoiners are lifting the name of the country up. In many cases, when people do stuff, they associate Nigeria with scam. Unfortunately, it's not about that. The major percentage of people in Nigeria are very good people. And the base coin village is a big example of one of those good projects. Although I have seen and heard people say one or two negative things on Twitter, I smile. I will come here, and I can see the progress. And very soon, they're going to start seeing pictures, and they will see and they will come here. The people who don't have the opportunity, capacity, or one or two things are the people that will miss out. But because it's a monumental structure, you will come here. Maybe if you can't make it in 23, you can make it in 24, 25. The building will be there forever. When we leave this face of earth, when I am no more, when myself and Jeremy are no more, maybe 70 years from now, hopefully we'll leave longer. Because I would like to leave to, like, 100 years when I have teeth no more. And I can just I don't have to be able to pronounce it. I can actually picture that with you notice saying that. Can you say it again how you would be saying that? There are people called land grabbers. Land grabbers. Right. They take money from you every time you're doing construction. They table people. The government has dealt with them, but still that's what they do. So they were at the site yesterday with machetes and everything and sticks and they went to disturb the construction workers. So they called me. I couldn't get to them for a long time. They couldn't get to me for a long time. So when it got to me this morning, I had to step in to the CABAC, which is the paramount ruler, and of course some of the leaders. And we went to the site and we've been waiting for them to show up. They didn't show up because I already got military people on standby to make sure they don't disturb the progress of the work. It's not like they didn't vandalize anything, but they scared the workers away from the site. Anybody that knows Nigeria know this is how these land grabbers come, all because they want to get money. But I stack their money today. I'm ready to give to them. But I'm going to give them a serious warning. The next time they come and do such thing, you're going to be in trouble. So that has been the stress for today. They take money when you're about to do your after your. So what is trying to do is take money. They take money for digging. They take money digging, which is excavation. They take money for your DPC down proof cost. They take money for the first level of blocks. When you get to your decking. They take money when you roof. They take money. Once you put the gates. They take money until you're done with construction. They take money about five times. So if you don't know how to operate with them strategically, they can stress you. And they demand for crazy amount of money. They are called, or more, only length. The Nigerians here can attest taste to that. It's terrible. But I thank God I've been able to douse the tension. And they're requesting for $1,000. I told them that's crazy, I'm going to give you guys $500. So I told them you have to write an undertaking, blah, blah, blah. They refused to say never, blah, blah, blah. I put my phone number, I said I was going to record them, blah, blah, blah. At the end of the day, I gave them $200 first. I said, I'll give you 250. When these guys completely stopped the job today, finished their job today. So at the end of today's work, I'll give you 250. And I said, so let me take pictures with you. Stupidly. They took pictures with me and I recorded them when I was giving them money. Why did I do that? So that when they come another time or when another set comes. Because what they usually do is they come in different sets. So once you give them money, they tell other people, oh, he gave us money. So you can go and act like you didn't know anything about it. So those are the challenges of construction in Nigeria. And I think it's because the Bitcoin village, Nielsen, is already online. So some of them can go online and they can see, okay, this is a big project. As a matter of fact, whether it's big or not, anytime they are doing construction, they look for construction sites and they come and say, oh, we are the community people. And really the community don't like them. They are the thugs on its uneducated parts of the community that's full of disturbance. But the paramount king has given an order and set up like a vigilante group to protect the construction site workers. So that's just an update. There's a lot of work right there. So I wanted to update you all. That's what I went through in case somebody saw me and he took my pictures while I was Qurin. I said, get out of here, get out of here. It's just me trying to let our work be smooth, because they can delay work for like a week if you don't pay them. Like they delayed us yesterday. And every day counts because we need to launch this next year, especially during the conference. That aside, I can't wait to release pictures of updates for you guys. Most likely by I'm looking at next weekend, substantial progress would have been made. And I just want to thank the stock chain as they've been very nice. It's more like the stock chain as they are competing with each other. Somebody puts 100. Somebody puts 500, somebody put 1005. So, Jeremy, what we're going to do is what we have said before, after the orange song, we're going to have our meeting maybe today or much later or maybe by the next meeting, so we can put together a necessary document that is faction as we need and anybody that would need it. Maybe we're going to put it up on the official Twitter of the Bitcoin village and or invite people to private meetings. I don't know where we're going to put that up. Maybe it's a torture on the website so people can see some of the documents that we have all approved by the legacy government, and they can see the quotation from the QS, and they can see how transparent and the amount that the construction is going to cost you. And I know the quotation by the quantity surveyor. So we're going to put up the architectural drawing, the mechanical information, the electrical information, the soil test, the approved building plan from the government. All documents will be put up there with biweekly progress pictures and videos so that this donation can keep coming in, and not just for the donation's sake. Anyway, that's what we have said when it was just you and I working on this. Why do we have to be transparent? I've never, ever taken donations in my life. Public donations like this. And it's amazing. It's really amazing. The budget we had initially shut up tremendously because of inflation. Things are getting expensive day by day. There is blocks, cements and all that. And we really need to let people know we are building this for bitcoinners and even non bitcoinrs that will become bitcoinners. Who wants a bitcoin village and bitcoin development center that people will walk into and be very happy and befitting place that whatever certificates you get out of here would be valid for you and you'll be proud that you came here. Even if it is a developing community, in five years this place is going to be a city because of the fort mainland bridge. If they finish the fort mainland bridge by 2027, which is five years from now, I want to say five years because I know that the government can be very terrible and it might even take seven years. It's going to open up. And the value of properties here might shoot up to as much as $500,000 per plus. So we are properly positioned and we must do things rightly. I'm just so glad that the statuers have turned up for us. Even jeff boots and so many people have commended positively about what we are doing. This is what we plan between ourselves and look at the world embracing us. Even corey of swan give us a light by retreating. I know retreat is not necessary endorsements, but retreating on your timeline is some level of association and we appreciate that. So all bitcoiners follow bitcoin village, advillage bitcoin and trade at this particular and spread the word this that we're doing this on a private property so the governments don't have power over what we're doing. So care less about the naysayers and we will continue to be as transparent as possible. It's been myself and Jeremy putting our heart and money to this all the time and myself on the ground doing the work. But now we have you guys bitcoin as a family and I really want to thank phil for making this possible. Our teammates will involve the stock chainers and anthony of stock chain. Great guy. And all the stock chains and tao will give us more like an open attestation. Tao attested to our proof of work openly, without an iota of doubt. And I've never heard tao say such about any construction project around this bitcoin ecosystem, although maybe I've not featured in the space where it must have done that. But tao really talks in spaces. When he's talking, it's either educating or not. Now, this is not simply jeremy and all my team members know me. I don't care. I don't think I have sleep on my shoulders because I know how people look at me as a black man, and of course because I'm from africa, nigeria. So I protect my image, I get my money and I respect myself. But when people say something great about what we are doing here, far away, here in Nigeria. I have to give Kudos to what Kudos is due. So you can do your check and balances. You can verify as much as you want. The address is open with or without me. You can go to the village, you can ask village questions. You can go to the site if you want. Very soon we're going to put a big sign at the waterway so anybody that is on the boats can actually see the sign, verify. You don't have to know me and put the word out. Let them know we are building a bitcoin village. Some people, my colleagues, come if they like it's, to their own pocket. But when we start to give lectures and we start to graduate bitcoin and lightning developers, then you will go and ask those people that will be changing the world if it still is come, or you yourself is the person that is bipolar and have issues in your life. And I'm sorry, it's not to be condescending to anybody, but it's just how I feel. So thank you all. I'm sorry I came in here late. I've been trying to come online, but it's been terrible network issue. And of course, because I've been around putting in work, so I have to hit the road again. I may not be able to talk too much, but thank you, big thank you to stock chain US for donating their money. And because of that, we're going to make the budget transparent. From the engineer to every necessary person on the team will come on spaces at different times, so you can have a talk with them and all of that. This project is going to cost way over. Way over. The last time we checked in Nigeria, money for just one building is about 104,000,000 there. You can calculate that in dollars for whatever it is it's going to cost, whether black market rate or CBN rate. So you can see it's not a child's place. You see the type of building we are trying to do. It's something we could have put together a bongalu. And let's say we start to finish the bongalu in three weeks, but of what use would it be? Because it would be the same size of building and the same look with every other building in the village, we have to do something that the villagers will look and say, wow, okay, this is monumental. If this can come to our community, then we must take our life seriously. Like I told the young men that came to distract the place yesterday, I told them today, I said, look, you are only marking yourself negatively. Because when other people in this community will be learning and will be graduating and some of them might get employed by bigcoin companies internationally, you would regret your actions today instead of you supporting the progress of this building. Because with or without you, this will rise. You just take your money and you go on the day of lunch or by three years when this monumental structure is already manifesting lots of greatness, you'll be regretting. So you better go and change your ways and think of how you can come and learn. Maybe this is your go to opportunity to break through from the poverty that you have been entrenched in. Two of them came to me later and apologized and say, you will never see us here again. Please, I would like to learn bitcoin and I was very glad to them. So, yeah, what we're doing, the blockers here and there, but we are overcoming challenges and we are moving at a very unprecedented pace, even though there are delays. But I'm very glad. I thank you all. Sorry for taking your time. You can ask questions and hopefully you guys are preparing dusting your passport so we can all marry Gada as friends, as brothers, as one bitcoin is in Nigeria come March 2023. God bless you all. Hey, can you just give us an update as to what is going on exactly at the village? Of course. They started the foundation. So are they starting the first level of the blocks or exactly where are they at? Because I haven't talked to you to get an update on it. When you talk and you have Indians like this. So if I say today we're going to show you the level where we are at and we have some blockers and we don't make it today, it's going to look like, what's up? So look at the Nigerian bitcoin conference. It was supposed to be 24th and 25 February, but Nigerian government already splitted the presidential election for the 25 February and the entire week before 25th is going to be security, heavy security all over the country. So we had to move our conference a month after. Look at the radio show, which is supposed to start on the 11 December, which is two days from now, all paid up. We have to move the radio show just because we don't want our airtime to be exhausted and we can capitalize on the airtime for promotion of the Bitcoin nigerian Bitcoin Conference on the Bitcoin Village construction, of course, adoption, education, work. So I want to talk less and let videos and pictures do the talking and then we can have a proper space and title it Bitcoin Village Updates. Whether we can come ask questions thereabout. Yeah, that makes sense. No problem. The thing that you mentioned that was interesting to me that I would never have imagined happening. I've been in construction for over 15 years and I never would have imagined the fact that you have people coming to work on a construction project and then the next day another group comes and then the next day another group comes for the mere intense. Grab us or Lilac. Any Nigerian come up? You cannot whether you are building, whether you are the richest man on earth building anything in Nigeria, the size of their construction work is how they will mobilize. They will mobilize so much, and they will give you a bill. And the worst the government can do is just to come and chase them. You're going to call security for them, and they would get off the land. And the crazy thing is, they start stressing your construction workers. They start stressing them, stressing them, stressing them. They might relay them before you get there. And you don't want a situation whereby you're going to be involved in the police all the time in a community whereby you have been accepted. The paramount king is in support. All the chieftains I support, 9% of the people I support. So if you bad eggs are only out to get their little unwarranted illegal money. But we're in Nigeria. It's crazy. Even though government have issued an anti land grabbers law, if it's supposed to be effective, but these motherfuckers are the ones encouraging it the most. The richest people in Nigeria, in Nigeria are the people that make use of these thugs. They use them for disruptions. So these thugs have contacts. At the end of the day, you, you, you call cops on them. The next you park jet, they go by car, you're not there or something. You know, you don't want all of that. You don't want to show because of you. And it's funny, they came out outside the community and they start to say, oh, my father had a house here 35 years ago. So it's not a bad news. It's just me being 100% transferring. So that, you know that that can be an entrance for one day, two days. If you don't manage it well, it can extend to one week, two weeks. It happens to almost every construction site, except you want to man a military base. And when I say military base, like two, three military guys, the Nigerian policies are much strong enough to stop them. You have to pay us the right pay them the day times four or five what the government is paying them to scare the land grabbers away. Yeah, that's very interesting, and yet one of many obstacles and challenges that you're facing. So for you guys that don't know, olu and I, we hired a surveyor and a project engineer. And if I could be there, I'd be overseeing the construction myself. But Olu is there, and he's the one on the ground doing all the work. As far as yes, we have the engineer and we have the surveyor, and they're doing their respective jobs. And what their positions? As in the construction project, those positions are very important, but it's very important to have someone on the ground to inspect the work. That's basically what you call quality assurance. And so Olu is doing a lot of things already. I mean, he's the CEO of bought me cash, and he's helping with Satoshi's journal, and now he's on the ground in the village. So I've told him many times in the conversation how thankful I am to have a partner that's doing this, because it's a lot of work. I mean, I've done construction for many years, and I've been the inspector, I've been the engineer, the surveyor, the designer, the quality assurance, I've been all of it. So I understand how intense construction is. And when you have to deal with shenanigans like what olu is talking about, additional to all of the other responsibilities on the construction site, that is a very stressful deal. So thank you, Olu, for the update. I look forward to the pictures. Already we have some pictures, but I think that it's going to be really cool to see everything come together and look forward to the videos as ",timestamp:"01:56:17-02:20:03",topics:["The Bitcoin Village","Nigeria","Bitcoin Adoption"],type:"twitter_space",weight:6.083251953125},{boost:0,date:0,description:"Michael Atwood talks about OshiApp",episode_title:"Cool Apps Built on Lightning - March 16, 2022 - Voltage Twitter Spaces",guests:[{name:"Chad Atkins",profile_picture:"https://pbs.twimg.com/profile_images/1200611447979544576/W9ocRJTb_400x400.jpg",ref_id:"62da3c50-0a46-400b-81a3-5f482f5b8fee",twitter_handle:"Chemchad"},{name:"Michael Atwood",profile_picture:"https://pbs.twimg.com/profile_images/1362207977470521345/Jy2_Ge60_400x400.jpg",ref_id:"16359ade-afb9-4a37-be0b-0844a6134327",twitter_handle:"Dooowta"}],hosts:[{name:"Nate Glasky",profile_picture:"",ref_id:"0662789d-b39e-4aed-ad6f-44257695b6af",twitter_handle:""},{name:" Bobby Watts",profile_picture:"",ref_id:"ae2685c6-1307-473a-95b0-87c234e50483",twitter_handle:""}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2ec62250-4755-4616-8342-096a2cfab95f.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=4EJrnxYOShY",node_type:"clip",pub_key:"",ref_id:"9f69933d-69fe-47a0-af4d-9d80726e60aa",show_title:"Voltage",text:"All right, it looks like Michael is here from Oshie app. I want to invite him up because I know he's got some cool game plan and stuff just going on, like from Miami, like getting Oshi app utilized down there. And he's got some traction in Texas, I think I saw Marty using Oshie app or something, like buying some local beef. And there's been some block parties using. So if you are available to chat, Michael, feel free to hop up. It's funny because actually that's one app that I am absolutely a fanboy over and I totally did not put it on my list for some reason. But yeah, dude, Mike. I see Mike all the time in Austin. So if you want to tell us about Oshi, Mike, feel free to raise your hand. Or we'll send you an invite or I can just explain it, but I'd. Rather you do it. Yeah, I can chat a little bit about it, I guess, until it comes up. But anyone who's not using Oshi, it's pretty sweet. Like, as a consumer, you can download the app and then just check locally what deals around you, what small businesses around you are willing to give you bitcoin back for coming in and shopping. And it's as simple as you get a gift card, essentially, like just a deal to that business, and you can go in and make that purchase and the business will say, hey, you get this percent sat back. And what's really cool from a consumer perspective that I like because I love whenever applications are gamified, kind of like fold. Like if you referred people to fold now that they have this every time someone swipes their fold card, I get paid. Like, in the last week, I've made 1300 stats just by referring people two years ago to fold. And Oshi is kind of the same way, but it's a little better where you as a consumer, if you refer businesses onto Oshi app, you can earn like a very small fraction passively on all the purchases done at that business. And there's like an incentive model that if you're an advocate for the brand and for those businesses, you can earn a little bit, too. But it's pretty great. What I would really love to see happen is, like, everyone's going to Miami 35,000 people next month, right? Like, if we could get ten to 20 businesses around the conference or onboarded to Oshi, you could just flip open the app, see what businesses around there want to support Bitcoiners. And it's like, yo, come grab a burger, get 15% back in SATS. And it just gets Bitcoin back to everyone who shops. And the thing that's really great about this is, if you've noticed, like, Lolly and Fold, they're really focused on bigger companies, bigger providers. And there's a lot of organizations, there's like three providers out there that give you access to these gift card networks. So if anyone wanted to spin up their own fold or Lolly or things like that, there's partners you can partner with that give you access to that. So there's tooling out there for big businesses, but there's not one out there for B to C. Like getting small businesses on board. It's something that's literally never been done. So it's pretty cutting edge and it's a big problem that could be solved. But I'm personally passionate about this because at my last job, I've managed marketing for small businesses for like ten years. And 60, 70% of businesses in America are small businesses. It creates most of the jobs in our communities. And whenever you can have a Bitcoin circular economy at a very local level, you're keeping money in your community. You're not exporting money to Walmart, who's then sending it to China. You're not sending money directly to Visa and Mastercard. You're keeping it on a local level, empowering small businesses and rewarding consumers for being a part of that Bitcoin circular economy. So if there was an application that was one that really gave back to local communities, it's definitely Oshi in my mind. Yeah, I think when I talked to Mike about Oshio a while ago, it was like what really kind of blew my mind was, up until this point, I always envision sort of brick and mortar lightning commerce to have the merchant generating the invoice from somehow. But with Oshi, the customer generates the invoice and pays it on their own phone and then just shows the merchant, basically, and the merchant scans it or whatever and says, okay, cool, you got it. And I just think that's super cool. And it takes away so much friction from the merchant, especially a merchant that might not be well, that might be like, Bitcoin curious, but doesn't want to have to run a note or BTTP server, something crazy like that. I just think that's really cool. And there was a Bitcoin block party, I think, a month or two ago in Austin, which where the Bitcoiners got a bunch of restaurants and bars to use Oshi, and there was a huge sort of get together around it, which was pretty cool. I hope they throw another one of those because sounds like a lot of fun. A lot of stuff is happening in Austin. Not going to lie. I'm going to invite Kyle Murphy up if he's available. I know you might be passively listening like Michael, but there was the hackathon this weekend at Pleb lab, the SATS by Southwest Hackathon. And I'd be really interested to maybe hear at a high level what were some of the projects, maybe that really had legs, that based on what you heard on the ground floor, like maybe people are going to pursue a bit further that could really come to life. I'm sorry, were you talking to me? It kind of muted as I accepted the speaking thought. Yeah. What'S going on? This past weekend we threw a hackathon. As far as some of the projects that had legs, I would say. I. Don'T have a lot of hackathon. I have zero hackathon experience to kind of counter it too. I've never been to a hackathon or hosted a hackathon before this weekend, but just from some of the things I heard from some of the devs who obviously have a bit more experience with hackathons than myself, it was really quite unbelievable. The amounts of high level projects that actually came out of this past weekend. I think we had ten projects that actually presented and a handful more that were built but did not present. Of the ten that we saw presented, there were seven or eight that I think really I'm not sure people will have the time to kind of really push forward with, but if they did, I would be bullish on seeing all seven or eight of them kind of push forward as a potential bitcoin company. The winner of the hackathon was a project called Pleb FM, which was like a live streaming stats kind of update for pushing music on, like a jukebox style kind of thing, where it was like you could basically pick a number of stats. You could get your song pushed to the top of the queue and you would see, like, a live leaderboard for music being played and streamed over the Lightning Network, which was really freaking cool. Nice, that's exciting. We saw some good business stuff. I know Nifty Nye and someone else were working on Lightning, like a dashboard for kind of merchant services, which I think for things like Ocean and a handful of other businesses are going to be really powerful. One of the things that's kind of really lacking for business integration is the company's ability to really trap and pay attention to what's going on in their finances. So the kind of Lightning dashboard that really showed like where money went, where money came from, kind of open channels and a whole host of other things in real time in a really easy to read manner was also pretty cool. And that was Lisa from Block Streams project. She's been working on that accounting stuff for a while, so that's pretty cool to see. Yeah, she kicked it into high gear this weekend. It was pretty cool to see. I believe she's actually sitting at Club Lab right now, kind of continuing to work on it. So as far as projects that are pushing along forward after the hackathon, that seems to be one of them. When you're in the groove, you're in the groove. Absolutely. Sounds like a good time. Yeah, it looks like we're almost to an hour. Austin bit devs is tomorrow. I will be there if anyone wants to say hi. I'm sure Kyle will be there. ",timestamp:"00:44:28-00:53:59",topics:["Michael Atwood"],type:"youtube",weight:6.080077648162842},{boost:0,date:1590465600,description:"How does Bitcoin is the next level of protest?",episode_title:"Chat 39 - Bitcoin Renaissance - with Marty Bent John Vallis Alex Gladstein Elizabeth Prefontaine Brady Swenson",guests:[{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Marty Bent",profile_picture:"https://pbs.twimg.com/profile_images/1362747135981199370/mSy97J12_400x400.jpg",ref_id:"655bdcb1-21c3-411c-aa24-fe7e4c7a248c",twitter_handle:"MartyBent"},{name:"John Vallis",profile_picture:"https://pbs.twimg.com/profile_images/1568743166035070976/4MyKww8A_400x400.jpg",ref_id:"c3a9fe29-3b78-4665-af54-e293e9d68962",twitter_handle:"johnkvallis"},{name:"& Brady Swenson",profile_picture:"",ref_id:"0b68a085-0680-44b8-891c-6e1e84ac4eb1",twitter_handle:""},{name:"Elizabeth Prefontaine",profile_picture:"https://pbs.twimg.com/profile_images/1382790711427354625/D09LMToL_400x400.jpg",ref_id:"4506df72-5de4-4144-abc4-011408b6b496",twitter_handle:"Eprefon"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN4002307424.mp3?updated=1627951379",node_type:"clip",pub_key:"",ref_id:"67236e2a-900b-4cf6-bc6c-165c0f7e3219",show_title:"Bitcoin Audible",text:"do think eventually the impact of Bitcoin will be as kind of like this protest tool that can be wielded nonviolently in a really compelling way. And it's really tough to defeat governments when they have a monopoly of violence. You can do it. And in fact, nonviolent protests, if we're going to try to be optimistic here for Bitcoin, nonviolent protests are way more successful in history than violent ones by, like, an order of magnitude. I think it's something like 35% of all nonviolent movements, ranging from Gandhi to MLK or whatever, have ultimately been successful in the last 100 years. And only like, less than 10% of the violent ones have done what the violent people wanted to do. Right. For obvious reasons. Usually it's like a small group of male people willing to have guns who are willing to fight in these violent ones, whereas everybody can participate in the nonviolent revolutions. And these are usually like people power protests where you have to go in the street and try to convince the police in the military to join you, and then the dictator has no more people to support him and he's overthrown. This has happened quite a few times in the world. So bitcoin is like the next level of that kind of protest where we all start opting out to this other financial system. And I do think people it is inevitable that they're going to realize that and they're going to know that. But we're so early. I mean, we might be decades away from that being a reality. We're just so early. Less than 1% of humans have used Bitcoin. Far fewer than that. Understand Bitcoin, maybe 1000 of that or fewer. So I don't think that Coin needs our help, but I think bitcoin will be a tool that humans end up using to really erode some of these more arbitrary power structures. Yeah, one of the things I've noticed during the crisis is because I looked out and I asked myself, ",timestamp:"00:18:14-00:20:02",topics:[],type:"podcast",weight:6.0710978507995605},{boost:0,date:1625958277,description:"How the franchise model access the cheap capital from fiat money destroy small businesses",episode_title:"WHY ARE WE BULLISH? Brandon Quittem, Timothy Kim, Shinobi, Steve Barbour ep185",guests:[{name:"Brandon Quittem",profile_picture:"https://pbs.twimg.com/profile_images/1502403738861940736/9J5VuTye_400x400.jpg",ref_id:"65512044-7810-4ece-8156-5519e072cb66",twitter_handle:"Bquittem"},{name:"Shinobi",profile_picture:"https://pbs.twimg.com/profile_images/1526590501742428160/0Y5H2uJK_400x400.jpg",ref_id:"a05dface-33a7-400d-a749-99efe0d96118",twitter_handle:"shinobi602"},{name:"Steve Barbour",profile_picture:"https://pbs.twimg.com/profile_images/1592714173469065216/q8kXPyQI_400x400.jpg",ref_id:"63a731b8-4759-4360-9e9d-d66f884e12d8",twitter_handle:"SGBarbour"},{name:"Timothy Kim",profile_picture:"https://pbs.twimg.com/profile_images/1569681307029934081/2s_nWYo__400x400.jpg",ref_id:"e0323798-c70f-4cc3-96ff-87bab50c2313",twitter_handle:"realtimothykim"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/37027401/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2021-6-10%252Ffb6d5638-4579-5707-9740-0e586c980ba7.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"07ab82b4-2fe7-42f9-9018-bb8f4188eb3b",show_title:"BTC Sessions",text:"Can I just go down a random rabbit hole that I have thought about a month that you just completely unlocked? So I get really high a lot, and I do really silly things with my time me too. That I'm going to make a bunch of different hamburger recipes. And so when I do stuff like that, sometimes I have funnier ideas. Like, what if we open source the franchise model where I specifically lay out the exact process of something, like how it's supposed to be done, like how you're supposed to cook this food and I opensource it and anybody can do that. But if I catch you fucking up, if I catch you deviating from that brand, I get to sue the shit out of you and take a bunch of money from you. But if you follow everything to the tee, everything is yours. I was actually thinking of something like that. I don't know. I'm really open with what we do in our business. And I've always tried to help people and educate people in the oil field space about bitcoin mining. And I was thinking like, okay, we did a lot of work on building these designs for bitcoin mines, and I want bitcoiners to go out and be successful, whether they're like oil companies, whether they're like semi competitors or not. I'm like, maybe I should open source all my designs open source so that we're not going to legally do anything against anyone that builds exactly what I build. I'll give them all the spec, all the anything like suppliers. Because there's a lot more to business than just, like, how you build something. You guys still do well. And part of my idea was like, maybe I'll just go do this. A rising tide ends up lifting all boats anyway. It's going to make more credibility around what we do in our little niche market. And in the end, I'm going to get more business anyway and sort of what you're thinking. As long as they don't, I don't know, try to bring in their own legal, say, like patent something and try to bring in their own little legal monopoly around what they're doing based off our designs, then it's totally open market. I don't know. I think that's like a very interesting idea, something I've actually been thinking about a lot because I'd like to sort of maybe open source all the stuff that we designed in house that right now we would probably like certainly if it wasn't me at the helm, it was just like a regular Fiat Maxi. At Helm, we would go after anyone that copied it. But right now we're sort of cool with what goes on. But I didn't mean to interrupt you. You can keep going, but the liquor is starting to hit me hard. I know. I'm happy to hear that I'm not the only one thinking along those lines because I am exactly on the same point with you. Like, all of these small businesses dying and being cannibalized by these massive franchises. It's sickening. When I was a kid, I used to go around places and every place I want is the new unique thing for that area and that locality. And let's go find those things and experience them. And they're all fucking gone back not that long ago, I come from Newfoundland. There was a lot of and this would be the same anywhere, but I'm just speaking from my own experience, like my family history. There was always like, in this small town in Newfoundland where my people come from, there's always mom and pops. It was like father and son shops back in the day. Maybe mostly men doing a lot of the business stuff. But it was always like, this guy and sons or these brothers and like, you know, like, doing all that stuff. And the theory the Fiat sort of kinesium thinking on this is like, well, the Walmart models, like, push them all out and stuff. Like, no, it's not the Walmart model or the Amazon model that killed small businesses. It's fucking Fiat money printing that kills small businesses. It's not the fact that these guys made these big distribution change. It's the fact that they how do. Those get paid for it's the fact. That their access to capital, like, their cost of capital is less than everyone else. That's why kill small businesses. Fuck. I remember when I started my business and I was like, just trying to try to get sales. I would go to these, like, clean tech conferences, like in Alberta, like emissions reduction. Like, we do massive emissions reduction stuff. So I went to these emissions reduction, like, clean tech conferences and I'm looking around at what people are selling and I would do like a little pitch event, like a little pitch contest to see if I could get interest in our business and stuff. And I'm not a great pitcher, really, but there are these really polished people, like, pitching their products. But I look at their products and they stink. They're terrible. They're the worst. Like, they're not scalable in any rational world, but these people are just running around like these circuits of, like, emissions reduction conference, clean tech. And it's the same with all the buzzwords, like AI blockchain conferences, all that shit we dealt with in 2017. It's like all these non scalable crap products with these entrepreneurs raising money, but not actually getting customers. Raising money is the metric for success, but not getting customers. It's like customers is all that matters. Sales, customers, product, service. Sorry, we work. That's like one of the biggest Fiat Maxi disasters ever. Everyone's about raising money. I'm just, like, ranting at this point because I'm like, buzzing. But like, you go on, like LinkedIn, everyone's congratulating, patting each other on the back for raising money. It's like, why don't you talk about the sales you made, like, the customers you acquired? Because that's what's fucking important in real life. But it's just look at all the money we raised at this valuation. That's all it is on there. And like, all society is that way now. And then you see all these shows. You got like, Shark Tank, Dragons, Dan in Canada's version of Shark Tank, and all these entrepreneurial shows, like startups mostly. Not really a lot of people not really bringing much to market. But just like it's just like this VC hype scene, which is a whole nother rabbit hole, which triggers me is like the VC aspect of Twitter, which is like all these VCs on Twitter that are like, look, man, a VC is like a Fiat Maxi. There's no way around it. And all these people clinging on to bitcoin, it's like bitcoin is going to destroy your core business model in the long run. It's just like this weird juxtaposition where all the Fiat Maxis are, like, pumping into bitcoin. But I guess it's just people doing it what's in their own best interests. But the business models are incompatible with bitcoin, but it's just people doing what's in their own best interests and profiting in the short term. But it's like a weird it's like this weird phenomenon in the future, when bitcoin and sound money returns, there's not going to be this VC culture we're seeing right now, which are basically the dependence of the money printing hierarchy, right? It goes down to the VCs. And I don't know, I was just, like, getting there. Yeah, I bullish on small businesses, man. I think small businesses are going to be insane. Like, I can't wait for the bitcoin standard. And I really promote, like, I'm straight up promoting my own competitors in our locality, like the Lloyd Alberta, Saskatchewan area, guys accept bitcoin as payment, or if no one wants to pay in bitcoin, which is still hard to do. I have a lot of customers paying me in bitcoin because they're minors, so they have bitcoin. But like, you guys are selling motors. You're my competitor. I don't give a shit. Sell your motors, convert your profit to bitcoin and stay in business because that is how you're going to win as a small business right now. Yeah, Steve, to your point there, I think you identified a ton of issues that we're having right now. And they all stem from the fact that money is easy, right? And what that leads to is a cascading effect of the bigger you are, the closer you are, the more access to capital you have, et cetera. That's what drives our behavior. So until we change incentives, we're not going to see anything change in the real world. I have a slightly more charitable view of venture capital. I think what we have now is obviously an extreme overgrowth of that and it's way too much money sloshing around there. And you can see portfolios in VC land or directly correlated to how easy the money is during that during the period of their fund. No surprise. And so I think what we need is a bitcoinized world in order to change these things. We'll see a mass definacialization, which I think is a huge net positive for normal people. Right? I think it's demons. They're devil people. Okay, let's talk about this for a second. I think the caricature of these that we see today I would agree with, but I would argue that there is a place, and I want to hear you guys opinion. I think there's a place for people who place longterm bets on very risky type businesses. Right? I think the model makes sense. 100 failed and one of them changes the world. I just think that right now they have too much money, they're able to raise too much because everyone needs yield. So everyone's going through so hard to find right now. It's so hard to find. That's kind of the problem though is so much money flashing around is what makes them devil people. Because I agree that money printer is distortionary. They're like a secondary distortionary effect, throwing it around at crazy things wildly instead of thinking about who actually can make a solid plan in an argument to us, who do we know and trust and actually being scrutinizing and skeptical in where they put their money, the money printer distorts things and they wind up with a pile of money. And so they go on and distort things again because they just see it as a gambling casino. It's not the role, it's what our perverted monetary system, the mechanism converted the role into. Yeah, I have no ill will towards any VC or anyone that works in any of those. I just call it the cantillon ladder, right? Center banking down to the pleb. Like anyone hide the letter, it's no problem, you're doing what's in your own best interest and all that. But we're all working to reverse, just flip the mechanism of how money is created through mining and distribution, through sound bitcoin mechanisms instead of like the top down fiat mechanism. But it's just a commentary on like it's just this funny like, it's funny that some of the most prominent and influential people in the bitcoin space are like people that are in position. Like they're higher up the Cantillan ladder. Like they're benefiting from fiat. They didn't scrap and grow a small business into something amazing. They went to school. And this is not a knock on. These people individually, but it's just the system. Like, they go to school, they work for this fund, and they benefit immensely. But because they're like us, like the big bitcoinners, they go out and crush it. They want the sound money standard, too. It's just ironic to me. It's almost like coinbase. Like coinbase is an exchange. The more bitcoin succeeds, the less relevant they become. It's like you're putting yourself out of work in a sense. But, yeah, certainly it's never a hate against the player. It's just like the system is such a fucked up mess. There's all this irony and hypocrisy in this whole space that's funny to comment on because. It perverts everybody's actions. Right. The problem is I posted that what I was talking about at the beginning of the show. I took a screenshot of that CNBC upside of inflation, increased wages, and one of my friends commented on it, who's like an intelligent person, and he's like, well off and has a good job and everything. He commented, he's like, well, yeah, but the upside of that is that my debt gradually gets willed down and gone away. But when you think of what induced that debt in the first place is asset inflation. You can't just save money for a house nowadays and then buy your house or only have like, a short mortgage. You can't just for the most part, you can't just save money for a new car nowadays. You have to then you have to, like, get a payment plan and pay it off over 5678 year terms. Now people are looking at it from a perspective of, oh, well, maybe it's okay in this context because it fixes the problem that the problem itself caused. The very base layer of all of this perverts all of our incentives to drive us to do things that we wouldn't normally do in a system that is just a money that actually functions. In a free market. Yeah, well, speak for yourself, but I'm perfect and I always do the right thing. I just want to take it aside. We haven't heard from our friend tim, are you alive? Is the water working? How's the water? I think he's got a how are you doing, Tim? ",timestamp:"01:27:13-01:41:29",topics:["fiat money","franchise model"],type:"podcast",weight:6.056178092959222},{boost:0,date:0,description:"Will the Nation States survive the information age?",episode_title:"The Sovereign Individual - The End of Egalitarian Economics",guests:[{name:"chriskapilla",profile_picture:"https://pbs.twimg.com/profile_images/1362817539135463427/2AXUeFLV_400x400.jpg",ref_id:"9d495790-93f2-4d6c-b770-b2885f66859d",twitter_handle:"chriskapilla"},{name:"remydenton",profile_picture:"",ref_id:"5c5beb0c-c214-4f23-b79a-e71bf9368f2d",twitter_handle:""},{name:"JackRonaldi",profile_picture:"https://pbs.twimg.com/profile_images/1583261828628496384/IazkwYjk_400x400.jpg",ref_id:"01621476-f040-49dd-8160-4035228faf78",twitter_handle:"JackRonaldi"},{name:"AlistairZ80Aftw",profile_picture:"https://pbs.twimg.com/profile_images/1362882489895841795/gH2zix3l_400x400.jpg",ref_id:"3dcba197-47ca-40c0-857d-73cec4325801",twitter_handle:"AlistairZ80Aftw"},{name:"mattonbtc",profile_picture:"https://pbs.twimg.com/profile_images/1549459254280687618/jzdHJou3_400x400.jpg",ref_id:"998167d3-e036-4ef1-9a05-4f062903f0c5",twitter_handle:"mattonbtc"},{name:"wai_wairua",profile_picture:"https://pbs.twimg.com/profile_images/1536570699761848320/T10Owc60_400x400.jpg",ref_id:"c4d4ff36-73fa-4471-91ba-de0f99a49e99",twitter_handle:"wai_wairua"},{name:"UltraSolomon",profile_picture:"https://pbs.twimg.com/profile_images/1468332451055427601/YVgUuUHc_400x400.jpg",ref_id:"6371d519-cc98-4bf4-9f82-be17b1ea532a",twitter_handle:"UltraSolomon"}],hosts:[{name:"BTC_Venetians",profile_picture:"https://pbs.twimg.com/profile_images/1557482467539521537/Kel-eVww_400x400.jpg",ref_id:"a6313ca9-3869-4477-88ad-30172957edcf",twitter_handle:"BTC_Venetians"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/75ec86b1-cb6d-467f-a66e-5e642e5c126a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c8cc9ec1-061d-4f53-a24b-ee43a56c7715/e650057e-2369-4e75-8119-4975a1fc4cac.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"e96970d0-30a7-4f86-8f81-996ba87a088c",show_title:"Bitcoin Venetians Book Club",text:"Kind of behind on questions here. So let's move on to the next one, which is, do you all think the nation state will survive? The information Age. Going to say, yeah, the big ones will, but in reduced form. What do you mean? America will, for instance. United Kingdom will. For instance. The smaller nations like China, and I don't mean physically, they're just more small in Fragility, if you like, will struggle to keep things going. Argentina will struggle to keep things going. I have the opposite opinion of this in some respects. I think as long as humans are, as long as we remain biological, we're very tribal creatures and we like to have identity. You just look at the soccer World Cup and during covered things were really heated in my community and became so tribal almost overnight between different camps of beliefs. And I think that during times of strife, we look for our colors and our team, and very few people are able to remain unbiased. And so I'm wondering if we'll ever truly be without that kind of place and home. Now I wonder whether if you're in New Zealand, you've got a much closer relationship to the Maori's over there, whether that color is what you said. We have nothing like it in England. Yeah, it might influence my views. Yeah, for sure. These things are different here. Can you speak to how much autonomy the Maori's have? Whether they want more, whether they would get more? Under what circumstances? Well, in the circumstances with the end of the welfare state, with the government finding it harder and harder to hand out free money, would New Zealand survive as a single entity like that? Or would the Maoris and the non Maori want to go their separate ways, much like Americans do with the Indian reservations tend to be autonomous in a way. That is what I'm trying to get at. Do the Maori's have that kind of autonomy that the engines in America and the First Nations do? Yeah, many are fiercely independent and we do have a treaty. But you can't ignore economies and their wealth was taken as an act of war and they were tricked and the usual kind of colonial game. And I don't know if you can unwind that damage. If the world were to change into an information age, if that loss of identity and loss of skill and loss of all that would actually kind of unravel, I think that the damages is probably a little bit too late. Thank you. And the situation over there is beyond my can. So thank you for explaining that. And then just to also challenge kind of what you were saying or at least my interpretation of it. So, like in the US. For example, or even in Canada, it just seems like there's a lot of divisions and some people have certain views and other people have different views, and it doesn't seem like they can reconcile on those. So I often wonder if you set aside military strength, which is where it's good to be united as one big country for all other intents and purposes. It seems like there's a lot of different views in the states. And should they all be forced to kind of share one set of laws and one set of beliefs and ideologies? And it seems like they just kind of rotate. Like one party is in power and they kind of screw over the rest of the people and then another party's in power and they screw over the rest of the people. So I don't know, it seems like that's not very stable unless what you're talking about, it survives. But maybe the states get more independence and people can move around and find things that work for them better than other places. So just looking at the chapter here and thinking about which nation states might collapse, first it says devolutionary pressures will tend to be most intense in large political entities where incomes for most of the population are stagnant or falling. Jurisdictions in Latin America and Asia, where per capita income is rising rapidly, may endure for generations or until lifetime income prospects there equate with those in the formerly rich industrial countries. And then it says, later on, another spur to devolution will be high indebtedness of the central government. So national debts would succeed 100% of GDP. That's just about everywhere by now, isn't it? Pretty much. Yeah. It's kind of like when a marriage is facing financial difficulties. It only compounds the problems. Same thing, maybe, with a nation state. When it's facing financial difficulties, people start pointing fingers and running into problems. Jeff, I think my base case for this is like some kind of world war. And once again, I think the authors might just be early and post that war. Then you have more of a dissolution into this kind of smaller states, not the huge nation states like I just watched in Japan, which is the quote earlier kind of huge debt, declining population, and they've just reactivated their military. And I think that's a very interesting. Trend, not a civil war. Being out of the states and everything else like that. It's so different there. It's very different. Perhaps you could comment on that. I don't know. Like, January 6, it seemed like they came pretty close, and I worry about what will happen in the next one, especially if Trump runs again. And whichever side wins, blames the other side for cheating. ",timestamp:"00:54:35-01:01:52",topics:["Economies of Scale","Nation States","Information Age"],type:"twitter_space",weight:6.051017999649048},{boost:0,date:1642222800,description:"[[Global Bitcoin Festival]]",episode_title:"WHY ARE WE BULLISH Duczko Thomas Jestopher Morgen Rochard Rick Vanderhulst ep229",guests:[{name:"Rick Vanderhulst",profile_picture:"",ref_id:"4c184180-b77d-4e25-ac7c-4d2e86cdde85",twitter_handle:""},{name:"Morgen Rochard",profile_picture:"https://pbs.twimg.com/profile_images/1362921386256211972/IpIK8cwI_400x400.jpg",ref_id:"c29b26e9-82c8-4c0a-8130-aa083d33ec48",twitter_handle:"MorgenRochard"},{name:"Thomas Jestopher",profile_picture:"https://pbs.twimg.com/profile_images/1607521016368201730/6GSHGkGX_400x400.jpg",ref_id:"50388de7-3ec7-401b-8349-5ee1d8a004c0",twitter_handle:"Jestopher_BTC"},{name:"Duczko",profile_picture:"",ref_id:"2b6de75e-0cf5-4fec-b458-d1b8ee3f86df",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b87feb17-6926-4295-b2c2-d1c2e9d49ca8.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/46171740/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-0-15%2F68b825e2-6752-7447-34ca-b27f0ea69256.mp3",node_type:"clip",pub_key:"",ref_id:"5bf12d7b-3c9b-4019-bca9-88899aaa4b35",show_title:"BTC Sessions",text:"I didn't say what I do now. So this is connected to what I've been doing for the past few months where I'm involved with a project called Global Bitcoin Fest. And we're a group of people that just enjoy listening to local communities tell their stories. What's happening in their community, what's the history, what's the setting in Argentina, Venezuela, Cuba, Ethiopia, wherever. We did this back on September 7, we did the first thing together. So we started back when neighbor made his announcement, 7 June. Okay, let's do a legal tender here. So we started having Twitter spaces where we were giving away sats in Latin America, Cuba, Venezuela, Sabato, and Mexico. So we formed a small group of people and chatting in a Twitter chat. And then one guy had this idea, okay, let's do a Twitter space 24 hours on the day. On the 7 September, let's do a nonstop 24 hours space. So we decided to separate out 24 sections and have communities join in from all over the world, 1 hour slots each, and talk about their community and kind of celebrate together the adoption of Bitcoin. What I was really taken back by was how powerful this idea was. There were so many people that just joined in and like, yeah, let's do this. We organized this literally in six days. And we had Japan, Australia, Tonga, and greater Polynesia, Vietnam, Hong Kong, Nigeria, Sudan, Ethiopia, Greece, Venezuela, Cuba, El Salvador, Argentina. Communities from all over the world were taking these slots, and we didn't have much time to assess what the actual quality would be of these spaces. And then we did 24 hours non stop. Just awesome content was just one space that was kind of like not really Maxy. But everybody else was really knowledgeable communities that have been really diving deep into this. And we got so inspired that. Okay, let's keep doing this on a weekly basis with one new country every week. So on Sunday, we're actually going to do Argentina was just announced last week. We did Guatemala, the week before that, we did Indonesia, before that, Japan, before that, Costa Rica. And there's an emerging pattern where people seem to have been these dormant cells. People have been kind of doing their own thing. They didn't kind of know what they could contribute or do. And then they've been building up all this knowledge by themselves and kind of Orange Pilling friends here and there. And now they're emboldened by everything that's happening. So, for example, I talked to Bitcoin, a Casi in South Africa, and he was like, look, I didn't know how to apply my knowledge, but now I got so inspired by Bitcoin Beach in Alzheimer. So I started this with my surf kids that I'm kind of supporting. There's 40 kids that I'm trying to impoverish communities. I'm trying to help. So now I'm bringing in Bitcoin as part of their education and making it part of my project and making like a small Bitcoin Beach here in South Africa. And there's all these small stories where all these community builders have built up knowledge for so many years. When I first drove into Bitcoin in 2017, there was so little. I felt it was so hard to find good quality knowledge. I found Andreas Antonopoulos, and that was kind of it when I was trying to Google it. So I got all fooled by the shit coin stories and everything, and I just went all in on shit coins, and then I lost 98%. Now, I really believe that ",timestamp:"00:19:46-00:24:39",topics:["global bitcoin festival"],type:"podcast",weight:6.044204792136057},{boost:0,date:1596671100,description:"Bitcoin mining;User's choice in defining value",episode_title:"Chat_45 - Bitcoin & an Energy Revolution, A panel at the VOB Conf",guests:[{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Christopher Bendiksen",profile_picture:"https://pbs.twimg.com/profile_images/1362772558882484233/3nS-l35s_400x400.jpg",ref_id:"d99d354e-41d4-4117-9b70-05955a85f9da",twitter_handle:"C_Bendiksen"}],hosts:[{name:"Guy Swann",profile_picture:"https://pbs.twimg.com/profile_images/1401969630634196995/DqOuszMi_400x400.jpg",ref_id:"39c31930-d799-40a0-9a46-193117d03418",twitter_handle:"TheGuySwann"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"4636725f-ae47-4777-bd41-f78a4694ba05",show_title:"Bitcoin Audible",text:"Yeah. And there's kind of an inherent moral question there as well, is that do we get to subjectively put our values on to them? Like in making judgments over whether or not they can make that choice as to whether or not it is their value or not? And obviously, in a decentralized system, what are you going to do to stop it anyway? It's inherently an incredibly difficult thing to control or alter. Yeah, this gets to a very deep level of freedom versus coercion. Who am I to say that you're watching a Netflix show is a waste of our common resources? I mean, that's not my tournament to make, of course. Did anybody compute how much electricity costs to watch 90 minutes electricity. Honestly, there's research out there looking into data centers which is directly linked to such activities. I have one student that looked into Amazon, currently the comfort print of Amazon, where you actually have streaming as one source of electricity consumption. I made an estimate, I think two years ago of the electricity draw, just gaming console Iceland in the United States and it's on the level of something like 50 kilowatt hours. Wow. I like to make a couple of points here. So I think that one of the important points to note is that electricity consumption is not in itself a bad thing. So electricity consumption, like electricity production and consumption is good like that is that provides value. The negative side is when there are externalities associated with how that is produced. So if we enable more renewables, more sustainable energy sources through bitcoin mining, then it's a net positive. I think the other part that is important to note here is that in the total scale of human energy consumption, bitcoin is nothing like it is completely dwarfed by any industrial process, aluminum smelting, like concrete production, scale production. Bitcoin is such a small drop in the bucket compared to any of that, that any effects that bitcoin has on a more financial level, like if there's restructuring in the way that business is done, that will be far more significant than any effect of the direct energy consumption ",timestamp:"00:21:12-00:23:48",topics:["Bitcoin mining"],type:"podcast",weight:5.944497585296631},{boost:0,date:1670547229,description:"Thoughts on the gridless mining operation that started in Africa and how the progress has been",episode_title:"Rabbit Hole Recap #230: Building in the Bear Party Rip",guests:[{name:"Jason",profile_picture:"https://pbs.twimg.com/profile_images/1458137423716622342/ctyc_MTX_400x400.jpg",ref_id:"ca893631-4be5-42c4-bff1-92cc2f6e43fe",twitter_handle:"JasonWrich"},{name:" Texas Slim",profile_picture:"https://pbs.twimg.com/profile_images/1589784780970795011/02jf0fqp_400x400.jpg",ref_id:"add0c8be-0524-43e1-a3a3-aea1058057d4",twitter_handle:"modernTman"}],hosts:[{name:" Marty Bent",profile_picture:"https://pbs.twimg.com/profile_images/1362747135981199370/mSy97J12_400x400.jpg",ref_id:"0b8ba673-da17-4371-a6e1-dd112d173b14",twitter_handle:"MartyBent"},{name:"ODELL",profile_picture:"https://pbs.twimg.com/profile_images/1421584695746338819/Z_7ZfAeP_400x400.jpg",ref_id:"6981a34b-301a-45f1-8299-59a3f719f6e2",twitter_handle:"ODELL"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/da64b29e-c2c0-41a6-ba29-acbaa2d022e8.jpg",keyword:!0,link:"https://anchor.fm/s/91b8fbc8/podcast/play/61912544/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2022-11-9%252F301977145-44100-2-474e79172e2da.mp3",node_type:"clip",pub_key:"0372cd0c8469f2034336a243e018d4d60e07efef8e7d10417807da1173bd5b002f",ref_id:"f66a9f05-a885-44f3-9673-f910c78d6360",show_title:"Rabbit Hole Recap",text:"This was cool. We were talking about this earlier, block and Stillmark, right? Yes, Stillmark and Block led a $2 million funding around for a bitcoin mining company in East Africa. You guys may have seen it's called Grades. You may have seen videos of bitcoinners. I believe Nick from Luxor, Marshall Long from Rhodium, and a couple of others took a trip to Africa a few months ago. And the common video they were sharing was like a mining operation working off a small hydro facility in some rural place. Micro hydro? Yeah. In Africa. That's what Grid list is doing. And the way I understand it, these Grid List has basically got a problem where they can spin up these micro hydro turbines that produce electricity, basically have. A pipe that running water runs, and they throw turbine in there. Yes, but it's such a rural area, they don't have that many customers, and so they have to sell the electricity at a relatively high cost. What bitcoin mining is uniquely suited to do is come in and consume a lot of that electricity or use a lot of electricity to produce revenue. They have small rural villages that have no electricity. They come in, they put a new electricity project in. They subsidize with bitcoin mining. Yes, exactly. I think it drives the price from like seventeen cents kilowatt hour down to four, three or $0.04. They have pictures of some of the operations. It's like super bootstrappy and just really a lot of just like creative engineering that's going on there. Yeah. So shout out to the team. I feel like there's a lot of overlap there with the ranching community. I would like to see all these small producers have little micro mining operations. And that's the cool thing, is we have so much of our irrigation water is in pipe, so it's very seasonal when it runs. But as long as you have enough fall, you could put micro hydro in any of those pipes and utilize it to make electricity and mine bitcoin, whatever your season run long is. And in Tennessee, you see a lot of natural gas wells on these properties, too. Yeah, I mean, that's the first hashtag that we put down. You may have seen the video on Twitter, but it's literally our hash shut. There's a fence and there's grazing cattle right on the I love that picture. Yeah. And that's the cool thing. In Texas, you have all those non productive wells just waiting for the opportunity. All up and down the Texas Panhandle. I can't remember his name. His name was Bill. He came out to Colorado. He was West Texas. He's outside of Parritten. But he was fascinated because all the stranded gas wells in the Texas Panhandle, I mean, you can smell it. It's so untapped at this point. Well, we've talked about me and you have talked about and I know Matt, we've talked about too. But if you want to think about a significantly robust circular economy, you talk about a ranch with excess natural gas or excess hydro. That's mining bitcoin. You're tending to the land, producing cattle, and then you're producing money with your excess natural gas, hydro, whatever it is. You want to talk about yielding revenue per acre on a farm. Bitcoin mining really allows you to supercharge the value you're getting out of your land. And it battles all the droughts, all the manipulation in the commodity markets, hyperinflation, extended cut dates where you can't harvest a cow. I mean, talk about saving the rancher. That is the circle of energy that we talk about. And if you're using an electric heater to heat a barn or a well house or a spring house anyways, you're going to be burning electricity. You might as well mine bitcoin, use that miner as your heater and put that stuff in cold storage for whatever it is that happens to go sideways when you need it. It's pretty cool seeing all the club engineering around using S nine as heaters. Yeah. The 3D printed parts and different ducts. If you're a rancher out there renaissance lately on Twitter. Yeah. And if you're a rancher out there who's got excess hydro, excess gas in your land, but you don't have the capital to invest in a mining operation, reach out to bitcoin miners. You can go borrow it for Barry. No. Or you just broker a deal with a miner. You say, hey, I'll give you this electricity as a pastor, I won't charge you for it, just give me a repair on the bitcoin mine. And there is like a percentage gas or hydro sitting there anyway. You're not making any money off of it. You can make 5% satisfy stream from. A minor yet if they're flaring it anyways. Yeah. I mean, that's insane. I see how much they flare. That blows my mind. Talk about wasted money. Yeah. We're doing that here in Tennessee, tom and I at Standard Bitcoin up north, northern Tennessee. There's a ton of farmland with these wells on it like the one we're using with the cattle grazing next to we just go to landowner, say, hey, we'll pay your land lease for the year. Just let us find bitcoin with your gas. So you're not using. I'm more than happy to do it. Well, I think a lot of especially in Texas where I come from, we have to funnel that information. There's people out there that's going to be extremely interested. That was one thing that we found out during the summit this year. Those type of possibilities. In the beginning, I said, one of these days, ranchers are going to innovate further into bitcoin than any of us right here, because they have all the resources and once they understand it and they get that good education, it's going to be fascinating. We're at Jason's ranch, but during the mining conversation, we had all their eyes lit up. That was a damn good presentation. Meeting the pumps and stuff, too. They all right away and immediately obvious when one of us said just like, make sure you hire a licensed electrician, or it's like dangerous or whatever, they're like, honey, this is not dangerous. Exactly. But that was so classic. They're talking about doing this and doing that. As an underground coal miner that's dealing with 12,470 volts household power is no big deal. Then if you're a bit wider and you really care about the robustness and distribution of the network, there's nothing better than getting small modular mining farms or mining data centers spread throughout rural farmland. There's nobody better to protect a bitcoin mining operation than a rancher a mennonite rural Nigerian villages. Yeah, don't, come on, bring us happening. Yes, it is. Moving on from ",timestamp:"01:18:12-01:25:21",topics:["Africa Bitcoin MIning"],type:"podcast",weight:10.341832935773114},{boost:0,date:null,description:"Kenya background, culture and tribes",episode_title:"#Bitcoin Kenya 🇰🇪 - meet the Kenya Bitcoin community",guests:[{name:"Noelyne Sumba",profile_picture:"https://pbs.twimg.com/profile_images/1585949523901292545/tWf-IwWO_400x400.jpg",ref_id:"44455b1d-76cf-49df-baa0-cd606652885b",twitter_handle:"noelynesumba"},{name:"Okjodom",profile_picture:"https://pbs.twimg.com/profile_images/1577811376487088128/J2Z4nIgI_400x400.jpg",ref_id:"4c9df92d-3bb5-4d08-9a7e-a9ba15f58f03",twitter_handle:"okjodom"},{name:"Master Guantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"64c326c4-d4a9-4e6c-82fe-0c9bac8a7094",twitter_handle:"MasterGuantai"},{name:"Lorraine Marcel",profile_picture:"https://pbs.twimg.com/profile_images/2361719231/German_sheperd_Puppies_400x400.jpg",ref_id:"ab30679d-7931-4921-a4f8-6fee74e412c8",twitter_handle:"lorrainemarcel1"}],hosts:[{name:"Mary Imasuen",profile_picture:"https://pbs.twimg.com/profile_images/1465290507752558596/lZVbU9np_400x400.jpg",ref_id:"2d8ed8ce-5112-4dfa-9aa2-5fa8b874af68",twitter_handle:"mary_imasuen"},{name:"Lukas Poland",profile_picture:"https://pbs.twimg.com/profile_images/1382603302160932865/RgeQnCXM_400x400.jpg",ref_id:"217a2c5a-1cfd-4840-bbff-eec43da8c52f",twitter_handle:"duczko"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/56bbafde-60ef-4e4b-b930-978429c6a635.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/9f2ebf6e-a880-4579-986c-ff0c9c517559/2cb59251-775d-4691-9c8f-30fb9d7707b9.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"0bb19102-ebb2-4519-ac7a-e6e69593a091",show_title:"Global Bitcoin Fest",text:"let's get started. We have the Kenya community here and let's talk about Kenya. Let's talk about what's happening in the country today, the economic situation, a little bit about the culture. But maybe if we could start first about the history of Kenya. Is there anyone that you must agree, Guantai, think would be the right person to start? I'll put Nilen on the spot, maybe to give a history of Kenya and that Bitcoin background in Kenya. Is that okay, Nileen? Yeah, it's okay. So when we talk about Kenya, it's a very famous country. Lots of people have heard about it. Kenya is a very beautiful country. I have to get it that it's located in Eastern Africa bordered by the Indian Ocean. We have the lake in the western region. We have a mountain in the central region. And most of you have heard about the Masai. Mara has very beautiful wildlife. And Kenya, what can I say? Population 56 million. So we have very many Kenyans. Kenya is a country itself is divided into 47 counties. And in the 47 counties we have almost 44 ethnic groups. So we're divided into tribes, 44 tribes. And I can say Kenya is more of a family and community oriented culture. Of course, this being influenced by the African traditions and what we experienced during the colonial period. And so far, I believe Kenya is a very innovative country, very driven country. And yeah, that's maybe in terms of the culture, in terms of the monetary history of Kenya, I can say Kenya became a colony in the 1920s and in the 1920s. We used to use the Indian rupee back then. And it was before that it was abolished and we started using the East Africa currency. So this was used between Kenya, Uganda and Tanzania. Back then it was known as Tanganika. So we've come along with, in terms of our currency as Kenyans eastern Africa currency was used for a while. Then came 1966. So we gained our independence at around 1960, 319 66. The central bank of Kenya was established. And with that, they started issuing currencies from five cents, ten cents, twenty five cents. Yeah. That was around the 1960s. If you look at history books, it says during that time, up to the 70s, kenya's economy was flourishing. So we were doing quite well until the 1980s. Usually talk about what the hell happened in 1971. So it really affected Kenya. And so the 1980s had lots of deterioration of the coffee industry, tea industry, which Kenya is very well known for exporting, if you've heard about Kenyan tea. So we had financial deficits in our balance of payments. There was a shortage of forex, very bad shortage of forex in the 1980s in Kenya. And with that, we, the government obviously turned to the World Bank and the IMF and it suffered the conditions that came with that through the structural adjustment programs. And so far, fast forward in the 1990s, we had the effects of the structural adjustment program. So in this, you found that the conditions were privatization of the public sector and also in terms of agricultural production, the government was really onto it. And the consumer policies, they were work 2021, we still are undergoing some structural adjustment programs 20 years later through stuff like the extended Fund facility from the IMF. And of course, it comes with its own effects. We have wage bill being frozen for the sector and for the health sector, for example, that led to the firing of lots of Nazis. So you find that our health sector, the key areas that are important to people, end up suffering first and the health sector amongst them. So, yeah, I can say in terms of our history, we've come a long way as Kenya, but we are still persevering. Thanks. Hello. Is anyone with me? Yes. I was just waiting if somebody else wanted to jump in to share about Kenya. Yeah, only Lorraine can do the culture for us. Lorraine. I just arrived from Ghana. I was with Lorraine in Ghana. She's a fantastic lady. I got to meet her for the very first time, and that felt really good. So, Lorraine, if you can tell us what do you think about the culture of Kenya? Okay, thank you for that. Nolene, it was also a pleasure just meeting you. Noline has mentioned we have 44 tribes. Different tribes. Right. The funny thing or the interesting part about Ken we don't have one major culture that defines us all. We have different tribes, have different distinct cultures. And this is interesting because as we meet, we get to chandler about each other. I'll talk about having different groups. We have three distinct groups. I think there's a fourth one. But I'll talk about the banter. I'll talk about the nylons and the Cush outs. So within these three groups, you also have now we have the tribes in them, right? And the Banter is actually the major one. We have the Luas, the Kikuyu. The canvas all in the bantu's. And I think Gwentai and Nolin at our bantu. And then there's us, the nylon, the Lewis, the massage, the Kaleen jeans. And then we have the Kushites and so much more. Right? I believe Kenyans are pretty enterprise. They are hustlers mode. Of course, not as much as Nigerians, but we are very entrepreneurial. We like to do business, we like to get things done. We are very friendly. By the way, Kenya is a very welcoming country. That's why you see, like most investors actually just like to come to Kenya and have their business here. Invest in us, invest in our structure. Right? What else can I say? When it comes in terms of religion, it's an open thing. We have freedom of religion. You can be a Christian, though. Majority are Christians. And then you have 10% being Muslim. And then there's a small section, the Hindus and the Sikhs, minorities. But it's an open space. You can worship. You can worship or just pray to whoever, anything that you want. What else can I say about our culture? I think that is what I would say about culture. I'd also talk about as Kenyans, we can boost about the natural resources that we have. We have the wildlife, we have the mountains, we have the lakes, we also have the oceans. It's really a beautiful for people who are thinking about coming to Kenya, it's a beautiful place that you can come to. You won't necessarily miss a thing to do here in Kenya. You can visit the Maasai Mara as Nolene mentioned. You can visit the Indian Ocean. You can even just chill in the bushes with the lions and the giraffes and all that. So about language, I think that is part of our culture. We actually speak to Ahili and English as the main languages here. And so Healy was brought about by the Arabic and then east people. This was to facilitate the trades back then, the East Africa, we have Tanzanians, Ugandans, also speak Swahili. What else? I think that's about it. When it comes to our culture, I'll just call you, okay? Because I can't pronounce your name. Would you want to add something on that? Just mention the favorite food. Kenyans love their Galilee and you can take it. The number. I was in Ghana and I think I told noline. I miss Susan. I want to go back home and eat Susan. So it's true. Absolutely. Yeah. So you have to try that. It's made of khan. So khan pairs very well with things like fish. And there is also another highlight, which is Namatoma in Sahil that is roast or grilled beef. Could be beef. Could be good. Very good. If you're out there taking a bit of a drive, experiencing game drive, you're experiencing maybe the beach. If you ever visit Kenya and go to the cross part of it. So there's a bunch of things to see. It's a lively culture, very welcoming, but that is objective from this side. So you have to experience it for yourself. You're welcome. ",timestamp:"00:37:27-00:47:45",topics:["Kenya structural adjustment","Kenya cultures","kenya"],type:"twitter_space",weight:5.850915908813477},{boost:0,date:null,description:"Bitcoin is the only asset that don't have counterparty risk",episode_title:"Bitcoin Backed Stablecoin’s",guests:[{name:"Andrew Begin",profile_picture:"https://pbs.twimg.com/profile_images/1461826323102449665/spEoEcpR_400x400.jpg",ref_id:"28db7b9d-1c71-4981-8044-baf001e58b94",twitter_handle:"agbegin"},{name:"Yago",profile_picture:"https://pbs.twimg.com/profile_images/1369335486456684546/AIJdrQ5l_400x400.jpg",ref_id:"0819a9d1-c085-42d5-8b3b-bc3ce79ff1ea",twitter_handle:"EdanYago"},{name:"Sovereign Horizon",profile_picture:"https://pbs.twimg.com/profile_images/1604168916300873731/mLszGVm6_400x400.jpg",ref_id:"6c159904-fe63-437e-91b5-5c444bbd11fa",twitter_handle:"SovereignHRZN"},{name:"Art of Thomas",profile_picture:"https://pbs.twimg.com/profile_images/1547047357371797504/avnHBa2W_400x400.jpg",ref_id:"2c312138-9a5f-4a75-9c19-513d5703d5ce",twitter_handle:"TheArtOfTomas"},{name:"Maximiliano Carjuzaa",profile_picture:"https://pbs.twimg.com/profile_images/1566622024662917120/B6uyn9QR_400x400.jpg",ref_id:"a5273c83-28f1-4df3-b8c6-d3b081f55b31",twitter_handle:"maxcarjuzaa"}],hosts:[{name:"Alexandria The Great",profile_picture:"https://pbs.twimg.com/profile_images/1575525599493427203/XubWEoDX_400x400.jpg",ref_id:"0c977f79-ed3c-46e9-8363-6c6c519d014a",twitter_handle:"alesander97"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/046c6869-0627-4825-8ecf-45ff0aed97b6.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/5e4a506b-0534-4217-b682-b568f6212b73/2b4c8ed5-a7cc-43df-95f1-0d75e2c886ab.mp3",node_type:"clip",pub_key:"",ref_id:"3ff527f0-04a4-4bb5-9279-87f48ac98da0",show_title:"Alexandria The Great 🌋⛏🇿🇼",text:"Yeah, I love that explanation. I think we can't really get rid of counterparty risk. But I do think that there are ways of minimizing it as much as possible. And when I look at all stable coins, I think the one stable coin that really stood out to me was dollar and chain for how it minimized the labor of counterparty risk by firstly making sure that everything was done by small contract or funds. Like Yoga said that everything can be you can look at all the amount of bitcoin that's backed on the exposure so you can verify everything. And then also the fact that it's backed by for 169, for example. Even. Though there's a dispute about how much that's relevant. But if you look at most of these other like you talked about Taylor for example where you first had counterparty risk when it comes to just who is keeping the funds with the UST where you don't know whether how much these guys have in the bank? The audit. The auditing and all that stuff. I see. So when you have a question, maybe you can dispute about what I'm saying. No, not at all. No, it's not related. I can go after it. You can go now. Sorry. I guess it is kind of related because with the dollar backstable coin there will always be risks. But when I'm using USBC, okay, it's very centralized. And yes, the risk is that my money could be frozen by the US government if they were to enforce that, which I believe they do in some cases, or at least on Tether. I'm not sure about USBC, but the point is that they could. But at least I know that there are dollars in a bank account. Or at least it's supposed to be. But with USDC, I believe it's more transparent. Right. I don't know, Max. I think maybe just when I read about the money on Shane, I was a little bit scary because there's so many tokens involved or maybe I don't understand it yet, but maybe there's something I'm missing and I'm hoping to learn. Yeah, I just wanted to agree with what you were saying, Alex, and at. That point, ",timestamp:"01:12:39-01:15:04",topics:["Bitcoin asset"],type:"twitter_space",weight:5.823068022727966},{boost:0,date:1675801804,description:"Hacker space opening in Italy similar to Bitcoin Park",episode_title:"CD87: Bitcoin Dev Kit with Steve, Daniela, Alekos, and ThunderBiscuit",guests:[{name:"ThunderBiscuit",profile_picture:"https://pbs.twimg.com/profile_images/1004180692794839040/qvYqY796_400x400.jpg",ref_id:"2932056a-dad7-4618-9c8d-d275b9f150d5",twitter_handle:"thunderB__"},{name:"Steve",profile_picture:"",ref_id:"8602c01d-a34f-426d-b143-581f25d3d3c8",twitter_handle:""},{name:"Daniela",profile_picture:"",ref_id:"7d011916-5300-4d32-a08b-fe4731bff5f2",twitter_handle:""},{name:"Alekos",profile_picture:"",ref_id:"9b7499d2-4c12-48c9-b8ed-614d09f0fdf2",twitter_handle:""}],hosts:[{name:"Matt Odell",profile_picture:"https://pbs.twimg.com/profile_images/1421584695746338819/Z_7ZfAeP_400x400.jpg",ref_id:"4f2825ff-3b88-4595-84d4-36e81544b79a",twitter_handle:"ODELL"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/a09a2c49-84f1-4d0b-b150-6e6103f4ee41.jpg",keyword:!0,link:"https://anchor.fm/s/45563e80/podcast/play/64675885/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-7%252F311592986-44100-2-a038b9bfbe62c.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"5458df9b-3a25-4e1e-b7a0-e14daaa8d66d",show_title:"Citadel Dispatch",text:"Speaking of communities, I'm going to self promote our dealers doing so. Daniel and I, we believe in Italy. We live in a small town Canon, near Milan called Brexit. Probably nobody has ever heard of it. We are bored when we're there. We just don't know what to do. So we decided to open kind of a bitcoin acrospace. Awesome. It's going to be super small compared to this. It's nothing compared to Bitcoin Park, but yeah, you got to start mall, I guess. Good goals to have that. So is it open yet? No. Right before leaving, we signed rent. Oh, congratulations. Yeah. So we found a spot in the city center. So cool. Like Italian. How far is it out of Milan? It's 1 hour by car. That's awesome. With trains, it's like 35 minutes. I love Milan. Milan is a great city. Yeah, I mean, yeah, we used to live there. It's it's good. It's also bad. Well, I'm a former New Yorker, so Milan feels like Italy meets New York. Yeah. Yeah. It's like it was very familiar to me. It wasn't like a tourist city. It was actually like I was there and people were going to work and things. Yeah. It was a big financial center of Italy, I guess. So, yeah. We're doing this thing hopefully in a couple of months, it's going to be ready and fully open. So if you come by Italy and. Europe, how do we find more information about it? Do you have a site or anything? Yeah, we have a website. The website is BS. It the place is called AK BS because BS is like the shortened version of Brexit of our city. Cool. Actually ACS, maybe I shouldn't say this because some listeners will come in and steal the domain for us, but Act PS is a valid DNS like domain. It's a Bahamas domain, but it costs like $500. So we can't afford it right now. Someone buy the domain for them. Yeah. And give it to us, please. So we have the Aces it domain, which was much cheaper. Yeah. We have a Twitter profile which is ACBS with the four in place of the year. Is that ACK. Like a meaning like acre? Because it's an accurate space. Yeah. And I think it's going to be where we want it to be. A bitcoin like physical place. Probably going to be more of a cipher punk. So we're trying to open it a little bit more. Yeah, not the sheet coins, obviously. Greater open source. But yeah, greater open source kind of environment. Because in that small town, there are not that many bitcoin. So if you just open a bitcoin space, I think what is going to come instead if we open a space, which is more of a basically where we teach about privacy, about freedom, about technology. Kind of like a CPB. Exactly. That's one of the big that's one of the big inspiration. 3D printing. Yeah. We're going to have a lot of non software stuff. So I want to have like 3D printers, CNC machines. That's awesome. But also like art and things like that. I didn't know. Yeah, that would be great. There's only one designer and we don't have any two of them. One of the things, we're not artists. We have art all over because you empower the local artists. We have walls. Yeah, that's what we want to do. Apparently policy is full of awesome art because I think at some point they managed to onboard the artist. So I hope we're going to be able to do that as well. To onboard people that are more of an artistic style than us. And they'll make paintings for us. You're first thing to go up on the wall, which is from here in Nashville. The Spiral guys took us out on a little team building exercise. We went shooting. Shooting automatic weapons and handguns. Love it. And sniper rifle. In an old movie theater. In an old movie theater. So anybody in Nashville here? I recommend going checking it out, but they let us keep the target from one of the from the sniper rifle stuff. So we got yeah, that's going to. Be the first part for that. Because in Italy, guns are like, I don't know, maybe for American people listening to these, they think, oh, California, nobody can get a gun in Italy is like worse than that. Nobody really? California is very easy to get a gun in comparison to Italy. Yeah, it's like in Europe in general, probably nobody has ever seen a gun. Basically. I'm glad you got to experience our local pastime. Yeah, I know. That's great. Super fun. You can train us in building Bitcoin wallets and we'll train you how to use them. Yeah, I know. It's super useful skill, actually. I mean, it's fun. But it was also interesting for me because I'm like, maybe in the future I'll need to shoot a gun. So it's a useful skill to have to defend yourself. And going back to the hackers conversation about yeah, not talking about people not taking personal feelings, that big thing. People don't have guns because they don't take responsibility for their own life, basically. And you're saying, too, it's a whole other technical rabbit hole to fall down, too, like how the guns work, how to maintain them. We didn't do that this week. But it's another protect. People know about those other things too. But to the hacker space, I mean, that is awesome. And I love seeing all the different spaces, physical spaces opening up. And one of the cool things with Bitcoin Park is like, a lot of people come here and then go back home and then they launch something back home. Everyone's just like, how do I do this in my city? Well, at the scale of Bitcoin Park, you do it by losing a ton of money. So I don't suggest that, but start small. Physical spaces are really important. And I'm happy if you guys need any feedback or anything like that, we're happy to help. And we're already talking about like I said, he was kind of helping us look at the coffee machine yesterday. Just but technological trading back and forth too. Like, alicos has a bunch of great ideas and Danielle like great ideas for hackerspace stuff that, hey, maybe that's kind of stuff we want to do here at Bitcoin Park. And some of the ways we've got some of the things we've set up here, the art and all those things, it might be taken back home. So, yeah, I feel like there's not so much of the practical side of building things. This is like a great off if they don't have 3D printers and stuff like that, which is something we really want to have tools. And you can I would love to. Have 3D printers here too. There's going to be a lot of cross pollination between all 100% oriented community. And it's very grassroots. It's very like bitcoin. It's inherently distributed. It's not like one group is doing it. You go back where you live and then you open one. I think for us, yeah, the main inspiration was parallel in palace because it's super cool. And again, also the same with us. Here was parallel palace. Yeah. We just made it easier to pronounce. Other places. Great. So, again, we're going to be like nothing compared to them. But that's, I guess, how you start. You can go up. At some point, we'll be reaching out to get a proper place. I'm already so hyped because we've done like a notion page with all the events we want to do and all the projects we want to work on. And there's just so much stuff. We're just like we're going to have game night and bitcoin night and movie night, where we show The Matrix and other films that might help people to just understand the, I don't know, like, psychopath point of view. And then we have so many projects we want to work on, like, I don't know, fridge, which you can be with Lightning and then you open it and you take whatever you want it to buy. Like a self service bar. Exactly, yeah. Because, again, I think the problem for us is going to be there are not that many bitcoins, so we have to be open to tech people in general, to people who build this. But it also will click to them. It'll click to them if they make their first bitcoin payment, actually just using bitcoin, even if it's the shittiest wallet. Buying a beer at your little bar with Lightning or with bitcoin. There's so many people that come here. It's the first time ever using bitcoin and maybe they've been in the space for like four years, three years, and they just never actually used it to buy something. They have this thing called the Blessed One One, which is an ATM, like a really small one, which accepts coin. So basically, people just I don't know, they take out their coins that's good pockets and they just buy one. Europe change. You put it in and you get SAS and Lightning and then you can. Buy them how to set up a wallet. Yeah. Great workshops. A thing. You guys did mention it before, but they do if anybody wants to support what's going on there. In Russia, they've got a BBDC Pay server where you can how do we get there? Donation page. Yeah, on the website. And it should be like a donation. On the front page, I think a link to it. Yeah. In the menu, I think, above. Great website. We're also on Geyser. That's fun. Yeah, but we don't have our own license. Yeah, we do have only address. Sorry, so what are you using, like a Lightning address with them? I didn't know they set up something for us. But they take a fee because we don't have L and D notes and they just pay service. Best approach? I'm looking at it. It looks great. 10,000 euro soft cap goal. Yeah. I mean, that's kind of a random goal. We're going to open the place anyway, so it's not like we need to reach a goal to open it. We're going to open it anyway. And we're going to start super small. Right now we're looking for a used furniture. Like we're looking for a desk that we can get it for $20 or something like that. Yeah, if you're going to buy chairs, we're going to buy used chairs because yeah, absolutely. Yeah. We don't have a specific goal in mind, but whatever we can get, obviously it's going to go towards ",timestamp:"01:06:35-01:16:24",topics:["Bitcoin Park"],type:"podcast",weight:46.10662364780383},{boost:0,date:null,description:"Bitcoin Standard is encouraging value for value system",episode_title:"The Orange Sun 🌞 VISA, MasterCard & #Bitcoin #BOLT12",guests:[{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"~₿ Maxi~",profile_picture:"https://pbs.twimg.com/profile_images/1446241859651637250/i67F3y9p_400x400.jpg",ref_id:"ad997ae7-0726-431a-9f72-82da091c0658",twitter_handle:"fede0891"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"FireBurs†s",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"cda1d3ad-dd80-458b-a5fb-a28861df10a7",twitter_handle:"FireBursts"},{name:"Nikolai Tjongarero",profile_picture:"https://pbs.twimg.com/profile_images/1578458155964682274/_SzDxkAJ_400x400.jpg",ref_id:"821ee040-2267-454e-a59a-92da51568afa",twitter_handle:"BitcoinNaijaShw"},{name:"ブランドン",profile_picture:"https://pbs.twimg.com/profile_images/834861311762649090/N0KAP4zH_400x400.jpg",ref_id:"3d41531d-6a59-4771-81f9-0924b4c02561",twitter_handle:"blario"}],hosts:[{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/94a86a32-91c2-4717-b5cb-b36cef925776/38decc02-c922-4c1d-a605-7cd54c91a01d.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"5483d49e-fa1a-430c-9d2a-ed11e3a6beec",show_title:"Satoshi’s Journal",text:"I implore you to check out and have this website on your desktop or on your phone. I literally have it on my phone and I click them every morning for the show. Super helpful. They're free. TC is going to be making it open source, so we think it's good now, but there's going to be a lot of people that can make it better once he makes it open source. Timechainstats.com, I don't think is open source, that is Aunt's Baby. So he just updates it as plebs, give him inspiration or constructive criticism. He makes it better. So check out both of those soon to be on our website. And then lastly, most importantly, the subject today inspired by Master Guanti was just bitcoinners are charitable. We could probably talk about this for many, many more hours in 2 hours, but I think that the biggest thing that I've seen in the bitcoin space with bitcoinners is I haven't met one bitcoin that's not charitable. They want to help people, they're selfless. And I think bitcoin is a reflection of what the future is going to be. Because when your time is denominated by a money that is actually representative of your value, I think you'll be more happier. You'd be happier. Sorry. And you'll actually be able to help people because you'll have money that is not inflating away faster than you can create it or you can make it. And so I think right now we're seeing a small iteration of living under a bitcoin standard. So bitcoinners are trying to help each other everyday on spaces, even just taking time out of their day just to create a new tool. Like we just talked about timechainstats.com and timechain. Sorry. Timechainstats.com and timechaincollender.com. Those two tools were created by two individuals. Timechainstattsk.com has been in the works for over two years if I'm not mistaken. I think when I first got spaces, Ant was working on it and he's still been working on it and revamping it and making it that much better. I mean, he's not getting paid to do that, he's just providing a tool and it's a very helpful tool. And now you got time train calendar, same thing. TC is not getting paid for it, but he's created it. So I know that TC has a donate button, so if you have a chance to send him some stats, please do. I'm trying to find it now, actually. So if you go to the app, I think it's under, let's see, where is it? Oh, so if you click the settings button and then you go to contact, you can find it. It says, donate me a beer or cup of coffee. Cheers. So I clicked his donate button and while I'm here, I'll just send him $10 here. Okay, copy. And just go to Strike and $10. All right, so, yeah, you can simply do that. It took me just a few seconds, but at North, TC expect tips. No bitcoin, really expects tips. They give the option of tips, but, I mean, it's like freaking twisting a Bitcoinner's arm to be able to send them tips. Like, no one wants to get tipped. I mean, they do, but they don't like they feel like they're what's it called? They don't want to bother people. So, yeah, just tip those people that you respect their time and the value that they bring on a value to value basis. I think that's the future. It's funny because we should have already been living a value for value basis, where you provide value and you get whatever your value is in return. But Fiat has broken that system, but now we're living it. We're seeing it through our fellow pubs. They provide value and we provide. So, for instance, the videos that we've been doing with Wicked, those aren't free. He charges us a certain amount and I'm willing to pay him that amount because the value that his videos provide you all and me, obviously, is a function of how many views we get. So one video got 570,000 views. Apparently that was valuable. The current one is 15,700 views. Apparently that's valuable. So I will continue to provide monetary money to those people that provide value to me and vice versa. So that's just the way it should work, and that's how the future is going to be. ",timestamp:"00:29:58-00:35:57",topics:["Bitcoin Standard","Bitcoin Tools"],type:"twitter_space",weight:5.705638647079468},{boost:0,date:null,description:"Seed phrase metal backups - seed phrase stamping systems",episode_title:"#Bitcoin Self Custody Q&A Episode 15",guests:[{name:"@ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"29e1a1c3-1dbe-4ab2-955d-8a7a7476996b",twitter_handle:"ToxiKat27"},{name:"@Lil_WhiTe_Boi19",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"c737d37a-be78-4bd1-823a-04d569aefcfe",twitter_handle:"w_s_bitcoin"},{name:"@Tarek_Z_Saad",profile_picture:"https://pbs.twimg.com/profile_images/1598082570931130374/aiUPJ1HC_400x400.jpg",ref_id:"16091cbf-d110-4299-af6e-84ecd0429d59",twitter_handle:"Tarek_Z_Saad"},{name:"@BeyondBlu3",profile_picture:"https://pbs.twimg.com/profile_images/1577513247107842050/JCDgPikZ_400x400.jpg",ref_id:"0be89e9a-6e96-4241-8ee8-cdebf9b134b1",twitter_handle:"BeyondBlu3"},{name:"@life2_one",profile_picture:"",ref_id:"d2a45191-e863-4e56-8a05-08afdff7f421",twitter_handle:""},{name:"@KahnsMichel",profile_picture:"",ref_id:"937fcaa9-4b73-4fbe-ada4-b40720644a1d",twitter_handle:"kahnsmichel"},{name:"@Jimmy14624",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"73c17ab8-ce99-4c87-ba45-3334c255c97b",twitter_handle:"w_s_bitcoin"},{name:"@SovereignHRZN",profile_picture:"https://pbs.twimg.com/profile_images/1604168916300873731/mLszGVm6_400x400.jpg",ref_id:"2811a110-d1cc-4a2d-bead-59b4e1805817",twitter_handle:"SovereignHRZN"},{name:"@XpatSantiago",profile_picture:"https://pbs.twimg.com/profile_images/1599096281493778433/qeSvcIuj_400x400.jpg",ref_id:"bca4859c-3c8b-42c2-a0ee-86eb581f4078",twitter_handle:"XpatSantiago"},{name:"@MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1570497262735728640/q5ZDJFKz_400x400.jpg",ref_id:"8abfce7f-a49d-49f9-8bab-6861e41910d5",twitter_handle:"MrHodl"},{name:"@bankhatin",profile_picture:"https://pbs.twimg.com/profile_images/1596672372744019969/prxTKz_7_400x400.jpg",ref_id:"c4af2875-19ec-4439-85da-4ff34ae397fe",twitter_handle:"bankhatin"}],hosts:[{name:"Wicked Smart Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"6bbf5f18-35e4-4ad0-aade-dbd493b1f4eb",twitter_handle:"w_s_bitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/4127f08c-505a-4a7d-935f-e93e87204089.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/58879b11-db25-4b12-b182-960933e015e9/df9bdaae-4143-4873-baa6-dd7e56407c6f.mp3",node_type:"clip",pub_key:"02814a5050f43a36bb052c7a3f22f0e86700abe037a44d99b45e0cb424d9398cbf",ref_id:"d9edac8b-8349-4e52-b61e-a22ef687f4f3",show_title:"Wicked Smart Bitcoin ∞/21M",text:"Hey, guys, I just had a quick thing. Ed, you were talking about stamping it in metal, and I bought a buddy of mine's house burned down and he left his chain in there and it was just a pile of melted. So the titanium thing is definitely for the heat, you know what I mean? I don't know what temperatures the other metals go out at, but there was some left of the metal. Yeah, there was a pile. Has a video of all the hardware, all the metal devices with. He went through, he stressed us. He took molten, basically fire. He was shot at with the AK 47. He did all sorts of tests and I'm not sure, I don't remember the exact results for each one of those titanium plates, but it's there. So if you go on Twitter and you look up Loft and you look up some of these metal backups, there's a video out there with him doing all these tests. And yeah, they're not all created equal 100%. Yeah, I think it's changed. Mostly made out of copper, I don't even know. Or nickel. Those are metals that have a much lower melting point than steel and titanium, obviously. Titanium has probably one of the highest ones, right? Titanium. You can literally drop it in a volcano and it won't melt in the lava. Not that it matters, but like yeah, in a house fire, I think as long as you have it stamped in steel or titanium, like, it will survive the fire, right? Whether it will survive a shot from AK 47, that's another question. I'm not that paranoid. I'm not getting shot at enough to really care about that. Fire gets hot, man. It made a Toyota into a pile of metal also, you know what I mean? So it's hot. I'd stick with titanium if I was going to stamp anything on, anything. But yeah, I will say I myself use titanium plates, as I said before. And there are some benefits to that one is that it's a lighter metal, so it's easier to just fucking store. You have a big pile of them. It's not going to be heavy. That doesn't really matter too much to most people. That's one, though, it's kind of nice. And then it's also stronger. So like, it doesn't bend as easy if you've got a thin sheet of it. Because the ones I use are like pretty thin little cards. They don't bend. But if you're using kind of a thin version made out of steel, it would start to bend and warp. That can be a little bit more of a concern if you're worried about the plate, like bending in a way that could fuck up the lettering or something. And then of course, the biggest benefit in my mind is like, it's just got a higher melting point. But all that being said, it is harder to stamp into. So you have to really put some fucking muscle into it when you're stamping these things, right? And I've posted videos of like not videos, but pictures of the hammer I use when I stamp these things. It's probably not the best hammer for doing it, honestly, because it's like a jewelry hammer made out of copper. But man, this thing is fucked. It's just totally warped where I actually hit it because you have to hit it really hard to imprint the lettering in titanium. So definitely it requires some proof of work if you want to use titanium plates, you know what I'm saying? Yeah, one more thing I just wanted to add real quick and I'm done. You guys say don't use your names in your seed freeze. Is that even common names in your past phrase in your past race? Okay, I thought it wouldn't generate a name, right? No. If you're curious about what words are in the seed phrase, you can look up bit 39 word list and you'll see it's a list of 2048 words. Each one has a unique starting four letters, right? So you only need the first four letters of each word. That's a little known secret, but like if you're stamping them in titanium, you're going to save yourself a lot of effort and a lot of time if you just stamp the first four letters because that's all you need. There's a little bit of alpha. And then in terms of your passphrase, that can be anything you want. So that can be any characters, upper, lower case numbers, spaces, literally anything you want can be that passphrase. Now, of course, the more crazy and complicated you make it, the more responsible you have to be when you are backing it up or writing it down or memorizing it or whatever. Right? So there's a trade off there. The trade off is you can make it really complicated, just like how you can make a password on your bank account really complicated. But if you forget it, then you lose all your bitcoin. So you just have to make sure your backups of it are done really well. Don't fuck that shit up because it's really hard to recover your funds once you forget your passphrase or are uncertain if like, oh, did I make all these characters some of these capitalized, or did I put a space there? Or did I use an underscore or that these types of things, just like a password. It gets really fucking risky once you start throwing in a bunch of random shit, and then you just have to make sure that he backed it up really good. You know what I'm saying? Yes. All right, let's go to whoever had their hand up first, wasn't paying attention. I just want to tell everybody, if you need something like this, I mean, steel crypto, you can just look, I'm sorry. It's written Sierra, Echo, Echo, Delta, October, Romeo. And they also got pretty cool videos on YouTube. And it's very small, and you can hide it in the door, or you can make a hole in the wall and hide it there. It's pretty cool. And it's about $150, and it's with hammer and stems, and it's made in Germany, stainless steel. I just want to let you know it's pretty good because it's not so big like a card. That's the difference. Because if you want to go out with it, I think a card can be pretty hard in your pocket, and it's just like a roll. It's like coins you stem. Yeah. So there's a bunch of options. There's a bunch of companies who are now starting to make different options for this, and there's a bunch of good options for me, myself. A lot of these options are getting pretty expensive, right? $150 for, like, a metal backup is in my mind, that's too expensive. I'm not going to spend that kind of money, especially since one thing I'm doing is I'm helping a lot of my friends and family kind of get their seed phrases stamped, whether I'm doing it for them or whether I help them do it. Obviously, if I do it for them, they have to trust me. But it's better than them fucking keeping their bitcoin on exchanges. So I do what I got to do. And because I'm doing kind of a lot, I'm like dozens or whatever, I've kind of made my own DIY system, stamping system, and each of the titanium honestly, each of my titanium plates runs me about $2.50 a pop. I've got it down. I've got my price down per se stamp. So I can't imagine paying, like, $100 just for one or two set ups, you know what I'm saying? I'm sure it's nice if you have. A good passphrase, you can make many backups, and you can spread them out. Seat race. A metal plate is nice if your house gets burned. But if you have a backup of your seed in your mother in law's house and your grandmother's house and your cousin's house, and in a bank account or in safety deposit box, if your house burns down and your seed burns down with it, well, you have four or five other backups in different locations. And as long as your password is good, that's the main thing. I try to, like, hammer home is that your passphrase has to be as long as your seat. Those first four letters of those words, that's how long it has to be for it to be as secure as the seat itself. So I personally have yeah, I have it. I bought Crypto Stealing a long time ago. I don't really think I ever used it because I just have so many backups laying around different locations. So I don't have that signal point of failure. So, yeah, it really depends on how you're set up. Also, if you're mostly safe then you don't really have to worry about any of them. Yeah, that's a whole nother can of worms, which always gets brought up. And I love talking about multi saga as well. I think it's pretty interesting setup configuration. The other one that a lot of people use is like you can 3D print or buy for like 510 bucks the the stamping guide for stamping steel washers, you know, and that's one that a lot of people use too. You just get yourself a bunch of cheap stainless steel washers. You stamp the first four letters in each one and then you bolt them all together. Make sure you bolt them in the right order, of course, but that's like a good economical way of doing things too. If you're trying to back things up a little bit cheaper. You don't want to break the bank for a dopeass stamping system. I will say, man, like the fucking what was that company that made the titanium ones, like the Thor, whatever comes with the hammer and it's like $300. I was envious of that stamping system and that's ultimately what got me to just do the DIY myself. Because if you look at my setup, I designed and 3D printed my own stamping guide. And if you look at it, it's like kind of pretty similar to what they had. But yeah, I mean, peach their own. Anyway, the whole point is back up your fucking seafarers. Don't rely on don't rely on your device holding that for you. Whether you're holding it on a hot wallet in your phone or whether you're holding it on a signing device, you got to have backups because there's no guarantee that your phone's going to be with you forever. You might lose it, the app might stop working, your signing device might break, you might burn in a fire. You guys have to have these things backed up. So either back them up on a piece of metal and store that somewhere safe or back it up in multiple places with a pass raise on top for that extra security. There's many different options, but you just have to make sure that whatever option you choose works for you and is secure. Go ahead, Sovereign. Yeah, I just want to comment on the price point of steel plates. I have been looking around a little bit. It looks like to me the best bang for your buck if you're going to go with steel is keystone. It's like exactly the same as biddle fabulous. And it's $49 and they also have $39 option and it's yeah, like using $100 or more for steel plate is just ridiculous. I know everybody loves to kill the bill fuddle, but come on man, it's not worth that price. So yeah, that's what I would recommend. Check out keystone. I know, I'm getting a couple of those from myself. Yeah, there's options for everyone at every price point I think. Yeah, I've got some poor friends and I'm just like buy some fucking washers and just get yourself a cheap stamping system off Amazon for like $20 or whatever and go wild. Because the other thing about these seed phrase stamping systems is you're not going to keep that seed phrase for your whole life, let's be honest. Most likely, most likely you're going to cycle through a few kind of throughout your time in Bitcoin, right? You're going to figure out a new way to set it up or you're going to want to just kind of make a new one just to make sure you're up to speed on everything. Maybe you will keep the same one your whole fucking life, I don't know. But in my experience I haven't. I kind of cycle through them every once in a while just to kind of keep things fresh. And so if you're spending fifty dollars to one hundred dollars on a brand new seed plate backup every single time you create a new seed phrase, I can get expensive real quick. So finding yourself an economical way of doing that might help out the other thing with these keystone. So here I'm looking at the link that you just sent in the nest. One thing I don't like about these things, these keystone tablets is if they ever get damaged, if they get warped and then those little letters pop out, then you're fucked. Right? Yeah. That's why they made the plus one because the cheaper one for 39, they had one slot for four letters but now they've updated it to the plus, which is like 49 instead of 39. And now they actually have one individual slot per letter and also like 20 more screws or something. So it should be better. But yeah, they can be worse. But for a multi sake set up, I wouldn't be worried. Okay, got it. Okay, I see here. It looks cool for sure. I've just seen some reviews. Like I haven't tried it myself yet, but it looks for the price point, I would rather get two of these than a bill model to be honest. Yeah, cool. Yeah, good stuff. All right. Well yeah, I think we kind of beat that to death. I just want to show you because I think not everybody got the knowledge as you post. I just want to make it everybody as easy as possible. So I just want to think to everybody, you know what I mean? I mean somebody get, I don't know, thirty k a month so he don't give a fuck about the cost. So that's a fiat world. It's so crazy and insane. ",timestamp:"01:23:06-01:39:40",topics:["Titanium seed phrase plates","Seedor","keystone","titanium"],type:"twitter_space",weight:5.703676700592041},{boost:0,date:1676083645,description:"Lessons from previous Bitcoin soft forks on Bitcoin",episode_title:"BR023 - OP_VAULT for Bitcoin Covenants Panel ft. James O'Beirne, Rijndael, Antoine Poinsot & Carman",guests:[{name:"Carman",profile_picture:"https://pbs.twimg.com/profile_images/1609775498971725824/5vyAafE3_400x400.jpg",ref_id:"09405d70-6fa6-4f2c-92f1-a2951ad56447",twitter_handle:"benthecarman"},{name:"Antoine Poinsot",profile_picture:"https://pbs.twimg.com/profile_images/1108377445936316423/ArRDGbr5_400x400.jpg",ref_id:"1ba10809-b3e6-4e37-a906-697a0368b814",twitter_handle:"darosior"},{name:"Rijndael",profile_picture:"https://pbs.twimg.com/profile_images/1542705395873058817/0zsy4Yur_400x400.jpg",ref_id:"861d5324-8ede-4059-826f-f29abca5d7e6",twitter_handle:"rot13maxi"},{name:"James O'Beirne",profile_picture:"https://pbs.twimg.com/profile_images/1542173995650408450/iDxrdmuj_400x400.jpg",ref_id:"e8e48fcf-9e54-4c66-9b20-aacf5c5b504e",twitter_handle:"jamesob"}],hosts:[{name:"NVK",profile_picture:"https://pbs.twimg.com/profile_images/608402052247658497/ENDv0BNd_400x400.png",ref_id:"d754e29b-2d3e-4280-8d72-f41d2a465a78",twitter_handle:"Coinkite"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f1879df9-9bc6-4a76-951f-24548da768ef.jpg",keyword:!0,link:"https://anchor.fm/s/9500fad8/podcast/play/64850866/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-11%252Fc53436f3-e1a6-2cae-eecb-fb61b06f804d.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"1510e150-aee2-42cb-ac57-79b4997bb6cb",show_title:"Bitcoin.Review Podcast with NVK & Guests",text:"Well, another thing that is a relatively recent development is I think AJ set up Bitcoin inquisition, which is let's proactively merge different software proposals into a Cignet so that people can play with them on a shared network. And so, unlike some of the more ambiguous ambitious big change proposals, because Op Vault is really targeted at a very specific shape of use cases, maybe there's an easier path here of it ends up on something like Bitcoin acquisition. People can build little dummy wallets and normal users can get a little bit of stick time playing with okay, what would custody in a post Op Vault world look like? And demonstrate that this is better. And so even if you don't know whether or not the mechanic is trying to screw you, you can at least kind of take it for a test drive first. There might be some stuff like that where it's less about how do we go and win the rhetorical fight on reddit and it's more about what can we do to incrementally derisk the proposal so that the community understands what they're signing up for. I mean, there was a lot of that at Tap Root, right? There was a lot of sort of working groups and things like that, but Tap Root still felt pretty rammed through. Optech did a workshop on tap root, I think, two years before activation. So you could write code and watch videos about tapirt, but people still felt like it was sprung on them. Tap root is just so hard. It's so hard to get. Until very recently, didn't I feel like, fully understand Tap root for this proposal? I had to write a bunch of tests. It's all in taproot. And there were things that I just kind of didn't understand and I found it pretty difficult to get sort of valid taproot constructions. And I basically relied on sort of the example code that other people are written. So, again, I'm massively positive on taproot. I think it's awesome, but it was like, so difficult to get your arms around. Even as a deeply technical person, I. Wanted to address as well. You said that it was a small group of people, but why it's true is that it was a small group of people that cut it for tapris. I found that there was a lot of demand and the defense had a high bar. Well, there was a lot of demand, a decade of research. When did we start discussing milk rice scrapes? In 2012 or something? With raspberry? Yeah, yeah, years ago. So, yeah, a decade of research, a lot of involvement, and a lot of people in the community with the workshops, a lot of involvement with the activation. And maybe that's why as well, people are not happy with it because they were actually involved. I think Teprit did put a very not high bar, but reasonable community involvement and normal user involvement. Schneider is a similar thing. Like, people have been wanting schnor and bitcoin for years. See, like, the Schneider is funny that he brought that up. It's always been a concern of mine that what if acdsa is back door, right? And it's not revealed for a long time and there is no proof for acdsa. So the idea of, like and again, this is a fundamental change to bitcoin, right? Adding another crypto primitive is like crazy different, but just having a secondary fallback crypto primitive in bitcoin before we're big enough that state actors are going to that extent, right? It's pretty cool. Thanks. Antoine is stepping out. Appreciate it. But now we have this sort of like the fights have always been hard. Up return limit back in 2009, 2010 because people are concerned about the worst part of Dick butts and then you had say P two Sh was also a huge fight. The original block size changed from 32 megabytes to 1 know SegWit was a bamboozle of most people. People did not understand that the block size increased. I don't know, I just hope that this one is not part of the contention. Like we can find a path where like this is the gardening sale, not the construction sale. I think the point Ryan Dow made is so good. And what I love about the idea of people taking this for a test drive en masse with inquisition is like that gives technical people who maybe don't want to work on Core or don't have time to work on Core can't they can write tooling to kind of make this an easier process to be able to experiment with this stuff more easily. So I just love that idea. I think something keep in mind too, like MVK, you just went through all those different software from the original block size decrease to like stuff like segment tapri like you didn't mention like CLTV or CSV or like BIP 66 I think, or 68. Like there's tons of bits that are like we're soft fork that just like are just normal things that happened and no one cares because they're like simple small upgrades that are ",timestamp:"01:37:06-01:42:14",topics:["soft forks"],type:"podcast",weight:47.136215082032344},{boost:0,date:1601200800,description:"Politicians defunding the police which resulted in an increase in the rate of crime in Manhattan ",episode_title:"Orange Pill [OP7] - Bitcoin is Love",guests:[{name:" Abe Cambridge",profile_picture:"https://pbs.twimg.com/profile_images/1368910908282572802/MTMBCPZU_400x400.jpg",ref_id:"5eed11cc-94e5-4e17-b923-95183699f193",twitter_handle:"abecambridge"},{name:"Mitch Feierstein",profile_picture:"https://pbs.twimg.com/profile_images/2625988157/vky9cedsgb0mf3usbh3x_400x400.jpeg",ref_id:"f9a70e2b-f905-4c70-afcf-3ef7004b7cab",twitter_handle:"PlanetPonzi"},{name:" Alakanani Itireleng",profile_picture:"https://pbs.twimg.com/profile_images/1512849723283185673/MzgEELWq_400x400.jpg",ref_id:"bda1bc91-3acc-4dc7-82eb-03c70f63525f",twitter_handle:"bitcoinlady"}],hosts:[{name:"Max Keiser",profile_picture:"https://pbs.twimg.com/profile_images/1361873587582472195/y57DiTYX_400x400.jpg",ref_id:"743efd07-d194-4c74-8663-45c3b8646b8e",twitter_handle:"Maxkeiser"},{name:" Stacy Herbert",profile_picture:"https://pbs.twimg.com/profile_images/1546484196750905346/5WYPz-bc_400x400.jpg",ref_id:"4b6f90a8-8e0b-4f51-8995-431a30cf87f4",twitter_handle:"stacyherbert"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/afa24463-19f7-4875-b6f4-b261d1d6c648.jpg",keyword:!0,link:"https://www.buzzsprout.com/1263314/5617321-orange-pill-op7-bitcoin-is-love.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"5216f100-c7ac-4b62-91d8-e394f5a0d531",show_title:"Orange Pill Podcast",text:"kind of back to the 70s when I grew up here. But the crime is worse now. So it's a reflection of just complete lawlessness throughout. The police, obviously, have been defunded. So even if you wanted to, you know, the politicians said, defund the police if you don't defund the police. So they've taken away, what, half a billion dollars from their budget. And so the police aren't motivated to do anything. So the crime has skyrocketed here in Manhattan. It's very dangerous to walk around here. Is this a Larry David kind of is really dangerous. Oh, my God. Because I remember a little bit of the I'm sure Max remembers the 3000 murdered a year. Well, Mitch, you're saying that the streets are empty and I saw the videos and it looks really eerie, for sure. Only very occasionally are the streets that empty, so that's freaky. That's very freaky to have that day after day. So the crime where's the crime coming from? I've read some stories about it. So you have a lot more burglaries, I guess now. So people in the Upper East Side are complaining. So there's home invasions, there's burglaries. Is there a lot of crime with guns and knives, or is it mostly burglaries and muggings? Well, I think I think you have the whole gambit that you run. I mean, the murder rate is up close to 300%. Look, I was walking down the street and I was accosted. People tried to take my money. So I've been in the city my entire life when I was little, and I went in the wrong neighborhood. Not little, but younger. Still. Spiked the kids. Oh, my God. Yeah. I mean, I used to get beat up regularly, so I can tell when something bad is about to happen and when there are four guys that ask you for money and there's two in front of you and two behind you in the middle of the day in Midtown, there's nobody around. Something bad is going to happen. All right, so you're getting mugs, basically. There's a lot of muggings. You could get mugged any day now. Broad daylight. That's the new normal. It's the new normal. But I ran into the middle of the street because I'd rather take my chances of getting hit by a car or if one of them had a weapon or getting bashed in the skull. So I didn't get hit by a car, but a couple of cars jammed the brakes on, and the guys didn't chase me into the road, so I. Just took off meeting here on orange pill. One pill makes you smaller, and one pill makes you large. So you used to be a small person back in the walking around. Maybe that's why. Or maybe you're small now, and it feels like, you know how when you're tiny, everything feels bigger, but maybe the problem feels bigger because to me it seems like when I go to New York and I haven't been there in six months, but that it feels very sort of Disney compared to how it used to be. There was a kind of niceness about all the freaks and crazy people in New York City in the it's kind of lost that touch and maybe you need some more body slow. I mean, I remember Max's face like he hadn't been back to New York City in 1520 years and then seeing some people jet ski down the East River, like, how many corpses there's a. Lot of dead bodies in there. Why would you have a jet ski? Yeah, it's nuts now, though. But look, the police told me not to go out. I've got friends who work for the city, and they said, don't go out here at night. And I said, okay, great. But 11:00 at night four nights ago. I needed some ice cream bad. I was having an ice cream emergency. So what does one do? You walk to, of course, the CVS or the Dwayne Reid or whatever it is because they're open 24 hours and they sell ice cream. I walked in and the ice cream cabinet had locks across it. Have you ever gone in so far? And it said, Please ring the bell? I hit the bell and some guy comes like five minutes later and I said, You've got to be kidding me. You're locking up your ice cream? Are things that bad? He goes, oh, yes, they steal the ice cream regularly. They come and clean it out. I said, but isn't there anybody that sees it happening? He goes, no, we don't see it. And I said to him, I said, but the beer and the wine doesn't seem to be locked up. Wouldn't they steal that first? He goes, no, they steal the ice cream. I don't get it. That is definitely old school, where they had the plexiglass everywhere, at the bodega or at the grocery store. This was before you had big change like CVS coming in there. And of course, taxi drivers put up that plexiglass during the because of all the muggings that were going on. The subway system. We remember in the 70s as being all graffiti, all dilapidated crimes, boo, boxes. Have you been down the subway at all? Has it gone back to this state? I did try to take the subway during the day because I had a meeting down on Wall Street and it was empty. I took it and there was nobody on it. So it was fairly safe, fairly quick and painless, but nobody was on it. No graffiti going back to the 1970s. You know Tompkins Square Park in the East Village? It became an encampment. People were living there for months on end, became a nogo zone for police, and it was a drug open drug bazaar. Have we gotten to that stage? I don't think there's anybody here to participate in that. I think that if you look around on the street, it's like filled with homeless people and the people Bill de Blasio decided to let out of the prisons. So, I mean, that's the problem. I think he's let thousands of people out because of COVID, so coughing around, or they're out on the streets looking for somebody to rip off because they're convicted felons now that have been given a chance to come in and repopulate the city. That's why most of the people who live in Manhattan have left. I mean, most of the people who are here are gone. I went into my dry cleaner and he told me that the business is down 70% 70%. He goes, this is bad. And if you look, a lot of the shops are closed and they're never coming back. So if you think about that little video of Grand Central that I sent you and all the new buildings that have gone up, the real estate loans that are astronomic, there's so much space. They better get those printing presses on high here, I'm telling you. We kind of lost you a few times there, but I think everybody kind of gets the gist of it. But before we wrap this up, Mitch, I want to ask you one thing, of course, that we saw in the, as Max mentioned, Taxi Driver, the famous film, and the Times Square was the Deuce that was like the home of open air prostitution and drug dealing and all sorts of stuff like that. But we also had one thing we're missing in our economy these days, is the serial killer. I think most serial killers now, they used to be like in their thirty s and forty s. Most of them do school shootings and mass shootings at 20. Now, I think those same guys might have, you know, become serial killers back in the day. Do you think we might see the return of the serial killer to Manhattan? Because that's missing and we lost him. Well, it says my Internet is unstable. Did you get me back? You have me? Yeah, I see you. You're there? Oh, no, it's very unstable. You're a very stable genius, though. Mitch, what do you think about the serial killer missing from Manhattan? Are they going to return? I think that they are, but I think they've been reincarnated. I think there were 86 people arrested in Times Square last weekend with their peaceful protests. I guess that turned not so peaceful. So you're saying that serial killers have now become peaceful protesters? They've played antifa. Oh, my God. What about the squeegee man? Back in the 70s, everywhere you go, there's guys with squeegees who do your windshield for a dollar. Have you seen that come back yet? No, I haven't seen the squeegee men come back yet because I think people are too afraid with covet to open their windows. I mean, everybody here. This is the other thing here, petrified. And they've become a bunch of mask Nazis. It's like you have a mask on. What? You know, and they'll start screaming in the streets. If they catch people with no mask on, it's like, oh, my God, this is like the end of the world. Even if you're drinking some substance while walking down the street, you must have a mask on. So they got to figure out how to make the masks more permeable. Well, Mitch, I'm not totally convinced that you're not an alternative universe. Larry David, who stayed in New York and didn't go to Beverly Hills, there's a similarity between the two of you. I can imagine Larry David also getting in trouble with the mask Nazis, as you say. There you go. Well, I hope not. And look, I hope the city turns around but I don't see it happening, especially not with Mayor de Blasio in office. I mean, everybody's complaining about him. I don't think he's got one ally left in New York. I think he's alienated everybody. But I don't know if that's his plan, but I think he got to give New York City miss from now. On until I saw a statistic, something like 15,000 empty apartments. Is that number going to go up? Absolutely. There's plenty of stock out there that's empty. And who wants to rent a two bedroom apartment for $9,000 that you're going to have all the creature comforts and be able to have your meetings on Zoom. And no business is really transacted here. So all the apartments are pretty much cleared out. So I think they're going to have a problem, especially with the massive amount of new builds that they put up here that I've been railing about for years. There's not enough revenues to support that. And the tax revenues in the city have absolutely collapsed and they've cratered. So I don't know. We're going to have to have an economic reset or the planet Ponzi Ponzi scheme has finally exploded. But we're surviving on the fumes of Jerome Powell's quantitative easing. Infinity. But remember, you can never, ever Ponzi. Scheme, and that's a good place to end. And of course, do not worry about Manhattan real estate, because in the 70s, when they went bankrupt, not only did Donald Trump come to the rescue, because the federal government said what was the famous thing they said to Ford, said to Manhattan, shop dead. Well, don't worry, jerome Powell's got your back. And he's going to be buying up all those apartments in Manhattan and it's going to be fine because you can't taper a Ponzi. You can't taper a ponzi. Come on, dance. Boats on a Ponzi scheme. Everybody's getting ready. The boat's floating on Powell's ocean of money and we're all wearing Lays and all you can eat buffet at the FIA Ponzi scheme. Mitch yeah, all you can eat at the Warren Buffet. Yeah. Well, thanks a lot for joining us on Orangeville. Thanks for having me, guys. And be well. And I'll see you from London next time. Yeah, right. That'll ever happen? Is that the Curb Your Enthusiasm team music? It sounds like Barnum and Bailey circus on track. Oh, I don't know. Well, I don't know why, but every time we meet Mitch or whatever it is, say we go to dinner with him in Manhattan, it's like going to dinner with Larry David. Like chaos ensues. Right. Because there's always something that's wrong. Yeah. It's totally chaotic. Every time you're with them, suddenly the whole place is erupted in mad, chaotic scenes, for sure. Well, actually, I've got a New York City headline, and it does factor into this video, this viral video that we saw you of Max and Stacey, the twinning couple, responding and reacting to Jerome Powell's speech this past week. Well, there's the whole money printer go. The fact is you can't taper ponzi. But what's happened over the past few weeks and months is Jerome Powell has been trying to psych everybody out. Right? So in the spring, like April, May, they said they were going to buy all these junk bonds. And what happened? Junk bonds went soared, right? Like people went ballistic by piling in ordinary Robin Hoodters trying to buy junk bonds because they thought they were going to be like the hedge funds and frontrun the Fed. But no real hedge funds or private equity who have a private line to Jerome Powell did it because they knew Jerome Powell was going to step away from the market. And he did. But also, we see that the heart of the financial center of America, when they're just being sprayed with money and no real economic activity, we see just a total collapse happening in the real estate markets in America. And that's going to be, I guarantee you, within six to nine months, the taxpayer is going to start bailing out all of these REITs. This chart shows the number of turnstile entries, seated dining reservations, and how a popular New York City REIT is performing is, as far as I can tell, a darn good proxy of where New York City is heading. So we could just be mocking our friend Mitch Ferstein, who might, after he sees our reaction, like, not be our friend anymore. But the fact is he could be right? Because this is a collapse in all those, like, no activity on the New York subway, no activity at the restaurants, and the REITs are collapsing. This confirms what Mitch was reporting on his man on the street journalism citizen journalist. Mitch, this confirms what he was saying. Turnstyle entries. Right. This is a REIT. Right? Now, am I looking at this? Yeah, three lines there, and it's REIT turn style entries and food. You know, people sitting down for reservations at restaurants. Right. The ten day moving average. So it's up off the bottom, but it's still kind of scuttling around the bottom there so you can't sustain the economy. There's no V shape there. There's no V shape. It's an l. It's an L shape. And it's kind of an L heading, like an L heading slightly with a positive angular bias. But it's more L than anything else, which an L is for losing. Well, yeah, and part of the problem is you have the pandemic and the shutdown, which is restricting movement of humans around the earth. But you have things like this story out this past week with Finsen leaks, and New York City is one of the prime locations to launder your money. Right? So now Finn Send has to pretend to actually look at these SARS. What are the suspicious activity reports that they have to file? All bankers do it and to avoid any them getting fines or in trouble. So what. They do is they flood, like with all this paper money all over the place. They flood the Finsen, which is part of the treasury. The regulator is looking at money laundering. They flood them with these SARS. So they're looking at these suspicious activity reports and there's like tens of millions sent to the US treasury. And of course, what do they do? They've flooded with all of this money, these paper like reports, and nobody looks at them. It's just this vast, you know, kascis bureaucracy, because they just the banks just flood them like $10,000. That number was set, by the way, back in the 80s, so it's not that much money. And by the way, money launderers know you're doing that, right? So they instead buy Manhattan real estate or something like that. So we've had this situation now where the treasury and the regulators are overloaded with these pointless reports that just financially survey ordinary citizens and small business people and suppress commerce. Like they raise the cost of any commerce, right. It's more bureaucracy. Right. So bureaucracy gets in the way of commerce and it doesn't help anybody really stop the money laundering. Well, according to the Fence end report, no, the people who were now caught laundering and terrorist funding and the trillions, that didn't stop them whatsoever. Yeah. Well. Partly because what happens is if you have $5 billion that you've looted from an Eastern European nation. Right. What happens you go to your bank. One of these big major banks who. By the way. Helped write the money laundering laws so their lawyers can tell you exactly. For a fee of the 5 billion. We'll take a billion of your 5 billion and we'll launder it for you. And that's like a perfectly fine vig to pay, right? Anybody who wants to steal 5 billion, they're happy to give a billion of it over to somebody if they get away with 4 billion. These banks wrote the laws and they know exactly what they left out for their own clients, right? It's regulatory capture and it's gaming of the system. And there's a lot of humans involved. As I've explained on Wall Street before, the people who are responsible for regulation in the various offices are open to bribes. And that's true in every single layer of the financial stack that governs the American economy. ",timestamp:"00:16:08-00:34:28",topics:["Larry David"],type:"podcast",weight:5.601966619491577},{boost:0,date:1647061200,description:"[[Bitcoin Mining Incentives]]",episode_title:"WHY ARE WE BULLISH Kal Kassa Pierre Corbin Chris Smith Ben Gagnon ep243",guests:[{name:"Chris Smith",profile_picture:"https://pbs.twimg.com/profile_images/1248417464825724928/BjsozM7k_400x400.jpg",ref_id:"488a0f68-f24b-4d0b-9835-4b38a59f149e",twitter_handle:"chrissmithonair"},{name:"Ben Gagnon",profile_picture:"",ref_id:"d86128cb-056a-4233-bd95-cda98867f61c",twitter_handle:""},{name:"Pierre Corbin",profile_picture:"",ref_id:"a0a46e2e-1b24-4ce5-b34c-ca322067930a",twitter_handle:""},{name:"Kal Kassa",profile_picture:"https://pbs.twimg.com/profile_images/1515885093893681156/cpZcX_2q_400x400.jpg",ref_id:"5cf2cf3e-5cde-4426-b71f-f357195d40be",twitter_handle:"KalKassa"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/bbf0a536-990b-49b4-a9c3-a2a40fa38f88.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/48924119/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-2-12%2F253272604-44100-2-dac52f14aaffa.mp3",node_type:"clip",pub_key:"",ref_id:"f5449a66-a156-4b0a-abeb-6ff5e28434ac",show_title:"BTC Sessions",text:"sure. So what I find very interesting about mining and house developing is just the incentives that are there for miners. Right. So it incentivizes the whole energy market to just become more green. Right. So it will put big miners at the center of this energy shift that governments have been supposedly pushing for years and also put them down the road at the center of the money creation. Right. Because we, of course, believe in a world where Bitcoin will be in the middle. And that's, in fact, maybe a question to you, Ben, is it already happening and to what point or when do you think could happen? The shift of rather than miners looking for the cheap energy and contacting energy producers, turning to energy producers, contacting miners in order to stabilize the grid and be able to leverage this cheaper energy themselves. Is there already this shift happening? Is bid farms being contacted already, or when do you see this really growing? Because I think this is when the hash rates will potentially increase even more. Right. Once these big players themselves get into this. Yeah, it's a great point. The vertical integration with the energy industry is really key. If you're thinking long term about Bitcoin mining economics and reward having every four years, obviously, unless the price continues to outpace the network by a considerable amount, you're going to have compressed margins. Right. And margins that get continuously smaller over time. So you're going to need cheaper and cheaper sources of power. And that can only really come from monetizing that energy that nobody else is using. So the vertical integration is here. We've been curtailing at some of our farms in Quebec since I think 2018, maybe even 2017. And at the beginning of this year, the program was so successful over the past couple of years, it was implemented across the entire province at every single mine. Texas is doing the same things. They have all sorts of curtailment programs for Bitcoin miners. And so it's really starting to enter into the mainstream space. You'd be surprised how many oil and gas companies and energy companies, power plant companies are doing their own small mining projects and pilot projects. These are massive companies. They don't need to press release something so small. They can do this under the radar. They can get comfortable with it. And I think what they're all learning or have already learned is that Bitcoin mining should be seen as like a buyer of energy or a buyer of last resort for your energy. And so energy is very interesting market energy is very easily stored, but electricity is not. And so once you've converted it into electricity, it's the flow of electrons. You can't really put that Genie back in the bottle. So cost effectively. And Bitcoin mining is a way to maximize utility and get all that full financial value out of it, which is a boon for everybody. It will reduce our costs, it will increase their profitability. It will incentivize more production, more development, more power generation, which should lead to increasing levels of human flourishing all over the world. Every time there's increases in power development and energy utilization, you have huge increases in human flourishing. I think this is what Bitcoin mining is really incentivizing. That's awesome. I wanted to share ",timestamp:"01:04:37-01:08:18",topics:["bitcoin mining incentives"],type:"podcast",weight:5.523631239085138},{boost:0,date:1589889600,description:"Small business and the Fresh Start Commission",episode_title:"How to Address Regulations Suspended During the COVID-19 Crisis",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/da1bbdc0-4d0a-43ed-8345-ee43102db244.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/mercatuspolicydownload/MPD-038-PPIMCWebinar-v1.mp3?dest-id=655459",node_type:"clip",pub_key:"",ref_id:"55e562c3-41d2-4bfb-94d5-26ac7098ba2f",show_title:"Mercatus Policy Download",text:"All right, very good. Look, another question here. As we all know, small businesses have likely suffered disproportionately during this public health crisis. Are there specific actions governments could take through this commission to help them recover faster. Elliot, I'm going to send that to you first. Yeah. One that Michael and I have been discussing and talking about is business licensing. For instance, if a business's license expired during this coronavirus pandemic during the month that we've all been working from home, do they have to re register? Do they have to re up? Should governments deem them granted for a certain time after to allow them enough time to re register or lift the burden to allow them to reopen faster? Another one is digitizing government. A lot of how you create a business and how you file your taxes is still largely done by paper. One area where governments can improve that is by digitizing government moving that online to catch up in the digital age. All right, excellent. Does anybody else want to comment on that in the small businesses? But the whole point of this is actually to help small businesses by making sure that, as she states, localities and the federal government have the right attitude going forward, that they try to encourage the rebound and encourage the growth without actually getting in the way. Okay, very good. Our next question. Can I just add on one thing? I'm not sure I would quite agree that the whole point is to help small businesses. I think that's the effect, though. I think regulation inadvertently disproportionately harm small businesses. So to whatever degree they can be cut back when unnecessary, that's going to similarly disproportionately help small businesses. And you could target that. There's no reason not to think that a commission could focus on regulations that are harming small businesses more. For example, regulations that came out of DoddFrank. I think the intent of DoddFrank was to target larger financial operators, financial service providers, but a lot of smaller banks, a lot of smaller businesses got caught up as sort of collateral damage. ",timestamp:"00:20:54-00:23:11",topics:["small business","Fresh Start Commission"],type:"podcast",weight:5.479238152503967},{boost:0,date:null,description:"How to recover lost Bitcoin wallet",episode_title:"Café ₿: #Bitcoin Beginner Q&A",guests:[{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Stephan Livera",profile_picture:"https://pbs.twimg.com/profile_images/1362551718110580740/v-W5Q2uo_400x400.jpg",ref_id:"72f57157-c96e-4466-8bf1-290cfe1f8a0b",twitter_handle:"stephanlivera"},{name:"Thomas J Lake",profile_picture:"https://pbs.twimg.com/profile_images/1529168328534769670/5cl2Y_k-_400x400.jpg",ref_id:"21541a47-0601-447c-99c2-312d1a63c19f",twitter_handle:"thomaslake"},{name:"Goodguy",profile_picture:"https://pbs.twimg.com/profile_images/1363216959576285185/unulY4yd_400x400.jpg",ref_id:"0c3fec75-9cc2-4c0f-8dbe-db7fae2b585b",twitter_handle:"goodguybiker"}],hosts:[{name:"Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"49966553-d55b-44c9-94ec-8fee09eee5c2",twitter_handle:"CitizenBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/35b20273-49f2-45ea-a9f4-dc479d86573c/7ae5315f-beb2-41e2-b672-65dd1f102017.mp3",node_type:"clip",pub_key:"",ref_id:"df4ad67d-6316-4762-a7c5-884c162dd8a9",show_title:"Swan.com",text:"very short. Point and then something about this afternoon switch spaces. So you hear the expression programmable money. And someone once said it about bitcoin. Many people said bitcoin is programmable money. And now you hear about central bank digital currencies and you hear programmable money. What's the difference? The difference is bitcoin is money that's programmable by you for your purposes, to the extent that it's programmable CBDC is money that's not programmable by you but is programmable by the government so they can make it disappear from your wallet, they can make it expire, they can make it not able to purchase certain goods. Bitcoin, to the extent that it's programmable for you, is like you can spend it however you want, you can put whatever constraints you want on it being spent. So it's a difference of who's in charge. It makes a really big difference. The other point I want to make is if you can get that afternoon thing with Brady, Sam and Alex, I'm sure it's going to be amazing. They got really awesome topics on there which are going to talk about freedom, I'm sure. So if you can make time for it, do I unfortunately can't, but I'll be listening to the replay. All right, let's keep rolling with the questions we have up here. Chad d Wagner. Good morning. Hey, good morning, everybody. This is kind of a newbie question. I've been working on getting my coins off the exchanges and getting it into some hardware wallets. The question I've been kind of struggling with is, let's say I'm using the Moon wallet and for some reason Moon. Goes out of business or is taken. Off the app store, something like that. So am I able to take my. Keys and apply those to a different. App or a different wallet and recover. Those funds or how does that work? Yes. So the short answer is moon wallet. Even if Moon were to disappear tomorrow, there is a recovery tool, and that's publicly available on their GitHub. Now, Moon is a special case, just to be clear. So for listeners out there, most bitcoin wallets are operating on what's known as a typical seed word, the recovery phrase. Twelve or 24 words basis. That's what most wallets are working on. Moon is a special case because they use a descriptor wallet. Basically, it's a bit of a technical term, but they use a set up where it requires a little bit of a special way to recover if Moon were to go down. So what you would need is your written down, back up, and also the recovery kit. So in the middle button on the bottom on your Moon wallet, you'll see a tab called security. You click that in that backup, you'll see there's a three step process. The first step is the username and password, but you don't have to do that in this case, we're talking about if Moon wallet disappeared. And so that second and third step, that second step is you're writing down kind of like a passcode for a descriptor. And then that third piece is the recovery kit PDF. You would have to combine those two in order to be able to recover your coins. Now, Moon wallet have a recovery tool that you can run. And what you would do is you would create another wallet, generate a receive address, then run this Moon Wallet recovery process and input as part of that, the address that you want to receive all of your Moon Wallet coins into. I know it sounds a little bit complicated, but what we're talking about here is if Moon wallet were to totally disappear, the other case is if, let's say, you just lost this phone and you needed to recover it into another phone, then it's a simpler process, you could just basically use Moon and import an existing wallet. Are you following me there? Absolutely, yes. That would go for any of the apps or hardware wallets. As long as we have our keys, we can recover it somehow. Correct? But yeah, just note that there's a difference in Moon and most of the typical other wallets. That's just the key differences for you to understand. So, Chad, one of the important things I think to understand here is that when you're creating a wallet on a phone, you're using a persistently connected Internet device. So I would always consider apps that you make on a desktop, on a website, in a browser, or on a phone, what we call a hot wallet. And there's all sorts of terms we hear industry use warm wallets and secure wallets and all sorts of funny things. But if it's made on a website, in a plugin, in a browser, on your desktop, or in a phone, it's a hot wallet. And so what that means is there's potential that your private keys, when you're creating those 24 words, that information may have been accessed by no click malware that we know now exists, like Pegasus from the NSO group and all these other types of persistent issues, zero days that exist in a lot of the browsers right now. These attack surfaces that people are using to take that private information from people's plugins. So if you're looking to store your bitcoin for a long period of time, I would always encourage people to learn about and use something like a nano ledger or a cold card. These are physical devices that have something called a secure enclave. They have a special chip that does that 24 word creation offline and then hashes that information and sends it back out to the computer. So these are a superior way of doing this. We used to have to sync the bitcoin, blockchain up, and then disconnect from the Internet and create the wallets. And we had hundreds of different addresses. The benefit of using that stick is you can make hundreds of different bitcoin addresses and they can all be backed up by those same 24 words in a really easy to use, standardized way that you could put in any other hardware wallet. And lastly, I would encourage people not to digitize their 24 words, their twelve words. Anytime you can keep those things in written format, you can etch them into things like metal for redundancy from floods and fire. I think that's a much safer way. I would never store those things in a cloud or take photos of those things or print those things off again, because that takes a cold wallet created in an offline situation and it introduces online or potentially online devices to it. So even if your printer is not connected to the WiFi network, right, I would be wary of using that due to exploits and things like that. So writing these things down by hand and keeping them in multiple safe, redundant places I think is really important too. The Moon Wallet is great as a mobile wallet, like for taking money around, but I wouldn't leave money in it as a store value. Yes. Thank you. I've been experimenting with the Sparrow on. The computer side and then I got the Cold card. So I've just been playing around with everything and really enjoying it. Very cool. Yeah, that's great. So definitely once you're ready, get the Cold card set up. And what you can do is just as an example, test it out with a small amount and then practice, like as an example, spin up your Cold card, initialize it, and then if you're able to do the Micro SD card with Sparrow Wallet or Specter, then that's great. If not, if you're a beginner, just plug it in and you can use it just like that. And then you can practice sending a small amount of Bitcoin and you can even practice like, wiping the seed out of the Cold card and then recovering your twelve or 24 words by using the import existing feature on your Cold card. And so that can sort of help you prove it to yourself that, wow. Yes. With these twelve or 24 words, I can actually recover my coins. But if you want to do that, just obviously practice with a small amount, like $20, $50, something small. And then see, prove it to yourself in that way. Oh, wow. These same twelve words, it deterministically creates that same ",timestamp:"01:12:50-01:20:37",topics:["Programmable money","CBDC","Moonwallet","Bitcoin recovery","bitcoin"],type:"twitter_space",weight:5.435932159423828},{boost:0,date:1588968217,description:"Small intestinal bacterial overgrowth (SIBO)",episode_title:"Q&A: Kim & Dr Ken Berry",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/a8e3517b-b44d-4270-adaa-57587896b1e7.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/ketolifesupport/ketolifesupport-0033-q-and-a-with-dr-b_tc.mp3?dest-id=2479037",node_type:"clip",pub_key:"032d7609ff3f4a5232e4d60967971e23bc671dfb68020845a59bab5dc1f3b93b87",ref_id:"2bf2f8fe-9d2f-4d41-838d-787f2ca9734e",show_title:"Keto Life Support",text:"SIBO, small intestinal bacterial overgrowth. What do you think about this? Some people make a huge deal out of this and they want you to buy all kinds of supplements and prebiotic fiber. Honestly, in my experience, eating a real whole food ketogenic diet, you repopulate your small intestine with the bacteria that should be there, because even the name of it implies that there shouldn't be any bacteria in your small intestine, which is absolutely not true whatsoever. But what you do want is you want very docile, tame, nice bacteria to be in your small bowel and eating the proper human diet, whether it's carnivore or fatty meat, heavy keto is going to repopulate your entire body, your skin, under your arms, your growing, all your spots that might have an odor or have gas or have bloating. All that stuff is just going to get better when you stop feeding and promoting the bad bacteria. My understanding is SIBO is when because your lower intestine is supposed to have a lot more bacteria, a lot more aggressive bacteria, but SIBO is when it switches it up and somehow the angry lower intestinal bacteria get your small intestine and vice versa. Is that right? That's the theory, but I'm not sure if I agree with that 100%. I don't know that that's ever been proven. It's very hard to get a scope into the latter part of the small intestine. We can get an EGD down through the stomach into the first part of the duodenum, but you have to swallow the camera capsule to photograph the rest of the small intestine. But you can't get a scope there to take a biopsy. The only way to get a biopsy of like, your jazzunum or your ilium is to do surgery. There's literally no other way to do it yet. And so even if you do a colonoscopy, you can only go to the sea, come and see the ileocecal valve. You can't get into the ilium any length at all. So when you start talking definitively about the bacteria in the small intestine, my first question would be, how do you know what bacteria is there? Because if you haven't had abdominal surgery, then there's no way to know what bacteria is in your small intestine. So one thing that just my common sense nondoctor self seems to know, though, is a lot of people who identify with having SIBO, they eat fermentable foods and they suddenly look nine months pregnant. Yes, that bloating, I think probably is the most common complaint of SIBO and whether that's coming from inflammation or whether that's coming from and this would technically be an infection, because you're saying that bacteria from the large colon is invading the small colon and that would technically be an infection, whether it's either one keto or carnivore is going to fix that. And you know, Kim, we have multiple friends who are carnivores who have actually had their gut bacteria or their colon bacteria checked and they have a beautiful distribution of the proper bacteria in their colon. And therefore, if you have good bacteria in your colon, there's no bad bacteria going to get to your small bag. Right? So people are asking, how long will this take to resolve? And the good news is, carnivore are more of a lifestyle, so you have plenty of time, but I think they would like to discomfort sooner. So, do you have any tips? Yeah, so my experience in the clinic has been six to eight weeks of fatty meat, heavy keto or carnivore and you're going to be pretty much symptom free. And you got to remember, and so for some very few people, it's coffee. Coffee is what's causing the inflammation in the gut. Tea can do it as well. And so when I say beef, butter, eggs and bacon and water, that's what I mean, because if you do that and you're still drinking coffee and tea, then you don't know, especially if your symptoms get no better, then don't come at me and say, hey, I tried your diet and it didn't work because you're still drinking coffee and tea. And I love coffee and tea. I know that would suck. But at the same time, it also sucks to have these conditions we're talking about. And so each and every one of us gets to decide, do I want to do that or not. And so I'm just saying this is a viable logical option to try. And if you don't want to do it, then eat whatever and suffer the consequences. But if I have one of these conditions, I would think that I would do that. Now, one thing I have noticed is there do seem to be of the issues that people might have. Some people do have a sensitivity to eggs or especially egg whites. Do you think it might be worthwhile. To leave those also very rare. Not really. It's very rare. And so if you've done three to six weeks of the beef, butter, eggs and bacon and you're still having problems, then I would say let's leave out the egg whites and just eat the yolks and see what that does. But yeah, that would be about the only thing on that diet that could potentially cause a problem. And I'll tell you, Kim, I would predict if you had removed all those foods, even if you were in the past sensitive to egg whites, you would no longer be sensitive to the egg whites. So many people think that these food sensitivities are permanent and they're not permanent. They're not necessarily permanent. When your immune system calms down and stops being pissed off at the world, it tends to stop reacting to things that it used to react to. For example, back when I was eating crap, if I got within 100 yards of ragweed or cat dander, I would be this for two weeks, right? And now I could lay in a field of ragweed and pet dirty cats all day long and I might sneeze one time. So what happened there? Why am I no longer allergic to these things that literally used to put me in the bed? I had such an allergic reaction, my eyes would swell up. It's because my immune system is now able to discern me from nonme. And I think so many times when people are allergic to tree nuts, when they're allergic to things that are like completely ancestral, that's usually what's going on. And once they get all the inflammatory crap out of their diet, their immune system over the course of a month to three months will calm down and they can reintroduce those foods and they no longer are troubled with that. Got it. Someone asked ",timestamp:"00:19:40-00:26:23",topics:["SIBO","small intestine"],type:"podcast",weight:5.423373699188232},{boost:0,date:0,description:"Thoughts on the over all chapter and some favorite quotes",episode_title:"The Sovereign Individual - The End of Egalitarian Economics",guests:[{name:"chriskapilla",profile_picture:"https://pbs.twimg.com/profile_images/1362817539135463427/2AXUeFLV_400x400.jpg",ref_id:"9d495790-93f2-4d6c-b770-b2885f66859d",twitter_handle:"chriskapilla"},{name:"remydenton",profile_picture:"",ref_id:"5c5beb0c-c214-4f23-b79a-e71bf9368f2d",twitter_handle:""},{name:"JackRonaldi",profile_picture:"https://pbs.twimg.com/profile_images/1583261828628496384/IazkwYjk_400x400.jpg",ref_id:"01621476-f040-49dd-8160-4035228faf78",twitter_handle:"JackRonaldi"},{name:"AlistairZ80Aftw",profile_picture:"https://pbs.twimg.com/profile_images/1362882489895841795/gH2zix3l_400x400.jpg",ref_id:"3dcba197-47ca-40c0-857d-73cec4325801",twitter_handle:"AlistairZ80Aftw"},{name:"mattonbtc",profile_picture:"https://pbs.twimg.com/profile_images/1549459254280687618/jzdHJou3_400x400.jpg",ref_id:"998167d3-e036-4ef1-9a05-4f062903f0c5",twitter_handle:"mattonbtc"},{name:"wai_wairua",profile_picture:"https://pbs.twimg.com/profile_images/1536570699761848320/T10Owc60_400x400.jpg",ref_id:"c4d4ff36-73fa-4471-91ba-de0f99a49e99",twitter_handle:"wai_wairua"},{name:"UltraSolomon",profile_picture:"https://pbs.twimg.com/profile_images/1468332451055427601/YVgUuUHc_400x400.jpg",ref_id:"6371d519-cc98-4bf4-9f82-be17b1ea532a",twitter_handle:"UltraSolomon"}],hosts:[{name:"BTC_Venetians",profile_picture:"https://pbs.twimg.com/profile_images/1557482467539521537/Kel-eVww_400x400.jpg",ref_id:"a6313ca9-3869-4477-88ad-30172957edcf",twitter_handle:"BTC_Venetians"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/75ec86b1-cb6d-467f-a66e-5e642e5c126a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c8cc9ec1-061d-4f53-a24b-ee43a56c7715/e650057e-2369-4e75-8119-4975a1fc4cac.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"946f1308-fffb-4aeb-89b2-68b043873ae2",show_title:"Bitcoin Venetians Book Club",text:"right, let's kick off with the first question. What did you think of the chapter overall and any favorite quotes? I think my first one first favorite quote was headline in there. The higher returns in poor areas on, well, 242 somewhere around there. Bitcoin City makes me think of that. El Salvador makes me think of that. This isn't a quote, but just as an idea. I love their little section about how Hollywood production companies work, being a template for future companies. That really made it more concrete what they were talking about. Yeah, I thought that was interesting, especially with the benefit of hindsight how we've seen simultaneously, like, megacorporations arise, but also the Internet has enabled the scale of business to be really small. All over Twitter, I see like Solopreneurs that are bringing in like tens of thousands, if not hundreds of thousands per month. And like they're just using all these different, like, lowtext tax all over the Internet to do their thing and by one person can just like, make a decent living that way. But then there's also a lot of other people that are just kind of stuck as wage slaves or whatever in the big corporations. Another quote I've got there is the genuine upsurgeon opportunity is almost inevitably accompanied by at least a brief surgeon inequality. And that seems to speak to people here. Dr. McCall would like that one, I think, but I don't see her here also regulations having a positive rather than negative market value. Or if Peter McCormack was here, he'd probably agree with that too. Well, I think that's quite interesting because it talks about sort of a marketplace for regulation so you can actually find out in an experimental sense which regulations are important for a good functioning society rather than just being as a means of extraction and coercion the regulations that you opt in if you're far more mobile globally. I actually saw an interesting post about this recently and it was kind of along the ideas of having a sunset clause for new laws saying that a new law should perhaps have a start and an end date, but also saying that similar to a scientific hypothesis or theory, that you make a new law and it says it's going to achieve XYZ and you measure against that and within a specific three year time frame or whatever is necessary. If it hasn't achieved that, then the law is revoked. And I thought that would be a very interesting way to do things. It's quite competitive if a few different countries were doing that against each other. Yeah, I love that. That's kind of like how product management works and startups. You make sure you have metrics that you're collecting to check what's the response to whatever you're trying to do and if the response is not what you want or what do you expect, you kind of pivot. You try something else. Which I think would be great if we can bring something like that to politics and lawmaking, you can just imagine. Sorry, go ahead. Sure. I was just going to say one of the really interesting parts of this chapter is talking about how there will be competition between jurisdictions in a way that there's not or there hasn't been previously and that that alone will sort of create this incentive to be more efficient in whatever format that takes. So jurisdictions can operate a little bit more like companies do today and less like just total monopolists as they are currently. Here is one quote that I did like. In the post industrial period jobs will be tasked to do, not something you have. Could you read that one more time? Sorry, yes. In the post industrial period, jobs will be tasks that you do, not something that you have. Do you think that's similar to how you have like bounties for coders? Do you think that's what the quote is getting at? I think that's exactly it, yes. I took from that that people won't have careers. Well, it depends on how you define career. I guess if a career was a succession of tasks that were related then it could still be a career but they wouldn't have permanent lifetime jobs. Yes, a career was a succession of tasks for a single wall employer or within the same part of an industry. Whereas the succession of tasks sounded a lot more like piece work or gig work in the modern part. Yeah, I think gig work is probably close. Yeah, I think we'd probably find out where it makes sense for something to be a salaried position where the benefits from that obviously they make the relationships, they have all that continuous local knowledge where that makes sense from an economic perspective and where actually it's just labor laws which are making that the case at the moment. And actually it would be far more efficient to farm it out on a piecemeal basis. I think that's an important point. I think the book maybe to keep it shorter doesn't go into the opposing argument as much, but I think anything where you're facing with people, it's probably useful to have kind of the same person in the role. But also like even I'm not a coder, but I would imagine that having the same person work on the same code base would be useful over a long period of time because they kind of know what's going on rather than having multiple people kind of going in there and doing piecework. As somebody who is a coder, I can completely agree with that. There's kind of this fallacy, I think that you can just replace one programmer with another when in reality it's not about the writing of the code, it's about the understanding of what's going on in the code which takes a lot of time to acquire and also kind of this ownership over what the code does. So, long story short, I agree that there are multiple industries and types of jobs where replacing people just willy nilly is probably not the best idea. I think I'll little bit on that with Remy because I'm also a coder. But open source, generally somebody in a corporate environment, it should be the same coder all the time or the same pair because that's where the corporate knowledge resides. But in open source you have so many different people looking at the same set of code, they do become a bit interchangeable and you do end up with documentation about how new people should approach a project. So it depends like most things. Yeah, great point. Did anyone get the sense that I don't know much about the authors, but they seem like they have libertarian tendencies. And it seems like that kind of comes out in the book to me, because some of the stuff that they talk about how the idea and the pursuit of equality as a goal is going to go away in this digital age. And I wonder how much of that is like they've come at that logically and how much of that is what they want because of a certain view of how things should work. A few episodes ago there was one of our number who posted a BBC interview on James Dell Davidson and Reese Mogg. I don't know if you heard that, but it gives you an awful lot of background. Very libertarian tendencies. Very libertarian tendencies. ",timestamp:"00:09:33-00:19:19",topics:["The Sovereign Individual - The End of Egalitarian Economics"],type:"twitter_space",weight:5.396452784538269},{boost:0,date:1636866e3,description:"[[Lightning]] and [[Bitcoin]] Have Actual Use Cases",episode_title:"WHY ARE WE BULLISH JoeyTweets Mario Gibney Bobby Shell Len ep215",guests:[{name:"Bobby Shell",profile_picture:"https://pbs.twimg.com/profile_images/1090426395979890690/uUdaFXo__400x400.jpg",ref_id:"438f8067-3fed-49d2-91d9-5018cb043aac",twitter_handle:"BobbyShell2"},{name:"Len",profile_picture:"",ref_id:"1fc627d9-a446-4e48-b960-ad97fcdbcaa0",twitter_handle:""},{name:"Mario Gibney",profile_picture:"",ref_id:"1a3f05f5-5c4a-455f-b4ec-f682080a5518",twitter_handle:""},{name:"JoeyTweets",profile_picture:"",ref_id:"e6ada141-9c3c-4e1b-b8ab-2389c94f4130",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f3b67780-d9c2-4a20-ab5c-115032a05b3a.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/43334718/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-10-14%2F0bfc842d-3fe7-98e0-1a25-43385ac48a7d.mp3",node_type:"clip",pub_key:"",ref_id:"3242aa43-f999-485b-9c94-8457526d6dbd",show_title:"BTC Sessions",text:"run a Lightning note and I too am hugely bullish on Lightning. I can see the potential in using it for quick and cheap settlements and having somebody like Jack Dorsey also on board too, and implementing it on Twitter. That's a freaking amazing idea where you could tip people for ideas for tweets or whatever. And it just goes to show you that Lightning or Bitcoin itself. There's an actual case, use. It's not just strictly an asset where you park your money. It's also a currency you can use to spend. And Lightning is the way that you could easily spend Bitcoin. One thing that's really interesting to me, too is like, you buy Bitcoin and it appreciates in value. But to us, one Bitcoin is one Bitcoin, right? Like, what if you never actually spend it and you just use it for data transmission? Do you really owe taxes? You didn't buy anything with it. You're just using it as a data tool. I think that's going to become a conversation later, but it's way too premature to really talk about that. How much Bitcoin would you really need to have to utilize that? Right? I don't know. It's tough because I don't know exactly how they're utilizing these rails for this infrastructure that they're building with, like, impervious and a lot of these concepts. So I don't know. I couldn't really comment to that point. But it is one thing, again, from the content creator perspective and to the point about Twitter, it kind of. Sets. Itself in the middle of those intermediaries that were typically taking a cut of any type of revenue that you used to get. In particular, I'm looking at your YouTube that we're on right now, that ad revenue is what keeps a lot of people afloat. And all of a sudden you can introduce revenue sources that are very easy to utilize and kind of almost like bypasses what YouTube is trying to do in taking their massive cut of everything. So I find that to be interesting. They very much try to get you using super chats and stuff like that. But when there's a simple way of like, oh, I can just drop a tip here, and that begins to proliferate through lots of other alternative platforms, at what point do enough people say, well, I'm going to go through this method of this method. At what point do some of the bigger players start saying, Well, I guess we better put this in here because there's a huge demand for it and albeit small at first, we're losing some market share because of that. I don't know how that affects that moving forward. No, it would definitely be groundbreaking in that regards. And it would certainly shake like the YouTube to the world, et cetera, not just to change gears, but there's another application that Lightning would truly thrive in, and it's the world of restaurants right now, a lot of transactions that are done in restaurants are done through Visa, Mastercard, and they take their slice of the pie one, two, three, 4% every time the card is swiped. And from what I understand, restaurants, they have a very thin margin for profit. And if you're able to increase the profit by taking away that one 4% that Mastercard and Visa do, then you can make businesses way more profitable. And it's just simply just implementing Lightning on the current system, it's easier said than done. But once it's able to be implemented in restaurants and you're able to pay for your meals with Lightning, it's going to make profits just shoot through the roof for a lot of these small businesses. Did you see? I think it was Ben Ark. ",timestamp:"00:51:21-00:55:28",topics:["lightning","bitcoin","bitcoin","lightning"],type:"podcast",weight:5.393006804006006},{boost:0,date:1640926800,description:"What Kind of Wallet Am I Going to Use?",episode_title:"WHY ARE WE BULLISH Tone Vays Jaime Garcia Trent Dudenhoeffer KC Hodl ep225",guests:[{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"KC Hodl",profile_picture:"https://pbs.twimg.com/profile_images/1506986051683950592/MMMse9gr_400x400.jpg",ref_id:"b2264dd3-e587-403e-9447-9e99afc1910d",twitter_handle:"kc_hodl"},{name:"Trent Dudenhoeffer",profile_picture:"",ref_id:"3b466176-3bbc-481d-9634-e127a9232404",twitter_handle:""},{name:"Jaime Garcia",profile_picture:"https://pbs.twimg.com/profile_images/953009048642715648/PKaQy5UD_400x400.jpg",ref_id:"f259c6b5-71d6-4c5c-897c-3cfbe80cccc2",twitter_handle:"jaimegarciag"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c8ae0def-c33c-4d17-af4e-31ddaeedaf8a.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/45510131/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-11-31%2Fc821a6ba-7ef1-35ba-b24e-b96e84186843.mp3",node_type:"clip",pub_key:"",ref_id:"d9b2af2b-2bf8-477f-9cde-dd27660ddde7",show_title:"BTC Sessions",text:"am I going to use? Things like that. What are you seeing there? Definitely, yeah. Usually the first thing is which kind of mobile wallet should I use first for a small amount. And now there's so many great options over the last year, especially with the Lightning wallets coming out. Blue wallet, moon, so many great options. Usually people like to play around there, kind of get their comfortability up and then go to an actual hardware wallet of some kind. So, yeah, it's always fun to talk about the benefits and disadvantages of each wallet, whether it be a treasure, a ledger, a cold card, so many different ones. And I think a lot of times people just order kind of whatever's cheapest usually has been kind of what I've noticed and try it out and then kind of figure out what they like and don't like about it. And then when they get ready to go to the next step, they kind of have a little bit of familiarity with the different options. So I've got ",timestamp:"00:16:43-00:17:37",topics:[],type:"podcast",weight:5.371685059434086},{boost:0,date:1640066400,description:"What types of small shift in characteristic can make major changes",episode_title:"Diana Jones: The New Management Model — Guarding Group Relationships",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f2b2a2b2-8869-4256-94b9-a91c91c1ce7e.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/148_e4b_diana-jones.mp3",node_type:"clip",pub_key:"",ref_id:"10cc2a43-918c-477f-a29c-de6fa5ddc79e",show_title:"Economics For Business",text:"That's one of the challenges, I think, with systems thinking that you get confused about causality. Maybe there is no causality, it's just a lot of things interacting together and the outcome emerges. But you do say that small shifts can generate major change. If we've done everything else right, you qualify it. But are these small shifts like reading people better? Is that the kind of small shift that can generate a major change in the system? I do think that there's several things I think becoming more skilled and understanding how groups work. And if you read my book, it's a complete handbook on how groups work for leaders. And the thing when you read any book is to take several things from the book and practice them and then notice the impact and you'll see things rapidly. But the small things are like the shift for leaders to move from being meeting managers where they're focused on their content and like getting on with stuff, to actually being guardians of group development, particularly in the first four minutes. That the second is for probably everyone to shift from being so focused on content to being very mindful of what is the purpose of the interaction or any meeting and what is the outcome you want. So many people just don't know why they're at meetings, they don't know why they're talking about stuff because the purpose and the outcome has just been lost, gone, forgotten. And it's such an opportunity for leaders to tune into if we have this conversation, the dramatic impact out here is going to be A, B and C and that's what we want. So shifting from content to purpose and outcome, which means the conversations shift from explaining and describing stuff to enabling people to participate in bringing expertise and experience from the group. So those are the things I'm talking about. And on my website, under Leadership levers, I've got two complimentary downloads that people can just they don't need to put their email in, they can just take them around the shift for the first four minutes of any meeting if you want to really generate engagement and participation. So those kinds of shifts, and it's mostly leaders shifting away from being focused on their own content and expertise and drawing that out from others. That's the basis of it. It's easy for me to say, but it does require people to give up some things, give up being the know it all expert or knowing when to use it, but not that to be the main orientation. I find when trying to apply systems thinking in business, one of the steps is you've got to discard a lot of things that you used to know, used to do, like hierarchy and command and control and things like that. You can actively discard those in order to be able to get into the new place. ",timestamp:"00:44:48-00:48:09",topics:["small shift"],type:"podcast",weight:5.31725980650619},{boost:0,date:1675274375,description:"The importance of education about taxation and small government ",episode_title:"Is Sound Money the Answer? with George Gammon (WiM268)",guests:[{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"}],hosts:[{name:"Robert Breedlove",profile_picture:"https://pbs.twimg.com/profile_images/1592020087044591616/46enYwAc_400x400.jpg",ref_id:"0ed69c56-241c-4b63-87a5-8f2157fe51a5",twitter_handle:"Breedlove22"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ca3ab815-dc2e-408a-a0c5-8bbe50270a97.jpg",keyword:!0,link:"https://cdn.simplecast.com/audio/2effec98-bec5-4728-ba08-7a86d776e682/episodes/d6e8f010-e2d5-4489-bb8e-9b7446a4795b/audio/0ad4fb89-2eda-4ad7-8432-b6be08c8ce10/default_tc.mp3?aid=rss_feed&feed=MLdpYXYI",node_type:"clip",pub_key:"03a3451db4748e483d2e1ee5d0b3a6872253253b57edf4b084a56952b432a224b3",ref_id:"d8d7f0d9-d40b-4431-8f02-f8bf15823175",show_title:'The "What is Money?" Show',text:"And so then that's what kind of leads me to the conclusion that, wait a minute here. Sound money is definitely desirable, but if we're putting 100% of our energy on this as though that's a panacea, that's a big mistake. And if I have to allocate 100% of my if I've got 24 hours in a day, and so I've got 100% of my mental bandwidth, you know, if I really want to move the needle. As far as our shared objectives, for me, I come to the conclusion that that it it's more beneficial for me to allocate 90% of my time and energy to trying to persuade people that we need small governments, we need low taxation. And then 10% saying that, hey, sound money is definitely beneficial, definitely desirable, as opposed to what a lot of people would do is they allocate 90% of their time and energy saying, well, sound money, sound money, sound money, sound money, sound money. Because we get sound money, then everything else just falls into place. And again, especially when you look at the amount of government spending that we have today just as a result of taxation, just to forget the deficits, forget the deficits just as a result of taxation. I think you've got to come to the conclusion that a society, even with a fixed base layer, if they favor big government, you're going to get big government because people just vote free stuff. And I think that the overriding theme in what I see when I study history is it's just the same thing. It's like this cycle that we can't get out of as human beings where hard times create strong men and strong men create good times, good times create weak men and weak men create hard times. It's just over and over and over and over again. And so I truly believe that right now we're in a period of kind of weak men, if you will, but I think that we now have the internet and we now have a lot of tools that we didn't have before. And I can either sit here and just wave the white flag and say, oh, we're all doomed and we're just going to have to go through this cycle. Fourth, turning, whatever you want to call it, or I can get out there and try to pound the table for small governments with the help of the Internet and allocate as much of my mental bandwidth as I can towards that to try to impact positive change. But that's really my message, you know, is that I think that as a collective group, we're going to be a lot more successful in achieving our objectives if we allocate 90% of our time to persuading people the benefits. Of small government instead of trying to persuade them that sound money is the way to get to that small government type of environment that we're trying to strive for. I think that's kind of we can rip on that. But that's kind of my main message. Yeah, no, that's really well said. And again, to reiterate, we're basically saying we have the same ends in mind. The end, absolutely. Smaller government, less government interference in the market process. In the market process. Lower consumer prices as a result of economic productivity. Yes, exactly. So the more uninhibited the market process is, the more consumer price deflation it will create, right. Through trade, innovation, just trade and innovation basically more high intensity, higher intensity trade, more innovation, gives you lower prices. Government intervention is opposite to that. Right. That's actually interfering with the market process tends to create consumer price inflation. So the end in mind is to minimize government interference in the market process as much as possible. Where we're, I guess, exploring is what's the appropriate allocation of mental energy towards the means to achieve that end, right? Is it all sound money? Is it all advocating for education or persuasion, let's say, in the minds of people about small government, or is it a mix and to ",timestamp:"00:24:27-00:29:24",topics:["Tax education","sound money","small government"],type:"podcast",weight:38.492371921380055},{boost:0,date:1673685e3,description:"What's required to force Genesis into bankruptcy  ",episode_title:"The Chopping Block: Why Gemini Users Are Mad at Genesis and DCG - Ep. 443",guests:[],hosts:[{name:"Tarun Chitra",profile_picture:"https://pbs.twimg.com/profile_images/1587539091444432897/Z6_nmrCB_400x400.jpg",ref_id:"dfad4b23-92ff-4aa1-9aa4-abc1d54cd6d3",twitter_handle:"tarunchitra"},{name:"Haseeb Qureshi",profile_picture:"https://pbs.twimg.com/profile_images/1581025415551889408/thQwG4lb_400x400.jpg",ref_id:"790e4217-dd9f-416f-b9f8-ed596937f5b5",twitter_handle:"hosseeb"},{name:"Tom Schmidt",profile_picture:"https://pbs.twimg.com/profile_images/1563232354277085189/xQL92DR4_400x400.jpg",ref_id:"bc9d3bfd-36b0-4cbc-a491-9370decf4c99",twitter_handle:"tomhschmidt"},{name:"Robert Leshner",profile_picture:"https://pbs.twimg.com/profile_images/1587956987786104833/1SiKVj-s_400x400.jpg",ref_id:"ebaa2166-7982-423d-9f43-add89e7d47f9",twitter_handle:"rleshner"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/7de0d293-8ae3-4362-8500-8f7300f3fe41.jpg",keyword:!0,link:"https://traffic.megaphone.fm/LSHML4726349989.mp3?updated=1673643857",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"a24f0efb-66be-40a2-afa2-bf29f370b10d",show_title:"Unchained",text:"a mutually yeah. You could almost perform like a bribery attack where you're like, hey, if you got if the rest of the creditors don't give us the money, like me and two of my friends who are like small fry creditors are going to go push Genesis into bankruptcy and screw everyone else over. It does seem like an unstable it does seem like an unstable equilibrium. Well, I think the reason why it's more stable than that and this is I'm not, you know, an expert in restructuring law or any of that, but what I think makes it a more stable situation that prevents that is that any resolution has to be done equally amongst the various creditors. So you can't have like three creditors who like threaten them with some ultimatum and say, give us all our money. Back or read oh no, I'm not saying threaten the company, I'm saying threaten the other shareholders. That might be legal. I'm pretty sure that's extortion, but you know, there's maybe some way you can structure it. Yeah, but anything has to hold up, right? ",timestamp:"00:12:38-00:13:43",topics:["Genesis","bankruptcy"],type:"podcast",weight:25.351043899322917},{boost:0,date:1533945600,description:"Government subsidies and small business",episode_title:"Government and Big Business | Peter G. Klein",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/58189b3c-aa25-408d-8c5e-76f97c9501da.jpg",keyword:!0,link:"http://www.podtrac.com/pts/redirect.mp3/feeds.soundcloud.com/stream/335241913-misesmedia-government-and-big-business-peter-g-klein-1.mp3",node_type:"clip",pub_key:"",ref_id:"58c66464-fdd6-4f04-848b-f98021c4089c",show_title:"Mises University 2017",text:"are direct subsidies for small companies, especially in the tech sector. Governments build science parks and fund Incubators. And the SBIR program, which gives cash to tech startups, you have lots of indirect subsidies as well. So if we're going to say that subsidized interstate highways constitute gives sort of an unfair advantage to Walmart and Amazon, then we would have to say that subsidized electricity, subsidized telecommunication services give an advantage to small firms that are able to be in some small town, right? If it weren't for electricity subsidies, maybe you couldn't afford to live in Auburn, Alabama. You'd have to live in a big city that has a big nuclear plant. Okay? And the only reason a little startup company can be in Auburn, Alabama, or wherever is because they have access to the Internet and they have access to they can make phone calls, they can get electricity off the grid. All of those things are subsidized by the state just as much as the road system. So it's not clear that the kind of Kevin Carson argument makes any sense specifically favoring one type of firm over another. Okay? More generally, think of what the government does to the economy, to society, right? I mean, restricting trade and starting wars and controlling the education system and so forth makes us all much poorer than we otherwise would be. And the massive scale of government intervention around the world, it requires the international division of labor, reduces stocks of human capital, if you want to use that language. It makes us all dumber than we otherwise would be if we didn't have state control of education. Reduces the marginal product of labor in many contexts, right? So, I mean, all of these things it might be that if we had a free society and we had better education systems, better transportation communication systems, maybe the economies of scale and scope and production would be even larger than they are now. Maybe we'd see bigger firms than we see now if we were to get rid of the state and all of its harms. So ",timestamp:"00:37:00-00:39:18",topics:["government subsidies","small business","subsidies"],type:"podcast",weight:5.2884098291397095},{boost:0,date:1665118800,description:"Smaller states offer more opportunities and promote decentralization",episode_title:"Breaking Away: On Secession and Small States",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/6ec51741-3d93-4116-a619-d62a7cee1feb.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/102-radiorothbard-20221007.mp3",node_type:"clip",pub_key:"",ref_id:"56ded69f-9178-41fb-a466-b3f270175343",show_title:"Radio Rothbard",text:"Rockwell summed up this principle in a 2005 article called What We Mean by Decentralization. Rockwell writes under decentralization jurisdictions must compete for residence and capital which provide some incentive for greater degrees of freedom, if only because local despotism is neither popular nor productive. If despots insist on ruling anyway, people and capital will find a way to leave. This is most fully realized, of course, by the type of decentralization that results from fullblown secession. As Rothbard put it in 1977, secession means greater competition between governments of different geographical areas, enabling people of one state to zip across the border to relatively greater freedom more easily. Now, of course, the idea would be you wouldn't have to physically relocate to escape despotism. But we don't live in that ideal world. We have to work with what we have. And the fact is, governments like to abuse rights. So the question is do we want governments that are huge and control vast swaths of land that require us to move thousands of miles to escape them? Or do we want something smaller where exit is much easier, albeit still not without cost? And of course, keep in mind that in a world with only one state and no secession, there is no escape at all, ever, anywhere. We've seen this issue of exit in the modern world. Of course it's true in countless refugee situations where the most oppressed people are only able to save their own lives by fleeing across an international border. We saw it in Venezuela over the past decade when Venezuelans, desperate for food, had to escape across an international border just to get basic necessities. Thank goodness that border was there and limited the reach of the Venezuelan regime. Exit was possible if only the Venezuelan state was even smaller and the people of that region had even more options for bordering states into which they might exit and escape. Historically as well, we know the concept of exit has been an absolutely key factor in how the west roast to achieve the highest standards of living in the world has ever known. As historian Ralph Reyko has noted in his essay The European Miracle, the fact that Europe has been so decentralized throughout its post Roman history, in contrast to the huge empires of the east, meant that entrepreneurs and capital could indeed escape across Western Europe's countless borders in a highly decentralized Christendom. This was especially the case in Europe's Middle Ages. And as historians Nathan Rosenberg and Ellie Birds will note in their book how the West Grew Rich, it was in these highly decentralized Middle Ages that the institutional groundwork was laid for Europe's economic miracle. Similarly, historian Jean Bay Schuler showed this in his research and he concluded the first condition for the maximization of economic efficiency is the liberation of civil society with respect to the state. But how did this liberation occur which led to the success of markets in Europe? Bayflair tells us the expansion of capitalism in Europe owes its origins to political anarchy unquote, that is, to the existence of a large number of small states without any overriding imperial or state power. Not since Rome has Europe been unified under a single government. And that has meant more freedom and more economic growth. One reason this works is that a region of the world or region or world of small states is more difficult to even. It's even difficult to even attempt autophy. So for a private entrepreneur, moving one's capital from one place to another does not cut off one's access to markets outside the borders of a small jurisdiction. Small states and principalities have always experienced big incentives toward doing business with surrounding states. This means more trade. It means more efficient markets. Opponents of secession and breaking up states are often opposed, however, on the grounds that smaller states will throw up trade barriers and be more inclined to violate rights. The reasons for this assumption aren't actually clear, but they are common objections. On the contrary, small states want to attract capital, and it shows. This is why efforts to impose a single global minimum tax tend to meet the most resistance from smaller countries like Ireland and Hungary. As is the case nowadays, having lower taxes is a major way that small states attract wealth. Moreover, in modern times, the empirical evidence supports the idea that small states tend to be more open to free trade, more open to a free flow of labor, more open to lower taxes. For example, Sergio Costello and Truatomozawa conclude in their study on small states that in a world of specialized and growing trade, quote small economies naturally grow more trade oriented in both exports and imports. Ceteris paribus small nations thus become more trade focused than large ones. Unquote economist Gary Becker in 1998 noted, quote since 1950, real per capita GDP has risen somewhat faster in smaller nations than it has in bigger ones. Becker concluded that the statistics on actual performance show that dire warnings about the economic price suffered by small nations are not all warranted. Smallness can be an asset in the division of labor in the modern world, where economies are linked through international transactions. Of the 14 countries with populations over 100 million, only the US. And Japan are wealthy. William Easterly and An Ard Cray conclude from their own study on small states controlling for location, smaller states are actually richer than other states in per capita GDP. Microstates have, on average, higher income and productivity levels than small states and grow no more slowly than large states. So it turns out Rothbard was right when he suggested that small states are more likely to embrace free trade. As he wrote in the 1990s. This was due also to sociological reasons. Rothbard says the greater the number of new nations and the smaller the size of each, the better, for it would be far more difficult to sow the illusion of selfsufficiency if the slogan were by North Dakota or even by 56th street than it is now to convince the public to buy American. Similarly, down with South Dakota or down with 55th street would be a more difficult sell than spreading fear or hatred of the Japanese or whatever foreign boogeyman we currently hate. In other words, bigness brings delusions of selfsufficiency, and it is actually large states that more often turn to protectionism and economic nationalism and control. A second benefit of small states is that they prefer a offer, a solution. When constitutions and democracy fail ",timestamp:"00:09:41-00:16:21",topics:["Smaller states","Decentralization"],type:"podcast",weight:5.421848896549872},{boost:0,date:1629691200,description:"[[Bolt 12]] is the next [[payment negotiation UX]]",episode_title:"WHY ARE WE BULLISH Bitcoin Meme Hub Jan Capek Bitcoin Mechanic Max Hillebrand ep195",guests:[{name:"Max Hillebrand",profile_picture:"https://pbs.twimg.com/profile_images/1311357499514269696/-HQFwyFH_400x400.jpg",ref_id:"9a86cc59-ed01-4757-88f6-e9d9d63067b9",twitter_handle:"HillebrandMax"},{name:"Bitcoin Mechanic",profile_picture:"",ref_id:"faae3a37-0115-4074-af21-7d79c429c7cb",twitter_handle:""},{name:"Jan Capek",profile_picture:"",ref_id:"ec6f8b14-6c4b-42e9-8e86-9aa902c0906d",twitter_handle:""},{name:"Bitcoin Meme Hub",profile_picture:"",ref_id:"dcd5a590-2018-4707-a49b-8142d7b14e33",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/39201536/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-7-23%2F214267789-44100-2-17e9fbafdf841.m4a",node_type:"clip",pub_key:"",ref_id:"1f486e9a-51aa-476a-8430-b149c88817f4",show_title:"BTC Sessions",text:"learn and test out wallets and see what's up because it's a lot of fun to play with if you haven't if you haven't tried already. Max, you are up. Dude. Please let us know what has you feeling bullish this week. Oh, this week specifically it was Bolt Twelve to stay with the Lightning network. That's the next generation payment negotiation. Ux flow and it's really magical and super useful. So far. A Lightning network invoice both Eleven is a one time payment secret basically. And it's the string that you should only use once to request a payment and that makes things a bit awkward. Main thing is that you cannot get a tattoo of your Lightning invoice because that would be a very shortlift fun and that we got to solve. Of course, right. There are current nice hacks around this, mainly LN-URL which is kind of a separate server that you need to set up and that then you have a small domain link, btcsessions. Compayme and all of a sudden you can toss Ben some sense, right? That's possible with this add on service. But what both Twelve is doing now is to do kind of a similar thing, but inside the Lightning network directly, running completely inside your Lightning node and communicating only inside the Lightning network. So you don't need to have a separate server, you don't need to run any separate software, you don't need to have a domain and all of these things are taken care of. It's all just Lightning pop keys at that point. And the cool things that you can do is static invoices or the static offers, right. So you actually can get a tattoo right on your forehead. People can scan all the time and continue sending you one set as you deserve, obviously for the heroic act, but it also allows for automatic recurring payments. So you can say hey, scan this QR code and you will pay me forever. One set every minute. That's great. And there's also nice messaging involved here directly. So sender and merchant can communicate and send messages back and forth about details of the payment, which is fascinating as well. Well, because there is some difference between the time where this offer was created and you print the QR code and when then someone actually pays the QR code. You can also do, for example some trickery with the exchange rate. You can print the QR code with an offer that says pay me $5 in dollars and a week later, of course, the stat price is much different as the shake coin continues to hyperinflate. Right. So you are going to get less shake coins for those five stats. Five Bitcoin. Sorry, you get less stats for those five bitcoins. Exactly. And this can also be negotiated again at the time where you actually make that payment. So small things like this that really show in hindsight how bad Lightning was and how much of a hack it was in the beginning and as a miracle that it actually worked. But now that we have well over four years under our belt of actually implementing this craziness, we've learned a thing or two, and that is all kind of cohesively packaged under Bolt Twelve Lightning offers by Rusty Russell So Bolt twelve.org as a really useful resource that shows you all the fabulous things. It's still very early so far only implemented by C-Lightning, and one other full Lightning note implementation will need to implement it before it's considered no longer a draft in the spec. But I'm bullish as fuck, especially as a podcaster and content creator. I've been showing Bitcoin on chain QR codes on YouTube videos for way too long, and Lightning made that terribly worse because every QR code that you show, only the first listener can pay it and nobody else can. So getting Lightning back to the beautiful days of sending stats for watching cat videos on YouTube, which obviously is the highest achievement of humankind in this regard, we're on a good path, so that makes me even more bullish. That's the main ",timestamp:"01:21:28-01:25:47",topics:["bolt 12","payment negotiation ux"],type:"podcast",weight:5.268418788934759},{boost:0,date:1633752e3,description:"The Domino Effects of [[El Salvador]] Making [[Bitcoin Legal Tender]], Citizens are now using [[Chivo Wallet]]",episode_title:"WHY ARE WE BULLISH Haley Berkoe Tip Jamie Stuckert Colin Aulds ep206",guests:[{name:"Jamie Stuckert",profile_picture:"https://pbs.twimg.com/profile_images/1481004564090433537/ZAj3C3Kv_400x400.jpg",ref_id:"ee047505-97c1-4086-a01c-3d18bd40b2d2",twitter_handle:"JamiaStuckert"},{name:"Colin Aulds",profile_picture:"https://pbs.twimg.com/profile_images/1151579149091262464/uNkb8aat_400x400.jpg",ref_id:"7b6066e2-2ef5-4e90-9d93-dedb1d289118",twitter_handle:"Colin_Aulds"},{name:"Tip",profile_picture:"https://pbs.twimg.com/profile_images/1598405188343468032/yL-obWRx_400x400.jpg",ref_id:"72362a7b-2a0a-44ae-beb4-bb0f36a485fc",twitter_handle:"tip_nz"},{name:"Haley Berkoe",profile_picture:"",ref_id:"b62ba399-282a-4628-811c-25e280541c99",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2e84c98a-d7d8-4341-a129-3f4eaebe1e3e.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/41540590/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-9-9%2Fd7420ef4-f713-f016-1ad9-b5411c2f99ee.mp3",node_type:"clip",pub_key:"",ref_id:"54d58e3e-b828-4a9e-92c3-f761826c0319",show_title:"BTC Sessions",text:"would say so many things I'm just bullish every day. But more specifically, what's going on in El Salvador. So just yesterday was one month since they made Bitcoin legal tender, and since then, like, half the nation has already downloaded the Chival app. That's 3 million people is the population 6 million. Yeah. Just right around that, right. Yeah. So that's like a pretty big number. And then I saw this other statistic that 2.5 million Salvadorans living in the United States will eventually be sending remittances through cheevo. That is a significant number. And it's just extremely powerful because all of Latin America is going to watch how they implemented this and they're going to start doing it, too. So imagine I'm just ready. I think we're all ready for the dominoes to fall. It would be crucial for Bitcoin to get into these other countries. And also what you mentioned earlier over in Africa, the whole world really needs it. But what's going on in El Salvador is just fascinating. I think it's a little bit soon to try and really make judgment calls on the situation because it's really tough. The education component is really tough. Like I was telling Chimberra in Bitcoin Beach this the other day, I'm like if there were teams of hundreds of people going into El Salvador to train everybody, it would be a little different. But you have to have a lot of resources for that, right? So it's a process. It takes time, and hopefully more people will get educated. Read more. The Spanish community is now doing podcasts and they're sharing more stories. I'm super excited. I think it's going to go well eventually. And I'm excited for the rest of the world to fall behind them. Yeah. It's unique in El Salvador because it's coming from two ends of the spectrum, too. You've got this initial grassroots movement with Bitcoin Beach, where it's just a small community kind of bubbling up in El Zonte. And then you've got now coming from a more top down approach where obviously the government is like, hey, this is legal tender and some Bitcoin is kind of pushed against the enforcement type measures around that. Now, granted, as an individual or a business owner, you don't have to hold Bitcoin. It's an effort for people to accept Bitcoin and choose to swap it to US dollars immediately if they want to. But Bitcoin is a very averse to any sort of use of force in a lot of instances. But that said, the world is kind of watching here, and I guess we'll see how it continues to play out. I love that it was started as a grassroots thing in small communities. I like seeing that around the world. And I'm moderately curious as to one how this plays out down there. If we see another kind of cycle, as we've seen in past, where it's huge boom followed by a bust, because that could look spectacularly bad if it's massive boom for the end of the year, and then it's like a two year bear market after that, that may not look great on the world stage. So hopefully that's not the case. But also, I'm really curious as to because they're not going to be the last country to do this. And I'm really about what's next. You hear rumblings in other locales, but a lot of it seems to just be like, oh, we're just going to kind of give our stamp of this exists and it's official that you're allowed to own it and some sort of regulatory clarity. But I'm curious about the next country to say this is legal tender, and I don't know where that'll be or how long it'll take, but I don't know. Colin Haley, Tip, what do you feel about what Jamie is talking about in El Salvadora? What are you interested in? What are you worried about? ",timestamp:"00:46:11-00:50:54",topics:["el salvador","bitcoin legal tender","chivo wallet"],type:"podcast",weight:5.268418789235816},{boost:0,date:1472358600,description:"Getting funding as a small business ",episode_title:"TheMacroView Episode 4: Access to Capital",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/8e52e9c4-52e8-4dea-8ed9-8c6a7fcef25a.jpg",keyword:!0,link:"https://www.blogtalkradio.com/themacroview/2016/08/28/themacroview-episode-4-access-to-capital.mp3",node_type:"clip",pub_key:"",ref_id:"9ac59d0a-2e8d-430b-87e4-493026d9cbe3",show_title:"The Macro View",text:"underwritten by a bank and they've got a whole process behind it. But originally the idea was kind of skipping the bureaucratic process that goes on behind the scenes of a CD that costs interest and just deciding which loans you're going to make and kind of having the underwriting of a bank. Now there's risk involved, which there's not. With CD you get at the IC, that's why you get a lower rate. But in a yield starved world, for some people it was a really good option to start investing in these peer to peer loans and we'll see how it ends up working out over the next five to ten years. But being able to kind of cut out the middle man and get capital right into the hands of people that need it, I think that that's a very interesting innovation and the ability to document those loans. And I know there was a scandal recently with Lending Club, but for the most part you're able to document that stuff very well. It's not that hard with modern day technology to have a really strong and secure database to be able to document these securities very well and make sure that they're not getting lost or being overly diluted. And you can have rules surrounding small businesses in regards to how often the liquidity can be offered by the investors. Maybe they do have to hold it for six months. So you don't just get a plumbing in the price a little bit after it goes up on the market and you have a plugin to where, if you're an investor, get a quick and easy report on what's going on behind the scenes of that business and where that capital is actually being used. All that's possible with today's technology. All that's possible with today's technology. And we're operating in a financial services world that is based on 1940 laws and 1933 laws. The entire infrastructure, the legal infrastructure and regulatory infrastructure up until basically DoddFrank and you've had Tweaks here and there, you had Glass Eagle and then it got repealed and you kind of had the merger of lending banks and investment banks or commercial banks and investment banks. You had kind of the merger and consolidation amongst that after the repeal of Glass Steagall, which set up a firewall and then the Volcker rule kind of did that and moved closer towards that. And that was part of Don Frank. And frankly, I think disclosure is the most important part of that. And yes, because we have an insured financial system, when it comes to just everyday consumer deposits, it's very hard to have that moral hazard of allowing prop trading desks that can take almost unlimited leverage with individual depositors that have financial insurance for their deposits because those prop traders kind of know in the back of their minds, hey, we're not really losing anybody's money. So as long as you have that moral hazard. It's very hard to have a commercial banking system that's merged with an investment banking system because you basically have customer deposits that are insured being put up as collateral to trade risky assets and to do it via risky strategies if it was fully disclosed and people knew the risks that they were taking with their deposits and there was an insurance. Which if there was an insurance. Banks wouldn't really take that risk because nobody would let their money be that kind of risk taking with it. With their savings and with their checking account that they use to buy food every day. It just wouldn't happen. But if you had a system like that, then you wouldn't really necessarily need the separation. The system that we do have with the insurance, you do need the separation. So it's an interesting framework that we have because the way that businesses gain access to capital today is really based on a world that was way before the current information. And I know in the 80s things got a little bit stricter in the because you had the pink slip pushers, the pink sheets pushers, and the penny stock brokers that were kind of running rampant and your wolves of Wall Street type characters that were ripping off old ladies and selling them a bunch of junk. And that's not what I'm advocating. What I'm advocating is having a legitimate market that has really strong accountability built into the technological infrastructure of it. You have a fast registration process. You have standardized types of offerings. You have auctions that are available, and you farm that exchange API out to every brokerage firm. And you hold brokerage firms accountable for keeping documentation and backup documentation on it. And you set up rules to where the brokerage firms aren't going to get sued for recommending it as a small part of somebody's portfolio, and aren't going to get sued if somebody without getting any recommendation or professional financial advice goes off and buys a bunch on their own and take that risk. Because casinos don't get sued when somebody walks in with $10,000 and puts it on the table, that was that guy's life savings and you just let him blow it. They're kind of in a world where they understand, look, people are going to come in and take bad risks and make bad decisions. And to a certain extent, while it's sad that's the world of investments too, people have to learn that you can't just make willynilly bad investments. You got to diversify. You got to play it long. You got to think about the long term. You got to build a good, strong portfolio that isn't dependent on one or two things working out that's basically going to follow the overall economy. But maybe you can outperform a little bit on the upside and maybe you could protect a little bit of risk on the downside. If you have a really good financial adviser, you're your own professional financial adviser and you know what you're doing and you know how to manage that risk, there are ways to do that. There are ways to use the markets that we have to get a good return. I think this would be a way that would increase that. I also think that it would open up structured products that would allow a lot of capital to flow from institutions to these small businesses and that would really open up the market for entrepreneurs to gain access to capital. If you had strong structured products that were based on pools of strong interest rate loans to small startup businesses that also had a tax incentive built in, you'd have institutions all over the place trying to buy into this. And you'd also have it as if you structured it properly to where you have the right risk management protocols in place. You'd also have a lot of retirees who might be able to clip a little bit better of a coupon, do it in a safe manner, and while helping to build the next generation of businesses. So there's a lot of things you can do. I'm not saying it would be their entire portfolio, maybe five, six, 7%. You can index annuities to these pools there's all sorts of interesting things you could do with structured products if you had a more vibrant market where investors of all sizes could come and gain access to startup and small business debt and equity offerings in a way that was accountable and in a way that was efficient and in a way that maybe offered a little bit of liquidity. But you understood these are small businesses that are trying to grow that liquidity three, five years down the road. If you actually had a world that preached truth that didn't say one out of every three businesses goes out of business, only one out of every three businesses is still in business after the first year. Only one out of every ten is in business after the third year. All these little cliches that just simply aren't true. About 68% of businesses three years in are still alive. So yeah, you've got one out of three that after three years go out of business and by five years 50%, a little over 50% are still alive. You have pretty close to 50%. Five out of ten. Let's use real numbers and let's plan risks around those real numbers and let's understand that yes, there's tail events but the more vibrant of a market we have, the more of an opportunity there is for people to find ways to manage the risk around that market. And when you have ways to manage the risk around that market, three standard deviation market events that put 75% of small businesses that started that year out of business and a lot of people lose money on that, you have ways to manage that risk and you have way to cost efficiently prevent yourself from losing big time on one of those events. So I think that what we really need is a combination of public policy that provides a tax incentive for the private redistribution of wealth that is wealthy people and people of all sorts taking minority stakes in small businesses and startup businesses, getting a tax incentive to do so. And as that business grows, obviously there's going to be tax base that grows and it pays way more than the taxes that are credited or deducted. By making this investment, by giving people these deductions and credits to make these investments, you're going to have much more taxes that come in a couple of years down the road. But not only are you going to have that. You're also going to have a more vibrant market for it and you're going to have incentives for entrepreneurs to go and create a very accountable market where small and startup businesses come in and properly have the standardized paperwork to make the offering to register quickly. Make it not very expensive and be able to attach that tax credit to it. Be able to attach that tax deduction to it very easily. Raise the capital. Put the capital to work. Hire people. Go on with their idea as they grow their business. You already have strong accountability. It will be easier for them to go back to the market. Maybe the first row is a convertible debt, maybe the second round is convertible preferred. Maybe the third round is a pure common equity. And that's the conversion point for the other two. And those are a year apart. Each they're done on the same exchange. The exchange, the brokerages, they make a little bit of money off of it, people get their tax credit for it, they get to invest in the next generation of businesses. Those businesses raise the capital, they put the capital to work. The economy grows and flourishes and it's going to be well worth having this market when you've got an economy that's growing at 4% as opposed to the measly 1.1% that we got. In order to do this, we've got to make it fair to the people that are participating in the market, that are providing this profession where they're not going to get sued all the time because the business goes out of business. Look, businesses do go out of business. Some succeed, some fail. It's not as outrageous a number that fail as society likes to preach, as we showed you here on slide 13 in tonight's podcast. It's nowhere near those outrageous numbers, but some do. Some businesses succeed, some fail. And when you take the risk of investing in a small business, you have to understand that why you should diversify. But when you're taking that risk at an early stage yet it should be a small part of your portfolio, you're able to get a lot of upside down in the future, you're able to get a lot of upside down in the future. And that's the benefit because you're starting out, you're getting a lower valuation before that company enters into the hyper growth stage. The other thing is. If you open this market up to a credit. Not just accredited investors. And if you had a vibrant market for these types of opportunities. You'd have financial professionals that whether they specialize in that or at least they make it a part of their repertoire and put it as a part of their model and take the time to really start to understand that market. Financial professionals will help their clients make those right decisions. They will. Financial professionals already have fiduciary responsibility. And if they might say, look, you should look at doing this as part of a tax plan and understand you might lose some money on it if you have this tax credit tax deduction, they also might look at it and say, look, if you have ten companies, five are going to succeed, five might go out of business. And the five that you have a finite amount of risk, the five that succeed, out of the five that succeed, three of them you're going to get a two X return and one of them you're going to get a three X return or whatever. You can show different models. You can model it out, and you can say, this is what we're expecting out of it. There is risk involved in this, as there is with everything. That's why it's only a small part of your portfolio. We're diversified, but this is something that we got to get happening. Everybody's complaining about the inequality. Inequality, wealth inequality, income inequality. The reason there's a lot of inequality is because there's absolutely no incentive for a wealthy person to take risk investing in a small business that's just starting out. When you can vary, it's very difficult. There's no vibrant market. It's hard to keep them accountable. People live around the world. If you're an entrepreneur, you've got to go out and find the wealthy person. You got to court the wealthy people, and you got to court many wealthy people in order to find the one that likes your idea. Well, that's not cheap, and that's not easy. And if you're just an average dude or you're an average gal looking to start a business. You come from middle class America or you come from even poor neighborhood in America. But you worked your ass off. And you got a little bit saved up. And you had enough to be able to go off on your own and not have to worry about a salary for a little bit. Now you got to find a wealthy person. Then you can use the Internet all you want, but when it comes down to at the end of the day, wealthy people want to know you can go out and have a drink with them. They want to know that they can trust you, that they can look you in your eyes. They want to shake your hand. It's not an easy thing to do. If you don't come from a lot of money, and it costs a lot of money to get there, you got to constantly be going around and trying to meet with these wealthy people and hope one finds a job. You got to figure out ways to hang out where wealthy people are. Guess what? Wealthy people don't hang out where it's cheap. They hang out places where it's pretty expensive for the most part, and at least pretty expensive for a young entrepreneur that's just starting out. So if banks aren't going to do that job anymore, we've got to figure out a way to incentivize those wealthy people to seek out good ideas. And we got to have a vibrant marketplace for that to be done. And we've got to institutionalize that marketplace in a way to where the offering documents are standardized. People know what they're getting into. They know what they're doing. And there is an incentive, a financial incentive, a tax incentive to do so that will get this economy bumping again, that will get this economy moving really fast. You'll have a velocity of money. You'll have to start kicking up interest rates and then you know what you're going to have? You're going to have banks all over starting platforms for this. They're going to start brokerage houses that will really advise, look 3% help get this tax deduction out there. And maybe the political way to do it is to not make a permanent tax deduction. Make it five to seven years. Seek out some best practices, emulate those best practices, be able to find ways to get more resources to the small business owners so that you have lower failure rates. There are other ways to do this and in a competitive world you're probably going to actually see failure rates at the beginning increase a little bit. And then what you're going to see is you're going to see profits and diminishing returns. The law of diminishing returns. As you have more people participating in the same industry, competing for the same customers, they're going to start to have the price compete. And when they start to price compete, they'll also compete with innovation and new products and new services. But when they start to price compete, you're also going to have lower margins. You're going to have smaller profits. And then capital is going to be diverted away from that. It's going to be put towards even newer businesses. And if you have this perpetual cycle of new innovation, new innovation, new disruption, lower prices, more goods, more services, more abundance for people, more jobs available, more people consuming, more people having jobs, more people getting wage increases, guess what? That also means we can start to pay down our debt. That means we no longer have to have budget deficits every single year. We can have balance budgets. We can have budget surpluses. We have large budget surpluses and windfalls where we can pay whole chunks of our debt down and prepay whole chunks of our debt and we won't have to refinance it. The other ",timestamp:"00:35:52-00:52:23",topics:["Small business","funding","merger","lending"],type:"podcast",weight:5.265220403671265},{boost:0,date:1623733200,description:"The Goals of Small Business",episode_title:"Andrew Frazier on Running Your Business",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f2b2a2b2-8869-4256-94b9-a91c91c1ce7e.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/122_e4b_andrew-frazier.mp3",node_type:"clip",pub_key:"",ref_id:"bda964fc-b276-490e-98b6-3009769f941e",show_title:"Economics For Business",text:"and be profitable. Right. So you have a few techniques. You talk about standardized methods and processes. One of the elements I picked out of the book that I loved was you're thinking about goals. You call them smart goals. That's an acronym, smart. You might walk us through some elements of that, but tell us about goal setting for small businesses. Okay, well, a lot of times you have so many things going on within your business that you have to do that sometimes you forget about planning and doing the things that are important but not urgent. And that's really what goals are. They're very important, but sometimes they're missed. But by having goals and focusing on them, it allows you to move forward and many times move forward even faster and better than you would have. So the Smart Goal effect, which is commonly known to include specific measurable achievable, relevant and time based, where the specificness gives you a chance to get clarity around the goal. And that's generally qualitative and quantitative. You have to have it measurable because you can't improve anything that you can't measure. It has to be attainable. So you need to analyze what it will take to achieve the goal and then it has to be relevant, does it contribute to your business strategy and your profitability, and then you got to achieve it within a certain time. So time bound and have reasonable delivery targets and ways to gauge your progress. So really by developing smart goals, it's a way to plan for your business and it's a way to measure how you're doing and continually make improvements. So Andrew, given that given those set of smart goals, you say that every business from the outset should have detailed, standardized methods and processes. Besides the smart goals, what are the detailed methods and processes that we should be building? Well, it's important to be able to have consistency, and by setting out processes and procedures, it allows you to do that. It's also very hard to manage people, but it's very easy to manage systems. So by having a system or process that helps, you be able to manage more effectively and make sure your business is running the way that you want it to. Michael Gerber, who wrote the email, really talks about the key to running a successful small business is really about running it like a franchise. So that the same way a franchise has processes, procedures, and clear ways of doing business, you should be working towards that with your small business ",timestamp:"00:15:38-00:18:45",topics:["Small Business"],type:"podcast",weight:5.25807249546108},{boost:0,date:1642222800,description:"[[Bitcoin]] Versus Banks in [[Australia]]",episode_title:"WHY ARE WE BULLISH Duczko Thomas Jestopher Morgen Rochard Rick Vanderhulst ep229",guests:[{name:"Rick Vanderhulst",profile_picture:"",ref_id:"4c184180-b77d-4e25-ac7c-4d2e86cdde85",twitter_handle:""},{name:"Morgen Rochard",profile_picture:"https://pbs.twimg.com/profile_images/1362921386256211972/IpIK8cwI_400x400.jpg",ref_id:"c29b26e9-82c8-4c0a-8130-aa083d33ec48",twitter_handle:"MorgenRochard"},{name:"Thomas Jestopher",profile_picture:"https://pbs.twimg.com/profile_images/1607521016368201730/6GSHGkGX_400x400.jpg",ref_id:"50388de7-3ec7-401b-8349-5ee1d8a004c0",twitter_handle:"Jestopher_BTC"},{name:"Duczko",profile_picture:"",ref_id:"2b6de75e-0cf5-4fec-b458-d1b8ee3f86df",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b87feb17-6926-4295-b2c2-d1c2e9d49ca8.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/46171740/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-0-15%2F68b825e2-6752-7447-34ca-b27f0ea69256.mp3",node_type:"clip",pub_key:"",ref_id:"c2dff822-95ca-45fd-bf30-61ed21ecc3b1",show_title:"BTC Sessions",text:"this is actually fact in Australia. So there was a case Bitcoin versus banks, a guy that was dancing with his small Bitcoin exchange. He was just doing transactions on one of the peer to peer exchanges, helping people. And several of the big banks in Australia, they've actually invested in one or several exchanges at the same time. They're not allowing these other exchanges to bank. So clearly there is something going on with their own incentives. Yeah. It's unfortunate. Jess, I don't know if you have anything that you wanted to add in. I haven't let you chat much yet. Sure. Let's see the experience in Turkey. I think, Rick, you mentioned that. They'Ll. Just pass along a check that is the asset and write the new information on it and just pass it around. You'll have like ten different names on there. And it's just sort of this delayed settlement because no one has the money because all of that inflation. And it was just like, wow, that's the Fiat system. And here in the US, the financial center of the world, on a sunny day, it's still one to seven business days. Everything is going perfect. I just had my first experience ",timestamp:"01:06:17-01:07:52",topics:["bitcoin","australia"],type:"podcast",weight:5.248069832838849},{boost:0,date:null,description:"Bitcoin backed stablecoins as a solution and how it works in emerging markets",episode_title:"#Bitcoin solutions for Emerging Economies",guests:[{name:"@RSK",profile_picture:"https://pbs.twimg.com/profile_images/1592915327343624195/HPPSuVx3_400x400.jpg",ref_id:"b326a250-3fc1-46da-a64c-2659a4de0e3a",twitter_handle:"RSKsmart"},{name:"Femi Longe",profile_picture:"https://pbs.twimg.com/profile_images/1547047357371797504/avnHBa2W_400x400.jpg",ref_id:"7a5a41f1-6d1e-46c9-b97f-20ae03eafdd1",twitter_handle:"TheArtOfTomas"},{name:"@Alexandria The Great",profile_picture:"https://pbs.twimg.com/profile_images/1575525599493427203/XubWEoDX_400x400.jpg",ref_id:"1c95e8b2-3a98-46ce-933f-ef9f50c518c5",twitter_handle:"alesander97"}],hosts:[{name:"Tomas Villalonga",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"4f1cff71-07e0-4d7a-8992-d4b0609ca0b1",twitter_handle:"TomasVillalonga"},{name:"Brian De Mint",profile_picture:"https://pbs.twimg.com/profile_images/1546297674512470016/oEVF8rJQ_400x400.jpg",ref_id:"064e04f7-8320-4854-8325-0cc19cd7ff55",twitter_handle:"BrianTheMint"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b2dd8be4-74b5-47b2-b470-e568657f3a0d.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/1ced1636-bd02-426f-a451-f1ebcd2108d1/f1d75b7e-a877-4052-acdd-23958f6207d6.mp3",node_type:"clip",pub_key:"",ref_id:"41015fe4-63fd-46d7-8dde-f065457f2af6",show_title:"Art of Tomas",text:"Yeah, I think so. As a bitcoin, I wish I could just tell people, just buy bitcoin and it fixes everything. I wish it was so easy. But for most people, unfortunately, bitcoin volatile, it's too much. So I think looking for like I put on the title bitcoinsolutions, and I think things like a bitcoin backed stablecoin for a lot of people in the world make a lot of sense. And if you could do it in a way that also benefits bitcoin, which is what rootstock is doing and why I like it so much, I think that is the best way forward. Alex, please. Yeah, definitely. I think one of the things that we actually started working on with our skill and metamorphosis in the space was that what we wanted to do was we wanted to look at how can we achieve market penetration. One of the problems that we have in emerging markets, or I can't say Zimbabwe's, emerging market in undeveloped markets like Zimbabwe for example, is because we face sanctions and of disadvantage we can't have what sort of central exchanges. So the thing about central exchanges, especially like what we saw with FTX was these exchanges often don't hold any bitcoin, they just come up with the own kind of altcoins and then they promote them and then they just dump them on retailers, for example. Right, but the thing about these exchanges is that you have these new types of what you call it, stable coins like USCC or UST that can pay these guys massive amount of startup capital. And then these individuals, these exchanges now have incentive to register these debt coins only and promote them regardless of whether they're beneficial to the end user, right? So there's kind of an unfair advantage when it comes to bitcoin versus these other cryptocurrencies at the end of the day. So what we saw was that because we don't have exchanges that can propagate the only agendas involved with, we can now we kind of have an advantage. And this advantage now comes with to access bitcoin which is highly demanded as well, where comes at a cost at 10% premium because first there's a cost of getting the capital outside of Zubay to buy this bitcoin and then coming back to Salad here, which is on 2% depending on the level of liquidity that you have and that you're transporting. The second challenge is that the second premium is that it comes from individuals wanting to make a profit. Now, if you are passionate bitcoin like myself and Metamorphosis, what you can do is say let's forgo the profits today. But also depending that we have a job with our so it's really nice that we've been able to get a company like I was K for example, that actually pays us to grow these communities to improve risk on adoption in Zimbabwe. Anyway, what is happening is that you can basically forgo the profit and then bring the trees down to about 2% 3% and then what happens is that you now can sell bitcoin cheaper than most of these stable coins like US CC UCC. And then also you can also undercut the current legacy system which is also charging around ten to 15% premium. And then people can now start seeing what should the financial benefits of using bitcoin. Once again, the problem is that Bitcoin's financial benefits was taken away when exchanges went away. But now we're saying, okay, maybe that's actually an advantage and something that we can use against these individuals to ensure that we can push Bitcoin because backstabbing like Donald Chain, for example, at a very low fee. If you guys can do that, that is brilliant, because that gives you an advantage. I wanted to ask you, we're going. To be working on that. We believe that stable coins are kind of the short term solution for a lot of people. Like you said Thomas, a lot of people cannot afford the volatility of bitcoin, but they can use for sure unstable coin that is backed by bitcoin and that all the fees that you pay go back to the miners and to the bigger ecosystem. And I think it's a certain solution for a lot of people. And we believe that a lot of people are going to embrace crypto through a single point that is backed by bitcoin. They are going to see how bitcoin can add value to their life, and then they're going to understand bitcoin after that. So I think what Alexandria is proposing, I think is key, and I believe it's a great strategy because it's going to be for them, like, seven to 8% cheaper than buying USDT and more secure even for them. So, yeah, I think it's a great strategy and I hope we can make this happen and it's going to help a lot of people there. Yes, absolutely. Absolutely. For me, a bitcoin backstop solves many, many things. At the same time, it allows for millions of users that cannot use bitcoin to benefit from bitcoin, to benefit from the growth of the network, the security from the network. And also because all the fees go to the bitcoin miners, all those new users, they are also making the bitcoin network stronger. So it combines a lot of things that it surprises me that a lot of bitcoiners have such a hard time understanding this. And that's why I wanted to have your perspective, Brian, in all of these. Because in your book, bitcoin evangelism, you do a great job explaining everything of how bitcoin is, how it works, what it means. And he also described when you talk about altcoins, that a lot of the altcoin services would be built on big coin eventually. So I wanted to ask you if you have tried any of the VidCon layer two solutions or these big compact stable coins, or if you have any questions or anything in that regard. Yeah, that's actually part of why I really like jumping on with you guys. I see this as a really good opportunity for me to learn. The only layer, too, I really have any familiarity with is lightning. I mean, I really want to learn more about rootstock. I want to learn more about bitcoin backstable coins. If you wouldn't mind, can you break down how a bitcoin backed stablecoin works? Like, how did the bitcoin reserves work and that sort of thing? Because this is very much I mean, it's pretty funny. Bitcoin is such a new space, right? I mean, I've been in it for ten years, and it's evolving at such a light speed that even the quote unquote experts, nobody's an expert at every element of it. Nobody's a doctor in bitcoin at this point, right? So I'm really here in, like, a learning capacity for these particular things. So if you want to mind just breaking that down, because I feel like that's part of my bitcoin, evangelism is to help people understand some of these emerging concepts, because, yes, I think the concept of a bitcoin backed stablecoin has a lot of allure of people that I talk to that particularly talk about the volatility. Like you mentioned earlier, a bitcoin where I lean into the volatility of bitcoin. I actually don't shy away from that, but I go the one bitcoin is one bitcoin and that sort of thing. And that doesn't appeal to everybody. And I understand why, if you wouldn't mind just illuminating this idea of bitcoin back stablecoins a little bit more for me. I mean, you guys are talking about it in a very practical sense, so I get it in that regard, the need for it and why it works. But if you can maybe even explain some of the technical side of it, not on like a computer science standpoint, but just maybe how the reserves work, how do the fees go to the miners and those types of things. Right, yeah, I can do that. I wouldn't be able to explain it technically, even if you wanted me to. But basically, the bitcoin network would stand as, like, the base layer, and on top of it, you have different layers, too. Like lighting is one, liquid is another one, and you have Rootstock. Some of the key characteristics that I love about Rootstock is that the main currency is pegged one to one to BTC. So it's our BTC, and you have the bridge that you can go back and forth. And one of the platforms that are running now on Rootstock is called Money on chain. And I created the first bitcoin backed stale coin. Before. Sorry, I skipped this very important point is that root stock is merged mine by the bitcoin miners. So if you're a bitcoin miner, you can mine both chains at the same time with no extra cost, and you earn more bitcoin if you do. So Roots talk at the same time, make the bitcoin miners earn more money, which most like now is quite important. So you earn so that the revenue would be the mining reward plus the bitcoin fee from the block and then whatever fee reward from the root stock block. Okay. And you get that in bitcoin. Right. And then we have the main chain, which is money on Chain. Actually, before we go into money on chain, to me, the fact that Rootstock has bitcoin as its native currency and the fees go to the bitcoin miners makes it very much aligned with bitcoin because it means that all the value from Rootstock is going to accrue to bitcoin, the asset. And all the extra financial movement that happens on Rootstock goes to the bitcoin miners to make the bitcoin network stronger. So they're very much aligned in that sense. Sure. Yeah, I want to add on I just want to add a few other points. The first thing is, as soon as you buy your bitcoin, basically what you do is you plug into a permissionless, peg into small bitcoin. So you have a small contract plus your bitcoin. And then this allows you to basically now mint a dollar and chain. So dollar and chain is basically now a bitcoin has backed eight to one. So for every $1 of bitcoin, so dollars of bitcoin, you have $8 of bitcoin basically backing it, basically. And then I think what autonomous is saying is that whenever the individuals that are mining bitcoin, these individuals with a slight switch can also use a place that's called neo merge mining, which allows them to also mine the restock network, basically, which is the second layer towards that. So right now we're saying about kind of varies from 40% to about 60% of breakcoin hashing power. And like what you said, basically all of the cryptographic hashes from the restock network is actually added onto bitcoins. They're one's block, basically. So this means it's very beneficial to the bigger ecosystem because every dollar that individuals buy basically just adds value to bitcoin itself. But I think also the one thing that I think was important was I can't sell bitcoin at extremely low premium at 3%. For example, in because of the volatility, we can see bitcoin moving from 5% to 2% on a daily basis, which is good if you're just someone who wants to buy and hold it for a day to day basis. But now if I want to pennies with the market and offer extremely low fees, for example, so that bitcoin adoption can occur much rapidly, it's not really possible because of monetility. But what I can do is I can use the same that uses bitcoin as a net currency and basically start selling that at about 3%, where the only thing that I'm charging is the cost of transportation to go to a country that has exchanged, buy the bitcoin, come back to Zimbabwe and sell it to individuals. So that individuals can now use this as a form of remittances. Because the one thing I'm noticing is that everyone wants to use big kind of remittance, but the cost of fees is what's really kind of interesting sometimes. I remember I wanted to do a geo transaction when I was in Boswana with my father who's in Zim. As soon as you heard the fees, you're so shocked that we were paying this much in Zimbabwe. And that's something that I've always kind of disliked and I think I want to try changing, but it's only possible because I can use auto and chain, which has no volatility and stuff. ",timestamp:"00:22:42-00:37:24",topics:["Bitcoin-backed stablecoins","Bitcoin exchanges","Brian De Mint","Rootstock blockchain"],type:"twitter_space",weight:5.239642381668091},{boost:0,date:1472358600,description:"Growing small business to increase the economy",episode_title:"TheMacroView Episode 4: Access to Capital",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/8e52e9c4-52e8-4dea-8ed9-8c6a7fcef25a.jpg",keyword:!0,link:"https://www.blogtalkradio.com/themacroview/2016/08/28/themacroview-episode-4-access-to-capital.mp3",node_type:"clip",pub_key:"",ref_id:"7eca97d5-7a23-4e41-8e04-cfffdef85f06",show_title:"The Macro View",text:"can start to really fund our Social Security liabilities and our entitlements and we're going to talk about that in another episode. But one of the things we got to do to be able to do any of this, we got to get the economy moving again. And the way you get the economy moving again is you do what we had throughout the early 90s, which is just flourishing small businesses that were able to access capital. And yeah, you had scams that went on with the pink sheets pushers and the people robbing old granny. Yeah, it's sad and it sucks. And a lot of these regulations exist but most business owners aren't like that. And honestly anymore. I don't know if it was just totally I'm too young to know and I didn't work there. I don't know if Wall Street was just really a bad place back then. Maybe it was. But I'm in the financial industry and I know a bunch of financial advisors and guess what? They're not bad people. They're not bad people, they're good people. They want to do best by their clients. They want to do best by their clients and they're not going to go and rip their clients off. But if you had a vibrant market where they could get good information, they knew that these securities were legitimate, that they had been vetted, that they were on a market where there's transparency into the businesses. Maybe you don't require quarterlies for small businesses because that's too expensive, but maybe you require an annual or maybe like I said, you have some sort of financial portal where shareholders can at least gain that next level of insight into what's going on in the business at that early stage of a small business. But we need a vibrant market. We need a vibrant market where wealthy people and nonwealthy people can go and find strong early stage business deals. Investment opportunities and ventures that are early stage and start up and where they can put capital at risk in a way that feels safe and secure on a market. That they vet them and make the registration process cheap and easy and the securities that are offered are somewhat standardized and you have some insight into that. Business people will do it. And then you slap a tax credit for pre revenue and a tax deduction for post revenue and that accounts for the risk. And maybe what you do is for those pre revenue businesses, the only type of security they can offer is a convertible that pays a coupon. So you're lowering the risk profile. I wouldn't be a fan of that. But hey, it's a step in the right direction. I'd rather prefer where investors and businesses, businesses offer the type of security that investors want to buy and where as long as that capital is flowing to a small business or startup that is taking that capital, putting it to work and hiring new people, what I want to see is I want to see new businesses come out with new technologies, with new products, with new services. I want to see them compete against the old ones. I want to see them hire new people. I want to see them drive the cost of goods down. I want to see them drive wages up by competing for the best talent. And the way that you do that is you get entrepreneurs who are out there. There are entrepreneurs out there who want capital to put to work, who they know with the right amount. They just overcame the barriers to entry that we all set upon them with our really high regulatory costs and ridiculous regulations. If we just overcame that as an entrepreneur, we would be successful. And what we need to get there is a little bit more capital than what we foresaw because we didn't realize all these regulations were coming out. We started three or four years ago and wham, we got slapped with tons of. Uncertainty and we have no clue when it's going to be implemented when or what's going to be implemented when and it's a total mess if you're an early stage entrepreneur especially in a highly regulated industry. And that's my weekly rant for today. I hope you guys enjoyed the show. We're going to be wrapping up here in just a second. Got about four minutes left. I apologize for the technical error earlier on. Had a little bit of trouble with my microphone when I tried to dial in it's just a ton of static in my headphones. So we had the show scheduled earlier and unfortunately I was in it. Had a lot of static going on had to unplug my microphone and try to figure out what was going on so I just had to end up recreating the episode. Sorry about that for all those that listened to the first one I had posted and are now going to check back in a little bit later. So to wrap up I wanted to talk about something that I saw the other day that I thought was really funny. I thought it was very creative and expertly put together and what it's called is Lovegov and you could just YouTube search YouTube lovegov and it's a series about six short videos about five minutes each and it is a sort of a satirical show where a girl falls in love with a guy named Gov and Gov is sort of for all intents and purposes a government regulator but kind of is the allencompassing federal regulator. He comes and points out every little thing and it's just her life through college and government encouraging her to do this with certain incentives or Gov not government but Gov is encouraging her to do this with certain incentives or encouraging her to do that with certain incentives like in college and going abroad and taking on all this debt and then when she gets out starting a business oh yeah I love small business. Not as much as big business but I like small business too and here I've got your ocean safety regulations and I'm not doing it justice at all. You got it. And maybe on the next episode I'll play a little clip for man might try to reach out and get permission to do that. I think it's done by the Independence Institute but if you go on YouTube just type in Lovspace G-O-V Lovegov and you'll find it and I think that you'll really enjoy it. I think it's really well put together. It's the type of thing that we need more of. We need more satirical comical culture winning culture winning media that's funny. That's light but there really does nail the point across and I think that this little short series of videos really dead it was really good. Had me laughing but at the same time was a serious point that got across and got made and I think it's very relatable and would be very relatable to a lot of people of all political ideologies to show how government gets involved in the market and really destroys a lot of the market incentives and makes it to where people have a much harder time going about chasing their dreams and pursuing what it is that they really want to do and what they thought was their version of the American Dream. Not some Washington bureaucrats version of it. Again, this is Andrew Smith coming to you live from downtown La. This was the macro view. Hope you guys enjoyed it. Tonight's episode is all about access to capital, how we're going to get it, why it's so important, and talk a little bit about why we don't have it right now. If you're just tuning in now, go back and listen to the episode in full in about ten minutes and we're going to wrap up here. Hope you guys have a wonderful weekend. Take care. Again, this is The Macro View, coming to you live from downtown La. ",timestamp:"00:52:24-01:00:00",topics:["Small business","investment","new business","capital access","entrepreneur","government regulations"],type:"podcast",weight:5.209966659545898},{boost:0,date:1671321600,description:"How big data center miners help enable self sovereignty for individuals",episode_title:"#Bitcoin Mining Saves the World - Brought to you by Marathon",guests:[{name:"Steve Barbour",profile_picture:"https://pbs.twimg.com/profile_images/1592714173469065216/q8kXPyQI_400x400.jpg",ref_id:"63a731b8-4759-4360-9e9d-d66f884e12d8",twitter_handle:"SGBarbour"},{name:"Nathaniel Harmon",profile_picture:"https://pbs.twimg.com/profile_images/1578090357102780416/etXW-RA9_400x400.jpg",ref_id:"9105fb4e-4150-4c25-90f1-8ea770585749",twitter_handle:"NateHawaii"},{name:"Taylor Monnig",profile_picture:"https://pbs.twimg.com/profile_images/1599563776621219840/mvb8y3zY_400x400.jpg",ref_id:"b8513b01-ff94-4d7f-944f-5c92e1126885",twitter_handle:"taylorbmonnig"},{name:"Harry Suddock",profile_picture:"",ref_id:"6440ea0f-c982-4b76-b7c2-9c6bf7e9a4a9",twitter_handle:""}],hosts:[{name:"George Kaloudis",profile_picture:"https://pbs.twimg.com/profile_images/1545498090118950913/aGCJaGqF_400x400.jpg",ref_id:"4ae2c311-16fd-4586-b65d-f046b1feb9ce",twitter_handle:"gckaloudis"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/492cbcce-3744-4d8b-b2ca-3a7f063e798a.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=Tk8oChjgVhw",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"6e890ef3-7358-40d6-a01f-44f444dbabfc",show_title:"Swan Bitcoin",text:"Taylor, we're talking about the little guy a lot over here. And you work at a big public mining company. So how exactly are you big data center public miner helping enable self sovereignty for the little guy? So I guess I'll take it from a society perspective, our last two acquisitions are good examples of this. These are sites that are in, you know, rural Georgia, have a ton of excess power that was simply just going to waste. We've been able to go in there, utilize over 100 power, provide over, you know, 50 jobs, and introduce bitcoin into the daily lives of all these people, along with millions of dollars of revenue for these small cities. So from a self sovereignty perspective, it might be a little bit difficult. But from a societal perspective, we're making a huge impact with mining all across rural Georgia by building these data centers. Cool. Let's talk about energy. I think people want to hear us talk about energy anyway. So Harry you touched on it. Per capita energy production is a good thing. Energy go up, bad things go down. I read something recently from Lyn Alden where basically we're just trying to capture the sun in some capacity, as much concentrate as sun as we can. That's ",timestamp:"00:09:38-00:10:45",topics:["Self sovereignty","Bitcoin mining"],type:"youtube",weight:11.383676517140954},{boost:0,date:1623733200,description:"The Processes and Procedures in Small Business",episode_title:"Andrew Frazier on Running Your Business",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f2b2a2b2-8869-4256-94b9-a91c91c1ce7e.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/122_e4b_andrew-frazier.mp3",node_type:"clip",pub_key:"",ref_id:"3dacb7c8-34d2-4e73-8064-5d53c6857239",show_title:"Economics For Business",text:"to our interview. When I was in the big business world, Andrew, we used to build what we call process maps, which are every step in the process, every handoff who's involved, what the output is, what the input is to the next step. Is that what you're advocating, that kind of detailed process mapping our step by step outline of activity? I'm advocating that, of course, in small business, you have a lot less resources and manpower, so it's a process. And early on, when you're working in your business, you're working and sort of developing them as you go. But to move forward and grow, you have to become a supervisor and a manager. And at those levels, you develop the process and procedures so that you can build your organization and continue to do business the way that you want to do business and in the way that has made your business successful previously. Yeah, we used to have a thing called the Procedures Book that catches all of those processes. Do you recommend that small businesses have something like that? They accumulate these processes over time? I think you do the keys to really going from working in your business to working on your business. That's where you develop your processes and procedures and you optimize your business. So that's really what working on your business is. And by doing that, you also increase capacity. So you're working in the business, you're working on developing your products, your services, finding the right target market for that. Once you do that, then you should pivot to working on your business, which is really when you're putting processes and procedures into place, you're optimizing your business plan and your strategy, and then you're building capacity and then working on the future of your business, you're really developing your strategic growth plan ",timestamp:"00:19:37-00:21:44",topics:["Small Business"],type:"podcast",weight:5.171255588532055},{boost:0,date:1613511331,description:"The Bitcoin education",episode_title:"WHY ARE WE BULLISH? Bitcoin Buying Tsunami Swells in All Waters ep147",guests:[{name:" Away Slice",profile_picture:"https://pbs.twimg.com/profile_images/1493953883370053632/rvtEfkr-_400x400.jpg",ref_id:"ff304d54-ca39-45eb-98ef-483460548c9a",twitter_handle:"add_slice"},{name:"Littlest Hodler",profile_picture:"https://pbs.twimg.com/profile_images/1396223393322749952/uzavXUxh_400x400.jpg",ref_id:"5eaa1126-c920-4860-89a0-459e64be2af5",twitter_handle:"littlesthodler"},{name:" and Colin Aulds",profile_picture:"https://pbs.twimg.com/profile_images/1151579149091262464/uNkb8aat_400x400.jpg",ref_id:"fbd7719d-1c4a-497d-96a8-1d34e2e91702",twitter_handle:"Colin_Aulds"},{name:" Mark Moss",profile_picture:"https://pbs.twimg.com/profile_images/1501276126823346177/6grHYzO4_400x400.jpg",ref_id:"5a1cc110-3363-4dd1-a568-e80f70a51925",twitter_handle:"1MarkMoss"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/26808829/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2021-1-16%252F91cb3e87-a549-79e0-bed0-3b2785b9eed4.mp3",node_type:"clip",pub_key:"02c431e64078b10925584d64824c9d1d12eca05e2c56660ffa5ac84aa6946adfe5",ref_id:"1376395c-9c36-4f82-bdde-86ce6cf7ba26",show_title:"BTC Sessions",text:"most of the time, spent some time with a small company. Now I'm back with the big guys and account management. So I'm not doing as much face to face anymore. But in sales we talk about 90% of sales is listening. So to Mark's point earlier, you don't just say, you know, I've got this widget and it solves 86 problems. Nobody cares about that. If they only care about the one, maybe two problems that it solves for them that's specific to their use case, right? So I have a personal rule with friends. I'm from a very small town. I don't have a lot of friends that are in a bitcoin. I have had two people this week alone come to me. Usually starts on like, Facebook messenger or something, and then we meet up for a beer and chat about it, but I never bring it up. I'm involved a little bit with the Bitcoin runners fitness club over in Europe, so I have a couple of t shirts and stuff, so I wear them to the gym so people know, but I never bring it up. I let people come to me, and then they bring up, listen, I'm worried about how much my grocery bill is going to be next year. I'm worried about bank of Canada borrowing all this money on Canada too. So it's like they say, we're borrowing money from the bank of Canada, but what they really mean is that we're just printing it, and it's impoverishing all our children and grandchildren, right? So I wait for those kind of conversations, and then usually I'll sit down with them with a beer and say, what do you want to do? Do you want to get in? I don't want to show anybody while I'm here, but I do tend to point people to shake pay. I find it's an incredibly simple user interface. If you can send an e transfer, you can use shakepay, share it to Ben. Because you pointed me to blue wallet when I was kind of onboarding my wife a few months ago. I've been doing the hardware thing for a little while and was kind of out of the loop as far as digital wallet goes outside of lightning, so I asked for you for some recommendation. Blue is great because it's got some very basic features. It's easy to learn, and then you can kind of scale up from there as you need. But I think I have an onboarding a lot of people. That's not my goal here, but that's my system for doing so when it arises, right, is that I wait for people to come to me, and I wait for their specific problem, and then I say, well, I can help you out. And this is the underlying technology behind bitcoin that may help alleviate your fears or put you on the right path to whatever decision is right for you. And sometimes that means they spend. I had a buddy the other day that cashed in $50 on his wealthsimple account after doing some stock trading just to see what it was like. And maybe he comes back to me. Maybe that's as far as he goes, right? But I've had other guys that I've helped out that I know are a little bit deep for average, regular middle class people. So that's my strategy for onboarding. It's not something I actively seek out, but I'm always happy to talk about it when it comes out. That's awesome. Tons of noobs coming in these days, and it's only just beginning. I feel like all of us are probably starting to get those friends and family members or even just random DMs from people on all kinds of different platforms. So exciting to see. But we've got our work cut out for us, that's for damn sure. So what I want to do, obviously, again, there's almost 140 people watching smash like button. Give this a share. Let's get a few more people watching it here. We're going to jump to Mark. Mark, dude, let's do a refresh here. What has you feeling bullish this week? Yes, I mean there's so much to be bullish for, right? But I guess today I was digging through some data, looking at working on my next video. Some of the data I was looking at today ",timestamp:"00:47:46-00:51:21",topics:["Bitcoin education"],type:"podcast",weight:5.149457931518555},{boost:0,date:1571767106,description:"Is the device able to verify bitcoin transactions? ",episode_title:"BUC Live: Lightning Hardware and Nodes Panel from The Lightning Conference Berlin",guests:[{name:"ketominer",profile_picture:"https://pbs.twimg.com/profile_images/1245972079528329218/YDUD9N2Q_400x400.jpg",ref_id:"2f8b0b59-6f23-4c89-973c-668cc7666998",twitter_handle:"ketominer"},{name:"Stacie Waleyco",profile_picture:"https://pbs.twimg.com/profile_images/1490885395390861317/MOzYmFOn_400x400.jpg",ref_id:"d4292662-08f9-4b16-a889-b61a401edcc2",twitter_handle:"satsie"},{name:"Christian Rotzoll",profile_picture:"https://pbs.twimg.com/profile_images/1593996559162773504/qKZTYL0I_400x400.jpg",ref_id:"8c13f2e9-d81a-4116-9ad7-d14a66d5f899",twitter_handle:"rtzll"},{name:"Sebastian Küng",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"04448652-5b1f-480c-a573-17c7de956e2c",twitter_handle:"sebastiankueng"}],hosts:[{name:"Anita Posch",profile_picture:"https://pbs.twimg.com/profile_images/1491071678725644288/yehGegWl_400x400.jpg",ref_id:"b60af304-7a57-4a2a-b988-92b960a6b0a1",twitter_handle:"AnitaPosch"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/357dc2db-2643-49f0-9393-5a20ed21d0fe.jpg",keyword:!0,link:"https://bitcoinundco.com/en/podlove/file/533/s/feed/c/mp3/029-en.mp3",node_type:"clip",pub_key:"03abd9980b0c94ddbce7bde91affd5894ca40aaeda0ee0a33503e0c9bb55307274",ref_id:"f6e48088-be00-4596-8731-433c94a02ddb",show_title:"The Anita Posch Show: A Bitcoin only podcast",text:"When I think about buying a Bitcoin node or Lightning node, I'm mostly interested in verifying my own Bitcoin transactions because I don't want the hassle to install a full note on my laptop and stuff. Do your products verify Bitcoin transactions? I mean, can I verify my own? I think I can speak for everyone here. That's the main goal of having the hardware for loans. Okay, I just heard that not all devices do that. So that's why I'm asking. I don't know, maybe this is a misinformation. Yeah. So those boxes, I think everybody has started with very small hardware. So I think the castle box also in the beginning. Raspberry Pi three. Raspberry. Also had the raspberry pi three in the past. Now also offering or being able to use the Raspberry Pi four and with the response such a low powered hardware, then you would need maybe to get the whole blockchain, you were not able to verify it yourself, so you had to rely on some kind of downloaded blockchain, whatever. That was not a good approach. But now with the recipe by four and I think even also all the other boxes are using now power full enough hardware to really verify the whole complete blockchain yourself and have the whole copy of the blockchain then at your service. And then you can do everything with your node and verify everything on your side without relying on any third ",timestamp:"00:07:06-00:08:37",topics:["Bitcoin","BTC Node"],type:"podcast",weight:5.1300153732299805},{boost:0,date:1266645600,description:"Big business Vs Small Business in the Free Market",episode_title:"13. Monopoly and Competition",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ef62c7ab-ef09-47b7-9af4-2ebe2384a72f.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/13_AustrianEcon_Rothbard_1972.mp3",node_type:"clip",pub_key:"",ref_id:"cd0d29e6-af1f-4a94-8fc9-cc38a719807b",show_title:"Austrian Economics: An Introductory Course",text:"thing about big business versus small business. It's not always true that big business can out compete small business on the free market. When Standard Oil, for example, had achieved something like 90% of the oil refinery business by 1900, they began to slip. After that, before the anti trust action against Santa world. They began to slip because they weren't the company gets too big on the market, they began to get sluggish bureaucratic. They don't look for new things, new inventions and new processes. Santa role was the last major company to get into the involved. Santa Claus always been based on Cleveland western Pennsylvania oil fields. And so they're the last major company that began interest in Texas and Oklahoma oil fields. This is the wave of the future. And so then Golf comes in as a new company in Texas and they begin to outdo being to take an increasing share of the business away from San Oil company. And the same thing happened all across the board. US steel, for example, gets formed with something like an attempt to monopolize. The whole steel industry gets form as 80% of the share of the market or something like that. It's now something like 20% slipping all the time. Every year USD sinks deeper and deeper into slots. They were too big, they were outcompeted. USD was the last corporation in the world, practically. They adopted the basic oxygen process, which is the latest improvement in the method of producing steel. And this is through many areas across the board. One of my favorite examples of this is the heroic small business which is always able to outcompete big business or larger business is therefore always put out of business by government. These are the heroic small pushcard peddlers. If you remember back to the push car pedaling masses. The push car peddlers, they have almost no capital. You can't get much smaller than a push card cover. The capital has push cart and as they supply apples or whatever, and that's it. Sometime before the push cart, the push car pedal was sort of the aristocrat of a pedaling business. Before you got to be wealthy enough to be a push car pedal, you just had a box or a case or the lease or something, that was it. Anyway, the push car peddler doesn't have any capital. It doesn't have nearly as much capital as retail stores or department stores, et cetera. And yeah, he has a great advantage. He's mobile when it's raining out, he packs up shop, he doesn't have to pay rent, he zips around, he can get to the best corner, he can get to the rush hour corner, 42nd street or whatever. And therefore he's usually able to do very well in competition to such an extent that in city after city, in town after town, the United States, the retail interests, the retail stores were able to put political pressure on the government to outlaw the pushback, either by charging a license to them, which is prohibitive, or by just putting out of business altogether. Usually on the grounds, of course, the government can't say, municipal government can't say we're doing this because we want to privilege the retail stores. That would be a little too hairy. So they say it is unaesthetic. New York is so beautiful, for example, and the streets are so beautiful, we can't allow the ice to push guard pepper. So you can imagine how much ice that cuts. And the retail business, by the way, the whole history of the retail business in the United States is a whole history, a whole record of humbling, the competition of new people coming up and delaying a competitive process by the use of government. First, it was a traveling salesman. As you all might know, traveling salesman jokes were sort of the big dirty joke thing years ago. And the reason is the traveling sales were illegal most of the time, 50 to about 18 months. The institution of traveling sales when it first comes in about 1850. Before that, there are only six stores, and you buy from somebody in New York, in Detroit. Traveling sales is a great new invention in the retailing industry. And for about 25 years, I put out a business because the existing stores are competing in the traveling sales. And then, like the fact traveling sales, when mobile flexibility zip around, they sell on a personal basis and all that. And so town after town, all over the United States, past ordinances either outlawing traveling sales altogether, ultimately placing very high license taxes in order to get into beach for Wyoming, have to pay $100 a year or something. So if the traveling sales going to pay all the license fees, you would have to pay $20,000 a year or something out of business. As a result of traveling sales was always in a state of illegality. He was constantly on the lamb from the cops, one panel to the other. Therefore had a sort of disreputable. The whole profession was disreputable. Something like bookies today, I guess. And so he had a family salesman joke because of the disreputable profession. Finally, after 25, 30 years of being a state of outlaw, they finally did so well, they finally pushed their way through, and they finally allowed to exist. It became accepted in the retail industry, and most firms then began to operate employee traveling. So they sort of joined them if they couldn't lick them no sooner. That happened in late 19th century. Things are doing pretty well, and all of a sudden, that vicious new monopolistic thing comes in horizon terrible thing, the apartment store. An apartment store first comes in. I said, oh, my god, it's awful. Awful thing. Instead of having one store sell, one product has this terrible monopoly store like Macy's that's selling everything. That's obviously an evil monopoly. You have to smash it. And so the government starts putting on department store, special department store taxes and special restrictions. And that took about 20 years before the department stores worked themselves out of that. Finally, the department store is just about accepted, and the hobbling of the apartment store is eliminated. We got a new terrible thing. The chain store. Amp the first big chain store. And I still remember I'm moving up to remember the days and amp an evil monopoly and you have to smash it and break it up because the mom and pop stores are going to be put out of business. And that's where they had spaceway. And all these others coming out competed amp and nobody talks anymore about breaking up amp. Amp is pretty cruddy shape in comparison with the newer and more efficient stores. ",timestamp:"01:13:30-01:19:27",topics:["Big business","Small Business","Free Market"],type:"podcast",weight:5.126088380813599},{boost:0,date:1471930200,description:"Survival rate of small business and startups ",episode_title:"TheMacroView Episode #3: Financial Entanglement",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/8e52e9c4-52e8-4dea-8ed9-8c6a7fcef25a.jpg",keyword:!0,link:"https://www.blogtalkradio.com/themacroview/2016/08/23/themacroview-episode-3-financial-entanglement.mp3",node_type:"clip",pub_key:"",ref_id:"bdc4757d-1e87-4fa3-b293-6f375af8490f",show_title:"The Macro View",text:"scatter plot chart and it kind of shows from the first year through the 10th year, we have a little bit more data than that, but this was a more complete data set and more recent as well. This is slide number 13 on episode four slideshow. And basically what this shows is that look, after year two, about 79% of businesses are still alive. Tier three, about 67%. This notion, which we hear, it's a cliche that we hear a lot throughout our lifetimes, that within three years, 90% businesses or nine out of every ten businesses go bankrupt, it's actually not true. About one out of every three goes bankrupt. Two out of every three are still alive after three years. Now, after four years, it goes down slightly under 60%, just 60%. After five years, just under 55%, about 53%. After six years, about 48%. After seven, about 44. After eight, about 41. After nine, about 38%. And by year ten, about 36% of the businesses are still alive. Essentially, after three years, you got one out of every three that's gone bankrupt. After ten years, you got two out of every three that's gone bankrupt. So is it that risky? What we're not showing here in this slide, and I may add a slide trying to show this, is what the upside is not every business is a grand slam, not every business is a grand slam. And you could still lose money as an investor through dilution and have a restructuring and whatnot, but the business still be alive. That is the case. I'm not going to deny that is the case. But if businesses are generally surviving far longer than what we expect, should there be this much fear built around this idea of businesses going out of business really quickly and not being able to lend to businesses? If you're a private individual who's not necessarily in a credit investor, not really even having a market for it, not really having exchanges for it, making it highly restrictive on banks and offering incentives to banks to only lend in certain ways to these small businesses, ie. SBA loans that are guaranteed 75% are guaranteed by Small Business Administration of the government, and in some cases, higher than 75% are guaranteed. So why would a bank lend to any other small business other than through an SBA loan? So you've got misalignment of incentives, you've got a number of other issues on the banking side, and then on the private individual side, you have literal laws that make it more difficult. The lower the amount of capital available to people the lower the amount of capital available to people that are trying to start a business and restrict mechanisms for delivering capital from an individual with capital to provide any business that needs capital to put to work, and then being able to come to a transaction that makes sense, a value that makes sense to both of them. And to do this on a mass scale with thousands of people. As opposed to trying to find one or two or three wealthy individuals and have it set up in the right way with technology. You can do it really. Really quickly and really. Really easily. And you can be fully accountable and you can have the bookkeeping and records keeping. You could do based annual reports that provide enough information to shareholders and most good business owners are going to do that anyways. But the idea that we don't have this mechanism in place and that it's actually illegal to raise money from somebody who's not an accredited investor from the general public if you're not a publicly traded company. And I-E-A large company because a lot of the exchanges have rules where you have to be over a certain size in order to list on those exchanges. Now, there's the over the counter exchanges that don't, but a lot of those are looked at very poorly by mainstream America, and there are no mechanisms offered by the big retail brokers for equity or debt crowdfunding for small businesses to be able to access those markets. And quite frankly, I don't blame them for it yet because the rules are not really clear on where that's going to go. The jobs that tried to clear that up, and now you get the SEC trying to really write the rules, and it's not really much is changing. They can do well. If you're worth 50 million, want to raise capital from the general public and not go public, then you can kind of do that. But you got to be big already. 50 million is not a huge business, but that's not the size I'm talking about, okay? The size I'm talking about are startups to three or $4 million, maybe $5 million in revenue, or if it's a very low margin business, maybe two or 3 million to $5 million in profits. That's the size business that I'm talking about that has difficulty gaining access to capital. And we need to figure out a way to match people who have capital to lend or invest with businesses that are of that size. That have capital. That have a need for capital to be able to put it to work and put it to work quickly. That will hire people that have good business models. That they could scale them. Will become profitable. And all they need is access to capital to get there. That's what the next show is going to be about. I hope you guys enjoyed this little pop up show that I did tonight, talking about the cost of the regulatory environment. Remember, it's about 11% of GDP. That's the hidden cost. That's the hidden cost that affects people's wages, that affects the amount of money that you pay at stores for goods. That affects every aspect of your life. It affects the cost of the house you buy or the home that you rent. Whatever the case is, whatever you're thinking about, why is this so difficult? This is a big reason why these regulatory costs $1.8 trillion in regulatory costs, the hidden regulatory costs, which are more than the federal tax base, excluding capital gains and some excess taxes and things like that. But if you're just to account for corporate and individual income taxes, the regulatory costs are bigger than that income tax base. That's insane. Those are hidden costs that we're all feeling right now. We're wondering why. And some people are saying it's Mexican immigration. Some people are saying it's free trade agreement. Some people are saying other outlandish things that have no basis in reality or tried and true economic theory. We do need to simplify the tax code even if we leave rates the same, we got to simplify it. We got to flatten it. We got to flatten it for people. We got to make it a lot easier for them to comply. It's got to be able to be filled out in a matter of a day. And same thing for small businesses and really for all businesses so that they can keep more of that money and they're not having to pay auditors and accountants to prepare it. And we've got to go to a system where we adopt somewhat of a no harm, no foul rule for business owners where so long as we got to get rid of all this idea, we got to regulate best practices. Best practices regulate themselves. If you're not providing best practices as a business owner, you will have a competitor who will and will steal your market share, will steal your employees and we'll put you out of business. That's what happens. That's how competition works. That's how the market works. So we've got to get rid of rules and regulations that serve no purpose other than to say hey, we know better than you and if you don't do it our way, we're going to impose fines on you. All those do is set up barriers to entry and really do disincentivize the wealthy people who would invest under the current system from investing and would disincentivize the nonwealthy people who they're just not able to invest in these companies from investing if they understood those situations as well. Because it's very risky if your business could be put out of business by the government because you lost a sheet of paper or because you happen to run a factory and you have to have a stop button for the assembly line. But the assembly line is set up in a way to where it doesn't really work that way in your factory, which is a real case. I can't remember the name of it, but I'll post on the website when we eventually get the website up and going. But this was an actual case where essentially OSHA came in and said you have to have this and that. If they had actually understood the business circumstantially, not just broadly, these are the rules, these are the regulations, you have to do this. They don't understand why they really didn't need that. And there's a lot of those cases all throughout every single industry. No matter what industry you're talking about, you have tons of regulatory costs that are related to things that don't matter at all, that barely ever happen. And if they do happen, they're more of a tragedy that wouldn't be prevented by that regulation. And the reason that regulation exists is primarily because some expert who either worked for or used to work for a big major corporation, walked into a congressional hearing and publicly gave guidance to the regulatory bureaucracy that was writing the rules that Congress delegated the right to write and this expert is guiding them. This expert basically works for one of the big companies in that industry. That's how these things work. They don't come to small five person shop say hey, how do we do this? No, they go to a quote unquote expert from a major corporation and that quote unquote expert from a major corporation has their own interests and they're going to guide what they want to guide. At the end of the day. You end up with massive regulatory costs that don't really solve the problems that people cried out for regulation to solve because those problems are best solved by competition and regulatory bureaucracies prevent competition and by preventing competition they prevent the end goal that they've stated to try to achieve. Which is to create more equality in these markets and more fairness in these markets and a better distributive share of whatever and to have less negative incentives in the market for people to go out and commit crimes. Financial crimes. And to rip people off to make it harder for people to do that. Well the way you make it harder for people to do that is you have tons of competition. That's the way that you do that. And by having all this regulatory cost you reduce the competition and therefore reduce the amount of natural regulation that occurs from it. Well everybody, I hope you enjoyed tonight's pop up episode. I'm going to call tonight for there again this ",timestamp:"00:44:04-00:55:36",topics:["Small business","entrepreneurship","startup","regulatory cost","income tax"],type:"podcast",weight:5.105514287948608},{boost:0,date:1596686400,description:"[[Bitcoin Energy Consumption]]",episode_title:"Chat 45 - Bitcoin an Energy Revolution A panel at the VOB Conf",guests:[{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Christopher Bendikson",profile_picture:"",ref_id:"d72ead54-7bff-4874-870f-123e665fddfd",twitter_handle:""},{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"8ab125e2-e555-4adc-817a-bbf5bb93bf40",show_title:"Bitcoin Audible",text:"really a fair comparison to say, like bitcoin uses x amount of energy, like electricity versus x whatever small country, when you're only looking at the direct energy consumption in that country and not looking at the fact that they're getting all the resources from other countries that are consuming that elsewhere. Not only that, but you can flip that entire narrative on its head and say when bitcoin uses more electricity than Chile, that means that even if Chile flipped their entire electricity infrastructure to try to mess with the bitcoin blockchain, they couldn't. Energy consumption is a good thing, it's just a matter of how it's consumed and how we produce that. Let me add one more thing. Everybody knows the market cap off gold, right? That's around 9 trillion. And that's 50 times more than bitcoin. And we know it from bitcoin. That like by theory, if the bitcoin price is, say, 9000, by theory the production cost of bondoid bitcoin should also be 9000. It's not the case, I know, but by theory it should be the case. So now take gold. Honestly, nobody discusses gold. If gold, if the market is having a market cap of 9 trillion and times 50 times more than bitcoin, then in case gold is produced, then what? If by theory the production price of gold that's the market cap of today, 50 times more resources are being spent second by second, day by day to somehow get gold out of the ground. But this is not electricity, that's equipment and machinery and that's kind of, I don't know, all kinds of things which are working in some kind of gold mine. But isn't this also wasted resources to some degree? Nobody discusses this and it's 50 times higher at this point. I remember a paper from cruises to my loan that are exactly comparing metal mining with crypto mining. Oh, interesting. Okay, so it wasn't nature sustainability in 2018. It's just so much more dangerous to the environment like the cyanide that is used to extract the gold. And then if you just go through all of the environmental damage that gold mining does, bitcoin is like a space compared to what goes on in order to get sold out of the ground. And it was funny when gaming was brought up, I was speaking a conference, I think it was decentralized in Athens Green back in November. And there were a lot of people there that into cookie and other nonsense. And I got into this big argument with someone that kept saying how bitcoin is so bad for the environment and mining can continue to happen and how proof of stake of currency is the future. And he was a lot younger than me. And I asked him, do you play video games? I haven't played video games since I was about 21, 22. And I asked him do you play video games? And he said yes. And I said, well, how much electricity are you wasting by playing video games? Where is the productivity in that? So if you take all the gaming in the world, everyone that ever plays video games, you combine all that, how much electricity that is using and please make an argument that is more productive use of electricity than bitcoin that is trying to give everyone politically neutral, government free money. This is why this entire line of discussion is kind of like a bit of a red herring. Because the problem is that we don't have a good way to price externality and if we did, then the price mechanism would take care of the rep. I think it's partially done and I agree. I think a lot of it is a red herring and kind of missing the major point, which is the real environmental ",timestamp:"00:25:05-00:29:09",topics:["bitcoin energy consumption"],type:"podcast",weight:5.094594955444336},{boost:0,date:1665118800,description:"The Macro tyranny ",episode_title:"Breaking Away: On Secession and Small States",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/6ec51741-3d93-4116-a619-d62a7cee1feb.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/102-radiorothbard-20221007.mp3",node_type:"clip",pub_key:"",ref_id:"8d9636c6-d564-47e0-89b6-5b9f87b27a34",show_title:"Radio Rothbard",text:"damage to the same extent that macro tyranny maximizes it. If Hitler had ruled only Berlin and Stalin only Moscow, the history of the world may have been considerably less bloody. Large states are playgrounds for despots and dictators, while small states provide far fewer opportunities for ambitious politicians to spread their mayhem beyond their local communities. But we don't have to take lose word for it. The highly influential political scientist Hannah Arrest has discussed how only larger states can hope to be truly totalitarian. Even she notes that a number of states in Europe in the 1930s had pushed totalitarian ideas and as their ideal, but outside the Soviet Union, none managed to actually achieve the goal. And here's a long quote, but it helps us, so we'll quote it at length although totalitarian ideology had served well enough to organize the masses until the movement seized power, the absolute size of the country then forced the wouldbe totalitarian rulers of masses into the more familiar patterns of class or party dictatorship. The truth is that these countries simply did not control enough human material to allow for total domination and its inherent great losses in population. Without much hope for the conquest of more heavily populated territories, the tyrants in these small countries were forced into a certain old fashioned moderation, lest they lose whatever people they had to rule. This is also why Nazism, up to the outbreak of the war and its expansion over Europe, lags so far behind its Russian counterparts in consistency and ruthlessness. Even the German people were not numerous enough to allow for the full development of this newest form of government that is totalitarianism. Only if Germany had won the war would she have known a fully developed totalitarian rulership. So rents a Holocaust survivor, hardly a defender of the Nazis, but even she concluded that yeah, they wanted to be totalitarians, but not even Germany was big enough to bring that about. So they're smaller is better in this case, especially when it comes to the worst case scenarios as well. But what about that middle ground, right? We're not necessarily just always talking about avoiding full blown totalitarianism, but we do find some of these previous examples. You want more free trade, you want more freedom, you want the ability to escape despotism smaller states are generally your answer. Now, as a final issue though, we have to cover, as the book does, the issue of international relations and war, because we see these advantages all for the domestic population, right? But anytime you bring up this topic, you're going to hear that breaking up states into smaller pieces, this is bad, because if we reduce the power of the US government or any other western states, then China will step in and conquer the entire planet the next day. So this is a difficult topic and so I try to provide as much of a treatment as I can in the book. Certainly it's not exhaustive and we do need more people really exploring these issues. And with all international relations it requires a certain amount of speculation. But some good research has been done looking at the issue of how do small states fare against these larger states. And so there are a few things we can note when talking about this. For example, the assumption that large states will always dominate in international relations is based on mistaken notion that larger states in terms of GDP access and access to military resources currently are necessarily the more powerful states. More accurately, however, it is wealthier states and blocks of states, not necessarily the larger states, that tend to have an advantage in terms of military deterrence and innovative research by China expert Michael Beckley, for example, he notes that the biggest variable here is actually GDP per capita, not overall GDP. And this helps explain why we can find many cases of smaller states successfully deterring and defeating larger ones. During the 19th and early 20th centuries, for example, both Japan and the United Kingdom repeatedly defeated and humiliated the much larger China. At the time, a reliance on GDP and military manufacturing statistics would also suggested the Soviet Union three times the geographic size of the US. And with an immense weapons industry, should have outlasted the United States. The GDP measure also suggests that Israel is the weakest military power in the Middle East. Clearly, none of these things were true are true. These really case is instructive because it shows us that small states, rather than having to become big themselves, can simply freeride off larger states as the State of Israel has managed to long exploit American wealth and taxpayer revenues without actually giving up its own independence. Moreover, the possibility of nuclear deterrence diminishes the need for immense and expensive conventional forces, as again demonstrated by the State of Israel. Deterrent defense capability can thus be obtained even by Switzerland sized states. And then of course, there's no reason why a group of small wealthy states cannot very effectively form an alliance of their own among themselves without having internal control mechanisms, as has been done throughout history. You don't necessarily have to have small states form a state of their own in order to carry out effective defense measures. So for example, for the United States to break up into smaller pieces and there's no reason to assume the new, smaller, successful states would be at the mercy of larger ones, there is every reason to assume the new smaller American states would be just as unified on foreign policy as they are now, which is to say, virtually in lockstep. Unfortunately, no matter what might be said about small states and international relations, many will cling to the idea that because of alleged foreign threats, virtually nothing, nothing could justify secession ever. There is, of course, nothing new about this attitude. For centuries states have justified their bigness and their taxes on the claims that you need us to defend us against foreigners. And of course in the United States we've seen this in many cases where you're just supposed to accept whatever the government wants to do in the name of national defense. And this was, I mean, the conservative movement standard bearer back in the 50s. William Buckley said this in the early 50s we have to accept big government for the duration, for neither an offensive nor a defensive war can be waged given our current government skills, except through the instrument of a totalitarian bureaucracy within our shores. We must accept large armies and air force's, atomic energy, central intelligence, war production boards and the attendance centralization of power in Washington. So yes, freedom is all right, but I mean, come on, you're just going to have to have the CIA and you're just going to have to surrender those freedoms until we defeat all the bad guys in the whole world. If that takes 300 years, thens the breaks. So the real world experience suggests that fortune actually favors the decentralized in terms of wealth, freedom, economic development and more. And is for these reasons that Rothbard supported what he called universal rights. Locally enforced as an adherent of national rights, Rothbard believed rights are certainly universal, yet he also understood that their enforcement ",timestamp:"00:23:17-00:30:41",topics:["Macro Tyranny"],type:"podcast",weight:5.224080560699853},{boost:0,date:1656979200,description:"How Lightning can improve the feedback process on music platforms",episode_title:"Lightning Networks Impact on Music w/ Michael Rhee, Founder of Wavlake - Voltage Twitter Spaces",guests:[{name:"Michael Rhee",profile_picture:"https://pbs.twimg.com/profile_images/1348612450/IMG_0298_400x400.JPG",ref_id:"91302fb9-2d08-400e-bd1f-2d52e0af5508",twitter_handle:"rheedio"},{name:"@rheedio",profile_picture:"https://pbs.twimg.com/profile_images/1348612450/IMG_0298_400x400.JPG",ref_id:"a20f5e1f-5969-47a6-b986-faf29c0c4da0",twitter_handle:"rheedio"}],hosts:[{name:"@voltage_cloud",profile_picture:"https://pbs.twimg.com/profile_images/1508657900486422529/Lfa70poj_400x400.png",ref_id:"3b622187-60ce-43c2-a21f-ae749c2d961a",twitter_handle:"voltage_cloud"},{name:"Bobby Shell",profile_picture:"https://pbs.twimg.com/profile_images/1090426395979890690/uUdaFXo__400x400.jpg",ref_id:"438f8067-3fed-49d2-91d9-5018cb043aac",twitter_handle:"BobbyShell2"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2ec62250-4755-4616-8342-096a2cfab95f.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=aZt44KjXHh0",node_type:"clip",pub_key:"",ref_id:"3db5f375-817e-4275-980c-6475803c430b",show_title:"Voltage",text:"this, we chatted a little bit about two things I had brought up to you about how independent artists, whenever I launched my first song on Spotify, I had to go through CD Baby or one of these groups that helped push your music to these platforms. And the thing that was discouraging was it said, hey, when you hit $25, you can claim your first cash out. And I was just like, that's going to take forever with how many plays you need to get. So that got me excited. And you actually brought up an even more important point, was this feedback loop that it creates for young artists because you can be motivated and see these amounts and stats come in that are much lower denominated. And that's actually a pretty impactful thing for a young entrepreneur. Let's dig into that a little bit and just what that can actually do for creatives. Yeah. So, Bobby, just using yourself as an example, you publish your music, it went up on Spotify and maybe a dozen other streaming platforms. How long did it take for you to figure out how many listens or streams or dollars you earned from those platforms? Like from the time of track was played to the time you got some sort of feedback about that? Do you know what the lag was like? So it was actually pretty challenging to hear and kind of find out because there was obviously on Spotify you can see the plays you have, but like in some of these other platforms, it was actually pretty hard to see that data, like being a new artist. Yeah. Because it's all opaque. And I think this is one of the interesting things or interesting aspects and features of the value for value model that podcast and 20 is built on. And then also experiments like Wavelake where you have users who are tipping SATS to artists for their tracks. And I think one of the, I guess, challenges as a new artist, when you're deploying your music and distributing it via some music distributor and blanketing all these different streaming platforms with your music, you're essentially throwing your music into a black box. It's virtually a black box, and you might get some sense of the kind of traction you're getting on the platforms over the course of a few months. So there could be a lag time of two to three months where the streaming platform has gathered some sort of statistics on how many plays you've gotten, and then that translates into some kind of a royalty payment that is obviously calculated from some kind of internal algorithm, and then it's spit back to the artist in the form of some number. Let's say it's $30 for a bunch of plays that happened three months ago. So there's a pretty long lag time between when someone was engaging with your music versus when you find out about it and see some kind of a reward for that work that you put in. And what's been really cool to see is with some of the artists on Wave Lake, they're receiving these like, small tips. It's nothing to write home about, but at the same time, as you said, if you're a newer artist and you're just working on honing your craft and finding your voice, those small monetary donations, those little tips operate as a really strong encouragement mechanism. And it's also an instantaneous feedback loop. So you could post a song on Wavelake, for example, and that day, like that hour, someone could hear it, love it, tip you, and you'll see that show up in your wallet, you'll see that 21 stats or whatever the user wants to tip you, you'll see it show up in your wallet near almost immediately. And so I think that can act as a really strong feedback mechanism for someone who especially if I speak about myself a little bit like making music. As a teenager in my bedroom, I was just recording kind of lame demos on a fortrack just over and over. And then years later, MySpace came along and you put those up and see how many plays you get. And I think we're at a point now where we have this really novel monetary network that's open and it's completely borderless and anyone can use it. And then on the other hand, you have the ability to pay and support artists that you love. And as a creator, you can not only benefit from that monetarily, but that can be a lot of encouragement that a particular song or some sort of direction you're going in artistically is resonating with someone out there in the world or a group of people in the world. And that kind of motivation means a lot, I think, when you're just starting out and you're finding your voice. And you could have other ways of using this kind of feedback loop as well. For example, if you have a demo or a couple of lines of a verse or a melody, and you want to share that with a group of fans or potential listeners, and you can say, like, hey, if you like this, what do you think of this? And then people start tipping because they want to see more of that, or they want you to flesh that out into a complete song. I mean, the possibilities kind of again, they go as far as we can imagine at this point. And I think that is a much different model. It's a very different model from what exists today in these very sort of monolithic corporate streaming platforms, where you're essentially like, you're forced to throw your work into this giant pool, and you're out there competing with heavily marketed acts and figuring out how you can show up in the midst of all that is pretty difficult. And even when you do get some engagement, you won't find out about it for months. And so I think there's a lot of potential not only to create a better royalty mechanic for artists, but it's also a way to encourage art. Yeah, absolutely. So the feedback loop portion, one thing about that that I love is, like we discussed before, is imagine you're a young artist and you put music online and you just see like, five SATS come in, ten stats. Of course, you could obviously see a million SATS come in, but that's fairly uncommon. But to have these kind of small affirmations towards the art you're doing or the content you're creating, or just these positive reinforcements, one of the biggest things I know for anyone pursuing anything psychologically in the world, like when we talk about just the psychology of it, is it's hard to get affirmation. We're a digital world. There's a lot of working from home. And one thing I love about lightning is there's this positive and encouraging reinforcement where we can reward each other in minimal ways, but whenever you see that come through, it kind of helps you push through. And I have a friend who struggles with being creative due to not having kind of the reinforcement he needs. And he's one of the most talented people I know. And I just really wish that was there. And I could see that being really transformative. We've heard safety and talk about fiat art and things that are not fiat art, et cetera, and to see true talent be rewarded and have this really kind of grassroots incentive mechanism I think is really important. And it does kind of segue into what I was talking to you about before. As far as content creators just being on the web, people have the opportunity to do anything they want and even leverage music in different ways. And there's obviously a lot of opportunity for people who are musicians to create reach. But there's even ways that people who create content, they could even leverage these creative, independent songs in really unique ways to, you know, further their art. So it's ",timestamp:"00:05:55-00:15:37",topics:["Lightning Network"],type:"youtube",weight:5.061400574481365},{boost:0,date:1624507200,description:"Intro",episode_title:"Bitcoin Fixes This 48 Small Business with Ali",guests:[{name:"Ali",profile_picture:"",ref_id:"1169edf2-a89f-4d89-94a4-1be1a7b9aef0",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2536a974-d668-4ac2-8613-0b37aa0ca08c.jpg",keyword:!0,link:"https://anchor.fm/s/2a4e8034/podcast/play/36003846/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-5-23%2F969a4306-e9eb-95c5-0e15-42d37c0e61e8.mp3",node_type:"clip",pub_key:"",ref_id:"01dc5a33-88e1-49ef-abb3-c5744cf8a046",show_title:"Bitcoin Fixes This",text:"Welcome to Bitcoin Fixes this, where we explore the impact that Bitcoin will have in all aspects of society. Today's guest is Ali, owner of Tahini's Restaurants and Bitcoin Enthusiast. He is a small business owner who's been through a lot of different ups and downs in the business. In this episode, he talks about what it takes to make it in the world of small business, why he decided to put the Treasuries of his company into Bitcoin, and why Fiat money is so destructive. To say Ali is a Bitcoin enthusiast would be an understatement. He's been cheerleading Bitcoin and explaining how Bitcoin is great for small businesses since his discovery of it more than a year ago. I loved learning about the hustle, the unfair advantages of the large government subsidized companies, and why companies like his have a fighting chance with Bitcoin. This is the future of businesses built using Bitcoin savings technology. I hope you learned something. Ali Tahini, how's everything going, man? Good. Jimmy. How are you? It's an honor to finally be at your show. I'm a big fan. I've been looking for a while now. Oh, well, that's awesome. Yeah. It's always interesting to get, like, different perspectives and stuff. And you certainly have an interesting perspective because they're running a small business for a while. And obviously you have decided to put some ",timestamp:"00:00:00-00:01:25",topics:[],type:"podcast",weight:5.0513938665398985},{boost:0,date:1658322407,description:"Many causes of diarrhea such as fat malabsorption and bile acid malabsorption (1/3 of IBS diarrhea cases)",episode_title:"Dr. Norm Robillard - SIBO, Digestion, and Gut Health on Carnivore/Keto",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/5e0220b3-7c70-4423-bb76-3b75bc132fad.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/carnivorecast/Carnivore_Cast_207_Dr_Norm_Robillard.mp3?dest-id=775699",node_type:"clip",pub_key:"",ref_id:"167a7be2-f14b-455a-9c20-95057af5ea7d",show_title:"Carnivore Cast",text:"was interesting on a carnivore diet, it kind of flipped that around. And then also when I work with people that have diarrhea or constipation, we look at it mechanistically. So with diarrhea, it can be fat malabsorption, it can be bile acid malabsorption. Right. Most of 95% or more of the bile that improves that helps solubilize the fat so the lightbased can digest them. It's reabsorbed in the terminal small intestine before it hits the lodge ball, goes back to the liver, saves a lot of energy because cholesterol is an expensive molecule and that's kind of what bile is made up. So if more than just a couple of percent of the bio is malabsorbed, it leads to diarrhea. And it's believed that about a third of the IBS diarrhea cases of BIOACID malabsorption. ",timestamp:"00:21:47-00:22:41",topics:["bile acid reabsorption","diarrhea","small intestine","liver","cholesterol","fat malabsorption","bile"],type:"podcast",weight:5.039563265710219},{boost:0,date:1672772445,description:"Bitcoin miners and retail customers",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Foss, Max Keiser & the Plebs! 🍻😂",guests:[{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"Max Keiser",profile_picture:"https://pbs.twimg.com/profile_images/1361873587582472195/y57DiTYX_400x400.jpg",ref_id:"743efd07-d194-4c74-8663-45c3b8646b8e",twitter_handle:"Maxkeiser"},{name:"Isabel Foxen Duke",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"58989d4a-4a96-4ffc-8cbe-f233ffb10420",twitter_handle:"isabelfoxenduke"}],hosts:[{name:"Publord",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5b7b7e22-fe55-4e1c-933d-6544f6600351",twitter_handle:"publordhodl"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7de8e4aa-50a6-4f57-a8ff-6ca16a4f0ae4/76c3395a-4fe5-4802-8d2a-92cca1f1ea0b.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"7eea8bdf-2873-4759-b53b-a207aa8bcdcf",show_title:"PUBLORD",text:"So circling back real quick to the movie Generational Wealth, I think Tomer put it together. I think he had a partner in it. That's a fantastic movie on YouTube. And my take on the question that Jim asked about the utility company using all the power to mine bitcoin and not giving it to retail customers. Retail customers are always going to be willing to pay more than what a miner would pay for electricity. Because the miners are so distributed around the world, it's so competitive, they have to get really cheap electricity or use stranded electricity, right, that they have no customers for. So I think it would always be a situation where retail customers would come first in the pecking order. The utility company would much rather sell to them at a higher price than using that energy for mining. I would say assuming wait a minute, wouldn't you have to account for, let's say, governments preventing utility companies from raising the rate so high to make it profitable, to sell it to the retail customers over the mining? Because if they are the only ones that know their profitability for the use of that electricity in either direction, and they are the ones making the electricity, so they have the purest cost, the cost of getting it out of the ground and processing it, and then it's free to send any direction. But if they control one of the directions and it makes them profits, I feel like there's a potential economic conflict in there that could be created if you have enough other situation, enough other characteristics. Like a type of power company that has a monopoly kind of situation where it's the only company in a region and nobody else can't go anywhere else. Utility companies are regulated by governments already. I'm not a fan of government at any level, but I am a fan of people creating rules and holding other people accountable to them so that you can get along in a society. So I would hope that a utility company is going to do the right thing is the best way I could say it. Making sure that, look, they were built to make money selling to customers and they figured out a way for most people to be satisfied at that level. Now they find a revenue stream that comes into existence that wasn't there when these things were invented, these grids and the idea of giving, producing electricity for people, all of a sudden there's something that changes the game and it literally changes incentives, it feels like. And I just worry that it could. Turn into something they lose money doing that. Only if they can sell the electricity to retail more for more than what they can use it for for bitcoin mining if they had rate. Yes. I don't know that you can make that statement without knowing, without using an example of a potential price for bitcoin, which maybe we're not at it now because the value of bitcoin is too low. But if the value of bitcoin was ten times what it is now, it's way more profitable for everybody to mine bitcoin, even at a very small amount of hash rate. And so there could be a tipping point. Am I thinking correctly on this or not? Yes and no. Okay, thank you. The grid is designed for peak power, okay? It's designed for the 06:00 p.m. When everyone gets home from work, draw on the grid. And the reality is, most of the time the grid is not using or there's more supply than there is demand. So that's when you need the offtakers, which could be bitcoin miners, that will benefit from now from a source of energy that is not set by a regulator. Don't forget, the regulator sets the cost of electricity based on things like peak power demand, as well as global adjustments on their stupid wind farms and solar projects that are heretofore unprofitable. But you got to put the ESG narrative on it. So the reality of in Ontario is because seventeen cents of that is absolute government waste. That is waste that goes to producing wind farms and solar farms that have no economic benefit to the grid whatsoever, but because of their ESG narrative. So the reality is five cent kilowatt hour power, 22 cent kilowatt hour retail prices, that's all set by the regulator at the wrong price because of all their waste in their projects. The beautiful thing about bitcoin is that it takes demand from the grid when the solar panels are producing electricity, but there's no one there to take it. Right? That's the stupid thing about solar panels. The sun doesn't shine at 06:00 p.m. At night, and the wind generally doesn't blow at 06:00 p.m. At night. So these are the demands for bitcoin that will allow the regulated utilities to actually capitalize on the capital expenditures in their wasted products or projects, rather solar and wind. The most efficient power is nuclear, but the reality is building a nuclear power plant requires basically a 20 to 30 year payoff period because it is so capital intensive at the outset. Well, bitcoin mining will shorten the ROI on a nuclear reactor materially because it creates an additional revenue stream that otherwise wasn't there calculated in the cash flows. So lots of good things, jim, you're right. But the reality is the regulator sets the marginal price of power based on peak demand in the system, and that peak demand is so far in excess of what global bitcoin miners can mine at that I don't see a time when a utility would only be bitcoin mining. That just doesn't make sense to me. However, never say never. It's not a zero chance probability. It's just unlikely, in my opinion. ",timestamp:"00:47:21-00:53:52",topics:["mining energy","bitcoin miners"],type:"twitter_space",weight:17.809161091592113},{boost:0,date:1672772445,description:"Michael Saylor and integration of Microstrategy with the Lightning Network",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Foss, Max Keiser & the Plebs! 🍻😂",guests:[{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"Max Keiser",profile_picture:"https://pbs.twimg.com/profile_images/1361873587582472195/y57DiTYX_400x400.jpg",ref_id:"743efd07-d194-4c74-8663-45c3b8646b8e",twitter_handle:"Maxkeiser"},{name:"Isabel Foxen Duke",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"58989d4a-4a96-4ffc-8cbe-f233ffb10420",twitter_handle:"isabelfoxenduke"}],hosts:[{name:"Publord",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5b7b7e22-fe55-4e1c-933d-6544f6600351",twitter_handle:"publordhodl"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7de8e4aa-50a6-4f57-a8ff-6ca16a4f0ae4/76c3395a-4fe5-4802-8d2a-92cca1f1ea0b.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"4f0b1fbc-47f6-49c7-afe1-4978eabe5c4a",show_title:"PUBLORD",text:"Dude, it always helps when you explain things. I appreciate it. I will be paying attention. Keep my eye on it. But I take the simple route. Just accumulate as many SATS as I can and let the rest of the world fall apart around me. Can anyone up on the stage comment on Michael Sailor's comments about what he's going to be doing with Lightning with his team at MicroStrategy? Does anybody have any insight? Can I comment? Craig and I know I talk too much. He needs to buy IBEX mercado. And I told Mr. Sailor that at dinner in La. At the Pacific Bitcoin Conference. Now, Michael is not going to ever take advice from Foss. Well, maybe he will, but at the end of the day and Max Kaiser maybe can chime in on this, I was really excited to hear what Sailors shared those comments with us privately. So now that it's public yeah, he's trying to incorporate the Lightning protocol into his business. He's a very smart guy when it comes to that stuff. So I'm pretty excited. And I say tongue in cheek, he should just go out and buy IBEX Mercado. It's a company that had their origins in El Salvador and Guatemala that I'm pretty tight with. I say that because IBEX Mercado has some of the top Lightning engineers in the world. And Mr. Sailor was saying that it's very tough, and it is true, it's very tough to find Lightning engineers. So I think it's going to be great for what he does, because it's going to just further the development of the Lightning Network. And I actually think I hate to say this, but there would be a role for MicroStrategy stock within the portfolio of the Bitcoin Opportunities Fund. Why is that? Well, because for the first time in a while, it's looking awfully cheap to me compared to outright Bitcoin exposure, too. So Sailor is a very smart guy. In fact, he's too smart by a half sometimes. But I really hope he does continue this, because with him and Jack Dorsey pitching the Lightning Network, these are two brilliant people that have some big following and some big brains. So I'm not sure what Max thinks, but there's my two cent. Thanks. Right. Well, I guess the speculation was which way would MicroStrategy go to expand their bitcoin presence. I guess one idea was they would get more into mining, and then the other one was lightning networks. And Sailor has explained why he's not really interested in getting into the mining side of things. He's given a couple of times. He's explained that he just doesn't like the economics of mining. Plus, I think that he sees lightning as a gateway to massive global adoption, which would have the effect of increasing the bitcoin price, which he has a lot of bitcoin. So anything that's going to help that boost that price up, he's going to be interested in, for sure. So with Lightning, you've got that ability to really reach the billions of people that he likes to talk about that can be part of this unconfiscatable distributed wealth network of property. So I can see it makes sense. IBEX mercado is yeah, it's a company down here. It's an excellent company. He should definitely look at it and at the very minimum, he should take a position. I know we just invested in the company. We took a small position in their latest round for easy capital. And so it's looking good. Hey, that's awesome, Max, because I'm also an investor. I'm not sure if you knew that I was one of the seed investors in iVEX Mercado. So I love Jose. I love his team. A bunch of real smart South American or Central American programmers doing a great thing, doing merchant adoption. So onboarding the city of Miami. So there's obviously, you know, if you're onboarding the city of Miami and that's where Sailor lives, it's sort of cool. And then, to be clear, I hate bitcoin mining as a standalone business as well. The future for bitcoin mining is going to be the energy companies that own their own assets that mine bitcoin to balance the grid. So that is the key for Mr. Sailor. Don't get involved in a bitcoin mining company that does not own its own energy assets in the future. It'll be the Duke energy of the world. It will be the Tepcos, that's the big Japanese utility that's starting to mine bitcoin itself in order to load balance its grid. So there will be a time to own bitcoin miners, but it won't be a bitcoin miner that doesn't own its own energy source. It will be a bitcoin miner that is perhaps part utility and part bitcoin miner. That's balancing of grid for the benefit of all its contributors, which include users. It includes the different sources of electricity, whether it would be natural gas, wind, solar, nuclear, you know, all the mixing pot. And balancing the grid is a very difficult thing. So when you have a bitcoin miner that can power up and down with the flick of a switch, that's the type of bitcoin mining that makes sense, not the type that. Buys its electricity from ERCOT and then becomes hostage to the PPA, the Power Producer Agreement with ERCOT. They can be interrupted at any time. So the world is changing. Sailor is a smart dude. I think there's going to be a lot of really cool opportunities in the Bitcoin mining square, and that'll be with companies again, that are not your run of the mill Bitcoin miners, but have names like Exxon and Duke. Energy and TEPCO and all of these big utilities that are going to learn that bitcoin actually is a super useful tool to help them increase revenues and also balance their grid or balance their load base. So, yeah, some really cool stuff happening. Sailor is a genius. I'm not. So let's just see where life goes. ",timestamp:"00:27:47-00:34:12",topics:["Michael Saylor","Microstrategy","","Lightning Network","bitcoin miners"],type:"twitter_space",weight:17.809161086484142},{boost:0,date:1673549347,description:"Some common ways people lose bitcoin",episode_title:"BR019 - Proof of Keys Day Twitter Space ft. Lopp, Craig Raw, Lazy Ninja, mshodl, Rijndael & guests",guests:[],hosts:[{name:" Jameson Lopp",profile_picture:"https://pbs.twimg.com/profile_images/1594137153625276416/t1RUP3yP_400x400.jpg",ref_id:"062ec6c8-0fa2-4bf6-9aa1-7ab347df2530",twitter_handle:"lopp"},{name:" Craig Raw",profile_picture:"https://pbs.twimg.com/profile_images/1362841242665631745/UtA3FBQU_400x400.jpg",ref_id:"f2d1f5f0-2e1c-4d16-937d-4d48627cb955",twitter_handle:"craigraw"},{name:" Lazy Ninja and Rijndael",profile_picture:"https://pbs.twimg.com/profile_images/1362843002318721028/PNKWuu0-_400x400.jpg",ref_id:"23edbd50-9b0b-4e9a-aa56-57c2af074173",twitter_handle:"FreedomIsntSafe"},{name:"Justine Harper",profile_picture:"https://pbs.twimg.com/profile_images/1559710083734540289/HXTH4kqO_400x400.jpg",ref_id:"7b5a8957-1c4b-474f-bc38-291b382a13e6",twitter_handle:"mshodl"},{name:" Dee",profile_picture:"https://pbs.twimg.com/profile_images/1600155411868434433/9k1KQ8i5_400x400.jpg",ref_id:"ad33288b-28d4-4f15-9492-f64bce891613",twitter_handle:"HodlDee"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f1879df9-9bc6-4a76-951f-24548da768ef.jpg",keyword:!0,link:"https://anchor.fm/s/9500fad8/podcast/play/63399670/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-0-12%252F0a789f60-2c9a-6bbb-945a-79f3dd937cee.mp3",node_type:"clip",pub_key:"032d7609ff3f4a5232e4d60967971e23bc671dfb68020845a59bab5dc1f3b93b87",ref_id:"1958362b-b149-4466-b873-4d22a36d67d8",show_title:"Bitcoin.Review Podcast with NVK & Guests",text:"In terms of people losing their funds. Why don't we kick off with maybe talking about what are the most common ways people lose bitcoin? I'll start with one example, and maybe we go around the panel sort of like going through it. But one of the most common examples I see is people bamboozling themselves. People will screw themselves or their coins before they ever get hacked. So people will go out there, they'll hear an example from somebody that's either extremely smart or extremely dumb and sounds extremely smart, and they would have like, a super complicated setup, and you require many computers, and they would do a super complex multisig, and then the person can get the money out. A very good example of this in the way back in the day was bitcoin armory. There's probably a lot of people on this call that have lost money in bitcoin armory. It was fantastically safe. So safe that many people never managed to get their money out. So what other stories do you guys see as very common ways people lose bitcoin? Yeah, I'll go second here. When I first started, I was forex trading like an idiot, and someone was like, hey, I have a trading platform. Buy some, give me some money, and I'll double your money. The classic. And they were only taking bitcoin. So I was like, you know, what the heck is that? Never heard of it. Well, I've heard of it, but never bought it. How does it work? And they said, oh, you know, go on this exchange, buy some, and then send it over and I'll send you some back. And they were pretty smart. I started off with a small amount and a few hundred dollars and gave them it. And surprisingly, they actually did double my money. And then that convinced me to give them a lot more money, and that's where I felt a culprit of what they did. But I realized at that time that bitcoin was immutable, and there's no way that I could get back my money. And it kind of hit me hard, and I was really frustrated, obviously. But it was a user error, right? It was me being an idiot, being greedy, and wanting more money at the time. So I think people need to take a little bit of responsibility sometimes when they're handling their money. Obviously, I'm still a young guy and had lots to learn, and that sent me down the Bitcoin rabbit hole. And here I am, right, learning how to store my keys. A lot more safe than I did on an exchange. Right. So that's kind of my sob story. But it comes like some real pain to learn. Yeah, absolutely right. I think a lot of people, when they lose money, they get mad and they try and put someone else, blame someone else. But if you really learn about these things and store things properly and understand, then hopefully you don't have anything to worry about. Yeah. Thanks for that, Justine. Hey, I think you guys are on point. I generally think the majority of Bitcoin is lost by user error at unchained. And in personal experience, we deal with a lot of either newcomers to self custody or people have been dealing with single SIG, and this is kind of their first interaction with multisig. And what I found is there's just so much to learn about Bitcoin, right? This is kind of the first time in history that we can truly own our assets and we can truly own our money. And that takes personal responsibility just like anything else. If you want to grow your own food, if you want to protect your home, there are skills that you have to learn. And I think Bitcoin is the same way, but it's new. It's a new thing that people have to do. They're used to being able to just call the bank, right? The bank is going to handle it for you. So I think there's a learning curve. The problem is, in my opinion, that we sort of as a community, I use the word community loosely here as Bitcoin. Twitter, we sort of have this, like, all or nothing mentality, and I don't think we speak enough about like, there's all of these things that you can do, and each individual has to sort of look at their own attack factors and their skill set and what they're capable of, and it's okay to take steps, right? So in my experience, it's over complicating things. It's doing something because they saw on Twitter that was the only way they could do it, right? And maybe it was way beyond their skill set. The worst thing I've ever seen is multiple times past phrases. I have a love hate relationship with passphrases because I've seen people mess them up. Miss one letter, forget that you capitalize something, think that you could memorize it and you don't. And then all of a sudden you've lost access. So user error, over complicating things or making it so complicated that you then don't distribute your keys. So you've got this really over complicated system, but everything sitting in one drawer. So I just think that over complicating things, user error is sort of the biggest threat, even though obviously outside vectors are something that we need to consider as well. But I think that, yes, user error over complication and pass phrases in ways that are maybe too complicated for the user at hand. That seems like there's a trend there. So Lock has this fantastic list of people who have been physically attacked over their bitcoins. James, do you want to give people a little bit of a primer on that list and where they can find it? Yeah, sure. Well, it's linked directly from my main page@lop.net. It's the physical bitcoin attacks GitHub repository and like a lot of other things that we talk about with security in this space, I think it can be easy for people to blow it out of proportion. Now, I think last I checked, I've got nearly 150 different attacks that I've managed to come across and archive over the years. And this is actually a very, very small number. You know, in the grand scheme of things, it's probably one of the rarest forms of loss in the bitcoin space. But there are definitely some patterns and things that we can learn from that, one of which is that the most common event that causes this is people who are doing high value, face to face cash and bitcoin trades. So that like face to face OTC stuff. It's definitely risky because your counterparty may be a criminal and they may assault you and take all of your money. So there are things that we can learn from that. Also, a number of people who have experienced home invasions in this space, it generally happens because they're well known, and usually they're well known because they're being flashy and flaunting their wealth on social media. So you can definitely learn a lot about how important operational security and privacy is when it comes to protecting yourself physically. But kind of getting back to the original question, I think one of the most common forms of loss is when you're not holding your own bitcoin, you're keeping them with a third party. And that opens you up to just a multitude of forms of different loss, whether it's the third party having an insider attack, the third party being hacked, or in many cases, just the security system to access that third party account being compromised, usually through SIM swapping or password leaks or whatever. The best way I can describe it is that when you have your bitcoin with a trusted third party, you're still vulnerable to all of the same risks as you are with self custody, plus a whole lot more because of all of the things that can go wrong with the various third party actors who are controlling access to those keys. Yeah, not your keys, not your coins. Right. I mean, it's that simple. When it comes to third parties, it's so amazing to me that after Gox, I think a lot of the people who are new haven't experienced and maybe was forgotten. It was quite a long time ago now. And before that we had my wallet, which was, I think I can't remember, it was a lot of coin on that one as well. And then we had big Ver with crops. We had FCX in Alameda, which were like the recent high profile ones, celsius, all this stuff. Right. It's very unfortunate what happened to look, because now you have guys like Woody or Susan sort of fighting self custody, saying as if with third parties, you were safer if they offered some form of insurance. I would take their suggestions more face value instead of just being bullshit. But they're not liable for those losses in the way that people think they are. You just become an unsecured creditor and good luck to yourself. So, Rendell, you've been working in Bitcoin quite a bit, and you probably know some interesting ",timestamp:"00:07:44-00:17:21",topics:["Bitcoin Losses","Bitcoin trading"],type:"podcast",weight:22.766568059128208},{boost:0,date:1628150829,description:"The Regulatory on Small Scale",episode_title:" #14: Julia Reinhardt - What do GDPR and AI regulations mean for Silicon Valley?",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/3ab6c599-bbcd-4c8f-beef-bcf509ed4afa.jpg",keyword:!0,link:"https://anchor.fm/s/1a9df3e0/podcast/play/38326682/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2021-7-5%252F1c697b61-ec63-9b13-21c8-20beb6d5ca8d.mp3",node_type:"clip",pub_key:"",ref_id:"d67cf7af-79a8-457e-b65b-293fb279dcfe",show_title:"Voices of the Data Economy",text:"early on. Yeah, I just sort of picked up your line that they do it out of marketing because I think this is also something we discussed in a podcast with Safia Noble, the author of Algorithms of Oppression. And I'm not sure if there is a word called like privacy washing, like you have green washing, but probably it has become like a marketing gig to talk about your customer data and how safe it is and having discussions around that. So yeah, just a comment, not a question, but okay, so first we had GDPR and now we have the proposed AI regulations in Europe and we have never really spoken about it in this podcast. I would say that even me or particularly the audience are pretty new to this and you seem to be very deeply involved in this. So if you could take us through what are actually these AI regulations that have been proposed in Europe and what are their challenges, and then probably we can go deeper into it. Yeah, sure. So, yeah, the upcoming AI regulation that has been tabled by the Commission, but is only on the negotiation table now for member States and the European Parliament is actually the core thing I'm working on in my fellowship. And my intention is really to make sure that this upcoming regulation again from Europe does not again cause that lagging behind the small players. Because in the field of AI, as you all know, size clearly matters. The more data you can gather, the better your AI system works. And we're already pretty far down the road to Monetization because players in the market have access to an impressive range of data, and they can also afford gathering high quality data, which then enables them to build better performing AI. And for small scale providers, what's most important is the clarity of the guidance. I mean, that sounds phenomenal. Who wouldn't say that? But if you follow advice, you set up an internal team analyzing those rules for your in house implementation adapted to your AI system, you get much better at estimating necessary additional processes to say why. I work on that. And again, this link to the small scale providers of AI in general, the regulatory draft that the European commissioned, and it was tabled on April 21, so that's not very long ago. And in Brussels, things take time, comedies are formed. But the draft that the European Commission tabled also has been very long time in the making funded line. The Commission president announced something like it already at the beginning of her presidency, and then it came up this year. It's the most ambitious and the most comprehensive attempt at reining in the risks linked to the deployment of AI that we have seen so far across the globe. So it's a bold new step before the big focus of the past years were always just principles. I'm saying just. But I mean, of course you start with principles on an international level. The OECD principles on AI that were adopted in May 2019. OECD. Most European countries and the US are members of the Organization for Economic Cooperation and Development. So they're already promoted uses of AI that are innovative but also trustworthy, that respect human rights and democratic values. And I think now, in 2021, really, we're at the stage of how do you transform these principles into practical rules and regulations. So the rules that the European Commission proposed wouldn't cover all AI systems. They do cover systems that are deemed to pose a significant risk to the safety and fundamental rights of people living in Europe. You know, it's the geographical scope of people living in Europe. So it's a risk based approach. It has several layers, and those layers have different rules for different classes of AI systems. There are some that are prohibited. There are some that are considered high risk and have follow certain rules, and then others where they just say, you have to be more transparent. Do you want me to go more into details of what those rules are? Yes. I mean, broadly, if you could point it out. One, two, three. I don't know if it can be done that way. Absolutely. Sometimes it's confusing because it's really so much risk. You have to know in which category your AI system falls. And that's really on the developers, kind of to understand the categories. And in the end, it's actually pretty clear that not many AI systems actually fall under that rule. So definitely something to understand. So for some users of AI, the Commission proposes an outright ban. That's a use where the Commission says it's an unacceptable threat to citizens. That, for example, an AI system that likely causes physical or psychological harm by manipulating a person's behavior. That's a question of definition. Or by exploiting their vulnerabilities like age or disability. Then also something like social scoring systems where people collect points and also minuses, like those we know in China, and facial recognition in public spaces by law enforcement authorities. So not all facial recognition, but just, you know, those used by police and public spaces, essentially. Although even there, you have exceptions, and I think too many of them. So that's, you know, the systems that the Commission proposals should be banned in Europe. But most of the regulatory draft actually focuses on AI that is considered high risk. And what is high risk is, of course, defined in the regulatory draft. So that's kind of problematic uses in the recruiting field, in the employment admissions context, determining a person's creditworthiness or eligibility for public services and benefits, and also some applications used in law enforcement and security and judiciary. And for those, these systems have to meet different requirements and undergo kind of a conformity assessment. So, of course, before they can be placed in the European market. So in a way, that's kind of FDA, as we call it in the US. Like clinical testing, not for drugs or for vaccines, but for algorithms, it's to make sure that an AI system complies with several requirements around serious risk management. It has to use data sets and training, validation, and testing that are relevant, representative, free of errors, complete. That's a super tall order. Of course, then documentation about a high risk AI system must be really extensive and very precise. Why you chose certain designs, why you designed it in a specific way, and also to show that the developers really check all these factors diligently. The keyword is always human oversight. So high risk AI systems must be designed in a way that allows people to understand the capabilities and the limitations of a system and to counter socalled, automation, bias, and also, if necessary, reverse or override the output. And then, of course, accuracy, robustness, security, and transparency. So this is kind of this clinical testing for algorithm. ",timestamp:"00:20:36-00:29:57",topics:["Small Scale"],type:"podcast",weight:4.966172337540865},{boost:0,date:1627704e3,description:"[[Jurisdictional arbitrage]] moves people when [[prohibitive tax regime]] is implemented",episode_title:"WHY ARE WE BULLISH Natalie Brunell Aaron Segal Lauren Sieckmann Dan Held ep191",guests:[{name:"Dan Held",profile_picture:"https://pbs.twimg.com/profile_images/1522608646043181060/QQRjVYhi_400x400.jpg",ref_id:"3e22facc-9310-4346-82ac-3e183b88fa51",twitter_handle:"Ledger"},{name:"Lauren Sieckmann",profile_picture:"",ref_id:"427bb439-f251-4c7e-89fb-b53ecd8c9a82",twitter_handle:""},{name:"Aaron Segal",profile_picture:"https://pbs.twimg.com/profile_images/884309028125294592/sLDGwzDO_400x400.jpg",ref_id:"f7483c61-ba76-4a19-8d8d-992966e1f79e",twitter_handle:"AaronSegalActor"},{name:"Natalie Brunell",profile_picture:"",ref_id:"a09e8874-abbe-4a85-b19d-08cac1c8afde",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/38086440/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-6-31%2F116ac8f3-ce82-01e5-2865-da5c486c8330.mp3",node_type:"clip",pub_key:"",ref_id:"ea5f251b-6174-4663-b1c8-176375396b6e",show_title:"BTC Sessions",text:"don't know. What are your feelings on kind of this? How bad would it have to get for people to actually think about jurisdictional arbitrage? Oh, you're muted. Probably a prohibitive tax regime if you start to get really prohibitive like 70%, 80% taxes. I think people start to look at moving. I think about it in this function of like you got 100% tax rate of slavery. And so we all exist in the semislavery state of our output is taxed, usually without our permission. And so you either pay that or go to prison. So it's literally sort of a mob feeling there. At what point do people break? I think that's totally subjective for any type of person. Like, a lot of people have already kind of broken and moved to different countries, like renounce their US citizenship or they moved to Puerto Rico. I've moved to Austin from California, which is a small amount of sort of that arbitrage because Texas is a much more open society when it comes to earning money and keeping it. Now I can escape federal. If you want to escape federal, you go to Puerto Rico. If you want to escape all of that, then you go renounce your citizenship. So I made the decision at a certain point that paying California taxes plus federal taxes was too much. I couldn't bear it anymore. And we're seeing a lot of other people make that decision as well. But at what rate will federal start to push people? Ultimately, people vote with their pocketbook. If you make it really cost prohibitive in terms of taxation, I think that's what really moves people. ",timestamp:"00:18:02-00:19:39",topics:["jurisdictional arbitrage","prohibitive tax regime"],type:"podcast",weight:4.962566375739069},{boost:0,date:1642827600,description:"[[Tonga]]'s Interest in Following [[El Salvador]]'s Footsteps",episode_title:"WHY ARE WE BULLISH Mario Gibney Mauricio Di Bartolomeo Josias Carbon Bang Bitcoin",guests:[{name:"Bang Bitcoin ",profile_picture:"",ref_id:"ac7edd0f-886d-449a-ba1a-06033ad12695",twitter_handle:""},{name:"Josias Carbon",profile_picture:"",ref_id:"f3c2c48b-c174-43cc-acfc-2151634b7c77",twitter_handle:""},{name:"Mauricio Di Bartolomeo",profile_picture:"",ref_id:"10c70dfd-93fb-4e95-99d4-2bebf561e737",twitter_handle:""},{name:"Mario Gibney",profile_picture:"",ref_id:"1a3f05f5-5c4a-455f-b4ec-f682080a5518",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f29a41a4-6764-439e-9fcf-74fefaffc681.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/46497075/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-0-22%2F243683259-44100-2-0108d40b0f999.mp3",node_type:"clip",pub_key:"",ref_id:"80462fda-0ec7-4677-bd1b-cd7741154f39",show_title:"BTC Sessions",text:"Look at Tonga, too. Super unfortunate what just happened with the tsunami there. But Lord FA Sitsua has been pushing hard and is looking like they're going to attempt to basically mirror what El Salvador has done. Later this year. They're putting forth more or less the same bill with some slight changes. Again, we got to wait till the fall to see what that actually looks like. But I'll be Frank here, I didn't know of Tonga before this and all of a sudden there's starting to be some recognition before the disaster that just happened. But up alongside El Salvador, you see mentions of this island nation that probably not a lot of people were aware of prior to kind of this human interest piece in and around El Salvador. And so I think we might see more of that over time. Of course, the Volatility lets the Naysayers have their temporary wins here and there. But I mean, it's like Peter Schiff tweets, right? You can always go back in a long enough time frame and highlightership yeah, you can always highlight some amazing Peter Schiff tweets and say, man, if you had just dollar cost average every time this man tweeted about Bitcoin, you would be sitting pretty. And it's very, very true of a lot of this where again, people again, even in the chat, look at what it's done in the past three months. Three months. How short is your time frame? Do you plan for the future at all with that kind of a small window of which you frame things? I would guess not. Bitcoin is boiling the legacy financial system slowly. Just a frog just boiling it slowly. Yeah, absolutely. And that's ",timestamp:"01:05:32-01:07:59",topics:["tonga","el salvador","tonga","tonga"],type:"podcast",weight:4.962566472366181},{boost:0,date:null,description:"Important things every new Bitcoiner should know",episode_title:"Café ₿: #Bitcoin Beginner Q&A",guests:[{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Stephan Livera",profile_picture:"https://pbs.twimg.com/profile_images/1362551718110580740/v-W5Q2uo_400x400.jpg",ref_id:"72f57157-c96e-4466-8bf1-290cfe1f8a0b",twitter_handle:"stephanlivera"},{name:"Thomas J Lake",profile_picture:"https://pbs.twimg.com/profile_images/1529168328534769670/5cl2Y_k-_400x400.jpg",ref_id:"21541a47-0601-447c-99c2-312d1a63c19f",twitter_handle:"thomaslake"},{name:"Goodguy",profile_picture:"https://pbs.twimg.com/profile_images/1363216959576285185/unulY4yd_400x400.jpg",ref_id:"0c3fec75-9cc2-4c0f-8dbe-db7fae2b585b",twitter_handle:"goodguybiker"}],hosts:[{name:"Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"49966553-d55b-44c9-94ec-8fee09eee5c2",twitter_handle:"CitizenBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/35b20273-49f2-45ea-a9f4-dc479d86573c/7ae5315f-beb2-41e2-b672-65dd1f102017.mp3",node_type:"clip",pub_key:"",ref_id:"3d112a9e-f3a1-4edb-96b0-c3a8c63b0c4a",show_title:"Swan.com",text:"would be the top three things. You think it would be important for a new person to know and then we can kind of go around and get the same thoughts from Tomer and maybe Peter and really anybody else who wants to go. A good guy. Yeah, sure. So I think there's a few obviously key resources that are important. I think getting motivated and understanding, like having a good sense of what bitcoin is matters, and so getting, I think, the right jumping off point matters. Obviously, stacking stats and accumulating some stats is important, not your keys is an important thing. But for example, reading as an example, the Bullish Case for Bitcoin by VJ. Boyer party, right? So I think that's a good example of a short, intro, long essay or booklet length thing that you can read and. It will give you some sense of the motivation here and some sense of the problem and the challenge. So I think that is an important starting point. Of course, our CTO yarn pritzker, co founder of swan, has written inventing bitcoin that's also a fantastic starting point in terms of understanding some of the technicals of bitcoin without getting into the actual, like having to read code or technical aspects of it. I think it's a fantastic intro book. So I often recommend that as a starter book. I think those are some really good places to start. And then from there, and I mean, even harkening back to Greg Foster's comments earlier, right, this whole idea of skin in the game, put your money where your mouth is. I think it's a similar thing with bitcoin. What you'll find is you can lecture to people all day, but until they have some actual skin in the game, what's the chances that they are going to really take it seriously and spend some time learning? I think one other tip I would give for new people is actually use the technology, right? Send an on chain transaction, right? Use a bitcoin wallet, receive some bitcoin, like withdraw some coin and practice spending some bitcoin on chain, even if it's to yourself into another wallet that you control. In some sense, it's moving money out of your left pocket, into your right pocket, but actually using the thing. Then what happens is you'll start to ask yourself more questions because then you'll start thinking, oh, hey, wow, okay, I just sent a transaction. Oh, look, let me look up the transaction ID. And let me look that up in a block explorer like mentor space or block stream info as some examples, or OXT me or some of the kycp.org, like these different explorers out there. And they can give you some things to think about and understand. Okay, what was the fee rate for this? What are these inputs and outputs? What's going on there? All of these aspects. And I understand at the start that sounds like jargon, it sounds like engineering, it sounds like, whoa, that's like but what happens over time is as you get into bitcoin, you just, you start to once you have that right, motivation, then you just you can't stop going further down the rabbit hole. All right, tomorrow, if you had to pick three things, what are the most important things you think a new person would be valuable for a new person to understand about bitcoin? Yeah. So the first thing is use bitcoin the way it was designed to be used, and tune out all the rest. Tune out people promising yield, people talking about altcoins, people talking about yield, people talking about staking, people talking about everything else. Just go back to the very beginning. Bitcoin was the granddaddy. It came out as software that you can run where you can take custody of these things called bitcoin. And you could send them and spend them. So start there. Start at the very beginning. And it's like learning to drive a car. Do it with a small amount of money, as you would drive a car in an empty parking lot at the beginning. So use a small amount of money. Practice. I'm preaching the same things, just with different words than what Stefan said. So get those two things going and then let your curiosity lead you through the various aspects of the rabbit hole and many others. You may be a reader, you may be a tinkerer. You may be someone who prefers to learn from videos. You may be someone who likes to listen to spaces, all these sorts of things. There is no one right path, which is beautiful because there's many right paths. There are also wrong paths that lead you to the right path. You may get wrecked or burned by trying to be greedy or something else. And those are lessons. Again, you may learn them at someone else's expense by watching someone else make mistakes, or you may have to learn these lessons personally. But I think that, for me, is the thing. Go back to basics. Practice with a safe amount and follow your curiosity. ",timestamp:"00:30:18-00:35:03",topics:["Bitcoin education"],type:"twitter_space",weight:4.926955223083496},{boost:0,date:1633363603,description:"Innovation and scams",episode_title:" The Bitcoin v Crypto War with Udi Wertheimer, Crypto Cobain, Alex Gladstein & Allen Farrington",guests:[{name:"Crypto Cobain",profile_picture:"https://pbs.twimg.com/profile_images/1601273673041776641/7FrXDRv6_400x400.jpg",ref_id:"8fa5fec2-f714-433e-a8c9-ee5e76dabaf0",twitter_handle:"cobie"},{name:"Allen Farrington",profile_picture:"https://pbs.twimg.com/profile_images/1414147363560730624/EXMx91D6_400x400.jpg",ref_id:"8660a251-950b-4888-adbf-21f790210cf6",twitter_handle:"allenf32"},{name:"Udi Wertheimer",profile_picture:"https://pbs.twimg.com/profile_images/1600897375001874432/8pdVDKUz_400x400.jpg",ref_id:"483291b7-2101-4c28-a065-93b1524d0552",twitter_handle:"udiWertheimer"},{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"}],hosts:[{name:"Peter McCormack",profile_picture:"https://pbs.twimg.com/profile_images/1524287442307723265/_59ITDbJ_400x400.jpg",ref_id:"887a65a7-a2d8-4371-887e-bc7a6ca6ff17",twitter_handle:"PeterMcCormack"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/4e607036-8fde-48ef-ab76-9c2ac4bab031.jpg",keyword:!0,link:"https://chtbl.com/track/282487/traffic.libsyn.com/secure/whatbitcoindid/WBD405_-_Cobie_Udi_Alex__Allen.mp3",node_type:"clip",pub_key:"",ref_id:"1f39afe1-2026-44ca-a0b5-80aea9a8cc83",show_title:"What Bitcoin Did with Peter McCormack",text:"Push back there. That's a lot. Great stuff. Let me go one by one. The first thing you said ethereum. If we're talking about ethereum desension, we have to talk about the monetary policy. We have to talk about the hardforks. I mean, nobody knows how much ETH is going to be minted in 2023. 2024. A small group of people will decide. And I think it's really dishonest, actually, to not mention that. And that's why I think it's centralized. So that's my point. My perspective. Second thing is on innovation. But as I mentioned, everyone knows it. I had to go dig in interview at EF Engineers to find out how much if they thought would be minted in the night. Like, nobody knows, literally nobody whose job. Is to mention it to you. Like people talk about it all the time. Who's the dishonest actor who's supposed to represent those facts? Anyone who's saying it's decentralized when clearly a small group of people is going to determine the monetary policy and not the public. Do you mean cosmic EIP? And there's an EIP 1559. So that economic activity on chain impacts the future. Yeah, it's a hard fork. And the people, the users don't get to decide, they just get hard forked out. This to me is quite clear. But again, we can debate and then just to do a couple of other things and we keep going on the innovation. Why are we all here? The innovation is to escape regulation. Bitcoin is money beyond regulation. NFTs are trading Art beyond regulation. Unitswap is trading assets beyond regulation. ETH is supposed to be running contracts beyond regulation. So it's all about can you evade regulation or not? So I do think that's the important thing with regard to crypto and being nice to people and this idea of are these toxic people bad for Bitcoin? I agree with you, Udi. Bitcoin is going to be fine. Like, Bitcoin is going to, I think, complete its mission over time. It's the people that aren't going to be fine, right? The people that are going to miss this project, the people who've been gaslit for a decade by the mainstream media about Bitcoin, who've been told not to buy Bitcoin because it's dangerous, because it's scary. A lot of people have really lost a huge opportunity, especially in emerging markets, because of what their government and the media have told them to stay away from Bitcoin. When it comes to these crypto projects, I think it's the opposite. I think we need to be more outspoken. Otherwise what happens is that Ripple is in Bloomberg today, and you have smart people who don't know a lot about the space thinking that Bhutan is going to adopt Ripple as their currency. Like that's in fucking Bloomberg today, okay? And you have Carnegie Mellon, a very prestigious institution, by the way, which is a very important institution in America, taking all this money from Hopkinson and promoting Cardano. This is what happens when we don't speak out. People get scammed. So I think it's actually the opposite. We should be talking more about these things because bitcoin is going to be fine. People need our help. And look, if you've got all the time in the world and you're a talented trader, you're going to be fine. Like you're going to clean up in the coming years as we go through these different kinds of crypto bull markets. But the average person is going to be confused. They're not going to know what's going on. And it's not like the average person bought a bunch of salana last Thanksgiving. They bought it in the last couple of months. Like the people who created Solona made the most money. These are the things on my mind. That's a really interesting point because if you listen to Charles Hutchinson's interview on Lex Friedman, I think everyone can agree he's a complete dishonest prick when he talks about Bitcoin. And his job there is to convince the listeners of Lexus show and perhaps Lex, that Cardano is something they should consider. And what's really interesting is I moderate all the comments on my YouTube because there's so many scammers, and when I talk about scammers, it's like, join my Telegram group. If you go on any Vice video at the moment, you can see what we're dealing with. I have to delete hundreds a day. But in there, what we also have is there is consistent chilling from people saying, but you need to consider cardano, why aren't you considering Hex? And it's always the same projects, so I'm going to throw this over to Kobe. How much do people actually pay? Look, you mix in the trading community. There's a lot of people out there trading. And the way I explained it recently to somebody, I don't buy anything apart from Bitcoin. But I almost feel like I'm sat in a conference room in Vegas with Alex Gladstein discussing human rights and through the window and seeing all my friends on the roulette table and having fun. And whilst I know they're gambling, I see all this ",timestamp:"00:46:09-00:50:44",topics:["Crypto scams","Carnegie Mellon","Charles Hutchison"],type:"podcast",weight:4.92695522332177},{boost:0,date:1672167683,description:"Does Bitcoin mining price determine Bitcoin price?",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Beer and Plebs! 🍻😂🤌🏻",guests:[{name:"Dr. Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"51a969bb-dbf7-4d20-b128-74dcc5f560f6",twitter_handle:"VailshireCap"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"Laura Shin",profile_picture:"https://pbs.twimg.com/profile_images/1539462748173746176/hxR80FYT_400x400.png",ref_id:"a56a7b4d-edca-41d5-9d51-33396aa05b96",twitter_handle:"laurashin"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders Jensen",profile_picture:"https://pbs.twimg.com/profile_images/1382039124991954947/Wb9kT7MO_400x400.jpg",ref_id:"af45195e-77a6-463f-ba64-29c6b0437d9c",twitter_handle:"andersjensenorg"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2a1450bc-0649-4dc5-8ec9-1474af1ea1c3.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f7b6cfcb-7cd4-4401-a3fb-7735bb570c07/2ae49fca-a048-4a34-93b9-247513af5699.mp3",node_type:"clip",pub_key:"",ref_id:"2656d145-191a-4e86-8261-04c88a9a6562",show_title:"Anders_🍆",text:"Sack, welcome to the stage. How's it going? Merry Christmas, police. Navidat. Hey. Merry Christmas, everybody. Good to be here. And I just had a quick question. I thought I'd throw it out there. It's not heavy heavy, but I just got caught up on some of the Miting concerns, and I just thought I'd ask if anybody can share with me. Their thoughts on how bad is what. Does it actually mean to the price. Of bitcoin that all of these miners under? I think there's a lot of questions. See if there was any feedback that's a lot of people sorry if I'll keep quiet. If you have further, I'll let you finish. Okay. So I think that's a it's been a discussion going on for years whether mining drives the price of bitcoin or the price of bitcoin drives mining. I guess there's a feedback loop there, but definitely the higher the price of bitcoin, the more incentive to mine it, for sure. But it also seems to sometimes on shorter term lead the price of bitcoin. Because either people see it as a confirmation that there is belief in it and it's getting more secure as hashing rate goes up, or like we saw when china quote unquote, well, actually did ban bitcoin mining back in was that I can't even remember. Was it may this year? I think it was 2021 around that time, and the hash rate dropped to half and a lot of people got spooked and the price of bitcoin collapsed. I'd say a little bit of both, but tomar, you are well worse. Go ahead. Yeah, I think maybe I'd say two things. One, over the history of bitcoin mining has been incredibly volatile. Up and down, back and forth. When the first asics came in, there was only one company making asics. Then a few others came in, that one company disappeared. It wasn't even a real company. And then many of those went out of business. And of course, bitcoin survives through it all. The most important innovation in bitcoin that people talk about is this difficulty adjustment thing which relates to the mining. And so if miners go out of business, then it gets easier to mine bitcoin. And that means that bitcoin continues to operate flawlessly. It also means that it gets cheaper to mine bitcoin, so more people are attracted to mining it if it becomes profitable again. And so what I've noticed in my ten years in bitcoin now is mining is like if the bitcoin price is like a sign curve up and down, but skewed up and to the right. The bitcoin mining is like a scaled up version of it. When the price goes up, you get way more mining, and when the price goes down, you end up getting way less mining and it lags behind. So they run ahead and they run behind. I don't think it's any fundamental what I'm getting to is I don't think it's any fundamental concern to bitcoin's ongoing steadiness or its security or anything of that nature. It's simply a reflection of what the economics are to mine bitcoin at any given point in time. And when the price was high and energy was cheap and money was cheap, people were borrowing money to pay for miners and energy on credit to mine expensive bitcoin. And now that it isn't. They aren't. So it's just rational. But the same number of bitcoin are being produced as would have been the case if the price had been high or if the price had been $1, than just kind of that's a promise that no amount of added or subtracted mining can break the supply. And its issuance schedule and the rate of development of the blocks is essentially exactly as described in the white paper. And when I say essentially, I don't even need that, it is exactly as described in the white paper and will continue to be. So. I think those are awesome points that Tomer made. And I'll throw just a little side tangent on this because I think in terms of investments for almost everything regarding the bitcoin miners, right now, there's a perfect trifecta going against minors. I like to think in terms of three trifectas. What's the trifecta? Low bitcoin price, high energy prices and then a high hash rate. Right now, those three things combine to make it really difficult to survive as a public bitcoin miner or even a private bitcoin miner. And so I get asked all the time by people like, should they invest in this minor because it looks stronger, this minor? I would say I would still avoid all of them. I think they're still dangerous and I still think we're going to see more of a minor capitulation before this is over. To Tomer's point, and this is critically important to understand, that doesn't affect bitcoin. At the very least, the network is still super strong. It will still continue to do what it's designed to do. But bitcoin miners, they offer beta to the price of bitcoin. And so in bull markets they can outperform for a season, and then in bear markets they tend to drastically underperform. I would just be super careful. We were talking before Tomer, you got up here, we were talking about bitcoin proxies, talking about GBTC and MicroStrategy. I would include minors in that list as well. A lot of people invest in miners in their IRAs and their 401 KS because they can invest in bitcoin itself. If you are you've had a tough year and I think it's going to get worse before it gets better. I still think we're going to see many miners, like flat out capitulate actually go bankrupt. Some will survive, a small handful will survive all of that. What that does is it drags the price of bitcoin down a little bit further. It drives the price of asics down a little bit further. I like it, though. This is capitalism. It's called creative destruction, right? So basically the people who have been smart and who have been ready for tough times, they're going to get rewarded, they're going to get cheap. Minors, individuals who have been saying giving up, and who have been smart and they've had their head downs, they've stayed humble, they've been stacking SATS and putting some cash. Away, they're going to be able to buy asics for super cheap and they're going to be mining in the next cycle. And that's awesome. That's the way it should be. Bitcoin itself, it naturally decentralizes. Over time, it gets more and more decentralized, unlike cryptos, which get more centralized over time. So I think it's beautiful. It's sad if you're an owner of one of those companies because they're going to get smoked, but it's great if you're everybody else in the bitcoin ",timestamp:"01:36:47-01:43:20",topics:["Bitcoin mining","Bitcoin hashrate","Bitcoin network"],type:"twitter_space",weight:14.092456989642082},{boost:0,date:null,description:"How Bitcoin has performed as a tool for freedom in the year 2022 ",episode_title:"Gladstein & Sam Callahan - World Bank / IMF & #Bitcoin",guests:[{name:"Sam Callahan",profile_picture:"https://pbs.twimg.com/profile_images/1592532728775409667/0DayEP2Q_400x400.jpg",ref_id:"5a044a91-8dee-421c-86dd-8c734dc9bc32",twitter_handle:"CallahanMusic_"},{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Brady",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"45bbbb01-6163-4b3b-905a-fc67174893d9",twitter_handle:"CitizenBitcoin"}],hosts:[{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f8be7c60-94a5-41d0-972c-6301cd4ad7f0/4e5bf86b-6193-4f6e-8fa3-933344b2053e.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"888c6962-f33f-4e88-a1cb-6819baabe35f",show_title:"Swan.com",text:"We can pivot a little bit from Africa and just talk about maybe 2022 more broadly. We're coming up on the year end. I feel like you have a unique perspective, given your position at the Human Rights Foundation and your work specifically around Bitcoin being used as a tool for freedom. And I was wondering, if you just think back in 2022, how have we done? How is Bitcoin done to be a tool for freedom? In your mind? What got you excited this year in that kind of purpose for Bitcoin? Bitcoin is doing what it was created to do, which has become a parallel economy for people that don't want to deal with the state. I think that in doing so, it is also kind of finding its way through the existing financial system. So I think that there are things that pop up as Bitcoin adopts that you couldn't have predicted. Some of them are temporary and some of them are permanent. Who knows? We know that we don't know what Satoshi or Hal or any of the early Bitcoinners thought would happen. But it seems pretty obvious that Bitcoin's ability to monetize stranded energy was not really at the top of their list when they were designing the white paper, right? Or when Satoshi was designing the white paper. That was not very clearly not something they realized would happen, or at least was maybe a peripheral thought. So you get a lot of these things along the way towards separating money from state, and one of them happens to be improving Fiat services, which I know Bitcoinrs are divided on. But the reality is, it's true. On our way to the Bitcoin standard, we live in the Fiat standard. It is what it is. And it's really interesting how Bitcoin can connect Fiat companies in ways that Fiat companies cannot use Fiat rails to connect to Fiat companies. Like, this is kind of a powerful thing, and it'll end up in the end with Bitcoin companies connecting with Bitcoin companies. But for now and I guess being in Africa really brings us into focus, but you realize how financially disconnected the world is, and that's not again, it was designed that way. It was designed by companies and services who found a business model and being able to connect people and be able to extract rent from them, moving money on a particular rail or service. So I think, for me, this year has been a big reflection on, like, capitalism more generally, or what we would refer to capitalism. Like, I'm kind of with Alan Farrington. He wrote a great piece called this Is Not Capitalism. I would encourage everybody to read it. Makes for a great holiday read. It's also part of his awesome book called Bitcoin is Venice, which you should read. But basically he's describing how, like, the post 71 Fiat political economy, which essentially is like an operation where the state can be the lender blast resort for all parts of what would normally be a free market economy, obviously not capitalism. And I think that's true for a lot of things in the world. But on the other hand, it is what it is. It's kind of like a cop out to say that it's not capitalism. In a way it's not communism, you know what I mean? It is the American model of economic growth and development. And if you want to say that that's not capitalism, fine, but you got to call it something else. But that's what kind of like leftist critics would describe as capitalism. That's like what they don't like, right? It's like American multinational companies, right? So if we're going to sit here and say that's not capitalist, okay, fine, and I'm sympathetic to that. But the idea is that in the reality is we have a business industry globally that is known as capitalist, at least to most people, and won the cold War or whatever and has developed since then. And I think it has the wrong incentives inside of it, right? So if your incentives in, quote unquote, capitalism, let's say 1.0 or whatever this is that we have fiat capitalism or whatever you want to call it, the incentives are wrong. The incentives are for companies to come in and split people apart, to make money off of them and to attract rent. So I think whatever bitcoin brings to the table, bitcoinism or capitalism 20 or whatever you'd want to call it, is really interesting because it's open. So and I'm who knows how this thought process will develop over the coming decade, but it seems at least plausible that over time, like bitcoinism would result in costs like going down or rather deflating because of the open competition that results from bitcoin economies. Whereas in the capitalist 1.0 model you have a lot of these systems that are set up to become Indian monopolies which end up doing a lot of rent seeking and kind of like unusual things that put money in the hands of a very small percentage of the population and extract resources from others. I think this goes all the way to the macro level of global trade and commerce, all the way down to the micro level of daily payments. And I think that I'm very optimistic about a bitcoin like a different system being built on bitcoin where the incentives are just different. And you would start to see that in Africa, let's say, when you're thinking about how broken the continent is and how broken apart it is rather by both local corrupt leaders and by foreign powers and how Bitcoin would just unite and we create one simple monetary language for the continent. I just think the incentives are very different. I think companies are incentivized to cooperate, cooperate with people as opposed to exclude them or exploit them. And I know this is overly simplistic and clearly, like you could steal man it, but you can just kind of feel this it's very palpable when you're talking to the entrepreneurs in the space. Yeah, that's one of the big things I'm ruminating on as we close out 2022 ",timestamp:"00:35:28-00:42:23",topics:["Bitcoin 2022","Bitcoin freedom"],type:"twitter_space",weight:4.890018939971924},{boost:0,date:1671720944,description:"What to expect on Bitcoin Day Naples?",episode_title:"Café ₿: #Bitcoin News & Bitcoin Day w/ @Bitcoindayio",guests:[{name:"@johnmichaeldrew",profile_picture:"https://pbs.twimg.com/profile_images/1512897699942744064/PuRU3K8P_400x400.jpg",ref_id:"6b72ee7f-52ef-4847-96ed-78ea09e3f19b",twitter_handle:"johnmichaeldrew"},{name:"@mattyicesensei",profile_picture:"https://pbs.twimg.com/profile_images/1607138483579101186/0qm0xaCF_400x400.jpg",ref_id:"286abd3b-cecc-4ec5-bf88-2a9fd5393083",twitter_handle:"mattyicesensei"},{name:"@Bitcoindayio",profile_picture:"https://pbs.twimg.com/profile_images/1493098733608837121/tLI-XTwl_400x400.jpg",ref_id:"6a87699e-7a27-4928-89e8-d884f1458bf9",twitter_handle:"Bitcoindayio"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/83744e68-b563-4004-b52a-cfdfff89748f/12c9b9f2-fbce-4784-9404-88a574baa762.mp3",node_type:"clip",pub_key:"",ref_id:"6f72249d-ab08-4a9e-ac54-545f618c29d2",show_title:"Swan.com",text:"another speaker we don't have up there yet because we're announcing it just now, but I sneak preview that we're also luke Jr. Actually is down there, so he's going to be coming as well. We're going to get him on the schedule, but we're trying to get all the bit devs going to come in from the ones that are nearby, at least Miami and Tampa and those guys. But we're going to have a bit devs, kind of a day long. I don't know if they're going to kind of just have a 1 hour thing, but we're going to have bit devs as well from all over Florida come together, which is probably the first time they've ever done that. And then also Mike Yarmou's Muzz, he's going to have one of his bitcoin blitz chess tournaments as well. Well, that's brand new. I don't even know that. Thanks, Edward. That's cool. Let's turn it and then yeah, we got the bitcoin or the toxic happy hour, guys. So you want to talk about that? Is he still on? Yeah, I'm here, man. All right. I know Anders, I think, had reached out to you, and it's pretty cool because we had just gone up to Charlotte, and when your first conference is the bitcoin conference, you think like most conferences are like this. Of course, there's bit block boom and Pacific. Bitcoin now are the larger. But it was great, man. Yeah, they invited us up just to hang out, man, basically. And the great thing I'm working my travel schedule, and if I'm here, I'm coming down there, man. I know Anders will be there. What was great is and it takes you back to your roots because the people you have coming in, what you don't realize is how much you know. So people that have been here for a couple of years, you don't realize how much you've learned. And when you go to these conferences and you meet people that were in your shoes three, four, five years ago, it's just really cool because really you're helping somebody. You're really helping somebody to learn and understand. And that's my favorite part of it. It's not there just to see and be seen. It's there because there are absolute no corners that come to these. And I'm up in Charlotte for Halloween. What was cool is you had some rooms going on everywhere, and one was simply showing them, hey, how do I download a lightning wallet? And to see their faces. When you send them a few stats, they start to get it like, my God, I've got value outside the system here. This is the coolest thing ever. So yes, man. Yes. Dr. Kapir we'll come down there. I see fossils on stage. He and Larry's there. So hopefully we'll meet up with them as well, because, man, at the end of the day, bitcoin is about humanity, about the friendships you meet here. Fantastic. Hey, Greg. How's it going? Hi, guys. Were you talking to Foss? Yeah. Nice to talk to you guys. Nice to talk to you. I'm getting some feedback here. If you're up here and if you're not talking, mute yourself, please, because it causes the feedback. Alex, how are you, buddy? I actually have to be up and then jump. I saw this thing come across. I'm actually going on a lead lag report spaces at noon, so I have to prepare for that a little bit. But I think I know why we're here. We're talking about the Naples bitcoin. Naples day. There'll be the second or third one I've been to. This will be number three. It's a great spot. It's a great group of people. Larry LaPard is going to be there, I think. I'm trying to get James Lavish to come. I know Maddie Ice is going to be there. I hope Steve Luka is going to be there again because he put on a great show the last time. So looking forward to seeing everybody at Bitcoin Naples. It won't be a disappointment, I promise you that. And Puppy lives in the vicinity, I think Tampa Bays within a couple of hours drive, right. So let's hope to see everybody there. And if I don't talk to you before the Christmas break, happy holidays to everybody. 2023 is going to be an exciting year. So let's get ready. Thanks, guys. Thanks, Greg. Talk to you later. Have a merry Christmas. Thanks, robin hobro. Yeah, we hope that so. Yeah. Hopefully people come down from Tampa. Angel is coming down. He's like in Jacksonville or something. He's up north a little ways but talked to quite a few people coming from Miami, too. So few caravans hopefully, coming from Miami. So I think it is even if you've been to bitcoin 22 or whatever, I think it is certainly a different vibe. Like I said, smaller and little less glitzy maybe. But hopefully we get people from both. I like the smaller venues. There's less people. The people to speaker ratio is a lot lower and it's more intimate. You can spend more time talking to them. And I like those environments a lot better, personally. It's. One of the reasons why Pacific Bitcoin did so well is it was smaller we're having at the college down there, and I think that I'm hoping we'll get some students from the college if we can get the word out to them. And then also wanting to make it like I really like the Bitcoin summer model where they were doing development with students that's kind of working with colleges, that's kind of the model or the vibe that I'm looking to recreate is get some students orange pills or help them get into this space more. Very cool. Very cool. Yeah. So we're at Florida southwestern state college, which is its main campus, is up in Fort Myers. But they do have a campus down in Naples. It's named after the county, so it's the Collier campus where Naples is in Collier County. And it's a beautiful small little campus. It's got about maybe eight or ten buildings on the campus. And we've got a nice room, a large room in one of the buildings and then a smaller classroom on the side for some networking events. And probably that chess event will take place in that room. A beautiful little setting. And I know we've been talking about Florida people, but Naples is a beautiful vacation destination. So in January, the weather is absolutely beautiful. The beaches are awesome. You can come down for a long weekend, stay in a nice hotel, spend Friday on the beach, saturday at bitcoin day and Sunday on the beach and head back to wherever you're coming from and be totally relaxed. ",timestamp:"01:48:15-01:55:45",topics:["BitcoinDay.io"],type:"twitter_space",weight:12.160706504077877},{boost:0,date:null,description:"Alex Gladstein's recap of his African Bitcoin Conference experience",episode_title:"Gladstein & Sam Callahan - World Bank / IMF & #Bitcoin",guests:[{name:"Sam Callahan",profile_picture:"https://pbs.twimg.com/profile_images/1592532728775409667/0DayEP2Q_400x400.jpg",ref_id:"5a044a91-8dee-421c-86dd-8c734dc9bc32",twitter_handle:"CallahanMusic_"},{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Brady",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"45bbbb01-6163-4b3b-905a-fc67174893d9",twitter_handle:"CitizenBitcoin"}],hosts:[{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f8be7c60-94a5-41d0-972c-6301cd4ad7f0/4e5bf86b-6193-4f6e-8fa3-933344b2053e.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"f84d9798-f31e-480e-9da6-9be8dc74f6be",show_title:"Swan.com",text:"can rerehearse. No, it's interesting because I saw Sam clapping, so I thought that it was working, but apparently not. It was. I think we probably heard more than we heard a lot of it. Man did you hear me talking about the mining? Mining? No. Okay, so we didn't hear the mining. So maybe start there. Okay, so to recap awesome event. No one tried to sell me a token. You learned a lot about how the main use case for a lot of Africa today is receiving bitcoin from abroad, because crossborder payments suck, and a lot of entrepreneurs have found ways to be the off ramp for their families and communities in different countries. Like, I met a guy who was doing this in Somalia. Like, lives in Mogadishu, has 30,000 clients in Somalia. He receives the bitcoin or stable coins from abroad, and then he's the off ramp, and that's what he gets paid for to do. There's tons of businesses like this in Africa today, and you get enough businesses like that, and then you also probably start to start to get a little bit of a circular economy going as well. So that's why we started seeing, I think, a bunch of other people pop up at the conference who are doing merchant services and then mining. So I guess what I was trying to say about mining is that I think it's going to have a huge decade in Africa. It's going to be transformative. I met a kid I say a kid not to be diminutive, because he was, like, 19 years old, and he's from northern Nigeria, and he learned everything on YouTube about how to mind you guys can hear me fine, right? We're good? Brady yeah, we're good. Okay. So he learned how to mine on YouTube, and I guess in the delta region of Nigeria, there's an enormous amount of flared gas at night. I spoke to people who grew up there. You can just see it like the fire in the sky at night, and obviously represents an enormous opportunity to turn that into money and economic activity through the bitcoin network. I talked to him a little bit, and he's planning to go down there and capture some of that flared gas with a container operation this year. So I'm sure security will be, like, a high budget item for him, but that's the kind of gritty entrepreneur that you meet out there. I also just was shocked at the number of developers. I hosted a workshop about bitcoin for nonprofits. Maybe there were 35 people there. 20 of 20 of them were bitcoin lightning engineers from Nigeria. So they came to the workshop because they have local causes. They want to support and they want to be like the Uncle Jim type person. But I'm sitting there in this room and I'm like, wait a second, there's got to be more bitcoin engineers in Lagos than in San Francisco at this point. It's pretty amazing. And I think that's going to just explode in the coming two years. So, Kala is a program started by Carla Kirk Cohen and Bernard Para and a bunch of other African bitcoiners. And it helps programmers and coders become bitcoin programmers and coders. It's an incredible initiative. Qala is what it's called. So Ahref is proud to support Kala and they're going to be churning out a couple, at least a dozen, if not more bitcoin ecosystem contributors every year. And apparently they got in their first cohort, which is just sort of wrapping up. 100% of the graduates got placed with jobs in bitcoin companies, which is incredible. So that's something that's really cool. So I think that's another huge area that you start to see is that there's going to be this huge explosion of growth of contributors to the bitcoin ecosystem. From countries there, I learned about a bunch of other projects. One of them was the fact that a lot of people in Africa, in sub Saharan Africa, have feature phones, but they can't necessarily pay for. Internet is very expensive in a lot of countries. So you might have like an Android or whatever, but not be able to actually have data unless you're at a cafe with WiFi or something. So that's why it's very important to figure out how to use what's called USSD to interact with the bitcoin network. So USSD is like, you can use it on a candy bar phone. It's like a way to use text message protocol to run small apps. So it's sort of how it sort of impacts the type of thing. But the idea is you can send a text message and then get a series of commands back to your phone without Internet that allow you to send a receive bitcoin, which is pretty freaking amazing. And it's done by a team that was speaking at the African Bitcoin Conference and is growing and fundraising. So, yeah, I just got my mind blown like three times a day by stuff I was learning. I met this woman who launched this educational initiative in Nigeria to help girls and boys and teenage girls and boys, Muslims and Christians learn how to use bitcoin. That blew my mind when she told me about how it all works. So, yeah, I consider a pilgrimage to the Africa bitcoin Conference to be at the same level as going to, again, a place like Elsante or one of the other bitcoin circular communities. So, bucket list item for all of you for next year. So anyway, yeah, really fun. Yeah, I remember reading about that. I think it's machakura. I don't know if I'm right, but basically sending bitcoin over text messages. So it's tools like that that get me inspired, because trying to get it. Gives you like a menu and it's like, do you want to send? Do you want to receive? And of course, it's custodial there's issues, but it's like a way for people to send and receive and do activity over the lightning network using text message. And you can easily just withdraw. You can, like, withdraw funds to your own control as well at any point. So I think you start seeing people use some of these kind of systems as kind of spending wallets. Like, you might have some bitcoin in the same way that you might use like a wallet of satoshi or maybe someday soon a fetishment to do spending because it gives you something like privacy that you want. Well, in Africa, people might also have their cold storage or whatever, their savings, and then they might have a little bit of bitcoin in, for example, an account that allows them to get out there and use it and spend it without internet access, which is pretty amazing, actually. So anyway. Yeah, it's incredible just giving them the tools they need. ",timestamp:"00:15:52-00:23:31",topics:["African Bitcoin Conference"],type:"twitter_space",weight:4.890018939971924},{boost:0,date:1635566400,description:"[[John Vallis]] Intro",episode_title:"WHY ARE WE BULLISH Adam Curry Untapped Growth John Vallis Guy Swann ep211",guests:[{name:"Adam Curry",profile_picture:"https://pbs.twimg.com/profile_images/1401922551161442307/XjN2DdFD_400x400.jpg",ref_id:"c304fffc-7fe0-49a1-86b8-d3278f5c89dc",twitter_handle:"adamcurry"},{name:"John Vallis",profile_picture:"https://pbs.twimg.com/profile_images/1568743166035070976/4MyKww8A_400x400.jpg",ref_id:"c3a9fe29-3b78-4665-af54-e293e9d68962",twitter_handle:"johnkvallis"},{name:"Guy Swann",profile_picture:"https://pbs.twimg.com/profile_images/1401969630634196995/DqOuszMi_400x400.jpg",ref_id:"39c31930-d799-40a0-9a46-193117d03418",twitter_handle:"TheGuySwann"},{name:"Untapped Growth",profile_picture:"",ref_id:"79de7f8f-4f00-48c4-897a-57aa2a5fb7da",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/6b8fbd46-fa4a-4d07-a142-9aeb242d249f.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/42550048/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-9-30%2F442bcfea-951a-39d6-a1ce-0bbc6c7b43c3.mp3",node_type:"clip",pub_key:"",ref_id:"5b032ecb-09f5-4581-a1a8-cd0865de6076",show_title:"BTC Sessions",text:"you, brother. It's always a pleasure. Yeah. I host a podcast or two podcasts now, I guess one called Bitcoin Rapid Fire and that's my own. And the other is closing the loop. And that's for CT, a subsidiary Bitcoin company of a larger energy group in Norway. And mine. I just started because I became obsessed with Bitcoin and in 2019, it kind of bubbled over and I couldn't not talk about it. And I needed some excuse to hit up these people in the space to have these conversations. And I guess since then, it's morphed into I don't get too deep into the technical aspect of things. I really like to discuss what's happening on the personal side of this phenomenon and how engaging with this thing and adopting it and using it as your kind of lens for many different aspects of reality influences people on a very personal and deep level and what kind of impacts that's having on culture and such. So, yeah, that's what I like to investigate. And I can't wait to chat with you guys. You also like to Orange pill people like Peterson, so that's a plus, too. I love watching him dive down that rabbit hole and start bringing in his circle into it. So I know that was a while back, but once again, kudos on that. So glad to have you. Thank you. Yeah, it's inevitable that Peterson takes the Orange pill and really goes down the rabbit hole. So it's nice to participate in some small way in that. Yeah. Peterson totally was on the same foundation of the principles to grasp it from and just started running with it. It's just great. So much of the bullshit in a matter of like 20 minutes. It was pretty amazing. Yeah, it was. God, why don't you take it away, let people know who you are and what you do as well. I'm the guy ",timestamp:"00:08:28-00:10:23",topics:["john vallis"],type:"podcast",weight:4.856878281588437},{boost:0,date:1632628800,description:"The Analogy of [[Automobile Innovation]] for Mass Production and the Development of Related Industries to [[Bitcoin]] and [[Lightning]] Development",episode_title:"WHY ARE WE BULLISH Denver Bitcoin CryptoMags Lord Fusitua Jim Crider ep203",guests:[{name:"Jim Crider",profile_picture:"",ref_id:"acb937b5-97e9-4881-a45e-0e9511382019",twitter_handle:""},{name:"Lord Fusitua",profile_picture:"https://pbs.twimg.com/profile_images/1511890587586560000/xGb_Dq_D_400x400.jpg",ref_id:"45559c92-d4f0-42a5-8dc4-a8cce65e95a1",twitter_handle:"LordFusitua"},{name:"CryptoMags",profile_picture:"",ref_id:"79cd9104-fa2c-4996-a179-8acb75642acd",twitter_handle:""},{name:"Denver Bitcoin",profile_picture:"",ref_id:"5ab53f2f-797f-4e1b-90d8-f2ca90e88af4",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/638c47da-8592-4d7b-aa1a-20e28fa0499f.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/40846589/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-8-25%2F381320f0-9d1f-9ee7-893f-57af427aca69.mp3",node_type:"clip",pub_key:"",ref_id:"6f3620f8-fd11-4b37-b8c1-7b8bd991420c",show_title:"BTC Sessions",text:"Think about when the car became much more accessible to normal people. That changed. Not only that changed the perception of the value of a car, that changed industries for production, and that also changed gosh, the way that cities were constructed. And we could have looked at that and said, Henry Ford, this is trash. You're making crap cars on a line. But the iteration there of, hey, let's get this to the masses. And then later on we're going to have these Supercars. But right now it's about getting it to the masses and allowing for an infrastructure to be built that we can continue to progress and build on from here. And allowing that to be shared. Yes, Henry Ford did some pretty crappy stuff, I guess. But the infrastructure that was built based off of that being accessible to the masses allowed for other people who weren't related. They weren't benefiting directly from Ford or company stock or whatever it was. This network of, hey, we're going to build roads, we're going to build gas stations, we're going to make tires. And right then it opened up a place of progress in a whole industry and the creation of something that had been thought of before just because it became accessible to more people. And that's what's happening right now. It's no longer this small thing that's for cyberpunks or something. It's the masses. And hey, how can this fit with my life? Ford effectively created the context for the word infrastructure. Infrastructure didn't mean anything before there was an automobile because all those roads, those highways, everything that infrastructure came from having an automobile. And that's exactly like you're saying. The entire infrastructure of what Bitcoin and Lightning will be used by will change the way people live, the way people consume music, food, how they store value. It will have ramifications right across the human experience. And just quickly, I just realized I completely did not answer Magg's question at all. Sorry. We've ",timestamp:"01:19:31-01:21:40",topics:["automobile innovation","bitcoin","lightning"],type:"podcast",weight:4.856878280787084},{boost:0,date:1676393011,description:"The small time deposits component of M2 money",episode_title:"#24 Decoding M2 (Non-M1): Money supply USA",guests:[],hosts:[{name:"Matthew Mezinskis",profile_picture:"https://pbs.twimg.com/profile_images/1497857369455398914/un-TpS6g_400x400.jpg",ref_id:"0dc3360c-5243-43f0-a2f4-19f8a171550d",twitter_handle:"crypto_voices"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/3325efce-80a8-490c-8645-cad1b9a22d94.jpg",keyword:!0,link:"https://anchor.fm/s/d8decf3c/podcast/play/65039444/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-14%252F312793741-44100-2-d61bc3a08476d.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"3bfbecac-2ad1-4983-9ed0-f1e48f1f0149",show_title:"Crypto Voices",text:"let's put savings back on. We have savings deposits, the vast majority of non M One, M Two retail money market funds. And now let's add the final component of M Two that we haven't looked at yet, and that is small time deposits. Now this is actually back to a bank. Typically. Typically this can be found in a bank, small time deposits. And let's take off savings and retail just to see this one now you see this one's a little bit more jumpy and way down compared to where it's been around the global financial crisis. It was a little bit more than retail money market funds. 1.4 trillion on the eve of the global financial crisis. And then you see that it fell steadily, steadily all the way until basically today where it's $357,000,000,000 of a small time deposit money supply for retail investors in the United States. There is at the zoom here again to comment on the retail nature of what M two is supposed to be. It's supposed to be more retail liquid monetary assets. Of course that's not always the case with small time deposits. They could be small companies that hold time deposits. Nonetheless, this is just how the Federal Reserve counts it out. I believe it's under $100,000 is a small time deposit. And so what is a time deposit? Similar instruments like a money market fund actually or even a savings deposit, which I didn't perhaps give a full definition either. This is again, when you want to hold your money, you want to hold a balance with a bank. And as we learned in prior videos, that does not mean that there's just physical banknotes and coins sitting in a big vault waiting for you to retrieve. No, that's not how the system works. It's a fiduciary system. It's a fractional reserve banking system and basically nearly all of the money always is lent out by banks in the effort to pursue interest, to pursue profit. And it's a highly regulated industry. They claim that the regulations stop prior bank runs and prior crises. That's very, very debatable, very very arguable. I personally don't believe that at all. But nonetheless that's what they claim. So a time deposit is a very unique type of deposit where unlike a demand deposit and unlike even a savings deposit, which now after regulation do changed, basically has no difference than checking accounts. As I mentioned, a time deposit is basically where you know that you are depositing this money with the bank in return explicitly for interest and you won't be able to take the money out until the term ends. So the deposit might be a month, it might be three months, it might be six months, it might be a year, it might be well over a year. But it is a strictly defined term by the bank where it is very very clear that you are loaning your money to the bank. You can't take the money out of the deposit, the time deposit before term comes due. And if you do, there will be a penalty for you to pay, not the bank. And in return for this time deposit account, which what is in it for you if you offer this to the bank, if you deposit your money in the bank into a time deposit account you should receive higher interest payments than you would in a savings account or a checking account. Sometimes checking accounts pay interest, sometimes not. Sometimes they're just free. But that's how it works. So again, not a huge number and even a smaller number than retail money market funds as of today. But this is an account that you will typically find back in the bank. And again it's just defined by the Federal Reserve as a small number, meaning under 100,000 denomination time deposits. So typically retail, but it certainly could be small companies as well using small time ",timestamp:"00:15:42-00:19:51",topics:["Small time deposits","Time deposit","M2 money supply"],type:"podcast",weight:42.29542842100859},{boost:0,date:1624507200,description:"Small business regulations and [[problems with employment]]",episode_title:"Bitcoin Fixes This 48 Small Business with Ali",guests:[{name:"Ali",profile_picture:"",ref_id:"1169edf2-a89f-4d89-94a4-1be1a7b9aef0",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2536a974-d668-4ac2-8613-0b37aa0ca08c.jpg",keyword:!0,link:"https://anchor.fm/s/2a4e8034/podcast/play/36003846/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-5-23%2F969a4306-e9eb-95c5-0e15-42d37c0e61e8.mp3",node_type:"clip",pub_key:"",ref_id:"b1b5acae-0bc8-4117-8d1b-b61e79bea99f",show_title:"Bitcoin Fixes This",text:"up in the morning. I had a question about your being a small business. What sort of regulations have you seen over the past year and a half with chronovirus and everything? I imagine that couldn't have been easy. And to some degree, I imagine it's still very difficult. What has that been like? Yeah, it's been tough, Jimmy. We were forced to close down our dine in area, but we're already operating most of our business with deliveries, online delivery platforms like Uber Eats and get the dishes and all these door dash and all these things and then take out like, people just come in and pick up two or three Sharmas and take it to their families. And our business has to adapt to this shift in the way people order food. Luckily, we were already there. We were integrated with all the online platforms and we were able to make that transition quite easily. But, yeah, for the first month, I remember the first March of 2020, within one week, our sales dropped like 80% in a week. And it's quite devastating because we didn't know how long things going to last or anything. We laid off people, we tried to get them back, but they said, no, we're getting free money from the government. And that's part of also the reason why we felt like something was messed up with the financial economy and we felt like there was too much money flying around and it was being worth less as time goes by. So, yeah, we just hustle through it, Jimmy, like we did what any business owner would do. You just hustle through it. Something like that Bitcoin wouldn't save you from a situation like this. You need to just make your business work. And if it works and you've done the Bitcoin decision now, you have a successful business and you're in a position of strength to expand your business however you want or to do all the things that you want to do with your business. So it has been challenging, it has been tough, but you got to fight through it. That's the best advice I can give to people. And it sounds like you had some labor problems, maybe even some regulatory problems and things like that. How do you deal with the fact that people are getting paid more to not work, and how do you hire people in that sort of weird incentive environment? Yeah, it was backwards, Jimmy. We tried to get people hired after business started picking back up in 2020. And then they were just like, no, we're good. We're getting free money at home. We were like, okay, for a while there, we had to raise our pay just to attract the people staying at home. So we had to basically compete with the government and paying employees. So, yeah, we did that. But then at one point we said, you know what? We don't want to come back school, you guys. We're just going to hire a whole new crew of people and train them from scratch. And we did that, and it worked out fine in our industry. I feel like there's always some people that are willing to work. You just have to really look for them, but they're not easy to find, but you end up finding good people eventually. Yeah, I've noticed that about small businesses, even here in Austin and everywhere else, you see Help Wanted signs just absolutely everywhere. And the reason is because no one really has to work. So they get paid maybe 20% more for working versus sitting at home and doing nothing. And they'd rather just sit at home. It feels very off. And I can't imagine how difficult it must be for a small business owner to have to kind of deal with all of that. It's really hard, Jimmy. Like, I have my sister and her husband. They're dentists. They have a few clinics here in London, Ontario. They have it even worse because most of their employees are like female hygienists and dental assistants. And they have their kids staying at home and not going to school. And it's even harder to get them to come back to work because they say, oh, we can't leave our kids at home by themselves. We're just going to stay at home, get paid, and you go figure it out. We can't come yeah, it's tough on medium and small businesses. And it's just the reality. It's the backward reality that we have to deal with right now. It's insane to me. Well, does the Canadian government sort of, like, subsidize you for at least some of the hardship that you're going through, or do you kind of just have to deal with it as a small business and sort of not have that many workers or shorten your hours. What are your options? Here's a cherry on top, Jimmy. If your business does well or improves from the previous year, improved, like its sales and its revenue, then you don't qualify as a business for any government assistance. Right. So we have been able to be in that situation where actually our business improved from last year. But because we hustled and got our business going and our revenues increased, we get left out from all the government grants and the rent subsidies and all of that that is given to everybody else that basically just locked their doors and didn't bother to try. I'm fair, but I'd rather be in this position where we don't need help than in a position where we're handing out a hand to the government and asking them for grants and whatnot. So I'm happy this way. Well, are your competitors that kept the prices the same? Are those ones that got, like, government assistance, or are they hustling just like you? Well, yeah. I'll give you an example. Like one of our stores we have like a neighbor, that restaurant, it's like a pizza store. And they've been basically they shut their doors since this whole thing started and they've been able to get enough grants to pay off themselves, their landlords, everyone, and not basically not do a thing, just have the door shut. So from this perspective, it kind of feels unfair. It feels right that if you're not able to adapt in this environment, then you should be kind of liquidated and other entrepreneurs can take up that space and make a model that works better in this environment and so on. But that's just not the way it's working right now. And in that sense, it's kind of unfair. But who cares? You got to pick up our sleeves and that's Bitcoin so they can do whatever they want. ",timestamp:"00:18:56-00:27:00",topics:["problems with employment"],type:"podcast",weight:4.846990585328009},{boost:0,date:1266645600,description:"Power of small stock holder",episode_title:"5. The Profit Motive",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ef62c7ab-ef09-47b7-9af4-2ebe2384a72f.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/05_AustrianEcon_Rothbard_1972.mp3",node_type:"clip",pub_key:"",ref_id:"99fc3f47-1cb2-449e-bd46-97a597fce97a",show_title:"Austrian Economics: An Introductory Course",text:"Well, how about the stock solar manager? This junction the first place. Nobody said it's either way, there's usually a store manager developed here. The story goes. Well, after all the stockholder sitting there. He's got no control. He's just having a dividend. Well, it's true. If I have one share of General Motors stock I'm not going to have a very powerful influence on the decision making process of General Motors. No reason why I should. Nobody expects to. But nobody ever claimed that no New York classical economics with an IQ over 20 has ever maintained that the small stockholder has much power. The point is that the large stockholders have the power. And if you get the large stockholders together on issues then they become dominant. The small stockholders stockholders already do have power. Another way it's very important, a small stockholder if he doesn't like the way things are going if he doesn't like the profit record usually as a corporation he has stock in, what does he do? He sells it. I don't like General Motors this year. Profits are falling, I'm selling a stock. If people start selling the stock small, they are, this means the price of the stock declines and the big guys are holding a lot of stock at a very worried because the value of their assets goes down this way by voting with their feet, so to speak. The small stockholder does it decision, even though not directly not by voting, but by voting in the market, just since it's more powerful. So that's one thing. Also a person currently should contrast this the power the small stockholders have by voting with their feet and the corporations contrast this is so called publicly owned and we'll get back again later, because the government ownership, so called publicly owned operation, where every citizen, by virtue of being a citizen, for example, owns a post office. Well, can we sell our shares in the post office? I don't like the way the post office is being run. I want to sell my share, where do I go to sell it? Obviously we can't go anywhere talking, we ain't got no shares. It's really government owned and the public ownership is a pure mythology by which the government closest operation so we have the power in a private corporation to sell a share if we don't like it, we don't have the power in a so called publicly owned government operation you can't sell the shares of the public school, for example. Okay, let's ",timestamp:"00:07:39-00:10:00",topics:["Small stock holder","stockholder"],type:"podcast",weight:4.837404131889343},{boost:0,date:0,description:"Talk about Value to Value Apps and Brian Murray' Project",episode_title:"Cool Apps Built on Lightning - March 16, 2022 - Voltage Twitter Spaces",guests:[{name:"Chad Atkins",profile_picture:"https://pbs.twimg.com/profile_images/1200611447979544576/W9ocRJTb_400x400.jpg",ref_id:"62da3c50-0a46-400b-81a3-5f482f5b8fee",twitter_handle:"Chemchad"},{name:"Michael Atwood",profile_picture:"https://pbs.twimg.com/profile_images/1362207977470521345/Jy2_Ge60_400x400.jpg",ref_id:"16359ade-afb9-4a37-be0b-0844a6134327",twitter_handle:"Dooowta"}],hosts:[{name:"Nate Glasky",profile_picture:"",ref_id:"0662789d-b39e-4aed-ad6f-44257695b6af",twitter_handle:""},{name:" Bobby Watts",profile_picture:"",ref_id:"ae2685c6-1307-473a-95b0-87c234e50483",twitter_handle:""}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2ec62250-4755-4616-8342-096a2cfab95f.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=4EJrnxYOShY",node_type:"clip",pub_key:"",ref_id:"addee850-119f-472c-87c2-05fc0642abeb",show_title:"Voltage",text:"guess until someone raises their hand, there's one. I don't have a list maybe like you do, but one of the things that's on my mind is I've been playing a bit more with some of these value for value apps where basically whenever you find something good, you can tip or just get someone sat. Like what I've been mainly playing with and enjoying is Fountain and Stacker News. I just think it's super fascinating and I can see in the future how there could be like a Wikipedia that's Lightning based where you get tips for creating good content and I can just see how that could really take off. But I've been really having a good time with Fountain, using that app and just onboarding a lot of friends, and I know they're doing a ton of things behind the scenes that are going to be rolling out over the next couple of months, which is exciting. Yeah. Fountain is really slick because it's sort of like an overlay, over spotify if you want it to be. Right. I had a little bit of time playing with it recently, but it's really cool. I recommend anyone to try out Fountain if you listen to podcasts. Yeah, and I just heard, someone told me today that whenever they logged in, fountain gave them like 1000 free stats or something and you can use it to kick start streaming stats to people and paying content creators, but pretty sweet. What's up, Brian? Hey, welcome up, man. A fellow shadowy supercoder, I believe. Yeah. Brian of London. What's up, man? You're muted right now. Did you want to share something. That'S unmute? I'm in a car, so if it sounds terrible, I'll duck off again. Yeah, I joined Voltage today. I've been building stuff all to do with Podcasting 2.0 for a few months now and interfacing with Hive. I know, don't worry, it's another blockchain thing. But this whole business of value for value is absolutely critical. And Lightning is very important because of the low fees and other than the hassles I've been having with nodes and hardware braking, which is why I just started up a voltage node tonight because I spent the whole day messing about with an umbrella and broken SD cards and stuff. So I'm really hoping that Voltage is going to be better for me to build something kind of that I can really share. But yeah, looking forward to getting that going. And what I'm actually doing is converting from Hive into Lightning and lightning into hive because there's about four, four or 5000 Lightning enabled podcasts on the value for value system right now. But the little secret behind that is that about two and a half or 3000 of those I put there because they're all video channels on something called Three Speak and I handle the stats for those. So, yeah, there's a lot coming. A lot coming. I love the vision. That's awesome. Having the ability to send not just quick payments, but small, instant free ones, relatively free, is just incredible. Like, worldwide, the amount of things that you could build is incredible. So that's really cool, Brian. Yes. Anyway, thanks. A lot of stuff to build. I hope that Voltage helps smooth some of those corners for what you're building. Well, yeah, I mean, I was building something and I've been building it all sort of within my home, basically. And I just got to the point where I'm sharing. I've got a method to expose invoices out into the world, but I don't like how I'm doing it. And I have to have a node that's public. Lightning is a bit of a fiddle, I've got to say. I develop on two things because I'm developing on the Hive blockchain, which is super easy because it's got no fees and very quick and it's got an easy developer and I don't have to think about all these channels and stuff. But what Lightning brings is this ability to have these wallets all over the place. That the way Lightning works for small wallets on phones, inside apps like Fountain and stuff. There's nothing else like it that I've seen. So there is a combination, which is what I'm combining two different things because I think on the receiving side for podcasters, actually receiving SATS on their own node is beyond most people keeping a node running with the channels, with the liquidity in the right places and all of that stuff. I don't think that's going to be a mass market thing. Yeah, I think over time that should be softened around the corners, automated a little bit, hopefully. But yeah, we're still definitely early days where it's nice and tough, so to speak. Yeah, it's a struggle learning. I've been on this for like nine months now, learning how to open channels at the right time so you don't get whacked with too much fees and who to open channels to and the sort of the dark art of channel fee pricing and all that stuff. So you open a channel and go to bed and then in the morning the SATS that you thought that you would have for outbound have all snuck off somewhere because somebody rooted a million SATS for you and you didn't change your fees, that kind of stuff. Anyway, it's all learning. Very cool. All right, thanks for having me on. I'm going to mute. Bye bye. Thank ",timestamp:"00:02:18-00:08:42",topics:["Brian Murray"],type:"youtube",weight:4.822762489318848},{boost:0,date:null,description:"Bitcoin price indicators and how Bitcoin pricing might stabilize ",episode_title:"Café ₿: #Bitcoin Beginner Q&A",guests:[{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Stephan Livera",profile_picture:"https://pbs.twimg.com/profile_images/1362551718110580740/v-W5Q2uo_400x400.jpg",ref_id:"72f57157-c96e-4466-8bf1-290cfe1f8a0b",twitter_handle:"stephanlivera"},{name:"Thomas J Lake",profile_picture:"https://pbs.twimg.com/profile_images/1529168328534769670/5cl2Y_k-_400x400.jpg",ref_id:"21541a47-0601-447c-99c2-312d1a63c19f",twitter_handle:"thomaslake"},{name:"Goodguy",profile_picture:"https://pbs.twimg.com/profile_images/1363216959576285185/unulY4yd_400x400.jpg",ref_id:"0c3fec75-9cc2-4c0f-8dbe-db7fae2b585b",twitter_handle:"goodguybiker"}],hosts:[{name:"Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"49966553-d55b-44c9-94ec-8fee09eee5c2",twitter_handle:"CitizenBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/35b20273-49f2-45ea-a9f4-dc479d86573c/7ae5315f-beb2-41e2-b672-65dd1f102017.mp3",node_type:"clip",pub_key:"",ref_id:"dbc2c8f6-e85d-449c-a431-e52f6e7594e2",show_title:"Swan.com",text:"We're going to continue to do these, I think. I've been talking to Jacob about this, doing this maybe once a week, doing a beginner Q and A, getting back to our roots. And if you guys want to participate in that, we'll talk about it and see if we can do this on a more regular thing. Let's do one more quick question, and then we will make some closing comments and wrap the show. Zoom out. Do you have a beginner question? Welcome. Hi. Thanks. It was a little more advanced, and it was specific to you guys talking about the pricing and the measurement of pricing. So it's not a simple one. Sorry. But I was very fascinated to understand how the price might stabilize over time and what the indicators are there. In. Terms of pricing everything in Bitcoin. I'm going to I'll give a quick answer to that, and we'll move whether my answer suffices or not. Okay. So basically, I think there's an opportunity first of all, there's an opportunity cost, and also, there's not enough monetary energy in it yet for it to be more stable in my iceberg versus ice cube example. But the other thing is, is that it's not quite being used as a medium of exchange yet, which will also help stabilize. And the reason it's not, in my opinion, is that we're still in the value accrual phase. There's an opportunity cost. Many of the people holding it don't want to use it or sell it because we believe it's going to gain in value. I mean, we'll use it on a small scale. I'm using it on a small scale. But, you know, if if a if you look at the the coins that are held today, I think something like 60% or more of the supply has not moved in more than a year. And what that tells me is that the people that are holding it think that there's an opportunity costing it and that's why it's not moving. And until that's arbitraged away, you're not going to see it fully employed as a medium of exchange. Without that, there's still going to be that level of volatility there. Go ahead soon. Yeah, thanks. I guess there's a bit of reading to do that on economics, but it's fascinating to see how the globe or the whole world might start to equalize and synchronize in terms of how they measure and value everything around the world. On top of that, I just wanted to add maybe to some of the newbies. I've been in this space for a couple of years and thought I had a good understanding. And then I listened to Lynn Olden over the weekend and she described bitcoin as being unique in that it solves this abstraction of the money. And my head exploded because I realized somehow that actually there's a coupling of the transaction itself and the record of that transaction. And it just completely blew my mind because I for some reason couldn't see that until she described it and it solves the abstraction. I think that's the double spend issue. By Zenfine general's one, but it was. Her description specifically on simply bitcoin of it being married. Awesome. Yeah, it takes all sorts. Every one of us who explains bitcoin will reach different people. And that's the reason why it's great to have such a great spectrum of personalities that are doing it. Let's get to some closing comments and we'll wrap. Thanks for coming. Zoom tomer. Do you want to make closing comments and we'll let Stefan go and then we'll move to wrap. Closing comments. Bitcoin is not that hard. It's a very simple thing that you can take custody of. Use it the way it was originally intended to be used because it's kept all those promises. There's a lot of charlatans in the space. Beware of people promising easy returns, safe returns, quick returns. They're all out to get your bitcoin from you and they're selling you something different. I just hope you can learn the lesson at the expense of others rather than at your own expense. The direction that it's going in is you will likely eventually own bitcoin. So start figuring out how to own it sooner rather than later. Awesome point out. Before we go to you, Stefan, I just want to say thanks to Good Guy and Neil and everybody who comes up here on the regular, we're really out of time. Otherwise I do closing comments with all you guys. We love you guys, we appreciate you guys coming. Stefan, closing comments and then we'll wrap. Yeah, look, I would just say don't feel overwhelmed. It's very simple. Like once you've withdrawn and then actually practiced doing a transaction, you'll find it's actually a lot simpler than what was thought. So I think it's a common thing where people are maybe they're a little worried the first time they've ever done it. But then after that, I promise you, it's a magical feeling. Doing your first bitcoin transaction, doing your first lightning transaction. I think most of us can remember our first bitcoin and our first lightning transaction, so definitely get out there and give it a go, if you haven't already. We do have some regular webinars that we're running, so make sure you get on with our swan email list and you'll find out about those because we're hosting some webinars ",timestamp:"02:01:53-02:07:04",topics:["Bitcoin volatility","pricing"],type:"twitter_space",weight:4.822762489318848},{boost:0,date:null,description:"Is there a minimum withdrawal amount in Tweetoshi?",episode_title:"Café ₿: Bitcoin News & Using Bitcoin w/ Twitter, @tweetoshiapp",guests:[{name:"@TweetoshiApp",profile_picture:"https://pbs.twimg.com/profile_images/1532819967133028352/frxdtSHX_400x400.jpg",ref_id:"97e59475-beaf-44fe-b1b0-ea2a63d335b6",twitter_handle:"TweetoshiApp"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/25fad353-f7a7-43cb-9197-beef1e783983/e2ec31c3-43e5-4e81-af3a-b153b8c219ca.mp3",node_type:"clip",pub_key:"",ref_id:"fc9b5e45-fc94-42dd-a722-bde164f8c24b",show_title:"Swan.com",text:"a maximum is there a minimum limit in terms of what you can withdraw or can you withdraw like a single satoshi? Yes, for now there is like a super small minimum limit of 100 satoshi. We would like to get it down to one satoshi in the future, just like for the for the, like, let's say a meme. So we can withdraw literally anything, but for now, there is 100 satoshi limit. Cool, thanks. Would one satoshi even be possible? Because you still have to pay the unchanged transaction fee. Now you can withdraw one satoshi from Thunder Games, for example. So it's possible. Yeah, but what does that mean? Are they paying the transaction fee? I'm assuming that there is no routing fee for that small of the transfer. Like if you're doing one satoshi from Thunders custodial wallet to Moon or to whatever, they have it set up in such a way that it works. Either they eat the fee or their channel is set to zero fee. Because if your channel is set to zero fee, it's lighting ",timestamp:"01:52:34-01:53:48",topics:["Tweetoshi App"],type:"twitter_space",weight:4.8130316734313965},{boost:0,date:1599305976,description:"How US debt affects the economy ",episode_title:"Borrowing - where is the money going? Corporate, Small Business, Government",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/abd94520-1490-42aa-b349-9e861494a654.jpg",keyword:!0,link:"https://anchor.fm/s/138410f8/podcast/play/19113751/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2020-09-05%252Ff840233e9317a45e95724ebf5de7e057.m4a",node_type:"clip",pub_key:"",ref_id:"e97927cd-526b-46ef-bde2-7e60339fd4a5",show_title:"Economy Guy",text:"small businesses doing regarding borrowing money? Well, they go to a bank and they borrow money. And typically the bank, they go to an SBA bank. That's a Small Business Administration bank. That's a bank that does Small Business Administration loans. So what is one of those loans? Sounds interesting. What is that loan? Well, the SBA, the Small Business Administration, which is a government agency, guarantees someplace between 50% and 85% of that loan. In case of default, the government will back it. So that reduces that much risk of the loan to the bank that's doing the borrowing. So that really lowers the risk to the bank. That's pretty good for the bank, right? In spite of that, the SBA banks are not lending right now. You say what? Huh? Why? Well, you see, the SBA banks are going back to the Small Business Administration and saying, hey, you know, that amount that you guarantee, we'd like you to increase it to 90%, even 100%. Splendid. Fully guaranteed. So you see, the banks don't want to take any risk or truly minimal risk. That's where they're coming from. Now, do we have a measure of how much? When I say SBA lending is stopped because small businesses is the heart of the US economy. Small businesses are the things that create employment, big employment. Most people work for small businesses, not the big corporations. So encouraging small businesses to borrow money and then using it as a good loan and creating jobs, creating profit, creating their own business, growing their own business is a good thing for the US. I mean that would create a boom in the US GDP. But the lending has basically stopped. And I have one measure of a group of banks. So it's not all lending, but a group of banks. Their measure is that since April of this year, 99% of the loans have stopped. Only 1% of loans equivalent to the last year have gone through 99%. That's effectively all lending to small businesses have stopped. And why? How big are the loans? I mean, the loans we're talking about are 5 million to $10 million, no more than 5 million. SBA loan can't be more than $5 million, but the Cares Act increased it to 10 million. Well, that didn't mean anything because nobody's lending money. So who Cares Act did not affect anything. What are the banks doing? They don't want to have any risk. What they're saying is to companies that are surviving through this pandemic, they're saying, well, I don't know if you're going to make it when we recover. I mean, you may only be growing because of the pandemic. When you may be gone, your bone could be bad. And they're saying to the people who are really hurting that need their money, we don't know if you're going to make it when the pandemic is done because you may run out of money before it's done. So in both cases, a good company and a bad company is not lending because it's all about risk. That's kind of interesting when it comes to small businesses. And the result there is without lending in that particular sector, we're not going to have a fast recovery or as fast as possible. So one thing for you, the listener, to listen watch for is lending to small businesses. Is there something that could happen in the future that you will hear in the news that is freeing up money? If so, that will be good for the economy. If not, it's going to be a slow growth. And now for the last area who are borrowing money? That's the government or the US. Treasury. In the case of the United States, people who are lending money are throwing money at the US Treasury. That's big bucks. The big bucks are going to the US Treasury. That's where the money is ending up. And how big is big? Well, this calendar year for 2020, the big bucks, it looks like the US Treasury is going to borrow about $5.4 trillion. That's so big, it's unimaginable. How big? In the good old days, when we were borrowing too much, it was $1 trillion a year. This year it's going to be $5.4 trillion. That puts it into perspective. Horrible, horrible, horrible. And that doesn't count if there's a new stimulus package passed by Congress this year, which I doubt will happen, my personal opinion is that Congress is at loggerheads. The two parties aren't about to agree on anything since we're so close to an election. So I don't think a new stimulus package would happen. But if it did, it would be even more borrowing. That's as simple as that. We don't have the money. Otherwise. The only way to get it is to borrow it. So the US government is the perfect example of bad borrowing. They borrow money. It is not productive. It does not pay back anything. They're not building roads and bridges that can pay back the money or contribute to productivity or all those good things that you can do with money. No. So what happens with all of the debt, which incidentally, is going to be 100% of GDP this year? That's supposed to be a magic number. It shouldn't happen. It should cause comets to fall out of the sky or something. But that's what's happening to the US economy this year. It's massive debt. But what happens every year as they bring in taxes? Where does the money go? Well, part of that money goes to paying the interest on the debt. And the bigger the debt, the bigger the interest. Now, that interest is not productive. It just goes to pay back the people who lent the money. It's not going to building roads or building factories or buying things that are important to buy. It's not helping the economy one little bit. So I say to you, ignore that. It's not good US Treasury, even though that's where the money is being thrown, it's not good debt. So there is my positive message for the day. I hope you liked it. That's where we stand. Corporate debt is they're in good shape. They have too much money. They don't know what they're going to do with it. They'll probably do something foolish with it. They have in the past. Small businesses can't get a loan so we can't grow. Because of that, the treasury has more money than they can use. Anytime they want money, they just say, please give me, and people give me it. So that's happening. That's the world of debt in the United States today. That'll change, of course. But be aware that all of those are not good things for our future and are not rosy rosie, I'm sorry to say that I do want some a lot more Rosies. So ",timestamp:"00:12:05-00:19:41",topics:["US debt"],type:"podcast",weight:4.810045599937439},{boost:0,date:1673549347,description:"How different people use different methods to safekeep their assets",episode_title:"BR019 - Proof of Keys Day Twitter Space ft. Lopp, Craig Raw, Lazy Ninja, mshodl, Rijndael & guests",guests:[],hosts:[{name:" Jameson Lopp",profile_picture:"https://pbs.twimg.com/profile_images/1594137153625276416/t1RUP3yP_400x400.jpg",ref_id:"062ec6c8-0fa2-4bf6-9aa1-7ab347df2530",twitter_handle:"lopp"},{name:" Craig Raw",profile_picture:"https://pbs.twimg.com/profile_images/1362841242665631745/UtA3FBQU_400x400.jpg",ref_id:"f2d1f5f0-2e1c-4d16-937d-4d48627cb955",twitter_handle:"craigraw"},{name:" Lazy Ninja and Rijndael",profile_picture:"https://pbs.twimg.com/profile_images/1362843002318721028/PNKWuu0-_400x400.jpg",ref_id:"23edbd50-9b0b-4e9a-aa56-57c2af074173",twitter_handle:"FreedomIsntSafe"},{name:"Justine Harper",profile_picture:"https://pbs.twimg.com/profile_images/1559710083734540289/HXTH4kqO_400x400.jpg",ref_id:"7b5a8957-1c4b-474f-bc38-291b382a13e6",twitter_handle:"mshodl"},{name:" Dee",profile_picture:"https://pbs.twimg.com/profile_images/1600155411868434433/9k1KQ8i5_400x400.jpg",ref_id:"ad33288b-28d4-4f15-9492-f64bce891613",twitter_handle:"HodlDee"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f1879df9-9bc6-4a76-951f-24548da768ef.jpg",keyword:!0,link:"https://anchor.fm/s/9500fad8/podcast/play/63399670/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-0-12%252F0a789f60-2c9a-6bbb-945a-79f3dd937cee.mp3",node_type:"clip",pub_key:"032d7609ff3f4a5232e4d60967971e23bc671dfb68020845a59bab5dc1f3b93b87",ref_id:"08600eb8-a8b1-4be4-b505-3adc409da2f8",show_title:"Bitcoin.Review Podcast with NVK & Guests",text:"holes, but just before I go there, I just kind of like want to recap. So I think we all agree that different people, different needs, different solutions. Even the same people might need different solutions, right? You want your spending wallet, you want your lightning wallet, you want maybe a warm wallet. I think we all agree that keys should never be on a computer or touch a computer. I think we all agree that harder wallets work great. I think we all agree that multisig solves a lot of problems. We don't all agree that single SIG plus passphrase is great, but we do have some agreement on where the faults lie. We can recap that if you guys want to pick at anything I said, so don't feel like I am putting your foot down here. So I guess the main thing is that I want people to take out of this sort of like, simpler, more new part of the conversation is don't get overwhelmed with solutions out there. You have time, you can test things, you can experiment with different services, you can experiment with different wallets. Most of the solutions are free. And then if you want to get into harder wallets and you can even build your own solutions out there, I think it's important that people don't roll their own solutions, especially not their own cryptography. I don't think that's a concern anymore, but it used to be back in the day, and then sort of like we can start getting to the weeds of some of the FUD that confuses people around different solutions and go from there. Do you guys have any sort of like short comments about the previous sort of like noob conversation that you want to before we move on? Yeah, I mean, like, we said it earlier, but just to really drive it home. If you got $50 or $100 on coinbase or Gemini, just go install moon wallet or blue wallet on your phone and get it off and start playing with it. Like, you don't have to go straight to seed plate buried behind the third oak tree. If you've got $50 on coinbase, you can really start small. So you just said it, but it's worth saying over and over and over again. I mean, that question does come up every single time I do spaces somewhere or back in the clubhouse thing. It's amazing to me how much people don't understand that they don't need to do like twelve out of twelve DVDs for $100 worth of Bitcoin. And that is how you should be experimenting with Bitcoin. Don't go buy an asset with all your life savings until you understand how the heck that asset works. Well, a lot of people I've heard the same thing, like clubhouse or friends will say, well, I only have $100 worth of Bitcoin. I don't really want to go buy this hardware wallet. That's a certain amount of money. It seems kind of crazy for the amount. It's like, well, you don't have to. There's free mobile wallets. That could be your first step. So I think the biggest takeaway from this space is it's not all or nothing. Like take the steps and we're kind of walking through the steps specifically. But you don't have to spend money on an assigning device or hardware wallet. You can just download a mobile wallet. That's the first step. And then even when you start getting more sophisticated, you also don't have to have one wallet, right? I have Blue wallet on my phone. I also have several multi six set up, right? And you can think about partitioning your money where you have a really small bucket of money that's super easy to get to and very easy to spend. And then you have a bigger bucket of money that's harder to get to and harder to spend. And those things can change as your life does. Just like we're not walking around with our life saving in our pocket, right? We take what we need to spend when we go get coffee or whatnot and the other is secured somewhere. So, yeah, the multiple wallets, depending on your needs is totally good. You know it's a segregation, right? It's like hygiene in that sense. You're going to have your savings account, you're going to have your checking account, you're going to have your credit card. You do segregate fiat in all these buckets in your life, right? So why not do the same with Bitcoin? You don't want to be buying coffee of all your wealth. I think there is something interesting to be said about diversity and how to apply diversity from a security mindset. For example, one really common trope that we see is people coming to us who they have, for their safety, diversified their funds across five or ten different wallets. And some of these may be self custody, some may be custodians, but their whole idea is don't put all of your eggs in one basket. And my push back against that is that yes, that type of diversity does of course reduce the chance that a single catastrophe will completely wipe you out and cause you to lose everything. But it can also be increasing the chance that you will have a partial loss in one or more of those setups will fail. So one interesting aspect of multisig is that the diversity that you can add to the setup by having keys on different hardware manufacturer devices in different physical locations and basically different security properties around each of the keys in that setup is that that security is actually additive. It creates a stronger and stronger setup because it's essentially eliminating these single points of failure. If an attacker, for example, compromises supply chain of popular hardware manufacturer. If your multisig setup is not using all the same hardware manufacturer, you're protected from that. That's just one example. So, point being, diversity can be good, but applied the wrong way, it can actually be harmful. It's kind of fascinating and it really goes to show like why there is no sort of fix all solution. Each set up is going to have different sets of trade offs. And the complexity also does increase some issues there too. So you could argue on one side, it's like you want to have some diversity in your harder wallets because if one vendor is evil or really like, realistically speaking, it's going to be a targeted attack against you that it's going to maybe replace Harder or something like that. You could be fault to that, but at the same time you could have multiple Harder Wallets and say, the software update on some of them break the multisig setup, it's unlikely to have full loss of funds, but it could be quite the issue to sort of go back to you being functional. And then each vendor is going to offer sort of like different thresholds and some vendors out there offer simply either no security or illusion of security or like really crappy hardware. There's like hundreds of hardware wallets. I'd say probably out of 195 of them are absolute garbage and should never be used. And the guys from Ledger actually do a great job breaking Harder Wallets. You should check out their Don John blog where they have broken Harder Wallets and how long it takes to break them and how much money does it cost to break them. There's Harder Wallets that cost like $10 to break. There's Harder Wallets that cost half a million dollars to break. Not all things are equal just because they're the same category. So I guess this is a good segue to move to more sort of like rabbit holes of security and things of sorts. So why don't I bring up maybe lazy ninja who is a security researcher for hardware. He has helped us find problems. We have a good guy as well. He's a fantastic security researcher here too. We have what else do we have here that is of the category for the beginner stuff? While we're on the topic, I know Sparrow has a great thing called Master Fingerprint ID. You know, we as well have something called Master Fingerprint ID that you can check on the cold card itself. So if you're you know, you're dealing with a single SIG wallet and you know, you don't know if in your if you're in your passphrase wallet or you're in your BIP 85 wallet or whatever you want, you can go to Advanced Tools and go to View Identity and then it will give you a string of eight letters and numbers. And that's basically the first four bytes of your public key. So it's just a great way to know. It's kind of like a username or something like that, right? It's just a way to identify what wallet you're in without having to try and sign a transaction and get that error. So it's just a good thing for beginners to know about and I find it very useful. Thanks. Dee. I think we're going to be attacking a lot of those little issues. Justine and Jameson, thank you so much for joining me. Like, I love if you guys stay, but if anybody needs to go, totally. I don't want to take up your time, but you guys have a lot of knowledge to push out, so please do stay if you can. And with the first part of the space is gone. Let's improvise on the second part, which I think will be really cool to sort of talk about some of the fun around solutions and some of the ways the products in the market do address them. Hopefully, we can clear a few of those, because that's, in my view, one of the things that keep people from using good solutions is just this fear of the nearly impossible attacks, or actually attacks that are completely alive. So why don't we start with can ",timestamp:"01:09:32-01:19:34",topics:["Hardware wallet","multiple crypto wallet"],type:"podcast",weight:21.998553860382764},{boost:0,date:1665687900,description:"Small Towns Only Have Terrible Food Choices - Socioeconomic Problem? It’s A Govt Subsidy Problem - Flipped Food Pyramid ",episode_title:"#1104 Dr. Philip Ovadia - Heart Surgeon Explains What To Eat To Save Your Life",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/7934bd86-9344-4f1a-9c36-ea5f63ae418e.jpg",keyword:!0,link:"https://anchor.fm/s/b4841110/podcast/play/58963723/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2022-9-12%252F290744275-44100-2-e4f30b61276f1.mp3",node_type:"clip",pub_key:"032ff32727b06d20a13a0a8d8dfe09d39659c16deeaffbf94d6d21ec6bb28850b6",ref_id:"50cf9922-5d13-4a4b-8621-e934b422aebf",show_title:"The Pomp Podcast",text:"town in North Carolina my wife and I were driving through at one point, and it's kind of one of these streets where there's three, four, five stop lights, but it's a one way or a kind of straight shot that you can look down. And for whatever reason, I said to her, oh, my God, look at all the signs. And it was Wendy's McDonald's. Bojangles chickfila. It was just like all of it, right? And it was almost like a shot you would see on the Internet that kind of goes by when we were like, wow, America is so stupid. And as we looked, what I think shocked me was in that small town, I don't know if you could have an average salary and eat healthy, right? Because everything that was thrown in your face was cheap and unhealthy. And so how much of the obesity epidemic or kind of the rise in the unhealthy American is a socioeconomic and like a poverty problem or a money problem versus people have the money to go and eat healthy. It's just they aren't educated or they're lazy, and they don't want to do the work to actually do that. Yeah. So I do think that both play into it. When you look at why is processed food so inexpensive? You start to look at government incentives around the crops that get subsidized versus why aren't those subsidies going to the ranchers who are raising cattle? So you have to ask, why is that food the inexpensive food? I mean, the reality is it doesn't need to be that way. We could very easily shift what becomes the inexpensive food for people. And then there certainly is the educational piece of it. And quite frankly, we start to get into the miss educational piece of this because, you know, the predominant messaging around healthy food here in the United States for the past 50 years has been the food pyramid. That whole grains are the healthiest thing you should be eating and cereals and wheat and all of this. That's insane. That is literally insane. We have more than enough evidence at this point to know that that shouldn't be the case. The food pyramid should essentially be flipped upside down. So then you start asking those questions because it's like, okay, not only have we gotten this wrong, but we got it so wrong that it almost has to be intentional. You can't mess things up this badly without there being some intentionality to it. Okay, so ",timestamp:"00:12:30-00:15:19",topics:["Small Towns","Socioeconomic Problem","Govt Subsidy Problem","Flipped Food Pyramid"],type:"podcast",weight:4.9863560048368285},{boost:0,date:1676681753,description:"The possible applications of Cashu Chaumian Ecash",episode_title:"WHY ARE WE BULLISH? Ant, Bitcoin Island, Decentra Suze ep324",guests:[{name:"Decentra Suze",profile_picture:"https://pbs.twimg.com/profile_images/1614189317345214464/Z4BZBBbb_400x400.jpg",ref_id:"da307464-4ac8-449a-81f0-74ea9749dd1b",twitter_handle:"DecentraSuze"},{name:"Ant",profile_picture:"https://pbs.twimg.com/profile_images/1617275233831886853/RlWpn1qQ_400x400.jpg",ref_id:"9575e6e8-cd06-48f0-b548-801f7d2357a5",twitter_handle:"2140data"},{name:"Bitcoin Island",profile_picture:"",ref_id:"9b88c77a-65c9-4ae6-a30c-890937636d7f",twitter_handle:"BitcoinIslandPH"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/65227742/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-18%252F313420179-44100-2-8fb4b50d66df8.mp3",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"784b1ee8-56e7-403c-b813-24713fd3a29c",show_title:"BTC Sessions",text:"first of all, has anybody here either heard of or used Ecash via lightning? Bill, you have? I'll just ask, what has your experience been? I haven't been able to use it. I've only heard about it, but here on the island we have a fairly small community, like I said, 250 different businesses. And I'd like to see them being able to save on chain through something like this. I've just not really understood it. I end up going to talk to people and show them how to save bond chain and I think they understand it. I need to go back and check on them in a month to make sure. But if there was an Uncle Jim on the island so they could be self sufficient on this and know that they're saving, that would be a pretty great solution. Yeah, I love the kind of in between again, helping people like Uncle Jimming for somebody when you know, and it doesn't even have to be a permanent thing, but being like an interim Uncle Jim for people and helping them along their Bitcoin journey, I think that's a valuable thing to provide. And then some people will move beyond that and move into self custody for themselves and then other people that maybe that ends up being their last stop along the journey. But at least it's better than just full leave your money with a single entity that you then have to trust. At least you can kind of remove single points of failure with a mechanism like this. And I'm curious, your thoughts on this stuff. Are you for are you for it? Do you have reservations about it? What are you thinking? Thanks. Yeah. I believe that you should have an adversarial stance in all things in Bitcoin, everything that comes up until you fully understand it and then maybe try to understand it even more. Right now I really like it a lot from what I've read, and I don't fully understand it as well as I can, as well as I should or could right now. But it is exciting. I think that I'm from Texas. There's a lot of farms around here and like small communities and that's where I see a lot of potential here for something like this, where people don't really think about it a lot. But in small, like little ranching communities, they all know each other, but their access to the legacy financial system, it can be difficult or even nonexistent sometimes, or even predatory in some ways. And seeing something like this, the right platform with the right user experience, I think could be really major for the local ranching communities and just other communities small around the world, obviously. But that's what I think right now. Close to home. Yeah, absolutely. And I'll jump to susie as well. Again, I don't know your experience with this kind of stuff, but just from kind of seeing that there, do you have initial impressions? Where are you at with this kind of stuff? The first thing that popped into my mind was whether or not it would be able to give you some non. KYC Bitcoin oh, yeah, you could easily be able to clean it up. Yeah, you could easily be able to clean it. I mean, you could have peer to peer markets with this type of stuff. Very simply, again, there's a lot of already kind of peer to peer non KYC solutions to be able to buy bitcoin. Like I mentioned, hoddle Hall off the top of the show, but there's robo sas, there's bisc, there's even just like obviously directly in person. But you could easily integrate like a chow mein ecache version or have that as an option on one of those markets and be able to exchange whatever other value for Chow me and Ecash SATS or Lightning or on Chain or whatever else people want. But yeah, obviously the interface right now is not going to be the simplest for people, but I just saw the old mate, ",timestamp:"00:16:30-00:21:14",topics:["Cashu","Chaumian Ecash"],type:"podcast",weight:42.912927374554435},{boost:0,date:1664323200,description:"Beacon for community of bitcoiners & benefits for ermployees",episode_title:"TRUBIT bringing Digital Loyalty Assets to Bitcoin - Voltage Twitter Spaces",guests:[{name:"@0xLinden",profile_picture:"https://pbs.twimg.com/profile_images/1439365331202437125/JBiXogun_400x400.jpg",ref_id:"b8bb4402-8f86-4220-9dee-0fa28ff8de72",twitter_handle:"0xLinden"},{name:"Stephen Doge",profile_picture:"https://pbs.twimg.com/profile_images/1215979900387184641/nZXkhgoP_400x400.jpg",ref_id:"076972a2-cdab-4766-8c66-618472b80772",twitter_handle:"StephenDodge20"},{name:"@617a7a",profile_picture:"https://pbs.twimg.com/profile_images/1548336437308715016/FUZFJf9k_400x400.jpg",ref_id:"148d77a5-6e95-4855-9e17-19e68f648898",twitter_handle:"617a7a"},{name:"@ian__major",profile_picture:"https://pbs.twimg.com/profile_images/1427414299169984517/Hw0ux6ie_400x400.jpg",ref_id:"7ed41a74-21a4-43a4-9a05-e977c981b6d3",twitter_handle:"ian__major"}],hosts:[{name:"@voltage_cloud",profile_picture:"https://pbs.twimg.com/profile_images/1508657900486422529/Lfa70poj_400x400.png",ref_id:"3b622187-60ce-43c2-a21f-ae749c2d961a",twitter_handle:"voltage_cloud"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2ec62250-4755-4616-8342-096a2cfab95f.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=1Cn7F1Oo_6Q",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"f10270d7-1cdc-4922-853a-1f8247750382",show_title:"Voltage",text:"Bitcoin meetups are big. But even just acknowledging that there's a lot of crypto ones and blockchain ones, and if we can kind of just show that, hey, these brands are seeing these kind of groups come to them and host events or do things at their locations that's just, again, another selling point for them. Like, hey, this is growing. Hey, this is not a fad, it's not going away. You should probably start doing something to kind of cater to again this consumer segment that's growing and you're now actively engaging with, we plan to do more of that. Yeah, I think that's one of the things that has me most excited about what you guys are offering is giving the community something to use to expand. By landing a business, you've provided a beacon for the community of Bitcoin to support them and now that business is like, okay, I see there's an asset and the rewards are a thing. It's getting some interest. Oh, I guess there's a network where I can actually transact on and then layer three, if you will, right. The community of people and how it's expanding or what kind of people it's bringing into the business. I think you get a lot of compounding effects there. So, yeah, just super excited for it. And it's kind of funny too. Just like one quick note on that. We've kind of seen a little bit and kind of didn't mean to discover it, but talking with brands was even just not only from the consumer perspective, but employees like benefits to the employees themselves for small mom and pop mid size bigger. But that's actually a pretty attractive offer for brands to attract employees and reward them. I'm sure many people are aware of internal rewards programs for doing certain things or hitting certain milestones, stuff like that, but it is kind of something we have more recently heard and seen from things as far as just employee benefits, health benefits, things like that. So kind of something we're keeping a tabs on. ",timestamp:"00:41:08-00:43:30",topics:["bitcoiner community"],type:"youtube",weight:4.831891866310001},{boost:0,date:null,description:"How to store your Bitcoin",episode_title:"Café ₿: #Bitcoin Beginner Q&A",guests:[{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Stephan Livera",profile_picture:"https://pbs.twimg.com/profile_images/1362551718110580740/v-W5Q2uo_400x400.jpg",ref_id:"72f57157-c96e-4466-8bf1-290cfe1f8a0b",twitter_handle:"stephanlivera"},{name:"Thomas J Lake",profile_picture:"https://pbs.twimg.com/profile_images/1529168328534769670/5cl2Y_k-_400x400.jpg",ref_id:"21541a47-0601-447c-99c2-312d1a63c19f",twitter_handle:"thomaslake"},{name:"Goodguy",profile_picture:"https://pbs.twimg.com/profile_images/1363216959576285185/unulY4yd_400x400.jpg",ref_id:"0c3fec75-9cc2-4c0f-8dbe-db7fae2b585b",twitter_handle:"goodguybiker"}],hosts:[{name:"Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"49966553-d55b-44c9-94ec-8fee09eee5c2",twitter_handle:"CitizenBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/35b20273-49f2-45ea-a9f4-dc479d86573c/7ae5315f-beb2-41e2-b672-65dd1f102017.mp3",node_type:"clip",pub_key:"",ref_id:"6faac813-7f72-4208-a6ea-a8f330da5d1e",show_title:"Swan.com",text:"one other thing real quick. The documentation that Sparrow has, in particular with Cold card, this is again from a boomer perspective, it is super easy to follow and it's almost conversational and step by step. And it was really easy for me to follow the Sparrow documentation when it came to integrating it with the Cold cart and spinning up the Cold card. Super easy. Can I make one small fun fact addition to this? You're not storing your Bitcoin in your hardware wallet. Your Bitcoin are safely stored in every copy of the blockchain everywhere in the world. I've got a couple of backups for you over here. What you're able to store is the private keys that nobody can recreate, that allow only the holder of the private key to spend the Bitcoin according to its rules. And what makes this kind of unique versus any other form of property that ever existed before is not only can you take custody of it, but you can back it up. So, like, if you were a gold investor and you took custody of some gold, you'd have to put it in some location. And if that location became inaccessible to you, you can't get at that gold. And it can only be in one location. You can put half of it one place half the other, but you lose half of it if that location disappears. The fact that you can back up your keys because they're just information means that you can have this self custody asset that's yours. It's not the banks, it's yours. And if you lose access to one location, you can recover it from another location or multiple locations. And that's one of the most extraordinary aspects of Bitcoin, and it's a fun fact. So I thought I'd add it because it's related to this question. Now that you're working on taking self custody, the beauty of it is you can back it up. You want to make sure nobody else gets their hands on any of your backups, but that's something you'll figure out what works best for you over time. ",timestamp:"01:20:45-01:22:43",topics:["Bitcoin hardware wallet","Bitcoin self-custody"],type:"twitter_space",weight:4.755598068237305},{boost:0,date:1671084129,description:"A quick reminder and some news on the Bitcoin Beach Show with DJSatoshi",episode_title:"The Orange Sun 🌞 Does Price = Value? #Bitcoin",guests:[{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"},{name:"AnuragSaikia",profile_picture:"https://pbs.twimg.com/profile_images/1016367353762852864/gDL5h8jh_400x400.jpg",ref_id:"0bb60736-56c5-4964-a9c3-e881b0b313b6",twitter_handle:"AnuragSaikia"},{name:"fnicencool",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"bfef6a55-2d08-407e-b147-e04d68af7dd6",twitter_handle:"fnicencool"},{name:"MrlamilamiKosch",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"f8c8f97a-f79a-4950-8e3d-d2e94d27b3c8",twitter_handle:"MrlamilamiKosch"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/19874ad0-9c3f-451c-b82d-ac41de6aa3a3/62af50e6-2127-4e0d-804c-a3cec392fd0b.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"1aec7881-31ab-4c1c-9f79-800cb8379ca1",show_title:"Satoshi’s Journal",text:"Okay. The next so I just remind you guys of the bitcoin beat show that Phil, my teammate and DJ satoshi have monday through Friday at 03:00 p.m., which is 03:00 p.m. Mountain standard time. And that would be 10:00 P.m. African time. And the intent of this show is pretty fun, actually. They play some bitcoin music, literally bitcoin music. There's some awesome bitcoin music artists that have done raps and parodies and just cool songs and they all revolve around bitcoin. So today, Phil actually had a lady come on, what was her name? Tips in the ships from music. She was awesome. She came on the show and she was talking to us and then we listened to her music, her bitcoin music. So if you guys remember, monday through Friday, 03:00 p.m. Mountain standard, 10:00 p.m. Nigerian time, you can go and listen to music. And then also, what's cool about the show is it's very random. Like you don't know what you're going to listen to because basically Phil will randomly choose small snippets of bitcoin education, whether that is from Andreas Antonopoulos, Robert Breedlove, Marty Benz, you name it. You'll hear something and it'll be so random and it will catch you by surprise, but it's really cool because you just get to hear Andrea Santanopolis in 2012 or whenever it was just talking to people about bitcoin or Robert Briel, a little snippet of him talking about whatever he talked about in his podcast about bitcoin. So, yeah, you guys can check it out. Today was a pretty cool show. I think today was the third day of the show. So he'll have it Monday through Friday and it lasts. I think he's going to run it for an hour. But today's session went for like freaking oh, jeez, almost 4 hours. 3 hours and 43 minutes. But they had a good time. There was a lot of people that came in and we're talking. I saw yellow on there, I saw Tomer, I saw the Kingo, I saw Oakland, and it was pretty cool. They had a good time. ",timestamp:"00:51:49-00:54:24",topics:["Bitcoin Beach Show"],type:"twitter_space",weight:9.72359306380532},{boost:0,date:1639803600,description:"[[Bitcoin]] Shorted as a [[Hedge Fund]] Against [[Traditional Market Equity Positions]]",episode_title:"WHY ARE WE BULLISH Michael Schmidt Jeff Ross Joseph Brown Greg Foss ep224",guests:[{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Joseph Brown",profile_picture:"",ref_id:"803206b6-7b9f-48e0-a5d5-7348f6842cca",twitter_handle:""},{name:"Michael Schmidt",profile_picture:"",ref_id:"e94a106d-cbea-4b30-b0cb-3825979179ca",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/728d91e9-025d-43a7-8467-2c8d264ddf59.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/45019495/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-11-18%2Fe04d11e7-ede5-a987-e943-f3fc2482fe80.mp3",node_type:"clip",pub_key:"",ref_id:"46c0e9e5-6d49-4830-b405-6021fd365979",show_title:"BTC Sessions",text:"traditional equity markets are sick, okay? I need people to understand how sick the traditional equity markets are. Jeff Ross probably understands this better as well as anyone. The breadth or the average stock in the Nasdaq, the small cap Nasdaq stocks have given it up by 66%. Ok? This year, if you look at Jim Cramer's list of have to own stocks, they're like, it's a piece of garbage. And yet Bitcoin is hung in there in the face of futures product that all the knuckleheads in the world are shorting Bitcoin as a hedge against their equity positions. Okay? How do I know? Because I just know how much stupid money there is out there. And I know they need to short something because they're long all this other garbage that they say, Well, I can't sell my other garbage. So I might as well short something and pretend it's a hedge. Let me tell you something. Bitcoin is a long, volatility asset. And most of the fucking world has no clue what that even means. Except I'm going to tell you, it means if you are hedging short ball assets, which are equities and credit, high yield bonds, investment grade bonds, and you're hedging those short ball assets by selling along or shorting a long ball asset. You're inverted, buddy, and you're going to get crushed on the way in and crushed on the way out. And that's what the dumb money is doing in this market, because they are absolutely. They're hedged and wedged, okay? They're in a fucking shit trade, and they're trying to make that trade better by shorting something because there's an instrument out there called Bitcoin futures that they think is overpriced. They need to do some mathematics. They need to understand that they're shorting a rounding error. And by the way, they're also shorting a long ball asset. Over time, Bitcoin will become to be appreciated as insurance. And what is insurance? It's long volatility, it's short credit. The two things are exactly synonymous. So Seb, Bunny and I wrote an article that we submitted to Bitcoin magazine this week, and it's gotten some really good feedback on ",timestamp:"00:25:57-00:28:10",topics:["bitcoin","hedge fund","traditional market equity positions"],type:"podcast",weight:4.755598081860736},{boost:0,date:null,description:"Revenue stream source, business competition and model of the Bold Bitcoin credit card",episode_title:"Café ₿: Bitcoin Credit Card w/ @BoldBitcoin @John_ely_21m",guests:[{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Wicked",profile_picture:"",ref_id:"fee44016-b05f-4961-a6d8-7dac655cd931",twitter_handle:""},{name:"@BoldBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1559592705231044609/iJrNKxF9_400x400.png",ref_id:"dd4e1c4c-d111-4f01-ad95-18200d50cdb8",twitter_handle:"BoldBitcoin"},{name:"@John_ely_21m",profile_picture:"https://pbs.twimg.com/profile_images/1560444673046585346/VN8n2LtM_400x400.jpg",ref_id:"a24436b1-5992-4711-a4a5-0770546ea80a",twitter_handle:"John_Ely_21m"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7061be6d-b144-4a81-a13b-3d125e3e2812/edf29ab4-2b4b-4fdf-9998-8a9b8e9437c8.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"3b4b6a17-9995-4f90-88d0-15cfd0b53be6",show_title:"Swan.com",text:"I was wondering a couple of things. One, I may have missed it. I was wondering where your revenue streams are coming from in this process and also who you see as your competition in this industry. Yeah, thanks. The business model is pretty simple. We're not lending out your bitcoin and trying to earn a yield on that stuff. Your bitcoin is sitting on the blockchain. So the way we make money is just like a regular credit card company. We make money on your purchases, the transaction fees that go through, we get a small percentage of the transaction fees. And then also, if you do choose to carry a balance month to month and there's interest accruing on that, then we would make money off of that. But if you do pay off your credit card statement every month, there's no interest and we're not making revenue that way. So, again, one of the things I love about this company is that they've got a vision for long term, and I think that that's sort of the business model that will get us there. So, quick follow up question. Are you going to set up a system or processes where it encourages people to pay off their balance monthly, or is that just something you're leaving up to the user? Right, yeah, I think it'll be similar to a typical credit card monthly statement with an option to pay in bitcoin or pay in US dollars. The idea is we want to encourage responsible use of credit and so we want people to pay off their balances and protect their bitcoin. So, yeah, it would be sort of a monthly statement sort of scenario. Hey, John, good to see you and thanks for coming to our party in Los Angeles. And quick shout out, Alex, to you and the whole swan team on that, the Pacific Bitcoin Conference. Honestly, best days of my life. Absolutely loved that you guys killed. It unbelievable that this was your first conference ever because that was to the T. It was so professional, so onto the topic here. John, my question for you. At what point do you margin call the client? So, let's say you have $10,000 worth of bitcoin, you spent three and a half thousand, and then the price of bitcoin drops. At what point do people have to post collateral to avoid their bitcoin being? Is that called rehypothecated or? I don't know. You know what I mean? Yeah, I know what you mean. Yeah, not rehypothecated, but yeah. When do you get a margin call? So, yeah, you've got a credit limit based on the value of your bitcoin, and if you get to 80% of your credit limit, you're going to start to get margin called. Again, we are coming up with any innovative ways we can to make sure that you keep as much of your bitcoin as you possibly can. But then, yes, we do have the ability to liquidate when you get over 100% of your credit limit, and obviously we're very upfront that the price of bitcoin can drop. So you have to be careful about your spending balances. And I appreciate the question, Anders, and yes, that party was off the hook. Thank you. Thank you. Actually, just there was one question I forgot to ask you. Like, so how long time would people have to replenish with new bitcoin all paid off with Fiat? Or is that basically what you're warning as you get near that 80% loan to value and then by the time it hits that you will take the collateral, which is totally understandable, just trying to understand the product. Yes, for sure. I mean, so we're still working at details, but you can expect to have something like a two day window to deposit your bitcoin to increase your collateral so that you're not underwater. And again, I don't have any specific details, but me and the guys, we're thinking up anyways we can to make sure that this doesn't happen. Right. Again, our business model is for you to save your bitcoin, spend Fiat dollars. So we're going to make sure you guys are happy and we don't want to take your bitcoin. Right? Thank you so much, John. Thank you, Anders. And looking forward to the party in Miami and straight. Thank you. Of course, we're going bigger and better all the time, for sure. ",timestamp:"01:42:54-01:48:38",topics:["Bold Bitcoin credit card"],type:"twitter_space",weight:4.754698872566223},{boost:0,date:1590465600,description:"What is the [[geopolitics sphere]] of Bitcoin?",episode_title:"Chat 39 - Bitcoin Renaissance - with Marty Bent John Vallis Alex Gladstein Elizabeth Prefontaine Brady Swenson",guests:[{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Marty Bent",profile_picture:"https://pbs.twimg.com/profile_images/1362747135981199370/mSy97J12_400x400.jpg",ref_id:"655bdcb1-21c3-411c-aa24-fe7e4c7a248c",twitter_handle:"MartyBent"},{name:"John Vallis",profile_picture:"https://pbs.twimg.com/profile_images/1568743166035070976/4MyKww8A_400x400.jpg",ref_id:"c3a9fe29-3b78-4665-af54-e293e9d68962",twitter_handle:"johnkvallis"},{name:"& Brady Swenson",profile_picture:"",ref_id:"0b68a085-0680-44b8-891c-6e1e84ac4eb1",twitter_handle:""},{name:"Elizabeth Prefontaine",profile_picture:"https://pbs.twimg.com/profile_images/1382790711427354625/D09LMToL_400x400.jpg",ref_id:"4506df72-5de4-4144-abc4-011408b6b496",twitter_handle:"Eprefon"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN4002307424.mp3?updated=1627951379",node_type:"clip",pub_key:"",ref_id:"b241a91d-07ff-4169-9df8-16783be79ed1",show_title:"Bitcoin Audible",text:"The geopolitics also are really interesting because you would think that as we move forward let's say a decade, bitcoin continues to, I think, increase in value against fiat currencies governments are going to want to start to monopolize the mining businesses in their countries. It's just what they're going to try and do because they're going to have that power. Most of them, especially these dictatorships, have total monopoly over natural resources. So this will just inevitably contribute to this planetary decentralization because you're going to have all these different governments that don't agree with each other and are essentially in a cold conflict with each other, competing in a rivalry environment to mine so that they can get more bitcoin. And that could shake out where in 40 years from now, you have a very competitive framework of many different governments all sort of competing against each other. And that just kind of continues to build on bitcoin, censorship, resistance and uptime and strength. And it's just this brilliant way that I believe it will kind of unfold. It kind of takes our base worst flaws and somebody talking about with the. Rally bitcoin crew like a week ago or so. That when governments get involved. Like the more antagonistic governments are in trying to exert control over bitcoin. The stronger bitcoin becomes because you have more powerful invested interests that specifically want to either make sure they have the upper hand or make sure they have enough power to defend against the upper hand of someone else in order to play the game of the global value system. And I thought that was so crazy. Yeah, and there's going to be governments that have Manhattan Project style initiatives to get the cheapest energy possible. And who knows, a lot of it might be whether it's fission fusion, or if you just track the price of some of these renewable techs over the last 30 years, it's pretty expensive by the decade. So I agree with Marty. It's a very exciting part of bitcoin that I think will become more popular to discuss in the near future is the sort of energy geopolitics side of it. Yeah. Again, I don't know if Satoshi could receive this either, but luckily for us, like, the supply schedule so intensive in the beginning, that most bitcoins in the hands of individuals and corporations and state will be fighting over less and less bitcoin and have less economic yeah, that's. The crazy thing I always think about. They missed the boat. If governments had wanted to, they could have accumulated literally all the bitcoin and killed it early, but they didn't. And now you've got whatever it is. I think Nick Carter has some data on this, but some absurd percentage of bitcoin is not even held by regulated entities. It's in the hands of people. Some of them might be government officials or corporate leaders, but they're individually held and there's only so much more bitcoin to fight over. So there's like a couple of million bitcoin left to be mined and governments are going to fight really intensely over that remaining bitcoin. It's serious. So exciting. Marty, I love it when you recently been bringing people on to talk about this space and all the activity and following it very closely. Guys, go ahead. Again, the opportunity is massive. It's almost hard to fathom just here in North America, and it's such an easy sell. In practice, it may be harder because you got to sell people on bitcoin simultaneously. But just from an economics point of view, it seems like it would be an easy sell. It helps you meet your regulatory requirements. It reduces your cleanup cost, it subsidizes this and that. Has it been for you guys selling? Yeah, I mean, it's getting easier with the conditions of the market and the oil market specifically, people are sort of desperate to find alternative streams of revenue. Yeah, I think more people are coming around a bitcoin just naturally as it gets older. The natural gas sector, the stranded natural gas sector is really starting to come around to this. It's sort of different than what we're doing on the oil and gas fields. There's a lot of stranded natural gas reserves that are not being utilized at all that could really, with small minimal capital investments, could get bitcoin mining operations set up and start being turning into productive assets. Ever since we've sort of come publicly, we've had a bunch of people reach out to us. Guys, this is the last question, and I'm going to pose it to each of you, but I'm ",timestamp:"01:18:10-01:23:22",topics:["geopolitics sphere"],type:"podcast",weight:4.754698872566223},{boost:0,date:1675472948,description:"How Bitcoin empowers individuals",episode_title:"WHY ARE WE BULLISH? Mickey Koss, Nozomi Hayase, The Bitcoin Explorers ep320",guests:[{name:"Nozomi Hayase",profile_picture:"https://pbs.twimg.com/profile_images/1362950252823597060/i-UISQoY_400x400.jpg",ref_id:"f82d9145-3308-493d-aa13-1fc3e21b7dd4",twitter_handle:"nozomimagine"},{name:"The Bitcoin Explorers",profile_picture:"https://pbs.twimg.com/profile_images/1380933164596625408/vDK0Tf2r_400x400.jpg",ref_id:"a81905a1-3698-4c2d-b9d3-205e4b91a08f",twitter_handle:"BitcoinExplorer"},{name:"Mickey Koss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"47e8b134-431a-40a8-8f56-21778cf6f927",twitter_handle:"MickeyKoss"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/64479948/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-4%252F310976616-44100-2-e34c125fc6cf3.mp3",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"d865c803-93a1-47ae-b851-5bd6a683eda5",show_title:"BTC Sessions",text:"if you have thoughts, and then we'll go to the zombie. Yeah. So I think a lot of that story is kind of like how bitcoin empowers individual and small communities to kind of lift them up. Right? And so on the other side of that coin, the similar theme is how bitcoin lifts up societies. Right? And so I see a lot of this playing out with Brandon Quidom's pioneer species thesis. And so your story was like, business and all that, and I'm kind of thinking towards the integration of bitcoin mining and energy production, especially in Africa. Super bullish on Africa. And then we just had, I think it was the first small modular reactor in Canada. Right. And so that's kind of the new hotness in the energy space right now I see kind of this integration between bitcoin mining and energy lifting up societies in places like Africa, and then potentially even reinvigorating like the American Midwest. People call it the rust belt because they used to have so much manufacturing. If we can bring cheap and abundant energy to the world, that's a huge opportunity for everyone in society. Right. And that's what I'm really kind of excited about, in addition to, obviously the individuals and the businesses. ",timestamp:"01:06:00-01:07:22",topics:["individualism"],type:"podcast",weight:35.74698741708972},{boost:0,date:1675274375,description:"The value of a small government and Bitcoin ",episode_title:"Is Sound Money the Answer? with George Gammon (WiM268)",guests:[{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"}],hosts:[{name:"Robert Breedlove",profile_picture:"https://pbs.twimg.com/profile_images/1592020087044591616/46enYwAc_400x400.jpg",ref_id:"0ed69c56-241c-4b63-87a5-8f2157fe51a5",twitter_handle:"Breedlove22"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ca3ab815-dc2e-408a-a0c5-8bbe50270a97.jpg",keyword:!0,link:"https://cdn.simplecast.com/audio/2effec98-bec5-4728-ba08-7a86d776e682/episodes/d6e8f010-e2d5-4489-bb8e-9b7446a4795b/audio/0ad4fb89-2eda-4ad7-8432-b6be08c8ce10/default_tc.mp3?aid=rss_feed&feed=MLdpYXYI",node_type:"clip",pub_key:"03a3451db4748e483d2e1ee5d0b3a6872253253b57edf4b084a56952b432a224b3",ref_id:"61f104e1-77d8-48c4-9def-92d74cbf0d64",show_title:'The "What is Money?" Show',text:"of time left here, but I think we have enough time to go through at least one more point here, I guess. Part core, even to your argument, I think, correct me if I'm wrong, is that we should be spending the right proportion of time on educating people about the value of small government, competing in the court of public opinion, if you will, to shrink government and the right. Because it's not a panacea. Yes, and some proportion to sound money as well, which is obviously important to some extent, depending on context, et cetera, et cetera. And I agree with you there. But a thought experiment I would like to advance is that the existence of fiat currency is actually a distortion of the voting mechanism which we traditionally depend upon in a democracy to express our political preferences. Now, this example, there's a book called The Ethics of Money Production by an author named Holzman, and this is where I get this example, and he's basically making the argument that the market economy could be understood as a system that's basically catering to the needs of consumers as expressed in money payments. So the example I always like to give is if I go into the market and I buy a car, I'm actually signaling to the market economy to produce more cars, right? I'm casting a vote to specifically the car that I buy, right? If I buy a 2020 Tesla, that's what I'm telling the market to make more of. And the inverse is also true. You go and sell a house, right? You're actually signaling to the market economy to produce less houses. So it's this, it's a real kind of grassroots democratic process taking place where one unit of currency or one unit of money is equal to one vote, if you will. And when you look at the market economy through that lens, and then you consider that there's a central bank sitting in the middle of every modern market economy, that it's effectively an institution that can create its own votes. It is able to expand currency supplies and manipulate that process of consumers expressing their preferences in the marketplace and creating all the distortions that we've described today. So when you ask that question earlier, right, would you rather live in a society that believed in small government but was run on fiat currency, or live in a society that believed in big government but was run on sound money? I feel like in a society running on fiat currency, it almost doesn't matter what the democratic collective wishes are or preferences are of the majority because they can't be adequately expressed through a democratic mechanism, when in fact it's the central bank. Or I'll put in the commercial banking system that surrounds the central bank as part of this as well, they get a disproportionate amount of influence because they're effectively creating these new votes called currency units out of nothing. Or to the extent that they are creating them out of nothing, they're able to disproportionately sway the vote of the market process, let's say. So how would you wrestle with that? Because this is a bit of a rabbit hole, because if you draw this conclusion to the end, you're like, oh, well, democracy is kind of a scam. It's really about the money that creates the votes and movements in society. Democracy maybe has at least a limited effect. But I'd love to just hear what you think about that in general. Well, first I think you have to compartmentalize the Fed in the commercial banking system, because what you just described again assumes that the Fed has control, or a significant amount of control over the amount of currency units that is contributing to those votes, as you said. So if we assume for a moment that the Fed really doesn't control the amount of M two, then the Fed isn't really impacting the voting system. So then it would be the commercial banks. Right. But if the commercial banks, then assuming that they don't have a perverse incentive, which is the bill, right, there you go. Like free banking, they would lend for productive means and they would lend to businesses that would produce more goods and services because those are the entities that have the highest probability of paying them back. And so although, yes, the banking system is controlling the amount of m two amount of currency units, I think if you could eliminate or reduce the size of government, then you would have a system where that additional increase might not be optimal. But I think that's debatable. But at least it's not a massive anchor. At least it isn't extremely detrimental. And another fun thought experiment is I get the people that say, well, listen, we want a fixed M two supply, full reserve banking because we want a consistent unit of measurement. We always want to have twelve inches in a foot as an example. You hear that all the time. But I don't know that if we have 5% deflation, you're still changing the amount of inches in the foot, just like 5% inflation. I would push back on that one again a bitcoin, or would again disentangle monetary inflation from price inflation in that case. So they're advocating for integrity of the money supply, not necessarily integrity of price consistency. Right. But the initial argument is that the economy is going to function better if you always have twelve inches in a foot. Meaning that if the value of that currency unit relative to goods and services. Remains constant that's where I'm disagreeing. I don't think it's about the constancy of the relationship between the currency unit and goods and services. It's just the integrity of the money supply itself. So the less the money supply changes, the more it adequately reflects changes in the productive economy. But if you get supply that changes, obviously price changes become distorted. You don't know if it's policy or supply and demand fundamentals. Right, okay, got it. So then the argument there is that if prices are going down by 5%, even though that may be an inconsistent amount of value currency relative to goods and services, that would be optimal because that's what the free market is producing. Because that's a result of the free market and the decisions that are being made by the individuals pursuing their own self interest. I think you could summarize the argument as the money supply that changes least is best. So an ideal money supply in a bitcoin or world is a fixed money supply, so the pricing signals that money, this would be everything. The other weird thing, in a bitcoin world, there is no difference between base money and broad, all right? You could say there's lending on top of it. If you introduce full reserve with a bitcoin base layer, right? Then there could be if there's IOUs that are produced by the fiduciary correct. Or the underlying base layer, then theoretically you could have an additional amount of broad relative to base, although that base could be used as broad. Very similar to the way gold was. Yes. And the theory there is that because bitcoin is more portable, because it's sound money, you're obviously dissuaded from taking on debt because it tends to increase in purchasing power over time, and because it's hyper portable, you don't need to centralize the custody and borrow currency units on top of it, necessarily. So I think there's less of an incentive for there to be a higher proportion of broad money to base money in a bitcoin world. Like another way of saying global debt to GDP would contract ten X, perhaps from what do we have? 20 or 30%? This is what I really wanted to discuss with you as well, because I think that we've really discussed the sound money component of it, but that doesn't necessarily mean that we've discussed the bitcoin standard component of it, because there is a difference between gold being old money. And bitcoin sound money. For sure. You got it. I don't think we should crack that can of worms right now, though, because if I'm going to get you off in 2 hours, we only got about five minutes. That one will definitely ",timestamp:"01:50:29-02:00:37",topics:["Small government","Bitcoin value"],type:"podcast",weight:34.26857319961412},{boost:0,date:1663767761,description:"what is Small modular reactors ?",episode_title:"Mining Bitcoin with Nuclear Energy with Ryan MacLeod",guests:[{name:"Ryan MacLeod",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"20a72757-923c-4a01-ad4f-7ccdc2a83e03",twitter_handle:"NuclearBitcoinr"}],hosts:[{name:"Peter McCormack",profile_picture:"https://pbs.twimg.com/profile_images/1524287442307723265/_59ITDbJ_400x400.jpg",ref_id:"887a65a7-a2d8-4371-887e-bc7a6ca6ff17",twitter_handle:"PeterMcCormack"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/4e607036-8fde-48ef-ab76-9c2ac4bab031.jpg",keyword:!0,link:"https://chtbl.com/track/282487/traffic.libsyn.com/secure/whatbitcoindid/WBD557_-_Ryan_Macleod.mp3",node_type:"clip",pub_key:"032ff32727b06d20a13a0a8d8dfe09d39659c16deeaffbf94d6d21ec6bb28850b6",ref_id:"ccac3748-afc5-4404-8497-1710f501f49f",show_title:"What Bitcoin Did with Peter McCormack",text:"the SMR modules, when they're created and they're approved, will that wipe out any need to build these larger reactors? Is that the death of those? Is the desired just to only have SMRs? Not necessarily. There's potentially room for all the different types. There's still, like, the UAE's just built a few large reactors. The hinkley point C's. Almost finished in the UK. I think there's the reactors in Georgia that have been taking a while, but they're almost finished taking a while, 15 years. When you say the small reactors, what is the scale compared to, like, a normal nuclear reactor? The term Small modular reactor applies to reactors that are less than 300. Conventional reactors are in like 600, 700 megawatt units, and they benefit from the economies of scale so they can have a wider customer base to share the risk of the costs with I have. No idea what that amount of power, how many people that services. So if you had one of these SMRs, how many would we need in the UK to serve 70 million people? Well, it depends because it will be locally dependent. The difference is you can build one large reactor and then all the transmission infrastructure to get it to the customers, or you can build the SMRs in hyperlocal grids too. Do you have a look at how much grid the UK grid uses? I'd love to. I guess you might have an idea of what the Canada grid uses. Is Canada have a single grid? Because it's quite it's pretty spread out. Yeah, as soon as you start getting further north, it gets pretty remote and there's a lot of off grid that depends on diesel. That's the goal of the SMR action plan for off grid, is to get remote communities off of diesel, upgrade them to nuclear with these small modular reactors. OK, but I can't imagine the construction of a small modular modular reactor is going to be cheap. But they must be like the estimated cars. The first of a kind reactors are going to be in the orders of several hundreds of millions, a few billion. But the expected cost, once the technology is mature, the cost will be cut in half because once the manufacturing facilities are built and all of the supply chains are developed and the expertise is aligned, that will significantly drive the cost down as more reactors are deployed. But yeah, getting it over those initial hurdles is going to be quite costly and require like, public private risk sharing and capital investment. So it says Greater London uses just under 40,000 gigawatt hours and it says it could be supplied by two or so, like, large nuclear power plants. Okay, so that'd be like four SMRs? Depends on the type of SMR. If you're going with a 300 megawatt unit, then yeah, but if you want to apply it to like, a small community that only needs 15 to 20 MW, you can build either a few of the really small reactors that are going to be in the ten megawatt range. Oh, you can build like tiny versions of these? Yeah, that's the thing, because we want to build some that are in the one to ten megawatt range, in the 50 to 150 megawatt range, and then like the 200 to 300 megawatt range. So we'll have a wide variety of applications that these reactors can be applied to. So the smaller ones, one to 10 MW, what kind of size geography do they need? Like a track field hockey arena. Oh, wow. Yeah, not much. Okay. And do they know the construction time or something like that? They're expecting the smaller ones to be in the orders of like one to two years and then the larger ones being like, the five years ballpark so. It'S really important to get through that regulatory process then. Absolutely, yeah. And are there enough people out there who are available to be able to work to construct these, to work at these? Is that another thing that has to be worked on to train people up? Yeah. In many jurisdictions that is the case. That's why it is being so costly to build the Hinkley reactor in the Vocal reactor in Georgia for the UK and the US markets, because they let their supply chain atrophy by not building or refurbishing any of the reactors for decades. Whereas in Canada, we are actively refurbishing our reactors right now. The Darlington has undergone refurbishment. The point, Lapro. Reactor has undergone refurbishment. Bruce reactor is currently under refurbishment. So this will extend the life of those reactors for at least another four decades. What's involved in refurbishing it is essentially using the site to put in new technology. Yeah. A lot of the parts in these reactors are interchangeable. They can just be replaced with new parts, and the pressure tubes just get replaced with fresh zirconium pressure tubes, and they replace the turbines if they need to. Just anything that's starting to show its age just gets replaced. But the core of the reactor pretty much remains unchanged. And how much time goes into refurbing a reactor, as opposed to by building one from scratch? Each reactor probably takes, like, two to three years to refurb. Yeah. Okay. And that has the advantage of sustaining our supply chain and our workforce and making sure that the industry remains robust and doesn't lose our expertise. So ",timestamp:"00:20:06-00:25:51",topics:["Small modular reactors"],type:"podcast",weight:4.754855089440576},{boost:0,date:1673187067,description:"How do micro reactors contribute to the decentralization of the energy industry?",episode_title:"@NuclearBitcoinr - Mining #bitcoin With Small Modular Nuclear Reactors. #313",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"}],hosts:[{name:"Daniel Prince",profile_picture:"https://pbs.twimg.com/profile_images/1589940494364205056/rnHs5gI3_400x400.jpg",ref_id:"df2d4d35-3e96-44ed-b1cc-cb8a714bbe30",twitter_handle:"PrinceySOV"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e1eca67b-d372-4031-bf1f-8f0ff7fe6092.jpg",keyword:!0,link:"https://anchor.fm/s/1346f9e8/podcast/play/63208295/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-0-8%252F4a07b2fe-eb1d-2c82-677e-8f2808a09536.mp3",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"58d095b5-4c46-4586-888c-8b56a9afd883",show_title:`Once Bitten! +}`;function WebGLShadowMap(tt,et,nt){let rt=new Frustum;const it=new Vector2,ot=new Vector2,at=new Vector4,st=new MeshDepthMaterial({depthPacking:RGBADepthPacking}),lt=new MeshDistanceMaterial,ct={},ut=nt.maxTextureSize,ht={0:BackSide,1:FrontSide,2:DoubleSide},dt=new ShaderMaterial({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Vector2},radius:{value:4}},vertexShader:vertex,fragmentShader:fragment$h}),pt=dt.clone();pt.defines.HORIZONTAL_PASS=1;const mt=new BufferGeometry;mt.setAttribute("position",new BufferAttribute(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const gt=new Mesh(mt,dt),yt=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=PCFShadowMap,this.render=function(kt,St,Tt){if(yt.enabled===!1||yt.autoUpdate===!1&&yt.needsUpdate===!1||kt.length===0)return;const At=tt.getRenderTarget(),Et=tt.getActiveCubeFace(),$t=tt.getActiveMipmapLevel(),Dt=tt.state;Dt.setBlending(NoBlending),Dt.buffers.color.setClear(1,1,1,1),Dt.buffers.depth.setTest(!0),Dt.setScissorTest(!1);for(let jt=0,Pt=kt.length;jtut||it.y>ut)&&(it.x>ut&&(ot.x=Math.floor(ut/It.x),it.x=ot.x*It.x,wt.mapSize.x=ot.x),it.y>ut&&(ot.y=Math.floor(ut/It.y),it.y=ot.y*It.y,wt.mapSize.y=ot.y)),wt.map===null){const Wt=this.type!==VSMShadowMap?{minFilter:NearestFilter,magFilter:NearestFilter}:{};wt.map=new WebGLRenderTarget(it.x,it.y,Wt),wt.map.texture.name=Ct.name+".shadowMap",wt.camera.updateProjectionMatrix()}tt.setRenderTarget(wt.map),tt.clear();const Ot=wt.getViewportCount();for(let Wt=0;Wt0){const Pt=Dt.uuid,Ct=St.uuid;let wt=ct[Pt];wt===void 0&&(wt={},ct[Pt]=wt);let It=wt[Ct];It===void 0&&(It=Dt.clone(),wt[Ct]=It),Dt=It}return Dt.visible=St.visible,Dt.wireframe=St.wireframe,$t===VSMShadowMap?Dt.side=St.shadowSide!==null?St.shadowSide:St.side:Dt.side=St.shadowSide!==null?St.shadowSide:ht[St.side],Dt.alphaMap=St.alphaMap,Dt.alphaTest=St.alphaTest,Dt.clipShadows=St.clipShadows,Dt.clippingPlanes=St.clippingPlanes,Dt.clipIntersection=St.clipIntersection,Dt.displacementMap=St.displacementMap,Dt.displacementScale=St.displacementScale,Dt.displacementBias=St.displacementBias,Dt.wireframeLinewidth=St.wireframeLinewidth,Dt.linewidth=St.linewidth,Tt.isPointLight===!0&&Dt.isMeshDistanceMaterial===!0&&(Dt.referencePosition.setFromMatrixPosition(Tt.matrixWorld),Dt.nearDistance=At,Dt.farDistance=Et),Dt}function xt(kt,St,Tt,At,Et){if(kt.visible===!1)return;if(kt.layers.test(St.layers)&&(kt.isMesh||kt.isLine||kt.isPoints)&&(kt.castShadow||kt.receiveShadow&&Et===VSMShadowMap)&&(!kt.frustumCulled||rt.intersectsObject(kt))){kt.modelViewMatrix.multiplyMatrices(Tt.matrixWorldInverse,kt.matrixWorld);const jt=et.update(kt),Pt=kt.material;if(Array.isArray(Pt)){const Ct=jt.groups;for(let wt=0,It=Ct.length;wt=1):zt.indexOf("OpenGL ES")!==-1&&(Wt=parseFloat(/^OpenGL ES (\d)/.exec(zt)[1]),Ot=Wt>=2);let Ft=null,Nt={};const Ut=tt.getParameter(3088),Mt=tt.getParameter(2978),Ht=new Vector4().fromArray(Ut),en=new Vector4().fromArray(Mt);function sn(zn,Jn,Hn){const pr=new Uint8Array(4),fr=tt.createTexture();tt.bindTexture(zn,fr),tt.texParameteri(zn,10241,9728),tt.texParameteri(zn,10240,9728);for(let xr=0;xrkn||wn.height>kn)&&(Dn=kn/Math.max(wn.width,wn.height)),Dn<1||fn===!0)if(typeof HTMLImageElement<"u"&&wn instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&wn instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&wn instanceof ImageBitmap){const un=fn?floorPowerOfTwo:Math.floor,Zt=un(Dn*wn.width),Xt=un(Dn*wn.height);gt===void 0&&(gt=vt(Zt,Xt));const Sn=pn?vt(Zt,Xt):gt;return Sn.width=Zt,Sn.height=Xt,Sn.getContext("2d").drawImage(wn,0,0,Zt,Xt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+wn.width+"x"+wn.height+") to ("+Zt+"x"+Xt+")."),Sn}else return"data"in wn&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+wn.width+"x"+wn.height+")."),wn;return wn}function kt(wn){return isPowerOfTwo(wn.width)&&isPowerOfTwo(wn.height)}function St(wn){return st?!1:wn.wrapS!==ClampToEdgeWrapping||wn.wrapT!==ClampToEdgeWrapping||wn.minFilter!==NearestFilter&&wn.minFilter!==LinearFilter}function Tt(wn,fn){return wn.generateMipmaps&&fn&&wn.minFilter!==NearestFilter&&wn.minFilter!==LinearFilter}function At(wn){tt.generateMipmap(wn)}function Et(wn,fn,pn,kn,Dn=!1){if(st===!1)return fn;if(wn!==null){if(tt[wn]!==void 0)return tt[wn];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+wn+"'")}let un=fn;return fn===6403&&(pn===5126&&(un=33326),pn===5131&&(un=33325),pn===5121&&(un=33321)),fn===33319&&(pn===5126&&(un=33328),pn===5131&&(un=33327),pn===5121&&(un=33323)),fn===6408&&(pn===5126&&(un=34836),pn===5131&&(un=34842),pn===5121&&(un=kn===sRGBEncoding&&Dn===!1?35907:32856),pn===32819&&(un=32854),pn===32820&&(un=32855)),(un===33325||un===33326||un===33327||un===33328||un===34842||un===34836)&&et.get("EXT_color_buffer_float"),un}function $t(wn,fn,pn){return Tt(wn,pn)===!0||wn.isFramebufferTexture&&wn.minFilter!==NearestFilter&&wn.minFilter!==LinearFilter?Math.log2(Math.max(fn.width,fn.height))+1:wn.mipmaps!==void 0&&wn.mipmaps.length>0?wn.mipmaps.length:wn.isCompressedTexture&&Array.isArray(wn.image)?fn.mipmaps.length:1}function Dt(wn){return wn===NearestFilter||wn===NearestMipmapNearestFilter||wn===NearestMipmapLinearFilter?9728:9729}function jt(wn){const fn=wn.target;fn.removeEventListener("dispose",jt),Ct(fn),fn.isVideoTexture&&mt.delete(fn)}function Pt(wn){const fn=wn.target;fn.removeEventListener("dispose",Pt),It(fn)}function Ct(wn){const fn=rt.get(wn);if(fn.__webglInit===void 0)return;const pn=wn.source,kn=yt.get(pn);if(kn){const Dn=kn[fn.__cacheKey];Dn.usedTimes--,Dn.usedTimes===0&&wt(wn),Object.keys(kn).length===0&&yt.delete(pn)}rt.remove(wn)}function wt(wn){const fn=rt.get(wn);tt.deleteTexture(fn.__webglTexture);const pn=wn.source,kn=yt.get(pn);delete kn[fn.__cacheKey],at.memory.textures--}function It(wn){const fn=wn.texture,pn=rt.get(wn),kn=rt.get(fn);if(kn.__webglTexture!==void 0&&(tt.deleteTexture(kn.__webglTexture),at.memory.textures--),wn.depthTexture&&wn.depthTexture.dispose(),wn.isWebGLCubeRenderTarget)for(let Dn=0;Dn<6;Dn++)tt.deleteFramebuffer(pn.__webglFramebuffer[Dn]),pn.__webglDepthbuffer&&tt.deleteRenderbuffer(pn.__webglDepthbuffer[Dn]);else{if(tt.deleteFramebuffer(pn.__webglFramebuffer),pn.__webglDepthbuffer&&tt.deleteRenderbuffer(pn.__webglDepthbuffer),pn.__webglMultisampledFramebuffer&&tt.deleteFramebuffer(pn.__webglMultisampledFramebuffer),pn.__webglColorRenderbuffer)for(let Dn=0;Dn=lt&&console.warn("THREE.WebGLTextures: Trying to use "+wn+" texture units while this GPU supports only "+lt),Ot+=1,wn}function Ft(wn){const fn=[];return fn.push(wn.wrapS),fn.push(wn.wrapT),fn.push(wn.magFilter),fn.push(wn.minFilter),fn.push(wn.anisotropy),fn.push(wn.internalFormat),fn.push(wn.format),fn.push(wn.type),fn.push(wn.generateMipmaps),fn.push(wn.premultiplyAlpha),fn.push(wn.flipY),fn.push(wn.unpackAlignment),fn.push(wn.encoding),fn.join()}function Nt(wn,fn){const pn=rt.get(wn);if(wn.isVideoTexture&&In(wn),wn.isRenderTargetTexture===!1&&wn.version>0&&pn.__version!==wn.version){const kn=wn.image;if(kn===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(kn.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{nn(pn,wn,fn);return}}nt.activeTexture(33984+fn),nt.bindTexture(3553,pn.__webglTexture)}function Ut(wn,fn){const pn=rt.get(wn);if(wn.version>0&&pn.__version!==wn.version){nn(pn,wn,fn);return}nt.activeTexture(33984+fn),nt.bindTexture(35866,pn.__webglTexture)}function Mt(wn,fn){const pn=rt.get(wn);if(wn.version>0&&pn.__version!==wn.version){nn(pn,wn,fn);return}nt.activeTexture(33984+fn),nt.bindTexture(32879,pn.__webglTexture)}function Ht(wn,fn){const pn=rt.get(wn);if(wn.version>0&&pn.__version!==wn.version){hn(pn,wn,fn);return}nt.activeTexture(33984+fn),nt.bindTexture(34067,pn.__webglTexture)}const en={[RepeatWrapping]:10497,[ClampToEdgeWrapping]:33071,[MirroredRepeatWrapping]:33648},sn={[NearestFilter]:9728,[NearestMipmapNearestFilter]:9984,[NearestMipmapLinearFilter]:9986,[LinearFilter]:9729,[LinearMipmapNearestFilter]:9985,[LinearMipmapLinearFilter]:9987};function Kt(wn,fn,pn){if(pn?(tt.texParameteri(wn,10242,en[fn.wrapS]),tt.texParameteri(wn,10243,en[fn.wrapT]),(wn===32879||wn===35866)&&tt.texParameteri(wn,32882,en[fn.wrapR]),tt.texParameteri(wn,10240,sn[fn.magFilter]),tt.texParameteri(wn,10241,sn[fn.minFilter])):(tt.texParameteri(wn,10242,33071),tt.texParameteri(wn,10243,33071),(wn===32879||wn===35866)&&tt.texParameteri(wn,32882,33071),(fn.wrapS!==ClampToEdgeWrapping||fn.wrapT!==ClampToEdgeWrapping)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),tt.texParameteri(wn,10240,Dt(fn.magFilter)),tt.texParameteri(wn,10241,Dt(fn.minFilter)),fn.minFilter!==NearestFilter&&fn.minFilter!==LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),et.has("EXT_texture_filter_anisotropic")===!0){const kn=et.get("EXT_texture_filter_anisotropic");if(fn.type===FloatType&&et.has("OES_texture_float_linear")===!1||st===!1&&fn.type===HalfFloatType&&et.has("OES_texture_half_float_linear")===!1)return;(fn.anisotropy>1||rt.get(fn).__currentAnisotropy)&&(tt.texParameterf(wn,kn.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(fn.anisotropy,it.getMaxAnisotropy())),rt.get(fn).__currentAnisotropy=fn.anisotropy)}}function rn(wn,fn){let pn=!1;wn.__webglInit===void 0&&(wn.__webglInit=!0,fn.addEventListener("dispose",jt));const kn=fn.source;let Dn=yt.get(kn);Dn===void 0&&(Dn={},yt.set(kn,Dn));const un=Ft(fn);if(un!==wn.__cacheKey){Dn[un]===void 0&&(Dn[un]={texture:tt.createTexture(),usedTimes:0},at.memory.textures++,pn=!0),Dn[un].usedTimes++;const Zt=Dn[wn.__cacheKey];Zt!==void 0&&(Dn[wn.__cacheKey].usedTimes--,Zt.usedTimes===0&&wt(fn)),wn.__cacheKey=un,wn.__webglTexture=Dn[un].texture}return pn}function nn(wn,fn,pn){let kn=3553;fn.isDataArrayTexture&&(kn=35866),fn.isData3DTexture&&(kn=32879);const Dn=rn(wn,fn),un=fn.source;if(nt.activeTexture(33984+pn),nt.bindTexture(kn,wn.__webglTexture),un.version!==un.__currentVersion||Dn===!0){tt.pixelStorei(37440,fn.flipY),tt.pixelStorei(37441,fn.premultiplyAlpha),tt.pixelStorei(3317,fn.unpackAlignment),tt.pixelStorei(37443,0);const Zt=St(fn)&&kt(fn.image)===!1;let Xt=xt(fn.image,Zt,!1,ut);Xt=An(fn,Xt);const Sn=kt(Xt)||st,Rn=ot.convert(fn.format,fn.encoding);let jn=ot.convert(fn.type),On=Et(fn.internalFormat,Rn,jn,fn.encoding,fn.isVideoTexture);Kt(kn,fn,Sn);let Zn;const Vn=fn.mipmaps,qn=st&&fn.isVideoTexture!==!0,zn=un.__currentVersion===void 0||Dn===!0,Jn=$t(fn,Xt,Sn);if(fn.isDepthTexture)On=6402,st?fn.type===FloatType?On=36012:fn.type===UnsignedIntType?On=33190:fn.type===UnsignedInt248Type?On=35056:On=33189:fn.type===FloatType&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),fn.format===DepthFormat&&On===6402&&fn.type!==UnsignedShortType&&fn.type!==UnsignedIntType&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),fn.type=UnsignedIntType,jn=ot.convert(fn.type)),fn.format===DepthStencilFormat&&On===6402&&(On=34041,fn.type!==UnsignedInt248Type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),fn.type=UnsignedInt248Type,jn=ot.convert(fn.type))),zn&&(qn?nt.texStorage2D(3553,1,On,Xt.width,Xt.height):nt.texImage2D(3553,0,On,Xt.width,Xt.height,0,Rn,jn,null));else if(fn.isDataTexture)if(Vn.length>0&&Sn){qn&&zn&&nt.texStorage2D(3553,Jn,On,Vn[0].width,Vn[0].height);for(let Hn=0,pr=Vn.length;Hn>=1,pr>>=1}}else if(Vn.length>0&&Sn){qn&&zn&&nt.texStorage2D(3553,Jn,On,Vn[0].width,Vn[0].height);for(let Hn=0,pr=Vn.length;Hn0&&zn++,nt.texStorage2D(34067,zn,Zn,Xt[0].width,Xt[0].height));for(let Hn=0;Hn<6;Hn++)if(Zt){Vn?nt.texSubImage2D(34069+Hn,0,0,0,Xt[Hn].width,Xt[Hn].height,jn,On,Xt[Hn].data):nt.texImage2D(34069+Hn,0,Zn,Xt[Hn].width,Xt[Hn].height,0,jn,On,Xt[Hn].data);for(let pr=0;pr0&&mn(wn)===!1){const Xt=un?fn:[fn];pn.__webglMultisampledFramebuffer=tt.createFramebuffer(),pn.__webglColorRenderbuffer=[],nt.bindFramebuffer(36160,pn.__webglMultisampledFramebuffer);for(let Sn=0;Sn0&&mn(wn)===!1){const fn=wn.isWebGLMultipleRenderTargets?wn.texture:[wn.texture],pn=wn.width,kn=wn.height;let Dn=16384;const un=[],Zt=wn.stencilBuffer?33306:36096,Xt=rt.get(wn),Sn=wn.isWebGLMultipleRenderTargets===!0;if(Sn)for(let Rn=0;Rn0&&et.has("WEBGL_multisampled_render_to_texture")===!0&&fn.__useRenderToTexture!==!1}function In(wn){const fn=at.render.frame;mt.get(wn)!==fn&&(mt.set(wn,fn),wn.update())}function An(wn,fn){const pn=wn.encoding,kn=wn.format,Dn=wn.type;return wn.isCompressedTexture===!0||wn.isVideoTexture===!0||wn.format===_SRGBAFormat||pn!==LinearEncoding&&(pn===sRGBEncoding?st===!1?et.has("EXT_sRGB")===!0&&kn===RGBAFormat?(wn.format=_SRGBAFormat,wn.minFilter=LinearFilter,wn.generateMipmaps=!1):fn=ImageUtils.sRGBToLinear(fn):(kn!==RGBAFormat||Dn!==UnsignedByteType)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",pn)),fn}this.allocateTextureUnit=zt,this.resetTextureUnits=Wt,this.setTexture2D=Nt,this.setTexture2DArray=Ut,this.setTexture3D=Mt,this.setTextureCube=Ht,this.rebindTextures=Pn,this.setupRenderTarget=$n,this.updateRenderTargetMipmap=Nn,this.updateMultisampleRenderTarget=Tn,this.setupDepthRenderbuffer=_n,this.setupFrameBufferTexture=vn,this.useMultisampledRTT=mn}function WebGLUtils(tt,et,nt){const rt=nt.isWebGL2;function it(ot,at=null){let st;if(ot===UnsignedByteType)return 5121;if(ot===UnsignedShort4444Type)return 32819;if(ot===UnsignedShort5551Type)return 32820;if(ot===ByteType)return 5120;if(ot===ShortType)return 5122;if(ot===UnsignedShortType)return 5123;if(ot===IntType)return 5124;if(ot===UnsignedIntType)return 5125;if(ot===FloatType)return 5126;if(ot===HalfFloatType)return rt?5131:(st=et.get("OES_texture_half_float"),st!==null?st.HALF_FLOAT_OES:null);if(ot===AlphaFormat)return 6406;if(ot===RGBAFormat)return 6408;if(ot===LuminanceFormat)return 6409;if(ot===LuminanceAlphaFormat)return 6410;if(ot===DepthFormat)return 6402;if(ot===DepthStencilFormat)return 34041;if(ot===RedFormat)return 6403;if(ot===RGBFormat)return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"),6408;if(ot===_SRGBAFormat)return st=et.get("EXT_sRGB"),st!==null?st.SRGB_ALPHA_EXT:null;if(ot===RedIntegerFormat)return 36244;if(ot===RGFormat)return 33319;if(ot===RGIntegerFormat)return 33320;if(ot===RGBAIntegerFormat)return 36249;if(ot===RGB_S3TC_DXT1_Format||ot===RGBA_S3TC_DXT1_Format||ot===RGBA_S3TC_DXT3_Format||ot===RGBA_S3TC_DXT5_Format)if(at===sRGBEncoding)if(st=et.get("WEBGL_compressed_texture_s3tc_srgb"),st!==null){if(ot===RGB_S3TC_DXT1_Format)return st.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(ot===RGBA_S3TC_DXT1_Format)return st.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(ot===RGBA_S3TC_DXT3_Format)return st.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(ot===RGBA_S3TC_DXT5_Format)return st.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(st=et.get("WEBGL_compressed_texture_s3tc"),st!==null){if(ot===RGB_S3TC_DXT1_Format)return st.COMPRESSED_RGB_S3TC_DXT1_EXT;if(ot===RGBA_S3TC_DXT1_Format)return st.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(ot===RGBA_S3TC_DXT3_Format)return st.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(ot===RGBA_S3TC_DXT5_Format)return st.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(ot===RGB_PVRTC_4BPPV1_Format||ot===RGB_PVRTC_2BPPV1_Format||ot===RGBA_PVRTC_4BPPV1_Format||ot===RGBA_PVRTC_2BPPV1_Format)if(st=et.get("WEBGL_compressed_texture_pvrtc"),st!==null){if(ot===RGB_PVRTC_4BPPV1_Format)return st.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(ot===RGB_PVRTC_2BPPV1_Format)return st.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(ot===RGBA_PVRTC_4BPPV1_Format)return st.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(ot===RGBA_PVRTC_2BPPV1_Format)return st.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(ot===RGB_ETC1_Format)return st=et.get("WEBGL_compressed_texture_etc1"),st!==null?st.COMPRESSED_RGB_ETC1_WEBGL:null;if(ot===RGB_ETC2_Format||ot===RGBA_ETC2_EAC_Format)if(st=et.get("WEBGL_compressed_texture_etc"),st!==null){if(ot===RGB_ETC2_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ETC2:st.COMPRESSED_RGB8_ETC2;if(ot===RGBA_ETC2_EAC_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:st.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(ot===RGBA_ASTC_4x4_Format||ot===RGBA_ASTC_5x4_Format||ot===RGBA_ASTC_5x5_Format||ot===RGBA_ASTC_6x5_Format||ot===RGBA_ASTC_6x6_Format||ot===RGBA_ASTC_8x5_Format||ot===RGBA_ASTC_8x6_Format||ot===RGBA_ASTC_8x8_Format||ot===RGBA_ASTC_10x5_Format||ot===RGBA_ASTC_10x6_Format||ot===RGBA_ASTC_10x8_Format||ot===RGBA_ASTC_10x10_Format||ot===RGBA_ASTC_12x10_Format||ot===RGBA_ASTC_12x12_Format)if(st=et.get("WEBGL_compressed_texture_astc"),st!==null){if(ot===RGBA_ASTC_4x4_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:st.COMPRESSED_RGBA_ASTC_4x4_KHR;if(ot===RGBA_ASTC_5x4_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:st.COMPRESSED_RGBA_ASTC_5x4_KHR;if(ot===RGBA_ASTC_5x5_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:st.COMPRESSED_RGBA_ASTC_5x5_KHR;if(ot===RGBA_ASTC_6x5_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:st.COMPRESSED_RGBA_ASTC_6x5_KHR;if(ot===RGBA_ASTC_6x6_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:st.COMPRESSED_RGBA_ASTC_6x6_KHR;if(ot===RGBA_ASTC_8x5_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:st.COMPRESSED_RGBA_ASTC_8x5_KHR;if(ot===RGBA_ASTC_8x6_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:st.COMPRESSED_RGBA_ASTC_8x6_KHR;if(ot===RGBA_ASTC_8x8_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:st.COMPRESSED_RGBA_ASTC_8x8_KHR;if(ot===RGBA_ASTC_10x5_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:st.COMPRESSED_RGBA_ASTC_10x5_KHR;if(ot===RGBA_ASTC_10x6_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:st.COMPRESSED_RGBA_ASTC_10x6_KHR;if(ot===RGBA_ASTC_10x8_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:st.COMPRESSED_RGBA_ASTC_10x8_KHR;if(ot===RGBA_ASTC_10x10_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:st.COMPRESSED_RGBA_ASTC_10x10_KHR;if(ot===RGBA_ASTC_12x10_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:st.COMPRESSED_RGBA_ASTC_12x10_KHR;if(ot===RGBA_ASTC_12x12_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:st.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(ot===RGBA_BPTC_Format)if(st=et.get("EXT_texture_compression_bptc"),st!==null){if(ot===RGBA_BPTC_Format)return at===sRGBEncoding?st.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:st.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;return ot===UnsignedInt248Type?rt?34042:(st=et.get("WEBGL_depth_texture"),st!==null?st.UNSIGNED_INT_24_8_WEBGL:null):tt[ot]!==void 0?tt[ot]:null}return{convert:it}}class ArrayCamera extends PerspectiveCamera{constructor(et=[]){super(),this.isArrayCamera=!0,this.cameras=et}}class Group extends Object3D{constructor(){super(),this.isGroup=!0,this.type="Group"}}const _moveEvent={type:"move"};class WebXRController{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Group,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Group,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new Vector3,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new Vector3),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Group,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new Vector3,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new Vector3),this._grip}dispatchEvent(et){return this._targetRay!==null&&this._targetRay.dispatchEvent(et),this._grip!==null&&this._grip.dispatchEvent(et),this._hand!==null&&this._hand.dispatchEvent(et),this}disconnect(et){return this.dispatchEvent({type:"disconnected",data:et}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(et,nt,rt){let it=null,ot=null,at=null;const st=this._targetRay,lt=this._grip,ct=this._hand;if(et&&nt.session.visibilityState!=="visible-blurred"){if(ct&&et.hand){at=!0;for(const gt of et.hand.values()){const yt=nt.getJointPose(gt,rt);if(ct.joints[gt.jointName]===void 0){const vt=new Group;vt.matrixAutoUpdate=!1,vt.visible=!1,ct.joints[gt.jointName]=vt,ct.add(vt)}const bt=ct.joints[gt.jointName];yt!==null&&(bt.matrix.fromArray(yt.transform.matrix),bt.matrix.decompose(bt.position,bt.rotation,bt.scale),bt.jointRadius=yt.radius),bt.visible=yt!==null}const ut=ct.joints["index-finger-tip"],ht=ct.joints["thumb-tip"],dt=ut.position.distanceTo(ht.position),pt=.02,mt=.005;ct.inputState.pinching&&dt>pt+mt?(ct.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:et.handedness,target:this})):!ct.inputState.pinching&&dt<=pt-mt&&(ct.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:et.handedness,target:this}))}else lt!==null&&et.gripSpace&&(ot=nt.getPose(et.gripSpace,rt),ot!==null&&(lt.matrix.fromArray(ot.transform.matrix),lt.matrix.decompose(lt.position,lt.rotation,lt.scale),ot.linearVelocity?(lt.hasLinearVelocity=!0,lt.linearVelocity.copy(ot.linearVelocity)):lt.hasLinearVelocity=!1,ot.angularVelocity?(lt.hasAngularVelocity=!0,lt.angularVelocity.copy(ot.angularVelocity)):lt.hasAngularVelocity=!1));st!==null&&(it=nt.getPose(et.targetRaySpace,rt),it===null&&ot!==null&&(it=ot),it!==null&&(st.matrix.fromArray(it.transform.matrix),st.matrix.decompose(st.position,st.rotation,st.scale),it.linearVelocity?(st.hasLinearVelocity=!0,st.linearVelocity.copy(it.linearVelocity)):st.hasLinearVelocity=!1,it.angularVelocity?(st.hasAngularVelocity=!0,st.angularVelocity.copy(it.angularVelocity)):st.hasAngularVelocity=!1,this.dispatchEvent(_moveEvent)))}return st!==null&&(st.visible=it!==null),lt!==null&&(lt.visible=ot!==null),ct!==null&&(ct.visible=at!==null),this}}class DepthTexture extends Texture{constructor(et,nt,rt,it,ot,at,st,lt,ct,ut){if(ut=ut!==void 0?ut:DepthFormat,ut!==DepthFormat&&ut!==DepthStencilFormat)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");rt===void 0&&ut===DepthFormat&&(rt=UnsignedIntType),rt===void 0&&ut===DepthStencilFormat&&(rt=UnsignedInt248Type),super(null,it,ot,at,st,lt,ut,rt,ct),this.isDepthTexture=!0,this.image={width:et,height:nt},this.magFilter=st!==void 0?st:NearestFilter,this.minFilter=lt!==void 0?lt:NearestFilter,this.flipY=!1,this.generateMipmaps=!1}}class WebXRManager extends EventDispatcher$1{constructor(et,nt){super();const rt=this;let it=null,ot=1,at=null,st="local-floor",lt=null,ct=null,ut=null,ht=null,dt=null,pt=null;const mt=nt.getContextAttributes();let gt=null,yt=null;const bt=[],vt=[],xt=new PerspectiveCamera;xt.layers.enable(1),xt.viewport=new Vector4;const kt=new PerspectiveCamera;kt.layers.enable(2),kt.viewport=new Vector4;const St=[xt,kt],Tt=new ArrayCamera;Tt.layers.enable(1),Tt.layers.enable(2);let At=null,Et=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(Ft){let Nt=bt[Ft];return Nt===void 0&&(Nt=new WebXRController,bt[Ft]=Nt),Nt.getTargetRaySpace()},this.getControllerGrip=function(Ft){let Nt=bt[Ft];return Nt===void 0&&(Nt=new WebXRController,bt[Ft]=Nt),Nt.getGripSpace()},this.getHand=function(Ft){let Nt=bt[Ft];return Nt===void 0&&(Nt=new WebXRController,bt[Ft]=Nt),Nt.getHandSpace()};function $t(Ft){const Nt=vt.indexOf(Ft.inputSource);if(Nt===-1)return;const Ut=bt[Nt];Ut!==void 0&&Ut.dispatchEvent({type:Ft.type,data:Ft.inputSource})}function Dt(){it.removeEventListener("select",$t),it.removeEventListener("selectstart",$t),it.removeEventListener("selectend",$t),it.removeEventListener("squeeze",$t),it.removeEventListener("squeezestart",$t),it.removeEventListener("squeezeend",$t),it.removeEventListener("end",Dt),it.removeEventListener("inputsourceschange",jt);for(let Ft=0;Ft=0&&(vt[Mt]=null,bt[Mt].dispatchEvent({type:"disconnected",data:Ut}))}for(let Nt=0;Nt=vt.length){vt.push(Ut),Mt=en;break}else if(vt[en]===null){vt[en]=Ut,Mt=en;break}if(Mt===-1)break}const Ht=bt[Mt];Ht&&Ht.dispatchEvent({type:"connected",data:Ut})}}const Pt=new Vector3,Ct=new Vector3;function wt(Ft,Nt,Ut){Pt.setFromMatrixPosition(Nt.matrixWorld),Ct.setFromMatrixPosition(Ut.matrixWorld);const Mt=Pt.distanceTo(Ct),Ht=Nt.projectionMatrix.elements,en=Ut.projectionMatrix.elements,sn=Ht[14]/(Ht[10]-1),Kt=Ht[14]/(Ht[10]+1),rn=(Ht[9]+1)/Ht[5],nn=(Ht[9]-1)/Ht[5],hn=(Ht[8]-1)/Ht[0],vn=(en[8]+1)/en[0],an=sn*hn,Qt=sn*vn,_n=Mt/(-hn+vn),Pn=_n*-hn;Nt.matrixWorld.decompose(Ft.position,Ft.quaternion,Ft.scale),Ft.translateX(Pn),Ft.translateZ(_n),Ft.matrixWorld.compose(Ft.position,Ft.quaternion,Ft.scale),Ft.matrixWorldInverse.copy(Ft.matrixWorld).invert();const $n=sn+_n,Nn=Kt+_n,Tn=an-Pn,cn=Qt+(Mt-Pn),mn=rn*Kt/Nn*$n,In=nn*Kt/Nn*$n;Ft.projectionMatrix.makePerspective(Tn,cn,mn,In,$n,Nn)}function It(Ft,Nt){Nt===null?Ft.matrixWorld.copy(Ft.matrix):Ft.matrixWorld.multiplyMatrices(Nt.matrixWorld,Ft.matrix),Ft.matrixWorldInverse.copy(Ft.matrixWorld).invert()}this.updateCamera=function(Ft){if(it===null)return;Tt.near=kt.near=xt.near=Ft.near,Tt.far=kt.far=xt.far=Ft.far,(At!==Tt.near||Et!==Tt.far)&&(it.updateRenderState({depthNear:Tt.near,depthFar:Tt.far}),At=Tt.near,Et=Tt.far);const Nt=Ft.parent,Ut=Tt.cameras;It(Tt,Nt);for(let Ht=0;Ht0&&(gt.alphaTest.value=yt.alphaTest);const bt=et.get(yt).envMap;if(bt&&(gt.envMap.value=bt,gt.flipEnvMap.value=bt.isCubeTexture&&bt.isRenderTargetTexture===!1?-1:1,gt.reflectivity.value=yt.reflectivity,gt.ior.value=yt.ior,gt.refractionRatio.value=yt.refractionRatio),yt.lightMap){gt.lightMap.value=yt.lightMap;const kt=tt.physicallyCorrectLights!==!0?Math.PI:1;gt.lightMapIntensity.value=yt.lightMapIntensity*kt}yt.aoMap&&(gt.aoMap.value=yt.aoMap,gt.aoMapIntensity.value=yt.aoMapIntensity);let vt;yt.map?vt=yt.map:yt.specularMap?vt=yt.specularMap:yt.displacementMap?vt=yt.displacementMap:yt.normalMap?vt=yt.normalMap:yt.bumpMap?vt=yt.bumpMap:yt.roughnessMap?vt=yt.roughnessMap:yt.metalnessMap?vt=yt.metalnessMap:yt.alphaMap?vt=yt.alphaMap:yt.emissiveMap?vt=yt.emissiveMap:yt.clearcoatMap?vt=yt.clearcoatMap:yt.clearcoatNormalMap?vt=yt.clearcoatNormalMap:yt.clearcoatRoughnessMap?vt=yt.clearcoatRoughnessMap:yt.iridescenceMap?vt=yt.iridescenceMap:yt.iridescenceThicknessMap?vt=yt.iridescenceThicknessMap:yt.specularIntensityMap?vt=yt.specularIntensityMap:yt.specularColorMap?vt=yt.specularColorMap:yt.transmissionMap?vt=yt.transmissionMap:yt.thicknessMap?vt=yt.thicknessMap:yt.sheenColorMap?vt=yt.sheenColorMap:yt.sheenRoughnessMap&&(vt=yt.sheenRoughnessMap),vt!==void 0&&(vt.isWebGLRenderTarget&&(vt=vt.texture),vt.matrixAutoUpdate===!0&&vt.updateMatrix(),gt.uvTransform.value.copy(vt.matrix));let xt;yt.aoMap?xt=yt.aoMap:yt.lightMap&&(xt=yt.lightMap),xt!==void 0&&(xt.isWebGLRenderTarget&&(xt=xt.texture),xt.matrixAutoUpdate===!0&&xt.updateMatrix(),gt.uv2Transform.value.copy(xt.matrix))}function ot(gt,yt){gt.diffuse.value.copy(yt.color),gt.opacity.value=yt.opacity}function at(gt,yt){gt.dashSize.value=yt.dashSize,gt.totalSize.value=yt.dashSize+yt.gapSize,gt.scale.value=yt.scale}function st(gt,yt,bt,vt){gt.diffuse.value.copy(yt.color),gt.opacity.value=yt.opacity,gt.size.value=yt.size*bt,gt.scale.value=vt*.5,yt.map&&(gt.map.value=yt.map),yt.alphaMap&&(gt.alphaMap.value=yt.alphaMap),yt.alphaTest>0&&(gt.alphaTest.value=yt.alphaTest);let xt;yt.map?xt=yt.map:yt.alphaMap&&(xt=yt.alphaMap),xt!==void 0&&(xt.matrixAutoUpdate===!0&&xt.updateMatrix(),gt.uvTransform.value.copy(xt.matrix))}function lt(gt,yt){gt.diffuse.value.copy(yt.color),gt.opacity.value=yt.opacity,gt.rotation.value=yt.rotation,yt.map&&(gt.map.value=yt.map),yt.alphaMap&&(gt.alphaMap.value=yt.alphaMap),yt.alphaTest>0&&(gt.alphaTest.value=yt.alphaTest);let bt;yt.map?bt=yt.map:yt.alphaMap&&(bt=yt.alphaMap),bt!==void 0&&(bt.matrixAutoUpdate===!0&&bt.updateMatrix(),gt.uvTransform.value.copy(bt.matrix))}function ct(gt,yt){gt.specular.value.copy(yt.specular),gt.shininess.value=Math.max(yt.shininess,1e-4)}function ut(gt,yt){yt.gradientMap&&(gt.gradientMap.value=yt.gradientMap)}function ht(gt,yt){gt.roughness.value=yt.roughness,gt.metalness.value=yt.metalness,yt.roughnessMap&&(gt.roughnessMap.value=yt.roughnessMap),yt.metalnessMap&&(gt.metalnessMap.value=yt.metalnessMap),et.get(yt).envMap&&(gt.envMapIntensity.value=yt.envMapIntensity)}function dt(gt,yt,bt){gt.ior.value=yt.ior,yt.sheen>0&&(gt.sheenColor.value.copy(yt.sheenColor).multiplyScalar(yt.sheen),gt.sheenRoughness.value=yt.sheenRoughness,yt.sheenColorMap&&(gt.sheenColorMap.value=yt.sheenColorMap),yt.sheenRoughnessMap&&(gt.sheenRoughnessMap.value=yt.sheenRoughnessMap)),yt.clearcoat>0&&(gt.clearcoat.value=yt.clearcoat,gt.clearcoatRoughness.value=yt.clearcoatRoughness,yt.clearcoatMap&&(gt.clearcoatMap.value=yt.clearcoatMap),yt.clearcoatRoughnessMap&&(gt.clearcoatRoughnessMap.value=yt.clearcoatRoughnessMap),yt.clearcoatNormalMap&&(gt.clearcoatNormalScale.value.copy(yt.clearcoatNormalScale),gt.clearcoatNormalMap.value=yt.clearcoatNormalMap,yt.side===BackSide&>.clearcoatNormalScale.value.negate())),yt.iridescence>0&&(gt.iridescence.value=yt.iridescence,gt.iridescenceIOR.value=yt.iridescenceIOR,gt.iridescenceThicknessMinimum.value=yt.iridescenceThicknessRange[0],gt.iridescenceThicknessMaximum.value=yt.iridescenceThicknessRange[1],yt.iridescenceMap&&(gt.iridescenceMap.value=yt.iridescenceMap),yt.iridescenceThicknessMap&&(gt.iridescenceThicknessMap.value=yt.iridescenceThicknessMap)),yt.transmission>0&&(gt.transmission.value=yt.transmission,gt.transmissionSamplerMap.value=bt.texture,gt.transmissionSamplerSize.value.set(bt.width,bt.height),yt.transmissionMap&&(gt.transmissionMap.value=yt.transmissionMap),gt.thickness.value=yt.thickness,yt.thicknessMap&&(gt.thicknessMap.value=yt.thicknessMap),gt.attenuationDistance.value=yt.attenuationDistance,gt.attenuationColor.value.copy(yt.attenuationColor)),gt.specularIntensity.value=yt.specularIntensity,gt.specularColor.value.copy(yt.specularColor),yt.specularIntensityMap&&(gt.specularIntensityMap.value=yt.specularIntensityMap),yt.specularColorMap&&(gt.specularColorMap.value=yt.specularColorMap)}function pt(gt,yt){yt.matcap&&(gt.matcap.value=yt.matcap)}function mt(gt,yt){gt.referencePosition.value.copy(yt.referencePosition),gt.nearDistance.value=yt.nearDistance,gt.farDistance.value=yt.farDistance}return{refreshFogUniforms:nt,refreshMaterialUniforms:rt}}function WebGLUniformsGroups(tt,et,nt,rt){let it={},ot={},at=[];const st=nt.isWebGL2?tt.getParameter(35375):0;function lt(vt,xt){const kt=xt.program;rt.uniformBlockBinding(vt,kt)}function ct(vt,xt){let kt=it[vt.id];kt===void 0&&(mt(vt),kt=ut(vt),it[vt.id]=kt,vt.addEventListener("dispose",yt));const St=xt.program;rt.updateUBOMapping(vt,St);const Tt=et.render.frame;ot[vt.id]!==Tt&&(dt(vt),ot[vt.id]=Tt)}function ut(vt){const xt=ht();vt.__bindingPointIndex=xt;const kt=tt.createBuffer(),St=vt.__size,Tt=vt.usage;return tt.bindBuffer(35345,kt),tt.bufferData(35345,St,Tt),tt.bindBuffer(35345,null),tt.bindBufferBase(35345,xt,kt),kt}function ht(){for(let vt=0;vt0){Tt=kt%St;const jt=St-Tt;Tt!==0&&jt-Dt.boundary<0&&(kt+=St-Tt,$t.__offset=kt)}kt+=Dt.storage}return Tt=kt%St,Tt>0&&(kt+=St-Tt),vt.__size=kt,vt.__cache={},this}function gt(vt){const xt=vt.value,kt={boundary:0,storage:0};return typeof xt=="number"?(kt.boundary=4,kt.storage=4):xt.isVector2?(kt.boundary=8,kt.storage=8):xt.isVector3||xt.isColor?(kt.boundary=16,kt.storage=12):xt.isVector4?(kt.boundary=16,kt.storage=16):xt.isMatrix3?(kt.boundary=48,kt.storage=48):xt.isMatrix4?(kt.boundary=64,kt.storage=64):xt.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",xt),kt}function yt(vt){const xt=vt.target;xt.removeEventListener("dispose",yt);const kt=at.indexOf(xt.__bindingPointIndex);at.splice(kt,1),tt.deleteBuffer(it[xt.id]),delete it[xt.id],delete ot[xt.id]}function bt(){for(const vt in it)tt.deleteBuffer(it[vt]);at=[],it={},ot={}}return{bind:lt,update:ct,dispose:bt}}function createCanvasElement(){const tt=createElementNS("canvas");return tt.style.display="block",tt}function WebGLRenderer(tt={}){this.isWebGLRenderer=!0;const et=tt.canvas!==void 0?tt.canvas:createCanvasElement(),nt=tt.context!==void 0?tt.context:null,rt=tt.depth!==void 0?tt.depth:!0,it=tt.stencil!==void 0?tt.stencil:!0,ot=tt.antialias!==void 0?tt.antialias:!1,at=tt.premultipliedAlpha!==void 0?tt.premultipliedAlpha:!0,st=tt.preserveDrawingBuffer!==void 0?tt.preserveDrawingBuffer:!1,lt=tt.powerPreference!==void 0?tt.powerPreference:"default",ct=tt.failIfMajorPerformanceCaveat!==void 0?tt.failIfMajorPerformanceCaveat:!1;let ut;nt!==null?ut=nt.getContextAttributes().alpha:ut=tt.alpha!==void 0?tt.alpha:!1;let ht=null,dt=null;const pt=[],mt=[];this.domElement=et,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=LinearEncoding,this.physicallyCorrectLights=!1,this.toneMapping=NoToneMapping,this.toneMappingExposure=1,Object.defineProperties(this,{gammaFactor:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."),2},set:function(){console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.")}}});const gt=this;let yt=!1,bt=0,vt=0,xt=null,kt=-1,St=null;const Tt=new Vector4,At=new Vector4;let Et=null,$t=et.width,Dt=et.height,jt=1,Pt=null,Ct=null;const wt=new Vector4(0,0,$t,Dt),It=new Vector4(0,0,$t,Dt);let Ot=!1;const Wt=new Frustum;let zt=!1,Ft=!1,Nt=null;const Ut=new Matrix4,Mt=new Vector2,Ht=new Vector3,en={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function sn(){return xt===null?jt:1}let Kt=nt;function rn(dn,Jt){for(let En=0;En0?dt=mt[mt.length-1]:dt=null,pt.pop(),pt.length>0?ht=pt[pt.length-1]:ht=null};function Ar(dn,Jt,En,Ln){if(dn.visible===!1)return;if(dn.layers.test(Jt.layers)){if(dn.isGroup)En=dn.renderOrder;else if(dn.isLOD)dn.autoUpdate===!0&&dn.update(Jt);else if(dn.isLight)dt.pushLight(dn),dn.castShadow&&dt.pushShadow(dn);else if(dn.isSprite){if(!dn.frustumCulled||Wt.intersectsSprite(dn)){Ln&&Ht.setFromMatrixPosition(dn.matrixWorld).applyMatrix4(Ut);const nr=cn.update(dn),lr=dn.material;lr.visible&&ht.push(dn,nr,lr,En,Ht.z,null)}}else if((dn.isMesh||dn.isLine||dn.isPoints)&&(dn.isSkinnedMesh&&dn.skeleton.frame!==an.render.frame&&(dn.skeleton.update(),dn.skeleton.frame=an.render.frame),!dn.frustumCulled||Wt.intersectsObject(dn))){Ln&&Ht.setFromMatrixPosition(dn.matrixWorld).applyMatrix4(Ut);const nr=cn.update(dn),lr=dn.material;if(Array.isArray(lr)){const cr=nr.groups;for(let Hr=0,vr=cr.length;Hr0&&jr(Un,Jt,En),Ln&&vn.viewport(Tt.copy(Ln)),Un.length>0&&Fr(Un,Jt,En),Kn.length>0&&Fr(Kn,Jt,En),nr.length>0&&Fr(nr,Jt,En),vn.buffers.depth.setTest(!0),vn.buffers.depth.setMask(!0),vn.buffers.color.setMask(!0),vn.setPolygonOffset(!1)}function jr(dn,Jt,En){const Ln=hn.isWebGL2;Nt===null&&(Nt=new WebGLRenderTarget(1,1,{generateMipmaps:!0,type:nn.has("EXT_color_buffer_half_float")?HalfFloatType:UnsignedByteType,minFilter:LinearMipmapLinearFilter,samples:Ln&&ot===!0?4:0})),gt.getDrawingBufferSize(Mt),Ln?Nt.setSize(Mt.x,Mt.y):Nt.setSize(floorPowerOfTwo(Mt.x),floorPowerOfTwo(Mt.y));const Un=gt.getRenderTarget();gt.setRenderTarget(Nt),gt.clear();const Kn=gt.toneMapping;gt.toneMapping=NoToneMapping,Fr(dn,Jt,En),gt.toneMapping=Kn,_n.updateMultisampleRenderTarget(Nt),_n.updateRenderTargetMipmap(Nt),gt.setRenderTarget(Un)}function Fr(dn,Jt,En){const Ln=Jt.isScene===!0?Jt.overrideMaterial:null;for(let Un=0,Kn=dn.length;Un0&&_n.useMultisampledRTT(dn)===!1?Un=Qt.get(dn).__webglMultisampledFramebuffer:Un=Hr,Tt.copy(dn.viewport),At.copy(dn.scissor),Et=dn.scissorTest}else Tt.copy(wt).multiplyScalar(jt).floor(),At.copy(It).multiplyScalar(jt).floor(),Et=Ot;if(vn.bindFramebuffer(36160,Un)&&hn.drawBuffers&&Ln&&vn.drawBuffers(dn,Un),vn.viewport(Tt),vn.scissor(At),vn.setScissorTest(Et),Kn){const cr=Qt.get(dn.texture);Kt.framebufferTexture2D(36160,36064,34069+Jt,cr.__webglTexture,En)}else if(nr){const cr=Qt.get(dn.texture),Hr=Jt||0;Kt.framebufferTextureLayer(36160,36064,cr.__webglTexture,En||0,Hr)}kt=-1},this.readRenderTargetPixels=function(dn,Jt,En,Ln,Un,Kn,nr){if(!(dn&&dn.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let lr=Qt.get(dn).__webglFramebuffer;if(dn.isWebGLCubeRenderTarget&&nr!==void 0&&(lr=lr[nr]),lr){vn.bindFramebuffer(36160,lr);try{const cr=dn.texture,Hr=cr.format,vr=cr.type;if(Hr!==RGBAFormat&&Xt.convert(Hr)!==Kt.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const Nr=vr===HalfFloatType&&(nn.has("EXT_color_buffer_half_float")||hn.isWebGL2&&nn.has("EXT_color_buffer_float"));if(vr!==UnsignedByteType&&Xt.convert(vr)!==Kt.getParameter(35738)&&!(vr===FloatType&&(hn.isWebGL2||nn.has("OES_texture_float")||nn.has("WEBGL_color_buffer_float")))&&!Nr){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}Jt>=0&&Jt<=dn.width-Ln&&En>=0&&En<=dn.height-Un&&Kt.readPixels(Jt,En,Ln,Un,Xt.convert(Hr),Xt.convert(vr),Kn)}finally{const cr=xt!==null?Qt.get(xt).__webglFramebuffer:null;vn.bindFramebuffer(36160,cr)}}},this.copyFramebufferToTexture=function(dn,Jt,En=0){const Ln=Math.pow(2,-En),Un=Math.floor(Jt.image.width*Ln),Kn=Math.floor(Jt.image.height*Ln);_n.setTexture2D(Jt,0),Kt.copyTexSubImage2D(3553,En,0,0,dn.x,dn.y,Un,Kn),vn.unbindTexture()},this.copyTextureToTexture=function(dn,Jt,En,Ln=0){const Un=Jt.image.width,Kn=Jt.image.height,nr=Xt.convert(En.format),lr=Xt.convert(En.type);_n.setTexture2D(En,0),Kt.pixelStorei(37440,En.flipY),Kt.pixelStorei(37441,En.premultiplyAlpha),Kt.pixelStorei(3317,En.unpackAlignment),Jt.isDataTexture?Kt.texSubImage2D(3553,Ln,dn.x,dn.y,Un,Kn,nr,lr,Jt.image.data):Jt.isCompressedTexture?Kt.compressedTexSubImage2D(3553,Ln,dn.x,dn.y,Jt.mipmaps[0].width,Jt.mipmaps[0].height,nr,Jt.mipmaps[0].data):Kt.texSubImage2D(3553,Ln,dn.x,dn.y,nr,lr,Jt.image),Ln===0&&En.generateMipmaps&&Kt.generateMipmap(3553),vn.unbindTexture()},this.copyTextureToTexture3D=function(dn,Jt,En,Ln,Un=0){if(gt.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const Kn=dn.max.x-dn.min.x+1,nr=dn.max.y-dn.min.y+1,lr=dn.max.z-dn.min.z+1,cr=Xt.convert(Ln.format),Hr=Xt.convert(Ln.type);let vr;if(Ln.isData3DTexture)_n.setTexture3D(Ln,0),vr=32879;else if(Ln.isDataArrayTexture)_n.setTexture2DArray(Ln,0),vr=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}Kt.pixelStorei(37440,Ln.flipY),Kt.pixelStorei(37441,Ln.premultiplyAlpha),Kt.pixelStorei(3317,Ln.unpackAlignment);const Nr=Kt.getParameter(3314),Gr=Kt.getParameter(32878),eo=Kt.getParameter(3316),Zr=Kt.getParameter(3315),Jr=Kt.getParameter(32877),wr=En.isCompressedTexture?En.mipmaps[0]:En.image;Kt.pixelStorei(3314,wr.width),Kt.pixelStorei(32878,wr.height),Kt.pixelStorei(3316,dn.min.x),Kt.pixelStorei(3315,dn.min.y),Kt.pixelStorei(32877,dn.min.z),En.isDataTexture||En.isData3DTexture?Kt.texSubImage3D(vr,Un,Jt.x,Jt.y,Jt.z,Kn,nr,lr,cr,Hr,wr.data):En.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),Kt.compressedTexSubImage3D(vr,Un,Jt.x,Jt.y,Jt.z,Kn,nr,lr,cr,wr.data)):Kt.texSubImage3D(vr,Un,Jt.x,Jt.y,Jt.z,Kn,nr,lr,cr,Hr,wr),Kt.pixelStorei(3314,Nr),Kt.pixelStorei(32878,Gr),Kt.pixelStorei(3316,eo),Kt.pixelStorei(3315,Zr),Kt.pixelStorei(32877,Jr),Un===0&&Ln.generateMipmaps&&Kt.generateMipmap(vr),vn.unbindTexture()},this.initTexture=function(dn){dn.isCubeTexture?_n.setTextureCube(dn,0):dn.isData3DTexture?_n.setTexture3D(dn,0):dn.isDataArrayTexture?_n.setTexture2DArray(dn,0):_n.setTexture2D(dn,0),vn.unbindTexture()},this.resetState=function(){bt=0,vt=0,xt=null,vn.reset(),Sn.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}class WebGL1Renderer extends WebGLRenderer{}WebGL1Renderer.prototype.isWebGL1Renderer=!0;class FogExp2{constructor(et,nt=25e-5){this.isFogExp2=!0,this.name="",this.color=new Color$1(et),this.density=nt}clone(){return new FogExp2(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}class Fog{constructor(et,nt=1,rt=1e3){this.isFog=!0,this.name="",this.color=new Color$1(et),this.near=nt,this.far=rt}clone(){return new Fog(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}class Scene extends Object3D{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(et,nt){return super.copy(et,nt),et.background!==null&&(this.background=et.background.clone()),et.environment!==null&&(this.environment=et.environment.clone()),et.fog!==null&&(this.fog=et.fog.clone()),et.overrideMaterial!==null&&(this.overrideMaterial=et.overrideMaterial.clone()),this.autoUpdate=et.autoUpdate,this.matrixAutoUpdate=et.matrixAutoUpdate,this}toJSON(et){const nt=super.toJSON(et);return this.fog!==null&&(nt.object.fog=this.fog.toJSON()),nt}}class InterleavedBuffer{constructor(et,nt){this.isInterleavedBuffer=!0,this.array=et,this.stride=nt,this.count=et!==void 0?et.length/nt:0,this.usage=StaticDrawUsage,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=generateUUID$1()}onUploadCallback(){}set needsUpdate(et){et===!0&&this.version++}setUsage(et){return this.usage=et,this}copy(et){return this.array=new et.array.constructor(et.array),this.count=et.count,this.stride=et.stride,this.usage=et.usage,this}copyAt(et,nt,rt){et*=this.stride,rt*=nt.stride;for(let it=0,ot=this.stride;itet.far||nt.push({distance:lt,point:_intersectPoint.clone(),uv:Triangle.getUV(_intersectPoint,_vA,_vB,_vC,_uvA,_uvB,_uvC,new Vector2),face:null,object:this})}copy(et,nt){return super.copy(et,nt),et.center!==void 0&&this.center.copy(et.center),this.material=et.material,this}}function transformVertex(tt,et,nt,rt,it,ot){_alignedPosition.subVectors(tt,nt).addScalar(.5).multiply(rt),it!==void 0?(_rotatedPosition.x=ot*_alignedPosition.x-it*_alignedPosition.y,_rotatedPosition.y=it*_alignedPosition.x+ot*_alignedPosition.y):_rotatedPosition.copy(_alignedPosition),tt.copy(et),tt.x+=_rotatedPosition.x,tt.y+=_rotatedPosition.y,tt.applyMatrix4(_viewWorldMatrix)}const _v1$2=new Vector3,_v2$1=new Vector3;class LOD extends Object3D{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(et){super.copy(et,!1);const nt=et.levels;for(let rt=0,it=nt.length;rt0){let rt,it;for(rt=1,it=nt.length;rt0){_v1$2.setFromMatrixPosition(this.matrixWorld);const it=et.ray.origin.distanceTo(_v1$2);this.getObjectForDistance(it).raycast(et,nt)}}update(et){const nt=this.levels;if(nt.length>1){_v1$2.setFromMatrixPosition(et.matrixWorld),_v2$1.setFromMatrixPosition(this.matrixWorld);const rt=_v1$2.distanceTo(_v2$1)/et.zoom;nt[0].object.visible=!0;let it,ot;for(it=1,ot=nt.length;it=nt[it].distance;it++)nt[it-1].object.visible=!1,nt[it].object.visible=!0;for(this._currentLevel=it-1;itlt)continue;dt.applyMatrix4(this.matrixWorld);const Et=et.ray.origin.distanceTo(dt);Etet.far||nt.push({distance:Et,point:ht.clone().applyMatrix4(this.matrixWorld),index:xt,face:null,faceIndex:null,object:this})}}else{const bt=Math.max(0,at.start),vt=Math.min(yt.count,at.start+at.count);for(let xt=bt,kt=vt-1;xtlt)continue;dt.applyMatrix4(this.matrixWorld);const Tt=et.ray.origin.distanceTo(dt);Ttet.far||nt.push({distance:Tt,point:ht.clone().applyMatrix4(this.matrixWorld),index:xt,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const nt=this.geometry.morphAttributes,rt=Object.keys(nt);if(rt.length>0){const it=nt[rt[0]];if(it!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let ot=0,at=it.length;ot0){const it=nt[rt[0]];if(it!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let ot=0,at=it.length;otit.far)return;ot.push({distance:ct,distanceToRay:Math.sqrt(st),point:lt,index:et,face:null,object:at})}}class VideoTexture extends Texture{constructor(et,nt,rt,it,ot,at,st,lt,ct){super(et,nt,rt,it,ot,at,st,lt,ct),this.isVideoTexture=!0,this.minFilter=at!==void 0?at:LinearFilter,this.magFilter=ot!==void 0?ot:LinearFilter,this.generateMipmaps=!1;const ut=this;function ht(){ut.needsUpdate=!0,et.requestVideoFrameCallback(ht)}"requestVideoFrameCallback"in et&&et.requestVideoFrameCallback(ht)}clone(){return new this.constructor(this.image).copy(this)}update(){const et=this.image;"requestVideoFrameCallback"in et===!1&&et.readyState>=et.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class FramebufferTexture extends Texture{constructor(et,nt,rt){super({width:et,height:nt}),this.isFramebufferTexture=!0,this.format=rt,this.magFilter=NearestFilter,this.minFilter=NearestFilter,this.generateMipmaps=!1,this.needsUpdate=!0}}class CompressedTexture extends Texture{constructor(et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt){super(null,at,st,lt,ct,ut,it,ot,ht,dt),this.isCompressedTexture=!0,this.image={width:nt,height:rt},this.mipmaps=et,this.flipY=!1,this.generateMipmaps=!1}}class CanvasTexture extends Texture{constructor(et,nt,rt,it,ot,at,st,lt,ct){super(et,nt,rt,it,ot,at,st,lt,ct),this.isCanvasTexture=!0,this.needsUpdate=!0}}let Curve$1=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(et,nt){const rt=this.getUtoTmapping(et);return this.getPoint(rt,nt)}getPoints(et=5){const nt=[];for(let rt=0;rt<=et;rt++)nt.push(this.getPoint(rt/et));return nt}getSpacedPoints(et=5){const nt=[];for(let rt=0;rt<=et;rt++)nt.push(this.getPointAt(rt/et));return nt}getLength(){const et=this.getLengths();return et[et.length-1]}getLengths(et=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===et+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const nt=[];let rt,it=this.getPoint(0),ot=0;nt.push(0);for(let at=1;at<=et;at++)rt=this.getPoint(at/et),ot+=rt.distanceTo(it),nt.push(ot),it=rt;return this.cacheArcLengths=nt,nt}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(et,nt){const rt=this.getLengths();let it=0;const ot=rt.length;let at;nt?at=nt:at=et*rt[ot-1];let st=0,lt=ot-1,ct;for(;st<=lt;)if(it=Math.floor(st+(lt-st)/2),ct=rt[it]-at,ct<0)st=it+1;else if(ct>0)lt=it-1;else{lt=it;break}if(it=lt,rt[it]===at)return it/(ot-1);const ut=rt[it],dt=rt[it+1]-ut,pt=(at-ut)/dt;return(it+pt)/(ot-1)}getTangent(et,nt){let it=et-1e-4,ot=et+1e-4;it<0&&(it=0),ot>1&&(ot=1);const at=this.getPoint(it),st=this.getPoint(ot),lt=nt||(at.isVector2?new Vector2:new Vector3);return lt.copy(st).sub(at).normalize(),lt}getTangentAt(et,nt){const rt=this.getUtoTmapping(et);return this.getTangent(rt,nt)}computeFrenetFrames(et,nt){const rt=new Vector3,it=[],ot=[],at=[],st=new Vector3,lt=new Matrix4;for(let pt=0;pt<=et;pt++){const mt=pt/et;it[pt]=this.getTangentAt(mt,new Vector3)}ot[0]=new Vector3,at[0]=new Vector3;let ct=Number.MAX_VALUE;const ut=Math.abs(it[0].x),ht=Math.abs(it[0].y),dt=Math.abs(it[0].z);ut<=ct&&(ct=ut,rt.set(1,0,0)),ht<=ct&&(ct=ht,rt.set(0,1,0)),dt<=ct&&rt.set(0,0,1),st.crossVectors(it[0],rt).normalize(),ot[0].crossVectors(it[0],st),at[0].crossVectors(it[0],ot[0]);for(let pt=1;pt<=et;pt++){if(ot[pt]=ot[pt-1].clone(),at[pt]=at[pt-1].clone(),st.crossVectors(it[pt-1],it[pt]),st.length()>Number.EPSILON){st.normalize();const mt=Math.acos(clamp$5(it[pt-1].dot(it[pt]),-1,1));ot[pt].applyMatrix4(lt.makeRotationAxis(st,mt))}at[pt].crossVectors(it[pt],ot[pt])}if(nt===!0){let pt=Math.acos(clamp$5(ot[0].dot(ot[et]),-1,1));pt/=et,it[0].dot(st.crossVectors(ot[0],ot[et]))>0&&(pt=-pt);for(let mt=1;mt<=et;mt++)ot[mt].applyMatrix4(lt.makeRotationAxis(it[mt],pt*mt)),at[mt].crossVectors(it[mt],ot[mt])}return{tangents:it,normals:ot,binormals:at}}clone(){return new this.constructor().copy(this)}copy(et){return this.arcLengthDivisions=et.arcLengthDivisions,this}toJSON(){const et={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return et.arcLengthDivisions=this.arcLengthDivisions,et.type=this.type,et}fromJSON(et){return this.arcLengthDivisions=et.arcLengthDivisions,this}};class EllipseCurve extends Curve$1{constructor(et=0,nt=0,rt=1,it=1,ot=0,at=Math.PI*2,st=!1,lt=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=et,this.aY=nt,this.xRadius=rt,this.yRadius=it,this.aStartAngle=ot,this.aEndAngle=at,this.aClockwise=st,this.aRotation=lt}getPoint(et,nt){const rt=nt||new Vector2,it=Math.PI*2;let ot=this.aEndAngle-this.aStartAngle;const at=Math.abs(ot)it;)ot-=it;ot0?0:(Math.floor(Math.abs(st)/ot)+1)*ot:lt===0&&st===ot-1&&(st=ot-2,lt=1);let ct,ut;this.closed||st>0?ct=it[(st-1)%ot]:(tmp.subVectors(it[0],it[1]).add(it[0]),ct=tmp);const ht=it[st%ot],dt=it[(st+1)%ot];if(this.closed||st+2it.length-2?it.length-1:at+1],ht=it[at>it.length-3?it.length-1:at+2];return rt.set(CatmullRom(st,lt.x,ct.x,ut.x,ht.x),CatmullRom(st,lt.y,ct.y,ut.y,ht.y)),rt}copy(et){super.copy(et),this.points=[];for(let nt=0,rt=et.points.length;nt=rt){const at=it[ot]-rt,st=this.curves[ot],lt=st.getLength(),ct=lt===0?0:1-at/lt;return st.getPointAt(ct,nt)}ot++}return null}getLength(){const et=this.getCurveLengths();return et[et.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const et=[];let nt=0;for(let rt=0,it=this.curves.length;rt1&&!nt[nt.length-1].equals(nt[0])&&nt.push(nt[0]),nt}copy(et){super.copy(et),this.curves=[];for(let nt=0,rt=et.curves.length;nt0){const ht=ct.getPoint(0);ht.equals(this.currentPoint)||this.lineTo(ht.x,ht.y)}this.curves.push(ct);const ut=ct.getPoint(1);return this.currentPoint.copy(ut),this}copy(et){return super.copy(et),this.currentPoint.copy(et.currentPoint),this}toJSON(){const et=super.toJSON();return et.currentPoint=this.currentPoint.toArray(),et}fromJSON(et){return super.fromJSON(et),this.currentPoint.fromArray(et.currentPoint),this}};class LatheGeometry extends BufferGeometry{constructor(et=[new Vector2(0,-.5),new Vector2(.5,0),new Vector2(0,.5)],nt=12,rt=0,it=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:et,segments:nt,phiStart:rt,phiLength:it},nt=Math.floor(nt),it=clamp$5(it,0,Math.PI*2);const ot=[],at=[],st=[],lt=[],ct=[],ut=1/nt,ht=new Vector3,dt=new Vector2,pt=new Vector3,mt=new Vector3,gt=new Vector3;let yt=0,bt=0;for(let vt=0;vt<=et.length-1;vt++)switch(vt){case 0:yt=et[vt+1].x-et[vt].x,bt=et[vt+1].y-et[vt].y,pt.x=bt*1,pt.y=-yt,pt.z=bt*0,gt.copy(pt),pt.normalize(),lt.push(pt.x,pt.y,pt.z);break;case et.length-1:lt.push(gt.x,gt.y,gt.z);break;default:yt=et[vt+1].x-et[vt].x,bt=et[vt+1].y-et[vt].y,pt.x=bt*1,pt.y=-yt,pt.z=bt*0,mt.copy(pt),pt.x+=gt.x,pt.y+=gt.y,pt.z+=gt.z,pt.normalize(),lt.push(pt.x,pt.y,pt.z),gt.copy(mt)}for(let vt=0;vt<=nt;vt++){const xt=rt+vt*ut*it,kt=Math.sin(xt),St=Math.cos(xt);for(let Tt=0;Tt<=et.length-1;Tt++){ht.x=et[Tt].x*kt,ht.y=et[Tt].y,ht.z=et[Tt].x*St,at.push(ht.x,ht.y,ht.z),dt.x=vt/nt,dt.y=Tt/(et.length-1),st.push(dt.x,dt.y);const At=lt[3*Tt+0]*kt,Et=lt[3*Tt+1],$t=lt[3*Tt+0]*St;ct.push(At,Et,$t)}}for(let vt=0;vt0&&xt(!0),nt>0&&xt(!1)),this.setIndex(ut),this.setAttribute("position",new Float32BufferAttribute(ht,3)),this.setAttribute("normal",new Float32BufferAttribute(dt,3)),this.setAttribute("uv",new Float32BufferAttribute(pt,2));function vt(){const kt=new Vector3,St=new Vector3;let Tt=0;const At=(nt-et)/rt;for(let Et=0;Et<=ot;Et++){const $t=[],Dt=Et/ot,jt=Dt*(nt-et)+et;for(let Pt=0;Pt<=it;Pt++){const Ct=Pt/it,wt=Ct*lt+st,It=Math.sin(wt),Ot=Math.cos(wt);St.x=jt*It,St.y=-Dt*rt+yt,St.z=jt*Ot,ht.push(St.x,St.y,St.z),kt.set(It,At,Ot).normalize(),dt.push(kt.x,kt.y,kt.z),pt.push(Ct,1-Dt),$t.push(mt++)}gt.push($t)}for(let Et=0;Et.9&&At<.1&&(xt<.2&&(at[vt+0]+=1),kt<.2&&(at[vt+2]+=1),St<.2&&(at[vt+4]+=1))}}function dt(vt){ot.push(vt.x,vt.y,vt.z)}function pt(vt,xt){const kt=vt*3;xt.x=et[kt+0],xt.y=et[kt+1],xt.z=et[kt+2]}function mt(){const vt=new Vector3,xt=new Vector3,kt=new Vector3,St=new Vector3,Tt=new Vector2,At=new Vector2,Et=new Vector2;for(let $t=0,Dt=0;$t80*nt){st=ct=tt[0],lt=ut=tt[1];for(let mt=nt;mtct&&(ct=ht),dt>ut&&(ut=dt);pt=Math.max(ct-st,ut-lt),pt=pt!==0?1/pt:0}return earcutLinked(ot,at,nt,st,lt,pt),at}};function linkedList(tt,et,nt,rt,it){let ot,at;if(it===signedArea(tt,et,nt,rt)>0)for(ot=et;ot=et;ot-=rt)at=insertNode(ot,tt[ot],tt[ot+1],at);return at&&equals(at,at.next)&&(removeNode(at),at=at.next),at}function filterPoints(tt,et){if(!tt)return tt;et||(et=tt);let nt=tt,rt;do if(rt=!1,!nt.steiner&&(equals(nt,nt.next)||area(nt.prev,nt,nt.next)===0)){if(removeNode(nt),nt=et=nt.prev,nt===nt.next)break;rt=!0}else nt=nt.next;while(rt||nt!==et);return et}function earcutLinked(tt,et,nt,rt,it,ot,at){if(!tt)return;!at&&ot&&indexCurve(tt,rt,it,ot);let st=tt,lt,ct;for(;tt.prev!==tt.next;){if(lt=tt.prev,ct=tt.next,ot?isEarHashed(tt,rt,it,ot):isEar(tt)){et.push(lt.i/nt),et.push(tt.i/nt),et.push(ct.i/nt),removeNode(tt),tt=ct.next,st=ct.next;continue}if(tt=ct,tt===st){at?at===1?(tt=cureLocalIntersections(filterPoints(tt),et,nt),earcutLinked(tt,et,nt,rt,it,ot,2)):at===2&&splitEarcut(tt,et,nt,rt,it,ot):earcutLinked(filterPoints(tt),et,nt,rt,it,ot,1);break}}}function isEar(tt){const et=tt.prev,nt=tt,rt=tt.next;if(area(et,nt,rt)>=0)return!1;let it=tt.next.next;for(;it!==tt.prev;){if(pointInTriangle(et.x,et.y,nt.x,nt.y,rt.x,rt.y,it.x,it.y)&&area(it.prev,it,it.next)>=0)return!1;it=it.next}return!0}function isEarHashed(tt,et,nt,rt){const it=tt.prev,ot=tt,at=tt.next;if(area(it,ot,at)>=0)return!1;const st=it.xot.x?it.x>at.x?it.x:at.x:ot.x>at.x?ot.x:at.x,ut=it.y>ot.y?it.y>at.y?it.y:at.y:ot.y>at.y?ot.y:at.y,ht=zOrder(st,lt,et,nt,rt),dt=zOrder(ct,ut,et,nt,rt);let pt=tt.prevZ,mt=tt.nextZ;for(;pt&&pt.z>=ht&&mt&&mt.z<=dt;){if(pt!==tt.prev&&pt!==tt.next&&pointInTriangle(it.x,it.y,ot.x,ot.y,at.x,at.y,pt.x,pt.y)&&area(pt.prev,pt,pt.next)>=0||(pt=pt.prevZ,mt!==tt.prev&&mt!==tt.next&&pointInTriangle(it.x,it.y,ot.x,ot.y,at.x,at.y,mt.x,mt.y)&&area(mt.prev,mt,mt.next)>=0))return!1;mt=mt.nextZ}for(;pt&&pt.z>=ht;){if(pt!==tt.prev&&pt!==tt.next&&pointInTriangle(it.x,it.y,ot.x,ot.y,at.x,at.y,pt.x,pt.y)&&area(pt.prev,pt,pt.next)>=0)return!1;pt=pt.prevZ}for(;mt&&mt.z<=dt;){if(mt!==tt.prev&&mt!==tt.next&&pointInTriangle(it.x,it.y,ot.x,ot.y,at.x,at.y,mt.x,mt.y)&&area(mt.prev,mt,mt.next)>=0)return!1;mt=mt.nextZ}return!0}function cureLocalIntersections(tt,et,nt){let rt=tt;do{const it=rt.prev,ot=rt.next.next;!equals(it,ot)&&intersects(it,rt,rt.next,ot)&&locallyInside(it,ot)&&locallyInside(ot,it)&&(et.push(it.i/nt),et.push(rt.i/nt),et.push(ot.i/nt),removeNode(rt),removeNode(rt.next),rt=tt=ot),rt=rt.next}while(rt!==tt);return filterPoints(rt)}function splitEarcut(tt,et,nt,rt,it,ot){let at=tt;do{let st=at.next.next;for(;st!==at.prev;){if(at.i!==st.i&&isValidDiagonal(at,st)){let lt=splitPolygon(at,st);at=filterPoints(at,at.next),lt=filterPoints(lt,lt.next),earcutLinked(at,et,nt,rt,it,ot),earcutLinked(lt,et,nt,rt,it,ot);return}st=st.next}at=at.next}while(at!==tt)}function eliminateHoles(tt,et,nt,rt){const it=[];let ot,at,st,lt,ct;for(ot=0,at=et.length;ot=nt.next.y&&nt.next.y!==nt.y){const dt=nt.x+(it-nt.y)*(nt.next.x-nt.x)/(nt.next.y-nt.y);if(dt<=rt&&dt>ot){if(ot=dt,dt===rt){if(it===nt.y)return nt;if(it===nt.next.y)return nt.next}at=nt.x=nt.x&&nt.x>=lt&&rt!==nt.x&&pointInTriangle(itat.x||nt.x===at.x&§orContainsSector(at,nt)))&&(at=nt,ut=ht)),nt=nt.next;while(nt!==st);return at}function sectorContainsSector(tt,et){return area(tt.prev,tt,et.prev)<0&&area(et.next,tt,tt.next)<0}function indexCurve(tt,et,nt,rt){let it=tt;do it.z===null&&(it.z=zOrder(it.x,it.y,et,nt,rt)),it.prevZ=it.prev,it.nextZ=it.next,it=it.next;while(it!==tt);it.prevZ.nextZ=null,it.prevZ=null,sortLinked(it)}function sortLinked(tt){let et,nt,rt,it,ot,at,st,lt,ct=1;do{for(nt=tt,tt=null,ot=null,at=0;nt;){for(at++,rt=nt,st=0,et=0;et0||lt>0&&rt;)st!==0&&(lt===0||!rt||nt.z<=rt.z)?(it=nt,nt=nt.nextZ,st--):(it=rt,rt=rt.nextZ,lt--),ot?ot.nextZ=it:tt=it,it.prevZ=ot,ot=it;nt=rt}ot.nextZ=null,ct*=2}while(at>1);return tt}function zOrder(tt,et,nt,rt,it){return tt=32767*(tt-nt)*it,et=32767*(et-rt)*it,tt=(tt|tt<<8)&16711935,tt=(tt|tt<<4)&252645135,tt=(tt|tt<<2)&858993459,tt=(tt|tt<<1)&1431655765,et=(et|et<<8)&16711935,et=(et|et<<4)&252645135,et=(et|et<<2)&858993459,et=(et|et<<1)&1431655765,tt|et<<1}function getLeftmost(tt){let et=tt,nt=tt;do(et.x=0&&(tt-at)*(rt-st)-(nt-at)*(et-st)>=0&&(nt-at)*(ot-st)-(it-at)*(rt-st)>=0}function isValidDiagonal(tt,et){return tt.next.i!==et.i&&tt.prev.i!==et.i&&!intersectsPolygon(tt,et)&&(locallyInside(tt,et)&&locallyInside(et,tt)&&middleInside(tt,et)&&(area(tt.prev,tt,et.prev)||area(tt,et.prev,et))||equals(tt,et)&&area(tt.prev,tt,tt.next)>0&&area(et.prev,et,et.next)>0)}function area(tt,et,nt){return(et.y-tt.y)*(nt.x-et.x)-(et.x-tt.x)*(nt.y-et.y)}function equals(tt,et){return tt.x===et.x&&tt.y===et.y}function intersects(tt,et,nt,rt){const it=sign$2(area(tt,et,nt)),ot=sign$2(area(tt,et,rt)),at=sign$2(area(nt,rt,tt)),st=sign$2(area(nt,rt,et));return!!(it!==ot&&at!==st||it===0&&onSegment(tt,nt,et)||ot===0&&onSegment(tt,rt,et)||at===0&&onSegment(nt,tt,rt)||st===0&&onSegment(nt,et,rt))}function onSegment(tt,et,nt){return et.x<=Math.max(tt.x,nt.x)&&et.x>=Math.min(tt.x,nt.x)&&et.y<=Math.max(tt.y,nt.y)&&et.y>=Math.min(tt.y,nt.y)}function sign$2(tt){return tt>0?1:tt<0?-1:0}function intersectsPolygon(tt,et){let nt=tt;do{if(nt.i!==tt.i&&nt.next.i!==tt.i&&nt.i!==et.i&&nt.next.i!==et.i&&intersects(nt,nt.next,tt,et))return!0;nt=nt.next}while(nt!==tt);return!1}function locallyInside(tt,et){return area(tt.prev,tt,tt.next)<0?area(tt,et,tt.next)>=0&&area(tt,tt.prev,et)>=0:area(tt,et,tt.prev)<0||area(tt,tt.next,et)<0}function middleInside(tt,et){let nt=tt,rt=!1;const it=(tt.x+et.x)/2,ot=(tt.y+et.y)/2;do nt.y>ot!=nt.next.y>ot&&nt.next.y!==nt.y&&it<(nt.next.x-nt.x)*(ot-nt.y)/(nt.next.y-nt.y)+nt.x&&(rt=!rt),nt=nt.next;while(nt!==tt);return rt}function splitPolygon(tt,et){const nt=new Node$1(tt.i,tt.x,tt.y),rt=new Node$1(et.i,et.x,et.y),it=tt.next,ot=et.prev;return tt.next=et,et.prev=tt,nt.next=it,it.prev=nt,rt.next=nt,nt.prev=rt,ot.next=rt,rt.prev=ot,rt}function insertNode(tt,et,nt,rt){const it=new Node$1(tt,et,nt);return rt?(it.next=rt.next,it.prev=rt,rt.next.prev=it,rt.next=it):(it.prev=it,it.next=it),it}function removeNode(tt){tt.next.prev=tt.prev,tt.prev.next=tt.next,tt.prevZ&&(tt.prevZ.nextZ=tt.nextZ),tt.nextZ&&(tt.nextZ.prevZ=tt.prevZ)}function Node$1(tt,et,nt){this.i=tt,this.x=et,this.y=nt,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea(tt,et,nt,rt){let it=0;for(let ot=et,at=nt-rt;ot2&&tt[et-1].equals(tt[0])&&tt.pop()}function addContour(tt,et){for(let nt=0;ntNumber.EPSILON){const pn=Math.sqrt(wn),kn=Math.sqrt(In*In+An*An),Dn=_n.x-mn/pn,un=_n.y+cn/pn,Zt=Pn.x-An/kn,Xt=Pn.y+In/kn,Sn=((Zt-Dn)*An-(Xt-un)*In)/(cn*An-mn*In);$n=Dn+cn*Sn-Qt.x,Nn=un+mn*Sn-Qt.y;const Rn=$n*$n+Nn*Nn;if(Rn<=2)return new Vector2($n,Nn);Tn=Math.sqrt(Rn/2)}else{let pn=!1;cn>Number.EPSILON?In>Number.EPSILON&&(pn=!0):cn<-Number.EPSILON?In<-Number.EPSILON&&(pn=!0):Math.sign(mn)===Math.sign(An)&&(pn=!0),pn?($n=-mn,Nn=cn,Tn=Math.sqrt(wn)):($n=cn,Nn=mn,Tn=Math.sqrt(wn/2))}return new Vector2($n/Tn,Nn/Tn)}const Ft=[];for(let Qt=0,_n=wt.length,Pn=_n-1,$n=Qt+1;Qt<_n;Qt++,Pn++,$n++)Pn===_n&&(Pn=0),$n===_n&&($n=0),Ft[Qt]=zt(wt[Qt],wt[Pn],wt[$n]);const Nt=[];let Ut,Mt=Ft.concat();for(let Qt=0,_n=jt.length;Qt<_n;Qt++){const Pn=jt[Qt];Ut=[];for(let $n=0,Nn=Pn.length,Tn=Nn-1,cn=$n+1;$n=0;Qt--){const _n=Qt/yt,Pn=pt*Math.cos(_n*Math.PI/2),$n=mt*Math.sin(_n*Math.PI/2)+gt;for(let Nn=0,Tn=wt.length;Nn=0;){const $n=Pn;let Nn=Pn-1;Nn<0&&(Nn=Qt.length-1);for(let Tn=0,cn=ut+yt*2;Tn0)&&pt.push(xt,kt,Tt),(bt!==rt-1||lt0!=et>0&&this.version++,this._sheen=et}get clearcoat(){return this._clearcoat}set clearcoat(et){this._clearcoat>0!=et>0&&this.version++,this._clearcoat=et}get iridescence(){return this._iridescence}set iridescence(et){this._iridescence>0!=et>0&&this.version++,this._iridescence=et}get transmission(){return this._transmission}set transmission(et){this._transmission>0!=et>0&&this.version++,this._transmission=et}copy(et){return super.copy(et),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=et.clearcoat,this.clearcoatMap=et.clearcoatMap,this.clearcoatRoughness=et.clearcoatRoughness,this.clearcoatRoughnessMap=et.clearcoatRoughnessMap,this.clearcoatNormalMap=et.clearcoatNormalMap,this.clearcoatNormalScale.copy(et.clearcoatNormalScale),this.ior=et.ior,this.iridescence=et.iridescence,this.iridescenceMap=et.iridescenceMap,this.iridescenceIOR=et.iridescenceIOR,this.iridescenceThicknessRange=[...et.iridescenceThicknessRange],this.iridescenceThicknessMap=et.iridescenceThicknessMap,this.sheen=et.sheen,this.sheenColor.copy(et.sheenColor),this.sheenColorMap=et.sheenColorMap,this.sheenRoughness=et.sheenRoughness,this.sheenRoughnessMap=et.sheenRoughnessMap,this.transmission=et.transmission,this.transmissionMap=et.transmissionMap,this.thickness=et.thickness,this.thicknessMap=et.thicknessMap,this.attenuationDistance=et.attenuationDistance,this.attenuationColor.copy(et.attenuationColor),this.specularIntensity=et.specularIntensity,this.specularIntensityMap=et.specularIntensityMap,this.specularColor.copy(et.specularColor),this.specularColorMap=et.specularColorMap,this}}class MeshPhongMaterial extends Material{constructor(et){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Color$1(16777215),this.specular=new Color$1(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=TangentSpaceNormalMap,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=MultiplyOperation,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(et)}copy(et){return super.copy(et),this.color.copy(et.color),this.specular.copy(et.specular),this.shininess=et.shininess,this.map=et.map,this.lightMap=et.lightMap,this.lightMapIntensity=et.lightMapIntensity,this.aoMap=et.aoMap,this.aoMapIntensity=et.aoMapIntensity,this.emissive.copy(et.emissive),this.emissiveMap=et.emissiveMap,this.emissiveIntensity=et.emissiveIntensity,this.bumpMap=et.bumpMap,this.bumpScale=et.bumpScale,this.normalMap=et.normalMap,this.normalMapType=et.normalMapType,this.normalScale.copy(et.normalScale),this.displacementMap=et.displacementMap,this.displacementScale=et.displacementScale,this.displacementBias=et.displacementBias,this.specularMap=et.specularMap,this.alphaMap=et.alphaMap,this.envMap=et.envMap,this.combine=et.combine,this.reflectivity=et.reflectivity,this.refractionRatio=et.refractionRatio,this.wireframe=et.wireframe,this.wireframeLinewidth=et.wireframeLinewidth,this.wireframeLinecap=et.wireframeLinecap,this.wireframeLinejoin=et.wireframeLinejoin,this.flatShading=et.flatShading,this.fog=et.fog,this}}class MeshToonMaterial extends Material{constructor(et){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Color$1(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=TangentSpaceNormalMap,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(et)}copy(et){return super.copy(et),this.color.copy(et.color),this.map=et.map,this.gradientMap=et.gradientMap,this.lightMap=et.lightMap,this.lightMapIntensity=et.lightMapIntensity,this.aoMap=et.aoMap,this.aoMapIntensity=et.aoMapIntensity,this.emissive.copy(et.emissive),this.emissiveMap=et.emissiveMap,this.emissiveIntensity=et.emissiveIntensity,this.bumpMap=et.bumpMap,this.bumpScale=et.bumpScale,this.normalMap=et.normalMap,this.normalMapType=et.normalMapType,this.normalScale.copy(et.normalScale),this.displacementMap=et.displacementMap,this.displacementScale=et.displacementScale,this.displacementBias=et.displacementBias,this.alphaMap=et.alphaMap,this.wireframe=et.wireframe,this.wireframeLinewidth=et.wireframeLinewidth,this.wireframeLinecap=et.wireframeLinecap,this.wireframeLinejoin=et.wireframeLinejoin,this.fog=et.fog,this}}class MeshNormalMaterial extends Material{constructor(et){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=TangentSpaceNormalMap,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(et)}copy(et){return super.copy(et),this.bumpMap=et.bumpMap,this.bumpScale=et.bumpScale,this.normalMap=et.normalMap,this.normalMapType=et.normalMapType,this.normalScale.copy(et.normalScale),this.displacementMap=et.displacementMap,this.displacementScale=et.displacementScale,this.displacementBias=et.displacementBias,this.wireframe=et.wireframe,this.wireframeLinewidth=et.wireframeLinewidth,this.flatShading=et.flatShading,this}}class MeshLambertMaterial extends Material{constructor(et){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Color$1(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=MultiplyOperation,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(et)}copy(et){return super.copy(et),this.color.copy(et.color),this.map=et.map,this.lightMap=et.lightMap,this.lightMapIntensity=et.lightMapIntensity,this.aoMap=et.aoMap,this.aoMapIntensity=et.aoMapIntensity,this.emissive.copy(et.emissive),this.emissiveMap=et.emissiveMap,this.emissiveIntensity=et.emissiveIntensity,this.specularMap=et.specularMap,this.alphaMap=et.alphaMap,this.envMap=et.envMap,this.combine=et.combine,this.reflectivity=et.reflectivity,this.refractionRatio=et.refractionRatio,this.wireframe=et.wireframe,this.wireframeLinewidth=et.wireframeLinewidth,this.wireframeLinecap=et.wireframeLinecap,this.wireframeLinejoin=et.wireframeLinejoin,this.fog=et.fog,this}}class MeshMatcapMaterial extends Material{constructor(et){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Color$1(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=TangentSpaceNormalMap,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(et)}copy(et){return super.copy(et),this.defines={MATCAP:""},this.color.copy(et.color),this.matcap=et.matcap,this.map=et.map,this.bumpMap=et.bumpMap,this.bumpScale=et.bumpScale,this.normalMap=et.normalMap,this.normalMapType=et.normalMapType,this.normalScale.copy(et.normalScale),this.displacementMap=et.displacementMap,this.displacementScale=et.displacementScale,this.displacementBias=et.displacementBias,this.alphaMap=et.alphaMap,this.flatShading=et.flatShading,this.fog=et.fog,this}}class LineDashedMaterial extends LineBasicMaterial{constructor(et){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(et)}copy(et){return super.copy(et),this.scale=et.scale,this.dashSize=et.dashSize,this.gapSize=et.gapSize,this}}function arraySlice(tt,et,nt){return isTypedArray$2(tt)?new tt.constructor(tt.subarray(et,nt!==void 0?nt:tt.length)):tt.slice(et,nt)}function convertArray(tt,et,nt){return!tt||!nt&&tt.constructor===et?tt:typeof et.BYTES_PER_ELEMENT=="number"?new et(tt):Array.prototype.slice.call(tt)}function isTypedArray$2(tt){return ArrayBuffer.isView(tt)&&!(tt instanceof DataView)}function getKeyframeOrder(tt){function et(it,ot){return tt[it]-tt[ot]}const nt=tt.length,rt=new Array(nt);for(let it=0;it!==nt;++it)rt[it]=it;return rt.sort(et),rt}function sortedArray(tt,et,nt){const rt=tt.length,it=new tt.constructor(rt);for(let ot=0,at=0;at!==rt;++ot){const st=nt[ot]*et;for(let lt=0;lt!==et;++lt)it[at++]=tt[st+lt]}return it}function flattenJSON(tt,et,nt,rt){let it=1,ot=tt[0];for(;ot!==void 0&&ot[rt]===void 0;)ot=tt[it++];if(ot===void 0)return;let at=ot[rt];if(at!==void 0)if(Array.isArray(at))do at=ot[rt],at!==void 0&&(et.push(ot.time),nt.push.apply(nt,at)),ot=tt[it++];while(ot!==void 0);else if(at.toArray!==void 0)do at=ot[rt],at!==void 0&&(et.push(ot.time),at.toArray(nt,nt.length)),ot=tt[it++];while(ot!==void 0);else do at=ot[rt],at!==void 0&&(et.push(ot.time),nt.push(at)),ot=tt[it++];while(ot!==void 0)}function subclip(tt,et,nt,rt,it=30){const ot=tt.clone();ot.name=et;const at=[];for(let lt=0;lt=rt)){ht.push(ct.times[pt]);for(let gt=0;gtot.tracks[lt].times[0]&&(st=ot.tracks[lt].times[0]);for(let lt=0;lt=st.times[mt]){const bt=mt*ht+ut,vt=bt+ht-ut;gt=arraySlice(st.values,bt,vt)}else{const bt=st.createInterpolant(),vt=ut,xt=ht-ut;bt.evaluate(ot),gt=arraySlice(bt.resultBuffer,vt,xt)}lt==="quaternion"&&new Quaternion().fromArray(gt).normalize().conjugate().toArray(gt);const yt=ct.times.length;for(let bt=0;bt=ot)){const st=nt[1];et=ot)break t}at=rt,rt=0;break n}break e}for(;rt>>1;etnt;)--at;if(++at,ot!==0||at!==it){ot>=at&&(at=Math.max(at,1),ot=at-1);const st=this.getValueSize();this.times=arraySlice(rt,ot,at),this.values=arraySlice(this.values,ot*st,at*st)}return this}validate(){let et=!0;const nt=this.getValueSize();nt-Math.floor(nt)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),et=!1);const rt=this.times,it=this.values,ot=rt.length;ot===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),et=!1);let at=null;for(let st=0;st!==ot;st++){const lt=rt[st];if(typeof lt=="number"&&isNaN(lt)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,st,lt),et=!1;break}if(at!==null&&at>lt){console.error("THREE.KeyframeTrack: Out of order keys.",this,st,lt,at),et=!1;break}at=lt}if(it!==void 0&&isTypedArray$2(it))for(let st=0,lt=it.length;st!==lt;++st){const ct=it[st];if(isNaN(ct)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,st,ct),et=!1;break}}return et}optimize(){const et=arraySlice(this.times),nt=arraySlice(this.values),rt=this.getValueSize(),it=this.getInterpolation()===InterpolateSmooth,ot=et.length-1;let at=1;for(let st=1;st0){et[at]=et[ot];for(let st=ot*rt,lt=at*rt,ct=0;ct!==rt;++ct)nt[lt+ct]=nt[st+ct];++at}return at!==et.length?(this.times=arraySlice(et,0,at),this.values=arraySlice(nt,0,at*rt)):(this.times=et,this.values=nt),this}clone(){const et=arraySlice(this.times,0),nt=arraySlice(this.values,0),rt=this.constructor,it=new rt(this.name,et,nt);return it.createInterpolant=this.createInterpolant,it}}KeyframeTrack.prototype.TimeBufferType=Float32Array;KeyframeTrack.prototype.ValueBufferType=Float32Array;KeyframeTrack.prototype.DefaultInterpolation=InterpolateLinear;class BooleanKeyframeTrack extends KeyframeTrack{}BooleanKeyframeTrack.prototype.ValueTypeName="bool";BooleanKeyframeTrack.prototype.ValueBufferType=Array;BooleanKeyframeTrack.prototype.DefaultInterpolation=InterpolateDiscrete;BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear=void 0;BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class ColorKeyframeTrack extends KeyframeTrack{}ColorKeyframeTrack.prototype.ValueTypeName="color";class NumberKeyframeTrack extends KeyframeTrack{}NumberKeyframeTrack.prototype.ValueTypeName="number";class QuaternionLinearInterpolant extends Interpolant{constructor(et,nt,rt,it){super(et,nt,rt,it)}interpolate_(et,nt,rt,it){const ot=this.resultBuffer,at=this.sampleValues,st=this.valueSize,lt=(rt-nt)/(it-nt);let ct=et*st;for(let ut=ct+st;ct!==ut;ct+=4)Quaternion.slerpFlat(ot,0,at,ct-st,at,ct,lt);return ot}}class QuaternionKeyframeTrack extends KeyframeTrack{InterpolantFactoryMethodLinear(et){return new QuaternionLinearInterpolant(this.times,this.values,this.getValueSize(),et)}}QuaternionKeyframeTrack.prototype.ValueTypeName="quaternion";QuaternionKeyframeTrack.prototype.DefaultInterpolation=InterpolateLinear;QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class StringKeyframeTrack extends KeyframeTrack{}StringKeyframeTrack.prototype.ValueTypeName="string";StringKeyframeTrack.prototype.ValueBufferType=Array;StringKeyframeTrack.prototype.DefaultInterpolation=InterpolateDiscrete;StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear=void 0;StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class VectorKeyframeTrack extends KeyframeTrack{}VectorKeyframeTrack.prototype.ValueTypeName="vector";class AnimationClip{constructor(et,nt=-1,rt,it=NormalAnimationBlendMode){this.name=et,this.tracks=rt,this.duration=nt,this.blendMode=it,this.uuid=generateUUID$1(),this.duration<0&&this.resetDuration()}static parse(et){const nt=[],rt=et.tracks,it=1/(et.fps||1);for(let at=0,st=rt.length;at!==st;++at)nt.push(parseKeyframeTrack(rt[at]).scale(it));const ot=new this(et.name,et.duration,nt,et.blendMode);return ot.uuid=et.uuid,ot}static toJSON(et){const nt=[],rt=et.tracks,it={name:et.name,duration:et.duration,tracks:nt,uuid:et.uuid,blendMode:et.blendMode};for(let ot=0,at=rt.length;ot!==at;++ot)nt.push(KeyframeTrack.toJSON(rt[ot]));return it}static CreateFromMorphTargetSequence(et,nt,rt,it){const ot=nt.length,at=[];for(let st=0;st1){const ht=ut[1];let dt=it[ht];dt||(it[ht]=dt=[]),dt.push(ct)}}const at=[];for(const st in it)at.push(this.CreateFromMorphTargetSequence(st,it[st],nt,rt));return at}static parseAnimation(et,nt){if(!et)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const rt=function(ht,dt,pt,mt,gt){if(pt.length!==0){const yt=[],bt=[];flattenJSON(pt,yt,bt,mt),yt.length!==0&>.push(new ht(dt,yt,bt))}},it=[],ot=et.name||"default",at=et.fps||30,st=et.blendMode;let lt=et.length||-1;const ct=et.hierarchy||[];for(let ht=0;ht{nt&&nt(ot),this.manager.itemEnd(et)},0),ot;if(loading[et]!==void 0){loading[et].push({onLoad:nt,onProgress:rt,onError:it});return}loading[et]=[],loading[et].push({onLoad:nt,onProgress:rt,onError:it});const at=new Request(et,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),st=this.mimeType,lt=this.responseType;fetch(at).then(ct=>{if(ct.status===200||ct.status===0){if(ct.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||ct.body===void 0||ct.body.getReader===void 0)return ct;const ut=loading[et],ht=ct.body.getReader(),dt=ct.headers.get("Content-Length"),pt=dt?parseInt(dt):0,mt=pt!==0;let gt=0;const yt=new ReadableStream({start(bt){vt();function vt(){ht.read().then(({done:xt,value:kt})=>{if(xt)bt.close();else{gt+=kt.byteLength;const St=new ProgressEvent("progress",{lengthComputable:mt,loaded:gt,total:pt});for(let Tt=0,At=ut.length;Tt{switch(lt){case"arraybuffer":return ct.arrayBuffer();case"blob":return ct.blob();case"document":return ct.text().then(ut=>new DOMParser().parseFromString(ut,st));case"json":return ct.json();default:if(st===void 0)return ct.text();{const ht=/charset="?([^;"\s]*)"?/i.exec(st),dt=ht&&ht[1]?ht[1].toLowerCase():void 0,pt=new TextDecoder(dt);return ct.arrayBuffer().then(mt=>pt.decode(mt))}}}).then(ct=>{Cache.add(et,ct);const ut=loading[et];delete loading[et];for(let ht=0,dt=ut.length;ht{const ut=loading[et];if(ut===void 0)throw this.manager.itemError(et),ct;delete loading[et];for(let ht=0,dt=ut.length;ht{this.manager.itemEnd(et)}),this.manager.itemStart(et)}setResponseType(et){return this.responseType=et,this}setMimeType(et){return this.mimeType=et,this}}class AnimationLoader extends Loader$2{constructor(et){super(et)}load(et,nt,rt,it){const ot=this,at=new FileLoader(this.manager);at.setPath(this.path),at.setRequestHeader(this.requestHeader),at.setWithCredentials(this.withCredentials),at.load(et,function(st){try{nt(ot.parse(JSON.parse(st)))}catch(lt){it?it(lt):console.error(lt),ot.manager.itemError(et)}},rt,it)}parse(et){const nt=[];for(let rt=0;rt0:it.vertexColors=et.vertexColors),et.uniforms!==void 0)for(const ot in et.uniforms){const at=et.uniforms[ot];switch(it.uniforms[ot]={},at.type){case"t":it.uniforms[ot].value=rt(at.value);break;case"c":it.uniforms[ot].value=new Color$1().setHex(at.value);break;case"v2":it.uniforms[ot].value=new Vector2().fromArray(at.value);break;case"v3":it.uniforms[ot].value=new Vector3().fromArray(at.value);break;case"v4":it.uniforms[ot].value=new Vector4().fromArray(at.value);break;case"m3":it.uniforms[ot].value=new Matrix3().fromArray(at.value);break;case"m4":it.uniforms[ot].value=new Matrix4().fromArray(at.value);break;default:it.uniforms[ot].value=at.value}}if(et.defines!==void 0&&(it.defines=et.defines),et.vertexShader!==void 0&&(it.vertexShader=et.vertexShader),et.fragmentShader!==void 0&&(it.fragmentShader=et.fragmentShader),et.extensions!==void 0)for(const ot in et.extensions)it.extensions[ot]=et.extensions[ot];if(et.shading!==void 0&&(it.flatShading=et.shading===1),et.size!==void 0&&(it.size=et.size),et.sizeAttenuation!==void 0&&(it.sizeAttenuation=et.sizeAttenuation),et.map!==void 0&&(it.map=rt(et.map)),et.matcap!==void 0&&(it.matcap=rt(et.matcap)),et.alphaMap!==void 0&&(it.alphaMap=rt(et.alphaMap)),et.bumpMap!==void 0&&(it.bumpMap=rt(et.bumpMap)),et.bumpScale!==void 0&&(it.bumpScale=et.bumpScale),et.normalMap!==void 0&&(it.normalMap=rt(et.normalMap)),et.normalMapType!==void 0&&(it.normalMapType=et.normalMapType),et.normalScale!==void 0){let ot=et.normalScale;Array.isArray(ot)===!1&&(ot=[ot,ot]),it.normalScale=new Vector2().fromArray(ot)}return et.displacementMap!==void 0&&(it.displacementMap=rt(et.displacementMap)),et.displacementScale!==void 0&&(it.displacementScale=et.displacementScale),et.displacementBias!==void 0&&(it.displacementBias=et.displacementBias),et.roughnessMap!==void 0&&(it.roughnessMap=rt(et.roughnessMap)),et.metalnessMap!==void 0&&(it.metalnessMap=rt(et.metalnessMap)),et.emissiveMap!==void 0&&(it.emissiveMap=rt(et.emissiveMap)),et.emissiveIntensity!==void 0&&(it.emissiveIntensity=et.emissiveIntensity),et.specularMap!==void 0&&(it.specularMap=rt(et.specularMap)),et.specularIntensityMap!==void 0&&(it.specularIntensityMap=rt(et.specularIntensityMap)),et.specularColorMap!==void 0&&(it.specularColorMap=rt(et.specularColorMap)),et.envMap!==void 0&&(it.envMap=rt(et.envMap)),et.envMapIntensity!==void 0&&(it.envMapIntensity=et.envMapIntensity),et.reflectivity!==void 0&&(it.reflectivity=et.reflectivity),et.refractionRatio!==void 0&&(it.refractionRatio=et.refractionRatio),et.lightMap!==void 0&&(it.lightMap=rt(et.lightMap)),et.lightMapIntensity!==void 0&&(it.lightMapIntensity=et.lightMapIntensity),et.aoMap!==void 0&&(it.aoMap=rt(et.aoMap)),et.aoMapIntensity!==void 0&&(it.aoMapIntensity=et.aoMapIntensity),et.gradientMap!==void 0&&(it.gradientMap=rt(et.gradientMap)),et.clearcoatMap!==void 0&&(it.clearcoatMap=rt(et.clearcoatMap)),et.clearcoatRoughnessMap!==void 0&&(it.clearcoatRoughnessMap=rt(et.clearcoatRoughnessMap)),et.clearcoatNormalMap!==void 0&&(it.clearcoatNormalMap=rt(et.clearcoatNormalMap)),et.clearcoatNormalScale!==void 0&&(it.clearcoatNormalScale=new Vector2().fromArray(et.clearcoatNormalScale)),et.iridescenceMap!==void 0&&(it.iridescenceMap=rt(et.iridescenceMap)),et.iridescenceThicknessMap!==void 0&&(it.iridescenceThicknessMap=rt(et.iridescenceThicknessMap)),et.transmissionMap!==void 0&&(it.transmissionMap=rt(et.transmissionMap)),et.thicknessMap!==void 0&&(it.thicknessMap=rt(et.thicknessMap)),et.sheenColorMap!==void 0&&(it.sheenColorMap=rt(et.sheenColorMap)),et.sheenRoughnessMap!==void 0&&(it.sheenRoughnessMap=rt(et.sheenRoughnessMap)),it}setTextures(et){return this.textures=et,this}static createMaterialFromType(et){const nt={ShadowMaterial,SpriteMaterial,RawShaderMaterial,ShaderMaterial,PointsMaterial,MeshPhysicalMaterial,MeshStandardMaterial,MeshPhongMaterial,MeshToonMaterial,MeshNormalMaterial,MeshLambertMaterial,MeshDepthMaterial,MeshDistanceMaterial,MeshBasicMaterial,MeshMatcapMaterial,LineDashedMaterial,LineBasicMaterial,Material};return new nt[et]}}class LoaderUtils{static decodeText(et){if(typeof TextDecoder<"u")return new TextDecoder().decode(et);let nt="";for(let rt=0,it=et.length;rt0){const lt=new LoadingManager(nt);ot=new ImageLoader(lt),ot.setCrossOrigin(this.crossOrigin);for(let ct=0,ut=et.length;ct0){it=new ImageLoader(this.manager),it.setCrossOrigin(this.crossOrigin);for(let at=0,st=et.length;at"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(et){return this.options=et,this}load(et,nt,rt,it){et===void 0&&(et=""),this.path!==void 0&&(et=this.path+et),et=this.manager.resolveURL(et);const ot=this,at=Cache.get(et);if(at!==void 0)return ot.manager.itemStart(et),setTimeout(function(){nt&&nt(at),ot.manager.itemEnd(et)},0),at;const st={};st.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",st.headers=this.requestHeader,fetch(et,st).then(function(lt){return lt.blob()}).then(function(lt){return createImageBitmap(lt,Object.assign(ot.options,{colorSpaceConversion:"none"}))}).then(function(lt){Cache.add(et,lt),nt&&nt(lt),ot.manager.itemEnd(et)}).catch(function(lt){it&&it(lt),ot.manager.itemError(et),ot.manager.itemEnd(et)}),ot.manager.itemStart(et)}}let _context$1;const AudioContext={getContext:function(){return _context$1===void 0&&(_context$1=new(window.AudioContext||window.webkitAudioContext)),_context$1},setContext:function(tt){_context$1=tt}};class AudioLoader extends Loader$2{constructor(et){super(et)}load(et,nt,rt,it){const ot=this,at=new FileLoader(this.manager);at.setResponseType("arraybuffer"),at.setPath(this.path),at.setRequestHeader(this.requestHeader),at.setWithCredentials(this.withCredentials),at.load(et,function(st){try{const lt=st.slice(0);AudioContext.getContext().decodeAudioData(lt,function(ut){nt(ut)})}catch(lt){it?it(lt):console.error(lt),ot.manager.itemError(et)}},rt,it)}}class HemisphereLightProbe extends LightProbe{constructor(et,nt,rt=1){super(void 0,rt),this.isHemisphereLightProbe=!0;const it=new Color$1().set(et),ot=new Color$1().set(nt),at=new Vector3(it.r,it.g,it.b),st=new Vector3(ot.r,ot.g,ot.b),lt=Math.sqrt(Math.PI),ct=lt*Math.sqrt(.75);this.sh.coefficients[0].copy(at).add(st).multiplyScalar(lt),this.sh.coefficients[1].copy(at).sub(st).multiplyScalar(ct)}}class AmbientLightProbe extends LightProbe{constructor(et,nt=1){super(void 0,nt),this.isAmbientLightProbe=!0;const rt=new Color$1().set(et);this.sh.coefficients[0].set(rt.r,rt.g,rt.b).multiplyScalar(2*Math.sqrt(Math.PI))}}const _eyeRight=new Matrix4,_eyeLeft=new Matrix4,_projectionMatrix=new Matrix4;class StereoCamera{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new PerspectiveCamera,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new PerspectiveCamera,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(et){const nt=this._cache;if(nt.focus!==et.focus||nt.fov!==et.fov||nt.aspect!==et.aspect*this.aspect||nt.near!==et.near||nt.far!==et.far||nt.zoom!==et.zoom||nt.eyeSep!==this.eyeSep){nt.focus=et.focus,nt.fov=et.fov,nt.aspect=et.aspect*this.aspect,nt.near=et.near,nt.far=et.far,nt.zoom=et.zoom,nt.eyeSep=this.eyeSep,_projectionMatrix.copy(et.projectionMatrix);const it=nt.eyeSep/2,ot=it*nt.near/nt.focus,at=nt.near*Math.tan(DEG2RAD$1*nt.fov*.5)/nt.zoom;let st,lt;_eyeLeft.elements[12]=-it,_eyeRight.elements[12]=it,st=-at*nt.aspect+ot,lt=at*nt.aspect+ot,_projectionMatrix.elements[0]=2*nt.near/(lt-st),_projectionMatrix.elements[8]=(lt+st)/(lt-st),this.cameraL.projectionMatrix.copy(_projectionMatrix),st=-at*nt.aspect-ot,lt=at*nt.aspect-ot,_projectionMatrix.elements[0]=2*nt.near/(lt-st),_projectionMatrix.elements[8]=(lt+st)/(lt-st),this.cameraR.projectionMatrix.copy(_projectionMatrix)}this.cameraL.matrixWorld.copy(et.matrixWorld).multiply(_eyeLeft),this.cameraR.matrixWorld.copy(et.matrixWorld).multiply(_eyeRight)}}let Clock$1=class{constructor(et=!0){this.autoStart=et,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=now$5(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let et=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const nt=now$5();et=(nt-this.oldTime)/1e3,this.oldTime=nt,this.elapsedTime+=et}return et}};function now$5(){return(typeof performance>"u"?Date:performance).now()}const _position$1=new Vector3,_quaternion$1=new Quaternion,_scale$1=new Vector3,_orientation$1=new Vector3;class AudioListener extends Object3D{constructor(){super(),this.type="AudioListener",this.context=AudioContext.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Clock$1}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(et){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=et,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(et){return this.gain.gain.setTargetAtTime(et,this.context.currentTime,.01),this}updateMatrixWorld(et){super.updateMatrixWorld(et);const nt=this.context.listener,rt=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(_position$1,_quaternion$1,_scale$1),_orientation$1.set(0,0,-1).applyQuaternion(_quaternion$1),nt.positionX){const it=this.context.currentTime+this.timeDelta;nt.positionX.linearRampToValueAtTime(_position$1.x,it),nt.positionY.linearRampToValueAtTime(_position$1.y,it),nt.positionZ.linearRampToValueAtTime(_position$1.z,it),nt.forwardX.linearRampToValueAtTime(_orientation$1.x,it),nt.forwardY.linearRampToValueAtTime(_orientation$1.y,it),nt.forwardZ.linearRampToValueAtTime(_orientation$1.z,it),nt.upX.linearRampToValueAtTime(rt.x,it),nt.upY.linearRampToValueAtTime(rt.y,it),nt.upZ.linearRampToValueAtTime(rt.z,it)}else nt.setPosition(_position$1.x,_position$1.y,_position$1.z),nt.setOrientation(_orientation$1.x,_orientation$1.y,_orientation$1.z,rt.x,rt.y,rt.z)}}let Audio$1=class extends Object3D{constructor(et){super(),this.type="Audio",this.listener=et,this.context=et.context,this.gain=this.context.createGain(),this.gain.connect(et.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(et){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=et,this.connect(),this}setMediaElementSource(et){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(et),this.connect(),this}setMediaStreamSource(et){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(et),this.connect(),this}setBuffer(et){return this.buffer=et,this.sourceType="buffer",this.autoplay&&this.play(),this}play(et=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+et;const nt=this.context.createBufferSource();return nt.buffer=this.buffer,nt.loop=this.loop,nt.loopStart=this.loopStart,nt.loopEnd=this.loopEnd,nt.onended=this.onEnded.bind(this),nt.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=nt,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let et=1,nt=this.filters.length;et0){this.source.disconnect(this.filters[0]);for(let et=1,nt=this.filters.length;et0&&this._mixBufferRegionAdditive(rt,it,this._addIndex*nt,1,nt);for(let lt=nt,ct=nt+nt;lt!==ct;++lt)if(rt[lt]!==rt[lt+nt]){st.setValue(rt,it);break}}saveOriginalState(){const et=this.binding,nt=this.buffer,rt=this.valueSize,it=rt*this._origIndex;et.getValue(nt,it);for(let ot=rt,at=it;ot!==at;++ot)nt[ot]=nt[it+ot%rt];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const et=this.valueSize*3;this.binding.setValue(this.buffer,et)}_setAdditiveIdentityNumeric(){const et=this._addIndex*this.valueSize,nt=et+this.valueSize;for(let rt=et;rt=.5)for(let at=0;at!==ot;++at)et[nt+at]=et[rt+at]}_slerp(et,nt,rt,it){Quaternion.slerpFlat(et,nt,et,nt,et,rt,it)}_slerpAdditive(et,nt,rt,it,ot){const at=this._workIndex*ot;Quaternion.multiplyQuaternionsFlat(et,at,et,nt,et,rt),Quaternion.slerpFlat(et,nt,et,nt,et,at,it)}_lerp(et,nt,rt,it,ot){const at=1-it;for(let st=0;st!==ot;++st){const lt=nt+st;et[lt]=et[lt]*at+et[rt+st]*it}}_lerpAdditive(et,nt,rt,it,ot){for(let at=0;at!==ot;++at){const st=nt+at;et[st]=et[st]+et[rt+at]*it}}}const _RESERVED_CHARS_RE="\\[\\]\\.:\\/",_reservedRe=new RegExp("["+_RESERVED_CHARS_RE+"]","g"),_wordChar="[^"+_RESERVED_CHARS_RE+"]",_wordCharOrDot="[^"+_RESERVED_CHARS_RE.replace("\\.","")+"]",_directoryRe=/((?:WC+[\/:])*)/.source.replace("WC",_wordChar),_nodeRe=/(WCOD+)?/.source.replace("WCOD",_wordCharOrDot),_objectRe=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",_wordChar),_propertyRe=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",_wordChar),_trackRe=new RegExp("^"+_directoryRe+_nodeRe+_objectRe+_propertyRe+"$"),_supportedObjectNames=["material","materials","bones"];class Composite{constructor(et,nt,rt){const it=rt||PropertyBinding.parseTrackName(nt);this._targetGroup=et,this._bindings=et.subscribe_(nt,it)}getValue(et,nt){this.bind();const rt=this._targetGroup.nCachedObjects_,it=this._bindings[rt];it!==void 0&&it.getValue(et,nt)}setValue(et,nt){const rt=this._bindings;for(let it=this._targetGroup.nCachedObjects_,ot=rt.length;it!==ot;++it)rt[it].setValue(et,nt)}bind(){const et=this._bindings;for(let nt=this._targetGroup.nCachedObjects_,rt=et.length;nt!==rt;++nt)et[nt].bind()}unbind(){const et=this._bindings;for(let nt=this._targetGroup.nCachedObjects_,rt=et.length;nt!==rt;++nt)et[nt].unbind()}}class PropertyBinding{constructor(et,nt,rt){this.path=nt,this.parsedPath=rt||PropertyBinding.parseTrackName(nt),this.node=PropertyBinding.findNode(et,this.parsedPath.nodeName)||et,this.rootNode=et,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(et,nt,rt){return et&&et.isAnimationObjectGroup?new PropertyBinding.Composite(et,nt,rt):new PropertyBinding(et,nt,rt)}static sanitizeNodeName(et){return et.replace(/\s/g,"_").replace(_reservedRe,"")}static parseTrackName(et){const nt=_trackRe.exec(et);if(nt===null)throw new Error("PropertyBinding: Cannot parse trackName: "+et);const rt={nodeName:nt[2],objectName:nt[3],objectIndex:nt[4],propertyName:nt[5],propertyIndex:nt[6]},it=rt.nodeName&&rt.nodeName.lastIndexOf(".");if(it!==void 0&&it!==-1){const ot=rt.nodeName.substring(it+1);_supportedObjectNames.indexOf(ot)!==-1&&(rt.nodeName=rt.nodeName.substring(0,it),rt.objectName=ot)}if(rt.propertyName===null||rt.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+et);return rt}static findNode(et,nt){if(nt===void 0||nt===""||nt==="."||nt===-1||nt===et.name||nt===et.uuid)return et;if(et.skeleton){const rt=et.skeleton.getBoneByName(nt);if(rt!==void 0)return rt}if(et.children){const rt=function(ot){for(let at=0;at=ot){const ht=ot++,dt=et[ht];nt[dt.uuid]=ut,et[ut]=dt,nt[ct]=ht,et[ht]=lt;for(let pt=0,mt=it;pt!==mt;++pt){const gt=rt[pt],yt=gt[ht],bt=gt[ut];gt[ut]=yt,gt[ht]=bt}}}this.nCachedObjects_=ot}uncache(){const et=this._objects,nt=this._indicesByUUID,rt=this._bindings,it=rt.length;let ot=this.nCachedObjects_,at=et.length;for(let st=0,lt=arguments.length;st!==lt;++st){const ct=arguments[st],ut=ct.uuid,ht=nt[ut];if(ht!==void 0)if(delete nt[ut],ht0&&(nt[pt.uuid]=ht),et[ht]=pt,et.pop();for(let mt=0,gt=it;mt!==gt;++mt){const yt=rt[mt];yt[ht]=yt[dt],yt.pop()}}}this.nCachedObjects_=ot}subscribe_(et,nt){const rt=this._bindingsIndicesByPath;let it=rt[et];const ot=this._bindings;if(it!==void 0)return ot[it];const at=this._paths,st=this._parsedPaths,lt=this._objects,ct=lt.length,ut=this.nCachedObjects_,ht=new Array(ct);it=ot.length,rt[et]=it,at.push(et),st.push(nt),ot.push(ht);for(let dt=ut,pt=lt.length;dt!==pt;++dt){const mt=lt[dt];ht[dt]=new PropertyBinding(mt,et,nt)}return ht}unsubscribe_(et){const nt=this._bindingsIndicesByPath,rt=nt[et];if(rt!==void 0){const it=this._paths,ot=this._parsedPaths,at=this._bindings,st=at.length-1,lt=at[st],ct=et[st];nt[ct]=rt,at[rt]=lt,at.pop(),ot[rt]=ot[st],ot.pop(),it[rt]=it[st],it.pop()}}}class AnimationAction{constructor(et,nt,rt=null,it=nt.blendMode){this._mixer=et,this._clip=nt,this._localRoot=rt,this.blendMode=it;const ot=nt.tracks,at=ot.length,st=new Array(at),lt={endingStart:ZeroCurvatureEnding,endingEnd:ZeroCurvatureEnding};for(let ct=0;ct!==at;++ct){const ut=ot[ct].createInterpolant(null);st[ct]=ut,ut.settings=lt}this._interpolantSettings=lt,this._interpolants=st,this._propertyBindings=new Array(at),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=LoopRepeat,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(et){return this._startTime=et,this}setLoop(et,nt){return this.loop=et,this.repetitions=nt,this}setEffectiveWeight(et){return this.weight=et,this._effectiveWeight=this.enabled?et:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(et){return this._scheduleFading(et,0,1)}fadeOut(et){return this._scheduleFading(et,1,0)}crossFadeFrom(et,nt,rt){if(et.fadeOut(nt),this.fadeIn(nt),rt){const it=this._clip.duration,ot=et._clip.duration,at=ot/it,st=it/ot;et.warp(1,at,nt),this.warp(st,1,nt)}return this}crossFadeTo(et,nt,rt){return et.crossFadeFrom(this,nt,rt)}stopFading(){const et=this._weightInterpolant;return et!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(et)),this}setEffectiveTimeScale(et){return this.timeScale=et,this._effectiveTimeScale=this.paused?0:et,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(et){return this.timeScale=this._clip.duration/et,this.stopWarping()}syncWith(et){return this.time=et.time,this.timeScale=et.timeScale,this.stopWarping()}halt(et){return this.warp(this._effectiveTimeScale,0,et)}warp(et,nt,rt){const it=this._mixer,ot=it.time,at=this.timeScale;let st=this._timeScaleInterpolant;st===null&&(st=it._lendControlInterpolant(),this._timeScaleInterpolant=st);const lt=st.parameterPositions,ct=st.sampleValues;return lt[0]=ot,lt[1]=ot+rt,ct[0]=et/at,ct[1]=nt/at,this}stopWarping(){const et=this._timeScaleInterpolant;return et!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(et)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(et,nt,rt,it){if(!this.enabled){this._updateWeight(et);return}const ot=this._startTime;if(ot!==null){const lt=(et-ot)*rt;if(lt<0||rt===0)return;this._startTime=null,nt=rt*lt}nt*=this._updateTimeScale(et);const at=this._updateTime(nt),st=this._updateWeight(et);if(st>0){const lt=this._interpolants,ct=this._propertyBindings;switch(this.blendMode){case AdditiveAnimationBlendMode:for(let ut=0,ht=lt.length;ut!==ht;++ut)lt[ut].evaluate(at),ct[ut].accumulateAdditive(st);break;case NormalAnimationBlendMode:default:for(let ut=0,ht=lt.length;ut!==ht;++ut)lt[ut].evaluate(at),ct[ut].accumulate(it,st)}}}_updateWeight(et){let nt=0;if(this.enabled){nt=this.weight;const rt=this._weightInterpolant;if(rt!==null){const it=rt.evaluate(et)[0];nt*=it,et>rt.parameterPositions[1]&&(this.stopFading(),it===0&&(this.enabled=!1))}}return this._effectiveWeight=nt,nt}_updateTimeScale(et){let nt=0;if(!this.paused){nt=this.timeScale;const rt=this._timeScaleInterpolant;if(rt!==null){const it=rt.evaluate(et)[0];nt*=it,et>rt.parameterPositions[1]&&(this.stopWarping(),nt===0?this.paused=!0:this.timeScale=nt)}}return this._effectiveTimeScale=nt,nt}_updateTime(et){const nt=this._clip.duration,rt=this.loop;let it=this.time+et,ot=this._loopCount;const at=rt===LoopPingPong;if(et===0)return ot===-1?it:at&&(ot&1)===1?nt-it:it;if(rt===LoopOnce){ot===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(it>=nt)it=nt;else if(it<0)it=0;else{this.time=it;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=it,this._mixer.dispatchEvent({type:"finished",action:this,direction:et<0?-1:1})}}else{if(ot===-1&&(et>=0?(ot=0,this._setEndings(!0,this.repetitions===0,at)):this._setEndings(this.repetitions===0,!0,at)),it>=nt||it<0){const st=Math.floor(it/nt);it-=nt*st,ot+=Math.abs(st);const lt=this.repetitions-ot;if(lt<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,it=et>0?nt:0,this.time=it,this._mixer.dispatchEvent({type:"finished",action:this,direction:et>0?1:-1});else{if(lt===1){const ct=et<0;this._setEndings(ct,!ct,at)}else this._setEndings(!1,!1,at);this._loopCount=ot,this.time=it,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:st})}}else this.time=it;if(at&&(ot&1)===1)return nt-it}return it}_setEndings(et,nt,rt){const it=this._interpolantSettings;rt?(it.endingStart=ZeroSlopeEnding,it.endingEnd=ZeroSlopeEnding):(et?it.endingStart=this.zeroSlopeAtStart?ZeroSlopeEnding:ZeroCurvatureEnding:it.endingStart=WrapAroundEnding,nt?it.endingEnd=this.zeroSlopeAtEnd?ZeroSlopeEnding:ZeroCurvatureEnding:it.endingEnd=WrapAroundEnding)}_scheduleFading(et,nt,rt){const it=this._mixer,ot=it.time;let at=this._weightInterpolant;at===null&&(at=it._lendControlInterpolant(),this._weightInterpolant=at);const st=at.parameterPositions,lt=at.sampleValues;return st[0]=ot,lt[0]=nt,st[1]=ot+et,lt[1]=rt,this}}const _controlInterpolantsResultBuffer=new Float32Array(1);class AnimationMixer extends EventDispatcher$1{constructor(et){super(),this._root=et,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(et,nt){const rt=et._localRoot||this._root,it=et._clip.tracks,ot=it.length,at=et._propertyBindings,st=et._interpolants,lt=rt.uuid,ct=this._bindingsByRootAndName;let ut=ct[lt];ut===void 0&&(ut={},ct[lt]=ut);for(let ht=0;ht!==ot;++ht){const dt=it[ht],pt=dt.name;let mt=ut[pt];if(mt!==void 0)++mt.referenceCount,at[ht]=mt;else{if(mt=at[ht],mt!==void 0){mt._cacheIndex===null&&(++mt.referenceCount,this._addInactiveBinding(mt,lt,pt));continue}const gt=nt&&nt._propertyBindings[ht].binding.parsedPath;mt=new PropertyMixer(PropertyBinding.create(rt,pt,gt),dt.ValueTypeName,dt.getValueSize()),++mt.referenceCount,this._addInactiveBinding(mt,lt,pt),at[ht]=mt}st[ht].resultBuffer=mt.buffer}}_activateAction(et){if(!this._isActiveAction(et)){if(et._cacheIndex===null){const rt=(et._localRoot||this._root).uuid,it=et._clip.uuid,ot=this._actionsByClip[it];this._bindAction(et,ot&&ot.knownActions[0]),this._addInactiveAction(et,it,rt)}const nt=et._propertyBindings;for(let rt=0,it=nt.length;rt!==it;++rt){const ot=nt[rt];ot.useCount++===0&&(this._lendBinding(ot),ot.saveOriginalState())}this._lendAction(et)}}_deactivateAction(et){if(this._isActiveAction(et)){const nt=et._propertyBindings;for(let rt=0,it=nt.length;rt!==it;++rt){const ot=nt[rt];--ot.useCount===0&&(ot.restoreOriginalState(),this._takeBackBinding(ot))}this._takeBackAction(et)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const et=this;this.stats={actions:{get total(){return et._actions.length},get inUse(){return et._nActiveActions}},bindings:{get total(){return et._bindings.length},get inUse(){return et._nActiveBindings}},controlInterpolants:{get total(){return et._controlInterpolants.length},get inUse(){return et._nActiveControlInterpolants}}}}_isActiveAction(et){const nt=et._cacheIndex;return nt!==null&&nt=0;--rt)et[rt].stop();return this}update(et){et*=this.timeScale;const nt=this._actions,rt=this._nActiveActions,it=this.time+=et,ot=Math.sign(et),at=this._accuIndex^=1;for(let ct=0;ct!==rt;++ct)nt[ct]._update(it,et,ot,at);const st=this._bindings,lt=this._nActiveBindings;for(let ct=0;ct!==lt;++ct)st[ct].apply(at);return this}setTime(et){this.time=0;for(let nt=0;ntthis.max.x||et.ythis.max.y)}containsBox(et){return this.min.x<=et.min.x&&et.max.x<=this.max.x&&this.min.y<=et.min.y&&et.max.y<=this.max.y}getParameter(et,nt){return nt.set((et.x-this.min.x)/(this.max.x-this.min.x),(et.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(et){return!(et.max.xthis.max.x||et.max.ythis.max.y)}clampPoint(et,nt){return nt.copy(et).clamp(this.min,this.max)}distanceToPoint(et){return _vector$4.copy(et).clamp(this.min,this.max).sub(et).length()}intersect(et){return this.min.max(et.min),this.max.min(et.max),this}union(et){return this.min.min(et.min),this.max.max(et.max),this}translate(et){return this.min.add(et),this.max.add(et),this}equals(et){return et.min.equals(this.min)&&et.max.equals(this.max)}}const _startP=new Vector3,_startEnd=new Vector3;class Line3{constructor(et=new Vector3,nt=new Vector3){this.start=et,this.end=nt}set(et,nt){return this.start.copy(et),this.end.copy(nt),this}copy(et){return this.start.copy(et.start),this.end.copy(et.end),this}getCenter(et){return et.addVectors(this.start,this.end).multiplyScalar(.5)}delta(et){return et.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(et,nt){return this.delta(nt).multiplyScalar(et).add(this.start)}closestPointToPointParameter(et,nt){_startP.subVectors(et,this.start),_startEnd.subVectors(this.end,this.start);const rt=_startEnd.dot(_startEnd);let ot=_startEnd.dot(_startP)/rt;return nt&&(ot=clamp$5(ot,0,1)),ot}closestPointToPoint(et,nt,rt){const it=this.closestPointToPointParameter(et,nt);return this.delta(rt).multiplyScalar(it).add(this.start)}applyMatrix4(et){return this.start.applyMatrix4(et),this.end.applyMatrix4(et),this}equals(et){return et.start.equals(this.start)&&et.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const _vector$3=new Vector3;class SpotLightHelper extends Object3D{constructor(et,nt){super(),this.light=et,this.light.updateMatrixWorld(),this.matrix=et.matrixWorld,this.matrixAutoUpdate=!1,this.color=nt;const rt=new BufferGeometry,it=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let at=0,st=1,lt=32;at.99999)this.quaternion.set(0,0,0,1);else if(et.y<-.99999)this.quaternion.set(1,0,0,0);else{_axis.set(et.z,0,-et.x).normalize();const nt=Math.acos(et.y);this.quaternion.setFromAxisAngle(_axis,nt)}}setLength(et,nt=et*.2,rt=nt*.2){this.line.scale.set(1,Math.max(1e-4,et-nt),1),this.line.updateMatrix(),this.cone.scale.set(rt,nt,rt),this.cone.position.y=et,this.cone.updateMatrix()}setColor(et){this.line.material.color.set(et),this.cone.material.color.set(et)}copy(et){return super.copy(et,!1),this.line.copy(et.line),this.cone.copy(et.cone),this}}class AxesHelper extends LineSegments{constructor(et=1){const nt=[0,0,0,et,0,0,0,0,0,0,et,0,0,0,0,0,0,et],rt=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],it=new BufferGeometry;it.setAttribute("position",new Float32BufferAttribute(nt,3)),it.setAttribute("color",new Float32BufferAttribute(rt,3));const ot=new LineBasicMaterial({vertexColors:!0,toneMapped:!1});super(it,ot),this.type="AxesHelper"}setColors(et,nt,rt){const it=new Color$1,ot=this.geometry.attributes.color.array;return it.set(et),it.toArray(ot,0),it.toArray(ot,3),it.set(nt),it.toArray(ot,6),it.toArray(ot,9),it.set(rt),it.toArray(ot,12),it.toArray(ot,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class ShapePath{constructor(){this.type="ShapePath",this.color=new Color$1,this.subPaths=[],this.currentPath=null}moveTo(et,nt){return this.currentPath=new Path$1,this.subPaths.push(this.currentPath),this.currentPath.moveTo(et,nt),this}lineTo(et,nt){return this.currentPath.lineTo(et,nt),this}quadraticCurveTo(et,nt,rt,it){return this.currentPath.quadraticCurveTo(et,nt,rt,it),this}bezierCurveTo(et,nt,rt,it,ot,at){return this.currentPath.bezierCurveTo(et,nt,rt,it,ot,at),this}splineThru(et){return this.currentPath.splineThru(et),this}toShapes(et,nt){function rt(vt){const xt=[];for(let kt=0,St=vt.length;ktNumber.EPSILON){if(jt<0&&(Et=xt[At],Dt=-Dt,$t=xt[Tt],jt=-jt),vt.y$t.y)continue;if(vt.y===Et.y){if(vt.x===Et.x)return!0}else{const Pt=jt*(vt.x-Et.x)-Dt*(vt.y-Et.y);if(Pt===0)return!0;if(Pt<0)continue;St=!St}}else{if(vt.y!==Et.y)continue;if($t.x<=vt.x&&vt.x<=Et.x||Et.x<=vt.x&&vt.x<=$t.x)return!0}}return St}const ot=ShapeUtils.isClockWise,at=this.subPaths;if(at.length===0)return[];if(nt===!0)return rt(at);let st,lt,ct;const ut=[];if(at.length===1)return lt=at[0],ct=new Shape$1,ct.curves=lt.curves,ut.push(ct),ut;let ht=!ot(at[0].getPoints());ht=et?!ht:ht;const dt=[],pt=[];let mt=[],gt=0,yt;pt[gt]=void 0,mt[gt]=[];for(let vt=0,xt=at.length;vt1){let vt=!1,xt=0;for(let kt=0,St=pt.length;kt0&&vt===!1&&(mt=dt)}let bt;for(let vt=0,xt=pt.length;vt>-ct-14,rt[lt|256]=1024>>-ct-14|32768,it[lt]=-ct-1,it[lt|256]=-ct-1):ct<=15?(rt[lt]=ct+15<<10,rt[lt|256]=ct+15<<10|32768,it[lt]=13,it[lt|256]=13):ct<128?(rt[lt]=31744,rt[lt|256]=64512,it[lt]=24,it[lt|256]=24):(rt[lt]=31744,rt[lt|256]=64512,it[lt]=13,it[lt|256]=13)}const ot=new Uint32Array(2048),at=new Uint32Array(64),st=new Uint32Array(64);for(let lt=1;lt<1024;++lt){let ct=lt<<13,ut=0;for(;!(ct&8388608);)ct<<=1,ut-=8388608;ct&=-8388609,ut+=947912704,ot[lt]=ct|ut}for(let lt=1024;lt<2048;++lt)ot[lt]=939524096+(lt-1024<<13);for(let lt=1;lt<31;++lt)at[lt]=lt<<23;at[31]=1199570944,at[32]=2147483648;for(let lt=33;lt<63;++lt)at[lt]=2147483648+(lt-32<<23);at[63]=3347054592;for(let lt=1;lt<64;++lt)lt!==32&&(st[lt]=1024);return{floatView:et,uint32View:nt,baseTable:rt,shiftTable:it,mantissaTable:ot,exponentTable:at,offsetTable:st}}function toHalfFloat(tt){Math.abs(tt)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),tt=clamp$5(tt,-65504,65504),_tables.floatView[0]=tt;const et=_tables.uint32View[0],nt=et>>23&511;return _tables.baseTable[nt]+((et&8388607)>>_tables.shiftTable[nt])}function fromHalfFloat(tt){const et=tt>>10;return _tables.uint32View[0]=_tables.mantissaTable[_tables.offsetTable[et]+(tt&1023)]+_tables.exponentTable[et],_tables.floatView[0]}var DataUtils=Object.freeze({__proto__:null,toHalfFloat,fromHalfFloat});class ParametricGeometry extends BufferGeometry{constructor(){console.error("THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js"),super()}}class TextGeometry extends BufferGeometry{constructor(){console.error("THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js"),super()}}function FontLoader(){console.error("THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js")}function Font(){console.error("THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js")}function ImmediateRenderObject(){console.error("THREE.ImmediateRenderObject has been removed.")}class WebGLMultisampleRenderTarget extends WebGLRenderTarget{constructor(et,nt,rt){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the "samples" property to greater 0 to enable multisampling.'),super(et,nt,rt),this.samples=4}}class DataTexture2DArray extends DataArrayTexture{constructor(et,nt,rt,it){console.warn("THREE.DataTexture2DArray has been renamed to DataArrayTexture."),super(et,nt,rt,it)}}class DataTexture3D extends Data3DTexture{constructor(et,nt,rt,it){console.warn("THREE.DataTexture3D has been renamed to Data3DTexture."),super(et,nt,rt,it)}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:REVISION}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=REVISION);const THREE$1=Object.freeze(Object.defineProperty({__proto__:null,ACESFilmicToneMapping,AddEquation,AddOperation,AdditiveAnimationBlendMode,AdditiveBlending,AlphaFormat,AlwaysDepth,AlwaysStencilFunc,AmbientLight,AmbientLightProbe,AnimationClip,AnimationLoader,AnimationMixer,AnimationObjectGroup,AnimationUtils,ArcCurve,ArrayCamera,ArrowHelper,Audio:Audio$1,AudioAnalyser,AudioContext,AudioListener,AudioLoader,AxesHelper,BackSide,BasicDepthPacking,BasicShadowMap,Bone,BooleanKeyframeTrack,Box2,Box3,Box3Helper,BoxBufferGeometry:BoxGeometry,BoxGeometry,BoxHelper,BufferAttribute,BufferGeometry,BufferGeometryLoader,ByteType,Cache,Camera,CameraHelper,CanvasTexture,CapsuleBufferGeometry:CapsuleGeometry,CapsuleGeometry,CatmullRomCurve3,CineonToneMapping,CircleBufferGeometry:CircleGeometry,CircleGeometry,ClampToEdgeWrapping,Clock:Clock$1,Color:Color$1,ColorKeyframeTrack,ColorManagement,CompressedTexture,CompressedTextureLoader,ConeBufferGeometry:ConeGeometry,ConeGeometry,CubeCamera,CubeReflectionMapping,CubeRefractionMapping,CubeTexture,CubeTextureLoader,CubeUVReflectionMapping,CubicBezierCurve,CubicBezierCurve3,CubicInterpolant,CullFaceBack,CullFaceFront,CullFaceFrontBack,CullFaceNone,Curve:Curve$1,CurvePath,CustomBlending,CustomToneMapping,CylinderBufferGeometry:CylinderGeometry,CylinderGeometry,Cylindrical,Data3DTexture,DataArrayTexture,DataTexture,DataTexture2DArray,DataTexture3D,DataTextureLoader,DataUtils,DecrementStencilOp,DecrementWrapStencilOp,DefaultLoadingManager,DepthFormat,DepthStencilFormat,DepthTexture,DirectionalLight,DirectionalLightHelper,DiscreteInterpolant,DodecahedronBufferGeometry:DodecahedronGeometry,DodecahedronGeometry,DoubleSide,DstAlphaFactor,DstColorFactor,DynamicCopyUsage,DynamicDrawUsage,DynamicReadUsage,EdgesGeometry,EllipseCurve,EqualDepth,EqualStencilFunc,EquirectangularReflectionMapping,EquirectangularRefractionMapping,Euler,EventDispatcher:EventDispatcher$1,ExtrudeBufferGeometry:ExtrudeGeometry,ExtrudeGeometry,FileLoader,FlatShading,Float16BufferAttribute,Float32BufferAttribute,Float64BufferAttribute,FloatType,Fog,FogExp2,Font,FontLoader,FramebufferTexture,FrontSide,Frustum,GLBufferAttribute,GLSL1,GLSL3,GreaterDepth,GreaterEqualDepth,GreaterEqualStencilFunc,GreaterStencilFunc,GridHelper,Group,HalfFloatType,HemisphereLight,HemisphereLightHelper,HemisphereLightProbe,IcosahedronBufferGeometry:IcosahedronGeometry,IcosahedronGeometry,ImageBitmapLoader,ImageLoader,ImageUtils,ImmediateRenderObject,IncrementStencilOp,IncrementWrapStencilOp,InstancedBufferAttribute,InstancedBufferGeometry,InstancedInterleavedBuffer,InstancedMesh,Int16BufferAttribute,Int32BufferAttribute,Int8BufferAttribute,IntType,InterleavedBuffer,InterleavedBufferAttribute,Interpolant,InterpolateDiscrete,InterpolateLinear,InterpolateSmooth,InvertStencilOp,KeepStencilOp,KeyframeTrack,LOD,LatheBufferGeometry:LatheGeometry,LatheGeometry,Layers,LessDepth,LessEqualDepth,LessEqualStencilFunc,LessStencilFunc,Light,LightProbe,Line:Line$2,Line3,LineBasicMaterial,LineCurve,LineCurve3,LineDashedMaterial,LineLoop,LineSegments,LinearEncoding,LinearFilter,LinearInterpolant,LinearMipMapLinearFilter,LinearMipMapNearestFilter,LinearMipmapLinearFilter,LinearMipmapNearestFilter,LinearSRGBColorSpace:LinearSRGBColorSpace$1,LinearToneMapping,Loader:Loader$2,LoaderUtils,LoadingManager,LoopOnce,LoopPingPong,LoopRepeat,LuminanceAlphaFormat,LuminanceFormat,MOUSE,Material,MaterialLoader,MathUtils,Matrix3,Matrix4,MaxEquation,Mesh,MeshBasicMaterial,MeshDepthMaterial,MeshDistanceMaterial,MeshLambertMaterial,MeshMatcapMaterial,MeshNormalMaterial,MeshPhongMaterial,MeshPhysicalMaterial,MeshStandardMaterial,MeshToonMaterial,MinEquation,MirroredRepeatWrapping,MixOperation,MultiplyBlending,MultiplyOperation,NearestFilter,NearestMipMapLinearFilter,NearestMipMapNearestFilter,NearestMipmapLinearFilter,NearestMipmapNearestFilter,NeverDepth,NeverStencilFunc,NoBlending,NoColorSpace:NoColorSpace$1,NoToneMapping,NormalAnimationBlendMode,NormalBlending,NotEqualDepth,NotEqualStencilFunc,NumberKeyframeTrack,Object3D,ObjectLoader,ObjectSpaceNormalMap,OctahedronBufferGeometry:OctahedronGeometry,OctahedronGeometry,OneFactor,OneMinusDstAlphaFactor,OneMinusDstColorFactor,OneMinusSrcAlphaFactor,OneMinusSrcColorFactor,OrthographicCamera,PCFShadowMap,PCFSoftShadowMap,PMREMGenerator,ParametricGeometry,Path:Path$1,PerspectiveCamera,Plane,PlaneBufferGeometry:PlaneGeometry,PlaneGeometry,PlaneHelper,PointLight,PointLightHelper,Points,PointsMaterial,PolarGridHelper,PolyhedronBufferGeometry:PolyhedronGeometry,PolyhedronGeometry,PositionalAudio,PropertyBinding,PropertyMixer,QuadraticBezierCurve,QuadraticBezierCurve3,Quaternion,QuaternionKeyframeTrack,QuaternionLinearInterpolant,REVISION,RGBADepthPacking,RGBAFormat,RGBAIntegerFormat,RGBA_ASTC_10x10_Format,RGBA_ASTC_10x5_Format,RGBA_ASTC_10x6_Format,RGBA_ASTC_10x8_Format,RGBA_ASTC_12x10_Format,RGBA_ASTC_12x12_Format,RGBA_ASTC_4x4_Format,RGBA_ASTC_5x4_Format,RGBA_ASTC_5x5_Format,RGBA_ASTC_6x5_Format,RGBA_ASTC_6x6_Format,RGBA_ASTC_8x5_Format,RGBA_ASTC_8x6_Format,RGBA_ASTC_8x8_Format,RGBA_BPTC_Format,RGBA_ETC2_EAC_Format,RGBA_PVRTC_2BPPV1_Format,RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format,RGBA_S3TC_DXT3_Format,RGBA_S3TC_DXT5_Format,RGBFormat,RGB_ETC1_Format,RGB_ETC2_Format,RGB_PVRTC_2BPPV1_Format,RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format,RGFormat,RGIntegerFormat,RawShaderMaterial,Ray,Raycaster,RectAreaLight,RedFormat,RedIntegerFormat,ReinhardToneMapping,RepeatWrapping,ReplaceStencilOp,ReverseSubtractEquation,RingBufferGeometry:RingGeometry,RingGeometry,SRGBColorSpace:SRGBColorSpace$1,Scene,ShaderChunk,ShaderLib,ShaderMaterial,ShadowMaterial,Shape:Shape$1,ShapeBufferGeometry:ShapeGeometry,ShapeGeometry,ShapePath,ShapeUtils,ShortType,Skeleton,SkeletonHelper,SkinnedMesh,SmoothShading,Source:Source$1,Sphere,SphereBufferGeometry:SphereGeometry,SphereGeometry,Spherical,SphericalHarmonics3,SplineCurve,SpotLight,SpotLightHelper,Sprite,SpriteMaterial,SrcAlphaFactor,SrcAlphaSaturateFactor,SrcColorFactor,StaticCopyUsage,StaticDrawUsage,StaticReadUsage,StereoCamera,StreamCopyUsage,StreamDrawUsage,StreamReadUsage,StringKeyframeTrack,SubtractEquation,SubtractiveBlending,TOUCH,TangentSpaceNormalMap,TetrahedronBufferGeometry:TetrahedronGeometry,TetrahedronGeometry,TextGeometry,Texture,TextureLoader,TorusBufferGeometry:TorusGeometry,TorusGeometry,TorusKnotBufferGeometry:TorusKnotGeometry,TorusKnotGeometry,Triangle,TriangleFanDrawMode,TriangleStripDrawMode,TrianglesDrawMode,TubeBufferGeometry:TubeGeometry,TubeGeometry,UVMapping,Uint16BufferAttribute,Uint32BufferAttribute,Uint8BufferAttribute,Uint8ClampedBufferAttribute,Uniform,UniformsGroup,UniformsLib,UniformsUtils,UnsignedByteType,UnsignedInt248Type,UnsignedIntType,UnsignedShort4444Type,UnsignedShort5551Type,UnsignedShortType,VSMShadowMap,Vector2,Vector3,Vector4,VectorKeyframeTrack,VideoTexture,WebGL1Renderer,WebGL3DRenderTarget,WebGLArrayRenderTarget,WebGLCubeRenderTarget,WebGLMultipleRenderTargets,WebGLMultisampleRenderTarget,WebGLRenderTarget,WebGLRenderer,WebGLUtils,WireframeGeometry,WrapAroundEnding,ZeroCurvatureEnding,ZeroFactor,ZeroSlopeEnding,ZeroStencilOp,_SRGBAFormat,sRGBEncoding},Symbol.toStringTag,{value:"Module"})),variableVector3$1=new Vector3(0,0,0),outlineEffectColor=16777215,maxChildrenDisplayed=20,nodesAreRelatives=(tt,et)=>{var ot,at;if(!(tt!=null&&tt.ref_id)||!(et!=null&&et.ref_id))return!1;let nt=!1;const rt=tt.guests,it=et.guests;return((ot=tt.children)!=null&&ot.includes(et.ref_id)||(at=et.children)!=null&&at.includes(tt.ref_id))&&(nt=!0),(rt!=null&&rt.find(st=>st.ref_id===et.ref_id)||it!=null&&it.find(st=>st.ref_id===tt.ref_id))&&(nt=!0),nt},mock={exact:[{boost:0,date:1672152975,description:"The credit card debt and job growth in the US economy",episode_title:"Café ₿: #Bitcoin Holiday Hangout & @StatusMoneyUSA a #BTC Credit Card",guests:[{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"a3dbdb56-e228-4382-98bc-d4495ff6dfbd",twitter_handle:"samcallah"},{name:" taodejing2",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"4914799b-a230-4bee-95c9-cf3ac44b6b70",twitter_handle:"TyonClubhouse"},{name:" MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1607490976670519296/vhLAojMR_400x400.jpg",ref_id:"01d6ee68-c0ef-4ead-b2b7-7eb04694519e",twitter_handle:"MrHodl"},{name:" TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"57beb381-b9e8-4dd1-82f6-4e544a63146b",twitter_handle:"TomerStrolight"},{name:" VailshireCap",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"73c15965-ddad-4e32-9746-da92f5d24134",twitter_handle:"VailshireCap"},{name:"bergealex4",profile_picture:"https://pbs.twimg.com/profile_images/1273374628577247233/tYigkAZH_400x400.jpg",ref_id:"da4bb8ab-540d-4f88-a2a6-f3a3941c5b74",twitter_handle:"bergealex4"},{name:" LukeMikic21",profile_picture:"https://pbs.twimg.com/profile_images/1604626418708742147/gWyVLeqa_400x400.jpg",ref_id:"0a907108-f59f-420f-9986-79b0f060f690",twitter_handle:"LukeMikic21"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" majdmaksad",profile_picture:"https://pbs.twimg.com/profile_images/1483883774471516167/zvEjiCTO_400x400.jpg",ref_id:"1a63c59d-a760-4f8b-bba9-ddfd3cff9f33",twitter_handle:"majdmaksad"}],hosts:[{name:" PeterAnsel9",profile_picture:"https://pbs.twimg.com/profile_images/1607979298153197568/JqAbDyi__400x400.jpg",ref_id:"6cb2b160-fa27-4fac-9ccf-77886ba01521",twitter_handle:"PeterAnsel9"},{name:" NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"c61e3ff9-f540-4343-bc26-1c3a4b537b78",twitter_handle:"NeilJacobs"},{name:" nathanfast",profile_picture:"https://pbs.twimg.com/profile_images/1545758157103697920/RyLn465N_400x400.jpg",ref_id:"739d907e-cbc6-4a05-9246-45c7c5d2a853",twitter_handle:"nathanfast"},{name:"TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"cc057990-16d0-4588-83c7-1eb9734eb994",twitter_handle:"tyonclubhouse"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b27dcf88-bdfb-4433-b0fe-c9040dbf392f/11aa5648-d416-46f3-a66a-0750e9d71ccd.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"ada07186-c3fc-4b5e-b9c7-3ce54e1b94c7",show_title:"Swan.com",text:"I do want to ask you quickly about, you mentioned the credit card debt that is soaring and savings rates going down. It is a small percentage of the overall kind of US household net worth, which I believe is about well over 100 trillion, maybe 140,000,000,000,000. When housing prices were high. But it does seem like this 1 trillion or whatever of credit card debt, while it's serious, is still a fairly small percentage of overall US. Household net worth. And I was wondering if you could comment on that. Yeah, that's a great point, Terrence. And you got to think in terms of the strata of economics, right? So people who are generally wealthy and then sort of the middle class, which has been decimated, and then the poorer classes, this is obviously affecting really harshly the poorer classes, right. Inflation just crushes people in the lower classes, financially speaking. They have minimum wage jobs. We've talked about this many times on here, but you cannot survive on one minimum wage job. So maybe they have two or three. And then as the economy tightens, they're starting to get fired from some of these. The cost of goods and services is rapidly increasing. So they can't even afford their basic groceries. They may not be able to afford gas to drive to work. All of these things, they just get worse and worse. So it does affect the lower economic classes. Disproportionately that's what drives me nuts, right. That's what makes Bitcoin so beautiful, is those are the same classes who can benefit most strongly from Bitcoin, from a fair type of money instead of the unjust system that we have. So, yeah, it's affecting them. Now. I will say, though, that the wealth effect is real, too, and that affects the upper classes. Disproportionately why? Because wealthier people own more assets, right? They own houses, they own stocks, they own bonds, they own art, they own whatever. And the valuations of those kind of things have also come down dramatically. So we're actually seeing that across the board, which is sort of interesting. And you don't always see this. You only see this in like real recessions where the poor people are buying less of their normal goods and services, the consumer staples, and the wealthier people are actually buying less of their garbage that they buy diamond rings and pearls and boats and wealthy person things, yachts, those kind of sales are all significantly down as well. So it's affecting everybody, but it affects everybody. Disproportionately that makes a lot of sense. Yeah. Thank you for that breakdown. I wanted to ask you and Sam about job growth because Nick Temeros from the Wall Street Journal, the so called Fed whisperer who seems to have inside info sometimes on what the Fed is about to do, he said that incorrectly, that we've never seen a period like this where we've had so much job growth. This is part ways wrong. There is no job growth, but so little demand for any type of housing. Talking about the housing slump, and I posted in the Nest something from gaming grandpa La Urban Nerd at La Urban Nerd, who replied the job growth is a mirage will become very clear in the next few months. And then they posted, the alleged job growth and all these downward revisions, they seem to be all happening in a downward direction where they're off by over a million, 1.1 million jobs that never existed. And the Philadelphia Fed recently admitted that US jobs were overstated by at least 1.1 million. Sam Callahan had pointed this out to us at Swan, our great economist and researcher, and I was hoping both of you could comment on this. I've never been called an economist before. Oh, sorry. Hey, I mentioned it as a compliment. Yeah. No, I have been under the belief that the labor market is not as strong as being portrayed by government officials and Fed officials for a long time. And it's because of the methodology of how these things are calculated. The payrolls number uses these really large adjustments that are basically pulled out of thin air with, as we're seeing now, large backward revisions. And the Philly Fed themselves did a report. I think that's what's showing in the nest that a lot of these jobs in those payrolls weren't actually there. Right? So they were basically over a million that were set in the headline that were there are not there now. What is this, like, six months later? Eight months later? And that's usually what happens, but nobody really thinks about that, or nobody goes back and checks up on these revisions. But it's basically painting this picture that the labor force is stronger than it is. And we know that a lot of it is what Dr. Jeff was saying, how this is, like people thinking on second jobs. We know that the jolts, like the job openings that they always talk about, it's a lot of people basically being poached from other jobs, so there isn't any new jobs being created. It's people getting poached. And there's a lot of these, like, fake job postings where they put out, like, thousands of job openings. And then this one researcher went through them and applied to all of them and heard back from a very, very tiny percentage of them at all. And so that's the kind of numbers that are used in how these things are calculated. And you have to dig into the methodology, how they're calculated. Then they always point to the unemployment rate being low. But the US. Unemployment rate is low today, not because there's an actual increase of number of people working, but because the labor force itself is shrinking since COVID There's 3.5 million people that are no longer in the workforce. A lot of that is from early retirements as well as just regular retirements. Baby boomers retiring. And so that's a sign of a tight labor market and structurally tight labor market. There's not a lot of workers out there, and the Fed doesn't like that. The Fed wants to see the labor market gets some more slack into it. They want the unemployment rate to go up, but it's kind of hard to do that. When there's just not that many people actually in the active workforce. So there's like a misunderstanding of why the unemployment rate is even low. At 50 year lows is what you often hear. And so personally, I think that has the potential for a trapdoor effect where people think the labor market is stronger than it is until it's not. And oftentimes unemployment rate is reflected where it doesn't just creep up, it kind of spikes a little bit. And so that's what I think I expect to happen in Q one of 2023. We see actually more layoffs start to happen because of the Fed's overtightening and all these other factors. But yeah, that's kind of my summary of the labor market. I think it's a circus. There's a lot of the sharad being pushed out by the Fed officials and it's not as strong as people think. ",timestamp:"01:37:18-01:44:39",topics:["US economy","credit card debt","job growth","US labour market"],type:"twitter_space",weight:127.51501043433724},{boost:0,date:1672152975,description:"Dr. Jeff Ross, of Vailshire Capital, gives his Bitcoin and overall marco outlook for 2023",episode_title:"Café ₿: #Bitcoin Holiday Hangout & @StatusMoneyUSA a #BTC Credit Card",guests:[{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"a3dbdb56-e228-4382-98bc-d4495ff6dfbd",twitter_handle:"samcallah"},{name:" taodejing2",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"4914799b-a230-4bee-95c9-cf3ac44b6b70",twitter_handle:"TyonClubhouse"},{name:" MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1607490976670519296/vhLAojMR_400x400.jpg",ref_id:"01d6ee68-c0ef-4ead-b2b7-7eb04694519e",twitter_handle:"MrHodl"},{name:" TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"57beb381-b9e8-4dd1-82f6-4e544a63146b",twitter_handle:"TomerStrolight"},{name:" VailshireCap",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"73c15965-ddad-4e32-9746-da92f5d24134",twitter_handle:"VailshireCap"},{name:"bergealex4",profile_picture:"https://pbs.twimg.com/profile_images/1273374628577247233/tYigkAZH_400x400.jpg",ref_id:"da4bb8ab-540d-4f88-a2a6-f3a3941c5b74",twitter_handle:"bergealex4"},{name:" LukeMikic21",profile_picture:"https://pbs.twimg.com/profile_images/1604626418708742147/gWyVLeqa_400x400.jpg",ref_id:"0a907108-f59f-420f-9986-79b0f060f690",twitter_handle:"LukeMikic21"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" majdmaksad",profile_picture:"https://pbs.twimg.com/profile_images/1483883774471516167/zvEjiCTO_400x400.jpg",ref_id:"1a63c59d-a760-4f8b-bba9-ddfd3cff9f33",twitter_handle:"majdmaksad"}],hosts:[{name:" PeterAnsel9",profile_picture:"https://pbs.twimg.com/profile_images/1607979298153197568/JqAbDyi__400x400.jpg",ref_id:"6cb2b160-fa27-4fac-9ccf-77886ba01521",twitter_handle:"PeterAnsel9"},{name:" NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"c61e3ff9-f540-4343-bc26-1c3a4b537b78",twitter_handle:"NeilJacobs"},{name:" nathanfast",profile_picture:"https://pbs.twimg.com/profile_images/1545758157103697920/RyLn465N_400x400.jpg",ref_id:"739d907e-cbc6-4a05-9246-45c7c5d2a853",twitter_handle:"nathanfast"},{name:"TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"cc057990-16d0-4588-83c7-1eb9734eb994",twitter_handle:"tyonclubhouse"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/515f3625-8d91-439b-8d44-968fe6ab16de/19ec29f4-268c-4015-aa6e-245563dbc49d.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"2a0fb607-c735-4b09-809a-3c74cc61de97",show_title:"Swan.com",text:"have Dr. Jeff Ross from Valshire Capital. Welcome. I was hoping you could give us your usual sort of breakdown on the state of the markets and what you're seeing, how was the Christmas sales and so forth. Thank you. Yeah. Hey, Terrence, thanks for having me up. And hey, everybody. It's fun to hear you all. I hope you all had a great Christmas or just happy holidays and have had some good time off. It's been good for me. Been refreshing hanging out with family a bit here. I think the main thing, I spent a lot of time over the longer weekend kind of just looking from 30,000ft up at what's going on, kind of with macro and what's happening with bitcoin in particular. 2022 was kind of a rough year. It was a confusing year for a lot of people. I think that the setup still remains pretty rough. I think retail sales are just showing a continuously weakening consumer. Interestingly, consumer confidence is rising. I think it's because consumers think that inflation, or at least high inflation, isn't going to last forever, so they're getting more confident. But savings rates are near all time lows right now. Credit card usage is near all time highs. People are basically maxing out their credit cards. They're draining their savings. That bodes poorly. A lot of companies, if you've been paying attention to any earnings reports, most major companies are preparing for recession. They just say, yeah, it's inevitable, it's coming. So we have to kind of prepare for this. Companies that have lots of merchandise, they're having a really hard time selling it. Again, that's not good from a consumer perspective. And if you understand that the GDP in the US. 70% of the GDP, approximately 70%, is based on the consumer, based on consumption. So weak consumer just means a weak economy. So we still have the same setup we've had going for a while, right? We have a slowing economy, we have some disinflation, and we have a hawkish Fed, and we have those three factors that is just always historically poor for risk assets. So until something changes, you still got to be prepared for more downside. I said I was looking at the 30,000 foot view, so I'm really bearish at the moment, but I will tell you that I think we're moving along in bitcoin. I tweeted this out on Christmas a couple of days ago. As far as the four year kind of cycle goes for bitcoin, I think we're moving out of the year of widespread panic and disillusionment. That happened in 2018 and it happened again, I think, this last year in 2022. And I think we're moving into and we're probably already there in disinterest. What does disinterest mean? It basically means there's nobody really left who cares other than the hardcore bitcoiners, right? It's just us left. We have our little rooms, we keep each other motivated. We're encouraging each other. We're still dollar cost averaging. It's basically us left. The traders don't care anymore. There's no volatility in the space anymore. Most of the garbage crypto exchanges have gotten liquidated. There may be a few more to come still. I think there probably will be. I think we're going to see some bitcoin miners still go out of business before this is over. It's going to get worse before it gets better. But that period of disinterest is when new bull markets start. So I'm actually really encouraged the best businesses for bitcoin typically start during those periods of widespread panic and disillusionment. Basically when everybody else is panicking, that's when people, the creative people, get the best ideas for how they can make something better for the next go around. So that's what I'm looking at. I'm actually really encouraged that we're getting really close to a bottom. I think we still have more pain to come, but it's in the short term, in the next couple of quarters, I think, at the latest. And then I'm really encouraged. I was telling the people over at Bitcoin magazine, I think there's a really good chance we've hit a bottom in the price of bitcoin before the bitcoin covers in Miami. And then it's basically just up from there. So I think, by the way, I think the bull market will start out slowly again because we're still in this period of disinterest. I think most people won't believe it when we start, but it's setting the stage for 2024, and 2025 being just absolutely fantastic year. So I hope people are dollar costs averaging with me. If not, if you're a trader, that's fine too, but don't try to pick a bottom. That's very hard to do. But I'm very excited for people and my friends who are dollar costs averaging right now because I think finally we're going to have better days ahead by the end of 2023. I love that. Yeah. I think during this period of disinterest, there's also just people are not taking crypto and altcoins seriously because they've obviously failed and there's all this fraud with FTX and so forth. So it's a time for bitcoiners, the ones that are left to get to know each other even better and learn from each other and just go deeper, right, and maybe upsell ourselves or just increase our conviction. And like you said, this is a time when a lot of great ideas will come and creative people will people be more creative and hopefully come up with some new projects and ideas and startups that can really move the needle. I do want to ask you quickly about, you mentioned the credit card debt that is soaring and savings rates going down. It is a small percentage of the overall kind of US household net worth, which I believe is about well over 100 trillion, maybe 140,000,000,000,000. When housing prices were high. But it does seem like this 1 trillion or whatever of credit card debt, while it's serious, is still a fairly small percentage of overall US. Household net worth. And I was wondering if you could comment on that. Yeah, that's a great point, Terrence. And you got to think in terms of the strata of economics, right? So people who are generally wealthy and then sort of the middle class, which has been decimated, and then the poorer classes, this is obviously affecting really harshly the poorer classes, right. Inflation just crushes people in the lower classes, financially speaking. They have minimum wage jobs. We've talked about this many times on here, but you cannot survive on one minimum wage job. So maybe they have two or three. And then as the economy tightens, they're starting to get fired from some of these. The cost of goods and services is rapidly increasing. So they can't even afford their basic groceries. They may not be able to afford gas to drive to work. All of these things, they just get worse and worse. So it does affect the lower economic classes. Disproportionately that's what drives me nuts, right. That's what makes Bitcoin so beautiful, is those are the same classes who can benefit most strongly from Bitcoin, from a fair type of money instead of the unjust system that we have. So, yeah, it's affecting them. Now. I will say, though, that the wealth effect is real, too, and that affects the upper classes. Disproportionately why? Because wealthier people own more assets, right? They own houses, they own stocks, they own bonds, they own art, they own whatever. And the valuations of those kind of things have also come down dramatically. So we're actually seeing that across the board, which is sort of interesting. And you don't always see this. You only see this in like real recessions where the poor people are buying less of their normal goods and services, the consumer staples, and the wealthier people are actually buying less of their garbage that they buy diamond rings and pearls and boats and wealthy person things, yachts, those kind of sales are all significantly down as well. So it's affecting everybody, but it affects everybody. Disproportionately that makes a lot of sense. Yeah. Thank you for that breakdown. ",timestamp:"01:31:53-01:39:57",topics:["Jeff Ross","Bitcoin macro outlook","poor outlook for risk assets","hawkish US Fed","Disinflation","shitcoin failures"],type:"twitter_space",weight:122.72901871778198},{boost:0,date:1672152975,description:"Bitcoin regulations in America",episode_title:"Café ₿: #Bitcoin Holiday Hangout & @StatusMoneyUSA a #BTC Credit Card",guests:[{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"a3dbdb56-e228-4382-98bc-d4495ff6dfbd",twitter_handle:"samcallah"},{name:" taodejing2",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"4914799b-a230-4bee-95c9-cf3ac44b6b70",twitter_handle:"TyonClubhouse"},{name:" MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1607490976670519296/vhLAojMR_400x400.jpg",ref_id:"01d6ee68-c0ef-4ead-b2b7-7eb04694519e",twitter_handle:"MrHodl"},{name:" TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"57beb381-b9e8-4dd1-82f6-4e544a63146b",twitter_handle:"TomerStrolight"},{name:" VailshireCap",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"73c15965-ddad-4e32-9746-da92f5d24134",twitter_handle:"VailshireCap"},{name:"bergealex4",profile_picture:"https://pbs.twimg.com/profile_images/1273374628577247233/tYigkAZH_400x400.jpg",ref_id:"da4bb8ab-540d-4f88-a2a6-f3a3941c5b74",twitter_handle:"bergealex4"},{name:" LukeMikic21",profile_picture:"https://pbs.twimg.com/profile_images/1604626418708742147/gWyVLeqa_400x400.jpg",ref_id:"0a907108-f59f-420f-9986-79b0f060f690",twitter_handle:"LukeMikic21"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" majdmaksad",profile_picture:"https://pbs.twimg.com/profile_images/1483883774471516167/zvEjiCTO_400x400.jpg",ref_id:"1a63c59d-a760-4f8b-bba9-ddfd3cff9f33",twitter_handle:"majdmaksad"}],hosts:[{name:" PeterAnsel9",profile_picture:"https://pbs.twimg.com/profile_images/1607979298153197568/JqAbDyi__400x400.jpg",ref_id:"6cb2b160-fa27-4fac-9ccf-77886ba01521",twitter_handle:"PeterAnsel9"},{name:" NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"c61e3ff9-f540-4343-bc26-1c3a4b537b78",twitter_handle:"NeilJacobs"},{name:" nathanfast",profile_picture:"https://pbs.twimg.com/profile_images/1545758157103697920/RyLn465N_400x400.jpg",ref_id:"739d907e-cbc6-4a05-9246-45c7c5d2a853",twitter_handle:"nathanfast"},{name:"TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"cc057990-16d0-4588-83c7-1eb9734eb994",twitter_handle:"tyonclubhouse"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b27dcf88-bdfb-4433-b0fe-c9040dbf392f/11aa5648-d416-46f3-a66a-0750e9d71ccd.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"2969a789-41bf-4e23-8ab8-31a76c5a5754",show_title:"Swan.com",text:"very quickly, just before perhaps we could give the mic to Luke. But I just want to quickly echo what Sam was saying and it just pinned at the top. The report from Pierre Rashard and I think Jill Burnett at Block, where I think they've done a very fantastic job of dispelling a lot of the fun around the security budget and actually sort of introducing, perhaps not introducing, for everyone. But bringing back to the front a different way to discuss that, wherein, when we're discussing minors, we're really discussing finality and not security. And I think when you considered that under this optic, you can look at it in very different ways. That makes sense. Luke, go ahead. Yeah. To the discussion about America losing the war and really burdensome regulation being pushed for in America. What odds do you guys put on, say, like a Texas or even a shitcoin in Miami actually succeeding and forming their own independent state? I shared something in the nest. I think it was the former Russian president put out some very interesting and provocative predictions for the year 2030. But he talked about the possibility, probably a very small possibility, of a Texas forming like an allied state with Mexico. Obviously that's madness and probably won't happen in a long time, but what odds do you guys genuinely put on like a Texas succeeding from the US. If the US Tries to attack bitcoin? Yeah. The balkanization of the US. Has been discussed a lot about in Bitcoin circles. Tone Vase swears by it and thinks by 2030, 2035, you'll see the Balkanization. And I've put some thought into it. And if you think about it, what is one of the glue that is keeping a lot of these states together, even though ideologically they're radically different? Right. Like, people in California want a certain type of government. People in Texas want a certain type of government. People in Florida want a certain type of government. People in New York want a certain type of government. The glue that's keeping it together is the common currency. It's the US. Dollar. Right. So what happens if and Parker Lewis has touched upon this before in the past? What happens if all of a sudden state like Florida, Wyoming, starts putting bitcoin on its balance sheet and starts to realize that it doesn't need those federal dollars anymore, basically becoming self sufficient in a sense? Right. It's a very interesting question. And now think about how the marijuana industry has been treated in the United States, right? On a federal level, marijuana is illegal, right? But on a state level, it's thriving, right? California, Colorado, Oregon, washington State. So you can kind of see it in that direction. I think on a federal level, they're extremely hostile to bitcoin, obviously, because they get a tremendous amount of power from being able to control the monetary policy it funds themselves and also this world police type of outlook, right. The ability for the US government to place sanctions on entire countries through the office of foreign asset Control, that gives them a tremendous amount of power. Bitcoin is a threat to that. So obviously, I don't think on the federal level, I think on the federal level, bitcoin could be the last to be really accepted. But on a state level, that's a whole different conversation. I think states like Texas that get a tremendous amount of economic opportunity from the bitcoin mining industry, I think they're going to try to protect it tooth and nail. It's very similar to how the marijuana industry played out. I think that's what's going to happen perhaps on a state level. And I think that as soon as a state that brave state starts to put bitcoin on their balance sheet, man, in my opinion, that's game over. Like it's done right now. Hold on, Nico. You don't think the federal government is not going to enforce the constitution and not allow that to happen with military? I mean, that's like seceding, dude. That's a big deal. I think that things are going to get so crazy, and I think that we're all feeling it right now. I think that we're all feeling the fourth turning vibes. The corruption, the theft is so blatant, so in your face. The $1.7 trillion optimus bill, bro, I'm not going to get into any of the political stuff in there, but they had $65 million just into the research of fish, bro, there was a point in the bill. I'm not kidding. This is 100% real. There was $120,000 being dedicated to researching whether thanos the fictional character from the Avengers movies, whether he could really snap his fingers or not. Right? I couldn't agree with you more. There's a bill about a bee crossing on a fucking highway, but $3.5 million dedicated to bees? The theft is so blatant, bro, it's in your face, right? And it goes to are we at the very dying ends of an empire, the American empire, right? Empires usually last 300 years. We're about that point. It's so blatant. It's so corrupt. It's so in your face. And I don't know, man, if I'm a state like Texas, if I'm a state like Florida, ideologically I'm very different. And I'm seeing this and all of a sudden I have an alternative. I have an option to opt out of that entirely. I don't know why you wouldn't take that. Right? And then that goes to the other theory that. Ex former president of Russia said that you could potentially see an American civil war. I don't want to talk about that because war is terrible. War is hell. Of course we'd want to avoid that, but, I mean, if the momentum of history is going in that direction, so be it. But I don't know what's going to happen. On a macro level, I think predicting that it's, like, almost impossible. But what I can tell you, and I think what makes me, as an individual extremely optimistic, is that if my wealth is in bitcoin, my family's future, my future is protected because I can go where I'm treated best. If it means picking up and leaving and taking everything with me, I can only by writing down twelve words or 24 words. And I think that by itself is going to radically change the world. Because what I think governments are doing today is I think that they have a lot of their citizens hostage, and then they force their citizens to use money that steals from them. And perhaps in the United States, it's not quite noticeable because the inflation rate is only two to 4%. It got all the way up to 7%. But if you live in Argentina, where that inflation rate is 92%, man, bitcoin isn't a speculation for you. Bitcoin is survival. Those people already understand what it means to live in a country where their government currency fails, right? So that's what I'm bullish on, man. I'm bullish on individuals. I'm bullish on Central and Latin America. I'm bullish on what's going on over there in the United States. We shall see. I'm going to fight like hell. I love my country. I'm a first generation immigrant. I love not what the American government stands for, but what the original vision of America stood for. And I love it, and I'm going to fight for it. I'm going to stay here to the very bitter end. But, you know, if it comes to being thrown in a gulag because I'm writing twelve words or taking, like, uprooting my my life and my family's life and moving to El Salvador, then so be it. Obviously, I don't want to do that. I want to fight. And I want to win the race of adoption, get the ideals of bitcoin into the mainstream consciousness of America so that we could avoid that fucking war altogether. And I think that's what I try to do every single day. And that's what swan tries to do every single day. And that's what all bitcoiners try to do every single day. We fight this. We fight this information war, this psychological warfare that's happening every single day. It's trench warfare on the battlegrounds of the internet, man. And I think we're going to win. I think bitcoin's incentives are going to be any type of coercion that they try to jump, that they try to throw at us. Anyways, I'm sorry for ranting a little bit it's just a very passionate topic for me. ",timestamp:"01:05:44-01:15:03",topics:["Bitcoin regulation","bitcoin attack"],type:"twitter_space",weight:79.79824311351389},{boost:0,date:1672152975,description:"Discussion on Dmitry Medvedev's 2023 global predictions, the US losing the Bitcoin regulation war and Texas succeeding from the union due to bitcoin",episode_title:"Café ₿: #Bitcoin Holiday Hangout & @StatusMoneyUSA a #BTC Credit Card",guests:[{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"a3dbdb56-e228-4382-98bc-d4495ff6dfbd",twitter_handle:"samcallah"},{name:" taodejing2",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"4914799b-a230-4bee-95c9-cf3ac44b6b70",twitter_handle:"TyonClubhouse"},{name:" MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1607490976670519296/vhLAojMR_400x400.jpg",ref_id:"01d6ee68-c0ef-4ead-b2b7-7eb04694519e",twitter_handle:"MrHodl"},{name:" TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"57beb381-b9e8-4dd1-82f6-4e544a63146b",twitter_handle:"TomerStrolight"},{name:" VailshireCap",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"73c15965-ddad-4e32-9746-da92f5d24134",twitter_handle:"VailshireCap"},{name:"bergealex4",profile_picture:"https://pbs.twimg.com/profile_images/1273374628577247233/tYigkAZH_400x400.jpg",ref_id:"da4bb8ab-540d-4f88-a2a6-f3a3941c5b74",twitter_handle:"bergealex4"},{name:" LukeMikic21",profile_picture:"https://pbs.twimg.com/profile_images/1604626418708742147/gWyVLeqa_400x400.jpg",ref_id:"0a907108-f59f-420f-9986-79b0f060f690",twitter_handle:"LukeMikic21"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" majdmaksad",profile_picture:"https://pbs.twimg.com/profile_images/1483883774471516167/zvEjiCTO_400x400.jpg",ref_id:"1a63c59d-a760-4f8b-bba9-ddfd3cff9f33",twitter_handle:"majdmaksad"}],hosts:[{name:" PeterAnsel9",profile_picture:"https://pbs.twimg.com/profile_images/1607979298153197568/JqAbDyi__400x400.jpg",ref_id:"6cb2b160-fa27-4fac-9ccf-77886ba01521",twitter_handle:"PeterAnsel9"},{name:" NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"c61e3ff9-f540-4343-bc26-1c3a4b537b78",twitter_handle:"NeilJacobs"},{name:" nathanfast",profile_picture:"https://pbs.twimg.com/profile_images/1545758157103697920/RyLn465N_400x400.jpg",ref_id:"739d907e-cbc6-4a05-9246-45c7c5d2a853",twitter_handle:"nathanfast"},{name:"TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"cc057990-16d0-4588-83c7-1eb9734eb994",twitter_handle:"tyonclubhouse"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/515f3625-8d91-439b-8d44-968fe6ab16de/19ec29f4-268c-4015-aa6e-245563dbc49d.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"12445bad-9deb-4bff-ba8a-e8a490b00cc5",show_title:"Swan.com",text:"Luke, go ahead. Yeah. To the discussion about America losing the war and really burdensome regulation being pushed for in America. What odds do you guys put on, say, like a Texas or even a shitcoin in Miami actually succeeding and forming their own independent state? I shared something in the nest. I think it was the former Russian president put out some very interesting and provocative predictions for the year 2030. But he talked about the possibility, probably a very small possibility, of a Texas forming like an allied state with Mexico. Obviously that's madness and probably won't happen in a long time, but what odds do you guys genuinely put on like a Texas succeeding from the US. If the US Tries to attack bitcoin? Yeah. The balkanization of the US. Has been discussed a lot about in Bitcoin circles. Tone Vase swears by it and thinks by 2030, 2035, you'll see the Balkanization. And I've put some thought into it. And if you think about it, what is one of the glue that is keeping a lot of these states together, even though ideologically they're radically different? Right. Like, people in California want a certain type of government. People in Texas want a certain type of government. People in Florida want a certain type of government. People in New York want a certain type of government. The glue that's keeping it together is the common currency. It's the US. Dollar. Right. So what happens if and Parker Lewis has touched upon this before in the past? What happens if all of a sudden state like Florida, Wyoming, starts putting bitcoin on its balance sheet and starts to realize that it doesn't need those federal dollars anymore, basically becoming self sufficient in a sense? Right. It's a very interesting question. And now think about how the marijuana industry has been treated in the United States, right? On a federal level, marijuana is illegal, right? But on a state level, it's thriving, right? California, Colorado, Oregon, washington State. So you can kind of see it in that direction. I think on a federal level, they're extremely hostile to bitcoin, obviously, because they get a tremendous amount of power from being able to control the monetary policy it funds themselves and also this world police type of outlook, right. The ability for the US government to place sanctions on entire countries through the office of foreign asset Control, that gives them a tremendous amount of power. Bitcoin is a threat to that. So obviously, I don't think on the federal level, I think on the federal level, bitcoin could be the last to be really accepted. But on a state level, that's a whole different conversation. I think states like Texas that get a tremendous amount of economic opportunity from the bitcoin mining industry, I think they're going to try to protect it tooth and nail. It's very similar to how the marijuana industry played out. I think that's what's going to happen perhaps on a state level. And I think that as soon as a state that brave state starts to put bitcoin on their balance sheet, man, in my opinion, that's game over. Like it's done right now. Hold on, Nico. You don't think the federal government is not going to enforce the constitution and not allow that to happen with military? I mean, that's like seceding, dude. That's a big deal. I think that things are going to get so crazy, and I think that we're all feeling it right now. I think that we're all feeling the fourth turning vibes. The corruption, the theft is so blatant, so in your face. The $1.7 trillion optimus bill, bro, I'm not going to get into any of the political stuff in there, but they had $65 million just into the research of fish, bro, there was a point in the bill. I'm not kidding. This is 100% real. There was $120,000 being dedicated to researching whether thanos the fictional character from the Avengers movies, whether he could really snap his fingers or not. Right? I couldn't agree with you more. There's a bill about a bee crossing on a fucking highway, but $3.5 million dedicated to bees? The theft is so blatant, bro, it's in your face, right? And it goes to are we at the very dying ends of an empire, the American empire, right? Empires usually last 300 years. We're about that point. It's so blatant. It's so corrupt. It's so in your face. And I don't know, man, if I'm a state like Texas, if I'm a state like Florida, ideologically I'm very different. And I'm seeing this and all of a sudden I have an alternative. I have an option to opt out of that entirely. I don't know why you wouldn't take that. Right? And then that goes to the other theory that. Ex former president of Russia said that you could potentially see an American civil war. I don't want to talk about that because war is terrible. War is hell. Of course we'd want to avoid that, but, I mean, if the momentum of history is going in that direction, so be it. But I don't know what's going to happen. On a macro level, I think predicting that it's, like, almost impossible. But what I can tell you, and I think what makes me, as an individual extremely optimistic, is that if my wealth is in bitcoin, my family's future, my future is protected because I can go where I'm treated best. If it means picking up and leaving and taking everything with me, I can only by writing down twelve words or 24 words. And I think that by itself is going to radically change the world. Because what I think governments are doing today is I think that they have a lot of their citizens hostage, and then they force their citizens to use money that steals from them. And perhaps in the United States, it's not quite noticeable because the inflation rate is only two to 4%. It got all the way up to 7%. But if you live in Argentina, where that inflation rate is 92%, man, bitcoin isn't a speculation for you. Bitcoin is survival. Those people already understand what it means to live in a country where their government currency fails, right? So that's what I'm bullish on, man. I'm bullish on individuals. I'm bullish on Central and Latin America. I'm bullish on what's going on over there in the United States. We shall see. I'm going to fight like hell. I love my country. I'm a first generation immigrant. I love not what the American government stands for, but what the original vision of America stood for. And I love it, and I'm going to fight for it. I'm going to stay here to the very bitter end. But, you know, if it comes to being thrown in a gulag because I'm writing twelve words or taking, like, uprooting my my life and my family's life and moving to El Salvador, then so be it. Obviously, I don't want to do that. I want to fight. And I want to win the race of adoption, get the ideals of bitcoin into the mainstream consciousness of America so that we could avoid that fucking war altogether. And I think that's what I try to do every single day. And that's what swan tries to do every single day. And that's what all bitcoiners try to do every single day. We fight this. We fight this information war, this psychological warfare that's happening every single day. It's trench warfare on the battlegrounds of the internet, man. And I think we're going to win. I think bitcoin's incentives are going to be any type of coercion that they try to jump, that they try to throw at us. Anyways, I'm sorry for ranting a little bit it's just a very passionate topic for me. I love your quote unquote rants. I think to me they just come across passionate and well thought out. I am. Thanks, Terry. Just to go back and answer League's question maybe a little bit differently, I think this session, it would be very hostile. Like, that's a totally different ball game. It would be on the brink of civil war. We're also intertwined and the whole country depends on, say, Texas and Florida for different resources. That's just not going to happen without some kind of military response. But in the Constitution, there is the 10th Amendment right that powers not delegated to the United States by the Constitution are reserved to the states respectively, or to the people. And so I always said the migration of hash rate was bullish to go to America because I called it the disunited king of hash rate because they're strong state government and to avoid tyranny and the ineffective central planning, every state is free to enact its own policies that work for its own populations. And so unless the government banned, outright banned bitcoin a commodity, I don't see how they could stop states from adding it to their balance sheets or the Treasuries just saying, hey, we're going to buy a little bit of bitcoin unless there was some federal ban on bitcoin. And so there's a difference between suspicion and just purchasing bitcoin right now because there's no kind of federal law preventing them from doing that. And they have states rights and that's protected by the Constitution, the 10th Amendment. So that's how I kind of see that scenario. ",timestamp:"01:06:40-01:16:49",topics:["Dmitry Medvedev","balkanization of the us","Bitcoin regulation","Texas secession"],type:"twitter_space",weight:76.08473176624994},{boost:0,date:1671644776,description:"The BCV foundation and Bitcoin education in Nigeria",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b18df9d2-d034-4e1f-bcd1-d70b30fe9059/506355bc-c119-4f18-bf0b-abe9be8c17d6.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"0330ada0-fbc0-4f8f-a560-a6c059a72907",show_title:"Geyser 🌊",text:"So, yeah, tell us a bit about your project and I'm sure more and more people will join up. All right. I'm just handle that because I'm just like handling the accounts where I really know about this project because I'm a beneficiary of the project. So they have been going around in communities in Nigeria and some other places, and they've been giving out pamphlets, teaching people about Bitcoin and how we can help them secure financial power or financial freedom yet. So basically I got about 100,000 from them after the education. And also I've been keeping in touch with these people and they offered me because I really don't have anything doing. So they offered me to get this job to just handle the account. And I'm still learning about the project. But basically what they do is they just teach people. We just tell people about it's more like we're going to like the grassroots. I don't know if you're with me. We're going to the grassroots to really uneducated places, to just teach people, like traders and random people on the streets. We're just teaching them and telling them stuff about bitcoin, because I think it starts from there, because education is a big problem. There's this gap, there's this space between the educator and the uneducated ones that the uneducators also never really get the chance to understand what this is all about. They just keep suffering and suffering and they don't really know how to really get out of the circle or the matrix of just being suppressed financially. Right. So that's basically what it's all about. So they've been doing a great job. They've been going around. And I'm a beneficiary, so it's more like my testimony, right? Yeah. I'm just saying that to the space, basically wait, I'm sure if it worked, but basically they're receiving donations of Geyser. And the main purpose of the initiative is essentially reaching out to rural communities, doing basic education about bitcoin. And there's also an element of mining, is that right? Not really, but solar. Really? Solar power. About renewable energy. Because Nigeria has power issues. Has power issues, especially in the local communities, the grassroots, like I said. That'S incredible. So we just try to help people with small solar power generators that they used to. And we have some people that mine bitcoin in very small scale. They have this really small miners, so they use our solar power generators. Got you. So I can see here you guys are focused on six African communities in three countries. Ghana, Kenya, Nigeria. Yes. And you guys are an NGO dedicated to promoting, expanding bitcoin across the world. Yes. Focusing on education, school and rural areas. Yes. Yes. So this is an incredible project. You guys are calling it bits and stats and help educate school students and other individuals. So how do you guys do that? And what's your experience so far? Like, how has it been received? It has been really good because when schools were still in session, because now schools are on holidays now, vacation. Right. When schools were still in session, like secondary school education, we used to go around and teach, like, school children in classes. We just take minutes of their time because in schools they have recess and different times and other stuff like that. So we just go around and we try to teach and we hand out pamphlets, like I said. But we haven't really given out bitcoin to this secondary school students because most of them don't really, like, possess phones and other things like that. So we just basically teach them how it works. But then we go around and trade as people that sell stuff, people that just, like, randomly work on things, like outside. We just try to teach them on the streets, we just walk around. Have you tried using different tools like machancura to use SMS to send people? I just learnt about machancura last month and it's really innovative, but I haven't really done anything and I haven't really connected with people. So I think we should do more of that. We would have to connect with people because we had one representative in Ghana for the Afro Bitcoin conference some weeks back. It's just a tool that you can start using. I recommend you just playing with it, and it really just means that you can use your feature phone and some of the old phones to receive. Satoshi is pretty straightforward. Okay, that's great. Yes, I saw some stuff about it, so I'll definitely play around with it. And I can't people around too, since. That'S how you really learn, right? You learn and practice with really feeling it. Yes. That's cool. Yeah. Thank you for the awesome initiative, for the opportunity. Also really appreciate of ",timestamp:"00:10:34-00:16:46",topics:["Bitcoin education","Nigeria","Bitcoin mining","BCV foundation","Geyser"],type:"twitter_space",weight:62.68289275364415},{boost:0,date:1671644776,description:"The introduction to Bitcoin in Nigeria and how it's gradually taking it's place",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/885fe09b-bb21-49a5-8667-3c73ed36918f/196dc1e8-c7a4-4dc7-902f-d00107aefb42.mp3",node_type:"clip",pub_key:"0372cd0c8469f2034336a243e018d4d60e07efef8e7d10417807da1173bd5b002f",ref_id:"83ce1420-66d3-41e6-b987-b35fe2cf019f",show_title:"Geyser 🌊",text:"All right. Hello. Good evening. Hey, good evening. Yeah, how's it going? It's going great. Thanks, guys, for the opportunity to speak. Yes, I'm grateful. Fantastic. Yeah. I mean, not many people today. We've had better turnouts. I think it was a bit of a last minute call, but I wasn't. Even expecting I just saw a notification and I came up. Awesome. Yeah, it's cool, man. So, yeah, tell us a bit about your project and I'm sure more and more people will join up. All right. I'm just handle that because I'm just like handling the accounts where I really know about this project because I'm a beneficiary of the project. So they have been going around in communities in Nigeria and some other places, and they've been giving out pamphlets, teaching people about Bitcoin and how we can help them secure financial power or financial freedom yet. So basically I got about 100,000 from them after the education. And also I've been keeping in touch with these people and they offered me because I really don't have anything doing. So they offered me to get this job to just handle the account. And I'm still learning about the project. But basically what they do is they just teach people. We just tell people about it's more like we're going to like the grassroots. I don't know if you're with me. We're going to the grassroots to really uneducated places, to just teach people, like traders and random people on the streets. We're just teaching them and telling them stuff about bitcoin, because I think it starts from there, because education is a big problem. There's this gap, there's this space between the educator and the uneducated ones that the uneducators also never really get the chance to understand what this is all about. They just keep suffering and suffering and they don't really know how to really get out of the circle or the matrix of just being suppressed financially. Right. So that's basically what it's all about. So they've been doing a great job. They've been going around. And I'm a beneficiary, so it's more like my testimony, right? Yeah. I'm just saying that to the space, basically wait, I'm sure if it worked, but basically they're receiving donations of Geyser. And the main purpose of the initiative is essentially reaching out to rural communities, doing basic education about bitcoin. And there's also an element of mining, is that right? Not really, but solar. Really? Solar power. About renewable energy. Because Nigeria has power issues. Has power issues, especially in the local communities, the grassroots, like I said. That'S incredible. So we just try to help people with small solar power generators that they used to. And we have some people that mine bitcoin in very small scale. They have this really small miners, so they use our solar power generators. Got you. So I can see here you guys are focused on six African communities in three countries. Ghana, Kenya, Nigeria. Yes. And you guys are an NGO dedicated to promoting, expanding bitcoin across the world. Yes. Focusing on education, school and rural areas. Yes. Yes. So this is an incredible project. You guys are calling it bits and stats and help educate school students and other individuals. So how do you guys do that? And what's your experience so far? Like, how has it been received? It has been really good because when schools were still in session, because now schools are on holidays now, vacation. Right. When schools were still in session, like secondary school education, we used to go around and teach, like, school children in classes. We just take minutes of their time because in schools they have recess and different times and other stuff like that. So we just go around and we try to teach and we hand out pamphlets, like I said. But we haven't really given out bitcoin to this secondary school students because most of them don't really, like, possess phones and other things like that. So we just basically teach them how it works. But then we go around and trade as people that sell stuff, people that just, like, randomly work on things, like outside. We just try to teach them on the streets, we just walk around. Have you tried using different tools like machancura to use SMS to send people? I just learnt about machancura last month and it's really innovative, but I haven't really done anything and I haven't really connected with people. So I think we should do more of that. We would have to connect with people because we had one representative in Ghana for the Afro Bitcoin conference some weeks back. It's just a tool that you can start using. I recommend you just playing with it, and it really just means that you can use your feature phone and some of the old phones to receive. Satoshi is pretty straightforward. Okay, that's great. Yes, I saw some stuff about it, so I'll definitely play around with it. And I can't people around too, since. That'S how you really learn, right? You learn and practice with really feeling it. Yes. That's cool. Yeah. Thank you for the awesome initiative, ",timestamp:"00:09:59-00:16:41",topics:["Nigeria","Bitcoin adoption"],type:"twitter_space",weight:61.64845435071934},{boost:0,date:null,description:"Greg Foss' Thoughts on countries interested in joining the BRICS forum",episode_title:"Café ₿: #Bitcoin News & Trusted P2P Reviews w/ @Apollosats",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@FossGregfoss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"09913e9b-38dc-4465-9d4d-ae0c9ba9eeca",twitter_handle:"Fuckkkk"},{name:"@w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"b178b239-3b18-4a16-9d43-c5d15ba6f7f4",twitter_handle:"w_s_bitcoin"},{name:"@NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"4b6997e1-ce0b-4a1d-90e7-dbaccef4b783",twitter_handle:"NeilJacobs"},{name:"@brandon_gentile",profile_picture:"https://pbs.twimg.com/profile_images/1561369452284895236/-8WgdwEm_400x400.jpg",ref_id:"f940c5e8-4808-4197-a38f-3f19d311a7ad",twitter_handle:"brandon_gentile"},{name:"@apollosats",profile_picture:"https://pbs.twimg.com/profile_images/1576946734927794176/2ail9FoU_400x400.jpg",ref_id:"74f4280f-5fdb-4bbc-aee2-a2ed32d64372",twitter_handle:"apollosats"},{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7cf57bdb-c905-46e3-a7e5-4c0bfd4f8d04/71c08fae-cce8-4600-ab9e-758420e78dcf.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"639d4f31-2190-4fc2-a0dc-57cf53c3d97b",show_title:"Swan.com",text:"a question. I got a question coming in. Wicked. Yeah, go ahead. This is coming in from text greg, I don't know how much longer we've got you for. That's why I wanted to get this to you before. I didn't mean to cut you off. But this comes from Sholey, and his question is, foss, I'm interested in your take on countries wanting to join the BRICS and move away from the US dollar for trade. Apparently this was a tweet from Kim.com, so please don't shoot me for the source, but apparently Russia has announced that twelve more countries are interested in joining the BRICS. What do you think about all this? Yeah, well, it's not hard to see the playbook, right? When you have your US dollar controlled reserve asset of the world, which is US treasuries, when that gets frozen and you need to call on it and you can't so I'm talking about Putin here. You look for alternatives. Now, Marty Ben here's a shout out to my friend Marty. He had an amazing publication on Friday, okay, calling the same thing, but says it won't be gold backed oil trades, it'll eventually be bitcoin backed oil trades. And that makes sense from my perspective of digital energy versus natural resource energy. And why sell valuable natural resource energy for US dollar fee when ultimately, rather than selling it for gold, which is a far better store of value than US dollars or US treasuries, but you could sell it for digital energy. As an engineer, I'm not a physicist, so there's some physicists that hate the fact that sailor, and maybe me, at times refer to bitcoin as digital energy. But I don't care. Understand? It's selling natural resource energy for digital energy is just about the smartest thing you can do in a closed loop energy frame. Okay? So one more shout out, I'll step down or try and shut up. So thank you, wicked for great input, Terence. Great input, aunt. Great input. And a shout out to one of your listeners that just reached out to me via DM. We want to talk some more about the big utilities in the US. Becoming bitcoin miners. It's the most logical step in the world. The energy guys know it. The ESG guys, they already have their heads shoved firmly up their ass, so they're not going to hear it. But people who manage the grid and manage energy understand that bitcoin and bitcoin mining is the perfect regulator, okay? With a switch, you can turn power up or power down your bitcoin miners, and you create incremental cash flow to defease capital expenditures, to building things like, oh, nuclear power plants. Because normally a nuclear power plant has a 20 year return on investment profile. And if you insert bitcoin mining in there, you can reduce that return on investment profile by at least one half, okay? And that's a meaningful adjustment to the capex that's required for building a core nuclear generator. So small nuclear modular reactors, big core nuclear reactors, it's what's going to really solve the energy crisis, people. And bitcoin is going to help with that. So don't overthink things. ",timestamp:"01:11:11-01:14:33",topics:["BRICS forum"],type:"twitter_space",weight:25.360525131225586},{boost:0,date:0,description:"What will Bitcoin look like in a scenario of global adoption? ",episode_title:"Café ₿: #Bitcoin Fix the Money, Fix the World",guests:[{name:"OrangePild",profile_picture:"https://pbs.twimg.com/profile_images/1608905201334845441/SHUsfTBW_400x400.jpg",ref_id:"1c33ba0e-3e6b-41f6-aed4-5217aa534521",twitter_handle:"OrangePild"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Dr. Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"51a969bb-dbf7-4d20-b128-74dcc5f560f6",twitter_handle:"VailshireCap"},{name:"Jason Brett",profile_picture:"https://pbs.twimg.com/profile_images/1591476397847060482/bNapBM4Y_400x400.jpg",ref_id:"750a85f9-59f2-4627-817c-a437b65ee45e",twitter_handle:"RegulatoryJason"},{name:"Tatum Turn Up",profile_picture:"https://pbs.twimg.com/profile_images/1600036563429343233/PXP0gxRj_400x400.jpg",ref_id:"31824d8a-a2a6-434e-8d10-f0be1c2f8389",twitter_handle:"tatumturnup"},{name:"Stackchain ⛓ Signal",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"b0242af7-0d94-4551-ba25-a8b216b82fce",twitter_handle:"StackchainSig"},{name:"Ross",profile_picture:"https://pbs.twimg.com/profile_images/1602431687564357632/57oH7beH_400x400.jpg",ref_id:"cdb90285-daa9-4dd2-b96a-78dd5e8ba468",twitter_handle:"theyoungrossco"},{name:"BTC Sessions",profile_picture:"https://pbs.twimg.com/profile_images/1602307254937866240/CKiRrFui_400x400.jpg",ref_id:"e207ef16-44d1-40c4-929a-ea2736f60a94",twitter_handle:"BTCsessions"},{name:"TC",profile_picture:"https://pbs.twimg.com/profile_images/1607590332925095937/6CTv4688_400x400.jpg",ref_id:"083ddb42-c4a0-4360-8de3-6178e3b659ec",twitter_handle:"Meditation_Man"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"}],hosts:[{name:"Swan.com",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"995b79e6-02fe-4395-8aa7-fdc000584e71",twitter_handle:"SwanBitcoin"},{name:"PB23 😎 Pacific Bitcoin Festival",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"9dd05f7c-4891-440c-aa61-677a92e70a0f",twitter_handle:"pacificbitcoin"},{name:"NICO⚡️",profile_picture:"https://pbs.twimg.com/profile_images/1513692277515997188/t5Ja3SFr_400x400.jpg",ref_id:"ccd52021-88cc-4e7d-9822-6eed5a169ca9",twitter_handle:"nico_lechuga"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/84e104dc-230e-40a7-9ec0-16c5a0d6873b/e7948dc4-eff7-4d6e-8ed2-80f524a8c494.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"1171938e-b754-45ff-958d-ca89aa3ab235",show_title:"Swan.com",text:"Ross, you have your hands up. Thanks to ross, you have your hands up, and then we're going to wrap it up. Yeah, thanks for letting me speak. I want to ask a question to the experts here that have been around longer than me. My reason for asking the question is actually someone in my twitter feed asked the question. They said, construct a sentence that would really piss off a bitcoiner. And I constructed one so well that I would like to know the answer to my own question. So, what I wrote is, assuming 10 billion people in the world and an absolute global adoption of Bitcoin, if every single person in the world wanted to make a single layer, one transaction just multiplying out 2500 to 3000 transactions per block times, hours, years, et cetera. It would take somewhere between 60 and 70 ish years for one person, for each person in the world to make a single transaction on layer one. So with that and the ultimate vision of bitcoin being the kind of global reserve asset and understanding, there's more layers like lightning and possibly even layer three, et cetera, that will come in time, what do you guys see as the, I guess, endgame of the landscape of what bitcoin would look like in a global adoption scenario? Let me ask you something. So most transactions right now are through debit cards, credit cards, electronic transfers. What layer do you think that is in the traditional? Well, I would say it's layer three at least, if not higher. It's layer three. Right. So how long has that system been around? Like 50 years, give or take? Exactly. It's been around for 60 years. Bitcoin's roughly a decade and a half old. Decade and change. Right. I think lightning is a great solution, but I still think that it needs a lot of work. I think there's so many awesome projects that are being worked on, and I think that we will find a solution to the problem that you're talking about. And that was a very big component of the block size for us. Right. We must, and I'm aware of that history too. But the thing is, even with a. Smaller block size, it still can't like every blockchain is too slow for global layer one transactions per person. Eventually. I think that's where layer two is going to come in. There's been speculation that the blocks are going to be filled. That's been said for the last five years or so. That still hasn't been the case. There's been times where the men pool gets cleared out. So I mean, like, I don't know, man. I think Tomer actually was talking about this yesterday. I think that it could potentially be a problem in the future. But I think where we are now, we have much bigger, clear and present dangers in front of us. And I think that's what Jason was really talking about today from the regulatory perspective. And I think that's really where my worry is. That that's really where my concern is in terms of scaling. Yes, I agree. I think that what's the Lightning Network capacity right now? It's $89 million. That's not a large amount in a global sense. Obviously there needs to be more. But if you look back and see how far we've come, I remember when the Lightning Network first became a thing, people were like, no, this isn't going to work. Right? And the fact that we've come from zero dollars to eighty nine million dollars lighting network capacity, I think is a massive deal and I think it's just going to continue to get bigger and better. Maybe that's the optimist to me. I have no idea. I don't know if Dr. Ross, Neil or Tomer, Jason, any of you guys want to chime in on that? TC yeah, I mean, my answer can be slightly adapted from the one you were referencing that I made yesterday. It's like we will cross that bridge and the bridges that lead to it as we come to them. There's so many different ways that we can scale this technology as demand increases for utilizing it. And what tends to be the surprising thing is many ways, just do nothing and let people figure out how to use it more efficiently. There were all these people who were clamoring for bigger blocks through a hard fork and we kept the blocks small and people figured out how to cram a lot more transactions. So that now the calculus that you're doing is, oh, there's 2500 to 3000 transactions per block, not 1000 transactions per block, which is what we were seeing beforehand. And there's so many different things that will be developed in cryptography. In fact, the fact that Schnor's signatures exist right now with cross signature aggregation can make transactions so much smaller. And of course there's all these other layers. So give a time. Like all technologies that you've seen before, they look like they're not going to work for the whole world. Early on. I don't know how old you are, but if you were here for the early days of the Internet, you could barely get a JPEG through the thing in. 15 minutes. And so it looked like it wouldn't scale. And I remember a couple of decades ago there being some fun about the Internet, that there's only so many addresses that would go around and so wouldn't the Internet fail in a few years time as more and more people came on? And of course, we've engineered a way around all these things. So I think especially when you're dealing with technology that's immaterial in its nature, that's non physical, that's purely digital, there are so many different ways to scale it that it won't end up being a concern. There will be many concerns along the way, but they will all be solved and surmounted. ",timestamp:"02:02:51-02:08:46",topics:["Bitcoin Adoption","Hyperbitcoinization"],type:"twitter_space",weight:25.169692039489746},{boost:0,date:1671644776,description:"Crowdfunding for different Bitcoin communities using Geyser",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b18df9d2-d034-4e1f-bcd1-d70b30fe9059/506355bc-c119-4f18-bf0b-abe9be8c17d6.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"70cd556c-8349-4f80-b276-4c0056b46536",show_title:"Geyser 🌊",text:"so we have people in Africa and I think possibly Asia. But yeah, we have again, we have I think in around three days, we had 30 new projects being created on Geyser using this Lightning address feature, which is pretty big deal. We have you really need six clicks to create a project on Geyser. It's pretty seamless. And we had quite a lot of educators create projects on Geyser. We had Bitcoin community in Honduras, bitcoin in Hausa, Nigeria, and also we just heard from BCB based in Ghana as well, bitcoin, Essex, UK, and Orange Pill Yosemite, which is in California. So really featuring four different continents. These are micro communities. These are little micro communities that are focused on meetups focus on orange Peel in the community, raising funds for supporting education initiatives that are pretty small scale but nonetheless importance. Again, Bitcoin is a grassroots movement, and so what these creators are doing is that they're setting up these super micro, grassroot level initiatives to get support from the community and create their own community on Geyser. Again, Geyser is, yes, a crowdfunding platform, but it's really a place where people can come together to support common causes and support getting shit done. You have an idea and you get some people together, some people throw in new ideas, some people throw some money, some people throw resources. And so gather should be seen a little bit more widely and we will soon have more features to enable these types of feedback loops and conversations. ",timestamp:"00:17:16-00:19:06",topics:["Bitcoin","crowdfunding","Geyser"],type:"twitter_space",weight:55.39905291682817},{boost:0,date:null,description:"About ApolloSats: P2P reviews for Bitcoin related products and services",episode_title:"Café ₿: #Bitcoin News & Trusted P2P Reviews w/ @Apollosats",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@FossGregfoss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"09913e9b-38dc-4465-9d4d-ae0c9ba9eeca",twitter_handle:"Fuckkkk"},{name:"@w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"b178b239-3b18-4a16-9d43-c5d15ba6f7f4",twitter_handle:"w_s_bitcoin"},{name:"@NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"4b6997e1-ce0b-4a1d-90e7-dbaccef4b783",twitter_handle:"NeilJacobs"},{name:"@brandon_gentile",profile_picture:"https://pbs.twimg.com/profile_images/1561369452284895236/-8WgdwEm_400x400.jpg",ref_id:"f940c5e8-4808-4197-a38f-3f19d311a7ad",twitter_handle:"brandon_gentile"},{name:"@apollosats",profile_picture:"https://pbs.twimg.com/profile_images/1576946734927794176/2ail9FoU_400x400.jpg",ref_id:"74f4280f-5fdb-4bbc-aee2-a2ed32d64372",twitter_handle:"apollosats"},{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7cf57bdb-c905-46e3-a7e5-4c0bfd4f8d04/71c08fae-cce8-4600-ab9e-758420e78dcf.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"7c3d3625-4308-437e-80bb-38fb8b2a678c",show_title:"Swan.com",text:"want to welcome up Apollo and Julian from Apollo. So, Apollo, just a really quick intro. If I understand it right, they're building the first review site, leveraging sets, and you log in with lightning. So basically, you get to review the products you love, find companies you trust, and earn bitcoin. Julian, good morning. Welcome. Talk to us about what you're doing and why are you doing it, and then maybe we can open it up for some questions, if you like. Sounds good, Alex. Yeah, thanks so much for having me, and, yeah, I really enjoyed the conversation this morning. Sorry to interrupt the crucible, but I think it's actually a pretty great segue into talking about what we do at Apollo, which is finding the truth right, through the contest of ideas and context of information. So, yeah, you gave a really great intro. Basically, we are a marketplace for user reviews of bitcoin products and services, and the idea is pretty simple. We wanted to build somewhere for bitcoin is to educate other bitcoinrs about not only what products and services exist in the space, but also how to compare them and what basis. And we felt that that was kind of missing in the space and probably needed to just help adoption, which is the mission we started the company on the basis of, hey, we want to do whatever we can to help bitcoin adoption. It's the most important thing we could be spending our time on. And in the process of doing that, and I can talk a little bit more about that. Of what we learned from one of the biggest challenges to work on bitcoin adoption, we realized that we kind of needed something like this, which was we needed somewhere that we could send new bitcoiners who just wanted to start the process of going down the rabbit hole. So, yes, pause there, but happy to take any questions. I love it. That is the mission. I agree. What I'm excited about is I'm starting to see a lot more of this kind of direction where people are recognizing that is the mission increasing adoption as much which is possible. Let's go ahead and open it up. If anybody up here on the panel has questions for Jillian, go ahead. And if you're in the audience and you have questions about what these guys are doing and how it works and all that kind of stuff, you can request to come up. You can ask questions in Telegram if you like. Tmecafetcoinclub, I've got a question. So to use this service, I'm assuming you have to run your own Lightning network node, is that right? You don't have to, no. So you can sign up in a few different ways. You can just sign up with an email address or with your Twitter account, or you can log in with Light. But for now, on the infrastructure side is pretty straightforward. Like we just kind of run our own we're not running a node yet ourselves, but we just have our kind of own internal Sachs ledger, maintaining everybody's account balances. And we will send SATS to whatever address that users have on their end. Got it. Cool. So you can hook it up with like a Wallet of Satoshi account or whatever, something like that, you're saying? Yeah, exactly. So Wallet of Satoshi or Zebony account, I mean, a lot of people are using kind of Lightning addresses, like ball toll addresses for the first time, which is really cool to see. But yeah, whatever Lightning address you have spin line up, send it to us and we'll send you Sat. How do you know the reviews are legit reviews and not just someone trying to accumulate Sat? Yeah, it's a great question, to be honest. And it's the best one we're focused on that happen from day one. And there are a couple of answers, right? Like one is in the longer term, what we're building is a marketplace that run like a market, right? And the idea is it's a market for information. So we want the best, most reliable reviews to organically surface to the top and the way that that is going to happen. And what we're building is that there is a system of incentives between these two sides of the marketplace, right? Reviewers on the one hand and readers of reviews on the other. That allows for that. Right. So how can that happen? Well, basically reviews after they're written and we publish them, and I'll talk a little bit about the moderation that we do before we actually publish, but after they're published, they can be uploaded and kind of similar to stack and use, if you guys are familiar with that. Basically every upvote is actually, in effect a transaction, right? So you have users sending SATS from their account to the author of a review to upload that review. So the idea is people vote with SATS on what is most helpful, most reliable. And so if the market works effectively, then the best reviews, most helpful reviews are going to rise to the top. That's what we're kind of building for the longer run. Now, obviously in the short run, we need to do some things to bootstrap that market and also put up some guardrails to obviously make sure that people aren't gaming the system, which certainly they are trying to do already. Right? So we have a few things that we do upfront to filter for spam and other kind of obvious bad actors that are going to come in and just try and publish a bunch of reviews and earn as many stats as possible. But you end up again. So if you got a follow up, yeah, I got a couple of other ones if no one else wants to go. So is it going to be bitcoin only companies because I see or bitcoin only things because I see Anthony Pompeano's newsletters on here, clearly like he's a controversial person. So I'm just curious if you guys are how you decide what companies get to go on here or newsletters or whatever. Yeah, so short answer is yes, bitcoin only. Like that's the mission. It's bitcoin adoption. And specifically it's like we want to educate bitcoin is and help bitcoin is educate each other. And so the mission is bitcoin only. The products are almost entirely bitcoin only, except where I would say for a couple of instances, right? One is where there's some just overlap between bitcoin only products and crypto stuff. Like there are exchanges that we want people to review that obviously have bitcoin and crypto and maybe some newsletters or other content pieces or wallets or whatever the case may be. It's obviously relevant for us to let people educate each other on those products, even if they're not bitcoin only. So that's one instance of where they overlap. When it comes to things. Julian, don't you think that's a little conflicting, just a little bit? I mean, first you say bitcoin only, but it's bitcoin only except when it's not coin only. I know there's a lot of bitcoinners are going to take issue with that. And if what you're trying to do is increase bitcoin adoption, giving any kind of platform for something that's distracting people into bullshit is maybe that's I just know there's a lot of bitcoin is going to have an issue with that. And I know right now, Julian, I see like the Pump newsletter has an awful rating on your site. So I'm assuming mostly bitcoiners are the only ones kind of going on here right now. But what happens when he or a bunch of crypto people find this site, right? Then it just becomes a review site. Yeah, well, so a couple of things, right? One is at the moment, because we're so early, we're running a bunch of little experiments, right? So we don't really know how this is going to play out. So we've got the pop newsletter on there. We put the bankless newsletter on there too. Right. And part of that was to see how are people going to respond. And pretty much all of our users right now are bitcoin only users from what we can tell. And the results have been whether it's for those newsletters or for like Coinbase or other crypto exchanges. Right. Many of the reviews coming through, a lot of them are kind of nuanced and are actually bitcoin is telling. Other bitcoin is like, hey, this is an exchange that if you really have to use it as your first place to buy bitcoin, you can do that. But get your coins off exchanges, find an alternative. Like people are writing reviews, for example, of Coinbase saying like, hey, don't use this platform, go and use Swamp instead. And the reason why I think it actually is important to have all of this information at people's disposal is because people have these questions, they are going to find out coinbase is going to be top of mind for them. So we want to build somewhere where people can, I guess, do a bit of self directed learning, learn from bitcoin is who have been through these on ramps, have been through these experiences and are going to be able to answer the questions that I think people are going to inevitably have. Does that answer the question? No, but I'll let Neil go. Well, yeah, and that's kind of like a shameless plug. But are you going to be adding bitcoin merch and apparel companies? Because I would love my company to be on it. Sure, yeah. We're taking recommendations on constantly on categories, products and it's to some degree like demand driven. Obviously we're not going to put anything that people just request up there, but yeah, shoot me a note and we'll add it to the list of things to consider. Sure, I'll dare so. I just want to reiterate, I mean, I'm not going to beat a dead horse, but I would suggest to you, Jillian, to consider that you don't have non bitcoin things on there. And the reason why I say that is you use the term get on the mission and that's start or you use the term the mission, I say get on the mission. But this concept of on being on the mission, of bitcoin adoption is starting to permeate through the interwebs a little bit. And I would just suggest be careful about that because like anything that you're doing to give a platform to something that's going to draw people off mission, what I call being on the mission and what I think a lot of other bitcoinners agree is on the mission I think is going to be looked at in the long term. I think you're going to see that that was a mistake. When you say things like, well, we're doing a bunch of experiments. Like what it sounds like to a bitcoin? Or is you're experimenting to figure out where you're going to make the most money? This is very fiat mindset, in my opinion. It's very much like opens you wide open to being sponsored by shitcoins. And that's not a good place to be, man. Yeah, I see you're right there. That we absolutely do need to stay focused. And we will. And I guess to that end, we have some principles that we're sure very firmly aligned with. One is we know that ultimately whatever we are doing is in service of that mission of increasing Bitcoin adoption. And so we're open to feedback and changing what we list, how the incentives work, everything else along the way, and we certainly will be. The other thing too is we're just not going to do certain things that you might ordinarily see with some other types of companies in this category. Right. So we're not going to be running ads, we're not going to be taking sponsorships from companies. There's not going to be any pay to play or like affiliate linking or anything like that. Really what we're building is okay, let me ask you a question then. The way the system works, if I'm understanding it correctly, is people boost with SATS, who gets the stats? If you write a great review and other users are sending you stats because they find it helpful, all of those stats go to you. Okay, but then how do you make money? Well, right now we don't. Right. We're a startup. What's the business model? How do you intend to make money? Well, so there are a couple of potential ways we can. Right. So what we're trying to do is build this marketplace that is a meeting place for potential users of products, people who have used them, and then the companies themselves. And so we want to be able to mediate a really great high signal conversation between these three sides of the marketplace. And so we think that that's going to generate a lot of value not just for users of people who review them, but also the companies themselves. I get the concept, but what I'm asking you is how do you make money on that sort of triumvirate of people talking to each other and creating this marketplace of ideas? Yeah. So one way that we could is partnering with companies directly in a transparent way. So if Swan or anybody else is talking to users on our platform and we're providing this meeting place for great quality conversation, then we can have companies that could potentially use that. Okay, so this is my point. This is what I'm getting at. What if that company that comes to you and offers you that sweet, juicy, lucrative deal, what if it's Sam Bankman Freed, and he's like, hey Julian, I'm going to give you $100 million if you help us out here. Well, the short answer is like, we're just not going to do that because it would so obviously undermine the integrity of the platform that it just wouldn't be I appreciate the hypothetical, but it would just be so contrary to what we're trying to do that it's just not something that is realistic for us. All right, cool. I hope time proves that out. Okay, we're very close to the end of the show. We've got time for maybe one or two more questions. We'll give you some time to make some closing comments, Jillian, and then we'll move to wrap. Go ahead. Wicked. Yeah, kind of. In summary and you can correct me if I'm wrong here, but it sounds like you might allow reviews to be written about companies that are crypto friendly or crypto curious. But in the long run, you don't plan to ever partner with those companies, and you plan to stick with only bitcoin, only companies that you may generate revenue from in the future. Is that correct? That's right. Yeah. We are a bitcoin only company for bitcoiners and bitcoin only companies. And to the extent that there's going to be any information on crypto products on our website, it is specifically for the purpose of steering bitcoins away from them. And so that will be borne out both by the content we produce and have on the platform. And also, I'm assuming, from what other bitcoin is going to help other bitcoin learn about as well. I would just, like, make one last thought. I mean, this is your company, obviously you run it the way you like, but the whole steering away thing, you're actually just giving them a platform that potentially will cause them to lose a lot of money. And my observation is that when people get burned, they figure that shit out on their own. They don't need to be led down these pathways where they might go look at this stuff. That's just my opinion. Let's go with simplest and then we're going to give you a few minutes to make closing thoughts, Jillian, and then we'll wrap. Go ahead, simplest. Hey, thanks so much. Yeah, a quick question because I'm just aware of the dynamics of how you keep these sort of platforms, these review platforms, honest. And I've always kind of wondered, like with Yelp and everything, just how they do that. And in your case, and regarding the point that Alex is making about the crypto so called curious companies is how do you prevent down the road? Like, if those companies become aware once you grow big enough to really be having an impact in the market, what if they use their armies of whatever to be coming in and just giving themselves glowing ratings? And like, I understand you have some measures in place, but when that becomes overwhelming and if there's a few of those companies or a number of them, how do you prevent them from providing millions of five star reviews to themselves, so to speak? Yeah, that's a really great question and so there are a couple of different ways that we can address that in the short term and then longer run it's going to be more of an engineering challenge, but it's certainly on our minds, right. In the kind of short to medium term, what we're going to do is implement basically a cost to posting. So right now we're kind of bootstrapping the marketplace by rewarding people just for posting reviews and sending them sentence of doing that. We want to get to the point where people are actually willing to pay a small fee to actually write and post their reviews and so on. Like a small scale. We think that's going to disincentivize people just costlessly attacking us with that information right at a small scale. But your question about how do we disincentivize or just prevent large scale attacks like that, then things get a little bit more sophisticated. But there's a really interesting concept called a web of trust, which is a way of basically preventing this kind of class of civil attacks on information platforms. Won't go into the details, but essentially you can implement a range of preventative measures where you can make the cost of posting scale exponentially. For people who are posting a lot in a short space of time. You can do a whole bunch of things where we can identify sophisticated attackers and impose basically a big enough cost so that it's not actually economical for them to engage in that behavior. ",timestamp:"01:48:01-02:07:24",topics:["ApolloSats","P2P reviews"],type:"twitter_space",weight:21.470260620117188},{boost:0,date:null,description:"The Bitcoin Village project in Nigeria",episode_title:"The Orange Sun ☀️ #Bitcoin News and Talk",guests:[{name:"Portland Hodl",profile_picture:"https://pbs.twimg.com/profile_images/1562306406526492672/LiqmI9NS_400x400.jpg",ref_id:"530aba21-392f-4156-9e91-4fc5c76fced1",twitter_handle:"PortlandHODL"},{name:"Miykael Woodward",profile_picture:"https://pbs.twimg.com/profile_images/1473433558475689985/CM0o3oWu_400x400.jpg",ref_id:"6fe02a78-4f07-47e7-8e64-b278a3167835",twitter_handle:"MiykaelWoodward"},{name:"Okin Mobi",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"bbd18918-7758-4bdb-b9a5-641bf92748a6",twitter_handle:"OKIN_17"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"Funsho Jimoh",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"a237ffb0-792b-484e-b12f-65a2b679eaf1",twitter_handle:"fnicencool"},{name:"prince ogbonna",profile_picture:"https://pbs.twimg.com/profile_images/1595693872637681664/TeWJzTut_400x400.jpg",ref_id:"0b0c70b1-23b1-4d98-b259-6dbb67b7481d",twitter_handle:"princejoj0"},{name:"The Bitcoin Village",profile_picture:"https://pbs.twimg.com/profile_images/1544318244789649410/kQ2G1MCE_400x400.jpg",ref_id:"d894aca4-36f6-4821-a00b-a4e860b19502",twitter_handle:"VillageBitcoin"},{name:"Masterguantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"29baf525-42eb-41a6-98f9-a0d6b4480af0",twitter_handle:"MasterGuantai"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/bef977d0-8a6a-441b-a8cb-58baebe2bfd7/b9ec2918-1059-48ac-b5ee-69018c42a07c.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"6cbed027-125f-454c-b03a-865df0b60d36",show_title:"Satoshi’s Journal",text:"intent of the village was, of course, first and foremost to have a school that we could educate that village about Bitcoin and then bring the plebs along as we build it so that they can see the proof of work. And using Satoshi's Journal, the media company, as the videographer, so to speak, as the media, we can bring that to you live from Nigeria. So it's actually a really cool way to be able to have the pleb, see what we're doing in real life, and then along the way, if donations want to be donated, so be it. And we're already seeing that, so we will document the whole thing all the way up from the foundation to final erection, to the ribbon cutting, to the first graduates of Lightning Development Academy, to you name it. It's going to be basically old, and I plan on when we die, we hope that there's many, many more schools built like this, and we plan on building more because we know that in the future, we will be, with the help of the plebs, educating the future businessmen and women of the world. And we're living a small snippet of a Bitcoin standard, and if we can instill education in this village in the form of what money is and what Bitcoin is, bitcoin being the best money ever known by man, we are basically allowing them to have a bright future. And I've told Olu and our team that we don't know what's going to happen in the future with what we're doing, but I'm confident that what we're doing and what all you guys are doing as plebs in your respective areas on an individual basis, you can move a mountain, so to speak. So don't ever underestimate what you can do as an individual. Yeah, so that's ",timestamp:"02:48:50-02:51:13",topics:["The Bitcoin Village","Nigeria","Bitcoin Adoption"],type:"twitter_space",weight:19.850265502929688},{boost:0,date:null,description:"Immutability of the Bitcoin consensus code ",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"2a3ee0fe-bcfc-412d-b1ee-2ba7f72528bd",show_title:"Swan.com",text:"something that's probably important to bring up for people who are brand new and they're listening to this and they're new to bitcoin. They're trying to figure all this stuff out. Bitcoin is always say, well, you can't change bitcoin it's mutable. Like there's no small group of people controlling it. You can't change it. Right? I think that deserves a bit of explanation, because some people are going to be listening to this, going, look, you just changed it. Does somebody want to take a shot of this? Tom or go ahead, please. Yeah. The consensus rules of bitcoin remain completely unchanged. This reference client offers new interface features and spending preferences that make certain things that were harder to do before easier to do, or certain things that were toggled off before toggled on by default now. And that's what happens in 90% of these releases of bitcoin core. It's like support for having multiple wallet files, support for enabling, replaced by fee transactions by default. This feature, which I haven't really looked into, that I guess allows you to spend the entire contents of a wallet without change or something. I'm not sure what this feature does yet. So these are new features that keep coming out from time to time, and occasionally some API call. Again, nothing to do with the consensus algorithm will get retired or replaced by something else so that it works better, or bugs are resolved where interface issues happen. But the actual operation of bitcoin itself remains unchanged, which is why only three or 4% of people are running this new release right now. And there's no incompatibility there's no one getting all this. Block was okay for version 24, but it wasn't okay for version 23, or vice versa. The same rules apply, the same spending rules for each transaction. The same consensus rules for each block remain completely unchanged. Any attempt to change those things is known as a soft fork or a hard fork. Hard forks don't happen in bitcoin, so they're soft forks. And these are very infrequent things. And if there was one in the works, everyone here would know about it. They're widely discussed, and they must be adopted by all minors, and they generally also need to be supported by all clients or an overwhelming majority of clients. Soft forks are somewhat backwards. They are backwards compatible, so that even if not everybody upgrades, everyone will remain in perfect consensus that the state of the chain is valid. But the miners almost can check for the new rules that come with software. So I'll kind of stop there because I'm already maybe over complicating a little bit of what your question was. I thought that was a pretty good explanation. I like to keep it even dumber, but I think that was pretty good for me. I always go back to the monopoly board analogy because I think they're just easy. Maybe I could offer one other little explanation that I hope will keep it easy but paint a big picture for people. Bitcoin core is the piece of software known as the satoshi client, and it's a piece of software that was first launched, that bitcoin launched on, and it does everything that bitcoin does. It allows someone to mine, it allows someone to create a wallet. It allows them to secure the wallet. It allows them to create transactions and receive transactions to that wallet. It does everything that the bitcoin ecosystem does. It's the reference client. And so it is bitcoin, and it establishes the peer to peer network. Like, if you run it, it connects it's the note, it creates a copy of the blockchain, it stores a copy of the blockchain. It does everything that you've ever heard that bitcoin does. And it is a very tight piece of software. But as it ages, the open source developers who work on it make it easier to use. Initially, there were only like a few buttons you can press and only a few things you can do. And over the years, they've added user interface improvements and additional commands that don't break the consensus algorithm that make it easier to do things. And that's really why new versions, for the most part keep coming out, that there are ideas that the community feels make it easier to use, better to use, more secure to use. And so those features are added to bitcoin core. Right, okay. But I think what people wonder is, if you can make changes to it, how can we be sure that it's not going to be changed for evil purposes against the best, it's not in the best interests of the common man, it's not going to benefit some small group of people over everybody else. How do we know that that's going to happen tomorrow? Yeah, the first point that I was making is changes to the consensus code of, like, what it takes to spend bitcoin or how many bitcoin can get generated or what makes a valid block are not changes that can be made in bitcoin core without complete consensus of the entire community. All the miners and all the use. Words that have nothing to do with Vicky. Try to use words that people are going to understand everything you just said. If I was brand new, I wouldn't understand a damn thing you just said. Right. Changes to bitcoin core don't change the rules of bitcoin, if that's what you want to say. Like, if someone tried to change the rules of bitcoin in bitcoin core, what would quickly happen is there would be a split in the network. It would be what's called a hard fork. And then people that splits the monopoly board into right, okay. People would have to if you want to do that, anybody can change that. But if you want to do that, you're creating a new monopoly board and saying, come play with me. And what ends up happening is nobody comes to play with you and then your monopoly game dies. Right. That's what's happened historically, yes. Perfect example is like bitcoin cash, right? They changed the rules, it made a different version of bitcoin, and now that version of bitcoin is worth like one half of 1% of what bitcoin is worth. BCH and BSV have basically been both deplatformed off the exchanges at this point. And they're just dying. They're just like these. They're making their last little twitches as they perish. ",timestamp:"00:48:29-00:55:14",topics:["Bitcoin core update","Satoshi client"],type:"twitter_space",weight:18.508241653442383},{boost:0,date:null,description:"UTXO and release of Bitcoin version 24.0 features",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"48de736c-df85-48ea-9856-e9b608a6025e",show_title:"Swan.com",text:"I was just going to echo back to some of the points that Tomar was making about utxels and stuff. Did you guys see that, the release of bitcoin cord 24.0? It has some really great features into it that allow users to sort of, like, spend all UTXOs. So when you're sending a transaction, you don't generate change, which I think it's really cool. It's a really cool feature for privacy. It's kind of like, explain that. What does that mean? You know how Sparrow gives you the ability to sort of create, like, if you're going to send bitcoin or receive bitcoin, you can create, like, new addresses in order to sort of get past the common input ownership heuristic of chain analysis. Use English. Use words that explain it, like you're explaining it to a five year old. Okay, so essentially what this code is allowing you to do is you can. Empty out a wallet. You know, when you send out a transaction, you're actually sending all of the amount of all the BTC you have. In that wallet address. You're sending it out, and then you're receiving a UTXO back from the receiving address, from the address you said, like, change. So in other words, if I'm buying something and let's say I've got one UTXO or one address that is in the denomination of a $10 bill, for example, I go and buy let's call it a cheeseburger for $5, I get $5 and change. And the problem with the $5 and change is that that's trackable, right? Yes, 100%. Yeah. And they're also including a change output randomization, which is kind of like what Monero does, but not really. It's a way to sort of, like, generate random amounts so that anybody watching the chain can't really tell which UTXO belongs to you. And they do it in a very technical way, but yeah, man, I'm super excited about it because this is increasing the level of privacy that you can achieve just with bitcoin core. These are small tweaks to the privacy enhancements of bitcoin. And these are all backwards compatible, right? Like, if people don't want to adopt this, they don't have to kind of thing. Yes. Ant, do you have any comments? Full RBF equals one. Oh, yeah, let's get that. Bitcoin core version 24. There's already 3.8, maybe 4% of total public bitcoin nodes running. It interesting across the world. ",timestamp:"00:45:21-00:48:27",topics:["UTXOs feature","Bitcoin core v24.0"],type:"twitter_space",weight:18.260805130004883},{boost:0,date:1671644776,description:"The Orange Pill app and it's piggybank feature",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b18df9d2-d034-4e1f-bcd1-d70b30fe9059/506355bc-c119-4f18-bf0b-abe9be8c17d6.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"fed2b741-e9a2-4858-bee8-faa259806d3e",show_title:"Geyser 🌊",text:"orange Fill up. Do you want to come up and tell us a bit about your project? Let me add it to the spaces too. Did you get the invite? I'd love to hear about what your features releases are up to. So Builders feature orangeville app. We have Lightning Piggybank, which is essentially an electronic cash piggy bank for children that accepts bitcoin sent over lightning. So this is a pretty small project, but it's a pretty sweet thing, actually. So let me add this to the it's pretty incredible, actually. I need to show you guys. I need to show you this. Imagine a piggy bank, but instead of an actual pig, it's like a cardboard box with a Geyser satoshi. Yes, we did. What's up, mate? I cannot do from the desk, though. You cannot talk? I'm not on desktop. Oh, no. You can't talk from desktop? No, it's got to be mobile. Yeah. It'S painful. Yeah, we got to talk to you. Yeah, exactly. But yeah, just to finish up this thought, there you have this really cool piggy bank which has this, like essentially this counter, this wallet counter of how many Satoshi the project has, which is really cool. And this person is just raising money connecting their Geyser project onto their Lightning Piggy Bank, which is fucking cool. I mean, this looks like a little DIY type of fun project that a father did for his son or something super cool. But let's go back to you, Matteo. Let's talk about orangeville app. Why not? What's up with you? Yeah, for sure. Orange. Bill app is a mobile app. We use Geolocation, which is the only approximate to connect you with nearby users, nearby pledge, and soon we'll let you find events. So meet up, conference, whatever. Actually, it could be anything because the user can create events straight from the App and then put the address. And then you'll be able to invite people there nearby to the event. So it doesn't have to be a meetup. It could be like a soccer game or picnic on the beach or anything. That's pretty cool. Hopefully it comes out January or February. Definitely February. And then we're going to launch the search feature, which will allow you to search for people all over the world. So if you're traveling and you're going to Ghana, you'll be able to look for clubs in the App there in Ghana. And then you can chat them up and say, hey, I'm coming to Ghana next week or next month or whatever, and I'd like to meet with you. I don't know anybody in Ghana. And of course, you can also search by gender for dating, age, profession. Right? We got to do yeah, I'm sure it's going to be like 95% guys, though. It's not can you confirm that? No, it's not. I don't have the number precisely because some users, they don't put a picture. And I know there's one woman that I talk to, obviously I talk to everybody on the app and you wouldn't know she's a woman, but it's a woman. But I think it's about 10% women and 90% men, which it looks it doesn't look good. But Tinder, which is the biggest dating app on planet, the ratio meant to women, it's 97% men, 3% women. No way. I know, it's crazy. Wow. But there's so much there's so many. Better than they are. Yeah, we're doing better than Tinder. Yeah. The point is that when you have, I don't know, hundreds of millions of user, it works even if you have one or 2%. But yeah. So with the search, you'll be able to search, obviously only if the other users have disclosed those information. So age, gender, profession, which is going to I think the profession looking for Profession is going to kickstart the Bitcoin secular economy, right? Because imagining you can look plumber in Oxford and then you can paint that because obviously if it's in the app, it's a bitcoin max. Right. So that's going to be very exciting. ",timestamp:"00:19:33-00:24:59",topics:["Orange pill app","Geyser","piggybank","piggybank"],type:"twitter_space",weight:42.97230338635478},{boost:0,date:null,description:"The solutions to main challenges facing the ranching industry in Nigeria ",episode_title:"The Orange Sun 🌞 Let's talk #Bitcoin & Cattle Ranching/Sustainability",guests:[{name:"Texas Slim",profile_picture:"https://pbs.twimg.com/profile_images/1589784780970795011/02jf0fqp_400x400.jpg",ref_id:"b4448c8e-9238-4aba-bd25-efb329ea5a72",twitter_handle:"modernTman"},{name:"Lucas",profile_picture:"https://pbs.twimg.com/profile_images/1596345084966014976/maviSGq3_400x400.jpg",ref_id:"e3adb591-b29f-435b-bd34-210f2dbcedaa",twitter_handle:"impossiblyso"},{name:"Firebust",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"0fb6c7f3-a673-4fe5-9599-8165800a2ff0",twitter_handle:"FireBursts"},{name:"Hamza Yusuf",profile_picture:"https://pbs.twimg.com/profile_images/1318064165030940672/sakbSOvT_400x400.jpg",ref_id:"03a74669-b653-4c57-8799-a312cb041089",twitter_handle:"Hamzayu28849293"},{name:"Adenekan's Father",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"b8259997-2ef0-4e6e-8d58-a69b5eda550a",twitter_handle:"AdenekanFatai4"},{name:"Adenekan",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"ca6a563e-0e84-4811-be82-a3b3cd12d399",twitter_handle:"AdenekanFatai4"},{name:"Heritage",profile_picture:"https://pbs.twimg.com/profile_images/1510397558652350469/jYOl00tU_400x400.jpg",ref_id:"98a6d9df-3c39-49ec-8a39-074e61af4ece",twitter_handle:"herrytheeagle"},{name:"Enoch",profile_picture:"https://pbs.twimg.com/profile_images/1596235105663533056/5mRUbLm3_400x400.jpg",ref_id:"4f8af040-3d0c-49c1-806e-aef89d8693fb",twitter_handle:"KazEnoch"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/a91f79fd-d85f-4440-b012-4bdafdc83341/f1d1c5b5-b8c9-44ed-a217-f75b398376d5.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"754762ac-7680-4b80-9ff4-f314ae65d146",show_title:"Satoshi’s Journal",text:"Good morning, everyone. Such an insightful, interesting topic we have today. Like when she said we don't have all the time to dictate it so that we respect our guest time. But Ariel, thank you, sir, for being with us. I mean, it's no small thing that you're here. We know what your time means to us and all that. Thank you. It's such an honor to have you here. I'll just go right into it. I may not be able to exhaust my questions and I planned on, but just to make some few comments here, that bitcoin builds communities. And I think that is what Texas Lime has been trying to point out. It's all about community building and we can achieve that. But the pain point for catering is in interior that quickly. I heard from identity is one, security is a big issue. And that's because one of the reason is that we're not doing ranching here. Okay? We're not doing ranching here. The farmers get to the railroads, get to move around and all that. We don't have a ranching system. But a ranching system is so important where they are set out, places where that is, well, knowledge that these cows can feed on, the advantage is big. The advantages, less risks of diseases, we can have less risk. And also when these cattle are moving and moving, they don't get the right yield in terms of adding weight and pounds and all that. So that's a challenge I think we can sort out. And how do we sort that out? I mean, I know we're having a big project where we can begin to have a bitcoin only ranching system built in Nigeria that will technique one, security two, it will help us foster bitcoin education easily. And also we begin to have the fattest and the biggest cows and the most healthiest cows that Nigerian can produce. I think satoshi journal, we can do that. We can push that. I know we have a big project, but for now let me just quickly drop so that we can respect that. Yes, this time. Thank you so much. Yeah, no problem. And last but not least, lucas, do you have a question or comment? Oh, I'm glad we had time. I'm sorry to come late to the conversation, but I work with towns in New Mexico and Colorado trying to get them to adopt bitcoin to begin a. Localized currency based on their water system. And I grew up on a farm ranch, and to me. Giving rural areas starts with like, valuing water and watersheds. More yeah, I totally drive with that. And I highly recommend that you follow Texas, slim and a dennett and anyone else on this panel if you want to partner up and see if you guys can help further what you're trying to do. It's right in line with what Texas and slim is doing ",timestamp:"01:59:32-02:02:45",topics:["Bitcoin ranching system","ranching"],type:"twitter_space",weight:17.55785369873047},{boost:0,date:1671644776,description:"The Bridge2Bitcoin project",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/b18df9d2-d034-4e1f-bcd1-d70b30fe9059/506355bc-c119-4f18-bf0b-abe9be8c17d6.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"c11fe5dc-bed6-408f-ae1b-650580184f3e",show_title:"Geyser 🌊",text:"love to hear from Bridge to Bitcoin, because I know you guys, I don't know if you've created it or if you're well, it's a Bitcoin asset project, right? Let's talk about that. Welcome. Hey, Mick. How are you? This is Christopher from bridge to bitcoin. Hi guys. How is everyone this evening? Good to be here. Great to join you guys in your space. So thanks for setting this up. Mick, apologies for joining late. So apologies if I go over ground that you've already talked about out. Oh, no, don't worry. Sorry for tagging you last minute. No worries. Thanks for tagging. It's been great to speak with Connet. And also I just want to bring it back. Well, actually, I'll start off by saying congratulations on getting 30 projects listed this week on Geyser. That's fantastic. That's really great. And just to resonate with what Connett was saying in terms of things get built in a bear market, I think it's fantastic. And you guys are really promoting it. So thank you for everything that you and the Geyser team are doing, helping people, or Bitcoin is build in this bear market. Because for me, for the rest of the team, it's really important that we build foundations now so we're ready as the ball comes out. It's fantastic to see. So for those who don't know about bridge, for those who don't know about bridge to bitcoin, we onboard merchants to accept bitcoin payments. And we received a grant from Geyser early this year. I'm ashamed to say we haven't yet, and it's been on our to do list for weeks, months, to put up a project, a crowdfunding project on Geyser. And we should really do that soon. But, yeah, we'll get that. It's definitely on our to do list. So we hope to do that soon, especially now, as you say, Nick, the ease of putting up a lightning address. And that makes it so easy, as Joe Nakamoto tweeted about earlier this week. So we shall definitely get on to that. But I just want to go back on what I heard Mateo from Orange Pellet talking about, because he dropped off the call now. I think he has. That's a shame. But I really resonate with what he was saying in terms of how. For. Us, onboarding merchants is one of the cornerstones of Bitcoin success, certainly from my perspective, and making the user interface really easy is really important. I sort of resonate with what Mate was saying in that I think most people are currently not fussed about decentralization, they're not fussed about privacy. We as Bitcoin as are, we get it, we've been down the rabbit hole. But most of the society, they want convenience, they want ease. And that's unfortunately why I think CBDCs are going to hit hard, because people won't do their homework, they won't do their research, people are going to welcome it with open arms, unfortunately. So for me, merchant adoption is really important and introducing that in a way that's really easy. So the way we do that for Bridget to Bitcoin, ironically, it's not Bitcoin that we're selling merchants. For us, it's about creating additional revenue for them by saying, oh, hi, guys. Hi, merchants. What we're going to do is we're going to create a new customer base for you called Bitcoinners, and they're going to come and spend their currency for at your shop service and it's going to create additional revenue. And so for me, it's a slow orange bill, because what happens is a lot of these merchants get bitcoin is coming and using their services or buying their products, and we as Bitcoin as we're fantastic customers. We're so enthusiastic. We travel miles, we buy stuff from all over the globe, we get it shipped over, because you as a Bitcoin business, we want to support you. But if you're new to Bitcoin as a merchant, you kind of get overwhelmed quite quickly with how much attention you get by accepting Bitcoin. And it's great, because what that happens, and what we've evidently seen is that those new merchants suddenly get this influx of bitcoiners and it leads them down the rabbit hole without us having to do anything. Because bitcoin is they make an impression because we're such happy people, especially in these economic times where everyone's feeling the pinch, we will go that extra mile, literally, to spend our bitcoin, to spend our SATS, and replace them. And we're happy about it. We're more than happy, we're enthusiastic. We're the best customers you could ever have. That's amazing. For me, it's kind of a cornerstone of how we can it's sort of a Trojan horse. Trojan horse orange pill. So we're going around to regular businesses so who don't even know about bitcoin, and that's what we're planning on next year. We're going to trade shows. We're just to speak to regular people. We've got no idea about bitcoin, and we're going to talk to them about this fantastic payment processing network called the lightning network. And bitcoin normally is quite late on in the conversation, actually, because as everyone, I think, on the call knows, the processing fees on the lightning network are next to zero. They're really cheap compared to what our fiat counterparts are charging. Plus we've got instant settlement, all those fantastic things. So we talk about it's really interesting. We talk about the payment rails. That lightning network is a payment rail and how better than it and eventually we get to the bitcoin piece. But, yeah, for me, it's about making their businesses more profitable, having additional revenue, and it's fantastic because you literally see them fall down the rabbit hole. So we had that recently with a small chain of pubs, just two pubs that we onboarded last month, I think it was last month or the month before. So this landlord, he owned two pubs and he was not a bitcoiner, and he was not interested in bitcoin. But when James, my partner, said, right, we can bring extra customers to your pub, they're called bitcoin as, and they will spend their currency, but it will create additional revenue, he was like, fine, okay, I'm not interested in bitcoin, but I am interested in additional revenue. So if they're going to come and spend their currency and I can give it to my local currency, great, because it's good for my business, I said, fantastic. ",timestamp:"00:51:38-00:58:00",topics:["Bridge2Bitcoin","Bitcoin payments"],type:"twitter_space",weight:35.60085180856705},{boost:0,date:1671735703,description:"Tips for building a bitcoin community",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"d65c7fdb-df02-4bef-a6e6-8d214f6284d4",show_title:"PUBLORD",text:"will be here, too, of course. Yeah. I'm planning on setting up on the Tribe relay. Like when I get up. I'm going to get a laptop next week before I head was just talking about it. Honestly. Brian, DM me a list of like, some of the top speakers you think would be able to explain it because look at us, we're a bunch of regards, as they say, explain it to us like we're five and wear masks in a swimming pool. Like that kind of level. Yeah. Let's talk offline, brother, because I want to hear more about this wearing masks in your cart. All right. Sounds good, Bobby. I'm heading out with Brian as well. Always a blast. I appreciate the invite. I thoroughly enjoyed the Noster talk, to be quite honest with you. BTC sessions. Have a wonderful bonanza tomorrow. Looks awesome. Yellow, I really came here today just to kind of be around you and just love this group. I love you, Preston. Man thanks again for stopping Preston. Good, deep Preston. Happy holidays. Thanks for all you do for the space. Preston. Oh, yeah, man, my pleasure. And I'm honored to be a part of this movement with everybody else. Okay. Let that putt with Preston fish sink in. Preston. Just let it sink in. Oh, wait, yeah. Preston, before you go, because listen, I had an idea for you guys, because, listen, I like to go skiing in Colorado every year. And there's a place there go to Breckenridge or Keystone, but they've got this one little area where they had Lindsey Vaughn do a run, okay? And this for the kids for the most part, even though the adults can't hit it either. But they've got I don't know how many hundreds of meters it is, but they've got to run at a time there, and you get to try to test yourself against a time. So what I'm thinking is pressing you go solo on that course early, all right? You put your score up there, and then anyone who beats it, you get some SAS. Preston puts up the initial score, and you get SAS if you beat it. Just saying. I'm there. On a serious note, I am going to this Jackson Hole event in 1 March to I don't know if it's the second or the 3 March, but I'll be out there for that if anybody's in that area. All right, guys, see you. Thanks for the have a good one, man. Take care. Okay. BTC session. Ben, sorry, one question. Just say one quick thing. Just because BT session is in and probably I wanted to get your support on it as well. I'm trying to start a small bitcoin community in South London. And I'll put in your chat and mentioned earlier, I just wondered if I could get support from you guys because of BT sessions just turned up just now. I just wondered if I could get some maybe some help on some talking points as well, because I'm just trying to build something that's very I wanted to be very simple conversational. It's the first one, but I want to build on it. It's free. And I'm going to get some sponsors from some beer companies so we can do free beer as a kind of a pool. But it's going to be my pub that I run. I put it in a chat. So I just wanted some help, really. It doesn't have to be big. It's not going to be nothing like the Harvey party right now, but I'm planning on being there as well, so maybe I can get some people to come along for that as well. Sounds awesome, man. What kind of people are you expecting? Is there going to be some experienced bitcoiners? Is there going to be a mix of newbies what's the demographic you're looking at first? It's yeah, mix. I mean, I've got an old far who's written about 20 books about my favorite football team, which is Crystal Palace, but he's got a few properties and stuff and he wants to invest in Bitcoin. And I said to him it's exactly the same thing I said. It's like if I tried to explain to you how a car works, the fact that he knows how a car works, you still need to learn how to drive it. I can tell you all the benefits of how good a car is against a horse, but you still need to learn to drive. You wouldn't give a car to a ten year old and all this sort of stuff. There's an education that still needs to be learned. So we got to start small and then build up because he's got property, he writes books and stuff. I've got mathematician coming, a C plus plus, programmer coming, people I know, and obviously there is some shit coinners who want to come along and learn. But obviously you look at the meeting, I put it in the chat, it is Bitcoin. And I've called it Bring the chat. As in BTC. That's the breakdown of BTC. But obviously it's Bitcoin and it's the first one, so it's kind of build from there. But it is a case of break them in gently and I don't want to be fun. It's not about let's overload them with too much tech. But I kind of want to go with if we want to go down the economic rule road, then we'll go down the economic rule if we want to get to understand how Bitcoin works. But it's a case of it will evolve because of I can do as many I could do one a week, I could do one a month. It's about that engagement and just making it fun and free. That's the main thing. I think that's great. What I would say is maybe if you're doing a couple each month, then you could look at it as there's always going to be kind of like a beginner night, and then there will always be like the secondary. One will be maybe more in depth topics that will be of interest to the people that have been there for a while and have leveled up or the ones that are coming in already with a good base knowledge. And then that way you various things, I could actually split it. So we do the first one and then we work out how to split it on the technical to the beginner type side of things. And then I could do alternative nights based on maybe work it that way. Because probably knows that I love these spaces and I love learning myself and I want to share what I learn. And I think the best way to learn is to share your knowledge. The more I want to share it, the more I have to learn myself to make sure that what I'm saying is correct. And that's why I love these spaces so much, because I'm addicted to him. London I would just posit one thing. And this is cool that you're here asking these questions when Ben is here, because if anyone wants to learn anything about Wallace in general, see reviews and learn how to do things, you go to BTC sessions on YouTube, you can learn so much. However, there's a different level when you can do it sort of in person and you see it happening. And Ben. We did Halloween in Charlotte, North Carolina. And what was really cool, and I was mentioning this earlier on the space, and people don't understand, even if you've been here a year, you forget how far advanced you are when it comes to not only understanding Bitcoin and what it means, but the technology behind it. So if you can set up London, just a simple thing where you just show somebody how to download a wallet, either moon wallet, whatever wasabi wallet, and send them some SATS, dude, they are blown away and they'll be new to the space. But I'll tell you what, that changes lives when they see that. When you do that, that is like putting a couple shovels about 3ft down into the ground to start that rabbit hole journey. When they see that you just sent them value outside of the Swiss system, it was pretty cool to see. And yeah, when I saw that, I forgot, man. Sometimes it's like when you used to believe in Santa Claus, man. Used to believe in Santa Claus. Then you got older. But when you see people that do Lightning Network for the first time, you believe in Santa Claus again yourself. You see that spark of joy in their eye. Wait, you don't believe in capitals? What are you talking about? I was going to say Santiago. I think he pulled it back. ",timestamp:"02:14:38-02:24:14",topics:["bitcoin community"],type:"twitter_space",weight:36.0744936342072},{boost:0,date:1671735703,description:"What bitcoin represent vs what Nodster network represent?",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"fbefee4e-b2e3-4635-88ac-800d3482e9f8",show_title:"PUBLORD",text:"on Craig's recommendation. I went to Jack.com. Was not what I thought it was going to be. Thank you, Craig. I had an education. Look, we'll talk about the notes a lot of times. All the fact Preston jumped in, I wanted to just have a few more words. I know he's got a busy schedule, but preston, you're coming to the end of 2022 investor podcast, one of the best ones we have any tweaks to next year. Guests are looking forward to have not really just doing the same thing in reference to the Noster conversation there. The thing that's such a game changer for folks is if you want to run your own relay and host your own data, you can do it. And the barrier to entry to do it is really low. In fact, that's what I've been doing while I'm here talking to you guys is I'm setting up my own relay to host my own data and to make sure fucking go that nobody can mess with it. And so when you look at what this protocol represents, when we look at Bitcoin, it represents it's like equal sign free and open money, free and open markets. When you look at Noster, it's similar to Bitcoin in the regard that equals sign free and open speech around the world. Nobody can shut it down. Right. That's what it represents. Now, we are in the very, very early days of this, and so whether we can pull it off or not at scale, I don't know. It sure seems like we can. When you have guys like Jack Dorsey in there, like every minute of the day working on the protocol and working on I don't know if he's working on clients or if he's just working on the protocol, but he's in there. And that guy wouldn't be in there if he didn't find a whole lot of promise behind the rudimentary building block of an event. That is where it all starts, with this protocol and everybody's just building around it. It's pretty exciting. Hey, Preston, are you able to limit who can see your data that you host by only letting people that you trade public keys with access it or something like that? Is that a concept? Yeah. And Brian, correct me if I'm wrong, because you seem to be pretty well versed in all this, but from what I understand, as I'm literally trying to set this thing up, I'm struggling a lot setting this up because this is not my area of expertise, but I have an appreciation for what it represents. I'm trying to learn along the way. But my understanding is you can host, you can relay whatever accounts you want, as many as you want or as little as you want, and people can connect to it. And you can allow that connection or not allow that connection, but it's creating this web of interaction between these encrypted messages that are of very small size, and they're just being passed around from relay to relay. Jim, are you basically asking, is there a way of blocking people? I guess it's more my thinking was more if you're going to host data, so maybe you want some of it open to anybody so you have a permission set on that data where anybody can just log on with a public key. You don't know if they're a bot or anything else, and they can see your stuff. But then maybe there's other stuff you only want your followers to see or something like that. I don't know. Maybe testify. Just let me know. There's a new version of Domas just got released. Is that relevant? I'm sorry. We ",timestamp:"01:35:32-01:39:29",topics:["Nodster network"],type:"twitter_space",weight:35.643925540367206},{boost:0,date:0,description:"The Genesis crypto lending fraud",episode_title:"The Orange Sun ☀️ #Bitcoin News and Talk",guests:[{name:"Portland Hodl",profile_picture:"https://pbs.twimg.com/profile_images/1562306406526492672/LiqmI9NS_400x400.jpg",ref_id:"530aba21-392f-4156-9e91-4fc5c76fced1",twitter_handle:"PortlandHODL"},{name:"Miykael Woodward",profile_picture:"https://pbs.twimg.com/profile_images/1473433558475689985/CM0o3oWu_400x400.jpg",ref_id:"6fe02a78-4f07-47e7-8e64-b278a3167835",twitter_handle:"MiykaelWoodward"},{name:"Okin Mobi",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"bbd18918-7758-4bdb-b9a5-641bf92748a6",twitter_handle:"OKIN_17"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"Funsho Jimoh",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"a237ffb0-792b-484e-b12f-65a2b679eaf1",twitter_handle:"fnicencool"},{name:"prince ogbonna",profile_picture:"https://pbs.twimg.com/profile_images/1595693872637681664/TeWJzTut_400x400.jpg",ref_id:"0b0c70b1-23b1-4d98-b259-6dbb67b7481d",twitter_handle:"princejoj0"},{name:"The Bitcoin Village",profile_picture:"https://pbs.twimg.com/profile_images/1544318244789649410/kQ2G1MCE_400x400.jpg",ref_id:"d894aca4-36f6-4821-a00b-a4e860b19502",twitter_handle:"VillageBitcoin"},{name:"Masterguantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"29baf525-42eb-41a6-98f9-a0d6b4480af0",twitter_handle:"MasterGuantai"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://s3.amazonaws.com/stakwork-uploads/uploads/customers/2707/media_to_local/a99c4b03-009f-4027-a9c7-3c249a0cf9b7/a99c4b03-009f-4027-a9c7-3c249a0cf9b7.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"663836ff-8d5a-4037-a62f-72568fff46f1",show_title:"Satoshi’s Journal",text:"that's very interesting. But Genesis future is more uncertain because the business is heavily focused on lending out customer crypto and has already engaged restructuring advisers. The crypto lender is part of DCG, the conglomerate controlled by Barry Silbert. SEC officials said the possibility of a DCG or Genesis bankruptcy had no bearing on deciding whether to pursue a charge. It is the latest in a series of recent crypto enforcement actions led by Gensler after the collapse of FTX Bankman Freed's crypto exchange late last year, Genzler was roundly criticized on social media and by lawmakers for the SEC's failure to impose safeguards on the nascent crypto industry. Gentler's SEC and Commodity Futures Trading Commission, chaired by Roston Benham, are the two regulators that oversee crypto activity in the US. Both agencies filed complaints against Bankman Freed, but the SEC has of late revved up the pace and the scope of enforcement actions. The SEC brought a similar action against now bankrupt crypto lender BlockFi and settled last year. Earlier this month, Coinbase settled with New York State regulators over historically inadequate know your customer protocols. Since Bankman Freed was indicted on federal fraud charges in December, the SEC has filed five crypto related enforcement actions. So the SEC is finally getting some stuff done. They have been criticized, and it's really great to see them finally do their job. And hopefully they'll essentially what I see happening is, of course, the Winkleboss twins are pissed because they are like a little cornered animal. And you know what happens when you corner an animal? They'll fight you back, but they're fighting back. And they're in a corner because they're trying to get their customers paid back. But they're having a little war with Barry Sober, and Barry Sobert is not paying them back. So now you got basically a pending, they're probably going to go and sue Barry Sobert and then now you have the SEC charge them with those charges. So once again it's just going to show you this is all inevitable. They should have all known better but I think it just they're not idiots. They should have known better but I think that they do idiotic stuff because there's already been a precedence by which people that do bad stuff, they end up just getting bailed out anyways or they just get out of it with a little slap on their hand. And we saw that many times in our history. And it's sad because basically these crypto exchanges are going to be probably let off with a small little slap on the hand but at the expense of millions and millions of dollars from their customers who they basically took advantage of. They were not good stewards of their customers money and they were using that customer's money to borrow against, to buy more assets and just become over leveraged. So we don't know what the balance sheets of Barry Silbert's DCG company is and we don't know the balance sheets of Gemini but yes, who knows, they may be worse than what we think and this could cause further cascading of crypto in general. The unfortunate part about this is that as we all know, crypto and bitcoin are two separate things. Bitcoin is not competing against any of those cryptocurrencies that are on exchanges of which there's 20,000 plus and that's still defined. But essentially as those cryptocurrencies as they get rug pulled and litigated against, so to speak, bitcoin is going to go down with them. But when it's all said and done, bitcoin just keeps doing what it's supposed to be doing every ten minutes, just block by block verifies transactions, validate transactions and it could give the rats ass about what's happening around it. Nevertheless, the cascading effect of the shit coins caused bitcoin to go down. So who knows, there might be some further damage, so to speak. Damage is not the right word. There can be some further lowering of the price of bitcoin just because of the shit coins getting finally rug pulled by regulation. It was highly necessary and I'm glad that they're finally doing something. It'll be interesting to see what the SEC does as far as new laws and regulation that come out of this. And it will also be interesting to see if the Winklevoss twins have the liquidity to be able to sustain multiple litigations and perhaps even further degradation of the value of what's on their balance sheet. I think another thing that's interesting we all know about Binance, it'd be interesting to see what their balance sheets look like if they're as bad as we think they are. According to Binat's CEO, in a stone cold manner, he told them that they're good to go and they have the liquidity to sustain even a further drop. But that was a huge liquidation. They went under anyways. We're seeing it all. Rugpool and Bitcoin will stand on the end, we all know that. And it'll be interesting just to see if everything pans out. Just another game, theoretically, in bitcoin. ",timestamp:"00:41:05-00:48:14",topics:["crypto lending fraud","DCG","SCC","Winklevoss"],type:"twitter_space",weight:14.263422012329102},{boost:0,date:null,description:"Decentralization of bitcoin and holding ",episode_title:"Café ₿: Thanksgiving Special 🦃 w/ the Café Bitcoin Crew",guests:[{name:"Rob Hamilton",profile_picture:"https://pbs.twimg.com/profile_images/1524033110630969351/wTUr8S36_400x400.jpg",ref_id:"94b18625-4778-4cfe-9c78-823704d1c1b1",twitter_handle:"Rob1Ham"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"DJ Satoshi",profile_picture:"https://pbs.twimg.com/profile_images/915987644043030528/5nh3JQSz_400x400.jpg",ref_id:"02ae35cb-3728-441f-84c5-a8db5d9150b4",twitter_handle:"satoshi__tomiie"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Shaeroden",profile_picture:"https://pbs.twimg.com/profile_images/1560742113410678789/cHZ2tUjU_400x400.jpg",ref_id:"0da06a5c-038f-4737-9af7-17bed3712e68",twitter_handle:"Shaeroden"},{name:"Andres",profile_picture:"https://pbs.twimg.com/profile_images/1401952614795943950/aL2h3Wb4_400x400.jpg",ref_id:"db4abfe9-e3bb-4ffa-9783-ce67f5b20270",twitter_handle:"andresvbr9"},{name:"Peter Ansel",profile_picture:"https://pbs.twimg.com/profile_images/1374726811221954565/R7ttqYMI_400x400.jpg",ref_id:"2d418514-e03c-414d-8ed1-10c894aacb6e",twitter_handle:"peteransell"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c25e3b3c-b5ef-435e-9e7d-9e406089e7b1/572908d4-f2cc-4c7b-980c-8359d2c8000d.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"2acb23ed-c7ca-4f51-abb6-bfcc0a87316a",show_title:"Swan.com",text:"I'm amazed you fell for like well, I don't know if they fell for the Rogers thing, because I think Roger believed what he was saying, but it's like, who's Roger to understand how an exchange works, right? Because I don't know. I was friends with Roger. I was talking to I know, but I was friends with him. I was talking to him all the time back then. I was working with the guy, and even I was like, but I worked a bit instant, so I had to work directly with Mount Cox back then. And it was such a shit show because I had all my funds on Cox, too. But after that experience, I was like, okay, I'm never using Cox again. These guys are a train wreck, dude. You guys got to understand that Brad was raised not only Mormon, but Canadian, which is a double whammy of gullibility. That's true. The truth is right there. Take that with some extra maple syrup today. Wow. Good one. It's amazing you're not a bee catcher, Brad. Well, Brad's also smart. He's just really nice. So he keeps being like, oh, I guess it's true. Maybe Roger does know things I don't. That's the one thing, though, I knew the entire time, was that Bitcoin was the thing to pay attention to, and you always wanted more Bitcoin, and that decentralization was the most important thing about why this asset is valuable in the first place. And sacrificing any form, any sort of decentralization, invalidates the investment case for bitcoin. So if you're going to make the blocks bigger so that people can't run nodes as easier or set a precedent that some centralized cartel of businesses or devs even, can just change the parameters of either the code or the monetary policy, that completely invalidates the sound money properties of the asset. Which is why I never fell for bitcoin cash or ethereum or any of these things, because decentralization is the most important thing. So that also is what I focused on the whole time. It's like, this is only important because of decentralization. And you have to maximize decentralization even at the expense of pumping mentals, as Richard Hart would like to say, or Fomonomics or whatever you want to call it. Like the ethereum people sacrifice their ceremony properties for ponzi. Nomics, they actually made a centralized change in the code with the IP one five nine to try to actually make the stock to flow meme of ethereum better than the stock to flow meme of bitcoin. And it's the stupidest thing, and I'm so glad, is that when they became Brad, is that when they became ultrasound money? Because I have to tell you, I've talked to many ultrasound technicians and none of them are using ethereum. So I don't think it caught on. Hey, Brad, I think the real lesson that I've learned from you, because I love when we get in clubhouse and we just rib you, it's a good time. But I think the real lesson of Brad is you can make some of the dumbest, stupidest fucking mistakes for a decade and you still come out just fine. You have a core bitcoin position. Yeah, it's good. Literally, you have to do this thing where if you're not a conservative person who's able to just safely rationally hold bitcoin and not get distracted, you know, auto diagnosed me with what was it? Activity bias. Auto. Yeah. So this is probably worth going over for anybody in the room, but everyone has activity bias. It's not just Brad. Brad just has maybe more pronounced activity bias than others. Hyperactivity bias. Yeah. So this comes from evolutionary biology, essentially, which is that, like, let's imagine you're a small mammal on the grasslands and the grass blows, but it's above your head, you can't see what's behind it. Nine times out of ten, it's going to be the wind that's moving the grass. One time out of ten, it's going to be something that's going to eat you. And so it behooves you to run away to have a strong bias towards action. Which is why all organisms on earth have a strong bias towards action. Right. Cause one out of ten times you get totally eaten by a predator. So in markets, though, this works against us because you want to have a strong bias against action, and it's very difficult to just sit still like this is the quote I posted from Jesse Livermore's book, which, again, go read reminisces of a stock operator, this bear market. It's a very instructive book. It was written in the early 19 hundreds. And interestingly enough, a lot of what was going on, like pre collapse of 1929, is very similar to what's going on in cryptocurrency today, like the bucket shops and everything. It's really an interesting parallel. But basically you want to have a strong bias against action in investing terms. And so huddling at its most simple basic level is just getting a bitcoin position and then saying no every single day to selling that bitcoin position. That's it. And then if you want to sort of judo your activity bias, right, make it work for you, you go from huddling, which is mainly a passive activity, to stacking SATS, which is an active activity. So what do you do when the price is down? You stack SATS, right? And this is a way that you could actually hijack your own activity bias for something beneficial, but you don't want to use your activity bias to trade chick coins to sell in and out of your position, generate taxable events. You want to sit on your ass and do nothing. And that's the hardest thing to do. I love it. This episode of Cafe Bitcoin has been legendary and epic in that this will be the one remembered as when American hotel compared Brad Mills to a small furry mammal in the grass trying to avoid being eaten by predators. I thought it was the wind. You blow us canadian and not a Mormon. Yeah, not anymore. One of the things that you said, the thing that you just said was great and all, but most of us don't have the ability to control our activity bias. So I think most people, like some less so than others, they're going to come in and they're going to try to trade. They're going to go search YouTube about crypto and they're going to find, like, you know, people who think they're smart, who are actually just drinking koolaid themselves. And there's a lot of people in that category, like, sure, there's bitboy and people like that who are just grifters that are getting paid to show garbage, but then there's like, people who are unbiased, they're not getting paid to show garbage. They actually are good at technical analysis and trend following things like that, but they drink the Kool Aid of Defy and crypto and NFPs and they start giving smart sounding advice to new entrants and then they just create a whole class of people that are going to just go repeat all the mistakes that all the early bitcoiners made with their activity bias. So the thing is I think we really should push the idea of for new market participants and even people in here that maybe got ripped off on Luna or Celsius or FTX or any of these things we've all kind of had those types of experiences in the past. The way you get forward from it. I think honestly if you can't do what Hauddle said and actually control your activity bias and recognize that and just sit patient just buy and hold and dollar cost average and maybe had your risk at the top or something like that is create an internal bitcoin maxi personality like this is what the allship owners should do they should drink the bitcoin Koolaid like Jekyll and Hyde style have a bitcoin maxi personality inside of them. Even if they think bitcoin Maxis are cringe and stupid and boomers and don't understand utility, blah blah blah, every shift corner should have a bitcoin Maxi inside of them. Wait that doesn't sound right. Okay, so every shit corner should have a bitcoin maxi inside of them that controls their bitcoin, the private keys to the bitcoin and that bitcoin maxi personality needs to sign up with Casa or Unchained or somebody to do multi stig to protect the other personality. The FOMO sapien activity bias personality from going out and gambling away all their money. Yolo betting on some ICO buying a JPEG because Gary vee told them it's going to get them into his bedroom or something like that there needs to be like everybody should have a bitcoin max inside them. I'm just calling it that's what they got to do. And let the bitcoin maximize personality. Manage your bitcoin and segregate your portfolio so that you're protecting yourself from your Dgen side and if everybody did that they'd be like me because I made all these mistakes and then I'm still here and bitcoin changed my life. So most people are going to shit coin they should just do it in a way that protects themselves from what inevitably is going to happen. ",timestamp:"01:43:16-01:52:28",topics:["ultrasound money","Ethereum","bitcoin maxi"],type:"twitter_space",weight:13.933148503303528},{boost:0,date:1671644776,description:"Some of the importance of Bitcoin Creator spaces and how it helps Bitcoiners",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/885fe09b-bb21-49a5-8667-3c73ed36918f/196dc1e8-c7a4-4dc7-902f-d00107aefb42.mp3",node_type:"clip",pub_key:"0372cd0c8469f2034336a243e018d4d60e07efef8e7d10417807da1173bd5b002f",ref_id:"c80659ad-87eb-488c-be5d-00ac386a2b15",show_title:"Geyser 🌊",text:"Did you get the invite? I'd love to hear about what your features releases are up to. So Builders feature orangeville app. We have Lightning Piggybank, which is essentially an electronic cash piggy bank for children that accepts bitcoin sent over lightning. So this is a pretty small project, but it's a pretty sweet thing, actually. So let me add this to the it's pretty incredible, actually. I need to show you guys. I need to show you this. Imagine a piggy bank, but instead of an actual pig, it's like a cardboard box with a Geyser satoshi. Yes, we did. What's up, mate? I cannot do from the desk, though. You cannot talk? I'm not on desktop. Oh, no. You can't talk from desktop? No, it's got to be mobile. Yeah. It'S painful. Yeah, we got to talk to you. Yeah, exactly. But yeah, just to finish up this thought, there you have this really cool piggy bank which has this, like essentially this counter, this wallet counter of how many Satoshi the project has, which is really cool. And this person is just raising money connecting their Geyser project onto their Lightning Piggy Bank, which is fucking cool. I mean, this looks like a little DIY type of fun project that a father did for his son or something super cool. But let's go back to you, Matteo. Let's talk about orangeville app. Why not? What's up with you? Yeah, for sure. Orange. Bill app is a mobile app. We use Geolocation, which is the only approximate to connect you with nearby users, nearby pledge, and soon we'll let you find events. So meet up, conference, whatever. Actually, it could be anything because the user can create events straight from the App and then put the address. And then you'll be able to invite people there nearby to the event. So it doesn't have to be a meetup. It could be like a soccer game or picnic on the beach or anything. That's pretty cool. Hopefully it comes out January or February. Definitely February. And then we're going to launch the search feature, which will allow you to search for people all over the world. So if you're traveling and you're going to Ghana, you'll be able to look for clubs in the App there in Ghana. And then you can chat them up and say, hey, I'm coming to Ghana next week or next month or whatever, and I'd like to meet with you. I don't know anybody in Ghana. And of course, you can also search by gender for dating, age, profession. Right? We got to do yeah, I'm sure it's going to be like 95% guys, though. It's not can you confirm that? No, it's not. I don't have the number precisely because some users, they don't put a picture. And I know there's one woman that I talk to, obviously I talk to everybody on the app and you wouldn't know she's a woman, but it's a woman. But I think it's about 10% women and 90% men, which it looks it doesn't look good. But Tinder, which is the biggest dating app on planet, the ratio meant to women, it's 97% men, 3% women. No way. I know, it's crazy. Wow. But there's so much there's so many. Better than they are. Yeah, we're doing better than Tinder. Yeah. The point is that when you have, I don't know, hundreds of millions of user, it works even if you have one or 2%. But yeah. So with the search, you'll be able to search, obviously only if the other users have disclosed those information. So age, gender, profession, which is going to I think the profession looking for Profession is going to kickstart the Bitcoin secular economy, right? Because imagining you can look plumber in Oxford and then you can paint that because obviously if it's in the app, it's a bitcoin max. Right. So that's going to be very exciting. The Meetups is really the first iteration of the social movements, right? It's a social network that Bitcoin is creating that you are enabling through the IRL meetups. But that's really the first iteration. Well, the Meetup is every meet up is not necessary. You can search for plumber and connect with the guy or girl, whatever, and then it's like you found the plumber online instead of on the app. And, you know, he's already a player because he's on the app and he's paying to be in the app. So we filed through all that kind of stuff. So Profession, I think, is going to be a big game changer for Bitcoin ecosystem. And then location again, travel, or if you just move to a place or whatever, and then obviously user name. So if you want to connect with some specific plan. So the search yeah, it's going to be amazing. So when's the search coming out? I think we're launching the search on a limited version of Search. We can only search by username probably this week or next week. And then we're going to expand it like, we're going to expand it ideally in January. Right now we're focusing 100% on Android because obviously, especially in some part of the part of the world, most labs have an Android. And so we need to be on Android ASAP, which will come in January. But yeah, searches come in ASAP. I think January, February, like Q One, 2023, we're going to launch pretty much everything. And then after that, we're going to launch the Orange Pages. So Orange Pages, it's in the name, right? We have partnered with oh, nice. Yeah, we partnered with BTC Map, and they have all the merchants that accept bitcoin. We got the API, and so you'll be able to look grocery store or airstalls, whatever you need right through the app on a map. So one place to find all these people, all these merchants and businesses and friends and girlfriend and boyfriend and events and meets up. So it's one stop. For all on Top Shopify. All the Bitcoin connections in real life in the offline. Right. The goal is to foster as many in real life connection as possible because I think that's how you win the battle when we meet him in real life is 100 times more powerful than meeting sending a DM or an email or a zoom call, right? Yeah. Right. So where does Geyser come in here? You guys are launching a project, right? We are. So what's the idea? Like, what's the idea behind the project? Yeah, probably today, maybe tomorrow. We're going to launch the campaign on Geyser. If you get a membership, orange fill up is a membership based up. Why? Because first, we don't want to do advertising. Everybody hates advertising, I think, especially the clubs. Second, we don't want to do any tracking of data, any data monetization, any of that. Third, we don't want spammers and scammers and bots and people that they just don't care about Bitcoin. So the app is membership based. If you go through the app, unfortunately, you have to pay with Fiat because Apple doesn't let us take payment in SATS, but we also have membership in SATS that you can buy on our website, which is Theorangeprop.com. Actually, it's my domain. It's also bitcoin is social. Just put it yesterday and then on Geyser. Nice. Yeah, I know. It was available. That's amazing. $10 on Geyser. That's going to be worth millions ",timestamp:"00:19:42-00:29:28",topics:["Bitcoin Creator space"],type:"twitter_space",weight:33.67529732328345},{boost:0,date:null,description:"Problems with the beef industry in the United States",episode_title:"The Orange Sun 🌞 Let's talk #Bitcoin & Cattle Ranching/Sustainability",guests:[{name:"Texas Slim",profile_picture:"https://pbs.twimg.com/profile_images/1589784780970795011/02jf0fqp_400x400.jpg",ref_id:"b4448c8e-9238-4aba-bd25-efb329ea5a72",twitter_handle:"modernTman"},{name:"Lucas",profile_picture:"https://pbs.twimg.com/profile_images/1596345084966014976/maviSGq3_400x400.jpg",ref_id:"e3adb591-b29f-435b-bd34-210f2dbcedaa",twitter_handle:"impossiblyso"},{name:"Firebust",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"0fb6c7f3-a673-4fe5-9599-8165800a2ff0",twitter_handle:"FireBursts"},{name:"Hamza Yusuf",profile_picture:"https://pbs.twimg.com/profile_images/1318064165030940672/sakbSOvT_400x400.jpg",ref_id:"03a74669-b653-4c57-8799-a312cb041089",twitter_handle:"Hamzayu28849293"},{name:"Adenekan's Father",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"b8259997-2ef0-4e6e-8d58-a69b5eda550a",twitter_handle:"AdenekanFatai4"},{name:"Adenekan",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"ca6a563e-0e84-4811-be82-a3b3cd12d399",twitter_handle:"AdenekanFatai4"},{name:"Heritage",profile_picture:"https://pbs.twimg.com/profile_images/1510397558652350469/jYOl00tU_400x400.jpg",ref_id:"98a6d9df-3c39-49ec-8a39-074e61af4ece",twitter_handle:"herrytheeagle"},{name:"Enoch",profile_picture:"https://pbs.twimg.com/profile_images/1596235105663533056/5mRUbLm3_400x400.jpg",ref_id:"4f8af040-3d0c-49c1-806e-aef89d8693fb",twitter_handle:"KazEnoch"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/a91f79fd-d85f-4440-b012-4bdafdc83341/f1d1c5b5-b8c9-44ed-a217-f75b398376d5.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"d8a44c3b-6219-49d5-9a35-4b2ca5972d7c",show_title:"Satoshi’s Journal",text:"at this time I wanted to get the perspective of Texas Lim and Dennekin and Hansa, I'm sorry if I'm mispronouncing your name, but Texas Limb, could you just briefly tell us what the problem is with the beef industry in the United States relative to the commercialization thereof? And then I also want to just hear the same thing from Adenikan to see if they have similar problems as we do here in the US. Please go ahead there. Texas Lim. Yeah, you brought up earlier basically the multinational processors in the United States and whenever we say processors, okay, that's the same as, you know, in Nigeria then using the butcher. So let's make sure everybody has that perspective and understanding. We have processors and butchers are basically the same thing. They're the ones that harvest the animal, they're the ones that cut the animal up and in the United States they also control the distribution. What has happened in the United States throughout the my lifetime. Basically. I'll use Texas as an example. We had a processor butcher in every county across the state of Texas. That was 254 butcher processors. They were called microprocessing centers. They're called abortoires butchers, whatever you want to say, but they're the ones that harvest the animal. Well, in my lifetime now, those 254 processing centers are no more. And what we have is for multinational processing, basically corporations, they're not basically housed in the United States. Three of them are from Brazil, South America. And what they do is they control the butchering, the processing of the cows. They also control the distribution. The distribution is a global market in which United States consumers do not have access to. The beef has grown in the United States, the beef is harvested. In the United States, the beef is shipped overseas to the highest bidder. This happens across many different countries. In Australia, they're up against the same thing. A lot of their beef is shipped across seas to the highest bidder. Same thing in Africa. Africa's beef is not basically being consumed by the African people in a way. Or basically the distribution is not controlled by the butcher processors. I'm not for sure exactly on the same level, and it can speak to that. But in the United States, we've always said that we have to feed the world. Well, we never did feed the world. What we did was we created distribution centers across the world to a lot of the highest bidders. And what we did in the United States is we quit feeding our communities. We took the most powerful food sources and we shipped them overseas to where the American people are suffering. And one of the biggest bottlenecks to our basically beef in the United States are these multiprocessing centers, the multinationals JBS Cargill, national and Tyson. And so they have a lot of poll across the globe. Nigerian beef is also sold on that same global brokerage market, same as Australia, same as South America, same as so many small countries that basically do not have access to sound money. And basically all of that energy is stolen and shipped to the highest bidders. Eliminating any form of distribution to local communities. That is what we have to get back to. That's what the Beef Initiative is accomplishing right now. We're building out nodes across the United States where we're back to feeding our communities first, and then we distribute across the nation. And we do it by ourselves. We do not have to have permission from the multinational processing centers. We have our opening up our own processing centers. And therefore we control the distribution. And that's kind of a good long and short of it as far as what we are up against. As I say, the biggest threat to the American rancher at this time is the multinational processing centers, which takes away basically the power to steward the animal to its right age and age and weight and basically how they do that is they do not give access to processing centers in a timely manner. And a lot of times you will have to basically schedule kill dates within the cattle industry in the United States a year and basically 18 months out. That is hard to do as a rancher in the United States, because you quit being a rancher and what you become is basically a babysitter of that cow all the way until it's going to be harvested and the money is made by the distribution in the processor, not the cattle rancher. Whenever you do not have access to that processing center, you lose out probably two thirds of what your margins could be in the United States. And therefore, if you have access to a decentralized processing center, as you do through the beef initiative, let's say you sell a cow, if you're having to use one of the multinational processings, you'll make maybe $400 profit off that cow. If you're able to take that cow all the way to the consumer themselves, in which the beef initiative gives people market access to be able to do that, $400 basically turns into anything between probably 25 and $3,500 margin. So you can understand how much control of the margins profits that the distribution, the multinationals have taken away from the American rancher. I have to say that it's probably the same in a lot of similarities across the globe, because if you control the butchery, the processing, you control the cow in a way that has been taken away from the rancher. And I think that's amazing, the parallel, because the fact that money has been controlled since the advent of money by central authorities so as to have power over the people, it's the same thing. Cattle industry and in farming is the powers that be. If they can control the land and they can basically monopolize the farming and ranching, then they can control the people to a certain extent. That's the reason why we have to get onto a decentralized money and onto decentralized farming. And that's essentially what the beef initiative ",timestamp:"00:53:50-01:00:33",topics:["Beef processing centers","Beef distribution","butchering"],type:"twitter_space",weight:13.423835754394531},{boost:0,date:null,description:"Changing the narrative about Stackchain and Bitcoin",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"d72f67b3-c42f-43cf-8e01-47065fe8e638",show_title:"Swan.com",text:"Good morning. Good morning. Alex is getting him up here, but what's up, Derek? What's up, Hand? Good morning, sir. Morning. I've seen you down on the trenches, Derek, defending the stock chain. Oh, absolutely. There's a lot of defending going on last evening. It was fun though. We made progress. He seems to be changing his stance. Yeah, it was great. It was actually one of our best shows we've done in a while. Tell us a little bit about it. Well, yesterday during Cafe Bitcoin, brad Mills had tweeted out that Stack Chain was a shit coin and then proceeded to run with that narrative throughout the day and different polls and post comments. Whatnot? Peter and Greg Foss and others called him out during the show. But throughout the day he continued to talk about Stack Chain in that way. We thought that it was kind of a lack of information available, right? And we had hoped that once he saw what Stack Chain was, our community project, what it was all about, what we were doing, that he would change his tune. So we invited him to our evening spaces and for 2 hours we talked Stack Chain about basically all of our accomplishments and different things that we've done over the past four months. And he changed his tune. He is not sure about our massive Twitter thread, the actual Stack Chain itself, but he understands and understood every other aspect of our community from lightning nodes to support, to donations across the world, to bitcoin communities, to having fun and stacking stats. It's an interesting progression. What did he not get about the long Twitter thread? He took back his initial statement too because he was talking a lot of crap yesterday. I mean, he got a first hand experience of that Stack Chain energy all day. He was basically calling everyone in Stock Chain shit coin and calling Stack Chain a shit coin and so doing like polls and all kinds of stuff. And so Stack Chainers weren't too happy about that. I'll tell you what though, him talking about it was great for Stack Chain because it spread awareness that a lot of his followers had no clue what Stack Chain was. We had new Stackers come in last night and do stack joins and get new blocks. So. Hey, fudd is great for stack chain. Apparently it spreads awareness. It's like bitcoin. It's funny, it's like the ECB, the more they shit talk bitcoin, the more relevant bitcoin becomes. Absolutely. They don't even talking about bitcoin. What's that like? Yeah, like they're huge. Bitcoin is so small, what are they. Even doing talking about bitcoin? No, that's the point though, if they are talking about it, that means it is relevant regardless of whether they're trying. You see what I'm saying? Oh, I see. All right, I'll be right back, I'm going to grab my coffee. Do what you want. I am pretty surprised that he stayed in there for the whole two and a half hours and just kind of listened to what everyone had to say. I thought that was actually pretty decent of him. Absolutely. Especially in the beginning he was getting attacked a little bit, everyone's defensive of our community, so I think that he had a fixed skin and he stayed around and he learned his final conclusion was basically like oh, Stack Chain similar to the community that I have over on Clubhouse. I was like, well yeah, we're literally just friends buying bitcoin together and having fucking fun. He compared it to the original Pleb movement, which I wasn't really understanding that comparison, but it was an interesting conversation for sure. That poll that he did was pretty funny. Most people are like what is Stock chain, right? And then Lauren's response in that thread was the absolute best. She did another poll. How many of these people voting are shitcoiners or followers or shit winners? Really funny. Yeah, I wasn't triggered at all. Alex. Mowing bare action coming in. No talking about bitcoin at Thanksgiving. Marin yeah. Alex my mom sent me another text yesterday. I don't know what her vendetta is about bitcoin, but I can't talk about it at Thanksgiving now. I have online friends that are bitcoiners that she's coming at and text messages. We added my mom, just as a joke to one of the stack chain, like, back end chats. And it's really funny. She has no idea what's going on in there, so now she has a lot to say about that. So one of two things is either is going to happen, it's either slowly going to sink in that she's maybe a little off base, or she's going to double. Triple down. Yeah, she's tripling down right now. Oh, that's too funny. That's an interesting phenomenon. That was well documented, I thought, in that article was talking about the other day. What was it called? Why people struggle with bitcoin by Nick Beard. You guys should go check that out. I thought it was really well written talks about people who just can't, for whatever reason, they just can't. They tend to double down. Down, triple. I have yet to see somebody who's tripled down, so to speak, come around. Have you guys seen examples of that? A triple down person would be somebody like a Rubini or a chef or a monger or you guys understand what I'm saying? They go from, yeah, I don't think this thing is a thing to just full on attacking it's immoral. It's going to destroy society in the environment, et cetera. Those people are married to their beliefs, and you're not going to change them at least anytime in the near future. So that's like an ideologue, right? It doesn't matter what the facts are. They're going to believe what they're going to believe. And a lot of that, I think, is tied to their survival in some ways. Back to that saying you can't convince somebody of anything if it directly contradicts what they use to make a living or whatever. ",timestamp:"00:04:20-00:11:57",topics:["Stackchain"],type:"twitter_space",weight:13.423835754394531},{boost:0,date:1670706053,description:"Stacks is trying to reinvent the wheel - Bitcoin Maxi",episode_title:"Bear Market Buidl — Major #Bitcoin developments! #Stacks #Sidechains",guests:[{name:"@GriffdenNFT",profile_picture:"https://pbs.twimg.com/profile_images/1604377729062895617/R4pSEdH4_400x400.png",ref_id:"dafdf7ec-28c0-43d3-a0d9-b2d266f38738",twitter_handle:"GriffdenNFT"},{name:"@Chad_333",profile_picture:"https://pbs.twimg.com/profile_images/1592310541732970496/o1tbw9Eo_400x400.jpg",ref_id:"484c7695-6a4e-4141-9585-1109bf23f8cf",twitter_handle:"Chad_333"},{name:"@jackbinswitch",profile_picture:"https://pbs.twimg.com/profile_images/1601214177439260672/O0SpU5B1_400x400.jpg",ref_id:"9685e7f3-3e0c-4b84-9fd9-b8a1d96f6ae9",twitter_handle:"jackbinswitch"},{name:"@jimdotbtc",profile_picture:"https://pbs.twimg.com/profile_images/1593210347825119237/L_SNThWQ_400x400.png",ref_id:"5dcf5545-fad6-44ee-ae56-360c5efe1151",twitter_handle:"jimdotbtc"}],hosts:[{name:"@BigRpic",profile_picture:"https://pbs.twimg.com/profile_images/1604962150388219904/WqiCye-r_400x400.jpg",ref_id:"726f0c95-9d94-4d44-a056-8ad3c9e3ddd5",twitter_handle:"BigRpic"},{name:"@CarlsonDoc",profile_picture:"https://pbs.twimg.com/profile_images/1597382056308350977/1NPexynZ_400x400.png",ref_id:"e34fa2b2-a58e-4461-81a0-d10c1058dfc2",twitter_handle:"CarlsonDoc"},{name:"@STXLDN",profile_picture:"https://pbs.twimg.com/profile_images/1533793338931007488/o3laQDCp_400x400.jpg",ref_id:"5c3bc906-3aed-44f9-851a-94804c6fe5ca",twitter_handle:"STXLDN"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99046513-2614-4eae-9de4-5781ba4b330a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/fc3bebcb-8271-433e-8d81-84dd06f3b022/aec527bc-539d-4d3b-9bad-db4af9e1a1ba.mp3",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"3cced3da-246a-4df7-884c-689661de7d66",show_title:"STX:LDN",text:"conversation in one Twitter spaces where somebody had actually said something about I think their analogy was like, oh, so Stacks is trying to reinvent the wheel and you don't need to reinvent the wheel. Everyone's heard that argument comes from the max before. I mean, I think people repeat what they hear and it's like, ultimately I'm a bitcoin Maxi. What really shocked me when I got to the Bitcoin conference was that it's like, oh, I'm like out. I like, really helped back in 2013, I think 2012, actually, dash and I went to our first bitcoin. I've got a photo on Facebook. We went to a Bitcoin London conference because we'd made our minds that we were going to get this ATM. It took quite a long time to kind of sort it out, but yeah, I think with 2012, we went to the Bitcoin conference and it was just such a small space and then to walk in. I'd never been to the Bitcoin conference in Miami before. I was really lucky enough to get invited by the Stack conference to go and talk. So while I was there, I thought, well, I'll buy a ticket for the Bitcoin conference. It was like $1,000 or something, and I was out of there within an hour. And I was quite depressed because I was like, I'm not part of that gang. And I felt like walking in there being like, hey, look, we've come. And actually it was like, oh, I'm kind of out. And I do think that there's there's just forces at work here, unfortunately, which are kind of corporate forces, which are setting the tone and just slowing things down. But, you know, I know we're all impatient, but ultimately time will tell. And I'm sure that the open source, decentralized nature of Stacks means it will be an unstoppable juggernaut, just as Bitcoin was. But there's literally people trying to slow it down, trying to play the advantage while we're small to keep us silent. And part of that is kind of brainwashing people. There are several things at work, and it's cool that you brought it up, Jim. The first thing is, we're the early adopters. We're the earliest adopters of early adopters on a macro time frame. If you look at how long, if you look at the scope of what's actually happening here, this is a move to it. Like, we talk about the industrial age, you talk about the Bronze Age, you talk about the no, we're at an epoch of time in human history with this information age or whatever you want to call it. And as we are right now, if you were looking at a chart, we're just barely making ripples in this macro time frame. What we do now is going to reverberate for several generations after us. And the thing is, when you were talking about one of the things that Stacks has to address is everybody knows what Bitcoin is. But then the second you hear anything else and you see the three letters, whether it's sol or STX or whatever it is, stacks just gets put in that category of, oh, that's just another coin to address that. You have to assume the audience has a basic understanding of crypto, has a basic understanding of why crypto matters, has all of these different things. So a lot of I think what we're fighting against right now are headwinds that won't exist in 20 years. Getting rid of the crypto element, that's the way it gets important, is once people don't even associate the word crypto with what they're doing. And one of the things that I'm working on, hopefully for next year is we've got a comedy festival in Brighton, and we're working with experts to see if we can come up with an entire ticketing solution in time. This is I think it's in February 2024. And so if we can come up with an X verse wallet that holds a ticket and a kind of process for the stewards, reading those tickets and letting people into the venue. We can onboard 20,000 people. That's a long weekend. It's a Thursday to a Sunday and we have three large venues. We get about 20 to 25,000 people through in those four days and they will all have an expert wallet. That's what we're trying. That's what I'm hoping for. Luckily, my wife is the producer of the festival, so she's witnessed a decade of me going through this stuff. So she's trusting me that I can kind of say, I think I can pull this off now. I've spoken about it for years, obviously since 2015. Like we were talking about, Alice is like, yeah, Straightaway is going right, this is going to replace all tickets. Do it now. Within two weeks, we'll just be all on the blockchain. But here we are several years later. But now it's actually a possibility with stacks and with experts. We had to have mobile. That was the frustration a year ago. We were like, yeah, this is ideal. We were even trying to do a fat boy slim gig where I was asking for guest list for it, which is a big live show he was doing. But I was like, Give me some guest list. I will stand at the gate with my laptop and figure out how to get people through. You don't worry about that. I'll make sure the right people get in because I was just like, let's just at least do something because we can do this. But now that they're on mobile, hopefully we've got a year or more than a year to kind of pull together a solution where suddenly we get 20,000 tickets into people's walls. And what some people don't sometimes appreciate is that the whole beauty of crypto with this pseudonymous network is that a payment network is a communication network. They're the same thing. And so the minute you've got tickets in someone's wallet, well, you can now communicate with them. You've got like a reach to them. You don't know they've not given you any information. You don't know who they are. But you've got a communication channel. So now they've got a ticket. You can now say, okay, well, now your ticket. Maybe we can maybe if we've got time to get there, it's like, now your ticket can be staked after the event. The ticket is an NFT and now you can stake your ticket and that's earning you money off your next year's tickets. And these are all non crypto people. And that, I think, is, I guess, our key because ultimately that's all I found within crypto is just walls. It's amazing to have these bridges. It's amazing that this stuff is going on, but it's still just a real battle. And actually what's going to really change things is when we can get those applications out there that are onboarding masses of non crypto people who just have a phone, and now they have an app on their phone and that app is connected to Stacks, and they don't even need to know about the connection to Stacks. They just have an app on their phone that holds their tickets and gets promotions out to them and they just show it to someone. When they turn up at a venue, it gives them a QR code in the when we get there, I think that's when we can really onboard the message. ",timestamp:"00:48:55-00:55:58",topics:["Bitcoin Maxi"],type:"twitter_space",weight:24.555915094150443},{boost:0,date:1672099200,description:"Controversies about energy sources in the world",episode_title:"Blockware Intelligence Podcast: 2022 Highlights",guests:[{name:"Michael",profile_picture:"https://pbs.twimg.com/profile_images/1558687629599657990/vf-bU14b_400x400.jpg",ref_id:"c7b4faa1-db77-4459-b03f-0e41e15efae7",twitter_handle:"MichaelHawaii"},{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Joe Consorti",profile_picture:"https://pbs.twimg.com/profile_images/1596902707511664640/GYGWVDts_400x400.jpg",ref_id:"8d2024b2-03bb-454d-9bd6-bb121904b76a",twitter_handle:"JoeConsorti"},{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"James Lavish",profile_picture:"https://pbs.twimg.com/profile_images/1466279082157502464/flD6cWI3_400x400.jpg",ref_id:"cf06ab2d-2ff3-4d7b-bef6-b996ae68517a",twitter_handle:"jameslavish"},{name:"Adam O",profile_picture:"https://pbs.twimg.com/profile_images/1395896857990160391/tJpgS2_p_400x400.jpg",ref_id:"95af0dd3-1e27-41b9-a36b-8a2c44438e85",twitter_handle:"denverbitcoin"},{name:"Jack Mallers",profile_picture:"https://pbs.twimg.com/profile_images/1599778945699909632/O0qc9ykA_400x400.jpg",ref_id:"d2e4aac5-e5e1-42fc-8f08-b3a77c076a64",twitter_handle:"jackmallers"},{name:"Lyn Alden",profile_picture:"https://pbs.twimg.com/profile_images/1521181379677073414/bm4LcJTr_400x400.jpg",ref_id:"903381dd-4b8a-4b59-8ecd-3281ae3ba297",twitter_handle:"LynAldenContact"},{name:"Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1508157904913899522/3l7ctauV_400x400.jpg",ref_id:"283edea0-55cf-4245-95df-8d6d3dcb1851",twitter_handle:"DylanLeClair_"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Stacy Herbert",profile_picture:"https://pbs.twimg.com/profile_images/1546484196750905346/5WYPz-bc_400x400.jpg",ref_id:"7477463b-1f3a-4b83-94c3-9d5a63b576c0",twitter_handle:"Stacyherbert"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"}],hosts:[{name:"Blockware Intelligence",profile_picture:"https://pbs.twimg.com/profile_images/953108582110781441/irB2GVXn_400x400.jpg",ref_id:"0ff00f04-2450-4699-b6a3-0467e29cddde",twitter_handle:"BlockwareTeam"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ea2cf2ae-76de-4185-818c-384b3b06228b.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=WxGMeufy8jw",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"144eff69-fd7a-48da-b92f-bb5b13e0b4f7",show_title:"Blockware Intelligence",text:"a mismatch between perceptions and reality about where some of the technology is in terms of different energy sources, right? So something, you know, like three quarters of global energy comes from hydrocarbons and then the rest, you know, hydro and nuclear are big chunks, and only something like 5% is wind and solar. But as wind and solar have kind of been pushed to be larger and larger parts of the grid, and there are certainly applications where they're useful, there's very hot and dry regions of the world. Rooftop solar can give you kind of more autonomy from the local grid if you have, say, rooftop solar and a battery backup, for example. But as they've kind of put policies ahead of technology and you kind of like obfuscate the cost, overstate the strengths and get that into the grid, it's kind of caused some issues. There's also a challenge where there's not a lot of investment in the grid itself, right? So, for example, California keeps having their electrical grid parts, electrical grid, face rolling. Brownouts you can imagine if you were to say ten x the number of electrical vehicles that are drawing power from that grid instead of through the gasoline distribution system we have. If that starts going over the grid, that's more stress on the grid. You need more copper, you need more redundancy, you need more cables bringing that around. And so I think the short term way out of this is frankly, there needs to be more supply of hydrocarbons, natural gas, oil and coal because that's what the world is currently short of, especially in certain locations. Longer term, I'd like to see a nuclear renaissance. Combination of smaller reactors and a better regulatory environment could really make nuclear come back. I mean, decades ago, it was actually pretty cheap and quick to build a nuclear plant, as there have been a handful of accidents, which even if you add up all those accidents, even if you take the worst case, scenario of not just immediate death, which is very few, but if you kind of take the high end estimates for environmental damage and what that could have caused kind of in the region, it's like it killed fewer people than coal kills, like every year, for example, through particulates in the air. But nuclear got that kind of increasing regulatory burden and that now makes it almost impossible in many places in the world to build a new nuclear facility. And of course, you want safe operations. So, for example, part of why Chernobyl was so bad is they didn't even have the shield. That now is standard practice among the nuclear facilities. Obviously, there's really bad ways to build a nuclear facility, but the modern ways and back then, even the responsible ways can build safe nuclear. And so I'd like to see that combination of they've developed small modular reactors that's been a bit like a push lately. And if there were kind of easing regulatory environment, I think that nuclear can at least solve a lot of the baseload grid power. And then longer term there's interesting things like ocean thermal energy that I think is under explored. There are other ways to get baseload power, but the general thing you need is that you need to have nature do as much of the storage and concentration as possible because the more that you have to replicate with machines, the less efficient and energy dense that's going to be. And so I think that's the big theme that a lot of people are missing in the energy space. ",timestamp:"00:49:04-00:52:35",topics:["energy sources"],type:"youtube",weight:37.306806397580786},{boost:0,date:1672099200,description:"Institutional adoption lowering Bitcoin's volatility",episode_title:"Blockware Intelligence Podcast: 2022 Highlights",guests:[{name:"Michael",profile_picture:"https://pbs.twimg.com/profile_images/1558687629599657990/vf-bU14b_400x400.jpg",ref_id:"c7b4faa1-db77-4459-b03f-0e41e15efae7",twitter_handle:"MichaelHawaii"},{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Joe Consorti",profile_picture:"https://pbs.twimg.com/profile_images/1596902707511664640/GYGWVDts_400x400.jpg",ref_id:"8d2024b2-03bb-454d-9bd6-bb121904b76a",twitter_handle:"JoeConsorti"},{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"James Lavish",profile_picture:"https://pbs.twimg.com/profile_images/1466279082157502464/flD6cWI3_400x400.jpg",ref_id:"cf06ab2d-2ff3-4d7b-bef6-b996ae68517a",twitter_handle:"jameslavish"},{name:"Adam O",profile_picture:"https://pbs.twimg.com/profile_images/1395896857990160391/tJpgS2_p_400x400.jpg",ref_id:"95af0dd3-1e27-41b9-a36b-8a2c44438e85",twitter_handle:"denverbitcoin"},{name:"Jack Mallers",profile_picture:"https://pbs.twimg.com/profile_images/1599778945699909632/O0qc9ykA_400x400.jpg",ref_id:"d2e4aac5-e5e1-42fc-8f08-b3a77c076a64",twitter_handle:"jackmallers"},{name:"Lyn Alden",profile_picture:"https://pbs.twimg.com/profile_images/1521181379677073414/bm4LcJTr_400x400.jpg",ref_id:"903381dd-4b8a-4b59-8ecd-3281ae3ba297",twitter_handle:"LynAldenContact"},{name:"Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1508157904913899522/3l7ctauV_400x400.jpg",ref_id:"283edea0-55cf-4245-95df-8d6d3dcb1851",twitter_handle:"DylanLeClair_"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Stacy Herbert",profile_picture:"https://pbs.twimg.com/profile_images/1546484196750905346/5WYPz-bc_400x400.jpg",ref_id:"7477463b-1f3a-4b83-94c3-9d5a63b576c0",twitter_handle:"Stacyherbert"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"}],hosts:[{name:"Blockware Intelligence",profile_picture:"https://pbs.twimg.com/profile_images/953108582110781441/irB2GVXn_400x400.jpg",ref_id:"0ff00f04-2450-4699-b6a3-0467e29cddde",twitter_handle:"BlockwareTeam"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ea2cf2ae-76de-4185-818c-384b3b06228b.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=WxGMeufy8jw",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"9f9305dd-fff2-4bb3-9e3f-698a55090999",show_title:"Blockware Intelligence",text:"Look, the people who are interested in this space, in the institutions, they're from the technology side. They look at this as technology. The technology analysts are the ones who are the ones who are analyzing it, the ones who understand cryptography and cryptocurrency implications and how it all fits into the space. But once that kind of bleeds over and really moves into the financial world and people start looking at this as digital money, I think that's where it starts to differentiate itself. But the big break will be when people understand that it's a store of value. Now, how do we get there? Right? So the question is, what is it going to take for bitcoin to be, in particular, to be seen as a store of value? And I think it's going to take the asset to have enough market value and liquidity that the volatility dampens and it's going to happen in steps, right? So it's going to take a few very large institutional investors to start buying Bitcoin, right, and not just buying it, but then also announcing that they bought it, right? So you've got what, you've got five firms, we talked about this before, we got five firms that control $30 trillion of investment assets in the world. So if you figure that there's about $700 trillion in total investment assets, $730,000,000,000,000 in investment assets, that's a lot. 30 trillion out of 700, $720. But five of those firms, you got BlackRock, Vanguard, Fidelity, State Street and Morgan Stanley. And if any of those firms start announcing that they've really taken this and considered a separate asset and we know that, we talked about Fidelity, we know that they're doing something. BlackRock, of course, is doing something. But when Vanguard comes out, when Morgan Stanley comes out and says, we are putting this in our portfolios, that's going to be a big deal. And once they do that and they start buying it, then you're going to get a lot of other investment managers that feel like they've got to do this. So it. Takes time, but we'll come back to that in a second. But once they start buying this and they decide they want to have a 1% position in this, well then bitcoin 1% position in all assets, right? So if you look at all portfolios across all asset classes, between bonds, investment bonds, corporate bonds, sovereign bonds, you've got stocks, you've got real estate, you've got art and collectibles, and you've got gold and silver and metals. But if you put all of that in a basket in one big portfolio and you say that 1% of that has to be the separate asset class, well then you're already at $350,000,000 bitcoin. $350,000 bitcoin. Sorry, don't want to get it right. Too excited. But $350,000 bitcoin. Okay. Now you're talking about a $7 trillion asset, right? You get that up to 2% and you're talking about over a $10 trillion, $14 trillion asset. Now you, now you really do have the ability to put money in this and not see that same volatility. It's just not going to move the same way as it does here as such a small asset. I mean, we're not even half a trillion dollars anymore. But once you have that, then I think that it takes off. And I don't know where that breaking point is, but it's somewhere before that store value recognition that it just becomes completely uncorrelated. So maybe somewhere between 100 and $200,000 bitcoin where it just, it rips up and it just complete completely decorates to the rest of the market. ",timestamp:"00:27:01-00:31:15",topics:["Institutional Bitcoin adoption","Bitcoin volatility","bitcoin"],type:"youtube",weight:37.30680637726857},{boost:0,date:null,description:"Discussion on how do you sell the value proposition of Bitcoin to small investors circa late 2022",episode_title:"TOXIC HAPPY HOUR! #Bitcoin is Easy Like Sunday Morning! 🍻😂",guests:[{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:" TC",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"dac0717a-a743-40d4-a89f-7523f071bbb0",twitter_handle:"publordhodl"},{name:" kann b",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"1170bde7-7f3c-4c4f-a158-5c48a98fe92b",twitter_handle:"publordhodl"},{name:" Dallas Rushing",profile_picture:"https://pbs.twimg.com/profile_images/1602759767029604352/hzuwh5ZB_400x400.jpg",ref_id:"13fed037-77ce-48eb-9544-25e7abff9395",twitter_handle:"dallasirushing"},{name:" Lisa Hough",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"5e154adf-d8bd-4adf-a23b-47a51c183163",twitter_handle:"lisa_hough_"},{name:" Collectooor of sats",profile_picture:"https://pbs.twimg.com/profile_images/1594362077132587009/cNAE2FU5_400x400.jpg",ref_id:"c84d0e47-7eeb-419b-a36e-5055b96044f0",twitter_handle:"hoardingsats"},{name:" Gold Leader",profile_picture:"https://pbs.twimg.com/profile_images/1594152783011250176/lHMHv3gB_400x400.jpg",ref_id:"96c4f802-25ff-4a81-b91f-cae5562bf4a3",twitter_handle:"GoldLeader89"}],hosts:[{name:"Publordhodl",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5e189a7b-56c3-40ae-834e-4e2ccee3a9ad",twitter_handle:"Publordhodl"},{name:" Anders_",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"15bdd6b9-bdfd-492d-b7bf-c5a56ecadc50",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/4e00853b-49e3-4b46-bd13-bf7f2aa25905/56f0089c-a7f2-4b1b-8576-a3e4ddb9791f.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"28845fb4-d3b9-4615-af36-f3f3862d93f7",show_title:"PUBLORD",text:"I'm just going to ask a general question here. Again, thanks, guys, for having me up. First of all, so how do you sell to someone? Again, I'm really small investor, like maybe 20 grand that I'm putting in. But how do you sell to anyone at this point who's looking at the price today and going, you know what, I got in at 30. If you did, and it's now at 17, where where do you at all try to convince someone at that point to put any more money in based on on what you see? Again, you can look historically at where it's gone to and where it's gone up to, but I'm constantly trying to talk to people and trying to orange pill them, for lack of a better term. And I cannot at all find the vernacular to try to convince someone because it seems so nefarious in terms of what's happening. Again, this is really common. You guys have or I'll buy at 16 and throw another ten grand in or 20 grand or whatever it is, but when it drops another 50% down to 10,000, how do you hold all the words you hear about, you know, diamond hands and can you hear me? It's so difficult. And again, I'm just a 58 or 52 year old guy who's trying to, you know, take some of his savings and, you know, make some money out of it, but it's anyone to hear me. Yeah, you're good. TC, can you hear TC or no, sorry. Did you hear TC was trying not a great answer for you, but I. Don'T think you can hear me. I put money in in 2020 when COVID hit into an ETF following an index, and I've made more money in that ETF index than I did in any of my Bitcoin. I'll have an answer for you here in a second. I got my own views on this, but TC yeah, you had your hand up. I don't know if you can even hear me, though. Wait, let me check. Conn, can you hear TC right now speaking? No, I can't. I'm going to go out and come back. Okay. If you drop and come back, I. Got a good answer for you. Yeah, jump out and come back. I can go for an hour on this one, but you go first. I know, man. It's a great question. It's an absolute great question. It's the question. And what it is, is it's the portal through this threshold where you leave behind the purely speculative, fiat minded way of analyzing everything, and you start your journey understanding Bitcoin. You heard him say it about the investment part. I was making more money. He's new. We'll talk. Man, I hope he comes back here soon, but Jesus, that is the question. Yeah, you're right. I guess I'll just start off by saying this is the problem with focusing on the price, because the price is actually distracting you and it's giving you bad information. Much like everything in markets today, in the legacy fiat system, the signals are all distorted. They're all warped. And during the bull market, we see everything warped in the overvalued direction. And in the bear market, you see things destroyed. And through a lens of just looking at percentage gains or losses, all you're determining is which direction the market moved. And that doesn't tell you anything when it comes to Bitcoin. As far as what Bitcoin is, the momentum that Bitcoin has in the world, it's one of the things that greases the wheels for all the legacy financial, media and governments to continue to fudge bitcoin because they've got such an easy sell to people when they say, hey, look, this thing's down 70%. How could it possibly be good? How could it possibly be healthy? Elizabeth Warren says, oh, how are you going to let people put themselves at risk owning this kind of horrible asset? It's such a narrow, small minded way to look at the whole thing. When you actually start understanding bitcoin, and you realize that right now, at the depths of the bear market, bitcoin is absolutely alive and kicking, and it has got amazing momentum, and there is so many people building and investing and adopting and adapting to bitcoin. There's major, major industries today. We stopped even, like, making a big deal out of it. You remember back in 2020 where every little insurance company or bank that even sniffed at bitcoin, it was like a huge story. Oh, my god, so and so is looking at it's happening so frequently now. We don't even pay attention to it anymore. The world is plowing towards a bitcoin reality here. And what's beautiful about it is that anybody who really wants to use Bitcoin as a way to preserve their wealth and improve their future, you have such an opportunity, especially during the bear market, to arbitrage the lack of knowledge that people have on average and to see through the fed and realize how healthy and alive and strong and growing stronger bitcoin is. And at that point, you realize how absolutely inaccurate the price is as a signal. And if anything, you're just able to arbitrage that knowledge gap. You realize that you're looking at something that's basically better than it was a year ago when it was 70% higher and it's on sale and you go from there. This is so on point. Look, Ben, this is the journey that everyone takes. Everyone takes a journey for the most part. You come in for number, go up technology, dude, I was there. And in fact, I got to look at the exact date of my first I'm almost at the five year anniversary because it was in mid December, mid December 2017. And yeah, you guys can thank me. I think I got into the market like three weeks before you. Dude, me and you are the exact same era. Bitcoin was at 17 five with my first purchase, not that I was going to buy a whole god amp coin, and it spiked up to almost 20. And you're right, I spent 2018, man. I was catching those knives all the way down. And the more I learned about bitcoin and what it represented, the more I understood it. But I'll tell you what, man. Yeah, go ahead. Sorry, just one more thing I wanted to add is the other thing that really dissuades people or points them in the wrong direction is they think about how many dollars they're putting into bitcoin, and what they need to really realize is how much capital and how much monetary energy they are removing from the fiat legacy system. That is one of the key perspectives that if you don't have that perspective, you don't realize what you're actually doing. You're not investing in bitcoin. You're not speculating on bitcoin's price. You're literally removing your capital and your monetary energy that you've accrued from a system that is so riddled with risk and uncertainty, and you're moving it into a brand new system. It's not controlled by any of these governments or central banks and allows you as a sovereign individual to hold your own wealth and remove it from that giant house of cards. That's I think equally as important a concept to understand. Yeah. And this goes into and con saying, well, what do you tell a friend? Or how do you explain to somebody what this means? And believe it or not, man, it's different things to different people and different cultures, okay? And what I mean is this. If you're in Venezuela or you're in Turkey watching your currency go through hyperinflation, guess where you want some of your life value, all the work that you did, you probably want a little bit in bitcoin. Let's say you're in some war torn country, you're trying to cross borders. Guess what, man? You're going to get jacked up for cash. You're going to be standing at an ATM hoping to get, like, €400 out before you leave, okay? The value in bitcoin is immense. And in the US. Oh, my god. What about in the US. What could you guys possibly see in bitcoin? And I've talked to many people like this. You want to talk about orange filling? There's one guy talking to I just don't get it. What is the use case? I said, well, listen, you're pretty well off this guy's, like, in his 60s, everything. And I just mentioned to him, can you name one thing? Just name one thing that you own that can't be confiscated by the government or bank. Name one thing you own and you can see the wheels turning. He's thinking of the two homes. He's looking at the credit cards that will be shut down, and I'll get back to that in a second. He's looking at the cars, okay? He's got a boat. And he goes, I got nothing. I said, well, that's why bitcoin is something you should at least be interested in. I'm not telling him, sell everything you own and buy bitcoin. I'm saying you just may want to have some exposure to this. And you want to talk about the volatility or the price. We talk about this quite a bit, man. In Canada, some truckers got ten grand in a bank account, and he's got a $10,000 line of credit that was shut down overnight. I'd rather have an asset class that can take can take a hit. Okay? Maybe it goes down 70%, but it's what the best bitcoiners around are. The ones that start at the top and when those prices are dropping, man, I was giddy as a schoolgirl when it went from 20 and we're down under six and then five and then four. I'm realizing, my God, this is what an amazing opportunity just to have this exposure. But TCI, I like what you said, man. It's more about you're not moving fiat. You're gaining. You're transferring the value of your work. You're taking chips off the table. You're removing your chips from the casino. Look, you're talking about insolvency. Jump out there and came back in and heard everything everyone said. Yeah, you were talking about insolvency. Hold on 1 second. Con again, when I hear someone like you guys talk, I'm always assuming that your dollar cost overall price right now is much lower than, let's say, $17,000, right? Pub, you just said that you bought in law. So if you told me right now, if you wanted to, you know what my average cost has been? Like 3000. So you're already that's nothing to do with it, dude. That's nothing to do with it. I don't think you can hear me. For some reason. You can't here. I'm going to leave and come back. Yeah, go ahead, TC. Leave. I'll bring you finish and then I'll just jump. Stay up here, man. Stay up here because we may have some questions for you. Go ahead. I want to be able to be here because, again, what I keep on trying to wrap my head around is, okay, so again, I'm I'm in. I'm down 50, 60%, to be honest, and I'm trying to decide, okay, so that was money that I didn't, you know, I don't need right now, but I have other money that I want to now possibly invest. And as you said, catching the knives on the way down. I got you. If you can hear me, I got you. Dude, can you hear me? I'm not going to get some Black Swan event or some can you hear. TC when he jumps in? Can you hear him? No, I can't. It just says host there. I'm not seeing anything. So again, I'm going to just back out again and come back in and listen, you guys, you're helping. So just let you know that. Let me go. I got a whole another one that's pretty simple to understand, which is basically, man, there are people who are millionaires in Lebanon who, after a bank bail in, it doesn't matter how much you have in the bank, you can't access it. They'll give you $100 and say, come back next week if you want more. We're watching Canada, trying to figure out how they're going to just strengthen their authoritarian ability to wield the banking system to punish people who don't politically align with them. We're seeing in China the use of the banking system to control people's movement. We're seeing the same things happening in Iran where there's a huge protest underway and the government is using the banking system to punish people who are protesting. We have rules coming into place in Europe where you're no longer going to be able to do any cash transaction above, I think, €10,000. There are similar things in the United States where every single transaction above $600, you have to account for and disclose and fill out paperwork. If you don't see what's happening here, you're blind. You're in denial. We're marching towards a world of infinitely more capital controls than what we currently have. And in this context, the price of bitcoin is irrelevant, other than how many stats can you get for every dollar that you're moving out of that other system, period? It has nothing to do with the price, because real bitcoiners are not interested in what the price is going to be tomorrow or next month or next year. I mean, I'm not even tripping what's the price going to be in 2030? I'm looking at a little kid that I intend on handing down most, if not all of it to decades from now. This is about preservation of your ability to have choices, because what happens when crisis hits, whether it's in your own life, your own little personal sphere, or if it's strife in your nation or in the world at large, what matters is what choices you have, and that's what your money and your capital represent. It's your ability to actually do something in a situation that you don't want to be in. Can you acquire food for your family? Can you put a roof over your family's head? Can you acquire transportation to remove your family from a bad situation? I'll tell you, with all these capital controls coming in, the ordinary person on the street is quickly losing. Optionality in the future. The future is becoming more and more certain that you're going to have less choices than you have today. That's what this is about. The price is irrelevant except for how many facts you can get for each dollar you're moving out of that fiat system. That's the point here. DC. Listen, what's nice is we got a good plan, because when they try to make you eat the bugs, I know of a few guys that are still selling stakes for bitcoin. Air Texas Swim. I wish he was around. There's going to be a circular side economy, a black market economy for bitcoin, for sure. This is great, man. Hey, you got, like, anyone whose handle is Fording SAS collector or what's ",timestamp:"01:12:05-01:28:25",topics:["Bitcoin value proposition","New Bitcoin investors","Bitcoin price volatility"],type:"twitter_space",weight:13.165740966796875},{boost:0,date:null,description:"The Nigerian butcher enterprise ",episode_title:"The Orange Sun 🌞 Let's talk #Bitcoin & Cattle Ranching/Sustainability",guests:[{name:"Texas Slim",profile_picture:"https://pbs.twimg.com/profile_images/1589784780970795011/02jf0fqp_400x400.jpg",ref_id:"b4448c8e-9238-4aba-bd25-efb329ea5a72",twitter_handle:"modernTman"},{name:"Lucas",profile_picture:"https://pbs.twimg.com/profile_images/1596345084966014976/maviSGq3_400x400.jpg",ref_id:"e3adb591-b29f-435b-bd34-210f2dbcedaa",twitter_handle:"impossiblyso"},{name:"Firebust",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"0fb6c7f3-a673-4fe5-9599-8165800a2ff0",twitter_handle:"FireBursts"},{name:"Hamza Yusuf",profile_picture:"https://pbs.twimg.com/profile_images/1318064165030940672/sakbSOvT_400x400.jpg",ref_id:"03a74669-b653-4c57-8799-a312cb041089",twitter_handle:"Hamzayu28849293"},{name:"Adenekan's Father",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"b8259997-2ef0-4e6e-8d58-a69b5eda550a",twitter_handle:"AdenekanFatai4"},{name:"Adenekan",profile_picture:"https://pbs.twimg.com/profile_images/1505572078023495683/Wo_pJvTU_400x400.jpg",ref_id:"ca6a563e-0e84-4811-be82-a3b3cd12d399",twitter_handle:"AdenekanFatai4"},{name:"Heritage",profile_picture:"https://pbs.twimg.com/profile_images/1510397558652350469/jYOl00tU_400x400.jpg",ref_id:"98a6d9df-3c39-49ec-8a39-074e61af4ece",twitter_handle:"herrytheeagle"},{name:"Enoch",profile_picture:"https://pbs.twimg.com/profile_images/1596235105663533056/5mRUbLm3_400x400.jpg",ref_id:"4f8af040-3d0c-49c1-806e-aef89d8693fb",twitter_handle:"KazEnoch"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/a91f79fd-d85f-4440-b012-4bdafdc83341/f1d1c5b5-b8c9-44ed-a217-f75b398376d5.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"da54483f-f9f4-4c4b-9320-6ba317e64b44",show_title:"Satoshi’s Journal",text:"Thank you, Jeremy. I'm so glad to do this. Thank you, Texasleam. That was a fantastic one, OG. Or should I say big omi. I already have multiple questions from what you said because Katie Ranchon is a big business in Nigeria. That's the number one business of the number one man leading the federal republic of Nigeria, the president of the federal Republic of Nigeria. And the person of General Mohammedu Buhari loves caterbranching. We could call him a herdman. He loves cataracting so much that there is a big discussion about re energizing the grazing routes in Nigeria. Whether that's good or bad, it's a tough conversation. This is a conversation that causes opera in Nigeria. Good and bad people die. Machetes are used, guns are used. It's a billion dollar empire in Nigeria. But the stats are not really open because of so many underlying tone. So I don't think this conversation will end here. Looking forward to something bigger, most likely, maybe at a conference, inviting our top executive of the government and so on and so forth. It's something we've been trying to solve. I'm so glad I missed identity here. So let me use the opportunity to say a big welcome to a highly respected man, of course, the father of our regular listener here, Adenica, is the leader of the Nigeria butcher association and the leader of the Paraguay Butcher enterprise. If you understand the butcher's business in Nigeria, you would know that it's not a small game at all. You must have butchers most likely around every market. And if you're not eating beef in Nigeria, you're most likely eating fish. And I think beef is the biggest protein in Nigeria that people really go for, whether it is ram, whether it is cow or cali or whatever it is you want to call it. It's a big business. I eat beef all the time. And I also have beef with the altcoin. Mr. Adelekon, once again, is the Nigeria Butcher's Association leader. One of the leaders and the leader of paracoli butcher's enterprise is also the array, bobani atundda Liquid of Bagura land. Please join us to welcome this respectable Nigerian, Mr. Adeniko. Thank you, Mr. Denikon. You're welcome to the microphone, sir. Eric, bobanizi going to come? Is your daddy going to come as a speaker or you're going to do most of this speaking for him? Yeah, he's going to join as a speaker also because I would like us to just hear from his experience and we should learn a lot. Okay. Please send Mr. Adenikan. Oh, I'm sorry. Okay, I'm biting him now. I'm so sorry. I forgot to bite him up for some reason. I thought it was going to be with Adenikin, but Adenikin, I just invited him Upani. It's a big title. From my understanding. Maybe I'm going to ask him what's that title means. For my understanding, Bob Banigi means elevate the king. Or should I say give the king some worthy respect. Give the king some worthy respect. So when they say you are the Arab, Bobani, you are like the king elevator the king. Should I say positive image? Because anybody that means respect, value, something like that. I read Bobani. That's a fantastic title. I sent your dad an invite, Dennekin, but if it's not working, your dad may have to just request to speak because I don't think the invite to Texas slim worked. So, Mr. Dennekin, if you could kindly click the there you go. No, that's not you. Hansa yusuf bhagudo. That's not him trying to invite him up. Maybe it'll work with you. I've already tried to invite him up several times. So just give us a few seconds, and we'll get Mr. Denikin up here. And in the interim, what I was saying earlier, though, is the similarities between bitcoin and farming and ranchers are uncanny. Farmers and ranchers are such that they are super sovereign. They know the land, they know how to work it. They know how to get it to the point where, on a selfsustainable manner, it could actually regeneratively, produce what it needs to produce, and they use their intellect to get the land to do what it naturally does, and then they use the animals to do what they naturally do. And when you get those two things in synchronization, the land and the animals, you have a beautiful thing. Unfortunately, due to the commercialization of food and the industry around food, that whole cycle has been screwed up. Okay, so there he is. Let me let him know. Jeremy, real quick, before I just accepted Mr. Identical, the Arab bobani of boogeland. But quickly. I also accepted Amaza Yusuf. But I want to ask AMA Yuzu a question before I push him back to a listener mode and maybe bring him back later. Please, quickly, tell me your name, what you do, and why you requested to speak, because your name sounds like you're from the north, and you may be a butcher or you may be into categorization. Real quick. I invited also he's a fellow member, and we are doing something with Texas. So he's a full animal and has been a friend since secondary school days. So you can just let him speak and just introduce himself. Oh, okay. All right. We're going to do that much later. So, first of all, we have in the building we don't need about anymore. Good morning, sir. Can you speak to us so we hear from you? Mr. Dennett, you may have to click on the bottom left hand corner. On your screen, there's a mic button. You have to unmike that. It's a little purple button, because right now you're on mute if you're trying to talk. Yeah. Can you hear me now? Yes, sir. Welcome to the I was happy to be on this platform because there is a lot of challenges in doing category in Nigeria. There's more challenges. I think you have more to make a mistake. I think we have to orientate us about the challenges. It's not easy. I do have a past five years now. I've been in the business so long. So what is coming up that I'm here, and I think it's a kind of opportunity for us to move up. I appreciate it. Thank you very much. Mr. So what Mr. Adele just said clearly is you guys should orientate everybody here. Basically us and the orientation team on, I think maybe how bitcoin can be of value to them. However, there's a lot of challenges that the butcher and khaki ranching industry is going through. But he's very appreciative of the invite and he's been on this Johnny for 35 years and he's glad to be here. Thank you very much. ",timestamp:"00:22:56-00:32:14",topics:["Butchers sovereignty"],type:"twitter_space",weight:13.040050506591797},{boost:0,date:1672099200,description:" Natalie Brunell's thoughs around SBF's unethical fraud",episode_title:"Blockware Intelligence Podcast: 2022 Highlights",guests:[{name:"Michael",profile_picture:"https://pbs.twimg.com/profile_images/1558687629599657990/vf-bU14b_400x400.jpg",ref_id:"c7b4faa1-db77-4459-b03f-0e41e15efae7",twitter_handle:"MichaelHawaii"},{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Joe Consorti",profile_picture:"https://pbs.twimg.com/profile_images/1596902707511664640/GYGWVDts_400x400.jpg",ref_id:"8d2024b2-03bb-454d-9bd6-bb121904b76a",twitter_handle:"JoeConsorti"},{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"James Lavish",profile_picture:"https://pbs.twimg.com/profile_images/1466279082157502464/flD6cWI3_400x400.jpg",ref_id:"cf06ab2d-2ff3-4d7b-bef6-b996ae68517a",twitter_handle:"jameslavish"},{name:"Adam O",profile_picture:"https://pbs.twimg.com/profile_images/1395896857990160391/tJpgS2_p_400x400.jpg",ref_id:"95af0dd3-1e27-41b9-a36b-8a2c44438e85",twitter_handle:"denverbitcoin"},{name:"Jack Mallers",profile_picture:"https://pbs.twimg.com/profile_images/1599778945699909632/O0qc9ykA_400x400.jpg",ref_id:"d2e4aac5-e5e1-42fc-8f08-b3a77c076a64",twitter_handle:"jackmallers"},{name:"Lyn Alden",profile_picture:"https://pbs.twimg.com/profile_images/1521181379677073414/bm4LcJTr_400x400.jpg",ref_id:"903381dd-4b8a-4b59-8ecd-3281ae3ba297",twitter_handle:"LynAldenContact"},{name:"Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1508157904913899522/3l7ctauV_400x400.jpg",ref_id:"283edea0-55cf-4245-95df-8d6d3dcb1851",twitter_handle:"DylanLeClair_"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Stacy Herbert",profile_picture:"https://pbs.twimg.com/profile_images/1546484196750905346/5WYPz-bc_400x400.jpg",ref_id:"7477463b-1f3a-4b83-94c3-9d5a63b576c0",twitter_handle:"Stacyherbert"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"}],hosts:[{name:"Blockware Intelligence",profile_picture:"https://pbs.twimg.com/profile_images/953108582110781441/irB2GVXn_400x400.jpg",ref_id:"0ff00f04-2450-4699-b6a3-0467e29cddde",twitter_handle:"BlockwareTeam"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ea2cf2ae-76de-4185-818c-384b3b06228b.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=WxGMeufy8jw",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"d98bc278-4c35-4325-992c-78437ccf3569",show_title:"Blockware Intelligence",text:"I'm curious, what are your thoughts on the whole SBF debacle? Is he just going to be in the Bahamas forever, or do you think he might get arrested at some point? And also, why do you think the media isn't necessarily painting him as this obvious villain? Yeah, I'm really disappointed by everything that's happened with SPF. And it's sad that bitcoin looks bad in this whole thing, especially for people who don't understand the space. But it's neutral. It did nothing wrong. It was just cross collateralized. And people like SBF create these paper versions of Bitcoin, and that's so unethical. So my reaction is, I hope that the DOJ I hope that the SEC, I hope that law enforcement agencies go after him and bring him in and formally charge him. Because in my opinion, what he did was fraudulent. It was a Ponzi scheme. It was to enrich himself. I mean, the fact that he was basically loaning money, using an air token as collateral loaning money to himself, that people affiliated with him, including his parents, may have purchased expensive properties, this is wrong. This is not what this revolution of Bitcoin and removing the power of money from the state. This is not what this is about. It's not about enriching a small group of individuals who think that they have the right decisions on how the future should be created. It's wrong. And he duped so many smart people, which is amazing to me, these massive institutions, from the VCs to these celebrities who had a ton of money. You would think that they would all do their due diligence to make sure that they're not just, like, putting their money into a group of Silicon Valley former Ivy League nerds who are going to basically wash trade it. With themselves to pump up the value and take out loans and to become their own bank and take out credit lines and then trade it and pay off politicians and then lose all the money. I mean, this is ridiculous. And they did it all offshore for a reason because everything that they did is inherently illegal. And so I hope that it's a huge lesson. I hope that in the end, I think it actually strengthens Bitcoin and what bitcoin is all about and bitcoin's value proposition. But in the meantime, I just hope that these policy makers actually hold them accountable and take the time to learn about why this happened and how the fact that he's sort of, as of right now, getting a little bit of a pass, like Representative Maxine Waters, I think, tweeted at him something that was equivalent to, oh, please talk to us, Sam. Thank you for explaining the things that have been going wrong. It's like, no, hold this guy accountable. This is the Bernie Madoff of crypto right now and everybody's just sort of approaching him on eggshells and I don't understand that. So I think that charges will come down. I saw that Caroline Ellison was spotted in New York. I'm sure she's working with an attorney who wants to get her some sort of a plea deal. The only way that that will happen is if she divulges a ton of information. So I think it's going to be a couple of people pitted against each other. Caroline versus SBF, and we're going to learn more in the coming days. And I don't buy any of the crap he's been selling to the media. He knew what he was doing. He just thought he would get away with it, to be able to complete his mission and plan of whatever he wants to do with all that money. But it was wrong. He was using customer funds and he should be in jail, I think. Yeah. I mean, it's pretty insane how it got so big and how so many big names, whether it's like Tom Brady or Sequoia, were just full fledged behind FTX and SPF. It's pretty wild. The ",timestamp:"00:56:24-01:00:18",topics:["Natalie Brunell","SBF"],type:"youtube",weight:36.019356007815745},{boost:0,date:1672207217,description:"Receiving geyser donations directly to your wallet and tipping creators with Mash",episode_title:'The Orange 🌞 Reading/Discussion "The Book of Satoshi" & Bitcoin News',guests:[{name:"CouncilmannJamm",profile_picture:"https://pbs.twimg.com/profile_images/1251040014152024066/dD3b2eA4_400x400.jpg",ref_id:"6c989c2c-d24d-49a2-8eb1-1d2f1c47f347",twitter_handle:"jamm_councilman"},{name:"thotsnplayerz",profile_picture:"https://pbs.twimg.com/profile_images/1608733749663109120/wwYEZgF2_400x400.jpg",ref_id:"66bbe365-9e85-4c34-9d51-39d8b49937b7",twitter_handle:"thotsnplayerz"},{name:"Will Schoellkopf",profile_picture:"https://pbs.twimg.com/profile_images/1487515153302130691/t5sDMzZW_400x400.jpg",ref_id:"461e2245-1672-4fa1-94f5-7aaf1afa531f",twitter_handle:"realBitcoinDog"},{name:"OKIN_17",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"dbcdeab8-4824-43f7-aeb8-2b9eda6cbbad",twitter_handle:"OKIN_17"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"},{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ecefba20-39fd-4974-8388-066857965b2a/cf486c39-08f9-4ada-9b72-7a297ad74d74.mp3",node_type:"clip",pub_key:"",ref_id:"b8080ee6-90b2-4f75-8c69-79510c82aa08",show_title:"Satoshi’s Journal",text:"The next little piece in here is to talk about make your Geyser donations flow to your own wallet. So a bit more than a week ago, geyser, for those that don't know who Geyser is or what it is, geyser is a company or website that allows you to earn Satoshi's for whatever you're trying to earn them for. So if you are trying to earn Satoshi's for a book, to write a book, you can put your project on there. There's a vetting system you have to go through. We're probably going to put the Bitcoin village on there. We haven't done it yet, but if anyone wants to donate to the Bitcoin village, that's yet another place they can go to if and when we get onto the Geyser fund. But you can find a bunch of other different donations for different things that are happening in bitcoin. So anyways, this article says a bit more than a week ago, guys are rolled out. A very neat feature that I missed. So here it is. You can now, as a project creator, receive donations directly to your own wallet through a lightning address. This allows you to receive the funds straight to the wallet of your choice, ideally on custodial, without them ever sitting on geyser's node. So that is pretty cool and I didn't know about that until I read this article. The next thing is mash. For those that don't know what Mash is, mash is a company that allows you to integrate their software into your website and allow such things as tips to happen. We just integrated it into our website. So if you go to our website and I have yet to unveil it because I'm trying to come up with a way to best unveil it, but essentially, if you go to our website now, there's a little button on the bottom right? You click it, it'll allow you to create a Mash account. And then once you create a Mash account, you can tip our website and the tips that are on our website are going to go to our content creators. So if people find value with the content of our content creators, they can click the button, they can send a tip of whatever value they want. All those tips accumulate on a wallet that we have associated with our Getmash account and then we will disperse those to our content creators how we deem fit. It's pretty cool feature. So Mash, basically it says here Mash got a small lifting to better suit creators and what they want to do with their content. Mash is a service that allows content creators to monetize what they create in a user friendly way. It just got easier to use with more customization available Ie themes. Mash button placement, push button placement, cherry on top what previously required copy pasting multiple snippets to make the Mash magic work on a custom website now requires only one code snippet. Cool. So that's pretty cool. I didn't set up the Mash on our website, but whoever did probably would relate with this feature. And there's a few more things. Looks like Albie got an extension for developers. Looks like there's some Sat streaming in the Pod verse and a bunch of other things. This is a long article, so I'm not going to read it all, but I highly recommend you check it out on ",timestamp:"00:14:17-00:18:05",topics:["Geyser Fund","crowdfunding","Mash"],type:"twitter_space",weight:37.03219712996155},{boost:0,date:1672207217,description:"Making payments on the Lightning Network",episode_title:'The Orange 🌞 Reading/Discussion "The Book of Satoshi" & Bitcoin News',guests:[{name:"CouncilmannJamm",profile_picture:"https://pbs.twimg.com/profile_images/1251040014152024066/dD3b2eA4_400x400.jpg",ref_id:"6c989c2c-d24d-49a2-8eb1-1d2f1c47f347",twitter_handle:"jamm_councilman"},{name:"thotsnplayerz",profile_picture:"https://pbs.twimg.com/profile_images/1608733749663109120/wwYEZgF2_400x400.jpg",ref_id:"66bbe365-9e85-4c34-9d51-39d8b49937b7",twitter_handle:"thotsnplayerz"},{name:"Will Schoellkopf",profile_picture:"https://pbs.twimg.com/profile_images/1487515153302130691/t5sDMzZW_400x400.jpg",ref_id:"461e2245-1672-4fa1-94f5-7aaf1afa531f",twitter_handle:"realBitcoinDog"},{name:"OKIN_17",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"dbcdeab8-4824-43f7-aeb8-2b9eda6cbbad",twitter_handle:"OKIN_17"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"},{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ecefba20-39fd-4974-8388-066857965b2a/cf486c39-08f9-4ada-9b72-7a297ad74d74.mp3",node_type:"clip",pub_key:"",ref_id:"9f2d3be4-e7df-4b86-981c-466bde0d92ad",show_title:"Satoshi’s Journal",text:"Today I found a really good article. It's basically, I've never heard of this, but it's called the Twitter handle is at all end markets. So, like at Lightning network markets, but it's spelled with an all and an end and then markets. And I guess they post a newsletter. And what's cool is that they basically track what's happening in Lightning. So I'm going to really quickly go over some of the things that are happening in Lightning that I didn't know what was happening. So this one covers the week of the 19th to the 25th, and if you want to follow along, you click the article. Second one to the left on the nest. So it looks like some guy, his. Name is Renee Aaron. He's been working on connecting vending machines to Lightning. So that's pretty cool to do. So he designed a small, easily pluggable module that comes with its own screen and can be used by the vending machine to generate a Lightning invoice and display it as a QR code. The product is currently being tested by a bunch of merchants in Europe, but given its plug and playiness and the benefits of using Lightning in this type of machines. I'd say I'm quite bullish on this. That is pretty awesome. I mean, anything that you can plug into, anything that you need to pay, especially Lightning, that just helps with even more people getting used to using everyday things with bitcoin. So in this case, you can go to an arcade room, arcade game place, and there's a Lightning network module that allows you to scan a QR code and pay instead of having to put quarters and then play your game. So someday that will probably be just commonplace. Probably every machine that can have the ability to be have payments will have Lightning network. And for those that are new, lightning network is a second layered on top of bitcoin that allows instant and basically free transactions. And there's a common misconception amongst normies that think that bitcoin is slow, but when they're talking about that, they're talking about the first layer. And because of the first layer, transactions are completed about every ten minutes. That's why people think it's slow. But even relatively speaking, that's faster than a lot of other things in this world that we use for payments. And one thing is credit cards. Although credit cards can be swiped and allow payment to be done instantly, when you go to the store, that payment is still not instant because it hasn't been quote, unquote, validate or verified 30 days. 30 days later. 30 days later you get a credit card statement and then that's quote unquote finality versus in ten minutes on the bitcoin layer, one network, you have finality in ten minutes. Now, when you go on to the second layer with Lightning, you have basically finality in seconds and for free. Another problem, of course, with Visa, Mastercard and other credit cards is the exorbitant fees you have to pay. So it's an amazing thing what's being done, and the rest of the rule hasn't come to their awakening on it. ",timestamp:"00:10:27-00:14:17",topics:["Lightning Network"],type:"twitter_space",weight:37.03219711188569},{boost:0,date:null,description:"Related news and updates on Start9 operating system",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"0fe0af9b-421e-43ab-800d-7354379ea21f",show_title:"Swan.com",text:"Yeah, I should mention the embassy pro. As I said earlier, our business model is selling computers. We just launched a new one. It begins shipping next week. We've been preselling it for months. It required version 00:33 in order to run, which is why it hasn't shipped yet. So 33 is now done, so it will be shipping next week. These are very powerful mini PCs, 32 gigs of Ram. It's got a very powerful processor and two terabyte NVMe drive. So your disk storage is going to be very fast. And when it comes to running Bitcoin and Lightning and Electrs and then anything else under the sun, you might want to self host. It really is nice to have this sort of like device that's not a Raspberry Pi, right? Raspberry Pi is cool, but ultimately if you want to do this right and you want to have a good time doing it and not run into resource ceilings constantly, then you're going to need a more powerful device. So if you don't already have a mini PC or laptop or desktop that is adequately powered from a CPU Ram and storage standpoint and you want to run a server and you want to do it right, you're going to have to buy something. We actually have an incredible deal. Right. So the device that we are selling, if you were to go online and price out an Intel Nook, say, which is like the goto kind of mini PC solution, if you were to go build an Intel Nook to the exact specification that we sell the Embassy Pro, it would be a few hundred dollars more expensive. So we are not like this luxury overpriced product. We are actually undercutting the computer hardware market for a comparable device. So if you do need to buy something, come buy it from us. Because again, we're not gouging the price. In fact we're undercutting the price. And two, this is how we survive and how we're going to continue to build what we're building, which we hope you all can agree is a good purpose. So do business with us if you can. The Embassy Pro is the best headless server on the market for the best price on the market. And now we can get into whatever you want. And you also mentioned a moment earlier about people like the Federation model, about people running servers for their friends. And that's a lot of what we are thinking about as we put together this product, as we put together the Embassy Pro, that we are trying to get a more powerful product so that people can support more users on the device. Uncle Jim. Right. The Uncle Jim model. And we think it is a little. Bit. We have an ideal in our head that everybody on the planet will be running their own servers and connecting peer to peer. But we also know that that's not reality. As you mentioned earlier, it's not how humans work. And so we are acknowledging that. And while we will hold that as an ideal, this strategy for expansion is actually to go after families, organizations, content creators who have followers, to get them on board with the idea of self hosting and then gradually push to the edges. Right? So the Embassy Pro 33 and our entire roadmap for the next couple of years is really oriented around, do you get this, do you understand what's happening? Do you want to protect yourself and those who trust you? This is the best and easiest way that has ever existed for you to do that. We want to be that solution because we know that once, say, I use the church a lot because quite frankly, churches are going to be very quick to adopt this technology. We've actually had multiple conversations with heads of churches who are looking to do this because churches have been sort of under attack recently from this perspective. We know that when the pastor of a church sets up a private server, you know, in the back office and tells everyone in the congregation like, hey, we're not going to use Discord anymore, we're not going to use Telegram anymore, we're going to use our own private chat server. And in order to do that, all you have to do is go to Church of Christ.com, sign in with an email and password and chat with the members of the congregation. As in, there's no difference to what you are accustomed to. It's exactly the same experience from the congregation member perspective. They're having the same experience differences. Now it's just private and there's no intermediary. Scooping all your info churches, but it's a trusted intermediary. Exactly. But now the people in the audience understand this and they're like, wow, I want to do that for my family. So the head of family or whoever the most technical person in the family is, is now going to go get a device, put it in the home and be like, hey family, we're going to have private family talks, we're going to share pictures with each other in. A way that it doesn't in the future. Every tribe and every family is going to have its own CTO. Yeah, but we're trying to make that job really easy. Right? We're trying to take the job of system administrator, which is traditionally very hard job, highly paid job. We're trying to turn it into a Gui, a graphical user interface that a college intern could do. Right. Anybody? You're making the user interface very simple or the experience very simple. Okay, so question, you're basically building an operating system. Yes. That seems like a really hard thing to do. Why not just use Linux or something like that? We do use linux. Linux? Linux is a very unfortunately a very small part of an operating system. The basis of what we've built. We use Linux, we use docker, we use all of these tools that already exist in our open source. We're not shying away from any of the intellectual capital that has been built in the open source community over the many years. But there's a lot that has to be built for the user experience that we want. Okay, so in other words this is like a Linux stack but you guys are designing it in a way so it's super easy for people to use and it's focused on decentralizing stuff. Yes, but almost every Linux distro out there. When you say I'm running Linux, you're running probably one of two desktop environments like Gnome or KDE and we don't have any of that. We had to start pretty low in the stack in order to be able to design the experience towards a server device as opposed to a client device. So a lot of it is different than what you'd expect out of something like Ubuntu or ",timestamp:"01:49:29-01:56:20",topics:["Embassy Pro","Data protection solution","Start9 operating system"],type:"twitter_space",weight:12.334749221801758},{boost:0,date:1668866400,description:"Listener question: Is there counterparty risk to USDC given banks exposure to the stablecoin?",episode_title:"FTX Is Worse Than Enron w/ Lawrence Lepard, Caitlin Long, Dylan LeClair, and Dr. Jeff Ross",guests:[{name:" Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1307109108127019008/rPNj47yJ_400x400.jpg",ref_id:"4f4f53c7-5a3a-46df-b334-9951fe38dc96",twitter_handle:"realjeffreyross"},{name:" Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1599858581611941922/XxvPPWAt_400x400.jpg",ref_id:"c1d20e9f-7362-47be-a3a0-5b9c004cd58e",twitter_handle:"DylanLeClair_"},{name:"Sam Rule",profile_picture:"https://pbs.twimg.com/profile_images/1522271013026729987/RQZOdzjq_400x400.jpg",ref_id:"09214ea0-d8ff-47cb-84fe-08e8517768e5",twitter_handle:"samjrule"},{name:" Caitlin Long",profile_picture:"https://pbs.twimg.com/profile_images/1362592672150528003/iYZ84uXB_400x400.jpg",ref_id:"c0244641-6347-4b82-b2a9-0ee38b600c08",twitter_handle:"CaitlinLong_"},{name:" Lawrence Lepard",profile_picture:"https://pbs.twimg.com/profile_images/1114275000889032704/mOUsG1XC_400x400.png",ref_id:"bafa8935-8957-4a9f-aaaa-e45fb46615d4",twitter_handle:"LawrenceLepard"}],hosts:[{name:"q_liketheletter",profile_picture:"https://pbs.twimg.com/profile_images/1560683048680665088/4MrHM_UY_400x400.jpg",ref_id:"3303023d-a793-432c-8020-9151bd237523",twitter_handle:"q_liketheletter"},{name:" phjlljp",profile_picture:"https://pbs.twimg.com/profile_images/1601641645572767745/2Obq9UgK_400x400.jpg",ref_id:"2e5ffdd9-fea5-4daf-85e5-27015890442f",twitter_handle:"phjlljp"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/1583c7c4-f4f2-4e52-8f27-a1eaeb6289fd.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/bitcoinmagazine/22.11.18_FTX_Worse_Than_ENRON_Moon_and_Crowd_Health.mp3?dest-id=1210361",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"8b94fbcf-e349-4b2f-8425-66287345b9ae",show_title:"Bitcoin Magazine Podcast",text:"also wonder a little bit with the risk with these banks. Like, yes, a lot of crypto companies use these banks, but these banks also interact with USDC, and USDC interacts with a lot of other counterparties. And so, like, is there some level of counterparty risk or credit risk that USDC faces with some of these financial institutions as well? And what does that mean? And I've also kind of been scratching my head a little bit about why all of these just have stopped processing US. DC. On Salona. And I don't think I've ever seen an example before of a stable coin kind of dying on a specific protocol and what that even means. Either of you have thoughts on that? Yeah, anybody else? Yes? I'm not sure. I think it's more so just like it was more of an FTX thing. I don't know the long history of stable coins. On Salana, but I do know that they were one of the first ones to kind of have like coinbase. You could do each base withdrawals, but FTX had all the rap soul tokens. Maybe it's just like finance and everyone else just kind of sticking a fork in them. I'm not really sure. Well, I guess what I'm asking is I'm guessing that USDC on Solana would follow the same minting and burning processes as USDC on any other protocol and that it's circle at the end of the day that has some process for ensuring that a fraudulent party couldn't just MIT a bunch of USDC and injected into the system. And so whatever the risk is there with Salana, does that also extend to Tron for example, or some of these other parties and I just don't know enough about how these stable coins actually interrupt with the banking system trying to get an understanding of that risk. Yeah, I think the scary thing is and I was listening to that Larry, you were saying something about that Mark guy and he's like a known short seller with the banks. And Caitlyn, your point about firing from the hip on rumors is totally true in finance and crypto. It's no different from the legacy system. But if there is somewhat of just because of the rumors or because of the potential for a fraud case, we don't know. This is more so to speculation than anything. But if there's like, you know, I mean these are fractional reserve banks, right? So if there is a kind of a run right, and like the crypto, native companies don't really have many places to go, but just, you know, I think these things are non zero probability. That could get pretty hairy for an ecosystem that doesn't really have any options. Well, that's what Ryan Selkus has been talking about. Yeah, sorry, go ahead. No, I think that's just one of the things I'm looking at is like, OK, you have not only like the companies, but you have some stable coins on these rails and the Send network and hearing some I got some McBurnie's in my ear and my DMs that are saying like certain counterparties as of yesterday, not too well known, just some very small scale institutional players have alerted their clients that they're no longer accepting sen like Sen Silvergate exchange network wires out of an abundance of caution and stuff like that. Just kind of flares my kind of senses up a little bit, kind of ring some alarm bells when you see like, an institution, say, hey, we're no longer accepting this crypto exchange network wire out of an abundance of caution. And the stock's down 50% month over month and 10% day every day. Are you referring to Falcon act? That was true, yeah, they sent it out to clients. So Falcon X is not small. I mean, Falcon X is one of the biggest institutional custodians. I don't know exactly how they describe their platform, but they're big. Again, I just careful here. Yeah, but that may be rumor, it may be true. But one thing to caution everybody. There are laws in the United States against a bank run. There are actually laws against that. I would just encourage everybody take a deep breath. It may or may not be true. There are so many rumors floating around this sector right now. And maybe this is where those of us who have the proverbial gray hair can think back to the times that we've been through. The various financial crises, the bond market correction, the Long Term Capital Management collapse in 1997, you know, the tech stock bubble bursting in 2001, and then of course, the mortgage bubble bursting. And seven into eight and nine through the great financial crisis, the rumors fly. And it's not until afterwards that you see where the real truth was. The sad thing about this sector is that there's definitely things move fast, right? And so the rumor mill can move things a lot faster than they otherwise might. So I would just caution everybody, especially when it comes to the banks, just definitely ",timestamp:"00:28:12-00:33:48",topics:["counterparty risk of USDC","USDC on Solana","Circle","stablecoins","SEN network","falconx"],type:"podcast",weight:15.743046803788744},{boost:0,date:1672207217,description:"Improvements made to the Bitcoin node",episode_title:'The Orange 🌞 Reading/Discussion "The Book of Satoshi" & Bitcoin News',guests:[{name:"CouncilmannJamm",profile_picture:"https://pbs.twimg.com/profile_images/1251040014152024066/dD3b2eA4_400x400.jpg",ref_id:"6c989c2c-d24d-49a2-8eb1-1d2f1c47f347",twitter_handle:"jamm_councilman"},{name:"thotsnplayerz",profile_picture:"https://pbs.twimg.com/profile_images/1608733749663109120/wwYEZgF2_400x400.jpg",ref_id:"66bbe365-9e85-4c34-9d51-39d8b49937b7",twitter_handle:"thotsnplayerz"},{name:"Will Schoellkopf",profile_picture:"https://pbs.twimg.com/profile_images/1487515153302130691/t5sDMzZW_400x400.jpg",ref_id:"461e2245-1672-4fa1-94f5-7aaf1afa531f",twitter_handle:"realBitcoinDog"},{name:"OKIN_17",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"dbcdeab8-4824-43f7-aeb8-2b9eda6cbbad",twitter_handle:"OKIN_17"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"},{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ecefba20-39fd-4974-8388-066857965b2a/cf486c39-08f9-4ada-9b72-7a297ad74d74.mp3",node_type:"clip",pub_key:"",ref_id:"51926635-4d2a-47d0-9e11-62c173898631",show_title:"Satoshi’s Journal",text:"like I said, I've been listening to that bitcoin explained podcast, digging into it lately, just plowing through all of it, because that's what I love about the podcast so far, is that the episodes are only like 30, 40 minutes long. They're all these long two hour, three hour drawing out conversations about bitcoin. They really just get to the point and get to the meat and potatoes, so to speak, of whatever they're talking about. And the most recent episode I listen to was about bitcoin core. Update 21. So this was like two years ago almost already now. And it's cool to see what Satoshi was talking about and what the nodes did then to the improvements that we've made since then and then where the mindset was then, and then where we are now, and the things that we've done with Taproot and everything else. It's really cool to see that transition and be able to look back and see the inner workings. Like I said, these guys go into the real deep nitty gritty how the nodes communicate with one another, why they communicate with one another in certain ways, and how they used to communicate with each other in which there were basically ways for people to attack you, essentially. Or act maliciously against your node because of the way that the original protocol used to work and how they've improved upon it to where those options are no longer viable. And you really get to see that bitcoin core developers really do have an adversarial mindset when it comes to the meticulous choices of what bits they choose, why they choose them, and why they do integrate them overall. Yeah, I think that's one of the most powerful things about bitcoin is it's very slow in its evolution. Well, it's exactly like how evolution is happening on earth. I mean, it doesn't happen overnight and it happens very slowly. And in many ways, it actually requires a consensus of nature to be able to make that evolution. And so, like bitcoin, you're not just going to make a change overnight. When these developers are developing, they first have to do a bit, then that bit has to be talked about by the developers. And then before you can even integrate it, there's a long, drawn out process, vetting process that I'm not even aware of, but they're very meticulous, like Tk said, to implement any changes into bitcoin. And these changes would be like soft forks. That wouldn't be hard forks, they would just be little tiny changes that could be done. And of course, you then have to update those have to get updated, minors have to get updated, and they have to have the consensus to accept those updates. It's just not like an easy process. It's a long, arduous process to finally get to the point where you can actually implement it. That's how I understand it, anyways. And because of that, it's a beautiful thing because bitcoin is like actually think about it this way. One of the oldest creatures on Earth is a crocodile. A crocodile from millions of years ago till now has evolved, but for the most part, it's still the same, but it's become more resilient. And the tiny, small changes that has happened to that crocodile have made it that much more resilient. So that's the same thing with bitcoin. It just gets hardened and hardened and hardened and hardened after many, many years. And so hundreds of years from now. Bitcoin is going to be a hardened freaking crocodile, so to speak. Anyways, that might have been a dumb ",timestamp:"00:32:45-00:36:44",topics:["Bitcoin improvement"],type:"twitter_space",weight:35.70854341455261},{boost:0,date:1670706053,description:"On-chain game for stack",episode_title:"Bear Market Buidl — Major #Bitcoin developments! #Stacks #Sidechains",guests:[{name:"@GriffdenNFT",profile_picture:"https://pbs.twimg.com/profile_images/1604377729062895617/R4pSEdH4_400x400.png",ref_id:"dafdf7ec-28c0-43d3-a0d9-b2d266f38738",twitter_handle:"GriffdenNFT"},{name:"@Chad_333",profile_picture:"https://pbs.twimg.com/profile_images/1592310541732970496/o1tbw9Eo_400x400.jpg",ref_id:"484c7695-6a4e-4141-9585-1109bf23f8cf",twitter_handle:"Chad_333"},{name:"@jackbinswitch",profile_picture:"https://pbs.twimg.com/profile_images/1601214177439260672/O0SpU5B1_400x400.jpg",ref_id:"9685e7f3-3e0c-4b84-9fd9-b8a1d96f6ae9",twitter_handle:"jackbinswitch"},{name:"@jimdotbtc",profile_picture:"https://pbs.twimg.com/profile_images/1593210347825119237/L_SNThWQ_400x400.png",ref_id:"5dcf5545-fad6-44ee-ae56-360c5efe1151",twitter_handle:"jimdotbtc"}],hosts:[{name:"@BigRpic",profile_picture:"https://pbs.twimg.com/profile_images/1604962150388219904/WqiCye-r_400x400.jpg",ref_id:"726f0c95-9d94-4d44-a056-8ad3c9e3ddd5",twitter_handle:"BigRpic"},{name:"@CarlsonDoc",profile_picture:"https://pbs.twimg.com/profile_images/1597382056308350977/1NPexynZ_400x400.png",ref_id:"e34fa2b2-a58e-4461-81a0-d10c1058dfc2",twitter_handle:"CarlsonDoc"},{name:"@STXLDN",profile_picture:"https://pbs.twimg.com/profile_images/1533793338931007488/o3laQDCp_400x400.jpg",ref_id:"5c3bc906-3aed-44f9-851a-94804c6fe5ca",twitter_handle:"STXLDN"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99046513-2614-4eae-9de4-5781ba4b330a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/fc3bebcb-8271-433e-8d81-84dd06f3b022/aec527bc-539d-4d3b-9bad-db4af9e1a1ba.mp3",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"09e8e827-fd7b-4800-8633-9f4fe7416210",show_title:"STX:LDN",text:"I'm just going to pop in and just thank you for those kind words, Jack. You've been an awesome peer alongside everybody else in there. To have a more Stacks native user and a big voice for Stacks is great to have in the group. You have some amazing questions. I've learned a lot just from you being curious and sharing those curiosities with our mentors and I can echo everything you said. I think that it's such a fantastic opportunity, especially for someone like me who has minimal real world business experience, to be able to go in and learn the Lean Startup method from all of our mentors. Did I get rugged? Sorry. No, you're here. I thought I got rugged. Okay, just making sure. Thank you. And for anyone who's interested in building in Stacks and wants to open your network and meet some great people, possibly or some great team members, I could highly recommend the Web three pre accelerator startup Lab. And I'm really excited to see everybody start to get their ideas formed and just this great experience. And of course, being kind of brought into the Sachs community in this way, it gives me a lot of exposure to small, big, all types of people in this community. So I guess I could talk a bit about what we're doing. My team and I have pretty much landed on our idea. We have to speak to a few mentors here soon to make sure we can get some legal clarity before we continue on because it is going to be on chain gambling and that's a really important part, I believe, to build an investment ready startup. We have to have all those things in line before we go forward into the stacks. Accelerator, hopefully. And we're currently just building out one simple game. It's going to be an on chain digital coin flipping game with 50 50 odds playing against the house. We have many ways that we want to expand upon that, but if we see some success with this project and building more on chain games for Stacks, that is our grand vision. And we would love to also open up our platform to other builders or other people who want to build on chain gambling games but might not have the resources, whether it be a dev or the marketing sense. So it's really going to be a bit more than just the fungible flip game. But one thing we learned in the Pre accelerator is go for that one killer feature and shoot for something simple and something that was maybe done on another chain. So I had just remembered this game I had played on Salana about a year ago called Djen Coin Flip and that's where I drew the inspiration for our game from. And yeah, it's looking like it's going to turn out to be a success. The reason I thought this would be a good application for Stacks is I come from the NFT trading world where we're all degenerates mainly, and I look to that as being one of the bigger consumers, consumer groups, I should say, in web three, kind of like the Degenerate Gamblers or Speculators. And I truly haven't seen a ton of degenerate outlets for users on Stacks. So we want to be able to build out some of those fun games or gambling s games for Stacks users. We're mainly shooting for more non traditional gambling games, as I've noticed, that's blown up in the online gambling world over the past couple of years. But we really think that transparency is important when you're online gambling and we're going to be able to provide that through smart contracts on Stacks, of course. ",timestamp:"00:20:15-00:24:50",topics:["On-chain game"],type:"twitter_space",weight:22.50741216002476},{boost:0,date:1633737600,description:"Public mempools versus private mempools ",episode_title:"Understanding Miner Extractable Value On Ethereum",guests:[{name:"Nathan Worsley",profile_picture:"https://pbs.twimg.com/profile_images/1576238702908637186/xzcScTyV_400x400.jpg",ref_id:"20529242-4546-475a-af1a-125b83aedd81",twitter_handle:"NathanWorsley_"},{name:"Robert Miller",profile_picture:"https://pbs.twimg.com/profile_images/1595788538938695680/w6i5Q6s4_400x400.jpg",ref_id:"292cfadd-7e67-4e34-876b-99804d416e20",twitter_handle:"robertjmiller_"},{name:"Jordan Frankfurt",profile_picture:"https://pbs.twimg.com/profile_images/1544902585462788097/bGe0hNIi_400x400.png",ref_id:"149db25a-26b1-4f69-8c9e-ec87e08ab8c8",twitter_handle:"jordanfrankfurt"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=6IxaLCPm6_E",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"330a0238-1acc-47fe-b809-48cc986a0b21",show_title:"Compass Mining",text:"I'll rise to the challenge. Jordan, at flush spots, we like to point out the places in which our projects fall short so people can hold us accountable and I hope those of you on the panel do and the community abroad. So I think private mempos could be something that is very centralizing for the network overall. And I think it also turns the network into something more opaque. For better or for worse, the public mempool is that it is public and so everyone can sort of see transactions passing through. They have the same information that it has a level of transparency to it somewhat. There are kind of nuances over there, but you don't know what's going on with your transaction when it goes to flashpots protect you assume that we are a good actor. You assume that we're passing your transaction on without doing anything. And this is a repeated game where you see the game update, right? So you pass a transaction to us, you see the state of the chain, you see if you're a front run or not. You can choose to not use this if you don't want, but there are trust assumptions baked into that and it is a more centralized vector that has less transparency over the outcomes. I think, to be clear for the listeners, I'm not shitting on flashbacks. Protect I think it's a really cool thing. We are planning on integrating it into uniflop. Oh, some alpha. Yeah, we are actively working on utilizing this service. So we're big fans of flashbacks. Maybe I could give a little bit of color to some theoretical problems with having completely private mempools as Robert touched on. I think this is very important. Anyone running a full note or mining doesn't actually have access to the entire MEMP pool. They only have access to a small part of the men pool. The mempool is being shared around everywhere, but each person only can see a small piece of it. And the mempool is like communicating information that traders are using to capture mev. But that's not the only kind of information it's communicating. It's also communicating information about load on the network and it's communicating information about appropriate prices to set the transactions. And if you start to close off all of the menpoles, then that information is no longer being communicated around the network and you have to find other ways of communicating it. And also another point that Robert touched on as well is this issue of censorship. When the mental is open and everything is being shared around the network, you have some assurances about whether you're being censored or not, whether something is happening to your transaction. Maybe it's getting delayed and someone's doing some kind of private statistical extraction that you don't know about. If you have confidence that your transaction is going everywhere around the mempool to all these different nodes, and you can see that, then you can have some proof that that's not happening. That's not to say that I don't like the idea of private MEMP pools, but this is like maybe an argument that you could make sure sorry, go ahead. One thing that just crossed my mind, as you're saying that is a proliferation of private or at least like secondary mental mechanisms or gossip mechanisms would be essentially allowing users more choice in their privacy of the transactions. We see them, like the Quinn, things like Clover and Dandelion as mechanisms for providing users with better safety and defense against Eclipse attacks or whatever their Node. And maybe that's one point in favor of a proliferation of transaction relay mechanisms. ",timestamp:"00:45:01-00:48:33",topics:["Public Mempool","Private Mempool"],type:"youtube",weight:12.134265304355546},{boost:0,date:1670706053,description:"Deep Lake finance: built for stacks",episode_title:"Bear Market Buidl — Major #Bitcoin developments! #Stacks #Sidechains",guests:[{name:"@GriffdenNFT",profile_picture:"https://pbs.twimg.com/profile_images/1604377729062895617/R4pSEdH4_400x400.png",ref_id:"dafdf7ec-28c0-43d3-a0d9-b2d266f38738",twitter_handle:"GriffdenNFT"},{name:"@Chad_333",profile_picture:"https://pbs.twimg.com/profile_images/1592310541732970496/o1tbw9Eo_400x400.jpg",ref_id:"484c7695-6a4e-4141-9585-1109bf23f8cf",twitter_handle:"Chad_333"},{name:"@jackbinswitch",profile_picture:"https://pbs.twimg.com/profile_images/1601214177439260672/O0SpU5B1_400x400.jpg",ref_id:"9685e7f3-3e0c-4b84-9fd9-b8a1d96f6ae9",twitter_handle:"jackbinswitch"},{name:"@jimdotbtc",profile_picture:"https://pbs.twimg.com/profile_images/1593210347825119237/L_SNThWQ_400x400.png",ref_id:"5dcf5545-fad6-44ee-ae56-360c5efe1151",twitter_handle:"jimdotbtc"}],hosts:[{name:"@BigRpic",profile_picture:"https://pbs.twimg.com/profile_images/1604962150388219904/WqiCye-r_400x400.jpg",ref_id:"726f0c95-9d94-4d44-a056-8ad3c9e3ddd5",twitter_handle:"BigRpic"},{name:"@CarlsonDoc",profile_picture:"https://pbs.twimg.com/profile_images/1597382056308350977/1NPexynZ_400x400.png",ref_id:"e34fa2b2-a58e-4461-81a0-d10c1058dfc2",twitter_handle:"CarlsonDoc"},{name:"@STXLDN",profile_picture:"https://pbs.twimg.com/profile_images/1533793338931007488/o3laQDCp_400x400.jpg",ref_id:"5c3bc906-3aed-44f9-851a-94804c6fe5ca",twitter_handle:"STXLDN"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99046513-2614-4eae-9de4-5781ba4b330a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/fc3bebcb-8271-433e-8d81-84dd06f3b022/aec527bc-539d-4d3b-9bad-db4af9e1a1ba.mp3",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"a3fe7197-5948-404f-a8b0-f04bb130db27",show_title:"STX:LDN",text:"can you tell me? I'm friends with Rafa, and as I understand it, he's co founder on Deep Lake. What are they actually doing? How does it work? Well, I can't tell you from a technical standpoint, but I can tell you from a Djen trader standpoint, deep Lake Finances is a way for people to trade perpetual futures instead of using a centralized exchange like BitMEX or what have you. It's a D Five protocol that allows you to do that. Really, the ultimate thing is the way it's being built is whatever kind of liquidity providers you want to have, you'll be able to make these pairs on this platform and trade their futures so the applications go bigger than just Bitcoin and Stacks or whatever. The applications for something like that can be scaled up tremendously, but just that in and of itself. So there's a huge need in the market for such an app. Hey? Well, yeah, I think right now there's a huge need for a lot. Right? I mean, you don't know what you don't know, but something like that. Absolutely. 100%. Just from a trader standpoint, which before I, when I learned about crypto, the next thing I learned was trading crypto from a trader standpoint, a decentralized exchange that I can trade futures on and not have to risk leaving my coins in a centralized exchange, especially status posts, FTX and all of this other nonsense we've watched. That's massive. That's absolutely massive. The audience for that is enormous. Well, that's great. I'm so happy for RAF coming up with this and putting his team together. It's really impressive. I had no idea what it really meant by a perpetual and when you say futures market, well, yeah, I understand that and that's great. That's just great. Yeah, it's awesome. Right? A lot of tech people don't like to think about it this way, but I think about it this way because this is just what I've seen. What's being built in Web Three started on the back of traders period when the news and when everyone in the real world and everyone was just insisting bitcoin itself was a scam and it was tulips and it was this, it was that, and the other traders were out there with their skin in the game, day one. And the liquidity that we've provided to these various chains, sometimes more liquidity than we cared to, but the liquidity we've provided has built this market. And I think that that natural progression is still there because it's still such a young market. Like I said, this is what we're seeing happen right now. The fruits that come to all this labor are going to take generations to ultimately come to fruition. But yeah, traders bring eyeballs, traders bring liquidity. And having apps like that on any chain are really going to bring the investment, bring the capital, bring the interest. It's going to do just like it did with me when I discovered crypto. The giant green candles makes people be like, hey, what's going on over there? I'm going to check this out. Or with NFTs, they come for the pictures and they leave with the understanding of the evils of Fiat. Right? I mean, this is what we're doing. So, yeah, having something like that being built right now, is just huge for Sax. 100%. Yeah. I didn't know what Rafa was trying to put together. And when they published that landing page for Deep Lake, I thought, well, that's interesting. I just didn't know what they meant by perpetuals. And when you talk about futures oh, of course, right. Makes a lot of sense. One thing I do know is I don't believe Rafa is the co founder of Deep Lake, but he is partnering with them for whatever project he is building. Is that right? Rafa is not the co founder of Deep Lake. No. I just dropped an article in a link if you want to check it out. It's a small dive about what they're working on. The guy who started, a guy named Abdel Harass. Really just cool dude, really smart guy. But yeah, there's a little article down there below if you want to check it out. Absolutely amazing tech. Thank you. ",timestamp:"01:02:21-01:08:24",topics:["Deep Lake finance","stacks"],type:"twitter_space",weight:21.730685924323048},{boost:0,date:1671735703,description:"Steps to onboarding a new bitcoiner",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"4491ca29-82ab-4599-8d39-039653b35aa3",show_title:"PUBLORD",text:"No, I just did that last night. I literally sent a text to it. I got this guy that I onboarded this year. A few months ago, he's bought a little bit of Bitcoin. He's got like maybe a couple of $100 worth on cash app. And last night, he was finally asking me, he was asking a question. I was like, oh, shit. I left before I could teach you how to use wallet. So literally, I spent 45 minutes writing this text, basically explaining exactly in detail and taking pictures, like how to download, like, blue wallet, create a wallet, save his keys, told him to write them down, and then how to copy and paste the address and explain private keys. And it took a while, but I sent it. And at the bottom, it's like, congratulations. Like, you now own value that nobody can take for you. And I know that when he finishes that, he's a little older guy and he doesn't really know much about tech, he's going to feel really accomplished when he gets that done. And that's such a good feeling. It's like you do forget like Pablo was saying, you get down the rabbit hole, and you forget there are still people at the Tilt, like, they haven't even crossed in yet. And pulling them across even just a little bit and planting that seed, it's an amazing it's an amazing part. I love hearing all this stuff. You're absolutely right. That feeling of that person kind of having and you just know that there's going to be many more AHA moments throughout their bitcoin journey. But witnessing some of those first ones are pretty incredible. And especially this past month or so, I've had an influx and this gets me so bullish. I've had an influx of people booking me for one on ones saying, I've never self custody before, and now is the time, because this year has scared the hell out of me. So SBF has gifted us with a whole new generation of self sovereign hoddlers that are getting their shit off exchanges. I had a session earlier this week with a dude, probably 20s, early 30s, something like that, and his mom, and they were both taking self custody for the first time, and they were doing it on cold cards. His mom learned how to air gap in a transaction, which is incredible, and she did very well. That's amazing. Yeah. And she understood what was happening. As I was saying, like, oh, well, you just need when I was explaining the SD card, I was like, yeah, you bring it over. All you're doing is you're giving a signature like you would on using your credit card. You're signing the transaction. You're giving permission to send only the transaction that's in front of you. And she's like, okay, that makes sense. And she got it. I've been through a ton of these sessions this month, and it's just every time the people are like, this is really not that bad. Like, once you kind of understand what you're doing, it's just getting over the hurdle of saying, okay, I'm going to spend some time to learn this. But once they do, they're like, oh, my God. I don't know why I was so afraid. It's such an amazing feeling. If I did this where I'm doing on the 18th, would any of you be happy to dial in and answer questions? We kind of did, like, a Twitter space for it, maybe I'd be happy to join the space that you're talking about setting up. Also, I'm a fan of the idea of doing a split night. Like, one more for the beginners and one for the people who are kind of well into their journey and just want to connect on more up to date things. You could have sections to the night I've seen people do where, okay, from this time to this time is beginners, and then from this time to this time is advanced. And then you can also encourage the advanced folks to show up for the beginner section so that you have hands on deck to assist individuals as they set up the first wall. Very good. That's a great idea right there. I'll go one further and you have different sections. You can have, like, an upstairs for advanced, downstairs for beginners. Because I'll tell you what, when I saw BTC session in action, trying to explain Bitcoin from zero to now, you are running your own node in 20 minutes. One of the most impressive things you'll ever see. Let me tell you something. Ben knows his stuff. And it was PowerPoint after PowerPoint after PowerPoint, and my eyes were glazed over. I was learning a lot, man. But then he brought it home, beginning to end. Yeah. You got to break it down in small bites. I think that's exactly what I want to do. I want to try and make it, like, fun. We're going to have a laugh and joke. We can make it really typical, but I don't really want to bamboozle people as well. At the same time, I kind of want to build the community like we do on this space. This is a great thing I love about your space, probably, is that we can talk about some random stuff sometimes, but it's just because we're all on the same wavelength. This is why I love hanging out. You know what I mean? It's just hanging out with mates. Yeah. This is where we sort of begin, man. I've always started with just simple questions between each other. But it's tough, man. I mean, to come into this. First off, you're not going to drag anybody 26 miles to a marathon. So the ones that you try to orange pill that you wish, guess what? They better have a good foundational. Understanding that the money system is broken to begin with after that, that's just the beginning, man. That's just beginning. Going down this rabbit hole. Okay, now you think I understood what? I never heard the term Austrian economics until I found bitcoin. What do you mean, Austrian economics? What the hell is going on here? You don't understand that stuff, man. You just go down there, you start learning about the debatement of currency and the Fed, how this all began. Yeah, that's hard to put into one weekend, let alone one day. The money system is broken. You all we know. And the prophecy is coming true tomorrow. It's like Saturday. Easy. It's easy. Educator, sir. ",timestamp:"02:24:15-02:31:42",topics:["bitcoin self custody","bitcoin education"],type:"twitter_space",weight:28.510520965677095},{boost:0,date:1671735703,description:"Possibility of block mining on the hash rate",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"c09cfdab-f18f-45ad-9542-bd095f3ef52a",show_title:"PUBLORD",text:"Well said, DC. Just real quick, I see bitcoin blue. We respect the hands here. I didn't know if you're going to change topics. Did I ever tell you my Easter egg analogy? Easter egg analogy for that? Yeah, I've heard it. Tell it again, though. I like it. Yeah, so it's pretty cool. At a club here, they had different age groups for an Easter egg hunt, and what they did like kids. They had like five and under in one area. Then they had like kids that were six to eight and then like nine to eleven, but they had three different Easter egg hunts going on. All right, so those little kids, look, they're not going to really surf too deep, so they literally would just leave the eggs open on the ground. I mean literally on the ground next to the tree, whatever, progressively got a little bit harder. So the other kids sort of hit them. You can only see a little bit of the egg. They would find them. And for the older kids, of course, man, you got to stuff very deep. So the difficulty adjusting to me is, guess what? There's a certain number of eggs we got to find every hour. You got little kids looking for hard eggs to find. Guess what, man? It's going to take a while. So what do they do? Difficulty adjustment. We're going to take you guys and we're going to put you we're going to take you from the hard part, and once in a while, we got to shift you back down to where everything is out in the open. We're going to give you some of the easy eggs to find, and over the course of everything, that's going to average out to our ten minute block time. I love it. And it's a great metaphor. It's amazing how something like that is like the missing ingredient to a system that can actually regulate itself over a long period of time. It's like truly mind boggling when you consider the computing power that's on Bitcoin today versus when it started. Satoshi ran that shit for like a week before he found Howl, who started running it, or however long it was, how Hal joined. And now there was two people with computers running this code. And today it's just like, absurd. The number of machines that are just computing as fast as they possibly can. Here's the same issuance timing. Here's some fed. TC what guarantees that the next block will be guessed correctly? Nothing. So essentially, there is a possibility for the block. The next block never gets mine. It's true, but we've never seen that happen so far. And the thing about it is, again, humans don't do so well with big numbers. You look at the total hash rate, and it's like over 200 x a hash overhead. That's over 200 million trillion guesses per second. You're saying I'm thinking of a number and you got a million trillion people no, 200 million trillion people standing in front of you all guessing. Wait a minute. 200 million trillion. Is that the omnibus, the next spending bill for the government? Oh, yeah, definitely no. TC it's amazing the foresight that Satoshi had, because in some of his writings you could see that he was saying that, I know in the future, because of Moore's Law, like, computing power is going to increase and blah, blah, blah, blah, blah. And so he's like, oh, it is necessary for this network, for its longevity, to have a way to, like, self regulate. And it's just the level of fucking, like, genius you have to have in order to foresee all this shit and write the code that makes it work. It's just fucking unbelievable. I was telling my friend that the difficulty adjustment is like, what makes it work? It's one of the things that makes it work. But to me, it's like, if it wasn't there, bitcoin wouldn't function the way it does, right? It wouldn't. It's a perfect balance. And where we saw it, really, the first time I saw it unleashed was when China took all those miners offline. And I forget the percentage that came offline. It was 50%. Oh, man. And it worked. It was just beautiful to watch unfold. Because when that adjusted, guess what, TikTok neck block. There's no stopping bitcoin. You can break it down even more, and it's even more beautiful. It's like the hash rate started to come offline. Blocks start to come in slower. Then no more than two weeks later, this adjustment occurs and re incentivizes whoever's still hashing gives them a bonus. They were sitting on the sideline, an incentive to start doing that activity. Dude, I know this first hand. I FOMOD into mining. Last summer, June, July 21, I saw the hash rate plummet. I realized that the difficulty adjustment had crashed, and it was easier to find blocks today than it was a couple of months ago. Let's fucking go. And that's what's really incredible about it, is the resulting incentives that come from those changes while simultaneously stabilizing a system that's having absolute volatile changes. How do you kill something like that? Where the human incentives are, the greed is just, like, ever present. If the fucking hash rate drops, everyone's going to foAmal into mining. Like the small people, like everybody in their house. And it's just so beautifully. It's so elegant, because in a way, it's harnessing forces and variables that are so hard to human psychologies. Like game theory. Whoever came up with bitcoin, whoever Satoshi is, bro, I'll get on your knees and suck your dick. That's the level of fucking, like, why does this shit keep coming up in this room, man? I swear to God. First breakfast because it sucks. The happy hour, bro. I think the longest I've ever had to wait for a confirm that I knew was going to be next block was like, 84 minutes, and the shortest I've gotten I've gotten them were like, literally by the time I go to check, it's confirmed, like, within, like, 20 seconds. So it's crazy how the variance can be. Yeah, bitcoin is beautiful. I said it. Bitcoin ",timestamp:"00:21:59-00:29:16",topics:["block mining","hash rate"],type:"twitter_space",weight:28.510520950548525},{boost:0,date:0,description:"More thoughts, questions and answers on Nation States and the Information age",episode_title:"The Sovereign Individual - The End of Egalitarian Economics",guests:[{name:"chriskapilla",profile_picture:"https://pbs.twimg.com/profile_images/1362817539135463427/2AXUeFLV_400x400.jpg",ref_id:"9d495790-93f2-4d6c-b770-b2885f66859d",twitter_handle:"chriskapilla"},{name:"remydenton",profile_picture:"",ref_id:"5c5beb0c-c214-4f23-b79a-e71bf9368f2d",twitter_handle:""},{name:"JackRonaldi",profile_picture:"https://pbs.twimg.com/profile_images/1583261828628496384/IazkwYjk_400x400.jpg",ref_id:"01621476-f040-49dd-8160-4035228faf78",twitter_handle:"JackRonaldi"},{name:"AlistairZ80Aftw",profile_picture:"https://pbs.twimg.com/profile_images/1362882489895841795/gH2zix3l_400x400.jpg",ref_id:"3dcba197-47ca-40c0-857d-73cec4325801",twitter_handle:"AlistairZ80Aftw"},{name:"mattonbtc",profile_picture:"https://pbs.twimg.com/profile_images/1549459254280687618/jzdHJou3_400x400.jpg",ref_id:"998167d3-e036-4ef1-9a05-4f062903f0c5",twitter_handle:"mattonbtc"},{name:"wai_wairua",profile_picture:"https://pbs.twimg.com/profile_images/1536570699761848320/T10Owc60_400x400.jpg",ref_id:"c4d4ff36-73fa-4471-91ba-de0f99a49e99",twitter_handle:"wai_wairua"},{name:"UltraSolomon",profile_picture:"https://pbs.twimg.com/profile_images/1468332451055427601/YVgUuUHc_400x400.jpg",ref_id:"6371d519-cc98-4bf4-9f82-be17b1ea532a",twitter_handle:"UltraSolomon"}],hosts:[{name:"BTC_Venetians",profile_picture:"https://pbs.twimg.com/profile_images/1557482467539521537/Kel-eVww_400x400.jpg",ref_id:"a6313ca9-3869-4477-88ad-30172957edcf",twitter_handle:"BTC_Venetians"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/75ec86b1-cb6d-467f-a66e-5e642e5c126a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c8cc9ec1-061d-4f53-a24b-ee43a56c7715/e650057e-2369-4e75-8119-4975a1fc4cac.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"af7832e4-45e7-44e6-a91c-04652f9ce4fa",show_title:"Bitcoin Venetians Book Club",text:"let's move on to my favorite question that I came up with, which was, let's imagine that the nation state doesn't survive and it's a bunch of small sovereignties. I guess where I'm always confused is, as a bigger entity, you're more powerful. So if we split up into a bunch of smaller ones, like, what's to prevent, like, some Genghis Khan coming around and conquering the small, weaker sovereignties, small sovereignties. I guess part of it is the wealth being unconfiscatable, the wealth being situated online rather than in terms of physical resources, in terms of information, and in terms of Internet native money. I find this very interesting. Like, it's kind of the Jason P. Lowry form of address. And I challenge that. Because if you have one country with nukes or greater violence in one country without, and this is physical violence, not informational violence. And the authors having talked about infrastructure being a key component of wealth, it does strike me that the physical you can't just ignore the physical component and a lot of the debates. The nature of violence is shifting, and it's easier to defend your wealth than ever before and much more costly to attack that wealth. And so therefore, the cost of violence is changing and favoring the individual. And I understand that. But at the same time, I just don't think you can ever discount an army moving onto your front doorstep and taking your culture and your home and your roads and everything else. I think I'd have a very similar critique of Jason Larry, whose name was previously banned in the book club, but we'll let you off as you've been away. But I guess the question is maybe the relevant question isn't if there was a large country with big armies, couldn't they just bulldoze everything? But would such a nation be one of the ones that collapsed? Would it be sustainable if it could no longer use extractive techniques against its own population to fund that war? I sometimes wonder if we'll see, like, I don't know, I got to find the right phrase, like cyber Vikings. I wonder if all of the kind of plundering of, like, other small sovereignties would be technological purely rather than physical. Yeah, I think maybe the violence will go into both domains. And I think we already kind of see that with hackers attacking people, especially, like, in the ethereum and rest of the crypto space where people are a bit more careless and there's a lot of security vulnerabilities you keep seeing like hacks tens of millions of dollars stolen all the time. But I think on the physical versus digital violence, I don't know, I think it'd be a calculus for even if it's a smaller attacker and smaller sovereignty, it would be a calculus. Like, let's say we're all on bitcoin and it's sound money. What if we came off of sound money and we funded a big war effort and we could steal people's maybe not their digital welcome bitcoin because you can't crack that security. But I think money at the end of the day is like a means to an end, not an end itself. And the means that it is the end that it's a means to is in the physical world mostly, at least for the time being. And if you can appropriate all of that wealth physically doesn't really matter in my opinion, or it doesn't matter as much what the ledger of bitcoin says if you have the physical wealth. And I mean, I guess a relevant factor is that is the armies these days are less and less human based and more and more technologically based in terms of drones and remote fighting and things like that. So you don't even have the hearts and minds issue that you may have had in the past in persuading people to go to war and give up their lives for this fictitious entity of the nation. I know we've had this discussion quite a few times. Yeah. And I'm just wondering if you follow the trend of the book and you say I mean, we've seen it already, these hyper wealth concentrations where we've already got single people who are more wealthy than entire nations. Significantly more. In some cases and whether or not they will have private armies and then able to fund those armies to then kind of perhaps do what they want. So there is countercases to be made against this claim that things will be defendable in the informational age. But I'm not wanting to get too dystopian. I still think that it is a powerful force for positive, and it's quite hard to weigh. It's very hard to weigh what force will mean more and how it gets discounted. Talking about a nation state funding its military, how much of that defunding through perhaps bitcoin, how much of that will actually have an effect. It's really hard to quantify. ",timestamp:"01:02:09-01:08:19",topics:["Economies of Scale","Nation States","Information Age"],type:"twitter_space",weight:10.800045251846313},{boost:0,date:null,description:"Hosting family thanksgiving and discussing bitcoin",episode_title:"Café ₿: Thanksgiving Special 🦃 w/ the Café Bitcoin Crew",guests:[{name:"Rob Hamilton",profile_picture:"https://pbs.twimg.com/profile_images/1524033110630969351/wTUr8S36_400x400.jpg",ref_id:"94b18625-4778-4cfe-9c78-823704d1c1b1",twitter_handle:"Rob1Ham"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"DJ Satoshi",profile_picture:"https://pbs.twimg.com/profile_images/915987644043030528/5nh3JQSz_400x400.jpg",ref_id:"02ae35cb-3728-441f-84c5-a8db5d9150b4",twitter_handle:"satoshi__tomiie"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Shaeroden",profile_picture:"https://pbs.twimg.com/profile_images/1560742113410678789/cHZ2tUjU_400x400.jpg",ref_id:"0da06a5c-038f-4737-9af7-17bed3712e68",twitter_handle:"Shaeroden"},{name:"Andres",profile_picture:"https://pbs.twimg.com/profile_images/1401952614795943950/aL2h3Wb4_400x400.jpg",ref_id:"db4abfe9-e3bb-4ffa-9783-ce67f5b20270",twitter_handle:"andresvbr9"},{name:"Peter Ansel",profile_picture:"https://pbs.twimg.com/profile_images/1374726811221954565/R7ttqYMI_400x400.jpg",ref_id:"2d418514-e03c-414d-8ed1-10c894aacb6e",twitter_handle:"peteransell"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c25e3b3c-b5ef-435e-9e7d-9e406089e7b1/572908d4-f2cc-4c7b-980c-8359d2c8000d.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"5faa3765-8f15-41c7-8c8e-6136a0e67b5f",show_title:"Swan.com",text:"Hey, I appreciate what American Huddle said. I don't know if it's a funny story, but it's a few years now that I've been hosting my family's thanksgiving. And I'll tell you that flips everything on its head when you're the host, I tend to find that there's a lot less of that kind of reactionary stuff in your direction. I don't know if people are just minding their manners more because you're serving them a feast, but it goes a little easier. And a couple of days ago, my mother in law rolls into town. Last year, I was talking her up about bitcoin. I sent a small amount to a blue wallet on her phone, got her set up, and first thing she says to me when she shows up, she says, did you see what happened to bitcoin? And that's when last night I thought it was funny. I sat her down in front of YouTube, and I played her this one time, and then it crashed. Video from YouTube, and she kind of had a blank stare after that thing played. I hope you guys know what video I'm talking about. The guy who says, this one time, bitcoin went from way up to $36 and then it crashed down to $20. Yeah. Anyways, find that video if you haven't seen it, but you fill in the blanks. I think that one ended at the cycle that peaked at around 1200. So you kind of fill in the blanks of then it went to 20 and crashed down to three, and then it went to 69 and it crashed down to 15. And you kind of help them fire off a couple of brain cells and put two and two together and realize sort of the bigger picture and the fact that they have the time frame of a mosquito and the way they're thinking about it. So for me, that was gratifying to kind of actually see a little light bulb go off in my mother in law's eyes last night when I was showing her that. So yeah, I don't know, maybe that works for somebody else. I've never actually heard that one. Jacob found it. No, he's going to play it right now. Oh, epic. Right now. Role. This one time bitcoin went from way to it crashed down to another time bitcoin went from way to $29. And then it crashed $3. And then another time bitcoin went all the way to $213. And then it crashed all the way to $70. And then another time bitcoin went all the way to $1,100. And then it crashed all the way to $239. So the moral of the story is don't buy bitcoin because you know it's going to crash again. He did a follow up tweet too. Then like the next bull market, he also said nothing. That video is so priceless because I'm pretty sure he's serious. I keep going back and forth between it's sarcasm or he's actually serious. But either way you got to watch it, Alex, because just the expression on the guys face. And then he's a bitcoin on Twitter. I didn't know his name. What's his name? Let me give his last name. 1 second. Yeah, I mean, I played that for my mother in law last night and then continued it. It went all the way up to 20,000 and it crashed down to 3000. You kind of have to help people because they still don't realize they hear that word crash and all they think is bad, bad, bad. You kind of have to put two and two together for them. But yes. Anyways, maybe that will help anybody with their relatives. You're welcome. That's hilarious. Shout out to Q in the audience. Going to throw you an invite. We need to remove somebody. Jacob, you be the bad guy. Take me off. Take me off. I'm handling my kids. And then also Brad Mills. What we're doing today, guys, is we're just telling funny or interesting thanksgiving or otherwise bitcoin stories. It's been pretty light, pretty chill and fun. I think it's worth noting. I think it's worth noting too, when you're talking with family and bitcoin, especially over. Time because you're going to be right. With time, you're going to be right. The bear markets, people poke funny or whatever, that's fine. But given enough time, you're going to come out looking so smart and so intelligent. I think that's where the stay humble part comes in. And you kind of have to be a little graceful with being right, at least around family, in my opinion. Sometimes when you're on Twitter, it's fun to be like, yeah, what's up, bitch? You were wrong, motherfucker. But like, I don't really say that's, like my aunt or something. The problem is if your family finds your Twitter and then they know how you're thinking anyway, so you can, like, try and be so polite. But then, like, three days before you showed up to Thanksgiving, you were like, bro, when I see these pores, I'm going to be just thinking, fuck you in my head. So just don't tweet stuff like that. You know what I mean? Don't be one to yourself. Maybe share that with your wife. We're all learning here. Hey, Q, tell us some funny or interesting bitcoin stories, man. I told you so. I've gotten this week have been actually kind of hilarious, I will say. Just the overall response and naivety of normaland versus especially those of us who I think very much understand the difference between bitcoin and crypto. The conversations I keep hearing is like, oh, shit, bitcoin is going to go to zero now because Sam is like, not going to be a thing that FTX is going under. It's really funny, at least to me, because at this point, I'm just like, you're right. You're absolutely right. We're not going to make it. And then I love my favorite thing is it's always people who are very bullish on the tech industry as a whole. And so it's just a very simple, how's your SaaS portfolio doing? How's that Facebook stock treating you? Everything's kind of gone to shit. So I don't know. It's pour yourself a nice heavy glass of whiskey, put your legs on the table and just let's see who bled the least, not who made the most, if you will. But I don't know. Painkillers are fun right now. I just wanted to say to the Swan family, thank you very much for everyone who hit me up after Pacific Bitcoin. Like, I am successful surgery and fully recovering right now. My Achilles. That's awesome too. I have this one uncles who will not stop calling bitcoin bitcoin, and they've been calling it bitcoin to my face since 2015. And I'm like, did you guys all miss the part where I became the richest person in the family or no, a ",timestamp:"01:05:22-01:13:51",topics:["family thanksgiving","bitcoin crash","bitcoin discuss"],type:"twitter_space",weight:10.792905569076538},{boost:0,date:1637366400,description:"The narrative around nuclear energy is getting louder and more encouraging for Bitcoin mining communities",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"34c231bc-7fcf-4f55-a124-d67b008399a0",show_title:"Compass Mining",text:"to have you continue that train of thought, elaborate more on where nuclear stands now compared to maybe where it did a decade ago. Well, the Fukushima event definitely derailed the deployment of generation four reactors and put that on delay for a while. So it seems like we're finally just starting to get back around to that. But I agree with you. The narrative around nuclear has gone for a complete flip just in the last few months, and it's reinvigorating and very encouraging to see that level of public participation and growth and notoriety growing and getting better and leaning less away from outdated, basically, flood. For nuclear relies on the old technology and basically problems that have been solved or in the process of being solved. My interest has been mostly in the advanced reactors, in the small modular reactors like the little little guys like the 1, because I've gotten really obsessed with the small the SMR action plan here in Canada where we are planning to basically upgrade remote communities from diesel generation to nuclear power. And some of these communities, the electricity prices out there are outrageous. It's pretty lucky for the communities that can get diesel barged in. But some communities that need to get their fuel shipped in, they're paying as much as ninety cents a kilowatt hour, sometimes even more. And that all gets subsidized so that it equalizes with the on grid prices. So that's a lot of money that could be spent for better investments if we could get a more stable long term energy supply in there that doesn't need to be constantly refueled. But the reason that I see Bitcoin mining being a super good amplification for that is that it just completely eliminates the demand risk of making these investments before the current situation is there's a lot of hesitancy to build large generation projects in far remote communities because there isn't a customer base to recoup that investment. But now we can deploy in excess and deploy a customer right alongside the reactor that will scoop up everything and then be perfectly aligned to the generation profile and they can be scaled and adjusted as needed. Depends on how communities grow there's. A lot of this is going to be used for remote conventional mining applications so they can incorporate bitcoin mining as a way to just better economize the reactors that they plan to use for their operations. And this is going to be a complete game changer for these communities that they've been energy impoverished for generations. And some of the stories that you hear about remote communities in Canada, especially indigenous ones, it's hard to hear and you want to come up with a solution to fix it. But the conventional problem has just been throw money at it and all that does is it just seems to just go down a hole and it invites corruption and it never goes to places that it needs to. These people need water resources, they need better food and just fixing the energy will have a cascade effect and resolve all of that. Yeah, no I agree 100% with all of that and it's crazy to watch people sort of in these conversations realize the location independence and almost unlimited demand for energy from bitcoin miners and how that resource can be deployed to very quickly and easily expand like energy infrastructure for nuclear or other energy sources. It's just insane and almost unprecedented. Before we dig into that though, I did want to know if peru if you had anything to add on to that with regards to the inflection point, a flip in public perception, nuclear skills poised for massive growth, like real growth infrastructure wise and popularity growth as well. Yeah, I think that makes sense to me. Also, one more thing I want to point out is a lot of the reactors that we see online today have been built out to 1970s and we haven't seen growth in reactor build out since then. And I think it's important to understand the energy market that we are currently living in to figure out why nuclear hasn't made a push so far. Nuclear accidents have definitely changed the world public perception over time and they do not help for sure because it's such a political thing. But apart from that, if you look at the energy build out that's happened especially in the United States, and if you look at the generations have been brought online then you'll see a period between 2000 and 2005 where there was a massive build out of natural gas power plants all around the United States. I think combined my numbers might be slightly off but I think in those five, six years combined there was around 200 gigawatts of natural gas power plants just built in the United States. And what led from there was just cheap natural gas prices. And nuclear has found really tough and not just nuclear, even coal power plants have found it really difficult to exist in a market environment like this where natural gas is certainly so cheap. So it just depends on like the build up that happens and now, I think the opportunity for special advanced nuclear reactors would come probably, I think, in 2030 to 2040s. That's the time frame where a lot of these existing power plants that we have currently are going to retire, especially, I mean, any predictions on energy markets generally are wrong, but I don't want to say that, but I'm looking at the trends. I think a lot of the existing plans are going to retire in 2030. And that's where I also wrote this on a Twitter thread where I feel that's exactly the opportunity which a lot of these private companies in the advanced nuclear reactor space are trying to fight for. So that's another important factor, aside from the accidents over time which have changed public perception. Got ",timestamp:"00:15:37-00:21:49",topics:["Nuclear Energy Narrative","Bitcoin Mining"],type:"youtube",weight:10.626491553126828},{boost:0,date:1633737600,description:"Miner extractable value on Bitcoin",episode_title:"Understanding Miner Extractable Value On Ethereum",guests:[{name:"Nathan Worsley",profile_picture:"https://pbs.twimg.com/profile_images/1576238702908637186/xzcScTyV_400x400.jpg",ref_id:"20529242-4546-475a-af1a-125b83aedd81",twitter_handle:"NathanWorsley_"},{name:"Robert Miller",profile_picture:"https://pbs.twimg.com/profile_images/1595788538938695680/w6i5Q6s4_400x400.jpg",ref_id:"292cfadd-7e67-4e34-876b-99804d416e20",twitter_handle:"robertjmiller_"},{name:"Jordan Frankfurt",profile_picture:"https://pbs.twimg.com/profile_images/1544902585462788097/bGe0hNIi_400x400.png",ref_id:"149db25a-26b1-4f69-8c9e-ec87e08ab8c8",twitter_handle:"jordanfrankfurt"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=6IxaLCPm6_E",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"03c6b2f5-685e-4921-a230-e14e5679f792",show_title:"Compass Mining",text:"on some level the answer is very simple in terms of comparative me v opportunities and strategies and development on Ethereum other chains versus bitcoin. On another level, maybe the answer is a little bit more intricate. But my question is basically in context of everything we've described and explained and understood so far in this conversation about Me V. Like why basically are there this many opportunities and this much development attention to minor and maximum extractable value on the bitcoin chain as opposed to a theorem and other chains? And maybe to add a little bit more interesting content to that answer, like if or when would anything like that change for Bitcoin? Maybe as a preface or to set up some of your answers, I know we're seeing an increasing amount of developer attention paid to covenant contracts, bills for bitcoin and Lightning and if those reach a pretty high level of sophistication there could be some interesting opportunities for MVP on bitcoin. Right now there just really isn't that much. So I'm curious to know your guys'insights on why that is and what, if anything, would sort of be a catalyst to kind of change that situation for bitcoin miners. Nathan, maybe you go first and then everybody else can jump in. Yeah, sure. I think it's just simply a function of the size of D five currently on bitcoin and that if we see that start to change, then we'll see the me the situation starts to change on bitcoin. Really like the incentives and the opportunity from me v not entirely, but mostly being generated by DFI and the DFI economy is just bigger than Ethereum at the moment. We are seeing people starting to make inroads into bitcoin with D five development and as that becomes bigger, I think these problems will become more pertinent bitcoin. I've been philosophically, it takes a very conservative approach to a lot of these issues. So they've pushed off a little bit of the default development down the road a little bit and I guess using Ethereum more as a testing ground to see how these issues have worked out. Yes, for sure. Robert, go ahead. Anybody? I think Nathan hit the spoke to it very well, I think. I would also note that there's more mev on bitcoin than I think bitcoin is like to acknowledge. In particular, there's a lot of griefing vectors that you can make money if you assume that you are a counterparty in a channel and a minor in the lightning network. So you just grief. Your counterparty take a lot of their money and I think most of that payment ends up going into a minor. There's like a bunch of different vectors for that as possible. There's a good article on this by a lightning developer, Lisa Nicole on Twitter. And then I think that there's some mev in bitcoin that just isn't really being exercised by miners right now. And there's some sort of theoretical mev that you could imagine too. So I kind of think of if there's giant arbitrage opportunities between centralized exchanges and you really wanted to be the first person to make a deposit at one centralized exchange, everybody is sold. You need to get new bitcoin on boarded there. You could imagine a minor exercising their control over yeah, this is the one. You could imagine a minor exercising their control over transaction ordering to be the only party that deposits at that centralized exchange and thus is able to capture the arbitrage. Something like that. Yeah, no, that makes sense. I actually forgot about this article at Austin Bit Devs a bit ago. They mentioned this for anyone watching who's interested in lightning and also mud, which I guess the Venn diagram there might be pretty small, but it's a great read. She explains some pretty interesting concepts. Yeah, Jordan, curious to know your insight too. You and I personally offline talk a lot about bitcoin and ethereum compared to ecosystems. MVP on bitcoin pretty small. What, if anything, would change that? Yeah, I think actually, Robert, the clockwork paper that you wrote had there's a section of it that gave me, I think, a decent or a better generalized framework for thinking about MVP opportunities. And it's just that, like, every MVP opportunity is like highly context dependent. And when you have a chain like ethereum where there is more context, like there's more state that can be manipulated, you therefore will have more MEB opportunities. So in the state, or in the case of bitcoin where you're primarily just managing transfers and just etxo's everywhere, there's a much simpler state surface on the chain than there is on ethereum. And ethereum is like orders of magnitude more complex and therefore creative people can find more interesting things to do to manipulate. So that state surface might change. For bitcoin. With ethereum, there's obviously certain changes that are happening with like, channel disputes and we'll see if there are more in the future. I'm sure that people are going to keep building on bitcoin and maybe someday we'll see some cool new opportunities arise. Maybe we should build it. Jordan. I mean, there's already plans, right, for AMM on bitcoin. I think Jack Dorsey said he's going to build it. So, I mean, as soon as that AMM is this, there's instantly mere available on Bitcoin, you can't have the AMM without having mev. It goes back all the way to that FHIR network or something like that back in 2015 that Matt Carello tried to build was that relay network. Those are also I always see them as infrastructure for maintaining mev, so it certainly exists. And James Preswich and Hustle and one other author have a paper back in 2019 talking about bitcoin mev and how that would lead to chain instability, which, Robert, I know you and I had a few Twitter DMs about. That subject like, what would it look like for transaction fees to become such a bounty for miners to start looking at reorganizing that network? Which would be pretty interesting. ",timestamp:"00:21:48-00:27:58",topics:["Bitcoin Miner Extractable Value","Lightning Miner Extractable Value"],type:"youtube",weight:10.626491547282228},{boost:0,date:null,description:"Experimenting with the Raspberry Pi",episode_title:"Reverse Proxy - #Bitcoin Nodes - NGINX is the Answer!🦾",guests:[{name:"Pedro",profile_picture:"https://pbs.twimg.com/profile_images/1395874649876140035/z-IycTAj_400x400.jpg",ref_id:"78acd8b7-3097-40c3-b626-245bc911dc49",twitter_handle:"pedromvpg"},{name:"Machankura",profile_picture:"https://pbs.twimg.com/profile_images/1536075376409059331/0zddZFmE_400x400.jpg",ref_id:"855f2d8f-2230-475d-b5c1-dcaace579de4",twitter_handle:"Machankura8333"},{name:"DJ Satoshi",profile_picture:"https://pbs.twimg.com/profile_images/915987644043030528/5nh3JQSz_400x400.jpg",ref_id:"02ae35cb-3728-441f-84c5-a8db5d9150b4",twitter_handle:"satoshi__tomiie"},{name:"Portland.HODL",profile_picture:"https://pbs.twimg.com/profile_images/1562306406526492672/LiqmI9NS_400x400.jpg",ref_id:"aaa58ce5-7907-4c3a-9881-839cd012c456",twitter_handle:"PortlandHODL"},{name:"anonsats",profile_picture:"https://pbs.twimg.com/profile_images/1601204123818401792/iQ85pwvS_400x400.jpg",ref_id:"f3bf3677-9864-4fe3-a8b0-976a67be45cd",twitter_handle:"anonsats"},{name:"₿rettInThe13%",profile_picture:"https://pbs.twimg.com/profile_images/1593104719311929345/tTSjoS2n_400x400.jpg",ref_id:"0ad02828-02ee-465b-87c6-96e559905ed8",twitter_handle:"brettinthewoods"},{name:"EasySats",profile_picture:"https://pbs.twimg.com/profile_images/1593330030905540618/ZHqVPhTM_400x400.jpg",ref_id:"d6d16cf5-4a9b-4517-897d-5cf98467ed1a",twitter_handle:"EasySats_"}],hosts:[{name:"okin@8333.mobi",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"7af60fa9-1611-4029-b691-aa1481f99062",twitter_handle:"OKIN_17"},{name:"Dread",profile_picture:"https://pbs.twimg.com/profile_images/1532557131819491328/vvs1cD-7_400x400.jpg",ref_id:"e61af76b-8fbd-4719-b753-0a70edd22fa8",twitter_handle:"PoleVaultDream"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/30180c4d-27f9-4215-81e0-6a22b16aba43.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/e464bf90-24b2-48ec-b50a-e51c45412a19/00d3308d-b0b8-452b-a4bb-6025a731c457.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"896a10a9-621e-4f5e-a8d7-d4504dffd923",show_title:"okin@8333.mobi ⚡️ 🏰",text:"Dell laptop, right? You can install NGINX on that, and then you can forward traffic through that Dell laptop into a Raspberry Pi that's running another node for you. You can do literally whatever. You can create this mangled net of whatever you want and point anything to anything internally. It typically works. There are a couple of caveats, but overall yeah, you don't even have to have it running on the same machine. Just the traffic has to initially hit NGINX first. That's the only requirement that it goes through NGINX first so that it can get routed. Blessings, blessings. I'm just going to have so much fun. Wow. Do it. Well, the Dell laptop is currently not a laptop anymore. That is an embassy node. As Dread said, once you use the X 86 hardware, it literally you put another OS on it. So it's running. I don't think it has any access to terminal anymore. But I do have my 20, my 2011 2010 MacBook Pro. So that one I'll probably do it. On, and you can still SSH into it and you know, you I mean, you still have root access to your machine, so you could do whatever you want. Yeah, you still do that's true experiment? Yeah. Go for it. Portland. Oh, I was going to say, as a note, we kind of mentioned earlier that Ram was one of the biggest factors as part of the IBD. So the initial block download. So when your device downloads the Bitcoin Core client, then you got to sync it up. My experimentation on specifically the Raspberry Pi is that the Raspberry Pi is not memory limited, it's processing power limited. And that is due to the Secpk basically message the elliptic curve cryptography that is happening, the processor literally cannot handle that amount of processing quickly. Like it takes forever. And I did this by doing the Perf tools in Linux and basically watched for which functions it was calling the most often. And the two of them were basically some square operations for that encryption library and some multiplication operations that were just getting ran again and again and again. And that's why on these Raspberry PiS it makes sense that they typically with the initial block download, it does really good until you kind of hit like 2017 or block right around like 500,000 or so. And then Seguit comes in and you start getting actually like complex transactions in there. And that is because it's spending so much time processing all these encrypted messages and validating that they're all valid. And where that goes is x 86 hardware is so much faster at doing these operations and that's why even installing bitcoin core and downloading these initial block downloads over on these x 86 machines that aren't as small as the raspberry pi. But it's so much more performant is because of the fact that these machines are so much better at handling these kind of operations quickly and efficiently. The Raspberry Pi just sits there and churns and churns and churns. And that's why even towards the very last part of the IBD nowadays, usually like the last like 10%, it is just excruciating while this little pie is just churning numbers all the time. And whether you have 4GB or 8GB, I found does not matter one bit. Both still take a long time. Two to four is a difference, I will note that. But four to eight, there's no difference at all. That's interesting. I had a different result because testing all the embassies we've had to down, I've done like 20 IBDs in the last month, and I have a Raspberry Pi for four gig and a Raspberry Pi for eight gig with the exact same config set up on the embassy. And the four gig took usually between seven to 14 days to finish. To your point, excruciatingly slow for the last 5%, but the eight gig actually did it in 72 hours, sometimes a little bit less in some cases. I'm not sure that's because we cranked up the cores in the bitcoin.com, but it definitely moves faster than the four gig for us. I would like to look into this because my theory was based on one thing as well. So I looked at the memory usage and both for me, this is just bitcoin core. I'm not running a suite on top, right? So I'm just running bitcoin core. Both Raspberry PiS basically tapped out at about 2.7 to 2.8gb of memory usage. So that was kind of like I double checked and that's why I ran the perf tools, is to verify that what's actually going on under the hood here. And I verified same SD card in both of them. So they both have the same transfer speed. The memory isn't being used. So my thought is like, tell me if I'm wrong here, but if it's only using 2.7 gigs and both are taken like you said, it was roughly about two weeks to complete on both the four and the eight gigabyte, and it's not using the extra Ram. That's why the results are roughly the same, I believe, but those are my thoughts there. Even if you get eight, it's not going to touch that amount of memory. Have you measured the memory usage when you're doing these IBDs? Not going to remember. I remember they were both being maxed out on the processing power, but the memory usage, I don't remember if it was using more than 2.7. I didn't check it. But the one thing that I was going to ask you is, did you tinker with the bitcoin.com any at all? Did you try to change any of the settings? There no okay. On my actual production node I do, but on this, for this experiment, no, I did not. And I actually have a nice little write up on my Twitter where I also compared this to the IBD on some X 86 architectures as well as the IBD on different types of devices, HDD, SSDs and 2.5 inch 5400 rpm laptop drives. This was just like a barrage of different tests I was running on these to see, like, okay, where is the Achilles heel in the initial block download? And one thing you noted thread that I think points to my theory being maybe more correct. And again, anybody come up and tell me if there's a reason why this is wrong? You mentioned that the Raspberry Pi processor was at 100%. That's the bottleneck at that point, right? That means the car is floored, it can't go any faster. And those Raspberry PiS between the four and the eight gigabyte are basically the same frequency. So I don't know unless there's some other little bottleneck or something that I could be missing that the limitation at that point is literally how many cycles does it take to complete this total download? And that is if you're running at 100% CPU, which is the case. That's why I experimented with this, is that, yeah, the CPU, it's bound to that. That's as fast as it can go because it's using all of the resources of the brain to do it. Yeah. I would need someone smarter than me to tell you what resources are being used to make it go faster in each case. But what I can tell you is that in the conf, I would tinker if I were you. I tinker with the RPC threads, the threads that are used to handle and also tinker with the work queue to service the RPC calls. I think those two settings and the configuration might boost even though the processing power is maxed out. I'm not sure how it goes faster, but it seems to handle the heavier blocks better. It's almost the same speed for the first four years of IBD. But after that, it seems like if you increase the work beyond the queue, the work queue and the threads, it seems to speed up on the bigger blocks. ",timestamp:"01:47:37-01:55:51",topics:["Raspberry Pi"],type:"twitter_space",weight:10.239102840423584},{boost:0,date:1671735703,description:"What is Difficulty Adjustments?",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Pysh, Booth, BTC Ben & the Plebs! 🍻😂",guests:[{name:"Jeff Booth",profile_picture:"https://pbs.twimg.com/profile_images/1362957991410954241/spiaMAg2_400x400.jpg",ref_id:"f1143bcc-9ab9-4716-8259-0e5b026f8039",twitter_handle:"JeffBooth"},{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Preston Pysh",profile_picture:"https://pbs.twimg.com/profile_images/1408783276081299462/f4Ye5n7-_400x400.jpg",ref_id:"01ad2c81-2d0c-44a9-93a1-42c07287aa80",twitter_handle:"PrestonPysh"},{name:"Brian",profile_picture:"https://pbs.twimg.com/profile_images/1589300685182570500/cTffQlpJ_400x400.jpg",ref_id:"b167b1cd-bbce-4839-a03c-194f006f954d",twitter_handle:"BrianTheDrumer"},{name:"BTC Ben",profile_picture:"https://pbs.twimg.com/profile_images/1348015880664473610/S-uDNLlZ_400x400.jpg",ref_id:"2c95b3dd-e3a2-4cf0-a49e-a8915d2bfcd5",twitter_handle:"bensemchee"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"78672de6-3c5f-4d95-8fd9-f2b512fa7a04",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/dbc5dd26-2307-4f64-a377-105e2a277d9c/be3d47a7-2fcd-4de8-8f22-71851953d022.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"17d338d5-a11d-405f-bbc1-257b4e145723",show_title:"PUBLORD",text:"I tried something new out. I just put out the first little sort of educational thread from the time chain calendar account. It's the last one on the next at the top. It's only four posts really short. It's just a little explanation of the difficulty adjustment. I'm just floating it out there. I want to see if anybody appreciates that, if it's useful to anyone. I want to start basically sort of attempting to describe the most important aspects of bitcoin in these very small bitesized chunks that people can hopefully wrap their head around and then put those things together and have a better understanding of things like city showers. He might appreciate it. He might need to update his mental model of what the difficulty adjustment is. Difficulty adjustments means, for example, instead of just talking bitcoin, like, do something with a bitcoin. I'm just setting up my new hosting service in Europe, which is going to provide self custodonial virtual private servers with the preinstalled BTC pay server, whoever is interested to I'm still not going to announce the official link to the website because I'm working on It hosted service for self custody. So it means like no. Is that not an oxymoron? No, it's no KYC. Because me, as a hosting provider, I'm just dealing with infrastructure. I'm not holding the code. Yeah, but if you're providing the infrastructure, how is it well, that's really stupid of you to say that. If you were like an It guy, you would understand. That's funny. I'm speaking English. It is my native tongue. Try again. City show. Here's the thing, my man. Go ahead, hit the little mute button. I muted you for a second there. You can unmute yourself. Well, that's the thing about custody behavior. Like in these democratic spaces where everyone can vote their opinion, there is always our it's not democratic. We're having a party. We love to talk bitcoin, we love to meet new friends. Same thing. But the warm welcoming from the Pub Lord was like really unnecessary. Whoa. It wasn't Puppy. It was TC. Man, puppy has been quiet. This is TC. I like to mute people when it gets out of hand. Sometimes it's as simple as just something absurd has been said. I haven't said a word yet today, but what's up, Pubby? How are you doing? I'm doing good, man. We're off to another rousing start like we were yesterday. Yeah, goers. I really do want to know truthfully. Please. How is you hosting a service, self custody, for anyone? Because you own the root privileges to that server. So it means you are the only person who is in charge of that instance. So whatever happens with that instance is up to you. I'm not managing how do I know you don't have the root credentials? Well, it means like, if you're running a route and you can check out the ch root group, you can only see that you are the only user in that. Right, but if you set it up, how do I know you don't have the same credentials? I don't have the credentials because when you spin up the template of the OS, for example, Linux instance, or whatsoever, you are the only person who can access the server and manage it on the root level. Wait, so you're creating software that other people host themselves? No, the software has been already created by the community. Of course it's open source. You can check it out. Go on to Btcpaserver.org. I know. BTC pay server. I'm familiar with BTC pay server. Yeah, to promote a bitcoin and to teach people how they can manage their own funds. What part are you hosting? That's the only part I'm trying to understand. I'm just hosting the machine like CPU Ram and the storage space. That's it? Yeah. So how is it self custody? Well, self custody is because you're going to have a ledger wallet being connected with the BTC based server. So you're going to think, no, run away. Anybody that's in public, in the audience, listening, don't do that. That's a bad idea. Why not? Because you're trusting a third party, and that goes against the whole self custody thing that PC is trying to point out. Well, if you're going to host your own BTC based server on your computer, on your home network, if you think that's really smart from the security perspective, I'll go ahead, my friend. Once when you wake up with some Chinese IP address on your Zix or router because your telcos are not updating their boxes and you lose your so I have to trust you. No, you're trusting the tier three data center level of security and their architecture behind. Okay, so I have to trust someone, though. Well, are you not trusting, satoshi Nakamoto, that there is no American government, there are no private keys, like of the majority of the bitcoin network? Maybe the feds? Do you think they have the master key to shah 256? Do you really think that the banks have allowed bitcoin to exist and to convert? Bitcoin needs permission from the bank, okay? I mean, you can swap pictures of a hotel. The banks have to give permission, or the government has to give permission to bitcoin. Is bitcoin asking permission? Well, you can exchange and swap the pictures of hot ladies with your friends. No one forbids them. All right? This guy is not serious. Puppy. I don't know what to say. There it is again. Why is it two days in a row, man? They just come in from everywhere now. Wait, what about here's the advantage of toju you know what the funny thing is? You're treating bitcoin as I treat the IPV four layer, or IPV six, with SSL encryption only. It's a better way to encrypt it, and it's another layer on the network. You're just talking about the network infrastructure, and you make belief like value. Oh, we believe in God. We believe in bitcoin. Well, it's okay now. It's 16 grand bitcoin to the moon. 100,000, 1 million. It's a perceived value. I'm not against it. I'm just saying I'm dealing with bitcoin as a technology. You brought the server, man. Listen, what you're offering up is centralized, dude. I would rather centralize. You said yourself I have to trust the data center provider and their equipment and their good faith, and that is completely against the tenets of bitcoin. Don't you get it? Do we need to draw it up on a little board so you can get it? No. You can take your computer and you can put it in the living room. Or you can take your computer and put it in, like, your basement. Or you can take your computer and put it in your neighbor's house. Or you can take your computer and put it in a cloud or so you could just do either of those and just keep your fucking seat phrase in a place that no one's going to find. The stamped like titanium. And then that's your fucking bitcoin. You don't need to fucking put it anywhere else other than a place where you have it. I'm saying you can run a lightning note and you don't have to use the same bitcoin address to receive the funds, but still, you're going to have to allow the technology and instruments of trade to exist somewhere. I say only that's better if you have a root privileges on your own box. Are you new to bitcoin? Are you an It guy that just found out about Bitcoin, like, a year ago? Don't be ridiculous. Come on. Oh, so you're Satoshi's son. Okay, I get it. No, I'm a Commodore 64 guy and like, Cube Basic, literally before the 90s, so you can speak whatever you want to enter. A piece of shit. You sound like someone that gets very technically well versed, but it has no idea of bitcoin and how it works and the philosophy behind it. I know that only if you want to receive the bitcoin for your services. Downloadable digital products. I'm not saying about the physical goods because it's stupid. ",timestamp:"00:07:11-00:16:55",topics:["Difficulty Adjustments","bitcoin payment"],type:"twitter_space",weight:25.58466473425889},{boost:0,date:null,description:"Governments attack on Bitcoin and anonymity",episode_title:"Café ₿: #Bitcoin News & Trusted P2P Reviews w/ @Apollosats",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@FossGregfoss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"09913e9b-38dc-4465-9d4d-ae0c9ba9eeca",twitter_handle:"Fuckkkk"},{name:"@w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"b178b239-3b18-4a16-9d43-c5d15ba6f7f4",twitter_handle:"w_s_bitcoin"},{name:"@NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"4b6997e1-ce0b-4a1d-90e7-dbaccef4b783",twitter_handle:"NeilJacobs"},{name:"@brandon_gentile",profile_picture:"https://pbs.twimg.com/profile_images/1561369452284895236/-8WgdwEm_400x400.jpg",ref_id:"f940c5e8-4808-4197-a38f-3f19d311a7ad",twitter_handle:"brandon_gentile"},{name:"@apollosats",profile_picture:"https://pbs.twimg.com/profile_images/1576946734927794176/2ail9FoU_400x400.jpg",ref_id:"74f4280f-5fdb-4bbc-aee2-a2ed32d64372",twitter_handle:"apollosats"},{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7cf57bdb-c905-46e3-a7e5-4c0bfd4f8d04/71c08fae-cce8-4600-ab9e-758420e78dcf.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"75ac478b-3dfa-45a8-9fa0-cebaacccfc05",show_title:"Swan.com",text:"if you're from anywhere in the world, the same logic applies. It's starting in the EU. But don't be surprised when the same type of Draconian laws and the rules that they're trying to implement around Bitcoin spread around the rest of the world. Because the legacy system is losing, right? They've already lost. They just haven't realized it yet. And so once they start to realize it, we all want them to surrender and to adopt this new standard which will bring about peace and prosperity to the entire world. But it's very likely they won't, and they'll go down kicking and screaming, and when they do, they're going to try to claw back as much power as possible that they've lost. And in an attempt to do so, they're going to make it very difficult for you to acquire bitcoin, most likely. So it's kind of now or never. Like, you don't have much longer to build your stack and take it into self custody, at least not to do it easily. It's a exit. Lagarde talked about this, Madame Lazard, where she was like, there can be no exit, basically, because if there's an exit, they can escape or control the lizard people system. It just feels a lot like the Drowning Man, you know, grasping anything they can and that will end up being just keeps feeling like that. What cracks me about this is that a lot of this kind of stuff was basically in the yea zone two years ago. Like, all this was, like total conspiracy tinfoil hat shit. But as it turns out, it's all real. Those conspiracy theorist guys were right. You know, what happens over time is that overturn window shifts little by little. And the stuff that people used to say, wow, that's crazy. You know who says it's crazy? The lizard people. Because they want you to think that the people who are calling them out for their crazy are crazy. That's called gas lighting. Doesn't help when you keep calling them lizard people. But no, I totally agree. I do that on purpose because I know it triggers the fuck out of people, and I don't care. How does Europe get there in the first place? Just what platitudes over principles? First principles? I guess just in the last decade or two of energy policies. I mean, my gosh. Neil Jacobs, you've been very quiet this morning. You have anything? Thoughts? No. Stage camper. Hey, guys. He is there? No, I had to shut my door. I had to shut my door in my office. What's up? What's going on in your world, Neil? Nothing, just listening in, keeping up with all the bitcoin news. I find it really interesting that there was that Reuters story about prosecutors at the Justice Department saying that they have enough evidence to criminally charge Czech. Yeah. So you haven't seen this? I heard a rumor. I didn't see it. Tell us what you tell us. Well, basically, they've been investigating finance since 2018. So this isn't a new thing, just that they violated certain anti money laundering laws. And there's a lot of conspiracies, obviously, on Twitter of why it was leaked. Now, apparently the prosecutors at the Justice Department are kind of split on whether they should file criminal charges or not, and there's prosecutors who think there's plenty of evidence to do so. So maybe there's some disgruntled prosecutors who wanted to get the message out. And there's a Reuters story on it. I could find it and pin it. This is binance us only. Correct? I don't know if it goes back, it doesn't have to be by 2018? I don't think so, because I don't think Finance US existed in 2018. Yeah, that's just it. That's what a lot of people a lot of people may assume that for the US to have jurisdictional authority over an entity, it has to be a United States company. That's not true. As far as the US is concerned, us regulators have been doing this for a while. They basically said, if what you're doing interfaces with US citizens, we have jurisdiction. Right. Even if you're in another country. Now, again, the question becomes, well, how do you enforce extra jurisdictional authority? Well, the US figured out how to do it because they weaponized the US dollar to do it, and that's the reason they were able to get away with nonsense. So when other countries try to do it, can they do it? I don't know. That ultimately comes down to cooperation. Right? So if one country goes to another and says, hey, you have a guy we think is a criminal, hand him over, that's called an extradition agreement. They have to agree to do that where the US has just gotten so used to beating up the whole world with the US dollar stick, you don't comply, we're just going to turn off your US dollar payment rails and then you're screwed. So I pinned the Reuters article at the top if anyone wants to read it, find out a little more details. Yeah, it's fascinating. The question to me becomes, are they going to be able to find him? That's a good point. I just heard a lot of people saying, oh, they're thinking about charging him, why not SBF? It's like this investigation has been going on for four years, so you could say the timing is curious, for sure. I don't know if there's some conspiracy here. I don't know, man. I learned a long time ago, I used to second guess my suspicions. And then I learned from Jim Rickards, there's no such thing as a coincidence. At least that's what they're taught. Like intel officers respect the coincidence. Because if there's a coincidence, there's a chance there's something there. And then the other side of that is growing up in the hood, I suspect everything. Brandon knows what I'm talking about. It's not necessarily a bad thing. It's a crucible, baby. It's crucible 100%. If you put it in the crucible and you love on fire and you burn it and you purify it and it turns out it was bullshit, great. But if it turns out it was something, well, then, hey, sometimes people don't like it. When I talk about stuff that's getting into that yeastone window. I get taddled on. I feel a separate spaces eventually, alex is that what you're saying? No, it's not what I'm saying. Cory gives me pretty wide latitude. I mean, he mentions to me when I get tattled on, but he doesn't tell me to stop talking about what I'm talking about. You do a job threading the needle. Well, okay, so here's where I draw the line. I don't want to hurt Bitcoin and I don't want to hurt Swan. So if there's something that's potentially going to be damaging to bitcoin or Swan, I probably won't go there. But as you well know, there's lots of stuff that in that gray zone. Over the target, sir. See, that's what I'm saying. If it's over the target, then why not? To me, that's fair game. Because this is what I think. This is just my opinion. Some of you may think I'm crazy and not like this, and that's okay. I think the lizard people already look at it like they're at war. It's just we haven't figured that out yet, and they're not playing by the same rules. Until we accept that as reality, we're going to be on the back foot the entire time. Well, you're spot on in my opinion, because Greg touched on this earlier, right? It's we are what the 300 billion market cap. It's a rounding error, and we're that small subset of society. I rate transient minority that's feeling that way and understand that so few people get that. I think we get that. And then, like you said, the lizard people get that. But eventually, as we know, bitcoin changes you. And more and more people, as they come into the space, as we've all seen as bitcoins all changed us, they start thinking more like us. And it's the number responsibility go up technologies, as Vesky says. So people start coming into our thinking and into exactly what you're saying. Alex well, it's not really even our thinking, I don't think being responsible is like a tribal thing. It's just good for humanity, full stop. There's nothing wrong with that. Correct? Rob Salt. And good morning. I suppose you have something to add to this. Yeah, what I was wondering is the conversation seems to constantly get brought up of how anonymous are we on bitcoin and they're going to be coming after it and this and that, and I just think to myself, how many options are there to be anonymous on bitcoin? Is that really even a thing? Because last time I checked this ledger system, it's both a big net positive and a huge net negative as well. So the ledger system, it's almost like the perfect way to be having money of the future that is governed money. It's like being sovereign. It's not going to be the first ten years of adoption in bitcoin. Seems being sovereign is going to be about 50 years down the line when we're in a hyper bikinize world. If that does happen, a game theory out in my mind, it's almost going to be used against bitcoiners, it seems like, in the very beginning. And I think they're starting to realize that that this ledger. So it's like the best thing, if you want to really onboard bitcoin and you want bitcoin to get adopted, the best thing you can do is get rich in a legal way. I'm just being dead point blank serious about it. There's so much I hate, man. I got my .2 bitcoin in cold storage and I got it non KYC. It's like, no, the best way to get this to adopt is to become a multimillionaire, get rich and do it in a legal way and pay your taxes on it, be smart about it. There's ways to build corporations, there's ways to do things in a smart and efficient way, but more bitcoinners need to get filthy fucking rich. And I hate to be like the guy, the bearer of bad news, but that just is what needs to happen for it to get adopted, it seems like. Because this whole non KYC stuff, I don't think it's going to cut it. I think it's going to get used against them. So I don't know, it's kind of what my it might. Sure it might. But the question becomes, how enforceable is it? That's really the argument. I don't think there's a question that there are tools you can use for privacy in bitcoin. It's so what rob said, like, will the privacy be used against people? I don't know. The exchanges that we bought our bitcoin from, I know there's going to be some select few that were in very early from mining and things like that. But for the majority of the exchanges you bought the bitcoin from whether it's cash app, whether it's swan, whether it's coinbase, wherever it's from, if they come to your exchange and they say, hey, we are now legally requiring and they probably already have done this. Someone can correct me if I'm wrong and say we need their Social Security number of every single person that has bought Bitcoin from your exchange. Yeah, sure, Rob, but I mean, that's the beginning of a pathway that potentially leads into the mist and disappears. Like, you're right, KYC exchanges. And you know what? The exchanges have been warned for a long time that eventually they're going to have to give up their customer lists. Right? But when I'm talking about privacy tools in Bitcoin, what I'm saying is there are ways to break all of those links and the question then becomes, if you choose to break those links, what then happens on the other side of that? We could go ahead and then we'll go TC yeah, so a couple of points here I agree with Rob. Like, I think, first of all, if you're trying to come in into Bitcoin in size, non KYC is not an option. I mean, go try and buy a million dollars with a Bitcoin. Non KYC ain't going to happen. And even if you're able to find a buyer, a peer to peer or seller, rather peer to peer seller, you're still trying to leave the legacy system with a million dollars. You don't think they're going to fucking know when you take that million dollars out of the system and then transfer it. That's just crazy talk. And then number two, in terms of privacy, this is something I used to be pretty worried about, but I'm honestly not worried about it at all anymore. I'm very bullish on Fedramps. We have yet to see if they actually play out and work the way that we're being told they're going to work. But if they do, we're talking about fucking perfect privacy. We're talking about us setting up the Cafe Fediment, which we obviously will do, right? I mean, Alex will be a guardian, aunt's going to be a guardian, so we're going to have trusted second parties. These are people that we know we've met in person because we went to Pacific Bitcoin. They're trusted second parties. Guardian setting up a guardian system, multistic system, protecting all of our Bitcoin. And then guess what we can do inside of that mint. We can fucking transact with each other with perfect privacy and nobody can see when we pass SATS back and forth, which, by the way, will be instant and free because you know how we do on Cafe Bitcoin. I'm not worried about the privacy aspect of it at all. I think the tools are going to be coming soon and I'm hopeful that they're going to work as advertised. And anyone who's going to try to track what we're doing are going to find themselves kind of at a loss once these tools come online and we have these second layers that allow us to basically fucking put the big old middle finger up to one. We got about four minutes to finish up on this topic and they're going to be introducing a featured guest here. So let's TC, what are you thinking? Okay, I'll just keep it to the one point. I was going to make two points, but my point is really, I disagree wholeheartedly with what Rob is saying. The public nature of the bitcoin blockchain is an absolute feature and it's not a bug and it's not a problem. Part of the reason that this system actually works for a new global monetary system is the fact that anybody can audit it. The fact that if I do a transaction with you and we don't know each other and you're on the other side of the planet, you have just as much visibility over that as I do. These are absolutely essential, non negotiable features of bitcoin. And that being said, you have to keep in mind, too, that there's a real distinction between the information that's outside of bitcoin and the information that's actually inside bitcoin. There's no names or addresses or phone numbers or email addresses or photos of your face on the bitcoin network. You have to keep in mind that there's a really clear distinction between what's on chain and what's outside of that. And then the last thing I'll say is that just even if somebody knows what you have or what transactions you make, there's a big leap between that and what any potential consequences might be, both from the point of view of laws and regulations and anything you may or may not have done wrong. And then exactly what Alex said, which is the enforceability of all of this. So I think, Rob, you did a great job scaring a bunch of people. I wanted to kind of counter that and remind people that this is not a problem or a bug or something broken. Just to be clear, I said people need to get wealthy in a legal way so they can legally own large amounts of people need to take their money that they earn and they need to save it in the right format so that it actually is theirs and it actually has some purchasing power in the future. This is not about everybody needs to be a millionaire right now. That's not the right message. Yeah, I would like more bitcoinner to be millions. I definitely stand by exactly with what I said. More bitcoinners do need to be millionaires. That'd be a great thing. More bitcoinners do need to own businesses in a legal way. That'd be a great thing. Less bitcoiners need to be sitting there with non KYC bitcoin and being excited about it. Even if bitcoin goes to 10 million, a lot of bitcoinners still won't be rich. And they'll think they're rich in their mind because they have 0.1 bitcoin non KYC fiat. This is such a Fiat mindframe. This is garbage, dude. Where are you talking about? Decent? Okay, let me say it in a nicer way. What are you saying to a person that works hard? Maybe they have two jobs and they're just paying their bills and they're just getting by and they are diligently stacking SATS and saving, and you come to them and say they need to be a millionaire. What does that do for them? What's the actual point there? Okay, you guys are talking past each other. You're both right. Relax. I understand both of your points of view. I get it. There's a place for both of you in the world. You're both correct. Let's leave it at that. There's no point in we don't have time to cage match. Like, if we had another 20 minutes in the show, I'd be like, Go for it. But we need to move on here. We could go yeah, I'm just going to wrap a bow on this. We're all going to be Fiat Millionaires at some point in the future. It's not a matter of if, but when. Right? But the thing is, that million dollars is going to buy you a fucking gallon of milk because it won't matter anymore. You've all seen that cartoon where it's, like, showing the different stages, like, decade over decade of bitcoin, and it's like Fiat Millionaire on the left and then bitcoin on the right. And as each decade progresses, the millionaire gets poorer and poorer until the end, when they're living in a beat down house with broken windows and shit. And then that bitcoin on the right is living in the castle at the end. I mean, that's basically where we're headed. Fiat on the left and bitcoin on the right. With Fiat, a million dollars is constantly getting devalued, debased, and eventually will be worth fucking nothing. So I'm going to be millionaires eventually, I won't get a million bucks and instantly turn it into bitcoin today. Yeah, exactly. I love that. Meme, like, at the end of it, it's like I heard he's a bitcoiner there's another one with a bubble. It's a bubble. It's a bubble. It's a bubble. And in the end, he's like living in a dome with a whole beautiful existence inside. It's a bubble. Yes, it is a bubble. ",timestamp:"01:26:29-01:46:21",topics:["Anonymity"],type:"twitter_space",weight:10.214787483215332},{boost:0,date:1671644776,description:"Thoughts on how Bitcoin may evolve over the coming years and would have a high price",episode_title:"#Bitcoin Creators Space",guests:[{name:"@DecouvreBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1362747604044566530/Invedmre_400x400.jpg",ref_id:"0eda190b-4373-41fc-bc28-c3b95af30949",twitter_handle:"DecouvreBitcoin"},{name:"@Bridge2Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1533812215198924800/vAAlVRxO_400x400.jpg",ref_id:"1aaf2c24-8d26-4038-b55a-8b94427b20c7",twitter_handle:"Bridge2Bitcoin"},{name:"@orangepillapp",profile_picture:"https://pbs.twimg.com/profile_images/1570918965601505282/SOApRCif_400x400.jpg",ref_id:"ba5b79b4-e2e7-4778-8879-df793b8420a4",twitter_handle:"orangepillapp"},{name:"@knutsvanholm",profile_picture:"https://pbs.twimg.com/profile_images/1586261395833774081/RQ8SYxiM_400x400.jpg",ref_id:"e12ebe66-706b-40d2-804a-861a4c79bbfa",twitter_handle:"knutsvanholm"},{name:"@bcvFoundation",profile_picture:"https://pbs.twimg.com/profile_images/1460813196902633476/edbNgO7y_400x400.jpg",ref_id:"d65bc3c3-cdd7-4539-8cb9-6a8d86f580c8",twitter_handle:"bcvFoundation"},{name:"Christopher",profile_picture:"https://pbs.twimg.com/profile_images/1345072452775370754/cBVFzpkV_400x400.jpg",ref_id:"7dacb545-925d-4201-9b9c-869d992dcdb3",twitter_handle:"Chrissuccess"}],hosts:[{name:"@steliosats",profile_picture:"https://pbs.twimg.com/profile_images/1495784740921786371/a73Qu4HR_400x400.jpg",ref_id:"7eed8e35-f762-4882-adf9-b45ad16c3c54",twitter_handle:"steliosats"},{name:"@geyserfund",profile_picture:"https://pbs.twimg.com/profile_images/1554429112978120706/yr1hXl6R_400x400.jpg",ref_id:"02a48cf4-58d0-4014-803c-9120dedeec52",twitter_handle:"geyserfund"},{name:"UKNOWN",profile_picture:"https://pbs.twimg.com/profile_images/930811252665933826/2cVZF58S_400x400.jpg",ref_id:"bcd18bb0-8224-4f6b-af71-e16120ae4323",twitter_handle:"NodedPodcast"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c9bb5d58-c781-464d-878a-8b6c469ba198.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/885fe09b-bb21-49a5-8667-3c73ed36918f/196dc1e8-c7a4-4dc7-902f-d00107aefb42.mp3",node_type:"clip",pub_key:"0372cd0c8469f2034336a243e018d4d60e07efef8e7d10417807da1173bd5b002f",ref_id:"ee9d0400-3d38-46f6-9741-f99864e86ed4",show_title:"Geyser 🌊",text:"is Christopher from bridge to bitcoin. Hi guys. How is everyone this evening? Good to be here. Great to join you guys in your space. So thanks for setting this up. Mick, apologies for joining late. So apologies if I go over ground that you've already talked about out. Oh, no, don't worry. Sorry for tagging you last minute. No worries. Thanks for tagging. It's been great to speak with Connet. And also I just want to bring it back. Well, actually, I'll start off by saying congratulations on getting 30 projects listed this week on Geyser. That's fantastic. That's really great. And just to resonate with what Connett was saying in terms of things get built in a bear market, I think it's fantastic. And you guys are really promoting it. So thank you for everything that you and the Geyser team are doing, helping people, or Bitcoin is build in this bear market. Because for me, for the rest of the team, it's really important that we build foundations now so we're ready as the ball comes out. It's fantastic to see. So for those who don't know about bridge, for those who don't know about bridge to bitcoin, we onboard merchants to accept bitcoin payments. And we received a grant from Geyser early this year. I'm ashamed to say we haven't yet, and it's been on our to do list for weeks, months, to put up a project, a crowdfunding project on Geyser. And we should really do that soon. But, yeah, we'll get that. It's definitely on our to do list. So we hope to do that soon, especially now, as you say, Nick, the ease of putting up a lightning address. And that makes it so easy, as Joe Nakamoto tweeted about earlier this week. So we shall definitely get on to that. But I just want to go back on what I heard Mateo from Orange Pellet talking about, because he dropped off the call now. I think he has. That's a shame. But I really resonate with what he was saying in terms of how. For. Us, onboarding merchants is one of the cornerstones of Bitcoin success, certainly from my perspective, and making the user interface really easy is really important. I sort of resonate with what Mate was saying in that I think most people are currently not fussed about decentralization, they're not fussed about privacy. We as Bitcoin as are, we get it, we've been down the rabbit hole. But most of the society, they want convenience, they want ease. And that's unfortunately why I think CBDCs are going to hit hard, because people won't do their homework, they won't do their research, people are going to welcome it with open arms, unfortunately. So for me, merchant adoption is really important and introducing that in a way that's really easy. So the way we do that for Bridget to Bitcoin, ironically, it's not Bitcoin that we're selling merchants. For us, it's about creating additional revenue for them by saying, oh, hi, guys. Hi, merchants. What we're going to do is we're going to create a new customer base for you called Bitcoinners, and they're going to come and spend their currency for at your shop service and it's going to create additional revenue. And so for me, it's a slow orange bill, because what happens is a lot of these merchants get bitcoin is coming and using their services or buying their products, and we as Bitcoin as we're fantastic customers. We're so enthusiastic. We travel miles, we buy stuff from all over the globe, we get it shipped over, because you as a Bitcoin business, we want to support you. But if you're new to Bitcoin as a merchant, you kind of get overwhelmed quite quickly with how much attention you get by accepting Bitcoin. And it's great, because what that happens, and what we've evidently seen is that those new merchants suddenly get this influx of bitcoiners and it leads them down the rabbit hole without us having to do anything. Because bitcoin is they make an impression because we're such happy people, especially in these economic times where everyone's feeling the pinch, we will go that extra mile, literally, to spend our bitcoin, to spend our SATS, and replace them. And we're happy about it. We're more than happy, we're enthusiastic. We're the best customers you could ever have. That's amazing. For me, it's kind of a cornerstone of how we can it's sort of a Trojan horse. Trojan horse orange pill. So we're going around to regular businesses so who don't even know about bitcoin, and that's what we're planning on next year. We're going to trade shows. We're just to speak to regular people. We've got no idea about bitcoin, and we're going to talk to them about this fantastic payment processing network called the lightning network. And bitcoin normally is quite late on in the conversation, actually, because as everyone, I think, on the call knows, the processing fees on the lightning network are next to zero. They're really cheap compared to what our fiat counterparts are charging. Plus we've got instant settlement, all those fantastic things. So we talk about it's really interesting. We talk about the payment rails. That lightning network is a payment rail and how better than it and eventually we get to the bitcoin piece. But, yeah, for me, it's about making their businesses more profitable, having additional revenue, and it's fantastic because you literally see them fall down the rabbit hole. So we had that recently with a small chain of pubs, just two pubs that we onboarded last month, I think it was last month or the month before. So this landlord, he owned two pubs and he was not a bitcoiner, and he was not interested in bitcoin. But when James, my partner, said, right, we can bring extra customers to your pub, they're called bitcoin as, and they will spend their currency, but it will create additional revenue, he was like, fine, okay, I'm not interested in bitcoin, but I am interested in additional revenue. So if they're going to come and spend their currency and I can give it to my local currency, great, because it's good for my business, I said, fantastic. Do you set them up with the bdcpa server or what is it that you guys do? We look at the plethora of solutions that are currently in the market, depending on how that particular business is structured. Depends on which solution we sign, post them towards. Generally, the smaller the business, the more options they have. As the business gets bigger and more complicated, it sort of narrows it down quite quickly. So as a one man band, as a mum and pop shop, with just maybe one or two employees, you could literally just have a wallet satoshi, especially if you're just a guy who runs a food truck, all you need is a wallet. Satoshi really, isn't it? Just sat that on your phone because it's you. But as the business gets bigger, it gets more complicated, because you might be looking at multiple employees, multistate. You might have a board of directors who want to have multistake and so on. Yeah, I was also thinking for, like, exchanging back from Landing to Fiat, how would you guys recommend they do that? So in the UK and Europe, you can use a service called Coin Corner, and we'll help you get set up with that. Outside of Europe, we're speaking to IBEX, so we love the IBEX team. IBEX are looking at coming over to Europe, so fingers crossed that hopefully they'll have that flipping service, as I call it, hopefully in 2023 at some point. So I think that we'll see more of this, because for us, what our push is, especially when we're going to the likes of Coin Corner and IBACs, what we're saying is it's really important for merchants at the moment, in these early days, that there is this ability for new businesses to flip into their local currency. But having said that, coming back to my story about the pub for this landlord, not interested in Bitcoin at all, and we said, that's fine from my perspective, I don't mind that because they're adding to the liquidity of the lightning network and the liquidity of Bitcoin because they're a new merchant. That's absolutely fine. That's great. Another business that gets bitcoin. That's fantastic. So we set him up in his first pub, put in place his point of sale devices, made sure his admin console was all set up and everything was fine. And then two weeks later, we went to his second pub. And bear in mind, we hadn't spoken to this landlord during those two weeks. So we set him up in his first pub so that all his transactions, all his sales that he was receiving, flipped instantly into the local currency. So he wasn't holding Bitcoin on his books or balance sheet. Not interested in bitcoin. Two weeks later, we go to his second pub to do the same again, put in place the hardware devices, set up his console, make sure he's happy with anything. He came up to us completely unprompted, and he said to myself and my colleague James, he said, Kristen James, at this pub, I'd like to hold the Bitcoin. I don't want to flip it into the local currency. And we said nothing. Bear in mind, two weeks beforehand, not interested in Bitcoin and just wanted Fiat currency. We said nothing to him in those two weeks. For me, that's a really good example of how Bitcoin is coming into the past have set him off on that rabbit hole journey. And for whatever reason, Bitcoin is coming in, as I say, being enthusiastic. He's obviously either spoken to Bitcoinrs or he's read up and he's realized that there's value. And that's why I say it's a really soft orange pill and it's really valuable because we're not having to orange pill individuals. It's almost an organic process and it's quite controversial, but I think that the way we orange pill individuals is wrong in so much. It's really resource heavy and it's quite cultish, isn't it? We come across as cultish very quickly. We meet new coiners or complete newbies, but this merchant adoption is a really soft orange pill Trojan horse. And that's why I say when we speak to the likes of IBEX, what we say is having that ability to flip, to offer that service, is really important to get our foot into the door for merchants currently. And then what we're finding is merchants are going, actually, I get bitcoin now, now I want some bitcoin. And so it's really interesting, I was just leaping that back to what Mate was saying in terms of how we need to make the interface easy and effectively smooth and almost non threatening, because the services we provide run alongside the current systems that merchants have. So at the moment, we're not replacing anything. So we come in and go, this is a bolt on for your service, for your product, for your shop. We literally bolt it on and it provides you additional revenue. And the same for Ecommerce, it's a plug in that just bolts on, you don't have to change anything, swap anything out, it's just an additional service that you can have to create additional revenue for your business. So, yeah, completely agree with Mateo. If we need to get the UX and the UI really smooth, make it really non threatening, really simple. So, yeah, I'd love for more projects to help with that, that would be fantastic. And then hopefully what we're seeing is they fall deeper and deeper down the rabbit hole really quickly and they turn into bitcoin really quickly. But. Yeah. Thanks, Mick. Thanks for everything that guys are doing. I'm loving oh my God, thank you, Chris. I'm loving the building that's going on. And we've also launched another business, actually, me and the team, and we take on a couple of other people and we're probably going to put this on Geyser as well. But we've launched and you've seen that, we've given you a cardmaker, laser Eyes cards. So if anyone on the basis is listening, check out Laserrise cards, send Twitter handle. They're essentially Bolt cards, but they're completely blank in terms of the electronics in them. And you can do what you like with them, so you can link them to your own node and your own wallet, or you can use a custodial service like Coin Corner, but there are risks, of course, because they're an exchange and so on. Get money off exchanges, yada, yada, yada. I won't go on about that. But you can do what you like with them. But the unique selling point is that you can have whatever images you like on your cards. And we've got a gallery on our website and they're called laser eyes cards because we put places on them. And the idea is when you tap on to make your payment, so they contact us, pick on debit cards, NFC cards. When you tap on the point of sale device, your eyes turn to laser. So we literally give you laser eyes. So we hope to be adding that to your crowdfunding project platform on guys as soon because we have a couple more products in the pipeline and we. Think, yeah, ",timestamp:"00:51:49-01:04:53",topics:["Bitcoin evolution"],type:"twitter_space",weight:24.426984779829223},{boost:0,date:1665946635,description:"Hodl, Ben and Evan's review of TABConf",episode_title:"TABConf Mixtape Vol 2: Sound Bites from TABConf",guests:[{name:"Michael",profile_picture:"https://pbs.twimg.com/profile_images/1558687629599657990/vf-bU14b_400x400.jpg",ref_id:"c7b4faa1-db77-4459-b03f-0e41e15efae7",twitter_handle:"MichaelHawaii"},{name:"Ben",profile_picture:"https://pbs.twimg.com/profile_images/1580596905721171969/0NnLeJWA_400x400.jpg",ref_id:"da0132b9-0d19-43e6-bc1a-9c7818c79ba4",twitter_handle:"benshapiro"},{name:"brandon",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"8a27da7a-c05c-44da-8247-3c5f68bc3164",twitter_handle:"ThrillerBitcoin"},{name:"shane",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"2e5ce678-7d04-4a48-8bd1-281329ea9424",twitter_handle:"ThrillerBitcoin"},{name:"exfrog",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"d0dc102c-404e-4753-9290-9a3fe27fe2ee",twitter_handle:"ThrillerBitcoin"},{name:"josh",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"34eb29e3-da86-485f-b20a-059f7d41f6ad",twitter_handle:"ThrillerBitcoin"},{name:"autumn",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"3224f2ec-3e77-485f-88b8-6930e19f8ac6",twitter_handle:"ThrillerBitcoin"},{name:"buck",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"00a55ec0-9b1a-482a-893a-345d350a33a0",twitter_handle:"ThrillerBitcoin"},{name:"stephen",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"9dc56711-eacc-4691-821e-fe2a26855ea9",twitter_handle:"ThrillerBitcoin"},{name:"hodl",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"b012eda0-b78c-46e7-ab46-6a7139584fc7",twitter_handle:"ThrillerBitcoin"},{name:"evan",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"9a8418e9-8976-425c-95ce-ed2fe307e380",twitter_handle:"ThrillerBitcoin"},{name:"muzz",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"444b8330-caa1-4bcf-8144-7d9110ae2242",twitter_handle:"ThrillerBitcoin"},{name:"thomas",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"e2140e58-314d-4425-bc97-20f52f951866",twitter_handle:"ThrillerBitcoin"},{name:"justin",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"2ce04090-b9b1-4e84-a87f-9c9dc9ececec",twitter_handle:"ThrillerBitcoin"},{name:"stakamoto",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"8b249d9b-8521-4e0e-bf24-2d8b8721d26b",twitter_handle:"ThrillerBitcoin"}],hosts:[{name:"ThrillerX",profile_picture:"https://pbs.twimg.com/profile_images/1575598727812812803/4FkPb0vt_400x400.jpg",ref_id:"231d171e-06a4-4294-9cf2-6640e27429ea",twitter_handle:"ThrillerBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/4240c90e-0086-4ece-bfe5-84a282c5059e.jpg",keyword:!0,link:"https://2.gum.fm/op3.dev/e/pdst.fm/e/dts.podtrac.com/redirect.mp3/media.transistor.fm/82539eb6/c2b4aa1b.mp3",node_type:"clip",pub_key:"",ref_id:"821f7b5c-c6ad-422b-b4e1-ed34f915e4af",show_title:"Thriller Bitcoin",text:"a lot of fun. I very much appreciate you. Anything cool that you've seen here, like as far as the talks, because you're a bitcoin or, you know, all these things, what do you think has been like the most, most memorable thing that you've seen? Well, I mean, that's one of the unfortunate things is because I'm responsible for all five rooms, I only ever get to spend like moments making sure that the room is good before I have to go to the next room. So I got to see a bunch of like a little bit of a bunch of talks that I really wish I could have sat there and engaged in. The coolest thing I've seen so far was probably Andrew Polestra's codex thing, like making a paper computer at the end of yesterday's event in the Socratic village. It's a really neat, complicated thing. There were, like, 20 to 30 people in there with scissors, cutting out these things, putting them together that help you code and decode without a computer. It was really neat and very engaging, and it was like I don't often see events have engaging workshops that actually are well attended, like people who will sit down and focus and learn a thing for 3 hours. That's kind of what sets Tabcomp apart from every other conference I've done is people are actually here to do the thing, not just watch someone talk and then watch someone else talk. Yeah. Do you think there's room for both at the conferences? I think there very much is, and I think that's one of the things that this year at Tabcomp was kind of missing compared to last year is there's no real beginner track if you're not ready to dive into command line stuff. There's not really a whole lot, but the next gen village is doing a good job of getting, like, the younger kids involved and having content for that. I think we have too many conferences that project to the lowest common denominator that have the same speakers come giving kind of the same talks to the same audience a lot. And events like Tabcomp and BTC Plus are kind of not that they're really more about learning and doing and doing it in an environment of your peers and friends. Yeah, that's cool. Thanks for coming on the pod, man. Appreciate it. I appreciate everything you do, by the way. You too. I really love hanging out with you, man. Paul, do you want to be on my podcast? Sure. 40. What do you like about tapcom this year? It's just like last year, but more Tabcomp is, like, getting, like, a semester of Bitcoin education. Four days? Yeah. In four days. Does it feel like every day has gotten better? I feel like every day has gotten relatively better than the day past. It's almost like it's like steps. Yeah, I didn't know about that. I run out of room in my brain, so at some point I'm stopped learning. But, yeah, I've gone to so many good talks and learn so much from so many different angles. There's a really interesting theme this year about how lightning is totally broken. Really? Okay, tell me more. Macarola did a talk on lightning is broken, but we can fix it. And there's a lot of terrible news about problems with lightning. And there are things that these are problems that have been pretty well known that we basically need to work on and improve to make, basically, lightning. Right now, you basically want to trust your channel partner. There are things that your channel partner can do to make your life miserable. There's attacks that we know about that just don't happen a lot. Because it's a small community. But as we become like a big deal, either we're basically only going to have to make channel relationships, business relationships and just formalize that kind of way, or we're going to find more cipher punk ways to do this in kind of a bitcoin ethos because we'd like to be able to open up anonymous channels but it's just a little bit dangerous. So it's kind of this long to do list and it really kind of depends on who you talk to after that talk of how bummed they are versus how kind of exciting. You're kind of bumming me out right now. It's like it's sounding like it's a major thing, but if you think about it from an engineer perspective, right, any engineer, you start out a project, you have 100% problems, nothing works, right? And then you start fixing one problem at a time and you make it a little bit better. And maybe at some point you're 75%, you ship it, and then you keep on fixing problems and maybe new problems you didn't know about come up. You try to fix those. So from an engineering perspective, these are all things that we believe we can find, we hope we can find good solutions for. And everybody I talk to that is working on it is excited to work on these problems and wants to think deeply about them. So it's kind of an exciting talk to like, hey, let's not let's not hide. Let's not pretend like everything's perfect right now. Let's engage with the issues that we have. Like, lightning works really great right now for for what we're doing. It could just it could be a lot better, and we need to be aware of how it could be better and not just pretend that it's perfect right now. Yeah. What's the most memorable thing you've seen? Is it Ben Carmen? I love seeing Ben Carmen. I think Ben Carmen is the most memorable thing I've seen. This is such a beautiful site. I'm actually excited he's going to do, like, live coding. Oh, really? You're going to watch it? Yeah, I've hung out with him a million times, but I've never actually sat there and watched him code before. So he's going to be coding in like an hour. So I'm going to watch that. I actually got to watch Epic Coludus live. Yeah. That was awesome, right? Dude, everybody keeps bringing this up and this recording. Yeah, actually. I didn't know I would like it that much, but something happened to me, like in the middle of yesterday where I was like, maybe my head was starting to fill up with ideas. I was like, I want to sit down and start building something, I think something I'm going to try to talk to the organizers about. There's a lot of after parties. The last talk happens at 05:00 p.m.. People go to dinner. Then there's an after party, then there's another after party, but I'd like to have a quiet room to go after the last talk and just people are there with laptops building stuff because I don't like the idea that I'm still, like, two days away from having my laptop open and really coded. Speaking of Evan, I've been recording everybody for this mix tape that I'm doing, and everybody keeps saying your thing is, like, the most memorable thing here. What do you have to say about that? Well, first, I'm flattered, but I think there's much more epic things I've seen. I got a demo of Stratum V Two that's going to be super impactful, super important for decentralizing mining. So I think that's near the top of the list for me. Also really cool to see tony, Giorgio's, Ellen, spoit. Ellen. Ellen spoit has so much potential. The workshop was awesome. I was able to execute that attack that we saw last week on LNG nodes 15.1 and under. That was pretty awesome to compare. Yeah. Tony walked us through, like, hands on. We could do it on our own laptops. We set up a virtual lightning network, and we would steal funds from one of the nodes on that lightning network. Dude, that was sick. Do you see how many nervous people I saw some BCS in the room. They look nervous. Oh, yeah. I mean, listen, the thing is, we need to be doing these things now. Stuff like the Ellen Depog. We need to get that out of the way now before it becomes, like, a headline on New York Times, Financial Times next time that happens. Right. And, yeah, we need tools like L and Spoid to, like, you know, see how things hold up and find where things break. So I'm looking forward to more exploits being released. I think it's an excellent foundation, and I hope more people try to break Ln and contribute to Ellen spoiled. Do you think Ben's going to break Ln? I'm not breaking. Or is it going to help? I'm helping lightning, making lightning more private. Carmen, how's your tab comp? It's been great. Best tab comp ever. Better than last year, I think. So we got more people here. Workshops have been really good. Talks have been really good. More of my friends are here. You're here. Thank you, Ben. Yeah, it's been really good. I've had a lot of fun. It's got out of the attacking lightning panel. That was phenomenal. So Paul was saying yeah, it was really good. Probably going to have to turn off my lightning note eventually. This is terrifying. Really? Not really, but how do we fix it? Just talk about it? Well, talking doesn't actually do anything. We have to write code. But a lot of it's, like, research as well. It's like, we just know there's problems and we have ideas of solutions, but not like, oh, this is a real fix. It's like, oh, this is an approximation of a fix. So we're just still a lot of research to do by always smart people, hopefully to figure out better mitigations and solutions to these problems. But I'm not going to be able to do it. But smarter people than me are working on it, thankfully. Thank you guys for coming on the pod. I appreciate you all. ",timestamp:"00:50:17-01:00:04",topics:["TABConf","Bitcoin community"],type:"podcast",weight:9.932519761232543},{boost:0,date:null,description:"Introducing the Start9 sovereign computing model",episode_title:"Café ₿: Sovereign Computing w/ Matt & Aiden, Start9",guests:[{name:"Andrew",profile_picture:"https://pbs.twimg.com/profile_images/1465763053014859786/xYFN2czJ_400x400.jpg",ref_id:"ae4b13f8-0ee7-480a-b47a-82b967ad7a79",twitter_handle:"AP_ArchPublic"},{name:"Matt Hill",profile_picture:"https://pbs.twimg.com/profile_images/1347317316057321474/ieMjzK3x_400x400.jpg",ref_id:"3576ad28-a04d-4388-865b-3ec5114c4f9f",twitter_handle:"_MattHill_"},{name:"Lauren",profile_picture:"https://pbs.twimg.com/profile_images/1586022214901501952/U1dRyCxP_400x400.jpg",ref_id:"7f14bbf5-a60b-496b-a361-3663cf120299",twitter_handle:"LaurenJauregui"},{name:"Aiden McClelland",profile_picture:"https://pbs.twimg.com/profile_images/1470160097225498624/0BjKB_2W_400x400.jpg",ref_id:"04ddd9d4-9329-4e6c-aaa3-d65ea4a9342a",twitter_handle:"_dr_bonez"},{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Lisa",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"e6f0c6e3-3237-4b13-878f-bb740cd32f8d",twitter_handle:"lisa_hough_"},{name:"Isabelle",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"c8df253f-47b3-465e-878e-8405c01c090d",twitter_handle:"isabelfoxenduke"},{name:"Tone",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"5729ac07-51d6-4268-b585-62680c846acb",twitter_handle:"ToneVays"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"},{name:"Derek",profile_picture:"https://pbs.twimg.com/profile_images/1598322677827207169/Cw0A3oOP_400x400.jpg",ref_id:"f441b996-7eeb-4210-b24c-fa011161709d",twitter_handle:"derekmross"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ec4a941-250c-4e1d-8d2a-6c506c3ba4b2/4bd8010d-b2fd-41b4-8041-8a953ef06492.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"700e8ab8-7cc3-476c-87ea-524081f2322c",show_title:"Swan.com",text:"right, Matt. Well, thanks for joining us. Very excited to be talking to you guys about what you're doing. I know there's a bunch of swans who have ordered stuff from you guys, and it's pretty fascinating. So for those people who don't know what Star Nine is, if you don't mind, would you give, like, a five minute summary on what start Nine is, what are you guys doing? Why are you doing it? And then we'll start opening it up to whatever it is you guys are working on, and then we can do some Q and A, if you like. Yeah, sounds good. So we are, in the broadest sense, a computer company. And our goal as a company is to make self hosting software, open source software, accessible to everyone. And that might sound really boring right out of the gate, right? But when you understand what that means, and you understand that in the current model of computing, that basically your cell phone and your laptop, all these things that you call computers or devices, are really functioning as remote controls that are operating somebody else's computer somewhere else. And oftentimes the computer that you're operating most of the time, in fact, is owned and controlled by one of the Big Ten tech giants. Other times, it is just a small cloud computer that is hosted by the app that you happen to be using in that moment. So, for example, there might be a Notetaking app on your phone that is plugging into a server somewhere that is owned by two founders in a room running that server. And so every piece of information that you write in that Notepad, every time you use it, those signals are flowing through their servers. All the data is stored on their servers. And this scales all the way up to whenever you use Twitter, for instance, or Facebook or Google. Every piece of information is flowing through their servers. So all your communications are intermediated. You are never talking to somebody directly. You are always talking to somebody through a messenger. And that messenger very often has full access to everything you're saying, when you're saying it, et cetera. And secondly, all the data that is produced in those interactions, whether it's you storing a photo or you sending a message to somebody, all that data is likewise stored forever on those third party servers. And sort of how it's always been. When I say always, I mean since the second computing revolution, the cloud computing revolution took off about 20 years ago, give or take. This is just how it is and we've gotten very used to it and it's been very convenient of course has led to many conveniences and superpowers that people have to get more done in a day. But I forget who says this definitely Lornal Arcos in Red Rising but I'm sure somebody in the real world has said it as well. The bill comes due at the end of the meal so the bill is coming due. This wasn't free. It comes at enormous unforeseen costs that are just now starting to be felt and will continue to rise. And so we recognize this as a company, as individuals and we set out to kind of do something about it. And our solution to this is the solution to this which is a disintermediated computing paradigm where human beings and their computers are interacting with each other and those computers are interacting with other computers without the involvement of trusted central third parties. That doesn't mean it's PeerToPeer. It just means federation is okay too. Meaning I can run a server and people who trust me, who are close to me in my life can use my server to interact with each other. It's okay to trust people that you know and who have earned it. So we envision a computing paradigm where people are either communicating PeerToPeer or at least utilizing the servers of people that they trust. You know, members of families, the organization that you belong to, whatever it is. And in order to make that possible, for that computing paradigm to be possible at all it requires people to run their own servers. And I don't mean a server sitting in a bunker somewhere that you don't control. I mean a physical server that you have physical access to. It requires that. And secondly it requires you to be able to use that server. So it's not enough to just buy a Raspberry Pi and install Linux. The vast majority of people in the world are incapable or at least don't have the time and energy and patience to use that thing properly and in perpetuity. These things require enormous amounts of technical acumen. They require time, they require ongoing maintenance forever. It's not a set up and forget type of thing. And so what we have set out to do is provide the tools, namely in the form of an operating system that enables a totally non technical individual to set up and administer a physical personal server for the purpose. Of installing and running almost any variety of self hosted open source software under the sun and converting their computing life to a private one that excludes any trusted third parties. And we try to do this without compromise. It's an ongoing series of trade offs but we are really taking a purist approach to this and trying to do without compromise ultimately resulting in you. When you say without compromise what do you mean by that? I mean that to make anything functional. There's always this trade off between user experience, like making something super easy and convenient, and the principle underlying your purpose, which is to enforce privacy censorship resistance. It's the age old issue of security is basically it's the exact opposite of convenience, right? Like you always have this battle going on between the two things where you're trying to protect your stuff, it just makes it less convenient. And finding the balance there is pretty tough. It's a hard it's a hard computer science problem. It is. And under certain paradigms of computing, like once you have accepted the cloud computing paradigm, this intermediated custodial computing paradigm, you're sort of bound to fail at the privacy and censorship resistance principles because it's. Not really you can't do it with that. You can't without an enormous injection of trust and oversight, which itself just raises costs and ultimately corrupts. Right? So the stance is that we got away with this for a while because it was young and new. It's like in a man. I don't know. There are also massive, massive honey pots for hackers, right? Like when you have these centralized databases full of everybody's information. How many times have we heard this story over the last ten years where even huge credit rating agencies that have hundreds of millions of people, hundreds of millions of records on people get hacked and everybody's information gets stolen and it's big problem. Yeah. The four costs that we talk about with the current computing paradigm are privacy, invasion of privacy, censorship, the security vulnerability that you just mentioned, which is that anything that is worth hacking will eventually be hacked. Period. That's an axiom. And lastly is cost because in order to try to preserve the things that consumers want, like privacy and censorship resistance, the costs forever rise because there's more and more middlemen, right? Security is just more and more layers. And so what's happening here is these tech giants and to be honest, some of the smaller software as a service providers as well, like I mentioned, the tiny little note taking app that's on your phone or something, their costs are rising. It is not a good business to be a service provider of information and data. That is a bad thesis. It was the thesis in Silicon Valley for the last few decades. It's what their bread and butter was, was this idea of, you know, give away some free software product and then just become an indispensable middle man, like to sit right in the middle of everyone's stuff and make them totally dependent on you and then eventually, someday we'll figure out how to see them. Which is the problem. It's what the problem we're facing with everything today. You're seeing it used as a method of control over the masses. A great example of this is Apple and the Apple Store, right? They're threatening to remove Twitter from the Apple store. You need their permission. They are the gatekeepers with the power. That is correct. Apple, as Quick Anecdote canceled our original app, right? Originally, we wrote an Android and iOS app that you would use to connect to your embassy. That is how you administered. Your server was through a native app for these platforms. And Apple shut us down. They told us that we can no longer release additional updates. They provided very little information or guidance. We appealed through multiple boards, and eventually they just said, you're out. And our response to that, I wrote up a huge blog post about this and posted it from my Twitter account and from the start, Nine Twitter account a couple of days ago, if anyone wants to read it. But our response was the proper one, which is what you do when any central authority, whether it's Apple or in a nation state, becomes sort of domineering in your life. You can't punch back. That's their game, right? You're not going to win through you're not going to beat politics with politics. You're not going to beat, you know, business through trying to compete with Apple, you have to opt out, right? This is the most powerful tool available to a club. It's the most powerful tool available to all of us is to simply stop feeding the beast, stop using the things that they offer. Don't fight them for better offerings. You don't go to Apple and say, hey, I want better privacy. Just stop using them. And when I say just, that's actually really hard, right? Like, it's not easy to go on strike and to opt out of these highly convenient systems that we've become largely dependent on. But that's our job. That's what we're doing in Star Nines. We are trying to give people the tools that enable them to opt out of these massive big data surveillance systems. And the good news is that it's not all or nothing. You don't have to, like, take the full plunge. It's not like this huge daunting thing. You just need to take that first step and then gradually, over the course of years, even move your digital life on to systems that you control or that someone in your family controls. And by doing this, not only will you be protecting yourself with minimal convenience loss, by the way, because what we have done is not some crazy, esoteric, inconvenient thing. It's for anyone who has and uses an embassy. You'll know, like, it's not that bad, and it's going to get better and better and better by the month. We're moving very fast and making it very convenient. But not only are you protecting yourself with minimal loss of convenience, but you are almost indirectly fighting back, right? It's a consequence. You're doing something that's in your own best selfish interest while simultaneously benefiting the world by starving out the beasts that are suffocating it. And that's a very powerful idea. In fact, we think it's so powerful that it's bound to happen. I do think that there are scenarios where we go through an enormous period of history where something like this does not come about, but so long as we and others and quite frankly, the whole Bitcoin space keeps pushing for these opt out abilities, which is what Bitcoin is, by the way. Bitcoin is this huge opt out technology for opting out of the fiat monetary system and it's a huge one. And we're just taking that same idea and be like, yo, opt out ",timestamp:"01:17:40-01:30:45",topics:["Start9 computing model","Cloud computing revolution","Computing paradigms","Opt-out technology"],type:"twitter_space",weight:9.312597274780273},{boost:0,date:1670878744,description:"Thoughts on Binance and CZ",episode_title:"Escaping $ Debasement With #Bitcoin",guests:[{name:"Joe Consorti",profile_picture:"https://pbs.twimg.com/profile_images/1596902707511664640/GYGWVDts_400x400.jpg",ref_id:"8d2024b2-03bb-454d-9bd6-bb121904b76a",twitter_handle:"JoeConsorti"},{name:"Nik Bhatia",profile_picture:"https://pbs.twimg.com/profile_images/1496241412580397058/s7jy5g3a_400x400.jpg",ref_id:"d76f4499-ccf6-4153-9bc1-257a580aa079",twitter_handle:"timevalueofbtc"},{name:"Sam Callahan",profile_picture:"https://pbs.twimg.com/profile_images/1592532728775409667/0DayEP2Q_400x400.jpg",ref_id:"5a044a91-8dee-421c-86dd-8c734dc9bc32",twitter_handle:"CallahanMusic_"},{name:"Brian De Mint",profile_picture:"https://pbs.twimg.com/profile_images/1546297674512470016/oEVF8rJQ_400x400.jpg",ref_id:"064e04f7-8320-4854-8325-0cc19cd7ff55",twitter_handle:"BrianTheMint"},{name:"Dylan LeClair",profile_picture:"https://pbs.twimg.com/profile_images/1508157904913899522/3l7ctauV_400x400.jpg",ref_id:"283edea0-55cf-4245-95df-8d6d3dcb1851",twitter_handle:"DylanLeClair_"},{name:"@coryklippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"21aca21d-9a96-40a9-a8b8-a523ae6591c3",twitter_handle:"coryklippsten"},{name:"Matt C",profile_picture:"",ref_id:"337e3256-0602-4baf-a4b7-ca6d0655c569",twitter_handle:""}],hosts:[{name:"Bitcoin Magazine",profile_picture:"https://pbs.twimg.com/profile_images/1444022922377576453/AzvXYXGr_400x400.jpg",ref_id:"0e7b904e-5161-4aa8-9f0b-65bee6050ddd",twitter_handle:"BitcoinMagazine"},{name:"Chris Alaimo",profile_picture:"https://pbs.twimg.com/profile_images/1579209742370672646/rck7M_MR_400x400.jpg",ref_id:"3a1bd698-9d67-40e4-ba6d-3e2262b385ca",twitter_handle:"ChrisAlaimo6"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f3a55dda-3dd5-4f62-99c1-bab3a88c27c1.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/80ab6951-8961-4aad-a458-a397ed6fd3cf/88c750f6-7569-4f69-947c-d61a398c358c.mp3",node_type:"clip",pub_key:"02814a5050f43a36bb052c7a3f22f0e86700abe037a44d99b45e0cb424d9398cbf",ref_id:"ea039879-1342-42d9-92e1-1fd4b6561488",show_title:"Bitcoin Magazine",text:"You'Ve been all over the scams in 2022 and even before that. But I've posted a little bit today, and some people have said this is valuable. Some people have said you're just a paranoid floodster. But I've been posting a little bit today about finance BNB. If you take a peek at BNB and bitcoin terms to basically add all time highs, ten X in the span of week in 2021, and just for instance, right, like, I like to evaluate things in bitcoin terms in this industry, whether it's private valuations, public valuations, crypto tokens, right? And B. And B is worth 2.8 million bitcoin, which is certainly fascinating, right, given that it's a centralized fork of ethereum that finance spun up from nothing. They've arbitrarily halted the BNB chain multiple times. So thoughts on thoughts on CZ? Obviously, he's the main character now, which we've seen in crypto doesn't usually end well, I guess. Just give me your preliminary thoughts. Yeah, I mean, it won't end well eventually, one way or another. We don't know if it'll be some cataclysm or some kind of like, slow bleed just chipping away at regulation. And at the end of the day, the assets that are trading on this platform, finance aren't worth anything. So the trading infrastructure itself that only trades worthless assets isn't worth anything either. And I think that basically makes crypto trading platforms inherent value pretty much zero, other than whoever is still playing greater fool crypto gambling games on their platforms. So as long as that continues, maybe they can continue to extract value. But I don't think you can actually end up going public or monetizing this thing with some kind of exit through this sort of offshore distributed type thing. It's just easy getting rich basically, as long as you possibly can and trying to keep the window open as long as possible. I 100% agree with you on BNB. Obviously, this is company script. It's you know, he can pause the validators at any time. I think he, you know, if he wants to replace one of these guys on the, on the zoom calls at any moment, he can do it really easily. And there aren't that many of them, and they collude and cooperate, obviously, so nothing decentralized about that. Yeah, it's just weird. People betting on B and B is just kind of being long CZ and jumping on trades that he's also long. Kind of just betting on this guy to be smarter than the other people betting on him to be. The smartest guy in the room. Which is the same trade that 100 crypto funds NVCs have had on Sam bank and Creed for the last couple of years, which is just basically belong anything Sam's involved in. Because Even if it's a total scam and even if it's total bullshit. He's so smart that if you just pile into the same trade and ape him, then you'll probably do well. Right? And that's what so many of these people did. It was kind of like the new version of the GBTC ARB trade, which everybody piled into in 2000 and 22,021 and then got burned and led to this next brainless move of just going along salana and salana ecosystem crap. And, you know, it's just not a lot of independent thought. And nor would you expect there to be much, because when it comes to crypto, folks like these are people that have chosen to spend their life's work on something worthless. So I'm not sure why you would have high expectations for them. So, Matt, I see you have your hand up. Corey, I just want to add one thing to the combo and then would love to hear your thoughts on Matt. I can't confirm this, but heard from an extremely reliable source over the weekend, just kind of on your GBTC thread a little bit and waiting for confirmation on this. Decided. I haven't posted this officially on Twitter, but hearing from the extremely reliable source, heard that Alameda was actually very much involved in the GBTC trade of Genesis. Posted to Genesis, borrow more, lever up long the GBTC discount premium with leverage essentially, apparently, according to the source, who will remain nameless, but definitely very much in the know in terms of all of this happening in the industry. Very connected person. Told me that DCG executives were actually going around and this is in 2000 and 22,021 were actually going around and pitching these three Arrows capital and now meters of the world and everyone else to go do this trade, this leveraged circle jerk with DCG entities of buying the bitcoin or sending dollars to DCG. I can be a source for that. This was active and very heavily promoted. Everybody was doing it back in 2021. Buy a bunch of bitcoin or even just send cash and they would just convert it into bitcoin for you. And then remember, it used to be a one year lock up. And then when they started really wanting to push it, they changed it to a six month lock up. And that's when the flood really came. And this is where all the BlockFi yield was coming from because it doesn't matter what asset it was like, let's say that you could get, you know, essentially like risk free 20 or 30% on this GBTC premium. You can double that out a bunch of different ways. Even if it started to drop a little bit, even if your expectation was six or eight, you could still pay like 10% on stables and consider three or 4% to be like customer acquisition costs, like marketing costs, and still have some left over to pay some yield on that. But at the end of the day, all this is is something that is illegal in traditional finance, which is funding institutional trading and leverage with retail deposits. It's not something that you can do. It's not something you can get away with. So it's funny Sam Bankman Freed even tweeted out in the wake of the Celsius collapse in June that Instow to Instow loans are fine because both are sophisticated, but retail lending to Enstow is shady. Well, at the same time, of course, doing exactly that in a slightly murkier way. Yeah, I think it's interesting to see the pattern. And maybe this is just trying to frame a lot of these industry participants under the same light, and maybe CZ or other actors are more legitimate. But it's interesting, the same kind of like position of strength kind of shoot down on some industry players say this is a poor risk model. It's like position of weakness and act really, really strong. Right? We've seen this happen over and over and over again. And in the reality, none of these guys were all that sophisticated and they were just levered to the tips in various ways and various carry trades that blew up in their face. The other funny thing was this thread that came out yesterday or the day before, and obviously I think it was Rom he's like crypto CFA or something like that, and I retweeted him and tweeted a couple of his things out over the last week. But basically just sniffing out and putting together that Alameda was probably made money at first when the only people on FTX were relatively unsophisticated or small fish, basically. And then when the big guys came, the smarter guys that were way smarter than people with 18 months of junior experience at James Street, or someone who looks and talks like Caroline and everybody on math or whatever, like when real shops came and started trading on FTX, they just started ripping Alameda's face off. And I verified with multiple funds that they were duplicating. The strategy that I tweeted out about, basically just at closing, there was some kind of like rebalancing or refunding of these leverage tokens that existed on FTT. And one guy made 50 X on his money in a year or something like that, and lots of other people were on that trade. I guess at least a few people have pointed to CMS Holdings as having really ripped the face off of Alameda for the last few years, basically doing this, and lots of other people learned how to do it too. It just really wasn't that complicated. So I think that thesis of this guy basically wasn't nearly as smart as people thought. Not some kind of like super genius, obviously just losing money. And the reason that he started getting into retail. As long as people were dumb enough to go along with this theory of FTX equity is valuable and FTT token is valuable. And all this other stuff the move into retail, like sponsoring the arenas and buying blockfolio and sponsoring Pomp and all this other stuff was really just to try to get into a position where they could take fees off of people. Because this is Ben Hunt. Excellent theory. Talking about this a lot too, in the last few days that you want to be in the flows, right? You don't want to be in directional bets at some point. So it's just like this houdini escape attempt to try somehow to get into the retail business where low end people will eat fees and build this big financial institution that's kind of more retail focused since they obviously couldn't make money trading. ",timestamp:"00:08:42-00:19:36",topics:["Binance BNB","Changpeng Zhao","Alameda Research","bnb"],type:"twitter_space",weight:17.912974381160645},{boost:0,date:null,description:"Brad Mills explains his stance that Stackchain is a shitcoin",episode_title:"Café ₿: Bitcoin Lightning ⚡️ Q&A w/ Bobby & Paul From Voltage!",guests:[{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:" Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"560cf9ee-2844-4ced-bbfd-d0ec639b2177",twitter_handle:"CitizenBitcoin"},{name:" Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1307109108127019008/rPNj47yJ_400x400.jpg",ref_id:"4f4f53c7-5a3a-46df-b334-9951fe38dc96",twitter_handle:"realjeffreyross"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" q_liketheletter",profile_picture:"https://pbs.twimg.com/profile_images/1560683048680665088/4MrHM_UY_400x400.jpg",ref_id:"d82c0d30-d0d3-4947-a358-d28f1cd5292e",twitter_handle:"q_liketheletter"},{name:" iBobbyShell",profile_picture:"https://pbs.twimg.com/profile_images/1583132979571920896/1Std3_ya_400x400.jpg",ref_id:"2f9bd0a3-1215-4a89-9dc6-d64f170961af",twitter_handle:"iBobbyShell"},{name:" Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"ac43b4f0-9056-4a6b-9d30-4a6250405ade",twitter_handle:"ToneVays"},{name:" sonofsats",profile_picture:"https://pbs.twimg.com/profile_images/1593080311000211456/Dr_NQ9Iw_400x400.jpg",ref_id:"d584f070-a66a-4b53-b15a-8142f8daea66",twitter_handle:"sonofsats"},{name:" futurepaul",profile_picture:"https://pbs.twimg.com/profile_images/1508452962917666821/1QheRD09_400x400.jpg",ref_id:"fcb50ec8-2669-47da-87b9-1702affb30c9",twitter_handle:"futurepaul"},{name:" Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"a2ba4e1e-aab7-43b0-90d7-d3c6a9738ad0",twitter_handle:"FossGregfoss"},{name:" Brad Mills",profile_picture:"https://pbs.twimg.com/profile_images/1541955880752750592/XJqwIn2E_400x400.jpg",ref_id:"9a49201c-3b03-4a83-bcb8-d92dbf3d55b6",twitter_handle:"bradmillscan"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ad62f26-289d-4eba-af0b-0da68515cbb6/c5c6ea3d-df5a-464d-9b41-a6bf3a0372a9.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"929def08-6b32-4313-a296-eaa1e5ee8d1b",show_title:"Swan.com",text:"Alex, can I ask Brad a quick question? Of course, go ahead. Hey, Brad. Stack chain is just the gamification of turning Kuckbucks into SATS. And the only reward is people get more SATS. So I'm curious, why did you post that stack chain was a shit coin this morning? Oh, my God. Here we go. Shot fired. Bread went off the stage. He's requesting come back up to defend himself. It should be interesting. The reality is that there are lots of detractors of stock chain. For various reasons. It is something that can. Oh, my God. What's up, Brad? How can you declare it? How come you posted as a shit coin? Do you not understand what we're doing over there? 3 million cookbooks converted hold on. 3 million cookbooks converted in four months by $500. I spent a lot of time in the Djen pits of shitcoinery, and this feels like a shit coiny thing to me. So that's why I said that, because the shit coins do stuff like that. Which means you're buying right now, right? Buying bitcoin. I'm always buying bitcoin. None at all. Good burn, Alex. What? Buying bitcoin? No, I'm not buying can we just back up? What exactly is stock chain? Sorry, I'm sort of be the idiot on the panel. Here we go. Look, this is what it is. It's a bunch of clubs decided we're going to stack some bitcoin and play a fun game on Twitter and post memes and kind of replicate what a blockchain is while they stack bitcoin and compete for blocks in a big long Twitter thread and kind of meme about it. But to me, I was a big fan of like, the Lightning Trust torch and all those things like the state chain torch and things like that. I loved that stuff. I thought that was cool because it served the purpose. It was like a political message. The lightning torch was similar, but the Lightning torch was like almost a political message because we were sending the lightning torch proving to the shit pointers, like to Roger Fur and all the BCRs that lightning wasn't vapourware and that you were sending it across borders. People were kind of like making a political statement. Like somebody received it in Iran and then sent it back over to someone else in another country. And it was kind of like a political statement that I could get behind. But the stock chain culture, I think, to me looks more like a little bit useless and a waste of energy. It looks like we could be doing better things with our time. And as an outsider looking in on it, that isn't part of bitcoin culture. It does look like a bunch of weird people, like, bragging about pumping the price of bitcoin even though they're only buying like, $5. It just feels okay, hold on. Brad, Brad, Brad. It's fasci. OK, as a proud stock chainer, I think you need to do more. Okay? I would happy to talk to you offline because it actually is a very noble cause. Nothing more than a bunch of clubs, but that's exactly what it is. Okay? Okay. And I just want to end with this. I have a proud stock chainer. I think I've done it four times. That being said, it is the total antithesis of shit coinery. Okay? It actually is a disciplined and find the stock chain tip. Sort of teaches you how the blockchain works indirectly. Just my opinion from a 60 year old fuck. Okay, this actually is a cool thing. Because there's at least a dozen swans who are stack chainers, including Corey Clifton and oh, by the way, Michael Sailors. A stack chainer. Everybody's a shit owner now. No, I'm on the other side of it. I think Brad has way too much free time in his hands. I guess he needs to find. It. I didn't get in on the premiere of the Fact chain, so maybe that's why I'm salty. For those of you who missed it, you got to go back and listen to the podcast recording of this show for the Thanksgiving special was so goddamn funny. There was one part where American Hall was comparing Brad Mills to a small furry mammal in the grass. It's great. I'll leave it at that. You got to go check it out. It's hilarious. So, Brad, I think some of your concerns are probably valid. It does look a little odd from the outside, but honestly, it's just a bunch of plebs having fun stacking SATS in the bear market. That's really what it comes down to. Ant is also correct. There probably is our $3 million cuckbuck mark. He said asterisks. And that's probably correct because there are some people who play this game and squash or they create fake receipts or whatever, but they're losers because they didn't get a stack stats by doing that. And then the other thing is that in effect, it actually increases the difficulty adjustment because the block height goes up. There's another dollar added once that happens. So somebody else is purchasing more Sass and it's really just a fun way. To shift the gamification of stacking. That's really what it is. And a way for people to talk shit about each other while doing it, which makes it fun. I don't know something about it. It's all good. I'm a fan of both of yours. I'm a fan. And if we are all thinking alike, then somebody isn't thinking right. Quoting General George Patton. If all bitcoiners are thinking alike, then somebody isn't thinking. So thank you for your input, Brad and everybody, I'm signing off. I'll listen to voltage. Thanks, guys. Don't worry. Normally I'm not aligned with the things that you say, but I think stacking is pretty dumb. I'm just going to take this one. That's for a back ended compliment. Brad. That change. Awesome. Well, I just followed Brad because. Nice. Alright, Brad, I just want to say we all love you, man. Let's keep ",timestamp:"01:23:39-01:30:26",topics:["Brad Mills","Stackchain is a shitcoin","what is a stackchain"],type:"twitter_space",weight:9.22888708114624},{boost:0,date:null,description:"Tone Vays gives his analysis about what is needed for a final Bitcoin capitulation and the return to a bull market",episode_title:"Café ₿: Bitcoin Lightning ⚡️ Q&A w/ Bobby & Paul From Voltage!",guests:[{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:" Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"560cf9ee-2844-4ced-bbfd-d0ec639b2177",twitter_handle:"CitizenBitcoin"},{name:" Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1307109108127019008/rPNj47yJ_400x400.jpg",ref_id:"4f4f53c7-5a3a-46df-b334-9951fe38dc96",twitter_handle:"realjeffreyross"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" q_liketheletter",profile_picture:"https://pbs.twimg.com/profile_images/1560683048680665088/4MrHM_UY_400x400.jpg",ref_id:"d82c0d30-d0d3-4947-a358-d28f1cd5292e",twitter_handle:"q_liketheletter"},{name:" iBobbyShell",profile_picture:"https://pbs.twimg.com/profile_images/1583132979571920896/1Std3_ya_400x400.jpg",ref_id:"2f9bd0a3-1215-4a89-9dc6-d64f170961af",twitter_handle:"iBobbyShell"},{name:" Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"ac43b4f0-9056-4a6b-9d30-4a6250405ade",twitter_handle:"ToneVays"},{name:" sonofsats",profile_picture:"https://pbs.twimg.com/profile_images/1593080311000211456/Dr_NQ9Iw_400x400.jpg",ref_id:"d584f070-a66a-4b53-b15a-8142f8daea66",twitter_handle:"sonofsats"},{name:" futurepaul",profile_picture:"https://pbs.twimg.com/profile_images/1508452962917666821/1QheRD09_400x400.jpg",ref_id:"fcb50ec8-2669-47da-87b9-1702affb30c9",twitter_handle:"futurepaul"},{name:" Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"a2ba4e1e-aab7-43b0-90d7-d3c6a9738ad0",twitter_handle:"FossGregfoss"},{name:" Brad Mills",profile_picture:"https://pbs.twimg.com/profile_images/1541955880752750592/XJqwIn2E_400x400.jpg",ref_id:"9a49201c-3b03-4a83-bcb8-d92dbf3d55b6",twitter_handle:"bradmillscan"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/0ad62f26-289d-4eba-af0b-0da68515cbb6/c5c6ea3d-df5a-464d-9b41-a6bf3a0372a9.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"332af4b9-782f-40e4-878c-45bb9d7edcdc",show_title:"Swan.com",text:"Yeah, for sure. Shout out to Tone Vays throwing you an invite to come up. Brady Swenson in the audience throwing you invites. Guys, Tone Vays had a well, there was an article regarding Tone Vays in a strategy session he did on YouTube talking about what we need to see before he's convinced we've got capitulation. We're moving up again. Hey, good morning. How's it going, Tom? Morning, guys. So would you mind just taking two minutes? And when I say two minutes, I'm serious about two minutes. Because sometimes you can go for like a 20 minutes rant. Alright, five minutes. You want to tell us what you're thinking in terms of what we need to see in prices, et cetera, what we need to hold before we know we're back into a bull market. There's a lot of speculation that we're hitting the bottom. There's a lot of market indicators popping up that people are saying mean at the bottom. I don't know if at the bottom. What do you think, Tom? Yes. I have to go and check the price of bitcoin real quick because it just woke up in time for spaces. Lucifer, back up to 16, I'll tell you. 16,370? Yeah. Well, we're back to 16 four after flirting with 1601 more time. So I am one of the view that if you get too many chances to buy the perfect low, it's not the low unless you get so many chances to buy the low that everyone gets bored and thinks bitcoin is never going up again. So at the moment we've had too many chances to buy the perfect low of 1600 or a little bit under. And that makes me so right now I am leaning towards the direction of one more capitulation. How long can it go? Hard to say. 1413, but it's the structure of the capitulation, right? 15 and a half, like we did a few weeks ago. And if we were already at $20,000, I would be full on full market right now. That's it. That was the low. Kind of like what happened with COLVID, but right now it feels more like 2015, where we crashed into the sub 200 low and then we spent like five months, six months flirting between 203 hundred, maybe got to 350. And then once again, like after January we crashed the below 200, and then again in August we crashed to below 200. So now it feels more like 2015 again, like we spent so much time at the low. And it wasn't even the low. So people A, got bored and then B, got hit with one more capitulation. So for me to call a bull market right now, I would need a clean, higher high, which means we go up to 21 22 $23,000 range, and then on the way back, don't go below 19 and reverse at 19 and start to push towards 21 22 again. So that's what it would take for me right now to consider a bull market or, you know, a quick drop to below 14 followed by a swift rebound back to 18. That would also get me super bullish. Got it. That was a great summary. So shout out to Jeff Ross in the audience throwing you an invite. If you want to come up and give us your five minutes on what's going on in the markets, you're welcome too. For those of us who are aggressively stacking this low or this correction, you're telling me that we still have a chance that this might last a little while longer? Yeah, it feels like it. But keep stacking because time wise, this can't last too much longer. I can't see this. I'm already a little bit like, wow, this thing lasted far too long. But I guess as late as March, there is no way we're going to be sitting at these lows with less than twelve months to go to the having. With everyone having their countdown in days when it's less than 365 on their wall, I just can't see it. I love it. Personally. I've been super aggressively stacking this entire time, and I know many others are. There's some new data out from Glass Node that says entities owning less than one bitcoin of collectively accumulated 1.5 billion so added 96,200 bitcoin to their holdings since the FTX collapsed, all time high balance increase. And then entities owning less than ten bitcoin have added over 3 billion worth in the last month. Yeah, those are my two favorite metrics. Wallets that have accumulated over one bitcoin has just crossed 950,000. Let's hope that's 1 million leading into before the having, right? Like in the next three months, by the end of Q one, I would love to see that metric break 1 million wallets that have stacked more than one bitcoin. And the other metric, well, double metric, how many bitcoins are entering the Lightning network and how many bitcoins are entering the liquid network? That one is super small because once bitcoin enters those networks, it doesn't really leave. There's no reason for it to leave. It's better there in both of those networks because it's there because it solves a problem. And that problem requires bitcoin liquidity to come off on shape. Not the solution. I should say not that problem. Yeah. But it's also a way to mark sort of network growth. So we talk about this thing called the Network of Fact where and Lawrence LaPard says that like one of the only things that would concern him is if the bitcoin network started getting weaker, meaning less users, less lightning growth, all that other kind of stuff. That's an interesting point, because as long as bitcoin keeps getting stronger, it's already the super dominant. It's the only proof of work network really worth talking about at this point. And that's exciting because that just means it's just getting stronger all the time, regardless of price. Jeff ",timestamp:"00:16:01-00:22:44",topics:["Tone Vays analysis","Bitcoin capitulation","Bitcoin bull market signals","Lightning and Liquid networks"],type:"twitter_space",weight:9.22888708114624},{boost:0,date:1637366400,description:"Nuclear Reactors are safe - salt cooled reactors with TRISO nuclear fuel particles",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"d1295013-33f3-431f-99a0-baa6d83500ad",show_title:"Compass Mining",text:"I think Eric said pretty much everything I had to add. I think apart from the safety case, I think it's a really heavy regulated industry which not a lot of people understand. You can't just make a reactor in your backyard and put it online. It doesn't happen that easily. Right. So there's a lot of regulatory compliance that goes into it. And especially if you work in the industry, you realize, which I had not a huge amount of appreciation for, which I've realized over the last four years that licensing of reactors not super easy now. So that's another drag on the industry which has been happening. But I mean, part of it is required because of just how the technology is. And like Eric was saying, it's like we pay the price for it. But apart from that, I feel like we just have to point out how cool nuclear technology really is. Like, if you are really serious about climate crisis and everything else that you see in the mainstream media and you're not pro nuclear, you're just kidding yourself because the energy mat just doesn't add up. So I feel like apart from validating the safety cases for the advanced reactors specially, which have really improved over the build up that we've seen over the 1970s, which were mostly pressurized like auto reactors. So a lot of the reactors that we are probably going to see over the next decade or so would be sold reactors which will have these trip particle fuels, which if you look at it, I think they're pretty much the most robust fuel on the planet today. So I would ask anyone to go Google tripod fuel and look up what they actually are and realize how cool that technology really is and how badly we need it. Because that small amount of particle which is the size of a golf ball, can produce power as much as a coal plant or natural plant can. So that's just really powerful, right? I mean, nuclear reactors are safe today. Like the build up that we're seeing, we'll probably see in the licensing that I've been part of the technologies out there. It's just a matter of building it. And I think it just depends on the economic incentives. If the incentives are right there, then people are going to go out there and build it. And the opportunity I was talking about is going to show up sometime over the next decade where a lot of these private companies which have been involved in the space for a while now. I kind of like relate this to the space race for these private companies, which was happening in the early 2000s, where companies like SpaceX and Blue Origin were just starting out and not a lot of people had heard about SpaceX for the first ten years, right? Like we just started hearing about when they start launching rockets, but they had a massive amount of failure going into those rocket launches. And I think it's similar with these private nuclear companies of today where they're slowly and privately building out these technology options for us. I think we'll start to hear more of those in the next five years or so and it's just going to happen. And I think the public sentiment will drive from that because people will soon realize that if you want to be serious about climate change, then you have to be on the side of nuclear. I think it's very similar to like even with Bitcoin, I feel like that's just the sentiment. I think there's just the economic incentives are going to be such that it'll just drive adoption naturally. I'm with you there, ",timestamp:"00:35:08-00:38:18",topics:["Nuclear Reactors Technology","TRISO Particle Nuclear Fuel"],type:"youtube",weight:9.170270925405587},{boost:0,date:null,description:"Relationship of Year-on-Year change of Bitcoin Hashrate, the Bitcoin Economy and The Energy Industry",episode_title:"Café ₿: #Bitcoin News & Trusted P2P Reviews w/ @Apollosats",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@FossGregfoss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"09913e9b-38dc-4465-9d4d-ae0c9ba9eeca",twitter_handle:"Fuckkkk"},{name:"@w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"b178b239-3b18-4a16-9d43-c5d15ba6f7f4",twitter_handle:"w_s_bitcoin"},{name:"@NeilJacobs",profile_picture:"https://pbs.twimg.com/profile_images/1599432572727169025/NSoPdchB_400x400.jpg",ref_id:"4b6997e1-ce0b-4a1d-90e7-dbaccef4b783",twitter_handle:"NeilJacobs"},{name:"@brandon_gentile",profile_picture:"https://pbs.twimg.com/profile_images/1561369452284895236/-8WgdwEm_400x400.jpg",ref_id:"f940c5e8-4808-4197-a38f-3f19d311a7ad",twitter_handle:"brandon_gentile"},{name:"@apollosats",profile_picture:"https://pbs.twimg.com/profile_images/1576946734927794176/2ail9FoU_400x400.jpg",ref_id:"74f4280f-5fdb-4bbc-aee2-a2ed32d64372",twitter_handle:"apollosats"},{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7cf57bdb-c905-46e3-a7e5-4c0bfd4f8d04/71c08fae-cce8-4600-ab9e-758420e78dcf.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"2b1c8514-7d10-4e83-9006-9974ec31d35a",show_title:"Swan.com",text:"I appreciate it. I wasn't going to do, like, anti who's holding bitcoin rant and who's mining bitcoin rant? Whenever we could ask that question. I wanted to look at these kind of hash rate numbers year over year and just going back to late 2018, and this isn't like exact science. I just basically picked the first dates that I could find in January for that year. So just take it with a grain of salt. But January 8, in 2018, hash rate was around 16 X A hash. January 9, wow. 2019, it was floating around 45 X A hash, which was like 181% increase. I believe January 20 was around 100 X A hash, which would have been like 122% increase over the previous year of 45. And then January 21 was 150 x a hash about which was, you know, about a 50% increase. So where are we going to be in January 2020? Oh, I guess that was 2021. January 2022, I didn't get that one, so I'm missing that one. But January 2023, you know, I don't know where we're going to be for there, but I mean, right now, today, it's 260. The problem is they're not making money, right? So there's an overhashing, arguably, miners bought a lot of rigs last year. They were overfunded, and they thought number would go up, and now they're hashing like, there's no tomorrow and selling every bitcoin. They mine pretty much immediately because they're losing money left and right in the bear market. So you could easily see rigs going offline soon and the hash rate coming down to match the price better. So here's the interesting thing, because I agree with you. I did just go grab January 2022, and it looked like that it was floating around basically, like 175, 190 x A hash. If the year before was like 150, it's like even less as far as is like, the increase. You're going from like 181% to 120% down to 50, and then like, a little bit less. But now it's like up to 260. So I know it's like a lot of numbers. If you're not looking at it, like, I am right here to kind of hear it I hope I'm relaying it correctly for everyone to understand. I feel like we already had a massive correction in the amount of X A hash, and now it feels like it's going back up. Well, exactly. And if you pull this up over like this same time frame, like go back to like I just pulled it up to like 2016 now, and I can see all this hash rate. And you can see it like goes from like this little line there's like this kind of upward, you know, trajectory. And then right around May 2021, you know, of course there was like a big drop. Like it it gets, you know, June, July, July it drops. June, it drops way down to like 87 from and this was in 2021, so May 2021, it had been cranking along. It was like 179 X A hash doing great. Then all of a sudden it dropped huge, down 87 X A hash per second. And then from there you can see it's almost like a bunch of miners turned off. And then here goes a bunch of new ones. Bump bump, bum bum bum bum, boom boom boom. And it goes all the way up. And here we are, 260 something. Yes, I show this article, I've been showing it a lot recently on this show, and I know a lot of you still haven't fucking read it, so I put it up in the nest for those who still haven't checked it out, because it is really fucking interesting. And it's exactly what we talk about every single time we talk about this. It's this bitcoin energy gravity idea that Joe Burnett came up with. But it's a really simple and beautiful idea. It's this idea that when bitcoin is flying high and the prices is surging, it becomes very profitable to mine. So new investors, instead of just aping into bitcoin, what they do instead is they ape into mine. Charts are bullshit. I'm sorry. Because you can't tell what's going on right now when bitcoin dropped from 69 to ten because they're using this log ten bullshit scale. Like, I like the chart idea. It's just that execution is atrocious because they should just show what happens when you go from linearly, what happens when you go from 69 to 17 in terms because I can't tell because it's all gobbled up by this bullshit. Learn how to read log charts and then get back to me. But anyways, what I was saying is like, no, it's bullshit. Log chart. This is exactly what can be used. It's exactly what plan B used to fool everybody into bullshit. I'm sorry, it's bullshit. Get a better chart. The plan B thing is a completely different problem. But yeah, no, all this is saying this is saying something that's fundamental to bitcoin. And honestly, I don't think you can argue against it because this is what happens with capital in the bitcoin ecosystem. At least now that it's been fully capitalized is like when the price is flying high and it's cheaper to mine a bitcoin than to buy it outright, then what you get is you get investment in miners, and that naturally stifles aping into bitcoin. It naturally stifles investment in actual just buying bitcoin spot. And so then you get half rate increase, and then once the price starts falling and it gets to a certain point and it actually becomes more expensive to mine than to buy spot bitcoin, then that flips. And then instead of investing in miners or keeping miners on, you just start buying spot. So it's this dance that goes back and forth. And that's why he's called this bitcoin energy gravity, because it's basically when the price flies too quickly up too high, then there's this natural gravity that brings it back down, which is the flip from investing in spot into cash rate instead, because it becomes cheaper just to set up miners and mine bitcoin than to buy the spot itself. Right? If it costs five grand to mine a bitcoin, you're not going to buy bitcoin. You're going to buy miners and mine in bitcoin for five grand to pop. You know what I'm saying? But if all of a sudden it costs 20 grand to mine a bitcoin and you're not going to invest in miners anymore, you're going to just buy the spot bitcoin instead if you want to invest in bitcoin. So that's kind of like that's the natural back and forth that we see playing out over and over again. So one thing that I think could get us to a peda hash very quickly is if we do get this next run in price, that's like crazy, right? And this is not concerning retail. Retail, they all buy bitcoin spot. This is concerning more like institutional grade investment, which we've been seeing a lot going into mining this past cycle. But I think this will kind of continue this back and forth dynamic between supporting further hash rate and then just buying spot bitcoin. All it comes down to is, what's the cheapest way we can get bitcoin? That's really it. Yeah, I agree with that. It's good evidence for what I think people know from first principles. You have a volatile asset. So when the price goes up and it's cheaper to mine bitcoin instead of buying it, people are going to buy bitcoin. And then because it's volatile and because there's a lot of opium, they're going to overbuy and over invest, and then bitcoin will crash at some point because it's so volatile. And then you're going to overhash and miners will go bankrupt, and then the hash rate comes back down and then go back up. But, yeah, it's good evidence for that. He could have explained it in plain English the way you just did, by the way. I don't know why I'm a big fan of plain English bullshit terms. Doesn't he explain it in the article? Did you click into the article? Are you just reading the tweet? No, I'm just saying, like energy, gravity. BS. He could just say like, when the price goes up, you have overhauling and people over invest when the price goes down. You don't need these kind of terms necessarily. There's a certain segment of the population who's not interested in these things unless it has new terminology because they feel like they're smarter, because they're reading new words. That's true. Fair enough. It's marketing. And gravity is one of these fundamental things that everyone feels like is such an important thing in the universe. And it is. We wouldn't be here without gravity. So, I mean, why not name this? See the meaning, man. It always comes back to the same shit. All these different areas. Terminology, analogies are great because they make it easy for people to understand. But at the end of the day, to me, all I know is these motherfuckers will never stop printing. Ever. They've done it my whole life. I came up with a new term recently. So instead of looking at bitcoin year over year growth, I think we should now start looking at it. Epoch over epoch growth. EOE. There is a tweet from bitcoin magazine. It's a billboard in Kansas City. So there's this huge billboard. It's got a US dollar bill on it that says BTC in the middle. It's really funny, but it says, $1 from 2010 will buy you forty two cents of goods today. Do you know why? I think it's fantastic. Human race needs to wake the fuck up. I don't know who's next. Foster tomer. I've spoken already. Let Greg go. Well, good morning, guys. Greg. I'm doing well, guys. Nice conversation. Can I just interesting conversation. Remember, there are a ton of equity investors who cannot buy spot bitcoin. So they buy bitcoin miners as a proxy for bitcoin spot exposure. So in a perfect world with efficient markets, your argument would make 100% sense. But in the absence of equity buyers who cannot buy bitcoin spot and buy bitcoin for miners for what's called beta exposure, that's why the price of bitcoin miners went up into unrealistic levels on a valuation basis relative to the price of spot bitcoin. Okay? So then think of when investors have unit price bias. Mom and pop retail, oh, I can buy a stock of a bitcoin miner at $4 a share rather than buying bitcoin for 40,000. They don't understand that you can't buy a partial bitcoin. They just have unit price bias. So there's that coming into the equation. And then remember, bitcoin mining is a shit business. Okay? Describe to me any other business where you don't control your energy input costs and you don't control your output revenue. Both are set by markets outside of your control. So you want to be a publicly traded bitcoin miner. That's a shit business. Okay? So any bitcoin miner that does not control the cost of their energy is not a great business. And then back to Alex's comment. You're totally right. You can't stop printing. Why? Because it's pure mathematics. The debt spiral is funded by printing more fiat. Fiat is the error term in the debt spiral. So don't overthink things, but try and explain supply and demand where you have a $350,000,000,000 asset, where the Bitcoin publicly traded bitcoin miners at the top of their market cap at the top of their market caps weren't even measured more than $50 billion. Remember that. I'm curious. Like, got to see your hand. But, Greg, I want to ask you a question. I asked this question, I think, to Tone or somebody else the other day, but okay, for these people who cannot buy Bitcoin, the actual layer, one base layer asset, they have to buy a derivative or a security. Do you think MicroStrategy is a better proxy for bitcoin than any other securitized bitcoin product? So, having spent a dinner with Michael Sailor in La and having owned his MicroStrategy at times over common stock, at times over the past, I believe MicroStrategy today is an exceptional buy. Why? Not because of their bitcoin holdings, but because of Mr. Sailor's vision and where lightning and payment rails are going. But I can't talk too much out of school about that. I will just tell you. The capital structure of MicroStrategy is so hedged and wedged with capital structure arbitrage players convert ARB players, to be exact, where they bought almost zero coupon bonds. Some of them had a nominal coupon on them in order to play the optionality of the MicroStrategy stock, because that's all convert ARB desks do, is get optionality out of a convertible ARB excuse me, a convertible bond and play the ball game and play put Call parody on options markets using a convertible bond. That's what they did there. So that capital structure is a little Bit. It's extremely levered to the convert ARB equity desks and convert ARB desks on Wall Street at a price of under $200. I did the math recently. Yes, I did buy some MicroStrategy stock after having the pleasure of sitting down with the CEO face to face. But I don't own it because it owns Bitcoin. I own it because of a vision of a CEO who I really like. Okay, I'm not going to tell other people how to buy Bitcoin, but I'll just tell you if you're buying Bitcoin using other derivatives rather than buying spot Bitcoin, go and get your fucking investment policy guidelines changed, please. So that you can actually invest efficiently on behalf of your unitholders, rather than with one hand tied behind your back because you're too fancy to buy spot bitcoin, but you're going to buy all these other derivatives that's absolutely atrocious risk management. Oh, guess what? That reflects probably 90% of the pension funds and money managers in America and Canada. You know what? Let's apply Kui bono to that, though. Why are those entities precluded from buying underlying assets? You might ask yourself that question. Because the market is so manipulated. Alex, that's not what I think. I mean, Greg can probably back. No, it's more it takes time, gentlemen and ladies. It takes time to change an investment policy. Why are those policies like that in the first place? Greg, I'll tell you why. Because they are staffed by people that are septogenarians. Like, I know Warren and Charlie Munger aren't septogenarians, they're octogenarians and whatever 90 year old people are. But at the end of the day, they're fucking they're from past times, right? They're trying to COVID their ass. They're all invested in bank stocks and everything that bitcoin is going to disintermediate. So God forbid they should buy the spot. But yeah, we'll buy these Bitcoin buyers. Do you think it has anything to do, anything at all to do with the fact that Wall Street can't make a profit if pension fund is buying an underlying asset versus a Securitized product? Yeah, 100%. Yeah, that's not a bad thing. Greg, have you also in the past talked about how these funds are dumping grounds for crappy wall? That was Max Kaiser. Max Kaiser went on Tucker and completely explained how all that works. That was my true. Yeah. Now don't forget, look, there are structured products that make sense. There are all sorts of things that when you get the alchemist, when I say alchemists, these are the structured product derivatives guys that turn a single B structure into AAA structure like they did on The Big Short and that's bullshit. But there are actually a lot of good structured products that make things more efficient for a large fund. Now, I'm talking a large fund that cannot buy. Remember, if you're a really large fund and you have to own at least 1% of your fund in something in order to justify allocating an analyst time to that particular investment, if you're a trillion dollar fund, 1% of a trillion dollars restricts you to basically large cap everything. Which means you'll never be able to get into small cap anything unless you can do it through a structured product. So understand that there's different ways of skinning that fish, but it's the difference between big money and mom and pop retail money, okay? And you can't apply a blanket solution to everything and then I just want to start by or end by saying this, look, log scale is log scale. Don't confuse it for what it is, but don't say that people are trying to terence, this is not a shout out or a shot at you. It's just saying as long as people understand they're looking at a log scale, they shouldn't call it. It's just a part of mathematics. And log scales mean a ton to the mathematicians. They may not mean a ton to the mom and pop retail crowd. So just, guys, if you break everything down to first principles, mathematics. You break things down into what's a good business and a bad business. I don't know if I'd want to be a bitcoin miner where you have no control over your business, but then you were able to sell stock to the public at an inflated price and feel good about yourself. Look at Argo Blockchain right now. They are living the nightmare of taking capital at the wrong price and deploying it wrongly. And, yes, you're right. There's a lot of hash that will come off of the system. Why? Guys are running rigs because they're trying to generate cash flow. It doesn't mean they're trying to generate a profit. They're trying to generate cash flow. There's a big difference. People understand that difference. Yeah, the thing you said about any business where you can't control your input costs or your price of sale, I had not heard it put quite that way before, but that makes a lot of damn sense. I was like, oh, damn. Yeah, you're kind of right. Which leads me to the next thing. Those businesses might only make sense if they're actually power producers. Amen, brother. Amen. And that's where the world's going. When you see Duke Energy mining bitcoin and stabilizing the grid, you'll understand that bitcoin and its beauty have arrived in capitalist America right now. It was just a precursor and a fucking horror film because it was sold to unsophisticated investors at the wrong price by people that were CEOs of mining companies because they did it in their parents basement. Very simple. Yeah. So when you see announcements like ExxonMobil rolling out this flared gas project where they believe it's going to reduce their greenhouse gas emissions by, like, 63%, they're rolling it out across four countries where they're taking this flared gas. My understanding is they're not actually giving a crap about the bitcoin, just trying to reduce emissions so it looks good on their books. Alexand, respectfully, that's not the energy producers we're thinking about here. We're thinking about the electricity distributors. We're thinking about Shameless promotion of a business I'm involved in. We own peaker plants that are on call. They are not running 95% of the time, but we have capital costs. Don't you think it would be wise for us to figure out how to explain this concept? I've heard the word before, but I'm not sure I understand what it means. It's a peaker plant. Okay. The grid is inherently unstable because the grid and the demand for electricity fluctuates during the day. Right? The biggest electricity draw on a grid is when people get home from work and they turn on their stoves. Electric stoves. They turn up their heat. Electric heat. They turn on their hair dryers because they're going out at night. Anyway, the point is, the grid is set up for maximum demand. But there's not always maximum demand going on in the grid. But it's an ancient technology that needs you to be able to supply that power so that the grid does not black out when everybody goes to maximum demand. So in a given day, if you have 100 megawatt demand or peak demand, 100 megawatt, I'm talking about a micro grid here that's set up for the 06:00 P.m. Draw versus during the day, the true demand from the grid might be half of that, meaning 50 MW. So you have power producers that are primed to provide 100 MW, but only 50 MW is being used during the day or in the middle of the night. So what are you supposed to do with that? You're probably supposed to mine bitcoin to defray your capital costs of building these plants. Now, I talked about a peaker plant. This is a plant that is on call so that when you have a draw because of really exceptionally cold weather or really hot weather in the summertime when everyone's turning on their air conditioners and you have rolling blackouts, that's when the peaker plants come on. But a regular utility is always load balancing during the day just because that's the draw on the grid. So you'll have the Duke energies of the world that are baseload providers, not peakers baseload providers that are going to be mining energy because it helps to stabilize their grid. Why? Because you want demand for when your turbines are turning and no one has demand for it. Well, in Canada, we pay Americans to take that electricity from us. We don't sell it to them cheaply. Alex. We pay you lucky people to take our electricity. How messed up is that versus us mining bitcoin with that excess power capacity, and that is a fact. One of our nuclear generators sells not cells, gives power to the northern peninsula in Michigan, and doesn't just give it to them, we pay them money to take it as well. Well, if that's a good business model, you've rewritten fucking capitalism. Okay? So start mining bitcoin Canada, and get your fucking asses and gear. ",timestamp:"00:35:14-00:58:57",topics:["Bitcoin Hashrate","Bitcoin Economy","Energy Industry"],type:"twitter_space",weight:9.1248779296875},{boost:0,date:null,description:"Discussion on how much information investors and promotors knew about how BlockFi (and others) business's worked",episode_title:"TOXIC HAPPY HOUR! #Bitcoin is Easy Like Sunday Morning! 🍻😂",guests:[{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:" TC",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"dac0717a-a743-40d4-a89f-7523f071bbb0",twitter_handle:"publordhodl"},{name:" kann b",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"1170bde7-7f3c-4c4f-a158-5c48a98fe92b",twitter_handle:"publordhodl"},{name:" Dallas Rushing",profile_picture:"https://pbs.twimg.com/profile_images/1602759767029604352/hzuwh5ZB_400x400.jpg",ref_id:"13fed037-77ce-48eb-9544-25e7abff9395",twitter_handle:"dallasirushing"},{name:" Lisa Hough",profile_picture:"https://pbs.twimg.com/profile_images/1541581547815436288/Li8wORWt_400x400.jpg",ref_id:"5e154adf-d8bd-4adf-a23b-47a51c183163",twitter_handle:"lisa_hough_"},{name:" Collectooor of sats",profile_picture:"https://pbs.twimg.com/profile_images/1594362077132587009/cNAE2FU5_400x400.jpg",ref_id:"c84d0e47-7eeb-419b-a36e-5055b96044f0",twitter_handle:"hoardingsats"},{name:" Gold Leader",profile_picture:"https://pbs.twimg.com/profile_images/1594152783011250176/lHMHv3gB_400x400.jpg",ref_id:"96c4f802-25ff-4a81-b91f-cae5562bf4a3",twitter_handle:"GoldLeader89"}],hosts:[{name:"Publordhodl",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5e189a7b-56c3-40ae-834e-4e2ccee3a9ad",twitter_handle:"Publordhodl"},{name:" Anders_",profile_picture:"https://pbs.twimg.com/profile_images/1391477993726529545/xqIjHq5w_400x400.jpg",ref_id:"15bdd6b9-bdfd-492d-b7bf-c5a56ecadc50",twitter_handle:"Anders_"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/4e00853b-49e3-4b46-bd13-bf7f2aa25905/56f0089c-a7f2-4b1b-8576-a3e4ddb9791f.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"c9e43dce-1fac-4545-be91-7aa8594fa7e6",show_title:"PUBLORD",text:"you're good. I was just going to ask DC or Gold I'm definitely familiar with I would take a decent amount of the details with a lot of these centralized earn yield type of products that all blew up. Do you guys know? Two questions would be one, do you think that investors like Pump or you Scope had full access to know all that they were doing to generate yield on those funds? And if that already has come out definitively, then cool. I just haven't been following that super close and because like I mean with them being a US company, like I figured there'd be access into like seeing exactly what they're doing to earn yield on that even by like investors. Maybe not like super tiny investors, but like if you're there from like if you're a seed guy, like you probably have access to know what they were doing to generate all that yield. Is that can you guys confirm if that was the case? Yeah, I'll take this one. Started proof of keys. Not your keys, not your coin. Listen, here's the problem. Even if McCormick would have said to block by, hey listen, I'm not sure what are you guys doing here? I'd like to have you as a sponsor. Thank you for whatever amount of money you're doing or anyone else that promotes it. Here's what goes on man, for proof of reserves. And it reminds me from the movie The Big Short, all right, if you remember, they go down to the rating agencies saying, what the hell is going on here? What is going on with these bonds? These bonds, you know, are just full of dog shit wrapped in cat shit and then layered with some more dog shit. How are they getting these ratings? And they finally get the lead to admit, listen, if we don't give them the rating. They'll just go down the street to Moody's and get the rating they want. This is exactly the same thing. So we can beat these guys up. Okay? But at the end of the day, there's always going to be another grip, another angle. It's going to be someone else that, oh, yeah, let's start a company. Proof of reserves. All right? We'll get proofofreserves.com, and we'll get all these companies to write us checks. And then when they go out and they want to be sponsored by someone, that person is going to call us, hey, you guys are proofofreserves.com. Does BlockFi have all this stuff? Oh, yeah, man. Yeah. So we're cashing checks from BlockFi and it's proof of reserves.com. We're making a mint until the ponzi blows up. It always blows up. James Ma'am real quick, if I could. Just add one thing on that. I think the question, too, is like, that people should ask is, you're like, okay, this exchange is offering me 6% yield on Bitcoin. You're like, well, where exactly is that yield coming from? Who's paying 6% to borrow Bitcoin? And why would somebody do that? And one of the reasons is that people will borrow Bitcoin to short it, and they'll pay a yield for that. But that 6% is still pretty rich. But I think what a lot of these companies were doing was basically like, for a Bit, you could earn 20% on UST. And so there were companies were probably taking dollar loans against an asset like Bitcoin, and maybe they're paying whatever, 8%, even 10% to borrow those dollars and then trying to go earn 20 over on Terra and then make that gap between the two. And they could pay that out as a yield into Bitcoin. But either way, the problem is, like, all of this sort of set on each other, and a lot of them start to go well, each competitor starts to move it further out on the risk curve, and they're like, well, they're doing it. Maybe we can inch a little bit more, a little bit more. And then by the time a couple of months goes by, everybody looks up and everybody is just, like, waist deep and fucking risk and systemic potential bulbs and stuff. And then there's no way to really unwind that correctly without there being shortfalls and you can't liquidate everything in time. So it's unfortunate that, like, a lot of them felt the need to take on more risk to stay competitive, which ultimately is probably the reason why all of the above kind of blew up. Yeah. James go ahead, man. Let's see your hand up. Hey, good morning, guys. Morning, Dallas. Puppy. Yeah, I just wanted to weigh in on some of the comments regarding I mean, there's a lot that's been said, so I'm going to try and synthesize my thoughts. I'll just start with the Exchange avenue because that's obviously who I work for. There is a palpable kind of steering via the capital stack of the ideas and execution of some of these exchanges. Meaning, like, if you're going to continue to ship coin, your cap table may have some influence on that, which is a real problem. So I just wanted to acknowledge the fact that Lisa, who was just in here, and myself, there are a layer of toxic, extremely, extremely toxic individuals who are working within these what we'll call third generation exchanges that are going to come out of this shitstorm and are extremely adamant about, obviously, for pledge to hold your own keys, but also to provide a level of we'll call it proper fiduciary custody, like a traditional bank does, being bitcoin only for institutionals. So I understand that you should never leave your keys on an exchange, but we're also preparing for governance models where they're not allowed to hold their own keys. So there's a really deep balance and I think that what you're hitting on pubby is important because you can only protect yourself so much reputationally wise in this space. Like TC and Gold said earlier, you should be fucking Ostracized. Like, you really need to understand this is not about this other bullshit, it's about Bitcoin. And there's a huge segment of the market that's going to get captured by an exchange, especially a US regulated exchange, that acts like a real fiduciary for the first time in this space. And they do have proof of reserves and they'll most likely be audited either after IPO or they will give out some kind of information to show their liabilities as well. So it's a complete transition. The fraud and the corruption in this space has just shown everything is getting whittled down and we see it on a regular basis and it's just very exciting to kind of help push that extreme toxicity on some pretty high levels of capital inflow into the space. You made some excellent points there and one I want to highlight was anyone that came in, which is, I know the majority of us, you heard about this thing called Mount Cocks, Mount Cox blowing up. Everybody came in in 2017. You start hearing this thing about not your keys, not your coin. Well, guess what, man, that was being preached. But honestly, aside from a couple of small exchanges, it never really sunk in with many people, all right? Until this year. Until this year, when you started seeing everything unwind, from Luna and Celsius and Voyager, now FTX and Blockbuster, now you're seeing it unwind and you understand what that means. Not your keys, not your coin. And this isn't to say, look, if you're new, yes, practically, you need an exchange to buy your bitcoin. For many people, however, anything else, you're going to do all right with your bitcoin, you can leave it there, not a problem. You just better understand the risk. Here's the assumption you're making that one, they bought the bitcoin. They say they did all right, because it's easily just a number on a balance sheet. That's a good feeling. You log into your account and you see that whole coin you bought. That's great. Your assumption is that they have it. Okay? That's your assumption. And two, that they're going to stay solvent. They're going to stay solvent. It's not going to go away. This is the wild rest, man. And there's a reason, all right? The government obviously is fearful, fearful of an asset class that is decentralized, censorship resistant. Anything they can do that will allow anything conflated with the wild west. They don't care. The more people that lose their money, the more people that lose their money is better for them. Most people are going to find bitcoin or people that are going to stay away from it for the longer time. But I think you have some great points here, man. Yeah, I appreciate it. I just want to make one more quick comment. There are varying. Like, we've sat down on regular basis and formed products and offerings for clients that can help alleviate some of the initial transition. Right. We don't want to hold any of your keys. We don't want to hold any of it. It's a risk to us. We get a withdrawal fee on the way out. We're good with that, man. Have a nice day. Here's your keys. But we do have some smaller options. Like, for example, we can give someone an address on the blockchain to see their funds and literally have them. It's kind of like our pleb level, easy access to verify exactly what's there. But I get it. At the end of the day, the private key is the asset itself. So there's a level of extreme balance between acting as a fiduciary, like a bank, which we're happy to have that bank underneath to provide that further security for people coming in, not having to seek yield from other parts of the business like the exchange, because you have a bank underneath. But it's definitely a really intense issue that's going on right now in particularly, and I'm narrowing this to the we'll call it the institutionalization or the financial end of bitcoin. And obviously we're really excited to help miners out and help all the parts of the bitcoin space. And I couldn't be more happy to be in a community of guys like yourself. Pubby, TC, Dallas, everyone, where this isn't a fucking joke. This is truly something important and I'm ready to lose my job every day going in and speaking the truth. Yeah, here's the hard part, man. You just want to have faith in something. If I could just find faith with one institution in this quote unquote industry. I hate using that term, my God. But like you say, man, we got to slow our heroes. Every month it's another company disappointing us. It's another person that you thought was bitcoin only that is rug pulling shit coining. Whatever. That's the disheartening thing. Dear God, why can't there just be an honest damn company? And you're right. Look, I get it. There's got to be a company that can offer some sort of on exchange solution for clients. Well, you know, develop a company where it's an easy multi safe for someone to handle. I don't know. I don't have all those answers. Until then, I'll just always say my assumption is if I have in self custody, it's not mine. It's zero, it's nothing. It's gone into somebody's pocket. It sucks that we have to be like that, because I know then you get, oh, my God, they're so toxic. Well, guess what? We've seen so many people they're targeting. You get people come in, they came into Celsius, they came into Luna, and they're in the space. Oh, my God. Bitcoin is at what, 20, 30, 40,000, whatever it was at that time, they came in, well, I missed a boat. I got to find this next bitcoin. That's a nickel, because that's my ticket out of here. The system is broken outside. My 401K sucks, so I'm going all in on this thing. That's a nickel. It's going to be $30 next year, and I'll be saved. It's a battle that we love to fight, man. It gives me purpose. Gives me a great purpose in life, is to help people understand what both systems are like, but it's disheartening the number of people that are coming into a space that has genuine intentions to help people and just rug pulling them as well. That's all I have to say ",timestamp:"00:55:59-01:08:18",topics:["yield generating products","investor disclosures","influencer marketing"],type:"twitter_space",weight:8.947233200073242},{boost:0,date:null,description:"Current bitcoin mining energy situation in Kenya",episode_title:"#Bitcoin Kenya 🇰🇪 - meet the Kenya Bitcoin community",guests:[{name:"Noelyne Sumba",profile_picture:"https://pbs.twimg.com/profile_images/1585949523901292545/tWf-IwWO_400x400.jpg",ref_id:"44455b1d-76cf-49df-baa0-cd606652885b",twitter_handle:"noelynesumba"},{name:"Okjodom",profile_picture:"https://pbs.twimg.com/profile_images/1577811376487088128/J2Z4nIgI_400x400.jpg",ref_id:"4c9df92d-3bb5-4d08-9a7e-a9ba15f58f03",twitter_handle:"okjodom"},{name:"Master Guantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"64c326c4-d4a9-4e6c-82fe-0c9bac8a7094",twitter_handle:"MasterGuantai"},{name:"Lorraine Marcel",profile_picture:"https://pbs.twimg.com/profile_images/2361719231/German_sheperd_Puppies_400x400.jpg",ref_id:"ab30679d-7931-4921-a4f8-6fee74e412c8",twitter_handle:"lorrainemarcel1"}],hosts:[{name:"Mary Imasuen",profile_picture:"https://pbs.twimg.com/profile_images/1465290507752558596/lZVbU9np_400x400.jpg",ref_id:"2d8ed8ce-5112-4dfa-9aa2-5fa8b874af68",twitter_handle:"mary_imasuen"},{name:"Lukas Poland",profile_picture:"https://pbs.twimg.com/profile_images/1382603302160932865/RgeQnCXM_400x400.jpg",ref_id:"217a2c5a-1cfd-4840-bbff-eec43da8c52f",twitter_handle:"duczko"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/56bbafde-60ef-4e4b-b930-978429c6a635.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/9f2ebf6e-a880-4579-986c-ff0c9c517559/2cb59251-775d-4691-9c8f-30fb9d7707b9.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"3dff5b59-31e0-4ce9-8add-c8a2ba564259",show_title:"Global Bitcoin Fest",text:"so much for sharing. That sounds like a lot going on. How many people do you usually get to those meetups? Okay, so we have we it changes from 30 to 50. 30 to 50 people. Whoa, that's a lot. But part of it at our class, like the class and then the others are newbies and then we have the speakers and of course just anybody else in the bitcoin community. Okay, do you get swamped with bitcoin or so you manage to. Yeah, they come. But here's the thing, I am not that kind of a person who blocks people from getting to these meetings because at the end of the day, I want them to see why bitcoin and not shit coin. So I don't like tend to block people from coming to our meetups as long as you understand this is about bitcoin and not sheetcoin. So I find it important for them to learn and understand why we are advocating for bitcoin and not the sheet coins that they are probably participating in. And I have students, I can tell you for a fact, I've had students who are actually participating in shit coins. And they come, they listen, they learn, and they're like, okay, I'm just going to drop these and focus on bitcoin. So, yeah, so that's my approach. That's the female approach. Awesome. I guess most of us have been there, at least for sure. I was the shit corner, and I think that's the past many of us walk through. So I feel sympathy for the people in the shitcoin game. As long as they're not the main shillers, I feel sympathy. Exactly. So, Gridless, I'd like to hear a little bit about what you guys are doing with mining. And yes, could you share a little bit about that? Yes. So what we do is we find mini grid developers who are in rural communities who have overbuilt their mini grid capacity. So they have for instance, I'll just talk real numbers. There's a site in Morgana about two and a half hours outside of Nairobi that has a 50 kilowatt mini grid that was built a couple of years ago. The community only needs 30. It during the day, and then at night, between six and 10:00 p.m., the usage goes up another 10. So what that means is throughout 20 hours of the day, there's 20 kw available for use. And it's not being used, it's just being dissipated as heat. And that means that the developer, the mini grid developer isn't getting the full amount of revenue that they could get. And during those other 4 hours between six and ten, there's still 10 kw that are not being used. So what we did is we went, we walked in and we did a deal with them to buy that extra capacity as a buyer of last resort. It's just stranded electricity. And then what we do is we put in six minors in that case, because each of them takes about just over 3 kw. So we put six miners in that location on site and just started mining. The effects of that are pretty interesting in that, first of all, the sustainability of the business for that mini grid developer increases. It means they have full usage all the time. We can curtail our energy use within minutes and we can do it remotely. So it's automated even. And the plan is that we can continue to grow with other mini grids like this. So some of them will be small, 50 kw, like where we are. Others will be larger. 500 kw is the next site that's actually, we're about a third of the way built out with miners on it this week. And it might get even larger than that at some point. But really we focus on these smaller mini grids that don't have any grid connection back to the main national grid. And so it really helps strengthen them as a business. Sometimes I can't promise this at all, always happen, but at least in this case it has. Because they're getting the returns from us and being able to utilize their energy at full capacity, they can lower the cost of the energy for the people in the community. So in this case it dropped from about 1000 shillings per month per family, so household group to around 400 shillings per month. And so it's a sizable decrease in costs for a rural household. And it means that they can go from just first when families get this, they put on Led lights and then the second thing they do is make sure they can charge their phones. And then after that, if they still have some extra disposable income, they might look at buying a television or refrigerator or something like that. But what they can do is slowly, over time, this usually takes five to ten years. That community increases the amount of power they need. And with our set up and the way we've done, our business relationship with the mini grid provider is that we can just decrease the number of miners that are on site and move into a new location. So the community always comes first for power. That community means both households and local businesses. And then we come third. And then if the community and businesses increase, then we decrease. Is that clear? Does that make sense to everybody? Yeah. This sounds like the perfect model to showcase for all the bitcoin haters and energy use. Haters basically empowering local communities through bitcoin mining. What's the model? Do you buy the energy from them? That's right. We go ahead and structure a deal with the mini grid provider. So obviously we get a wholesale rate because we're coming in and buying the stranded electricity that nobody else can buy. But it is still significant enough because we're utilizing that excess energy 24/7, that it makes a significant impact on their business. Who is we? This is what we as gridless. So I should make sure everybody understands this too, that with hydro and possibly geothermal, but we're not doing that yet, that's 24/7. So it's very efficient power. As we look at the models for mining, however, if we look at solar and wind, it has a lot more variability in that the sun doesn't shine at night and the wind doesn't always blow and we can't just go put storage, battery storage in place for those dead times because that increases the expense significantly to install. So mining in those locations is a little different. You can still do it, but your return on investment goes from, you know, twelve to 15 months to maybe three years and and so you have to think a lot more you know, you have to think a lot more creatively about how you solve for solar and wind, but hydro and geothermal are particularly good for this. And how large is the market? How many minute grids are there in Kenya would you estimate that need this service? Yeah, so our estimate in East Africa, most of this Kenya, is there's about 200 stranded energy, renewable energy. Now, not all of that is going to be super useful because some of it's solar and wind. But even within the hydro mini grid space, there's a significant amount. So one of the things we did, we announced at the Africa Bitcoin Conference this last week was the Green Africa Mining Alliance. You can find out about it by going to just Gamma Africa or on Twitter. It's gamma underscore Africa. And the reason we did that is because there is a few other miners in Africa doing either on a small, very small kind of grassroots scale, like Carbon Coin is doing in Nigeria, or larger, like we see with Sebastian and his crew doing it called Big Block Data Center in the Congo. So there are a couple of people doing it in different stages, and we need more of it. Even as Grid list, we can never do all the mini grids that need this, even in East Africa, much less the rest of Africa. So Gamma is really about trying to get more people mining across Africa and creating a place that they can go to understand it, find help, be connected with good mining resources, including the people who sell it so they don't get scammed on buying the actual miners and then understanding what models work. What I'd like to see as well with Gamma is that we provide a body of knowledge and data, real information from the mining sites that can be helpful for policy and regulatory bodies as they start to make the rules around this across the continent so that they're at least coming from a position of information, of knowledge, not of ignorance. So, yes, what I'd like to do in the future is create a way that people can get real information and start their own mining. That's super awesome. Angola seems to have a fairly thriving mining community. Maybe I don't know if you're in contact with them in orland okay, yeah. Thank you. So I'd like to highlight I got to meet Eric in Ghana. Eric, thank you for the Tshirt. I really loved it. So if anyone saw the video that's the Gamma Tshirt Eric is talking about and maybe I'd just like to highlight the importance of what I saw Griddless is doing in Kenya. And so just recently there was news that came out that our solar electricity distributor is about to start billing people, that is, electricity consumers in dollars, Euros, and other foreign currencies. So this is because of the Depreciating Shilling. And of course, it's a bitching shortage of forex in the domestic market. So with this, we have companies like Gridless giving us a solution for cheap energy. And I think it's going to be a game changer for Kenya. For example, just today, I did not have power for a few hours before this space started. And I was worried, I was like, come on, what's happening? And it's been happening in terms of power shortages. So I think gridlock is doing a wonderful job and if Kenya can be able to receive cheap energy, then yes, I understand it's necessary. Thanks Darwin. What I hope we can do too, speaking to that is let me give you a story. So if you guys remember here in Kenya two weeks ago, we had a nationwide power outage for 5 hours and the people on the mini grid didn't lose power, the people that were on the main grid did. And so there's something interesting that's going on that's counterintuitive about national grid connection versus microgrid or mini grid connection. And I think especially for people in rural parts of the country, it becomes really interesting when you can start pushing electrification to the edges, making it less expensive, more available and more reliable than the national grid. And I think that bitcoin mining is the thing that can actually drive that. It's that silver bullet that was missing from it. Most people don't realize this, but any mini grid operator of any type, whether it's hydro or solar or wind, has had a real fight to be sustainable in this country, sorry, not even just in this country, across East Africa. So bitcoin mining as a buyer of last resort that's geographically agnostic, can go anywhere, I think can solve a lot of those issues and increase the connectivity and electrification that's needed in the country. So, ",timestamp:"01:28:52-01:41:46",topics:["bitcoin mining Kenya","bitcoin energy","Gridless Kenya","Kenya National grid"],type:"twitter_space",weight:8.81690502166748},{boost:0,date:0,description:"What is a speedy trial?",episode_title:"Taproot Activation Q&A with Bitcoin Devs - TABConf 2021",guests:[{name:"Andrew Chow",profile_picture:"https://pbs.twimg.com/profile_images/1452266201770496010/44FHCtZM_400x400.jpg",ref_id:"f96d87ca-5060-4021-aeb9-61db03312027",twitter_handle:"andrewrchow"},{name:"Ben Carman",profile_picture:"https://pbs.twimg.com/profile_images/1550704386007089152/pLwUSeff_400x400.jpg",ref_id:"1d1e95ba-b4af-415f-aafe-85c6dd7571b8",twitter_handle:"benthecarman"},{name:"Matt Corallo",profile_picture:"https://pbs.twimg.com/profile_images/697361498587451394/_rX0-O0W_400x400.png",ref_id:"08cb3c45-c0bc-4a60-ae5b-a1283d352c8b",twitter_handle:"TheBlueMatt"},{name:"Pieter Wuille",profile_picture:"https://pbs.twimg.com/profile_images/1264051937172836353/n7gHdLbB_400x400.jpg",ref_id:"40260d2f-3480-47d6-8515-d2e780901273",twitter_handle:"pwuille"},{name:"Vivek Kasarabada",profile_picture:"",ref_id:"60ed22d0-8cf3-410e-8a7c-9c343ae109ca",twitter_handle:""},{name:"Murch",profile_picture:"https://pbs.twimg.com/profile_images/1269477743525130241/-U843Cmt_400x400.png",ref_id:"3e2c1c73-a057-4475-9782-3bb0d3d8cc62",twitter_handle:"murchandamus"},{name:"Andrew Poelstra",profile_picture:"https://pbs.twimg.com/profile_images/1316562683009921024/FSscAYvJ_400x400.jpg",ref_id:"15fb9c53-c988-4af1-bbf0-4832d71b0a01",twitter_handle:"Blockstream"}],hosts:[{name:" TABConf (The Atlanta Bitcoin Conference)",profile_picture:"https://pbs.twimg.com/profile_images/1596233571521499138/YE8Us_Ml_400x400.jpg",ref_id:"eb1b6016-6223-4b2b-9264-2423ce66304f",twitter_handle:"tabconf"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e7d2a4ca-6b44-4a45-a94c-6f48987979f7.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=MrxtqAlRI2U",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"88a4665a-7414-4ccd-96e4-3fb43f93d9bc",show_title:"TABConf (The Atlanta Bitcoin Conference)",text:"For context, maybe we could explain what Speedy Trial is. My understanding is it basically allows you to put a delay between activation and signaling, but there's also a way to back out if things seem to be going wrong. The activation mechanism we have used previously for CSV and SegWit was called Bit nine version bits. Speedy Trial is a modification to this where we have the start time of the first signaling period was really soon after the parameters had been finalized. And this allowed us to then see very quickly if nodes and minors were upgrading and then were starting to signal for Taproom. And one of the other key features in the speedy trial is that we added a minimum activation height. So this allowed us to delay the activation to a height in the future once there was enough signaling and the software cab locked in. So what this allows us to do is we can see whether Taproot would fail really early on and if it would fail, then it would fail quickly and we could try a different deployment method. I'd rather mention the end time. So the end time for the signaling was also fairly short. There was a whole period of about three months, but we activated it in like four weeks. The lock in was after was it. The second or a third signal? It was a third, I think. Anyways, we have a minimum activation height so that in between the the lock in time and the actual activation time, that's when everyone can upgrade. Everyone knows that Tap Rout going to happen and so they can be ready by the time we reach that minimum activation height. And so for Taproot, that minimum activation height is that 709,000, whatever. So here a small call to action. If you're running a full node and you're not running one or 22.0 or a newer version than that, you might want to upgrade when you get home immediately. Go ahead. ",timestamp:"00:05:16-00:07:48",topics:["speedy trial","minimum height activation"],type:"youtube",weight:8.499536991119385},{boost:0,date:1632355200,description:"The overview of the current state of the ASIC Bitcoin mining hardware market",episode_title:"The ASIC Mining Hardware Market",guests:[{name:"Vincent Zhang",profile_picture:"https://pbs.twimg.com/profile_images/1158285609196109825/fuB-e6lm_400x400.jpg",ref_id:"98e7bc98-3a3b-4ddf-9b48-5dcd78973739",twitter_handle:"Whatsminer_MBT"},{name:"Vincent Vuong",profile_picture:"https://pbs.twimg.com/profile_images/1260974518547312640/n47yvbNL_400x400.jpg",ref_id:"8390e230-e36b-4e0d-9f5d-70c6635bf3c2",twitter_handle:"BitcoinVincent"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=qKeUCNXa4Uc",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"198dfd3b-7d1b-422c-b118-48520629af43",show_title:"Compass Mining",text:"kind of want to kick off the general ASIC market conversation with us today with just like a general question on an update or an overview of the current state of the market. Like, if you look at price charts for the assets themselves right now, you see a little bit of selling activity over the past couple of days, maybe a little bit of fear, some dicey news coming from different regulators around the world. But if we focus on the hardware market, like if you were to give sort of a concise update on the state of Bitcoin mining hardware right now, what does the market look like? What are some key data points or movers and shakers jostling for leadership positions? And whatnot in this slice of the market? What things sort of stand out to you? Vincent from Compass I'll toss it back to you and then vincent from what's? Minor also, for sure. I appreciate that. I personally see that. I think in July we saw a lot of people had excess inventory, but we slowly starting to see markets pick back up again, especially with the coin wrapping up. Even with that slight dip down to 42K ish, we haven't seen too much selling and too much decreases in hardware. Typically. I spoke about this on an article with Coin desk where the asics generally don't go down in value as quickly as they go up in value. And we're starting to see that a bunch of public companies are making large announcements about picking up machines for Q two, Q three, Q four of next year. And for me, I think that it's extremely bullish because there's a lot of equipment that is on the secondary markets that these publicly traded companies can't touch. And so that's why it's going to be an interesting little bit. They're basically just purchasing from the manufacturer when sometimes specifically in July and August, the secondary market was cheaper than what was on the threat from the manufacturer. And I think that once people realize that and they realize they need to take advantage of all these areas, it's going to change how people procure their asics. That is interesting. Yeah, we saw a lot of heat on secondary markets there. Vincent, from what's minor? Same question to you. When you look at the ASIC market in general right now, what's the status of the market? What are key things that you see that stand out to you? Yeah, so market so in this year actually changed a lot. So we have to say change a lot. And the first change, so what I can see is actually this change happened since last year, not only this year, but this year, the trend was enhanced. So what I observed is the capital from North America and Europe. So they invested huge since the year 2020. So the big players, they sign agreement, longterm agreement, either with us or with Bitmen, and the procurement plan and quantity is really huge. And so the trend was changed, even enhanced this year, because this year, the investors in China, they were not able to put the Arctic minus in China mining further. So some small players doing mining in China, however, the large data center, all of them are almost closed and the regulation and the policies becoming more strict. So the investors from China, they reduce procurement quantity in big quantity. So we have to say more miners are moving outside of China and we can see that. So more miners are actually purchased by the investors outside of China. This is number one. Number two is that right now the big players, they prefer purchase the minus in advance. For example, as Vincent said just now, big players, they even purchase the supply of the in the year to some 22. Okay. Q. Two. Q two. Q three. Q four. They have the contract with us or with some other purchasers. So they prefer purchase even more than half year earlier than the supply time. And so, however, we are not saying the minus in stock are not able to be sold out. So some small and medium investors, they are trying to access to the minus available immediately. And this is not a small portion. So also big quantity can be traded. And also the Easter miner. So in the month of May and June, so the Easter miner becomes really cheap due to the regulations published in China. However, it's recovered very fast. But what I can see is probably from October, November onwards. So if bitcoin price will not have a significant increase or growth, I think the price of the miners may drop down. And another point is, so right now we can say the vendors like us, ask hardware providers like us. So we will prefer have long term cooperation with big players and investors. Okay, so you can see that right now, the sales policy from asik provider vendors also change a lot comparing with a few years back. It is totally changed and slowly it is not becoming the vendor market. So also it is well balanced right now between the vendor market and the purchase market. Okay, so these are the observations I can share. ",timestamp:"00:07:45-00:15:02",topics:["ASIC","Bitcoin Mining Hardware Market","markets"],type:"youtube",weight:8.467833996035228},{boost:0,date:1671029781,description:"Aftermath of the crypto market crash: Financial standings of DCG and Genesis",episode_title:"Café ₿: GBTC was the Genesis of the Crypto Contagion w/ @samcallah",guests:[{name:"@StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"6e652629-38ec-49d8-9f5c-3ba28f80c799",twitter_handle:"StackchainSig"},{name:"@Meditation_Man",profile_picture:"https://pbs.twimg.com/profile_images/1597303881339314176/kFqDWvq0_400x400.jpg",ref_id:"cf7119ec-50a5-4ba2-a9a6-4a24835f3364",twitter_handle:"Meditation_Man"},{name:"@TomerStrolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"7af639f8-8c5c-4ce1-a43b-e8560ed40e2b",twitter_handle:"TomerStrolight"},{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:" @samcallah",profile_picture:"https://pbs.twimg.com/profile_images/1502454836981166082/cQG0YQxc_400x400.jpg",ref_id:"ee5d0119-780d-4539-9b84-83025e95c03f",twitter_handle:"samcallah"},{name:"@sonofsats",profile_picture:"https://pbs.twimg.com/profile_images/1593080311000211456/Dr_NQ9Iw_400x400.jpg",ref_id:"07f15eea-1f9a-41bc-b974-ffd370885708",twitter_handle:"sonofsats"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/75d674de-3859-49f5-abcd-927017e3a24f/b763dc91-acba-4530-9c22-88fea8193185.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"7b90a2ff-ac29-43a9-9911-0eec916e3088",show_title:"Swan.com",text:"happens to DCG? What happens now? Are these guys in trouble? What do you think? DCG and Genesis are definitely in a tough spot right now because basically they basically have huge holes in their balance sheets from having exposure to all these blow ups. Genesis had exposure to three AC. Like I just said, they also had maybe the worst trade in history when they traded $1 billion worth of Bitcoin for $1 billion worth of UST with the Luna Foundation, which basically went to zero. So they gave, like, the hardest money in the world for an Elgo stable coin. And so they got crushed on that. They got crushed on three AC, and then they had 175,000,000 trapped on FTX when that collapsed. And so Genesis has a huge hole in its balance sheet as well as DCG, because DCG actually bailed out Genesis after they blew up from three AC. And then DCG has been kind of they have a ton of debt on their balance sheet now after they did that. So essentially, they took on that Three Arrows Capital loan, that $1.1 billion hole on Genesis. They basically just assumed it on their balance sheet. And then they also took out a $575,000,000 loan with Genesis to basically try to buy more GBTC shares themselves to try to prop it up. And if you look at, like, their buys, you can just look at their SEC filings. And when they bought the GBTC shares, they're down about 77% on those GBTC purchases themselves. Basically, the problem is liquidity here, where Genesis needs liquidity to fund withdrawals and pay its creditors. But they don't. They have all these, like, long term investments on their balance sheet. They basically have a ten year loan to DCG. So that's not like a short term that's not liquid. And they also have a lot of GBTC shares which aren't really liquid for Genesis or DCG, because there's a rule where if you are the issuer of a security like Genesis or DCG, you can't sell more than 1% of the outstanding shares for every quarter. And so right now, DCG owns 66 million shares of GBTC. But according to that rule, they can only sell about 6 million or 7 million shares a quarter. And so that's why it's extremely ill liquid right now that they have all this GBTC on their balance sheets. And so basically, they're desperate for cash. And DCG owes Genesis $1.7 billion, and they're both trying to fill that hole. And so, yeah, the question becomes, what happens to DCG? What options do they have? What does it mean for GBTC holders and what does it mean for the price of bitcoin? And there's a lot of options they have. They can sell GBTC shares. But it's like I said, there's a rule about it. And I think they are doing that right now. I think that's why you're seeing the discount widen right now. You're seeing Genesis and DCG probably selling what they can, according to that rule, to try to raise cash. But again, that's not even close to the $1.7 billion hole that's in their balance sheet or just that they owe to Genesis in terms of DCG. And so that's not enough. So what else could they do? Well, DCG could raise funds. It was previously valued at $10 billion. It'd probably be a fraction of that today because that was at the top of the bull market. And so there's still value in DCG. They have a giant venture portfolio, and they can kind of leverage Grayscale itself. So Grayscale still brings in $300 million in fees a year. And so they can leverage that annual revenue to try to raise funds, to try to raise cash, essentially, so they can leverage those future cash flows. And then they have assets like CoinDesk and Foundry. They have those GBTC shares. That's about 10% of the total supply right now. They have those. They can leverage those to raise money. They also have bankruptcy claims at three AC and FTX and elementary Research. You don't know what's in that value there, but there's probably some residual value in those bankruptcy claims. And so they can leverage all those assets to raise capital. But again, that's probably not enough. And then the next thing they could do is they could sell the assets themselves. So there's a rumor that they could sell Coin for $300 million because they have consensus conference, and they actually make like 50 million in annual revenue at Coin. So they can sell that asset. They could sell Grayscale itself to another sponsor, and that would probably bring in like 400 to 500 million. But again, it's still probably not enough for them to fill the hole. And why would they sell Grayscale the trust? Because it would basically put them out of business because that's their big cash cow. And so they would basically sell the trust to raise all this money to try to stay alive. But then why even stay alive? Because you just sold your main cash cow. The next thing they could do is they could restructure the loans. And so they have a bunch of loans with Genesis and you could restructure the loan so that both parties could have more runway. And so it's the best interest, kind of, of both parties to negotiate a deal to allow both parties to avoid bankruptcy. And so you can do a lot of different things. It could raise a little bit of money for the reasons that I just said, and they could give some of that to Genesis to kind of help them pay off their withdrawals and stay alive a little bit. The Genesis creditors could roll their debt into DCG warrants so they can have a senior claim on the cash flow from GBTC. There's a lot of different ways they could kind of negotiate their debts to try to keep themselves alive. And I think that's probably what's happening right now. It's probably quiet. They're trying to figure out how they can kind of manage this and all of these things, like selling off the trust to a different sponsor, that wouldn't affect GBTC holders at all. I mean, that would just change the sponsor and none of that would affect GBTC shareholders. Now, what would affect GBTC shareholders if they seek something called Reg M exemption? And so if the SEC approved this, grayscale would have to apply for Reg M relief, which would allow GBTC shareholders to redeem their shares for the underlying assets at a one to one ratio. And so it basically eliminate the discount to NAV overnight. And so that 45% would disappear. GBTC shareholders would be able to wait. Let me see if I understand this right. You're saying that under Reg M, they would redeem in kind, meaning shareholders would get the bitcoin. Yeah, if the Sac allowed that, they would have to basically approve in kind redemption for shareholders to take custody of the underlying bitcoin. But this would pose a lot of challenges for GBTC shareholders because a lot of it is in those retirement accounts that aren't legally allowed to hold spot bitcoin. But they could redeem at one to one in cash, too. So it wouldn't be the worst thing for them either. They would just get cash, but it wouldn't be a 45% discount. Then it would be a wow, that. Actually seems like a pretty reasonable solution. Yeah, no, it is. It would be the best solution if you're a GBDC shareholder. Right? Yeah, I would definitely say that. I just don't think it's going to happen because Reg M exemption and an ETF approval are pretty much the same thing. I mean, you're basically giving Grayscale the ability to create and redeem shares simultaneously. And so it becomes political, where the SEC would be seen as supportive for the cryptocurrency industry in the wake of the FTX collapse. In other words, screw the TBDC shareholders. Like, screw all you guys. This is important to us politically, so you're just going to have to suck it up. That's messed up. Yeah, exactly. Yeah, that's exactly what's happening. And so they could do that. I just don't think it's going to happen. Now, here's where it gets interesting, is because there's no reason why Grayscale can't offer redemptions today. And if they actually cared about GBTC shareholders, they would allow that. When you say offer redemptions, what do you mean by that? Like, redemptions in kind or what are you talking about? I'm talking about redemptions in kind. So back in 2014, actually, the trust was doing this. So it was allowing the issuance of shares and the redemption of the underlying bitcoin. But then they got a cease and desist letter from the SEC, and this was kind of finished in 2014, where they had to stop doing that. Ever since then, they haven't allowed redemptions because they got a cease and desist. They're like, hey, you're not need cap. You're violating reg. M. You can't do that. And and Grayscale was like, okay, but the key point here is that it's only a violation of Reg M if Grayscale is issuing and redeeming shares at the exact same time. Now, when the premium was there, they were issuing shares like crazy because all these institutional investors were putting on this trade. And Grayscow, can you unpack that? I'm sorry to interrupt you there, but what does that mean at the exact same time? It doesn't make sense to me. What does that mean? So, like I said, an ETF can issue and redeem shares at the same time to keep the trust in NAV. That's what I mean. Right? So that's what I mean by at the same time. They can basically fluctuate and redeem and issue it at the same time. Right. And so after they were doing they got the cease and dislike from the SEC, they were essentially only issuing shares. They weren't redeeming the shares anymore. Hey, Sam. Sam, why does the SEC zero in on that particular issue? To determine that something is an ETF versus not. That's just a rule from the Exchange Act, where it's just only certain securities can do Reg M, essentially, where they issue a redeem. Usually it's like Treasuries and money market funds and things like that. It's just in the laws since the 40s or something. 30s or 40s. What we're trying to zero in on is why. I don't understand that part. We don't have to get yes, it. Doesn'T honestly, yeah, it doesn't seem important. Let's move on. They were issuing shares like crazy when they were putting on a premium trade. So they created 422,000,000 shares from January 2020 to March 2021. Now, once the premium trade disappeared, they haven't issued or created any new shares, so it's stuck at 692,000,000 shares. And so since they aren't issuing shares, they can allow redemptions right now legally. And this would close the NAV to discount almost overnight, because all of these GBTC shareholders, the accredited investors, would be able to basically have a reverse arbitrage where they could sell GBTC or redeem GBTC shares for spot bitcoin underlying in the trust and take that bitcoin and then sell it for dollars and collect the difference in the discount. And so you would see that discount get armed away extremely quickly if DCG or Grayscale just allowed redemptions. And they could do it legally. There's literally it's kind of an administrative thing, basically. If I understand right, they would have to make a filing with the SEC and say, we're no longer issuing shares, we're now redeeming shares. And at that point, they can just go ahead and do it. Yeah, exactly. Honestly, the negative to the sponsor would be that they can't collect the 2% on the value of the underlying asset. It starts to erode their assets under management, so to speak. That's exactly right. That's why they're not doing it, is because as people would redeem the bitcoin, it would be less bitcoin in the trust and that would lower their fee and that's their cash cow. And so the premium trade added bitcoin to the trust and it also added a ton of buy pressure to spot bitcoin, because people would put on this trade and the bitcoin would go in the trust and it would never get sold, it would just sit there. But if they allow it to happen. So they're trying to figure out right now, how do we stay alive without losing the assets under management, which is bitcoin? It's ideal for them to keep the bitcoin in the trust, basically, because, by the way, 2% is a gigantic amount on these assets. Oh, yeah. That's another reason why you can be critical of DCG, because the Toronto ETF is a 1% fee, and then there's another similar Osprey bitcoin trust, that's zero point 49% fee, and there's no reason to have a huge management fee for these trusts. I mean, it's a gigantic cash cow. It's unbelievable in the gold world. If you were to compare it to the largest ETF in the gold world, which is GLD, I think the sponsor collects 15 basis points or something like it's some really small amount. But the point is that if it's worth tens of billions of dollars and it starts to turn into some real. Money yeah, it costs, like, less than $1,000 to set up a trust. And basically all they have to do is collect the bitcoin, but then they just, like, give it to coinbase. So they don't really do anything. They literally just sit there and collect the 2%. Yeah. Depending upon how you manage it, the operational cost of administering one of these things could be like 100 grand plus a month. But, I mean, that's a drop in the well compared to the well collecting. It's unbelievable. Yeah, but you have to understand, like, redemptions. If they allowed redemptions, it would be good for GBTC shareholders, it would be bad for spot bitcoin holders, because, like, I said they would put on this trade where they would redeem GBTC shares for spot bitcoin and then sell the spot bitcoin to collect the difference. Where's the premium pressure in the market right away, basically. Yeah, exactly. They would meet in the middle, so the premium would meet in the middle and the spot would go down. Meet somewhere in the middle, right? Yeah. I mean, the discount would go to NAV, so GBCC holders would love it. But the reason that's happening is because the bitcoin is leaving the trust and theoretically, those institutional credit investors would sell that bitcoin to collect the discount that currently exists. So whereas the premium trade added a ton of buy pressure to spot bitcoin, if they added redemptions, it would actually add a lot of sell pressure to spot bitcoin. That's assuming that they want to hold dollars in the end, though, right? Yeah. That is assuming as the discount. There'S going to be an arbitrage. The bottom line is, if somebody can arbit and collect a spread, they're going to. Right? I mean, that's just going to happen. What is the fiduciary responsibility of the trust? I guess my question is, is there any conflicting fiduciary kinds of responsibilities at this point during whatever this process that you're talking about is going to happen? Yes. I mean, this is why there's been a recent lawsuit that just got filed by Firtree saying that Grayscale basically breached the trust agreement by not allowing shareholders to review relevant documents, as well as not allowing a redemption when there's no legal reason for them not to allow it. And so I'm not a lawyer, but they're getting sued for potential mismanagement or wrongdoing of the trust because they're basically hiding behind this idea that they're going to get approval for BTF, because that would allow the discount to disappear, but then it would also allow the bitcoin not to leave the trust. And so it's their best option. Right. It's the best option for GBC shareholders, but it's also the best option for Grayscale because they would get to keep their AUM, but they keep getting rejected. Right. And the SEC just had a response on December 9 that basically was very like they were just like, this isn't happening, is how I would summarize it. And so Firtree, in that lawsuit, they're saying they keep hiding behind this idea that they're going to get approved from an ETF and that's why they're not allowing redemptions right now, but it's not going well and GBTC shareholders getting hurt for it. Yeah, that seems like a pretty bullshit excuse because we're going to become an ETF, therefore we're not going to I mean, that's pretty bullshit, obviously, to me anyway. And the way they kind of change the trust charter over the years, that's another thing they have a problem with, because shareholders used to have kind of ways they could vote greater than 75% to avoid any kind of, like, liquidation. They. Had some rights before, but as of 2017, Grace Kell basically removed that in the trust. And now it's basically all in their court in terms of what they can do. And so there's a lot of issues around how they change the trust charter and basically give all the power to Grayscale and not to any power to the shareholders. And that's kind of all in this lawsuit that just came out, like, last week. But it's been an ongoing thing for years now. ",timestamp:"01:24:54-01:44:01",topics:["DCG","Genesis"],type:"twitter_space",weight:16.40026499856909},{boost:0,date:1677582e3,description:"The goal of Blockchain Boy",episode_title:"Ep. 514 The Future of Crypto in the Media with Blockchain Boy",guests:[{name:"Lucas Dimos",profile_picture:"https://pbs.twimg.com/profile_images/1092408696838197250/n0-St2nZ_400x400.jpg",ref_id:"9ac17e2f-49bd-4fc5-bfe5-2f380ca63574",twitter_handle:"lucasdimos"},{name:"Blockchain Boy",profile_picture:"https://pbs.twimg.com/profile_images/1602154101642592256/A0OX97CT_400x400.jpg",ref_id:"4b070a6f-bcc8-4708-abaf-cc830709600f",twitter_handle:"BlockchainBoyy"}],hosts:[{name:"Aaron Malone",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"bd103540-8c0a-4ab3-b5cd-24a3f2c43ab2",twitter_handle:"pizzamind"},{name:"Bryce Paul",profile_picture:"https://pbs.twimg.com/profile_images/1182725652794892288/QbDOKHcP_400x400.jpg",ref_id:"0d670dbf-f434-43b6-b454-8e5345d7ee51",twitter_handle:"BrycePaul101"},{name:"Pizza Mind",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"16cb01cf-9f04-45db-a440-47259b02b86a",twitter_handle:"pizzamind"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/93a6fe5b-364c-43f4-9f38-7da3e811460b.jpg",keyword:!0,link:"https://audio1.redcircle.com/episodes/68f31cee-f404-40fe-85d7-a406019e916f/stream.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"2485d5dc-6159-4638-aef1-e645f226a8a1",show_title:"CRYPTO 101",text:"gamble to bet on them. Like anything is. Same thing with Raddix, like I mentioned before. Although anything but salon or cardano I'll just say. That interesting take. All right, yeah. Could you expand on that last point? Anything but solana and cardano. What's the reason? That's half a joke. I don't mind cardano, but I think Salona is pretty centralized. VC garbage. I've been calling it Mid forever, and I felt very vindicated when it finally shit the bed. Fair enough. Well, you are only a couple of years away from really being able to do whatever you want in life, and I mean whatever you want. Your businesses are going to be able to be ran on autopilot. You're going to have more money than you can count in a multitude of different currencies with the way things are. Headed to be able to rent a car in the States. Yeah, well, you can't do that yet. But the point I'm getting at is what are your real dreams and goals? Like, when you're fully empowered to do literally anything you want in this world, what do you want your impact and your legacy to be? That's a great question, and I'm still figuring out what I really want to do with the rest of my life. I just know that I really like building cool things with cool people, and I think I'm always going to do that, no matter whether it's big or small. I think it's just I have to do something. I'm like a shark. Sharks have to keep swimming or they sink. Right? And so it's very similar with me. Maybe I'll have some more time to go live in the country and be away from people for times. But no, I really like empowering people to be their best selves. That's really what makes me the happiest, is, like, I'm a very loving and caring person, and I love to see people do good things and succeed. So I would really love to get into sort of micro loans and sort of entrepreneurship guidance and maybe even ethical VCs, because I don't think a lot of VCs are very ethical. And so I'd love to do something along the lines of that to empower more entrepreneurs to have an effect in their community and environment outside of Web Three, too. I've been doing micro loans on the platform called Kiva for many years, and I think it's super cool and needs a Web Three version. Yeah, I've actually never heard of Kiva. Tell us a little bit more about what micro loans are. And has that been a way that you could generate passive income or anything? No, it's just mostly a tax write off for really rich people. It's not like super well known, but you get to actually empower entrepreneurs in other countries. Oh, there's Jonah. Jonah. I'm on a podcast. Oh, he's bringing stuff. Jonah. What's up, brother? Thanks, bro. No, he's one of my fantastic team members over here. Thanks, bro. I wish I got a coffee delivery in the middle of podcast. That was sick, wasn't it? Look at that. Yeah, look at that. Dude, he hooked me up. I bet there's even an espresso shot in there. That's crazy, man. Fantastic. So where was I? Oh, yeah. So you can empower entrepreneurs from other places around the world who need maybe an $800 loan to get more fertilizer for their crops, to double their yield, or who are opening a small store in their community. And it's a way because charities actually can be actually very damaging ",timestamp:"00:21:17-00:24:30",topics:["Blockchain Boy"],type:"podcast",weight:79.08077270705402},{boost:0,date:1642464e3,description:"Channels jamming and Lightning invoice on the Lightning network",episode_title:"Lightning for Plebs - TABConf 2021",guests:[{name:"ketominer",profile_picture:"https://pbs.twimg.com/profile_images/1245972079528329218/YDUD9N2Q_400x400.jpg",ref_id:"2f8b0b59-6f23-4c89-973c-668cc7666998",twitter_handle:"ketominer"},{name:"Ryan Gentry",profile_picture:"https://pbs.twimg.com/profile_images/1362751223217160203/ekMa_yY-_400x400.jpg",ref_id:"8fe78b55-bc38-40df-9cb5-ffd5c84166a2",twitter_handle:"RyanTheGentry"},{name:"Dread",profile_picture:"https://pbs.twimg.com/profile_images/1532557131819491328/vvs1cD-7_400x400.jpg",ref_id:"e61af76b-8fbd-4719-b753-0a70edd22fa8",twitter_handle:"PoleVaultDream"},{name:"Andre Neves",profile_picture:"https://pbs.twimg.com/profile_images/1604172627550969856/bYCGb7Ev_400x400.jpg",ref_id:"227e071d-f8a6-4137-8078-729fa9eb3a13",twitter_handle:"andreneves"},{name:"Nate G",profile_picture:"https://pbs.twimg.com/profile_images/1542983032507858944/9w_UUx5Z_400x400.jpg",ref_id:"bda29551-f17f-452c-9204-4d6cafdf4f3b",twitter_handle:"natecgriffin"}],hosts:[{name:"TABConf ",profile_picture:"https://pbs.twimg.com/profile_images/1596233571521499138/YE8Us_Ml_400x400.jpg",ref_id:"d2f50d77-ec8d-4554-bc40-387ababbb536",twitter_handle:"tabconf"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e7d2a4ca-6b44-4a45-a94c-6f48987979f7.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=mQOBuXsGZt0",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"cd29b1a1-f94b-4eee-84ce-ddf8a4fcb0c5",show_title:"TABConf (The Atlanta Bitcoin Conference)",text:"let's theorize a little bit. You know, I know, like, one that always, you know, the the Dodge's always point out is the flood and loop attack, right? Which I think is like mostly mitigated by anchor channels. But what are some things that, you know, like, for instance, somebody a country that really doesn't like Bukle and El Salvador. Like, what are some things that you think they could do to try and mess with their infrastructure? What were some things you'd watch out for? Jam all the channels. All of them. Just jam them all. Okay. It's a real thing. Channels have limits in HLCs and in flights. And also there are a couple of ways where you can essentially deploy very small sorry, very small value payments in terms of let me rephrase large volume of payments with very small amounts. And then you can also lock up liquidity on routes by using small number of payments with large amounts. So for making a payment through Ryan and Ryan's node goes offline after the HLC sent, I now have liquidity stuck on one side and I can't do anything until it settles, right, until it cancels or airs out. So imagine someone spending an attacker, spending up hundreds of nodes, deploying some capital to the network, and then using some form of scripting to jam a lot of channels. All of a sudden in El Salvador, you can't make a payment through open node to buy your McDonald's, right. Because channels are jammed or liquidity is not unavailable. So channel jamming is one. I guess spamming and probing is a big one as well. On our nodes at least, we're seeing the numbers vary, but any given month is like 50%, 60% are probing, probing payments and probes are essentially I'm trying to get an estimate of whether this payment will clear and I'm trying to get an estimate of the fee that will cost me. So a lot of wallets do this probing mechanism to find out for users. And so, hey, your payment is 1000 SATS. It's going to cost you ten stats to make this payment and you send that fake payment across once the returns failed back, you now have a very discreet estimate. We're seeing lots of spam in the network, but again, it's in its infancy. What happens if someone is actively trying to spam it? Twenty four seven? I think we have yet to see what it's like. And there's also a vulnerability in the invoices, right? Like if you give an invoice out, like let's say you're asking for tips on Twitter, or you put an invoice out on a post, you're showing your information, right? Like they can see your note at that point. So I feel like, what is it, about twelve that might solve that, but things like that, maybe not. Things that provide more privacy for us. Would be good to be able to remain anonymous as possible while still conducting your transactions. Rendezvous routing. Let's go from your lips to God's ears, man. Yeah, right now a regular lightning invoice can be decoded and you can see. Imagine that I give you an invoice, you pay it and you could decode the invoice and says, that is actually going to me. Right? But if I can give you an invoice where you don't see where the final destination is, that protects your nodes privacy, but you still get paid for it. So that's something that hopefully in the future we can get going. Is rendezvous the same as trampoline? No. Yeah, you give me that. Fight for it. You're going to get in trouble asking that. I think conceptually, high level, they're the same. But this is the type of thing where it's like the differences are so small, but so important that Tbast and Connor would like get into a fistfight or something. Hilarious. Yeah, I think all of those attacks are. The thing that I love about the Bitcoin community is that we're very honest about this type of stuff and we're continually critically thinking about what are the ways in which this could fail, what are the ways and thinking about what are the ways that we can protect ourselves against these adversarial environments. Because absolutely, I know it's like the protocol developers a lot of the time are kind of like, this is ridiculous that you guys are having fun and making friendship channels and stuff. Like, you know, this is going to be an adversarial environment. And I think we are aware, but it just hasn't been the case just yet. And so I think kind of to close here again, this has all been about lighting for Plebs. I'm curious. The Plebnet now, I think is it like 1000 registered nodes. 5000 registered nodes. Holy shit. Thousand nodes. Okay, 1000 registered nodes, 5000 users, which is incredible. ",timestamp:"00:24:02-00:28:52",topics:["Lightning Liquidity","Lightning invoice","Lightning channels jamming"],type:"youtube",weight:8.078713541988659},{boost:0,date:1637366400,description:"Education efforts and safety regulations in the nuclear energy sector",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"475acbce-5a5c-4881-a93d-7d41edf1ae84",show_title:"Compass Mining",text:"Eric, I wanted to pick up on that note a hint to you next exactly for the reason that I know you work in a lot of the education efforts and dialogue and conversation. And as I'm sure we're all familiar, facts and data don't always win the day, and bitcoin people know that as well as any other industry. I'm just curious if you have any extra color to add on how those conversations are going in terms of education and presenting the tech as it stands, reliability, safety and just general promise. How are those conversations going? Well, I think you're exactly right. A lot of times in our industry, we argue with facts and data in the face of emotion, and it doesn't always work. I think what's important, and I take this line from one of my colleagues in the industry it's no more and fearless. And the more that we talk about what our real record is. And I think we've got a record to be proud of, especially here in the United States, since Three Mile Island, where we've not only done tremendous work in upgrading safety standards and operational standards here in the United States, but we've also done a lot of really important work in terms of regulating ourselves. Coming out of Three Mile Island. We established the Nuclear Regulatory Commission. We used to have the Atomic Energy Commission, which had the dual mission of promoting the industry and guaranteeing its safety. And it was decided by President Carter and Congress that those two missions were incompatible. We needed to break this apart. So we created the Nuclear Regulatory Commission, the Department of Energy to it on the promotional aspect of that. So that was one thing was great. We have a very, very tough regulator. There are two resident inspectors at every plant in the United States. And those guys and women and women have the ability to shut those plants down if they're operating unsafely. It's never happened, but they do have the authority to do so, and people need to know that. It's something that's very important to know. The other thing that's important to know is that also growing out at Three Mile Island, we established something called the Institution of Nuclear Power Operations, which was an internal industry peerreview group where we would all evaluate each other's operational safety together and decide and rank our plants according to how well they matched up against our standards. Column one through column four. And the fact is that within our business, you're known, I mean, number one is the best and number four is the lowest. And if you're a plant manager. You're running a plant. You following the info column force into your career. We do not tolerate that kind of operational pace in our industry and we got to get people up at the very top because the fact of it is that we're held to a different standard than other industries and we're not afraid of that. We've been held to different standards now for a very long time. We're not afraid of that. And we need to tell that story. We need to be very out front about that. A lot of really talented social scientists who look at our industry did some research a couple of years ago and they found that a lot of the public still has what they call existential threat about nuclear power. It's born out of the fact that we're born out of a weapons program. Even the first commercial reactor in the United States was built by the United States Navy under the supervision of Hymen Rica Over. You pile that on top of you can't see radiation. You can't smell it, you can't taste it. It feels like a risk that you can't mitigate when in fact, we know what we can do and we can what we need to do is we need to meet people where they live and we need to address their fears and let them ask any question that they like. We want to let them know that we have safety systems on top of safety systems that guarantee the operations of our plants. We've got to talk about things like the people who seem to support us most in the world or the communities that are closest to our plants. They know the people who work in them. They know how much their communities mean to them and when they go to work every day. They know that they're guaranteeing not only the safety operations of the plant, they're also guaranteeing the continued operation of economic engine for the community that they live in. These plants throw off tens of millions of dollars in property taxes. They provide direct support for education and first responders, public safety, public libraries. I mean, they're really, really very important to the communities that they're based in. So I believe as long as we're upfront about who we are, what we're doing, meeting people where they are and addressing their fears directly, I think we're in a much better place than we were, let's say, 30, 40 years ago. And I was very small and still remember my father telling me about his tour of TMI back in the ",timestamp:"00:24:37-00:29:38",topics:["Nuclear Energy Education","Nuclear Energy Regulations"],type:"youtube",weight:8.023174886839682},{boost:0,date:1596686400,description:"Environmental Issues in Planet",episode_title:"Chat 45 - Bitcoin an Energy Revolution A panel at the VOB Conf",guests:[{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Christopher Bendikson",profile_picture:"",ref_id:"d72ead54-7bff-4874-870f-123e665fddfd",twitter_handle:""},{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"4fdf8ab1-a3e8-4390-b618-a8a915fa3f68",show_title:"Bitcoin Audible",text:"issues that we have on the planet. Today are how is steel produced, how are metals produced, how is concrete produced, how is electricity produced and how it's farming done. Everything else makes almost no difference. Those are the big issues. If our ground is in any way. It doesn't matter how much energy we use. If our mining and our metal production is done in a clean way, it doesn't matter how many metals we use. The earth is completely full. The cost of the earth is just materials. So if we're looking at the long term sustainability, it's a question of how these couple of processes are done. And so the question of bitcoin's impact on that gets such a small percentage of consumption. The question is more of which way does it incentivize production? Because if you see even a small swing in the way that if bitcoin for example, is able to balance grids and enable them to use higher percentage renewables, then you'll see a higher renewable penetration and you'll see overall lower utilization of fossil fuels than you would in a situation without bitcoin. ",timestamp:"00:29:09-00:30:22",topics:[],type:"podcast",weight:7.965680956840515},{boost:0,date:1672207217,description:"Satoshi Nakamoto on Double Spin, Proof of Work and transaction fees",episode_title:'The Orange 🌞 Reading/Discussion "The Book of Satoshi" & Bitcoin News',guests:[{name:"CouncilmannJamm",profile_picture:"https://pbs.twimg.com/profile_images/1251040014152024066/dD3b2eA4_400x400.jpg",ref_id:"6c989c2c-d24d-49a2-8eb1-1d2f1c47f347",twitter_handle:"jamm_councilman"},{name:"thotsnplayerz",profile_picture:"https://pbs.twimg.com/profile_images/1608733749663109120/wwYEZgF2_400x400.jpg",ref_id:"66bbe365-9e85-4c34-9d51-39d8b49937b7",twitter_handle:"thotsnplayerz"},{name:"Will Schoellkopf",profile_picture:"https://pbs.twimg.com/profile_images/1487515153302130691/t5sDMzZW_400x400.jpg",ref_id:"461e2245-1672-4fa1-94f5-7aaf1afa531f",twitter_handle:"realBitcoinDog"},{name:"OKIN_17",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"dbcdeab8-4824-43f7-aeb8-2b9eda6cbbad",twitter_handle:"OKIN_17"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"},{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ecefba20-39fd-4974-8388-066857965b2a/cf486c39-08f9-4ada-9b72-7a297ad74d74.mp3",node_type:"clip",pub_key:"",ref_id:"bd8acc65-31a6-4d6c-93e2-cb91d3909825",show_title:"Satoshi’s Journal",text:"15. It's entitled more on double spend proof of work and transaction fees. In this exchange, Satoshi provides several clarifications and discusses compensation of miners, ie. Nodes via transaction fees once the entire supply of Bitcoin has been created. So once again, he's asked about that. On Monday, November 7 17th, 2008, at 904, Satoshi Nakamoto wrote I'll try and hurry up and release the source code as soon as possible to serve as a reference to help clear up all these implementation questions. Ray Dillinger, who goes by I Guess Bear, wrote when a coin is spent, the buyer and seller digitally signed a blinded transaction record. Satoshi Nakamoto replies only the buyer signs and there's no blinding. If someone doublespends, then the transaction record can be unblinded, revealing the identity of the cheater. Identities are not used and there is no reliance on recourse. It's all prevention. This is done via a fairly standard cut and choose algorithm where the buyer responds to several challenges with secret shares. Okay, so I'm trying to remember who this person was. I think this is Ray Dillinger that said that. So Ray says this is done via a fairly standard cut and choose algorithm where the buyer responds to several challenges with secret shares. Satoshi says no challenges or secret shares. A basic transaction is just what you see in the figure in section two. A signature of the buyer, satisfying the public key of the previous transaction and a new public key of the seller that must be satisfied to spend the next time. Then Ray Dillinger says they may also. Receive chains as long as the one they're trying to extend while they work, in which the last few links are links that are not common with the chain on which they are working. These they ignore. Satoshi says. Right. If it's equal in length, ties are broken by keeping the earliest one received, and then Ray says, if it contains a double spend, then they create a transaction which is proof of double spending, add it to their Pool A, broadcast it, and continue work. Satoshi responds, there's no need for reporting of proof of double spending like that. If the same chain contains both spends, then the block is invalid and rejected. Same. If a block didn't have enough proof of work, that block is invalid and rejected. There's no need to circulate a report about it. Every node could see that and reject it before laying it. If there are two competing chains, each containing a different version of the same transaction, with one trying to give money to the one person and the other trying to give the same money to someone else, resolving which of the spends is valid is what the whole proof of work chain is about. We're not, quote unquote, on the lookout for double spends to sound the alarm and cast a cheater. We merely adjudicate which one of the spends is valid. Receivers of transactions must wait a few blocks to make sure that resolution has had time to complete. Wouldbe cheaters can try and simultaneously double spend all they want, and all they accomplish is that within a few blocks, one of the spends becomes valid and the other becomes invalid. Any later double spends are immediately rejected once there's already a spend in the main chain. Even if an earlier spend wasn't in the chain yet, if it was already in all the other nodes pools, then the second spend would be turned away by all those nodes that already have the first spend. Then Ray says. If the new chain. Is accepted, then they give up on adding their current link, dump all the transactions from pool l back into pool A along with transactions they've received or created since starting work. Eliminate from pool A those transaction records which are already part of the link in the new chain, and start working again trying to extend the new chain. Satoshi says. Right, they also refresh whenever a new transaction comes in, so Al pretty much contains everything in A all the time. Ray comments CPU intensive digital signature algorithm to sign the chain, including the new block Al. Satoshi responds It's a hash cache style shaw 256 proof of work partial preimage of zero, not a signature. Ray says, Is there a mechanism to make sure that the chain does not consist solely of links added by just three or four fastest nodes? Cause a broadcast transaction record could easily miss those three or four nodes. And if it does, and those nodes continue to dominate the chain, the transaction might never get added. And Satoshi responds, if you're thinking of it as a CPU intensive digital signing, then you may be thinking of a race to finish a long operation first and the fastest always winning. The proof of work is a hash cast style two shot, 256 collision finding. It's a memoryless process where you do millions of hashes a second with a small chance of finding one each time. The three or four fastest nodes dominance would only be proportional to their share of the total CPU power. Anyone's chance of finding a solution at any time is proportional to their CPU power. There will be transaction fees, so nodes will be an incentive to receive and include all the transactions they can. Nodes will eventually be compensated by transaction fees alone when the total coins created hits the predetermined ceiling. So they continue. Ray Dillinger then says, also the work requirement for adding a link to the chain should vary with the numbers of links adding to that chain in the previous week, causing the rate of the coin generation to be strictly controlled. Satoshi says right. Ray says you need coin aggregation for this to scale. There needs to be a provable transaction where someone retires ten single coins and creates a new coin with denomination ten, et cetera. Satoshi says every transaction is one of these section nine combining and splitting value. So I guess he just referred to him a section. So yeah, in that. Exchange they use the word note a lot, but in the context of that it's synonymous with miners, just to make that clear. So a miner of course, is a computer that is specifically used to mine Bitcoin. That's all it can do. And it validates transactions and the node is what? Verifies transactions. So, like on the Bitcoin blockchain, for you to be truly certain that your transaction has gone through a minimum of six, validations is required, meaning that six other nodes have looked at your transaction and deemed it verifiable. And once it's verifiable, you can essentially be confident that you have achieved, not consensus you've achieved, yeah, consensus, your transaction is good to go. And so Portland asked me a trick question the other day. He said, if there are five blocks that have been mined, how many times has your transaction been verified? And it just stumped me, I don't know why, because the thing that came to my head was that minimum six validations, I just was stumped. And he asked me like three times, and I said, I don't know the answer. And he says five. And anyway, so the answer was right in front of me. So every block is basically mined approximately every ten minutes, and in five blocks you can basically equivocate that to five validations of your transaction. The more validations of your transaction, the more set in stone, so to speak. That transaction is. So it's just like if you solve a problem, if I give you a sheet of paper and it says has an equation ten times ten and I give it to you and you have to write the answer on the paper while you put 100. And then I tell you to give that to six other people to make sure that your calculations are right. Those six people check, and they do indeed concur that ten times ten is 100. And since I made the rule, when I get those six confirmations from those six people that you did your math correctly, then that gives me confidence that the calculation is done is correct. And so that's what basically the nodes are doing. When you broadcast a transaction, the nodes are all looking at it, and it takes a minimum of six to basically solidify that into the bitcoin blockchain forever. That'll give you full insurance, full confidence that your transaction is good to go. And all that happens in basically six blocks, which is 60 minutes. And the beautiful thing about that is the fact that that's all being done with computers and no intermediary. Whereas if you were to go and swipe your card at McDonald's to make a transaction, you're doing that first through essential authority, and the verifiability of that transaction doesn't happen. And the finalization of it doesn't happen until basically 30 days when you get your bank statement, and it shows that you have a charge for $10 at McDonald's. So, relatively speaking, bitcoin is way faster than legacy systems. Although you can swipe your credit card fast and think that you have paid for what you think you paid for, there could be an error in the system, and maybe you could get charged falsely for something, or someone could go and double pay for something, or someone could steal your credit card and pay for other things. So that's the problem with legacy system, is there's just so many damn intermediaries, whereas bitcoin, you just freaking do your lightning transaction or your bitcoin on chain transaction, and there's no one in the middle. So it's pretty profound. ",timestamp:"01:07:07-01:19:03",topics:["Satoshi Nakamoto","Double Spin","Proof of Work","transaction fees"],type:"twitter_space",weight:23.245500377568373},{boost:0,date:1672167683,description:"Bitcoin as a superior savings system",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Beer and Plebs! 🍻😂🤌🏻",guests:[{name:"Dr. Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"51a969bb-dbf7-4d20-b128-74dcc5f560f6",twitter_handle:"VailshireCap"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"Laura Shin",profile_picture:"https://pbs.twimg.com/profile_images/1539462748173746176/hxR80FYT_400x400.png",ref_id:"a56a7b4d-edca-41d5-9d51-33396aa05b96",twitter_handle:"laurashin"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders Jensen",profile_picture:"https://pbs.twimg.com/profile_images/1382039124991954947/Wb9kT7MO_400x400.jpg",ref_id:"af45195e-77a6-463f-ba64-29c6b0437d9c",twitter_handle:"andersjensenorg"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2a1450bc-0649-4dc5-8ec9-1474af1ea1c3.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f7b6cfcb-7cd4-4401-a3fb-7735bb570c07/2ae49fca-a048-4a34-93b9-247513af5699.mp3",node_type:"clip",pub_key:"",ref_id:"433eb4ba-ba64-468f-9e3c-130fbc948adf",show_title:"Anders_🍆",text:"what. Do you do in your IRA? What can you put your money in that's going to be better? Well, the one I have doesn't have it's limited to some of the access. In fact, once I found bitcoin, those contributions stopped, to be honest with you. And, yeah, whatever they're in, they're in, but they're limited in where they can go, you see? So I'm letting that one ride out. Just another hedge, but everything else now, man, is straight. Bitcoin, brother. What's going on, Clark? Just chilling, man. Putting up some overhead storage in the garage. Take a couple of weeks off at the end of every year to recoup. Kind of feel blessed that I was able to work 50 weeks out of the year. So take these last two off. Yeah, on stage, Craig. Well, Jeff Ben, I don't know who else is going to Miami. ANZ and I, we're starting to spread our wings a little bit this year. We made it up to Charlotte for Halloween. Anderson pacific bitcoin. Now we're rolling into Bitcoin Day in Naples. It's been really cool to see all these other conferences and meetups start and look, I don't even care how small they are to get their foot in the door, but hey, we may have a dinner date with Fosse and Lawrence LaPard. They're going to be down there, man. So we'll hook up with them. And I think we're trying to get James Lavish to go. So when you get some of those quality folks showing up at a smaller type venue, it's really cool, man. You get to just hang out. You meet them offline, just the nicest people in the world. So if you're in the central, southeastern, southwestern Florida area and can make it over to Naples, yeah, we'll be there. Hey, shoot, I'm coming all the way from that west coast. If you're anywhere in the United States or anywhere in this universe, you should be at bitcoin day. It'll be fun. So the problem is, puppy. I think the reason why I haven't been given a feeling of 100% confirmation of our little gig there is probably because, as you said, they're trying to get James Lavish. If he's coming, I don't think there's any room left for us, bro. He'll be on stage with us if we do it. That's right. That's what we'll do. Just like Dr. Jeff came on. Toxic happier in Swan Dome, pacific bitcoin. But he was big timing us after 15 minutes. He just left. He just walked out. And you know why? Because he is part of a documentary. When is that coming out, Dr. Jeff? Well, first of all, I left because you always got to leave early to keep the people wanting for more, right? You can't overstay your welcome. So that's number one. That's the number one. Rule two, that documentary, I don't know when it's coming out. They're doing a good job with it, though. It's pretty sweet, but we'll see. So I think they interviewed a bunch of people at the conference, and I think they're going to try to get it out as a Netflix kind of movie. And I can't remember what they're calling it. It's like, God bless bitcoin or something like that. And just basically what bitcoin is. And I like to talk about sort of the social justice side of bitcoin and how it's meant for the plebs, not for the institutional elites and things like that. I don't know when it's coming out, but I'm guessing sometime maybe this year. I love it. Just like casually. So this documentary about me is going on the biggest network in the world ever called Netflix. No, we're just happy for you, Jeff. I'm looking forward to see it. I know if you're in it, it's going to be high quality work. So a quick shout out on that note to JD down there is Bitcoin Bacon. He does documentaries as well, and he's going to do one on toxicity. I'm honored and looking forward to play a small role in that. And yeah, that's it, I guess. But when it comes to bitcoin, really, the way I look at it is it's my love. If there's anything, bitcoin is love. And ",timestamp:"01:12:02-01:16:37",topics:["Bitcoin Hodling","Pacific Bitcoin Conference"],type:"twitter_space",weight:22.774441499003483},{boost:0,date:null,description:"Bitcoin Timechain: How Difficulty adjustment factors into the Timechain",episode_title:"Café ₿: Bitcoin News, Bitcoin Timechain ⛓Day w/ Ant & TC",guests:[{name:"@2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"190b5001-a42a-46cc-b0d3-b6f74c625648",twitter_handle:"2140data"},{name:"@Meditation_Man",profile_picture:"https://pbs.twimg.com/profile_images/1597303881339314176/kFqDWvq0_400x400.jpg",ref_id:"cf7119ec-50a5-4ba2-a9a6-4a24835f3364",twitter_handle:"Meditation_Man"},{name:"@TimechainStats",profile_picture:"https://pbs.twimg.com/profile_images/1316207411741569028/LpDkqBMv_400x400.png",ref_id:"48e0e34d-8e04-47c0-972c-96cda708a719",twitter_handle:"TimechainStats"},{name:"@TimechainCaL",profile_picture:"https://pbs.twimg.com/profile_images/1589772501638184961/0qP3C4Wk_400x400.jpg",ref_id:"72d94cc5-b62e-4fe2-8275-837eab35a74a",twitter_handle:"TimechainCaL"}],hosts:[{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"},{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/678e39f2-a92a-4745-b875-02645e38e747/9499bd7b-c204-4ad2-aa5b-d046f95f5a09.mp3",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"49fe88a8-79ec-423c-a550-a32eb875f090",show_title:"Swan.com",text:"And so I think the difficulty adjustment is a huge part of this, right? And so I don't know if either one of you guys can extrapolate on how the difficulty adjustment plays into this. Anybody could jump on that. I can comment. We could go for it. Yeah. So basically, depending on how quickly the blocks are coming in or how slowly the issuance of bitcoin is set in stone, or the targeted issuance is set in stone, so we know how many bitcoin should be mined in a given span of time. And so if blocks are coming in too quickly, in other words, if the timestamps are coming in closer than ten minutes, on average than every 2016 blocks, which is roughly two weeks, if they're coming in the way they should be. But if they're coming in quicker than the difficulty goes up, and it gets harder to mine. And the reason why they were coming in quicker in the first place is very likely because there were more miners on the network mining than there were the previous two weeks. And so they were hitting those blocks a little bit faster than they were before. So when the difficulty goes up, then all those new miners that just joined have to compete in a little bit harder fashion to bring in new blocks and you get the issuance back on track. And that's part of I think this is also like a very key point of what makes bitcoin hard money as well, right? Like the fact that we can predict how much bitcoin is going to be mined far, far into the future. We know with a pretty high degree of certainty that on average, for the next year and a half, 900 bitcoin are going to be mined a day, right? It might be like a few bitcoin more, a few bitcoin less, but in terms of any monetary system that we've ever had as humans, I mean, we've never had even anything close to this degree of certainty, right? I mean, it is fucking insane how crazy that is. Right. We have a totally automated system that handles the issuance of Bitcoin and there's really nothing else like it. It's one of the most exquisite engineering solutions ever in my mind. And the fact that it's such small lines of code, it's a beautiful system and once you fully understand or start to understand the way that it works, you'll lose a lot. It smashes a lot of the fudge out of your mind, like minor death spiral, stuff like that. Whenever you start hearing these headlines about price being a certain point and like, miners are going to go off the network and oh my gosh, Bitcoin is going to fail and die, they're not thinking about the difficulty adjustment when they write those types of headlines. Well, maybe they are, but they don't. Yeah. And the other thing that is important to remember is despite few lines of code, there's the whole fact that the code meets the real world through difficulty adjusted proof of work. So it's not just the fact that those in the mining portion of the architecture are having to expend real world energy at a real cost, and that this difficulty adjustment kicks in every two weeks to ensure a balancing effect. No matter how many or how few participants are mining in order to target ten minute average block times. This is where the rubber meets the road. It's code, it's real world participants, it's the boundaries and limitations of the expenditure of real cost and real energy. All these things coming together. And this is why this thing, I think, is so challenging for people who are on the outside just peering at the price and trying to understand what the hell is going on, let alone the whole fog and cloud of crypto and shit coins that just distracts and confuses. This thing is truly, truly special. ",timestamp:"01:14:46-01:19:27",topics:["Bitcoin Timechain","Difficulty adjustment"],type:"twitter_space",weight:7.870050430297852},{boost:0,date:1596671100,description:"Unfair ways Bitcoin mining is assessed;Electricity consumption",episode_title:"Chat_45 - Bitcoin & an Energy Revolution, A panel at the VOB Conf",guests:[{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Christopher Bendiksen",profile_picture:"https://pbs.twimg.com/profile_images/1362772558882484233/3nS-l35s_400x400.jpg",ref_id:"d99d354e-41d4-4117-9b70-05955a85f9da",twitter_handle:"C_Bendiksen"}],hosts:[{name:"Guy Swann",profile_picture:"https://pbs.twimg.com/profile_images/1401969630634196995/DqOuszMi_400x400.jpg",ref_id:"39c31930-d799-40a0-9a46-193117d03418",twitter_handle:"TheGuySwann"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"2b8ef20b-4134-4d6a-bb2f-ee72a42468d2",show_title:"Bitcoin Audible",text:"And I have to interject there too, that there is something important to keep in mind. When you look at different people comparing energy consumption, they very often talk about electricity consumption on a national scale. But that's not energy consumption. The electricity consumption of the country is only a small part of their primary energy consumption. So electricity is only, I think, a small double digit percentage of the total energy that we go through as a species. Sorry, go ahead. But I was going to say, in addition to that, not only is electricity a smaller percentage, electricity is a sizable percentage of total consumption, but for a given country, a huge percentage of most countries, energy use is outsourced. So if you're not a country like the US or China that's manufacturing for the world and you're a country that's importing, you are artificially reporting lower energy consumption numbers because all the products that made that everybody uses those emissions are reported under China or they're reported under the US. But in reality that's still energy consumption. So it's not really a fair comparison to say like bitcoin uses x amount of energy, like electricity versus x whatever small country, when you're only looking at the direct energy consumption in that country and not looking at the fact that they're getting all the resources from other countries that are consuming it elsewhere. Not only that, but you can flip that entire narrative on its head and say like when bitcoin uses more electricity than Chile, that means that even if Chile flipped their entire electricity infrastructure to try to mess with the bitcoin blockchain, they couldn't. Yeah, I mean, energy consumption is a good thing. It's just a matter of how it's consumed and how we produce that. Let me add one more thing. Everybody knows the market cap of gold, right? That's around 9 trillion. And that's 50 times more than bitcoin. And we know it from bitcoin. That by theory, if the bitcoin price is 9000 ethnic and by theory the production foster formed by bitcoin should also be 9000. It's not the case, I know, but by theory it should be the case. So now take gold. Honestly, nobody discusses gold. If gold, if the market is having a market cap of 9 billion and times 50 times more than bitcoin, then in case gold is produced, then what is in theory the production price of gold. That's the market cap of today. So 50 times more resources are being spent second by second, day by day, to somehow get gold out of good to ground. But this is not electricity. That's equipment and machinery and that's kind of, I don't know, all kinds of things which are working in some kind of gold mine. But isn't this also wasted resources to some degree? Nobody discusses this and it's 50 times higher at this point. I remember I remember a paper from Cruze Tomato that are exactly comparing metal mining with crypto mining. Oh, interesting. Okay. It was Nature Sustainability 2018. Bitcoin mining waste, ridiculously dangerous to the environment, like the cyanide that is used to extract the gold. And then if you just go through all of the environmental damage that gold mining does, bitcoin is like a space compared to what goes on in order to get gold out of the ground. And it was funny when gaming was brought up, I was speaking a concert, I think it was decentralized, in Athens Beach back in November and there were a lot of people there that is a stake and other nonsense. And I got into this big argument with someone that kept saying how bitcoin is so bad for the environment and mining can't continue to happen and how proof of stake of currency is the future. So it was a lot younger than me. And I asked him, do you play video games? I haven't played video games since I was about 21, 22. And I asked them do you play video games? And you said yes. And I said, well, how much electricity are you wasting by playing video games? Where is the productivity in that? So if you take all the gaming in the world, everyone that ever plays video games, you combine all that, how much electricity that is using, and please make an argument that that is more productive use of electricity than bitcoin, that is trying to give everyone politically neutral government free money. This is why this entire line of discussion is kind of like a bit of a red herring because the problem is that we don't have a good way to price externalities and if we did, then the price mechanism would take care of the rep. So I think it's partially done and it's partially I agree. I think a lot of it is a red herring and kind of missing the major point, which is the real environmental issues that we have on the planet today are how is steel produced, how are metals produced, how is concrete produced, how is electricity produced and how is farming done? Everything else makes almost no difference. Like those are the big issues. If our farms produce any way, it doesn't matter how much energy we use. If our mining and our metal production is done in a clean way, it doesn't matter how many metals we use. The earth is completely full. Like the cost of the earth is just materials. So if we're looking at the long term sustainability, it's a question of how these couple of processes are done and so the question of bitcoin's impact on that. It's such a small percentage of consumption. The question is more of which way does it incentivize production? Because if you see even a small swing in the way that if bitcoin, for example, is able to balance grids and enable them to use higher percentage renewables, then you'll see a higher renewable penetration and you'll see overall lower utilization of fossil fuels than you would in a situation without bitcoin. ",timestamp:"00:23:49-00:30:20",topics:["Bitcoin mining"],type:"podcast",weight:7.813010811805725},{boost:0,date:1637366400,description:"Bitcoin can act as a baseload for energy, including nuclear energy",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"42296529-2820-4c4f-be26-e12104e2b723",show_title:"Compass Mining",text:"it's about, like, the base load status of bitcoin mining and how the industry kind of use bitcoin itself. I'm assuming that it's not understood among most nuclear engineers or people working on these plans that bitcoin can act as a base load for energy. I mean, it's becoming a more prevalent talking point in a lot of different industries, especially natural gas. Is there an education initiative that's needed to that process, or do you guys see that it's already happening, that these plants are all across the US. All across canada and elsewhere, are already doing bitcoin as a buyer of last resort for energy? Back to you. Actually, yeah, definitely need some educational input there, I think, from other communities, because I think, like, one thing we need to understand, like, very few people today believe in bitcoin and bitcoin mining, and equally, very few people out there believe in nuclear, and there's a very fine nexus of people who believe in both. Right. So there's a big gap of knowledge in either industries about each other, and I think there's a lot of gaps to be filled there. One last thing I'll add to that point is this is something I've been thinking about for a while. I think sean connell tweeted this out too is like, I think bitcoin mining will serve as a global energy floor because suddenly you have a source, like a demand source, which will take up any energy above a certain price, and it'll just mine until it's profitable. I think it's going to have a massive impact on the energy markets, which people are authorizing right now, where a lot of these commodity prices are going to converge together because suddenly you'll realize that today, if I'm running a power plant and I'm selling my electricity to the grid, why am I doing it? Why don't I just mine bitcoin with it? Why sell it to the grid? Because I'm ten times more profitable just mining bitcoin rather than selling it to the grid. So if you believe in free markets out there and you believe in the economic incentives, then it just makes so much sense to these power providers. Just mine bitcoin because you don't even have to go anywhere. You can just colocate these in your own facilities and the footprint is so small, they're traveling in these mini huts where you can stack up these miners together and just mine on site and that you have a demand for there. So that's why I'm saying I think the grid will have to pay up a premium on top of the bitcoin mining for them to be incentivised to sell to the grid. And that's going to have massive ramifications for the energy market, which will completely change the game, I think, especially for all these advanced new technologies or other renewable technologies in the future. Yeah, peru is exactly right. We already have one example. Talent energy is building 150 megawatt mine as a joint venture with terror at Susquehanna nuclear generating station in Pennsylvania. That's going to be electricity that's flowing directly to their bottom line as bitcoin. When that announcement was made in July, after like a preliminary sort of heads up in an investor call in March, I was shocked that it happened that quickly. I mean, I'd been doing a lot of thinking about that and I didn't think it would happen as quickly as it did. Now that it has, now that they've broken the seal and, you know, as operators get their heads around this and understand that there are a variety of different models that they could use, they can do a straight power purchase agreement, they could do a joint venture. Maybe they do something as simple as taking some of the ample real estate they have inside the wire at these plants and just leasing it back to the mining company and maybe granting them access to office space for them to base. The employees are going to service that site and you can rely on the industry best security in nuclear. Physical security is credible on our planet. I think you're going to see more and more of these again. I talked to an industry executive just a couple of hours ago. He said he's up to his elbows and bitcoin miners coming to him. Okay, so it's happening. I'm doing my best to educate my members. I've held three webinars this year on the opportunity in bitcoin. I've been asked to establish a bitcoin cryptocurrency task force within NEI. We're going to be doing more events like this. So yeah, we understand what the. Opportunity is we're moving as quickly as we can and we're trying to get our people as comfortable as possible with it because we think there's a great future in it. That's insane. It's insanely awesome to hear all of that, especially, you know, building a task force internally to focus on this sort of stuff. Whoever that executives up to his elbows, he'll be, I'm sure, up to his eyeballs before too long or too much longer. But we're sort of at the top of the hour here and we want to wrap up relatively shortly. I wish we had time this conversation to go on for at least a couple more hours. This has been insanely bullish and insightful and like, just hearing you guys, you know, working full time in the nuclear industry, echoing a lot of the same things we talk about in our own niche, twitter circles and communities, we are speaking the same language and thinking along the same lines and it's incredibly, incredibly bullish. ",timestamp:"00:54:47-01:00:12",topics:["Bitcoin Energy Baseload","Bitcoin Mining","Bitcoin Education"],type:"youtube",weight:7.779880290018898},{boost:0,date:1596686400,description:"Impact of [[Electricity Consumption]]",episode_title:"Chat 45 - Bitcoin an Energy Revolution A panel at the VOB Conf",guests:[{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Christopher Bendikson",profile_picture:"",ref_id:"d72ead54-7bff-4874-870f-123e665fddfd",twitter_handle:""},{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"30641d73-c61d-47f4-bf37-f78566574dc8",show_title:"Bitcoin Audible",text:"kind of an inherent moral question there as well, is that do we get to subjectively put our values on to them? Like in making judgments over whether or not they can make that choice as to whether or not it is their value or not? And obviously, in a decentralized system, where are you going to do to stop it anyway? It's inherently an incredibly difficult thing to control or alter. Yeah, this gets to a very steep level of freedom versus coercion. Domini, to say that you watching a Netflix show is a waste of our common resources. I mean, that's not my difference. Did anybody compute how much electricity costs to watch 90 minutes Netflix movie? Honestly, there's research out there looking into data centers which is directly linked to subjectivity. So I have one student that looks into Amazon currently for the comfort print of Amazon, where you exactly have streaming as one source of electricity consumption. I made an estimate, I think two years ago of the electricity draw just gaming console Iceland in the United States, and it's on the level of 50 kilowatt hours. I like to make a couple of points here. I think that one of the important points to note is that electricity consumption is not in itself a bad thing. So electricity production and consumption is good, that provides value. The negative side is when there are externalities associated with how that is produced. So if we enable more renewables, more sustainable energy sources through bitcoin mining, then it's a net positive. I think the other part that is important to note here is that in the total scale of human energy consumption, bitcoin is nothing. It is completely dwarfed by any industrial process. Aluminum smelting, like concrete production, steel production. Bitcoin is such a small drop in the bucket compared to any of that, that any effects that bitcoin has on a more financial level, like if there's restructuring in the way that business is done, that will be far more significant than any effect of the direct energy consumption of bitcoin. And I have to interject there too, that there is something important to keep in mind. When you look at different people comparing energy consumption, they very often talk about electricity consumption on a national scale. But that's not energy consumption. The electricity consumption of the country is only a small part of their primary energy consumption. So electricity is only, I think, a small double digit percent of the total energy that we go through as a species. Sorry, go ahead. But I was going to say, in addition to that, not only is electricity a smaller percentage, electricity is a sizable percentage of total consumption, but for a given country, a huge percentage of energy use. Of most countries, energy use is outsourced. So if you're not a country like the US. Or China that's manufacturing for the world, and you're a country that's importing, you are artificially reporting lower energy consumption numbers. Because all those products that made that everybody uses, those emissions are reported under China or they're reported under the US. But in reality that's still energy consumption. So it's not ",timestamp:"00:21:14-00:25:05",topics:["electricity consumption"],type:"podcast",weight:7.691150903701782},{boost:0,date:1632355200,description:"Accessibility and the price of manufacturing potential ASIC home miners ",episode_title:"The ASIC Mining Hardware Market",guests:[{name:"Vincent Zhang",profile_picture:"https://pbs.twimg.com/profile_images/1158285609196109825/fuB-e6lm_400x400.jpg",ref_id:"98e7bc98-3a3b-4ddf-9b48-5dcd78973739",twitter_handle:"Whatsminer_MBT"},{name:"Vincent Vuong",profile_picture:"https://pbs.twimg.com/profile_images/1260974518547312640/n47yvbNL_400x400.jpg",ref_id:"8390e230-e36b-4e0d-9f5d-70c6635bf3c2",twitter_handle:"BitcoinVincent"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=qKeUCNXa4Uc",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"8dbb367b-5cba-4f05-a1db-104d0c66b579",show_title:"Compass Mining",text:"shift this exact same conversation into the accessibility and the price of manufacturing of hardware with a slant towards retail or home miners or hosted miners. If Damien doesn't mind throwing up my screen one more time here, I'll share it for you. In the market multiple times over the past, over previous market cycles, we've seen sort of small gimmicky devices that try and make it easier for people to mine at home. This one you see here, featured in a CNBC article with a variety of inputs there on some little plastic power strip is the latest version. We've also seen companies like Coin Mine try and offer products like this. How viable, long term or at all are these types of hardware devices when you're looking at a market filled with like top tier leading hardware, like what's miners manufacturing? And will this ever have sort of any place in the hardware market or are they mostly cyclical gimmicks that catch headlines, maybe sell a few units, but don't really have any profitability or long term lifespan? Curious to know both of your thoughts on these little devices we see popping up all the time. Vincent from what's minor? I'll toss it back to you and then Vincent from Compass, I want to hear your thoughts too. Yeah, so what we can see is in the year 20, 17, 20, 18, so people can easily mine at home because at that point of time the power consumption of the minus is lower and so the current brought by the minus is not so high. However, since 2019, so almost all the minus switched to more than 3000 watts. Okay, like our minus is 3400, 500 watts. So based on the 220 watts power, so the currency of the minor goes to 16 amp. So it is higher than the staff at home appliance at home. So we can see that some investors or some individuals, they have interest to invest because they might have some capital available, cash flow available, they just want to buy some minors and put it at home for mining bitcoin. So no matter this is interest or is kind of the investment, however, there are a lot of people try to do that. So from our point of view, this will not become the mainstream. Okay. Because right now you can see that the mining facility data center are becoming bigger and bigger. So earlier you hardly can see hundred megawatts mining farms. Right now you can see even one gigawatts mining data centers. So all those data centers are hosting the miners, most likely from the big investors. So this will consume, you can say 99% or 95% at least the supply capacity from our site. So the strength of our R and D will not be put to the 5% market. However, right now what we are trying to do is for mining business, one of the most important factor is that the power cost should be lower as much as possible. As lower as possible. So what we are trying to look into is how to reutilize the heat generated by the minus. So if we can reuse those heat generated by the minus, which means, for example, if we can share those hit at the power cost that we paid, which means you reduce the power cost to 20%, right now you have. So that's why we are looking into those areas. So how we can reduce the operation cost of the investors as much as possible. So that's why we spend a lot of time and they invested a lot into water cooling minus and the immersive mining minus. Okay. Because by concentrating more hardware together, so the heat generated by the miners may be reutilized in some of the cases, so it will reduce the cost of the mining. Okay, so this is the area where we are trying to work, because what we can see, at least from my side, I can see that the power cost of individual at home, actually it is not competitive. Okay. This will require the individual. Investors always should upgrade their or minus with the latest power efficiency ones. So otherwise it may not have the good profit level as they expected when the time goes. This is the share from my side. Yeah, it's interesting to see all sorts of creative solutions that homeowners try and make. And over the past year or two, or maybe a little bit more, we've seen, like you mentioned across the board, a crazy push to expand immersion mining tools and heat reuse tools for all sorts of novel and creative use cases. Again, to sort of maximize the amount of utility we can get out of a mining operation and sort of trim costs as well. Vincent, same question to you. Like what sort of utility or place in the market, if any of these sort of, not to be too critical, but kind of gimmicky small machines have when people are trying to look for cheap, affordable ways to start mining? Yeah, for sure. For me, I think that these smaller miners are like, especially retail miners. They're not 100% profit driven, so a lot of them are. They need to find alternative use cases. So a lot of people will run a minor instead of running a heater. Same thing, a little bit louder, but you still can heat your entire force. So by doing that, you kind of get two and one, and you're also mining some big one at the same time. And there's also people that are also interested in doing lottery mining. Lottery mining is basically solo mining with one machine where you have one in a million chance of getting it. But that's way better than winning it's, better odds than winning the lottery at least, right? So there's people that will do that and run their machines at Lost. And then there's people that just want to support the network as well, right? So people that want to just support the network, run a machine and kind of like put their vote in, cast their vote in, and that's totally fine. Not everything in the world is entirely profit driven. And then there's also use cases where sometimes when people have a solar set up in their house, right, the solar curve kind of goes up like this over time, where the peak happens in the middle of the day. In the middle of day is when people aren't at home. And so what you can do is you can start utilizing miners to kind of use that power when it's peaked, when you're not using anything else. And so there are a lot of alternative uses for these kind of small giving miners that allow retail to kind of keep themselves competitive. I think that's the best thing about retail miners is they can take advantage of these, whereas for the large institutional players, it's a lot harder to kind of push that kind of stuff through because there's a lot more involved with regards to the decision making and everything. For me, I think the simplest solution is like a retail investor, and I'm not trying to be a shield or anything, but it would be to purchase from Compass. The whole solution is very simple. Like, you don't have to invest in infrastructure, you don't have to invest in upgrading electrical, and you have to deal with the heat, the noise, the screen. It becomes a lot more simple like that. But there is definitely a larger subclass of people that want to get their hands on a minor and get dirty with it and try to find use cases for it. And I think there is a time and place and everybody in retail has the opportunity to do that, especially right now, when it's profitable for everybody. You can't guarantee that for the future, but as long as you find an alternative view sport, it's doable. ",timestamp:"00:25:59-00:36:02",topics:["ASIC Home Miners"],type:"youtube",weight:7.590939760401884},{boost:0,date:1639872e3,description:"Big States and Small States",episode_title:"PFP016 Remigijus Šimašius, Bullies as Neighbors-on the Foreign Policy of Small Countries (PFS 2008)",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/624262ef-b30f-4114-8061-e310187e6bb4.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=0WAituFO614",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"4369ba7b-c9c8-4bf8-906a-1d8e27b1558b",show_title:"Property and Freedom Society",text:"private privilege for people those days to discuss about imperialism and because it is usually not small stages who act such first ones it's usually big stages who start some kind of ongoing work to what you say when people try to draft the practical institution practically is when we discuss theoretical aspects of prior traditional defense but we see that our reality and general public do not allow is never to defend a country because ",timestamp:"00:01:04-00:06:14",topics:["Big States","Small States","imperialism"],type:"youtube",weight:7.585623406215426},{boost:0,date:null,description:"Bitcoin non-profitable projects and Bitcoin tipping",episode_title:"The Orange Sun 🌞 VISA, MasterCard & #Bitcoin #BOLT12",guests:[{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"~₿ Maxi~",profile_picture:"https://pbs.twimg.com/profile_images/1446241859651637250/i67F3y9p_400x400.jpg",ref_id:"ad997ae7-0726-431a-9f72-82da091c0658",twitter_handle:"fede0891"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"FireBurs†s",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"cda1d3ad-dd80-458b-a5fb-a28861df10a7",twitter_handle:"FireBursts"},{name:"Nikolai Tjongarero",profile_picture:"https://pbs.twimg.com/profile_images/1578458155964682274/_SzDxkAJ_400x400.jpg",ref_id:"821ee040-2267-454e-a59a-92da51568afa",twitter_handle:"BitcoinNaijaShw"},{name:"ブランドン",profile_picture:"https://pbs.twimg.com/profile_images/834861311762649090/N0KAP4zH_400x400.jpg",ref_id:"3d41531d-6a59-4771-81f9-0924b4c02561",twitter_handle:"blario"}],hosts:[{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/94a86a32-91c2-4717-b5cb-b36cef925776/38decc02-c922-4c1d-a605-7cd54c91a01d.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"5e6d5d88-bdb0-4350-8c03-13b0a24d3050",show_title:"Satoshi’s Journal",text:"else was I going to go over? Did I forget anything on charitable stuff that we're working on? Oh, master Gaunte is going to be coming out with a video. I'll give you guys a sneak peek. So we came upon a project, eva Kamani. She came to our space. She's actually going to be working with us out of Kenya. And she brought to my knowledge, a children's. I don't know what they call it, actually. It's not a school. It's like a kid house or children house where they take care of children by providing them food and water and maybe some education. And it's been a while since I read up exactly what they do, but she bought it to my attention. The guy that runs it has been running it for years. I think he has like 30 kids that he takes care of. And when I heard about it, I told her, hey, I want to help them. Master Gaunte is going to go and do a documentary and orange pill them. So we're not just going to give him satoshi orange pill them. So that's an up and coming video. That's the sneak peek. So someday you guys will see a pretty cool video of us orange peeling. And then at the same time, if we can get them to the point where they understand what bitcoin is, this children's home actually could be the first children's home that accepts bitcoin, and they could actually end up making a bunch of more children home. We all know that the value of bitcoin is going to go up. So those first few businesses that start, whether they're a nonprofit or not, the compounding effects of bitcoin over time is such that this one children's home could actually unfold and fund a bunch of others if they use the bitcoin that we donate to them wisely. So that's one of the biggest reasons why if you have a chance and you're so inclined, you can send a few sets. I think the best thing about bitcoin is you can send freaking one satoshi, ten satoshi, 100 satoshi. Anyone can afford to send one satoshi is $0.04, last I checked. I think it's less now. Anyone has the capacity with the lightning wallet to send ten satoshi's, and every satoshi counts. And you can't do that with dollars. You can't send half of a penny to somebody with not even visa. It's not like you can physically get a penny and cut it into multiple pieces. With bitcoin, you can send freaking increments of a penny and increments of a satoshi. I've never sent microsets. Have you ever sent microsets, olu or tk? I've never done it. But my understanding is one satoshi can be actually denominator. You can actually send parts of a satoshi. So from a charitable standpoint, there's no excuse, so to speak, because there's no room for someone saying, well, I can't afford one satoshi, I can't afford a fraction of a satoshi. Every satoshi counts. And in the end, when we get the dollar SAP parity dollar SAP parity, meaning that one bitcoin will someday be worth that 100 million, I think. So that's why literally every set counts. If you can send satoshi to somebody in central South Africa, central America, anywhere, get them orange filled, support them, send them the stats, tell them the importance of saving those stats. I'll tell you an example. It was actually Alexander the Great. Oh, so go ahead, be maxi, because I've been talking long time. Go ahead, it's fine. I was just curious because the first time I heard about what's like a micro, as you said, like micro. My understanding, simple understanding, is that once the toshi can be, you can send transactions via lightning in such a manner where you can send parts of a satoshi. So a satoshi can be divisible into. What they're called, and they're actually not defended by your actual node. That's what makes it so hard to actually defend using such a thing, because the milestones that are in between you and your channel partner within the lightning network, the nodes don't defend those. It's like a weird tracking system they have for the like it's almost like dust limit type stuff. If your partner channel closes it, and for close to your channel, those milliseconds are lost. There's nothing guaranteeing that you get those milliseats back from that other person, from your counterparty, because they really don't like it's, not really. They don't really exist. So this is how we get into this argument of all bitcoin is divisible infinitely. And that's not how it works. You can't just keep dividing bitcoin forever. What ends up happening is you end up just multiplying the supply because then you'll have a smaller denominated unit that's actually going to be worth more because it's smaller and more divisible. Therefore it would be a secondary monetary asset on the network itself. It's a very nuanced topic, but once you get down to integrity of it. So is it more like, let's say sorry, is it more like a theory, some sort like conspiracy theory that some people believe you can, like, you know, create? Like Microsoft like today is very small unit of a sad essentially. Essentially that's what it is. Because bitcoin itself only recognizes the units individually, which is 2.1 quadrillion satoshis. That's all there ever is. Well, with lightning, we have the ability to send fractions of those satoshis which are denominated as millisats. The only thing is when you settle those millisets, that those millisets can't get settled on chain because they don't exist. So you see where we have this dichotomy of when you lose a channel partner. Those milliseconds are just dumb. That's why if your balance is that small at closing time of the deal on the chain, you won't see your balance because there are many sites. They. Only exist within the lightning network. And that's it. They don't exist anywhere else. Yeah, that's what lightning network is going to take over everywhere. Because if your balance is that small, this is very, very small. But of course can be broken in lightning. It's long. You will get any transaction that you do. But with lightning, you can actually still have something still smaller than the smallest partnership. Actually, you can have something so smaller than that. And I think everything will be repricing bitcoin, because everything will not be valuable if one start can be equal to one dollars. Jesus Christ. So if you just have 100 and you have $100, and imagine the inflation that would have messed up with the dollar. In fact, all bitcoin has to be the richest in the world. And that's why it's just 21 million. Try and get some guys, please. Yeah. And I'm sure in the future will get to the point where these millisets won't be as theoretical per se. There's not a conspiracy or anything behind it's possible using lightning and the possibilities of lightning are as much as a developer can develop and make things more possible. So we're seeing developments in lightning all the time. I mean, I just talked about eight companies that are contenders for the I think it's a both for fun competition. Yeah, that one, I bought it like yesterday for the first time. The both twelve that you can they're trying to integrate the onion, like anonymous chat where if a buyer wants to shout and tell them how I'm here or whatever. But I don't know what the issue is because I was listening to someone and they said it was really hard to integrate the bolt twelve. Yeah, no, that twelve is going to be awesome because it allows you to have a static QR code that you don't have to. So right now when you use lightning invoices, they expire and bolt twelve will allow a lightning invoice to be used into perpetuity is how I understand it. And bolt twelve will be we're going to try to get that integrated as soon as possible. It's just a matter of I'm sure some developer has already got it to the point where they're using it and it just hasn't proliferated. But as soon as it becomes basically unleashed in full, then everyone's going to have the ability just to real quickly create a lightning address and post it at their business and that lightning address will last forever. The implications of that are awesome. I mean, that's just one innovation that's happening of many in the future. We don't even know what's going to happen in the future. Open source. So like you can put that on basically any lightning network apps. Yeah, I mean, that's the cool thing about lightning is anybody that develops on lightning, because lightning is an open protocol, anything developed is complimentary of anything else that's developed. So whether you're building an exchange or you're building whatever you want to build on bitcoin or lightning, the open source part of it allows the system or everything on top of it just to get better and be complimentary. So it's freaking awesome, man. I think almost every day I hear something new that's happening. Portland Hodl, he does a space every week and he talks about the bitcoin improvement plan. Yeah, bitcoin improvement proposals. And every week he talks about a new BIP and he explains what that BIP is. So these bitcoinners that are developing on top of bitcoin, they come to the table with a proposal and whether it's implemented or not is a whole different story. But they at least come to the table and they say, hey, we would like to implement this proposal and that's on bitcoin. I don't know if they have a similar thing for lightning. Do they have like a thing for lightning that's like a lightning improvement? They do. I think it is called bulk. I think that's why the bitcoin. Is what you have said. The fact that you can reuse the QR code and look at how interesting that is going to be. I think Bmax was talking about lightning apps, but what about other things like billboard, like your shirts. If you are a walking billboard for Satoshi John, there is a cure code. Boom. Just imagine. Or for any business at all, especially road fines, billboard, books, souvenirs tea cups, frames, just imagine on posters, on stickers, initially on both eleven, we could not use more than one invoice for one transaction. If you try to reuse it, you may be in trouble, you may find yourself in trouble. So that's what is making both twelve very more interesting. Everything that both level does is what both twelve can do and do better. But now you can actually use one QR code on lightning. You don't have to be changing it. You can put it on anything. You can put it on a tattoo. Wow. That'S a really good point. If you were actually to use these static QR codes from both twelve and put them on billboards, put them on shirts. If you're a businessman or woman, you just prominently display them everywhere. People could just literally scan the QR code off the side of your car, off of bill billboard, off the side of your hat. If you do get a tattooed on your shirt, on your skin, I mean jeez, the implications are amazing because people can just send payments to each other using the bolt twelve wherever they put it. ",timestamp:"01:10:47-01:25:10",topics:["Bitcoin Charity","Bitcoin Ttipping"],type:"twitter_space",weight:7.444137096405029},{boost:0,date:1677582e3,description:"What Micro Loans are and the motivation behind them",episode_title:"Ep. 514 The Future of Crypto in the Media with Blockchain Boy",guests:[{name:"Lucas Dimos",profile_picture:"https://pbs.twimg.com/profile_images/1092408696838197250/n0-St2nZ_400x400.jpg",ref_id:"9ac17e2f-49bd-4fc5-bfe5-2f380ca63574",twitter_handle:"lucasdimos"},{name:"Blockchain Boy",profile_picture:"https://pbs.twimg.com/profile_images/1602154101642592256/A0OX97CT_400x400.jpg",ref_id:"4b070a6f-bcc8-4708-abaf-cc830709600f",twitter_handle:"BlockchainBoyy"}],hosts:[{name:"Aaron Malone",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"bd103540-8c0a-4ab3-b5cd-24a3f2c43ab2",twitter_handle:"pizzamind"},{name:"Bryce Paul",profile_picture:"https://pbs.twimg.com/profile_images/1182725652794892288/QbDOKHcP_400x400.jpg",ref_id:"0d670dbf-f434-43b6-b454-8e5345d7ee51",twitter_handle:"BrycePaul101"},{name:"Pizza Mind",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"16cb01cf-9f04-45db-a440-47259b02b86a",twitter_handle:"pizzamind"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/93a6fe5b-364c-43f4-9f38-7da3e811460b.jpg",keyword:!0,link:"https://chrt.fm/track/DD9393/audio1.redcircle.com/episodes/68f31cee-f404-40fe-85d7-a406019e916f/stream.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"e2a347d3-a7ce-4200-836e-0c3df94980ce",show_title:"CRYPTO 101",text:"Look at that. Yeah, look at that. Dude, he hooked me up. I bet there's even an espresso shot in there. That's crazy, man. Fantastic. So where was I? Oh, yeah. So you can empower entrepreneurs from other places around the world who need maybe an $800 loan to get more fertilizer for their crops, to double their yield, or who are opening a small store in their community. And it's a way because charities actually can be actually very damaging for local communities. Like with those Tom shoes. You buy a pair of shoes, they ship a pair to somebody who needs them in Africa or whatever, you're putting the shoemaker out of business. It's ridiculous. And you're hurting the local economy by making them dependent on foreign aid. And I don't believe in that. I don't want to give people what they need. I want to give them the tools to get them where they need to be by themselves. And I think that's really what makes me happiest. And so I want to find ways of doing that, and that's just one way of doing that. Yeah, no, I love it, man. So I kind of want to talk back to Tik tok I was just thinking, I saw the other day there was a potential ban on TikTok that, like, lawmakers are out. What's your take on that? You have a quick take? Well, we can choose who we want to sell our data to, but it's going to be sold anyways, and they just want American companies to own our data and not China. But I mean, they just let that weather balloon get across the entire continent in the United States before shooting it down. So ",timestamp:"00:24:04-00:25:29",topics:["Micro Loans"],type:"podcast",weight:72.76897614568216},{boost:0,date:1637366400,description:"Anticipated Bitcoin mining industry and nuclear energy industry intersections in the near future",episode_title:"Securing Bitcoin With Nuclear Energy",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"},{name:"Eric McErlain",profile_picture:"https://pbs.twimg.com/profile_images/1252969137/Screen_shot_2011-02-23_at_10.59.21_PM_400x400.png",ref_id:"4815365d-44d0-4b06-9d9e-32070158d03c",twitter_handle:"atomiceric"},{name:"Puru Goyal",profile_picture:"https://pbs.twimg.com/profile_images/1590742805613203456/QAtYq_C__400x400.jpg",ref_id:"c24af059-b38b-4ce5-9547-9192c9eff579",twitter_handle:"purugyl"}],hosts:[{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"},{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=YBaA17NODlA",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"27290854-e30c-4f09-aee9-c6ee23a4854d",show_title:"Compass Mining",text:"thing I would want to wrap up with is a little bit of an open ended, forward looking question. Like we've talked about a lot of the dynamics for bitcoin miners and nuclear power producers to work together, a lot of the mainstream perceptions on both of these sectors. If you had to, I guess, pick one or two things in the very near term future that you're expecting to see. I know a couple of you guys have mentioned that some of the recent developments have surprised you or been larger and faster than maybe you expected. Looking forward to the next two years? What's something at the intersection of bitcoin mining and nuclear energy that you are expecting to see you're looking forward to? Whether it's one particular company or maybe a broader trend in adoption, I'm not really sure. I'll leave that up to you, but yeah. Any expectations, Ryan? I'll hand it back to you. Well, in the next few years, I would love to see bitcoin mining be applied in such a way that we could save the Pickering reactor from being shut down, because that is a travesty. That we're going to lose. That and nuclear power in Ontario is one of the biggest reasons why we were able to eliminate a lot of our coal power. And if we lose a reactor, it's going to just go back in the wrong direction because we've got the refurbishing, the Bruce reactor and the Darlington reactor right now, there's no reason why they couldn't go ahead and do the Pickering as well. But I think one of the big concerns is those demand risks. With more renewables coming online and there are intermittent seats, it causes too many surplus generation events and then it creates massive economic liabilities on the reactors and then they get deemed economical and then they get shut down. And so we now have an opportunity to kind of reverse that trend in a way. And make a big gains in the saving reactors and refurbishing them because we could keep it going for another 40 years easily if we just put the time and money into it. Interesting. That's actually fascinating. Peru, I want to ask you to same question. Anything in particular you're expecting over the next short term? Two, three years? Yeah, not two three years, but I feel like by mid 20s what you'll see there's a lot of these small modular reactors that Ryan been talking about for a while too. I think those are going to come online, either demonstration plans or companies are going to start making them because the life cycle of making constructing these plants is much shorter compared to the full scale plants that we've seen in the past and companies are already developing it. And I think, like I talked about, I think it makes so much economic sense to just mine bitcoin with them until the grid providers are offering you prices which are comparable or a premium on top of the bitcoin mining price. Like if I'm running a nuclear advanced technology company today and I understand bitcoin mining and I'm just like trying to get these reactors online as soon as possible and colocating a mid bitcoin mining rig at the same site. And just mining with bitcoin with it until the grid prices reflect a premium which I'm willing to take and provide my power to the grid. I don't want to bet on the timing of this, but I think we'll definitely see this over the deck and I think it's going to be great to see. I think bitcoin mining industry will also evolve over the next few years for sure, based on just how much hash power is going to come online over the next couple of years. I think both industries are going to benefit from this. That's awesome. Eric? Yeah. Same question. You just wrap up on anything you're expecting, I guess. Well, I mean, when you ask me what's going to happen in nuclear next two, three years, I have to remind you we plan 510, 15 and 25 year increments. So that could be tough. So I'm going to say more of the same. I mean, we had those three announcements in July, talent and Terrawolf energy, harbor and Standard power, and then of course Oklahoma and Compass within like ten days of one another. Bang, bang, bang. It just completely changed the way we look at the world. And I think we're going to see more of that. We're going to see more of that. We're going to see it happen more rapidly. From any eyes perspective, we're hoping that one of the introductions that we've brokered will turn into an actual deal. Whether it's a straight power purchase agreement or something more profound like a joint venture between a minor and an operating plant site. We're crossing our fingers that we'll be able to say we helped something like that happen sometime soon, but I would say more of the same. The one thing that I will think that I'm going to project may happen in five to seven years and it builds up something. Peru said. I think you may very well see an announcement about new build for An SMR where the miner is twinned with the construction of the reactor. That they will happen at the same time, or roughly at the same time. So when the reactor goes critical, that miner will be able to take that power immediately. I think that we're going to see that kind of coordination. I would like to see that kind of coordination between advanced reactor manufacturers and mine. How's that? That's awesome. That's perfect. To seeing some agreement from the other gentleman here on the panel with regards to that. That would be beautiful to see. Getting more conversation in the chat. We're a little bit over time now, so unfortunately we do have to wrap up. But I will say for everyone watching, all three of these guys are on Twitter. Relatively active, but definitely must follows. You can find their handles in the description below this video. It's all three of you. Thank you again so much for coming on the stream, chatting with Will and me. It's been a super fun, informative, insightful conversation. Super glad we found time to do this and that's a route for us here at the Compass Livestream. Appreciate y'all watching. Be sure to like and subscribe if you enjoyed the conversation. Helps other miners find this content. This conversation in particular was just outstanding. So, again, thanks to all three of you. Appreciate your time. And that's a wrap. ",timestamp:"01:00:13-01:06:32",topics:["Bitcoin Mining Industry","Nuclear Energy Industry"],type:"youtube",weight:7.335028414441784},{boost:0,date:1670706053,description:"Understanding stacks",episode_title:"Bear Market Buidl — Major #Bitcoin developments! #Stacks #Sidechains",guests:[{name:"@GriffdenNFT",profile_picture:"https://pbs.twimg.com/profile_images/1604377729062895617/R4pSEdH4_400x400.png",ref_id:"dafdf7ec-28c0-43d3-a0d9-b2d266f38738",twitter_handle:"GriffdenNFT"},{name:"@Chad_333",profile_picture:"https://pbs.twimg.com/profile_images/1592310541732970496/o1tbw9Eo_400x400.jpg",ref_id:"484c7695-6a4e-4141-9585-1109bf23f8cf",twitter_handle:"Chad_333"},{name:"@jackbinswitch",profile_picture:"https://pbs.twimg.com/profile_images/1601214177439260672/O0SpU5B1_400x400.jpg",ref_id:"9685e7f3-3e0c-4b84-9fd9-b8a1d96f6ae9",twitter_handle:"jackbinswitch"},{name:"@jimdotbtc",profile_picture:"https://pbs.twimg.com/profile_images/1593210347825119237/L_SNThWQ_400x400.png",ref_id:"5dcf5545-fad6-44ee-ae56-360c5efe1151",twitter_handle:"jimdotbtc"}],hosts:[{name:"@BigRpic",profile_picture:"https://pbs.twimg.com/profile_images/1604962150388219904/WqiCye-r_400x400.jpg",ref_id:"726f0c95-9d94-4d44-a056-8ad3c9e3ddd5",twitter_handle:"BigRpic"},{name:"@CarlsonDoc",profile_picture:"https://pbs.twimg.com/profile_images/1597382056308350977/1NPexynZ_400x400.png",ref_id:"e34fa2b2-a58e-4461-81a0-d10c1058dfc2",twitter_handle:"CarlsonDoc"},{name:"@STXLDN",profile_picture:"https://pbs.twimg.com/profile_images/1533793338931007488/o3laQDCp_400x400.jpg",ref_id:"5c3bc906-3aed-44f9-851a-94804c6fe5ca",twitter_handle:"STXLDN"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99046513-2614-4eae-9de4-5781ba4b330a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/fc3bebcb-8271-433e-8d81-84dd06f3b022/aec527bc-539d-4d3b-9bad-db4af9e1a1ba.mp3",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"3008a0a4-d3c8-4d33-aa67-f39e4ce1a87c",show_title:"STX:LDN",text:"Yeah, that's awesome. I definitely agree with the degenerate part, for sure, but no, I'm looking forward to it. Thank you. Yeah, I appreciate that. It sounds really good. Thanks, Chad. Yeah, it's not really what our mentors are maybe pushing us to kind of do, which is more build infrastructure for Stacks, but that's where we can hopefully turn this into a more dev tool for users or creators, I should say builders that want to build on chain gambling games. And yeah, we're really excited about it. Thank you, guys. Yeah, I personally think the more user ability there is like, things to do based on chain I find more appealing than I guess, like, the super techy stuff because hold on 1 second. My daughter just pulled food out the fridge and I'm not even ready to start dinner yet. Yeah. Griffin, you were more of an Ethereal native before you came to Stacks. Kind of like myself, I think it'd be interesting to talk to you about the most striking thing that you notice switching from Eve to kind of get an exposure to this ecosystem, which I find to be completely unique in the crypto space. I hadn't found anything like it thus far. Right. And so when I came here, I'm like, oh, yeah, I'm home. This is where I'm supposed to be. So I think you probably also have some really good perspective where that's concerned. Yeah, I'd love to touch on that. That's a great point, and I'd love to make that clear to you. I missed our conversation the other day. I don't know if you saw my DM on Zoom, but I'd love to catch up one on one sometime too. But coming from Aetherium, I first tried out Stacks maybe three or four months ago, and I guess I truly didn't understand the awesome tech behind it. And as someone who is used to my transactions completing about 30 seconds to a minute, I wasn't super excited to use Stacks. But once I understood that they at the foundation and a hero all understand that's one of the biggest issues users have with Stacks and that they're working on Scaling, then I really realize that this is going to be a viable competitor to the other smart contract blockchains one day. And I'm just happy to be here. Like Trevor had mentioned before, all the noise happens and it's a smaller community. So you guys obviously are a bit more tight knit and respecting to community members, which is something that has dropped significantly in the Ethereum community as it grew. So I really hope that Stacks can find a way to carry on that great culture that it's got right now and be that inviting blockchain that Ethereum and Solana have failed to be as they grew. It's that, like, feels at home type feel. I know exactly what you're saying. Yeah. I mean web three. A big part of web three is community. Right. That's one of the underlying pillars of what it is. And I have faith that this community will be able to grow and maintain its character. I think it's one of the benefits of Stacks, being a community that has been slow to grow. You have guys like Jim and Dash who were here at the very beginning. Right. And so they have such interesting perspective to see how it's shaped so far. Yeah, I think that you cannot have where we're going with being disjointed and just kind of when someone new comes in, they just feel like a mark being ready to be ripped off, right? You need cohesiveness and you need good people trying to go towards a common vision. And the common vision here is having a user owned internet built on Bitcoin, right? That's really what it's all about. And I think that we're off to a damn good start. So I'm excited. I don't worry about us losing our character. I think that the fact that this thing has just been building slowly over the past few years only reinforces the foundation. And that's the thing as well, jack I say this to a lot of people about the build up lap. Because the build up here, if we actually look at things and I know you guys, that Dash and Jim have been here for a lot longer than me, but even I had heard of blockstep when it first came out, and not first came out, I'd say probably a bit later on towards the ICO or the token. So, shall we say. So I'd heard about it and I was a bit dubious because it was kind of like, okay, it's bitcoin not on bitcoin, it's a bit weird. Sounds a bit weird to do another chain. I suppose at that time, maybe I wasn't as experienced. I was just starting out professionally in crypto, so maybe I wasn't that experienced as I am now. But when I first kind of started researching back into it and I've seen stacks and then I started researching and I realized it was block stack, it was like, wow, so this has been here for a long time because I remembered that block stack had been around since even a few years prior to the whole token. So going back and looking at the whole kind of long history of block stack in the game and stacks in its current form, it's been around a lot longer than a lot of stuff, like a hell of a lot of stuff. It actually borders on being around a lot longer than even Ethereum itself. Do you understand what I'm trying to say? It borders on being around longer than the theorem itself. So it's like yeah, I think it's just great to see that at this moment in time with obviously the Stack 2.0 upgrade, we've got 2.1 coming and all of the hard work that the builders that were here before us have done. It just really just seems like it is the right time for this to be out there in the world. And as what Trevor said to Grifton, it's like before the noise comes, isn't it? Like you said, you've got the tight knit community and you've got everybody just building. And because everybody has that focus, as you said, Jack, of the user user on Internet, on bitcoin, nobody's like there's not a million other 29 880,000 different coins and tokens that we're all talking about. I suppose that's one of the key or some of the key elements, but yeah, sorry, Jim, go ahead. I was just going to say, well, thanks for doing this call. It's really been interesting hearing you guys, and thanks for all the big intros, jack it's actually really interesting just even listening to this call and taking myself back to the same sort of point in the last cycle, because I think Dash and I were kind of working with Stacks probably around 2017, possibly a little earlier. I think it was interesting as we we imported one of the we imported the first two way bitcoin ATM into the UK in 2014, and it was just a big, you know, it was a big bet on bitcoin. And, you know, we were, we were thinking about remittance and, you know, the difference it was going to make for, you know, the world's unbanked. That was kind of the initial reason we got into it. And so we met quite a few really interesting people, not being not crypto people prior to that. So we were actually musicians working in the music industry, so it was a steep learning curve. But we met this guy, Mike Cohen, who's one of the core developers on Stacks now. I remember him coming into where we had the ATM, possibly around 2015, and saying he was like, oh, have you heard of ethereum? There's a big thing coming along, it's going to be really exciting. It's got the security of bitcoin in a way, but it operates really quickly, so you can have these things called smart contracts. And, of course, I'm going into my old work in music and thinking how we could set up all these amazing payment mechanisms where a stage manager presses a button to say that the band has finished the gig, and then there's this whole domino effect of payments. And then by the time you get on the bus, you've been paid. That sort of got us thinking. So I really got into a theory briefly, but Mike had already said, this is what we're kind of working on is doing on bitcoin. You know, it can be done on bitcoin, right? And this is just vitalics kind of jump the gun. It's really, really cool, but it should be done properly, it should be done in a different way, and it will happen. And I think he was already involved with Blocksack, and then, yes, probably a year or two later, we started doing this stuff, this at Mining, which didn't really work too well. I think it was a bit of a scrum for just lots of people with lots of ideas and no real central. It just didn't feel like it was really working. And then I think that was running up to the beginning of sort of 20 end of 2020, beginning of 2021, when it felt bit similar like this. You know, things were just about to sort of certainly with Stacks, the main net was about to launch, but there was no one really there. But there were people coming in. It was a really exciting vibe. Lots and lots of community, really great sense of just a handful of you sort of doing this really exciting stuff. And I was just buzzing because for years I've been thinking, this is coming and suddenly it's here and we can make NFTs. And so I'm like, we got to go big. And then dash. And I like, let's get fat, boy slim. It struck me, the last big Whiff and Brighton fat Boy Slim was the last big sort of global superstar that came out of Brighton, which was why Thoughts instantly went to go, let's get Fat Boy Slim on board. But it was just such a funny environment because we started with all these huge names. Fatboy Slim, Cara Delevingne, Orbital, Dave Stewart from the Arithmetic and Chemical X got them all together, all through various we're friends with a lot of people through music anyway, and Chemical let's very good friends with Kara Delevingne. And so we then march these guys into this empty network and it was a hell of a sales pitch, I tell you, because we were saying, this isn't going to be the hype that you're expecting. If you go and do this in a theorem, yes, it will be worth you probably make millions out of it, but this is bitcoin and in ten years time you're going to be revered as Legends for being so ahead of the game for doing this. So we did manage somehow to get them in, but then it was funny because there just was no one there. We were lucky that we sold, I think the Car One sold for 20 or $30,000 worth of stacks, which she gave to her charity. So that was really successful in that. We got some noise out there, but I guess I was thinking things would move a bit quicker. I got kicked out of so many reddit and different groups for going in there and trying to say, hey, this is it. This is the thing everyone's been waiting for. And everyone's just like, shit coin, shit coin to get out. I mean, I just got kicked out so many forums and just everywhere I went, the moderators just kicked me. And I mean, I can't necessarily blame them because at the end of the day, as we've said, there's this huge number of pointless coins and you know, 99.9% of them are just scams. And so you can't blame someone's defense mechanism for that. It's operating correctly, ultimately, to call me a shit coin, but I'm just in there trying to say, research, look into this. This is the way that Vitalics should have done. It kind of unfortunate. They probably had this minibus idea was at the same time or around the same time, but he just wanted to do it properly, which was another thing I was especially at the time, back in 2018, 2017, the Tether thing had been massive. There. Was this whole security thing was just flying around, and it was like, this is the right way to do it. But at the same time, the whole time that Stacks was trying to decentralize to the point where it could start bringing in the audiences, the ethereum mess was just growing. The off bitcoin, blockchain, unmined kind of mess was just growing at a rate of knots. And it's just kind of sad that didn't kind of just have that leap of instead of burning, because they always knew burning was bad, and that's for people who don't know. That's how theorem kind of started. You had to get value in there for people to stake, and mine and all the rest of it, it was burning bitcoin. And so the quicker they got that value locked into ethereum, then they got people going, okay, we've got a network here, and we're all supporting it, we're all invested. And if only you'd had the thought to just do proof of transfer, because we wouldn't have this whole mess, we wouldn't be here now. We'd all just be in that. I don't know what it would have been like, but it'd be a very different world if everything had just had just started from here. But here we are trying to do it. But yes, it feels like a really big battle now, because it was really interesting when we had that Sappy Seals thing a few couple of months ago. I think that was really interesting. It was someone with an enormous following on a theorem doing kind of follower farming or something, just trying to go out and get people to follow on Twitter, and just said, I'm thinking of moving to Stacks and everything. Everyone on Stacks flipped out and go, quick, I'll post on this guy's thing. He's got 100,000 followers a day. But what was really interesting was that was what triggered the BNS rush, because all these people that kind of I've been trying to get my voice into their forums, they suddenly just got introduced by a person who wasn't going to get shut down, and he was even trolling in a way. But suddenly these people, all it took was someone to say, there's something you can do with bitcoin. And then the cleverer of those lot looked into it and then went, holy shit, this is a really cool idea. And then it was a really amazing event, and it does fill me with confidence that we're in the right place, we're doing the right thing. But it is quite a battle going through this and actually getting everyone to kind of get on board. I was shocked by the bitcoin conference when I went out to Miami, went down to the conference on the Friday I was with Drew Falkman, and we went in and we were just instantly taken by just a funny vibe. And we'd been talking about I was going out there with a special work of art that I really wanted to get into the conference and went down there and they were just like, no stacks there's. No stacks. NFTs are allowed in here. But in the center of the conference was a huge array of screens selling Ethereum NFTs. And I was quite shocked, I was quite shocked that it was preferred to put Ethereum NFTs on screens in there and somehow put it under an umbrella of being valid at the Bitcoin event. But that was shut out. And then I got a photo, I think, of which one was it, Miami Coin or New York Coin? It was the closest we got to that conference was about three blocks away and I've got a photo of this truck with just a flatbed lorry with a Miami Coin sign on. And I kind of felt at the time that there was a bit of a bit of a there's like a kind of old boys club already in Bitcoin with these guys from I guess from Block Stream that started all this stuff with side chains and they kind of create they were kind of, in a way, the original Bitcoin accelerator, I guess. But they were going down a route of everything being federated and centralized and so now we've sort of got it from both sides. We've got established businesses who have an inferior way of operating, basically, and a business model that was always going to get swamped by decentralization eventually. Maybe they thought they'd have a bigger head start, I don't know, but now they're definitely not happy about stacks and doing it on. There was a big thing with Adam back and maneuver on Twitter. Manev was being very reasonable and Adam pack just kept going back to pre mine, pre mine and lack of Bitcoin miners, which I couldn't actually disagree with him with the bitcoin mining thing, which sounds like this new upgrade is going to allow decentralized mining, which could in the perfect world, you've got everyone in Bitcoin. Like, again, if I think go back to Vitalic, if he had done what Mane did, I think at that point the small Bitcoin community would have said, it's our job now to mine this smart contract network. So while it's just automatically assigned 1% of what you're holding to mine, we'd just be in this amazing world where this smart network is just accepted as being a good thing, but instead we kind of got to fight for that. But decentralized mining is a massive step towards that because that does allow people, hopefully to mine with very small amounts, which will be that's a game changer because that's when we can just start getting people. That argument then falls away once you've got the centralized mining, that argument goes. The other arguments were just, in my opinion, bullshit, because the whole pre mining thing, it's like, I mean, look at Bitcoin, look at him. And every successful network kind of started that's the process of decentralizing who mines it. In the beginning, it's just kind of got to be done. And it sounded like an argument of a corporation fighting against something that they know is good and know is competitive and know is worthwhile, but they're going to argue it till they're ready in the face that they're going to find some some issues with it. So anyway, yeah, it's been a long journey, but it's really nice hearing you guys tonight and seeing some new people coming on. It does feel like we're just getting into that bit where the markets have kind of got close enough to the bottom that people start kind of moving again and then some people are looking for other change while things are down, they're looking around and some people are coming here and finding this amazing network. And thanks for letting me go on, Jim. Totally, totally. Respect goes out to you, my brother. And it's funny hearing your story as well, especially yourself being from the UK. Because part of the reason why we started up Stacks London, we kind of just started off out of the blue because I've been around in the space for a minute and I've not really seen anybody talking about Stacks since, you know, the old block stack days. So when I, when I really dove in in 2020, I was like, you know, after a couple of months, I was like, well, what's going on? And I'm going to all these events and speaking to all, you know, same people and same networks, and it's like, nobody's talking about Stacks and talk to people about Stacks, they're like, you know what, Stacks? And then now go block stack. And they're like, oh yeah, block stack. You know, we remember block Stack, like. What'S going on over there right now? So it's really weird. And then there's a lot of synonymity as well, with your early story as well, because, I mean, my first real kind of, I would say, dive into learning about bitcoin was around 2013, 2014, and then when I first kind of discovered, let's say, all right, blockchain and what blockchains are and how blockchain operates wasn't until like, a year later and again, coming from a music background, my first thing was, okay, so when you said that bit about people getting paid, I swear that we literally had that same we was in the studio having that same conversation. I think everyone who got in at that time immediately, if your mind operates quite quickly, like a lot of, I think, builders minds do, you do tend to jump instantly to the ultimate solution, which is like, oh, look, here we go. Everyone in the world who has a phone now can transact with anyone else in the world. Great poverty is kind of on its way out, but now later on, you're like, yeah, we're ten years into this game now and it still feels a long way away. Even in terms of just that kind of accessibility for people. That focus really isn't on remittance, I guess it's more on certainly now it's like on people sort of surviving and building businesses and making money. But it would be great once that kind of rush gets in the same way. Like the.com bubble, it's like this massive rush and then afterwards the really useful shit sort of starts happening and hopefully we'll sort of get to that point soon when the real thing that bitcoin has to give humanity can really start working for people. Yeah, definitely. I think that's part of a lot of people's entrance into Stacks as it being stacked rather than Block Stack is that kind of frustration. I think that's where it definitely sits for me, having that frustration that you're watching this thing play out all over again and everybody's heads just in the clouds and you've got all of these new people coming in. Nobody wants to let people or teach people the actual core fundamentals. They just want to, I feel like, a feeling of they want to sell their particular idea. So I feel that a lot of projects have just completely run away with that. And again, not to say that there's not a lot of other great projects out there, let's say Blockchains and the technology and cryptocurrencies themselves do kind of provide that open medium for people to create these ideas and do these things. So that kind of what you said about walking in the room and everybody's like, we don't want to do anything different. That kind of Maxi rooms where we just want to stick with just this. That is an absolute ludicrous idea. I've said this in plenty of Maxi spaces, so if any Maxis decided to jump in there, it's no different than what I say in their spaces. At the end of the day, ",timestamp:"00:24:51-00:48:54",topics:["Stacks","Web 3"],type:"twitter_space",weight:13.500243841282398},{boost:0,date:1632355200,description:"Vincent Zhang and WhatsMiner introduction",episode_title:"The ASIC Mining Hardware Market",guests:[{name:"Vincent Zhang",profile_picture:"https://pbs.twimg.com/profile_images/1158285609196109825/fuB-e6lm_400x400.jpg",ref_id:"98e7bc98-3a3b-4ddf-9b48-5dcd78973739",twitter_handle:"Whatsminer_MBT"},{name:"Vincent Vuong",profile_picture:"https://pbs.twimg.com/profile_images/1260974518547312640/n47yvbNL_400x400.jpg",ref_id:"8390e230-e36b-4e0d-9f5d-70c6635bf3c2",twitter_handle:"BitcoinVincent"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=qKeUCNXa4Uc",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"3cb5fd13-1b10-4dc0-b8e3-f2fc0f1ec406",show_title:"Compass Mining",text:"the two Vincents are going to unload a lot of information, insights and some fun opinions on us. This conversation, I want to give you both a chance to introduce yourselves, give us a little background on sort of how you got into the mining industry and your focus on the ASIC markets. Vincent, from What's Minor, do you mind just introducing yourself and giving us maybe a brief history of What's Minor and what led up to where you are today? Yeah. So I should say good morning. So here it's midnight in China. My name is Vincent. Right now I serve in as a sales director in Watts Minor. So actually there's a small story for myself being in this industry. So before I joined What's Minor, I was working in telecommunication industry. So I worked in DT Corporation for 14 years. I sold a lot of telecommunication equipment to India. However, in the year 2018, I just quit the job, my previous job, and by chance I got joined in What's Minor. And so when I joined what's? Minor? So actually the situation of Microbity What's Minor is not as good as right now we are because though we released the most efficient minus based on 16 nanometer from TSMC, however, we were not able to get a sufficient supply capacity in the year 2018. And of course, everybody knows that the mining profit in the year 2018 is not so good. So due to these reasons, the situation of What's Minor in the year 2018 is not so good. So however, this situation get changed in the year 2019. And so myself is very pleased to join work with Microbity as Sales Director because starting from the year 2019, so we export more business chances outside of China. So we can say after I joined what's minus, our overseas market enhance a lot, probably later via the conversation, so we can share more information about What's Minor and myself. But I'm already in this industry for three years. ",timestamp:"00:01:34-00:05:06",topics:["Vincent Zhang","WhatsMiner","minor"],type:"youtube",weight:7.285317421145426},{boost:0,date:1677582e3,description:"Lucas' real dreams and goals in life",episode_title:"Ep. 514 The Future of Crypto in the Media with Blockchain Boy",guests:[{name:"Lucas Dimos",profile_picture:"https://pbs.twimg.com/profile_images/1092408696838197250/n0-St2nZ_400x400.jpg",ref_id:"9ac17e2f-49bd-4fc5-bfe5-2f380ca63574",twitter_handle:"lucasdimos"},{name:"Blockchain Boy",profile_picture:"https://pbs.twimg.com/profile_images/1602154101642592256/A0OX97CT_400x400.jpg",ref_id:"4b070a6f-bcc8-4708-abaf-cc830709600f",twitter_handle:"BlockchainBoyy"}],hosts:[{name:"Aaron Malone",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"bd103540-8c0a-4ab3-b5cd-24a3f2c43ab2",twitter_handle:"pizzamind"},{name:"Bryce Paul",profile_picture:"https://pbs.twimg.com/profile_images/1182725652794892288/QbDOKHcP_400x400.jpg",ref_id:"0d670dbf-f434-43b6-b454-8e5345d7ee51",twitter_handle:"BrycePaul101"},{name:"Pizza Mind",profile_picture:"https://pbs.twimg.com/profile_images/1521495204196503553/abk-5S0m_400x400.jpg",ref_id:"16cb01cf-9f04-45db-a440-47259b02b86a",twitter_handle:"pizzamind"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/93a6fe5b-364c-43f4-9f38-7da3e811460b.jpg",keyword:!0,link:"https://chrt.fm/track/DD9393/audio1.redcircle.com/episodes/68f31cee-f404-40fe-85d7-a406019e916f/stream.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"d266ac59-706d-4b4c-b0ca-d9ea3ae4fc34",show_title:"CRYPTO 101",text:"to be? That's a great question, and I'm still figuring out what I really want to do with the rest of my life. I just know that I really like building cool things with cool people, and I think I'm always going to do that, no matter whether it's big or small. I think it's just I have to do something. I'm like a shark. Sharks have to keep swimming or they sink. Right? And so it's very similar with me. Maybe I'll have some more time to go live in the country and be away from people for times. But no, I really like empowering people to be their best selves. That's really what makes me the happiest, is, like, I'm a very loving and caring person, and I love to see people do good things and succeed. So I would really love to get into sort of micro loans and sort of entrepreneurship guidance and maybe even ethical VCs, because I don't think a lot of VCs are very ethical. And so I'd love to do something along the lines of that to empower more entrepreneurs to have an effect in their community and environment outside of Web Three, too. I've been doing micro loans on the platform called Kiva for many years, and I think it's super cool and needs a Web Three version. Yeah, I've actually never heard of Kiva. Tell us a little bit more about what micro loans are. And has that been a way that you could generate passive income or anything? No, it's just mostly a tax write off for really rich people. It's not like super well known, but you get to actually empower entrepreneurs in other countries. Oh, there's Jonah. Jonah. I'm on a podcast. Oh, he's bringing stuff. Jonah. What's up, brother? Thanks, bro. No, he's one of my fantastic team members over here. Thanks, bro. I wish I got ",timestamp:"00:22:22-00:24:01",topics:["Lucas Dimos"],type:"podcast",weight:71.21921050996978},{boost:0,date:1625958277,description:"How Bitcoin helps increase business competitiveness and change business model",episode_title:"WHY ARE WE BULLISH? Brandon Quittem, Timothy Kim, Shinobi, Steve Barbour ep185",guests:[{name:"Brandon Quittem",profile_picture:"https://pbs.twimg.com/profile_images/1502403738861940736/9J5VuTye_400x400.jpg",ref_id:"65512044-7810-4ece-8156-5519e072cb66",twitter_handle:"Bquittem"},{name:"Shinobi",profile_picture:"https://pbs.twimg.com/profile_images/1526590501742428160/0Y5H2uJK_400x400.jpg",ref_id:"a05dface-33a7-400d-a749-99efe0d96118",twitter_handle:"shinobi602"},{name:"Steve Barbour",profile_picture:"https://pbs.twimg.com/profile_images/1592714173469065216/q8kXPyQI_400x400.jpg",ref_id:"63a731b8-4759-4360-9e9d-d66f884e12d8",twitter_handle:"SGBarbour"},{name:"Timothy Kim",profile_picture:"https://pbs.twimg.com/profile_images/1569681307029934081/2s_nWYo__400x400.jpg",ref_id:"e0323798-c70f-4cc3-96ff-87bab50c2313",twitter_handle:"realtimothykim"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/37027401/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2021-6-10%252Ffb6d5638-4579-5707-9740-0e586c980ba7.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"fe680ae3-835d-492f-b664-7d645d02a99f",show_title:"BTC Sessions",text:"Can I pivot into why I think why I'm bullish on this episode? Yeah, man, let's do it. As I'm on my fourth shot of Ryan, I'm about to lose any coherency on the same topic. I just love seeing any startups, especially any Bitcoin related, like pro bitcoin related startups do well. One of my favorite follows on Twitter is like, Tahini's Restaurant. Like a little franchise that's like big into bitcoin and you know they're going to kill it because just having bitcoin in your treasury, it makes it so difficult for any other competitor, to any other competitor, they're a restaurant business. Any other competitor that's in a restaurant, that's a tough freaking market to be in. Like the restaurant business, maybe bitcoin mining is like the only harder market because it's so easy to get into. But like, restauranting, it's an easy business. The low barrier to entry, tough margins. But Tahini, I don't know who else who's a direct competitor in their area. I think they're based in Ontario. It's probably a million Sharma places that do like what Tahini does. He's going to fucking kill those guys. They're going to kill all their competition because they might have the exact same profit margin. They might have at the end of the year, 10% profit, just like every other competitor in the area. Sort of like plus or minus a few percent. Some guys in the negative, whatnot, the team is going to kill them. They're going to kill them because they're going to have this bitcoin treasury. And I was saying that locally on a local podcast. And Lloyd, I got this small wheel field business we're getting into motors and stuff. Aside from the bitcoin mining focus that we have, what we're doing is actually not that different than what a lot of oil service companies do. And I said on this podcast locally, I'm like, my competition will have no chance to compete with me if they don't adopt a bitcoin treasury. And they don't even have to build bitcoin mines. All you have to do as any small business owner is convert a little bit of your treasury and your profits into bitcoin and to hoddle it and to speculate properly on it. And you're going to crush your competition, like your feet of competition. So my bullishness that I wanted to bring to this episode is like. I think that small businesses and true entrepreneurs. Not Fiat entrepreneurs. Not the guys just going out and trying to get raising money from these VCs and not really building anything. But actually true entrepreneurs. People going out and starting small businesses. I think we're going to see finally a true economic boom in small businesses that we've seen suppression over for over 100 years. Like over 50 years for sure. Ever since. Like the full on 1971 Fiat standard. But when I showed up on the show, I was driving. I do a lot of driving around Alberta, Saskatchewan, you know, Alberta, well, Sessions, we go through all these small towns. Every small town is fucking same. And I think about it from like, the bitcoin perspective. All these small towns are identical. They have the same franchises. They got the Mr. Lube. They got, like, the petro Canada. They got gas station. They all got franchises. There's no fucking small businesses anywhere. They're all dead. They're dead. Everything's a franchise now, right? Which in and of itself isn't a problem. But the fact is, these people are just licensees of a business model. They're not finding their own supply chains and building a small business. They're going out and becoming a licensee of a big Fiat, like a big corporation that ends up benefiting from the Fiat. ",timestamp:"01:23:33-01:27:13",topics:["business model"],type:"podcast",weight:7.273831367495893},{boost:0,date:null,description:"The future of payments on Bitcoin and on the Lightning Network",episode_title:"The Orange Sun 🌞 VISA, MasterCard & #Bitcoin #BOLT12",guests:[{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"~₿ Maxi~",profile_picture:"https://pbs.twimg.com/profile_images/1446241859651637250/i67F3y9p_400x400.jpg",ref_id:"ad997ae7-0726-431a-9f72-82da091c0658",twitter_handle:"fede0891"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"FireBurs†s",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"cda1d3ad-dd80-458b-a5fb-a28861df10a7",twitter_handle:"FireBursts"},{name:"Nikolai Tjongarero",profile_picture:"https://pbs.twimg.com/profile_images/1578458155964682274/_SzDxkAJ_400x400.jpg",ref_id:"821ee040-2267-454e-a59a-92da51568afa",twitter_handle:"BitcoinNaijaShw"},{name:"ブランドン",profile_picture:"https://pbs.twimg.com/profile_images/834861311762649090/N0KAP4zH_400x400.jpg",ref_id:"3d41531d-6a59-4771-81f9-0924b4c02561",twitter_handle:"blario"}],hosts:[{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/94a86a32-91c2-4717-b5cb-b36cef925776/38decc02-c922-4c1d-a605-7cd54c91a01d.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"1984e7b9-23f1-4ef0-8fcb-deac4ef23cc7",show_title:"Satoshi’s Journal",text:"Yeah, and that's one of the tools we're working at Satoshi Journalist. We've always paid our writers in Satoshi's, but once these QR codes become static through both twelve, we'll have the ability for all content creators to be have their associated lighting address prominently displayed next to their profile. And people want to tip them. They can be tipped. I mean, that's what basically the future is going to be. And of course Twitter is going to do the same thing. I listened to a long interview with Elon Musk when he acquired Twitter and he mentioned that he's going to allow content creators to be paid. And so I bet you he'll probably integrate the Volt twelve static QR code in such a manner where all content creators will have their respective QR code. And if they have good content, then you can send them tips, or if they don't, then you don't send them tips. And then what Olu said, it's going to catch fire because as soon as Mastercard and Visa are undermined by the fact that people can simply send Satoshis to other people instantly and basically for free via a static QR code, you don't need to freaking swipe cards no more. You don't need to freaking do all this stupid legacy system, fiat minded crap. You just get the QR code, have it into perpetuity as long as you want it, and boom, boom, boom. So the implications are huge from a game theory standpoint, although it might not happen right away if Visa and Mastercard aren't watching their back, so to speak, they're going to be like Blockbuster. And then you have a block stream, of course, is working on it. Another interesting angle is just imagine all these card issues, right? They integrate with Lightning because they want to catch up with technology. Don't forget, technology is always ahead of regulation. Regulation will have to catch up to technology. And these other companies that would actually make interoperability with Lightning even more accessible and easy with what they already have in their system, will be the one to accelerate this adoption. But this is how the game theory may even play out more interestingly, once they integrate with both twelve, because of the technology and the potential risk to them not integrating with it, they begin to see more adoption, right? And usually they are used to texting their people, their users. They have so much user base, they have so much merchants, so they just apply a little more fees. That's how to generate revenue on the cards. And now they've given many financial institutions the opportunity to print their own cards, right? So you go to the bank, the bank prints instant card for you. You just take the card and you start swiping once you leave the banking off. Or you just go to the nearest ATM, even, right at the banking.org, and you start swiping. That's my diamond. My daughter, she's just purchasing. My point, she's a bitcoin, a little bitcoin. And the card issuers, their competition will start from the people that can just begin an SME and start to create cards that you can spend lightning on. You do not need Mastercard, Visa card integration. That's where the competition will start from. The competition will not be a bigger company. It will be small companies. You can't you see all these bitcoin companies, they're going to come in droves and just small, small companies. SMEs everywhere will now have the ability to make cars that we just QR code you can actually tap and go. I think it's going to be fantastic. If you can use a platform that will charge you ten times lesser than what Mastercard and Visa is charging you right now, you save a lot of money in one year. And in Nigeria, it will cash fire ease in Africa. It will catch fire ease once people realize, because we are the experiment for the west, for Swift, for Mastercard, for Visa. Go and check their database. Africa is where the number is. Nigeria is number one. South Africa, Kenya. So the market of many of these companies is in Africa. 1.5 billion people will be 3 billion people in the shop field for 30 years. And you have 500 million people. Internet penetration is already more than 100 million people as we speak. You can access Internet with USA. So it's a fantastic thing to have the opportunity to do. Charitable effort. Just imagine the air drop you can do with lightning, static curl code to the entire nation, and you're not even spending much, but you're on boarding lots of people at once, and you're not curing too much fees. You can't do that on chain. You're going to cure too much crazy fees. I've tried it over and over again. But on Lightning, you're giving it away. You can give out a hundred thousand satoshi to 100,000 people. Wow. And you probably wouldn't have spent nothing with one QR code. And repeatedly you can keep paying it. You can do a minus A toshi. This gonna be fantastic, dude. I mean, more and more you talk about it, I get more and more excited. But one thing that's kind of interesting is once Visa Master become obsolete from Bitcoin and lightning, nevertheless, there'll probably be some iterations of the legacy system around. But once we get to the point where those individuals or sorry, those companies go obsolete, since you're in the payment sector, you know, the answer is this probably better than most is. I mean, for them to make money in the future, they'll probably end up running their own lightning node kind of deal and trying to make money through running transactions to their node because they would provide liquidity to the network and that would be one method by which they could make money. There are going to be other ways, but do you foresee them maybe becoming lightning node operators and taking I mean, I don't know how profitable that is, but what do you think about that? I'm not very active in this area. Portland is working right now, so I don't think he can talk. I would have suggested maybe a king can take this part, but I think it's very technical. I may be able to say some terrible part of it. Like I've already said, it's just going to be interesting when I talk, but people may not be able to see it insightfully from the length of somebody who puts together the code and understand how the pipe is supposed to look. I feel that the decentralization of nodes in general will create pipes of money. Our partner used the word pipe the other day when we're having a conversation and I could get it instantly because that was a very glaring example. So the bigger the pipe, the bigger the transactions I can pass through that pipe. I think it would be more interesting here because bitcoin is already everything. There will be proof of stake to a level, but it cannot have power over proof of work. It's just going to be proof of stake basically in the area of, oh, I got a bigger pipe, so bigger transactions come my way. And you can't query that because you don't have that. You know how I mean? I think people will run lightning nodes, but you're going to still have to have enough bitcoin to be able to do that. If you don't, then your transaction capacity will not be as much. Banks will run nodes, community microfinances will run notes. I mean, I think this is going to basically change regulation general, because it's an opportunity for revenue generation for the government. If I look at it from a public private partnership perspective, what I see is many opportunities for taxation for the government. So if the government is wise, you can't you shouldn't bitcoin it gets on now the quicker you can start to accumulate SATS and maybe some bitcoin in some very rare cases, you give people international money transfer patrol license to do legitimate bitcoin transaction in your country. You know how I mean? Because whether you give them or not, it's already happening. It's under your radar, but you can't stop it. Why don't you allow people run nodes? Why don't you expand that economy in general so you can see it, let it be transparent, but it's already decentralized. People would do it with or without you. So a lot of people would be able to run a node, but you know, the space needed for that purpose becomes larger. So I don't know, I think it's going to get like five terabytes in some decades and I don't know if it's going to be cheaper to get the necessary tools you need for that or it's going to be more affordable. Depends on how the world is. But in an imagine world, I want to believe that things will get cheaper because bitcoin will price stuff and in fact, once you have some, you can actually confidently spend and acquire what you want even more better than operating on the fiat monetary experience where things are very difficult. Even when you put the proof of work and you don't get to be paid what you deserve, you get cheated and somebody to come and tax you. They come and tax you for the services they don't offer you. So yeah, a lot of people want to know it depends on how cheaper it is in the future or affordable. But I think I kind of answered it to the best of my knowledge, jeremy, if I didn't. Yeah, no problem. Hey. Good morning, Oakland. ",timestamp:"01:42:06-01:53:40",topics:["Bitcoin Payment","Lightning Network Payment"],type:"twitter_space",weight:7.166842460632324},{boost:0,date:null,description:"The sovereign individual's role in Bitcoin and vice versa",episode_title:"Bitcoin Charlotte Book Club - Sovereign Individual Ch 1-7",guests:[{name:"Bolt",profile_picture:"https://pbs.twimg.com/profile_images/1352721439879786496/wfevZ8bG_400x400.jpg",ref_id:"b165e497-f255-4ce5-9762-30c90dcf776d",twitter_handle:"Bitcoin_CLT"},{name:"Victor",profile_picture:"https://pbs.twimg.com/profile_images/1519726025013350400/GHxSzgA3_400x400.jpg",ref_id:"d91fff8d-e4c6-4aeb-9f32-021e4a4ff9a6",twitter_handle:"victorwong"},{name:"George",profile_picture:"https://pbs.twimg.com/profile_images/1173474608856608768/vEBnPUdm_400x400.jpg",ref_id:"5946bdf6-8feb-43aa-b2ca-46b2944b0572",twitter_handle:"GeorgeNotFound"},{name:"Mark",profile_picture:"https://pbs.twimg.com/profile_images/1511102924310544387/j6E29xq6_400x400.jpg",ref_id:"c8cd0c95-c105-41c4-8fae-9dbfa76d84f2",twitter_handle:"markiplier"}],hosts:[{name:"Jacob Parrish",profile_picture:"https://pbs.twimg.com/profile_images/1552345395195412481/bgjme0Jh_400x400.jpg",ref_id:"476161bc-6773-4695-845f-15fe87affd67",twitter_handle:"Jacobp102"},{name:"Liz",profile_picture:"https://pbs.twimg.com/profile_images/1256650517549211648/cHwvj5o9_400x400.jpg",ref_id:"6538f07d-01e3-43c7-9068-55f3ec737d65",twitter_handle:"LIZ_Y2K"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/fe6bdbce-e91d-43cf-ab33-0e98bffabecc.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/3a4d250d-90a6-417a-a6b4-0f701bdd9e2e/daa90ea7-aa7e-41f5-9fec-7e513ca75667.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"5efbc2c3-e67a-4b16-9c9d-285bdd37e906",show_title:"Bitcoin Charlotte",text:"One of the things that I thought was really cool, which I never thought about with Bitcoin, this kind of goes into violence as well as he or she will even be able to act after death. For the first time, an individual will be capable of carrying on elaborate tasks even if he is biologically dead. It will no longer be possible for either an enemy at war or criminal to completely extinguish the capability of an individual to retaliate by killing him. This is one of the more revolutionary innovations in the logic of violence in the whole history. And so that really gets you to start thinking, what if someone came to get your money and you go, don't kill me, because if you kill me, I have money that will be paid to other people to come find you or your family. That would be pretty scary. Would you come after me then? Let's see. I'm not the best to have in dialogue with myself, so I'm going to just keep on looking around. So I got to page around a page 186, I think. So I had about 40 pages left to reach the desired area, which goes to the chapter eight, which starts with the end of egalitarian economics. But yeah, I think the book really starts to just get exciting for me. So I'm excited to move forward at this point, but it is a tricky one to get through if you're not an avid reader. But I'm getting better at it. Trying to think of some other really good points that I liked about this book. Unions. That was the word I was thinking of before. Unions were a really interesting topic in this book, and I want to find these quotes on some of it that were really cool. But the working so the idea with unions in this was they could use violence to get what they wanted. And that's one of the big turning points, too. It doesn't make much sense for unions to form anymore because companies do not have to be in a central location where they have all this manufacturing going on, and there's a lot of valuable stuff there that they know how to use. The worker simply sees the factories and ransom them back to the owners. The tactic of great simplicity, and one that in most cases, was profitable and fun for those participating. One sit down striker wrote, I'm having a great time. Something new, something different. Lots of grub and music. Maybe someone requested we got bro. So I was listening to the prior unions today, and so they were saying that those don't really exist anymore. Correct, because when I was working my government job, I was part of a union, really, and people would definitely abuse it. You could say something happened, and then the union would come and support you, basically, and you would kind of get whatever you wanted. How did the union have their power? What do you mean? How are they able to demand things? Well, you had someone from the union come and support you if you said this was like this one lady I worked with. She said she was getting harassed at work in our signal shop. So then the union came and like, an attorney, almost like it was an attorney, but someone had the union to take it her side of the story. And then it was kind of funny because we were all in the union. So then they had to get all of our other sides of the story, but they had to support us, too, like any people she was complaining about. I got you. Where was the union from? It was a union. You work for the DLP. I should know that, but I don't remember that's. Okay. How's it been going? Oh, we're just kind of monologuing over here, and I can't remember much of the book. How about you? How's it going? It's all right. Just cooking some steaks and pizza. The union is UFCW local 1994 Montgomery County Employee Union. That is a voice for working America. I'm not familiar. Mark, did the sovereign individual talk about unions? Yeah, quite a bit. We're talking about how violence, the use of violence or union is basically saying, hey, we're not working and we can also run the factory. We run the factory, we know how to do it, and they can hold the factory hostage. But that's basically dying away because things are getting more decentralized with the information age. Right, that makes sense. I listened to the book, actually, and I did it a while ago. I don't exactly what you guys discussed. I found it to be really good. I definitely didn't capture near as much of it as you do when you read it because you get through it a lot faster. The time you're committing to the book is a lot less. But yeah, it's so much to tackle. I mean, you could have long conversations about any small parts if you really dive deep into them. So I don't know if there's any particular subject you guys are talking about, but we have many people in here. But if there's anything interesting anybody wants to talk about. ",timestamp:"00:21:00-00:27:56",topics:["Sovereign individual's role"],type:"twitter_space",weight:7.131711006164551},{boost:0,date:1671720944,description:"@mattyicesensei and @johnmichaeldrew's opinions on Web3",episode_title:"Café ₿: #Bitcoin News & Bitcoin Day w/ @Bitcoindayio",guests:[{name:"@johnmichaeldrew",profile_picture:"https://pbs.twimg.com/profile_images/1512897699942744064/PuRU3K8P_400x400.jpg",ref_id:"6b72ee7f-52ef-4847-96ed-78ea09e3f19b",twitter_handle:"johnmichaeldrew"},{name:"@mattyicesensei",profile_picture:"https://pbs.twimg.com/profile_images/1607138483579101186/0qm0xaCF_400x400.jpg",ref_id:"286abd3b-cecc-4ec5-bf88-2a9fd5393083",twitter_handle:"mattyicesensei"},{name:"@Bitcoindayio",profile_picture:"https://pbs.twimg.com/profile_images/1493098733608837121/tLI-XTwl_400x400.jpg",ref_id:"6a87699e-7a27-4928-89e8-d884f1458bf9",twitter_handle:"Bitcoindayio"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/83744e68-b563-4004-b52a-cfdfff89748f/12c9b9f2-fbce-4784-9404-88a574baa762.mp3",node_type:"clip",pub_key:"",ref_id:"f80dd079-1a9d-4bda-b8dd-81c05d203533",show_title:"Swan.com",text:"Thank you, John. Maddie, I was just wondering, I'm just kind of looking through your stuff, recent stuff. Can you tell me your opinions on web three and products like step in, for example, and just where are you on ethereum? Where are you on crypto? Bitcoin? What do you think about web three in its future? This can be for either of you, actually. Alex, are you going to allow that on this? I was going to ask him. Maddie's very knowledgeable. Maddie's knowledgeable. I'm sure he can answer. But you want us to answer that, Alex? Yeah, we do this thing called the crucible on this show sometimes where sometimes there's hard questions. So I don't mind. Go ahead. Sure. Let me take it from here then. Me personally, I use different platforms, different things. I like to gamble. I like to do different things. So where I'm at with web three, I'm fully bullish web three, I'm fully bullish bitcoin. Bitcoin is my savings. It's where I store most of my wealth. When I like to gamble, I use stuff on ethereum. I play different metaverse games. I do all sorts of stuff. So for me, there's a use case, there's a value there. It's not anywhere near the same value as bitcoin. But, yeah, I have fun with all sorts of stuff. I like to gamble. I like to go to the casino. I like to do all sorts of stuff. So with a small portion of my wealth, I gamble and do that kind of stuff. Does that answer your question? When you say gamble, do you mean literally gaming, or are you talking about purchasing shit coins and then gambling on return? Oh, all of the above. So quite literally, I go, like, for example, if you use a theorem, if you've ever heard of the metaverse, if you go into, say you go into central land, you can literally go to a casino into central land and gamble. So I like to do stuff like that. There's all sorts of different things you can do gamble for returns. But for the most of my wealth, I'm just dollar cost. Averaging and stacking stats, but there's a lot of different fun things you can do out there. Most of it, probably 90% of all of it is scams, ponzi schemes, all sorts of different stuff. But there's definitely things that I find value and personally, aside from bitcoin, although I just think they're different things. Right. You don't store all your wealth and Bakarat casino chips, but you might like to go play and gamble and do different things. So that's the way I like to look at it, if that makes sense. ",timestamp:"01:56:23-01:59:20",topics:["Web3"],type:"twitter_space",weight:16.6951974581924},{boost:0,date:1667347200,description:"The business model of Amboss",episode_title:"Meet the Makers: Anthony & Dolu",guests:[{name:"Anthony Potdevin",profile_picture:"https://pbs.twimg.com/profile_images/1252630766909079555/qf-qI5EZ_400x400.jpg",ref_id:"da0a9fdc-eda1-4e07-8341-2100428065d1",twitter_handle:"thunderhubio"},{name:"Dolu Zerologin",profile_picture:"https://pbs.twimg.com/profile_images/1577320325158682626/igGerO9A_400x400.jpg",ref_id:"4c228a2d-4f9c-4bbd-bf49-d2be3159c6a4",twitter_handle:"Dolu_Web"}],hosts:[{name:"Zapp Ed",profile_picture:"https://pbs.twimg.com/profile_images/1519990234070540288/adGqlFoj_400x400.jpg",ref_id:"bbe7cf1d-cd8d-4d36-926d-76f41b775fbb",twitter_handle:"zapp_ed"},{name:"Moritz",profile_picture:"https://pbs.twimg.com/profile_images/1452933125743460360/5xkRoFj7_400x400.jpg",ref_id:"e23e282d-82b3-4c9d-859c-c1c7f41eef84",twitter_handle:"getAlby"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/965489b4-a414-4fd0-ab8c-55911b1596aa.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=wiIzexAc2gs",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"7ef24d02-66fe-4872-b1f1-ea144bfcaf5c",show_title:"BOLT FUN",text:"model of Ambulance today? Yeah, so this is a very interesting point because a lot of feedback that we get is like you're in this growth phase, don't charge anything. Just try to get as much users as possible. And while I think it is in a way correct, like we should be looking to get as much users and as much feedback as possible for our products having a price for the different products, which at this point the price is very minimal. The space is very small. Like the lightning. Space is very small. And what we charge for our product is also very small. So overall revenue still is very small. So it's more of like a symbolic thing. But what it helps us is see where there is interest or where there is value that people are willing to pay for some services, right? For example, if we were to do a magma our marketplace and have everything free. We wouldn't really know if people are using it because it's useful to them or just because it's free. People love free stuff. If it's free, they will use it even if they don't really need it. If you see enlightening with rebalancing, people rebalance all the time and if it costs them almost nothing, then they just do it because they want to, not really, because it could be something that is useful to them. Right? So adding this price point on top does help us see like, okay, there's interest from the community to further expand this service. They do see value in it. Let's maybe put more focus towards that part. And in terms of business model right now for us, we have ads on our home page. We focus on Bitcoin and Lightning ads and then we have subscriptions that you get some additional perks you can personalize further your node page you can add like a node and then for the more analytics interested people there is time series that they can access like further get further insights into what is happening around nodes or around the Lightning space. In general, for us, it's really about experimenting. So we're trying out all these different revenue models, like figuring out where people see value, where they're willing to give us some stats to improve their experience or have something nicer or more data or something that gets improved for them. Yeah, thanks a lot for sharing this. I think it's very, very encouraging also for new developers in this space to learn from you. And I think people should take the time to experiment and learn as much as possible. And I'm also curious to learn from you Dulo, what experiments or what experience also led to the most recent project zero lock in. Can you share some history on that? ",timestamp:"00:16:35-00:19:57",topics:["Amboss","Lightning ads"],type:"youtube",weight:7.334451631469231},{boost:0,date:null,description:"Bitcoin News for December 20th, 2022",episode_title:"The Orange Sun 🌞 Interview with Nzonda Fotsing Sr. #Bitcoin",guests:[{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"Funsho Jimoh",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"a237ffb0-792b-484e-b12f-65a2b679eaf1",twitter_handle:"fnicencool"},{name:"Heritage Falodun",profile_picture:"https://pbs.twimg.com/profile_images/1510397558652350469/jYOl00tU_400x400.jpg",ref_id:"b2bcc65a-b060-4dbe-b9ac-a7d64a11d2ac",twitter_handle:"herrytheeagle"},{name:"Nzonda Fotsing Sr",profile_picture:"https://pbs.twimg.com/profile_images/1458565804291670016/XaLi8e6a_400x400.jpg",ref_id:"53fe4486-5ef3-4988-8ada-47c3cb1c2d51",twitter_handle:"BitcoinSophist"},{name:"ROB",profile_picture:"https://pbs.twimg.com/profile_images/1605484577669074946/CkYjFUxH_400x400.jpg",ref_id:"25c5f080-fd07-4b37-9014-7fc05419edce",twitter_handle:"robertlamonta15"}],hosts:[{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/e4a700c7-f311-4270-be71-e2783252be6c/d4cb7ccf-f7e8-4071-a74b-943cc09fd967.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"ed128fbb-3ad8-4d26-921c-495edfda3cbd",show_title:"Satoshi’s Journal",text:"So as soon as she comes up, I will put the focus and landlight on him. But the first thing I have in the nest is I try to let you up top. Tiki. I'm not sure what happened. I'll send you an invite. So, bitcoin sapiens, he's been on a roll these last few weeks. You could tell he's taking some time to think out some really good quotes. And this quote he says, I think I'm here. Yeah. Okay, I'm up. Hey, what's up, tk? Yeah, it's showing on my end. Like, you know how it gets louder when you come to speaker? It got louder. So I assumed that I bumped up to speaker, but then I look and I'm still listening and I have mike. I'm like, what the heck? That was weird. Yeah, I don't know. That is weird. I'm going to share the nest or share the space now. Okay. So bitcoin sapien says, a common misconception is thinking bitcoin is the first iteration of a new tech, when in truth, bitcoin is the final iteration of a dream that took decades to achieve and includes the hard work of incredibly smart people from all around the world. And that's a very good point to make because a lot of people think that bitcoin was the first cryptocurrency and it was the first iteration of an innovation. But bitcoin came upon the hard work of many cryptographers, engineers, scientists, mathematicians, just people in general trying to study how to get a digital money that was totally out of the hands of government. And so up until bitcoin, many people tried many different things. And finally, satoshi nakamoto was able to put together an iteration of all the things that had been done before him or her or them and come up with bitcoin. So I like that quote from bitcoin sapiens. It's a good one. The next thing I have up here was another quote, this one by Jeff Booth. He says, trying to measure a non linear system. The economy, like a linear system, ensures you miss small changes in conditions that lead to critical states, which also means that you might dramatically underestimate the risk. Of said system bitcoin. Yeah, I think a lot of people try to think that economy is a linear system. And they use these linear metrics to try to measure a system that you can't measure on a linear basis. One thing like the CPI, we all know that's also known as the CPI, the Consumer Price Index, is a basket of weighted goods and services that people, that the economists use as a means to try to gauge what inflation is. But that's their linear way of trying to measure something that's not linear. And that's just one metric of many that economists try to use to measure an economy. I mean, it's almost like it's using the wrong tool, basically. If you have a system that has so many variables and it's really what it comes down to. It's such a complex system. How do you measure such a complex system? How do you try to think just in your human body right now? How do you measure all of the complexities that are happening in your body? How are you to measure every freaking neuron that's going in your head right now? Just back and forth, back and forth, exploding, firing off information, the blood going through your veins? How do you measure that? The pumping of your heart, the treble of your voice? You can't measure the human body with linear metrics. The human body is a complex organism. And I implore anybody to try to measure the human body using a linear metric. So that's basically what Jeff Booth is saying. The economy is a living organism that has so many variables, and if you're trying to measure it with a linear system, then you're going to miss a lot of he says, small changes and conditions. I'm thinking you miss big changes. Anyways, that was a cool quote. I liked it. The next thing I got up here is, ",timestamp:"00:05:39-00:11:10",topics:["Bitcoin News"],type:"twitter_space",weight:6.58552348613739},{boost:0,date:null,description:"Interesting predictions from the Sovereign Individual",episode_title:"Bitcoin Charlotte Book Club - Sovereign Individual Ch 1-7",guests:[{name:"Bolt",profile_picture:"https://pbs.twimg.com/profile_images/1352721439879786496/wfevZ8bG_400x400.jpg",ref_id:"b165e497-f255-4ce5-9762-30c90dcf776d",twitter_handle:"Bitcoin_CLT"},{name:"Victor",profile_picture:"https://pbs.twimg.com/profile_images/1519726025013350400/GHxSzgA3_400x400.jpg",ref_id:"d91fff8d-e4c6-4aeb-9f32-021e4a4ff9a6",twitter_handle:"victorwong"},{name:"George",profile_picture:"https://pbs.twimg.com/profile_images/1173474608856608768/vEBnPUdm_400x400.jpg",ref_id:"5946bdf6-8feb-43aa-b2ca-46b2944b0572",twitter_handle:"GeorgeNotFound"},{name:"Mark",profile_picture:"https://pbs.twimg.com/profile_images/1511102924310544387/j6E29xq6_400x400.jpg",ref_id:"c8cd0c95-c105-41c4-8fae-9dbfa76d84f2",twitter_handle:"markiplier"}],hosts:[{name:"Jacob Parrish",profile_picture:"https://pbs.twimg.com/profile_images/1552345395195412481/bgjme0Jh_400x400.jpg",ref_id:"476161bc-6773-4695-845f-15fe87affd67",twitter_handle:"Jacobp102"},{name:"Liz",profile_picture:"https://pbs.twimg.com/profile_images/1256650517549211648/cHwvj5o9_400x400.jpg",ref_id:"6538f07d-01e3-43c7-9068-55f3ec737d65",twitter_handle:"LIZ_Y2K"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/fe6bdbce-e91d-43cf-ab33-0e98bffabecc.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/3a4d250d-90a6-417a-a6b4-0f701bdd9e2e/daa90ea7-aa7e-41f5-9fec-7e513ca75667.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"1ba72c1d-ff22-4572-ad24-8171bfce9de3",show_title:"Bitcoin Charlotte",text:"I guess that is hard for me to get through. But when they talk about what they predicted happened in 2000, I mean, they weren't right on that, correct? Yeah, I think the reality of that is there were some really interesting predictions that were right or close to right. There's plenty of things that weren't right, but anytime you're predicting the future, if you're right at all, it's usually pretty impressive, especially with the way technology is and how things change, it's hard to predict about anything. So I think they made some pretty bold claims that were shown to be pretty true. And I think that's what people get attracted to when you kind of look back on it and say, wow, they're actually right on some of these things, whether it's digital currency or they even reference pandemic and how the state will control people. And there's just so much overlap with the reality we're living through. I definitely find that stuff interesting. I already knew all that stuff before I read it, though, because I've been talking about so much on podcast and things. You're just so smart, bro. Well, a lot of people talk about especially Robert Breedlove. He references the sovereign individual a lot, so if you're listening to his podcast, you're going to know a lot of that stuff. These authors take in a ton of information and I do kind of like how they seem to make the best logical conclusion from the information. There's bias here, of course, but they really analyze all these things. They take in a lot of different authors and they look at what they wrote and what they think is wrong about what other authors wrote and they cite all those things and kind of go through that and a journey with all this. And it is I do like that part of it. It just seems like it takes quite a while to get through some of those points. But mark so what we started with was the gist that I got from this book was those in control of violence. Where violence is incentivized is basically how you can predict what's going to happen in the future and who's going to be in control. Whoever has the best leverage on violence. So they're reading part of the book. They're talking about the state didn't have any really control because there were nights. And the nights because of some of the metal workers and stuff, made certain improvements to the horses and forget about the stirrups and something else to make them just badass soldiers. And one night can take out like 20 guys or something. And so if you had a group of that, you can basically go in, pillage and go anywhere you wanted and do what you wanted and no one else could stop you, not even a state. But they kind of lead you through that, through all those things. And I was wondering if you got that from listening it from it, if it was like they seem to be the theme. The people control it. I'm saying that monopoly on force or something like that. Yeah, I think are you talking about just how technology brings a lot of it continues to show that that monopoly gets weakened and the power to individuals get strengthened. It can go both ways because technology can be used in either direction. I know they talk about that quite a bit. I guess I'm talking about the incentive for violence. So before agriculture, there was all these groups and every day they had to go out and find food and bring it home. They're very busy dealing with that and they couldn't store food for that long. So the incentive to go and take out some other village wasn't that great because they didn't have a lot of stuff and they had to keep themselves alive anyway. So once agriculture wasn't developed, all of a sudden a lot of wealth started to become available, which then made it so there was something to steal. So then you could go then it made sense. Oh, if I become a violent person here, I can get a lot of riches or a lot of food or a lot of whatever. That kind of leads all the way into the nation state to where we're at now, where violence can be incentivized because you can actually take over a lot of stuff. That's what I'm getting at. Which leads to Bitcoin, where we talk about this a lot, where storing your money the proper way with Bitcoin, with cold storage or multisig makes the incentive for someone to come steal it very small because you got to go through so many hoops to make that actually happen. Yeah, I 100% agree with you. The incentives in a fiat based system and basically throughout all of history, except for a few periods of time when gold worked pretty well, of course you could still steal it and you could confiscate it, but at a different time with different ways of doing, forcing people to give things up and stuff. You could secure something physical like that pretty good and that provided people some way to store value and protect their property rights, really, and their wealth. But it obviously has major issues and failures, just the physical realm. And then bitcoin solves that by creating an uncomplicated property. And it seems that they definitely dialed into that some in the sovereign individual that will be a natural evolution of humanity because they've recognized this problem with the incentives, which is basically what you were saying. It's inevitable that those things are going to happen because humans were incentivized to gain that power and to control people either through what they thought was best for the people morally or immorally and then eventually they would abuse that power and that brought us to where we are. I think that makes a lot of sense. I think another thing where they just use their philosophy and all their research and hard work to really dial into some things that are really important that a lot of people don't understand on just human nature. ",timestamp:"00:27:58-00:34:52",topics:["The Sovereign Individual predictions"],type:"twitter_space",weight:6.520025253295898},{boost:0,date:1647576e3,description:"Introduction - How [[Bitcoin UASF]] went down, [[taproot]] lot=true, speedy trial, [[small blocks]]",episode_title:"How Bitcoin UASF went down taproot lot true speedy trial small blocks",guests:[{name:"Luke Dashjr",profile_picture:"",ref_id:"c3b2367f-2863-421b-8b2c-c093423f0eaa",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b79a3eb8-bcd0-4338-b979-d32aef360785.jpg",keyword:!1,link:"https://www.youtube.com/watch?v=rspXF6Gp3-g",node_type:"clip",pub_key:"",ref_id:"b1eabcd8-8d00-4950-b264-f4f2741ca3a7",show_title:"Stephan Livera Podcast",text:"",timestamp:"00:00:00-00:03:40",topics:["bitcoin uasf","taproot","small blocks"],type:"youtube",weight:6.440371671951619},{boost:0,date:1647576e3,description:"[[Small blocks]]",episode_title:"How Bitcoin UASF went down taproot lot true speedy trial small blocks",guests:[{name:"Luke Dashjr",profile_picture:"",ref_id:"c3b2367f-2863-421b-8b2c-c093423f0eaa",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b79a3eb8-bcd0-4338-b979-d32aef360785.jpg",keyword:!1,link:"https://www.youtube.com/watch?v=rspXF6Gp3-g",node_type:"clip",pub_key:"",ref_id:"a61c7685-556b-4886-8908-fd0ead4dc1f2",show_title:"Stephan Livera Podcast",text:"",timestamp:"00:43:55-00:00:00",topics:["small blocks"],type:"youtube",weight:6.440371671951619},{boost:0,date:null,description:"Cory Klippsten and John Ely's words on the Bold Bitcoin credit card and Bitcoin space",episode_title:"Café ₿: Bitcoin Credit Card w/ @BoldBitcoin @John_ely_21m",guests:[{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Wicked",profile_picture:"",ref_id:"fee44016-b05f-4961-a6d8-7dac655cd931",twitter_handle:""},{name:"@BoldBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1559592705231044609/iJrNKxF9_400x400.png",ref_id:"dd4e1c4c-d111-4f01-ad95-18200d50cdb8",twitter_handle:"BoldBitcoin"},{name:"@John_ely_21m",profile_picture:"https://pbs.twimg.com/profile_images/1560444673046585346/VN8n2LtM_400x400.jpg",ref_id:"a24436b1-5992-4711-a4a5-0770546ea80a",twitter_handle:"John_Ely_21m"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7061be6d-b144-4a81-a13b-3d125e3e2812/edf29ab4-2b4b-4fdf-9998-8a9b8e9437c8.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"7fea625e-c79b-402b-bce5-66e4e97d9598",show_title:"Swan.com",text:"going to give you a couple of moments to make some closing comments, but before we do that, I want to welcome up Corey Clips and CEO Swan Bitcoin. Corey, do you have something you want to add? Absolutely, yeah. I just wanted to just give the backstory of how we connected with Bold in the first place. I think it'll be kind of fun for people to hear. I don't know if John even knows the story from Zach, but from like November through February of this year, so this was probably three or four months, we were deeply exploring, mostly me and Jeremy show. Walter had a product who was new to the company. We were really exploring whether to launch a Swan card and what that might look like and what we can do. And we were talking to all the providers and the program managers and digging the interchange fees and all this kind of stuff and basically netted out saying, that's a whole company. It's just way too complicated to do just with, like, a small team inside of a small but growing company like Swan. And so basically it was kind of wanting to kill it, but was still keeping the consideration open. And then I think Zach just reached out and I was like, oh, yeah, that's it. You need a team that's just doing this literally every day. And I'd rather partner with these guys in the future or something like that, but just see a team just go hard after that specific problem and nail it. So then we invested out of both Bitcoin or Ventures and Elzonte Capital and obviously have been rolling out the red carpet for them at our events and things like that. So really psyched to have you guys in the space. And this was illuminating the parts I heard and want to thank you for coming and sharing. That's awesome. Thank you, Corey. Yeah, it was great meeting you in La. You know how to throw a good party. A great party. I'll be there for the festival next year for sure. That's awesome. Just to wrap up. I know Alex wants me to wrap up. So appreciative you guys having me. We're excited at Bold to launch in the US next year. We're an amazing team of bitcoiners building an innovative product to help other bitcoiners and also to attract precoiners to make the Bold move to live on a bitcoin standard. You can follow us at bold bitcoin on Twitter. You can take the 30 seconds to go to get Bold IO to sign up for our waitlist. We certainly got some fun things in store for you. Before we launch, we'll be giving you a few ways to earn some stats and have some fun. And thanks again. My DMs are open. Love to hear what you guys all think. Awesome. John, thanks so much for being here. Very excited about what you guys are doing. I wish you the best. Hope it works out great. We'll probably have you back from time to time, check out where your progress is at and how things are going. Go ahead, Corey. So, I don't know if anybody switched over for a minute, but I just went and toured into the CoinDesk space doing their rundown of the top 40 most influential people in crypto for 2022. And they let me up on stage, and you'll probably hear about it on Twitter later today. That was pretty fun. Oh, God. Here's Tom. Tory. I honestly was really trying to pull punches and not be mean. I mean, these reporters hosting a space about this, they have no idea, but it's like you had literally zero bitcoiners out of 40. The only person that writes about bitcoin that got honored was Nick Carter, and he was honored for attacking toxic bitcoin maximus, and that's why he made the list. So, yeah, it's pretty funny, I bet. I hope it's recorded okay. I think it was recorded, yeah. So it would be toward the end, probably 15 minutes before the end of their space or before, whatever, 09:00 a.m. Pacific was, I think a space spun up already right now talking about it. So I'm going to see if I can find that good stuff. ",timestamp:"02:03:53-02:08:08",topics:["Cory Klippsten","John Ely","Bold Bitcoin credit card"],type:"twitter_space",weight:6.436822414398193},{boost:0,date:1587380431,description:"The availability of foods and other supplies during the covid 19 pandemic",episode_title:"Life in Interesting Times - Part 1",guests:[{name:"Matt Murray",profile_picture:"https://pbs.twimg.com/profile_images/1273726156236140544/SJjI1WD7_400x400.jpg",ref_id:"72ce0a76-8593-4898-9369-f39b4bc3d2d3",twitter_handle:"MattMurray28"},{name:"Louise Reynolds",profile_picture:"https://pbs.twimg.com/profile_images/602592582754050048/RbAMd-Re_400x400.jpg",ref_id:"b4c2b12b-96a1-4d37-ae74-5be0883f3091",twitter_handle:"reynoldslouise"},{name:"Jon Slaughter",profile_picture:"https://pbs.twimg.com/profile_images/1336713360/samantha_test_090_400x400.jpg",ref_id:"a295820c-0098-433a-8cc3-cc13085b85c8",twitter_handle:"jonslaughtermd"}],hosts:[{name:"Kim Howerton",profile_picture:"https://pbs.twimg.com/profile_images/858822375457964032/Of4fbmsT_400x400.jpg",ref_id:"49ab70ff-a8e5-4e0f-855a-49abe8a5b645",twitter_handle:"theketonist"},{name:"Daisy Brackenhall ",profile_picture:"https://pbs.twimg.com/profile_images/858822375457964032/Of4fbmsT_400x400.jpg",ref_id:"d68ff5aa-c521-4199-9a6d-bf2cf077ccaa",twitter_handle:"theketonist"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/a8e3517b-b44d-4270-adaa-57587896b1e7.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/ketolifesupport/ketolifesupport-0031-life-in-interesting-times_tc.mp3?dest-id=2479037",node_type:"clip",pub_key:"032318b5d36e680f7ce77f01e1e5e848da79bbd8c86018513c77b32a869e080e90",ref_id:"51ef662a-201f-4c3c-b60d-bbc627c74e8e",show_title:"Keto Life Support",text:"You've got a huge apartment. We can see it. We're looking at each other on Zoom. Kim, you have a very small apartment. Don't you have a partner that you have to share it with all the time? How's that going? Yeah, it's very small here and we don't have really any outdoor space, which is kind of a bummer. And, like, it's in some ways awesome. We're getting along super well and everything's really, like, great. And at the same time, like, there's no space. So working from home is more challenging because you don't want to bother the other person and, like, you know, you're like, talking about this whatever topic and, like, I'm sure they could care less. So I think it's trying to be respectful of more of the ears space than anything else, but everything's, you know, I think there's just a certain amount of surrender that has to happen. This is what is and this is what's going on in terms of what you can and can't do. I mean, I realized all of my hobbies involved shopping, things like that, but in terms of availability here, the first week was rough. In terms of shopping, like, meat was sold out in a lot of stores for when I would go in, but within a couple of days to a week, that seemed to shake out. And now the only thing you can't find here are paper towels and toilet paper. You have to get in line before the store opens to be able to get those but everything else, there's a vegetable. There's like a call Monterey Market. There's a market a block away from me. It's like if you put an incredible farmers market in a building, like they get all the produce from all the local farms and things. It's just a couple of blocks, like a block away from me. And that is like superstar. I shouldn't tell people if you're in the Bay Area. No, it's super stocked and full. But they're only letting like a quarter of the people in that their usual occupancy is. So you have to stand in line outside and you can only go in when somebody comes out. And so that's pretty much what's going on here with the social distinguish thing, is causing things to go at a slightly slower pace, but you just kind of put your earbuds in and listen to some music and just wait in line for an hour and you're fine. And so food seems really well handled here in the Bay Area in terms of being able to access we want we don't have any limits. I don't know how I would do with a family of five to only be able to buy like £2 of meat. You'd have to go to the store like every day, which seems to be kind of counter to what you want to do. I'm trying to limit my trips maybe once a week. So there are no limits. It's very state to state here, though, because I hear from a lot of people, like a lot of clients in their state, they're having a lot of supply issues. But you can get your deliveries. I can't. You can still get Whole Foods and you can still get your Amazon deliveries to you. Yes, but so many people are having so much stuff delivered that everything is booked way out. And so, like, you might place an Instacart or Amazon order and instead of coming in a day or two days or whatever day, whatever the appropriate amount of time, it might be weeks. Instacart is supposed to come the same day, but it's like Instacart is a program. You can shop for groceries and they deliver them. There are other similar programs. It used to be you book it in the morning, you get it in the midday. Now you book it in the morning, you get it four days later. And so they're trying to hire staff to catch that up. I just got a notification that a local Whole Foods is actually closing at 01:00 in the afternoon. So all afternoon they can just do deliveries. And so I think that people are shaking out how to make this work. I think that a lot of it is people hoarding buy more than that they need, which is understandable because no one wants to go out. Kim, if you need toilet paper, I didn't hoard, but buying one pack at one of those box stores will last me an entire year. So I can always send you some. We are fine. Because I actually did get up very early the other day and go to get in line at Target before they opened and it worked and we were fine on toilet paper. The bigger issue was paper towels. Those things hardly. I use a lot of paper towels when I cook because especially with chicken or something, I wash my hands. I use paper towels instead of a dish towel because that way I'm just throwing it away, drying off meat. I use paper towels. I use paper towels a lot. I find this toilet paper thing is weird. I can almost understand the initial rush, but why is it still out of people can't still be I said the same thing. I was like the hoarders have hoarded. What is happening? Well, I actually heard that because nobody's going to work. Exactly. Well, they make those gigantic rolls of single ply garbage toilet paper that are at work, but no one's using that toilet paper. Everybody needs residential size roles and they're not told to make that many. So they've got a shift from making commercial grade toilet paper to residential grade toilet paper and plus the panic buying. So there is a shortage of supply. But human nature it's a weird thing to grasp on to, but I think it's just a control issue. Yeah, I think it's something people can control in an uncontrollable environment. And luckily for me, as I said, I'm not a hoarder, but I do keep meat in the freezer and stuff. So at the end of February, we went to Pipers play. Matt's daughter had a play and we had some friends that came into town and we cooked ribs, baby back ribs and wings before we all went to the play. So the very next day I was going to the box store and I got replacement ribs and replacement wings. And this was just at the start of the spread of the disease as well here in the US. So I had those things in the freezer to begin with and restock them when I use them. Yeah, I think there are a lot of services like butcher box and where you can get meat delivered. And I guess so many people started doing that. They are now have a waitlist. But one of the things that is coming out of this time, in the United States anyway, is a lot of people are getting more interested in their food supply chain. And so in California, I'm in Northern California, but even north of me, about 4 hours up towards Oregon, california is really a big state for anybody that doesn't know. So about 4 hours above me there are a bunch of farms and like one of them is called Five Mary's Farm and they sell direct to the public. They said their number of orders to the public have tripled. So people placing orders to be shipped or to be picked up. And a lot of the restaurant supply farms, a lot of farms just are like connected to a farm to table restaurant. And so with the restaurants closing down, a lot of the restaurants have started supplying to homes. And so, you know, one of the silver linings is I think a lot of people might get a lot more intimately acquainted with where their food comes from, start to form relationships with food producers. And so I'm actually going to do a blog post about it this week where you can find in your area or as close to your area as I know about a local food producer who you can order directly from. Kim ",timestamp:"00:36:39-00:44:02",topics:["Covid 19 pandemic","toilet paper","food supplies"],type:"podcast",weight:6.419591903686523},{boost:0,date:1672772445,description:"Bitcoin mining and malicious attacks",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Foss, Max Keiser & the Plebs! 🍻😂",guests:[{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"Max Keiser",profile_picture:"https://pbs.twimg.com/profile_images/1361873587582472195/y57DiTYX_400x400.jpg",ref_id:"743efd07-d194-4c74-8663-45c3b8646b8e",twitter_handle:"Maxkeiser"},{name:"Isabel Foxen Duke",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"58989d4a-4a96-4ffc-8cbe-f233ffb10420",twitter_handle:"isabelfoxenduke"}],hosts:[{name:"Publord",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5b7b7e22-fe55-4e1c-933d-6544f6600351",twitter_handle:"publordhodl"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7de8e4aa-50a6-4f57-a8ff-6ca16a4f0ae4/76c3395a-4fe5-4802-8d2a-92cca1f1ea0b.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"e4520df5-b812-4247-bd2d-7db10bc5b51f",show_title:"PUBLORD",text:"Brandon gentley here. I don't know how far down the road you guys are going with this, but I just was reading a bunch of stuff over the Christmas holiday just on grid attacks and just stuff that I was only somewhat aware of over the last ten years and seeing some little more high profile ones. But there's a lot more than I had ever thought. There were just minor attacks, thousands of people losing power, things like that, all over America, et cetera. How does bitcoin mining does it, can it? Will it? How does it kind of stabilize just from more malicious attacks? Damn, that's a great question. Cyber warfare? I'm not an expert there, Brennan, so I can't help you with that. I'll just tell you, it's pretty easy to knock out the North American power grid, okay, with some sort of carbon bomb that sprinkles carbon all over the transformers of every single major US. City. I'm not telling you how to do it, and maybe I've got my facts wrong, but I don't know how bitcoin mining helps with that, except to say the following there will be lots of bitcoin miners that are still spinning even if a major North American grid goes down. And that's the beauty of the bitcoin mining network. How could it help, actually, in a pure capitalist way? Well, if you get utilities creating more revenue streams and therefore getting increased revenues and using what's called operating leverage, meaning every single cent of electricity that they get demand for, over and above their fixed cost base creates enormous profits. Well, then the bitcoin miners can increase the revenues of the utilities, which allow them to be able to spend more money to defend their grid against cyber attack. Does that make any sense? Yeah, it does. Greg, I appreciate it. And I'm sure that there's whether it's the Jason Lowry of the world who you've mentioned numerous times kind of going down this type of road thinking about things like that, and then that's just one of those things where I was shocked. I was really blown away, actually, at how much it was happening. And it seems to be happening at the small level where no one notices. And I would imagine that there are some type of, like you said, some capitalistic approaches that either are being done or will be done eventually and just kind of figure out as it's kind of become more prominent, which, like you said, cyber warfare. The biowarfare aspects we know are going to be more of the future and not so much the kinetic side. So yeah. Thanks, Greg. So you're welcome. And you know, what makes me happy is like, smart kids like you are asking these questions. This is what gives me for those of you who don't know, I've met Brandon in in La. And he and Larry LaPard and I, you know, talked about these things. And the world's in good shape when young kids and when I say kids, I mean anyone younger than 35 when young kids are asking these questions and planning for the future. Not everyone's a fan of Jason Lowry. I'm going to see him in Boston in a couple of weeks. I've met him before. Look, the kid has ideas that turn some people off and that's fine. No one else. We can't be groupthink. If everyone's thinking alike, then somebody isn't thinking according to General George Patton, right? So let's keep the lines of communication open for people that might have different ideas or ideology than you have. So the world is in good shape when the kids are asking these questions and not the old men like Max and myself. I don't know the fucking answer. All I know is I want the kids to ask these questions so that when they are my age, they will have solved a lot of the problems that we're now dealing with. Right, Max? Hey, Greg. Yeah, we're going to solve them all. I'm curious your opinion. You have a lot of experience. You're gaining new knowledge over time, like we all are. I personally see a time where no matter what the cost of electricity, individuals randomly all over the world are going to be willing to run miners, especially when they're configured to produce heat for a home if you're going to have to buy heat anyway. And you could run a minor to heat your home and generate SATS for doing it. I even believe some people would be willing to lose money to accumulate SAS. Do you feel similar about the overall worldwide market for mining because of the pools that are out there? The ability for anybody to mine even with just one machine and still gain some SAS, I feel like it's a great opportunity that's never going to go away. Potentially just about your no. Let's take it to one of our power plants in northern Ontario. We are considering adding a greenhouse right next door that will create leafy greens for the indigenous community. So the indigenous communities in Canada have some of the highest tuberculosis rates because they don't get enough sunlight. And if you had a 35 megawatt mining facility, which we do, it's operated by Hut Eight, a publicly traded bitcoin miner. If the heat from that bitcoin mining facility was vented into a greenhouse and used to grow leafy greens for the indigenous communities, do you think that would be a benefit? And so that's just one extension on an industrial size project from exactly what you're saying. Okay, these are secondary and tertiary benefits from the efficient use of energy and its byproducts, which are heat in terms of making life better for various communities around you. So whether it's heating your home or heating a greenhouse to grow leafy greens to allow to combat tuberculosis, lots of these indigenous communities in northern Ontario, there's less than 100 people living in these communities. And if you could put an entire ecosystem to work around a bitcoin mining facility, I'm not going to. I'm not indigenous, and I really don't want to offend any of them if I'm pining on something. But I do think it would make sense to take that heat and heat the school, heat the greenhouse, heat the local tribunal. Every single indigenous community is set up in a similar way. So this is really good stuff as far as I'm concerned. I got to make sure I don't get between the wall and the wallpaper, because I don't know this stuff inside out. But there are people that are studying these projects for the benefit of remote communities everywhere in the world, not just in Canada, but remote communities in Africa, et cetera. So your idea on a home basis, Jim, can be taken to a village in Africa or a remote community in northern Canada for the benefit of all the less privileged. And I got to be careful, not less privileged, just less electricity centric populations. In the case of northern Canada, all of these communities run off of diesel reciprocating engines, diesel fuel, rather than having some sort of electricity solution that incorporates bitcoin mining. So you guys have seen ice road truckers and you've seen their trucking, diesel fuel to northern remote communities. Don't you think the environment would benefit by having a bitcoin mining solution that allowed for an electrification of a remote community running on, let's say, liquefied natural gas rather than diesel fuel? All of these things are possible with bitcoin mining. You never hear any of this from the politicians because, well, first of all, they're not smart enough to think this way. And secondly, they're biased because, you know, oh my God, bitcoin mining is bad. So peel away a layer of the onion and you'll see all the different ways that Bitcoin mining can help remote communities, whether it's your own house or a small village in northern Canada. ",timestamp:"01:07:37-01:16:31",topics:["bitcoin mining attacks","bitcoin mining facility"],type:"twitter_space",weight:22.711352085784924},{boost:0,date:1629691200,description:"[[Bitcoiners]] seeing the signals of the depreciation of [[fiat money]]",episode_title:"WHY ARE WE BULLISH Bitcoin Meme Hub Jan Capek Bitcoin Mechanic Max Hillebrand ep195",guests:[{name:"Max Hillebrand",profile_picture:"https://pbs.twimg.com/profile_images/1311357499514269696/-HQFwyFH_400x400.jpg",ref_id:"9a86cc59-ed01-4757-88f6-e9d9d63067b9",twitter_handle:"HillebrandMax"},{name:"Bitcoin Mechanic",profile_picture:"",ref_id:"faae3a37-0115-4074-af21-7d79c429c7cb",twitter_handle:""},{name:"Jan Capek",profile_picture:"",ref_id:"ec6f8b14-6c4b-42e9-8e86-9aa902c0906d",twitter_handle:""},{name:"Bitcoin Meme Hub",profile_picture:"",ref_id:"dcd5a590-2018-4707-a49b-8142d7b14e33",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/39201536/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-7-23%2F214267789-44100-2-17e9fbafdf841.m4a",node_type:"clip",pub_key:"",ref_id:"b03519b0-5139-4ad4-910a-40f40e332352",show_title:"BTC Sessions",text:"I was like six years old, my parents had we still have a house, small cottage in the mountains and when you bought it, it was actually an old house with all these relics from the beginning of the century. And what I actually discovered there was like a small envelope. When I opened it, there were like the German marks, but these were already the million banknotes. And at that time I was like, wow, this is a lot of money. And then I had this discussion with my dad explaining me that, well actually this was not worth even like you should put it into a stove. They used it for heating because you couldn't buy a bread with that recently. I'm kind of afraid that you just exhausted my reasoning as well with this, but let's wait with them. Back in 2019, I got the purse made from the Venezuelan Bolivars. It was being sold at some conference and I even bought a small backpack for my daughter. So this is really a topic that not too many people realize and I think we are in our own bubble as Bitcoin is that we do like watch for all these things and we're like seeing, I don't think we're seeing like Bitcoin appreciation, but this is the depreciation of all the paper toy money. And then I think Max already hit a few points basically saying that the merchants are greedy and they're like increasing the prices. But the problem is that the merchants also have info. They have to pay whatever transportation for the goods they have to buy, the raw materials if they're actually manufacturing and directly to selling. It all adds up. And I actually had a talk with a friend of mine who has a big machining shop and he produces parts and thousands of pieces on CNC lights. And he said, well, the iron material, which used to be like the cheapest material being used, went up 100% in last month. And when you look at the development of iron ore now, it dropped actually at the end of July. But this is a strong signal that something is already going on and it will be projected into the economy eventually because these are the initial parts of the whole economical chain, the people who are actually manufacturing something. And at the end you have the merchants selling you your airports or whatever. So we are going to see something interesting in a couple of months or years. So I'm kind of scared of that. It ",timestamp:"00:16:17-00:18:55",topics:["bitcoiners","fiat money"],type:"podcast",weight:6.382523059875072},{boost:0,date:1669766400,description:"Konstantin Wünscher narrates how he founded Kollider",episode_title:"Meet the Makers: Konstantin & Arvin",guests:[{name:"Konstantin Wünscher",profile_picture:"https://pbs.twimg.com/profile_images/917464868663582720/PMFCqusG_400x400.jpg",ref_id:"5f027fce-7775-4824-b941-d2f4120d2d0f",twitter_handle:"krychtiukmd"},{name:"Arvin Galoy",profile_picture:"https://pbs.twimg.com/profile_images/1429792764464611329/4VQqlZiM_400x400.jpg",ref_id:"e0eb434a-9219-4c57-b9e4-da6ceeaec040",twitter_handle:"GaloyMoney"}],hosts:[{name:"Zapp Ed",profile_picture:"https://pbs.twimg.com/profile_images/1519990234070540288/adGqlFoj_400x400.jpg",ref_id:"bbe7cf1d-cd8d-4d36-926d-76f41b775fbb",twitter_handle:"zapp_ed"},{name:"Moritz Alby",profile_picture:"https://pbs.twimg.com/profile_images/859727763292512258/kiFpZ2vO_400x400.jpg",ref_id:"e88efbf8-3809-4508-a86a-d7bf9effb574",twitter_handle:"MoritzKaminski"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/965489b4-a414-4fd0-ab8c-55911b1596aa.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=CjwjScc0TYg",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"caca294d-8661-49a2-80a9-32e4e8452c03",show_title:"BOLT FUN",text:"content. What about you? Did you immediately start with Collider or was there also some experimentation in between? Yeah, there was a lot of experimentation. Actually, I remember our first product that we build had nothing to do with trading. It was actually a data labeling service that used Lightning to pay people to label images. Because my background is machine learning and AI, that's what I studied. So even though I came out of this finance job, I thought I got, well, payments, that's pretty cool. Maybe start with customer facing product rather than having to deal with other big trading firms. So basically what we're trying to test is whether people are into micro payments of this. Because the idea was just like this labeling model that was pretty state of the art back then, which basically enabled you to make some sort of very rough outline and then we'll do the rest for you. In terms of labeling was sort of an unsupervised learning technique. But anyway, so we were paying people for like every time they made a label, they would get some SATS and we were just thinking, would people do that? And we kind of realized quite quickly is that these were really very neat things combined. Like people that would label data, they probably wouldn't know about Lightning or it would be not usable to them. And also it was just like people didn't really care about very small amounts. So basically we're just testing whether Michael payments are so popular. I don't know. We did test it and we didn't get any of this. So we kind of scrapped that idea, although I thought it was a cool product. And then we started basically focusing on something that we know more about, which was obviously finance trading and stuff. And then we built a very simple spread betting interface, which was not like an exchange, was just like, you can make it back with someone else about price. And yeah, we did that. And then I don't know why, I think we sort of realized that the problem this is, again, people don't necessarily need to want to do that in a very small again, basically, again, it was focused on very small payments, and people didn't care about very small amounts that much for that application as well, like trading. So if they want to trade, they want to trade size. We kind of come to terms like, in order for this to work, we actually have to build a proper exchange where people can basically trade whatever amounts they want and make it very similar to what already exists in order to kind of ease in the users into this new idea of using lightning rather than just throwing something completely different at him. It was sort of the journey that we went down. But yeah, compared to Arman, it was very like product driven. We were only thinking about products most of the time. We were thinking, how do we get this technology into as many hands as possible? And again, trading is probably one of the most popular things to do in crypto. If there's any application, it's like used very like a lot and then trading. And so we thought, well, that's a good starting point, let's just try to create what already exists. But with Lightning kind of derisk, that's what we narrowed down on and that's how we then build. And yeah, I think this is sort of it. And now we obviously made branch out a little bit away from just trading. I was thinking about more payments and more of the stuff that is probably like what Alan mentioned. Actual sort of problems that you could solve with this technology because trading is obviously it's needed as a backbone but the things that that enables is not necessarily very obvious to people but it can enable other financial sort of instruments or abilities for people. But yeah, so this is what was the journey, very product driven, quite a bit of experimentation with different ideas. ",timestamp:"00:10:10-00:15:01",topics:["Konstantin Wünscher","Kollider"],type:"youtube",weight:9.398438332070137},{boost:0,date:null,description:"Solution for the massive debt growth in third world countries",episode_title:"Gladstein & Sam Callahan - World Bank / IMF & #Bitcoin",guests:[{name:"Sam Callahan",profile_picture:"https://pbs.twimg.com/profile_images/1592532728775409667/0DayEP2Q_400x400.jpg",ref_id:"5a044a91-8dee-421c-86dd-8c734dc9bc32",twitter_handle:"CallahanMusic_"},{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Brady",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"45bbbb01-6163-4b3b-905a-fc67174893d9",twitter_handle:"CitizenBitcoin"}],hosts:[{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f8be7c60-94a5-41d0-972c-6301cd4ad7f0/4e5bf86b-6193-4f6e-8fa3-933344b2053e.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"f76300e2-dc0d-4960-a1cf-6c7b90ad4cfa",show_title:"Swan.com",text:"Yeah. So it creates these dependence on these international financial institutions. And when these poor countries get into debt, usually they just need to get in more debt. And, you know, the IMF mission statement is to achieve sustainable growth and prosperity for all of its 190 member countries. And the World Bank's mission statement is to, is to reduce poverty and improve living standards by promoting sustainable growth and investment in people. Now, when these poor countries need money, there's really not many places to go. The IMF and World Bank are some of their only options. And if you look at the data, Alex, I'd love, if you just go over, have they achieved their mission, would you say? And can you talk about the amount of growth that's happened in the debt over the last, say, four or five decades for these third world countries? Because it's just insane to me. Yeah, a country I looked at, Bangladesh, had a couple of hundred million dollars in external debt in the early seventy s and now has $100 billion today, for example. So the whole machine has basically made it so that these countries have more debt than they could ever possibly pay back. And again, the debt is denominated in a currency that they cannot print. So the whole system just needs to be disrupted and broken. I think that in the future that if we do end up having a bitcoin standard, that the system would be disrupted and broken, because then you wouldn't have certain countries that could issue with paperwork, the reserve currency. All countries would be on the same standard, and every country would be able to, if it wanted to without needing permission from a great power, they could convert their energy into this reserve currency through mining. And maybe that's not sufficient. Right? And I'm not suggesting that all countries will become equal. You're still going to have huge inequities that result from labor productivity and all kinds of other things. But the point being that even small countries, they won't necessarily have to shape their economy to suit the needs of foreign powers to get foreign hard currency. They could, for example, invest in local electricity production, which is good for the local population anyway, and then use that to mine Bitcoin or to power the local economy. And I think that's a much better kind of choice than selling stuff for other countries that is just going to go to paying it back more debt. So I think there's like a light at the end of the tunnel. Maybe there's a way out. And that's something that I try to be pretty hopeful about. Certainly a lot of people at the African Bitcoin conference think this, and I think it just starts to make sense once you talk to enough people. We should all speak the same monetary language. There should be one standard. It is completely ridiculous that there's 41 central banks in Africa. Each one is its own lording over everybody else. And then there's also the French, who still control a huge chunk of Africa. So in a Bitcoin standard, the power of these institutions to repress people is dramatically diminished. It's not eliminated at all, but it's certainly diminished by a lot. So that keeps me optimistic about the future. Yeah, absolutely. Bitcoin is a light at the end of the tunnel because it's hard to see another way for this to get disrupted, in ",timestamp:"00:59:02-01:02:59",topics:["Debt growth solution"],type:"twitter_space",weight:6.3401312828063965},{boost:0,date:0,description:"Implications of Taproot activation on the protocol",episode_title:"Taproot Activation Q&A with Bitcoin Devs - TABConf 2021",guests:[{name:"Andrew Chow",profile_picture:"https://pbs.twimg.com/profile_images/1452266201770496010/44FHCtZM_400x400.jpg",ref_id:"f96d87ca-5060-4021-aeb9-61db03312027",twitter_handle:"andrewrchow"},{name:"Ben Carman",profile_picture:"https://pbs.twimg.com/profile_images/1550704386007089152/pLwUSeff_400x400.jpg",ref_id:"1d1e95ba-b4af-415f-aafe-85c6dd7571b8",twitter_handle:"benthecarman"},{name:"Matt Corallo",profile_picture:"https://pbs.twimg.com/profile_images/697361498587451394/_rX0-O0W_400x400.png",ref_id:"08cb3c45-c0bc-4a60-ae5b-a1283d352c8b",twitter_handle:"TheBlueMatt"},{name:"Pieter Wuille",profile_picture:"https://pbs.twimg.com/profile_images/1264051937172836353/n7gHdLbB_400x400.jpg",ref_id:"40260d2f-3480-47d6-8515-d2e780901273",twitter_handle:"pwuille"},{name:"Vivek Kasarabada",profile_picture:"",ref_id:"60ed22d0-8cf3-410e-8a7c-9c343ae109ca",twitter_handle:""},{name:"Murch",profile_picture:"https://pbs.twimg.com/profile_images/1269477743525130241/-U843Cmt_400x400.png",ref_id:"3e2c1c73-a057-4475-9782-3bb0d3d8cc62",twitter_handle:"murchandamus"},{name:"Andrew Poelstra",profile_picture:"https://pbs.twimg.com/profile_images/1316562683009921024/FSscAYvJ_400x400.jpg",ref_id:"15fb9c53-c988-4af1-bbf0-4832d71b0a01",twitter_handle:"Blockstream"}],hosts:[{name:" TABConf (The Atlanta Bitcoin Conference)",profile_picture:"https://pbs.twimg.com/profile_images/1596233571521499138/YE8Us_Ml_400x400.jpg",ref_id:"eb1b6016-6223-4b2b-9264-2423ce66304f",twitter_handle:"tabconf"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e7d2a4ca-6b44-4a45-a94c-6f48987979f7.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=MrxtqAlRI2U",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"f9d1d228-19db-4a2d-bfb3-7853fd745ea0",show_title:"TABConf (The Atlanta Bitcoin Conference)",text:"implications does it have for the protocol? What are some things that will be possible day one on activation? And also what are some things that you guys see coming in the future that will take advantage of these changes that aren't really being built yet? It all depends on your wallet. If your question is from the perspective of a wallet developer, well, as soon as Tap root activates, they will be able to make use of the features that Taproot introduces. If you're just using a wallet, well, you are restricted to whatever your wallet can do. So there is no impact as a wallet user. There is no impact on you unless you update to a wallet that can. Make use of these features more generally. So first you'll see transactions that make use of Schneider's signatures. Schneider signatures are slightly smaller than the current ECDSA signatures. So there is a small savings there for the inputs if you are involved in multisig multisig that uses K of K keys. So two of two or three of three can be expressed as a Tweak in the keypath. So when people implement a signature or sorry, a public key aggregation method like for example, music, they'll be able to do keypath spins and multisig wallets will be able to look the same as single SIG underwire. And I know for a fact that a few companies are working on this already because it will be huge savings compared to having an actual multisig script in the transaction to just have a keypad spend. Yeah, go ahead. Good. We'll move on to lightning at the end. Okay. So more generally, I mean, this is the design goal of Taproot that it introduces a new address type that can be used for everything. So before we had separate output types, separate addresses for the simple pay to pubkey pay to pubkey hash style things. And on the one hand and on the other hand, p to SHP to WSH for the more complicated script things Taproot produces allows it to produce a single address that is different from all of the ones before. But it can be used by everything and even better at spending time. In many cases, you cannot distinguish what it was. So this is both an efficiency saving because it's cheaper, it's also privacy saving because you're not revealing to the world what kind of wallet construction you are using. So, for example, right now you can detect like, there's some fairly large multi sigs that are basically only used by one entity. And so you can very trivially detect like, oh, all of these, I don't know, what's the liquid policy now? Like nine of 15, like all of the nine of 15s are liquid, basically. Okay, well, whatever. And so you could hide some of that policy, so you wouldn't necessarily reveal that when you spend the transaction. Another thing that's a little bit down the line, but a cool crypto trick you can do with Taproot is you can produce a ring signature over all. Of the Taproot outputs or all of. Your Taproot outputs above a certain threshold and prove that you are holding a coin of a certain value without revealing which one. Other than that one of the tapered ones. Yeah. So it's generally that kind of fits into a broader category, like Schnorzigs are much simpler mathematically. And so there's a lot of cool tricks you can do like that and other stuff like the signature aggregation and whatnot. And then also with lightning, this is also something that's kind of further down the line. And there's no real concrete I guess AJ has one concrete proposal for it, but eventually we're going to get PTLCs instead of HTLCs. So instead of using a hash, we can use public keys and revealing the private key for it, or revealing a signature, an adapter signature for it. And that allows us to decorate payments across hops, right? So right now, if you go to send an HTLC or you go to send a payment enlightening, it goes through four hops. And all of those four hops see it's payment hash, you know, ABC, and they all see the same payment hash. And so later they could, you know, get together and correlate and say like, hey, I saw a payment hash ABC. It's like, yeah, I saw that too. And you can correlate and tell where that payment maybe came from, where it went to. And with PTLCs, there's an additional blinding factor added at each hop, so they won't see the same data and only kind of their immediate peers will see the same ID. So if you're missing a hop, you won't necessarily be as able to correlate that. So it's one fewer correlation metric. There's obviously other time based correlation metrics that are problematic, but like the on chain stuff, it's one fewer correlation metric where you can group certain types of transactions. There are other issues, but remove one at a time. I'd say the explain like I'm five, is just like standard user wallet is basically the same, and then all the fancy stuff gets cheaper once actually people build up stuff. I think that's a good summary. What will change on activation time for a normal wallet user is absolutely nothing until their wallet starts making use of it. ",timestamp:"00:12:40-00:18:29",topics:["Taproot","Taproot activation"],type:"youtube",weight:6.240247130393982},{boost:0,date:1671634578,description:"How Bitcoin mining will open up more markets",episode_title:"Café ₿: 23’ Macro Outlook w/ Joe Burnett & Mitch from Blockware",guests:[{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"Joe Burnnet",profile_picture:"https://pbs.twimg.com/profile_images/1601649626754564105/9TubQjRd_400x400.jpg",ref_id:"1c849151-1cca-44db-9a69-665fac5dc6f6",twitter_handle:"IIICapital"},{name:"Mitchell Askew",profile_picture:"https://pbs.twimg.com/profile_images/435841191524204544/mzKR9KCX_400x400.jpeg",ref_id:"fc4ba3ae-eacc-489d-a888-397ba6b1f842",twitter_handle:"mitchell_askew"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/601898b8-8964-48ba-aa92-ab3f1c4ad0bb/75f49b1a-9dce-41fd-8517-77b607c9c154.mp3",node_type:"clip",pub_key:"",ref_id:"6c3edea1-97d0-41d4-a015-0f16417f2ee7",show_title:"Swan.com",text:"Why couldn't it work? I think it's fascinating because if you think about power generation, the power generation and distribution has been hand in hand at the absolute key to prosperity globally ever since we figured out how to leverage rubbing two sticks together and making a fire in a cave. And the fact that they're bringing on six new nuclear reactors, they're embracing Bitcoin mining, and they have these alliances in the chip industry. Wow, man, that's a freaking power move. I mean, more in terms of sorry, go ahead, nuclear, my bad. Well, this isn't just that building new nuclear reactors. There is intention to do that. This is restarting their existing fleet. They've got 30 gigawatts sitting on the sideline right now just waiting to be put back into action. And then on top of that, they do want to get into the small modular reactor game and also build new nuclear assets, nuclear in Japan. And Bitcoin mining is going to be very interesting. What I was getting at, Alex, when I said I don't know if it could work, what I meant is literally backing their currency with the Bitcoin that they're mining. So keeping the Bitcoin and then somehow backing their currency with it. I just don't know how those dynamics work. I mean, they have so much debt that would they technically have to default on that before they make the switch over to a Bitcoin backed currency. Or like I don't even know how that would work because obviously they can't back their currency with Bitcoin and then still expect to be able to pay off their debts if their currency is backed in Bitcoin at that point because you can't print more of it anymore. To me, the simplest way would just be to hyperinflate the currency, switch the currency to a new Bitcoin backed currency and then get to hit the reset switch. So all the debts basically go to zero in real purchasing terms and they can reset the whole currency. This is the idea behind gold. You know, the funny thing about central bankers and gold is if you watch what they say, when they're no longer in charge of the central bank, many of them will admit candidly in interviews that the reason that they hold gold is that it's the emergency reset switch. If the currency ever blows up and collapses, they can use gold to basically declare that currency the old one and this is the new one. And gold is the reset switch. You have to have some trustable reset switch. I'm not saying it needs to be gold, but I can see how it would be a pretty I'm not going to say seamless, but it seems to make a lot of sense to me. Like, okay, you know what's super interesting? Wiremart hyperinflation. I know you guys are probably sick of hearing me talk about wire, but it's fascinating. Do you know how they reset the currency? One dude came along and he introduced a new money, and guess what? The money had as its primary attribute. He said there was a limited quantity. We will never print more than this amount. And instantly the people accepted it. And then what did they do a few years later? Well, yeah, obviously they can renege on those promises, but my point is that confidence is the key to all currency systems, and in context of Japan, I think that would work. Yeah. There's no easier way to convince a populace of a better currency when your current currency is collapsing and failing. So when you are kind of under that pressure and you're getting squeezed from every angle, it's easy to get out by saying, hey, well, look at this new one we have. It's backed by this underlying thing called Bitcoin that can't be printed more of, so we won't print more of it either. And, I mean, who knows if they'll keep that promise, but at least it'll be better than what they have now. And I don't know. Again, looking my only exposure to kind of where the Japanese yen is in terms of its purchasing power is what the price of Bitcoin is in terms of yen. And it doesn't look like it's inflating that much, at least relative to its exchange rate for Bitcoin. So, like, I don't know if they're being squeezed that much at the moment, but obviously it's only a matter of time before all fiats have to squeeze, as we always talk about here, right? Yeah, I don't know. Interesting times ahead, for sure. Nuclear, what's the latest in regard to small modular reactors? SMRs people who don't take two minutes and explain what the heck they are and then tell us what's going on in that space. Yeah, so small modular reactors are basically just smaller versions of a nuclear reactor. Anything less than 300 MW is what fits into this small modular category. There's many different designs. I think 70 are being proposed right now globally. About half of them are just smaller versions of the existing boiled water reactors that most of the global reactor fleet is designed by, based on. But some of them are going to be using new cooling technologies like high temperature gas and liquid metal cooling and solid state cooling, various technologies that have been proven in the past but put on a shelf as they only stuck with one design and just built many of those. But right now in Canada, there are several projects ongoing. There's a 300 megawatt BWRX reactor by GE attachee that just got nearly a billion dollars in financing from the federal government and the province. So there's a lot of money being funneled into these projects. The Go dates are still looking 2027 28 to have these demonstration units operated. And I'm just actively trying to connect the dots and see how we can integrate bitcoin mining into this new future that nuclear power is getting into, because I think it'll be greatly beneficial and open up even more markets than the small modular reactors would be capable of. Because now we can essentially play out the pioneer species idea and drop a nuclear reactor wherever we want, monetize it immediately, and then just start building around it. So it's going to be very exciting. Lots of countries are pursuing different versions of the SMRs. I just happen to be most familiar with what's going on in Canada. It's looking like Argentina might actually be the first country to have a deployable commercial scale SMR outside of besides China, obviously. But that's going to be a very interesting future for Nuclear. And we'll keep you guys updated as things go along. Awesome, obviously. Happy to have you back. Anytime, nuclear, you've got some great stuff, and I'm super fascinated by the SMR industry. ",timestamp:"00:54:19-01:01:51",topics:["Bitcoin mining","Currency hyperinflation"],type:"twitter_space",weight:14.955047728896634},{boost:0,date:1666137600,description:"Tools for managing Lightning nodes",episode_title:"Meet the Makers: Alan & Kwinten",guests:[{name:"Alan Plus",profile_picture:"https://pbs.twimg.com/profile_images/1565235279451103233/XD8pJuIo_400x400.jpg",ref_id:"e362fed6-ec06-4d8a-a052-3137b24f213f",twitter_handle:"alnboltn"},{name:"Kwinten De Backe",profile_picture:"https://pbs.twimg.com/profile_images/917859380699320320/p_v-fjmh_400x400.jpg",ref_id:"be68f240-1f4c-4b27-b4bb-752c90cbe0c3",twitter_handle:"QuintenDeBacke1"}],hosts:[{name:"Moritz Alby",profile_picture:"https://pbs.twimg.com/profile_images/859727763292512258/kiFpZ2vO_400x400.jpg",ref_id:"e88efbf8-3809-4508-a86a-d7bf9effb574",twitter_handle:"MoritzKaminski"},{name:"Zapp Ed",profile_picture:"https://pbs.twimg.com/profile_images/1519990234070540288/adGqlFoj_400x400.jpg",ref_id:"bbe7cf1d-cd8d-4d36-926d-76f41b775fbb",twitter_handle:"zapp_ed"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/965489b4-a414-4fd0-ab8c-55911b1596aa.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=GyA8tHNKmig",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"7e996fc8-37c7-447f-b0e5-c6dbf58015fe",show_title:"BOLT FUN",text:"Now, as we have now, both of you come from the field of node operations. Can you share a bit like the tools that you use and why you use these tools to manage Lightning nodes? Alan, if you want to go first. Well, actually I don't actively manage my node at all, so I manually go in every day and do things, but I don't use any tools. And the reason is because I don't want to compete with other node operators, so I don't want to outcompete them. So my role is really to make sure that everyone else is successful and making money and make sure that the network is decentralized as much as we can do it and everyone has capacity both ways and stuff like that. So I don't want to be like a routing node, so I'm kind of supporting smaller nodes while still growing and stuff like that and for that I don't need automated tools. Can you tell us a bit more? You mentioned just the purpose you want to help smaller nodes, but do you do that under like the Lightning network plus node or how does it work and how do I get support from you if I am a small node operator? So one way I do it is, for example, if there is a swap that is open between smaller nodes and it's failing because somebody fell out of the swap, these liquidity swaps and let's say there are three people and one node is just out because something happened, then I take their place. This happens quite often and my node is quite big. So those other two node operators are typically satisfied with me taking the place because they get more connectivity. And the other thing is I allow anybody to open a channel to us if they want to, even small channels like 50K sets or something like that, which is typically not possible to other big nodes because they don't want small channels. The minimum is usually a million or 2 million nowadays, which could be a bit too much for a beginner because they don't want to risk that much money. And sometimes I do open to people that I chat with and so these are the ways basically I just create liquidity for people or help them organize their own little swaps and stuff. And you do that all really manually or rely on standard tools that are out there? Yes, mostly like 90% of the time. I did try a couple of tools because I wanted to learn. So there are some situations where I use some automation. I also wrote some scripts of my own for setting fees. For example, I experimented with all kinds of different fee structures. Zero fee, very low fee, higher fees, optimal fees, all kinds. And I found that all of those strategies have an advantage and a disadvantage. So there's no optimal perfect strategy. You can make money in different ways really. You just have to find your own niche. And I also found that being a completely zero fee node is not beneficial for other nodes. So unless I want to be like zero fee routing who makes money on being super well connected and selling channels? That's a different story. But I don't want to be a zero fee routing because that's too much competition to other nodes. So setting some small reasonable fee is probably the best way how I can stay out of other people's business. But at the same time it's kind of like the best of two worlds. Like trying to be a good router for others but also not taking their profits. And where do you see does this go to in the future? So it seems for me like you are very much supporting the operations of your platform basically right when someone needs a replacement also then you jump in and help out to create one of these swaps or to complete them. But where does this go to? Do you always think, okay, this is where you want to stay or do you have some ideas where this could lead to? Yeah, I have ideas and I think the future is going to be more and more automation in this swap creation. So for example, I have this idea where I could have a wallet, a brand new wallet that I create or maybe join some existing wallet. Basically when a new user wants to open a channel they would open it through a swap immediately. So they would have two channels immediately on the at the beginning, one incoming, one outgoing. So it would be all the swap creation would be done through an API and transparently for the users. Because this way you don't have to go to a website and you don't have to log in and do all of those things. It's just all done in the background. So yes, this is I think is the future where this is going to be one of the ways how you get incoming liquidity? Yes, I think that's a very interesting topic. We should come to that in a second. ",timestamp:"00:16:30-00:23:25",topics:["Lightning nodes","nodes operators"],type:"youtube",weight:6.396489111901376},{boost:0,date:null,description:"The Bitcoin Village project in Nigeria",episode_title:"The Orange Sun ☀️ #Bitcoin News and Talk",guests:[{name:"Portland Hodl",profile_picture:"https://pbs.twimg.com/profile_images/1562306406526492672/LiqmI9NS_400x400.jpg",ref_id:"530aba21-392f-4156-9e91-4fc5c76fced1",twitter_handle:"PortlandHODL"},{name:"Miykael Woodward",profile_picture:"https://pbs.twimg.com/profile_images/1473433558475689985/CM0o3oWu_400x400.jpg",ref_id:"6fe02a78-4f07-47e7-8e64-b278a3167835",twitter_handle:"MiykaelWoodward"},{name:"Okin Mobi",profile_picture:"https://pbs.twimg.com/profile_images/1518945775685967873/O0wPrIKO_400x400.jpg",ref_id:"bbd18918-7758-4bdb-b9a5-641bf92748a6",twitter_handle:"OKIN_17"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"Funsho Jimoh",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"a237ffb0-792b-484e-b12f-65a2b679eaf1",twitter_handle:"fnicencool"},{name:"prince ogbonna",profile_picture:"https://pbs.twimg.com/profile_images/1595693872637681664/TeWJzTut_400x400.jpg",ref_id:"0b0c70b1-23b1-4d98-b259-6dbb67b7481d",twitter_handle:"princejoj0"},{name:"The Bitcoin Village",profile_picture:"https://pbs.twimg.com/profile_images/1544318244789649410/kQ2G1MCE_400x400.jpg",ref_id:"d894aca4-36f6-4821-a00b-a4e860b19502",twitter_handle:"VillageBitcoin"},{name:"Masterguantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"29baf525-42eb-41a6-98f9-a0d6b4480af0",twitter_handle:"MasterGuantai"}],hosts:[{name:"Jeremy Garcia",profile_picture:"https://pbs.twimg.com/profile_images/1589056396816896001/dslbBQSX_400x400.jpg",ref_id:"e5e68f75-d71a-4477-ae9a-6a891f2d84d0",twitter_handle:"Jerimican5445"},{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/bef977d0-8a6a-441b-a8cb-58baebe2bfd7/b9ec2918-1059-48ac-b5ee-69018c42a07c.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"63cc2dff-cc56-40e2-8c22-93153e7d3255",show_title:"Satoshi’s Journal",text:"It looks like Olu finally got up here. I know he's having some issues. I think he's at the Bitcoin village, so connection is not very good, so give him a chance. Olu, if you can hear me, how's everything going at the Bitcoin village? Yes. I have to hide myself in the heart to be able to talk. Can you guys hear me? I'm in a whole place. Can you hear me? What did you say? You're hiding in, like, a heart, like a small bamboo and tree kind of thing we put together so we can hide our head here when the sun is very construction site. Hello, everybody. Top of the morning. It's been crazy. Bad network, but still we have some level of internet. Anyway, thank you. Jeremy Tk. Towel. Prince Blanca out there. I see Janet. I see amica. Extremely. Daniel, lots of you. Big respect. Thank you. Thank you so much. I'm freaking excited. We're getting donations. $1,500. We're getting donations. It's crazy. Yeah. No, it is, man. Yeah. I can hear you. We can hear you, Olivia. Oh, yeah. Okay. It's so amazing that you have to look. Things happen, right? Nigeria's name is known for multiple things. Apart from our musicians painting the country in a positive color by winning Grammy awards, BT awards, and whiskey. David Bernarboy doing well. Our politicians are denting our name with their corruption and some fraud. Stars are also messing up the name of the country with scam. But bitcoiners are lifting the name of the country up. In many cases, when people do stuff, they associate Nigeria with scam. Unfortunately, it's not about that. The major percentage of people in Nigeria are very good people. And the base coin village is a big example of one of those good projects. Although I have seen and heard people say one or two negative things on Twitter, I smile. I will come here, and I can see the progress. And very soon, they're going to start seeing pictures, and they will see and they will come here. The people who don't have the opportunity, capacity, or one or two things are the people that will miss out. But because it's a monumental structure, you will come here. Maybe if you can't make it in 23, you can make it in 24, 25. The building will be there forever. When we leave this face of earth, when I am no more, when myself and Jeremy are no more, maybe 70 years from now, hopefully we'll leave longer. Because I would like to leave to, like, 100 years when I have teeth no more. And I can just I don't have to be able to pronounce it. I can actually picture that with you notice saying that. Can you say it again how you would be saying that? There are people called land grabbers. Land grabbers. Right. They take money from you every time you're doing construction. They table people. The government has dealt with them, but still that's what they do. So they were at the site yesterday with machetes and everything and sticks and they went to disturb the construction workers. So they called me. I couldn't get to them for a long time. They couldn't get to me for a long time. So when it got to me this morning, I had to step in to the CABAC, which is the paramount ruler, and of course some of the leaders. And we went to the site and we've been waiting for them to show up. They didn't show up because I already got military people on standby to make sure they don't disturb the progress of the work. It's not like they didn't vandalize anything, but they scared the workers away from the site. Anybody that knows Nigeria know this is how these land grabbers come, all because they want to get money. But I stack their money today. I'm ready to give to them. But I'm going to give them a serious warning. The next time they come and do such thing, you're going to be in trouble. So that has been the stress for today. They take money when you're about to do your after your. So what is trying to do is take money. They take money for digging. They take money digging, which is excavation. They take money for your DPC down proof cost. They take money for the first level of blocks. When you get to your decking. They take money when you roof. They take money. Once you put the gates. They take money until you're done with construction. They take money about five times. So if you don't know how to operate with them strategically, they can stress you. And they demand for crazy amount of money. They are called, or more, only length. The Nigerians here can attest taste to that. It's terrible. But I thank God I've been able to douse the tension. And they're requesting for $1,000. I told them that's crazy, I'm going to give you guys $500. So I told them you have to write an undertaking, blah, blah, blah. They refused to say never, blah, blah, blah. I put my phone number, I said I was going to record them, blah, blah, blah. At the end of the day, I gave them $200 first. I said, I'll give you 250. When these guys completely stopped the job today, finished their job today. So at the end of today's work, I'll give you 250. And I said, so let me take pictures with you. Stupidly. They took pictures with me and I recorded them when I was giving them money. Why did I do that? So that when they come another time or when another set comes. Because what they usually do is they come in different sets. So once you give them money, they tell other people, oh, he gave us money. So you can go and act like you didn't know anything about it. So those are the challenges of construction in Nigeria. And I think it's because the Bitcoin village, Nielsen, is already online. So some of them can go online and they can see, okay, this is a big project. As a matter of fact, whether it's big or not, anytime they are doing construction, they look for construction sites and they come and say, oh, we are the community people. And really the community don't like them. They are the thugs on its uneducated parts of the community that's full of disturbance. But the paramount king has given an order and set up like a vigilante group to protect the construction site workers. So that's just an update. There's a lot of work right there. So I wanted to update you all. That's what I went through in case somebody saw me and he took my pictures while I was Qurin. I said, get out of here, get out of here. It's just me trying to let our work be smooth, because they can delay work for like a week if you don't pay them. Like they delayed us yesterday. And every day counts because we need to launch this next year, especially during the conference. That aside, I can't wait to release pictures of updates for you guys. Most likely by I'm looking at next weekend, substantial progress would have been made. And I just want to thank the stock chain as they've been very nice. It's more like the stock chain as they are competing with each other. Somebody puts 100. Somebody puts 500, somebody put 1005. So, Jeremy, what we're going to do is what we have said before, after the orange song, we're going to have our meeting maybe today or much later or maybe by the next meeting, so we can put together a necessary document that is faction as we need and anybody that would need it. Maybe we're going to put it up on the official Twitter of the Bitcoin village and or invite people to private meetings. I don't know where we're going to put that up. Maybe it's a torture on the website so people can see some of the documents that we have all approved by the legacy government, and they can see the quotation from the QS, and they can see how transparent and the amount that the construction is going to cost you. And I know the quotation by the quantity surveyor. So we're going to put up the architectural drawing, the mechanical information, the electrical information, the soil test, the approved building plan from the government. All documents will be put up there with biweekly progress pictures and videos so that this donation can keep coming in, and not just for the donation's sake. Anyway, that's what we have said when it was just you and I working on this. Why do we have to be transparent? I've never, ever taken donations in my life. Public donations like this. And it's amazing. It's really amazing. The budget we had initially shut up tremendously because of inflation. Things are getting expensive day by day. There is blocks, cements and all that. And we really need to let people know we are building this for bitcoinners and even non bitcoinrs that will become bitcoinners. Who wants a bitcoin village and bitcoin development center that people will walk into and be very happy and befitting place that whatever certificates you get out of here would be valid for you and you'll be proud that you came here. Even if it is a developing community, in five years this place is going to be a city because of the fort mainland bridge. If they finish the fort mainland bridge by 2027, which is five years from now, I want to say five years because I know that the government can be very terrible and it might even take seven years. It's going to open up. And the value of properties here might shoot up to as much as $500,000 per plus. So we are properly positioned and we must do things rightly. I'm just so glad that the statuers have turned up for us. Even jeff boots and so many people have commended positively about what we are doing. This is what we plan between ourselves and look at the world embracing us. Even corey of swan give us a light by retreating. I know retreat is not necessary endorsements, but retreating on your timeline is some level of association and we appreciate that. So all bitcoiners follow bitcoin village, advillage bitcoin and trade at this particular and spread the word this that we're doing this on a private property so the governments don't have power over what we're doing. So care less about the naysayers and we will continue to be as transparent as possible. It's been myself and Jeremy putting our heart and money to this all the time and myself on the ground doing the work. But now we have you guys bitcoin as a family and I really want to thank phil for making this possible. Our teammates will involve the stock chainers and anthony of stock chain. Great guy. And all the stock chains and tao will give us more like an open attestation. Tao attested to our proof of work openly, without an iota of doubt. And I've never heard tao say such about any construction project around this bitcoin ecosystem, although maybe I've not featured in the space where it must have done that. But tao really talks in spaces. When he's talking, it's either educating or not. Now, this is not simply jeremy and all my team members know me. I don't care. I don't think I have sleep on my shoulders because I know how people look at me as a black man, and of course because I'm from africa, nigeria. So I protect my image, I get my money and I respect myself. But when people say something great about what we are doing here, far away, here in Nigeria. I have to give Kudos to what Kudos is due. So you can do your check and balances. You can verify as much as you want. The address is open with or without me. You can go to the village, you can ask village questions. You can go to the site if you want. Very soon we're going to put a big sign at the waterway so anybody that is on the boats can actually see the sign, verify. You don't have to know me and put the word out. Let them know we are building a bitcoin village. Some people, my colleagues, come if they like it's, to their own pocket. But when we start to give lectures and we start to graduate bitcoin and lightning developers, then you will go and ask those people that will be changing the world if it still is come, or you yourself is the person that is bipolar and have issues in your life. And I'm sorry, it's not to be condescending to anybody, but it's just how I feel. So thank you all. I'm sorry I came in here late. I've been trying to come online, but it's been terrible network issue. And of course, because I've been around putting in work, so I have to hit the road again. I may not be able to talk too much, but thank you, big thank you to stock chain US for donating their money. And because of that, we're going to make the budget transparent. From the engineer to every necessary person on the team will come on spaces at different times, so you can have a talk with them and all of that. This project is going to cost way over. Way over. The last time we checked in Nigeria, money for just one building is about 104,000,000 there. You can calculate that in dollars for whatever it is it's going to cost, whether black market rate or CBN rate. So you can see it's not a child's place. You see the type of building we are trying to do. It's something we could have put together a bongalu. And let's say we start to finish the bongalu in three weeks, but of what use would it be? Because it would be the same size of building and the same look with every other building in the village, we have to do something that the villagers will look and say, wow, okay, this is monumental. If this can come to our community, then we must take our life seriously. Like I told the young men that came to distract the place yesterday, I told them today, I said, look, you are only marking yourself negatively. Because when other people in this community will be learning and will be graduating and some of them might get employed by bigcoin companies internationally, you would regret your actions today instead of you supporting the progress of this building. Because with or without you, this will rise. You just take your money and you go on the day of lunch or by three years when this monumental structure is already manifesting lots of greatness, you'll be regretting. So you better go and change your ways and think of how you can come and learn. Maybe this is your go to opportunity to break through from the poverty that you have been entrenched in. Two of them came to me later and apologized and say, you will never see us here again. Please, I would like to learn bitcoin and I was very glad to them. So, yeah, what we're doing, the blockers here and there, but we are overcoming challenges and we are moving at a very unprecedented pace, even though there are delays. But I'm very glad. I thank you all. Sorry for taking your time. You can ask questions and hopefully you guys are preparing dusting your passport so we can all marry Gada as friends, as brothers, as one bitcoin is in Nigeria come March 2023. God bless you all. Hey, can you just give us an update as to what is going on exactly at the village? Of course. They started the foundation. So are they starting the first level of the blocks or exactly where are they at? Because I haven't talked to you to get an update on it. When you talk and you have Indians like this. So if I say today we're going to show you the level where we are at and we have some blockers and we don't make it today, it's going to look like, what's up? So look at the Nigerian bitcoin conference. It was supposed to be 24th and 25 February, but Nigerian government already splitted the presidential election for the 25 February and the entire week before 25th is going to be security, heavy security all over the country. So we had to move our conference a month after. Look at the radio show, which is supposed to start on the 11 December, which is two days from now, all paid up. We have to move the radio show just because we don't want our airtime to be exhausted and we can capitalize on the airtime for promotion of the Bitcoin nigerian Bitcoin Conference on the Bitcoin Village construction, of course, adoption, education, work. So I want to talk less and let videos and pictures do the talking and then we can have a proper space and title it Bitcoin Village Updates. Whether we can come ask questions thereabout. Yeah, that makes sense. No problem. The thing that you mentioned that was interesting to me that I would never have imagined happening. I've been in construction for over 15 years and I never would have imagined the fact that you have people coming to work on a construction project and then the next day another group comes and then the next day another group comes for the mere intense. Grab us or Lilac. Any Nigerian come up? You cannot whether you are building, whether you are the richest man on earth building anything in Nigeria, the size of their construction work is how they will mobilize. They will mobilize so much, and they will give you a bill. And the worst the government can do is just to come and chase them. You're going to call security for them, and they would get off the land. And the crazy thing is, they start stressing your construction workers. They start stressing them, stressing them, stressing them. They might relay them before you get there. And you don't want a situation whereby you're going to be involved in the police all the time in a community whereby you have been accepted. The paramount king is in support. All the chieftains I support, 9% of the people I support. So if you bad eggs are only out to get their little unwarranted illegal money. But we're in Nigeria. It's crazy. Even though government have issued an anti land grabbers law, if it's supposed to be effective, but these motherfuckers are the ones encouraging it the most. The richest people in Nigeria, in Nigeria are the people that make use of these thugs. They use them for disruptions. So these thugs have contacts. At the end of the day, you, you, you call cops on them. The next you park jet, they go by car, you're not there or something. You know, you don't want all of that. You don't want to show because of you. And it's funny, they came out outside the community and they start to say, oh, my father had a house here 35 years ago. So it's not a bad news. It's just me being 100% transferring. So that, you know that that can be an entrance for one day, two days. If you don't manage it well, it can extend to one week, two weeks. It happens to almost every construction site, except you want to man a military base. And when I say military base, like two, three military guys, the Nigerian policies are much strong enough to stop them. You have to pay us the right pay them the day times four or five what the government is paying them to scare the land grabbers away. Yeah, that's very interesting, and yet one of many obstacles and challenges that you're facing. So for you guys that don't know, olu and I, we hired a surveyor and a project engineer. And if I could be there, I'd be overseeing the construction myself. But Olu is there, and he's the one on the ground doing all the work. As far as yes, we have the engineer and we have the surveyor, and they're doing their respective jobs. And what their positions? As in the construction project, those positions are very important, but it's very important to have someone on the ground to inspect the work. That's basically what you call quality assurance. And so Olu is doing a lot of things already. I mean, he's the CEO of bought me cash, and he's helping with Satoshi's journal, and now he's on the ground in the village. So I've told him many times in the conversation how thankful I am to have a partner that's doing this, because it's a lot of work. I mean, I've done construction for many years, and I've been the inspector, I've been the engineer, the surveyor, the designer, the quality assurance, I've been all of it. So I understand how intense construction is. And when you have to deal with shenanigans like what olu is talking about, additional to all of the other responsibilities on the construction site, that is a very stressful deal. So thank you, Olu, for the update. I look forward to the pictures. Already we have some pictures, but I think that it's going to be really cool to see everything come together and look forward to the videos as ",timestamp:"01:56:17-02:20:03",topics:["The Bitcoin Village","Nigeria","Bitcoin Adoption"],type:"twitter_space",weight:6.083251953125},{boost:0,date:0,description:"Michael Atwood talks about OshiApp",episode_title:"Cool Apps Built on Lightning - March 16, 2022 - Voltage Twitter Spaces",guests:[{name:"Chad Atkins",profile_picture:"https://pbs.twimg.com/profile_images/1200611447979544576/W9ocRJTb_400x400.jpg",ref_id:"62da3c50-0a46-400b-81a3-5f482f5b8fee",twitter_handle:"Chemchad"},{name:"Michael Atwood",profile_picture:"https://pbs.twimg.com/profile_images/1362207977470521345/Jy2_Ge60_400x400.jpg",ref_id:"16359ade-afb9-4a37-be0b-0844a6134327",twitter_handle:"Dooowta"}],hosts:[{name:"Nate Glasky",profile_picture:"",ref_id:"0662789d-b39e-4aed-ad6f-44257695b6af",twitter_handle:""},{name:" Bobby Watts",profile_picture:"",ref_id:"ae2685c6-1307-473a-95b0-87c234e50483",twitter_handle:""}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2ec62250-4755-4616-8342-096a2cfab95f.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=4EJrnxYOShY",node_type:"clip",pub_key:"",ref_id:"9f69933d-69fe-47a0-af4d-9d80726e60aa",show_title:"Voltage",text:"All right, it looks like Michael is here from Oshie app. I want to invite him up because I know he's got some cool game plan and stuff just going on, like from Miami, like getting Oshi app utilized down there. And he's got some traction in Texas, I think I saw Marty using Oshie app or something, like buying some local beef. And there's been some block parties using. So if you are available to chat, Michael, feel free to hop up. It's funny because actually that's one app that I am absolutely a fanboy over and I totally did not put it on my list for some reason. But yeah, dude, Mike. I see Mike all the time in Austin. So if you want to tell us about Oshi, Mike, feel free to raise your hand. Or we'll send you an invite or I can just explain it, but I'd. Rather you do it. Yeah, I can chat a little bit about it, I guess, until it comes up. But anyone who's not using Oshi, it's pretty sweet. Like, as a consumer, you can download the app and then just check locally what deals around you, what small businesses around you are willing to give you bitcoin back for coming in and shopping. And it's as simple as you get a gift card, essentially, like just a deal to that business, and you can go in and make that purchase and the business will say, hey, you get this percent sat back. And what's really cool from a consumer perspective that I like because I love whenever applications are gamified, kind of like fold. Like if you referred people to fold now that they have this every time someone swipes their fold card, I get paid. Like, in the last week, I've made 1300 stats just by referring people two years ago to fold. And Oshi is kind of the same way, but it's a little better where you as a consumer, if you refer businesses onto Oshi app, you can earn like a very small fraction passively on all the purchases done at that business. And there's like an incentive model that if you're an advocate for the brand and for those businesses, you can earn a little bit, too. But it's pretty great. What I would really love to see happen is, like, everyone's going to Miami 35,000 people next month, right? Like, if we could get ten to 20 businesses around the conference or onboarded to Oshi, you could just flip open the app, see what businesses around there want to support Bitcoiners. And it's like, yo, come grab a burger, get 15% back in SATS. And it just gets Bitcoin back to everyone who shops. And the thing that's really great about this is, if you've noticed, like, Lolly and Fold, they're really focused on bigger companies, bigger providers. And there's a lot of organizations, there's like three providers out there that give you access to these gift card networks. So if anyone wanted to spin up their own fold or Lolly or things like that, there's partners you can partner with that give you access to that. So there's tooling out there for big businesses, but there's not one out there for B to C. Like getting small businesses on board. It's something that's literally never been done. So it's pretty cutting edge and it's a big problem that could be solved. But I'm personally passionate about this because at my last job, I've managed marketing for small businesses for like ten years. And 60, 70% of businesses in America are small businesses. It creates most of the jobs in our communities. And whenever you can have a Bitcoin circular economy at a very local level, you're keeping money in your community. You're not exporting money to Walmart, who's then sending it to China. You're not sending money directly to Visa and Mastercard. You're keeping it on a local level, empowering small businesses and rewarding consumers for being a part of that Bitcoin circular economy. So if there was an application that was one that really gave back to local communities, it's definitely Oshi in my mind. Yeah, I think when I talked to Mike about Oshio a while ago, it was like what really kind of blew my mind was, up until this point, I always envision sort of brick and mortar lightning commerce to have the merchant generating the invoice from somehow. But with Oshi, the customer generates the invoice and pays it on their own phone and then just shows the merchant, basically, and the merchant scans it or whatever and says, okay, cool, you got it. And I just think that's super cool. And it takes away so much friction from the merchant, especially a merchant that might not be well, that might be like, Bitcoin curious, but doesn't want to have to run a note or BTTP server, something crazy like that. I just think that's really cool. And there was a Bitcoin block party, I think, a month or two ago in Austin, which where the Bitcoiners got a bunch of restaurants and bars to use Oshi, and there was a huge sort of get together around it, which was pretty cool. I hope they throw another one of those because sounds like a lot of fun. A lot of stuff is happening in Austin. Not going to lie. I'm going to invite Kyle Murphy up if he's available. I know you might be passively listening like Michael, but there was the hackathon this weekend at Pleb lab, the SATS by Southwest Hackathon. And I'd be really interested to maybe hear at a high level what were some of the projects, maybe that really had legs, that based on what you heard on the ground floor, like maybe people are going to pursue a bit further that could really come to life. I'm sorry, were you talking to me? It kind of muted as I accepted the speaking thought. Yeah. What'S going on? This past weekend we threw a hackathon. As far as some of the projects that had legs, I would say. I. Don'T have a lot of hackathon. I have zero hackathon experience to kind of counter it too. I've never been to a hackathon or hosted a hackathon before this weekend, but just from some of the things I heard from some of the devs who obviously have a bit more experience with hackathons than myself, it was really quite unbelievable. The amounts of high level projects that actually came out of this past weekend. I think we had ten projects that actually presented and a handful more that were built but did not present. Of the ten that we saw presented, there were seven or eight that I think really I'm not sure people will have the time to kind of really push forward with, but if they did, I would be bullish on seeing all seven or eight of them kind of push forward as a potential bitcoin company. The winner of the hackathon was a project called Pleb FM, which was like a live streaming stats kind of update for pushing music on, like a jukebox style kind of thing, where it was like you could basically pick a number of stats. You could get your song pushed to the top of the queue and you would see, like, a live leaderboard for music being played and streamed over the Lightning Network, which was really freaking cool. Nice, that's exciting. We saw some good business stuff. I know Nifty Nye and someone else were working on Lightning, like a dashboard for kind of merchant services, which I think for things like Ocean and a handful of other businesses are going to be really powerful. One of the things that's kind of really lacking for business integration is the company's ability to really trap and pay attention to what's going on in their finances. So the kind of Lightning dashboard that really showed like where money went, where money came from, kind of open channels and a whole host of other things in real time in a really easy to read manner was also pretty cool. And that was Lisa from Block Streams project. She's been working on that accounting stuff for a while, so that's pretty cool to see. Yeah, she kicked it into high gear this weekend. It was pretty cool to see. I believe she's actually sitting at Club Lab right now, kind of continuing to work on it. So as far as projects that are pushing along forward after the hackathon, that seems to be one of them. When you're in the groove, you're in the groove. Absolutely. Sounds like a good time. Yeah, it looks like we're almost to an hour. Austin bit devs is tomorrow. I will be there if anyone wants to say hi. I'm sure Kyle will be there. ",timestamp:"00:44:28-00:53:59",topics:["Michael Atwood"],type:"youtube",weight:6.080077648162842},{boost:0,date:1590465600,description:"How does Bitcoin is the next level of protest?",episode_title:"Chat 39 - Bitcoin Renaissance - with Marty Bent John Vallis Alex Gladstein Elizabeth Prefontaine Brady Swenson",guests:[{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Marty Bent",profile_picture:"https://pbs.twimg.com/profile_images/1362747135981199370/mSy97J12_400x400.jpg",ref_id:"655bdcb1-21c3-411c-aa24-fe7e4c7a248c",twitter_handle:"MartyBent"},{name:"John Vallis",profile_picture:"https://pbs.twimg.com/profile_images/1568743166035070976/4MyKww8A_400x400.jpg",ref_id:"c3a9fe29-3b78-4665-af54-e293e9d68962",twitter_handle:"johnkvallis"},{name:"& Brady Swenson",profile_picture:"",ref_id:"0b68a085-0680-44b8-891c-6e1e84ac4eb1",twitter_handle:""},{name:"Elizabeth Prefontaine",profile_picture:"https://pbs.twimg.com/profile_images/1382790711427354625/D09LMToL_400x400.jpg",ref_id:"4506df72-5de4-4144-abc4-011408b6b496",twitter_handle:"Eprefon"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN4002307424.mp3?updated=1627951379",node_type:"clip",pub_key:"",ref_id:"67236e2a-900b-4cf6-bc6c-165c0f7e3219",show_title:"Bitcoin Audible",text:"do think eventually the impact of Bitcoin will be as kind of like this protest tool that can be wielded nonviolently in a really compelling way. And it's really tough to defeat governments when they have a monopoly of violence. You can do it. And in fact, nonviolent protests, if we're going to try to be optimistic here for Bitcoin, nonviolent protests are way more successful in history than violent ones by, like, an order of magnitude. I think it's something like 35% of all nonviolent movements, ranging from Gandhi to MLK or whatever, have ultimately been successful in the last 100 years. And only like, less than 10% of the violent ones have done what the violent people wanted to do. Right. For obvious reasons. Usually it's like a small group of male people willing to have guns who are willing to fight in these violent ones, whereas everybody can participate in the nonviolent revolutions. And these are usually like people power protests where you have to go in the street and try to convince the police in the military to join you, and then the dictator has no more people to support him and he's overthrown. This has happened quite a few times in the world. So bitcoin is like the next level of that kind of protest where we all start opting out to this other financial system. And I do think people it is inevitable that they're going to realize that and they're going to know that. But we're so early. I mean, we might be decades away from that being a reality. We're just so early. Less than 1% of humans have used Bitcoin. Far fewer than that. Understand Bitcoin, maybe 1000 of that or fewer. So I don't think that Coin needs our help, but I think bitcoin will be a tool that humans end up using to really erode some of these more arbitrary power structures. Yeah, one of the things I've noticed during the crisis is because I looked out and I asked myself, ",timestamp:"00:18:14-00:20:02",topics:[],type:"podcast",weight:6.0710978507995605},{boost:0,date:1625958277,description:"How the franchise model access the cheap capital from fiat money destroy small businesses",episode_title:"WHY ARE WE BULLISH? Brandon Quittem, Timothy Kim, Shinobi, Steve Barbour ep185",guests:[{name:"Brandon Quittem",profile_picture:"https://pbs.twimg.com/profile_images/1502403738861940736/9J5VuTye_400x400.jpg",ref_id:"65512044-7810-4ece-8156-5519e072cb66",twitter_handle:"Bquittem"},{name:"Shinobi",profile_picture:"https://pbs.twimg.com/profile_images/1526590501742428160/0Y5H2uJK_400x400.jpg",ref_id:"a05dface-33a7-400d-a749-99efe0d96118",twitter_handle:"shinobi602"},{name:"Steve Barbour",profile_picture:"https://pbs.twimg.com/profile_images/1592714173469065216/q8kXPyQI_400x400.jpg",ref_id:"63a731b8-4759-4360-9e9d-d66f884e12d8",twitter_handle:"SGBarbour"},{name:"Timothy Kim",profile_picture:"https://pbs.twimg.com/profile_images/1569681307029934081/2s_nWYo__400x400.jpg",ref_id:"e0323798-c70f-4cc3-96ff-87bab50c2313",twitter_handle:"realtimothykim"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/37027401/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2021-6-10%252Ffb6d5638-4579-5707-9740-0e586c980ba7.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"07ab82b4-2fe7-42f9-9018-bb8f4188eb3b",show_title:"BTC Sessions",text:"Can I just go down a random rabbit hole that I have thought about a month that you just completely unlocked? So I get really high a lot, and I do really silly things with my time me too. That I'm going to make a bunch of different hamburger recipes. And so when I do stuff like that, sometimes I have funnier ideas. Like, what if we open source the franchise model where I specifically lay out the exact process of something, like how it's supposed to be done, like how you're supposed to cook this food and I opensource it and anybody can do that. But if I catch you fucking up, if I catch you deviating from that brand, I get to sue the shit out of you and take a bunch of money from you. But if you follow everything to the tee, everything is yours. I was actually thinking of something like that. I don't know. I'm really open with what we do in our business. And I've always tried to help people and educate people in the oil field space about bitcoin mining. And I was thinking like, okay, we did a lot of work on building these designs for bitcoin mines, and I want bitcoiners to go out and be successful, whether they're like oil companies, whether they're like semi competitors or not. I'm like, maybe I should open source all my designs open source so that we're not going to legally do anything against anyone that builds exactly what I build. I'll give them all the spec, all the anything like suppliers. Because there's a lot more to business than just, like, how you build something. You guys still do well. And part of my idea was like, maybe I'll just go do this. A rising tide ends up lifting all boats anyway. It's going to make more credibility around what we do in our little niche market. And in the end, I'm going to get more business anyway and sort of what you're thinking. As long as they don't, I don't know, try to bring in their own legal, say, like patent something and try to bring in their own little legal monopoly around what they're doing based off our designs, then it's totally open market. I don't know. I think that's like a very interesting idea, something I've actually been thinking about a lot because I'd like to sort of maybe open source all the stuff that we designed in house that right now we would probably like certainly if it wasn't me at the helm, it was just like a regular Fiat Maxi. At Helm, we would go after anyone that copied it. But right now we're sort of cool with what goes on. But I didn't mean to interrupt you. You can keep going, but the liquor is starting to hit me hard. I know. I'm happy to hear that I'm not the only one thinking along those lines because I am exactly on the same point with you. Like, all of these small businesses dying and being cannibalized by these massive franchises. It's sickening. When I was a kid, I used to go around places and every place I want is the new unique thing for that area and that locality. And let's go find those things and experience them. And they're all fucking gone back not that long ago, I come from Newfoundland. There was a lot of and this would be the same anywhere, but I'm just speaking from my own experience, like my family history. There was always like, in this small town in Newfoundland where my people come from, there's always mom and pops. It was like father and son shops back in the day. Maybe mostly men doing a lot of the business stuff. But it was always like, this guy and sons or these brothers and like, you know, like, doing all that stuff. And the theory the Fiat sort of kinesium thinking on this is like, well, the Walmart models, like, push them all out and stuff. Like, no, it's not the Walmart model or the Amazon model that killed small businesses. It's fucking Fiat money printing that kills small businesses. It's not the fact that these guys made these big distribution change. It's the fact that they how do. Those get paid for it's the fact. That their access to capital, like, their cost of capital is less than everyone else. That's why kill small businesses. Fuck. I remember when I started my business and I was like, just trying to try to get sales. I would go to these, like, clean tech conferences, like in Alberta, like emissions reduction. Like, we do massive emissions reduction stuff. So I went to these emissions reduction, like, clean tech conferences and I'm looking around at what people are selling and I would do like a little pitch event, like a little pitch contest to see if I could get interest in our business and stuff. And I'm not a great pitcher, really, but there are these really polished people, like, pitching their products. But I look at their products and they stink. They're terrible. They're the worst. Like, they're not scalable in any rational world, but these people are just running around like these circuits of, like, emissions reduction conference, clean tech. And it's the same with all the buzzwords, like AI blockchain conferences, all that shit we dealt with in 2017. It's like all these non scalable crap products with these entrepreneurs raising money, but not actually getting customers. Raising money is the metric for success, but not getting customers. It's like customers is all that matters. Sales, customers, product, service. Sorry, we work. That's like one of the biggest Fiat Maxi disasters ever. Everyone's about raising money. I'm just, like, ranting at this point because I'm like, buzzing. But like, you go on, like LinkedIn, everyone's congratulating, patting each other on the back for raising money. It's like, why don't you talk about the sales you made, like, the customers you acquired? Because that's what's fucking important in real life. But it's just look at all the money we raised at this valuation. That's all it is on there. And like, all society is that way now. And then you see all these shows. You got like, Shark Tank, Dragons, Dan in Canada's version of Shark Tank, and all these entrepreneurial shows, like startups mostly. Not really a lot of people not really bringing much to market. But just like it's just like this VC hype scene, which is a whole nother rabbit hole, which triggers me is like the VC aspect of Twitter, which is like all these VCs on Twitter that are like, look, man, a VC is like a Fiat Maxi. There's no way around it. And all these people clinging on to bitcoin, it's like bitcoin is going to destroy your core business model in the long run. It's just like this weird juxtaposition where all the Fiat Maxis are, like, pumping into bitcoin. But I guess it's just people doing it what's in their own best interests. But the business models are incompatible with bitcoin, but it's just people doing what's in their own best interests and profiting in the short term. But it's like a weird it's like this weird phenomenon in the future, when bitcoin and sound money returns, there's not going to be this VC culture we're seeing right now, which are basically the dependence of the money printing hierarchy, right? It goes down to the VCs. And I don't know, I was just, like, getting there. Yeah, I bullish on small businesses, man. I think small businesses are going to be insane. Like, I can't wait for the bitcoin standard. And I really promote, like, I'm straight up promoting my own competitors in our locality, like the Lloyd Alberta, Saskatchewan area, guys accept bitcoin as payment, or if no one wants to pay in bitcoin, which is still hard to do. I have a lot of customers paying me in bitcoin because they're minors, so they have bitcoin. But like, you guys are selling motors. You're my competitor. I don't give a shit. Sell your motors, convert your profit to bitcoin and stay in business because that is how you're going to win as a small business right now. Yeah, Steve, to your point there, I think you identified a ton of issues that we're having right now. And they all stem from the fact that money is easy, right? And what that leads to is a cascading effect of the bigger you are, the closer you are, the more access to capital you have, et cetera. That's what drives our behavior. So until we change incentives, we're not going to see anything change in the real world. I have a slightly more charitable view of venture capital. I think what we have now is obviously an extreme overgrowth of that and it's way too much money sloshing around there. And you can see portfolios in VC land or directly correlated to how easy the money is during that during the period of their fund. No surprise. And so I think what we need is a bitcoinized world in order to change these things. We'll see a mass definacialization, which I think is a huge net positive for normal people. Right? I think it's demons. They're devil people. Okay, let's talk about this for a second. I think the caricature of these that we see today I would agree with, but I would argue that there is a place, and I want to hear you guys opinion. I think there's a place for people who place longterm bets on very risky type businesses. Right? I think the model makes sense. 100 failed and one of them changes the world. I just think that right now they have too much money, they're able to raise too much because everyone needs yield. So everyone's going through so hard to find right now. It's so hard to find. That's kind of the problem though is so much money flashing around is what makes them devil people. Because I agree that money printer is distortionary. They're like a secondary distortionary effect, throwing it around at crazy things wildly instead of thinking about who actually can make a solid plan in an argument to us, who do we know and trust and actually being scrutinizing and skeptical in where they put their money, the money printer distorts things and they wind up with a pile of money. And so they go on and distort things again because they just see it as a gambling casino. It's not the role, it's what our perverted monetary system, the mechanism converted the role into. Yeah, I have no ill will towards any VC or anyone that works in any of those. I just call it the cantillon ladder, right? Center banking down to the pleb. Like anyone hide the letter, it's no problem, you're doing what's in your own best interest and all that. But we're all working to reverse, just flip the mechanism of how money is created through mining and distribution, through sound bitcoin mechanisms instead of like the top down fiat mechanism. But it's just a commentary on like it's just this funny like, it's funny that some of the most prominent and influential people in the bitcoin space are like people that are in position. Like they're higher up the Cantillan ladder. Like they're benefiting from fiat. They didn't scrap and grow a small business into something amazing. They went to school. And this is not a knock on. These people individually, but it's just the system. Like, they go to school, they work for this fund, and they benefit immensely. But because they're like us, like the big bitcoinners, they go out and crush it. They want the sound money standard, too. It's just ironic to me. It's almost like coinbase. Like coinbase is an exchange. The more bitcoin succeeds, the less relevant they become. It's like you're putting yourself out of work in a sense. But, yeah, certainly it's never a hate against the player. It's just like the system is such a fucked up mess. There's all this irony and hypocrisy in this whole space that's funny to comment on because. It perverts everybody's actions. Right. The problem is I posted that what I was talking about at the beginning of the show. I took a screenshot of that CNBC upside of inflation, increased wages, and one of my friends commented on it, who's like an intelligent person, and he's like, well off and has a good job and everything. He commented, he's like, well, yeah, but the upside of that is that my debt gradually gets willed down and gone away. But when you think of what induced that debt in the first place is asset inflation. You can't just save money for a house nowadays and then buy your house or only have like, a short mortgage. You can't just for the most part, you can't just save money for a new car nowadays. You have to then you have to, like, get a payment plan and pay it off over 5678 year terms. Now people are looking at it from a perspective of, oh, well, maybe it's okay in this context because it fixes the problem that the problem itself caused. The very base layer of all of this perverts all of our incentives to drive us to do things that we wouldn't normally do in a system that is just a money that actually functions. In a free market. Yeah, well, speak for yourself, but I'm perfect and I always do the right thing. I just want to take it aside. We haven't heard from our friend tim, are you alive? Is the water working? How's the water? I think he's got a how are you doing, Tim? ",timestamp:"01:27:13-01:41:29",topics:["fiat money","franchise model"],type:"podcast",weight:6.056178092959222},{boost:0,date:0,description:"Will the Nation States survive the information age?",episode_title:"The Sovereign Individual - The End of Egalitarian Economics",guests:[{name:"chriskapilla",profile_picture:"https://pbs.twimg.com/profile_images/1362817539135463427/2AXUeFLV_400x400.jpg",ref_id:"9d495790-93f2-4d6c-b770-b2885f66859d",twitter_handle:"chriskapilla"},{name:"remydenton",profile_picture:"",ref_id:"5c5beb0c-c214-4f23-b79a-e71bf9368f2d",twitter_handle:""},{name:"JackRonaldi",profile_picture:"https://pbs.twimg.com/profile_images/1583261828628496384/IazkwYjk_400x400.jpg",ref_id:"01621476-f040-49dd-8160-4035228faf78",twitter_handle:"JackRonaldi"},{name:"AlistairZ80Aftw",profile_picture:"https://pbs.twimg.com/profile_images/1362882489895841795/gH2zix3l_400x400.jpg",ref_id:"3dcba197-47ca-40c0-857d-73cec4325801",twitter_handle:"AlistairZ80Aftw"},{name:"mattonbtc",profile_picture:"https://pbs.twimg.com/profile_images/1549459254280687618/jzdHJou3_400x400.jpg",ref_id:"998167d3-e036-4ef1-9a05-4f062903f0c5",twitter_handle:"mattonbtc"},{name:"wai_wairua",profile_picture:"https://pbs.twimg.com/profile_images/1536570699761848320/T10Owc60_400x400.jpg",ref_id:"c4d4ff36-73fa-4471-91ba-de0f99a49e99",twitter_handle:"wai_wairua"},{name:"UltraSolomon",profile_picture:"https://pbs.twimg.com/profile_images/1468332451055427601/YVgUuUHc_400x400.jpg",ref_id:"6371d519-cc98-4bf4-9f82-be17b1ea532a",twitter_handle:"UltraSolomon"}],hosts:[{name:"BTC_Venetians",profile_picture:"https://pbs.twimg.com/profile_images/1557482467539521537/Kel-eVww_400x400.jpg",ref_id:"a6313ca9-3869-4477-88ad-30172957edcf",twitter_handle:"BTC_Venetians"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/75ec86b1-cb6d-467f-a66e-5e642e5c126a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c8cc9ec1-061d-4f53-a24b-ee43a56c7715/e650057e-2369-4e75-8119-4975a1fc4cac.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"e96970d0-30a7-4f86-8f81-996ba87a088c",show_title:"Bitcoin Venetians Book Club",text:"Kind of behind on questions here. So let's move on to the next one, which is, do you all think the nation state will survive? The information Age. Going to say, yeah, the big ones will, but in reduced form. What do you mean? America will, for instance. United Kingdom will. For instance. The smaller nations like China, and I don't mean physically, they're just more small in Fragility, if you like, will struggle to keep things going. Argentina will struggle to keep things going. I have the opposite opinion of this in some respects. I think as long as humans are, as long as we remain biological, we're very tribal creatures and we like to have identity. You just look at the soccer World Cup and during covered things were really heated in my community and became so tribal almost overnight between different camps of beliefs. And I think that during times of strife, we look for our colors and our team, and very few people are able to remain unbiased. And so I'm wondering if we'll ever truly be without that kind of place and home. Now I wonder whether if you're in New Zealand, you've got a much closer relationship to the Maori's over there, whether that color is what you said. We have nothing like it in England. Yeah, it might influence my views. Yeah, for sure. These things are different here. Can you speak to how much autonomy the Maori's have? Whether they want more, whether they would get more? Under what circumstances? Well, in the circumstances with the end of the welfare state, with the government finding it harder and harder to hand out free money, would New Zealand survive as a single entity like that? Or would the Maoris and the non Maori want to go their separate ways, much like Americans do with the Indian reservations tend to be autonomous in a way. That is what I'm trying to get at. Do the Maori's have that kind of autonomy that the engines in America and the First Nations do? Yeah, many are fiercely independent and we do have a treaty. But you can't ignore economies and their wealth was taken as an act of war and they were tricked and the usual kind of colonial game. And I don't know if you can unwind that damage. If the world were to change into an information age, if that loss of identity and loss of skill and loss of all that would actually kind of unravel, I think that the damages is probably a little bit too late. Thank you. And the situation over there is beyond my can. So thank you for explaining that. And then just to also challenge kind of what you were saying or at least my interpretation of it. So, like in the US. For example, or even in Canada, it just seems like there's a lot of divisions and some people have certain views and other people have different views, and it doesn't seem like they can reconcile on those. So I often wonder if you set aside military strength, which is where it's good to be united as one big country for all other intents and purposes. It seems like there's a lot of different views in the states. And should they all be forced to kind of share one set of laws and one set of beliefs and ideologies? And it seems like they just kind of rotate. Like one party is in power and they kind of screw over the rest of the people and then another party's in power and they screw over the rest of the people. So I don't know, it seems like that's not very stable unless what you're talking about, it survives. But maybe the states get more independence and people can move around and find things that work for them better than other places. So just looking at the chapter here and thinking about which nation states might collapse, first it says devolutionary pressures will tend to be most intense in large political entities where incomes for most of the population are stagnant or falling. Jurisdictions in Latin America and Asia, where per capita income is rising rapidly, may endure for generations or until lifetime income prospects there equate with those in the formerly rich industrial countries. And then it says, later on, another spur to devolution will be high indebtedness of the central government. So national debts would succeed 100% of GDP. That's just about everywhere by now, isn't it? Pretty much. Yeah. It's kind of like when a marriage is facing financial difficulties. It only compounds the problems. Same thing, maybe, with a nation state. When it's facing financial difficulties, people start pointing fingers and running into problems. Jeff, I think my base case for this is like some kind of world war. And once again, I think the authors might just be early and post that war. Then you have more of a dissolution into this kind of smaller states, not the huge nation states like I just watched in Japan, which is the quote earlier kind of huge debt, declining population, and they've just reactivated their military. And I think that's a very interesting. Trend, not a civil war. Being out of the states and everything else like that. It's so different there. It's very different. Perhaps you could comment on that. I don't know. Like, January 6, it seemed like they came pretty close, and I worry about what will happen in the next one, especially if Trump runs again. And whichever side wins, blames the other side for cheating. ",timestamp:"00:54:35-01:01:52",topics:["Economies of Scale","Nation States","Information Age"],type:"twitter_space",weight:6.051017999649048},{boost:0,date:1642222800,description:"[[Global Bitcoin Festival]]",episode_title:"WHY ARE WE BULLISH Duczko Thomas Jestopher Morgen Rochard Rick Vanderhulst ep229",guests:[{name:"Rick Vanderhulst",profile_picture:"",ref_id:"4c184180-b77d-4e25-ac7c-4d2e86cdde85",twitter_handle:""},{name:"Morgen Rochard",profile_picture:"https://pbs.twimg.com/profile_images/1362921386256211972/IpIK8cwI_400x400.jpg",ref_id:"c29b26e9-82c8-4c0a-8130-aa083d33ec48",twitter_handle:"MorgenRochard"},{name:"Thomas Jestopher",profile_picture:"https://pbs.twimg.com/profile_images/1607521016368201730/6GSHGkGX_400x400.jpg",ref_id:"50388de7-3ec7-401b-8349-5ee1d8a004c0",twitter_handle:"Jestopher_BTC"},{name:"Duczko",profile_picture:"",ref_id:"2b6de75e-0cf5-4fec-b458-d1b8ee3f86df",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b87feb17-6926-4295-b2c2-d1c2e9d49ca8.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/46171740/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-0-15%2F68b825e2-6752-7447-34ca-b27f0ea69256.mp3",node_type:"clip",pub_key:"",ref_id:"5bf12d7b-3c9b-4019-bca9-88899aaa4b35",show_title:"BTC Sessions",text:"I didn't say what I do now. So this is connected to what I've been doing for the past few months where I'm involved with a project called Global Bitcoin Fest. And we're a group of people that just enjoy listening to local communities tell their stories. What's happening in their community, what's the history, what's the setting in Argentina, Venezuela, Cuba, Ethiopia, wherever. We did this back on September 7, we did the first thing together. So we started back when neighbor made his announcement, 7 June. Okay, let's do a legal tender here. So we started having Twitter spaces where we were giving away sats in Latin America, Cuba, Venezuela, Sabato, and Mexico. So we formed a small group of people and chatting in a Twitter chat. And then one guy had this idea, okay, let's do a Twitter space 24 hours on the day. On the 7 September, let's do a nonstop 24 hours space. So we decided to separate out 24 sections and have communities join in from all over the world, 1 hour slots each, and talk about their community and kind of celebrate together the adoption of Bitcoin. What I was really taken back by was how powerful this idea was. There were so many people that just joined in and like, yeah, let's do this. We organized this literally in six days. And we had Japan, Australia, Tonga, and greater Polynesia, Vietnam, Hong Kong, Nigeria, Sudan, Ethiopia, Greece, Venezuela, Cuba, El Salvador, Argentina. Communities from all over the world were taking these slots, and we didn't have much time to assess what the actual quality would be of these spaces. And then we did 24 hours non stop. Just awesome content was just one space that was kind of like not really Maxy. But everybody else was really knowledgeable communities that have been really diving deep into this. And we got so inspired that. Okay, let's keep doing this on a weekly basis with one new country every week. So on Sunday, we're actually going to do Argentina was just announced last week. We did Guatemala, the week before that, we did Indonesia, before that, Japan, before that, Costa Rica. And there's an emerging pattern where people seem to have been these dormant cells. People have been kind of doing their own thing. They didn't kind of know what they could contribute or do. And then they've been building up all this knowledge by themselves and kind of Orange Pilling friends here and there. And now they're emboldened by everything that's happening. So, for example, I talked to Bitcoin, a Casi in South Africa, and he was like, look, I didn't know how to apply my knowledge, but now I got so inspired by Bitcoin Beach in Alzheimer. So I started this with my surf kids that I'm kind of supporting. There's 40 kids that I'm trying to impoverish communities. I'm trying to help. So now I'm bringing in Bitcoin as part of their education and making it part of my project and making like a small Bitcoin Beach here in South Africa. And there's all these small stories where all these community builders have built up knowledge for so many years. When I first drove into Bitcoin in 2017, there was so little. I felt it was so hard to find good quality knowledge. I found Andreas Antonopoulos, and that was kind of it when I was trying to Google it. So I got all fooled by the shit coin stories and everything, and I just went all in on shit coins, and then I lost 98%. Now, I really believe that ",timestamp:"00:19:46-00:24:39",topics:["global bitcoin festival"],type:"podcast",weight:6.044204792136057},{boost:0,date:1596671100,description:"Bitcoin mining;User's choice in defining value",episode_title:"Chat_45 - Bitcoin & an Energy Revolution, A panel at the VOB Conf",guests:[{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Christopher Bendiksen",profile_picture:"https://pbs.twimg.com/profile_images/1362772558882484233/3nS-l35s_400x400.jpg",ref_id:"d99d354e-41d4-4117-9b70-05955a85f9da",twitter_handle:"C_Bendiksen"}],hosts:[{name:"Guy Swann",profile_picture:"https://pbs.twimg.com/profile_images/1401969630634196995/DqOuszMi_400x400.jpg",ref_id:"39c31930-d799-40a0-9a46-193117d03418",twitter_handle:"TheGuySwann"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"4636725f-ae47-4777-bd41-f78a4694ba05",show_title:"Bitcoin Audible",text:"Yeah. And there's kind of an inherent moral question there as well, is that do we get to subjectively put our values on to them? Like in making judgments over whether or not they can make that choice as to whether or not it is their value or not? And obviously, in a decentralized system, what are you going to do to stop it anyway? It's inherently an incredibly difficult thing to control or alter. Yeah, this gets to a very deep level of freedom versus coercion. Who am I to say that you're watching a Netflix show is a waste of our common resources? I mean, that's not my tournament to make, of course. Did anybody compute how much electricity costs to watch 90 minutes electricity. Honestly, there's research out there looking into data centers which is directly linked to such activities. I have one student that looked into Amazon, currently the comfort print of Amazon, where you actually have streaming as one source of electricity consumption. I made an estimate, I think two years ago of the electricity draw, just gaming console Iceland in the United States and it's on the level of something like 50 kilowatt hours. Wow. I like to make a couple of points here. So I think that one of the important points to note is that electricity consumption is not in itself a bad thing. So electricity consumption, like electricity production and consumption is good like that is that provides value. The negative side is when there are externalities associated with how that is produced. So if we enable more renewables, more sustainable energy sources through bitcoin mining, then it's a net positive. I think the other part that is important to note here is that in the total scale of human energy consumption, bitcoin is nothing like it is completely dwarfed by any industrial process, aluminum smelting, like concrete production, scale production. Bitcoin is such a small drop in the bucket compared to any of that, that any effects that bitcoin has on a more financial level, like if there's restructuring in the way that business is done, that will be far more significant than any effect of the direct energy consumption ",timestamp:"00:21:12-00:23:48",topics:["Bitcoin mining"],type:"podcast",weight:5.944497585296631},{boost:0,date:1670547229,description:"Thoughts on the gridless mining operation that started in Africa and how the progress has been",episode_title:"Rabbit Hole Recap #230: Building in the Bear Party Rip",guests:[{name:"Jason",profile_picture:"https://pbs.twimg.com/profile_images/1458137423716622342/ctyc_MTX_400x400.jpg",ref_id:"ca893631-4be5-42c4-bff1-92cc2f6e43fe",twitter_handle:"JasonWrich"},{name:" Texas Slim",profile_picture:"https://pbs.twimg.com/profile_images/1589784780970795011/02jf0fqp_400x400.jpg",ref_id:"add0c8be-0524-43e1-a3a3-aea1058057d4",twitter_handle:"modernTman"}],hosts:[{name:" Marty Bent",profile_picture:"https://pbs.twimg.com/profile_images/1362747135981199370/mSy97J12_400x400.jpg",ref_id:"0b8ba673-da17-4371-a6e1-dd112d173b14",twitter_handle:"MartyBent"},{name:"ODELL",profile_picture:"https://pbs.twimg.com/profile_images/1421584695746338819/Z_7ZfAeP_400x400.jpg",ref_id:"6981a34b-301a-45f1-8299-59a3f719f6e2",twitter_handle:"ODELL"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/da64b29e-c2c0-41a6-ba29-acbaa2d022e8.jpg",keyword:!0,link:"https://anchor.fm/s/91b8fbc8/podcast/play/61912544/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2022-11-9%252F301977145-44100-2-474e79172e2da.mp3",node_type:"clip",pub_key:"0372cd0c8469f2034336a243e018d4d60e07efef8e7d10417807da1173bd5b002f",ref_id:"f66a9f05-a885-44f3-9673-f910c78d6360",show_title:"Rabbit Hole Recap",text:"This was cool. We were talking about this earlier, block and Stillmark, right? Yes, Stillmark and Block led a $2 million funding around for a bitcoin mining company in East Africa. You guys may have seen it's called Grades. You may have seen videos of bitcoinners. I believe Nick from Luxor, Marshall Long from Rhodium, and a couple of others took a trip to Africa a few months ago. And the common video they were sharing was like a mining operation working off a small hydro facility in some rural place. Micro hydro? Yeah. In Africa. That's what Grid list is doing. And the way I understand it, these Grid List has basically got a problem where they can spin up these micro hydro turbines that produce electricity, basically have. A pipe that running water runs, and they throw turbine in there. Yes, but it's such a rural area, they don't have that many customers, and so they have to sell the electricity at a relatively high cost. What bitcoin mining is uniquely suited to do is come in and consume a lot of that electricity or use a lot of electricity to produce revenue. They have small rural villages that have no electricity. They come in, they put a new electricity project in. They subsidize with bitcoin mining. Yes, exactly. I think it drives the price from like seventeen cents kilowatt hour down to four, three or $0.04. They have pictures of some of the operations. It's like super bootstrappy and just really a lot of just like creative engineering that's going on there. Yeah. So shout out to the team. I feel like there's a lot of overlap there with the ranching community. I would like to see all these small producers have little micro mining operations. And that's the cool thing, is we have so much of our irrigation water is in pipe, so it's very seasonal when it runs. But as long as you have enough fall, you could put micro hydro in any of those pipes and utilize it to make electricity and mine bitcoin, whatever your season run long is. And in Tennessee, you see a lot of natural gas wells on these properties, too. Yeah, I mean, that's the first hashtag that we put down. You may have seen the video on Twitter, but it's literally our hash shut. There's a fence and there's grazing cattle right on the I love that picture. Yeah. And that's the cool thing. In Texas, you have all those non productive wells just waiting for the opportunity. All up and down the Texas Panhandle. I can't remember his name. His name was Bill. He came out to Colorado. He was West Texas. He's outside of Parritten. But he was fascinated because all the stranded gas wells in the Texas Panhandle, I mean, you can smell it. It's so untapped at this point. Well, we've talked about me and you have talked about and I know Matt, we've talked about too. But if you want to think about a significantly robust circular economy, you talk about a ranch with excess natural gas or excess hydro. That's mining bitcoin. You're tending to the land, producing cattle, and then you're producing money with your excess natural gas, hydro, whatever it is. You want to talk about yielding revenue per acre on a farm. Bitcoin mining really allows you to supercharge the value you're getting out of your land. And it battles all the droughts, all the manipulation in the commodity markets, hyperinflation, extended cut dates where you can't harvest a cow. I mean, talk about saving the rancher. That is the circle of energy that we talk about. And if you're using an electric heater to heat a barn or a well house or a spring house anyways, you're going to be burning electricity. You might as well mine bitcoin, use that miner as your heater and put that stuff in cold storage for whatever it is that happens to go sideways when you need it. It's pretty cool seeing all the club engineering around using S nine as heaters. Yeah. The 3D printed parts and different ducts. If you're a rancher out there renaissance lately on Twitter. Yeah. And if you're a rancher out there who's got excess hydro, excess gas in your land, but you don't have the capital to invest in a mining operation, reach out to bitcoin miners. You can go borrow it for Barry. No. Or you just broker a deal with a miner. You say, hey, I'll give you this electricity as a pastor, I won't charge you for it, just give me a repair on the bitcoin mine. And there is like a percentage gas or hydro sitting there anyway. You're not making any money off of it. You can make 5% satisfy stream from. A minor yet if they're flaring it anyways. Yeah. I mean, that's insane. I see how much they flare. That blows my mind. Talk about wasted money. Yeah. We're doing that here in Tennessee, tom and I at Standard Bitcoin up north, northern Tennessee. There's a ton of farmland with these wells on it like the one we're using with the cattle grazing next to we just go to landowner, say, hey, we'll pay your land lease for the year. Just let us find bitcoin with your gas. So you're not using. I'm more than happy to do it. Well, I think a lot of especially in Texas where I come from, we have to funnel that information. There's people out there that's going to be extremely interested. That was one thing that we found out during the summit this year. Those type of possibilities. In the beginning, I said, one of these days, ranchers are going to innovate further into bitcoin than any of us right here, because they have all the resources and once they understand it and they get that good education, it's going to be fascinating. We're at Jason's ranch, but during the mining conversation, we had all their eyes lit up. That was a damn good presentation. Meeting the pumps and stuff, too. They all right away and immediately obvious when one of us said just like, make sure you hire a licensed electrician, or it's like dangerous or whatever, they're like, honey, this is not dangerous. Exactly. But that was so classic. They're talking about doing this and doing that. As an underground coal miner that's dealing with 12,470 volts household power is no big deal. Then if you're a bit wider and you really care about the robustness and distribution of the network, there's nothing better than getting small modular mining farms or mining data centers spread throughout rural farmland. There's nobody better to protect a bitcoin mining operation than a rancher a mennonite rural Nigerian villages. Yeah, don't, come on, bring us happening. Yes, it is. Moving on from ",timestamp:"01:18:12-01:25:21",topics:["Africa Bitcoin MIning"],type:"podcast",weight:10.341832935773114},{boost:0,date:null,description:"Kenya background, culture and tribes",episode_title:"#Bitcoin Kenya 🇰🇪 - meet the Kenya Bitcoin community",guests:[{name:"Noelyne Sumba",profile_picture:"https://pbs.twimg.com/profile_images/1585949523901292545/tWf-IwWO_400x400.jpg",ref_id:"44455b1d-76cf-49df-baa0-cd606652885b",twitter_handle:"noelynesumba"},{name:"Okjodom",profile_picture:"https://pbs.twimg.com/profile_images/1577811376487088128/J2Z4nIgI_400x400.jpg",ref_id:"4c9df92d-3bb5-4d08-9a7e-a9ba15f58f03",twitter_handle:"okjodom"},{name:"Master Guantai",profile_picture:"https://pbs.twimg.com/profile_images/1521025685078302720/w9dZwehS_400x400.jpg",ref_id:"64c326c4-d4a9-4e6c-82fe-0c9bac8a7094",twitter_handle:"MasterGuantai"},{name:"Lorraine Marcel",profile_picture:"https://pbs.twimg.com/profile_images/2361719231/German_sheperd_Puppies_400x400.jpg",ref_id:"ab30679d-7931-4921-a4f8-6fee74e412c8",twitter_handle:"lorrainemarcel1"}],hosts:[{name:"Mary Imasuen",profile_picture:"https://pbs.twimg.com/profile_images/1465290507752558596/lZVbU9np_400x400.jpg",ref_id:"2d8ed8ce-5112-4dfa-9aa2-5fa8b874af68",twitter_handle:"mary_imasuen"},{name:"Lukas Poland",profile_picture:"https://pbs.twimg.com/profile_images/1382603302160932865/RgeQnCXM_400x400.jpg",ref_id:"217a2c5a-1cfd-4840-bbff-eec43da8c52f",twitter_handle:"duczko"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/56bbafde-60ef-4e4b-b930-978429c6a635.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/9f2ebf6e-a880-4579-986c-ff0c9c517559/2cb59251-775d-4691-9c8f-30fb9d7707b9.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"0bb19102-ebb2-4519-ac7a-e6e69593a091",show_title:"Global Bitcoin Fest",text:"let's get started. We have the Kenya community here and let's talk about Kenya. Let's talk about what's happening in the country today, the economic situation, a little bit about the culture. But maybe if we could start first about the history of Kenya. Is there anyone that you must agree, Guantai, think would be the right person to start? I'll put Nilen on the spot, maybe to give a history of Kenya and that Bitcoin background in Kenya. Is that okay, Nileen? Yeah, it's okay. So when we talk about Kenya, it's a very famous country. Lots of people have heard about it. Kenya is a very beautiful country. I have to get it that it's located in Eastern Africa bordered by the Indian Ocean. We have the lake in the western region. We have a mountain in the central region. And most of you have heard about the Masai. Mara has very beautiful wildlife. And Kenya, what can I say? Population 56 million. So we have very many Kenyans. Kenya is a country itself is divided into 47 counties. And in the 47 counties we have almost 44 ethnic groups. So we're divided into tribes, 44 tribes. And I can say Kenya is more of a family and community oriented culture. Of course, this being influenced by the African traditions and what we experienced during the colonial period. And so far, I believe Kenya is a very innovative country, very driven country. And yeah, that's maybe in terms of the culture, in terms of the monetary history of Kenya, I can say Kenya became a colony in the 1920s and in the 1920s. We used to use the Indian rupee back then. And it was before that it was abolished and we started using the East Africa currency. So this was used between Kenya, Uganda and Tanzania. Back then it was known as Tanganika. So we've come along with, in terms of our currency as Kenyans eastern Africa currency was used for a while. Then came 1966. So we gained our independence at around 1960, 319 66. The central bank of Kenya was established. And with that, they started issuing currencies from five cents, ten cents, twenty five cents. Yeah. That was around the 1960s. If you look at history books, it says during that time, up to the 70s, kenya's economy was flourishing. So we were doing quite well until the 1980s. Usually talk about what the hell happened in 1971. So it really affected Kenya. And so the 1980s had lots of deterioration of the coffee industry, tea industry, which Kenya is very well known for exporting, if you've heard about Kenyan tea. So we had financial deficits in our balance of payments. There was a shortage of forex, very bad shortage of forex in the 1980s in Kenya. And with that, we, the government obviously turned to the World Bank and the IMF and it suffered the conditions that came with that through the structural adjustment programs. And so far, fast forward in the 1990s, we had the effects of the structural adjustment program. So in this, you found that the conditions were privatization of the public sector and also in terms of agricultural production, the government was really onto it. And the consumer policies, they were work 2021, we still are undergoing some structural adjustment programs 20 years later through stuff like the extended Fund facility from the IMF. And of course, it comes with its own effects. We have wage bill being frozen for the sector and for the health sector, for example, that led to the firing of lots of Nazis. So you find that our health sector, the key areas that are important to people, end up suffering first and the health sector amongst them. So, yeah, I can say in terms of our history, we've come a long way as Kenya, but we are still persevering. Thanks. Hello. Is anyone with me? Yes. I was just waiting if somebody else wanted to jump in to share about Kenya. Yeah, only Lorraine can do the culture for us. Lorraine. I just arrived from Ghana. I was with Lorraine in Ghana. She's a fantastic lady. I got to meet her for the very first time, and that felt really good. So, Lorraine, if you can tell us what do you think about the culture of Kenya? Okay, thank you for that. Nolene, it was also a pleasure just meeting you. Noline has mentioned we have 44 tribes. Different tribes. Right. The funny thing or the interesting part about Ken we don't have one major culture that defines us all. We have different tribes, have different distinct cultures. And this is interesting because as we meet, we get to chandler about each other. I'll talk about having different groups. We have three distinct groups. I think there's a fourth one. But I'll talk about the banter. I'll talk about the nylons and the Cush outs. So within these three groups, you also have now we have the tribes in them, right? And the Banter is actually the major one. We have the Luas, the Kikuyu. The canvas all in the bantu's. And I think Gwentai and Nolin at our bantu. And then there's us, the nylon, the Lewis, the massage, the Kaleen jeans. And then we have the Kushites and so much more. Right? I believe Kenyans are pretty enterprise. They are hustlers mode. Of course, not as much as Nigerians, but we are very entrepreneurial. We like to do business, we like to get things done. We are very friendly. By the way, Kenya is a very welcoming country. That's why you see, like most investors actually just like to come to Kenya and have their business here. Invest in us, invest in our structure. Right? What else can I say? When it comes in terms of religion, it's an open thing. We have freedom of religion. You can be a Christian, though. Majority are Christians. And then you have 10% being Muslim. And then there's a small section, the Hindus and the Sikhs, minorities. But it's an open space. You can worship. You can worship or just pray to whoever, anything that you want. What else can I say about our culture? I think that is what I would say about culture. I'd also talk about as Kenyans, we can boost about the natural resources that we have. We have the wildlife, we have the mountains, we have the lakes, we also have the oceans. It's really a beautiful for people who are thinking about coming to Kenya, it's a beautiful place that you can come to. You won't necessarily miss a thing to do here in Kenya. You can visit the Maasai Mara as Nolene mentioned. You can visit the Indian Ocean. You can even just chill in the bushes with the lions and the giraffes and all that. So about language, I think that is part of our culture. We actually speak to Ahili and English as the main languages here. And so Healy was brought about by the Arabic and then east people. This was to facilitate the trades back then, the East Africa, we have Tanzanians, Ugandans, also speak Swahili. What else? I think that's about it. When it comes to our culture, I'll just call you, okay? Because I can't pronounce your name. Would you want to add something on that? Just mention the favorite food. Kenyans love their Galilee and you can take it. The number. I was in Ghana and I think I told noline. I miss Susan. I want to go back home and eat Susan. So it's true. Absolutely. Yeah. So you have to try that. It's made of khan. So khan pairs very well with things like fish. And there is also another highlight, which is Namatoma in Sahil that is roast or grilled beef. Could be beef. Could be good. Very good. If you're out there taking a bit of a drive, experiencing game drive, you're experiencing maybe the beach. If you ever visit Kenya and go to the cross part of it. So there's a bunch of things to see. It's a lively culture, very welcoming, but that is objective from this side. So you have to experience it for yourself. You're welcome. ",timestamp:"00:37:27-00:47:45",topics:["Kenya structural adjustment","Kenya cultures","kenya"],type:"twitter_space",weight:5.850915908813477},{boost:0,date:null,description:"Bitcoin is the only asset that don't have counterparty risk",episode_title:"Bitcoin Backed Stablecoin’s",guests:[{name:"Andrew Begin",profile_picture:"https://pbs.twimg.com/profile_images/1461826323102449665/spEoEcpR_400x400.jpg",ref_id:"28db7b9d-1c71-4981-8044-baf001e58b94",twitter_handle:"agbegin"},{name:"Yago",profile_picture:"https://pbs.twimg.com/profile_images/1369335486456684546/AIJdrQ5l_400x400.jpg",ref_id:"0819a9d1-c085-42d5-8b3b-bc3ce79ff1ea",twitter_handle:"EdanYago"},{name:"Sovereign Horizon",profile_picture:"https://pbs.twimg.com/profile_images/1604168916300873731/mLszGVm6_400x400.jpg",ref_id:"6c159904-fe63-437e-91b5-5c444bbd11fa",twitter_handle:"SovereignHRZN"},{name:"Art of Thomas",profile_picture:"https://pbs.twimg.com/profile_images/1547047357371797504/avnHBa2W_400x400.jpg",ref_id:"2c312138-9a5f-4a75-9c19-513d5703d5ce",twitter_handle:"TheArtOfTomas"},{name:"Maximiliano Carjuzaa",profile_picture:"https://pbs.twimg.com/profile_images/1566622024662917120/B6uyn9QR_400x400.jpg",ref_id:"a5273c83-28f1-4df3-b8c6-d3b081f55b31",twitter_handle:"maxcarjuzaa"}],hosts:[{name:"Alexandria The Great",profile_picture:"https://pbs.twimg.com/profile_images/1575525599493427203/XubWEoDX_400x400.jpg",ref_id:"0c977f79-ed3c-46e9-8363-6c6c519d014a",twitter_handle:"alesander97"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/046c6869-0627-4825-8ecf-45ff0aed97b6.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/5e4a506b-0534-4217-b682-b568f6212b73/2b4c8ed5-a7cc-43df-95f1-0d75e2c886ab.mp3",node_type:"clip",pub_key:"",ref_id:"3ff527f0-04a4-4bb5-9279-87f48ac98da0",show_title:"Alexandria The Great 🌋⛏🇿🇼",text:"Yeah, I love that explanation. I think we can't really get rid of counterparty risk. But I do think that there are ways of minimizing it as much as possible. And when I look at all stable coins, I think the one stable coin that really stood out to me was dollar and chain for how it minimized the labor of counterparty risk by firstly making sure that everything was done by small contract or funds. Like Yoga said that everything can be you can look at all the amount of bitcoin that's backed on the exposure so you can verify everything. And then also the fact that it's backed by for 169, for example. Even. Though there's a dispute about how much that's relevant. But if you look at most of these other like you talked about Taylor for example where you first had counterparty risk when it comes to just who is keeping the funds with the UST where you don't know whether how much these guys have in the bank? The audit. The auditing and all that stuff. I see. So when you have a question, maybe you can dispute about what I'm saying. No, not at all. No, it's not related. I can go after it. You can go now. Sorry. I guess it is kind of related because with the dollar backstable coin there will always be risks. But when I'm using USBC, okay, it's very centralized. And yes, the risk is that my money could be frozen by the US government if they were to enforce that, which I believe they do in some cases, or at least on Tether. I'm not sure about USBC, but the point is that they could. But at least I know that there are dollars in a bank account. Or at least it's supposed to be. But with USDC, I believe it's more transparent. Right. I don't know, Max. I think maybe just when I read about the money on Shane, I was a little bit scary because there's so many tokens involved or maybe I don't understand it yet, but maybe there's something I'm missing and I'm hoping to learn. Yeah, I just wanted to agree with what you were saying, Alex, and at. That point, ",timestamp:"01:12:39-01:15:04",topics:["Bitcoin asset"],type:"twitter_space",weight:5.823068022727966},{boost:0,date:1675801804,description:"Hacker space opening in Italy similar to Bitcoin Park",episode_title:"CD87: Bitcoin Dev Kit with Steve, Daniela, Alekos, and ThunderBiscuit",guests:[{name:"ThunderBiscuit",profile_picture:"https://pbs.twimg.com/profile_images/1004180692794839040/qvYqY796_400x400.jpg",ref_id:"2932056a-dad7-4618-9c8d-d275b9f150d5",twitter_handle:"thunderB__"},{name:"Steve",profile_picture:"",ref_id:"8602c01d-a34f-426d-b143-581f25d3d3c8",twitter_handle:""},{name:"Daniela",profile_picture:"",ref_id:"7d011916-5300-4d32-a08b-fe4731bff5f2",twitter_handle:""},{name:"Alekos",profile_picture:"",ref_id:"9b7499d2-4c12-48c9-b8ed-614d09f0fdf2",twitter_handle:""}],hosts:[{name:"Matt Odell",profile_picture:"https://pbs.twimg.com/profile_images/1421584695746338819/Z_7ZfAeP_400x400.jpg",ref_id:"4f2825ff-3b88-4595-84d4-36e81544b79a",twitter_handle:"ODELL"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/a09a2c49-84f1-4d0b-b150-6e6103f4ee41.jpg",keyword:!0,link:"https://anchor.fm/s/45563e80/podcast/play/64675885/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-7%252F311592986-44100-2-a038b9bfbe62c.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"5458df9b-3a25-4e1e-b7a0-e14daaa8d66d",show_title:"Citadel Dispatch",text:"Speaking of communities, I'm going to self promote our dealers doing so. Daniel and I, we believe in Italy. We live in a small town Canon, near Milan called Brexit. Probably nobody has ever heard of it. We are bored when we're there. We just don't know what to do. So we decided to open kind of a bitcoin acrospace. Awesome. It's going to be super small compared to this. It's nothing compared to Bitcoin Park, but yeah, you got to start mall, I guess. Good goals to have that. So is it open yet? No. Right before leaving, we signed rent. Oh, congratulations. Yeah. So we found a spot in the city center. So cool. Like Italian. How far is it out of Milan? It's 1 hour by car. That's awesome. With trains, it's like 35 minutes. I love Milan. Milan is a great city. Yeah, I mean, yeah, we used to live there. It's it's good. It's also bad. Well, I'm a former New Yorker, so Milan feels like Italy meets New York. Yeah. Yeah. It's like it was very familiar to me. It wasn't like a tourist city. It was actually like I was there and people were going to work and things. Yeah. It was a big financial center of Italy, I guess. So, yeah. We're doing this thing hopefully in a couple of months, it's going to be ready and fully open. So if you come by Italy and. Europe, how do we find more information about it? Do you have a site or anything? Yeah, we have a website. The website is BS. It the place is called AK BS because BS is like the shortened version of Brexit of our city. Cool. Actually ACS, maybe I shouldn't say this because some listeners will come in and steal the domain for us, but Act PS is a valid DNS like domain. It's a Bahamas domain, but it costs like $500. So we can't afford it right now. Someone buy the domain for them. Yeah. And give it to us, please. So we have the Aces it domain, which was much cheaper. Yeah. We have a Twitter profile which is ACBS with the four in place of the year. Is that ACK. Like a meaning like acre? Because it's an accurate space. Yeah. And I think it's going to be where we want it to be. A bitcoin like physical place. Probably going to be more of a cipher punk. So we're trying to open it a little bit more. Yeah, not the sheet coins, obviously. Greater open source. But yeah, greater open source kind of environment. Because in that small town, there are not that many bitcoin. So if you just open a bitcoin space, I think what is going to come instead if we open a space, which is more of a basically where we teach about privacy, about freedom, about technology. Kind of like a CPB. Exactly. That's one of the big that's one of the big inspiration. 3D printing. Yeah. We're going to have a lot of non software stuff. So I want to have like 3D printers, CNC machines. That's awesome. But also like art and things like that. I didn't know. Yeah, that would be great. There's only one designer and we don't have any two of them. One of the things, we're not artists. We have art all over because you empower the local artists. We have walls. Yeah, that's what we want to do. Apparently policy is full of awesome art because I think at some point they managed to onboard the artist. So I hope we're going to be able to do that as well. To onboard people that are more of an artistic style than us. And they'll make paintings for us. You're first thing to go up on the wall, which is from here in Nashville. The Spiral guys took us out on a little team building exercise. We went shooting. Shooting automatic weapons and handguns. Love it. And sniper rifle. In an old movie theater. In an old movie theater. So anybody in Nashville here? I recommend going checking it out, but they let us keep the target from one of the from the sniper rifle stuff. So we got yeah, that's going to. Be the first part for that. Because in Italy, guns are like, I don't know, maybe for American people listening to these, they think, oh, California, nobody can get a gun in Italy is like worse than that. Nobody really? California is very easy to get a gun in comparison to Italy. Yeah, it's like in Europe in general, probably nobody has ever seen a gun. Basically. I'm glad you got to experience our local pastime. Yeah, I know. That's great. Super fun. You can train us in building Bitcoin wallets and we'll train you how to use them. Yeah, I know. It's super useful skill, actually. I mean, it's fun. But it was also interesting for me because I'm like, maybe in the future I'll need to shoot a gun. So it's a useful skill to have to defend yourself. And going back to the hackers conversation about yeah, not talking about people not taking personal feelings, that big thing. People don't have guns because they don't take responsibility for their own life, basically. And you're saying, too, it's a whole other technical rabbit hole to fall down, too, like how the guns work, how to maintain them. We didn't do that this week. But it's another protect. People know about those other things too. But to the hacker space, I mean, that is awesome. And I love seeing all the different spaces, physical spaces opening up. And one of the cool things with Bitcoin Park is like, a lot of people come here and then go back home and then they launch something back home. Everyone's just like, how do I do this in my city? Well, at the scale of Bitcoin Park, you do it by losing a ton of money. So I don't suggest that, but start small. Physical spaces are really important. And I'm happy if you guys need any feedback or anything like that, we're happy to help. And we're already talking about like I said, he was kind of helping us look at the coffee machine yesterday. Just but technological trading back and forth too. Like, alicos has a bunch of great ideas and Danielle like great ideas for hackerspace stuff that, hey, maybe that's kind of stuff we want to do here at Bitcoin Park. And some of the ways we've got some of the things we've set up here, the art and all those things, it might be taken back home. So, yeah, I feel like there's not so much of the practical side of building things. This is like a great off if they don't have 3D printers and stuff like that, which is something we really want to have tools. And you can I would love to. Have 3D printers here too. There's going to be a lot of cross pollination between all 100% oriented community. And it's very grassroots. It's very like bitcoin. It's inherently distributed. It's not like one group is doing it. You go back where you live and then you open one. I think for us, yeah, the main inspiration was parallel in palace because it's super cool. And again, also the same with us. Here was parallel palace. Yeah. We just made it easier to pronounce. Other places. Great. So, again, we're going to be like nothing compared to them. But that's, I guess, how you start. You can go up. At some point, we'll be reaching out to get a proper place. I'm already so hyped because we've done like a notion page with all the events we want to do and all the projects we want to work on. And there's just so much stuff. We're just like we're going to have game night and bitcoin night and movie night, where we show The Matrix and other films that might help people to just understand the, I don't know, like, psychopath point of view. And then we have so many projects we want to work on, like, I don't know, fridge, which you can be with Lightning and then you open it and you take whatever you want it to buy. Like a self service bar. Exactly, yeah. Because, again, I think the problem for us is going to be there are not that many bitcoins, so we have to be open to tech people in general, to people who build this. But it also will click to them. It'll click to them if they make their first bitcoin payment, actually just using bitcoin, even if it's the shittiest wallet. Buying a beer at your little bar with Lightning or with bitcoin. There's so many people that come here. It's the first time ever using bitcoin and maybe they've been in the space for like four years, three years, and they just never actually used it to buy something. They have this thing called the Blessed One One, which is an ATM, like a really small one, which accepts coin. So basically, people just I don't know, they take out their coins that's good pockets and they just buy one. Europe change. You put it in and you get SAS and Lightning and then you can. Buy them how to set up a wallet. Yeah. Great workshops. A thing. You guys did mention it before, but they do if anybody wants to support what's going on there. In Russia, they've got a BBDC Pay server where you can how do we get there? Donation page. Yeah, on the website. And it should be like a donation. On the front page, I think a link to it. Yeah. In the menu, I think, above. Great website. We're also on Geyser. That's fun. Yeah, but we don't have our own license. Yeah, we do have only address. Sorry, so what are you using, like a Lightning address with them? I didn't know they set up something for us. But they take a fee because we don't have L and D notes and they just pay service. Best approach? I'm looking at it. It looks great. 10,000 euro soft cap goal. Yeah. I mean, that's kind of a random goal. We're going to open the place anyway, so it's not like we need to reach a goal to open it. We're going to open it anyway. And we're going to start super small. Right now we're looking for a used furniture. Like we're looking for a desk that we can get it for $20 or something like that. Yeah, if you're going to buy chairs, we're going to buy used chairs because yeah, absolutely. Yeah. We don't have a specific goal in mind, but whatever we can get, obviously it's going to go towards ",timestamp:"01:06:35-01:16:24",topics:["Bitcoin Park"],type:"podcast",weight:46.10662364780383},{boost:0,date:null,description:"Bitcoin Standard is encouraging value for value system",episode_title:"The Orange Sun 🌞 VISA, MasterCard & #Bitcoin #BOLT12",guests:[{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"~₿ Maxi~",profile_picture:"https://pbs.twimg.com/profile_images/1446241859651637250/i67F3y9p_400x400.jpg",ref_id:"ad997ae7-0726-431a-9f72-82da091c0658",twitter_handle:"fede0891"},{name:"TK☣️Ph.Ple₿",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"9e3ffa2c-9410-48e9-a726-8312c0abcd7c",twitter_handle:"ToxiKat27"},{name:"FireBurs†s",profile_picture:"https://pbs.twimg.com/profile_images/1517827165198458880/N79Wpx85_400x400.jpg",ref_id:"cda1d3ad-dd80-458b-a5fb-a28861df10a7",twitter_handle:"FireBursts"},{name:"Nikolai Tjongarero",profile_picture:"https://pbs.twimg.com/profile_images/1578458155964682274/_SzDxkAJ_400x400.jpg",ref_id:"821ee040-2267-454e-a59a-92da51568afa",twitter_handle:"BitcoinNaijaShw"},{name:"ブランドン",profile_picture:"https://pbs.twimg.com/profile_images/834861311762649090/N0KAP4zH_400x400.jpg",ref_id:"3d41531d-6a59-4771-81f9-0924b4c02561",twitter_handle:"blario"}],hosts:[{name:"Satoshi’s Journal",profile_picture:"https://pbs.twimg.com/profile_images/1598641632601047042/qrZMP5Oy_400x400.jpg",ref_id:"d977ed11-09b0-4143-828d-582ecb8b58ca",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/94a86a32-91c2-4717-b5cb-b36cef925776/38decc02-c922-4c1d-a605-7cd54c91a01d.mp3",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"5483d49e-fa1a-430c-9d2a-ed11e3a6beec",show_title:"Satoshi’s Journal",text:"I implore you to check out and have this website on your desktop or on your phone. I literally have it on my phone and I click them every morning for the show. Super helpful. They're free. TC is going to be making it open source, so we think it's good now, but there's going to be a lot of people that can make it better once he makes it open source. Timechainstats.com, I don't think is open source, that is Aunt's Baby. So he just updates it as plebs, give him inspiration or constructive criticism. He makes it better. So check out both of those soon to be on our website. And then lastly, most importantly, the subject today inspired by Master Guanti was just bitcoinners are charitable. We could probably talk about this for many, many more hours in 2 hours, but I think that the biggest thing that I've seen in the bitcoin space with bitcoinners is I haven't met one bitcoin that's not charitable. They want to help people, they're selfless. And I think bitcoin is a reflection of what the future is going to be. Because when your time is denominated by a money that is actually representative of your value, I think you'll be more happier. You'd be happier. Sorry. And you'll actually be able to help people because you'll have money that is not inflating away faster than you can create it or you can make it. And so I think right now we're seeing a small iteration of living under a bitcoin standard. So bitcoinners are trying to help each other everyday on spaces, even just taking time out of their day just to create a new tool. Like we just talked about timechainstats.com and timechain. Sorry. Timechainstats.com and timechaincollender.com. Those two tools were created by two individuals. Timechainstattsk.com has been in the works for over two years if I'm not mistaken. I think when I first got spaces, Ant was working on it and he's still been working on it and revamping it and making it that much better. I mean, he's not getting paid to do that, he's just providing a tool and it's a very helpful tool. And now you got time train calendar, same thing. TC is not getting paid for it, but he's created it. So I know that TC has a donate button, so if you have a chance to send him some stats, please do. I'm trying to find it now, actually. So if you go to the app, I think it's under, let's see, where is it? Oh, so if you click the settings button and then you go to contact, you can find it. It says, donate me a beer or cup of coffee. Cheers. So I clicked his donate button and while I'm here, I'll just send him $10 here. Okay, copy. And just go to Strike and $10. All right, so, yeah, you can simply do that. It took me just a few seconds, but at North, TC expect tips. No bitcoin, really expects tips. They give the option of tips, but, I mean, it's like freaking twisting a Bitcoinner's arm to be able to send them tips. Like, no one wants to get tipped. I mean, they do, but they don't like they feel like they're what's it called? They don't want to bother people. So, yeah, just tip those people that you respect their time and the value that they bring on a value to value basis. I think that's the future. It's funny because we should have already been living a value for value basis, where you provide value and you get whatever your value is in return. But Fiat has broken that system, but now we're living it. We're seeing it through our fellow pubs. They provide value and we provide. So, for instance, the videos that we've been doing with Wicked, those aren't free. He charges us a certain amount and I'm willing to pay him that amount because the value that his videos provide you all and me, obviously, is a function of how many views we get. So one video got 570,000 views. Apparently that was valuable. The current one is 15,700 views. Apparently that's valuable. So I will continue to provide monetary money to those people that provide value to me and vice versa. So that's just the way it should work, and that's how the future is going to be. ",timestamp:"00:29:58-00:35:57",topics:["Bitcoin Standard","Bitcoin Tools"],type:"twitter_space",weight:5.705638647079468},{boost:0,date:null,description:"Seed phrase metal backups - seed phrase stamping systems",episode_title:"#Bitcoin Self Custody Q&A Episode 15",guests:[{name:"@ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"29e1a1c3-1dbe-4ab2-955d-8a7a7476996b",twitter_handle:"ToxiKat27"},{name:"@Lil_WhiTe_Boi19",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"c737d37a-be78-4bd1-823a-04d569aefcfe",twitter_handle:"w_s_bitcoin"},{name:"@Tarek_Z_Saad",profile_picture:"https://pbs.twimg.com/profile_images/1598082570931130374/aiUPJ1HC_400x400.jpg",ref_id:"16091cbf-d110-4299-af6e-84ecd0429d59",twitter_handle:"Tarek_Z_Saad"},{name:"@BeyondBlu3",profile_picture:"https://pbs.twimg.com/profile_images/1577513247107842050/JCDgPikZ_400x400.jpg",ref_id:"0be89e9a-6e96-4241-8ee8-cdebf9b134b1",twitter_handle:"BeyondBlu3"},{name:"@life2_one",profile_picture:"",ref_id:"d2a45191-e863-4e56-8a05-08afdff7f421",twitter_handle:""},{name:"@KahnsMichel",profile_picture:"",ref_id:"937fcaa9-4b73-4fbe-ada4-b40720644a1d",twitter_handle:"kahnsmichel"},{name:"@Jimmy14624",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"73c17ab8-ce99-4c87-ba45-3334c255c97b",twitter_handle:"w_s_bitcoin"},{name:"@SovereignHRZN",profile_picture:"https://pbs.twimg.com/profile_images/1604168916300873731/mLszGVm6_400x400.jpg",ref_id:"2811a110-d1cc-4a2d-bead-59b4e1805817",twitter_handle:"SovereignHRZN"},{name:"@XpatSantiago",profile_picture:"https://pbs.twimg.com/profile_images/1599096281493778433/qeSvcIuj_400x400.jpg",ref_id:"bca4859c-3c8b-42c2-a0ee-86eb581f4078",twitter_handle:"XpatSantiago"},{name:"@MrHodl",profile_picture:"https://pbs.twimg.com/profile_images/1570497262735728640/q5ZDJFKz_400x400.jpg",ref_id:"8abfce7f-a49d-49f9-8bab-6861e41910d5",twitter_handle:"MrHodl"},{name:"@bankhatin",profile_picture:"https://pbs.twimg.com/profile_images/1596672372744019969/prxTKz_7_400x400.jpg",ref_id:"c4af2875-19ec-4439-85da-4ff34ae397fe",twitter_handle:"bankhatin"}],hosts:[{name:"Wicked Smart Bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"6bbf5f18-35e4-4ad0-aade-dbd493b1f4eb",twitter_handle:"w_s_bitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/4127f08c-505a-4a7d-935f-e93e87204089.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/58879b11-db25-4b12-b182-960933e015e9/df9bdaae-4143-4873-baa6-dd7e56407c6f.mp3",node_type:"clip",pub_key:"02814a5050f43a36bb052c7a3f22f0e86700abe037a44d99b45e0cb424d9398cbf",ref_id:"d9edac8b-8349-4e52-b61e-a22ef687f4f3",show_title:"Wicked Smart Bitcoin ∞/21M",text:"Hey, guys, I just had a quick thing. Ed, you were talking about stamping it in metal, and I bought a buddy of mine's house burned down and he left his chain in there and it was just a pile of melted. So the titanium thing is definitely for the heat, you know what I mean? I don't know what temperatures the other metals go out at, but there was some left of the metal. Yeah, there was a pile. Has a video of all the hardware, all the metal devices with. He went through, he stressed us. He took molten, basically fire. He was shot at with the AK 47. He did all sorts of tests and I'm not sure, I don't remember the exact results for each one of those titanium plates, but it's there. So if you go on Twitter and you look up Loft and you look up some of these metal backups, there's a video out there with him doing all these tests. And yeah, they're not all created equal 100%. Yeah, I think it's changed. Mostly made out of copper, I don't even know. Or nickel. Those are metals that have a much lower melting point than steel and titanium, obviously. Titanium has probably one of the highest ones, right? Titanium. You can literally drop it in a volcano and it won't melt in the lava. Not that it matters, but like yeah, in a house fire, I think as long as you have it stamped in steel or titanium, like, it will survive the fire, right? Whether it will survive a shot from AK 47, that's another question. I'm not that paranoid. I'm not getting shot at enough to really care about that. Fire gets hot, man. It made a Toyota into a pile of metal also, you know what I mean? So it's hot. I'd stick with titanium if I was going to stamp anything on, anything. But yeah, I will say I myself use titanium plates, as I said before. And there are some benefits to that one is that it's a lighter metal, so it's easier to just fucking store. You have a big pile of them. It's not going to be heavy. That doesn't really matter too much to most people. That's one, though, it's kind of nice. And then it's also stronger. So like, it doesn't bend as easy if you've got a thin sheet of it. Because the ones I use are like pretty thin little cards. They don't bend. But if you're using kind of a thin version made out of steel, it would start to bend and warp. That can be a little bit more of a concern if you're worried about the plate, like bending in a way that could fuck up the lettering or something. And then of course, the biggest benefit in my mind is like, it's just got a higher melting point. But all that being said, it is harder to stamp into. So you have to really put some fucking muscle into it when you're stamping these things, right? And I've posted videos of like not videos, but pictures of the hammer I use when I stamp these things. It's probably not the best hammer for doing it, honestly, because it's like a jewelry hammer made out of copper. But man, this thing is fucked. It's just totally warped where I actually hit it because you have to hit it really hard to imprint the lettering in titanium. So definitely it requires some proof of work if you want to use titanium plates, you know what I'm saying? Yeah, one more thing I just wanted to add real quick and I'm done. You guys say don't use your names in your seed freeze. Is that even common names in your past phrase in your past race? Okay, I thought it wouldn't generate a name, right? No. If you're curious about what words are in the seed phrase, you can look up bit 39 word list and you'll see it's a list of 2048 words. Each one has a unique starting four letters, right? So you only need the first four letters of each word. That's a little known secret, but like if you're stamping them in titanium, you're going to save yourself a lot of effort and a lot of time if you just stamp the first four letters because that's all you need. There's a little bit of alpha. And then in terms of your passphrase, that can be anything you want. So that can be any characters, upper, lower case numbers, spaces, literally anything you want can be that passphrase. Now, of course, the more crazy and complicated you make it, the more responsible you have to be when you are backing it up or writing it down or memorizing it or whatever. Right? So there's a trade off there. The trade off is you can make it really complicated, just like how you can make a password on your bank account really complicated. But if you forget it, then you lose all your bitcoin. So you just have to make sure your backups of it are done really well. Don't fuck that shit up because it's really hard to recover your funds once you forget your passphrase or are uncertain if like, oh, did I make all these characters some of these capitalized, or did I put a space there? Or did I use an underscore or that these types of things, just like a password. It gets really fucking risky once you start throwing in a bunch of random shit, and then you just have to make sure that he backed it up really good. You know what I'm saying? Yes. All right, let's go to whoever had their hand up first, wasn't paying attention. I just want to tell everybody, if you need something like this, I mean, steel crypto, you can just look, I'm sorry. It's written Sierra, Echo, Echo, Delta, October, Romeo. And they also got pretty cool videos on YouTube. And it's very small, and you can hide it in the door, or you can make a hole in the wall and hide it there. It's pretty cool. And it's about $150, and it's with hammer and stems, and it's made in Germany, stainless steel. I just want to let you know it's pretty good because it's not so big like a card. That's the difference. Because if you want to go out with it, I think a card can be pretty hard in your pocket, and it's just like a roll. It's like coins you stem. Yeah. So there's a bunch of options. There's a bunch of companies who are now starting to make different options for this, and there's a bunch of good options for me, myself. A lot of these options are getting pretty expensive, right? $150 for, like, a metal backup is in my mind, that's too expensive. I'm not going to spend that kind of money, especially since one thing I'm doing is I'm helping a lot of my friends and family kind of get their seed phrases stamped, whether I'm doing it for them or whether I help them do it. Obviously, if I do it for them, they have to trust me. But it's better than them fucking keeping their bitcoin on exchanges. So I do what I got to do. And because I'm doing kind of a lot, I'm like dozens or whatever, I've kind of made my own DIY system, stamping system, and each of the titanium honestly, each of my titanium plates runs me about $2.50 a pop. I've got it down. I've got my price down per se stamp. So I can't imagine paying, like, $100 just for one or two set ups, you know what I'm saying? I'm sure it's nice if you have. A good passphrase, you can make many backups, and you can spread them out. Seat race. A metal plate is nice if your house gets burned. But if you have a backup of your seed in your mother in law's house and your grandmother's house and your cousin's house, and in a bank account or in safety deposit box, if your house burns down and your seed burns down with it, well, you have four or five other backups in different locations. And as long as your password is good, that's the main thing. I try to, like, hammer home is that your passphrase has to be as long as your seat. Those first four letters of those words, that's how long it has to be for it to be as secure as the seat itself. So I personally have yeah, I have it. I bought Crypto Stealing a long time ago. I don't really think I ever used it because I just have so many backups laying around different locations. So I don't have that signal point of failure. So, yeah, it really depends on how you're set up. Also, if you're mostly safe then you don't really have to worry about any of them. Yeah, that's a whole nother can of worms, which always gets brought up. And I love talking about multi saga as well. I think it's pretty interesting setup configuration. The other one that a lot of people use is like you can 3D print or buy for like 510 bucks the the stamping guide for stamping steel washers, you know, and that's one that a lot of people use too. You just get yourself a bunch of cheap stainless steel washers. You stamp the first four letters in each one and then you bolt them all together. Make sure you bolt them in the right order, of course, but that's like a good economical way of doing things too. If you're trying to back things up a little bit cheaper. You don't want to break the bank for a dopeass stamping system. I will say, man, like the fucking what was that company that made the titanium ones, like the Thor, whatever comes with the hammer and it's like $300. I was envious of that stamping system and that's ultimately what got me to just do the DIY myself. Because if you look at my setup, I designed and 3D printed my own stamping guide. And if you look at it, it's like kind of pretty similar to what they had. But yeah, I mean, peach their own. Anyway, the whole point is back up your fucking seafarers. Don't rely on don't rely on your device holding that for you. Whether you're holding it on a hot wallet in your phone or whether you're holding it on a signing device, you got to have backups because there's no guarantee that your phone's going to be with you forever. You might lose it, the app might stop working, your signing device might break, you might burn in a fire. You guys have to have these things backed up. So either back them up on a piece of metal and store that somewhere safe or back it up in multiple places with a pass raise on top for that extra security. There's many different options, but you just have to make sure that whatever option you choose works for you and is secure. Go ahead, Sovereign. Yeah, I just want to comment on the price point of steel plates. I have been looking around a little bit. It looks like to me the best bang for your buck if you're going to go with steel is keystone. It's like exactly the same as biddle fabulous. And it's $49 and they also have $39 option and it's yeah, like using $100 or more for steel plate is just ridiculous. I know everybody loves to kill the bill fuddle, but come on man, it's not worth that price. So yeah, that's what I would recommend. Check out keystone. I know, I'm getting a couple of those from myself. Yeah, there's options for everyone at every price point I think. Yeah, I've got some poor friends and I'm just like buy some fucking washers and just get yourself a cheap stamping system off Amazon for like $20 or whatever and go wild. Because the other thing about these seed phrase stamping systems is you're not going to keep that seed phrase for your whole life, let's be honest. Most likely, most likely you're going to cycle through a few kind of throughout your time in Bitcoin, right? You're going to figure out a new way to set it up or you're going to want to just kind of make a new one just to make sure you're up to speed on everything. Maybe you will keep the same one your whole fucking life, I don't know. But in my experience I haven't. I kind of cycle through them every once in a while just to kind of keep things fresh. And so if you're spending fifty dollars to one hundred dollars on a brand new seed plate backup every single time you create a new seed phrase, I can get expensive real quick. So finding yourself an economical way of doing that might help out the other thing with these keystone. So here I'm looking at the link that you just sent in the nest. One thing I don't like about these things, these keystone tablets is if they ever get damaged, if they get warped and then those little letters pop out, then you're fucked. Right? Yeah. That's why they made the plus one because the cheaper one for 39, they had one slot for four letters but now they've updated it to the plus, which is like 49 instead of 39. And now they actually have one individual slot per letter and also like 20 more screws or something. So it should be better. But yeah, they can be worse. But for a multi sake set up, I wouldn't be worried. Okay, got it. Okay, I see here. It looks cool for sure. I've just seen some reviews. Like I haven't tried it myself yet, but it looks for the price point, I would rather get two of these than a bill model to be honest. Yeah, cool. Yeah, good stuff. All right. Well yeah, I think we kind of beat that to death. I just want to show you because I think not everybody got the knowledge as you post. I just want to make it everybody as easy as possible. So I just want to think to everybody, you know what I mean? I mean somebody get, I don't know, thirty k a month so he don't give a fuck about the cost. So that's a fiat world. It's so crazy and insane. ",timestamp:"01:23:06-01:39:40",topics:["Titanium seed phrase plates","Seedor","keystone","titanium"],type:"twitter_space",weight:5.703676700592041},{boost:0,date:1676083645,description:"Lessons from previous Bitcoin soft forks on Bitcoin",episode_title:"BR023 - OP_VAULT for Bitcoin Covenants Panel ft. James O'Beirne, Rijndael, Antoine Poinsot & Carman",guests:[{name:"Carman",profile_picture:"https://pbs.twimg.com/profile_images/1609775498971725824/5vyAafE3_400x400.jpg",ref_id:"09405d70-6fa6-4f2c-92f1-a2951ad56447",twitter_handle:"benthecarman"},{name:"Antoine Poinsot",profile_picture:"https://pbs.twimg.com/profile_images/1108377445936316423/ArRDGbr5_400x400.jpg",ref_id:"1ba10809-b3e6-4e37-a906-697a0368b814",twitter_handle:"darosior"},{name:"Rijndael",profile_picture:"https://pbs.twimg.com/profile_images/1542705395873058817/0zsy4Yur_400x400.jpg",ref_id:"861d5324-8ede-4059-826f-f29abca5d7e6",twitter_handle:"rot13maxi"},{name:"James O'Beirne",profile_picture:"https://pbs.twimg.com/profile_images/1542173995650408450/iDxrdmuj_400x400.jpg",ref_id:"e8e48fcf-9e54-4c66-9b20-aacf5c5b504e",twitter_handle:"jamesob"}],hosts:[{name:"NVK",profile_picture:"https://pbs.twimg.com/profile_images/608402052247658497/ENDv0BNd_400x400.png",ref_id:"d754e29b-2d3e-4280-8d72-f41d2a465a78",twitter_handle:"Coinkite"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f1879df9-9bc6-4a76-951f-24548da768ef.jpg",keyword:!0,link:"https://anchor.fm/s/9500fad8/podcast/play/64850866/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-11%252Fc53436f3-e1a6-2cae-eecb-fb61b06f804d.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"1510e150-aee2-42cb-ac57-79b4997bb6cb",show_title:"Bitcoin.Review Podcast with NVK & Guests",text:"Well, another thing that is a relatively recent development is I think AJ set up Bitcoin inquisition, which is let's proactively merge different software proposals into a Cignet so that people can play with them on a shared network. And so, unlike some of the more ambiguous ambitious big change proposals, because Op Vault is really targeted at a very specific shape of use cases, maybe there's an easier path here of it ends up on something like Bitcoin acquisition. People can build little dummy wallets and normal users can get a little bit of stick time playing with okay, what would custody in a post Op Vault world look like? And demonstrate that this is better. And so even if you don't know whether or not the mechanic is trying to screw you, you can at least kind of take it for a test drive first. There might be some stuff like that where it's less about how do we go and win the rhetorical fight on reddit and it's more about what can we do to incrementally derisk the proposal so that the community understands what they're signing up for. I mean, there was a lot of that at Tap Root, right? There was a lot of sort of working groups and things like that, but Tap Root still felt pretty rammed through. Optech did a workshop on tap root, I think, two years before activation. So you could write code and watch videos about tapirt, but people still felt like it was sprung on them. Tap root is just so hard. It's so hard to get. Until very recently, didn't I feel like, fully understand Tap root for this proposal? I had to write a bunch of tests. It's all in taproot. And there were things that I just kind of didn't understand and I found it pretty difficult to get sort of valid taproot constructions. And I basically relied on sort of the example code that other people are written. So, again, I'm massively positive on taproot. I think it's awesome, but it was like, so difficult to get your arms around. Even as a deeply technical person, I. Wanted to address as well. You said that it was a small group of people, but why it's true is that it was a small group of people that cut it for tapris. I found that there was a lot of demand and the defense had a high bar. Well, there was a lot of demand, a decade of research. When did we start discussing milk rice scrapes? In 2012 or something? With raspberry? Yeah, yeah, years ago. So, yeah, a decade of research, a lot of involvement, and a lot of people in the community with the workshops, a lot of involvement with the activation. And maybe that's why as well, people are not happy with it because they were actually involved. I think Teprit did put a very not high bar, but reasonable community involvement and normal user involvement. Schneider is a similar thing. Like, people have been wanting schnor and bitcoin for years. See, like, the Schneider is funny that he brought that up. It's always been a concern of mine that what if acdsa is back door, right? And it's not revealed for a long time and there is no proof for acdsa. So the idea of, like and again, this is a fundamental change to bitcoin, right? Adding another crypto primitive is like crazy different, but just having a secondary fallback crypto primitive in bitcoin before we're big enough that state actors are going to that extent, right? It's pretty cool. Thanks. Antoine is stepping out. Appreciate it. But now we have this sort of like the fights have always been hard. Up return limit back in 2009, 2010 because people are concerned about the worst part of Dick butts and then you had say P two Sh was also a huge fight. The original block size changed from 32 megabytes to 1 know SegWit was a bamboozle of most people. People did not understand that the block size increased. I don't know, I just hope that this one is not part of the contention. Like we can find a path where like this is the gardening sale, not the construction sale. I think the point Ryan Dow made is so good. And what I love about the idea of people taking this for a test drive en masse with inquisition is like that gives technical people who maybe don't want to work on Core or don't have time to work on Core can't they can write tooling to kind of make this an easier process to be able to experiment with this stuff more easily. So I just love that idea. I think something keep in mind too, like MVK, you just went through all those different software from the original block size decrease to like stuff like segment tapri like you didn't mention like CLTV or CSV or like BIP 66 I think, or 68. Like there's tons of bits that are like we're soft fork that just like are just normal things that happened and no one cares because they're like simple small upgrades that are ",timestamp:"01:37:06-01:42:14",topics:["soft forks"],type:"podcast",weight:47.136215082032344},{boost:0,date:1601200800,description:"Politicians defunding the police which resulted in an increase in the rate of crime in Manhattan ",episode_title:"Orange Pill [OP7] - Bitcoin is Love",guests:[{name:" Abe Cambridge",profile_picture:"https://pbs.twimg.com/profile_images/1368910908282572802/MTMBCPZU_400x400.jpg",ref_id:"5eed11cc-94e5-4e17-b923-95183699f193",twitter_handle:"abecambridge"},{name:"Mitch Feierstein",profile_picture:"https://pbs.twimg.com/profile_images/2625988157/vky9cedsgb0mf3usbh3x_400x400.jpeg",ref_id:"f9a70e2b-f905-4c70-afcf-3ef7004b7cab",twitter_handle:"PlanetPonzi"},{name:" Alakanani Itireleng",profile_picture:"https://pbs.twimg.com/profile_images/1512849723283185673/MzgEELWq_400x400.jpg",ref_id:"bda1bc91-3acc-4dc7-82eb-03c70f63525f",twitter_handle:"bitcoinlady"}],hosts:[{name:"Max Keiser",profile_picture:"https://pbs.twimg.com/profile_images/1361873587582472195/y57DiTYX_400x400.jpg",ref_id:"743efd07-d194-4c74-8663-45c3b8646b8e",twitter_handle:"Maxkeiser"},{name:" Stacy Herbert",profile_picture:"https://pbs.twimg.com/profile_images/1546484196750905346/5WYPz-bc_400x400.jpg",ref_id:"4b6f90a8-8e0b-4f51-8995-431a30cf87f4",twitter_handle:"stacyherbert"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/afa24463-19f7-4875-b6f4-b261d1d6c648.jpg",keyword:!0,link:"https://www.buzzsprout.com/1263314/5617321-orange-pill-op7-bitcoin-is-love.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"5216f100-c7ac-4b62-91d8-e394f5a0d531",show_title:"Orange Pill Podcast",text:"kind of back to the 70s when I grew up here. But the crime is worse now. So it's a reflection of just complete lawlessness throughout. The police, obviously, have been defunded. So even if you wanted to, you know, the politicians said, defund the police if you don't defund the police. So they've taken away, what, half a billion dollars from their budget. And so the police aren't motivated to do anything. So the crime has skyrocketed here in Manhattan. It's very dangerous to walk around here. Is this a Larry David kind of is really dangerous. Oh, my God. Because I remember a little bit of the I'm sure Max remembers the 3000 murdered a year. Well, Mitch, you're saying that the streets are empty and I saw the videos and it looks really eerie, for sure. Only very occasionally are the streets that empty, so that's freaky. That's very freaky to have that day after day. So the crime where's the crime coming from? I've read some stories about it. So you have a lot more burglaries, I guess now. So people in the Upper East Side are complaining. So there's home invasions, there's burglaries. Is there a lot of crime with guns and knives, or is it mostly burglaries and muggings? Well, I think I think you have the whole gambit that you run. I mean, the murder rate is up close to 300%. Look, I was walking down the street and I was accosted. People tried to take my money. So I've been in the city my entire life when I was little, and I went in the wrong neighborhood. Not little, but younger. Still. Spiked the kids. Oh, my God. Yeah. I mean, I used to get beat up regularly, so I can tell when something bad is about to happen and when there are four guys that ask you for money and there's two in front of you and two behind you in the middle of the day in Midtown, there's nobody around. Something bad is going to happen. All right, so you're getting mugs, basically. There's a lot of muggings. You could get mugged any day now. Broad daylight. That's the new normal. It's the new normal. But I ran into the middle of the street because I'd rather take my chances of getting hit by a car or if one of them had a weapon or getting bashed in the skull. So I didn't get hit by a car, but a couple of cars jammed the brakes on, and the guys didn't chase me into the road, so I. Just took off meeting here on orange pill. One pill makes you smaller, and one pill makes you large. So you used to be a small person back in the walking around. Maybe that's why. Or maybe you're small now, and it feels like, you know how when you're tiny, everything feels bigger, but maybe the problem feels bigger because to me it seems like when I go to New York and I haven't been there in six months, but that it feels very sort of Disney compared to how it used to be. There was a kind of niceness about all the freaks and crazy people in New York City in the it's kind of lost that touch and maybe you need some more body slow. I mean, I remember Max's face like he hadn't been back to New York City in 1520 years and then seeing some people jet ski down the East River, like, how many corpses there's a. Lot of dead bodies in there. Why would you have a jet ski? Yeah, it's nuts now, though. But look, the police told me not to go out. I've got friends who work for the city, and they said, don't go out here at night. And I said, okay, great. But 11:00 at night four nights ago. I needed some ice cream bad. I was having an ice cream emergency. So what does one do? You walk to, of course, the CVS or the Dwayne Reid or whatever it is because they're open 24 hours and they sell ice cream. I walked in and the ice cream cabinet had locks across it. Have you ever gone in so far? And it said, Please ring the bell? I hit the bell and some guy comes like five minutes later and I said, You've got to be kidding me. You're locking up your ice cream? Are things that bad? He goes, oh, yes, they steal the ice cream regularly. They come and clean it out. I said, but isn't there anybody that sees it happening? He goes, no, we don't see it. And I said to him, I said, but the beer and the wine doesn't seem to be locked up. Wouldn't they steal that first? He goes, no, they steal the ice cream. I don't get it. That is definitely old school, where they had the plexiglass everywhere, at the bodega or at the grocery store. This was before you had big change like CVS coming in there. And of course, taxi drivers put up that plexiglass during the because of all the muggings that were going on. The subway system. We remember in the 70s as being all graffiti, all dilapidated crimes, boo, boxes. Have you been down the subway at all? Has it gone back to this state? I did try to take the subway during the day because I had a meeting down on Wall Street and it was empty. I took it and there was nobody on it. So it was fairly safe, fairly quick and painless, but nobody was on it. No graffiti going back to the 1970s. You know Tompkins Square Park in the East Village? It became an encampment. People were living there for months on end, became a nogo zone for police, and it was a drug open drug bazaar. Have we gotten to that stage? I don't think there's anybody here to participate in that. I think that if you look around on the street, it's like filled with homeless people and the people Bill de Blasio decided to let out of the prisons. So, I mean, that's the problem. I think he's let thousands of people out because of COVID, so coughing around, or they're out on the streets looking for somebody to rip off because they're convicted felons now that have been given a chance to come in and repopulate the city. That's why most of the people who live in Manhattan have left. I mean, most of the people who are here are gone. I went into my dry cleaner and he told me that the business is down 70% 70%. He goes, this is bad. And if you look, a lot of the shops are closed and they're never coming back. So if you think about that little video of Grand Central that I sent you and all the new buildings that have gone up, the real estate loans that are astronomic, there's so much space. They better get those printing presses on high here, I'm telling you. We kind of lost you a few times there, but I think everybody kind of gets the gist of it. But before we wrap this up, Mitch, I want to ask you one thing, of course, that we saw in the, as Max mentioned, Taxi Driver, the famous film, and the Times Square was the Deuce that was like the home of open air prostitution and drug dealing and all sorts of stuff like that. But we also had one thing we're missing in our economy these days, is the serial killer. I think most serial killers now, they used to be like in their thirty s and forty s. Most of them do school shootings and mass shootings at 20. Now, I think those same guys might have, you know, become serial killers back in the day. Do you think we might see the return of the serial killer to Manhattan? Because that's missing and we lost him. Well, it says my Internet is unstable. Did you get me back? You have me? Yeah, I see you. You're there? Oh, no, it's very unstable. You're a very stable genius, though. Mitch, what do you think about the serial killer missing from Manhattan? Are they going to return? I think that they are, but I think they've been reincarnated. I think there were 86 people arrested in Times Square last weekend with their peaceful protests. I guess that turned not so peaceful. So you're saying that serial killers have now become peaceful protesters? They've played antifa. Oh, my God. What about the squeegee man? Back in the 70s, everywhere you go, there's guys with squeegees who do your windshield for a dollar. Have you seen that come back yet? No, I haven't seen the squeegee men come back yet because I think people are too afraid with covet to open their windows. I mean, everybody here. This is the other thing here, petrified. And they've become a bunch of mask Nazis. It's like you have a mask on. What? You know, and they'll start screaming in the streets. If they catch people with no mask on, it's like, oh, my God, this is like the end of the world. Even if you're drinking some substance while walking down the street, you must have a mask on. So they got to figure out how to make the masks more permeable. Well, Mitch, I'm not totally convinced that you're not an alternative universe. Larry David, who stayed in New York and didn't go to Beverly Hills, there's a similarity between the two of you. I can imagine Larry David also getting in trouble with the mask Nazis, as you say. There you go. Well, I hope not. And look, I hope the city turns around but I don't see it happening, especially not with Mayor de Blasio in office. I mean, everybody's complaining about him. I don't think he's got one ally left in New York. I think he's alienated everybody. But I don't know if that's his plan, but I think he got to give New York City miss from now. On until I saw a statistic, something like 15,000 empty apartments. Is that number going to go up? Absolutely. There's plenty of stock out there that's empty. And who wants to rent a two bedroom apartment for $9,000 that you're going to have all the creature comforts and be able to have your meetings on Zoom. And no business is really transacted here. So all the apartments are pretty much cleared out. So I think they're going to have a problem, especially with the massive amount of new builds that they put up here that I've been railing about for years. There's not enough revenues to support that. And the tax revenues in the city have absolutely collapsed and they've cratered. So I don't know. We're going to have to have an economic reset or the planet Ponzi Ponzi scheme has finally exploded. But we're surviving on the fumes of Jerome Powell's quantitative easing. Infinity. But remember, you can never, ever Ponzi. Scheme, and that's a good place to end. And of course, do not worry about Manhattan real estate, because in the 70s, when they went bankrupt, not only did Donald Trump come to the rescue, because the federal government said what was the famous thing they said to Ford, said to Manhattan, shop dead. Well, don't worry, jerome Powell's got your back. And he's going to be buying up all those apartments in Manhattan and it's going to be fine because you can't taper a Ponzi. You can't taper a ponzi. Come on, dance. Boats on a Ponzi scheme. Everybody's getting ready. The boat's floating on Powell's ocean of money and we're all wearing Lays and all you can eat buffet at the FIA Ponzi scheme. Mitch yeah, all you can eat at the Warren Buffet. Yeah. Well, thanks a lot for joining us on Orangeville. Thanks for having me, guys. And be well. And I'll see you from London next time. Yeah, right. That'll ever happen? Is that the Curb Your Enthusiasm team music? It sounds like Barnum and Bailey circus on track. Oh, I don't know. Well, I don't know why, but every time we meet Mitch or whatever it is, say we go to dinner with him in Manhattan, it's like going to dinner with Larry David. Like chaos ensues. Right. Because there's always something that's wrong. Yeah. It's totally chaotic. Every time you're with them, suddenly the whole place is erupted in mad, chaotic scenes, for sure. Well, actually, I've got a New York City headline, and it does factor into this video, this viral video that we saw you of Max and Stacey, the twinning couple, responding and reacting to Jerome Powell's speech this past week. Well, there's the whole money printer go. The fact is you can't taper ponzi. But what's happened over the past few weeks and months is Jerome Powell has been trying to psych everybody out. Right? So in the spring, like April, May, they said they were going to buy all these junk bonds. And what happened? Junk bonds went soared, right? Like people went ballistic by piling in ordinary Robin Hoodters trying to buy junk bonds because they thought they were going to be like the hedge funds and frontrun the Fed. But no real hedge funds or private equity who have a private line to Jerome Powell did it because they knew Jerome Powell was going to step away from the market. And he did. But also, we see that the heart of the financial center of America, when they're just being sprayed with money and no real economic activity, we see just a total collapse happening in the real estate markets in America. And that's going to be, I guarantee you, within six to nine months, the taxpayer is going to start bailing out all of these REITs. This chart shows the number of turnstile entries, seated dining reservations, and how a popular New York City REIT is performing is, as far as I can tell, a darn good proxy of where New York City is heading. So we could just be mocking our friend Mitch Ferstein, who might, after he sees our reaction, like, not be our friend anymore. But the fact is he could be right? Because this is a collapse in all those, like, no activity on the New York subway, no activity at the restaurants, and the REITs are collapsing. This confirms what Mitch was reporting on his man on the street journalism citizen journalist. Mitch, this confirms what he was saying. Turnstyle entries. Right. This is a REIT. Right? Now, am I looking at this? Yeah, three lines there, and it's REIT turn style entries and food. You know, people sitting down for reservations at restaurants. Right. The ten day moving average. So it's up off the bottom, but it's still kind of scuttling around the bottom there so you can't sustain the economy. There's no V shape there. There's no V shape. It's an l. It's an L shape. And it's kind of an L heading, like an L heading slightly with a positive angular bias. But it's more L than anything else, which an L is for losing. Well, yeah, and part of the problem is you have the pandemic and the shutdown, which is restricting movement of humans around the earth. But you have things like this story out this past week with Finsen leaks, and New York City is one of the prime locations to launder your money. Right? So now Finn Send has to pretend to actually look at these SARS. What are the suspicious activity reports that they have to file? All bankers do it and to avoid any them getting fines or in trouble. So what. They do is they flood, like with all this paper money all over the place. They flood the Finsen, which is part of the treasury. The regulator is looking at money laundering. They flood them with these SARS. So they're looking at these suspicious activity reports and there's like tens of millions sent to the US treasury. And of course, what do they do? They've flooded with all of this money, these paper like reports, and nobody looks at them. It's just this vast, you know, kascis bureaucracy, because they just the banks just flood them like $10,000. That number was set, by the way, back in the 80s, so it's not that much money. And by the way, money launderers know you're doing that, right? So they instead buy Manhattan real estate or something like that. So we've had this situation now where the treasury and the regulators are overloaded with these pointless reports that just financially survey ordinary citizens and small business people and suppress commerce. Like they raise the cost of any commerce, right. It's more bureaucracy. Right. So bureaucracy gets in the way of commerce and it doesn't help anybody really stop the money laundering. Well, according to the Fence end report, no, the people who were now caught laundering and terrorist funding and the trillions, that didn't stop them whatsoever. Yeah. Well. Partly because what happens is if you have $5 billion that you've looted from an Eastern European nation. Right. What happens you go to your bank. One of these big major banks who. By the way. Helped write the money laundering laws so their lawyers can tell you exactly. For a fee of the 5 billion. We'll take a billion of your 5 billion and we'll launder it for you. And that's like a perfectly fine vig to pay, right? Anybody who wants to steal 5 billion, they're happy to give a billion of it over to somebody if they get away with 4 billion. These banks wrote the laws and they know exactly what they left out for their own clients, right? It's regulatory capture and it's gaming of the system. And there's a lot of humans involved. As I've explained on Wall Street before, the people who are responsible for regulation in the various offices are open to bribes. And that's true in every single layer of the financial stack that governs the American economy. ",timestamp:"00:16:08-00:34:28",topics:["Larry David"],type:"podcast",weight:5.601966619491577},{boost:0,date:1647061200,description:"[[Bitcoin Mining Incentives]]",episode_title:"WHY ARE WE BULLISH Kal Kassa Pierre Corbin Chris Smith Ben Gagnon ep243",guests:[{name:"Chris Smith",profile_picture:"https://pbs.twimg.com/profile_images/1248417464825724928/BjsozM7k_400x400.jpg",ref_id:"488a0f68-f24b-4d0b-9835-4b38a59f149e",twitter_handle:"chrissmithonair"},{name:"Ben Gagnon",profile_picture:"",ref_id:"d86128cb-056a-4233-bd95-cda98867f61c",twitter_handle:""},{name:"Pierre Corbin",profile_picture:"",ref_id:"a0a46e2e-1b24-4ce5-b34c-ca322067930a",twitter_handle:""},{name:"Kal Kassa",profile_picture:"https://pbs.twimg.com/profile_images/1515885093893681156/cpZcX_2q_400x400.jpg",ref_id:"5cf2cf3e-5cde-4426-b71f-f357195d40be",twitter_handle:"KalKassa"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/bbf0a536-990b-49b4-a9c3-a2a40fa38f88.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/48924119/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-2-12%2F253272604-44100-2-dac52f14aaffa.mp3",node_type:"clip",pub_key:"",ref_id:"f5449a66-a156-4b0a-abeb-6ff5e28434ac",show_title:"BTC Sessions",text:"sure. So what I find very interesting about mining and house developing is just the incentives that are there for miners. Right. So it incentivizes the whole energy market to just become more green. Right. So it will put big miners at the center of this energy shift that governments have been supposedly pushing for years and also put them down the road at the center of the money creation. Right. Because we, of course, believe in a world where Bitcoin will be in the middle. And that's, in fact, maybe a question to you, Ben, is it already happening and to what point or when do you think could happen? The shift of rather than miners looking for the cheap energy and contacting energy producers, turning to energy producers, contacting miners in order to stabilize the grid and be able to leverage this cheaper energy themselves. Is there already this shift happening? Is bid farms being contacted already, or when do you see this really growing? Because I think this is when the hash rates will potentially increase even more. Right. Once these big players themselves get into this. Yeah, it's a great point. The vertical integration with the energy industry is really key. If you're thinking long term about Bitcoin mining economics and reward having every four years, obviously, unless the price continues to outpace the network by a considerable amount, you're going to have compressed margins. Right. And margins that get continuously smaller over time. So you're going to need cheaper and cheaper sources of power. And that can only really come from monetizing that energy that nobody else is using. So the vertical integration is here. We've been curtailing at some of our farms in Quebec since I think 2018, maybe even 2017. And at the beginning of this year, the program was so successful over the past couple of years, it was implemented across the entire province at every single mine. Texas is doing the same things. They have all sorts of curtailment programs for Bitcoin miners. And so it's really starting to enter into the mainstream space. You'd be surprised how many oil and gas companies and energy companies, power plant companies are doing their own small mining projects and pilot projects. These are massive companies. They don't need to press release something so small. They can do this under the radar. They can get comfortable with it. And I think what they're all learning or have already learned is that Bitcoin mining should be seen as like a buyer of energy or a buyer of last resort for your energy. And so energy is very interesting market energy is very easily stored, but electricity is not. And so once you've converted it into electricity, it's the flow of electrons. You can't really put that Genie back in the bottle. So cost effectively. And Bitcoin mining is a way to maximize utility and get all that full financial value out of it, which is a boon for everybody. It will reduce our costs, it will increase their profitability. It will incentivize more production, more development, more power generation, which should lead to increasing levels of human flourishing all over the world. Every time there's increases in power development and energy utilization, you have huge increases in human flourishing. I think this is what Bitcoin mining is really incentivizing. That's awesome. I wanted to share ",timestamp:"01:04:37-01:08:18",topics:["bitcoin mining incentives"],type:"podcast",weight:5.523631239085138},{boost:0,date:1589889600,description:"Small business and the Fresh Start Commission",episode_title:"How to Address Regulations Suspended During the COVID-19 Crisis",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/da1bbdc0-4d0a-43ed-8345-ee43102db244.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/mercatuspolicydownload/MPD-038-PPIMCWebinar-v1.mp3?dest-id=655459",node_type:"clip",pub_key:"",ref_id:"55e562c3-41d2-4bfb-94d5-26ac7098ba2f",show_title:"Mercatus Policy Download",text:"All right, very good. Look, another question here. As we all know, small businesses have likely suffered disproportionately during this public health crisis. Are there specific actions governments could take through this commission to help them recover faster. Elliot, I'm going to send that to you first. Yeah. One that Michael and I have been discussing and talking about is business licensing. For instance, if a business's license expired during this coronavirus pandemic during the month that we've all been working from home, do they have to re register? Do they have to re up? Should governments deem them granted for a certain time after to allow them enough time to re register or lift the burden to allow them to reopen faster? Another one is digitizing government. A lot of how you create a business and how you file your taxes is still largely done by paper. One area where governments can improve that is by digitizing government moving that online to catch up in the digital age. All right, excellent. Does anybody else want to comment on that in the small businesses? But the whole point of this is actually to help small businesses by making sure that, as she states, localities and the federal government have the right attitude going forward, that they try to encourage the rebound and encourage the growth without actually getting in the way. Okay, very good. Our next question. Can I just add on one thing? I'm not sure I would quite agree that the whole point is to help small businesses. I think that's the effect, though. I think regulation inadvertently disproportionately harm small businesses. So to whatever degree they can be cut back when unnecessary, that's going to similarly disproportionately help small businesses. And you could target that. There's no reason not to think that a commission could focus on regulations that are harming small businesses more. For example, regulations that came out of DoddFrank. I think the intent of DoddFrank was to target larger financial operators, financial service providers, but a lot of smaller banks, a lot of smaller businesses got caught up as sort of collateral damage. ",timestamp:"00:20:54-00:23:11",topics:["small business","Fresh Start Commission"],type:"podcast",weight:5.479238152503967},{boost:0,date:null,description:"How to recover lost Bitcoin wallet",episode_title:"Café ₿: #Bitcoin Beginner Q&A",guests:[{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Stephan Livera",profile_picture:"https://pbs.twimg.com/profile_images/1362551718110580740/v-W5Q2uo_400x400.jpg",ref_id:"72f57157-c96e-4466-8bf1-290cfe1f8a0b",twitter_handle:"stephanlivera"},{name:"Thomas J Lake",profile_picture:"https://pbs.twimg.com/profile_images/1529168328534769670/5cl2Y_k-_400x400.jpg",ref_id:"21541a47-0601-447c-99c2-312d1a63c19f",twitter_handle:"thomaslake"},{name:"Goodguy",profile_picture:"https://pbs.twimg.com/profile_images/1363216959576285185/unulY4yd_400x400.jpg",ref_id:"0c3fec75-9cc2-4c0f-8dbe-db7fae2b585b",twitter_handle:"goodguybiker"}],hosts:[{name:"Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"49966553-d55b-44c9-94ec-8fee09eee5c2",twitter_handle:"CitizenBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/35b20273-49f2-45ea-a9f4-dc479d86573c/7ae5315f-beb2-41e2-b672-65dd1f102017.mp3",node_type:"clip",pub_key:"",ref_id:"df4ad67d-6316-4762-a7c5-884c162dd8a9",show_title:"Swan.com",text:"very short. Point and then something about this afternoon switch spaces. So you hear the expression programmable money. And someone once said it about bitcoin. Many people said bitcoin is programmable money. And now you hear about central bank digital currencies and you hear programmable money. What's the difference? The difference is bitcoin is money that's programmable by you for your purposes, to the extent that it's programmable CBDC is money that's not programmable by you but is programmable by the government so they can make it disappear from your wallet, they can make it expire, they can make it not able to purchase certain goods. Bitcoin, to the extent that it's programmable for you, is like you can spend it however you want, you can put whatever constraints you want on it being spent. So it's a difference of who's in charge. It makes a really big difference. The other point I want to make is if you can get that afternoon thing with Brady, Sam and Alex, I'm sure it's going to be amazing. They got really awesome topics on there which are going to talk about freedom, I'm sure. So if you can make time for it, do I unfortunately can't, but I'll be listening to the replay. All right, let's keep rolling with the questions we have up here. Chad d Wagner. Good morning. Hey, good morning, everybody. This is kind of a newbie question. I've been working on getting my coins off the exchanges and getting it into some hardware wallets. The question I've been kind of struggling with is, let's say I'm using the Moon wallet and for some reason Moon. Goes out of business or is taken. Off the app store, something like that. So am I able to take my. Keys and apply those to a different. App or a different wallet and recover. Those funds or how does that work? Yes. So the short answer is moon wallet. Even if Moon were to disappear tomorrow, there is a recovery tool, and that's publicly available on their GitHub. Now, Moon is a special case, just to be clear. So for listeners out there, most bitcoin wallets are operating on what's known as a typical seed word, the recovery phrase. Twelve or 24 words basis. That's what most wallets are working on. Moon is a special case because they use a descriptor wallet. Basically, it's a bit of a technical term, but they use a set up where it requires a little bit of a special way to recover if Moon were to go down. So what you would need is your written down, back up, and also the recovery kit. So in the middle button on the bottom on your Moon wallet, you'll see a tab called security. You click that in that backup, you'll see there's a three step process. The first step is the username and password, but you don't have to do that in this case, we're talking about if Moon wallet disappeared. And so that second and third step, that second step is you're writing down kind of like a passcode for a descriptor. And then that third piece is the recovery kit PDF. You would have to combine those two in order to be able to recover your coins. Now, Moon wallet have a recovery tool that you can run. And what you would do is you would create another wallet, generate a receive address, then run this Moon Wallet recovery process and input as part of that, the address that you want to receive all of your Moon Wallet coins into. I know it sounds a little bit complicated, but what we're talking about here is if Moon wallet were to totally disappear, the other case is if, let's say, you just lost this phone and you needed to recover it into another phone, then it's a simpler process, you could just basically use Moon and import an existing wallet. Are you following me there? Absolutely, yes. That would go for any of the apps or hardware wallets. As long as we have our keys, we can recover it somehow. Correct? But yeah, just note that there's a difference in Moon and most of the typical other wallets. That's just the key differences for you to understand. So, Chad, one of the important things I think to understand here is that when you're creating a wallet on a phone, you're using a persistently connected Internet device. So I would always consider apps that you make on a desktop, on a website, in a browser, or on a phone, what we call a hot wallet. And there's all sorts of terms we hear industry use warm wallets and secure wallets and all sorts of funny things. But if it's made on a website, in a plugin, in a browser, on your desktop, or in a phone, it's a hot wallet. And so what that means is there's potential that your private keys, when you're creating those 24 words, that information may have been accessed by no click malware that we know now exists, like Pegasus from the NSO group and all these other types of persistent issues, zero days that exist in a lot of the browsers right now. These attack surfaces that people are using to take that private information from people's plugins. So if you're looking to store your bitcoin for a long period of time, I would always encourage people to learn about and use something like a nano ledger or a cold card. These are physical devices that have something called a secure enclave. They have a special chip that does that 24 word creation offline and then hashes that information and sends it back out to the computer. So these are a superior way of doing this. We used to have to sync the bitcoin, blockchain up, and then disconnect from the Internet and create the wallets. And we had hundreds of different addresses. The benefit of using that stick is you can make hundreds of different bitcoin addresses and they can all be backed up by those same 24 words in a really easy to use, standardized way that you could put in any other hardware wallet. And lastly, I would encourage people not to digitize their 24 words, their twelve words. Anytime you can keep those things in written format, you can etch them into things like metal for redundancy from floods and fire. I think that's a much safer way. I would never store those things in a cloud or take photos of those things or print those things off again, because that takes a cold wallet created in an offline situation and it introduces online or potentially online devices to it. So even if your printer is not connected to the WiFi network, right, I would be wary of using that due to exploits and things like that. So writing these things down by hand and keeping them in multiple safe, redundant places I think is really important too. The Moon Wallet is great as a mobile wallet, like for taking money around, but I wouldn't leave money in it as a store value. Yes. Thank you. I've been experimenting with the Sparrow on. The computer side and then I got the Cold card. So I've just been playing around with everything and really enjoying it. Very cool. Yeah, that's great. So definitely once you're ready, get the Cold card set up. And what you can do is just as an example, test it out with a small amount and then practice, like as an example, spin up your Cold card, initialize it, and then if you're able to do the Micro SD card with Sparrow Wallet or Specter, then that's great. If not, if you're a beginner, just plug it in and you can use it just like that. And then you can practice sending a small amount of Bitcoin and you can even practice like, wiping the seed out of the Cold card and then recovering your twelve or 24 words by using the import existing feature on your Cold card. And so that can sort of help you prove it to yourself that, wow. Yes. With these twelve or 24 words, I can actually recover my coins. But if you want to do that, just obviously practice with a small amount, like $20, $50, something small. And then see, prove it to yourself in that way. Oh, wow. These same twelve words, it deterministically creates that same ",timestamp:"01:12:50-01:20:37",topics:["Programmable money","CBDC","Moonwallet","Bitcoin recovery","bitcoin"],type:"twitter_space",weight:5.435932159423828},{boost:0,date:1588968217,description:"Small intestinal bacterial overgrowth (SIBO)",episode_title:"Q&A: Kim & Dr Ken Berry",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/a8e3517b-b44d-4270-adaa-57587896b1e7.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/ketolifesupport/ketolifesupport-0033-q-and-a-with-dr-b_tc.mp3?dest-id=2479037",node_type:"clip",pub_key:"032d7609ff3f4a5232e4d60967971e23bc671dfb68020845a59bab5dc1f3b93b87",ref_id:"2bf2f8fe-9d2f-4d41-838d-787f2ca9734e",show_title:"Keto Life Support",text:"SIBO, small intestinal bacterial overgrowth. What do you think about this? Some people make a huge deal out of this and they want you to buy all kinds of supplements and prebiotic fiber. Honestly, in my experience, eating a real whole food ketogenic diet, you repopulate your small intestine with the bacteria that should be there, because even the name of it implies that there shouldn't be any bacteria in your small intestine, which is absolutely not true whatsoever. But what you do want is you want very docile, tame, nice bacteria to be in your small bowel and eating the proper human diet, whether it's carnivore or fatty meat, heavy keto is going to repopulate your entire body, your skin, under your arms, your growing, all your spots that might have an odor or have gas or have bloating. All that stuff is just going to get better when you stop feeding and promoting the bad bacteria. My understanding is SIBO is when because your lower intestine is supposed to have a lot more bacteria, a lot more aggressive bacteria, but SIBO is when it switches it up and somehow the angry lower intestinal bacteria get your small intestine and vice versa. Is that right? That's the theory, but I'm not sure if I agree with that 100%. I don't know that that's ever been proven. It's very hard to get a scope into the latter part of the small intestine. We can get an EGD down through the stomach into the first part of the duodenum, but you have to swallow the camera capsule to photograph the rest of the small intestine. But you can't get a scope there to take a biopsy. The only way to get a biopsy of like, your jazzunum or your ilium is to do surgery. There's literally no other way to do it yet. And so even if you do a colonoscopy, you can only go to the sea, come and see the ileocecal valve. You can't get into the ilium any length at all. So when you start talking definitively about the bacteria in the small intestine, my first question would be, how do you know what bacteria is there? Because if you haven't had abdominal surgery, then there's no way to know what bacteria is in your small intestine. So one thing that just my common sense nondoctor self seems to know, though, is a lot of people who identify with having SIBO, they eat fermentable foods and they suddenly look nine months pregnant. Yes, that bloating, I think probably is the most common complaint of SIBO and whether that's coming from inflammation or whether that's coming from and this would technically be an infection, because you're saying that bacteria from the large colon is invading the small colon and that would technically be an infection, whether it's either one keto or carnivore is going to fix that. And you know, Kim, we have multiple friends who are carnivores who have actually had their gut bacteria or their colon bacteria checked and they have a beautiful distribution of the proper bacteria in their colon. And therefore, if you have good bacteria in your colon, there's no bad bacteria going to get to your small bag. Right? So people are asking, how long will this take to resolve? And the good news is, carnivore are more of a lifestyle, so you have plenty of time, but I think they would like to discomfort sooner. So, do you have any tips? Yeah, so my experience in the clinic has been six to eight weeks of fatty meat, heavy keto or carnivore and you're going to be pretty much symptom free. And you got to remember, and so for some very few people, it's coffee. Coffee is what's causing the inflammation in the gut. Tea can do it as well. And so when I say beef, butter, eggs and bacon and water, that's what I mean, because if you do that and you're still drinking coffee and tea, then you don't know, especially if your symptoms get no better, then don't come at me and say, hey, I tried your diet and it didn't work because you're still drinking coffee and tea. And I love coffee and tea. I know that would suck. But at the same time, it also sucks to have these conditions we're talking about. And so each and every one of us gets to decide, do I want to do that or not. And so I'm just saying this is a viable logical option to try. And if you don't want to do it, then eat whatever and suffer the consequences. But if I have one of these conditions, I would think that I would do that. Now, one thing I have noticed is there do seem to be of the issues that people might have. Some people do have a sensitivity to eggs or especially egg whites. Do you think it might be worthwhile. To leave those also very rare. Not really. It's very rare. And so if you've done three to six weeks of the beef, butter, eggs and bacon and you're still having problems, then I would say let's leave out the egg whites and just eat the yolks and see what that does. But yeah, that would be about the only thing on that diet that could potentially cause a problem. And I'll tell you, Kim, I would predict if you had removed all those foods, even if you were in the past sensitive to egg whites, you would no longer be sensitive to the egg whites. So many people think that these food sensitivities are permanent and they're not permanent. They're not necessarily permanent. When your immune system calms down and stops being pissed off at the world, it tends to stop reacting to things that it used to react to. For example, back when I was eating crap, if I got within 100 yards of ragweed or cat dander, I would be this for two weeks, right? And now I could lay in a field of ragweed and pet dirty cats all day long and I might sneeze one time. So what happened there? Why am I no longer allergic to these things that literally used to put me in the bed? I had such an allergic reaction, my eyes would swell up. It's because my immune system is now able to discern me from nonme. And I think so many times when people are allergic to tree nuts, when they're allergic to things that are like completely ancestral, that's usually what's going on. And once they get all the inflammatory crap out of their diet, their immune system over the course of a month to three months will calm down and they can reintroduce those foods and they no longer are troubled with that. Got it. Someone asked ",timestamp:"00:19:40-00:26:23",topics:["SIBO","small intestine"],type:"podcast",weight:5.423373699188232},{boost:0,date:0,description:"Thoughts on the over all chapter and some favorite quotes",episode_title:"The Sovereign Individual - The End of Egalitarian Economics",guests:[{name:"chriskapilla",profile_picture:"https://pbs.twimg.com/profile_images/1362817539135463427/2AXUeFLV_400x400.jpg",ref_id:"9d495790-93f2-4d6c-b770-b2885f66859d",twitter_handle:"chriskapilla"},{name:"remydenton",profile_picture:"",ref_id:"5c5beb0c-c214-4f23-b79a-e71bf9368f2d",twitter_handle:""},{name:"JackRonaldi",profile_picture:"https://pbs.twimg.com/profile_images/1583261828628496384/IazkwYjk_400x400.jpg",ref_id:"01621476-f040-49dd-8160-4035228faf78",twitter_handle:"JackRonaldi"},{name:"AlistairZ80Aftw",profile_picture:"https://pbs.twimg.com/profile_images/1362882489895841795/gH2zix3l_400x400.jpg",ref_id:"3dcba197-47ca-40c0-857d-73cec4325801",twitter_handle:"AlistairZ80Aftw"},{name:"mattonbtc",profile_picture:"https://pbs.twimg.com/profile_images/1549459254280687618/jzdHJou3_400x400.jpg",ref_id:"998167d3-e036-4ef1-9a05-4f062903f0c5",twitter_handle:"mattonbtc"},{name:"wai_wairua",profile_picture:"https://pbs.twimg.com/profile_images/1536570699761848320/T10Owc60_400x400.jpg",ref_id:"c4d4ff36-73fa-4471-91ba-de0f99a49e99",twitter_handle:"wai_wairua"},{name:"UltraSolomon",profile_picture:"https://pbs.twimg.com/profile_images/1468332451055427601/YVgUuUHc_400x400.jpg",ref_id:"6371d519-cc98-4bf4-9f82-be17b1ea532a",twitter_handle:"UltraSolomon"}],hosts:[{name:"BTC_Venetians",profile_picture:"https://pbs.twimg.com/profile_images/1557482467539521537/Kel-eVww_400x400.jpg",ref_id:"a6313ca9-3869-4477-88ad-30172957edcf",twitter_handle:"BTC_Venetians"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/75ec86b1-cb6d-467f-a66e-5e642e5c126a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/c8cc9ec1-061d-4f53-a24b-ee43a56c7715/e650057e-2369-4e75-8119-4975a1fc4cac.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"946f1308-fffb-4aeb-89b2-68b043873ae2",show_title:"Bitcoin Venetians Book Club",text:"right, let's kick off with the first question. What did you think of the chapter overall and any favorite quotes? I think my first one first favorite quote was headline in there. The higher returns in poor areas on, well, 242 somewhere around there. Bitcoin City makes me think of that. El Salvador makes me think of that. This isn't a quote, but just as an idea. I love their little section about how Hollywood production companies work, being a template for future companies. That really made it more concrete what they were talking about. Yeah, I thought that was interesting, especially with the benefit of hindsight how we've seen simultaneously, like, megacorporations arise, but also the Internet has enabled the scale of business to be really small. All over Twitter, I see like Solopreneurs that are bringing in like tens of thousands, if not hundreds of thousands per month. And like they're just using all these different, like, lowtext tax all over the Internet to do their thing and by one person can just like, make a decent living that way. But then there's also a lot of other people that are just kind of stuck as wage slaves or whatever in the big corporations. Another quote I've got there is the genuine upsurgeon opportunity is almost inevitably accompanied by at least a brief surgeon inequality. And that seems to speak to people here. Dr. McCall would like that one, I think, but I don't see her here also regulations having a positive rather than negative market value. Or if Peter McCormack was here, he'd probably agree with that too. Well, I think that's quite interesting because it talks about sort of a marketplace for regulation so you can actually find out in an experimental sense which regulations are important for a good functioning society rather than just being as a means of extraction and coercion the regulations that you opt in if you're far more mobile globally. I actually saw an interesting post about this recently and it was kind of along the ideas of having a sunset clause for new laws saying that a new law should perhaps have a start and an end date, but also saying that similar to a scientific hypothesis or theory, that you make a new law and it says it's going to achieve XYZ and you measure against that and within a specific three year time frame or whatever is necessary. If it hasn't achieved that, then the law is revoked. And I thought that would be a very interesting way to do things. It's quite competitive if a few different countries were doing that against each other. Yeah, I love that. That's kind of like how product management works and startups. You make sure you have metrics that you're collecting to check what's the response to whatever you're trying to do and if the response is not what you want or what do you expect, you kind of pivot. You try something else. Which I think would be great if we can bring something like that to politics and lawmaking, you can just imagine. Sorry, go ahead. Sure. I was just going to say one of the really interesting parts of this chapter is talking about how there will be competition between jurisdictions in a way that there's not or there hasn't been previously and that that alone will sort of create this incentive to be more efficient in whatever format that takes. So jurisdictions can operate a little bit more like companies do today and less like just total monopolists as they are currently. Here is one quote that I did like. In the post industrial period jobs will be tasked to do, not something you have. Could you read that one more time? Sorry, yes. In the post industrial period, jobs will be tasks that you do, not something that you have. Do you think that's similar to how you have like bounties for coders? Do you think that's what the quote is getting at? I think that's exactly it, yes. I took from that that people won't have careers. Well, it depends on how you define career. I guess if a career was a succession of tasks that were related then it could still be a career but they wouldn't have permanent lifetime jobs. Yes, a career was a succession of tasks for a single wall employer or within the same part of an industry. Whereas the succession of tasks sounded a lot more like piece work or gig work in the modern part. Yeah, I think gig work is probably close. Yeah, I think we'd probably find out where it makes sense for something to be a salaried position where the benefits from that obviously they make the relationships, they have all that continuous local knowledge where that makes sense from an economic perspective and where actually it's just labor laws which are making that the case at the moment. And actually it would be far more efficient to farm it out on a piecemeal basis. I think that's an important point. I think the book maybe to keep it shorter doesn't go into the opposing argument as much, but I think anything where you're facing with people, it's probably useful to have kind of the same person in the role. But also like even I'm not a coder, but I would imagine that having the same person work on the same code base would be useful over a long period of time because they kind of know what's going on rather than having multiple people kind of going in there and doing piecework. As somebody who is a coder, I can completely agree with that. There's kind of this fallacy, I think that you can just replace one programmer with another when in reality it's not about the writing of the code, it's about the understanding of what's going on in the code which takes a lot of time to acquire and also kind of this ownership over what the code does. So, long story short, I agree that there are multiple industries and types of jobs where replacing people just willy nilly is probably not the best idea. I think I'll little bit on that with Remy because I'm also a coder. But open source, generally somebody in a corporate environment, it should be the same coder all the time or the same pair because that's where the corporate knowledge resides. But in open source you have so many different people looking at the same set of code, they do become a bit interchangeable and you do end up with documentation about how new people should approach a project. So it depends like most things. Yeah, great point. Did anyone get the sense that I don't know much about the authors, but they seem like they have libertarian tendencies. And it seems like that kind of comes out in the book to me, because some of the stuff that they talk about how the idea and the pursuit of equality as a goal is going to go away in this digital age. And I wonder how much of that is like they've come at that logically and how much of that is what they want because of a certain view of how things should work. A few episodes ago there was one of our number who posted a BBC interview on James Dell Davidson and Reese Mogg. I don't know if you heard that, but it gives you an awful lot of background. Very libertarian tendencies. Very libertarian tendencies. ",timestamp:"00:09:33-00:19:19",topics:["The Sovereign Individual - The End of Egalitarian Economics"],type:"twitter_space",weight:5.396452784538269},{boost:0,date:1636866e3,description:"[[Lightning]] and [[Bitcoin]] Have Actual Use Cases",episode_title:"WHY ARE WE BULLISH JoeyTweets Mario Gibney Bobby Shell Len ep215",guests:[{name:"Bobby Shell",profile_picture:"https://pbs.twimg.com/profile_images/1090426395979890690/uUdaFXo__400x400.jpg",ref_id:"438f8067-3fed-49d2-91d9-5018cb043aac",twitter_handle:"BobbyShell2"},{name:"Len",profile_picture:"",ref_id:"1fc627d9-a446-4e48-b960-ad97fcdbcaa0",twitter_handle:""},{name:"Mario Gibney",profile_picture:"",ref_id:"1a3f05f5-5c4a-455f-b4ec-f682080a5518",twitter_handle:""},{name:"JoeyTweets",profile_picture:"",ref_id:"e6ada141-9c3c-4e1b-b8ab-2389c94f4130",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f3b67780-d9c2-4a20-ab5c-115032a05b3a.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/43334718/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-10-14%2F0bfc842d-3fe7-98e0-1a25-43385ac48a7d.mp3",node_type:"clip",pub_key:"",ref_id:"3242aa43-f999-485b-9c94-8457526d6dbd",show_title:"BTC Sessions",text:"run a Lightning note and I too am hugely bullish on Lightning. I can see the potential in using it for quick and cheap settlements and having somebody like Jack Dorsey also on board too, and implementing it on Twitter. That's a freaking amazing idea where you could tip people for ideas for tweets or whatever. And it just goes to show you that Lightning or Bitcoin itself. There's an actual case, use. It's not just strictly an asset where you park your money. It's also a currency you can use to spend. And Lightning is the way that you could easily spend Bitcoin. One thing that's really interesting to me, too is like, you buy Bitcoin and it appreciates in value. But to us, one Bitcoin is one Bitcoin, right? Like, what if you never actually spend it and you just use it for data transmission? Do you really owe taxes? You didn't buy anything with it. You're just using it as a data tool. I think that's going to become a conversation later, but it's way too premature to really talk about that. How much Bitcoin would you really need to have to utilize that? Right? I don't know. It's tough because I don't know exactly how they're utilizing these rails for this infrastructure that they're building with, like, impervious and a lot of these concepts. So I don't know. I couldn't really comment to that point. But it is one thing, again, from the content creator perspective and to the point about Twitter, it kind of. Sets. Itself in the middle of those intermediaries that were typically taking a cut of any type of revenue that you used to get. In particular, I'm looking at your YouTube that we're on right now, that ad revenue is what keeps a lot of people afloat. And all of a sudden you can introduce revenue sources that are very easy to utilize and kind of almost like bypasses what YouTube is trying to do in taking their massive cut of everything. So I find that to be interesting. They very much try to get you using super chats and stuff like that. But when there's a simple way of like, oh, I can just drop a tip here, and that begins to proliferate through lots of other alternative platforms, at what point do enough people say, well, I'm going to go through this method of this method. At what point do some of the bigger players start saying, Well, I guess we better put this in here because there's a huge demand for it and albeit small at first, we're losing some market share because of that. I don't know how that affects that moving forward. No, it would definitely be groundbreaking in that regards. And it would certainly shake like the YouTube to the world, et cetera, not just to change gears, but there's another application that Lightning would truly thrive in, and it's the world of restaurants right now, a lot of transactions that are done in restaurants are done through Visa, Mastercard, and they take their slice of the pie one, two, three, 4% every time the card is swiped. And from what I understand, restaurants, they have a very thin margin for profit. And if you're able to increase the profit by taking away that one 4% that Mastercard and Visa do, then you can make businesses way more profitable. And it's just simply just implementing Lightning on the current system, it's easier said than done. But once it's able to be implemented in restaurants and you're able to pay for your meals with Lightning, it's going to make profits just shoot through the roof for a lot of these small businesses. Did you see? I think it was Ben Ark. ",timestamp:"00:51:21-00:55:28",topics:["lightning","bitcoin","bitcoin","lightning"],type:"podcast",weight:5.393006804006006},{boost:0,date:1640926800,description:"What Kind of Wallet Am I Going to Use?",episode_title:"WHY ARE WE BULLISH Tone Vays Jaime Garcia Trent Dudenhoeffer KC Hodl ep225",guests:[{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"KC Hodl",profile_picture:"https://pbs.twimg.com/profile_images/1506986051683950592/MMMse9gr_400x400.jpg",ref_id:"b2264dd3-e587-403e-9447-9e99afc1910d",twitter_handle:"kc_hodl"},{name:"Trent Dudenhoeffer",profile_picture:"",ref_id:"3b466176-3bbc-481d-9634-e127a9232404",twitter_handle:""},{name:"Jaime Garcia",profile_picture:"https://pbs.twimg.com/profile_images/953009048642715648/PKaQy5UD_400x400.jpg",ref_id:"f259c6b5-71d6-4c5c-897c-3cfbe80cccc2",twitter_handle:"jaimegarciag"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/c8ae0def-c33c-4d17-af4e-31ddaeedaf8a.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/45510131/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-11-31%2Fc821a6ba-7ef1-35ba-b24e-b96e84186843.mp3",node_type:"clip",pub_key:"",ref_id:"d9b2af2b-2bf8-477f-9cde-dd27660ddde7",show_title:"BTC Sessions",text:"am I going to use? Things like that. What are you seeing there? Definitely, yeah. Usually the first thing is which kind of mobile wallet should I use first for a small amount. And now there's so many great options over the last year, especially with the Lightning wallets coming out. Blue wallet, moon, so many great options. Usually people like to play around there, kind of get their comfortability up and then go to an actual hardware wallet of some kind. So, yeah, it's always fun to talk about the benefits and disadvantages of each wallet, whether it be a treasure, a ledger, a cold card, so many different ones. And I think a lot of times people just order kind of whatever's cheapest usually has been kind of what I've noticed and try it out and then kind of figure out what they like and don't like about it. And then when they get ready to go to the next step, they kind of have a little bit of familiarity with the different options. So I've got ",timestamp:"00:16:43-00:17:37",topics:[],type:"podcast",weight:5.371685059434086},{boost:0,date:1640066400,description:"What types of small shift in characteristic can make major changes",episode_title:"Diana Jones: The New Management Model — Guarding Group Relationships",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f2b2a2b2-8869-4256-94b9-a91c91c1ce7e.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/148_e4b_diana-jones.mp3",node_type:"clip",pub_key:"",ref_id:"10cc2a43-918c-477f-a29c-de6fa5ddc79e",show_title:"Economics For Business",text:"That's one of the challenges, I think, with systems thinking that you get confused about causality. Maybe there is no causality, it's just a lot of things interacting together and the outcome emerges. But you do say that small shifts can generate major change. If we've done everything else right, you qualify it. But are these small shifts like reading people better? Is that the kind of small shift that can generate a major change in the system? I do think that there's several things I think becoming more skilled and understanding how groups work. And if you read my book, it's a complete handbook on how groups work for leaders. And the thing when you read any book is to take several things from the book and practice them and then notice the impact and you'll see things rapidly. But the small things are like the shift for leaders to move from being meeting managers where they're focused on their content and like getting on with stuff, to actually being guardians of group development, particularly in the first four minutes. That the second is for probably everyone to shift from being so focused on content to being very mindful of what is the purpose of the interaction or any meeting and what is the outcome you want. So many people just don't know why they're at meetings, they don't know why they're talking about stuff because the purpose and the outcome has just been lost, gone, forgotten. And it's such an opportunity for leaders to tune into if we have this conversation, the dramatic impact out here is going to be A, B and C and that's what we want. So shifting from content to purpose and outcome, which means the conversations shift from explaining and describing stuff to enabling people to participate in bringing expertise and experience from the group. So those are the things I'm talking about. And on my website, under Leadership levers, I've got two complimentary downloads that people can just they don't need to put their email in, they can just take them around the shift for the first four minutes of any meeting if you want to really generate engagement and participation. So those kinds of shifts, and it's mostly leaders shifting away from being focused on their own content and expertise and drawing that out from others. That's the basis of it. It's easy for me to say, but it does require people to give up some things, give up being the know it all expert or knowing when to use it, but not that to be the main orientation. I find when trying to apply systems thinking in business, one of the steps is you've got to discard a lot of things that you used to know, used to do, like hierarchy and command and control and things like that. You can actively discard those in order to be able to get into the new place. ",timestamp:"00:44:48-00:48:09",topics:["small shift"],type:"podcast",weight:5.31725980650619},{boost:0,date:1675274375,description:"The importance of education about taxation and small government ",episode_title:"Is Sound Money the Answer? with George Gammon (WiM268)",guests:[{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"}],hosts:[{name:"Robert Breedlove",profile_picture:"https://pbs.twimg.com/profile_images/1592020087044591616/46enYwAc_400x400.jpg",ref_id:"0ed69c56-241c-4b63-87a5-8f2157fe51a5",twitter_handle:"Breedlove22"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ca3ab815-dc2e-408a-a0c5-8bbe50270a97.jpg",keyword:!0,link:"https://cdn.simplecast.com/audio/2effec98-bec5-4728-ba08-7a86d776e682/episodes/d6e8f010-e2d5-4489-bb8e-9b7446a4795b/audio/0ad4fb89-2eda-4ad7-8432-b6be08c8ce10/default_tc.mp3?aid=rss_feed&feed=MLdpYXYI",node_type:"clip",pub_key:"03a3451db4748e483d2e1ee5d0b3a6872253253b57edf4b084a56952b432a224b3",ref_id:"d8d7f0d9-d40b-4431-8f02-f8bf15823175",show_title:'The "What is Money?" Show',text:"And so then that's what kind of leads me to the conclusion that, wait a minute here. Sound money is definitely desirable, but if we're putting 100% of our energy on this as though that's a panacea, that's a big mistake. And if I have to allocate 100% of my if I've got 24 hours in a day, and so I've got 100% of my mental bandwidth, you know, if I really want to move the needle. As far as our shared objectives, for me, I come to the conclusion that that it it's more beneficial for me to allocate 90% of my time and energy to trying to persuade people that we need small governments, we need low taxation. And then 10% saying that, hey, sound money is definitely beneficial, definitely desirable, as opposed to what a lot of people would do is they allocate 90% of their time and energy saying, well, sound money, sound money, sound money, sound money, sound money. Because we get sound money, then everything else just falls into place. And again, especially when you look at the amount of government spending that we have today just as a result of taxation, just to forget the deficits, forget the deficits just as a result of taxation. I think you've got to come to the conclusion that a society, even with a fixed base layer, if they favor big government, you're going to get big government because people just vote free stuff. And I think that the overriding theme in what I see when I study history is it's just the same thing. It's like this cycle that we can't get out of as human beings where hard times create strong men and strong men create good times, good times create weak men and weak men create hard times. It's just over and over and over and over again. And so I truly believe that right now we're in a period of kind of weak men, if you will, but I think that we now have the internet and we now have a lot of tools that we didn't have before. And I can either sit here and just wave the white flag and say, oh, we're all doomed and we're just going to have to go through this cycle. Fourth, turning, whatever you want to call it, or I can get out there and try to pound the table for small governments with the help of the Internet and allocate as much of my mental bandwidth as I can towards that to try to impact positive change. But that's really my message, you know, is that I think that as a collective group, we're going to be a lot more successful in achieving our objectives if we allocate 90% of our time to persuading people the benefits. Of small government instead of trying to persuade them that sound money is the way to get to that small government type of environment that we're trying to strive for. I think that's kind of we can rip on that. But that's kind of my main message. Yeah, no, that's really well said. And again, to reiterate, we're basically saying we have the same ends in mind. The end, absolutely. Smaller government, less government interference in the market process. In the market process. Lower consumer prices as a result of economic productivity. Yes, exactly. So the more uninhibited the market process is, the more consumer price deflation it will create, right. Through trade, innovation, just trade and innovation basically more high intensity, higher intensity trade, more innovation, gives you lower prices. Government intervention is opposite to that. Right. That's actually interfering with the market process tends to create consumer price inflation. So the end in mind is to minimize government interference in the market process as much as possible. Where we're, I guess, exploring is what's the appropriate allocation of mental energy towards the means to achieve that end, right? Is it all sound money? Is it all advocating for education or persuasion, let's say, in the minds of people about small government, or is it a mix and to ",timestamp:"00:24:27-00:29:24",topics:["Tax education","sound money","small government"],type:"podcast",weight:38.492371921380055},{boost:0,date:1673685e3,description:"What's required to force Genesis into bankruptcy  ",episode_title:"The Chopping Block: Why Gemini Users Are Mad at Genesis and DCG - Ep. 443",guests:[],hosts:[{name:"Tarun Chitra",profile_picture:"https://pbs.twimg.com/profile_images/1587539091444432897/Z6_nmrCB_400x400.jpg",ref_id:"dfad4b23-92ff-4aa1-9aa4-abc1d54cd6d3",twitter_handle:"tarunchitra"},{name:"Haseeb Qureshi",profile_picture:"https://pbs.twimg.com/profile_images/1581025415551889408/thQwG4lb_400x400.jpg",ref_id:"790e4217-dd9f-416f-b9f8-ed596937f5b5",twitter_handle:"hosseeb"},{name:"Tom Schmidt",profile_picture:"https://pbs.twimg.com/profile_images/1563232354277085189/xQL92DR4_400x400.jpg",ref_id:"bc9d3bfd-36b0-4cbc-a491-9370decf4c99",twitter_handle:"tomhschmidt"},{name:"Robert Leshner",profile_picture:"https://pbs.twimg.com/profile_images/1587956987786104833/1SiKVj-s_400x400.jpg",ref_id:"ebaa2166-7982-423d-9f43-add89e7d47f9",twitter_handle:"rleshner"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/7de0d293-8ae3-4362-8500-8f7300f3fe41.jpg",keyword:!0,link:"https://traffic.megaphone.fm/LSHML4726349989.mp3?updated=1673643857",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"a24f0efb-66be-40a2-afa2-bf29f370b10d",show_title:"Unchained",text:"a mutually yeah. You could almost perform like a bribery attack where you're like, hey, if you got if the rest of the creditors don't give us the money, like me and two of my friends who are like small fry creditors are going to go push Genesis into bankruptcy and screw everyone else over. It does seem like an unstable it does seem like an unstable equilibrium. Well, I think the reason why it's more stable than that and this is I'm not, you know, an expert in restructuring law or any of that, but what I think makes it a more stable situation that prevents that is that any resolution has to be done equally amongst the various creditors. So you can't have like three creditors who like threaten them with some ultimatum and say, give us all our money. Back or read oh no, I'm not saying threaten the company, I'm saying threaten the other shareholders. That might be legal. I'm pretty sure that's extortion, but you know, there's maybe some way you can structure it. Yeah, but anything has to hold up, right? ",timestamp:"00:12:38-00:13:43",topics:["Genesis","bankruptcy"],type:"podcast",weight:25.351043899322917},{boost:0,date:1533945600,description:"Government subsidies and small business",episode_title:"Government and Big Business | Peter G. Klein",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/58189b3c-aa25-408d-8c5e-76f97c9501da.jpg",keyword:!0,link:"http://www.podtrac.com/pts/redirect.mp3/feeds.soundcloud.com/stream/335241913-misesmedia-government-and-big-business-peter-g-klein-1.mp3",node_type:"clip",pub_key:"",ref_id:"58c66464-fdd6-4f04-848b-f98021c4089c",show_title:"Mises University 2017",text:"are direct subsidies for small companies, especially in the tech sector. Governments build science parks and fund Incubators. And the SBIR program, which gives cash to tech startups, you have lots of indirect subsidies as well. So if we're going to say that subsidized interstate highways constitute gives sort of an unfair advantage to Walmart and Amazon, then we would have to say that subsidized electricity, subsidized telecommunication services give an advantage to small firms that are able to be in some small town, right? If it weren't for electricity subsidies, maybe you couldn't afford to live in Auburn, Alabama. You'd have to live in a big city that has a big nuclear plant. Okay? And the only reason a little startup company can be in Auburn, Alabama, or wherever is because they have access to the Internet and they have access to they can make phone calls, they can get electricity off the grid. All of those things are subsidized by the state just as much as the road system. So it's not clear that the kind of Kevin Carson argument makes any sense specifically favoring one type of firm over another. Okay? More generally, think of what the government does to the economy, to society, right? I mean, restricting trade and starting wars and controlling the education system and so forth makes us all much poorer than we otherwise would be. And the massive scale of government intervention around the world, it requires the international division of labor, reduces stocks of human capital, if you want to use that language. It makes us all dumber than we otherwise would be if we didn't have state control of education. Reduces the marginal product of labor in many contexts, right? So, I mean, all of these things it might be that if we had a free society and we had better education systems, better transportation communication systems, maybe the economies of scale and scope and production would be even larger than they are now. Maybe we'd see bigger firms than we see now if we were to get rid of the state and all of its harms. So ",timestamp:"00:37:00-00:39:18",topics:["government subsidies","small business","subsidies"],type:"podcast",weight:5.2884098291397095},{boost:0,date:1665118800,description:"Smaller states offer more opportunities and promote decentralization",episode_title:"Breaking Away: On Secession and Small States",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/6ec51741-3d93-4116-a619-d62a7cee1feb.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/102-radiorothbard-20221007.mp3",node_type:"clip",pub_key:"",ref_id:"56ded69f-9178-41fb-a466-b3f270175343",show_title:"Radio Rothbard",text:"Rockwell summed up this principle in a 2005 article called What We Mean by Decentralization. Rockwell writes under decentralization jurisdictions must compete for residence and capital which provide some incentive for greater degrees of freedom, if only because local despotism is neither popular nor productive. If despots insist on ruling anyway, people and capital will find a way to leave. This is most fully realized, of course, by the type of decentralization that results from fullblown secession. As Rothbard put it in 1977, secession means greater competition between governments of different geographical areas, enabling people of one state to zip across the border to relatively greater freedom more easily. Now, of course, the idea would be you wouldn't have to physically relocate to escape despotism. But we don't live in that ideal world. We have to work with what we have. And the fact is, governments like to abuse rights. So the question is do we want governments that are huge and control vast swaths of land that require us to move thousands of miles to escape them? Or do we want something smaller where exit is much easier, albeit still not without cost? And of course, keep in mind that in a world with only one state and no secession, there is no escape at all, ever, anywhere. We've seen this issue of exit in the modern world. Of course it's true in countless refugee situations where the most oppressed people are only able to save their own lives by fleeing across an international border. We saw it in Venezuela over the past decade when Venezuelans, desperate for food, had to escape across an international border just to get basic necessities. Thank goodness that border was there and limited the reach of the Venezuelan regime. Exit was possible if only the Venezuelan state was even smaller and the people of that region had even more options for bordering states into which they might exit and escape. Historically as well, we know the concept of exit has been an absolutely key factor in how the west roast to achieve the highest standards of living in the world has ever known. As historian Ralph Reyko has noted in his essay The European Miracle, the fact that Europe has been so decentralized throughout its post Roman history, in contrast to the huge empires of the east, meant that entrepreneurs and capital could indeed escape across Western Europe's countless borders in a highly decentralized Christendom. This was especially the case in Europe's Middle Ages. And as historians Nathan Rosenberg and Ellie Birds will note in their book how the West Grew Rich, it was in these highly decentralized Middle Ages that the institutional groundwork was laid for Europe's economic miracle. Similarly, historian Jean Bay Schuler showed this in his research and he concluded the first condition for the maximization of economic efficiency is the liberation of civil society with respect to the state. But how did this liberation occur which led to the success of markets in Europe? Bayflair tells us the expansion of capitalism in Europe owes its origins to political anarchy unquote, that is, to the existence of a large number of small states without any overriding imperial or state power. Not since Rome has Europe been unified under a single government. And that has meant more freedom and more economic growth. One reason this works is that a region of the world or region or world of small states is more difficult to even. It's even difficult to even attempt autophy. So for a private entrepreneur, moving one's capital from one place to another does not cut off one's access to markets outside the borders of a small jurisdiction. Small states and principalities have always experienced big incentives toward doing business with surrounding states. This means more trade. It means more efficient markets. Opponents of secession and breaking up states are often opposed, however, on the grounds that smaller states will throw up trade barriers and be more inclined to violate rights. The reasons for this assumption aren't actually clear, but they are common objections. On the contrary, small states want to attract capital, and it shows. This is why efforts to impose a single global minimum tax tend to meet the most resistance from smaller countries like Ireland and Hungary. As is the case nowadays, having lower taxes is a major way that small states attract wealth. Moreover, in modern times, the empirical evidence supports the idea that small states tend to be more open to free trade, more open to a free flow of labor, more open to lower taxes. For example, Sergio Costello and Truatomozawa conclude in their study on small states that in a world of specialized and growing trade, quote small economies naturally grow more trade oriented in both exports and imports. Ceteris paribus small nations thus become more trade focused than large ones. Unquote economist Gary Becker in 1998 noted, quote since 1950, real per capita GDP has risen somewhat faster in smaller nations than it has in bigger ones. Becker concluded that the statistics on actual performance show that dire warnings about the economic price suffered by small nations are not all warranted. Smallness can be an asset in the division of labor in the modern world, where economies are linked through international transactions. Of the 14 countries with populations over 100 million, only the US. And Japan are wealthy. William Easterly and An Ard Cray conclude from their own study on small states controlling for location, smaller states are actually richer than other states in per capita GDP. Microstates have, on average, higher income and productivity levels than small states and grow no more slowly than large states. So it turns out Rothbard was right when he suggested that small states are more likely to embrace free trade. As he wrote in the 1990s. This was due also to sociological reasons. Rothbard says the greater the number of new nations and the smaller the size of each, the better, for it would be far more difficult to sow the illusion of selfsufficiency if the slogan were by North Dakota or even by 56th street than it is now to convince the public to buy American. Similarly, down with South Dakota or down with 55th street would be a more difficult sell than spreading fear or hatred of the Japanese or whatever foreign boogeyman we currently hate. In other words, bigness brings delusions of selfsufficiency, and it is actually large states that more often turn to protectionism and economic nationalism and control. A second benefit of small states is that they prefer a offer, a solution. When constitutions and democracy fail ",timestamp:"00:09:41-00:16:21",topics:["Smaller states","Decentralization"],type:"podcast",weight:5.421848896549872},{boost:0,date:1629691200,description:"[[Bolt 12]] is the next [[payment negotiation UX]]",episode_title:"WHY ARE WE BULLISH Bitcoin Meme Hub Jan Capek Bitcoin Mechanic Max Hillebrand ep195",guests:[{name:"Max Hillebrand",profile_picture:"https://pbs.twimg.com/profile_images/1311357499514269696/-HQFwyFH_400x400.jpg",ref_id:"9a86cc59-ed01-4757-88f6-e9d9d63067b9",twitter_handle:"HillebrandMax"},{name:"Bitcoin Mechanic",profile_picture:"",ref_id:"faae3a37-0115-4074-af21-7d79c429c7cb",twitter_handle:""},{name:"Jan Capek",profile_picture:"",ref_id:"ec6f8b14-6c4b-42e9-8e86-9aa902c0906d",twitter_handle:""},{name:"Bitcoin Meme Hub",profile_picture:"",ref_id:"dcd5a590-2018-4707-a49b-8142d7b14e33",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/39201536/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-7-23%2F214267789-44100-2-17e9fbafdf841.m4a",node_type:"clip",pub_key:"",ref_id:"1f486e9a-51aa-476a-8430-b149c88817f4",show_title:"BTC Sessions",text:"learn and test out wallets and see what's up because it's a lot of fun to play with if you haven't if you haven't tried already. Max, you are up. Dude. Please let us know what has you feeling bullish this week. Oh, this week specifically it was Bolt Twelve to stay with the Lightning network. That's the next generation payment negotiation. Ux flow and it's really magical and super useful. So far. A Lightning network invoice both Eleven is a one time payment secret basically. And it's the string that you should only use once to request a payment and that makes things a bit awkward. Main thing is that you cannot get a tattoo of your Lightning invoice because that would be a very shortlift fun and that we got to solve. Of course, right. There are current nice hacks around this, mainly LN-URL which is kind of a separate server that you need to set up and that then you have a small domain link, btcsessions. Compayme and all of a sudden you can toss Ben some sense, right? That's possible with this add on service. But what both Twelve is doing now is to do kind of a similar thing, but inside the Lightning network directly, running completely inside your Lightning node and communicating only inside the Lightning network. So you don't need to have a separate server, you don't need to run any separate software, you don't need to have a domain and all of these things are taken care of. It's all just Lightning pop keys at that point. And the cool things that you can do is static invoices or the static offers, right. So you actually can get a tattoo right on your forehead. People can scan all the time and continue sending you one set as you deserve, obviously for the heroic act, but it also allows for automatic recurring payments. So you can say hey, scan this QR code and you will pay me forever. One set every minute. That's great. And there's also nice messaging involved here directly. So sender and merchant can communicate and send messages back and forth about details of the payment, which is fascinating as well. Well, because there is some difference between the time where this offer was created and you print the QR code and when then someone actually pays the QR code. You can also do, for example some trickery with the exchange rate. You can print the QR code with an offer that says pay me $5 in dollars and a week later, of course, the stat price is much different as the shake coin continues to hyperinflate. Right. So you are going to get less shake coins for those five stats. Five Bitcoin. Sorry, you get less stats for those five bitcoins. Exactly. And this can also be negotiated again at the time where you actually make that payment. So small things like this that really show in hindsight how bad Lightning was and how much of a hack it was in the beginning and as a miracle that it actually worked. But now that we have well over four years under our belt of actually implementing this craziness, we've learned a thing or two, and that is all kind of cohesively packaged under Bolt Twelve Lightning offers by Rusty Russell So Bolt twelve.org as a really useful resource that shows you all the fabulous things. It's still very early so far only implemented by C-Lightning, and one other full Lightning note implementation will need to implement it before it's considered no longer a draft in the spec. But I'm bullish as fuck, especially as a podcaster and content creator. I've been showing Bitcoin on chain QR codes on YouTube videos for way too long, and Lightning made that terribly worse because every QR code that you show, only the first listener can pay it and nobody else can. So getting Lightning back to the beautiful days of sending stats for watching cat videos on YouTube, which obviously is the highest achievement of humankind in this regard, we're on a good path, so that makes me even more bullish. That's the main ",timestamp:"01:21:28-01:25:47",topics:["bolt 12","payment negotiation ux"],type:"podcast",weight:5.268418788934759},{boost:0,date:1633752e3,description:"The Domino Effects of [[El Salvador]] Making [[Bitcoin Legal Tender]], Citizens are now using [[Chivo Wallet]]",episode_title:"WHY ARE WE BULLISH Haley Berkoe Tip Jamie Stuckert Colin Aulds ep206",guests:[{name:"Jamie Stuckert",profile_picture:"https://pbs.twimg.com/profile_images/1481004564090433537/ZAj3C3Kv_400x400.jpg",ref_id:"ee047505-97c1-4086-a01c-3d18bd40b2d2",twitter_handle:"JamiaStuckert"},{name:"Colin Aulds",profile_picture:"https://pbs.twimg.com/profile_images/1151579149091262464/uNkb8aat_400x400.jpg",ref_id:"7b6066e2-2ef5-4e90-9d93-dedb1d289118",twitter_handle:"Colin_Aulds"},{name:"Tip",profile_picture:"https://pbs.twimg.com/profile_images/1598405188343468032/yL-obWRx_400x400.jpg",ref_id:"72362a7b-2a0a-44ae-beb4-bb0f36a485fc",twitter_handle:"tip_nz"},{name:"Haley Berkoe",profile_picture:"",ref_id:"b62ba399-282a-4628-811c-25e280541c99",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2e84c98a-d7d8-4341-a129-3f4eaebe1e3e.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/41540590/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-9-9%2Fd7420ef4-f713-f016-1ad9-b5411c2f99ee.mp3",node_type:"clip",pub_key:"",ref_id:"54d58e3e-b828-4a9e-92c3-f761826c0319",show_title:"BTC Sessions",text:"would say so many things I'm just bullish every day. But more specifically, what's going on in El Salvador. So just yesterday was one month since they made Bitcoin legal tender, and since then, like, half the nation has already downloaded the Chival app. That's 3 million people is the population 6 million. Yeah. Just right around that, right. Yeah. So that's like a pretty big number. And then I saw this other statistic that 2.5 million Salvadorans living in the United States will eventually be sending remittances through cheevo. That is a significant number. And it's just extremely powerful because all of Latin America is going to watch how they implemented this and they're going to start doing it, too. So imagine I'm just ready. I think we're all ready for the dominoes to fall. It would be crucial for Bitcoin to get into these other countries. And also what you mentioned earlier over in Africa, the whole world really needs it. But what's going on in El Salvador is just fascinating. I think it's a little bit soon to try and really make judgment calls on the situation because it's really tough. The education component is really tough. Like I was telling Chimberra in Bitcoin Beach this the other day, I'm like if there were teams of hundreds of people going into El Salvador to train everybody, it would be a little different. But you have to have a lot of resources for that, right? So it's a process. It takes time, and hopefully more people will get educated. Read more. The Spanish community is now doing podcasts and they're sharing more stories. I'm super excited. I think it's going to go well eventually. And I'm excited for the rest of the world to fall behind them. Yeah. It's unique in El Salvador because it's coming from two ends of the spectrum, too. You've got this initial grassroots movement with Bitcoin Beach, where it's just a small community kind of bubbling up in El Zonte. And then you've got now coming from a more top down approach where obviously the government is like, hey, this is legal tender and some Bitcoin is kind of pushed against the enforcement type measures around that. Now, granted, as an individual or a business owner, you don't have to hold Bitcoin. It's an effort for people to accept Bitcoin and choose to swap it to US dollars immediately if they want to. But Bitcoin is a very averse to any sort of use of force in a lot of instances. But that said, the world is kind of watching here, and I guess we'll see how it continues to play out. I love that it was started as a grassroots thing in small communities. I like seeing that around the world. And I'm moderately curious as to one how this plays out down there. If we see another kind of cycle, as we've seen in past, where it's huge boom followed by a bust, because that could look spectacularly bad if it's massive boom for the end of the year, and then it's like a two year bear market after that, that may not look great on the world stage. So hopefully that's not the case. But also, I'm really curious as to because they're not going to be the last country to do this. And I'm really about what's next. You hear rumblings in other locales, but a lot of it seems to just be like, oh, we're just going to kind of give our stamp of this exists and it's official that you're allowed to own it and some sort of regulatory clarity. But I'm curious about the next country to say this is legal tender, and I don't know where that'll be or how long it'll take, but I don't know. Colin Haley, Tip, what do you feel about what Jamie is talking about in El Salvadora? What are you interested in? What are you worried about? ",timestamp:"00:46:11-00:50:54",topics:["el salvador","bitcoin legal tender","chivo wallet"],type:"podcast",weight:5.268418789235816},{boost:0,date:1472358600,description:"Getting funding as a small business ",episode_title:"TheMacroView Episode 4: Access to Capital",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/8e52e9c4-52e8-4dea-8ed9-8c6a7fcef25a.jpg",keyword:!0,link:"https://www.blogtalkradio.com/themacroview/2016/08/28/themacroview-episode-4-access-to-capital.mp3",node_type:"clip",pub_key:"",ref_id:"9ac59d0a-2e8d-430b-87e4-493026d9cbe3",show_title:"The Macro View",text:"underwritten by a bank and they've got a whole process behind it. But originally the idea was kind of skipping the bureaucratic process that goes on behind the scenes of a CD that costs interest and just deciding which loans you're going to make and kind of having the underwriting of a bank. Now there's risk involved, which there's not. With CD you get at the IC, that's why you get a lower rate. But in a yield starved world, for some people it was a really good option to start investing in these peer to peer loans and we'll see how it ends up working out over the next five to ten years. But being able to kind of cut out the middle man and get capital right into the hands of people that need it, I think that that's a very interesting innovation and the ability to document those loans. And I know there was a scandal recently with Lending Club, but for the most part you're able to document that stuff very well. It's not that hard with modern day technology to have a really strong and secure database to be able to document these securities very well and make sure that they're not getting lost or being overly diluted. And you can have rules surrounding small businesses in regards to how often the liquidity can be offered by the investors. Maybe they do have to hold it for six months. So you don't just get a plumbing in the price a little bit after it goes up on the market and you have a plugin to where, if you're an investor, get a quick and easy report on what's going on behind the scenes of that business and where that capital is actually being used. All that's possible with today's technology. All that's possible with today's technology. And we're operating in a financial services world that is based on 1940 laws and 1933 laws. The entire infrastructure, the legal infrastructure and regulatory infrastructure up until basically DoddFrank and you've had Tweaks here and there, you had Glass Eagle and then it got repealed and you kind of had the merger of lending banks and investment banks or commercial banks and investment banks. You had kind of the merger and consolidation amongst that after the repeal of Glass Steagall, which set up a firewall and then the Volcker rule kind of did that and moved closer towards that. And that was part of Don Frank. And frankly, I think disclosure is the most important part of that. And yes, because we have an insured financial system, when it comes to just everyday consumer deposits, it's very hard to have that moral hazard of allowing prop trading desks that can take almost unlimited leverage with individual depositors that have financial insurance for their deposits because those prop traders kind of know in the back of their minds, hey, we're not really losing anybody's money. So as long as you have that moral hazard. It's very hard to have a commercial banking system that's merged with an investment banking system because you basically have customer deposits that are insured being put up as collateral to trade risky assets and to do it via risky strategies if it was fully disclosed and people knew the risks that they were taking with their deposits and there was an insurance. Which if there was an insurance. Banks wouldn't really take that risk because nobody would let their money be that kind of risk taking with it. With their savings and with their checking account that they use to buy food every day. It just wouldn't happen. But if you had a system like that, then you wouldn't really necessarily need the separation. The system that we do have with the insurance, you do need the separation. So it's an interesting framework that we have because the way that businesses gain access to capital today is really based on a world that was way before the current information. And I know in the 80s things got a little bit stricter in the because you had the pink slip pushers, the pink sheets pushers, and the penny stock brokers that were kind of running rampant and your wolves of Wall Street type characters that were ripping off old ladies and selling them a bunch of junk. And that's not what I'm advocating. What I'm advocating is having a legitimate market that has really strong accountability built into the technological infrastructure of it. You have a fast registration process. You have standardized types of offerings. You have auctions that are available, and you farm that exchange API out to every brokerage firm. And you hold brokerage firms accountable for keeping documentation and backup documentation on it. And you set up rules to where the brokerage firms aren't going to get sued for recommending it as a small part of somebody's portfolio, and aren't going to get sued if somebody without getting any recommendation or professional financial advice goes off and buys a bunch on their own and take that risk. Because casinos don't get sued when somebody walks in with $10,000 and puts it on the table, that was that guy's life savings and you just let him blow it. They're kind of in a world where they understand, look, people are going to come in and take bad risks and make bad decisions. And to a certain extent, while it's sad that's the world of investments too, people have to learn that you can't just make willynilly bad investments. You got to diversify. You got to play it long. You got to think about the long term. You got to build a good, strong portfolio that isn't dependent on one or two things working out that's basically going to follow the overall economy. But maybe you can outperform a little bit on the upside and maybe you could protect a little bit of risk on the downside. If you have a really good financial adviser, you're your own professional financial adviser and you know what you're doing and you know how to manage that risk, there are ways to do that. There are ways to use the markets that we have to get a good return. I think this would be a way that would increase that. I also think that it would open up structured products that would allow a lot of capital to flow from institutions to these small businesses and that would really open up the market for entrepreneurs to gain access to capital. If you had strong structured products that were based on pools of strong interest rate loans to small startup businesses that also had a tax incentive built in, you'd have institutions all over the place trying to buy into this. And you'd also have it as if you structured it properly to where you have the right risk management protocols in place. You'd also have a lot of retirees who might be able to clip a little bit better of a coupon, do it in a safe manner, and while helping to build the next generation of businesses. So there's a lot of things you can do. I'm not saying it would be their entire portfolio, maybe five, six, 7%. You can index annuities to these pools there's all sorts of interesting things you could do with structured products if you had a more vibrant market where investors of all sizes could come and gain access to startup and small business debt and equity offerings in a way that was accountable and in a way that was efficient and in a way that maybe offered a little bit of liquidity. But you understood these are small businesses that are trying to grow that liquidity three, five years down the road. If you actually had a world that preached truth that didn't say one out of every three businesses goes out of business, only one out of every three businesses is still in business after the first year. Only one out of every ten is in business after the third year. All these little cliches that just simply aren't true. About 68% of businesses three years in are still alive. So yeah, you've got one out of three that after three years go out of business and by five years 50%, a little over 50% are still alive. You have pretty close to 50%. Five out of ten. Let's use real numbers and let's plan risks around those real numbers and let's understand that yes, there's tail events but the more vibrant of a market we have, the more of an opportunity there is for people to find ways to manage the risk around that market. And when you have ways to manage the risk around that market, three standard deviation market events that put 75% of small businesses that started that year out of business and a lot of people lose money on that, you have ways to manage that risk and you have way to cost efficiently prevent yourself from losing big time on one of those events. So I think that what we really need is a combination of public policy that provides a tax incentive for the private redistribution of wealth that is wealthy people and people of all sorts taking minority stakes in small businesses and startup businesses, getting a tax incentive to do so. And as that business grows, obviously there's going to be tax base that grows and it pays way more than the taxes that are credited or deducted. By making this investment, by giving people these deductions and credits to make these investments, you're going to have much more taxes that come in a couple of years down the road. But not only are you going to have that. You're also going to have a more vibrant market for it and you're going to have incentives for entrepreneurs to go and create a very accountable market where small and startup businesses come in and properly have the standardized paperwork to make the offering to register quickly. Make it not very expensive and be able to attach that tax credit to it. Be able to attach that tax deduction to it very easily. Raise the capital. Put the capital to work. Hire people. Go on with their idea as they grow their business. You already have strong accountability. It will be easier for them to go back to the market. Maybe the first row is a convertible debt, maybe the second round is convertible preferred. Maybe the third round is a pure common equity. And that's the conversion point for the other two. And those are a year apart. Each they're done on the same exchange. The exchange, the brokerages, they make a little bit of money off of it, people get their tax credit for it, they get to invest in the next generation of businesses. Those businesses raise the capital, they put the capital to work. The economy grows and flourishes and it's going to be well worth having this market when you've got an economy that's growing at 4% as opposed to the measly 1.1% that we got. In order to do this, we've got to make it fair to the people that are participating in the market, that are providing this profession where they're not going to get sued all the time because the business goes out of business. Look, businesses do go out of business. Some succeed, some fail. It's not as outrageous a number that fail as society likes to preach, as we showed you here on slide 13 in tonight's podcast. It's nowhere near those outrageous numbers, but some do. Some businesses succeed, some fail. And when you take the risk of investing in a small business, you have to understand that why you should diversify. But when you're taking that risk at an early stage yet it should be a small part of your portfolio, you're able to get a lot of upside down in the future, you're able to get a lot of upside down in the future. And that's the benefit because you're starting out, you're getting a lower valuation before that company enters into the hyper growth stage. The other thing is. If you open this market up to a credit. Not just accredited investors. And if you had a vibrant market for these types of opportunities. You'd have financial professionals that whether they specialize in that or at least they make it a part of their repertoire and put it as a part of their model and take the time to really start to understand that market. Financial professionals will help their clients make those right decisions. They will. Financial professionals already have fiduciary responsibility. And if they might say, look, you should look at doing this as part of a tax plan and understand you might lose some money on it if you have this tax credit tax deduction, they also might look at it and say, look, if you have ten companies, five are going to succeed, five might go out of business. And the five that you have a finite amount of risk, the five that succeed, out of the five that succeed, three of them you're going to get a two X return and one of them you're going to get a three X return or whatever. You can show different models. You can model it out, and you can say, this is what we're expecting out of it. There is risk involved in this, as there is with everything. That's why it's only a small part of your portfolio. We're diversified, but this is something that we got to get happening. Everybody's complaining about the inequality. Inequality, wealth inequality, income inequality. The reason there's a lot of inequality is because there's absolutely no incentive for a wealthy person to take risk investing in a small business that's just starting out. When you can vary, it's very difficult. There's no vibrant market. It's hard to keep them accountable. People live around the world. If you're an entrepreneur, you've got to go out and find the wealthy person. You got to court the wealthy people, and you got to court many wealthy people in order to find the one that likes your idea. Well, that's not cheap, and that's not easy. And if you're just an average dude or you're an average gal looking to start a business. You come from middle class America or you come from even poor neighborhood in America. But you worked your ass off. And you got a little bit saved up. And you had enough to be able to go off on your own and not have to worry about a salary for a little bit. Now you got to find a wealthy person. Then you can use the Internet all you want, but when it comes down to at the end of the day, wealthy people want to know you can go out and have a drink with them. They want to know that they can trust you, that they can look you in your eyes. They want to shake your hand. It's not an easy thing to do. If you don't come from a lot of money, and it costs a lot of money to get there, you got to constantly be going around and trying to meet with these wealthy people and hope one finds a job. You got to figure out ways to hang out where wealthy people are. Guess what? Wealthy people don't hang out where it's cheap. They hang out places where it's pretty expensive for the most part, and at least pretty expensive for a young entrepreneur that's just starting out. So if banks aren't going to do that job anymore, we've got to figure out a way to incentivize those wealthy people to seek out good ideas. And we got to have a vibrant marketplace for that to be done. And we've got to institutionalize that marketplace in a way to where the offering documents are standardized. People know what they're getting into. They know what they're doing. And there is an incentive, a financial incentive, a tax incentive to do so that will get this economy bumping again, that will get this economy moving really fast. You'll have a velocity of money. You'll have to start kicking up interest rates and then you know what you're going to have? You're going to have banks all over starting platforms for this. They're going to start brokerage houses that will really advise, look 3% help get this tax deduction out there. And maybe the political way to do it is to not make a permanent tax deduction. Make it five to seven years. Seek out some best practices, emulate those best practices, be able to find ways to get more resources to the small business owners so that you have lower failure rates. There are other ways to do this and in a competitive world you're probably going to actually see failure rates at the beginning increase a little bit. And then what you're going to see is you're going to see profits and diminishing returns. The law of diminishing returns. As you have more people participating in the same industry, competing for the same customers, they're going to start to have the price compete. And when they start to price compete, they'll also compete with innovation and new products and new services. But when they start to price compete, you're also going to have lower margins. You're going to have smaller profits. And then capital is going to be diverted away from that. It's going to be put towards even newer businesses. And if you have this perpetual cycle of new innovation, new innovation, new disruption, lower prices, more goods, more services, more abundance for people, more jobs available, more people consuming, more people having jobs, more people getting wage increases, guess what? That also means we can start to pay down our debt. That means we no longer have to have budget deficits every single year. We can have balance budgets. We can have budget surpluses. We have large budget surpluses and windfalls where we can pay whole chunks of our debt down and prepay whole chunks of our debt and we won't have to refinance it. The other ",timestamp:"00:35:52-00:52:23",topics:["Small business","funding","merger","lending"],type:"podcast",weight:5.265220403671265},{boost:0,date:1623733200,description:"The Goals of Small Business",episode_title:"Andrew Frazier on Running Your Business",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f2b2a2b2-8869-4256-94b9-a91c91c1ce7e.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/122_e4b_andrew-frazier.mp3",node_type:"clip",pub_key:"",ref_id:"bda964fc-b276-490e-98b6-3009769f941e",show_title:"Economics For Business",text:"and be profitable. Right. So you have a few techniques. You talk about standardized methods and processes. One of the elements I picked out of the book that I loved was you're thinking about goals. You call them smart goals. That's an acronym, smart. You might walk us through some elements of that, but tell us about goal setting for small businesses. Okay, well, a lot of times you have so many things going on within your business that you have to do that sometimes you forget about planning and doing the things that are important but not urgent. And that's really what goals are. They're very important, but sometimes they're missed. But by having goals and focusing on them, it allows you to move forward and many times move forward even faster and better than you would have. So the Smart Goal effect, which is commonly known to include specific measurable achievable, relevant and time based, where the specificness gives you a chance to get clarity around the goal. And that's generally qualitative and quantitative. You have to have it measurable because you can't improve anything that you can't measure. It has to be attainable. So you need to analyze what it will take to achieve the goal and then it has to be relevant, does it contribute to your business strategy and your profitability, and then you got to achieve it within a certain time. So time bound and have reasonable delivery targets and ways to gauge your progress. So really by developing smart goals, it's a way to plan for your business and it's a way to measure how you're doing and continually make improvements. So Andrew, given that given those set of smart goals, you say that every business from the outset should have detailed, standardized methods and processes. Besides the smart goals, what are the detailed methods and processes that we should be building? Well, it's important to be able to have consistency, and by setting out processes and procedures, it allows you to do that. It's also very hard to manage people, but it's very easy to manage systems. So by having a system or process that helps, you be able to manage more effectively and make sure your business is running the way that you want it to. Michael Gerber, who wrote the email, really talks about the key to running a successful small business is really about running it like a franchise. So that the same way a franchise has processes, procedures, and clear ways of doing business, you should be working towards that with your small business ",timestamp:"00:15:38-00:18:45",topics:["Small Business"],type:"podcast",weight:5.25807249546108},{boost:0,date:1642222800,description:"[[Bitcoin]] Versus Banks in [[Australia]]",episode_title:"WHY ARE WE BULLISH Duczko Thomas Jestopher Morgen Rochard Rick Vanderhulst ep229",guests:[{name:"Rick Vanderhulst",profile_picture:"",ref_id:"4c184180-b77d-4e25-ac7c-4d2e86cdde85",twitter_handle:""},{name:"Morgen Rochard",profile_picture:"https://pbs.twimg.com/profile_images/1362921386256211972/IpIK8cwI_400x400.jpg",ref_id:"c29b26e9-82c8-4c0a-8130-aa083d33ec48",twitter_handle:"MorgenRochard"},{name:"Thomas Jestopher",profile_picture:"https://pbs.twimg.com/profile_images/1607521016368201730/6GSHGkGX_400x400.jpg",ref_id:"50388de7-3ec7-401b-8349-5ee1d8a004c0",twitter_handle:"Jestopher_BTC"},{name:"Duczko",profile_picture:"",ref_id:"2b6de75e-0cf5-4fec-b458-d1b8ee3f86df",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b87feb17-6926-4295-b2c2-d1c2e9d49ca8.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/46171740/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-0-15%2F68b825e2-6752-7447-34ca-b27f0ea69256.mp3",node_type:"clip",pub_key:"",ref_id:"c2dff822-95ca-45fd-bf30-61ed21ecc3b1",show_title:"BTC Sessions",text:"this is actually fact in Australia. So there was a case Bitcoin versus banks, a guy that was dancing with his small Bitcoin exchange. He was just doing transactions on one of the peer to peer exchanges, helping people. And several of the big banks in Australia, they've actually invested in one or several exchanges at the same time. They're not allowing these other exchanges to bank. So clearly there is something going on with their own incentives. Yeah. It's unfortunate. Jess, I don't know if you have anything that you wanted to add in. I haven't let you chat much yet. Sure. Let's see the experience in Turkey. I think, Rick, you mentioned that. They'Ll. Just pass along a check that is the asset and write the new information on it and just pass it around. You'll have like ten different names on there. And it's just sort of this delayed settlement because no one has the money because all of that inflation. And it was just like, wow, that's the Fiat system. And here in the US, the financial center of the world, on a sunny day, it's still one to seven business days. Everything is going perfect. I just had my first experience ",timestamp:"01:06:17-01:07:52",topics:["bitcoin","australia"],type:"podcast",weight:5.248069832838849},{boost:0,date:null,description:"Bitcoin backed stablecoins as a solution and how it works in emerging markets",episode_title:"#Bitcoin solutions for Emerging Economies",guests:[{name:"@RSK",profile_picture:"https://pbs.twimg.com/profile_images/1592915327343624195/HPPSuVx3_400x400.jpg",ref_id:"b326a250-3fc1-46da-a64c-2659a4de0e3a",twitter_handle:"RSKsmart"},{name:"Femi Longe",profile_picture:"https://pbs.twimg.com/profile_images/1547047357371797504/avnHBa2W_400x400.jpg",ref_id:"7a5a41f1-6d1e-46c9-b97f-20ae03eafdd1",twitter_handle:"TheArtOfTomas"},{name:"@Alexandria The Great",profile_picture:"https://pbs.twimg.com/profile_images/1575525599493427203/XubWEoDX_400x400.jpg",ref_id:"1c95e8b2-3a98-46ce-933f-ef9f50c518c5",twitter_handle:"alesander97"}],hosts:[{name:"Tomas Villalonga",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"4f1cff71-07e0-4d7a-8992-d4b0609ca0b1",twitter_handle:"TomasVillalonga"},{name:"Brian De Mint",profile_picture:"https://pbs.twimg.com/profile_images/1546297674512470016/oEVF8rJQ_400x400.jpg",ref_id:"064e04f7-8320-4854-8325-0cc19cd7ff55",twitter_handle:"BrianTheMint"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b2dd8be4-74b5-47b2-b470-e568657f3a0d.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/1ced1636-bd02-426f-a451-f1ebcd2108d1/f1d75b7e-a877-4052-acdd-23958f6207d6.mp3",node_type:"clip",pub_key:"",ref_id:"41015fe4-63fd-46d7-8dde-f065457f2af6",show_title:"Art of Tomas",text:"Yeah, I think so. As a bitcoin, I wish I could just tell people, just buy bitcoin and it fixes everything. I wish it was so easy. But for most people, unfortunately, bitcoin volatile, it's too much. So I think looking for like I put on the title bitcoinsolutions, and I think things like a bitcoin backed stablecoin for a lot of people in the world make a lot of sense. And if you could do it in a way that also benefits bitcoin, which is what rootstock is doing and why I like it so much, I think that is the best way forward. Alex, please. Yeah, definitely. I think one of the things that we actually started working on with our skill and metamorphosis in the space was that what we wanted to do was we wanted to look at how can we achieve market penetration. One of the problems that we have in emerging markets, or I can't say Zimbabwe's, emerging market in undeveloped markets like Zimbabwe for example, is because we face sanctions and of disadvantage we can't have what sort of central exchanges. So the thing about central exchanges, especially like what we saw with FTX was these exchanges often don't hold any bitcoin, they just come up with the own kind of altcoins and then they promote them and then they just dump them on retailers, for example. Right, but the thing about these exchanges is that you have these new types of what you call it, stable coins like USCC or UST that can pay these guys massive amount of startup capital. And then these individuals, these exchanges now have incentive to register these debt coins only and promote them regardless of whether they're beneficial to the end user, right? So there's kind of an unfair advantage when it comes to bitcoin versus these other cryptocurrencies at the end of the day. So what we saw was that because we don't have exchanges that can propagate the only agendas involved with, we can now we kind of have an advantage. And this advantage now comes with to access bitcoin which is highly demanded as well, where comes at a cost at 10% premium because first there's a cost of getting the capital outside of Zubay to buy this bitcoin and then coming back to Salad here, which is on 2% depending on the level of liquidity that you have and that you're transporting. The second challenge is that the second premium is that it comes from individuals wanting to make a profit. Now, if you are passionate bitcoin like myself and Metamorphosis, what you can do is say let's forgo the profits today. But also depending that we have a job with our so it's really nice that we've been able to get a company like I was K for example, that actually pays us to grow these communities to improve risk on adoption in Zimbabwe. Anyway, what is happening is that you can basically forgo the profit and then bring the trees down to about 2% 3% and then what happens is that you now can sell bitcoin cheaper than most of these stable coins like US CC UCC. And then also you can also undercut the current legacy system which is also charging around ten to 15% premium. And then people can now start seeing what should the financial benefits of using bitcoin. Once again, the problem is that Bitcoin's financial benefits was taken away when exchanges went away. But now we're saying, okay, maybe that's actually an advantage and something that we can use against these individuals to ensure that we can push Bitcoin because backstabbing like Donald Chain, for example, at a very low fee. If you guys can do that, that is brilliant, because that gives you an advantage. I wanted to ask you, we're going. To be working on that. We believe that stable coins are kind of the short term solution for a lot of people. Like you said Thomas, a lot of people cannot afford the volatility of bitcoin, but they can use for sure unstable coin that is backed by bitcoin and that all the fees that you pay go back to the miners and to the bigger ecosystem. And I think it's a certain solution for a lot of people. And we believe that a lot of people are going to embrace crypto through a single point that is backed by bitcoin. They are going to see how bitcoin can add value to their life, and then they're going to understand bitcoin after that. So I think what Alexandria is proposing, I think is key, and I believe it's a great strategy because it's going to be for them, like, seven to 8% cheaper than buying USDT and more secure even for them. So, yeah, I think it's a great strategy and I hope we can make this happen and it's going to help a lot of people there. Yes, absolutely. Absolutely. For me, a bitcoin backstop solves many, many things. At the same time, it allows for millions of users that cannot use bitcoin to benefit from bitcoin, to benefit from the growth of the network, the security from the network. And also because all the fees go to the bitcoin miners, all those new users, they are also making the bitcoin network stronger. So it combines a lot of things that it surprises me that a lot of bitcoiners have such a hard time understanding this. And that's why I wanted to have your perspective, Brian, in all of these. Because in your book, bitcoin evangelism, you do a great job explaining everything of how bitcoin is, how it works, what it means. And he also described when you talk about altcoins, that a lot of the altcoin services would be built on big coin eventually. So I wanted to ask you if you have tried any of the VidCon layer two solutions or these big compact stable coins, or if you have any questions or anything in that regard. Yeah, that's actually part of why I really like jumping on with you guys. I see this as a really good opportunity for me to learn. The only layer, too, I really have any familiarity with is lightning. I mean, I really want to learn more about rootstock. I want to learn more about bitcoin backstable coins. If you wouldn't mind, can you break down how a bitcoin backed stablecoin works? Like, how did the bitcoin reserves work and that sort of thing? Because this is very much I mean, it's pretty funny. Bitcoin is such a new space, right? I mean, I've been in it for ten years, and it's evolving at such a light speed that even the quote unquote experts, nobody's an expert at every element of it. Nobody's a doctor in bitcoin at this point, right? So I'm really here in, like, a learning capacity for these particular things. So if you want to mind just breaking that down, because I feel like that's part of my bitcoin, evangelism is to help people understand some of these emerging concepts, because, yes, I think the concept of a bitcoin backed stablecoin has a lot of allure of people that I talk to that particularly talk about the volatility. Like you mentioned earlier, a bitcoin where I lean into the volatility of bitcoin. I actually don't shy away from that, but I go the one bitcoin is one bitcoin and that sort of thing. And that doesn't appeal to everybody. And I understand why, if you wouldn't mind just illuminating this idea of bitcoin back stablecoins a little bit more for me. I mean, you guys are talking about it in a very practical sense, so I get it in that regard, the need for it and why it works. But if you can maybe even explain some of the technical side of it, not on like a computer science standpoint, but just maybe how the reserves work, how do the fees go to the miners and those types of things. Right, yeah, I can do that. I wouldn't be able to explain it technically, even if you wanted me to. But basically, the bitcoin network would stand as, like, the base layer, and on top of it, you have different layers, too. Like lighting is one, liquid is another one, and you have Rootstock. Some of the key characteristics that I love about Rootstock is that the main currency is pegged one to one to BTC. So it's our BTC, and you have the bridge that you can go back and forth. And one of the platforms that are running now on Rootstock is called Money on chain. And I created the first bitcoin backed stale coin. Before. Sorry, I skipped this very important point is that root stock is merged mine by the bitcoin miners. So if you're a bitcoin miner, you can mine both chains at the same time with no extra cost, and you earn more bitcoin if you do. So Roots talk at the same time, make the bitcoin miners earn more money, which most like now is quite important. So you earn so that the revenue would be the mining reward plus the bitcoin fee from the block and then whatever fee reward from the root stock block. Okay. And you get that in bitcoin. Right. And then we have the main chain, which is money on Chain. Actually, before we go into money on chain, to me, the fact that Rootstock has bitcoin as its native currency and the fees go to the bitcoin miners makes it very much aligned with bitcoin because it means that all the value from Rootstock is going to accrue to bitcoin, the asset. And all the extra financial movement that happens on Rootstock goes to the bitcoin miners to make the bitcoin network stronger. So they're very much aligned in that sense. Sure. Yeah, I want to add on I just want to add a few other points. The first thing is, as soon as you buy your bitcoin, basically what you do is you plug into a permissionless, peg into small bitcoin. So you have a small contract plus your bitcoin. And then this allows you to basically now mint a dollar and chain. So dollar and chain is basically now a bitcoin has backed eight to one. So for every $1 of bitcoin, so dollars of bitcoin, you have $8 of bitcoin basically backing it, basically. And then I think what autonomous is saying is that whenever the individuals that are mining bitcoin, these individuals with a slight switch can also use a place that's called neo merge mining, which allows them to also mine the restock network, basically, which is the second layer towards that. So right now we're saying about kind of varies from 40% to about 60% of breakcoin hashing power. And like what you said, basically all of the cryptographic hashes from the restock network is actually added onto bitcoins. They're one's block, basically. So this means it's very beneficial to the bigger ecosystem because every dollar that individuals buy basically just adds value to bitcoin itself. But I think also the one thing that I think was important was I can't sell bitcoin at extremely low premium at 3%. For example, in because of the volatility, we can see bitcoin moving from 5% to 2% on a daily basis, which is good if you're just someone who wants to buy and hold it for a day to day basis. But now if I want to pennies with the market and offer extremely low fees, for example, so that bitcoin adoption can occur much rapidly, it's not really possible because of monetility. But what I can do is I can use the same that uses bitcoin as a net currency and basically start selling that at about 3%, where the only thing that I'm charging is the cost of transportation to go to a country that has exchanged, buy the bitcoin, come back to Zimbabwe and sell it to individuals. So that individuals can now use this as a form of remittances. Because the one thing I'm noticing is that everyone wants to use big kind of remittance, but the cost of fees is what's really kind of interesting sometimes. I remember I wanted to do a geo transaction when I was in Boswana with my father who's in Zim. As soon as you heard the fees, you're so shocked that we were paying this much in Zimbabwe. And that's something that I've always kind of disliked and I think I want to try changing, but it's only possible because I can use auto and chain, which has no volatility and stuff. ",timestamp:"00:22:42-00:37:24",topics:["Bitcoin-backed stablecoins","Bitcoin exchanges","Brian De Mint","Rootstock blockchain"],type:"twitter_space",weight:5.239642381668091},{boost:0,date:1472358600,description:"Growing small business to increase the economy",episode_title:"TheMacroView Episode 4: Access to Capital",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/8e52e9c4-52e8-4dea-8ed9-8c6a7fcef25a.jpg",keyword:!0,link:"https://www.blogtalkradio.com/themacroview/2016/08/28/themacroview-episode-4-access-to-capital.mp3",node_type:"clip",pub_key:"",ref_id:"7eca97d5-7a23-4e41-8e04-cfffdef85f06",show_title:"The Macro View",text:"can start to really fund our Social Security liabilities and our entitlements and we're going to talk about that in another episode. But one of the things we got to do to be able to do any of this, we got to get the economy moving again. And the way you get the economy moving again is you do what we had throughout the early 90s, which is just flourishing small businesses that were able to access capital. And yeah, you had scams that went on with the pink sheets pushers and the people robbing old granny. Yeah, it's sad and it sucks. And a lot of these regulations exist but most business owners aren't like that. And honestly anymore. I don't know if it was just totally I'm too young to know and I didn't work there. I don't know if Wall Street was just really a bad place back then. Maybe it was. But I'm in the financial industry and I know a bunch of financial advisors and guess what? They're not bad people. They're not bad people, they're good people. They want to do best by their clients. They want to do best by their clients and they're not going to go and rip their clients off. But if you had a vibrant market where they could get good information, they knew that these securities were legitimate, that they had been vetted, that they were on a market where there's transparency into the businesses. Maybe you don't require quarterlies for small businesses because that's too expensive, but maybe you require an annual or maybe like I said, you have some sort of financial portal where shareholders can at least gain that next level of insight into what's going on in the business at that early stage of a small business. But we need a vibrant market. We need a vibrant market where wealthy people and nonwealthy people can go and find strong early stage business deals. Investment opportunities and ventures that are early stage and start up and where they can put capital at risk in a way that feels safe and secure on a market. That they vet them and make the registration process cheap and easy and the securities that are offered are somewhat standardized and you have some insight into that. Business people will do it. And then you slap a tax credit for pre revenue and a tax deduction for post revenue and that accounts for the risk. And maybe what you do is for those pre revenue businesses, the only type of security they can offer is a convertible that pays a coupon. So you're lowering the risk profile. I wouldn't be a fan of that. But hey, it's a step in the right direction. I'd rather prefer where investors and businesses, businesses offer the type of security that investors want to buy and where as long as that capital is flowing to a small business or startup that is taking that capital, putting it to work and hiring new people, what I want to see is I want to see new businesses come out with new technologies, with new products, with new services. I want to see them compete against the old ones. I want to see them hire new people. I want to see them drive the cost of goods down. I want to see them drive wages up by competing for the best talent. And the way that you do that is you get entrepreneurs who are out there. There are entrepreneurs out there who want capital to put to work, who they know with the right amount. They just overcame the barriers to entry that we all set upon them with our really high regulatory costs and ridiculous regulations. If we just overcame that as an entrepreneur, we would be successful. And what we need to get there is a little bit more capital than what we foresaw because we didn't realize all these regulations were coming out. We started three or four years ago and wham, we got slapped with tons of. Uncertainty and we have no clue when it's going to be implemented when or what's going to be implemented when and it's a total mess if you're an early stage entrepreneur especially in a highly regulated industry. And that's my weekly rant for today. I hope you guys enjoyed the show. We're going to be wrapping up here in just a second. Got about four minutes left. I apologize for the technical error earlier on. Had a little bit of trouble with my microphone when I tried to dial in it's just a ton of static in my headphones. So we had the show scheduled earlier and unfortunately I was in it. Had a lot of static going on had to unplug my microphone and try to figure out what was going on so I just had to end up recreating the episode. Sorry about that for all those that listened to the first one I had posted and are now going to check back in a little bit later. So to wrap up I wanted to talk about something that I saw the other day that I thought was really funny. I thought it was very creative and expertly put together and what it's called is Lovegov and you could just YouTube search YouTube lovegov and it's a series about six short videos about five minutes each and it is a sort of a satirical show where a girl falls in love with a guy named Gov and Gov is sort of for all intents and purposes a government regulator but kind of is the allencompassing federal regulator. He comes and points out every little thing and it's just her life through college and government encouraging her to do this with certain incentives or Gov not government but Gov is encouraging her to do this with certain incentives or encouraging her to do that with certain incentives like in college and going abroad and taking on all this debt and then when she gets out starting a business oh yeah I love small business. Not as much as big business but I like small business too and here I've got your ocean safety regulations and I'm not doing it justice at all. You got it. And maybe on the next episode I'll play a little clip for man might try to reach out and get permission to do that. I think it's done by the Independence Institute but if you go on YouTube just type in Lovspace G-O-V Lovegov and you'll find it and I think that you'll really enjoy it. I think it's really well put together. It's the type of thing that we need more of. We need more satirical comical culture winning culture winning media that's funny. That's light but there really does nail the point across and I think that this little short series of videos really dead it was really good. Had me laughing but at the same time was a serious point that got across and got made and I think it's very relatable and would be very relatable to a lot of people of all political ideologies to show how government gets involved in the market and really destroys a lot of the market incentives and makes it to where people have a much harder time going about chasing their dreams and pursuing what it is that they really want to do and what they thought was their version of the American Dream. Not some Washington bureaucrats version of it. Again, this is Andrew Smith coming to you live from downtown La. This was the macro view. Hope you guys enjoyed it. Tonight's episode is all about access to capital, how we're going to get it, why it's so important, and talk a little bit about why we don't have it right now. If you're just tuning in now, go back and listen to the episode in full in about ten minutes and we're going to wrap up here. Hope you guys have a wonderful weekend. Take care. Again, this is The Macro View, coming to you live from downtown La. ",timestamp:"00:52:24-01:00:00",topics:["Small business","investment","new business","capital access","entrepreneur","government regulations"],type:"podcast",weight:5.209966659545898},{boost:0,date:1671321600,description:"How big data center miners help enable self sovereignty for individuals",episode_title:"#Bitcoin Mining Saves the World - Brought to you by Marathon",guests:[{name:"Steve Barbour",profile_picture:"https://pbs.twimg.com/profile_images/1592714173469065216/q8kXPyQI_400x400.jpg",ref_id:"63a731b8-4759-4360-9e9d-d66f884e12d8",twitter_handle:"SGBarbour"},{name:"Nathaniel Harmon",profile_picture:"https://pbs.twimg.com/profile_images/1578090357102780416/etXW-RA9_400x400.jpg",ref_id:"9105fb4e-4150-4c25-90f1-8ea770585749",twitter_handle:"NateHawaii"},{name:"Taylor Monnig",profile_picture:"https://pbs.twimg.com/profile_images/1599563776621219840/mvb8y3zY_400x400.jpg",ref_id:"b8513b01-ff94-4d7f-944f-5c92e1126885",twitter_handle:"taylorbmonnig"},{name:"Harry Suddock",profile_picture:"",ref_id:"6440ea0f-c982-4b76-b7c2-9c6bf7e9a4a9",twitter_handle:""}],hosts:[{name:"George Kaloudis",profile_picture:"https://pbs.twimg.com/profile_images/1545498090118950913/aGCJaGqF_400x400.jpg",ref_id:"4ae2c311-16fd-4586-b65d-f046b1feb9ce",twitter_handle:"gckaloudis"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/492cbcce-3744-4d8b-b2ca-3a7f063e798a.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=Tk8oChjgVhw",node_type:"clip",pub_key:"029099ec31eb33594611dc47d5c93de2c1aa86918e3a36b408c14a500601c8bc9b",ref_id:"6e890ef3-7358-40d6-a01f-44f444dbabfc",show_title:"Swan Bitcoin",text:"Taylor, we're talking about the little guy a lot over here. And you work at a big public mining company. So how exactly are you big data center public miner helping enable self sovereignty for the little guy? So I guess I'll take it from a society perspective, our last two acquisitions are good examples of this. These are sites that are in, you know, rural Georgia, have a ton of excess power that was simply just going to waste. We've been able to go in there, utilize over 100 power, provide over, you know, 50 jobs, and introduce bitcoin into the daily lives of all these people, along with millions of dollars of revenue for these small cities. So from a self sovereignty perspective, it might be a little bit difficult. But from a societal perspective, we're making a huge impact with mining all across rural Georgia by building these data centers. Cool. Let's talk about energy. I think people want to hear us talk about energy anyway. So Harry you touched on it. Per capita energy production is a good thing. Energy go up, bad things go down. I read something recently from Lyn Alden where basically we're just trying to capture the sun in some capacity, as much concentrate as sun as we can. That's ",timestamp:"00:09:38-00:10:45",topics:["Self sovereignty","Bitcoin mining"],type:"youtube",weight:11.383676517140954},{boost:0,date:1623733200,description:"The Processes and Procedures in Small Business",episode_title:"Andrew Frazier on Running Your Business",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f2b2a2b2-8869-4256-94b9-a91c91c1ce7e.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/122_e4b_andrew-frazier.mp3",node_type:"clip",pub_key:"",ref_id:"3dacb7c8-34d2-4e73-8064-5d53c6857239",show_title:"Economics For Business",text:"to our interview. When I was in the big business world, Andrew, we used to build what we call process maps, which are every step in the process, every handoff who's involved, what the output is, what the input is to the next step. Is that what you're advocating, that kind of detailed process mapping our step by step outline of activity? I'm advocating that, of course, in small business, you have a lot less resources and manpower, so it's a process. And early on, when you're working in your business, you're working and sort of developing them as you go. But to move forward and grow, you have to become a supervisor and a manager. And at those levels, you develop the process and procedures so that you can build your organization and continue to do business the way that you want to do business and in the way that has made your business successful previously. Yeah, we used to have a thing called the Procedures Book that catches all of those processes. Do you recommend that small businesses have something like that? They accumulate these processes over time? I think you do the keys to really going from working in your business to working on your business. That's where you develop your processes and procedures and you optimize your business. So that's really what working on your business is. And by doing that, you also increase capacity. So you're working in the business, you're working on developing your products, your services, finding the right target market for that. Once you do that, then you should pivot to working on your business, which is really when you're putting processes and procedures into place, you're optimizing your business plan and your strategy, and then you're building capacity and then working on the future of your business, you're really developing your strategic growth plan ",timestamp:"00:19:37-00:21:44",topics:["Small Business"],type:"podcast",weight:5.171255588532055},{boost:0,date:1613511331,description:"The Bitcoin education",episode_title:"WHY ARE WE BULLISH? Bitcoin Buying Tsunami Swells in All Waters ep147",guests:[{name:" Away Slice",profile_picture:"https://pbs.twimg.com/profile_images/1493953883370053632/rvtEfkr-_400x400.jpg",ref_id:"ff304d54-ca39-45eb-98ef-483460548c9a",twitter_handle:"add_slice"},{name:"Littlest Hodler",profile_picture:"https://pbs.twimg.com/profile_images/1396223393322749952/uzavXUxh_400x400.jpg",ref_id:"5eaa1126-c920-4860-89a0-459e64be2af5",twitter_handle:"littlesthodler"},{name:" and Colin Aulds",profile_picture:"https://pbs.twimg.com/profile_images/1151579149091262464/uNkb8aat_400x400.jpg",ref_id:"fbd7719d-1c4a-497d-96a8-1d34e2e91702",twitter_handle:"Colin_Aulds"},{name:" Mark Moss",profile_picture:"https://pbs.twimg.com/profile_images/1501276126823346177/6grHYzO4_400x400.jpg",ref_id:"5a1cc110-3363-4dd1-a568-e80f70a51925",twitter_handle:"1MarkMoss"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/26808829/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2021-1-16%252F91cb3e87-a549-79e0-bed0-3b2785b9eed4.mp3",node_type:"clip",pub_key:"02c431e64078b10925584d64824c9d1d12eca05e2c56660ffa5ac84aa6946adfe5",ref_id:"1376395c-9c36-4f82-bdde-86ce6cf7ba26",show_title:"BTC Sessions",text:"most of the time, spent some time with a small company. Now I'm back with the big guys and account management. So I'm not doing as much face to face anymore. But in sales we talk about 90% of sales is listening. So to Mark's point earlier, you don't just say, you know, I've got this widget and it solves 86 problems. Nobody cares about that. If they only care about the one, maybe two problems that it solves for them that's specific to their use case, right? So I have a personal rule with friends. I'm from a very small town. I don't have a lot of friends that are in a bitcoin. I have had two people this week alone come to me. Usually starts on like, Facebook messenger or something, and then we meet up for a beer and chat about it, but I never bring it up. I'm involved a little bit with the Bitcoin runners fitness club over in Europe, so I have a couple of t shirts and stuff, so I wear them to the gym so people know, but I never bring it up. I let people come to me, and then they bring up, listen, I'm worried about how much my grocery bill is going to be next year. I'm worried about bank of Canada borrowing all this money on Canada too. So it's like they say, we're borrowing money from the bank of Canada, but what they really mean is that we're just printing it, and it's impoverishing all our children and grandchildren, right? So I wait for those kind of conversations, and then usually I'll sit down with them with a beer and say, what do you want to do? Do you want to get in? I don't want to show anybody while I'm here, but I do tend to point people to shake pay. I find it's an incredibly simple user interface. If you can send an e transfer, you can use shakepay, share it to Ben. Because you pointed me to blue wallet when I was kind of onboarding my wife a few months ago. I've been doing the hardware thing for a little while and was kind of out of the loop as far as digital wallet goes outside of lightning, so I asked for you for some recommendation. Blue is great because it's got some very basic features. It's easy to learn, and then you can kind of scale up from there as you need. But I think I have an onboarding a lot of people. That's not my goal here, but that's my system for doing so when it arises, right, is that I wait for people to come to me, and I wait for their specific problem, and then I say, well, I can help you out. And this is the underlying technology behind bitcoin that may help alleviate your fears or put you on the right path to whatever decision is right for you. And sometimes that means they spend. I had a buddy the other day that cashed in $50 on his wealthsimple account after doing some stock trading just to see what it was like. And maybe he comes back to me. Maybe that's as far as he goes, right? But I've had other guys that I've helped out that I know are a little bit deep for average, regular middle class people. So that's my strategy for onboarding. It's not something I actively seek out, but I'm always happy to talk about it when it comes out. That's awesome. Tons of noobs coming in these days, and it's only just beginning. I feel like all of us are probably starting to get those friends and family members or even just random DMs from people on all kinds of different platforms. So exciting to see. But we've got our work cut out for us, that's for damn sure. So what I want to do, obviously, again, there's almost 140 people watching smash like button. Give this a share. Let's get a few more people watching it here. We're going to jump to Mark. Mark, dude, let's do a refresh here. What has you feeling bullish this week? Yes, I mean there's so much to be bullish for, right? But I guess today I was digging through some data, looking at working on my next video. Some of the data I was looking at today ",timestamp:"00:47:46-00:51:21",topics:["Bitcoin education"],type:"podcast",weight:5.149457931518555},{boost:0,date:1571767106,description:"Is the device able to verify bitcoin transactions? ",episode_title:"BUC Live: Lightning Hardware and Nodes Panel from The Lightning Conference Berlin",guests:[{name:"ketominer",profile_picture:"https://pbs.twimg.com/profile_images/1245972079528329218/YDUD9N2Q_400x400.jpg",ref_id:"2f8b0b59-6f23-4c89-973c-668cc7666998",twitter_handle:"ketominer"},{name:"Stacie Waleyco",profile_picture:"https://pbs.twimg.com/profile_images/1490885395390861317/MOzYmFOn_400x400.jpg",ref_id:"d4292662-08f9-4b16-a889-b61a401edcc2",twitter_handle:"satsie"},{name:"Christian Rotzoll",profile_picture:"https://pbs.twimg.com/profile_images/1593996559162773504/qKZTYL0I_400x400.jpg",ref_id:"8c13f2e9-d81a-4116-9ad7-d14a66d5f899",twitter_handle:"rtzll"},{name:"Sebastian Küng",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"04448652-5b1f-480c-a573-17c7de956e2c",twitter_handle:"sebastiankueng"}],hosts:[{name:"Anita Posch",profile_picture:"https://pbs.twimg.com/profile_images/1491071678725644288/yehGegWl_400x400.jpg",ref_id:"b60af304-7a57-4a2a-b988-92b960a6b0a1",twitter_handle:"AnitaPosch"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/357dc2db-2643-49f0-9393-5a20ed21d0fe.jpg",keyword:!0,link:"https://bitcoinundco.com/en/podlove/file/533/s/feed/c/mp3/029-en.mp3",node_type:"clip",pub_key:"03abd9980b0c94ddbce7bde91affd5894ca40aaeda0ee0a33503e0c9bb55307274",ref_id:"f6e48088-be00-4596-8731-433c94a02ddb",show_title:"The Anita Posch Show: A Bitcoin only podcast",text:"When I think about buying a Bitcoin node or Lightning node, I'm mostly interested in verifying my own Bitcoin transactions because I don't want the hassle to install a full note on my laptop and stuff. Do your products verify Bitcoin transactions? I mean, can I verify my own? I think I can speak for everyone here. That's the main goal of having the hardware for loans. Okay, I just heard that not all devices do that. So that's why I'm asking. I don't know, maybe this is a misinformation. Yeah. So those boxes, I think everybody has started with very small hardware. So I think the castle box also in the beginning. Raspberry Pi three. Raspberry. Also had the raspberry pi three in the past. Now also offering or being able to use the Raspberry Pi four and with the response such a low powered hardware, then you would need maybe to get the whole blockchain, you were not able to verify it yourself, so you had to rely on some kind of downloaded blockchain, whatever. That was not a good approach. But now with the recipe by four and I think even also all the other boxes are using now power full enough hardware to really verify the whole complete blockchain yourself and have the whole copy of the blockchain then at your service. And then you can do everything with your node and verify everything on your side without relying on any third ",timestamp:"00:07:06-00:08:37",topics:["Bitcoin","BTC Node"],type:"podcast",weight:5.1300153732299805},{boost:0,date:1266645600,description:"Big business Vs Small Business in the Free Market",episode_title:"13. Monopoly and Competition",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ef62c7ab-ef09-47b7-9af4-2ebe2384a72f.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/13_AustrianEcon_Rothbard_1972.mp3",node_type:"clip",pub_key:"",ref_id:"cd0d29e6-af1f-4a94-8fc9-cc38a719807b",show_title:"Austrian Economics: An Introductory Course",text:"thing about big business versus small business. It's not always true that big business can out compete small business on the free market. When Standard Oil, for example, had achieved something like 90% of the oil refinery business by 1900, they began to slip. After that, before the anti trust action against Santa world. They began to slip because they weren't the company gets too big on the market, they began to get sluggish bureaucratic. They don't look for new things, new inventions and new processes. Santa role was the last major company to get into the involved. Santa Claus always been based on Cleveland western Pennsylvania oil fields. And so they're the last major company that began interest in Texas and Oklahoma oil fields. This is the wave of the future. And so then Golf comes in as a new company in Texas and they begin to outdo being to take an increasing share of the business away from San Oil company. And the same thing happened all across the board. US steel, for example, gets formed with something like an attempt to monopolize. The whole steel industry gets form as 80% of the share of the market or something like that. It's now something like 20% slipping all the time. Every year USD sinks deeper and deeper into slots. They were too big, they were outcompeted. USD was the last corporation in the world, practically. They adopted the basic oxygen process, which is the latest improvement in the method of producing steel. And this is through many areas across the board. One of my favorite examples of this is the heroic small business which is always able to outcompete big business or larger business is therefore always put out of business by government. These are the heroic small pushcard peddlers. If you remember back to the push car pedaling masses. The push car peddlers, they have almost no capital. You can't get much smaller than a push card cover. The capital has push cart and as they supply apples or whatever, and that's it. Sometime before the push cart, the push car pedal was sort of the aristocrat of a pedaling business. Before you got to be wealthy enough to be a push car pedal, you just had a box or a case or the lease or something, that was it. Anyway, the push car peddler doesn't have any capital. It doesn't have nearly as much capital as retail stores or department stores, et cetera. And yeah, he has a great advantage. He's mobile when it's raining out, he packs up shop, he doesn't have to pay rent, he zips around, he can get to the best corner, he can get to the rush hour corner, 42nd street or whatever. And therefore he's usually able to do very well in competition to such an extent that in city after city, in town after town, the United States, the retail interests, the retail stores were able to put political pressure on the government to outlaw the pushback, either by charging a license to them, which is prohibitive, or by just putting out of business altogether. Usually on the grounds, of course, the government can't say, municipal government can't say we're doing this because we want to privilege the retail stores. That would be a little too hairy. So they say it is unaesthetic. New York is so beautiful, for example, and the streets are so beautiful, we can't allow the ice to push guard pepper. So you can imagine how much ice that cuts. And the retail business, by the way, the whole history of the retail business in the United States is a whole history, a whole record of humbling, the competition of new people coming up and delaying a competitive process by the use of government. First, it was a traveling salesman. As you all might know, traveling salesman jokes were sort of the big dirty joke thing years ago. And the reason is the traveling sales were illegal most of the time, 50 to about 18 months. The institution of traveling sales when it first comes in about 1850. Before that, there are only six stores, and you buy from somebody in New York, in Detroit. Traveling sales is a great new invention in the retailing industry. And for about 25 years, I put out a business because the existing stores are competing in the traveling sales. And then, like the fact traveling sales, when mobile flexibility zip around, they sell on a personal basis and all that. And so town after town, all over the United States, past ordinances either outlawing traveling sales altogether, ultimately placing very high license taxes in order to get into beach for Wyoming, have to pay $100 a year or something. So if the traveling sales going to pay all the license fees, you would have to pay $20,000 a year or something out of business. As a result of traveling sales was always in a state of illegality. He was constantly on the lamb from the cops, one panel to the other. Therefore had a sort of disreputable. The whole profession was disreputable. Something like bookies today, I guess. And so he had a family salesman joke because of the disreputable profession. Finally, after 25, 30 years of being a state of outlaw, they finally did so well, they finally pushed their way through, and they finally allowed to exist. It became accepted in the retail industry, and most firms then began to operate employee traveling. So they sort of joined them if they couldn't lick them no sooner. That happened in late 19th century. Things are doing pretty well, and all of a sudden, that vicious new monopolistic thing comes in horizon terrible thing, the apartment store. An apartment store first comes in. I said, oh, my god, it's awful. Awful thing. Instead of having one store sell, one product has this terrible monopoly store like Macy's that's selling everything. That's obviously an evil monopoly. You have to smash it. And so the government starts putting on department store, special department store taxes and special restrictions. And that took about 20 years before the department stores worked themselves out of that. Finally, the department store is just about accepted, and the hobbling of the apartment store is eliminated. We got a new terrible thing. The chain store. Amp the first big chain store. And I still remember I'm moving up to remember the days and amp an evil monopoly and you have to smash it and break it up because the mom and pop stores are going to be put out of business. And that's where they had spaceway. And all these others coming out competed amp and nobody talks anymore about breaking up amp. Amp is pretty cruddy shape in comparison with the newer and more efficient stores. ",timestamp:"01:13:30-01:19:27",topics:["Big business","Small Business","Free Market"],type:"podcast",weight:5.126088380813599},{boost:0,date:1471930200,description:"Survival rate of small business and startups ",episode_title:"TheMacroView Episode #3: Financial Entanglement",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/8e52e9c4-52e8-4dea-8ed9-8c6a7fcef25a.jpg",keyword:!0,link:"https://www.blogtalkradio.com/themacroview/2016/08/23/themacroview-episode-3-financial-entanglement.mp3",node_type:"clip",pub_key:"",ref_id:"bdc4757d-1e87-4fa3-b293-6f375af8490f",show_title:"The Macro View",text:"scatter plot chart and it kind of shows from the first year through the 10th year, we have a little bit more data than that, but this was a more complete data set and more recent as well. This is slide number 13 on episode four slideshow. And basically what this shows is that look, after year two, about 79% of businesses are still alive. Tier three, about 67%. This notion, which we hear, it's a cliche that we hear a lot throughout our lifetimes, that within three years, 90% businesses or nine out of every ten businesses go bankrupt, it's actually not true. About one out of every three goes bankrupt. Two out of every three are still alive after three years. Now, after four years, it goes down slightly under 60%, just 60%. After five years, just under 55%, about 53%. After six years, about 48%. After seven, about 44. After eight, about 41. After nine, about 38%. And by year ten, about 36% of the businesses are still alive. Essentially, after three years, you got one out of every three that's gone bankrupt. After ten years, you got two out of every three that's gone bankrupt. So is it that risky? What we're not showing here in this slide, and I may add a slide trying to show this, is what the upside is not every business is a grand slam, not every business is a grand slam. And you could still lose money as an investor through dilution and have a restructuring and whatnot, but the business still be alive. That is the case. I'm not going to deny that is the case. But if businesses are generally surviving far longer than what we expect, should there be this much fear built around this idea of businesses going out of business really quickly and not being able to lend to businesses? If you're a private individual who's not necessarily in a credit investor, not really even having a market for it, not really having exchanges for it, making it highly restrictive on banks and offering incentives to banks to only lend in certain ways to these small businesses, ie. SBA loans that are guaranteed 75% are guaranteed by Small Business Administration of the government, and in some cases, higher than 75% are guaranteed. So why would a bank lend to any other small business other than through an SBA loan? So you've got misalignment of incentives, you've got a number of other issues on the banking side, and then on the private individual side, you have literal laws that make it more difficult. The lower the amount of capital available to people the lower the amount of capital available to people that are trying to start a business and restrict mechanisms for delivering capital from an individual with capital to provide any business that needs capital to put to work, and then being able to come to a transaction that makes sense, a value that makes sense to both of them. And to do this on a mass scale with thousands of people. As opposed to trying to find one or two or three wealthy individuals and have it set up in the right way with technology. You can do it really. Really quickly and really. Really easily. And you can be fully accountable and you can have the bookkeeping and records keeping. You could do based annual reports that provide enough information to shareholders and most good business owners are going to do that anyways. But the idea that we don't have this mechanism in place and that it's actually illegal to raise money from somebody who's not an accredited investor from the general public if you're not a publicly traded company. And I-E-A large company because a lot of the exchanges have rules where you have to be over a certain size in order to list on those exchanges. Now, there's the over the counter exchanges that don't, but a lot of those are looked at very poorly by mainstream America, and there are no mechanisms offered by the big retail brokers for equity or debt crowdfunding for small businesses to be able to access those markets. And quite frankly, I don't blame them for it yet because the rules are not really clear on where that's going to go. The jobs that tried to clear that up, and now you get the SEC trying to really write the rules, and it's not really much is changing. They can do well. If you're worth 50 million, want to raise capital from the general public and not go public, then you can kind of do that. But you got to be big already. 50 million is not a huge business, but that's not the size I'm talking about, okay? The size I'm talking about are startups to three or $4 million, maybe $5 million in revenue, or if it's a very low margin business, maybe two or 3 million to $5 million in profits. That's the size business that I'm talking about that has difficulty gaining access to capital. And we need to figure out a way to match people who have capital to lend or invest with businesses that are of that size. That have capital. That have a need for capital to be able to put it to work and put it to work quickly. That will hire people that have good business models. That they could scale them. Will become profitable. And all they need is access to capital to get there. That's what the next show is going to be about. I hope you guys enjoyed this little pop up show that I did tonight, talking about the cost of the regulatory environment. Remember, it's about 11% of GDP. That's the hidden cost. That's the hidden cost that affects people's wages, that affects the amount of money that you pay at stores for goods. That affects every aspect of your life. It affects the cost of the house you buy or the home that you rent. Whatever the case is, whatever you're thinking about, why is this so difficult? This is a big reason why these regulatory costs $1.8 trillion in regulatory costs, the hidden regulatory costs, which are more than the federal tax base, excluding capital gains and some excess taxes and things like that. But if you're just to account for corporate and individual income taxes, the regulatory costs are bigger than that income tax base. That's insane. Those are hidden costs that we're all feeling right now. We're wondering why. And some people are saying it's Mexican immigration. Some people are saying it's free trade agreement. Some people are saying other outlandish things that have no basis in reality or tried and true economic theory. We do need to simplify the tax code even if we leave rates the same, we got to simplify it. We got to flatten it. We got to flatten it for people. We got to make it a lot easier for them to comply. It's got to be able to be filled out in a matter of a day. And same thing for small businesses and really for all businesses so that they can keep more of that money and they're not having to pay auditors and accountants to prepare it. And we've got to go to a system where we adopt somewhat of a no harm, no foul rule for business owners where so long as we got to get rid of all this idea, we got to regulate best practices. Best practices regulate themselves. If you're not providing best practices as a business owner, you will have a competitor who will and will steal your market share, will steal your employees and we'll put you out of business. That's what happens. That's how competition works. That's how the market works. So we've got to get rid of rules and regulations that serve no purpose other than to say hey, we know better than you and if you don't do it our way, we're going to impose fines on you. All those do is set up barriers to entry and really do disincentivize the wealthy people who would invest under the current system from investing and would disincentivize the nonwealthy people who they're just not able to invest in these companies from investing if they understood those situations as well. Because it's very risky if your business could be put out of business by the government because you lost a sheet of paper or because you happen to run a factory and you have to have a stop button for the assembly line. But the assembly line is set up in a way to where it doesn't really work that way in your factory, which is a real case. I can't remember the name of it, but I'll post on the website when we eventually get the website up and going. But this was an actual case where essentially OSHA came in and said you have to have this and that. If they had actually understood the business circumstantially, not just broadly, these are the rules, these are the regulations, you have to do this. They don't understand why they really didn't need that. And there's a lot of those cases all throughout every single industry. No matter what industry you're talking about, you have tons of regulatory costs that are related to things that don't matter at all, that barely ever happen. And if they do happen, they're more of a tragedy that wouldn't be prevented by that regulation. And the reason that regulation exists is primarily because some expert who either worked for or used to work for a big major corporation, walked into a congressional hearing and publicly gave guidance to the regulatory bureaucracy that was writing the rules that Congress delegated the right to write and this expert is guiding them. This expert basically works for one of the big companies in that industry. That's how these things work. They don't come to small five person shop say hey, how do we do this? No, they go to a quote unquote expert from a major corporation and that quote unquote expert from a major corporation has their own interests and they're going to guide what they want to guide. At the end of the day. You end up with massive regulatory costs that don't really solve the problems that people cried out for regulation to solve because those problems are best solved by competition and regulatory bureaucracies prevent competition and by preventing competition they prevent the end goal that they've stated to try to achieve. Which is to create more equality in these markets and more fairness in these markets and a better distributive share of whatever and to have less negative incentives in the market for people to go out and commit crimes. Financial crimes. And to rip people off to make it harder for people to do that. Well the way you make it harder for people to do that is you have tons of competition. That's the way that you do that. And by having all this regulatory cost you reduce the competition and therefore reduce the amount of natural regulation that occurs from it. Well everybody, I hope you enjoyed tonight's pop up episode. I'm going to call tonight for there again this ",timestamp:"00:44:04-00:55:36",topics:["Small business","entrepreneurship","startup","regulatory cost","income tax"],type:"podcast",weight:5.105514287948608},{boost:0,date:1596686400,description:"[[Bitcoin Energy Consumption]]",episode_title:"Chat 45 - Bitcoin an Energy Revolution A panel at the VOB Conf",guests:[{name:"Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"da6fc991-7080-461c-86e3-4ac18c2f413d",twitter_handle:"tonevays"},{name:"Phillip Sandner",profile_picture:"https://pbs.twimg.com/profile_images/1043824764161335296/2SW3duCV_400x400.jpg",ref_id:"e1996e82-0354-421c-85d5-f18eebec9506",twitter_handle:"philippsandner"},{name:"Jesse Peltan",profile_picture:"https://pbs.twimg.com/profile_images/1123954968636088326/EAjHUGDE_400x400.png",ref_id:"96309505-caeb-47bb-a1ba-712b97292675",twitter_handle:"JessePeltan"},{name:"Christopher Bendikson",profile_picture:"",ref_id:"d72ead54-7bff-4874-870f-123e665fddfd",twitter_handle:""},{name:"Christian Stoll",profile_picture:"https://pbs.twimg.com/profile_images/3296579573/69ebedb479a9bdb9d536fe887e2d3113_400x400.jpeg",ref_id:"ff74d59c-f846-4b16-a5e5-771fb8139f18",twitter_handle:"Granddragon14"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN6935967461.mp3?updated=1627959014",node_type:"clip",pub_key:"",ref_id:"8ab125e2-e555-4adc-817a-bbf5bb93bf40",show_title:"Bitcoin Audible",text:"really a fair comparison to say, like bitcoin uses x amount of energy, like electricity versus x whatever small country, when you're only looking at the direct energy consumption in that country and not looking at the fact that they're getting all the resources from other countries that are consuming that elsewhere. Not only that, but you can flip that entire narrative on its head and say when bitcoin uses more electricity than Chile, that means that even if Chile flipped their entire electricity infrastructure to try to mess with the bitcoin blockchain, they couldn't. Energy consumption is a good thing, it's just a matter of how it's consumed and how we produce that. Let me add one more thing. Everybody knows the market cap off gold, right? That's around 9 trillion. And that's 50 times more than bitcoin. And we know it from bitcoin. That like by theory, if the bitcoin price is, say, 9000, by theory the production cost of bondoid bitcoin should also be 9000. It's not the case, I know, but by theory it should be the case. So now take gold. Honestly, nobody discusses gold. If gold, if the market is having a market cap of 9 trillion and times 50 times more than bitcoin, then in case gold is produced, then what? If by theory the production price of gold that's the market cap of today, 50 times more resources are being spent second by second, day by day to somehow get gold out of the ground. But this is not electricity, that's equipment and machinery and that's kind of, I don't know, all kinds of things which are working in some kind of gold mine. But isn't this also wasted resources to some degree? Nobody discusses this and it's 50 times higher at this point. I remember a paper from cruises to my loan that are exactly comparing metal mining with crypto mining. Oh, interesting. Okay, so it wasn't nature sustainability in 2018. It's just so much more dangerous to the environment like the cyanide that is used to extract the gold. And then if you just go through all of the environmental damage that gold mining does, bitcoin is like a space compared to what goes on in order to get sold out of the ground. And it was funny when gaming was brought up, I was speaking a conference, I think it was decentralized in Athens Green back in November. And there were a lot of people there that into cookie and other nonsense. And I got into this big argument with someone that kept saying how bitcoin is so bad for the environment and mining can continue to happen and how proof of stake of currency is the future. And he was a lot younger than me. And I asked him, do you play video games? I haven't played video games since I was about 21, 22. And I asked him do you play video games? And he said yes. And I said, well, how much electricity are you wasting by playing video games? Where is the productivity in that? So if you take all the gaming in the world, everyone that ever plays video games, you combine all that, how much electricity that is using and please make an argument that is more productive use of electricity than bitcoin that is trying to give everyone politically neutral, government free money. This is why this entire line of discussion is kind of like a bit of a red herring. Because the problem is that we don't have a good way to price externality and if we did, then the price mechanism would take care of the rep. I think it's partially done and I agree. I think a lot of it is a red herring and kind of missing the major point, which is the real environmental ",timestamp:"00:25:05-00:29:09",topics:["bitcoin energy consumption"],type:"podcast",weight:5.094594955444336},{boost:0,date:1665118800,description:"The Macro tyranny ",episode_title:"Breaking Away: On Secession and Small States",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/6ec51741-3d93-4116-a619-d62a7cee1feb.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/102-radiorothbard-20221007.mp3",node_type:"clip",pub_key:"",ref_id:"8d9636c6-d564-47e0-89b6-5b9f87b27a34",show_title:"Radio Rothbard",text:"damage to the same extent that macro tyranny maximizes it. If Hitler had ruled only Berlin and Stalin only Moscow, the history of the world may have been considerably less bloody. Large states are playgrounds for despots and dictators, while small states provide far fewer opportunities for ambitious politicians to spread their mayhem beyond their local communities. But we don't have to take lose word for it. The highly influential political scientist Hannah Arrest has discussed how only larger states can hope to be truly totalitarian. Even she notes that a number of states in Europe in the 1930s had pushed totalitarian ideas and as their ideal, but outside the Soviet Union, none managed to actually achieve the goal. And here's a long quote, but it helps us, so we'll quote it at length although totalitarian ideology had served well enough to organize the masses until the movement seized power, the absolute size of the country then forced the wouldbe totalitarian rulers of masses into the more familiar patterns of class or party dictatorship. The truth is that these countries simply did not control enough human material to allow for total domination and its inherent great losses in population. Without much hope for the conquest of more heavily populated territories, the tyrants in these small countries were forced into a certain old fashioned moderation, lest they lose whatever people they had to rule. This is also why Nazism, up to the outbreak of the war and its expansion over Europe, lags so far behind its Russian counterparts in consistency and ruthlessness. Even the German people were not numerous enough to allow for the full development of this newest form of government that is totalitarianism. Only if Germany had won the war would she have known a fully developed totalitarian rulership. So rents a Holocaust survivor, hardly a defender of the Nazis, but even she concluded that yeah, they wanted to be totalitarians, but not even Germany was big enough to bring that about. So they're smaller is better in this case, especially when it comes to the worst case scenarios as well. But what about that middle ground, right? We're not necessarily just always talking about avoiding full blown totalitarianism, but we do find some of these previous examples. You want more free trade, you want more freedom, you want the ability to escape despotism smaller states are generally your answer. Now, as a final issue though, we have to cover, as the book does, the issue of international relations and war, because we see these advantages all for the domestic population, right? But anytime you bring up this topic, you're going to hear that breaking up states into smaller pieces, this is bad, because if we reduce the power of the US government or any other western states, then China will step in and conquer the entire planet the next day. So this is a difficult topic and so I try to provide as much of a treatment as I can in the book. Certainly it's not exhaustive and we do need more people really exploring these issues. And with all international relations it requires a certain amount of speculation. But some good research has been done looking at the issue of how do small states fare against these larger states. And so there are a few things we can note when talking about this. For example, the assumption that large states will always dominate in international relations is based on mistaken notion that larger states in terms of GDP access and access to military resources currently are necessarily the more powerful states. More accurately, however, it is wealthier states and blocks of states, not necessarily the larger states, that tend to have an advantage in terms of military deterrence and innovative research by China expert Michael Beckley, for example, he notes that the biggest variable here is actually GDP per capita, not overall GDP. And this helps explain why we can find many cases of smaller states successfully deterring and defeating larger ones. During the 19th and early 20th centuries, for example, both Japan and the United Kingdom repeatedly defeated and humiliated the much larger China. At the time, a reliance on GDP and military manufacturing statistics would also suggested the Soviet Union three times the geographic size of the US. And with an immense weapons industry, should have outlasted the United States. The GDP measure also suggests that Israel is the weakest military power in the Middle East. Clearly, none of these things were true are true. These really case is instructive because it shows us that small states, rather than having to become big themselves, can simply freeride off larger states as the State of Israel has managed to long exploit American wealth and taxpayer revenues without actually giving up its own independence. Moreover, the possibility of nuclear deterrence diminishes the need for immense and expensive conventional forces, as again demonstrated by the State of Israel. Deterrent defense capability can thus be obtained even by Switzerland sized states. And then of course, there's no reason why a group of small wealthy states cannot very effectively form an alliance of their own among themselves without having internal control mechanisms, as has been done throughout history. You don't necessarily have to have small states form a state of their own in order to carry out effective defense measures. So for example, for the United States to break up into smaller pieces and there's no reason to assume the new, smaller, successful states would be at the mercy of larger ones, there is every reason to assume the new smaller American states would be just as unified on foreign policy as they are now, which is to say, virtually in lockstep. Unfortunately, no matter what might be said about small states and international relations, many will cling to the idea that because of alleged foreign threats, virtually nothing, nothing could justify secession ever. There is, of course, nothing new about this attitude. For centuries states have justified their bigness and their taxes on the claims that you need us to defend us against foreigners. And of course in the United States we've seen this in many cases where you're just supposed to accept whatever the government wants to do in the name of national defense. And this was, I mean, the conservative movement standard bearer back in the 50s. William Buckley said this in the early 50s we have to accept big government for the duration, for neither an offensive nor a defensive war can be waged given our current government skills, except through the instrument of a totalitarian bureaucracy within our shores. We must accept large armies and air force's, atomic energy, central intelligence, war production boards and the attendance centralization of power in Washington. So yes, freedom is all right, but I mean, come on, you're just going to have to have the CIA and you're just going to have to surrender those freedoms until we defeat all the bad guys in the whole world. If that takes 300 years, thens the breaks. So the real world experience suggests that fortune actually favors the decentralized in terms of wealth, freedom, economic development and more. And is for these reasons that Rothbard supported what he called universal rights. Locally enforced as an adherent of national rights, Rothbard believed rights are certainly universal, yet he also understood that their enforcement ",timestamp:"00:23:17-00:30:41",topics:["Macro Tyranny"],type:"podcast",weight:5.224080560699853},{boost:0,date:1656979200,description:"How Lightning can improve the feedback process on music platforms",episode_title:"Lightning Networks Impact on Music w/ Michael Rhee, Founder of Wavlake - Voltage Twitter Spaces",guests:[{name:"Michael Rhee",profile_picture:"https://pbs.twimg.com/profile_images/1348612450/IMG_0298_400x400.JPG",ref_id:"91302fb9-2d08-400e-bd1f-2d52e0af5508",twitter_handle:"rheedio"},{name:"@rheedio",profile_picture:"https://pbs.twimg.com/profile_images/1348612450/IMG_0298_400x400.JPG",ref_id:"a20f5e1f-5969-47a6-b986-faf29c0c4da0",twitter_handle:"rheedio"}],hosts:[{name:"@voltage_cloud",profile_picture:"https://pbs.twimg.com/profile_images/1508657900486422529/Lfa70poj_400x400.png",ref_id:"3b622187-60ce-43c2-a21f-ae749c2d961a",twitter_handle:"voltage_cloud"},{name:"Bobby Shell",profile_picture:"https://pbs.twimg.com/profile_images/1090426395979890690/uUdaFXo__400x400.jpg",ref_id:"438f8067-3fed-49d2-91d9-5018cb043aac",twitter_handle:"BobbyShell2"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2ec62250-4755-4616-8342-096a2cfab95f.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=aZt44KjXHh0",node_type:"clip",pub_key:"",ref_id:"3db5f375-817e-4275-980c-6475803c430b",show_title:"Voltage",text:"this, we chatted a little bit about two things I had brought up to you about how independent artists, whenever I launched my first song on Spotify, I had to go through CD Baby or one of these groups that helped push your music to these platforms. And the thing that was discouraging was it said, hey, when you hit $25, you can claim your first cash out. And I was just like, that's going to take forever with how many plays you need to get. So that got me excited. And you actually brought up an even more important point, was this feedback loop that it creates for young artists because you can be motivated and see these amounts and stats come in that are much lower denominated. And that's actually a pretty impactful thing for a young entrepreneur. Let's dig into that a little bit and just what that can actually do for creatives. Yeah. So, Bobby, just using yourself as an example, you publish your music, it went up on Spotify and maybe a dozen other streaming platforms. How long did it take for you to figure out how many listens or streams or dollars you earned from those platforms? Like from the time of track was played to the time you got some sort of feedback about that? Do you know what the lag was like? So it was actually pretty challenging to hear and kind of find out because there was obviously on Spotify you can see the plays you have, but like in some of these other platforms, it was actually pretty hard to see that data, like being a new artist. Yeah. Because it's all opaque. And I think this is one of the interesting things or interesting aspects and features of the value for value model that podcast and 20 is built on. And then also experiments like Wavelake where you have users who are tipping SATS to artists for their tracks. And I think one of the, I guess, challenges as a new artist, when you're deploying your music and distributing it via some music distributor and blanketing all these different streaming platforms with your music, you're essentially throwing your music into a black box. It's virtually a black box, and you might get some sense of the kind of traction you're getting on the platforms over the course of a few months. So there could be a lag time of two to three months where the streaming platform has gathered some sort of statistics on how many plays you've gotten, and then that translates into some kind of a royalty payment that is obviously calculated from some kind of internal algorithm, and then it's spit back to the artist in the form of some number. Let's say it's $30 for a bunch of plays that happened three months ago. So there's a pretty long lag time between when someone was engaging with your music versus when you find out about it and see some kind of a reward for that work that you put in. And what's been really cool to see is with some of the artists on Wave Lake, they're receiving these like, small tips. It's nothing to write home about, but at the same time, as you said, if you're a newer artist and you're just working on honing your craft and finding your voice, those small monetary donations, those little tips operate as a really strong encouragement mechanism. And it's also an instantaneous feedback loop. So you could post a song on Wavelake, for example, and that day, like that hour, someone could hear it, love it, tip you, and you'll see that show up in your wallet, you'll see that 21 stats or whatever the user wants to tip you, you'll see it show up in your wallet near almost immediately. And so I think that can act as a really strong feedback mechanism for someone who especially if I speak about myself a little bit like making music. As a teenager in my bedroom, I was just recording kind of lame demos on a fortrack just over and over. And then years later, MySpace came along and you put those up and see how many plays you get. And I think we're at a point now where we have this really novel monetary network that's open and it's completely borderless and anyone can use it. And then on the other hand, you have the ability to pay and support artists that you love. And as a creator, you can not only benefit from that monetarily, but that can be a lot of encouragement that a particular song or some sort of direction you're going in artistically is resonating with someone out there in the world or a group of people in the world. And that kind of motivation means a lot, I think, when you're just starting out and you're finding your voice. And you could have other ways of using this kind of feedback loop as well. For example, if you have a demo or a couple of lines of a verse or a melody, and you want to share that with a group of fans or potential listeners, and you can say, like, hey, if you like this, what do you think of this? And then people start tipping because they want to see more of that, or they want you to flesh that out into a complete song. I mean, the possibilities kind of again, they go as far as we can imagine at this point. And I think that is a much different model. It's a very different model from what exists today in these very sort of monolithic corporate streaming platforms, where you're essentially like, you're forced to throw your work into this giant pool, and you're out there competing with heavily marketed acts and figuring out how you can show up in the midst of all that is pretty difficult. And even when you do get some engagement, you won't find out about it for months. And so I think there's a lot of potential not only to create a better royalty mechanic for artists, but it's also a way to encourage art. Yeah, absolutely. So the feedback loop portion, one thing about that that I love is, like we discussed before, is imagine you're a young artist and you put music online and you just see like, five SATS come in, ten stats. Of course, you could obviously see a million SATS come in, but that's fairly uncommon. But to have these kind of small affirmations towards the art you're doing or the content you're creating, or just these positive reinforcements, one of the biggest things I know for anyone pursuing anything psychologically in the world, like when we talk about just the psychology of it, is it's hard to get affirmation. We're a digital world. There's a lot of working from home. And one thing I love about lightning is there's this positive and encouraging reinforcement where we can reward each other in minimal ways, but whenever you see that come through, it kind of helps you push through. And I have a friend who struggles with being creative due to not having kind of the reinforcement he needs. And he's one of the most talented people I know. And I just really wish that was there. And I could see that being really transformative. We've heard safety and talk about fiat art and things that are not fiat art, et cetera, and to see true talent be rewarded and have this really kind of grassroots incentive mechanism I think is really important. And it does kind of segue into what I was talking to you about before. As far as content creators just being on the web, people have the opportunity to do anything they want and even leverage music in different ways. And there's obviously a lot of opportunity for people who are musicians to create reach. But there's even ways that people who create content, they could even leverage these creative, independent songs in really unique ways to, you know, further their art. So it's ",timestamp:"00:05:55-00:15:37",topics:["Lightning Network"],type:"youtube",weight:5.061400574481365},{boost:0,date:1624507200,description:"Intro",episode_title:"Bitcoin Fixes This 48 Small Business with Ali",guests:[{name:"Ali",profile_picture:"",ref_id:"1169edf2-a89f-4d89-94a4-1be1a7b9aef0",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2536a974-d668-4ac2-8613-0b37aa0ca08c.jpg",keyword:!0,link:"https://anchor.fm/s/2a4e8034/podcast/play/36003846/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-5-23%2F969a4306-e9eb-95c5-0e15-42d37c0e61e8.mp3",node_type:"clip",pub_key:"",ref_id:"01dc5a33-88e1-49ef-abb3-c5744cf8a046",show_title:"Bitcoin Fixes This",text:"Welcome to Bitcoin Fixes this, where we explore the impact that Bitcoin will have in all aspects of society. Today's guest is Ali, owner of Tahini's Restaurants and Bitcoin Enthusiast. He is a small business owner who's been through a lot of different ups and downs in the business. In this episode, he talks about what it takes to make it in the world of small business, why he decided to put the Treasuries of his company into Bitcoin, and why Fiat money is so destructive. To say Ali is a Bitcoin enthusiast would be an understatement. He's been cheerleading Bitcoin and explaining how Bitcoin is great for small businesses since his discovery of it more than a year ago. I loved learning about the hustle, the unfair advantages of the large government subsidized companies, and why companies like his have a fighting chance with Bitcoin. This is the future of businesses built using Bitcoin savings technology. I hope you learned something. Ali Tahini, how's everything going, man? Good. Jimmy. How are you? It's an honor to finally be at your show. I'm a big fan. I've been looking for a while now. Oh, well, that's awesome. Yeah. It's always interesting to get, like, different perspectives and stuff. And you certainly have an interesting perspective because they're running a small business for a while. And obviously you have decided to put some ",timestamp:"00:00:00-00:01:25",topics:[],type:"podcast",weight:5.0513938665398985},{boost:0,date:1658322407,description:"Many causes of diarrhea such as fat malabsorption and bile acid malabsorption (1/3 of IBS diarrhea cases)",episode_title:"Dr. Norm Robillard - SIBO, Digestion, and Gut Health on Carnivore/Keto",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/5e0220b3-7c70-4423-bb76-3b75bc132fad.jpg",keyword:!0,link:"https://traffic.libsyn.com/secure/carnivorecast/Carnivore_Cast_207_Dr_Norm_Robillard.mp3?dest-id=775699",node_type:"clip",pub_key:"",ref_id:"167a7be2-f14b-455a-9c20-95057af5ea7d",show_title:"Carnivore Cast",text:"was interesting on a carnivore diet, it kind of flipped that around. And then also when I work with people that have diarrhea or constipation, we look at it mechanistically. So with diarrhea, it can be fat malabsorption, it can be bile acid malabsorption. Right. Most of 95% or more of the bile that improves that helps solubilize the fat so the lightbased can digest them. It's reabsorbed in the terminal small intestine before it hits the lodge ball, goes back to the liver, saves a lot of energy because cholesterol is an expensive molecule and that's kind of what bile is made up. So if more than just a couple of percent of the bio is malabsorbed, it leads to diarrhea. And it's believed that about a third of the IBS diarrhea cases of BIOACID malabsorption. ",timestamp:"00:21:47-00:22:41",topics:["bile acid reabsorption","diarrhea","small intestine","liver","cholesterol","fat malabsorption","bile"],type:"podcast",weight:5.039563265710219},{boost:0,date:1672772445,description:"Bitcoin miners and retail customers",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Foss, Max Keiser & the Plebs! 🍻😂",guests:[{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"Max Keiser",profile_picture:"https://pbs.twimg.com/profile_images/1361873587582472195/y57DiTYX_400x400.jpg",ref_id:"743efd07-d194-4c74-8663-45c3b8646b8e",twitter_handle:"Maxkeiser"},{name:"Isabel Foxen Duke",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"58989d4a-4a96-4ffc-8cbe-f233ffb10420",twitter_handle:"isabelfoxenduke"}],hosts:[{name:"Publord",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5b7b7e22-fe55-4e1c-933d-6544f6600351",twitter_handle:"publordhodl"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7de8e4aa-50a6-4f57-a8ff-6ca16a4f0ae4/76c3395a-4fe5-4802-8d2a-92cca1f1ea0b.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"7eea8bdf-2873-4759-b53b-a207aa8bcdcf",show_title:"PUBLORD",text:"So circling back real quick to the movie Generational Wealth, I think Tomer put it together. I think he had a partner in it. That's a fantastic movie on YouTube. And my take on the question that Jim asked about the utility company using all the power to mine bitcoin and not giving it to retail customers. Retail customers are always going to be willing to pay more than what a miner would pay for electricity. Because the miners are so distributed around the world, it's so competitive, they have to get really cheap electricity or use stranded electricity, right, that they have no customers for. So I think it would always be a situation where retail customers would come first in the pecking order. The utility company would much rather sell to them at a higher price than using that energy for mining. I would say assuming wait a minute, wouldn't you have to account for, let's say, governments preventing utility companies from raising the rate so high to make it profitable, to sell it to the retail customers over the mining? Because if they are the only ones that know their profitability for the use of that electricity in either direction, and they are the ones making the electricity, so they have the purest cost, the cost of getting it out of the ground and processing it, and then it's free to send any direction. But if they control one of the directions and it makes them profits, I feel like there's a potential economic conflict in there that could be created if you have enough other situation, enough other characteristics. Like a type of power company that has a monopoly kind of situation where it's the only company in a region and nobody else can't go anywhere else. Utility companies are regulated by governments already. I'm not a fan of government at any level, but I am a fan of people creating rules and holding other people accountable to them so that you can get along in a society. So I would hope that a utility company is going to do the right thing is the best way I could say it. Making sure that, look, they were built to make money selling to customers and they figured out a way for most people to be satisfied at that level. Now they find a revenue stream that comes into existence that wasn't there when these things were invented, these grids and the idea of giving, producing electricity for people, all of a sudden there's something that changes the game and it literally changes incentives, it feels like. And I just worry that it could. Turn into something they lose money doing that. Only if they can sell the electricity to retail more for more than what they can use it for for bitcoin mining if they had rate. Yes. I don't know that you can make that statement without knowing, without using an example of a potential price for bitcoin, which maybe we're not at it now because the value of bitcoin is too low. But if the value of bitcoin was ten times what it is now, it's way more profitable for everybody to mine bitcoin, even at a very small amount of hash rate. And so there could be a tipping point. Am I thinking correctly on this or not? Yes and no. Okay, thank you. The grid is designed for peak power, okay? It's designed for the 06:00 p.m. When everyone gets home from work, draw on the grid. And the reality is, most of the time the grid is not using or there's more supply than there is demand. So that's when you need the offtakers, which could be bitcoin miners, that will benefit from now from a source of energy that is not set by a regulator. Don't forget, the regulator sets the cost of electricity based on things like peak power demand, as well as global adjustments on their stupid wind farms and solar projects that are heretofore unprofitable. But you got to put the ESG narrative on it. So the reality of in Ontario is because seventeen cents of that is absolute government waste. That is waste that goes to producing wind farms and solar farms that have no economic benefit to the grid whatsoever, but because of their ESG narrative. So the reality is five cent kilowatt hour power, 22 cent kilowatt hour retail prices, that's all set by the regulator at the wrong price because of all their waste in their projects. The beautiful thing about bitcoin is that it takes demand from the grid when the solar panels are producing electricity, but there's no one there to take it. Right? That's the stupid thing about solar panels. The sun doesn't shine at 06:00 p.m. At night, and the wind generally doesn't blow at 06:00 p.m. At night. So these are the demands for bitcoin that will allow the regulated utilities to actually capitalize on the capital expenditures in their wasted products or projects, rather solar and wind. The most efficient power is nuclear, but the reality is building a nuclear power plant requires basically a 20 to 30 year payoff period because it is so capital intensive at the outset. Well, bitcoin mining will shorten the ROI on a nuclear reactor materially because it creates an additional revenue stream that otherwise wasn't there calculated in the cash flows. So lots of good things, jim, you're right. But the reality is the regulator sets the marginal price of power based on peak demand in the system, and that peak demand is so far in excess of what global bitcoin miners can mine at that I don't see a time when a utility would only be bitcoin mining. That just doesn't make sense to me. However, never say never. It's not a zero chance probability. It's just unlikely, in my opinion. ",timestamp:"00:47:21-00:53:52",topics:["mining energy","bitcoin miners"],type:"twitter_space",weight:17.809161091592113},{boost:0,date:1672772445,description:"Michael Saylor and integration of Microstrategy with the Lightning Network",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Foss, Max Keiser & the Plebs! 🍻😂",guests:[{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Craig Shipp",profile_picture:"https://pbs.twimg.com/profile_images/1605961563420114945/MWGqR1Gm_400x400.jpg",ref_id:"8d6ca47a-89a2-4331-bae4-2fae18055a95",twitter_handle:"CraigShipp"},{name:"Oluwasegun Kosemani",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"25ce4b90-6689-4dd9-84b6-240c7bcbe407",twitter_handle:"MrlamilamiKosch"},{name:"Max Keiser",profile_picture:"https://pbs.twimg.com/profile_images/1361873587582472195/y57DiTYX_400x400.jpg",ref_id:"743efd07-d194-4c74-8663-45c3b8646b8e",twitter_handle:"Maxkeiser"},{name:"Isabel Foxen Duke",profile_picture:"https://pbs.twimg.com/profile_images/1466874333410717698/WRQh2-_m_400x400.jpg",ref_id:"58989d4a-4a96-4ffc-8cbe-f233ffb10420",twitter_handle:"isabelfoxenduke"}],hosts:[{name:"Publord",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"5b7b7e22-fe55-4e1c-933d-6544f6600351",twitter_handle:"publordhodl"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/0c42d408-e518-4ecf-b282-d864a8c14002.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7de8e4aa-50a6-4f57-a8ff-6ca16a4f0ae4/76c3395a-4fe5-4802-8d2a-92cca1f1ea0b.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"4f0b1fbc-47f6-49c7-afe1-4978eabe5c4a",show_title:"PUBLORD",text:"Dude, it always helps when you explain things. I appreciate it. I will be paying attention. Keep my eye on it. But I take the simple route. Just accumulate as many SATS as I can and let the rest of the world fall apart around me. Can anyone up on the stage comment on Michael Sailor's comments about what he's going to be doing with Lightning with his team at MicroStrategy? Does anybody have any insight? Can I comment? Craig and I know I talk too much. He needs to buy IBEX mercado. And I told Mr. Sailor that at dinner in La. At the Pacific Bitcoin Conference. Now, Michael is not going to ever take advice from Foss. Well, maybe he will, but at the end of the day and Max Kaiser maybe can chime in on this, I was really excited to hear what Sailors shared those comments with us privately. So now that it's public yeah, he's trying to incorporate the Lightning protocol into his business. He's a very smart guy when it comes to that stuff. So I'm pretty excited. And I say tongue in cheek, he should just go out and buy IBEX Mercado. It's a company that had their origins in El Salvador and Guatemala that I'm pretty tight with. I say that because IBEX Mercado has some of the top Lightning engineers in the world. And Mr. Sailor was saying that it's very tough, and it is true, it's very tough to find Lightning engineers. So I think it's going to be great for what he does, because it's going to just further the development of the Lightning Network. And I actually think I hate to say this, but there would be a role for MicroStrategy stock within the portfolio of the Bitcoin Opportunities Fund. Why is that? Well, because for the first time in a while, it's looking awfully cheap to me compared to outright Bitcoin exposure, too. So Sailor is a very smart guy. In fact, he's too smart by a half sometimes. But I really hope he does continue this, because with him and Jack Dorsey pitching the Lightning Network, these are two brilliant people that have some big following and some big brains. So I'm not sure what Max thinks, but there's my two cent. Thanks. Right. Well, I guess the speculation was which way would MicroStrategy go to expand their bitcoin presence. I guess one idea was they would get more into mining, and then the other one was lightning networks. And Sailor has explained why he's not really interested in getting into the mining side of things. He's given a couple of times. He's explained that he just doesn't like the economics of mining. Plus, I think that he sees lightning as a gateway to massive global adoption, which would have the effect of increasing the bitcoin price, which he has a lot of bitcoin. So anything that's going to help that boost that price up, he's going to be interested in, for sure. So with Lightning, you've got that ability to really reach the billions of people that he likes to talk about that can be part of this unconfiscatable distributed wealth network of property. So I can see it makes sense. IBEX mercado is yeah, it's a company down here. It's an excellent company. He should definitely look at it and at the very minimum, he should take a position. I know we just invested in the company. We took a small position in their latest round for easy capital. And so it's looking good. Hey, that's awesome, Max, because I'm also an investor. I'm not sure if you knew that I was one of the seed investors in iVEX Mercado. So I love Jose. I love his team. A bunch of real smart South American or Central American programmers doing a great thing, doing merchant adoption. So onboarding the city of Miami. So there's obviously, you know, if you're onboarding the city of Miami and that's where Sailor lives, it's sort of cool. And then, to be clear, I hate bitcoin mining as a standalone business as well. The future for bitcoin mining is going to be the energy companies that own their own assets that mine bitcoin to balance the grid. So that is the key for Mr. Sailor. Don't get involved in a bitcoin mining company that does not own its own energy assets in the future. It'll be the Duke energy of the world. It will be the Tepcos, that's the big Japanese utility that's starting to mine bitcoin itself in order to load balance its grid. So there will be a time to own bitcoin miners, but it won't be a bitcoin miner that doesn't own its own energy source. It will be a bitcoin miner that is perhaps part utility and part bitcoin miner. That's balancing of grid for the benefit of all its contributors, which include users. It includes the different sources of electricity, whether it would be natural gas, wind, solar, nuclear, you know, all the mixing pot. And balancing the grid is a very difficult thing. So when you have a bitcoin miner that can power up and down with the flick of a switch, that's the type of bitcoin mining that makes sense, not the type that. Buys its electricity from ERCOT and then becomes hostage to the PPA, the Power Producer Agreement with ERCOT. They can be interrupted at any time. So the world is changing. Sailor is a smart dude. I think there's going to be a lot of really cool opportunities in the Bitcoin mining square, and that'll be with companies again, that are not your run of the mill Bitcoin miners, but have names like Exxon and Duke. Energy and TEPCO and all of these big utilities that are going to learn that bitcoin actually is a super useful tool to help them increase revenues and also balance their grid or balance their load base. So, yeah, some really cool stuff happening. Sailor is a genius. I'm not. So let's just see where life goes. ",timestamp:"00:27:47-00:34:12",topics:["Michael Saylor","Microstrategy","","Lightning Network","bitcoin miners"],type:"twitter_space",weight:17.809161086484142},{boost:0,date:1673549347,description:"Some common ways people lose bitcoin",episode_title:"BR019 - Proof of Keys Day Twitter Space ft. Lopp, Craig Raw, Lazy Ninja, mshodl, Rijndael & guests",guests:[],hosts:[{name:" Jameson Lopp",profile_picture:"https://pbs.twimg.com/profile_images/1594137153625276416/t1RUP3yP_400x400.jpg",ref_id:"062ec6c8-0fa2-4bf6-9aa1-7ab347df2530",twitter_handle:"lopp"},{name:" Craig Raw",profile_picture:"https://pbs.twimg.com/profile_images/1362841242665631745/UtA3FBQU_400x400.jpg",ref_id:"f2d1f5f0-2e1c-4d16-937d-4d48627cb955",twitter_handle:"craigraw"},{name:" Lazy Ninja and Rijndael",profile_picture:"https://pbs.twimg.com/profile_images/1362843002318721028/PNKWuu0-_400x400.jpg",ref_id:"23edbd50-9b0b-4e9a-aa56-57c2af074173",twitter_handle:"FreedomIsntSafe"},{name:"Justine Harper",profile_picture:"https://pbs.twimg.com/profile_images/1559710083734540289/HXTH4kqO_400x400.jpg",ref_id:"7b5a8957-1c4b-474f-bc38-291b382a13e6",twitter_handle:"mshodl"},{name:" Dee",profile_picture:"https://pbs.twimg.com/profile_images/1600155411868434433/9k1KQ8i5_400x400.jpg",ref_id:"ad33288b-28d4-4f15-9492-f64bce891613",twitter_handle:"HodlDee"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f1879df9-9bc6-4a76-951f-24548da768ef.jpg",keyword:!0,link:"https://anchor.fm/s/9500fad8/podcast/play/63399670/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-0-12%252F0a789f60-2c9a-6bbb-945a-79f3dd937cee.mp3",node_type:"clip",pub_key:"032d7609ff3f4a5232e4d60967971e23bc671dfb68020845a59bab5dc1f3b93b87",ref_id:"1958362b-b149-4466-b873-4d22a36d67d8",show_title:"Bitcoin.Review Podcast with NVK & Guests",text:"In terms of people losing their funds. Why don't we kick off with maybe talking about what are the most common ways people lose bitcoin? I'll start with one example, and maybe we go around the panel sort of like going through it. But one of the most common examples I see is people bamboozling themselves. People will screw themselves or their coins before they ever get hacked. So people will go out there, they'll hear an example from somebody that's either extremely smart or extremely dumb and sounds extremely smart, and they would have like, a super complicated setup, and you require many computers, and they would do a super complex multisig, and then the person can get the money out. A very good example of this in the way back in the day was bitcoin armory. There's probably a lot of people on this call that have lost money in bitcoin armory. It was fantastically safe. So safe that many people never managed to get their money out. So what other stories do you guys see as very common ways people lose bitcoin? Yeah, I'll go second here. When I first started, I was forex trading like an idiot, and someone was like, hey, I have a trading platform. Buy some, give me some money, and I'll double your money. The classic. And they were only taking bitcoin. So I was like, you know, what the heck is that? Never heard of it. Well, I've heard of it, but never bought it. How does it work? And they said, oh, you know, go on this exchange, buy some, and then send it over and I'll send you some back. And they were pretty smart. I started off with a small amount and a few hundred dollars and gave them it. And surprisingly, they actually did double my money. And then that convinced me to give them a lot more money, and that's where I felt a culprit of what they did. But I realized at that time that bitcoin was immutable, and there's no way that I could get back my money. And it kind of hit me hard, and I was really frustrated, obviously. But it was a user error, right? It was me being an idiot, being greedy, and wanting more money at the time. So I think people need to take a little bit of responsibility sometimes when they're handling their money. Obviously, I'm still a young guy and had lots to learn, and that sent me down the Bitcoin rabbit hole. And here I am, right, learning how to store my keys. A lot more safe than I did on an exchange. Right. So that's kind of my sob story. But it comes like some real pain to learn. Yeah, absolutely right. I think a lot of people, when they lose money, they get mad and they try and put someone else, blame someone else. But if you really learn about these things and store things properly and understand, then hopefully you don't have anything to worry about. Yeah. Thanks for that, Justine. Hey, I think you guys are on point. I generally think the majority of Bitcoin is lost by user error at unchained. And in personal experience, we deal with a lot of either newcomers to self custody or people have been dealing with single SIG, and this is kind of their first interaction with multisig. And what I found is there's just so much to learn about Bitcoin, right? This is kind of the first time in history that we can truly own our assets and we can truly own our money. And that takes personal responsibility just like anything else. If you want to grow your own food, if you want to protect your home, there are skills that you have to learn. And I think Bitcoin is the same way, but it's new. It's a new thing that people have to do. They're used to being able to just call the bank, right? The bank is going to handle it for you. So I think there's a learning curve. The problem is, in my opinion, that we sort of as a community, I use the word community loosely here as Bitcoin. Twitter, we sort of have this, like, all or nothing mentality, and I don't think we speak enough about like, there's all of these things that you can do, and each individual has to sort of look at their own attack factors and their skill set and what they're capable of, and it's okay to take steps, right? So in my experience, it's over complicating things. It's doing something because they saw on Twitter that was the only way they could do it, right? And maybe it was way beyond their skill set. The worst thing I've ever seen is multiple times past phrases. I have a love hate relationship with passphrases because I've seen people mess them up. Miss one letter, forget that you capitalize something, think that you could memorize it and you don't. And then all of a sudden you've lost access. So user error, over complicating things or making it so complicated that you then don't distribute your keys. So you've got this really over complicated system, but everything sitting in one drawer. So I just think that over complicating things, user error is sort of the biggest threat, even though obviously outside vectors are something that we need to consider as well. But I think that, yes, user error over complication and pass phrases in ways that are maybe too complicated for the user at hand. That seems like there's a trend there. So Lock has this fantastic list of people who have been physically attacked over their bitcoins. James, do you want to give people a little bit of a primer on that list and where they can find it? Yeah, sure. Well, it's linked directly from my main page@lop.net. It's the physical bitcoin attacks GitHub repository and like a lot of other things that we talk about with security in this space, I think it can be easy for people to blow it out of proportion. Now, I think last I checked, I've got nearly 150 different attacks that I've managed to come across and archive over the years. And this is actually a very, very small number. You know, in the grand scheme of things, it's probably one of the rarest forms of loss in the bitcoin space. But there are definitely some patterns and things that we can learn from that, one of which is that the most common event that causes this is people who are doing high value, face to face cash and bitcoin trades. So that like face to face OTC stuff. It's definitely risky because your counterparty may be a criminal and they may assault you and take all of your money. So there are things that we can learn from that. Also, a number of people who have experienced home invasions in this space, it generally happens because they're well known, and usually they're well known because they're being flashy and flaunting their wealth on social media. So you can definitely learn a lot about how important operational security and privacy is when it comes to protecting yourself physically. But kind of getting back to the original question, I think one of the most common forms of loss is when you're not holding your own bitcoin, you're keeping them with a third party. And that opens you up to just a multitude of forms of different loss, whether it's the third party having an insider attack, the third party being hacked, or in many cases, just the security system to access that third party account being compromised, usually through SIM swapping or password leaks or whatever. The best way I can describe it is that when you have your bitcoin with a trusted third party, you're still vulnerable to all of the same risks as you are with self custody, plus a whole lot more because of all of the things that can go wrong with the various third party actors who are controlling access to those keys. Yeah, not your keys, not your coins. Right. I mean, it's that simple. When it comes to third parties, it's so amazing to me that after Gox, I think a lot of the people who are new haven't experienced and maybe was forgotten. It was quite a long time ago now. And before that we had my wallet, which was, I think I can't remember, it was a lot of coin on that one as well. And then we had big Ver with crops. We had FCX in Alameda, which were like the recent high profile ones, celsius, all this stuff. Right. It's very unfortunate what happened to look, because now you have guys like Woody or Susan sort of fighting self custody, saying as if with third parties, you were safer if they offered some form of insurance. I would take their suggestions more face value instead of just being bullshit. But they're not liable for those losses in the way that people think they are. You just become an unsecured creditor and good luck to yourself. So, Rendell, you've been working in Bitcoin quite a bit, and you probably know some interesting ",timestamp:"00:07:44-00:17:21",topics:["Bitcoin Losses","Bitcoin trading"],type:"podcast",weight:22.766568059128208},{boost:0,date:1628150829,description:"The Regulatory on Small Scale",episode_title:" #14: Julia Reinhardt - What do GDPR and AI regulations mean for Silicon Valley?",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/3ab6c599-bbcd-4c8f-beef-bcf509ed4afa.jpg",keyword:!0,link:"https://anchor.fm/s/1a9df3e0/podcast/play/38326682/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2021-7-5%252F1c697b61-ec63-9b13-21c8-20beb6d5ca8d.mp3",node_type:"clip",pub_key:"",ref_id:"d67cf7af-79a8-457e-b65b-293fb279dcfe",show_title:"Voices of the Data Economy",text:"early on. Yeah, I just sort of picked up your line that they do it out of marketing because I think this is also something we discussed in a podcast with Safia Noble, the author of Algorithms of Oppression. And I'm not sure if there is a word called like privacy washing, like you have green washing, but probably it has become like a marketing gig to talk about your customer data and how safe it is and having discussions around that. So yeah, just a comment, not a question, but okay, so first we had GDPR and now we have the proposed AI regulations in Europe and we have never really spoken about it in this podcast. I would say that even me or particularly the audience are pretty new to this and you seem to be very deeply involved in this. So if you could take us through what are actually these AI regulations that have been proposed in Europe and what are their challenges, and then probably we can go deeper into it. Yeah, sure. So, yeah, the upcoming AI regulation that has been tabled by the Commission, but is only on the negotiation table now for member States and the European Parliament is actually the core thing I'm working on in my fellowship. And my intention is really to make sure that this upcoming regulation again from Europe does not again cause that lagging behind the small players. Because in the field of AI, as you all know, size clearly matters. The more data you can gather, the better your AI system works. And we're already pretty far down the road to Monetization because players in the market have access to an impressive range of data, and they can also afford gathering high quality data, which then enables them to build better performing AI. And for small scale providers, what's most important is the clarity of the guidance. I mean, that sounds phenomenal. Who wouldn't say that? But if you follow advice, you set up an internal team analyzing those rules for your in house implementation adapted to your AI system, you get much better at estimating necessary additional processes to say why. I work on that. And again, this link to the small scale providers of AI in general, the regulatory draft that the European commissioned, and it was tabled on April 21, so that's not very long ago. And in Brussels, things take time, comedies are formed. But the draft that the European Commission tabled also has been very long time in the making funded line. The Commission president announced something like it already at the beginning of her presidency, and then it came up this year. It's the most ambitious and the most comprehensive attempt at reining in the risks linked to the deployment of AI that we have seen so far across the globe. So it's a bold new step before the big focus of the past years were always just principles. I'm saying just. But I mean, of course you start with principles on an international level. The OECD principles on AI that were adopted in May 2019. OECD. Most European countries and the US are members of the Organization for Economic Cooperation and Development. So they're already promoted uses of AI that are innovative but also trustworthy, that respect human rights and democratic values. And I think now, in 2021, really, we're at the stage of how do you transform these principles into practical rules and regulations. So the rules that the European Commission proposed wouldn't cover all AI systems. They do cover systems that are deemed to pose a significant risk to the safety and fundamental rights of people living in Europe. You know, it's the geographical scope of people living in Europe. So it's a risk based approach. It has several layers, and those layers have different rules for different classes of AI systems. There are some that are prohibited. There are some that are considered high risk and have follow certain rules, and then others where they just say, you have to be more transparent. Do you want me to go more into details of what those rules are? Yes. I mean, broadly, if you could point it out. One, two, three. I don't know if it can be done that way. Absolutely. Sometimes it's confusing because it's really so much risk. You have to know in which category your AI system falls. And that's really on the developers, kind of to understand the categories. And in the end, it's actually pretty clear that not many AI systems actually fall under that rule. So definitely something to understand. So for some users of AI, the Commission proposes an outright ban. That's a use where the Commission says it's an unacceptable threat to citizens. That, for example, an AI system that likely causes physical or psychological harm by manipulating a person's behavior. That's a question of definition. Or by exploiting their vulnerabilities like age or disability. Then also something like social scoring systems where people collect points and also minuses, like those we know in China, and facial recognition in public spaces by law enforcement authorities. So not all facial recognition, but just, you know, those used by police and public spaces, essentially. Although even there, you have exceptions, and I think too many of them. So that's, you know, the systems that the Commission proposals should be banned in Europe. But most of the regulatory draft actually focuses on AI that is considered high risk. And what is high risk is, of course, defined in the regulatory draft. So that's kind of problematic uses in the recruiting field, in the employment admissions context, determining a person's creditworthiness or eligibility for public services and benefits, and also some applications used in law enforcement and security and judiciary. And for those, these systems have to meet different requirements and undergo kind of a conformity assessment. So, of course, before they can be placed in the European market. So in a way, that's kind of FDA, as we call it in the US. Like clinical testing, not for drugs or for vaccines, but for algorithms, it's to make sure that an AI system complies with several requirements around serious risk management. It has to use data sets and training, validation, and testing that are relevant, representative, free of errors, complete. That's a super tall order. Of course, then documentation about a high risk AI system must be really extensive and very precise. Why you chose certain designs, why you designed it in a specific way, and also to show that the developers really check all these factors diligently. The keyword is always human oversight. So high risk AI systems must be designed in a way that allows people to understand the capabilities and the limitations of a system and to counter socalled, automation, bias, and also, if necessary, reverse or override the output. And then, of course, accuracy, robustness, security, and transparency. So this is kind of this clinical testing for algorithm. ",timestamp:"00:20:36-00:29:57",topics:["Small Scale"],type:"podcast",weight:4.966172337540865},{boost:0,date:1627704e3,description:"[[Jurisdictional arbitrage]] moves people when [[prohibitive tax regime]] is implemented",episode_title:"WHY ARE WE BULLISH Natalie Brunell Aaron Segal Lauren Sieckmann Dan Held ep191",guests:[{name:"Dan Held",profile_picture:"https://pbs.twimg.com/profile_images/1522608646043181060/QQRjVYhi_400x400.jpg",ref_id:"3e22facc-9310-4346-82ac-3e183b88fa51",twitter_handle:"Ledger"},{name:"Lauren Sieckmann",profile_picture:"",ref_id:"427bb439-f251-4c7e-89fb-b53ecd8c9a82",twitter_handle:""},{name:"Aaron Segal",profile_picture:"https://pbs.twimg.com/profile_images/884309028125294592/sLDGwzDO_400x400.jpg",ref_id:"f7483c61-ba76-4a19-8d8d-992966e1f79e",twitter_handle:"AaronSegalActor"},{name:"Natalie Brunell",profile_picture:"",ref_id:"a09e8874-abbe-4a85-b19d-08cac1c8afde",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/38086440/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-6-31%2F116ac8f3-ce82-01e5-2865-da5c486c8330.mp3",node_type:"clip",pub_key:"",ref_id:"ea5f251b-6174-4663-b1c8-176375396b6e",show_title:"BTC Sessions",text:"don't know. What are your feelings on kind of this? How bad would it have to get for people to actually think about jurisdictional arbitrage? Oh, you're muted. Probably a prohibitive tax regime if you start to get really prohibitive like 70%, 80% taxes. I think people start to look at moving. I think about it in this function of like you got 100% tax rate of slavery. And so we all exist in the semislavery state of our output is taxed, usually without our permission. And so you either pay that or go to prison. So it's literally sort of a mob feeling there. At what point do people break? I think that's totally subjective for any type of person. Like, a lot of people have already kind of broken and moved to different countries, like renounce their US citizenship or they moved to Puerto Rico. I've moved to Austin from California, which is a small amount of sort of that arbitrage because Texas is a much more open society when it comes to earning money and keeping it. Now I can escape federal. If you want to escape federal, you go to Puerto Rico. If you want to escape all of that, then you go renounce your citizenship. So I made the decision at a certain point that paying California taxes plus federal taxes was too much. I couldn't bear it anymore. And we're seeing a lot of other people make that decision as well. But at what rate will federal start to push people? Ultimately, people vote with their pocketbook. If you make it really cost prohibitive in terms of taxation, I think that's what really moves people. ",timestamp:"00:18:02-00:19:39",topics:["jurisdictional arbitrage","prohibitive tax regime"],type:"podcast",weight:4.962566375739069},{boost:0,date:1642827600,description:"[[Tonga]]'s Interest in Following [[El Salvador]]'s Footsteps",episode_title:"WHY ARE WE BULLISH Mario Gibney Mauricio Di Bartolomeo Josias Carbon Bang Bitcoin",guests:[{name:"Bang Bitcoin ",profile_picture:"",ref_id:"ac7edd0f-886d-449a-ba1a-06033ad12695",twitter_handle:""},{name:"Josias Carbon",profile_picture:"",ref_id:"f3c2c48b-c174-43cc-acfc-2151634b7c77",twitter_handle:""},{name:"Mauricio Di Bartolomeo",profile_picture:"",ref_id:"10c70dfd-93fb-4e95-99d4-2bebf561e737",twitter_handle:""},{name:"Mario Gibney",profile_picture:"",ref_id:"1a3f05f5-5c4a-455f-b4ec-f682080a5518",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f29a41a4-6764-439e-9fcf-74fefaffc681.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/46497075/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-0-22%2F243683259-44100-2-0108d40b0f999.mp3",node_type:"clip",pub_key:"",ref_id:"80462fda-0ec7-4677-bd1b-cd7741154f39",show_title:"BTC Sessions",text:"Look at Tonga, too. Super unfortunate what just happened with the tsunami there. But Lord FA Sitsua has been pushing hard and is looking like they're going to attempt to basically mirror what El Salvador has done. Later this year. They're putting forth more or less the same bill with some slight changes. Again, we got to wait till the fall to see what that actually looks like. But I'll be Frank here, I didn't know of Tonga before this and all of a sudden there's starting to be some recognition before the disaster that just happened. But up alongside El Salvador, you see mentions of this island nation that probably not a lot of people were aware of prior to kind of this human interest piece in and around El Salvador. And so I think we might see more of that over time. Of course, the Volatility lets the Naysayers have their temporary wins here and there. But I mean, it's like Peter Schiff tweets, right? You can always go back in a long enough time frame and highlightership yeah, you can always highlight some amazing Peter Schiff tweets and say, man, if you had just dollar cost average every time this man tweeted about Bitcoin, you would be sitting pretty. And it's very, very true of a lot of this where again, people again, even in the chat, look at what it's done in the past three months. Three months. How short is your time frame? Do you plan for the future at all with that kind of a small window of which you frame things? I would guess not. Bitcoin is boiling the legacy financial system slowly. Just a frog just boiling it slowly. Yeah, absolutely. And that's ",timestamp:"01:05:32-01:07:59",topics:["tonga","el salvador","tonga","tonga"],type:"podcast",weight:4.962566472366181},{boost:0,date:null,description:"Important things every new Bitcoiner should know",episode_title:"Café ₿: #Bitcoin Beginner Q&A",guests:[{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Stephan Livera",profile_picture:"https://pbs.twimg.com/profile_images/1362551718110580740/v-W5Q2uo_400x400.jpg",ref_id:"72f57157-c96e-4466-8bf1-290cfe1f8a0b",twitter_handle:"stephanlivera"},{name:"Thomas J Lake",profile_picture:"https://pbs.twimg.com/profile_images/1529168328534769670/5cl2Y_k-_400x400.jpg",ref_id:"21541a47-0601-447c-99c2-312d1a63c19f",twitter_handle:"thomaslake"},{name:"Goodguy",profile_picture:"https://pbs.twimg.com/profile_images/1363216959576285185/unulY4yd_400x400.jpg",ref_id:"0c3fec75-9cc2-4c0f-8dbe-db7fae2b585b",twitter_handle:"goodguybiker"}],hosts:[{name:"Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"49966553-d55b-44c9-94ec-8fee09eee5c2",twitter_handle:"CitizenBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/35b20273-49f2-45ea-a9f4-dc479d86573c/7ae5315f-beb2-41e2-b672-65dd1f102017.mp3",node_type:"clip",pub_key:"",ref_id:"3d112a9e-f3a1-4edb-96b0-c3a8c63b0c4a",show_title:"Swan.com",text:"would be the top three things. You think it would be important for a new person to know and then we can kind of go around and get the same thoughts from Tomer and maybe Peter and really anybody else who wants to go. A good guy. Yeah, sure. So I think there's a few obviously key resources that are important. I think getting motivated and understanding, like having a good sense of what bitcoin is matters, and so getting, I think, the right jumping off point matters. Obviously, stacking stats and accumulating some stats is important, not your keys is an important thing. But for example, reading as an example, the Bullish Case for Bitcoin by VJ. Boyer party, right? So I think that's a good example of a short, intro, long essay or booklet length thing that you can read and. It will give you some sense of the motivation here and some sense of the problem and the challenge. So I think that is an important starting point. Of course, our CTO yarn pritzker, co founder of swan, has written inventing bitcoin that's also a fantastic starting point in terms of understanding some of the technicals of bitcoin without getting into the actual, like having to read code or technical aspects of it. I think it's a fantastic intro book. So I often recommend that as a starter book. I think those are some really good places to start. And then from there, and I mean, even harkening back to Greg Foster's comments earlier, right, this whole idea of skin in the game, put your money where your mouth is. I think it's a similar thing with bitcoin. What you'll find is you can lecture to people all day, but until they have some actual skin in the game, what's the chances that they are going to really take it seriously and spend some time learning? I think one other tip I would give for new people is actually use the technology, right? Send an on chain transaction, right? Use a bitcoin wallet, receive some bitcoin, like withdraw some coin and practice spending some bitcoin on chain, even if it's to yourself into another wallet that you control. In some sense, it's moving money out of your left pocket, into your right pocket, but actually using the thing. Then what happens is you'll start to ask yourself more questions because then you'll start thinking, oh, hey, wow, okay, I just sent a transaction. Oh, look, let me look up the transaction ID. And let me look that up in a block explorer like mentor space or block stream info as some examples, or OXT me or some of the kycp.org, like these different explorers out there. And they can give you some things to think about and understand. Okay, what was the fee rate for this? What are these inputs and outputs? What's going on there? All of these aspects. And I understand at the start that sounds like jargon, it sounds like engineering, it sounds like, whoa, that's like but what happens over time is as you get into bitcoin, you just, you start to once you have that right, motivation, then you just you can't stop going further down the rabbit hole. All right, tomorrow, if you had to pick three things, what are the most important things you think a new person would be valuable for a new person to understand about bitcoin? Yeah. So the first thing is use bitcoin the way it was designed to be used, and tune out all the rest. Tune out people promising yield, people talking about altcoins, people talking about yield, people talking about staking, people talking about everything else. Just go back to the very beginning. Bitcoin was the granddaddy. It came out as software that you can run where you can take custody of these things called bitcoin. And you could send them and spend them. So start there. Start at the very beginning. And it's like learning to drive a car. Do it with a small amount of money, as you would drive a car in an empty parking lot at the beginning. So use a small amount of money. Practice. I'm preaching the same things, just with different words than what Stefan said. So get those two things going and then let your curiosity lead you through the various aspects of the rabbit hole and many others. You may be a reader, you may be a tinkerer. You may be someone who prefers to learn from videos. You may be someone who likes to listen to spaces, all these sorts of things. There is no one right path, which is beautiful because there's many right paths. There are also wrong paths that lead you to the right path. You may get wrecked or burned by trying to be greedy or something else. And those are lessons. Again, you may learn them at someone else's expense by watching someone else make mistakes, or you may have to learn these lessons personally. But I think that, for me, is the thing. Go back to basics. Practice with a safe amount and follow your curiosity. ",timestamp:"00:30:18-00:35:03",topics:["Bitcoin education"],type:"twitter_space",weight:4.926955223083496},{boost:0,date:1633363603,description:"Innovation and scams",episode_title:" The Bitcoin v Crypto War with Udi Wertheimer, Crypto Cobain, Alex Gladstein & Allen Farrington",guests:[{name:"Crypto Cobain",profile_picture:"https://pbs.twimg.com/profile_images/1601273673041776641/7FrXDRv6_400x400.jpg",ref_id:"8fa5fec2-f714-433e-a8c9-ee5e76dabaf0",twitter_handle:"cobie"},{name:"Allen Farrington",profile_picture:"https://pbs.twimg.com/profile_images/1414147363560730624/EXMx91D6_400x400.jpg",ref_id:"8660a251-950b-4888-adbf-21f790210cf6",twitter_handle:"allenf32"},{name:"Udi Wertheimer",profile_picture:"https://pbs.twimg.com/profile_images/1600897375001874432/8pdVDKUz_400x400.jpg",ref_id:"483291b7-2101-4c28-a065-93b1524d0552",twitter_handle:"udiWertheimer"},{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"}],hosts:[{name:"Peter McCormack",profile_picture:"https://pbs.twimg.com/profile_images/1524287442307723265/_59ITDbJ_400x400.jpg",ref_id:"887a65a7-a2d8-4371-887e-bc7a6ca6ff17",twitter_handle:"PeterMcCormack"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/4e607036-8fde-48ef-ab76-9c2ac4bab031.jpg",keyword:!0,link:"https://chtbl.com/track/282487/traffic.libsyn.com/secure/whatbitcoindid/WBD405_-_Cobie_Udi_Alex__Allen.mp3",node_type:"clip",pub_key:"",ref_id:"1f39afe1-2026-44ca-a0b5-80aea9a8cc83",show_title:"What Bitcoin Did with Peter McCormack",text:"Push back there. That's a lot. Great stuff. Let me go one by one. The first thing you said ethereum. If we're talking about ethereum desension, we have to talk about the monetary policy. We have to talk about the hardforks. I mean, nobody knows how much ETH is going to be minted in 2023. 2024. A small group of people will decide. And I think it's really dishonest, actually, to not mention that. And that's why I think it's centralized. So that's my point. My perspective. Second thing is on innovation. But as I mentioned, everyone knows it. I had to go dig in interview at EF Engineers to find out how much if they thought would be minted in the night. Like, nobody knows, literally nobody whose job. Is to mention it to you. Like people talk about it all the time. Who's the dishonest actor who's supposed to represent those facts? Anyone who's saying it's decentralized when clearly a small group of people is going to determine the monetary policy and not the public. Do you mean cosmic EIP? And there's an EIP 1559. So that economic activity on chain impacts the future. Yeah, it's a hard fork. And the people, the users don't get to decide, they just get hard forked out. This to me is quite clear. But again, we can debate and then just to do a couple of other things and we keep going on the innovation. Why are we all here? The innovation is to escape regulation. Bitcoin is money beyond regulation. NFTs are trading Art beyond regulation. Unitswap is trading assets beyond regulation. ETH is supposed to be running contracts beyond regulation. So it's all about can you evade regulation or not? So I do think that's the important thing with regard to crypto and being nice to people and this idea of are these toxic people bad for Bitcoin? I agree with you, Udi. Bitcoin is going to be fine. Like, Bitcoin is going to, I think, complete its mission over time. It's the people that aren't going to be fine, right? The people that are going to miss this project, the people who've been gaslit for a decade by the mainstream media about Bitcoin, who've been told not to buy Bitcoin because it's dangerous, because it's scary. A lot of people have really lost a huge opportunity, especially in emerging markets, because of what their government and the media have told them to stay away from Bitcoin. When it comes to these crypto projects, I think it's the opposite. I think we need to be more outspoken. Otherwise what happens is that Ripple is in Bloomberg today, and you have smart people who don't know a lot about the space thinking that Bhutan is going to adopt Ripple as their currency. Like that's in fucking Bloomberg today, okay? And you have Carnegie Mellon, a very prestigious institution, by the way, which is a very important institution in America, taking all this money from Hopkinson and promoting Cardano. This is what happens when we don't speak out. People get scammed. So I think it's actually the opposite. We should be talking more about these things because bitcoin is going to be fine. People need our help. And look, if you've got all the time in the world and you're a talented trader, you're going to be fine. Like you're going to clean up in the coming years as we go through these different kinds of crypto bull markets. But the average person is going to be confused. They're not going to know what's going on. And it's not like the average person bought a bunch of salana last Thanksgiving. They bought it in the last couple of months. Like the people who created Solona made the most money. These are the things on my mind. That's a really interesting point because if you listen to Charles Hutchinson's interview on Lex Friedman, I think everyone can agree he's a complete dishonest prick when he talks about Bitcoin. And his job there is to convince the listeners of Lexus show and perhaps Lex, that Cardano is something they should consider. And what's really interesting is I moderate all the comments on my YouTube because there's so many scammers, and when I talk about scammers, it's like, join my Telegram group. If you go on any Vice video at the moment, you can see what we're dealing with. I have to delete hundreds a day. But in there, what we also have is there is consistent chilling from people saying, but you need to consider cardano, why aren't you considering Hex? And it's always the same projects, so I'm going to throw this over to Kobe. How much do people actually pay? Look, you mix in the trading community. There's a lot of people out there trading. And the way I explained it recently to somebody, I don't buy anything apart from Bitcoin. But I almost feel like I'm sat in a conference room in Vegas with Alex Gladstein discussing human rights and through the window and seeing all my friends on the roulette table and having fun. And whilst I know they're gambling, I see all this ",timestamp:"00:46:09-00:50:44",topics:["Crypto scams","Carnegie Mellon","Charles Hutchison"],type:"podcast",weight:4.92695522332177},{boost:0,date:1672167683,description:"Does Bitcoin mining price determine Bitcoin price?",episode_title:"TOXIC HAPPY HOUR! #Bitcoin, Beer and Plebs! 🍻😂🤌🏻",guests:[{name:"Dr. Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"51a969bb-dbf7-4d20-b128-74dcc5f560f6",twitter_handle:"VailshireCap"},{name:"Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"3a2bc97d-072c-4ed9-9a59-17ceeb68fe99",twitter_handle:"TomerStrolight"},{name:"Laura Shin",profile_picture:"https://pbs.twimg.com/profile_images/1539462748173746176/hxR80FYT_400x400.png",ref_id:"a56a7b4d-edca-41d5-9d51-33396aa05b96",twitter_handle:"laurashin"}],hosts:[{name:"PUBLORD",profile_picture:"https://pbs.twimg.com/profile_images/1480160632360124416/AM_vVRko_400x400.jpg",ref_id:"8126d933-0986-4fd2-a6be-c02581294463",twitter_handle:"publordhodl"},{name:"Anders Jensen",profile_picture:"https://pbs.twimg.com/profile_images/1382039124991954947/Wb9kT7MO_400x400.jpg",ref_id:"af45195e-77a6-463f-ba64-29c6b0437d9c",twitter_handle:"andersjensenorg"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2a1450bc-0649-4dc5-8ec9-1474af1ea1c3.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f7b6cfcb-7cd4-4401-a3fb-7735bb570c07/2ae49fca-a048-4a34-93b9-247513af5699.mp3",node_type:"clip",pub_key:"",ref_id:"2656d145-191a-4e86-8261-04c88a9a6562",show_title:"Anders_🍆",text:"Sack, welcome to the stage. How's it going? Merry Christmas, police. Navidat. Hey. Merry Christmas, everybody. Good to be here. And I just had a quick question. I thought I'd throw it out there. It's not heavy heavy, but I just got caught up on some of the Miting concerns, and I just thought I'd ask if anybody can share with me. Their thoughts on how bad is what. Does it actually mean to the price. Of bitcoin that all of these miners under? I think there's a lot of questions. See if there was any feedback that's a lot of people sorry if I'll keep quiet. If you have further, I'll let you finish. Okay. So I think that's a it's been a discussion going on for years whether mining drives the price of bitcoin or the price of bitcoin drives mining. I guess there's a feedback loop there, but definitely the higher the price of bitcoin, the more incentive to mine it, for sure. But it also seems to sometimes on shorter term lead the price of bitcoin. Because either people see it as a confirmation that there is belief in it and it's getting more secure as hashing rate goes up, or like we saw when china quote unquote, well, actually did ban bitcoin mining back in was that I can't even remember. Was it may this year? I think it was 2021 around that time, and the hash rate dropped to half and a lot of people got spooked and the price of bitcoin collapsed. I'd say a little bit of both, but tomar, you are well worse. Go ahead. Yeah, I think maybe I'd say two things. One, over the history of bitcoin mining has been incredibly volatile. Up and down, back and forth. When the first asics came in, there was only one company making asics. Then a few others came in, that one company disappeared. It wasn't even a real company. And then many of those went out of business. And of course, bitcoin survives through it all. The most important innovation in bitcoin that people talk about is this difficulty adjustment thing which relates to the mining. And so if miners go out of business, then it gets easier to mine bitcoin. And that means that bitcoin continues to operate flawlessly. It also means that it gets cheaper to mine bitcoin, so more people are attracted to mining it if it becomes profitable again. And so what I've noticed in my ten years in bitcoin now is mining is like if the bitcoin price is like a sign curve up and down, but skewed up and to the right. The bitcoin mining is like a scaled up version of it. When the price goes up, you get way more mining, and when the price goes down, you end up getting way less mining and it lags behind. So they run ahead and they run behind. I don't think it's any fundamental what I'm getting to is I don't think it's any fundamental concern to bitcoin's ongoing steadiness or its security or anything of that nature. It's simply a reflection of what the economics are to mine bitcoin at any given point in time. And when the price was high and energy was cheap and money was cheap, people were borrowing money to pay for miners and energy on credit to mine expensive bitcoin. And now that it isn't. They aren't. So it's just rational. But the same number of bitcoin are being produced as would have been the case if the price had been high or if the price had been $1, than just kind of that's a promise that no amount of added or subtracted mining can break the supply. And its issuance schedule and the rate of development of the blocks is essentially exactly as described in the white paper. And when I say essentially, I don't even need that, it is exactly as described in the white paper and will continue to be. So. I think those are awesome points that Tomer made. And I'll throw just a little side tangent on this because I think in terms of investments for almost everything regarding the bitcoin miners, right now, there's a perfect trifecta going against minors. I like to think in terms of three trifectas. What's the trifecta? Low bitcoin price, high energy prices and then a high hash rate. Right now, those three things combine to make it really difficult to survive as a public bitcoin miner or even a private bitcoin miner. And so I get asked all the time by people like, should they invest in this minor because it looks stronger, this minor? I would say I would still avoid all of them. I think they're still dangerous and I still think we're going to see more of a minor capitulation before this is over. To Tomer's point, and this is critically important to understand, that doesn't affect bitcoin. At the very least, the network is still super strong. It will still continue to do what it's designed to do. But bitcoin miners, they offer beta to the price of bitcoin. And so in bull markets they can outperform for a season, and then in bear markets they tend to drastically underperform. I would just be super careful. We were talking before Tomer, you got up here, we were talking about bitcoin proxies, talking about GBTC and MicroStrategy. I would include minors in that list as well. A lot of people invest in miners in their IRAs and their 401 KS because they can invest in bitcoin itself. If you are you've had a tough year and I think it's going to get worse before it gets better. I still think we're going to see many miners, like flat out capitulate actually go bankrupt. Some will survive, a small handful will survive all of that. What that does is it drags the price of bitcoin down a little bit further. It drives the price of asics down a little bit further. I like it, though. This is capitalism. It's called creative destruction, right? So basically the people who have been smart and who have been ready for tough times, they're going to get rewarded, they're going to get cheap. Minors, individuals who have been saying giving up, and who have been smart and they've had their head downs, they've stayed humble, they've been stacking SATS and putting some cash. Away, they're going to be able to buy asics for super cheap and they're going to be mining in the next cycle. And that's awesome. That's the way it should be. Bitcoin itself, it naturally decentralizes. Over time, it gets more and more decentralized, unlike cryptos, which get more centralized over time. So I think it's beautiful. It's sad if you're an owner of one of those companies because they're going to get smoked, but it's great if you're everybody else in the bitcoin ",timestamp:"01:36:47-01:43:20",topics:["Bitcoin mining","Bitcoin hashrate","Bitcoin network"],type:"twitter_space",weight:14.092456989642082},{boost:0,date:null,description:"How Bitcoin has performed as a tool for freedom in the year 2022 ",episode_title:"Gladstein & Sam Callahan - World Bank / IMF & #Bitcoin",guests:[{name:"Sam Callahan",profile_picture:"https://pbs.twimg.com/profile_images/1592532728775409667/0DayEP2Q_400x400.jpg",ref_id:"5a044a91-8dee-421c-86dd-8c734dc9bc32",twitter_handle:"CallahanMusic_"},{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Brady",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"45bbbb01-6163-4b3b-905a-fc67174893d9",twitter_handle:"CitizenBitcoin"}],hosts:[{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f8be7c60-94a5-41d0-972c-6301cd4ad7f0/4e5bf86b-6193-4f6e-8fa3-933344b2053e.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"888c6962-f33f-4e88-a1cb-6819baabe35f",show_title:"Swan.com",text:"We can pivot a little bit from Africa and just talk about maybe 2022 more broadly. We're coming up on the year end. I feel like you have a unique perspective, given your position at the Human Rights Foundation and your work specifically around Bitcoin being used as a tool for freedom. And I was wondering, if you just think back in 2022, how have we done? How is Bitcoin done to be a tool for freedom? In your mind? What got you excited this year in that kind of purpose for Bitcoin? Bitcoin is doing what it was created to do, which has become a parallel economy for people that don't want to deal with the state. I think that in doing so, it is also kind of finding its way through the existing financial system. So I think that there are things that pop up as Bitcoin adopts that you couldn't have predicted. Some of them are temporary and some of them are permanent. Who knows? We know that we don't know what Satoshi or Hal or any of the early Bitcoinners thought would happen. But it seems pretty obvious that Bitcoin's ability to monetize stranded energy was not really at the top of their list when they were designing the white paper, right? Or when Satoshi was designing the white paper. That was not very clearly not something they realized would happen, or at least was maybe a peripheral thought. So you get a lot of these things along the way towards separating money from state, and one of them happens to be improving Fiat services, which I know Bitcoinrs are divided on. But the reality is, it's true. On our way to the Bitcoin standard, we live in the Fiat standard. It is what it is. And it's really interesting how Bitcoin can connect Fiat companies in ways that Fiat companies cannot use Fiat rails to connect to Fiat companies. Like, this is kind of a powerful thing, and it'll end up in the end with Bitcoin companies connecting with Bitcoin companies. But for now and I guess being in Africa really brings us into focus, but you realize how financially disconnected the world is, and that's not again, it was designed that way. It was designed by companies and services who found a business model and being able to connect people and be able to extract rent from them, moving money on a particular rail or service. So I think, for me, this year has been a big reflection on, like, capitalism more generally, or what we would refer to capitalism. Like, I'm kind of with Alan Farrington. He wrote a great piece called this Is Not Capitalism. I would encourage everybody to read it. Makes for a great holiday read. It's also part of his awesome book called Bitcoin is Venice, which you should read. But basically he's describing how, like, the post 71 Fiat political economy, which essentially is like an operation where the state can be the lender blast resort for all parts of what would normally be a free market economy, obviously not capitalism. And I think that's true for a lot of things in the world. But on the other hand, it is what it is. It's kind of like a cop out to say that it's not capitalism. In a way it's not communism, you know what I mean? It is the American model of economic growth and development. And if you want to say that that's not capitalism, fine, but you got to call it something else. But that's what kind of like leftist critics would describe as capitalism. That's like what they don't like, right? It's like American multinational companies, right? So if we're going to sit here and say that's not capitalist, okay, fine, and I'm sympathetic to that. But the idea is that in the reality is we have a business industry globally that is known as capitalist, at least to most people, and won the cold War or whatever and has developed since then. And I think it has the wrong incentives inside of it, right? So if your incentives in, quote unquote, capitalism, let's say 1.0 or whatever this is that we have fiat capitalism or whatever you want to call it, the incentives are wrong. The incentives are for companies to come in and split people apart, to make money off of them and to attract rent. So I think whatever bitcoin brings to the table, bitcoinism or capitalism 20 or whatever you'd want to call it, is really interesting because it's open. So and I'm who knows how this thought process will develop over the coming decade, but it seems at least plausible that over time, like bitcoinism would result in costs like going down or rather deflating because of the open competition that results from bitcoin economies. Whereas in the capitalist 1.0 model you have a lot of these systems that are set up to become Indian monopolies which end up doing a lot of rent seeking and kind of like unusual things that put money in the hands of a very small percentage of the population and extract resources from others. I think this goes all the way to the macro level of global trade and commerce, all the way down to the micro level of daily payments. And I think that I'm very optimistic about a bitcoin like a different system being built on bitcoin where the incentives are just different. And you would start to see that in Africa, let's say, when you're thinking about how broken the continent is and how broken apart it is rather by both local corrupt leaders and by foreign powers and how Bitcoin would just unite and we create one simple monetary language for the continent. I just think the incentives are very different. I think companies are incentivized to cooperate, cooperate with people as opposed to exclude them or exploit them. And I know this is overly simplistic and clearly, like you could steal man it, but you can just kind of feel this it's very palpable when you're talking to the entrepreneurs in the space. Yeah, that's one of the big things I'm ruminating on as we close out 2022 ",timestamp:"00:35:28-00:42:23",topics:["Bitcoin 2022","Bitcoin freedom"],type:"twitter_space",weight:4.890018939971924},{boost:0,date:1671720944,description:"What to expect on Bitcoin Day Naples?",episode_title:"Café ₿: #Bitcoin News & Bitcoin Day w/ @Bitcoindayio",guests:[{name:"@johnmichaeldrew",profile_picture:"https://pbs.twimg.com/profile_images/1512897699942744064/PuRU3K8P_400x400.jpg",ref_id:"6b72ee7f-52ef-4847-96ed-78ea09e3f19b",twitter_handle:"johnmichaeldrew"},{name:"@mattyicesensei",profile_picture:"https://pbs.twimg.com/profile_images/1607138483579101186/0qm0xaCF_400x400.jpg",ref_id:"286abd3b-cecc-4ec5-bf88-2a9fd5393083",twitter_handle:"mattyicesensei"},{name:"@Bitcoindayio",profile_picture:"https://pbs.twimg.com/profile_images/1493098733608837121/tLI-XTwl_400x400.jpg",ref_id:"6a87699e-7a27-4928-89e8-d884f1458bf9",twitter_handle:"Bitcoindayio"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/83744e68-b563-4004-b52a-cfdfff89748f/12c9b9f2-fbce-4784-9404-88a574baa762.mp3",node_type:"clip",pub_key:"",ref_id:"6f72249d-ab08-4a9e-ac54-545f618c29d2",show_title:"Swan.com",text:"another speaker we don't have up there yet because we're announcing it just now, but I sneak preview that we're also luke Jr. Actually is down there, so he's going to be coming as well. We're going to get him on the schedule, but we're trying to get all the bit devs going to come in from the ones that are nearby, at least Miami and Tampa and those guys. But we're going to have a bit devs, kind of a day long. I don't know if they're going to kind of just have a 1 hour thing, but we're going to have bit devs as well from all over Florida come together, which is probably the first time they've ever done that. And then also Mike Yarmou's Muzz, he's going to have one of his bitcoin blitz chess tournaments as well. Well, that's brand new. I don't even know that. Thanks, Edward. That's cool. Let's turn it and then yeah, we got the bitcoin or the toxic happy hour, guys. So you want to talk about that? Is he still on? Yeah, I'm here, man. All right. I know Anders, I think, had reached out to you, and it's pretty cool because we had just gone up to Charlotte, and when your first conference is the bitcoin conference, you think like most conferences are like this. Of course, there's bit block boom and Pacific. Bitcoin now are the larger. But it was great, man. Yeah, they invited us up just to hang out, man, basically. And the great thing I'm working my travel schedule, and if I'm here, I'm coming down there, man. I know Anders will be there. What was great is and it takes you back to your roots because the people you have coming in, what you don't realize is how much you know. So people that have been here for a couple of years, you don't realize how much you've learned. And when you go to these conferences and you meet people that were in your shoes three, four, five years ago, it's just really cool because really you're helping somebody. You're really helping somebody to learn and understand. And that's my favorite part of it. It's not there just to see and be seen. It's there because there are absolute no corners that come to these. And I'm up in Charlotte for Halloween. What was cool is you had some rooms going on everywhere, and one was simply showing them, hey, how do I download a lightning wallet? And to see their faces. When you send them a few stats, they start to get it like, my God, I've got value outside the system here. This is the coolest thing ever. So yes, man. Yes. Dr. Kapir we'll come down there. I see fossils on stage. He and Larry's there. So hopefully we'll meet up with them as well, because, man, at the end of the day, bitcoin is about humanity, about the friendships you meet here. Fantastic. Hey, Greg. How's it going? Hi, guys. Were you talking to Foss? Yeah. Nice to talk to you guys. Nice to talk to you. I'm getting some feedback here. If you're up here and if you're not talking, mute yourself, please, because it causes the feedback. Alex, how are you, buddy? I actually have to be up and then jump. I saw this thing come across. I'm actually going on a lead lag report spaces at noon, so I have to prepare for that a little bit. But I think I know why we're here. We're talking about the Naples bitcoin. Naples day. There'll be the second or third one I've been to. This will be number three. It's a great spot. It's a great group of people. Larry LaPard is going to be there, I think. I'm trying to get James Lavish to come. I know Maddie Ice is going to be there. I hope Steve Luka is going to be there again because he put on a great show the last time. So looking forward to seeing everybody at Bitcoin Naples. It won't be a disappointment, I promise you that. And Puppy lives in the vicinity, I think Tampa Bays within a couple of hours drive, right. So let's hope to see everybody there. And if I don't talk to you before the Christmas break, happy holidays to everybody. 2023 is going to be an exciting year. So let's get ready. Thanks, guys. Thanks, Greg. Talk to you later. Have a merry Christmas. Thanks, robin hobro. Yeah, we hope that so. Yeah. Hopefully people come down from Tampa. Angel is coming down. He's like in Jacksonville or something. He's up north a little ways but talked to quite a few people coming from Miami, too. So few caravans hopefully, coming from Miami. So I think it is even if you've been to bitcoin 22 or whatever, I think it is certainly a different vibe. Like I said, smaller and little less glitzy maybe. But hopefully we get people from both. I like the smaller venues. There's less people. The people to speaker ratio is a lot lower and it's more intimate. You can spend more time talking to them. And I like those environments a lot better, personally. It's. One of the reasons why Pacific Bitcoin did so well is it was smaller we're having at the college down there, and I think that I'm hoping we'll get some students from the college if we can get the word out to them. And then also wanting to make it like I really like the Bitcoin summer model where they were doing development with students that's kind of working with colleges, that's kind of the model or the vibe that I'm looking to recreate is get some students orange pills or help them get into this space more. Very cool. Very cool. Yeah. So we're at Florida southwestern state college, which is its main campus, is up in Fort Myers. But they do have a campus down in Naples. It's named after the county, so it's the Collier campus where Naples is in Collier County. And it's a beautiful small little campus. It's got about maybe eight or ten buildings on the campus. And we've got a nice room, a large room in one of the buildings and then a smaller classroom on the side for some networking events. And probably that chess event will take place in that room. A beautiful little setting. And I know we've been talking about Florida people, but Naples is a beautiful vacation destination. So in January, the weather is absolutely beautiful. The beaches are awesome. You can come down for a long weekend, stay in a nice hotel, spend Friday on the beach, saturday at bitcoin day and Sunday on the beach and head back to wherever you're coming from and be totally relaxed. ",timestamp:"01:48:15-01:55:45",topics:["BitcoinDay.io"],type:"twitter_space",weight:12.160706504077877},{boost:0,date:null,description:"Alex Gladstein's recap of his African Bitcoin Conference experience",episode_title:"Gladstein & Sam Callahan - World Bank / IMF & #Bitcoin",guests:[{name:"Sam Callahan",profile_picture:"https://pbs.twimg.com/profile_images/1592532728775409667/0DayEP2Q_400x400.jpg",ref_id:"5a044a91-8dee-421c-86dd-8c734dc9bc32",twitter_handle:"CallahanMusic_"},{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Brady",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"45bbbb01-6163-4b3b-905a-fc67174893d9",twitter_handle:"CitizenBitcoin"}],hosts:[{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/f8be7c60-94a5-41d0-972c-6301cd4ad7f0/4e5bf86b-6193-4f6e-8fa3-933344b2053e.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"f84d9798-f31e-480e-9da6-9be8dc74f6be",show_title:"Swan.com",text:"can rerehearse. No, it's interesting because I saw Sam clapping, so I thought that it was working, but apparently not. It was. I think we probably heard more than we heard a lot of it. Man did you hear me talking about the mining? Mining? No. Okay, so we didn't hear the mining. So maybe start there. Okay, so to recap awesome event. No one tried to sell me a token. You learned a lot about how the main use case for a lot of Africa today is receiving bitcoin from abroad, because crossborder payments suck, and a lot of entrepreneurs have found ways to be the off ramp for their families and communities in different countries. Like, I met a guy who was doing this in Somalia. Like, lives in Mogadishu, has 30,000 clients in Somalia. He receives the bitcoin or stable coins from abroad, and then he's the off ramp, and that's what he gets paid for to do. There's tons of businesses like this in Africa today, and you get enough businesses like that, and then you also probably start to start to get a little bit of a circular economy going as well. So that's why we started seeing, I think, a bunch of other people pop up at the conference who are doing merchant services and then mining. So I guess what I was trying to say about mining is that I think it's going to have a huge decade in Africa. It's going to be transformative. I met a kid I say a kid not to be diminutive, because he was, like, 19 years old, and he's from northern Nigeria, and he learned everything on YouTube about how to mind you guys can hear me fine, right? We're good? Brady yeah, we're good. Okay. So he learned how to mine on YouTube, and I guess in the delta region of Nigeria, there's an enormous amount of flared gas at night. I spoke to people who grew up there. You can just see it like the fire in the sky at night, and obviously represents an enormous opportunity to turn that into money and economic activity through the bitcoin network. I talked to him a little bit, and he's planning to go down there and capture some of that flared gas with a container operation this year. So I'm sure security will be, like, a high budget item for him, but that's the kind of gritty entrepreneur that you meet out there. I also just was shocked at the number of developers. I hosted a workshop about bitcoin for nonprofits. Maybe there were 35 people there. 20 of 20 of them were bitcoin lightning engineers from Nigeria. So they came to the workshop because they have local causes. They want to support and they want to be like the Uncle Jim type person. But I'm sitting there in this room and I'm like, wait a second, there's got to be more bitcoin engineers in Lagos than in San Francisco at this point. It's pretty amazing. And I think that's going to just explode in the coming two years. So, Kala is a program started by Carla Kirk Cohen and Bernard Para and a bunch of other African bitcoiners. And it helps programmers and coders become bitcoin programmers and coders. It's an incredible initiative. Qala is what it's called. So Ahref is proud to support Kala and they're going to be churning out a couple, at least a dozen, if not more bitcoin ecosystem contributors every year. And apparently they got in their first cohort, which is just sort of wrapping up. 100% of the graduates got placed with jobs in bitcoin companies, which is incredible. So that's something that's really cool. So I think that's another huge area that you start to see is that there's going to be this huge explosion of growth of contributors to the bitcoin ecosystem. From countries there, I learned about a bunch of other projects. One of them was the fact that a lot of people in Africa, in sub Saharan Africa, have feature phones, but they can't necessarily pay for. Internet is very expensive in a lot of countries. So you might have like an Android or whatever, but not be able to actually have data unless you're at a cafe with WiFi or something. So that's why it's very important to figure out how to use what's called USSD to interact with the bitcoin network. So USSD is like, you can use it on a candy bar phone. It's like a way to use text message protocol to run small apps. So it's sort of how it sort of impacts the type of thing. But the idea is you can send a text message and then get a series of commands back to your phone without Internet that allow you to send a receive bitcoin, which is pretty freaking amazing. And it's done by a team that was speaking at the African Bitcoin Conference and is growing and fundraising. So, yeah, I just got my mind blown like three times a day by stuff I was learning. I met this woman who launched this educational initiative in Nigeria to help girls and boys and teenage girls and boys, Muslims and Christians learn how to use bitcoin. That blew my mind when she told me about how it all works. So, yeah, I consider a pilgrimage to the Africa bitcoin Conference to be at the same level as going to, again, a place like Elsante or one of the other bitcoin circular communities. So, bucket list item for all of you for next year. So anyway, yeah, really fun. Yeah, I remember reading about that. I think it's machakura. I don't know if I'm right, but basically sending bitcoin over text messages. So it's tools like that that get me inspired, because trying to get it. Gives you like a menu and it's like, do you want to send? Do you want to receive? And of course, it's custodial there's issues, but it's like a way for people to send and receive and do activity over the lightning network using text message. And you can easily just withdraw. You can, like, withdraw funds to your own control as well at any point. So I think you start seeing people use some of these kind of systems as kind of spending wallets. Like, you might have some bitcoin in the same way that you might use like a wallet of satoshi or maybe someday soon a fetishment to do spending because it gives you something like privacy that you want. Well, in Africa, people might also have their cold storage or whatever, their savings, and then they might have a little bit of bitcoin in, for example, an account that allows them to get out there and use it and spend it without internet access, which is pretty amazing, actually. So anyway. Yeah, it's incredible just giving them the tools they need. ",timestamp:"00:15:52-00:23:31",topics:["African Bitcoin Conference"],type:"twitter_space",weight:4.890018939971924},{boost:0,date:1635566400,description:"[[John Vallis]] Intro",episode_title:"WHY ARE WE BULLISH Adam Curry Untapped Growth John Vallis Guy Swann ep211",guests:[{name:"Adam Curry",profile_picture:"https://pbs.twimg.com/profile_images/1401922551161442307/XjN2DdFD_400x400.jpg",ref_id:"c304fffc-7fe0-49a1-86b8-d3278f5c89dc",twitter_handle:"adamcurry"},{name:"John Vallis",profile_picture:"https://pbs.twimg.com/profile_images/1568743166035070976/4MyKww8A_400x400.jpg",ref_id:"c3a9fe29-3b78-4665-af54-e293e9d68962",twitter_handle:"johnkvallis"},{name:"Guy Swann",profile_picture:"https://pbs.twimg.com/profile_images/1401969630634196995/DqOuszMi_400x400.jpg",ref_id:"39c31930-d799-40a0-9a46-193117d03418",twitter_handle:"TheGuySwann"},{name:"Untapped Growth",profile_picture:"",ref_id:"79de7f8f-4f00-48c4-897a-57aa2a5fb7da",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/6b8fbd46-fa4a-4d07-a142-9aeb242d249f.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/42550048/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-9-30%2F442bcfea-951a-39d6-a1ce-0bbc6c7b43c3.mp3",node_type:"clip",pub_key:"",ref_id:"5b032ecb-09f5-4581-a1a8-cd0865de6076",show_title:"BTC Sessions",text:"you, brother. It's always a pleasure. Yeah. I host a podcast or two podcasts now, I guess one called Bitcoin Rapid Fire and that's my own. And the other is closing the loop. And that's for CT, a subsidiary Bitcoin company of a larger energy group in Norway. And mine. I just started because I became obsessed with Bitcoin and in 2019, it kind of bubbled over and I couldn't not talk about it. And I needed some excuse to hit up these people in the space to have these conversations. And I guess since then, it's morphed into I don't get too deep into the technical aspect of things. I really like to discuss what's happening on the personal side of this phenomenon and how engaging with this thing and adopting it and using it as your kind of lens for many different aspects of reality influences people on a very personal and deep level and what kind of impacts that's having on culture and such. So, yeah, that's what I like to investigate. And I can't wait to chat with you guys. You also like to Orange pill people like Peterson, so that's a plus, too. I love watching him dive down that rabbit hole and start bringing in his circle into it. So I know that was a while back, but once again, kudos on that. So glad to have you. Thank you. Yeah, it's inevitable that Peterson takes the Orange pill and really goes down the rabbit hole. So it's nice to participate in some small way in that. Yeah. Peterson totally was on the same foundation of the principles to grasp it from and just started running with it. It's just great. So much of the bullshit in a matter of like 20 minutes. It was pretty amazing. Yeah, it was. God, why don't you take it away, let people know who you are and what you do as well. I'm the guy ",timestamp:"00:08:28-00:10:23",topics:["john vallis"],type:"podcast",weight:4.856878281588437},{boost:0,date:1632628800,description:"The Analogy of [[Automobile Innovation]] for Mass Production and the Development of Related Industries to [[Bitcoin]] and [[Lightning]] Development",episode_title:"WHY ARE WE BULLISH Denver Bitcoin CryptoMags Lord Fusitua Jim Crider ep203",guests:[{name:"Jim Crider",profile_picture:"",ref_id:"acb937b5-97e9-4881-a45e-0e9511382019",twitter_handle:""},{name:"Lord Fusitua",profile_picture:"https://pbs.twimg.com/profile_images/1511890587586560000/xGb_Dq_D_400x400.jpg",ref_id:"45559c92-d4f0-42a5-8dc4-a8cce65e95a1",twitter_handle:"LordFusitua"},{name:"CryptoMags",profile_picture:"",ref_id:"79cd9104-fa2c-4996-a179-8acb75642acd",twitter_handle:""},{name:"Denver Bitcoin",profile_picture:"",ref_id:"5ab53f2f-797f-4e1b-90d8-f2ca90e88af4",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/638c47da-8592-4d7b-aa1a-20e28fa0499f.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/40846589/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-8-25%2F381320f0-9d1f-9ee7-893f-57af427aca69.mp3",node_type:"clip",pub_key:"",ref_id:"6f3620f8-fd11-4b37-b8c1-7b8bd991420c",show_title:"BTC Sessions",text:"Think about when the car became much more accessible to normal people. That changed. Not only that changed the perception of the value of a car, that changed industries for production, and that also changed gosh, the way that cities were constructed. And we could have looked at that and said, Henry Ford, this is trash. You're making crap cars on a line. But the iteration there of, hey, let's get this to the masses. And then later on we're going to have these Supercars. But right now it's about getting it to the masses and allowing for an infrastructure to be built that we can continue to progress and build on from here. And allowing that to be shared. Yes, Henry Ford did some pretty crappy stuff, I guess. But the infrastructure that was built based off of that being accessible to the masses allowed for other people who weren't related. They weren't benefiting directly from Ford or company stock or whatever it was. This network of, hey, we're going to build roads, we're going to build gas stations, we're going to make tires. And right then it opened up a place of progress in a whole industry and the creation of something that had been thought of before just because it became accessible to more people. And that's what's happening right now. It's no longer this small thing that's for cyberpunks or something. It's the masses. And hey, how can this fit with my life? Ford effectively created the context for the word infrastructure. Infrastructure didn't mean anything before there was an automobile because all those roads, those highways, everything that infrastructure came from having an automobile. And that's exactly like you're saying. The entire infrastructure of what Bitcoin and Lightning will be used by will change the way people live, the way people consume music, food, how they store value. It will have ramifications right across the human experience. And just quickly, I just realized I completely did not answer Magg's question at all. Sorry. We've ",timestamp:"01:19:31-01:21:40",topics:["automobile innovation","bitcoin","lightning"],type:"podcast",weight:4.856878280787084},{boost:0,date:1676393011,description:"The small time deposits component of M2 money",episode_title:"#24 Decoding M2 (Non-M1): Money supply USA",guests:[],hosts:[{name:"Matthew Mezinskis",profile_picture:"https://pbs.twimg.com/profile_images/1497857369455398914/un-TpS6g_400x400.jpg",ref_id:"0dc3360c-5243-43f0-a2f4-19f8a171550d",twitter_handle:"crypto_voices"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/3325efce-80a8-490c-8645-cad1b9a22d94.jpg",keyword:!0,link:"https://anchor.fm/s/d8decf3c/podcast/play/65039444/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-14%252F312793741-44100-2-d61bc3a08476d.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"3bfbecac-2ad1-4983-9ed0-f1e48f1f0149",show_title:"Crypto Voices",text:"let's put savings back on. We have savings deposits, the vast majority of non M One, M Two retail money market funds. And now let's add the final component of M Two that we haven't looked at yet, and that is small time deposits. Now this is actually back to a bank. Typically. Typically this can be found in a bank, small time deposits. And let's take off savings and retail just to see this one now you see this one's a little bit more jumpy and way down compared to where it's been around the global financial crisis. It was a little bit more than retail money market funds. 1.4 trillion on the eve of the global financial crisis. And then you see that it fell steadily, steadily all the way until basically today where it's $357,000,000,000 of a small time deposit money supply for retail investors in the United States. There is at the zoom here again to comment on the retail nature of what M two is supposed to be. It's supposed to be more retail liquid monetary assets. Of course that's not always the case with small time deposits. They could be small companies that hold time deposits. Nonetheless, this is just how the Federal Reserve counts it out. I believe it's under $100,000 is a small time deposit. And so what is a time deposit? Similar instruments like a money market fund actually or even a savings deposit, which I didn't perhaps give a full definition either. This is again, when you want to hold your money, you want to hold a balance with a bank. And as we learned in prior videos, that does not mean that there's just physical banknotes and coins sitting in a big vault waiting for you to retrieve. No, that's not how the system works. It's a fiduciary system. It's a fractional reserve banking system and basically nearly all of the money always is lent out by banks in the effort to pursue interest, to pursue profit. And it's a highly regulated industry. They claim that the regulations stop prior bank runs and prior crises. That's very, very debatable, very very arguable. I personally don't believe that at all. But nonetheless that's what they claim. So a time deposit is a very unique type of deposit where unlike a demand deposit and unlike even a savings deposit, which now after regulation do changed, basically has no difference than checking accounts. As I mentioned, a time deposit is basically where you know that you are depositing this money with the bank in return explicitly for interest and you won't be able to take the money out until the term ends. So the deposit might be a month, it might be three months, it might be six months, it might be a year, it might be well over a year. But it is a strictly defined term by the bank where it is very very clear that you are loaning your money to the bank. You can't take the money out of the deposit, the time deposit before term comes due. And if you do, there will be a penalty for you to pay, not the bank. And in return for this time deposit account, which what is in it for you if you offer this to the bank, if you deposit your money in the bank into a time deposit account you should receive higher interest payments than you would in a savings account or a checking account. Sometimes checking accounts pay interest, sometimes not. Sometimes they're just free. But that's how it works. So again, not a huge number and even a smaller number than retail money market funds as of today. But this is an account that you will typically find back in the bank. And again it's just defined by the Federal Reserve as a small number, meaning under 100,000 denomination time deposits. So typically retail, but it certainly could be small companies as well using small time ",timestamp:"00:15:42-00:19:51",topics:["Small time deposits","Time deposit","M2 money supply"],type:"podcast",weight:42.29542842100859},{boost:0,date:1624507200,description:"Small business regulations and [[problems with employment]]",episode_title:"Bitcoin Fixes This 48 Small Business with Ali",guests:[{name:"Ali",profile_picture:"",ref_id:"1169edf2-a89f-4d89-94a4-1be1a7b9aef0",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2536a974-d668-4ac2-8613-0b37aa0ca08c.jpg",keyword:!0,link:"https://anchor.fm/s/2a4e8034/podcast/play/36003846/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-5-23%2F969a4306-e9eb-95c5-0e15-42d37c0e61e8.mp3",node_type:"clip",pub_key:"",ref_id:"b1b5acae-0bc8-4117-8d1b-b61e79bea99f",show_title:"Bitcoin Fixes This",text:"up in the morning. I had a question about your being a small business. What sort of regulations have you seen over the past year and a half with chronovirus and everything? I imagine that couldn't have been easy. And to some degree, I imagine it's still very difficult. What has that been like? Yeah, it's been tough, Jimmy. We were forced to close down our dine in area, but we're already operating most of our business with deliveries, online delivery platforms like Uber Eats and get the dishes and all these door dash and all these things and then take out like, people just come in and pick up two or three Sharmas and take it to their families. And our business has to adapt to this shift in the way people order food. Luckily, we were already there. We were integrated with all the online platforms and we were able to make that transition quite easily. But, yeah, for the first month, I remember the first March of 2020, within one week, our sales dropped like 80% in a week. And it's quite devastating because we didn't know how long things going to last or anything. We laid off people, we tried to get them back, but they said, no, we're getting free money from the government. And that's part of also the reason why we felt like something was messed up with the financial economy and we felt like there was too much money flying around and it was being worth less as time goes by. So, yeah, we just hustle through it, Jimmy, like we did what any business owner would do. You just hustle through it. Something like that Bitcoin wouldn't save you from a situation like this. You need to just make your business work. And if it works and you've done the Bitcoin decision now, you have a successful business and you're in a position of strength to expand your business however you want or to do all the things that you want to do with your business. So it has been challenging, it has been tough, but you got to fight through it. That's the best advice I can give to people. And it sounds like you had some labor problems, maybe even some regulatory problems and things like that. How do you deal with the fact that people are getting paid more to not work, and how do you hire people in that sort of weird incentive environment? Yeah, it was backwards, Jimmy. We tried to get people hired after business started picking back up in 2020. And then they were just like, no, we're good. We're getting free money at home. We were like, okay, for a while there, we had to raise our pay just to attract the people staying at home. So we had to basically compete with the government and paying employees. So, yeah, we did that. But then at one point we said, you know what? We don't want to come back school, you guys. We're just going to hire a whole new crew of people and train them from scratch. And we did that, and it worked out fine in our industry. I feel like there's always some people that are willing to work. You just have to really look for them, but they're not easy to find, but you end up finding good people eventually. Yeah, I've noticed that about small businesses, even here in Austin and everywhere else, you see Help Wanted signs just absolutely everywhere. And the reason is because no one really has to work. So they get paid maybe 20% more for working versus sitting at home and doing nothing. And they'd rather just sit at home. It feels very off. And I can't imagine how difficult it must be for a small business owner to have to kind of deal with all of that. It's really hard, Jimmy. Like, I have my sister and her husband. They're dentists. They have a few clinics here in London, Ontario. They have it even worse because most of their employees are like female hygienists and dental assistants. And they have their kids staying at home and not going to school. And it's even harder to get them to come back to work because they say, oh, we can't leave our kids at home by themselves. We're just going to stay at home, get paid, and you go figure it out. We can't come yeah, it's tough on medium and small businesses. And it's just the reality. It's the backward reality that we have to deal with right now. It's insane to me. Well, does the Canadian government sort of, like, subsidize you for at least some of the hardship that you're going through, or do you kind of just have to deal with it as a small business and sort of not have that many workers or shorten your hours. What are your options? Here's a cherry on top, Jimmy. If your business does well or improves from the previous year, improved, like its sales and its revenue, then you don't qualify as a business for any government assistance. Right. So we have been able to be in that situation where actually our business improved from last year. But because we hustled and got our business going and our revenues increased, we get left out from all the government grants and the rent subsidies and all of that that is given to everybody else that basically just locked their doors and didn't bother to try. I'm fair, but I'd rather be in this position where we don't need help than in a position where we're handing out a hand to the government and asking them for grants and whatnot. So I'm happy this way. Well, are your competitors that kept the prices the same? Are those ones that got, like, government assistance, or are they hustling just like you? Well, yeah. I'll give you an example. Like one of our stores we have like a neighbor, that restaurant, it's like a pizza store. And they've been basically they shut their doors since this whole thing started and they've been able to get enough grants to pay off themselves, their landlords, everyone, and not basically not do a thing, just have the door shut. So from this perspective, it kind of feels unfair. It feels right that if you're not able to adapt in this environment, then you should be kind of liquidated and other entrepreneurs can take up that space and make a model that works better in this environment and so on. But that's just not the way it's working right now. And in that sense, it's kind of unfair. But who cares? You got to pick up our sleeves and that's Bitcoin so they can do whatever they want. ",timestamp:"00:18:56-00:27:00",topics:["problems with employment"],type:"podcast",weight:4.846990585328009},{boost:0,date:1266645600,description:"Power of small stock holder",episode_title:"5. The Profit Motive",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ef62c7ab-ef09-47b7-9af4-2ebe2384a72f.jpg",keyword:!0,link:"https://dts.podtrac.com/redirect.mp3/cdn.mises.org/05_AustrianEcon_Rothbard_1972.mp3",node_type:"clip",pub_key:"",ref_id:"99fc3f47-1cb2-449e-bd46-97a597fce97a",show_title:"Austrian Economics: An Introductory Course",text:"Well, how about the stock solar manager? This junction the first place. Nobody said it's either way, there's usually a store manager developed here. The story goes. Well, after all the stockholder sitting there. He's got no control. He's just having a dividend. Well, it's true. If I have one share of General Motors stock I'm not going to have a very powerful influence on the decision making process of General Motors. No reason why I should. Nobody expects to. But nobody ever claimed that no New York classical economics with an IQ over 20 has ever maintained that the small stockholder has much power. The point is that the large stockholders have the power. And if you get the large stockholders together on issues then they become dominant. The small stockholders stockholders already do have power. Another way it's very important, a small stockholder if he doesn't like the way things are going if he doesn't like the profit record usually as a corporation he has stock in, what does he do? He sells it. I don't like General Motors this year. Profits are falling, I'm selling a stock. If people start selling the stock small, they are, this means the price of the stock declines and the big guys are holding a lot of stock at a very worried because the value of their assets goes down this way by voting with their feet, so to speak. The small stockholder does it decision, even though not directly not by voting, but by voting in the market, just since it's more powerful. So that's one thing. Also a person currently should contrast this the power the small stockholders have by voting with their feet and the corporations contrast this is so called publicly owned and we'll get back again later, because the government ownership, so called publicly owned operation, where every citizen, by virtue of being a citizen, for example, owns a post office. Well, can we sell our shares in the post office? I don't like the way the post office is being run. I want to sell my share, where do I go to sell it? Obviously we can't go anywhere talking, we ain't got no shares. It's really government owned and the public ownership is a pure mythology by which the government closest operation so we have the power in a private corporation to sell a share if we don't like it, we don't have the power in a so called publicly owned government operation you can't sell the shares of the public school, for example. Okay, let's ",timestamp:"00:07:39-00:10:00",topics:["Small stock holder","stockholder"],type:"podcast",weight:4.837404131889343},{boost:0,date:0,description:"Talk about Value to Value Apps and Brian Murray' Project",episode_title:"Cool Apps Built on Lightning - March 16, 2022 - Voltage Twitter Spaces",guests:[{name:"Chad Atkins",profile_picture:"https://pbs.twimg.com/profile_images/1200611447979544576/W9ocRJTb_400x400.jpg",ref_id:"62da3c50-0a46-400b-81a3-5f482f5b8fee",twitter_handle:"Chemchad"},{name:"Michael Atwood",profile_picture:"https://pbs.twimg.com/profile_images/1362207977470521345/Jy2_Ge60_400x400.jpg",ref_id:"16359ade-afb9-4a37-be0b-0844a6134327",twitter_handle:"Dooowta"}],hosts:[{name:"Nate Glasky",profile_picture:"",ref_id:"0662789d-b39e-4aed-ad6f-44257695b6af",twitter_handle:""},{name:" Bobby Watts",profile_picture:"",ref_id:"ae2685c6-1307-473a-95b0-87c234e50483",twitter_handle:""}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2ec62250-4755-4616-8342-096a2cfab95f.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=4EJrnxYOShY",node_type:"clip",pub_key:"",ref_id:"addee850-119f-472c-87c2-05fc0642abeb",show_title:"Voltage",text:"guess until someone raises their hand, there's one. I don't have a list maybe like you do, but one of the things that's on my mind is I've been playing a bit more with some of these value for value apps where basically whenever you find something good, you can tip or just get someone sat. Like what I've been mainly playing with and enjoying is Fountain and Stacker News. I just think it's super fascinating and I can see in the future how there could be like a Wikipedia that's Lightning based where you get tips for creating good content and I can just see how that could really take off. But I've been really having a good time with Fountain, using that app and just onboarding a lot of friends, and I know they're doing a ton of things behind the scenes that are going to be rolling out over the next couple of months, which is exciting. Yeah. Fountain is really slick because it's sort of like an overlay, over spotify if you want it to be. Right. I had a little bit of time playing with it recently, but it's really cool. I recommend anyone to try out Fountain if you listen to podcasts. Yeah, and I just heard, someone told me today that whenever they logged in, fountain gave them like 1000 free stats or something and you can use it to kick start streaming stats to people and paying content creators, but pretty sweet. What's up, Brian? Hey, welcome up, man. A fellow shadowy supercoder, I believe. Yeah. Brian of London. What's up, man? You're muted right now. Did you want to share something. That'S unmute? I'm in a car, so if it sounds terrible, I'll duck off again. Yeah, I joined Voltage today. I've been building stuff all to do with Podcasting 2.0 for a few months now and interfacing with Hive. I know, don't worry, it's another blockchain thing. But this whole business of value for value is absolutely critical. And Lightning is very important because of the low fees and other than the hassles I've been having with nodes and hardware braking, which is why I just started up a voltage node tonight because I spent the whole day messing about with an umbrella and broken SD cards and stuff. So I'm really hoping that Voltage is going to be better for me to build something kind of that I can really share. But yeah, looking forward to getting that going. And what I'm actually doing is converting from Hive into Lightning and lightning into hive because there's about four, four or 5000 Lightning enabled podcasts on the value for value system right now. But the little secret behind that is that about two and a half or 3000 of those I put there because they're all video channels on something called Three Speak and I handle the stats for those. So, yeah, there's a lot coming. A lot coming. I love the vision. That's awesome. Having the ability to send not just quick payments, but small, instant free ones, relatively free, is just incredible. Like, worldwide, the amount of things that you could build is incredible. So that's really cool, Brian. Yes. Anyway, thanks. A lot of stuff to build. I hope that Voltage helps smooth some of those corners for what you're building. Well, yeah, I mean, I was building something and I've been building it all sort of within my home, basically. And I just got to the point where I'm sharing. I've got a method to expose invoices out into the world, but I don't like how I'm doing it. And I have to have a node that's public. Lightning is a bit of a fiddle, I've got to say. I develop on two things because I'm developing on the Hive blockchain, which is super easy because it's got no fees and very quick and it's got an easy developer and I don't have to think about all these channels and stuff. But what Lightning brings is this ability to have these wallets all over the place. That the way Lightning works for small wallets on phones, inside apps like Fountain and stuff. There's nothing else like it that I've seen. So there is a combination, which is what I'm combining two different things because I think on the receiving side for podcasters, actually receiving SATS on their own node is beyond most people keeping a node running with the channels, with the liquidity in the right places and all of that stuff. I don't think that's going to be a mass market thing. Yeah, I think over time that should be softened around the corners, automated a little bit, hopefully. But yeah, we're still definitely early days where it's nice and tough, so to speak. Yeah, it's a struggle learning. I've been on this for like nine months now, learning how to open channels at the right time so you don't get whacked with too much fees and who to open channels to and the sort of the dark art of channel fee pricing and all that stuff. So you open a channel and go to bed and then in the morning the SATS that you thought that you would have for outbound have all snuck off somewhere because somebody rooted a million SATS for you and you didn't change your fees, that kind of stuff. Anyway, it's all learning. Very cool. All right, thanks for having me on. I'm going to mute. Bye bye. Thank ",timestamp:"00:02:18-00:08:42",topics:["Brian Murray"],type:"youtube",weight:4.822762489318848},{boost:0,date:null,description:"Bitcoin price indicators and how Bitcoin pricing might stabilize ",episode_title:"Café ₿: #Bitcoin Beginner Q&A",guests:[{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Stephan Livera",profile_picture:"https://pbs.twimg.com/profile_images/1362551718110580740/v-W5Q2uo_400x400.jpg",ref_id:"72f57157-c96e-4466-8bf1-290cfe1f8a0b",twitter_handle:"stephanlivera"},{name:"Thomas J Lake",profile_picture:"https://pbs.twimg.com/profile_images/1529168328534769670/5cl2Y_k-_400x400.jpg",ref_id:"21541a47-0601-447c-99c2-312d1a63c19f",twitter_handle:"thomaslake"},{name:"Goodguy",profile_picture:"https://pbs.twimg.com/profile_images/1363216959576285185/unulY4yd_400x400.jpg",ref_id:"0c3fec75-9cc2-4c0f-8dbe-db7fae2b585b",twitter_handle:"goodguybiker"}],hosts:[{name:"Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"49966553-d55b-44c9-94ec-8fee09eee5c2",twitter_handle:"CitizenBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/35b20273-49f2-45ea-a9f4-dc479d86573c/7ae5315f-beb2-41e2-b672-65dd1f102017.mp3",node_type:"clip",pub_key:"",ref_id:"dbc2c8f6-e85d-449c-a431-e52f6e7594e2",show_title:"Swan.com",text:"We're going to continue to do these, I think. I've been talking to Jacob about this, doing this maybe once a week, doing a beginner Q and A, getting back to our roots. And if you guys want to participate in that, we'll talk about it and see if we can do this on a more regular thing. Let's do one more quick question, and then we will make some closing comments and wrap the show. Zoom out. Do you have a beginner question? Welcome. Hi. Thanks. It was a little more advanced, and it was specific to you guys talking about the pricing and the measurement of pricing. So it's not a simple one. Sorry. But I was very fascinated to understand how the price might stabilize over time and what the indicators are there. In. Terms of pricing everything in Bitcoin. I'm going to I'll give a quick answer to that, and we'll move whether my answer suffices or not. Okay. So basically, I think there's an opportunity first of all, there's an opportunity cost, and also, there's not enough monetary energy in it yet for it to be more stable in my iceberg versus ice cube example. But the other thing is, is that it's not quite being used as a medium of exchange yet, which will also help stabilize. And the reason it's not, in my opinion, is that we're still in the value accrual phase. There's an opportunity cost. Many of the people holding it don't want to use it or sell it because we believe it's going to gain in value. I mean, we'll use it on a small scale. I'm using it on a small scale. But, you know, if if a if you look at the the coins that are held today, I think something like 60% or more of the supply has not moved in more than a year. And what that tells me is that the people that are holding it think that there's an opportunity costing it and that's why it's not moving. And until that's arbitraged away, you're not going to see it fully employed as a medium of exchange. Without that, there's still going to be that level of volatility there. Go ahead soon. Yeah, thanks. I guess there's a bit of reading to do that on economics, but it's fascinating to see how the globe or the whole world might start to equalize and synchronize in terms of how they measure and value everything around the world. On top of that, I just wanted to add maybe to some of the newbies. I've been in this space for a couple of years and thought I had a good understanding. And then I listened to Lynn Olden over the weekend and she described bitcoin as being unique in that it solves this abstraction of the money. And my head exploded because I realized somehow that actually there's a coupling of the transaction itself and the record of that transaction. And it just completely blew my mind because I for some reason couldn't see that until she described it and it solves the abstraction. I think that's the double spend issue. By Zenfine general's one, but it was. Her description specifically on simply bitcoin of it being married. Awesome. Yeah, it takes all sorts. Every one of us who explains bitcoin will reach different people. And that's the reason why it's great to have such a great spectrum of personalities that are doing it. Let's get to some closing comments and we'll wrap. Thanks for coming. Zoom tomer. Do you want to make closing comments and we'll let Stefan go and then we'll move to wrap. Closing comments. Bitcoin is not that hard. It's a very simple thing that you can take custody of. Use it the way it was originally intended to be used because it's kept all those promises. There's a lot of charlatans in the space. Beware of people promising easy returns, safe returns, quick returns. They're all out to get your bitcoin from you and they're selling you something different. I just hope you can learn the lesson at the expense of others rather than at your own expense. The direction that it's going in is you will likely eventually own bitcoin. So start figuring out how to own it sooner rather than later. Awesome point out. Before we go to you, Stefan, I just want to say thanks to Good Guy and Neil and everybody who comes up here on the regular, we're really out of time. Otherwise I do closing comments with all you guys. We love you guys, we appreciate you guys coming. Stefan, closing comments and then we'll wrap. Yeah, look, I would just say don't feel overwhelmed. It's very simple. Like once you've withdrawn and then actually practiced doing a transaction, you'll find it's actually a lot simpler than what was thought. So I think it's a common thing where people are maybe they're a little worried the first time they've ever done it. But then after that, I promise you, it's a magical feeling. Doing your first bitcoin transaction, doing your first lightning transaction. I think most of us can remember our first bitcoin and our first lightning transaction, so definitely get out there and give it a go, if you haven't already. We do have some regular webinars that we're running, so make sure you get on with our swan email list and you'll find out about those because we're hosting some webinars ",timestamp:"02:01:53-02:07:04",topics:["Bitcoin volatility","pricing"],type:"twitter_space",weight:4.822762489318848},{boost:0,date:null,description:"Is there a minimum withdrawal amount in Tweetoshi?",episode_title:"Café ₿: Bitcoin News & Using Bitcoin w/ Twitter, @tweetoshiapp",guests:[{name:"@TweetoshiApp",profile_picture:"https://pbs.twimg.com/profile_images/1532819967133028352/frxdtSHX_400x400.jpg",ref_id:"97e59475-beaf-44fe-b1b0-ea2a63d335b6",twitter_handle:"TweetoshiApp"}],hosts:[{name:"@alexstanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"6455df34-1abc-4ce8-9bb8-b02d411accec",twitter_handle:"alexstanczyk"},{name:"@pacificbitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1570140686753619970/UFEnzSv5_400x400.jpg",ref_id:"f8268a26-9761-40c1-bdd6-dad9db44d032",twitter_handle:"pacificbitcoin"},{name:"@SwanBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1491428856858914820/aFlitvha_400x400.jpg",ref_id:"da3f56bf-9763-4389-a9ec-d807049bd0b8",twitter_handle:"SwanBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/25fad353-f7a7-43cb-9197-beef1e783983/e2ec31c3-43e5-4e81-af3a-b153b8c219ca.mp3",node_type:"clip",pub_key:"",ref_id:"fc9b5e45-fc94-42dd-a722-bde164f8c24b",show_title:"Swan.com",text:"a maximum is there a minimum limit in terms of what you can withdraw or can you withdraw like a single satoshi? Yes, for now there is like a super small minimum limit of 100 satoshi. We would like to get it down to one satoshi in the future, just like for the for the, like, let's say a meme. So we can withdraw literally anything, but for now, there is 100 satoshi limit. Cool, thanks. Would one satoshi even be possible? Because you still have to pay the unchanged transaction fee. Now you can withdraw one satoshi from Thunder Games, for example. So it's possible. Yeah, but what does that mean? Are they paying the transaction fee? I'm assuming that there is no routing fee for that small of the transfer. Like if you're doing one satoshi from Thunders custodial wallet to Moon or to whatever, they have it set up in such a way that it works. Either they eat the fee or their channel is set to zero fee. Because if your channel is set to zero fee, it's lighting ",timestamp:"01:52:34-01:53:48",topics:["Tweetoshi App"],type:"twitter_space",weight:4.8130316734313965},{boost:0,date:1599305976,description:"How US debt affects the economy ",episode_title:"Borrowing - where is the money going? Corporate, Small Business, Government",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/abd94520-1490-42aa-b349-9e861494a654.jpg",keyword:!0,link:"https://anchor.fm/s/138410f8/podcast/play/19113751/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2020-09-05%252Ff840233e9317a45e95724ebf5de7e057.m4a",node_type:"clip",pub_key:"",ref_id:"e97927cd-526b-46ef-bde2-7e60339fd4a5",show_title:"Economy Guy",text:"small businesses doing regarding borrowing money? Well, they go to a bank and they borrow money. And typically the bank, they go to an SBA bank. That's a Small Business Administration bank. That's a bank that does Small Business Administration loans. So what is one of those loans? Sounds interesting. What is that loan? Well, the SBA, the Small Business Administration, which is a government agency, guarantees someplace between 50% and 85% of that loan. In case of default, the government will back it. So that reduces that much risk of the loan to the bank that's doing the borrowing. So that really lowers the risk to the bank. That's pretty good for the bank, right? In spite of that, the SBA banks are not lending right now. You say what? Huh? Why? Well, you see, the SBA banks are going back to the Small Business Administration and saying, hey, you know, that amount that you guarantee, we'd like you to increase it to 90%, even 100%. Splendid. Fully guaranteed. So you see, the banks don't want to take any risk or truly minimal risk. That's where they're coming from. Now, do we have a measure of how much? When I say SBA lending is stopped because small businesses is the heart of the US economy. Small businesses are the things that create employment, big employment. Most people work for small businesses, not the big corporations. So encouraging small businesses to borrow money and then using it as a good loan and creating jobs, creating profit, creating their own business, growing their own business is a good thing for the US. I mean that would create a boom in the US GDP. But the lending has basically stopped. And I have one measure of a group of banks. So it's not all lending, but a group of banks. Their measure is that since April of this year, 99% of the loans have stopped. Only 1% of loans equivalent to the last year have gone through 99%. That's effectively all lending to small businesses have stopped. And why? How big are the loans? I mean, the loans we're talking about are 5 million to $10 million, no more than 5 million. SBA loan can't be more than $5 million, but the Cares Act increased it to 10 million. Well, that didn't mean anything because nobody's lending money. So who Cares Act did not affect anything. What are the banks doing? They don't want to have any risk. What they're saying is to companies that are surviving through this pandemic, they're saying, well, I don't know if you're going to make it when we recover. I mean, you may only be growing because of the pandemic. When you may be gone, your bone could be bad. And they're saying to the people who are really hurting that need their money, we don't know if you're going to make it when the pandemic is done because you may run out of money before it's done. So in both cases, a good company and a bad company is not lending because it's all about risk. That's kind of interesting when it comes to small businesses. And the result there is without lending in that particular sector, we're not going to have a fast recovery or as fast as possible. So one thing for you, the listener, to listen watch for is lending to small businesses. Is there something that could happen in the future that you will hear in the news that is freeing up money? If so, that will be good for the economy. If not, it's going to be a slow growth. And now for the last area who are borrowing money? That's the government or the US. Treasury. In the case of the United States, people who are lending money are throwing money at the US Treasury. That's big bucks. The big bucks are going to the US Treasury. That's where the money is ending up. And how big is big? Well, this calendar year for 2020, the big bucks, it looks like the US Treasury is going to borrow about $5.4 trillion. That's so big, it's unimaginable. How big? In the good old days, when we were borrowing too much, it was $1 trillion a year. This year it's going to be $5.4 trillion. That puts it into perspective. Horrible, horrible, horrible. And that doesn't count if there's a new stimulus package passed by Congress this year, which I doubt will happen, my personal opinion is that Congress is at loggerheads. The two parties aren't about to agree on anything since we're so close to an election. So I don't think a new stimulus package would happen. But if it did, it would be even more borrowing. That's as simple as that. We don't have the money. Otherwise. The only way to get it is to borrow it. So the US government is the perfect example of bad borrowing. They borrow money. It is not productive. It does not pay back anything. They're not building roads and bridges that can pay back the money or contribute to productivity or all those good things that you can do with money. No. So what happens with all of the debt, which incidentally, is going to be 100% of GDP this year? That's supposed to be a magic number. It shouldn't happen. It should cause comets to fall out of the sky or something. But that's what's happening to the US economy this year. It's massive debt. But what happens every year as they bring in taxes? Where does the money go? Well, part of that money goes to paying the interest on the debt. And the bigger the debt, the bigger the interest. Now, that interest is not productive. It just goes to pay back the people who lent the money. It's not going to building roads or building factories or buying things that are important to buy. It's not helping the economy one little bit. So I say to you, ignore that. It's not good US Treasury, even though that's where the money is being thrown, it's not good debt. So there is my positive message for the day. I hope you liked it. That's where we stand. Corporate debt is they're in good shape. They have too much money. They don't know what they're going to do with it. They'll probably do something foolish with it. They have in the past. Small businesses can't get a loan so we can't grow. Because of that, the treasury has more money than they can use. Anytime they want money, they just say, please give me, and people give me it. So that's happening. That's the world of debt in the United States today. That'll change, of course. But be aware that all of those are not good things for our future and are not rosy rosie, I'm sorry to say that I do want some a lot more Rosies. So ",timestamp:"00:12:05-00:19:41",topics:["US debt"],type:"podcast",weight:4.810045599937439},{boost:0,date:1673549347,description:"How different people use different methods to safekeep their assets",episode_title:"BR019 - Proof of Keys Day Twitter Space ft. Lopp, Craig Raw, Lazy Ninja, mshodl, Rijndael & guests",guests:[],hosts:[{name:" Jameson Lopp",profile_picture:"https://pbs.twimg.com/profile_images/1594137153625276416/t1RUP3yP_400x400.jpg",ref_id:"062ec6c8-0fa2-4bf6-9aa1-7ab347df2530",twitter_handle:"lopp"},{name:" Craig Raw",profile_picture:"https://pbs.twimg.com/profile_images/1362841242665631745/UtA3FBQU_400x400.jpg",ref_id:"f2d1f5f0-2e1c-4d16-937d-4d48627cb955",twitter_handle:"craigraw"},{name:" Lazy Ninja and Rijndael",profile_picture:"https://pbs.twimg.com/profile_images/1362843002318721028/PNKWuu0-_400x400.jpg",ref_id:"23edbd50-9b0b-4e9a-aa56-57c2af074173",twitter_handle:"FreedomIsntSafe"},{name:"Justine Harper",profile_picture:"https://pbs.twimg.com/profile_images/1559710083734540289/HXTH4kqO_400x400.jpg",ref_id:"7b5a8957-1c4b-474f-bc38-291b382a13e6",twitter_handle:"mshodl"},{name:" Dee",profile_picture:"https://pbs.twimg.com/profile_images/1600155411868434433/9k1KQ8i5_400x400.jpg",ref_id:"ad33288b-28d4-4f15-9492-f64bce891613",twitter_handle:"HodlDee"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/f1879df9-9bc6-4a76-951f-24548da768ef.jpg",keyword:!0,link:"https://anchor.fm/s/9500fad8/podcast/play/63399670/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-0-12%252F0a789f60-2c9a-6bbb-945a-79f3dd937cee.mp3",node_type:"clip",pub_key:"032d7609ff3f4a5232e4d60967971e23bc671dfb68020845a59bab5dc1f3b93b87",ref_id:"08600eb8-a8b1-4be4-b505-3adc409da2f8",show_title:"Bitcoin.Review Podcast with NVK & Guests",text:"holes, but just before I go there, I just kind of like want to recap. So I think we all agree that different people, different needs, different solutions. Even the same people might need different solutions, right? You want your spending wallet, you want your lightning wallet, you want maybe a warm wallet. I think we all agree that keys should never be on a computer or touch a computer. I think we all agree that harder wallets work great. I think we all agree that multisig solves a lot of problems. We don't all agree that single SIG plus passphrase is great, but we do have some agreement on where the faults lie. We can recap that if you guys want to pick at anything I said, so don't feel like I am putting your foot down here. So I guess the main thing is that I want people to take out of this sort of like, simpler, more new part of the conversation is don't get overwhelmed with solutions out there. You have time, you can test things, you can experiment with different services, you can experiment with different wallets. Most of the solutions are free. And then if you want to get into harder wallets and you can even build your own solutions out there, I think it's important that people don't roll their own solutions, especially not their own cryptography. I don't think that's a concern anymore, but it used to be back in the day, and then sort of like we can start getting to the weeds of some of the FUD that confuses people around different solutions and go from there. Do you guys have any sort of like short comments about the previous sort of like noob conversation that you want to before we move on? Yeah, I mean, like, we said it earlier, but just to really drive it home. If you got $50 or $100 on coinbase or Gemini, just go install moon wallet or blue wallet on your phone and get it off and start playing with it. Like, you don't have to go straight to seed plate buried behind the third oak tree. If you've got $50 on coinbase, you can really start small. So you just said it, but it's worth saying over and over and over again. I mean, that question does come up every single time I do spaces somewhere or back in the clubhouse thing. It's amazing to me how much people don't understand that they don't need to do like twelve out of twelve DVDs for $100 worth of Bitcoin. And that is how you should be experimenting with Bitcoin. Don't go buy an asset with all your life savings until you understand how the heck that asset works. Well, a lot of people I've heard the same thing, like clubhouse or friends will say, well, I only have $100 worth of Bitcoin. I don't really want to go buy this hardware wallet. That's a certain amount of money. It seems kind of crazy for the amount. It's like, well, you don't have to. There's free mobile wallets. That could be your first step. So I think the biggest takeaway from this space is it's not all or nothing. Like take the steps and we're kind of walking through the steps specifically. But you don't have to spend money on an assigning device or hardware wallet. You can just download a mobile wallet. That's the first step. And then even when you start getting more sophisticated, you also don't have to have one wallet, right? I have Blue wallet on my phone. I also have several multi six set up, right? And you can think about partitioning your money where you have a really small bucket of money that's super easy to get to and very easy to spend. And then you have a bigger bucket of money that's harder to get to and harder to spend. And those things can change as your life does. Just like we're not walking around with our life saving in our pocket, right? We take what we need to spend when we go get coffee or whatnot and the other is secured somewhere. So, yeah, the multiple wallets, depending on your needs is totally good. You know it's a segregation, right? It's like hygiene in that sense. You're going to have your savings account, you're going to have your checking account, you're going to have your credit card. You do segregate fiat in all these buckets in your life, right? So why not do the same with Bitcoin? You don't want to be buying coffee of all your wealth. I think there is something interesting to be said about diversity and how to apply diversity from a security mindset. For example, one really common trope that we see is people coming to us who they have, for their safety, diversified their funds across five or ten different wallets. And some of these may be self custody, some may be custodians, but their whole idea is don't put all of your eggs in one basket. And my push back against that is that yes, that type of diversity does of course reduce the chance that a single catastrophe will completely wipe you out and cause you to lose everything. But it can also be increasing the chance that you will have a partial loss in one or more of those setups will fail. So one interesting aspect of multisig is that the diversity that you can add to the setup by having keys on different hardware manufacturer devices in different physical locations and basically different security properties around each of the keys in that setup is that that security is actually additive. It creates a stronger and stronger setup because it's essentially eliminating these single points of failure. If an attacker, for example, compromises supply chain of popular hardware manufacturer. If your multisig setup is not using all the same hardware manufacturer, you're protected from that. That's just one example. So, point being, diversity can be good, but applied the wrong way, it can actually be harmful. It's kind of fascinating and it really goes to show like why there is no sort of fix all solution. Each set up is going to have different sets of trade offs. And the complexity also does increase some issues there too. So you could argue on one side, it's like you want to have some diversity in your harder wallets because if one vendor is evil or really like, realistically speaking, it's going to be a targeted attack against you that it's going to maybe replace Harder or something like that. You could be fault to that, but at the same time you could have multiple Harder Wallets and say, the software update on some of them break the multisig setup, it's unlikely to have full loss of funds, but it could be quite the issue to sort of go back to you being functional. And then each vendor is going to offer sort of like different thresholds and some vendors out there offer simply either no security or illusion of security or like really crappy hardware. There's like hundreds of hardware wallets. I'd say probably out of 195 of them are absolute garbage and should never be used. And the guys from Ledger actually do a great job breaking Harder Wallets. You should check out their Don John blog where they have broken Harder Wallets and how long it takes to break them and how much money does it cost to break them. There's Harder Wallets that cost like $10 to break. There's Harder Wallets that cost half a million dollars to break. Not all things are equal just because they're the same category. So I guess this is a good segue to move to more sort of like rabbit holes of security and things of sorts. So why don't I bring up maybe lazy ninja who is a security researcher for hardware. He has helped us find problems. We have a good guy as well. He's a fantastic security researcher here too. We have what else do we have here that is of the category for the beginner stuff? While we're on the topic, I know Sparrow has a great thing called Master Fingerprint ID. You know, we as well have something called Master Fingerprint ID that you can check on the cold card itself. So if you're you know, you're dealing with a single SIG wallet and you know, you don't know if in your if you're in your passphrase wallet or you're in your BIP 85 wallet or whatever you want, you can go to Advanced Tools and go to View Identity and then it will give you a string of eight letters and numbers. And that's basically the first four bytes of your public key. So it's just a great way to know. It's kind of like a username or something like that, right? It's just a way to identify what wallet you're in without having to try and sign a transaction and get that error. So it's just a good thing for beginners to know about and I find it very useful. Thanks. Dee. I think we're going to be attacking a lot of those little issues. Justine and Jameson, thank you so much for joining me. Like, I love if you guys stay, but if anybody needs to go, totally. I don't want to take up your time, but you guys have a lot of knowledge to push out, so please do stay if you can. And with the first part of the space is gone. Let's improvise on the second part, which I think will be really cool to sort of talk about some of the fun around solutions and some of the ways the products in the market do address them. Hopefully, we can clear a few of those, because that's, in my view, one of the things that keep people from using good solutions is just this fear of the nearly impossible attacks, or actually attacks that are completely alive. So why don't we start with can ",timestamp:"01:09:32-01:19:34",topics:["Hardware wallet","multiple crypto wallet"],type:"podcast",weight:21.998553860382764},{boost:0,date:1665687900,description:"Small Towns Only Have Terrible Food Choices - Socioeconomic Problem? It’s A Govt Subsidy Problem - Flipped Food Pyramid ",episode_title:"#1104 Dr. Philip Ovadia - Heart Surgeon Explains What To Eat To Save Your Life",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/7934bd86-9344-4f1a-9c36-ea5f63ae418e.jpg",keyword:!0,link:"https://anchor.fm/s/b4841110/podcast/play/58963723/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2022-9-12%252F290744275-44100-2-e4f30b61276f1.mp3",node_type:"clip",pub_key:"032ff32727b06d20a13a0a8d8dfe09d39659c16deeaffbf94d6d21ec6bb28850b6",ref_id:"50cf9922-5d13-4a4b-8621-e934b422aebf",show_title:"The Pomp Podcast",text:"town in North Carolina my wife and I were driving through at one point, and it's kind of one of these streets where there's three, four, five stop lights, but it's a one way or a kind of straight shot that you can look down. And for whatever reason, I said to her, oh, my God, look at all the signs. And it was Wendy's McDonald's. Bojangles chickfila. It was just like all of it, right? And it was almost like a shot you would see on the Internet that kind of goes by when we were like, wow, America is so stupid. And as we looked, what I think shocked me was in that small town, I don't know if you could have an average salary and eat healthy, right? Because everything that was thrown in your face was cheap and unhealthy. And so how much of the obesity epidemic or kind of the rise in the unhealthy American is a socioeconomic and like a poverty problem or a money problem versus people have the money to go and eat healthy. It's just they aren't educated or they're lazy, and they don't want to do the work to actually do that. Yeah. So I do think that both play into it. When you look at why is processed food so inexpensive? You start to look at government incentives around the crops that get subsidized versus why aren't those subsidies going to the ranchers who are raising cattle? So you have to ask, why is that food the inexpensive food? I mean, the reality is it doesn't need to be that way. We could very easily shift what becomes the inexpensive food for people. And then there certainly is the educational piece of it. And quite frankly, we start to get into the miss educational piece of this because, you know, the predominant messaging around healthy food here in the United States for the past 50 years has been the food pyramid. That whole grains are the healthiest thing you should be eating and cereals and wheat and all of this. That's insane. That is literally insane. We have more than enough evidence at this point to know that that shouldn't be the case. The food pyramid should essentially be flipped upside down. So then you start asking those questions because it's like, okay, not only have we gotten this wrong, but we got it so wrong that it almost has to be intentional. You can't mess things up this badly without there being some intentionality to it. Okay, so ",timestamp:"00:12:30-00:15:19",topics:["Small Towns","Socioeconomic Problem","Govt Subsidy Problem","Flipped Food Pyramid"],type:"podcast",weight:4.9863560048368285},{boost:0,date:1676681753,description:"The possible applications of Cashu Chaumian Ecash",episode_title:"WHY ARE WE BULLISH? Ant, Bitcoin Island, Decentra Suze ep324",guests:[{name:"Decentra Suze",profile_picture:"https://pbs.twimg.com/profile_images/1614189317345214464/Z4BZBBbb_400x400.jpg",ref_id:"da307464-4ac8-449a-81f0-74ea9749dd1b",twitter_handle:"DecentraSuze"},{name:"Ant",profile_picture:"https://pbs.twimg.com/profile_images/1617275233831886853/RlWpn1qQ_400x400.jpg",ref_id:"9575e6e8-cd06-48f0-b548-801f7d2357a5",twitter_handle:"2140data"},{name:"Bitcoin Island",profile_picture:"",ref_id:"9b88c77a-65c9-4ae6-a30c-890937636d7f",twitter_handle:"BitcoinIslandPH"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/65227742/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-18%252F313420179-44100-2-8fb4b50d66df8.mp3",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"784b1ee8-56e7-403c-b813-24713fd3a29c",show_title:"BTC Sessions",text:"first of all, has anybody here either heard of or used Ecash via lightning? Bill, you have? I'll just ask, what has your experience been? I haven't been able to use it. I've only heard about it, but here on the island we have a fairly small community, like I said, 250 different businesses. And I'd like to see them being able to save on chain through something like this. I've just not really understood it. I end up going to talk to people and show them how to save bond chain and I think they understand it. I need to go back and check on them in a month to make sure. But if there was an Uncle Jim on the island so they could be self sufficient on this and know that they're saving, that would be a pretty great solution. Yeah, I love the kind of in between again, helping people like Uncle Jimming for somebody when you know, and it doesn't even have to be a permanent thing, but being like an interim Uncle Jim for people and helping them along their Bitcoin journey, I think that's a valuable thing to provide. And then some people will move beyond that and move into self custody for themselves and then other people that maybe that ends up being their last stop along the journey. But at least it's better than just full leave your money with a single entity that you then have to trust. At least you can kind of remove single points of failure with a mechanism like this. And I'm curious, your thoughts on this stuff. Are you for are you for it? Do you have reservations about it? What are you thinking? Thanks. Yeah. I believe that you should have an adversarial stance in all things in Bitcoin, everything that comes up until you fully understand it and then maybe try to understand it even more. Right now I really like it a lot from what I've read, and I don't fully understand it as well as I can, as well as I should or could right now. But it is exciting. I think that I'm from Texas. There's a lot of farms around here and like small communities and that's where I see a lot of potential here for something like this, where people don't really think about it a lot. But in small, like little ranching communities, they all know each other, but their access to the legacy financial system, it can be difficult or even nonexistent sometimes, or even predatory in some ways. And seeing something like this, the right platform with the right user experience, I think could be really major for the local ranching communities and just other communities small around the world, obviously. But that's what I think right now. Close to home. Yeah, absolutely. And I'll jump to susie as well. Again, I don't know your experience with this kind of stuff, but just from kind of seeing that there, do you have initial impressions? Where are you at with this kind of stuff? The first thing that popped into my mind was whether or not it would be able to give you some non. KYC Bitcoin oh, yeah, you could easily be able to clean it up. Yeah, you could easily be able to clean it. I mean, you could have peer to peer markets with this type of stuff. Very simply, again, there's a lot of already kind of peer to peer non KYC solutions to be able to buy bitcoin. Like I mentioned, hoddle Hall off the top of the show, but there's robo sas, there's bisc, there's even just like obviously directly in person. But you could easily integrate like a chow mein ecache version or have that as an option on one of those markets and be able to exchange whatever other value for Chow me and Ecash SATS or Lightning or on Chain or whatever else people want. But yeah, obviously the interface right now is not going to be the simplest for people, but I just saw the old mate, ",timestamp:"00:16:30-00:21:14",topics:["Cashu","Chaumian Ecash"],type:"podcast",weight:42.912927374554435},{boost:0,date:1664323200,description:"Beacon for community of bitcoiners & benefits for ermployees",episode_title:"TRUBIT bringing Digital Loyalty Assets to Bitcoin - Voltage Twitter Spaces",guests:[{name:"@0xLinden",profile_picture:"https://pbs.twimg.com/profile_images/1439365331202437125/JBiXogun_400x400.jpg",ref_id:"b8bb4402-8f86-4220-9dee-0fa28ff8de72",twitter_handle:"0xLinden"},{name:"Stephen Doge",profile_picture:"https://pbs.twimg.com/profile_images/1215979900387184641/nZXkhgoP_400x400.jpg",ref_id:"076972a2-cdab-4766-8c66-618472b80772",twitter_handle:"StephenDodge20"},{name:"@617a7a",profile_picture:"https://pbs.twimg.com/profile_images/1548336437308715016/FUZFJf9k_400x400.jpg",ref_id:"148d77a5-6e95-4855-9e17-19e68f648898",twitter_handle:"617a7a"},{name:"@ian__major",profile_picture:"https://pbs.twimg.com/profile_images/1427414299169984517/Hw0ux6ie_400x400.jpg",ref_id:"7ed41a74-21a4-43a4-9a05-e977c981b6d3",twitter_handle:"ian__major"}],hosts:[{name:"@voltage_cloud",profile_picture:"https://pbs.twimg.com/profile_images/1508657900486422529/Lfa70poj_400x400.png",ref_id:"3b622187-60ce-43c2-a21f-ae749c2d961a",twitter_handle:"voltage_cloud"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2ec62250-4755-4616-8342-096a2cfab95f.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=1Cn7F1Oo_6Q",node_type:"clip",pub_key:"03c7a7f42d94fdfc7a655515c1421cd1d20db090a1c24150201de0b1dc6a30b0ee",ref_id:"f10270d7-1cdc-4922-853a-1f8247750382",show_title:"Voltage",text:"Bitcoin meetups are big. But even just acknowledging that there's a lot of crypto ones and blockchain ones, and if we can kind of just show that, hey, these brands are seeing these kind of groups come to them and host events or do things at their locations that's just, again, another selling point for them. Like, hey, this is growing. Hey, this is not a fad, it's not going away. You should probably start doing something to kind of cater to again this consumer segment that's growing and you're now actively engaging with, we plan to do more of that. Yeah, I think that's one of the things that has me most excited about what you guys are offering is giving the community something to use to expand. By landing a business, you've provided a beacon for the community of Bitcoin to support them and now that business is like, okay, I see there's an asset and the rewards are a thing. It's getting some interest. Oh, I guess there's a network where I can actually transact on and then layer three, if you will, right. The community of people and how it's expanding or what kind of people it's bringing into the business. I think you get a lot of compounding effects there. So, yeah, just super excited for it. And it's kind of funny too. Just like one quick note on that. We've kind of seen a little bit and kind of didn't mean to discover it, but talking with brands was even just not only from the consumer perspective, but employees like benefits to the employees themselves for small mom and pop mid size bigger. But that's actually a pretty attractive offer for brands to attract employees and reward them. I'm sure many people are aware of internal rewards programs for doing certain things or hitting certain milestones, stuff like that, but it is kind of something we have more recently heard and seen from things as far as just employee benefits, health benefits, things like that. So kind of something we're keeping a tabs on. ",timestamp:"00:41:08-00:43:30",topics:["bitcoiner community"],type:"youtube",weight:4.831891866310001},{boost:0,date:null,description:"How to store your Bitcoin",episode_title:"Café ₿: #Bitcoin Beginner Q&A",guests:[{name:"Peter",profile_picture:"https://pbs.twimg.com/profile_images/1581695667193643009/EljNY-TH_400x400.jpg",ref_id:"a3384925-e15e-421d-b9f9-6d44e273ed05",twitter_handle:"PeterAnsel9"},{name:"Stephan Livera",profile_picture:"https://pbs.twimg.com/profile_images/1362551718110580740/v-W5Q2uo_400x400.jpg",ref_id:"72f57157-c96e-4466-8bf1-290cfe1f8a0b",twitter_handle:"stephanlivera"},{name:"Thomas J Lake",profile_picture:"https://pbs.twimg.com/profile_images/1529168328534769670/5cl2Y_k-_400x400.jpg",ref_id:"21541a47-0601-447c-99c2-312d1a63c19f",twitter_handle:"thomaslake"},{name:"Goodguy",profile_picture:"https://pbs.twimg.com/profile_images/1363216959576285185/unulY4yd_400x400.jpg",ref_id:"0c3fec75-9cc2-4c0f-8dbe-db7fae2b585b",twitter_handle:"goodguybiker"}],hosts:[{name:"Brady Swenson",profile_picture:"https://pbs.twimg.com/profile_images/1502564606836981763/fmqtNrNc_400x400.jpg",ref_id:"49966553-d55b-44c9-94ec-8fee09eee5c2",twitter_handle:"CitizenBitcoin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/35b20273-49f2-45ea-a9f4-dc479d86573c/7ae5315f-beb2-41e2-b672-65dd1f102017.mp3",node_type:"clip",pub_key:"",ref_id:"6faac813-7f72-4208-a6ea-a8f330da5d1e",show_title:"Swan.com",text:"one other thing real quick. The documentation that Sparrow has, in particular with Cold card, this is again from a boomer perspective, it is super easy to follow and it's almost conversational and step by step. And it was really easy for me to follow the Sparrow documentation when it came to integrating it with the Cold cart and spinning up the Cold card. Super easy. Can I make one small fun fact addition to this? You're not storing your Bitcoin in your hardware wallet. Your Bitcoin are safely stored in every copy of the blockchain everywhere in the world. I've got a couple of backups for you over here. What you're able to store is the private keys that nobody can recreate, that allow only the holder of the private key to spend the Bitcoin according to its rules. And what makes this kind of unique versus any other form of property that ever existed before is not only can you take custody of it, but you can back it up. So, like, if you were a gold investor and you took custody of some gold, you'd have to put it in some location. And if that location became inaccessible to you, you can't get at that gold. And it can only be in one location. You can put half of it one place half the other, but you lose half of it if that location disappears. The fact that you can back up your keys because they're just information means that you can have this self custody asset that's yours. It's not the banks, it's yours. And if you lose access to one location, you can recover it from another location or multiple locations. And that's one of the most extraordinary aspects of Bitcoin, and it's a fun fact. So I thought I'd add it because it's related to this question. Now that you're working on taking self custody, the beauty of it is you can back it up. You want to make sure nobody else gets their hands on any of your backups, but that's something you'll figure out what works best for you over time. ",timestamp:"01:20:45-01:22:43",topics:["Bitcoin hardware wallet","Bitcoin self-custody"],type:"twitter_space",weight:4.755598068237305},{boost:0,date:1671084129,description:"A quick reminder and some news on the Bitcoin Beach Show with DJSatoshi",episode_title:"The Orange Sun 🌞 Does Price = Value? #Bitcoin",guests:[{name:"ToxiKat27",profile_picture:"https://pbs.twimg.com/profile_images/1505791887415730177/d0YDQ3Xc_400x400.jpg",ref_id:"50023cce-8a6f-4974-ad3b-fd7a9c0abf19",twitter_handle:"ToxiKat27"},{name:"AnuragSaikia",profile_picture:"https://pbs.twimg.com/profile_images/1016367353762852864/gDL5h8jh_400x400.jpg",ref_id:"0bb60736-56c5-4964-a9c3-e881b0b313b6",twitter_handle:"AnuragSaikia"},{name:"fnicencool",profile_picture:"https://pbs.twimg.com/profile_images/1600143435775856641/uqgmtT23_400x400.jpg",ref_id:"bfef6a55-2d08-407e-b147-e04d68af7dd6",twitter_handle:"fnicencool"},{name:"MrlamilamiKosch",profile_picture:"https://pbs.twimg.com/profile_images/1538403135101800450/sO-RPI9U_400x400.jpg",ref_id:"f8c8f97a-f79a-4950-8e3d-d2e94d27b3c8",twitter_handle:"MrlamilamiKosch"}],hosts:[{name:"SatoshisJournal",profile_picture:"https://pbs.twimg.com/profile_images/1518661993103859712/y_QefqVZ_400x400.jpg",ref_id:"63fac069-bfe9-49ae-b52c-1d1f226b3275",twitter_handle:"SatoshisJournal"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9b2e17f2-71c5-4f1e-a3e7-720d06dab810.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/19874ad0-9c3f-451c-b82d-ac41de6aa3a3/62af50e6-2127-4e0d-804c-a3cec392fd0b.mp3",node_type:"clip",pub_key:"03eb026c3e6597055595e42299377a4e164982775cc67f1d2135d9f1cd3a89f526",ref_id:"1aec7881-31ab-4c1c-9f79-800cb8379ca1",show_title:"Satoshi’s Journal",text:"Okay. The next so I just remind you guys of the bitcoin beat show that Phil, my teammate and DJ satoshi have monday through Friday at 03:00 p.m., which is 03:00 p.m. Mountain standard time. And that would be 10:00 P.m. African time. And the intent of this show is pretty fun, actually. They play some bitcoin music, literally bitcoin music. There's some awesome bitcoin music artists that have done raps and parodies and just cool songs and they all revolve around bitcoin. So today, Phil actually had a lady come on, what was her name? Tips in the ships from music. She was awesome. She came on the show and she was talking to us and then we listened to her music, her bitcoin music. So if you guys remember, monday through Friday, 03:00 p.m. Mountain standard, 10:00 p.m. Nigerian time, you can go and listen to music. And then also, what's cool about the show is it's very random. Like you don't know what you're going to listen to because basically Phil will randomly choose small snippets of bitcoin education, whether that is from Andreas Antonopoulos, Robert Breedlove, Marty Benz, you name it. You'll hear something and it'll be so random and it will catch you by surprise, but it's really cool because you just get to hear Andrea Santanopolis in 2012 or whenever it was just talking to people about bitcoin or Robert Briel, a little snippet of him talking about whatever he talked about in his podcast about bitcoin. So, yeah, you guys can check it out. Today was a pretty cool show. I think today was the third day of the show. So he'll have it Monday through Friday and it lasts. I think he's going to run it for an hour. But today's session went for like freaking oh, jeez, almost 4 hours. 3 hours and 43 minutes. But they had a good time. There was a lot of people that came in and we're talking. I saw yellow on there, I saw Tomer, I saw the Kingo, I saw Oakland, and it was pretty cool. They had a good time. ",timestamp:"00:51:49-00:54:24",topics:["Bitcoin Beach Show"],type:"twitter_space",weight:9.72359306380532},{boost:0,date:1639803600,description:"[[Bitcoin]] Shorted as a [[Hedge Fund]] Against [[Traditional Market Equity Positions]]",episode_title:"WHY ARE WE BULLISH Michael Schmidt Jeff Ross Joseph Brown Greg Foss ep224",guests:[{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Jeff Ross",profile_picture:"https://pbs.twimg.com/profile_images/1475554600094552064/DSlPG1lx_400x400.jpg",ref_id:"ae6ee2a2-1cf7-41a0-8366-ff6e94a6403c",twitter_handle:"VailshireCap"},{name:"Joseph Brown",profile_picture:"",ref_id:"803206b6-7b9f-48e0-a5d5-7348f6842cca",twitter_handle:""},{name:"Michael Schmidt",profile_picture:"",ref_id:"e94a106d-cbea-4b30-b0cb-3825979179ca",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/728d91e9-025d-43a7-8467-2c8d264ddf59.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/45019495/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-11-18%2Fe04d11e7-ede5-a987-e943-f3fc2482fe80.mp3",node_type:"clip",pub_key:"",ref_id:"46c0e9e5-6d49-4830-b405-6021fd365979",show_title:"BTC Sessions",text:"traditional equity markets are sick, okay? I need people to understand how sick the traditional equity markets are. Jeff Ross probably understands this better as well as anyone. The breadth or the average stock in the Nasdaq, the small cap Nasdaq stocks have given it up by 66%. Ok? This year, if you look at Jim Cramer's list of have to own stocks, they're like, it's a piece of garbage. And yet Bitcoin is hung in there in the face of futures product that all the knuckleheads in the world are shorting Bitcoin as a hedge against their equity positions. Okay? How do I know? Because I just know how much stupid money there is out there. And I know they need to short something because they're long all this other garbage that they say, Well, I can't sell my other garbage. So I might as well short something and pretend it's a hedge. Let me tell you something. Bitcoin is a long, volatility asset. And most of the fucking world has no clue what that even means. Except I'm going to tell you, it means if you are hedging short ball assets, which are equities and credit, high yield bonds, investment grade bonds, and you're hedging those short ball assets by selling along or shorting a long ball asset. You're inverted, buddy, and you're going to get crushed on the way in and crushed on the way out. And that's what the dumb money is doing in this market, because they are absolutely. They're hedged and wedged, okay? They're in a fucking shit trade, and they're trying to make that trade better by shorting something because there's an instrument out there called Bitcoin futures that they think is overpriced. They need to do some mathematics. They need to understand that they're shorting a rounding error. And by the way, they're also shorting a long ball asset. Over time, Bitcoin will become to be appreciated as insurance. And what is insurance? It's long volatility, it's short credit. The two things are exactly synonymous. So Seb, Bunny and I wrote an article that we submitted to Bitcoin magazine this week, and it's gotten some really good feedback on ",timestamp:"00:25:57-00:28:10",topics:["bitcoin","hedge fund","traditional market equity positions"],type:"podcast",weight:4.755598081860736},{boost:0,date:null,description:"Revenue stream source, business competition and model of the Bold Bitcoin credit card",episode_title:"Café ₿: Bitcoin Credit Card w/ @BoldBitcoin @John_ely_21m",guests:[{name:"Cory Klippsten",profile_picture:"https://pbs.twimg.com/profile_images/1569687200857755648/fxiCeaqc_400x400.jpg",ref_id:"ddfb9b4c-4e6a-4f4c-a01b-e6bb1bc55464",twitter_handle:"coryklippsten"},{name:"Greg Foss",profile_picture:"https://pbs.twimg.com/profile_images/1552599670945464320/3OgqRHNo_400x400.jpg",ref_id:"853d9f80-f6cf-490f-9d1e-f29cdc6acc6f",twitter_handle:"FossGregfoss"},{name:"Wicked",profile_picture:"",ref_id:"fee44016-b05f-4961-a6d8-7dac655cd931",twitter_handle:""},{name:"@BoldBitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1559592705231044609/iJrNKxF9_400x400.png",ref_id:"dd4e1c4c-d111-4f01-ad95-18200d50cdb8",twitter_handle:"BoldBitcoin"},{name:"@John_ely_21m",profile_picture:"https://pbs.twimg.com/profile_images/1560444673046585346/VN8n2LtM_400x400.jpg",ref_id:"a24436b1-5992-4711-a4a5-0770546ea80a",twitter_handle:"John_Ely_21m"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/7061be6d-b144-4a81-a13b-3d125e3e2812/edf29ab4-2b4b-4fdf-9998-8a9b8e9437c8.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"3b4b6a17-9995-4f90-88d0-15cfd0b53be6",show_title:"Swan.com",text:"I was wondering a couple of things. One, I may have missed it. I was wondering where your revenue streams are coming from in this process and also who you see as your competition in this industry. Yeah, thanks. The business model is pretty simple. We're not lending out your bitcoin and trying to earn a yield on that stuff. Your bitcoin is sitting on the blockchain. So the way we make money is just like a regular credit card company. We make money on your purchases, the transaction fees that go through, we get a small percentage of the transaction fees. And then also, if you do choose to carry a balance month to month and there's interest accruing on that, then we would make money off of that. But if you do pay off your credit card statement every month, there's no interest and we're not making revenue that way. So, again, one of the things I love about this company is that they've got a vision for long term, and I think that that's sort of the business model that will get us there. So, quick follow up question. Are you going to set up a system or processes where it encourages people to pay off their balance monthly, or is that just something you're leaving up to the user? Right, yeah, I think it'll be similar to a typical credit card monthly statement with an option to pay in bitcoin or pay in US dollars. The idea is we want to encourage responsible use of credit and so we want people to pay off their balances and protect their bitcoin. So, yeah, it would be sort of a monthly statement sort of scenario. Hey, John, good to see you and thanks for coming to our party in Los Angeles. And quick shout out, Alex, to you and the whole swan team on that, the Pacific Bitcoin Conference. Honestly, best days of my life. Absolutely loved that you guys killed. It unbelievable that this was your first conference ever because that was to the T. It was so professional, so onto the topic here. John, my question for you. At what point do you margin call the client? So, let's say you have $10,000 worth of bitcoin, you spent three and a half thousand, and then the price of bitcoin drops. At what point do people have to post collateral to avoid their bitcoin being? Is that called rehypothecated or? I don't know. You know what I mean? Yeah, I know what you mean. Yeah, not rehypothecated, but yeah. When do you get a margin call? So, yeah, you've got a credit limit based on the value of your bitcoin, and if you get to 80% of your credit limit, you're going to start to get margin called. Again, we are coming up with any innovative ways we can to make sure that you keep as much of your bitcoin as you possibly can. But then, yes, we do have the ability to liquidate when you get over 100% of your credit limit, and obviously we're very upfront that the price of bitcoin can drop. So you have to be careful about your spending balances. And I appreciate the question, Anders, and yes, that party was off the hook. Thank you. Thank you. Actually, just there was one question I forgot to ask you. Like, so how long time would people have to replenish with new bitcoin all paid off with Fiat? Or is that basically what you're warning as you get near that 80% loan to value and then by the time it hits that you will take the collateral, which is totally understandable, just trying to understand the product. Yes, for sure. I mean, so we're still working at details, but you can expect to have something like a two day window to deposit your bitcoin to increase your collateral so that you're not underwater. And again, I don't have any specific details, but me and the guys, we're thinking up anyways we can to make sure that this doesn't happen. Right. Again, our business model is for you to save your bitcoin, spend Fiat dollars. So we're going to make sure you guys are happy and we don't want to take your bitcoin. Right? Thank you so much, John. Thank you, Anders. And looking forward to the party in Miami and straight. Thank you. Of course, we're going bigger and better all the time, for sure. ",timestamp:"01:42:54-01:48:38",topics:["Bold Bitcoin credit card"],type:"twitter_space",weight:4.754698872566223},{boost:0,date:1590465600,description:"What is the [[geopolitics sphere]] of Bitcoin?",episode_title:"Chat 39 - Bitcoin Renaissance - with Marty Bent John Vallis Alex Gladstein Elizabeth Prefontaine Brady Swenson",guests:[{name:"Alex Gladstein",profile_picture:"https://pbs.twimg.com/profile_images/1382371620669452292/VOPKOc8w_400x400.jpg",ref_id:"49445c1c-7c66-4b73-9eec-09a337befbec",twitter_handle:"gladstein"},{name:"Marty Bent",profile_picture:"https://pbs.twimg.com/profile_images/1362747135981199370/mSy97J12_400x400.jpg",ref_id:"655bdcb1-21c3-411c-aa24-fe7e4c7a248c",twitter_handle:"MartyBent"},{name:"John Vallis",profile_picture:"https://pbs.twimg.com/profile_images/1568743166035070976/4MyKww8A_400x400.jpg",ref_id:"c3a9fe29-3b78-4665-af54-e293e9d68962",twitter_handle:"johnkvallis"},{name:"& Brady Swenson",profile_picture:"",ref_id:"0b68a085-0680-44b8-891c-6e1e84ac4eb1",twitter_handle:""},{name:"Elizabeth Prefontaine",profile_picture:"https://pbs.twimg.com/profile_images/1382790711427354625/D09LMToL_400x400.jpg",ref_id:"4506df72-5de4-4144-abc4-011408b6b496",twitter_handle:"Eprefon"}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/9e7e229f-2631-4542-b5d7-7fcd502798dc.jpg",keyword:!0,link:"https://traffic.megaphone.fm/CSN4002307424.mp3?updated=1627951379",node_type:"clip",pub_key:"",ref_id:"b241a91d-07ff-4169-9df8-16783be79ed1",show_title:"Bitcoin Audible",text:"The geopolitics also are really interesting because you would think that as we move forward let's say a decade, bitcoin continues to, I think, increase in value against fiat currencies governments are going to want to start to monopolize the mining businesses in their countries. It's just what they're going to try and do because they're going to have that power. Most of them, especially these dictatorships, have total monopoly over natural resources. So this will just inevitably contribute to this planetary decentralization because you're going to have all these different governments that don't agree with each other and are essentially in a cold conflict with each other, competing in a rivalry environment to mine so that they can get more bitcoin. And that could shake out where in 40 years from now, you have a very competitive framework of many different governments all sort of competing against each other. And that just kind of continues to build on bitcoin, censorship, resistance and uptime and strength. And it's just this brilliant way that I believe it will kind of unfold. It kind of takes our base worst flaws and somebody talking about with the. Rally bitcoin crew like a week ago or so. That when governments get involved. Like the more antagonistic governments are in trying to exert control over bitcoin. The stronger bitcoin becomes because you have more powerful invested interests that specifically want to either make sure they have the upper hand or make sure they have enough power to defend against the upper hand of someone else in order to play the game of the global value system. And I thought that was so crazy. Yeah, and there's going to be governments that have Manhattan Project style initiatives to get the cheapest energy possible. And who knows, a lot of it might be whether it's fission fusion, or if you just track the price of some of these renewable techs over the last 30 years, it's pretty expensive by the decade. So I agree with Marty. It's a very exciting part of bitcoin that I think will become more popular to discuss in the near future is the sort of energy geopolitics side of it. Yeah. Again, I don't know if Satoshi could receive this either, but luckily for us, like, the supply schedule so intensive in the beginning, that most bitcoins in the hands of individuals and corporations and state will be fighting over less and less bitcoin and have less economic yeah, that's. The crazy thing I always think about. They missed the boat. If governments had wanted to, they could have accumulated literally all the bitcoin and killed it early, but they didn't. And now you've got whatever it is. I think Nick Carter has some data on this, but some absurd percentage of bitcoin is not even held by regulated entities. It's in the hands of people. Some of them might be government officials or corporate leaders, but they're individually held and there's only so much more bitcoin to fight over. So there's like a couple of million bitcoin left to be mined and governments are going to fight really intensely over that remaining bitcoin. It's serious. So exciting. Marty, I love it when you recently been bringing people on to talk about this space and all the activity and following it very closely. Guys, go ahead. Again, the opportunity is massive. It's almost hard to fathom just here in North America, and it's such an easy sell. In practice, it may be harder because you got to sell people on bitcoin simultaneously. But just from an economics point of view, it seems like it would be an easy sell. It helps you meet your regulatory requirements. It reduces your cleanup cost, it subsidizes this and that. Has it been for you guys selling? Yeah, I mean, it's getting easier with the conditions of the market and the oil market specifically, people are sort of desperate to find alternative streams of revenue. Yeah, I think more people are coming around a bitcoin just naturally as it gets older. The natural gas sector, the stranded natural gas sector is really starting to come around to this. It's sort of different than what we're doing on the oil and gas fields. There's a lot of stranded natural gas reserves that are not being utilized at all that could really, with small minimal capital investments, could get bitcoin mining operations set up and start being turning into productive assets. Ever since we've sort of come publicly, we've had a bunch of people reach out to us. Guys, this is the last question, and I'm going to pose it to each of you, but I'm ",timestamp:"01:18:10-01:23:22",topics:["geopolitics sphere"],type:"podcast",weight:4.754698872566223},{boost:0,date:1675472948,description:"How Bitcoin empowers individuals",episode_title:"WHY ARE WE BULLISH? Mickey Koss, Nozomi Hayase, The Bitcoin Explorers ep320",guests:[{name:"Nozomi Hayase",profile_picture:"https://pbs.twimg.com/profile_images/1362950252823597060/i-UISQoY_400x400.jpg",ref_id:"f82d9145-3308-493d-aa13-1fc3e21b7dd4",twitter_handle:"nozomimagine"},{name:"The Bitcoin Explorers",profile_picture:"https://pbs.twimg.com/profile_images/1380933164596625408/vDK0Tf2r_400x400.jpg",ref_id:"a81905a1-3698-4c2d-b9d3-205e4b91a08f",twitter_handle:"BitcoinExplorer"},{name:"Mickey Koss",profile_picture:"https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png",ref_id:"47e8b134-431a-40a8-8f56-21778cf6f927",twitter_handle:"MickeyKoss"}],hosts:[{name:"Ben Perrin",profile_picture:"https://pbs.twimg.com/profile_images/1181715113226596352/ipGVEcYH_400x400.jpg",ref_id:"e6b013ef-178b-4b41-95ee-423148a3dc3a",twitter_handle:"profbenperrin"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/64479948/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-1-4%252F310976616-44100-2-e34c125fc6cf3.mp3",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"d865c803-93a1-47ae-b851-5bd6a683eda5",show_title:"BTC Sessions",text:"if you have thoughts, and then we'll go to the zombie. Yeah. So I think a lot of that story is kind of like how bitcoin empowers individual and small communities to kind of lift them up. Right? And so on the other side of that coin, the similar theme is how bitcoin lifts up societies. Right? And so I see a lot of this playing out with Brandon Quidom's pioneer species thesis. And so your story was like, business and all that, and I'm kind of thinking towards the integration of bitcoin mining and energy production, especially in Africa. Super bullish on Africa. And then we just had, I think it was the first small modular reactor in Canada. Right. And so that's kind of the new hotness in the energy space right now I see kind of this integration between bitcoin mining and energy lifting up societies in places like Africa, and then potentially even reinvigorating like the American Midwest. People call it the rust belt because they used to have so much manufacturing. If we can bring cheap and abundant energy to the world, that's a huge opportunity for everyone in society. Right. And that's what I'm really kind of excited about, in addition to, obviously the individuals and the businesses. ",timestamp:"01:06:00-01:07:22",topics:["individualism"],type:"podcast",weight:35.74698741708972},{boost:0,date:1675274375,description:"The value of a small government and Bitcoin ",episode_title:"Is Sound Money the Answer? with George Gammon (WiM268)",guests:[{name:"George Gammon",profile_picture:"https://pbs.twimg.com/profile_images/1246550014450700291/2n_iHigp_400x400.jpg",ref_id:"7ca1bc4f-3a57-4a6a-bedf-ef47a8b37297",twitter_handle:"GeorgeGammon"}],hosts:[{name:"Robert Breedlove",profile_picture:"https://pbs.twimg.com/profile_images/1592020087044591616/46enYwAc_400x400.jpg",ref_id:"0ed69c56-241c-4b63-87a5-8f2157fe51a5",twitter_handle:"Breedlove22"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ca3ab815-dc2e-408a-a0c5-8bbe50270a97.jpg",keyword:!0,link:"https://cdn.simplecast.com/audio/2effec98-bec5-4728-ba08-7a86d776e682/episodes/d6e8f010-e2d5-4489-bb8e-9b7446a4795b/audio/0ad4fb89-2eda-4ad7-8432-b6be08c8ce10/default_tc.mp3?aid=rss_feed&feed=MLdpYXYI",node_type:"clip",pub_key:"03a3451db4748e483d2e1ee5d0b3a6872253253b57edf4b084a56952b432a224b3",ref_id:"61f104e1-77d8-48c4-9def-92d74cbf0d64",show_title:'The "What is Money?" Show',text:"of time left here, but I think we have enough time to go through at least one more point here, I guess. Part core, even to your argument, I think, correct me if I'm wrong, is that we should be spending the right proportion of time on educating people about the value of small government, competing in the court of public opinion, if you will, to shrink government and the right. Because it's not a panacea. Yes, and some proportion to sound money as well, which is obviously important to some extent, depending on context, et cetera, et cetera. And I agree with you there. But a thought experiment I would like to advance is that the existence of fiat currency is actually a distortion of the voting mechanism which we traditionally depend upon in a democracy to express our political preferences. Now, this example, there's a book called The Ethics of Money Production by an author named Holzman, and this is where I get this example, and he's basically making the argument that the market economy could be understood as a system that's basically catering to the needs of consumers as expressed in money payments. So the example I always like to give is if I go into the market and I buy a car, I'm actually signaling to the market economy to produce more cars, right? I'm casting a vote to specifically the car that I buy, right? If I buy a 2020 Tesla, that's what I'm telling the market to make more of. And the inverse is also true. You go and sell a house, right? You're actually signaling to the market economy to produce less houses. So it's this, it's a real kind of grassroots democratic process taking place where one unit of currency or one unit of money is equal to one vote, if you will. And when you look at the market economy through that lens, and then you consider that there's a central bank sitting in the middle of every modern market economy, that it's effectively an institution that can create its own votes. It is able to expand currency supplies and manipulate that process of consumers expressing their preferences in the marketplace and creating all the distortions that we've described today. So when you ask that question earlier, right, would you rather live in a society that believed in small government but was run on fiat currency, or live in a society that believed in big government but was run on sound money? I feel like in a society running on fiat currency, it almost doesn't matter what the democratic collective wishes are or preferences are of the majority because they can't be adequately expressed through a democratic mechanism, when in fact it's the central bank. Or I'll put in the commercial banking system that surrounds the central bank as part of this as well, they get a disproportionate amount of influence because they're effectively creating these new votes called currency units out of nothing. Or to the extent that they are creating them out of nothing, they're able to disproportionately sway the vote of the market process, let's say. So how would you wrestle with that? Because this is a bit of a rabbit hole, because if you draw this conclusion to the end, you're like, oh, well, democracy is kind of a scam. It's really about the money that creates the votes and movements in society. Democracy maybe has at least a limited effect. But I'd love to just hear what you think about that in general. Well, first I think you have to compartmentalize the Fed in the commercial banking system, because what you just described again assumes that the Fed has control, or a significant amount of control over the amount of currency units that is contributing to those votes, as you said. So if we assume for a moment that the Fed really doesn't control the amount of M two, then the Fed isn't really impacting the voting system. So then it would be the commercial banks. Right. But if the commercial banks, then assuming that they don't have a perverse incentive, which is the bill, right, there you go. Like free banking, they would lend for productive means and they would lend to businesses that would produce more goods and services because those are the entities that have the highest probability of paying them back. And so although, yes, the banking system is controlling the amount of m two amount of currency units, I think if you could eliminate or reduce the size of government, then you would have a system where that additional increase might not be optimal. But I think that's debatable. But at least it's not a massive anchor. At least it isn't extremely detrimental. And another fun thought experiment is I get the people that say, well, listen, we want a fixed M two supply, full reserve banking because we want a consistent unit of measurement. We always want to have twelve inches in a foot as an example. You hear that all the time. But I don't know that if we have 5% deflation, you're still changing the amount of inches in the foot, just like 5% inflation. I would push back on that one again a bitcoin, or would again disentangle monetary inflation from price inflation in that case. So they're advocating for integrity of the money supply, not necessarily integrity of price consistency. Right. But the initial argument is that the economy is going to function better if you always have twelve inches in a foot. Meaning that if the value of that currency unit relative to goods and services. Remains constant that's where I'm disagreeing. I don't think it's about the constancy of the relationship between the currency unit and goods and services. It's just the integrity of the money supply itself. So the less the money supply changes, the more it adequately reflects changes in the productive economy. But if you get supply that changes, obviously price changes become distorted. You don't know if it's policy or supply and demand fundamentals. Right, okay, got it. So then the argument there is that if prices are going down by 5%, even though that may be an inconsistent amount of value currency relative to goods and services, that would be optimal because that's what the free market is producing. Because that's a result of the free market and the decisions that are being made by the individuals pursuing their own self interest. I think you could summarize the argument as the money supply that changes least is best. So an ideal money supply in a bitcoin or world is a fixed money supply, so the pricing signals that money, this would be everything. The other weird thing, in a bitcoin world, there is no difference between base money and broad, all right? You could say there's lending on top of it. If you introduce full reserve with a bitcoin base layer, right? Then there could be if there's IOUs that are produced by the fiduciary correct. Or the underlying base layer, then theoretically you could have an additional amount of broad relative to base, although that base could be used as broad. Very similar to the way gold was. Yes. And the theory there is that because bitcoin is more portable, because it's sound money, you're obviously dissuaded from taking on debt because it tends to increase in purchasing power over time, and because it's hyper portable, you don't need to centralize the custody and borrow currency units on top of it, necessarily. So I think there's less of an incentive for there to be a higher proportion of broad money to base money in a bitcoin world. Like another way of saying global debt to GDP would contract ten X, perhaps from what do we have? 20 or 30%? This is what I really wanted to discuss with you as well, because I think that we've really discussed the sound money component of it, but that doesn't necessarily mean that we've discussed the bitcoin standard component of it, because there is a difference between gold being old money. And bitcoin sound money. For sure. You got it. I don't think we should crack that can of worms right now, though, because if I'm going to get you off in 2 hours, we only got about five minutes. That one will definitely ",timestamp:"01:50:29-02:00:37",topics:["Small government","Bitcoin value"],type:"podcast",weight:34.26857319961412},{boost:0,date:1663767761,description:"what is Small modular reactors ?",episode_title:"Mining Bitcoin with Nuclear Energy with Ryan MacLeod",guests:[{name:"Ryan MacLeod",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"20a72757-923c-4a01-ad4f-7ccdc2a83e03",twitter_handle:"NuclearBitcoinr"}],hosts:[{name:"Peter McCormack",profile_picture:"https://pbs.twimg.com/profile_images/1524287442307723265/_59ITDbJ_400x400.jpg",ref_id:"887a65a7-a2d8-4371-887e-bc7a6ca6ff17",twitter_handle:"PeterMcCormack"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/4e607036-8fde-48ef-ab76-9c2ac4bab031.jpg",keyword:!0,link:"https://chtbl.com/track/282487/traffic.libsyn.com/secure/whatbitcoindid/WBD557_-_Ryan_Macleod.mp3",node_type:"clip",pub_key:"032ff32727b06d20a13a0a8d8dfe09d39659c16deeaffbf94d6d21ec6bb28850b6",ref_id:"ccac3748-afc5-4404-8497-1710f501f49f",show_title:"What Bitcoin Did with Peter McCormack",text:"the SMR modules, when they're created and they're approved, will that wipe out any need to build these larger reactors? Is that the death of those? Is the desired just to only have SMRs? Not necessarily. There's potentially room for all the different types. There's still, like, the UAE's just built a few large reactors. The hinkley point C's. Almost finished in the UK. I think there's the reactors in Georgia that have been taking a while, but they're almost finished taking a while, 15 years. When you say the small reactors, what is the scale compared to, like, a normal nuclear reactor? The term Small modular reactor applies to reactors that are less than 300. Conventional reactors are in like 600, 700 megawatt units, and they benefit from the economies of scale so they can have a wider customer base to share the risk of the costs with I have. No idea what that amount of power, how many people that services. So if you had one of these SMRs, how many would we need in the UK to serve 70 million people? Well, it depends because it will be locally dependent. The difference is you can build one large reactor and then all the transmission infrastructure to get it to the customers, or you can build the SMRs in hyperlocal grids too. Do you have a look at how much grid the UK grid uses? I'd love to. I guess you might have an idea of what the Canada grid uses. Is Canada have a single grid? Because it's quite it's pretty spread out. Yeah, as soon as you start getting further north, it gets pretty remote and there's a lot of off grid that depends on diesel. That's the goal of the SMR action plan for off grid, is to get remote communities off of diesel, upgrade them to nuclear with these small modular reactors. OK, but I can't imagine the construction of a small modular modular reactor is going to be cheap. But they must be like the estimated cars. The first of a kind reactors are going to be in the orders of several hundreds of millions, a few billion. But the expected cost, once the technology is mature, the cost will be cut in half because once the manufacturing facilities are built and all of the supply chains are developed and the expertise is aligned, that will significantly drive the cost down as more reactors are deployed. But yeah, getting it over those initial hurdles is going to be quite costly and require like, public private risk sharing and capital investment. So it says Greater London uses just under 40,000 gigawatt hours and it says it could be supplied by two or so, like, large nuclear power plants. Okay, so that'd be like four SMRs? Depends on the type of SMR. If you're going with a 300 megawatt unit, then yeah, but if you want to apply it to like, a small community that only needs 15 to 20 MW, you can build either a few of the really small reactors that are going to be in the ten megawatt range. Oh, you can build like tiny versions of these? Yeah, that's the thing, because we want to build some that are in the one to ten megawatt range, in the 50 to 150 megawatt range, and then like the 200 to 300 megawatt range. So we'll have a wide variety of applications that these reactors can be applied to. So the smaller ones, one to 10 MW, what kind of size geography do they need? Like a track field hockey arena. Oh, wow. Yeah, not much. Okay. And do they know the construction time or something like that? They're expecting the smaller ones to be in the orders of like one to two years and then the larger ones being like, the five years ballpark so. It'S really important to get through that regulatory process then. Absolutely, yeah. And are there enough people out there who are available to be able to work to construct these, to work at these? Is that another thing that has to be worked on to train people up? Yeah. In many jurisdictions that is the case. That's why it is being so costly to build the Hinkley reactor in the Vocal reactor in Georgia for the UK and the US markets, because they let their supply chain atrophy by not building or refurbishing any of the reactors for decades. Whereas in Canada, we are actively refurbishing our reactors right now. The Darlington has undergone refurbishment. The point, Lapro. Reactor has undergone refurbishment. Bruce reactor is currently under refurbishment. So this will extend the life of those reactors for at least another four decades. What's involved in refurbishing it is essentially using the site to put in new technology. Yeah. A lot of the parts in these reactors are interchangeable. They can just be replaced with new parts, and the pressure tubes just get replaced with fresh zirconium pressure tubes, and they replace the turbines if they need to. Just anything that's starting to show its age just gets replaced. But the core of the reactor pretty much remains unchanged. And how much time goes into refurbing a reactor, as opposed to by building one from scratch? Each reactor probably takes, like, two to three years to refurb. Yeah. Okay. And that has the advantage of sustaining our supply chain and our workforce and making sure that the industry remains robust and doesn't lose our expertise. So ",timestamp:"00:20:06-00:25:51",topics:["Small modular reactors"],type:"podcast",weight:4.754855089440576},{boost:0,date:1673187067,description:"How do micro reactors contribute to the decentralization of the energy industry?",episode_title:"@NuclearBitcoinr - Mining #bitcoin With Small Modular Nuclear Reactors. #313",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"}],hosts:[{name:"Daniel Prince",profile_picture:"https://pbs.twimg.com/profile_images/1589940494364205056/rnHs5gI3_400x400.jpg",ref_id:"df2d4d35-3e96-44ed-b1cc-cb8a714bbe30",twitter_handle:"PrinceySOV"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e1eca67b-d372-4031-bf1f-8f0ff7fe6092.jpg",keyword:!0,link:"https://anchor.fm/s/1346f9e8/podcast/play/63208295/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-0-8%252F4a07b2fe-eb1d-2c82-677e-8f2808a09536.mp3",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"58d095b5-4c46-4586-888c-8b56a9afd883",show_title:`Once Bitten! A Bitcoin Podcast. `,text:"So I think it's all going to all going to fit together and like, the small modular reactors have so much potential. When you say small, how small are we talking? Small encompasses anything less than 300 MW. So, like, your typical nuclear reactor that we have out there is, depending on how old they are, 700, 800 MW. Like the new ones that are just being built in the UAE, they're like 1.4 gigawatts per unit. These reactors that are being built now are huge, but they have a narrow market that they can be built in once they're built. And if the market is there, that's great. But there's communities throughout Africa that could be better served by a reactor that generates just 5 MW instead of 500. So there's going to be a lot more applicability. And then the range goes from the micro reactors are anything less than 10 MW. Small is anything less than 300. And then there's the micro ones that they have, they're even smaller. And the micro ones are basically going to be able to fit a nearly complete reactor on the back of a transport trailer and just ship it to site and assemble the final components. Because the idea is that they're going to be mass produced in a factory type of setting on an assembly line so that they can take advantage of repeat construction and learning techniques to improve the construction process and get a lot of more standardized practices in the material and the supply chains that they use. So that's going to be going to reduce the costs dramatically. But then the problem is I'm trying to picture this in my mind. As. We all decentralize, this helps us get out of the cities, right? We don't need to be in cities anymore. And we could go out to areas of natural beauty and build communities around a micro reactor. Am I using the right words here? Yes. And that thing could be about the size of a shipping container or a little bit larger. Well, the main components would be in the shipping container. There would have to be a building built around it to house it. But even then it wouldn't be that size of maybe like a public school or like a hockey arena, something. So it would just be like a building because it would be built and it would be running and whatever else, but it wouldn't be like one of these massive eyesores. It's going to be pretty small. Oh, yeah. They'll be able to build them in a way that you wouldn't even know what it was unless you actually knew what it was. They'll just be a nondescript building that's just over there with a bunch of power lines coming out of it. And then the cool thing about the modularity is, say you've got a five megawatt reactor, but your community needs like 13 MW. You can build three of these units in tandem and then couple them all together. And then you can have just say, one central control room, or you can have one central turbine building. And then each of the the generator modules would be on their own. So instead of having three of each, you can kind of streamline that a bit. And then where I see a lot of, like, the bitcoin mining come in is like, perhaps you see that in the future. This community has the potential to develop up to 30 MW, but they're only consuming about 13 now. You can just build the full 30, fill that space with the bitcoin miners, and then as the community grows into its new energy profile, you can just peel off miners and deploy them somewhere else where it will make more sense to them. And then the locations where I'm talking about in northern Canada, we also have the added benefit that these little guys are space heaters if configured in the right way. And then like, on top of that, like Troy Cross was talking with, McCormick recently, threw out some interesting ideas about one being like, a lot of the carbon capture technology is basically just drawing air through a fan and through a medium that absorbs the carbon. And then out the other side, it's like, well, just run your miners through and then you can, you can take the fans to blow the air through the carbon capture, and then you can probably capture the heat and go send that off into a greenhouse or something nearby. Or you can take that carbon and you can distribute that into the greenhouse. There's so many different ways that this can be configured. And the ideas that I'm seeing with the modeling is very complex and convoluted with how they're trying to be like, oh, well, you can ramp up and down the reactors. That's a cool capability. But then you're either losing out on potential economic benefit or when you do ramp up and down your core, like any generator, even like a natural gas generator, that puts unnecessary wear and stress on the equipment and the lifetime of your generation station. So if you can just leave your reactor running at 100% all the time, regardless of what your local demand. Looks like that's going to have a significant improvement on the lifetime of your reactor. For one of these microreactors, sorry to jump in on my mind is racing one of these microreactors that you take and you build a community around. If I remember rightly, about half an hour ago, we were talking about the shelf life of the fuel rods. It's like one and a half or three years you might only need to take out before they get switched out. Is that correct? Yeah, that's typically like the lightwater reactors that we're familiar with, the traditional type, the one that we're going to be building at CNL or demonstrating, that's going to be the one we anticipate to deploy to remote off grid communities. It's going to have a 20 year fuel cycle. So basically so you don't even need to go to a uranium rich plane. You just turn up with your module, it gets built, the fuel cells turn up, and then you just need another delivery in 20 years and you're good to go. Pretty much, yeah. Or yeah, or you could just keep keep a second fuel pod just on hand. Right. And then yeah, then you've got 40 years worth of fuel available on site, and you're basically limited to how well you maintain your reactor and do your preventative maintenance. There are some parts that are going to wear over time, like anything like maintaining a classic car. There's some parts that you're going to need to swap out over time, but for the most part, you can keep the main components in good enough shape that you can push them 40, 60, 80 years. It's like the complete opposite of what happened in the Gold Rush. Instead of risking life and limb to cross mountain ranges and blizzards and people that wanted to basically kill you to get to the other side to hopefully find gold, you're taking all that shit with you already and just plugging in and building a community around it and civilization, immediate civilization. That's the idea. Sounds like the pioneer species idea in a nutshell. We go to where the power is, and now we have the ability to put the power wherever we want. Like there's going to be within reason, like there's going to be some limitations, but like, even some of these reactors are going to be designed in such a way that they're like, seismically stable so that even a strong earthquake is not even going to bother them. And I remember Ross Stevens talking about this in his interview with Michael Sailor. Did you watch that one when they did the MicroStrategy World Day start of 2021? With all the content that I consume? Yeah. I'm surprised I haven't gotten that one because those are two, two big brains for sure. Taylor interviewed Ross and it was the first time I'd ever even heard about Ross. He had never been on any podcast or appeared anywhere at all. In a bitcoin space. And that was the opening interview. And at some point in that interview, Ross did basically say bitcoin is going to communities give us the ability to move decentralize ourselves to areas of natural beauty where we can now build up around he used the example of a waterfall for a great example, because now you can mine bitcoin, but you guys are taking one step further, like yeah, no, just load up the truck guys. Let's go. Because we got the mini nuclear reactor and we're solid for 40 years. Yeah, it blows my mind. Oh, I know. When I started really digging into it, I was just trying to do the good kind of scientist thing where you're just like, well, how can this not work? And trying to come up and conceive of all the ways that it doesn't. But every pathway that I've gone down leads me to just like, this is the way forward. But it takes a lot of education for people to not only get nuclear power and bitcoin and how electricity systems work. These are things that a small fraction of the world understands, even one of the three of them. But putting all three of them together, I'm still pretty neophyte in my understanding of nuclear power. I'm not a nuclear engineer or anything. I work with tons of them, and I can pick their brains whenever I need to. ",timestamp:"01:07:09-01:17:31",topics:["micro reactors","reactors"],type:"podcast",weight:19.120022996014775},{boost:0,date:1528156800,description:"Store value of Bitcoin in a volatile market and its mass adoption barrier ",episode_title:"Cryptocurrency Price Volatility and Bitcoin Store-of-value",guests:[],hosts:[{name:"Andreas M. Antonopoulos",profile_picture:"https://pbs.twimg.com/profile_images/1362967502247129090/Q2ypSr9W_400x400.jpg",ref_id:"132bc4d2-c16e-466e-8ab2-6f8a9a9a6568",twitter_handle:"aantonop"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/1c3fe064-f637-41ea-8a4b-a533ef5985b1.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=wzzZT95ijTo",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"1806f209-3cd6-496a-baf3-0351b7f432aa",show_title:"aantonop",text:"James asks store value in a volatile market. My smart friend says that the biggest barrier to mass adoption is price volatility, which limits Bitcoin's use as a store. Store value. Its most convincing use case to date. It's a lousy story value if the price keeps changing. Is this right? Are there other obstacles to mass adoption? What are they, in your opinion? James, your friend may be smart, but I don't think they understand some of the basic economics at play here. So, first of all, I don't think price volatility really affects bitcoin's use as a store of value. Store value is definitely a longterm perspective. It certainly affects Bitcoin's use as a medium of exchange, but as a store of value. If you are buying and investing in bitcoin and using it as a store of value, then you have a long term perspective. Certainly more than a year. How is Bitcoin doing? In the last year. It's up about 600%. Sounds like a pretty good store of value to me. Over the last three years. Definitely pretty good store value. If you look at it over three months, it's probably not a good store of value. But that's not what store value means. Store value is definitely a long term perspective. The other thing about this is that it's a bit of a circular argument because volatility really is an expression of size. For example, in a follow up question, James said, we tend to harbor an expectation that this volatility, a key obstacle to bitcoin's wider success, will eventually calm down. But bitcoin's resistance to regulation is a feature, not a bug. So where will the stability come from? Absent of mass adoption and absent of regulation. I think there's a broad misunderstanding about how volatility is dealt with in capital markets and currency markets. The idea that regulators control volatility in the currency, I think is an illusion. Regulation doesn't control volatility. If anything, regulated markets that don't have enough flexibility and liquidity are more volatile. I would say the biggest contributor to volatility is the small size of a currency. And you've got to understand that Bitcoin is currently traded on a global basis. Unlike most other national currencies that have primarily domestic markets, bitcoin is a global market. And for a global market, it's tiny. It really is absolutely tiny. $100 billion is nothing in currencies, even for a currency that's only domestic, let alone for a currency that's traded globally. So this kind of sounds like a circular argument, basically saying the biggest barrier to mass adoption is the lack of mass adoption. And if only there was more mass adoption, then there'd be more mass adoption. The biggest barrier to bitcoin being big is that bitcoin is small. And if only bitcoin was bigger than it could be bigger, because that's what price volatility is. It's that this currency is small. And so if the fact that it's small is a barrier to it becoming big, that's kind of circular logic. As bitcoin gets bigger, volatility goes down. As the market becomes more liquid, as it is traded more and used for different purposes and not just speculation, I think that reduces volatility. The more companies depend on bitcoin as an input, or use it for payments to contractors or providers, or hold inventory and purchase things based on bitcoin, or sell things based on bitcoin, the more the price of volatility is reduced. Right now, it's mostly used for speculation, it's mostly dealt with as a short term basis. It's traded globally in a wide open market, and as a result, it's quite volatile. So yes, bitcoin will become less volatile as it grows, or at least I certainly hope it will. I think the economics ",timestamp:"00:00:00-00:04:24",topics:["Price volatility","Regulation resistance","Small size currency","Market liquidity"],type:"youtube",weight:4.673567056655884},{boost:0,date:1670943361,description:"Discussion on the percentage of Bitcoiners who self custody and the limitations of Layer 1s",episode_title:"Café ₿: SBF Arrested 🚨 🚨 #Bitcoin Not Crypto",guests:[{name:" Tone Vays",profile_picture:"https://pbs.twimg.com/profile_images/1416821178266787844/T1OkI9ZW_400x400.jpg",ref_id:"ac43b4f0-9056-4a6b-9d30-4a6250405ade",twitter_handle:"ToneVays"},{name:" 2140data",profile_picture:"https://pbs.twimg.com/profile_images/1598330787778232320/ZVFcRtet_400x400.jpg",ref_id:"c8fb52d1-fa69-410d-bf96-8a7559bba863",twitter_handle:"2140data"},{name:" BITVOLT7",profile_picture:"https://pbs.twimg.com/profile_images/1532194001511714818/O8nSTKcx_400x400.png",ref_id:"2b9913b7-393c-4125-9aeb-4a8bf32bfa44",twitter_handle:"BITVOLT7"},{name:" Tomer Strolight",profile_picture:"https://pbs.twimg.com/profile_images/1591960241008148481/HtyINxtU_400x400.jpg",ref_id:"4e0b6941-6d5c-439c-9d30-7c5691828930",twitter_handle:"TomerStrolight"},{name:"Neil Jacobs",profile_picture:"https://pbs.twimg.com/profile_images/1593645788978102277/UAQCQKeE_400x400.jpg",ref_id:"0bc759e0-b055-4800-a79d-2b950fe5cc53",twitter_handle:"NeilJacobs"},{name:" StackchainSig",profile_picture:"https://pbs.twimg.com/profile_images/1589791699571802117/n_Y1Qm7J_400x400.jpg",ref_id:"c000ebd6-1c05-4c6a-ad07-5e5c10cc3fb3",twitter_handle:"StackchainSig"},{name:" Joe Carlasare",profile_picture:"https://pbs.twimg.com/profile_images/1567374701667794944/2ghrkDx7_400x400.jpg",ref_id:"75b3a3fa-f118-4ea0-9477-25832844c900",twitter_handle:"JoeCarlasare"},{name:" w_s_bitcoin",profile_picture:"https://pbs.twimg.com/profile_images/1594796869233811474/g0_ZRshz_400x400.png",ref_id:"268a731a-0e21-4cb1-ad73-d8d21f433393",twitter_handle:"w_s_bitcoin"},{name:" TYonClubhouse",profile_picture:"https://pbs.twimg.com/profile_images/1575442322531274756/-ZdL-K9S_400x400.jpg",ref_id:"519d68be-1a96-4394-8bab-48f570f1a6cd",twitter_handle:"TYonClubhouse"}],hosts:[{name:"Alex Stanczyk",profile_picture:"https://pbs.twimg.com/profile_images/1539055022364708864/rwErK6x1_400x400.jpg",ref_id:"3126e2a3-bbe4-456b-b298-9714085fa286",twitter_handle:"alexstanczyk"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/239722cb-4216-414a-a17b-5adf9d52e15a.jpg",keyword:!0,link:"https://stakwork-uploads.s3.amazonaws.com/uploads/customers/2707/media_to_local/ee6b20fb-2dd2-467b-8e0e-0c2301d9ff68/3f03e525-44df-4eeb-ad79-f6e66ccca86d.mp3",node_type:"clip",pub_key:"034248fa888690a85021cf117c168a535c53b92e1fdf3e4f9cefddfe09118d8207",ref_id:"b8d90bd0-45fb-40d9-87db-b9a908a8684a",show_title:"Swan.com",text:"I have a quick question, and it kind of just got sparked by what Nico said and what we've been talking about in general with the importance of self custody and the spreading of this message. But in its current form, right now, as it is, the protocol, what percentage of the world do we honestly think can actually self custody on the base layer? Like, realistically, do we know that number? Like 1-2-I don't know. That's a really good question. I mean, you could surmise from the glass node data about the number of bitcoin addresses with one bitcoin or more. I don't know what percentage, because that doesn't necessarily represent that one bitcoin is for each individual. Right, but I mean, you could surmise that a percentage of that is definitely individuals taking self custody. I think you could make a pretty good bet that there's definitely a record amount of individuals taking bitcoin into self custody. And every time one of these blow ups happen, which I believe is really the silver lining of this whole FTX disaster, is a lot of people burn their fingers on the stove and they realize, oh crap, not your keys, not your bitcoin. And it's interesting because it just came out that CZ sorry, that Binance is seeing record amount of outflows as well. Now, if you've been here for a while, this was before my time in Bitcoin malgax blew up, and that was one of the only exchanges at that time. And I guess a lot of people learned their lesson. So what I'm trying to say is that every wave of these disasters, I think a small percentage of people realize not your keys, not your Bitcoin. It's just unfortunate that these things need to happen in order for individuals to learn those types of lessons. Because I know a lot of like, there was this fund, it was like Travis Kling or something, the Coggy fund wrecked, totally gone. He had most of the funds on FTX. And there's been horror stories that I've read of people's, mothers, individuals, that just for some reason or the other, they left their wealth on FTX. And it's unfortunate that that's the price that had to be paid for people to realize the truth. I also want to give a shout out to Corey because he did great work and he got a ton of crap for it, for basically beating the battle drum about celsius about FTX and getting individuals to take self custody. It's just crazy how effective the shitcoiners are at just drowning out that. It's like, oh, these Bitcoin maxis, they're radicals, they're crazy. They call you all these names. But the bear market is kind of bittersweet. We get vindicated, but at the same time, a lot of people lose their life savings. And I think that's really tragic. Man yeah, I think kind of where I was getting at is I personally believe self custody is incredibly important and probably one of the key, if not the most important feature of Bitcoin. Without enough users controlling their bitcoin and having it in self custody and using it right, kind of growing the network in terms of its peer to peer connections, there's no Bitcoin failed. We need to have as many peer to peer connections as possible. Right? That's the whole fucking point of Bitcoin. But I guess what I was getting at is like, I don't want to oversell the technology either, though, and make it seem like everyone can do this, because that's just not true, at least in its current form. And maybe we'll make updates in the future that will make it that way, will make it possible for everyone to but it's actually I mean, in my opinion, it's very likely that we also may not, right? We may kind of choose to keep the base layer in a way where it's a settlement layer and the vast majority of people having their bitcoin on layers on top and they don't necessarily have their own private keys or they have kind of these other ways of having custodial relationships like fettiments or custodial lightning wallets or things like this. So it's like while I see the importance, at least especially in this moment when we are so early and everyone can at this very moment, who knows about Bitcoin and has Bitcoin, everyone who has it now, they really can take self custody, right? It's a few pennies. I don't say everyone, but a lot of people can take self custody. It only costs a few pennies of on chain fees and the block chain is not congested. The mempool is clearing regularly. But at a certain point we do have to like realize that it becomes difficult to onboard everyone. And so I don't want to oversell the technology when it's not really there yet. And it may never be. You see what I'm saying? I think that's a dangerous thing too, because then you have a bunch of people who are like, well, fuck, what am I going to do now? Right? Once we get to that point where it's like, well, sorry, train is full, I think you can hide a lot of the complexity of self custody behind a slick user interface and just kind of remove that's not what I'm talking about though, Nico. I'm talking about the literal limitations of the technology itself. There's only so much block space and right now we don't have good enough ways to batch transactions, which we might in the future, but at least now we don't on main chain. I don't even understand why this is an issue. Because you can't take self custody without taking self custody on the main chain. We're talking about man self custody. No, I guess that's a fair point. But I guess that also makes the assumption that all of these transactions are trying to not happen on layers above. I'm talking about what you're saying, storing their wealth in Bitcoin and then us banging the table saying it's not your Bitcoin unless you take self custody. But then when the rest of the world wakes up, they realize that they're too late. Do federations help with this at all? That's what I'm saying, is like I think that's why I'm saying it's kind of dangerous to be going down this narrative path of not your keys, not your coins, and that's the only option. But we're not there yet. Wicked. In the interim, we're not at the point where billions of people are trying to crowd into Bitcoin and everybody's trying to take self custody and it's the man. The pools got 3 billion transactions, though, and influential. And so I don't want people to come back and be like, man, those fucking early as bitches just didn't we weren't considering the realistic situation here, which is that the vast majority of people probably will never hold their own keys. At least in our current technological stack of Bitcoin. Things may change on the basis we're worried about that. I feel like you're over worried about something like who cares we don't know what I care. Look, calm down. Because about people being in control of their money. That's the whole fucking point. That's not what I'm saying. You just said you don't want people in the future to go back and listen to these and be like, hey, they said a bunch of stupid shit. It's like, look, nobody knows the future, man. I don't have a crystal. Like, my membership expired to the Seance network. I no longer have access to the ability to predict the future. So just don't even worry about it. We go one step at a time here. Okay? But we're talking about a future where everyone uses Bitcoin and we're saying that everyone needs to take self custody. But those two ideas do not jive. That's all I'm saying. Wicked. Wicked. Are you really worried that Kevin O'Leary, Peter Schiff, Charlie Munger are not going to be able to have self custody? Those motherfuckers will, man. They're going to be on the base layer settlement just like the rest of us because we're so early. It won't matter for us to pay the equivalent of $5,000 to settle a transaction on chain when it's wicked expensive. But everyone else in the fucking world is going to have to use Fetty Mint's and other custodial solutions to use bitcoin. And I think it's greatest be realistic about that in human history. It's going to happen. I agree with that. Yeah. But 80% of the people who are fucking poor and in developing nations who don't have the chance to get in on this transfer of wealth or are doing it in a way where they have a little bit of bitcoin, but it's in a custodial lightning wallet, so maybe they get fucked along the way anyways, you know what I'm saying? All I'm saying is we just have to be careful with how we word things and the expectations we set. I would push back against that man a little bit. Look, at this moment in time, I think the more individuals taking self custody of their Bitcoin, the better, and I think that perhaps in the future, those we agree on that and the circumstances will arise. Maybe, I have no idea. But right now, that isn't the case. Right now it's incredibly easy, incredibly cheap. Of course, I don't think it's very difficult because I've been doing it for a while. But the steps I don't think are very difficult. I don't think setting up a ledger or a treasure or a jade or a cold card, I don't think it's that hard, man. And I think that you can get a percentage of the population, specifically the people that have spent less time in the Fiat Matrix. I think you can get them accustomed to it, man. It's what I do, bro. I literally have a cabinet full of hardware wallets and I hand them out like candy bars. Yeah, man. I'm running out custody every single weekday morning this is what I thank you for doing that, by the way, we're planning on doing for a very long time moving forward. I think it's really important to spread this message. I'm not saying don't usually custody. I'm just saying we're going to reach a saturation point at some point, and it might be there. Well, we're not there yet, but it might come. Deep breath. It might sneak up on us. Angry Apple, take a deep breath. I can just see Nico at Halloween. And here's a treasure for you. And here's a ledger for you. I literally subsidize it, bro. So hold on, I have to tell you guys the story because it's a good story. So before I dropped out of college, this was 2016, by the way. My last class was public speaking, and they're like, what are you going to do your presentation on? So I did my presentation on bitcoin. At the very end, I said, guys, if you download a bitcoin wallet or something like that, I will literally give you $10 worth of bitcoin. Mind you, this was 2016. There was a class of 29 people. Only three people took up that offer like mad. Wow. Yeah, dude, it's interesting. But hey, ngu, I think, fixes a lot of this. Tommer has had his hand up for a long time. Let's go with Tomer, and then I have a question for the panel. Okay, I have a point to make, but just to weigh in on the last conversation, I think by the time this becomes what wicked's concern comes up, there will be good solutions for it. There'll be other things, but I don't want to really belabor that point. I shared another tweet that I made last night at the top of the nest, which I think for me at least, is an attempt to condense a lot of this conversation, which is, I said the most important feature of bitcoin is auditability. It's not that I'm just trying to make a case where it's not that there's 21 million coins or that even that this is a finite number of coins. It's that you can actually see where every coin is, including, most importantly, yours. And so you know that you've got what you've got. And that certainty is the invention that we've never seen before. We've never had that ability for you to have, knowingly what you have in a financial system, in a digital asset that is invulnerable to attack. I feel like I'm just kind of going over and over some of these things, but it's a different lens because everybody tends to focus at different times on different features of this thing. And now with all these custodial blow ups that we've seen, and we remember, why not your keys? Not your coins. And the reason your keys are so important is you can see what's on there, so can everyone else. And so all these games of, well, how many bitcoins actually exist in. The paper world. Nobody knows how many exist on chain. Everybody knows which coins are yours in custody. Nobody knows which coins are yours in self custody, you know, and everybody else knows. And so it's a night and day difference. It's incredibly stark contrast to what existed before. Even with things like gold that you can take self custody of, you don't know how much gold there is out there. You can't audit the global supply of gold. You can't actually verify for yourself that the thing that you hold in your hand that you think is gold is gold, but you can verify all of that easily trivially, inexpensively, instantly, continuously with Bitcoin. That's the that's a great point. Great point. How many diamonds are there out there? Does anybody know? Infinite. You can make diamonds out of carbon. So take your pencil that and squeeze it really hard. You get a diamond. There's a lot off the coast of South Africa, that's for sure. Angry Apple makes his own diamonds. He just grabs the carbon and crushes it in its vest until it becomes a diamond. That's right. And these man made diamonds are better than those shitty ones you find in the Earth crust anyway, so they're more perfect. ",timestamp:"01:22:31-01:37:39",topics:["Bitcoin self-custody","limitations of Layer 1s"],type:"twitter_space",weight:9.165734869028597},{boost:0,date:1624507200,description:"[[Ali]] background",episode_title:"Bitcoin Fixes This 48 Small Business with Ali",guests:[{name:"Ali",profile_picture:"",ref_id:"1169edf2-a89f-4d89-94a4-1be1a7b9aef0",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2536a974-d668-4ac2-8613-0b37aa0ca08c.jpg",keyword:!0,link:"https://anchor.fm/s/2a4e8034/podcast/play/36003846/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-5-23%2F969a4306-e9eb-95c5-0e15-42d37c0e61e8.mp3",node_type:"clip",pub_key:"",ref_id:"533a527d-5146-4c10-8091-329cbc8bf06a",show_title:"Bitcoin Fixes This",text:"of your Treasuries into Bitcoin. But before we get into all of that, can you tell us for my audience, just like how you got started and how you got into the business that you're in? Yeah, for sure. So I came to Canada from Egypt back in 2011. We were already Canadian citizens at that point. But I came with my brother to kind of start our careers here. And we came here. We were looking for a business to kind of buy outright or art together. And we found this cool restaurant in London, Ontario, that was doing pretty well. So we decided, you know what? Let's get into the restaurant industry. And we just bought that restaurant outright and we started from there. And then we grew that restaurant from small, like, little local place to a franchise. We now have over six locations in Ontario, and we're non stop growing the business. And ",timestamp:"00:01:25-00:02:30",topics:["ali"],type:"podcast",weight:4.660259485245579},{boost:0,date:1666137600,description:"Fastest way to grow connectivity for nodes?",episode_title:"Meet the Makers: Alan & Kwinten",guests:[{name:"Alan Plus",profile_picture:"https://pbs.twimg.com/profile_images/1565235279451103233/XD8pJuIo_400x400.jpg",ref_id:"e362fed6-ec06-4d8a-a052-3137b24f213f",twitter_handle:"alnboltn"},{name:"Kwinten De Backe",profile_picture:"https://pbs.twimg.com/profile_images/917859380699320320/p_v-fjmh_400x400.jpg",ref_id:"be68f240-1f4c-4b27-b4bb-752c90cbe0c3",twitter_handle:"QuintenDeBacke1"}],hosts:[{name:"Moritz Alby",profile_picture:"https://pbs.twimg.com/profile_images/859727763292512258/kiFpZ2vO_400x400.jpg",ref_id:"e88efbf8-3809-4508-a86a-d7bf9effb574",twitter_handle:"MoritzKaminski"},{name:"Zapp Ed",profile_picture:"https://pbs.twimg.com/profile_images/1519990234070540288/adGqlFoj_400x400.jpg",ref_id:"bbe7cf1d-cd8d-4d36-926d-76f41b775fbb",twitter_handle:"zapp_ed"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/965489b4-a414-4fd0-ab8c-55911b1596aa.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=GyA8tHNKmig",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"c9e0fbb2-302b-44c3-b69c-dfac38c97f98",show_title:"BOLT FUN",text:"could also take this question right now actually. What's the fastest way to grow connectivity capacity for your node? Is it better to open a few big channels or lots of small ones. I don't have all the data from all the node operators, but based on what I heard, what I've seen, there is no single strategy that is a winning strategy. So as I mentioned before, you could be a zero fee router and still make money by selling channels, or you could never sell channels and just make money on routing and have very high fees. But the same way as the question implied, you could have a lot of smaller channels, like 1 million set channels and to a bunch of nodes. So you connect a lot of different areas of the Lightning network, all kinds of services for micro payments. Or you could just decide that you're going to have ten channels, but they are very big between high capacity nodes. So all of these in my opinion and in my experience work, and you just have to find the right nodes to connect to. And this is a dynamic system, so there's no like one solution, it just changes and as soon as a new node enters the scene, it changes the whole dynamic. So it's a moving target. And if you find your sweet spot, you have to like continuously change that sweet spot a little bit. But it's there is a possibility to make money. There are some people who make serious money, I can tell you that. But yeah, just to answer directly the question, the fastest way really to grow your node is that two ways. One is you use a service like Lightningnetworkplus where you have, where you get two channels for every channel open. Technically, this is you doubling the speed of your growth. The other way is you can open channels to whoever you want to and whoever accepts your channels and then you empty those channels through an exchange or through loop. I mean, that is possible. It's expensive, but you can do this, you can buy channels if you have the capacity to do this. That's also a very fast way because you just keep opening chance you could build your node in a day technically if you have the money. ",timestamp:"00:23:26-00:26:32",topics:["Lightning nodes"],type:"youtube",weight:4.8936503202747375},{boost:0,date:1658548800,description:"Managing [[privacy keys]] is difficult",episode_title:"WHY ARE WE BULLISH Lisa Hough JC Crown Brandon Quittem ep274",guests:[{name:"Brandon Quittem",profile_picture:"https://pbs.twimg.com/profile_images/1502403738861940736/9J5VuTye_400x400.jpg",ref_id:"65512044-7810-4ece-8156-5519e072cb66",twitter_handle:"Bquittem"},{name:"JC Crown",profile_picture:"",ref_id:"79ae57b7-59d1-416a-961e-9e584ced2dfa",twitter_handle:""},{name:"Lisa Hough",profile_picture:"",ref_id:"a65a3362-03a6-4a6d-a901-3067f8b5dc81",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/55198112/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-6-22%2F277659593-44100-2-f891dab224966.mp3",node_type:"clip",pub_key:"",ref_id:"5992b639-b05a-4e6d-bd94-4c1b6907bda3",show_title:"BTC Sessions",text:"other thing is that managing private keys are hard and humans have no relationship to protecting information. And a Bitcoin that I'm sure everyone on this call is familiar with. Gigi, he explained it really well with the map is the territory meaning the information, your private keys or twelve word seats, that is your Bitcoin. And we have a lot of history and practice storing physical things we know to bury gold or put money under a mattress or in a bank fault. But we're not really good at information and so anything that makes that process easier is really important. And of course the reason is if the supply is held in individuals custody, it acts as a deterrent for any would be state level actor or other nefarious actor. Essentially says, good luck attacking us because it's going to be very hard and as long as you increase the cost of tyranny, I predict that that will repel the attacks because it's going to be really obvious how hard the attack would be to make. And so I don't know enough about the protocol to save it the finer details, but that's my sense. Yeah, I like that. And I like your Nigerian example. I think there'll probably be instances of even rather than even just countries, like even small tightening groups, small towns or something, having a sediment or whatever it may be, or in the future a FedRAMP for a citadel perhaps. We'll see how it goes. But yeah, no, I love that idea. JC. ",timestamp:"00:17:24-00:19:05",topics:["privacy keys"],type:"podcast",weight:4.651410079704728},{boost:0,date:1641859200,description:"About the Network mining simulator",episode_title:"Brink Projects: Research and Improvements for Bitcoin - TABConf 2021",guests:[{name:"Gloria Zhao",profile_picture:"https://pbs.twimg.com/profile_images/1144496084330266631/aPKPfoX3_400x400.png",ref_id:"cebd71c3-4ccf-452d-8ba7-4982f49fd060",twitter_handle:"GloriaHuiZhao"},{name:"Mike Schmidt",profile_picture:"https://pbs.twimg.com/profile_images/1320935020589158400/gFovyRlj_400x400.jpg",ref_id:"d503db9b-a7b1-49e1-8ef6-7541df3c2473",twitter_handle:"nytmike"},{name:"Jesse Posner",profile_picture:"https://pbs.twimg.com/profile_images/1467067234484830213/T6PtLZq1_400x400.jpg",ref_id:"bb55767f-dfbb-4182-8dd8-e1b08e0c6ad6",twitter_handle:"jesseposner"},{name:"Larry Ruane",profile_picture:"https://pbs.twimg.com/profile_images/1226076521/bike_crop_400x400.JPG",ref_id:"ce38f2dd-d41f-4957-ad83-671c3dc29cc5",twitter_handle:"larryruane"}],hosts:[{name:"TABConf (The Atlanta Bitcoin Conference)",profile_picture:"https://pbs.twimg.com/profile_images/1596233571521499138/YE8Us_Ml_400x400.jpg",ref_id:"e46f0c05-8cc5-4264-9c40-83b13f4edd0a",twitter_handle:"tabconf"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e7d2a4ca-6b44-4a45-a94c-6f48987979f7.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=UFro74sS8q0",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"6731ba0c-c57b-4fb1-a2f6-6e1ec641e830",show_title:"TABConf (The Atlanta Bitcoin Conference)",text:"rulane. I'm a part time Brink Grantee, so I hope to go full time someday. Most of what I do is PR review, but I thought it would be more interesting than just saying I do PR review and then go sit down. I thought I would present a project I started a couple of years ago, and that some of my break time. I've used to improve this little project and thought it might be interesting to present here. And it's something I call a network mining simulator. And there's a link to the repo here. And what does this simulator do? It can produce a million blocks in 10 seconds. Okay, so that's actually a higher block rate than many altcoins, believe it or not. So not really it's not creating real blocks, it's creating simulated blocks. So what the simulator does is it's what it is, is it's a command line program written and go. It's pretty small. It's like 400 lines of code. So it's very limited there. It's very simple. And I consider it a good tool for learning and actually chain code seminar. They're using this as part of their curriculum to bring in new developers and teach them some of these concepts. So it's really for learning and intuition building. And so what the level of the simulation is, is very, very basic. It's just a set of mining nodes, and there's only mining nodes, and each of them is creating blocks, generating blocks, according to Hassan distribution, which is like real bitcoin that we're all familiar with. And then these blocks are relayed across a simulated network and the network has latency. So each branch of the edge of the network has latency. The network is not fully connected necessarily. So what these nodes do is it's just like in real bitcoin, they generate new blocks, and as soon as they generate a new block, they forward it out. Or if they receive a block that is better than the one that they already know about, then they relay that to their peers. And then there's logic in there to make sure that we don't have infinite loops of forwarding. And then just like in the real bitcoin network, this kind of set up generates these temporary chain splits. And I'm not talking about hard forks or soft forks here, but just temporary chain splits due to timing. And then there ends up being these reorgs when mining nodes find out about a better chain, and that creates stale blocks. So this simulator is really to get at that aspect of bitcoin where we have these small reords that happen, they happen today in real life. And I said before, this is really mainly for learning, but this could be useful. I'm not really sure, but it could be useful for resisting harmful protocol modifications. I mean, there's people that are proposing all the time we had the block size war, right, in 2015 through 2017, and that's kind of settled down, but it's possible in the future you could have something like that where people are proposing larger blocks or more complex block validation. That's kind of analogous to slower block propagation if the blocks take a long time to validate. Or sometimes I haven't really heard this too much, but if people propose like a shorter block interval, then that will change the dynamics of these mining, these chain splits that I mentioned. So these are some of the results of these bad ideas if they were to be implemented. Higher scale block rate which represents a loss of security because miners will not make as much revenue and they're not going to be willing to put in as much ash rate. Also it will encourage the formation of specialized block relay networks. We actually had that a few years ago, but I think it's not being used anymore. But a specialized block relay network is easier to attack. There's also some of these bad ideas can cause greater incentive for geographic centralization. Now there's always a little bit of an incentive to do that, but if we make certain changes, larger blocks and smaller block interval and things like that, that increases the incentive for geographical centralization that's also easier to attack for especially state level attack. So the simulator runs off of a configuration. It's just a file that has a static set of mining nodes, each of which has a static hash rate. So like I said, it's very simple. And then there's a static network topology and each network connection has a static network latency. So time is a big thing in the simulator. There's also a block interval parameter so you can specify. So default is of course 600 seconds bitcoin. But you could play with that and change the block interval. So here's a quick example, like a really simple this took me five minutes to think of. It's a simple example of a configuration file for the simulators. There's only five minors here and each row or each line is a mining node. It has the name of the minor, then the then the hash rate and then, and then to the right of that is are the peers. So this is not a fully connected network with a delay. So for each configuration or each peer has a delay network delay. And so you run that, if you ran that configuration, it takes about 10 seconds. And then you can see like a bunch of statistics that prints out a summary at the end. And like one of the most interesting things is probably the stale block rate. So we see like 1% stale blocks in that with that configuration. And then you can see the per nodes have different stale block rates because depending on where they are in the network and then you can change the parameters of this. So here I increased a couple of the delays, network delays and then the stale rate went up. It more than doubled stale rate here with that change. And then this next one, I decreased the block size to two minutes from ten minutes to two minutes. And then the sale rate went crazy as a 10% sale rate. So this will show that's very bad for the network. You can also turn on detailed tracing mode T option on this, and then it'll print a line for everything that happens in the simulator so you can analyze exactly how the reords happen. It's kind of cool to study when those happen. It does print a line too, for reords, and I have some future improvements. And actually, that's it. That's all I have to COVID. ",timestamp:"00:23:07-00:30:34",topics:["Network mining simulator","mining nodes"],type:"youtube",weight:4.627060462133696},{boost:0,date:1676449800,description:"The ramifications of the Paxos BUSD stablecoin situation for all of crypto",episode_title:"The Chopping Block: The SEC Is Attacking Crypto – Will Gary Gensler Succeed? - Ep. 456",guests:[{name:"Marc Boiron",profile_picture:"https://pbs.twimg.com/profile_images/1486397784844496897/ZyNlahT2_400x400.jpg",ref_id:"3f27d12e-0a50-42c0-8b76-b3bb15fa1ce6",twitter_handle:"boironattorney"}],hosts:[{name:"Tarun Chitra",profile_picture:"https://pbs.twimg.com/profile_images/1587539091444432897/Z6_nmrCB_400x400.jpg",ref_id:"dfad4b23-92ff-4aa1-9aa4-abc1d54cd6d3",twitter_handle:"tarunchitra"},{name:"Tom Schmidt",profile_picture:"https://pbs.twimg.com/profile_images/1563232354277085189/xQL92DR4_400x400.jpg",ref_id:"bc9d3bfd-36b0-4cbc-a491-9370decf4c99",twitter_handle:"tomhschmidt"},{name:"Robert Leshner",profile_picture:"https://pbs.twimg.com/profile_images/1587956987786104833/1SiKVj-s_400x400.jpg",ref_id:"ebaa2166-7982-423d-9f43-add89e7d47f9",twitter_handle:"rleshner"},{name:"Haseeb Qureshi",profile_picture:"https://pbs.twimg.com/profile_images/1581025415551889408/thQwG4lb_400x400.jpg",ref_id:"790e4217-dd9f-416f-b9f8-ed596937f5b5",twitter_handle:"hosseeb"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/7de0d293-8ae3-4362-8500-8f7300f3fe41.jpg",keyword:!0,link:"https://pdrl.fm/98e0b1/traffic.megaphone.fm/LSHML5322156529.mp3?updated=1676422435",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"a3fd38b6-998f-4c62-ab60-554ef9275993",show_title:"Unchained",text:"Well, I think the worst case scenario that plays out is that Paxos is a smaller issuer than someone like center consortium that creates USD coin and that this creates some sort of precedent that gets used to attack other stablecoin issuers. $14 billion be USD is a lot, but it's the third largest stable coin. I think the bigger risk comes if there's precedent that gets used and established against other stable coins, USD coin and tether. And I think that's the sort of doomsday scenario in my mind, which is stable coins are like the primary on and off ramp and bridge between traditional markets and crypto. And however effective this attack on crypto is right now, by targeting banks and getting them to debank large crypto players. There's a lot of articles about this recently. I think by taking out stable coins, they're going to take out an even bigger on and offram for the majority of consumers and investors. And I think if it's successful, it draws into question how are people supposed to use this stuff? And fundamentally, I think this will take a long time to play out, especially if Paxos is going to take this through the legal system and defend themselves. I think it might be years, but it has the potential to put a shadow over stable coins for the two years that this takes to play out, potentially. And I think to the average user, I think this will be generally invisible. But I think the larger ramification is going to be the people that are saying, like, hey, I'm a traditional financial institution. Should I interact with stable coins? Or hey, I'm a bank, or hey, I'm a hedge fund. Should I interact with stable coins? And they're going to say, you know what, the last headline I saw on this was there's active litigation about the security nature of a stable coin and they're going to shy away from it. It just it creates a chilling effect for what I perceive to be the most important asset class in crypto. I think going after stable coins is impactful in a way that going after any individual company is not right. If Celsius is shuttered or if Kraken has a piece of its business shuttered, it doesn't really have a permanent effect on the rest of the ecosystem. But I think stable coins have an outsized impact on the rest of the ecosystem when they come under attack. And so I'm quite nervous, frankly, about this action against Paxos because of the ramifications and the knock on effects it'll have elsewhere. Well, I'm hoping that once we learn more about the nature of this lawsuit, that we see that there's some more explicit rationale that's not okay stable coin equal security, and it's something more idiosyncratic to what USD was doing or what finance was doing or something like that. That I think, is our best hope at the moment. If in fact, Gensler is going to say stable coins are securities. Bar none, unless Congress tells me otherwise. That's the way it is. Then the other counterside to that is that of course there does seem to be a lot of legislative energy behind having some kind of stable Coin legislative framework. And maybe that will be accelerated if in fact there is some regulatory action and public outcry and more attention on this question. Because the net effect of this, like I said, is going to be pushing stable coins overseas, right? If ultimately Circle can't issue it and Paxo can't issue it, well, Tether is not going to stop. And Tether, it's much harder to go after Tether, obviously, than it is to go after domestic US. Companies. That being said, BSD are any Americans using BOST? One, obviously Americans by and large don't need stable coins because they already have dollars. And then second, of course, Binance USD, binance is a small player in the US. They have very small market share with Binance US. And then of course in the US. USCC is by far the most well known stablecoin behind Tether. So it does feel like a weird target to choose. And I have to assume by the nature of that, that it's really a backdoor way of getting at finance than it is something more specific to stablecoin in general or even about Paxos. It's actually really unfortunate on the stablecoin legislation because that's just such a good point, that nothing's happened on that front. And unfortunately, right in the current Congress, it's just hard to see anything happening. But it is like the lowest hanging fruit possible. It's really easy legislation, honestly, when you think about what do we want to know? We want to know that you're holding assets that aren't just going to disappear and we want to know that you're actually holding them, basically, period. It's not that hard. And so it's just unfortunate that we're likely not going to see that anytime soon only because of the makeup of Congress, even though I think we've got a lot of folks in the House and Senate who frankly are really thoughtful on this issue and could deal with it quite easily. Yeah, it's a big hit to B and B as well, because again, speculation at the moment, but I think it seems to cast a bit of a specter that Gensler is going to be coming after Binance and especially with the affiliation with FTX. Again, I think this is kind of bullshit, but the narrative that propagated in the US by some parties that the downfall of FTX was caused by Binance or caused by CZ in some way makes him an easy target. And certainly, you know, now that he's consolidated market share and he's, you know, the the guy and the big guy on the block and the biggest overseas unregulated exchange or sort of underregulated, let's say, exchange, I think it's it's very clear that there's a lot of he's, he's he's the biggest game that there is to hunt in this industry. And I think Denzel is going to be going after him however he can, even if it causes some collateral damage along the way. When this news came out, was there any celebrating at Polygon that BNB was taking a hit? We never celebrate the failures of others more seriously. Honestly, it's not good for anyone in the industry. I mean, all L ones, all L two S do well with this industry growing. It sounds so typical, but it's just true. There's so much more to grow, and as you guys already know, plug and we're focused on a way bigger market. So the desire for anyone to go down is not big at all. It's really we just want to see the market grow, and this does not help that at all. ",timestamp:"00:22:50-00:29:30",topics:["stablecoins","BUSD","Paxos"],type:"podcast",weight:40.60979587666329},{boost:0,date:1672159829,description:"What is signature aggregation? How can it be done interactively and non-interactively?",episode_title:"Pieter Wuille and Tim Ruffing - Nesting, ROAST, Half-Aggregation, Adaptor Signatures (part 2)",guests:[{name:"Tim Ruffing",profile_picture:"https://pbs.twimg.com/profile_images/925128264502439936/XcmMIk8k_400x400.jpg",ref_id:"222f7374-6d68-4934-81ed-37567c515b59",twitter_handle:"real_or_random"},{name:"Pieter Wuille",profile_picture:"https://pbs.twimg.com/profile_images/1264051937172836353/n7gHdLbB_400x400.jpg",ref_id:"40260d2f-3480-47d6-8515-d2e780901273",twitter_handle:"pwuille"}],hosts:[{name:"John Newbery",profile_picture:"https://pbs.twimg.com/profile_images/1249773577659977728/T2e7Cy2W_400x400.jpg",ref_id:"76e8955c-952a-4700-a00c-ed0b1eecde92",twitter_handle:"jfnewbery"},{name:"Adam Jonas",profile_picture:"https://pbs.twimg.com/profile_images/672878026930032640/QKhWiMi3_400x400.jpg",ref_id:"6b623811-3131-4a29-8070-eb52a3fff63b",twitter_handle:"adamjonas"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/24a144b0-7ca3-40e9-9c42-86b9fce0b662.jpg",keyword:!0,link:"https://anchor.fm/s/12fe0620/podcast/play/62357551/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2022-11-18%252F1e2ca48f-a779-0eda-2bbd-357c9a24e294.mp3",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"c13cad10-b242-4812-ad19-3bce525dfeb0",show_title:"The Chaincode Podcast",text:"So Peter, you have mentioned cross input aggregation as the inspiration for a lot of the work that actually has been done to date. Let's talk about signature aggregation. Maybe start with interactive flow aggregation and sort of a cross input aggregation history and then we'll explore let's first say. What signature aggregation is. It's very closely related to a multisignature, but the difference is really think of a multisignature with multiple participants each signing, but they can all be signing a different message rather than signing all different. Allow all messages to be different rather than the same. Now, signature aggregation can be done interactively or non interactively, which refers to the rounds of interaction at signing time. Is it possible for them to just create their partial signature now once their individual one, and can a third party aggregate them? Or do they really need to collaborate in order to produce that signature? Now, if we're restricting ourselves to interactive ones, which is certainly the easier thing to build, there is a trivial way of turning any multisignature scheme into an aggregated signature scheme. Namely, everyone just signs everybody's message because it's interactive. They're talking anyway. Effectively the message could be like, here are all the messages and all the. Designers take all the individual messages, concatenate them these forms to message you or like put into the multi signature. Or you say the message is key one signs message this, key two signs message that, key three signs message that, and everybody signs that. That makes an interactive aggregated signature scheme. Just take a multi signature scheme and turn into that and you're there. That is modulus some subtle details. Yeah, let's not go into that, but just as a warning. So don't do this at home. Yes, of course. Still have your friendly neighborhood cryptographer have a look at it before you move on. That's just because of being able to actually tease out private keys based on reuse nonsense or what is the actual issue that you'd be most concerned if I did that? What would be the first mistake I would make? In the music paper, I remember Russell O'Connor came up with this fairly far fetched attack of like if you just do that what I just said and try to use that specifically in the context of Bitcoin transactions with one signature, there was a problem, I don't remember. There could be a problem. If you're a single party and you have multiple messages that you want to. Sign, you can be tricked into and you participate multiple times, you can be tricked into signing the same one instead of different one. Right? It's like you could be tricked into, I think, signing your message twice instead of only once. And it's not even clear if that is a problem. But I really may not remember the details. And if you're interested, look at the Music One paper. There's an appendix that exactly specifies the attack and then the problems. But yeah, because this was sort of. Full Glorial knowledge of like you can build an IAS out of a multi signature scheme. Here's a way of doing that. And that paper is like maybe don't do just that. Because apparently if you have a simple idea and it looks obviously correct and you try to insecure and you try to really prove it secure, it can turn out that there are actually subtle problems with it. Interactive aggregate signature scheme. We now know how to do that. So we can take music one, music two. Those can be turned into an aggregate signature scheme if needed. And so that is something that could be used for, say, cross inputs aggregation, but only under the condition that all the input signers are collaborating, right? And usually that is the case. Usually there's just one party involved. But say in a coin join transaction there are multiple participants. So if such a scheme were to be deployed and you have a coin join, then of course coin joins are at the same time the strongest motivation for wanting something like cross input signature aggregation, I think. Because think about it this way, every input in a bitcoin transaction today has one signature. In sort of a music taproot world, they will in fact all have exactly one signature. That signature takes up some block space. But if we were to be using a cross input signature aggregation scheme, there would just be one signature for the whole transaction. So that's a cost savings. And it is a cost savings that you shouldn't call it a coin join. But like a pay joint where A wants to pay B and C wants to pay D, they can join these two transactions into A and C pay B and D. And interestingly, in a cross input signature aggregation world, this aggregate transaction would be smaller than the sum of the individual ones because there's only one signature rather than two. So there's this economic motivation. Now that economic motivation is small. It's partially due to the fact that Seguid introduced a discount for witnesses. So those signature are already relatively inexpensive. They also have a relatively low cost on the ecosystem, but this makes the differential between the two fairly small. So it isn't like, wow, this is going to incentivize everyone to start merging their transactions. But it is a nice thing in the sense of like it gives a potential justification like, hi, I regulator, why are you merging your transactions? Being able to say, well, it's cheaper is a much better justification than like. Makes sense. So that's interactive aggregation, it has complications. All aggregate signature schemes that we want to do across more than individual inputs, like need consensus rules to work with them. In the same sense that, like, as explained, like, in a way, there's a relation with batch validation, where in batch validation we're thinking of, well, you first run all the scripts, pretend all the signatures succeed, but keep a list of all signature checks that have to be done and now do all those signature checks at the end. In a cross input signature aggregation world, it would be exactly the same, except there is now just a single signature provided rather than multiple signatures. And even technically these schemes are very similar. So that the math that's used for both is comparable. Except of course, in one case you have multiple signatures that need to be merged together versus just one. So another reason to see why this requires a consensus change is really like what consensus supports now is no signature verification. This is really like an algorithm that takes a single public key, a single message transaction and ",timestamp:"00:18:49-00:26:42",topics:["Signature aggregation scheme","signatures"],type:"podcast",weight:13.299509345139551},{boost:0,date:1669105800,description:"Statements of newly appointed FTX CEO John Ray in the first day declaration",episode_title:"The Chopping Block on FTX/Alameda: Is Sam Bankman-Fried 'Crypto Kanye'? - Ep. 424",guests:[{name:"N/A",profile_picture:"https://pbs.twimg.com/profile_images/1478260779522658306/rm6XqGZx_400x400.jpg",ref_id:"9862384f-b99b-4777-aa71-538d41591686",twitter_handle:"unchained_pod"}],hosts:[{name:"Haseeb Qureshi",profile_picture:"https://pbs.twimg.com/profile_images/1581025415551889408/thQwG4lb_400x400.jpg",ref_id:"790e4217-dd9f-416f-b9f8-ed596937f5b5",twitter_handle:"hosseeb"},{name:" Robert Leshner",profile_picture:"https://pbs.twimg.com/profile_images/1587956987786104833/1SiKVj-s_400x400.jpg",ref_id:"08f19db5-dbb2-4ca7-886a-d4aaa9de1e0d",twitter_handle:"rleshner"},{name:" Tom Schmidt",profile_picture:"https://pbs.twimg.com/profile_images/1563232354277085189/xQL92DR4_400x400.jpg",ref_id:"1c211a97-8535-426b-9091-9d23ae0fbc11",twitter_handle:"tomhschmidt"},{name:" Tarun Chitra",profile_picture:"https://pbs.twimg.com/profile_images/1587539091444432897/Z6_nmrCB_400x400.jpg",ref_id:"8d941896-7865-49b9-9505-cf91882986bb",twitter_handle:"tarunchitra"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/7de0d293-8ae3-4362-8500-8f7300f3fe41.jpg",keyword:!0,link:"https://traffic.megaphone.fm/LSHML8128135235.mp3?updated=1669122227",node_type:"clip",pub_key:"0201497bb9e66239cdf8fe218ee3e3c7c5b1bea880787ccdd433e7af55f88b53ed",ref_id:"51ecdc95-4e1d-448b-923c-5a7e1822f131",show_title:"Unchained",text:"you guys are at a brick wall. I take it you guys are trying to hide your location. They're in the same elementary school gymnasium. That's where they go and live from right now. This is a metaphor about the state of the industry, is what it is. That is true. It's been a pretty dark and depressing couple of weeks. Normally we run the show every couple of weeks. We're doing another show on basically one week after we did our previous show. Just because the amount of news and craziness was going on with this FTX fallout has been just absolutely incredible. I'm going to go to and get into it and kind of walk through what's happened since last Monday. If you recall, last Monday, FTX had already entered the bankruptcy proceedings on that Friday night before last week. Friday before last, there was this midnight massacre when FTX got hacked. And we've learned much more about each of these things to understand exactly what took place in this quote, unquote, unauthorized access to FTX accounts. So the first and most important thing that happened was that there was an affidavit released by the new CEO, John Ray, who is basically the liquidator who liquidated Enron. And he essentially described the absolute pandemonium that was the books and records and corporate controls at FTX. And so what he stated in the filing and it's absolutely incredible, incredible filing. I recommend you read it. It's pretty light reading if you can skim through like kind of the perfunctory stuff. But there's a choice. Quote, at the beginning of this filing, he says, Never in my career have I seen such a complete failure of corporate controls and such a complete absence of trustworthy financial information has occurred here. From compromised systems integrity and faulty regulatory oversight abroad to the concentration of control in the hands of a very small group of inexperienced, unsophisticated, and potentially compromised individuals, this situation is unprecedented. So there's all these revelations that we're now getting of just how horribly managed and horribly run FTX was to having all of the private keys in one shared Google spreadsheet that apparently everybody in the core team had access to private loans being given from the company to Sam personally, as well as to buy Bahamian property for employees. Almost negative accounting, just absolutely incredible oversights and just understanding where the money was going and keeping things running. Of course, I think we alluded last time to the Mickey Mouse accounting firm that actually did their audits for 2021 and John Ray basically stated in the affidavit, look, I do not believe that these audits should be considered to be reliable because these auditors are just not serious people. The way he called them out was pretty hilarious. He's like, FTX US was audited by Armanino, a firm I have heard of. FTX International was audited by whatever the name of the firm was, a firm I've never heard of, and whose only claim to fame is to have opened the first CPA in the Metaverse. That was like, amazing. There were so many Zingers that were like, I've read some pretty staid and boring bankruptcy filings, but that one has a lot of character in it. And bankruptcy filings aren't exactly where you're like, wow, the great American novel was written, but that one actually could be. There's a lot more in there as well. So beyond the selfdealing that was taking place on the balance sheet of FTX, it was also revealed in there that Alameda was explicitly exempted from liquidations within their risk engine. So confirming what many people had suspected, that there was an enshrined special relationship between Element and FDX. And now, again, we don't know the extent of it, but at the very least they had a different status in the risk engine compared to any other marketing. All I have to say is if you followed any Djen and on trading account since 2019, you would have already known that there was tons of evidence and analysis. I don't know how investors who invested in it did not look into that because that was like pretty public knowledge. In fact, actually, Alex PAX work with you actually talked about his experience investing in or not investing in Almata in 2019. And I feel like a lot of the stuff there should have been stood out as diligence for any future investor, but somehow everyone just kind of ignored it. Well, so my assumption was that that was obviously true in the early days, right? I mean, it was explicitly part of the strategy of FTX in the early days, was that Alameda was going to be the kind of point market maker, but the idea was that they cleaned up their act over time, right? If guinea was on Odlots, the founder of Winchmemt, and he said explicitly, like, yeah, we kind of assumed that they'd clean things up. Same thing that Kyle Davis said, the reason why Three Arrows was trading on FDX, that they assumed that there were just corporate controls in place that prevented this after they went big. So it's one thing to have this as a bootstrapping mechanism when you're a small Hong Kong exchange and you're kind of trying to get something up and running. It's another thing when you're a $40 billion company. You've got all these stall words investing on the captable. I would not be surprised if there were, again, misrepresentations that were made to investors about this because almost certainly it's one of the most obvious things investors would have asked for. And it's also almost certainly the case that they did not turn over source code to investors for Diligence. You can tell from all the stuff that we're hearing now about how Diligence went that it was gun to the head. It was very like, look, you've got to commit now, you've got to put money in now. These audits and this data room is all you're getting. And if you're not in, then we're going to go to the next guy, and there's many next guys that are lined up ready to put checks ",timestamp:"00:01:11-00:06:44",topics:["FTX","John Ray"],type:"podcast",weight:6.117964948082447},{boost:0,date:1632355200,description:"What parts of ASIC miners are the most difficult to obtain?",episode_title:"The ASIC Mining Hardware Market",guests:[{name:"Vincent Zhang",profile_picture:"https://pbs.twimg.com/profile_images/1158285609196109825/fuB-e6lm_400x400.jpg",ref_id:"98e7bc98-3a3b-4ddf-9b48-5dcd78973739",twitter_handle:"Whatsminer_MBT"},{name:"Vincent Vuong",profile_picture:"https://pbs.twimg.com/profile_images/1260974518547312640/n47yvbNL_400x400.jpg",ref_id:"8390e230-e36b-4e0d-9f5d-70c6635bf3c2",twitter_handle:"BitcoinVincent"}],hosts:[{name:"Will Foxley",profile_picture:"https://pbs.twimg.com/profile_images/1580970227193376776/9oQfeExj_400x400.jpg",ref_id:"704b9e82-3e40-40b6-874c-6bb8fadafbef",twitter_handle:"wsfoxley"},{name:"Zack Voell",profile_picture:"https://pbs.twimg.com/profile_images/1595803006737448961/fFrf7VJb_400x400.jpg",ref_id:"e32c7661-c635-4089-a620-ffce509eff0e",twitter_handle:"zackvoell"},{name:"Compass Mining",profile_picture:"https://pbs.twimg.com/profile_images/1425165074373791744/f2CgInvP_400x400.jpg",ref_id:"812e5d37-47fb-4077-915f-df52e2ef84d8",twitter_handle:"compass_mining"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/ae91fac6-a1af-4877-9a92-e793d556ee66.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=qKeUCNXa4Uc",node_type:"clip",pub_key:"03c18d0c6c35333f22bc524e21a5fd1d2d9886f5d4d958dc1de95d025de5c84cfc",ref_id:"d2273e47-dfdb-4847-8690-ef58fe22d5c0",show_title:"Compass Mining",text:"Totally. So I want to move back to an earlier question or earlier thought that you had. Vincent from compass. Damien, if you could share my screen really quickly, looking at just like ASIC parts in general, interested in knowing your thoughts on what parts of an ASIC are the most difficult to come by. So I'm not sure if you guys can see my screen currently, but if you guys can't see my screen right now but let me get a link over to Damon, he can throw this up. But basically, when you look inside an ASIC, there's a million different parts, right? And all those parts are kind of hard to come by. Some parts are harder than others. And I'm wondering, from your perspective in the procurement area, what parts inside an ASIC right now are so hard to come by that it might be causing a bottleneck? Like, we talk about the hash boards a lot and like the Wafer chips, but there's other parts inside of ASIC, like the PSU even, like going inside that. There's different parts inside that that are difficult to come by. So, Vincent, from what's fine, actually, I'll start with you since you are more on the development side of these machines. But yeah, if you could scroll down maybe a little bit more. Damian, we could take a look at some of the parts inside of an ASIC. Vince, I'll give you the floor. Yeah. So I can see that. Yes. Is there any part inside an ASIC minor that is particularly tough to come by with sanding? Of course, the hashboards themselves can be difficult to procure from chip manufacturers. Is there anything else others should be aware of given that there's a lot of demand right now to fix minors as well, and people are trying to find locations where they can be fixed? Okay, so this is a good question. So for the minus from our site, follow impulse can be used for all this. The fan is uniformed for all the minus. But yes, there's different for M 30 series and M 20 series. So the fence, the difference is M 20 series is four pin fence and six pin fence. And now we are supplying the four pin fence. In terms of Om 30 series, it can be used. All the models are used the same fence, and the control card and adapter card can be uniformed. However, as you said, the hashboard cannot be mixed with each other in case only when the hashboard are being produced with the same bin of the chips. So for example, M 30s plus may be produced with bin one, bin two, when the users want to replace the mix the hashboard from different miners. So what he needs to do is he need to make sure the model of the miners are same and the bin of those hashboard are the same due to the hashboard of the different miners may be different because, for example, some of the chips need to have 14 watts power to make them work. So if we put twelve watts power supply units on those miners, on those chips, it won't work. Right now, the power models, we have two types. One type is twelve. Watts and another type is 14 watts. Okay. You cannot mix use the twelve watts power supply unit to the minus. Need 14 watts power supply unit. Okay, so this is the difference why we cannot just make it simple just because the chips we can get, they are not as beautiful as just like one. Okay, so different chips from the same wafer, okay, so they have different performance and characters. So we have to make the minus based on the research on the chips we can get. So that's why all the minors, they are different. Okay. Only the same model of the minus. So we have a different version number for people can see M 30s plus, but the M 30s plus maybe have version one. Version two. Okay, so only version one the same version of the hardware so they can mix with the hashboard. So even with the same model of the minus, still we need to check the hashboard. So whether they are from the same bin or not from same bin of the chips, so we actually have the training and the documents to present. That awesome. Vincent, same question to you. Maybe like when you're looking at an ASIC and you're looking at the hardware market, North America, what are the hardest parts to come by currently inside of ASIC? The good thing about brand new Asics is they don't break that much, I hope. But it's really hard for us and a lot of people in the secondary markets to procure hash boards, control boards, and then just the general PS use. So the PSU is a the biggest failure point, mainly for bidding units, less so on the MicroBT units, thank God. But yeah, it's hard now because for MicroBT, just like Vincent said, there are multiple types of miners, right? And so each one, I think they had to create different power supplies for each different one. And so it's harder to mix and match and find the exact power supply that you need. Especially because some used to accept 277 involved and now they don't accept that anymore. And so those are the type of equipment that's what I'm usually looking at. And for the older machines, it's much easier to zombify them. So like the S nine S, you could interchange hashboards relatively simply, you can interchange every piece of equipment. Now it's becoming a lot harder to do that and I'm not sure if that's from a manufacturer's design point of view or they just want to limit it and reduce the amount of like interchanging and swapping of parts between miners. Yeah, no, that makes sense. Maybe Compass can become a spare part center in North America so you could change some power supply unit can joke and keep it there in North America. Exactly. Right now we already have multiple services center in North America, so we have two services center in Canada and so we should have two services center right now in united States, also one in Canada. So bit forms and heart rate, they are our repair centers. And in United States, one is HM. Tech. Okay. And I do not remember the name, but they should have some small quantity of the spares available. But recently the demand of the spills become huge. So specifically for power supply unit and the control board. Yeah, and I think that's also in part due to when you guys start dealing with more institutional clients. And a lot what they're trying to do is they want to stock up on these parts and then have repair technicians on site that can quickly repair them versus once the machine goes down, they order the part. And this is just so they can minimize the amount of downtime, because everybody wants to take advantage of this period of extremely high probability. And having even one machine down is a lot for even a couple of days, right? Yeah, for sure. Definitely. We can't make predictions necessarily too far in the future, but it's one of the most profitable times to be mining at all. That makes perfect sense. We know that miners are boarding Asics themselves, not only just spare parts, but it makes perfect sense to see the pattern repeat with spare parts. ",timestamp:"00:36:03-00:45:52",topics:["ASIC Miner Parts"],type:"youtube",weight:4.625530958293724},{boost:0,date:1624507200,description:"How [[Ali]] got into [[Bitcoin]]",episode_title:"Bitcoin Fixes This 48 Small Business with Ali",guests:[{name:"Ali",profile_picture:"",ref_id:"1169edf2-a89f-4d89-94a4-1be1a7b9aef0",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/2536a974-d668-4ac2-8613-0b37aa0ca08c.jpg",keyword:!0,link:"https://anchor.fm/s/2a4e8034/podcast/play/36003846/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-5-23%2F969a4306-e9eb-95c5-0e15-42d37c0e61e8.mp3",node_type:"clip",pub_key:"",ref_id:"6565a1d2-53e0-48a8-bd22-9ea1080c4364",show_title:"Bitcoin Fixes This",text:"That's awesome. So how did you get into sort of Bitcoin in the first place? It didn't come out of nowhere. And how did you start putting some of your corporate treasures into Bitcoin? What's the story behind that? Yeah, so it started in 2020. We were a class of 2020. We're pretty new to this space. And after March of 2020, I had this feeling that there's something really messed up with the financial situation and that I needed to find a solution for my personal wealth. So I kind of went on this quest in search of a solution. And then I bumped into the Number Zero and Bitcoin by Robert Breedlove. And I bumped into Preston Pitch and say Fiden's book. And so I kept reading and learning. The more I learned, the more I buy Bitcoin. And then I bumped into Jeff Booth's book. I said, Tomorrow devoured that in like three days, and then bought more Bitcoin. And I just kept buying it more personally. And then I kept dragging my partners in with me and I felt like I found a solution and it grew from this cool investment idea to the best investment idea to a way of life where I need to incorporate my business into it, I need to incorporate my kids into it, I need to incorporate my family, everyone. Right? So it kind of consumed me personally. And then my partners. And then we were sitting and talking for two times, I believe, about putting the companies treasury into Bitcoin, but we didn't really pull the trigger on it. And as soon as we heard the MicroStrategy that first time buy that they ever did, it was like 250,000,000. I believe that's when it was like, that's what pushed us over the cliff. And we said, you know what? This is a race of accumulation. Everybody is going to want to own Bitcoin. Every Corporation is going to want to buy it eventually will. So we got to go all in and we did that. And then here we are. And you still haven't had to sell any Bitcoin, which is rather remarkable. How have you managed to do that? Well, good question, actually, Jimmy, because a lot of people are asking me about how do we take Bitcoin payments and all that. And the reason why we never have to sell any Bitcoin is because we never used it as a payment method. We just used it as a savings technology. So we operate 100% of Fiat. We pay our employees, our suppliers, our rent or electricity, and then whatever is left, whatever profits left, we just take that and we just convert it into Bitcoin. And that profit we never had to sell to this day to expand. The way we're able to do any of our expansions is we just finance it and then we just put it as an expense, we put those payments as an expense, and that's how we never sold any Bitcoin. It's a simple strategy, but not a lot of people realize that they can do it with their business, but it's very effective. It's very helpful for your business. I think any business right now is going to struggle with inflation and with monopolies of their industries. And you need some sort of edge. You need to have a balance sheet strategy. Otherwise you're just going to fall behind year after year and you're going to wake up five years down the road with your money being worthless. And you're going to say, Man, I wish I figured out this Bitcoin thing earlier and that's why we're promoting it here. We love it when small businesses get into Bitcoin. Yes, of course. It's nice when you hear the big Corporation announce their billion dollar buys or whatever. But for me, I get really pumped up when a small business DMs me and asks me about, hey, we're going to do the same thing, what you guys are doing, and we want to know how to do this or how to do that. And this is what keeps us going. This is why we promote human freedom and this is what gets us ",timestamp:"00:14:04-00:18:56",topics:["ali","bitcoin","bitcoin","bitcoin"],type:"podcast",weight:4.618438363076077},{boost:0,date:1610901076,description:"Moving away from the principles of America which is small government",episode_title:"Quoth the Raven #237 - Jake Ducey",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/710ac70a-11fc-40ec-a2a2-01b92fb8015e.jpg",keyword:!0,link:"https://mcdn.podbean.com/mf/web/6kaqr2/ducey.mp3",node_type:"clip",pub_key:"",ref_id:"7b4a8ab4-5254-4195-8546-183e6a078a7a",show_title:"Quoth the Raven",text:"I guess it's true. We're moving away from the principles of what America was about, which was small government, and we're electing psychopaths, and we're giving them free rein to bring as many psychopaths in as they want. And we have such a docile population that nobody's critical thinking, nobody's looking at the ramifications of this, and nobody's looking at all. They just do whatever they say. I hadn't thought of it like that, but I mean, it's hard to argue against that point. But we live in a representative republic, so these are the representatives we've chosen to represent us. And, I mean, we're reaping what we so to some degree. I think what you just said makes a lot of sense, though, because I said the exact same thing yesterday in a conversation, which is people are just doing what they're told. That's it. There's no pushback. There's no questions. There's no nothing. If Gavin Newsom told you to do your laundry on Tuesdays only do you do it? Most people would do it. Yeah, right. And he said the reason was because of global warming. And so only on Tuesdays. Yeah, I mean, if he said that, there would be scores of people lined up thinking like, all right, well, there must have been some committee, some task force, some focus group that got together to arrive at that conclusion. And the truth is, as you know and I know, they're really just kind of pulling things out of the sky. Yes. And it's not just with political rule, but that manifests itself in our world. I mean, most people have terrible health, terrible finances, and they, in general, have a very subpar life. And I think it's because we've been conditioned in our society to not think for ourselves. And I think, personally, that it's a long standing social programming that's been designed to ultimately get total control over the population. Isn't it weird when you kind of step back I was talking to somebody the other day about preventative medicine and two different types of medicine. One, where you are trying to address things before they occur, and the other one where traditional medicine where something goes wrong, and then you try to deal with it then. And when you step back and you look at the way that we live, not just we talk about macro all the time, which is this incessant and constant need to be spending and that that is the virtue of the economy, supposedly, as these people tell us. But also, you look at things like you're talking about you look at things like mental health, like physical health, exercise, diet. We've just been conditioned to make the worst possible choices when it comes to all of those things. Yeah, we have. I mean, I'm more sinister. I think it's all on purpose, and I think that there's very evil people in the world that want total control over the world. But yeah, I mean, my rule of thumb started when I was 19 in college, you know, when I started everything I was doing, and I raised my hand in economics class and asked my teacher why we couldn't audit the Federal Reserve as a freshman in college. It was 2011, I think maybe I think 2011. And he told me to shut up and memorize the textbook. So I dropped out. And my Mo has always been, never believe anything the government tells you, and basically, never do anything anyone else tells you, too. People don't tell you to start a business or any of that. And that's kind of always been my Mo. I don't advise it for everyone. It's worked out pretty good for me. Yeah, well, you're letting the market decide what your value is. You're not letting an econ professor put a dollar amount on it. You're not letting a degree put a dollar amount on it. Right? You went out and you started doing your own thing. And what the hell is your own thing, by the way? Because one of the things I wanted to talk to you about, we didn't talk about on your podcast. You have another podcast channel called I love Prosperity? And that's the one where me and you were chatting, but your main YouTube account is just called Jake Dosey. You got 600,000 subscribers. What the fuck is going on on this channel that you have 600,000 subscribers? What is Jake do see up to? ",timestamp:"00:14:09-00:18:47",topics:["America","Small government"],type:"podcast",weight:4.613381505012512},{boost:0,date:1590692100,description:"Concrete ways for companies to tap into blockchains",episode_title:"Episode 5: The Future of Corporations in the Age of Blockchains",guests:[{name:"Jason Potts",profile_picture:"https://pbs.twimg.com/profile_images/1444448536947396612/MWoMpiut_400x400.jpg",ref_id:"83de5ad8-399d-4d5e-beb6-036bc73f2e60",twitter_handle:"profjasonpotts"},{name:"Aaron Wright",profile_picture:"https://pbs.twimg.com/profile_images/1467700275209195530/MuLAUZ7l_400x400.jpg",ref_id:"926d7ff6-0327-49a0-811e-3f2e2db2fc5c",twitter_handle:"awrigh01"},{name:"Luis Cuende",profile_picture:"https://pbs.twimg.com/profile_images/1590314672640630784/SniHt1kT_400x400.jpg",ref_id:"bf8c4b16-8bdb-4249-8e34-9c4458808890",twitter_handle:"licuende"}],hosts:[{name:"Jeremy Allaire",profile_picture:"https://pbs.twimg.com/profile_images/1501707897641779208/cpB2Dk9__400x400.jpg",ref_id:"df622380-4129-458c-8e10-8088f172f002",twitter_handle:"jerallaire"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/99d17d22-4448-4267-9065-f55b341f43d2.jpg",keyword:!0,link:"https://mcdn.podbean.com/mf/web/2jwy9x/secure_money-movement_episode-5.mp3",node_type:"clip",pub_key:"",ref_id:"4b80af11-a773-43bb-8ada-b5771e2cf481",show_title:"The Money Movement",text:"last item, which is for projects in the world today or companies in the world today, what are some concrete ways that they could begin tapping into this and using it? And if you want to share an example too, that'd be awesome. Yeah, definitely. I think murder like companies it's communities, I think I mean, companies can also use DAOs. Like we ourselves use dio. But communities are super interesting. For example, there's this virtual world in VR called the Central Anti, owned by its users, and they have this do that they use. So users absolutely govern everything in the platform. So it's extremely helpful. One thing that I've been also involved with is called Help out. And the idea is to allow for people to create, like, very small, localized health clubs or volunteers and supervisors who are able to donate funds and also receive donations all over the Internet and then give those donations to people in need. So the idea is that you don't need to wait for this big, kind of slow moving nonprofits to actually take action. You can make a thousand, like, decentralized organizations bloom that actually tackle these problems in a very small scale. So, yeah, I think online communities are wonderful, and I think we're moving towards a world where there's going to be more and more communities. With the employment we have right now and the need for meaning as a civilization, I think communities are the way to go. I love it. It's so exciting. Luis, really appreciate you joining us to share your vision and share where you guys are at. And we'll be tracking it really closely and wish you really continued success and we'll talk really soon. Louise, thank you so much. Thank you. ",timestamp:"00:25:49-00:27:22",topics:["Help squads","Luis Cuende","nonprofits"],type:"podcast",weight:4.587138891220093},{boost:0,date:1519171200,description:"The anti-vaccination movement in the 19th century",episode_title:"PFP063 | Anthony Daniels (Theodore Dalrymple) | “Public Health” as a Lever for Tyranny (PFS 2010)",guests:[],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/624262ef-b30f-4114-8061-e310187e6bb4.jpg",keyword:!0,link:"https://www.youtube.com/watch?v=-KZBCni4Mik",node_type:"clip",pub_key:"02574d6e8e787372184b6f17c40d6c6fe1777db9015801f95dfd24692784d767cd",ref_id:"04e7ce48-3c54-41ef-a7d5-59f923b85354",show_title:"Property and Freedom Society",text:"another very important example struggle over smallpox vaccination in England and Wales during the 19th century. In the first two or three decades of the 20th century, it probably come as a surprise to you to know that the anti vaccination movement was one of the strongest and most durable social movements of the 19th century, and it published mass circulation journals continuously for 50 or 60 years. In response to the British government's attempt in the 1850s to make the vaccination of children compulsory and instituted fines for those parents who did not have their children vaccinated. That compulsion and vaccination in the United States is still quite common. The arguments of antivaccinators were composed of two main strands. I have quite a large collection of anti vaccination literature. The first of these was that vaccination was, as a matter of empirical fact, either useless or harmful, responsible for spreading such diseases as syphilis and even leprosy, and also that it was ineffective against small bonds. Well, this is not a strand that I'm interested in here. There was a second strand according to which, even if compulsory retination were effective against smallpox, it would still not be justified because it would make the state, and not the parents of children the arbiter as to how they the children should be best looked after, and that this was the beginning of a slippery slope. Interestingly, this was a movement that was predominantly working class. Working class was asking for protection from the state, not protection of the state. And I'll quote just one ditty from here the flavor of England state. Men of England, claim your freedom, make the noble stand. Sweep the unjust law of tyrants from your native land. Strike the blows of vaccination, claim your liberty. Sound the echo through the nation. Britains shall be free. Well, in the event something like a compromise was reached in 1898, according to which parents could opt out of having their children vaccinated if they could persuade a magistrate that they were conscientious objectors to vaccination. The model for conscientious vaccination that conscientious objection during the first world war. In any case, as it happened, smallpox declined as a serious health threat in western countries for a variety of reasons. Only one of them vaccination and the passion they went out of the promises. Well, immunization against contagious disease is an interesting case because for no such diseases, somewhere between 80 and 90% of the population must be immune in order for there to develop what is called herd immunity. That is to say that the nonminis are protected against infection because an epidemic cannot take hold in the population. Well, the success of immunization campaign is in eradicating or controlling various contagious disease, as in my view encouraged the epidemiologists and the public health doctors and governments ever since. And of course the discovery of the damaging effect of smoking autoimcountry. And they hope to repeat these trials for the common diseases which are currently great significance both in terms of mobility and economically in western populations. Diseases such as hypertension, coronary artery disease, stroke, type two diabetes, osteoporosis and various forms of cancer which seem to be related to lifestyle. In most such cases, of course, causation is rather less tearcut or well established than it was for infectious diseases or even the connection between smoking and various kinds of disease. But nevertheless, measures of varying degrees of coerciveness are proposed to reduce the burdens of these conditions from the contents of food to denial of medical treatment to those whose lifestyle has brought on their own conditions. Well, the lockers stand out. Public health authorities to interfere in the lives of individuals of the general public derives in large part from the fact that while the risks are taken by the individuals, the costs of consequent illness, when it develops, are borne by others in the form of idle insurance or of course in Britain, by the state medical system. In other words, I smoke, but you pay for the treatment of my cancer. And the hope of many people on Britain, I think, is that eventually they'll have an extremely expensive procedure which will more than pay back the amount of taxes that they have paid. But of course, it's not possible for everyone to get more out of the system. Nevertheless, that is the hope. Now, it's again obvious that people who pay the taxation cannot be the administrators or controllers of it and a class of bureaucrats charged with reducing costs or sometimes making profits charged with the administration. And incidentally, they are likely to transfer as much as possible of the money raised by taxation or insurance into their own personal funds. And this is not a negligible thing. ",timestamp:"00:17:44-00:24:10",topics:["anti-vaccination movement","Small pox","vaccination"],type:"youtube",weight:4.582683563232422},{boost:0,date:1674635400,description:"The large percentage of vested Solana in FTX bankruptcy",episode_title:"The Chopping Block: Here's Why Gemini Could End Up Filing for Bankruptcy - Ep. 447",guests:[],hosts:[{name:"Haseeb Qureshi",profile_picture:"https://pbs.twimg.com/profile_images/1581025415551889408/thQwG4lb_400x400.jpg",ref_id:"790e4217-dd9f-416f-b9f8-ed596937f5b5",twitter_handle:"hosseeb"},{name:"Robert Leshner",profile_picture:"https://pbs.twimg.com/profile_images/1587956987786104833/1SiKVj-s_400x400.jpg",ref_id:"ebaa2166-7982-423d-9f43-add89e7d47f9",twitter_handle:"rleshner"},{name:"Tom Schmidt",profile_picture:"https://pbs.twimg.com/profile_images/1563232354277085189/xQL92DR4_400x400.jpg",ref_id:"bc9d3bfd-36b0-4cbc-a491-9370decf4c99",twitter_handle:"tomhschmidt"},{name:"Tarun Chitra",profile_picture:"https://pbs.twimg.com/profile_images/1587539091444432897/Z6_nmrCB_400x400.jpg",ref_id:"dfad4b23-92ff-4aa1-9aa4-abc1d54cd6d3",twitter_handle:"tarunchitra"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/7de0d293-8ae3-4362-8500-8f7300f3fe41.jpg",keyword:!0,link:"https://traffic.megaphone.fm/LSHML8027241616.mp3?updated=1674608143",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"ecaaa46f-b7ad-49b7-aae3-402befc21ab6",show_title:"Unchained",text:"who come in the door. I agree with this. I think what is interesting is how many people are clamoring for FTX to be restarted. Like even after FTX declared bankruptcy, it's sort of mildly related where people feel like there is some gap in the market because they're like, look, I loved the FTX, UX, I loved the cross margining, and yet now it's gone and nothing is really replacing it. And now even John J. Ray was discussing this week the possibility of restarting FTX. So it's like, I agree with respect to like, hey, this is sort of a small moment in time market for these bankruptcy claims, but there is a question of like, who's going to sort of come fill that gap or our binance and the other big exchange is going to develop their own sort of similar products. By the way, I just looked it up. So the FTX Almita combined had 50.5 million sole, which is over a billion now, and it completely vests in 2028. So I think the vast majority of it is actually because they did those crazy seven year vests even with their soul. What? Yes, there's a lot of ecosystem sales. Those were seven year vests, I guess. So you're talking about serum. I'm not talking about salana. No, I'm talking about salana. That's like the crazy part. They agreed to a longer vest than the default. What? That's insane. That's so insane crazy. Yeah, there's a Salana Foundation blog post talking about the 50.5 million so 54.5 million soul. You could definitely bootstrap a prediction market on betting on how that gets distributed. Well, I think that's enough. That's enough money. But it also means you need, like, a trustee for seven years to, like, manage the liquidation of this soul, you. Know, Make Madoff was much longer than that, so it's not that crazy. Yeah, I do think the whole wind down process has dust that they just continue to collect and report on for years and years and years. Yeah, it's going to be painful. Well, with respect to FTX, we did get a story that the liquidators identified 5.5 billion in liquid assets for the FTX total estate. We still don't have a good number on the liabilities, so we don't know what that represents in terms of a percentage recovery, but it's at least better than some people were originally ",timestamp:"00:40:52-00:43:17",topics:["Solana","FTX"],type:"podcast",weight:28.556055558933764},{boost:0,date:1632628800,description:"[[Bitcoin]] is a Money that Reflects Human Time Effort and Efficiency is Tied to [[Energy]]",episode_title:"WHY ARE WE BULLISH Denver Bitcoin CryptoMags Lord Fusitua Jim Crider ep203",guests:[{name:"Jim Crider",profile_picture:"",ref_id:"acb937b5-97e9-4881-a45e-0e9511382019",twitter_handle:""},{name:"Lord Fusitua",profile_picture:"https://pbs.twimg.com/profile_images/1511890587586560000/xGb_Dq_D_400x400.jpg",ref_id:"45559c92-d4f0-42a5-8dc4-a8cce65e95a1",twitter_handle:"LordFusitua"},{name:"CryptoMags",profile_picture:"",ref_id:"79cd9104-fa2c-4996-a179-8acb75642acd",twitter_handle:""},{name:"Denver Bitcoin",profile_picture:"",ref_id:"5ab53f2f-797f-4e1b-90d8-f2ca90e88af4",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/638c47da-8592-4d7b-aa1a-20e28fa0499f.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/40846589/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-8-25%2F381320f0-9d1f-9ee7-893f-57af427aca69.mp3",node_type:"clip",pub_key:"",ref_id:"1ac39cf4-fc11-47e7-8972-113c674860b2",show_title:"BTC Sessions",text:"go back three years, 2018. I remember watching Steve doing presentations in Edmonton like 3 hours north of where I am, and it was still small and it was like it was a struggle to get interest still. Oh, no, they laughed in the industry was really laughing at this. Yeah, it was crazy. And to see the inevitable success of what him and you have been talking about over these past years is fantastic. We have a money that actually reflects human time, effort and efficiency. Well, of course it's going to be tied to energy. Of course it was going to. And the people that made those connections early are the ones that I think will be incredibly successful. And apparently with my Freudian sleep and slip. Sexy. Well, successful. Well, no, you're right. But you make a good point. Point. It's one of those things where I think gold for the age of time was a representation because of its proof of work. Gold is scarce to a very high degree just because of its natural occurrence in the Earth's crust. And it's difficult to find and it's certainly difficult to refine and Polish and get into any kind of a jewelry and such. There's always been proof of work throughout the history. And there's a recent documentary Mags was mentioned in it, and I was as well featured in a recent documentary, what's it called? This machine Greens, I think. Yeah. Definitely check out that documentary, if anybody that's in the audience hasn't seen it yet, in my opinion, there's like a little bit of kind of green washing in there a Bitcoin. And I don't think Bitcoin we don't need to greenwash it. It's great. Bitcoin is great as it is, but it really into the history of how energy interacts with money. And obviously how Bitcoin is what I would call the most precise, most accurate representation of proof of work, the most accurate representation of energy input, because it truly comes down to the kilowatt hour. Right. What it takes to produce a kilowatt hour like Henry Ford predicted. Right. We have now a decentralized currency that is tied to kilowatt hours. I love it. I don't know if you were going to add in there, but feel free to if you had any thoughts on what Adam was saying, many thoughts. Which one would you like now? All of them just throw it at us. Mag. Well, ",timestamp:"00:33:52-00:36:48",topics:["bitcoin","energy"],type:"podcast",weight:4.565201282639802},{boost:0,date:1669389148,description:"Podcasting 2.0 would incentivize value signal instead of attention signal",episode_title:"BR011 - Podcasting 2.0 & Value-4-Value Experts Roundtable ft. Adam Curry, Oscar Merry, Gigi & Odell",guests:[{name:"Oscar Merry",profile_picture:"https://pbs.twimg.com/profile_images/1385168885071089664/3VHhMawv_400x400.jpg",ref_id:"485b9165-ae61-4698-8244-16ae10f4ccbc",twitter_handle:"MerryOscar"},{name:"Gigi",profile_picture:"https://pbs.twimg.com/profile_images/1566370176446119943/UeuACt-4_400x400.jpg",ref_id:"9d8917ab-730b-4b1a-8321-49fb00907644",twitter_handle:"dergigi"},{name:"Matt Odell",profile_picture:"https://pbs.twimg.com/profile_images/1421584695746338819/Z_7ZfAeP_400x400.jpg",ref_id:"4f2825ff-3b88-4595-84d4-36e81544b79a",twitter_handle:"ODELL"},{name:"Adam Curry",profile_picture:"https://pbs.twimg.com/profile_images/1401922551161442307/XjN2DdFD_400x400.jpg",ref_id:"c304fffc-7fe0-49a1-86b8-d3278f5c89dc",twitter_handle:"adamcurry"}],hosts:[{name:"NVK",profile_picture:"https://pbs.twimg.com/profile_images/608402052247658497/ENDv0BNd_400x400.png",ref_id:"d754e29b-2d3e-4280-8d72-f41d2a465a78",twitter_handle:"Coinkite"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/cd6b8d64-bd52-4f1e-86b3-ca8ba2eb169f.jpg",keyword:!0,link:"https://anchor.fm/s/9500fad8/podcast/play/61194167/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2022-10-25%252F7ed25489-c7da-b1a0-f01e-659dc80098be.mp3",node_type:"clip",pub_key:"037f7331a5bef6c6f880246747befcc3767f3bb9730bc5e6f7c3770f4184ed0bff",ref_id:"eba87a50-4628-4106-94ae-5aee0e5f3584",show_title:"Bitcoin.Review",text:"Think there's another point here which is often missed in the discussion, especially as the volumes of SATS that are being streamed are still quite low. It's definitely still early, I think. And it goes back to what Gigi and Adam were both saying about the incentives here and right now, if you're a content creator, the thing that you're incentivized to do is maximize your audience attention and that has terrible negative incentives for media consumption on the internet. It means that as a creator, you will say shocking things just to pull people's attention in. You will frame your content around a clickbait headline and also you will create content when there doesn't necessarily need to be content because you're stuck in the YouTube algorithm and you need to make a video every week just to kind of get paid because you get paid for every minute of attention that your audience give you. That is really messed up. And what we can actually do with value for value and streaming stats is flip the incentives so that it's based on a value signal rather than an attention signal. And that is a fundamentally different thing. And so especially when it's so early, especially when the onboarding for your mainstream audience who don't care about bitcoin is still quite challenging. Yes, the volumes are going to be small, but in the long term what this is going to allow is content creators to actually focus on just one thing, which is the value that they are providing to their audience, which is an amazing shift. If you look at every single big tech platform, it's all driven by that attention signal and look at all the problems we have. If we can change it to a value signal, we can create a much better internet. And it's going to take time to get there. But ultimately every now and again on YouTube is a great example because everybody knows it. Every now and again on YouTube you will find a hidden gem that provides you with so much value. And the reason that you don't discover those more often is because instead the YouTube algorithm will serve you up with a clickbait headline of some video that was created yesterday about the latest shocking news event and you don't get the. News to the 10 minutes in. Exactly. So this is so much bigger than just replacing the advertising income for creators on a weekly basis. So Oscar, it's fixing ",timestamp:"00:29:07-00:31:26",topics:["Podcasting 2.0"],type:"podcast",weight:6.314446555932114},{boost:0,date:1629172800,description:"People earning money by working for Bitcoin",episode_title:"WHY ARE WE BULLISH Tomer Walton Obi Gigi ep194",guests:[{name:"Walton",profile_picture:"https://pbs.twimg.com/profile_images/1579938510538153994/EYbT5PEr_400x400.jpg",ref_id:"ec8c8747-a001-42ba-ae87-bfdef751b781",twitter_handle:"beeforbacon1"},{name:"Gigi",profile_picture:"https://pbs.twimg.com/profile_images/1566370176446119943/UeuACt-4_400x400.jpg",ref_id:"9d8917ab-730b-4b1a-8321-49fb00907644",twitter_handle:"dergigi"},{name:"Obi",profile_picture:"",ref_id:"f5ce3cb3-d943-483c-a619-c60936181c0a",twitter_handle:""},{name:"Tomer",profile_picture:"",ref_id:"9dfdecd6-c851-4766-ac32-4c1818ef5a9a",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/419512c2-e309-4b25-bfe2-cd481d53f66d.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/38875088/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2021-7-16%2F212938750-44100-2-a8edaa1664f71.m4a",node_type:"clip",pub_key:"",ref_id:"315fbf52-eab1-4f1b-b3c7-e4e418498664",show_title:"BTC Sessions",text:"Obi, any thoughts on the creativity of Bitcoinners? Yeah, it was beautiful the way you recited it. Walton kind of doing this litany or this inventory of the different types of creativity that the community keeps growing into. And it is like a branching tree which keeps branching and branching and branching and welcoming more and more people with more and more skills. It's geographically decentralized, totally society. New society. Yeah, it's a new society. That all you have to do to enter the society. You can be anywhere in the world is to be honest and put in work, and it's honest work. This is the moral code of Bitcoin. Good, honest work and more and more people. And I think we're kind of at the stage because I've wanted to work in Bitcoin since I first heard about it and fell down the rabbit hole and the only opportunities were to work at exchanges. It also sold shit coins and I felt I wouldn't do it because I'd be working against Bitcoin if I was doing that. And now things have gotten to the point where I can say I'm going to write and there's going to be somebody who might pay me some time for writing. But the work is good, honest work and I appreciate it. And I get together at Bitcoin Meetups and more and more of the people are finding work opportunities at companies that do something that support Bitcoin and Bitcoin only some are Fiat miners, right? They run a restaurant, they do something else, they collect Fiat and they turn it into Bitcoin, which is perfectly moral as well. But it's also really exciting to see. I won't list off all the companies, but I was at a small Bitcoin meetup the other day and there were people there who are working at Casa, this was in Canada, so there were people there working at Bull, Bitcoin at hotel, hotel at Lydon. And it was just really nice to see that people are finding a way to work within the ecosystem, providing more and more value. And so this is a frontier that's being developed and there's more and more stores, if you will, in this new frontier. So I think it really is glorious and we watch it grow exponentially. Right. The fact that I'm actually getting together with people and everybody is getting an opportunity to earn money by working for Bitcoin is really profound. Obi, go ",timestamp:"01:14:25-01:16:48",topics:[],type:"podcast",weight:4.565201282516726},{boost:0,date:1642222800,description:"[[Sweden]] Banks Blocks Money Transfers Outside of [[EU]]",episode_title:"WHY ARE WE BULLISH Duczko Thomas Jestopher Morgen Rochard Rick Vanderhulst ep229",guests:[{name:"Rick Vanderhulst",profile_picture:"",ref_id:"4c184180-b77d-4e25-ac7c-4d2e86cdde85",twitter_handle:""},{name:"Morgen Rochard",profile_picture:"https://pbs.twimg.com/profile_images/1362921386256211972/IpIK8cwI_400x400.jpg",ref_id:"c29b26e9-82c8-4c0a-8130-aa083d33ec48",twitter_handle:"MorgenRochard"},{name:"Thomas Jestopher",profile_picture:"https://pbs.twimg.com/profile_images/1607521016368201730/6GSHGkGX_400x400.jpg",ref_id:"50388de7-3ec7-401b-8349-5ee1d8a004c0",twitter_handle:"Jestopher_BTC"},{name:"Duczko",profile_picture:"",ref_id:"2b6de75e-0cf5-4fec-b458-d1b8ee3f86df",twitter_handle:""}],hosts:[],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/b87feb17-6926-4295-b2c2-d1c2e9d49ca8.jpg",keyword:!0,link:"https://anchor.fm/s/11e95d20/podcast/play/46171740/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2022-0-15%2F68b825e2-6752-7447-34ca-b27f0ea69256.mp3",node_type:"clip",pub_key:"",ref_id:"ef84d742-b332-4b77-8242-948a3737f91f",show_title:"BTC Sessions",text:"I predict Sweden is going to be the first country in the world after China to adopt a CBDC because we have, like, over 99% of all transactions are digital. Over 98% of all the population have a digital ID. And we are used to total control and we like it. So what's happening in Sweden right now is basically the banks have said you can't transfer money out of the EU. Several banks. Recently, I had an old investor of mine called me and like, Lucas, you live in Vietnam. I need to make a deposit to Vietnamese company. Okay. Or to Vietnamese account. I'm like, So why don't you do that yourself? He's like, Because you obviously have the money. He's like, yeah, but all the questions I'm getting from the bank, it's so freaky. I just don't want to deal with it. Yes, Bitcoin peace of mind in international transactions. Even the people that have the money just really don't want to deal with the banks at this point because it's so creepy. At one point, my cousin, who lives in Brussels, was transferring money to Sweden. Eventually, after two weeks of DD, he sent an email directly to the bank and like, do you want, do you want make a blood sample or P sample? Check if my urine is clean. What's up? It becomes invasive. It's just such a pain in the ass. I don't know if any of you recently have had to actually just go into a bank. Oh, my God. Oh, my God. Just standing in that lineup and you're like, this is still how people do things. Like, people still haven't experienced this. Oh, you need some money on the other side of the globe. Cool. It's there. Now that's as simple as it is. It's insane. And then just stand in line and have these long transfer times. And I don't know how it is in the US. I'm not familiar with exactly how ACH works and how quick it is. At least in Canada, we've got e transfers, which are pretty fast. So the small amount of dollars that I do get paid, I typically send over to like, a sats back Visa card so I can then make purchases. But when I want to fund that, it's like, I send it and it lands in like a minute. So that's nice. But that's local within Canada. What's ACH ",timestamp:"00:57:19-01:00:16",topics:["sweden","eu","sweden"],type:"podcast",weight:4.565201343093071},{boost:0,date:1673187067,description:"How Nuclear Bitcoiner got into Bitcoin and Bitcoin mining?",episode_title:"@NuclearBitcoinr - Mining #bitcoin With Small Modular Nuclear Reactors. #313",guests:[{name:"Nuclear Bitcoiner",profile_picture:"https://pbs.twimg.com/profile_images/1443185278525579278/_Yl1nao1_400x400.jpg",ref_id:"60f5891f-0864-4ed4-987a-81da4768b3ba",twitter_handle:"nuclearbitcoinr"}],hosts:[{name:"Daniel Prince",profile_picture:"https://pbs.twimg.com/profile_images/1589940494364205056/rnHs5gI3_400x400.jpg",ref_id:"df2d4d35-3e96-44ed-b1cc-cb8a714bbe30",twitter_handle:"PrinceySOV"}],image_url:"https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images/e1eca67b-d372-4031-bf1f-8f0ff7fe6092.jpg",keyword:!0,link:"https://anchor.fm/s/1346f9e8/podcast/play/63208295/https%253A%252F%252Fd3ctxlq1ktw2nl.cloudfront.net%252Fstaging%252F2023-0-8%252F4a07b2fe-eb1d-2c82-677e-8f2808a09536.mp3",node_type:"clip",pub_key:"02545c14cbb18a61f20dd45f5e3dcbd9acae3de282369501040adce32a75311309",ref_id:"50e012ee-2ed3-4fbe-9703-2b4b2695f5ef",show_title:`Once Bitten! @@ -5204,7 +5204,7 @@ uniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer; #endif uniform float radius;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vec4 c=vec4(0.0);c+=texture2D(inputBuffer,vUv0)*0.0625;c+=texture2D(inputBuffer,vUv1)*0.125;c+=texture2D(inputBuffer,vUv2)*0.0625;c+=texture2D(inputBuffer,vUv3)*0.125;c+=texture2D(inputBuffer,vUv)*0.25;c+=texture2D(inputBuffer,vUv4)*0.125;c+=texture2D(inputBuffer,vUv5)*0.0625;c+=texture2D(inputBuffer,vUv6)*0.125;c+=texture2D(inputBuffer,vUv7)*0.0625;vec4 baseColor=texture2D(supportBuffer,vUv);gl_FragColor=mix(baseColor,c,radius); #include -}`,convolution_upsampling_default2="uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}",UpsamplingMaterial=class extends ShaderMaterial{constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new Uniform(null),supportBuffer:new Uniform(null),texelSize:new Uniform(new Vector2),radius:new Uniform(.85)},blending:NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:convolution_upsampling_default,vertexShader:convolution_upsampling_default2}),this.fragmentShader=updateFragmentShader(this.fragmentShader)}set inputBuffer(tt){this.uniforms.inputBuffer.value=tt}set supportBuffer(tt){this.uniforms.supportBuffer.value=tt}get radius(){return this.uniforms.radius.value}set radius(tt){this.uniforms.radius.value=tt}setSize(tt,et){this.uniforms.texelSize.value.set(1/tt,1/et)}},dummyCamera=new Camera,geometry=null;function getFullscreenTriangle(){if(geometry===null){const tt=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),et=new Float32Array([0,0,2,0,0,2]);geometry=new BufferGeometry,geometry.setAttribute!==void 0?(geometry.setAttribute("position",new BufferAttribute(tt,3)),geometry.setAttribute("uv",new BufferAttribute(et,2))):(geometry.addAttribute("position",new BufferAttribute(tt,3)),geometry.addAttribute("uv",new BufferAttribute(et,2)))}return geometry}var Pass=class yw{constructor(et="Pass",nt=new Scene,rt=dummyCamera){this.name=et,this.renderer=null,this.scene=nt,this.camera=rt,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(et){if(this.rtt===et){const nt=this.fullscreenMaterial;nt!==null&&(nt.needsUpdate=!0),this.rtt=!et}}set mainScene(et){}set mainCamera(et){}setRenderer(et){this.renderer=et}isEnabled(){return this.enabled}setEnabled(et){this.enabled=et}get fullscreenMaterial(){return this.screen!==null?this.screen.material:null}set fullscreenMaterial(et){let nt=this.screen;nt!==null?nt.material=et:(nt=new Mesh(getFullscreenTriangle(),et),nt.frustumCulled=!1,this.scene===null&&(this.scene=new Scene),this.scene.add(nt),this.screen=nt)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(et){this.fullscreenMaterial=et}getDepthTexture(){return null}setDepthTexture(et,nt=BasicDepthPacking){}render(et,nt,rt,it,ot){throw new Error("Render method not implemented!")}setSize(et,nt){}initialize(et,nt,rt){}dispose(){for(const et of Object.keys(this)){const nt=this[et];(nt instanceof WebGLRenderTarget||nt instanceof Material||nt instanceof Texture||nt instanceof yw)&&this[et].dispose()}}},CopyPass=class extends Pass{constructor(tt,et=!0){super("CopyPass"),this.fullscreenMaterial=new CopyMaterial,this.needsSwap=!1,this.renderTarget=tt,tt===void 0&&(this.renderTarget=new WebGLRenderTarget(1,1,{minFilter:LinearFilter,magFilter:LinearFilter,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=et}get resize(){return this.autoResize}set resize(tt){this.autoResize=tt}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(tt){this.autoResize=tt}render(tt,et,nt,rt,it){this.fullscreenMaterial.inputBuffer=et.texture,tt.setRenderTarget(this.renderToScreen?null:this.renderTarget),tt.render(this.scene,this.camera)}setSize(tt,et){this.autoResize&&this.renderTarget.setSize(tt,et)}initialize(tt,et,nt){nt!==void 0&&(this.renderTarget.texture.type=nt,nt!==UnsignedByteType?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":getOutputColorSpace(tt)===SRGBColorSpace&&setTextureColorSpace(this.renderTarget.texture,SRGBColorSpace))}},ClearMaskPass=class extends Pass{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(tt,et,nt,rt,it){const ot=tt.state.buffers.stencil;ot.setLocked(!1),ot.setTest(!1)}},color$1=new Color$1,ClearPass=class extends Pass{constructor(tt=!0,et=!0,nt=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=tt,this.depth=et,this.stencil=nt,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(tt,et,nt){this.color=tt,this.depth=et,this.stencil=nt}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(tt){this.overrideClearColor=tt}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(tt){this.overrideClearAlpha=tt}render(tt,et,nt,rt,it){const ot=this.overrideClearColor,at=this.overrideClearAlpha,st=tt.getClearAlpha(),lt=ot!==null,ct=at>=0;lt?(tt.getClearColor(color$1),tt.setClearColor(ot,ct?at:st)):ct&&tt.setClearAlpha(at),tt.setRenderTarget(this.renderToScreen?null:et),tt.clear(this.color,this.depth,this.stencil),lt?tt.setClearColor(color$1,st):ct&&tt.setClearAlpha(st)}},RenderPass=class extends Pass{constructor(tt,et,nt=null){super("RenderPass",tt,et),this.needsSwap=!1,this.clearPass=new ClearPass,this.overrideMaterialManager=nt===null?null:new OverrideMaterialManager(nt),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}set mainScene(tt){this.scene=tt}set mainCamera(tt){this.camera=tt}get renderToScreen(){return super.renderToScreen}set renderToScreen(tt){super.renderToScreen=tt,this.clearPass.renderToScreen=tt}get overrideMaterial(){const tt=this.overrideMaterialManager;return tt!==null?tt.material:null}set overrideMaterial(tt){const et=this.overrideMaterialManager;tt!==null?et!==null?et.setMaterial(tt):this.overrideMaterialManager=new OverrideMaterialManager(tt):et!==null&&(et.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(tt){this.overrideMaterial=tt}get clear(){return this.clearPass.enabled}set clear(tt){this.clearPass.enabled=tt}getSelection(){return this.selection}setSelection(tt){this.selection=tt}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(tt){this.ignoreBackground=tt}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(tt){this.skipShadowMapUpdate=tt}getClearPass(){return this.clearPass}render(tt,et,nt,rt,it){const ot=this.scene,at=this.camera,st=this.selection,lt=at.layers.mask,ct=ot.background,ut=tt.shadowMap.autoUpdate,ht=this.renderToScreen?null:et;st!==null&&at.layers.set(st.getLayer()),this.skipShadowMapUpdate&&(tt.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(ot.background=null),this.clearPass.enabled&&this.clearPass.render(tt,et),tt.setRenderTarget(ht),this.overrideMaterialManager!==null?this.overrideMaterialManager.render(tt,ot,at):tt.render(ot,at),at.layers.mask=lt,ot.background=ct,tt.shadowMap.autoUpdate=ut}},DepthPass=class extends Pass{constructor(tt,et,{renderTarget:nt,resolutionScale:rt=1,width:it=Resolution.AUTO_SIZE,height:ot=Resolution.AUTO_SIZE,resolutionX:at=it,resolutionY:st=ot}={}){super("DepthPass"),this.needsSwap=!1,this.renderPass=new RenderPass(tt,et,new MeshDepthMaterial({depthPacking:RGBADepthPacking}));const lt=this.renderPass;lt.skipShadowMapUpdate=!0,lt.ignoreBackground=!0;const ct=lt.clearPass;ct.overrideClearColor=new Color$1(16777215),ct.overrideClearAlpha=1,this.renderTarget=nt,this.renderTarget===void 0&&(this.renderTarget=new WebGLRenderTarget(1,1,{minFilter:NearestFilter,magFilter:NearestFilter}),this.renderTarget.texture.name="DepthPass.Target");const ut=this.resolution=new Resolution(this,at,st,rt);ut.addEventListener("change",ht=>this.setSize(ut.baseWidth,ut.baseHeight))}set mainScene(tt){this.renderPass.mainScene=tt}set mainCamera(tt){this.renderPass.mainCamera=tt}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(tt){this.resolution.scale=tt}render(tt,et,nt,rt,it){const ot=this.renderToScreen?null:this.renderTarget;this.renderPass.render(tt,ot)}setSize(tt,et){const nt=this.resolution;nt.setBaseSize(tt,et),this.renderTarget.setSize(nt.width,nt.height)}},DepthDownsamplingPass=class extends Pass{constructor({normalBuffer:tt=null,resolutionScale:et=.5,width:nt=Resolution.AUTO_SIZE,height:rt=Resolution.AUTO_SIZE,resolutionX:it=nt,resolutionY:ot=rt}={}){super("DepthDownsamplingPass");const at=new DepthDownsamplingMaterial;at.normalBuffer=tt,this.fullscreenMaterial=at,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new WebGLRenderTarget(1,1,{minFilter:NearestFilter,magFilter:NearestFilter,depthBuffer:!1,type:FloatType}),this.renderTarget.texture.name="DepthDownsamplingPass.Target",this.renderTarget.texture.generateMipmaps=!1;const st=this.resolution=new Resolution(this,it,ot,et);st.addEventListener("change",lt=>this.setSize(st.baseWidth,st.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(tt,et=BasicDepthPacking){this.fullscreenMaterial.depthBuffer=tt,this.fullscreenMaterial.depthPacking=et}render(tt,et,nt,rt,it){tt.setRenderTarget(this.renderToScreen?null:this.renderTarget),tt.render(this.scene,this.camera)}setSize(tt,et){const nt=this.resolution;nt.setBaseSize(tt,et),this.renderTarget.setSize(nt.width,nt.height),this.fullscreenMaterial.setSize(tt,et)}initialize(tt,et,nt){const rt=tt.getContext();if(!(rt.getExtension("EXT_color_buffer_float")||rt.getExtension("EXT_color_buffer_half_float")))throw new Error("Rendering to float texture is not supported.")}},DepthCopyPass=class extends Pass{constructor({depthPacking:tt=RGBADepthPacking}={}){super("DepthCopyPass");const et=new DepthCopyMaterial;et.outputDepthPacking=tt,this.fullscreenMaterial=et,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new WebGLRenderTarget(1,1,{type:tt===RGBADepthPacking?UnsignedByteType:FloatType,minFilter:NearestFilter,magFilter:NearestFilter,depthBuffer:!1}),this.renderTarget.texture.name="DepthCopyPass.Target"}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}get depthPacking(){return this.fullscreenMaterial.outputDepthPacking}getDepthPacking(){return this.fullscreenMaterial.outputDepthPacking}setDepthTexture(tt,et=BasicDepthPacking){this.fullscreenMaterial.depthBuffer=tt,this.fullscreenMaterial.inputDepthPacking=et}render(tt,et,nt,rt,it){tt.setRenderTarget(this.renderToScreen?null:this.renderTarget),tt.render(this.scene,this.camera)}setSize(tt,et){this.renderTarget.setSize(tt,et)}},unpackFactors=new Float32Array([255/256/256**3,255/256/256**2,255/256/256,255/256]);function unpackRGBAToDepth(tt){return(tt[0]*unpackFactors[0]+tt[1]*unpackFactors[1]+tt[2]*unpackFactors[2]+tt[3]*unpackFactors[3])/255}var DepthPickingPass=class extends DepthCopyPass{constructor({depthPacking:tt=RGBADepthPacking,mode:et=DepthCopyMode.SINGLE}={}){super({depthPacking:tt}),this.name="DepthPickingPass",this.fullscreenMaterial.mode=et,this.pixelBuffer=tt===RGBADepthPacking?new Uint8Array(4):new Float32Array(4),this.callback=null}readDepth(tt){return this.fullscreenMaterial.texelPosition.set(tt.x*.5+.5,tt.y*.5+.5),new Promise(et=>{this.callback=et})}render(tt,et,nt,rt,it){const ot=this.fullscreenMaterial,at=ot.mode;if(at===DepthCopyMode.FULL&&super.render(tt),this.callback!==null){const st=this.renderTarget,lt=this.pixelBuffer,ct=st.texture.type!==FloatType;let ut=0,ht=0;if(at===DepthCopyMode.SINGLE)super.render(tt);else{const dt=ot.texelPosition;ut=Math.round(dt.x*st.width),ht=Math.round(dt.y*st.height)}tt.readRenderTargetPixels(st,ut,ht,1,1,lt),this.callback(ct?unpackRGBAToDepth(lt):lt[0]),this.callback=null}}setSize(tt,et){this.fullscreenMaterial.mode===DepthCopyMode.FULL&&super.setSize(tt,et)}};function prefixSubstrings(tt,et,nt){for(const rt of et){const it="$1"+tt+rt.charAt(0).toUpperCase()+rt.slice(1),ot=new RegExp("([^\\.])(\\b"+rt+"\\b)","g");for(const at of nt.entries())at[1]!==null&&nt.set(at[0],at[1].replace(ot,it))}}function integrateEffect(tt,et,nt){let rt=et.getFragmentShader(),it=et.getVertexShader();const ot=rt!==void 0&&/mainImage/.test(rt),at=rt!==void 0&&/mainUv/.test(rt);if(nt.attributes|=et.getAttributes(),rt===void 0)throw new Error(`Missing fragment shader (${et.name})`);if(at&&nt.attributes&EffectAttribute.CONVOLUTION)throw new Error(`Effects that transform UVs are incompatible with convolution effects (${et.name})`);if(!ot&&!at)throw new Error(`Could not find mainImage or mainUv function (${et.name})`);{const st=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,lt=nt.shaderParts;let ct=lt.get(EffectShaderSection.FRAGMENT_HEAD)||"",ut=lt.get(EffectShaderSection.FRAGMENT_MAIN_UV)||"",ht=lt.get(EffectShaderSection.FRAGMENT_MAIN_IMAGE)||"",dt=lt.get(EffectShaderSection.VERTEX_HEAD)||"",pt=lt.get(EffectShaderSection.VERTEX_MAIN_SUPPORT)||"";const mt=new Set,gt=new Set;if(at&&(ut+=` ${tt}MainUv(UV); +}`,convolution_upsampling_default2="uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}",UpsamplingMaterial=class extends ShaderMaterial{constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new Uniform(null),supportBuffer:new Uniform(null),texelSize:new Uniform(new Vector2),radius:new Uniform(.85)},blending:NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:convolution_upsampling_default,vertexShader:convolution_upsampling_default2}),this.fragmentShader=updateFragmentShader(this.fragmentShader)}set inputBuffer(tt){this.uniforms.inputBuffer.value=tt}set supportBuffer(tt){this.uniforms.supportBuffer.value=tt}get radius(){return this.uniforms.radius.value}set radius(tt){this.uniforms.radius.value=tt}setSize(tt,et){this.uniforms.texelSize.value.set(1/tt,1/et)}},dummyCamera=new Camera,geometry=null;function getFullscreenTriangle(){if(geometry===null){const tt=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),et=new Float32Array([0,0,2,0,0,2]);geometry=new BufferGeometry,geometry.setAttribute!==void 0?(geometry.setAttribute("position",new BufferAttribute(tt,3)),geometry.setAttribute("uv",new BufferAttribute(et,2))):(geometry.addAttribute("position",new BufferAttribute(tt,3)),geometry.addAttribute("uv",new BufferAttribute(et,2)))}return geometry}var Pass=class bw{constructor(et="Pass",nt=new Scene,rt=dummyCamera){this.name=et,this.renderer=null,this.scene=nt,this.camera=rt,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(et){if(this.rtt===et){const nt=this.fullscreenMaterial;nt!==null&&(nt.needsUpdate=!0),this.rtt=!et}}set mainScene(et){}set mainCamera(et){}setRenderer(et){this.renderer=et}isEnabled(){return this.enabled}setEnabled(et){this.enabled=et}get fullscreenMaterial(){return this.screen!==null?this.screen.material:null}set fullscreenMaterial(et){let nt=this.screen;nt!==null?nt.material=et:(nt=new Mesh(getFullscreenTriangle(),et),nt.frustumCulled=!1,this.scene===null&&(this.scene=new Scene),this.scene.add(nt),this.screen=nt)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(et){this.fullscreenMaterial=et}getDepthTexture(){return null}setDepthTexture(et,nt=BasicDepthPacking){}render(et,nt,rt,it,ot){throw new Error("Render method not implemented!")}setSize(et,nt){}initialize(et,nt,rt){}dispose(){for(const et of Object.keys(this)){const nt=this[et];(nt instanceof WebGLRenderTarget||nt instanceof Material||nt instanceof Texture||nt instanceof bw)&&this[et].dispose()}}},CopyPass=class extends Pass{constructor(tt,et=!0){super("CopyPass"),this.fullscreenMaterial=new CopyMaterial,this.needsSwap=!1,this.renderTarget=tt,tt===void 0&&(this.renderTarget=new WebGLRenderTarget(1,1,{minFilter:LinearFilter,magFilter:LinearFilter,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=et}get resize(){return this.autoResize}set resize(tt){this.autoResize=tt}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(tt){this.autoResize=tt}render(tt,et,nt,rt,it){this.fullscreenMaterial.inputBuffer=et.texture,tt.setRenderTarget(this.renderToScreen?null:this.renderTarget),tt.render(this.scene,this.camera)}setSize(tt,et){this.autoResize&&this.renderTarget.setSize(tt,et)}initialize(tt,et,nt){nt!==void 0&&(this.renderTarget.texture.type=nt,nt!==UnsignedByteType?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":getOutputColorSpace(tt)===SRGBColorSpace&&setTextureColorSpace(this.renderTarget.texture,SRGBColorSpace))}},ClearMaskPass=class extends Pass{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(tt,et,nt,rt,it){const ot=tt.state.buffers.stencil;ot.setLocked(!1),ot.setTest(!1)}},color$1=new Color$1,ClearPass=class extends Pass{constructor(tt=!0,et=!0,nt=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=tt,this.depth=et,this.stencil=nt,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(tt,et,nt){this.color=tt,this.depth=et,this.stencil=nt}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(tt){this.overrideClearColor=tt}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(tt){this.overrideClearAlpha=tt}render(tt,et,nt,rt,it){const ot=this.overrideClearColor,at=this.overrideClearAlpha,st=tt.getClearAlpha(),lt=ot!==null,ct=at>=0;lt?(tt.getClearColor(color$1),tt.setClearColor(ot,ct?at:st)):ct&&tt.setClearAlpha(at),tt.setRenderTarget(this.renderToScreen?null:et),tt.clear(this.color,this.depth,this.stencil),lt?tt.setClearColor(color$1,st):ct&&tt.setClearAlpha(st)}},RenderPass=class extends Pass{constructor(tt,et,nt=null){super("RenderPass",tt,et),this.needsSwap=!1,this.clearPass=new ClearPass,this.overrideMaterialManager=nt===null?null:new OverrideMaterialManager(nt),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}set mainScene(tt){this.scene=tt}set mainCamera(tt){this.camera=tt}get renderToScreen(){return super.renderToScreen}set renderToScreen(tt){super.renderToScreen=tt,this.clearPass.renderToScreen=tt}get overrideMaterial(){const tt=this.overrideMaterialManager;return tt!==null?tt.material:null}set overrideMaterial(tt){const et=this.overrideMaterialManager;tt!==null?et!==null?et.setMaterial(tt):this.overrideMaterialManager=new OverrideMaterialManager(tt):et!==null&&(et.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(tt){this.overrideMaterial=tt}get clear(){return this.clearPass.enabled}set clear(tt){this.clearPass.enabled=tt}getSelection(){return this.selection}setSelection(tt){this.selection=tt}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(tt){this.ignoreBackground=tt}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(tt){this.skipShadowMapUpdate=tt}getClearPass(){return this.clearPass}render(tt,et,nt,rt,it){const ot=this.scene,at=this.camera,st=this.selection,lt=at.layers.mask,ct=ot.background,ut=tt.shadowMap.autoUpdate,ht=this.renderToScreen?null:et;st!==null&&at.layers.set(st.getLayer()),this.skipShadowMapUpdate&&(tt.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(ot.background=null),this.clearPass.enabled&&this.clearPass.render(tt,et),tt.setRenderTarget(ht),this.overrideMaterialManager!==null?this.overrideMaterialManager.render(tt,ot,at):tt.render(ot,at),at.layers.mask=lt,ot.background=ct,tt.shadowMap.autoUpdate=ut}},DepthPass=class extends Pass{constructor(tt,et,{renderTarget:nt,resolutionScale:rt=1,width:it=Resolution.AUTO_SIZE,height:ot=Resolution.AUTO_SIZE,resolutionX:at=it,resolutionY:st=ot}={}){super("DepthPass"),this.needsSwap=!1,this.renderPass=new RenderPass(tt,et,new MeshDepthMaterial({depthPacking:RGBADepthPacking}));const lt=this.renderPass;lt.skipShadowMapUpdate=!0,lt.ignoreBackground=!0;const ct=lt.clearPass;ct.overrideClearColor=new Color$1(16777215),ct.overrideClearAlpha=1,this.renderTarget=nt,this.renderTarget===void 0&&(this.renderTarget=new WebGLRenderTarget(1,1,{minFilter:NearestFilter,magFilter:NearestFilter}),this.renderTarget.texture.name="DepthPass.Target");const ut=this.resolution=new Resolution(this,at,st,rt);ut.addEventListener("change",ht=>this.setSize(ut.baseWidth,ut.baseHeight))}set mainScene(tt){this.renderPass.mainScene=tt}set mainCamera(tt){this.renderPass.mainCamera=tt}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(tt){this.resolution.scale=tt}render(tt,et,nt,rt,it){const ot=this.renderToScreen?null:this.renderTarget;this.renderPass.render(tt,ot)}setSize(tt,et){const nt=this.resolution;nt.setBaseSize(tt,et),this.renderTarget.setSize(nt.width,nt.height)}},DepthDownsamplingPass=class extends Pass{constructor({normalBuffer:tt=null,resolutionScale:et=.5,width:nt=Resolution.AUTO_SIZE,height:rt=Resolution.AUTO_SIZE,resolutionX:it=nt,resolutionY:ot=rt}={}){super("DepthDownsamplingPass");const at=new DepthDownsamplingMaterial;at.normalBuffer=tt,this.fullscreenMaterial=at,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new WebGLRenderTarget(1,1,{minFilter:NearestFilter,magFilter:NearestFilter,depthBuffer:!1,type:FloatType}),this.renderTarget.texture.name="DepthDownsamplingPass.Target",this.renderTarget.texture.generateMipmaps=!1;const st=this.resolution=new Resolution(this,it,ot,et);st.addEventListener("change",lt=>this.setSize(st.baseWidth,st.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(tt,et=BasicDepthPacking){this.fullscreenMaterial.depthBuffer=tt,this.fullscreenMaterial.depthPacking=et}render(tt,et,nt,rt,it){tt.setRenderTarget(this.renderToScreen?null:this.renderTarget),tt.render(this.scene,this.camera)}setSize(tt,et){const nt=this.resolution;nt.setBaseSize(tt,et),this.renderTarget.setSize(nt.width,nt.height),this.fullscreenMaterial.setSize(tt,et)}initialize(tt,et,nt){const rt=tt.getContext();if(!(rt.getExtension("EXT_color_buffer_float")||rt.getExtension("EXT_color_buffer_half_float")))throw new Error("Rendering to float texture is not supported.")}},DepthCopyPass=class extends Pass{constructor({depthPacking:tt=RGBADepthPacking}={}){super("DepthCopyPass");const et=new DepthCopyMaterial;et.outputDepthPacking=tt,this.fullscreenMaterial=et,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new WebGLRenderTarget(1,1,{type:tt===RGBADepthPacking?UnsignedByteType:FloatType,minFilter:NearestFilter,magFilter:NearestFilter,depthBuffer:!1}),this.renderTarget.texture.name="DepthCopyPass.Target"}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}get depthPacking(){return this.fullscreenMaterial.outputDepthPacking}getDepthPacking(){return this.fullscreenMaterial.outputDepthPacking}setDepthTexture(tt,et=BasicDepthPacking){this.fullscreenMaterial.depthBuffer=tt,this.fullscreenMaterial.inputDepthPacking=et}render(tt,et,nt,rt,it){tt.setRenderTarget(this.renderToScreen?null:this.renderTarget),tt.render(this.scene,this.camera)}setSize(tt,et){this.renderTarget.setSize(tt,et)}},unpackFactors=new Float32Array([255/256/256**3,255/256/256**2,255/256/256,255/256]);function unpackRGBAToDepth(tt){return(tt[0]*unpackFactors[0]+tt[1]*unpackFactors[1]+tt[2]*unpackFactors[2]+tt[3]*unpackFactors[3])/255}var DepthPickingPass=class extends DepthCopyPass{constructor({depthPacking:tt=RGBADepthPacking,mode:et=DepthCopyMode.SINGLE}={}){super({depthPacking:tt}),this.name="DepthPickingPass",this.fullscreenMaterial.mode=et,this.pixelBuffer=tt===RGBADepthPacking?new Uint8Array(4):new Float32Array(4),this.callback=null}readDepth(tt){return this.fullscreenMaterial.texelPosition.set(tt.x*.5+.5,tt.y*.5+.5),new Promise(et=>{this.callback=et})}render(tt,et,nt,rt,it){const ot=this.fullscreenMaterial,at=ot.mode;if(at===DepthCopyMode.FULL&&super.render(tt),this.callback!==null){const st=this.renderTarget,lt=this.pixelBuffer,ct=st.texture.type!==FloatType;let ut=0,ht=0;if(at===DepthCopyMode.SINGLE)super.render(tt);else{const dt=ot.texelPosition;ut=Math.round(dt.x*st.width),ht=Math.round(dt.y*st.height)}tt.readRenderTargetPixels(st,ut,ht,1,1,lt),this.callback(ct?unpackRGBAToDepth(lt):lt[0]),this.callback=null}}setSize(tt,et){this.fullscreenMaterial.mode===DepthCopyMode.FULL&&super.setSize(tt,et)}};function prefixSubstrings(tt,et,nt){for(const rt of et){const it="$1"+tt+rt.charAt(0).toUpperCase()+rt.slice(1),ot=new RegExp("([^\\.])(\\b"+rt+"\\b)","g");for(const at of nt.entries())at[1]!==null&&nt.set(at[0],at[1].replace(ot,it))}}function integrateEffect(tt,et,nt){let rt=et.getFragmentShader(),it=et.getVertexShader();const ot=rt!==void 0&&/mainImage/.test(rt),at=rt!==void 0&&/mainUv/.test(rt);if(nt.attributes|=et.getAttributes(),rt===void 0)throw new Error(`Missing fragment shader (${et.name})`);if(at&&nt.attributes&EffectAttribute.CONVOLUTION)throw new Error(`Effects that transform UVs are incompatible with convolution effects (${et.name})`);if(!ot&&!at)throw new Error(`Could not find mainImage or mainUv function (${et.name})`);{const st=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,lt=nt.shaderParts;let ct=lt.get(EffectShaderSection.FRAGMENT_HEAD)||"",ut=lt.get(EffectShaderSection.FRAGMENT_MAIN_UV)||"",ht=lt.get(EffectShaderSection.FRAGMENT_MAIN_IMAGE)||"",dt=lt.get(EffectShaderSection.VERTEX_HEAD)||"",pt=lt.get(EffectShaderSection.VERTEX_MAIN_SUPPORT)||"";const mt=new Set,gt=new Set;if(at&&(ut+=` ${tt}MainUv(UV); `,nt.uvTransformation=!0),it!==null&&/mainSupport/.test(it)){const vt=/mainSupport *\([\w\s]*?uv\s*?\)/.test(it);pt+=` ${tt}MainSupport(`,pt+=vt?`vUv); `:`); `;for(const xt of it.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g))for(const kt of xt[1].split(/\s*,\s*/))nt.varyings.add(kt),mt.add(kt),gt.add(kt);for(const xt of it.matchAll(st))gt.add(xt[1])}for(const vt of rt.matchAll(st))gt.add(vt[1]);for(const vt of et.defines.keys())gt.add(vt.replace(/\([\w\s,]*\)/g,""));for(const vt of et.uniforms.keys())gt.add(vt);gt.delete("while"),gt.delete("for"),gt.delete("if"),et.uniforms.forEach((vt,xt)=>nt.uniforms.set(tt+xt.charAt(0).toUpperCase()+xt.slice(1),vt)),et.defines.forEach((vt,xt)=>nt.defines.set(tt+xt.charAt(0).toUpperCase()+xt.slice(1),vt));const yt=new Map([["fragment",rt],["vertex",it]]);prefixSubstrings(tt,gt,nt.defines),prefixSubstrings(tt,gt,yt),rt=yt.get("fragment"),it=yt.get("vertex");const bt=et.blendMode;if(nt.blendModes.set(bt.blendFunction,bt),ot){et.inputColorSpace!==null&&et.inputColorSpace!==nt.colorSpace&&(ht+=et.inputColorSpace===SRGBColorSpace?`color0 = LinearTosRGB(color0); @@ -5238,7 +5238,7 @@ vec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,colorFar.a);cocNearFar.x=min( #else vec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,texture2D(farCoCBuffer,uv).g);cocNearFar=min(cocNearFar*scale,1.0); #endif -vec4 result=inputColor*(1.0-cocNearFar.y)+colorFar;result=mix(result,colorNear,cocNearFar.x);outputColor=result;}`,DepthOfFieldEffect=class extends Effect$1{constructor(tt,{blendFunction:et,worldFocusDistance:nt,worldFocusRange:rt,focusDistance:it=0,focalLength:ot=.1,focusRange:at=ot,bokehScale:st=1,resolutionScale:lt=1,width:ct=Resolution.AUTO_SIZE,height:ut=Resolution.AUTO_SIZE,resolutionX:ht=ct,resolutionY:dt=ut}={}){super("DepthOfFieldEffect",depth_of_field_default,{blendFunction:et,attributes:EffectAttribute.DEPTH,uniforms:new Map([["nearColorBuffer",new Uniform(null)],["farColorBuffer",new Uniform(null)],["nearCoCBuffer",new Uniform(null)],["farCoCBuffer",new Uniform(null)],["scale",new Uniform(1)]])}),this.camera=tt,this.renderTarget=new WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.uniforms.get("farCoCBuffer").value=this.renderTargetCoC.texture,this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new ShaderPass(new CircleOfConfusionMaterial(tt));const pt=this.cocMaterial;pt.focusDistance=it,pt.focusRange=at,nt!==void 0&&(pt.worldFocusDistance=nt),rt!==void 0&&(pt.worldFocusRange=rt),this.blurPass=new KawaseBlurPass({resolutionScale:lt,resolutionX:ht,resolutionY:dt,kernelSize:KernelSize.MEDIUM}),this.maskPass=new ShaderPass(new MaskMaterial(this.renderTargetCoC.texture));const mt=this.maskPass.fullscreenMaterial;mt.colorChannel=ColorChannel.GREEN,this.maskFunction=MaskFunction.MULTIPLY_RGB,this.bokehNearBasePass=new ShaderPass(new BokehMaterial(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new ShaderPass(new BokehMaterial(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new ShaderPass(new BokehMaterial(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new ShaderPass(new BokehMaterial(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;const gt=this.resolution=new Resolution(this,ht,dt,lt);gt.addEventListener("change",yt=>this.setSize(gt.baseWidth,gt.baseHeight)),this.bokehScale=st}set mainCamera(tt){this.camera=tt,this.cocMaterial.copyCameraSettings(tt)}get cocTexture(){return this.renderTargetCoC.texture}get maskFunction(){return this.maskPass.fullscreenMaterial.maskFunction}set maskFunction(tt){this.maskFunction!==tt&&(this.defines.set("MASK_FUNCTION",tt.toFixed(0)),this.maskPass.fullscreenMaterial.maskFunction=tt,this.setChanged())}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.cocMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(tt){this.bokehNearBasePass.fullscreenMaterial.scale=tt,this.bokehNearFillPass.fullscreenMaterial.scale=tt,this.bokehFarBasePass.fullscreenMaterial.scale=tt,this.bokehFarFillPass.fullscreenMaterial.scale=tt,this.maskPass.fullscreenMaterial.strength=tt,this.uniforms.get("scale").value=tt}getBokehScale(){return this.bokehScale}setBokehScale(tt){this.bokehScale=tt}getTarget(){return this.target}setTarget(tt){this.target=tt}calculateFocusDistance(tt){const et=this.camera,nt=et.position.distanceTo(tt);return viewZToOrthographicDepth(-nt,et.near,et.far)}setDepthTexture(tt,et=BasicDepthPacking){this.cocMaterial.depthBuffer=tt,this.cocMaterial.depthPacking=et}update(tt,et,nt){const rt=this.renderTarget,it=this.renderTargetCoC,ot=this.renderTargetCoCBlurred,at=this.renderTargetMasked;if(this.target!==null){const st=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=st}this.cocPass.render(tt,null,it),this.blurPass.render(tt,it,ot),this.maskPass.render(tt,et,at),this.bokehFarBasePass.render(tt,at,rt),this.bokehFarFillPass.render(tt,rt,this.renderTargetFar),this.bokehNearBasePass.render(tt,et,rt),this.bokehNearFillPass.render(tt,rt,this.renderTargetNear)}setSize(tt,et){const nt=this.resolution;nt.setBaseSize(tt,et);const rt=nt.width,it=nt.height;this.cocPass.setSize(tt,et),this.blurPass.setSize(tt,et),this.maskPass.setSize(tt,et),this.renderTargetFar.setSize(tt,et),this.renderTargetCoC.setSize(tt,et),this.renderTargetMasked.setSize(tt,et),this.renderTarget.setSize(rt,it),this.renderTargetNear.setSize(rt,it),this.renderTargetCoCBlurred.setSize(rt,it),this.bokehNearBasePass.fullscreenMaterial.setSize(tt,et),this.bokehNearFillPass.fullscreenMaterial.setSize(tt,et),this.bokehFarBasePass.fullscreenMaterial.setSize(tt,et),this.bokehFarFillPass.fullscreenMaterial.setSize(tt,et)}initialize(tt,et,nt){this.cocPass.initialize(tt,et,nt),this.maskPass.initialize(tt,et,nt),this.bokehNearBasePass.initialize(tt,et,nt),this.bokehNearFillPass.initialize(tt,et,nt),this.bokehFarBasePass.initialize(tt,et,nt),this.bokehFarFillPass.initialize(tt,et,nt),this.blurPass.initialize(tt,et,UnsignedByteType),tt.capabilities.logarithmicDepthBuffer&&(this.cocPass.fullscreenMaterial.defines.LOG_DEPTH="1"),nt!==void 0&&(this.renderTarget.texture.type=nt,this.renderTargetNear.texture.type=nt,this.renderTargetFar.texture.type=nt,this.renderTargetMasked.texture.type=nt,getOutputColorSpace(tt)===SRGBColorSpace&&(setTextureColorSpace(this.renderTarget.texture,SRGBColorSpace),setTextureColorSpace(this.renderTargetNear.texture,SRGBColorSpace),setTextureColorSpace(this.renderTargetFar.texture,SRGBColorSpace),setTextureColorSpace(this.renderTargetMasked.texture,SRGBColorSpace)))}};function createCanvas(tt,et,nt){const rt=document.createElement("canvas"),it=rt.getContext("2d");if(rt.width=tt,rt.height=et,nt instanceof Image)it.drawImage(nt,0,0);else{const ot=it.createImageData(tt,et);ot.data.set(nt),it.putImageData(ot,0,0)}return rt}var RawImageData=class bw{constructor(et=0,nt=0,rt=null){this.width=et,this.height=nt,this.data=rt}toCanvas(){return typeof document>"u"?null:createCanvas(this.width,this.height,this.data)}static from(et){const{width:nt,height:rt}=et;let it;if(et instanceof Image){const ot=createCanvas(nt,rt,et);ot!==null&&(it=ot.getContext("2d").getImageData(0,0,nt,rt).data)}else it=et.data;return new bw(nt,rt,it)}},worker_default=`"use strict";(()=>{var O={SCALE_UP:"lut.scaleup"};var _=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function k(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=_[0];P[0]=s,P[1]=F,P[2]=f;let o=_[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(r**3*4),y=t instanceof Uint8Array?255:1,h=r**2,A=1/(r-1);for(let w=0;w{let t=a.data,r=t.data;switch(t.operation){case O.SCALE_UP:r=v.expand(r,t.size);break}postMessage(r,[r.buffer]),close()});})(); +vec4 result=inputColor*(1.0-cocNearFar.y)+colorFar;result=mix(result,colorNear,cocNearFar.x);outputColor=result;}`,DepthOfFieldEffect=class extends Effect$1{constructor(tt,{blendFunction:et,worldFocusDistance:nt,worldFocusRange:rt,focusDistance:it=0,focalLength:ot=.1,focusRange:at=ot,bokehScale:st=1,resolutionScale:lt=1,width:ct=Resolution.AUTO_SIZE,height:ut=Resolution.AUTO_SIZE,resolutionX:ht=ct,resolutionY:dt=ut}={}){super("DepthOfFieldEffect",depth_of_field_default,{blendFunction:et,attributes:EffectAttribute.DEPTH,uniforms:new Map([["nearColorBuffer",new Uniform(null)],["farColorBuffer",new Uniform(null)],["nearCoCBuffer",new Uniform(null)],["farCoCBuffer",new Uniform(null)],["scale",new Uniform(1)]])}),this.camera=tt,this.renderTarget=new WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.uniforms.get("farCoCBuffer").value=this.renderTargetCoC.texture,this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new ShaderPass(new CircleOfConfusionMaterial(tt));const pt=this.cocMaterial;pt.focusDistance=it,pt.focusRange=at,nt!==void 0&&(pt.worldFocusDistance=nt),rt!==void 0&&(pt.worldFocusRange=rt),this.blurPass=new KawaseBlurPass({resolutionScale:lt,resolutionX:ht,resolutionY:dt,kernelSize:KernelSize.MEDIUM}),this.maskPass=new ShaderPass(new MaskMaterial(this.renderTargetCoC.texture));const mt=this.maskPass.fullscreenMaterial;mt.colorChannel=ColorChannel.GREEN,this.maskFunction=MaskFunction.MULTIPLY_RGB,this.bokehNearBasePass=new ShaderPass(new BokehMaterial(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new ShaderPass(new BokehMaterial(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new ShaderPass(new BokehMaterial(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new ShaderPass(new BokehMaterial(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;const gt=this.resolution=new Resolution(this,ht,dt,lt);gt.addEventListener("change",yt=>this.setSize(gt.baseWidth,gt.baseHeight)),this.bokehScale=st}set mainCamera(tt){this.camera=tt,this.cocMaterial.copyCameraSettings(tt)}get cocTexture(){return this.renderTargetCoC.texture}get maskFunction(){return this.maskPass.fullscreenMaterial.maskFunction}set maskFunction(tt){this.maskFunction!==tt&&(this.defines.set("MASK_FUNCTION",tt.toFixed(0)),this.maskPass.fullscreenMaterial.maskFunction=tt,this.setChanged())}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.cocMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(tt){this.bokehNearBasePass.fullscreenMaterial.scale=tt,this.bokehNearFillPass.fullscreenMaterial.scale=tt,this.bokehFarBasePass.fullscreenMaterial.scale=tt,this.bokehFarFillPass.fullscreenMaterial.scale=tt,this.maskPass.fullscreenMaterial.strength=tt,this.uniforms.get("scale").value=tt}getBokehScale(){return this.bokehScale}setBokehScale(tt){this.bokehScale=tt}getTarget(){return this.target}setTarget(tt){this.target=tt}calculateFocusDistance(tt){const et=this.camera,nt=et.position.distanceTo(tt);return viewZToOrthographicDepth(-nt,et.near,et.far)}setDepthTexture(tt,et=BasicDepthPacking){this.cocMaterial.depthBuffer=tt,this.cocMaterial.depthPacking=et}update(tt,et,nt){const rt=this.renderTarget,it=this.renderTargetCoC,ot=this.renderTargetCoCBlurred,at=this.renderTargetMasked;if(this.target!==null){const st=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=st}this.cocPass.render(tt,null,it),this.blurPass.render(tt,it,ot),this.maskPass.render(tt,et,at),this.bokehFarBasePass.render(tt,at,rt),this.bokehFarFillPass.render(tt,rt,this.renderTargetFar),this.bokehNearBasePass.render(tt,et,rt),this.bokehNearFillPass.render(tt,rt,this.renderTargetNear)}setSize(tt,et){const nt=this.resolution;nt.setBaseSize(tt,et);const rt=nt.width,it=nt.height;this.cocPass.setSize(tt,et),this.blurPass.setSize(tt,et),this.maskPass.setSize(tt,et),this.renderTargetFar.setSize(tt,et),this.renderTargetCoC.setSize(tt,et),this.renderTargetMasked.setSize(tt,et),this.renderTarget.setSize(rt,it),this.renderTargetNear.setSize(rt,it),this.renderTargetCoCBlurred.setSize(rt,it),this.bokehNearBasePass.fullscreenMaterial.setSize(tt,et),this.bokehNearFillPass.fullscreenMaterial.setSize(tt,et),this.bokehFarBasePass.fullscreenMaterial.setSize(tt,et),this.bokehFarFillPass.fullscreenMaterial.setSize(tt,et)}initialize(tt,et,nt){this.cocPass.initialize(tt,et,nt),this.maskPass.initialize(tt,et,nt),this.bokehNearBasePass.initialize(tt,et,nt),this.bokehNearFillPass.initialize(tt,et,nt),this.bokehFarBasePass.initialize(tt,et,nt),this.bokehFarFillPass.initialize(tt,et,nt),this.blurPass.initialize(tt,et,UnsignedByteType),tt.capabilities.logarithmicDepthBuffer&&(this.cocPass.fullscreenMaterial.defines.LOG_DEPTH="1"),nt!==void 0&&(this.renderTarget.texture.type=nt,this.renderTargetNear.texture.type=nt,this.renderTargetFar.texture.type=nt,this.renderTargetMasked.texture.type=nt,getOutputColorSpace(tt)===SRGBColorSpace&&(setTextureColorSpace(this.renderTarget.texture,SRGBColorSpace),setTextureColorSpace(this.renderTargetNear.texture,SRGBColorSpace),setTextureColorSpace(this.renderTargetFar.texture,SRGBColorSpace),setTextureColorSpace(this.renderTargetMasked.texture,SRGBColorSpace)))}};function createCanvas(tt,et,nt){const rt=document.createElement("canvas"),it=rt.getContext("2d");if(rt.width=tt,rt.height=et,nt instanceof Image)it.drawImage(nt,0,0);else{const ot=it.createImageData(tt,et);ot.data.set(nt),it.putImageData(ot,0,0)}return rt}var RawImageData=class ww{constructor(et=0,nt=0,rt=null){this.width=et,this.height=nt,this.data=rt}toCanvas(){return typeof document>"u"?null:createCanvas(this.width,this.height,this.data)}static from(et){const{width:nt,height:rt}=et;let it;if(et instanceof Image){const ot=createCanvas(nt,rt,et);ot!==null&&(it=ot.getContext("2d").getImageData(0,0,nt,rt).data)}else it=et.data;return new ww(nt,rt,it)}},worker_default=`"use strict";(()=>{var O={SCALE_UP:"lut.scaleup"};var _=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function k(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=_[0];P[0]=s,P[1]=F,P[2]=f;let o=_[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(r**3*4),y=t instanceof Uint8Array?255:1,h=r**2,A=1/(r-1);for(let w=0;w{let t=a.data,r=t.data;switch(t.operation){case O.SCALE_UP:r=v.expand(r,t.size);break}postMessage(r,[r.buffer]),close()});})(); `,c$2=new Color$1,LookupTexture=class j0 extends Data3DTexture{constructor(et,nt){super(et,nt,nt,nt),this.type=FloatType,this.format=RGBAFormat,this.minFilter=LinearFilter,this.magFilter=LinearFilter,this.wrapS=ClampToEdgeWrapping,this.wrapT=ClampToEdgeWrapping,this.wrapR=ClampToEdgeWrapping,this.unpackAlignment=1,this.needsUpdate=!0,setTextureColorSpace(this,LinearSRGBColorSpace),this.domainMin=new Vector3(0,0,0),this.domainMax=new Vector3(1,1,1)}get isLookupTexture3D(){return!0}scaleUp(et,nt=!0){const rt=this.image;let it;return et<=rt.width?it=Promise.reject(new Error("The target size must be greater than the current size")):it=new Promise((ot,at)=>{const st=URL.createObjectURL(new Blob([worker_default],{type:"text/javascript"})),lt=new Worker(st);lt.addEventListener("error",ut=>at(ut.error)),lt.addEventListener("message",ut=>{const ht=new j0(ut.data,et);copyTextureColorSpace(this,ht),ht.type=this.type,ht.name=this.name,URL.revokeObjectURL(st),ot(ht)});const ct=nt?[rt.data.buffer]:[];lt.postMessage({operation:LUTOperation.SCALE_UP,data:rt.data,size:et},ct)}),it}applyLUT(et){const nt=this.image,rt=et.image,it=Math.min(nt.width,nt.height,nt.depth),ot=Math.min(rt.width,rt.height,rt.depth);if(it!==ot)console.error("Size mismatch");else if(et.type!==FloatType||this.type!==FloatType)console.error("Both LUTs must be FloatType textures");else if(et.format!==RGBAFormat||this.format!==RGBAFormat)console.error("Both LUTs must be RGBA textures");else{const at=nt.data,st=rt.data,lt=it,ct=lt**2,ut=lt-1;for(let ht=0,dt=lt**3;htit){at=new Uint8Array(ct.length);for(let ut=0;utdistortion.x-columns*random){float sx=clamp(ceil(seeds.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.xdistortion.y-columns*random){float sy=clamp(ceil(seeds.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}vec2 normal=texture2D(perturbationMap,uv*random*random).rg;uv+=normal*seeds*(random*0.2);}}",textureTag="Glitch.Generated";function randomFloat(tt,et){return tt+Math.random()*(et-tt)}var GlitchEffect=class extends Effect$1{constructor({chromaticAberrationOffset:tt=null,delay:et=new Vector2(1.5,3.5),duration:nt=new Vector2(.6,1),strength:rt=new Vector2(.3,1),columns:it=.05,ratio:ot=.85,perturbationMap:at=null,dtSize:st=64}={}){if(super("GlitchEffect",glitch_default,{uniforms:new Map([["perturbationMap",new Uniform(null)],["columns",new Uniform(it)],["active",new Uniform(!1)],["random",new Uniform(1)],["seeds",new Uniform(new Vector2)],["distortion",new Uniform(new Vector2)]])}),at===null){const lt=new NoiseTexture(st,st,RGBAFormat);lt.name=textureTag,this.perturbationMap=lt}else this.perturbationMap=at;this.time=0,this.distortion=this.uniforms.get("distortion").value,this.delay=et,this.duration=nt,this.breakPoint=new Vector2(randomFloat(this.delay.x,this.delay.y),randomFloat(this.duration.x,this.duration.y)),this.strength=rt,this.mode=GlitchMode.SPORADIC,this.ratio=ot,this.chromaticAberrationOffset=tt}get seeds(){return this.uniforms.get("seeds").value}get active(){return this.uniforms.get("active").value}isActive(){return this.active}get minDelay(){return this.delay.x}set minDelay(tt){this.delay.x=tt}getMinDelay(){return this.delay.x}setMinDelay(tt){this.delay.x=tt}get maxDelay(){return this.delay.y}set maxDelay(tt){this.delay.y=tt}getMaxDelay(){return this.delay.y}setMaxDelay(tt){this.delay.y=tt}get minDuration(){return this.duration.x}set minDuration(tt){this.duration.x=tt}getMinDuration(){return this.duration.x}setMinDuration(tt){this.duration.x=tt}get maxDuration(){return this.duration.y}set maxDuration(tt){this.duration.y=tt}getMaxDuration(){return this.duration.y}setMaxDuration(tt){this.duration.y=tt}get minStrength(){return this.strength.x}set minStrength(tt){this.strength.x=tt}getMinStrength(){return this.strength.x}setMinStrength(tt){this.strength.x=tt}get maxStrength(){return this.strength.y}set maxStrength(tt){this.strength.y=tt}getMaxStrength(){return this.strength.y}setMaxStrength(tt){this.strength.y=tt}getMode(){return this.mode}setMode(tt){this.mode=tt}getGlitchRatio(){return 1-this.ratio}setGlitchRatio(tt){this.ratio=Math.min(Math.max(1-tt,0),1)}get columns(){return this.uniforms.get("columns").value}set columns(tt){this.uniforms.get("columns").value=tt}getGlitchColumns(){return this.columns}setGlitchColumns(tt){this.columns=tt}getChromaticAberrationOffset(){return this.chromaticAberrationOffset}setChromaticAberrationOffset(tt){this.chromaticAberrationOffset=tt}get perturbationMap(){return this.uniforms.get("perturbationMap").value}set perturbationMap(tt){const et=this.perturbationMap;et!==null&&et.name===textureTag&&et.dispose(),tt.minFilter=tt.magFilter=NearestFilter,tt.wrapS=tt.wrapT=RepeatWrapping,tt.generateMipmaps=!1,this.uniforms.get("perturbationMap").value=tt}getPerturbationMap(){return this.perturbationMap}setPerturbationMap(tt){this.perturbationMap=tt}generatePerturbationMap(tt=64){const et=new NoiseTexture(tt,tt,RGBAFormat);return et.name=textureTag,et}update(tt,et,nt){const rt=this.mode,it=this.breakPoint,ot=this.chromaticAberrationOffset,at=this.strength;let st=this.time,lt=!1,ct=0,ut=0,ht;rt!==GlitchMode.DISABLED&&(rt===GlitchMode.SPORADIC&&(st+=nt,ht=st>it.x,st>=it.x+it.y&&(it.set(randomFloat(this.delay.x,this.delay.y),randomFloat(this.duration.x,this.duration.y)),st=0)),ct=Math.random(),this.uniforms.get("random").value=ct,ht&&ct>this.ratio||rt===GlitchMode.CONSTANT_WILD?(lt=!0,ct*=at.y*.03,ut=randomFloat(-Math.PI,Math.PI),this.seeds.set(randomFloat(-at.y,at.y),randomFloat(-at.y,at.y)),this.distortion.set(randomFloat(0,1),randomFloat(0,1))):(ht||rt===GlitchMode.CONSTANT_MILD)&&(lt=!0,ct*=at.x*.03,ut=randomFloat(-Math.PI,Math.PI),this.seeds.set(randomFloat(-at.x,at.x),randomFloat(-at.x,at.x)),this.distortion.set(randomFloat(0,1),randomFloat(0,1))),this.time=st),ot!==null&&(lt?ot.set(Math.cos(ut),Math.sin(ut)).multiplyScalar(ct):ot.set(0,0)),this.uniforms.get("active").value=lt}dispose(){const tt=this.perturbationMap;tt!==null&&tt.name===textureTag&&tt.dispose()}},god_rays_default=`#ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D map; #else @@ -6478,7 +6478,7 @@ void main() { * @author: Jack Doyle, jack@greensock.com */var _win,_doc,_docElement,_pluginInitted,_tempDiv,_recentSetterPlugin,_reverting,_windowExists=function(){return typeof window<"u"},_transformProps={},_RAD2DEG=180/Math.PI,_DEG2RAD=Math.PI/180,_atan2=Math.atan2,_bigNum=1e8,_capsExp=/([A-Z])/g,_horizontalExp=/(left|right|width|margin|padding|x)/i,_complexExp=/[\s,\(]\S/,_propertyAliases={autoAlpha:"opacity,visibility",scale:"scaleX,scaleY",alpha:"opacity"},_renderCSSProp=function(et,nt){return nt.set(nt.t,nt.p,Math.round((nt.s+nt.c*et)*1e4)/1e4+nt.u,nt)},_renderPropWithEnd=function(et,nt){return nt.set(nt.t,nt.p,et===1?nt.e:Math.round((nt.s+nt.c*et)*1e4)/1e4+nt.u,nt)},_renderCSSPropWithBeginning=function(et,nt){return nt.set(nt.t,nt.p,et?Math.round((nt.s+nt.c*et)*1e4)/1e4+nt.u:nt.b,nt)},_renderRoundedCSSProp=function(et,nt){var rt=nt.s+nt.c*et;nt.set(nt.t,nt.p,~~(rt+(rt<0?-.5:.5))+nt.u,nt)},_renderNonTweeningValue=function(et,nt){return nt.set(nt.t,nt.p,et?nt.e:nt.b,nt)},_renderNonTweeningValueOnlyAtEnd=function(et,nt){return nt.set(nt.t,nt.p,et!==1?nt.b:nt.e,nt)},_setterCSSStyle=function(et,nt,rt){return et.style[nt]=rt},_setterCSSProp=function(et,nt,rt){return et.style.setProperty(nt,rt)},_setterTransform=function(et,nt,rt){return et._gsap[nt]=rt},_setterScale=function(et,nt,rt){return et._gsap.scaleX=et._gsap.scaleY=rt},_setterScaleWithRender=function(et,nt,rt,it,ot){var at=et._gsap;at.scaleX=at.scaleY=rt,at.renderTransform(ot,at)},_setterTransformWithRender=function(et,nt,rt,it,ot){var at=et._gsap;at[nt]=rt,at.renderTransform(ot,at)},_transformProp="transform",_transformOriginProp=_transformProp+"Origin",_saveStyle=function tt(et,nt){var rt=this,it=this.target,ot=it.style;if(et in _transformProps&&ot){if(this.tfm=this.tfm||{},et!=="transform")et=_propertyAliases[et]||et,~et.indexOf(",")?et.split(",").forEach(function(at){return rt.tfm[at]=_get$1(it,at)}):this.tfm[et]=it._gsap.x?it._gsap[et]:_get$1(it,et);else return _propertyAliases.transform.split(",").forEach(function(at){return tt.call(rt,at,nt)});if(this.props.indexOf(_transformProp)>=0)return;it._gsap.svg&&(this.svgo=it.getAttribute("data-svg-origin"),this.props.push(_transformOriginProp,nt,"")),et=_transformProp}(ot||nt)&&this.props.push(et,nt,ot[et])},_removeIndependentTransforms=function(et){et.translate&&(et.removeProperty("translate"),et.removeProperty("scale"),et.removeProperty("rotate"))},_revertStyle=function(){var et=this.props,nt=this.target,rt=nt.style,it=nt._gsap,ot,at;for(ot=0;ot=0?_prefixes[at]:"")+et},_initCore=function(){_windowExists()&&window.document&&(_win=window,_doc=_win.document,_docElement=_doc.documentElement,_tempDiv=_createElement("div")||{style:{}},_createElement("div"),_transformProp=_checkPropPrefix(_transformProp),_transformOriginProp=_transformProp+"Origin",_tempDiv.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",_supports3D=!!_checkPropPrefix("perspective"),_reverting=gsap.core.reverting,_pluginInitted=1)},_getBBoxHack=function tt(et){var nt=_createElement("svg",this.ownerSVGElement&&this.ownerSVGElement.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),rt=this.parentNode,it=this.nextSibling,ot=this.style.cssText,at;if(_docElement.appendChild(nt),nt.appendChild(this),this.style.display="block",et)try{at=this.getBBox(),this._gsapBBox=this.getBBox,this.getBBox=tt}catch{}else this._gsapBBox&&(at=this._gsapBBox());return rt&&(it?rt.insertBefore(this,it):rt.appendChild(this)),_docElement.removeChild(nt),this.style.cssText=ot,at},_getAttributeFallbacks=function(et,nt){for(var rt=nt.length;rt--;)if(et.hasAttribute(nt[rt]))return et.getAttribute(nt[rt])},_getBBox=function(et){var nt;try{nt=et.getBBox()}catch{nt=_getBBoxHack.call(et,!0)}return nt&&(nt.width||nt.height)||et.getBBox===_getBBoxHack||(nt=_getBBoxHack.call(et,!0)),nt&&!nt.width&&!nt.x&&!nt.y?{x:+_getAttributeFallbacks(et,["x","cx","x1"])||0,y:+_getAttributeFallbacks(et,["y","cy","y1"])||0,width:0,height:0}:nt},_isSVG=function(et){return!!(et.getCTM&&(!et.parentNode||et.ownerSVGElement)&&_getBBox(et))},_removeProperty=function(et,nt){if(nt){var rt=et.style;nt in _transformProps&&nt!==_transformOriginProp&&(nt=_transformProp),rt.removeProperty?((nt.substr(0,2)==="ms"||nt.substr(0,6)==="webkit")&&(nt="-"+nt),rt.removeProperty(nt.replace(_capsExp,"-$1").toLowerCase())):rt.removeAttribute(nt)}},_addNonTweeningPT=function(et,nt,rt,it,ot,at){var st=new PropTween(et._pt,nt,rt,0,1,at?_renderNonTweeningValueOnlyAtEnd:_renderNonTweeningValue);return et._pt=st,st.b=it,st.e=ot,et._props.push(rt),st},_nonConvertibleUnits={deg:1,rad:1,turn:1},_nonStandardLayouts={grid:1,flex:1},_convertToUnit=function tt(et,nt,rt,it){var ot=parseFloat(rt)||0,at=(rt+"").trim().substr((ot+"").length)||"px",st=_tempDiv.style,lt=_horizontalExp.test(nt),ct=et.tagName.toLowerCase()==="svg",ut=(ct?"client":"offset")+(lt?"Width":"Height"),ht=100,dt=it==="px",pt=it==="%",mt,gt,yt,bt;return it===at||!ot||_nonConvertibleUnits[it]||_nonConvertibleUnits[at]?ot:(at!=="px"&&!dt&&(ot=tt(et,nt,rt,"px")),bt=et.getCTM&&_isSVG(et),(pt||at==="%")&&(_transformProps[nt]||~nt.indexOf("adius"))?(mt=bt?et.getBBox()[lt?"width":"height"]:et[ut],_round(pt?ot/mt*ht:ot/100*mt)):(st[lt?"width":"height"]=ht+(dt?at:it),gt=~nt.indexOf("adius")||it==="em"&&et.appendChild&&!ct?et:et.parentNode,bt&&(gt=(et.ownerSVGElement||{}).parentNode),(!gt||gt===_doc||!gt.appendChild)&&(gt=_doc.body),yt=gt._gsap,yt&&pt&&yt.width&<&&yt.time===_ticker.time&&!yt.uncache?_round(ot/yt.width*ht):((pt||at==="%")&&!_nonStandardLayouts[_getComputedProperty(gt,"display")]&&(st.position=_getComputedProperty(et,"position")),gt===et&&(st.position="static"),gt.appendChild(_tempDiv),mt=_tempDiv[ut],gt.removeChild(_tempDiv),st.position="absolute",lt&&pt&&(yt=_getCache(gt),yt.time=_ticker.time,yt.width=gt[ut]),_round(dt?mt*ot/ht:mt&&ot?ht/mt*ot:0))))},_get$1=function(et,nt,rt,it){var ot;return _pluginInitted||_initCore(),nt in _propertyAliases&&nt!=="transform"&&(nt=_propertyAliases[nt],~nt.indexOf(",")&&(nt=nt.split(",")[0])),_transformProps[nt]&&nt!=="transform"?(ot=_parseTransform(et,it),ot=nt!=="transformOrigin"?ot[nt]:ot.svg?ot.origin:_firstTwoOnly(_getComputedProperty(et,_transformOriginProp))+" "+ot.zOrigin+"px"):(ot=et.style[nt],(!ot||ot==="auto"||it||~(ot+"").indexOf("calc("))&&(ot=_specialProps[nt]&&_specialProps[nt](et,nt,rt)||_getComputedProperty(et,nt)||_getProperty(et,nt)||(nt==="opacity"?1:0))),rt&&!~(ot+"").trim().indexOf(" ")?_convertToUnit(et,nt,ot,rt)+rt:ot},_tweenComplexCSSString=function(et,nt,rt,it){if(!rt||rt==="none"){var ot=_checkPropPrefix(nt,et,1),at=ot&&_getComputedProperty(et,ot,1);at&&at!==rt?(nt=ot,rt=at):nt==="borderColor"&&(rt=_getComputedProperty(et,"borderTopColor"))}var st=new PropTween(this._pt,et.style,nt,0,1,_renderComplexString),lt=0,ct=0,ut,ht,dt,pt,mt,gt,yt,bt,vt,xt,kt,St;if(st.b=rt,st.e=it,rt+="",it+="",it==="auto"&&(et.style[nt]=it,it=_getComputedProperty(et,nt)||it,et.style[nt]=rt),ut=[rt,it],_colorStringFilter(ut),rt=ut[0],it=ut[1],dt=rt.match(_numWithUnitExp)||[],St=it.match(_numWithUnitExp)||[],St.length){for(;ht=_numWithUnitExp.exec(it);)yt=ht[0],vt=it.substring(lt,ht.index),mt?mt=(mt+1)%5:(vt.substr(-5)==="rgba("||vt.substr(-5)==="hsla(")&&(mt=1),yt!==(gt=dt[ct++]||"")&&(pt=parseFloat(gt)||0,kt=gt.substr((pt+"").length),yt.charAt(1)==="="&&(yt=_parseRelative(pt,yt)+kt),bt=parseFloat(yt),xt=yt.substr((bt+"").length),lt=_numWithUnitExp.lastIndex-xt.length,xt||(xt=xt||_config.units[nt]||kt,lt===it.length&&(it+=xt,st.e+=xt)),kt!==xt&&(pt=_convertToUnit(et,nt,gt,xt)||0),st._pt={_next:st._pt,p:vt||ct===1?vt:",",s:pt,c:bt-pt,m:mt&&mt<4||nt==="zIndex"?Math.round:0});st.c=lt-1;)st=ot[ct],_transformProps[st]&&(lt=1,st=st==="transformOrigin"?_transformOriginProp:_transformProp),_removeProperty(rt,st);lt&&(_removeProperty(rt,_transformProp),at&&(at.svg&&rt.removeAttribute("transform"),_parseTransform(rt,1),at.uncache=1,_removeIndependentTransforms(it)))}},_specialProps={clearProps:function(et,nt,rt,it,ot){if(ot.data!=="isFromStart"){var at=et._pt=new PropTween(et._pt,nt,rt,0,0,_renderClearProps);return at.u=it,at.pr=-10,at.tween=ot,et._props.push(rt),1}}},_identity2DMatrix=[1,0,0,1,0,0],_rotationalProperties={},_isNullTransform=function(et){return et==="matrix(1, 0, 0, 1, 0, 0)"||et==="none"||!et},_getComputedTransformMatrixAsArray=function(et){var nt=_getComputedProperty(et,_transformProp);return _isNullTransform(nt)?_identity2DMatrix:nt.substr(7).match(_numExp).map(_round)},_getMatrix=function(et,nt){var rt=et._gsap||_getCache(et),it=et.style,ot=_getComputedTransformMatrixAsArray(et),at,st,lt,ct;return rt.svg&&et.getAttribute("transform")?(lt=et.transform.baseVal.consolidate().matrix,ot=[lt.a,lt.b,lt.c,lt.d,lt.e,lt.f],ot.join(",")==="1,0,0,1,0,0"?_identity2DMatrix:ot):(ot===_identity2DMatrix&&!et.offsetParent&&et!==_docElement&&!rt.svg&&(lt=it.display,it.display="block",at=et.parentNode,(!at||!et.offsetParent)&&(ct=1,st=et.nextElementSibling,_docElement.appendChild(et)),ot=_getComputedTransformMatrixAsArray(et),lt?it.display=lt:_removeProperty(et,"display"),ct&&(st?at.insertBefore(et,st):at?at.appendChild(et):_docElement.removeChild(et))),nt&&ot.length>6?[ot[0],ot[1],ot[4],ot[5],ot[12],ot[13]]:ot)},_applySVGOrigin=function(et,nt,rt,it,ot,at){var st=et._gsap,lt=ot||_getMatrix(et,!0),ct=st.xOrigin||0,ut=st.yOrigin||0,ht=st.xOffset||0,dt=st.yOffset||0,pt=lt[0],mt=lt[1],gt=lt[2],yt=lt[3],bt=lt[4],vt=lt[5],xt=nt.split(" "),kt=parseFloat(xt[0])||0,St=parseFloat(xt[1])||0,Tt,At,Et,$t;rt?lt!==_identity2DMatrix&&(At=pt*yt-mt*gt)&&(Et=kt*(yt/At)+St*(-gt/At)+(gt*vt-yt*bt)/At,$t=kt*(-mt/At)+St*(pt/At)-(pt*vt-mt*bt)/At,kt=Et,St=$t):(Tt=_getBBox(et),kt=Tt.x+(~xt[0].indexOf("%")?kt/100*Tt.width:kt),St=Tt.y+(~(xt[1]||xt[0]).indexOf("%")?St/100*Tt.height:St)),it||it!==!1&&st.smooth?(bt=kt-ct,vt=St-ut,st.xOffset=ht+(bt*pt+vt*gt)-bt,st.yOffset=dt+(bt*mt+vt*yt)-vt):st.xOffset=st.yOffset=0,st.xOrigin=kt,st.yOrigin=St,st.smooth=!!it,st.origin=nt,st.originIsAbsolute=!!rt,et.style[_transformOriginProp]="0px 0px",at&&(_addNonTweeningPT(at,st,"xOrigin",ct,kt),_addNonTweeningPT(at,st,"yOrigin",ut,St),_addNonTweeningPT(at,st,"xOffset",ht,st.xOffset),_addNonTweeningPT(at,st,"yOffset",dt,st.yOffset)),et.setAttribute("data-svg-origin",kt+" "+St)},_parseTransform=function(et,nt){var rt=et._gsap||new GSCache(et);if("x"in rt&&!nt&&!rt.uncache)return rt;var it=et.style,ot=rt.scaleX<0,at="px",st="deg",lt=getComputedStyle(et),ct=_getComputedProperty(et,_transformOriginProp)||"0",ut,ht,dt,pt,mt,gt,yt,bt,vt,xt,kt,St,Tt,At,Et,$t,Dt,jt,Pt,Ct,wt,It,Ot,Wt,zt,Ft,Nt,Ut,Mt,Ht,en,sn;return ut=ht=dt=gt=yt=bt=vt=xt=kt=0,pt=mt=1,rt.svg=!!(et.getCTM&&_isSVG(et)),lt.translate&&((lt.translate!=="none"||lt.scale!=="none"||lt.rotate!=="none")&&(it[_transformProp]=(lt.translate!=="none"?"translate3d("+(lt.translate+" 0 0").split(" ").slice(0,3).join(", ")+") ":"")+(lt.rotate!=="none"?"rotate("+lt.rotate+") ":"")+(lt.scale!=="none"?"scale("+lt.scale.split(" ").join(",")+") ":"")+(lt[_transformProp]!=="none"?lt[_transformProp]:"")),it.scale=it.rotate=it.translate="none"),At=_getMatrix(et,rt.svg),rt.svg&&(rt.uncache?(zt=et.getBBox(),ct=rt.xOrigin-zt.x+"px "+(rt.yOrigin-zt.y)+"px",Wt=""):Wt=!nt&&et.getAttribute("data-svg-origin"),_applySVGOrigin(et,Wt||ct,!!Wt||rt.originIsAbsolute,rt.smooth!==!1,At)),St=rt.xOrigin||0,Tt=rt.yOrigin||0,At!==_identity2DMatrix&&(jt=At[0],Pt=At[1],Ct=At[2],wt=At[3],ut=It=At[4],ht=Ot=At[5],At.length===6?(pt=Math.sqrt(jt*jt+Pt*Pt),mt=Math.sqrt(wt*wt+Ct*Ct),gt=jt||Pt?_atan2(Pt,jt)*_RAD2DEG:0,vt=Ct||wt?_atan2(Ct,wt)*_RAD2DEG+gt:0,vt&&(mt*=Math.abs(Math.cos(vt*_DEG2RAD))),rt.svg&&(ut-=St-(St*jt+Tt*Ct),ht-=Tt-(St*Pt+Tt*wt))):(sn=At[6],Ht=At[7],Nt=At[8],Ut=At[9],Mt=At[10],en=At[11],ut=At[12],ht=At[13],dt=At[14],Et=_atan2(sn,Mt),yt=Et*_RAD2DEG,Et&&($t=Math.cos(-Et),Dt=Math.sin(-Et),Wt=It*$t+Nt*Dt,zt=Ot*$t+Ut*Dt,Ft=sn*$t+Mt*Dt,Nt=It*-Dt+Nt*$t,Ut=Ot*-Dt+Ut*$t,Mt=sn*-Dt+Mt*$t,en=Ht*-Dt+en*$t,It=Wt,Ot=zt,sn=Ft),Et=_atan2(-Ct,Mt),bt=Et*_RAD2DEG,Et&&($t=Math.cos(-Et),Dt=Math.sin(-Et),Wt=jt*$t-Nt*Dt,zt=Pt*$t-Ut*Dt,Ft=Ct*$t-Mt*Dt,en=wt*Dt+en*$t,jt=Wt,Pt=zt,Ct=Ft),Et=_atan2(Pt,jt),gt=Et*_RAD2DEG,Et&&($t=Math.cos(Et),Dt=Math.sin(Et),Wt=jt*$t+Pt*Dt,zt=It*$t+Ot*Dt,Pt=Pt*$t-jt*Dt,Ot=Ot*$t-It*Dt,jt=Wt,It=zt),yt&&Math.abs(yt)+Math.abs(gt)>359.9&&(yt=gt=0,bt=180-bt),pt=_round(Math.sqrt(jt*jt+Pt*Pt+Ct*Ct)),mt=_round(Math.sqrt(Ot*Ot+sn*sn)),Et=_atan2(It,Ot),vt=Math.abs(Et)>2e-4?Et*_RAD2DEG:0,kt=en?1/(en<0?-en:en):0),rt.svg&&(Wt=et.getAttribute("transform"),rt.forceCSS=et.setAttribute("transform","")||!_isNullTransform(_getComputedProperty(et,_transformProp)),Wt&&et.setAttribute("transform",Wt))),Math.abs(vt)>90&&Math.abs(vt)<270&&(ot?(pt*=-1,vt+=gt<=0?180:-180,gt+=gt<=0?180:-180):(mt*=-1,vt+=vt<=0?180:-180)),nt=nt||rt.uncache,rt.x=ut-((rt.xPercent=ut&&(!nt&&rt.xPercent||(Math.round(et.offsetWidth/2)===Math.round(-ut)?-50:0)))?et.offsetWidth*rt.xPercent/100:0)+at,rt.y=ht-((rt.yPercent=ht&&(!nt&&rt.yPercent||(Math.round(et.offsetHeight/2)===Math.round(-ht)?-50:0)))?et.offsetHeight*rt.yPercent/100:0)+at,rt.z=dt+at,rt.scaleX=_round(pt),rt.scaleY=_round(mt),rt.rotation=_round(gt)+st,rt.rotationX=_round(yt)+st,rt.rotationY=_round(bt)+st,rt.skewX=vt+st,rt.skewY=xt+st,rt.transformPerspective=kt+at,(rt.zOrigin=parseFloat(ct.split(" ")[2])||0)&&(it[_transformOriginProp]=_firstTwoOnly(ct)),rt.xOffset=rt.yOffset=0,rt.force3D=_config.force3D,rt.renderTransform=rt.svg?_renderSVGTransforms:_supports3D?_renderCSSTransforms:_renderNon3DTransforms,rt.uncache=0,rt},_firstTwoOnly=function(et){return(et=et.split(" "))[0]+" "+et[1]},_addPxTranslate=function(et,nt,rt){var it=getUnit(nt);return _round(parseFloat(nt)+parseFloat(_convertToUnit(et,"x",rt+"px",it)))+it},_renderNon3DTransforms=function(et,nt){nt.z="0px",nt.rotationY=nt.rotationX="0deg",nt.force3D=0,_renderCSSTransforms(et,nt)},_zeroDeg="0deg",_zeroPx="0px",_endParenthesis=") ",_renderCSSTransforms=function(et,nt){var rt=nt||this,it=rt.xPercent,ot=rt.yPercent,at=rt.x,st=rt.y,lt=rt.z,ct=rt.rotation,ut=rt.rotationY,ht=rt.rotationX,dt=rt.skewX,pt=rt.skewY,mt=rt.scaleX,gt=rt.scaleY,yt=rt.transformPerspective,bt=rt.force3D,vt=rt.target,xt=rt.zOrigin,kt="",St=bt==="auto"&&et&&et!==1||bt===!0;if(xt&&(ht!==_zeroDeg||ut!==_zeroDeg)){var Tt=parseFloat(ut)*_DEG2RAD,At=Math.sin(Tt),Et=Math.cos(Tt),$t;Tt=parseFloat(ht)*_DEG2RAD,$t=Math.cos(Tt),at=_addPxTranslate(vt,at,At*$t*-xt),st=_addPxTranslate(vt,st,-Math.sin(Tt)*-xt),lt=_addPxTranslate(vt,lt,Et*$t*-xt+xt)}yt!==_zeroPx&&(kt+="perspective("+yt+_endParenthesis),(it||ot)&&(kt+="translate("+it+"%, "+ot+"%) "),(St||at!==_zeroPx||st!==_zeroPx||lt!==_zeroPx)&&(kt+=lt!==_zeroPx||St?"translate3d("+at+", "+st+", "+lt+") ":"translate("+at+", "+st+_endParenthesis),ct!==_zeroDeg&&(kt+="rotate("+ct+_endParenthesis),ut!==_zeroDeg&&(kt+="rotateY("+ut+_endParenthesis),ht!==_zeroDeg&&(kt+="rotateX("+ht+_endParenthesis),(dt!==_zeroDeg||pt!==_zeroDeg)&&(kt+="skew("+dt+", "+pt+_endParenthesis),(mt!==1||gt!==1)&&(kt+="scale("+mt+", "+gt+_endParenthesis),vt.style[_transformProp]=kt||"translate(0, 0)"},_renderSVGTransforms=function(et,nt){var rt=nt||this,it=rt.xPercent,ot=rt.yPercent,at=rt.x,st=rt.y,lt=rt.rotation,ct=rt.skewX,ut=rt.skewY,ht=rt.scaleX,dt=rt.scaleY,pt=rt.target,mt=rt.xOrigin,gt=rt.yOrigin,yt=rt.xOffset,bt=rt.yOffset,vt=rt.forceCSS,xt=parseFloat(at),kt=parseFloat(st),St,Tt,At,Et,$t;lt=parseFloat(lt),ct=parseFloat(ct),ut=parseFloat(ut),ut&&(ut=parseFloat(ut),ct+=ut,lt+=ut),lt||ct?(lt*=_DEG2RAD,ct*=_DEG2RAD,St=Math.cos(lt)*ht,Tt=Math.sin(lt)*ht,At=Math.sin(lt-ct)*-dt,Et=Math.cos(lt-ct)*dt,ct&&(ut*=_DEG2RAD,$t=Math.tan(ct-ut),$t=Math.sqrt(1+$t*$t),At*=$t,Et*=$t,ut&&($t=Math.tan(ut),$t=Math.sqrt(1+$t*$t),St*=$t,Tt*=$t)),St=_round(St),Tt=_round(Tt),At=_round(At),Et=_round(Et)):(St=ht,Et=dt,Tt=At=0),(xt&&!~(at+"").indexOf("px")||kt&&!~(st+"").indexOf("px"))&&(xt=_convertToUnit(pt,"x",at,"px"),kt=_convertToUnit(pt,"y",st,"px")),(mt||gt||yt||bt)&&(xt=_round(xt+mt-(mt*St+gt*At)+yt),kt=_round(kt+gt-(mt*Tt+gt*Et)+bt)),(it||ot)&&($t=pt.getBBox(),xt=_round(xt+it/100*$t.width),kt=_round(kt+ot/100*$t.height)),$t="matrix("+St+","+Tt+","+At+","+Et+","+xt+","+kt+")",pt.setAttribute("transform",$t),vt&&(pt.style[_transformProp]=$t)},_addRotationalPropTween=function(et,nt,rt,it,ot){var at=360,st=_isString$1(ot),lt=parseFloat(ot)*(st&&~ot.indexOf("rad")?_RAD2DEG:1),ct=lt-it,ut=it+ct+"deg",ht,dt;return st&&(ht=ot.split("_")[1],ht==="short"&&(ct%=at,ct!==ct%(at/2)&&(ct+=ct<0?at:-at)),ht==="cw"&&ct<0?ct=(ct+at*_bigNum)%at-~~(ct/at)*at:ht==="ccw"&&ct>0&&(ct=(ct-at*_bigNum)%at-~~(ct/at)*at)),et._pt=dt=new PropTween(et._pt,nt,rt,it,ct,_renderPropWithEnd),dt.e=ut,dt.u="deg",et._props.push(rt),dt},_assign=function(et,nt){for(var rt in nt)et[rt]=nt[rt];return et},_addRawTransformPTs=function(et,nt,rt){var it=_assign({},rt._gsap),ot="perspective,force3D,transformOrigin,svgOrigin",at=rt.style,st,lt,ct,ut,ht,dt,pt,mt;it.svg?(ct=rt.getAttribute("transform"),rt.setAttribute("transform",""),at[_transformProp]=nt,st=_parseTransform(rt,1),_removeProperty(rt,_transformProp),rt.setAttribute("transform",ct)):(ct=getComputedStyle(rt)[_transformProp],at[_transformProp]=nt,st=_parseTransform(rt,1),at[_transformProp]=ct);for(lt in _transformProps)ct=it[lt],ut=st[lt],ct!==ut&&ot.indexOf(lt)<0&&(pt=getUnit(ct),mt=getUnit(ut),ht=pt!==mt?_convertToUnit(rt,lt,ct,mt):parseFloat(ct),dt=parseFloat(ut),et._pt=new PropTween(et._pt,st,lt,ht,dt-ht,_renderCSSProp),et._pt.u=mt||0,et._props.push(lt));_assign(st,it)};_forEachName("padding,margin,Width,Radius",function(tt,et){var nt="Top",rt="Right",it="Bottom",ot="Left",at=(et<3?[nt,rt,it,ot]:[nt+ot,nt+rt,it+rt,it+ot]).map(function(st){return et<2?tt+st:"border"+st+tt});_specialProps[et>1?"border"+tt:tt]=function(st,lt,ct,ut,ht){var dt,pt;if(arguments.length<4)return dt=at.map(function(mt){return _get$1(st,mt,ct)}),pt=dt.join(" "),pt.split(dt[0]).length===5?dt[0]:pt;dt=(ut+"").split(" "),pt={},at.forEach(function(mt,gt){return pt[mt]=dt[gt]=dt[gt]||dt[(gt-1)/2|0]}),st.init(lt,pt,ht)}});var CSSPlugin={name:"css",register:_initCore,targetTest:function(et){return et.style&&et.nodeType},init:function(et,nt,rt,it,ot){var at=this._props,st=et.style,lt=rt.vars.startAt,ct,ut,ht,dt,pt,mt,gt,yt,bt,vt,xt,kt,St,Tt,At,Et;_pluginInitted||_initCore(),this.styles=this.styles||_getStyleSaver(et),Et=this.styles.props,this.tween=rt;for(gt in nt)if(gt!=="autoRound"&&(ut=nt[gt],!(_plugins[gt]&&_checkPlugin(gt,nt,rt,it,et,ot)))){if(pt=typeof ut,mt=_specialProps[gt],pt==="function"&&(ut=ut.call(rt,it,et,ot),pt=typeof ut),pt==="string"&&~ut.indexOf("random(")&&(ut=_replaceRandom(ut)),mt)mt(this,et,gt,ut,rt)&&(At=1);else if(gt.substr(0,2)==="--")ct=(getComputedStyle(et).getPropertyValue(gt)+"").trim(),ut+="",_colorExp.lastIndex=0,_colorExp.test(ct)||(yt=getUnit(ct),bt=getUnit(ut)),bt?yt!==bt&&(ct=_convertToUnit(et,gt,ct,bt)+bt):yt&&(ut+=yt),this.add(st,"setProperty",ct,ut,it,ot,0,0,gt),at.push(gt),Et.push(gt,0,st[gt]);else if(pt!=="undefined"){if(lt&> in lt?(ct=typeof lt[gt]=="function"?lt[gt].call(rt,it,et,ot):lt[gt],_isString$1(ct)&&~ct.indexOf("random(")&&(ct=_replaceRandom(ct)),getUnit(ct+"")||(ct+=_config.units[gt]||getUnit(_get$1(et,gt))||""),(ct+"").charAt(1)==="="&&(ct=_get$1(et,gt))):ct=_get$1(et,gt),dt=parseFloat(ct),vt=pt==="string"&&ut.charAt(1)==="="&&ut.substr(0,2),vt&&(ut=ut.substr(2)),ht=parseFloat(ut),gt in _propertyAliases&&(gt==="autoAlpha"&&(dt===1&&_get$1(et,"visibility")==="hidden"&&ht&&(dt=0),Et.push("visibility",0,st.visibility),_addNonTweeningPT(this,st,"visibility",dt?"inherit":"hidden",ht?"inherit":"hidden",!ht)),gt!=="scale"&>!=="transform"&&(gt=_propertyAliases[gt],~gt.indexOf(",")&&(gt=gt.split(",")[0]))),xt=gt in _transformProps,xt){if(this.styles.save(gt),kt||(St=et._gsap,St.renderTransform&&!nt.parseTransform||_parseTransform(et,nt.parseTransform),Tt=nt.smoothOrigin!==!1&&St.smooth,kt=this._pt=new PropTween(this._pt,st,_transformProp,0,1,St.renderTransform,St,0,-1),kt.dep=1),gt==="scale")this._pt=new PropTween(this._pt,St,"scaleY",St.scaleY,(vt?_parseRelative(St.scaleY,vt+ht):ht)-St.scaleY||0,_renderCSSProp),this._pt.u=0,at.push("scaleY",gt),gt+="X";else if(gt==="transformOrigin"){Et.push(_transformOriginProp,0,st[_transformOriginProp]),ut=_convertKeywordsToPercentages(ut),St.svg?_applySVGOrigin(et,ut,0,Tt,0,this):(bt=parseFloat(ut.split(" ")[2])||0,bt!==St.zOrigin&&_addNonTweeningPT(this,St,"zOrigin",St.zOrigin,bt),_addNonTweeningPT(this,st,gt,_firstTwoOnly(ct),_firstTwoOnly(ut)));continue}else if(gt==="svgOrigin"){_applySVGOrigin(et,ut,1,Tt,0,this);continue}else if(gt in _rotationalProperties){_addRotationalPropTween(this,St,gt,dt,vt?_parseRelative(dt,vt+ut):ut);continue}else if(gt==="smoothOrigin"){_addNonTweeningPT(this,St,"smooth",St.smooth,ut);continue}else if(gt==="force3D"){St[gt]=ut;continue}else if(gt==="transform"){_addRawTransformPTs(this,ut,et);continue}}else gt in st||(gt=_checkPropPrefix(gt)||gt);if(xt||(ht||ht===0)&&(dt||dt===0)&&!_complexExp.test(ut)&> in st)yt=(ct+"").substr((dt+"").length),ht||(ht=0),bt=getUnit(ut)||(gt in _config.units?_config.units[gt]:yt),yt!==bt&&(dt=_convertToUnit(et,gt,ct,bt)),this._pt=new PropTween(this._pt,xt?St:st,gt,dt,(vt?_parseRelative(dt,vt+ht):ht)-dt,!xt&&(bt==="px"||gt==="zIndex")&&nt.autoRound!==!1?_renderRoundedCSSProp:_renderCSSProp),this._pt.u=bt||0,yt!==bt&&bt!=="%"&&(this._pt.b=ct,this._pt.r=_renderCSSPropWithBeginning);else if(gt in st)_tweenComplexCSSString.call(this,et,gt,ct,vt?vt+ut:ut);else if(gt in et)this.add(et,gt,ct||et[gt],vt?vt+ut:ut,it,ot);else if(gt!=="parseTransform"){_missingPlugin(gt,ut);continue}xt||(gt in st?Et.push(gt,0,st[gt]):Et.push(gt,1,ct||et[gt])),at.push(gt)}}At&&_sortPropTweensByPriority(this)},render:function(et,nt){if(nt.tween._time||!_reverting())for(var rt=nt._pt;rt;)rt.r(et,rt.d),rt=rt._next;else nt.styles.revert()},get:_get$1,aliases:_propertyAliases,getSetter:function(et,nt,rt){var it=_propertyAliases[nt];return it&&it.indexOf(",")<0&&(nt=it),nt in _transformProps&&nt!==_transformOriginProp&&(et._gsap.x||_get$1(et,"x"))?rt&&_recentSetterPlugin===rt?nt==="scale"?_setterScale:_setterTransform:(_recentSetterPlugin=rt||{})&&(nt==="scale"?_setterScaleWithRender:_setterTransformWithRender):et.style&&!_isUndefined(et.style[nt])?_setterCSSStyle:~nt.indexOf("-")?_setterCSSProp:_getSetter(et,nt)},core:{_removeProperty,_getMatrix}};gsap.utils.checkPrefix=_checkPropPrefix;gsap.core.getStyleSaver=_getStyleSaver;(function(tt,et,nt,rt){var it=_forEachName(tt+","+et+","+nt,function(ot){_transformProps[ot]=1});_forEachName(et,function(ot){_config.units[ot]="deg",_rotationalProperties[ot]=1}),_propertyAliases[it[13]]=tt+","+et,_forEachName(rt,function(ot){var at=ot.split(":");_propertyAliases[at[1]]=it[at[0]]})})("x,y,z,scale,scaleX,scaleY,xPercent,yPercent","rotation,rotationX,rotationY,skewX,skewY","transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective","0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY");_forEachName("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(tt){_config.units[tt]="px"});gsap.registerPlugin(CSSPlugin);var gsapWithCSS=gsap.registerPlugin(CSSPlugin)||gsap;gsapWithCSS.core.Tween;const createRoundedBoxGeometry=(tt,et,nt,rt,it)=>{const ot=new Shape$1,at=1e-5;ot.absarc(at,at,at,-Math.PI/2,-Math.PI,!0),ot.absarc(at,et-rt*2,at,Math.PI,Math.PI/2,!0),ot.absarc(tt-rt*2,et-rt*2,at,Math.PI/2,0,!0),ot.absarc(tt-rt*2,at,at,0,-Math.PI/2,!0);const st=new ExtrudeGeometry(ot,{depth:nt-rt*2,bevelEnabled:!0,bevelSegments:it,steps:2,bevelSize:rt,bevelThickness:rt,curveSegments:it});st.center();const lt=[],ct=st.getAttribute("normal"),ut=st.getAttribute("position");for(let ht=0;ht.9?(mt=pt.x/tt+.5,gt=1-(pt.z/nt+.5)):Math.abs(dt.x)>.9?(mt=-pt.z/nt+.5,gt=1-(-pt.y/et+.5)):Math.abs(dt.z)>.9&&(mt=pt.x/tt+.5,gt=1-(-pt.y/et+.5)),lt.push(mt,gt)}return st.setAttribute("uv",new Float32BufferAttribute(lt,2)),st};createRoundedBoxGeometry(10,10,10,2,10);const boxGeometry=new BoxGeometry(10,10,10),isMainTopic=tt=>tt.node_type==="topic"&&(tt.scale||1)>5,meshRenderLimit=500,meshRenderRadius=800;let nearbyNodeTimeout=null;const nearbyNodeTimeoutCycle=500,getNearbyNodeIds=(tt,et)=>{if(nearbyNodeTimeout)return null;nearbyNodeTimeout=setTimeout(()=>{nearbyNodeTimeout&&(clearTimeout(nearbyNodeTimeout),nearbyNodeTimeout=null)},nearbyNodeTimeoutCycle);const nt=[];return tt.forEach(it=>{const ot=et.position.distanceTo(variableVector3$1.set(it.x,it.y,it.z));otit.distance-ot.distance).slice(0,meshRenderLimit).map(it=>it.id)},initialCameraPosition=new Vector3(5e3,600,1600),arriveDistance=100,topicArriveDistance=600,selectionGraphDistance=2e3,selectionGraphCameraPosition={x:172.7392402058252,y:-239.04675366094037,z:-2e3},version$1="14.8.49",createExtendedExponentialRampToValueAutomationEvent=(tt,et,nt)=>({endTime:et,insertTime:nt,type:"exponentialRampToValue",value:tt}),createExtendedLinearRampToValueAutomationEvent=(tt,et,nt)=>({endTime:et,insertTime:nt,type:"linearRampToValue",value:tt}),createSetValueAutomationEvent=(tt,et)=>({startTime:et,type:"setValue",value:tt}),createSetValueCurveAutomationEvent=(tt,et,nt)=>({duration:nt,startTime:et,type:"setValueCurve",values:tt}),getTargetValueAtTime=(tt,et,{startTime:nt,target:rt,timeConstant:it})=>rt+(et-rt)*Math.exp((nt-tt)/it),isExponentialRampToValueAutomationEvent=tt=>tt.type==="exponentialRampToValue",isLinearRampToValueAutomationEvent=tt=>tt.type==="linearRampToValue",isAnyRampToValueAutomationEvent=tt=>isExponentialRampToValueAutomationEvent(tt)||isLinearRampToValueAutomationEvent(tt),isSetValueAutomationEvent=tt=>tt.type==="setValue",isSetValueCurveAutomationEvent=tt=>tt.type==="setValueCurve",getValueOfAutomationEventAtIndexAtTime=(tt,et,nt,rt)=>{const it=tt[et];return it===void 0?rt:isAnyRampToValueAutomationEvent(it)||isSetValueAutomationEvent(it)?it.value:isSetValueCurveAutomationEvent(it)?it.values[it.values.length-1]:getTargetValueAtTime(nt,getValueOfAutomationEventAtIndexAtTime(tt,et-1,it.startTime,rt),it)},getEndTimeAndValueOfPreviousAutomationEvent=(tt,et,nt,rt,it)=>nt===void 0?[rt.insertTime,it]:isAnyRampToValueAutomationEvent(nt)?[nt.endTime,nt.value]:isSetValueAutomationEvent(nt)?[nt.startTime,nt.value]:isSetValueCurveAutomationEvent(nt)?[nt.startTime+nt.duration,nt.values[nt.values.length-1]]:[nt.startTime,getValueOfAutomationEventAtIndexAtTime(tt,et-1,nt.startTime,it)],isCancelAndHoldAutomationEvent=tt=>tt.type==="cancelAndHold",isCancelScheduledValuesAutomationEvent=tt=>tt.type==="cancelScheduledValues",getEventTime=tt=>isCancelAndHoldAutomationEvent(tt)||isCancelScheduledValuesAutomationEvent(tt)?tt.cancelTime:isExponentialRampToValueAutomationEvent(tt)||isLinearRampToValueAutomationEvent(tt)?tt.endTime:tt.startTime,getExponentialRampValueAtTime=(tt,et,nt,{endTime:rt,value:it})=>nt===it?it:0nt+(tt-et)/(rt-et)*(it-nt),interpolateValue=(tt,et)=>{const nt=Math.floor(et),rt=Math.ceil(et);return nt===rt?tt[nt]:(1-(et-nt))*tt[nt]+(1-(rt-et))*tt[rt]},getValueCurveValueAtTime=(tt,{duration:et,startTime:nt,values:rt})=>{const it=(tt-nt)/et*(rt.length-1);return interpolateValue(rt,it)},isSetTargetAutomationEvent=tt=>tt.type==="setTarget";class AutomationEventList{constructor(et){this._automationEvents=[],this._currenTime=0,this._defaultValue=et}[Symbol.iterator](){return this._automationEvents[Symbol.iterator]()}add(et){const nt=getEventTime(et);if(isCancelAndHoldAutomationEvent(et)||isCancelScheduledValuesAutomationEvent(et)){const rt=this._automationEvents.findIndex(ot=>isCancelScheduledValuesAutomationEvent(et)&&isSetValueCurveAutomationEvent(ot)?ot.startTime+ot.duration>=nt:getEventTime(ot)>=nt),it=this._automationEvents[rt];if(rt!==-1&&(this._automationEvents=this._automationEvents.slice(0,rt)),isCancelAndHoldAutomationEvent(et)){const ot=this._automationEvents[this._automationEvents.length-1];if(it!==void 0&&isAnyRampToValueAutomationEvent(it)){if(ot!==void 0&&isSetTargetAutomationEvent(ot))throw new Error("The internal list is malformed.");const at=ot===void 0?it.insertTime:isSetValueCurveAutomationEvent(ot)?ot.startTime+ot.duration:getEventTime(ot),st=ot===void 0?this._defaultValue:isSetValueCurveAutomationEvent(ot)?ot.values[ot.values.length-1]:ot.value,lt=isExponentialRampToValueAutomationEvent(it)?getExponentialRampValueAtTime(nt,at,st,it):getLinearRampValueAtTime(nt,at,st,it),ct=isExponentialRampToValueAutomationEvent(it)?createExtendedExponentialRampToValueAutomationEvent(lt,nt,this._currenTime):createExtendedLinearRampToValueAutomationEvent(lt,nt,this._currenTime);this._automationEvents.push(ct)}if(ot!==void 0&&isSetTargetAutomationEvent(ot)&&this._automationEvents.push(createSetValueAutomationEvent(this.getValue(nt),nt)),ot!==void 0&&isSetValueCurveAutomationEvent(ot)&&ot.startTime+ot.duration>nt){const at=nt-ot.startTime,st=(ot.values.length-1)/ot.duration,lt=Math.max(2,1+Math.ceil(at*st)),ct=at/(lt-1)*st,ut=ot.values.slice(0,lt);if(ct<1)for(let ht=1;htgetEventTime(at)>nt),it=rt===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[rt-1];if(it!==void 0&&isSetValueCurveAutomationEvent(it)&&getEventTime(it)+it.duration>nt)return!1;const ot=isExponentialRampToValueAutomationEvent(et)?createExtendedExponentialRampToValueAutomationEvent(et.value,et.endTime,this._currenTime):isLinearRampToValueAutomationEvent(et)?createExtendedLinearRampToValueAutomationEvent(et.value,nt,this._currenTime):et;if(rt===-1)this._automationEvents.push(ot);else{if(isSetValueCurveAutomationEvent(et)&&nt+et.duration>getEventTime(this._automationEvents[rt]))return!1;this._automationEvents.splice(rt,0,ot)}}return!0}flush(et){const nt=this._automationEvents.findIndex(rt=>getEventTime(rt)>et);if(nt>1){const rt=this._automationEvents.slice(nt-1),it=rt[0];isSetTargetAutomationEvent(it)&&rt.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents,nt-2,it.startTime,this._defaultValue),it.startTime)),this._automationEvents=rt}}getValue(et){if(this._automationEvents.length===0)return this._defaultValue;const nt=this._automationEvents.findIndex(at=>getEventTime(at)>et),rt=this._automationEvents[nt],it=(nt===-1?this._automationEvents.length:nt)-1,ot=this._automationEvents[it];if(ot!==void 0&&isSetTargetAutomationEvent(ot)&&(rt===void 0||!isAnyRampToValueAutomationEvent(rt)||rt.insertTime>et))return getTargetValueAtTime(et,getValueOfAutomationEventAtIndexAtTime(this._automationEvents,it-1,ot.startTime,this._defaultValue),ot);if(ot!==void 0&&isSetValueAutomationEvent(ot)&&(rt===void 0||!isAnyRampToValueAutomationEvent(rt)))return ot.value;if(ot!==void 0&&isSetValueCurveAutomationEvent(ot)&&(rt===void 0||!isAnyRampToValueAutomationEvent(rt)||ot.startTime+ot.duration>et))return et({cancelTime:tt,type:"cancelAndHold"}),createCancelScheduledValuesAutomationEvent=tt=>({cancelTime:tt,type:"cancelScheduledValues"}),createExponentialRampToValueAutomationEvent=(tt,et)=>({endTime:et,type:"exponentialRampToValue",value:tt}),createLinearRampToValueAutomationEvent=(tt,et)=>({endTime:et,type:"linearRampToValue",value:tt}),createSetTargetAutomationEvent=(tt,et,nt)=>({startTime:et,target:tt,timeConstant:nt,type:"setTarget"}),createAbortError=()=>new DOMException("","AbortError"),createAddActiveInputConnectionToAudioNode=tt=>(et,nt,[rt,it,ot],at)=>{tt(et[it],[nt,rt,ot],st=>st[0]===nt&&st[1]===rt,at)},createAddAudioNodeConnections=tt=>(et,nt,rt)=>{const it=[];for(let ot=0;ot(et,nt)=>{tt.set(et,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:nt})},ACTIVE_AUDIO_NODE_STORE=new WeakSet,AUDIO_NODE_CONNECTIONS_STORE=new WeakMap,AUDIO_NODE_STORE=new WeakMap,AUDIO_PARAM_CONNECTIONS_STORE=new WeakMap,AUDIO_PARAM_STORE=new WeakMap,CONTEXT_STORE=new WeakMap,EVENT_LISTENERS=new WeakMap,CYCLE_COUNTERS=new WeakMap,NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS=new WeakMap,NODE_TO_PROCESSOR_MAPS=new WeakMap,handler={construct(){return handler}},isConstructible=tt=>{try{const et=new Proxy(tt,handler);new et}catch{return!1}return!0},IMPORT_STATEMENT_REGEX=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,splitImportStatements=(tt,et)=>{const nt=[];let rt=tt.replace(/^[\s]+/,""),it=rt.match(IMPORT_STATEMENT_REGEX);for(;it!==null;){const ot=it[1].slice(1,-1),at=it[0].replace(/([\s]+)?;?$/,"").replace(ot,new URL(ot,et).toString());nt.push(at),rt=rt.slice(it[0].length).replace(/^[\s]+/,""),it=rt.match(IMPORT_STATEMENT_REGEX)}return[nt.join(";"),rt]},verifyParameterDescriptors=tt=>{if(tt!==void 0&&!Array.isArray(tt))throw new TypeError("The parameterDescriptors property of given value for processorCtor is not an array.")},verifyProcessorCtor=tt=>{if(!isConstructible(tt))throw new TypeError("The given value for processorCtor should be a constructor.");if(tt.prototype===null||typeof tt.prototype!="object")throw new TypeError("The given value for processorCtor should have a prototype.")},createAddAudioWorkletModule=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt)=>{let pt=0;return(mt,gt,yt={credentials:"omit"})=>{const bt=ut.get(mt);if(bt!==void 0&&bt.has(gt))return Promise.resolve();const vt=ct.get(mt);if(vt!==void 0){const St=vt.get(gt);if(St!==void 0)return St}const xt=ot(mt),kt=xt.audioWorklet===void 0?it(gt).then(([St,Tt])=>{const[At,Et]=splitImportStatements(St,Tt),$t=`${At};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${Et} })})(window,'_AWGS')`;return nt($t)}).then(()=>{const St=dt._AWGS.pop();if(St===void 0)throw new SyntaxError;rt(xt.currentTime,xt.sampleRate,()=>St(class{},void 0,(Tt,At)=>{if(Tt.trim()==="")throw et();const Et=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(xt);if(Et!==void 0){if(Et.has(Tt))throw et();verifyProcessorCtor(At),verifyParameterDescriptors(At.parameterDescriptors),Et.set(Tt,At)}else verifyProcessorCtor(At),verifyParameterDescriptors(At.parameterDescriptors),NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(xt,new Map([[Tt,At]]))},xt.sampleRate,void 0,void 0))}):Promise.all([it(gt),Promise.resolve(tt(ht,ht))]).then(([[St,Tt],At])=>{const Et=pt+1;pt=Et;const[$t,Dt]=splitImportStatements(St,Tt),wt=`${$t};((AudioWorkletProcessor,registerProcessor)=>{${Dt} -})(${At?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${At?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${At?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${Et}',class extends AudioWorkletProcessor{process(){return !1}})`,It=new Blob([wt],{type:"application/javascript; charset=utf-8"}),Ot=URL.createObjectURL(It);return xt.audioWorklet.addModule(Ot,yt).then(()=>{if(st(xt))return xt;const Wt=at(xt);return Wt.audioWorklet.addModule(Ot,yt).then(()=>Wt)}).then(Wt=>{if(lt===null)throw new SyntaxError;try{new lt(Wt,`__sac${Et}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(Ot))});return vt===void 0?ct.set(mt,new Map([[gt,kt]])):vt.set(gt,kt),kt.then(()=>{const St=ut.get(mt);St===void 0?ut.set(mt,new Set([gt])):St.add(gt)}).finally(()=>{const St=ct.get(mt);St!==void 0&&St.delete(gt)}),kt}},getValueForKey=(tt,et)=>{const nt=tt.get(et);if(nt===void 0)throw new Error("A value with the given key could not be found.");return nt},pickElementFromSet=(tt,et)=>{const nt=Array.from(tt).filter(et);if(nt.length>1)throw Error("More than one element was found.");if(nt.length===0)throw Error("No element was found.");const[rt]=nt;return tt.delete(rt),rt},deletePassiveInputConnectionToAudioNode=(tt,et,nt,rt)=>{const it=getValueForKey(tt,et),ot=pickElementFromSet(it,at=>at[0]===nt&&at[1]===rt);return it.size===0&&tt.delete(et),ot},getEventListenersOfAudioNode=tt=>getValueForKey(EVENT_LISTENERS,tt),setInternalStateToActive=tt=>{if(ACTIVE_AUDIO_NODE_STORE.has(tt))throw new Error("The AudioNode is already stored.");ACTIVE_AUDIO_NODE_STORE.add(tt),getEventListenersOfAudioNode(tt).forEach(et=>et(!0))},isAudioWorkletNode=tt=>"port"in tt,setInternalStateToPassive=tt=>{if(!ACTIVE_AUDIO_NODE_STORE.has(tt))throw new Error("The AudioNode is not stored.");ACTIVE_AUDIO_NODE_STORE.delete(tt),getEventListenersOfAudioNode(tt).forEach(et=>et(!1))},setInternalStateToPassiveWhenNecessary=(tt,et)=>{!isAudioWorkletNode(tt)&&et.every(nt=>nt.size===0)&&setInternalStateToPassive(tt)},createAddConnectionToAudioNode=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt)=>{const pt=new WeakMap;return(mt,gt,yt,bt,vt)=>{const{activeInputs:xt,passiveInputs:kt}=ot(gt),{outputs:St}=ot(mt),Tt=st(mt),At=Et=>{const $t=lt(gt),Dt=lt(mt);if(Et){const jt=deletePassiveInputConnectionToAudioNode(kt,mt,yt,bt);tt(xt,mt,jt,!1),!vt&&!ht(mt)&&nt(Dt,$t,yt,bt),dt(gt)&&setInternalStateToActive(gt)}else{const jt=rt(xt,mt,yt,bt);et(kt,bt,jt,!1),!vt&&!ht(mt)&&it(Dt,$t,yt,bt);const Pt=at(gt);if(Pt===0)ut(gt)&&setInternalStateToPassiveWhenNecessary(gt,xt);else{const Ct=pt.get(gt);Ct!==void 0&&clearTimeout(Ct),pt.set(gt,setTimeout(()=>{ut(gt)&&setInternalStateToPassiveWhenNecessary(gt,xt)},Pt*1e3))}}};return ct(St,[gt,yt,bt],Et=>Et[0]===gt&&Et[1]===yt&&Et[2]===bt,!0)?(Tt.add(At),ut(mt)?tt(xt,mt,[yt,bt,At],!0):et(kt,bt,[mt,yt,At],!0),!0):!1}},createAddPassiveInputConnectionToAudioNode=tt=>(et,nt,[rt,it,ot],at)=>{const st=et.get(rt);st===void 0?et.set(rt,new Set([[it,nt,ot]])):tt(st,[it,nt,ot],lt=>lt[0]===it&<[1]===nt,at)},createAddSilentConnection=tt=>(et,nt)=>{const rt=tt(et,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});nt.connect(rt).connect(et.destination);const it=()=>{nt.removeEventListener("ended",it),nt.disconnect(rt),rt.disconnect()};nt.addEventListener("ended",it)},createAddUnrenderedAudioWorkletNode=tt=>(et,nt)=>{tt(et).add(nt)},DEFAULT_OPTIONS$j={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},createAnalyserNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=it(st),ut={...DEFAULT_OPTIONS$j,...lt},ht=rt(ct,ut),dt=ot(ct)?et():null;super(st,!1,ht,dt),this._nativeAnalyserNode=ht}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(st){this._nativeAnalyserNode.fftSize=st}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(st){const lt=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=st,!(st>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=lt,nt()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(st){const lt=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=st,!(this._nativeAnalyserNode.maxDecibels>st))throw this._nativeAnalyserNode.minDecibels=lt,nt()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(st){this._nativeAnalyserNode.smoothingTimeConstant=st}getByteFrequencyData(st){this._nativeAnalyserNode.getByteFrequencyData(st)}getByteTimeDomainData(st){this._nativeAnalyserNode.getByteTimeDomainData(st)}getFloatFrequencyData(st){this._nativeAnalyserNode.getFloatFrequencyData(st)}getFloatTimeDomainData(st){this._nativeAnalyserNode.getFloatTimeDomainData(st)}},isOwnedByContext=(tt,et)=>tt.context===et,createAnalyserNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,fftSize:st.fftSize,maxDecibels:st.maxDecibels,minDecibels:st.minDecibels,smoothingTimeConstant:st.smoothingTimeConstant};st=tt(at,ct)}return rt.set(at,st),await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},testAudioBufferCopyChannelMethodsOutOfBoundsSupport=tt=>{try{tt.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},createIndexSizeError=()=>new DOMException("","IndexSizeError"),wrapAudioBufferGetChannelDataMethod=tt=>{tt.getChannelData=(et=>nt=>{try{return et.call(tt,nt)}catch(rt){throw rt.code===12?createIndexSizeError():rt}})(tt.getChannelData)},DEFAULT_OPTIONS$i={numberOfChannels:1},createAudioBufferConstructor=(tt,et,nt,rt,it,ot,at,st)=>{let lt=null;return class ww{constructor(ut){if(it===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:ht,numberOfChannels:dt,sampleRate:pt}={...DEFAULT_OPTIONS$i,...ut};lt===null&&(lt=new it(1,1,44100));const mt=rt!==null&&et(ot,ot)?new rt({length:ht,numberOfChannels:dt,sampleRate:pt}):lt.createBuffer(dt,ht,pt);if(mt.numberOfChannels===0)throw nt();return typeof mt.copyFromChannel!="function"?(at(mt),wrapAudioBufferGetChannelDataMethod(mt)):et(testAudioBufferCopyChannelMethodsOutOfBoundsSupport,()=>testAudioBufferCopyChannelMethodsOutOfBoundsSupport(mt))||st(mt),tt.add(mt),mt}static[Symbol.hasInstance](ut){return ut!==null&&typeof ut=="object"&&Object.getPrototypeOf(ut)===ww.prototype||tt.has(ut)}}},MOST_NEGATIVE_SINGLE_FLOAT=-34028234663852886e22,MOST_POSITIVE_SINGLE_FLOAT=-MOST_NEGATIVE_SINGLE_FLOAT,isActiveAudioNode=tt=>ACTIVE_AUDIO_NODE_STORE.has(tt),DEFAULT_OPTIONS$h={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},createAudioBufferSourceNodeConstructor=(tt,et,nt,rt,it,ot,at,st)=>class extends tt{constructor(ct,ut){const ht=ot(ct),dt={...DEFAULT_OPTIONS$h,...ut},pt=it(ht,dt),mt=at(ht),gt=mt?et():null;super(ct,!1,pt,gt),this._audioBufferSourceNodeRenderer=gt,this._isBufferNullified=!1,this._isBufferSet=dt.buffer!==null,this._nativeAudioBufferSourceNode=pt,this._onended=null,this._playbackRate=nt(this,mt,pt.playbackRate,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer(ct){if(this._nativeAudioBufferSourceNode.buffer=ct,ct!==null){if(this._isBufferSet)throw rt();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop(ct){this._nativeAudioBufferSourceNode.loop=ct}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd(ct){this._nativeAudioBufferSourceNode.loopEnd=ct}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart(ct){this._nativeAudioBufferSourceNode.loopStart=ct}get onended(){return this._onended}set onended(ct){const ut=typeof ct=="function"?st(this,ct):null;this._nativeAudioBufferSourceNode.onended=ut;const ht=this._nativeAudioBufferSourceNode.onended;this._onended=ht!==null&&ht===ut?ct:ht}get playbackRate(){return this._playbackRate}start(ct=0,ut=0,ht){if(this._nativeAudioBufferSourceNode.start(ct,ut,ht),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=ht===void 0?[ct,ut]:[ct,ut,ht]),this.context.state!=="closed"){setInternalStateToActive(this);const dt=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",dt),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",dt)}}stop(ct=0){this._nativeAudioBufferSourceNode.stop(ct),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=ct)}},createAudioBufferSourceNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap;let at=null,st=null;const lt=async(ct,ut)=>{let ht=nt(ct);const dt=isOwnedByContext(ht,ut);if(!dt){const pt={buffer:ht.buffer,channelCount:ht.channelCount,channelCountMode:ht.channelCountMode,channelInterpretation:ht.channelInterpretation,loop:ht.loop,loopEnd:ht.loopEnd,loopStart:ht.loopStart,playbackRate:ht.playbackRate.value};ht=et(ut,pt),at!==null&&ht.start(...at),st!==null&&ht.stop(st)}return ot.set(ut,ht),dt?await tt(ut,ct.playbackRate,ht.playbackRate):await rt(ut,ct.playbackRate,ht.playbackRate),await it(ct,ut,ht),ht};return{set start(ct){at=ct},set stop(ct){st=ct},render(ct,ut){const ht=ot.get(ut);return ht!==void 0?Promise.resolve(ht):lt(ct,ut)}}},isAudioBufferSourceNode=tt=>"playbackRate"in tt,isBiquadFilterNode=tt=>"frequency"in tt&&"gain"in tt,isConstantSourceNode=tt=>"offset"in tt,isGainNode=tt=>!("frequency"in tt)&&"gain"in tt,isOscillatorNode=tt=>"detune"in tt&&"frequency"in tt,isStereoPannerNode=tt=>"pan"in tt,getAudioNodeConnections=tt=>getValueForKey(AUDIO_NODE_CONNECTIONS_STORE,tt),getAudioParamConnections=tt=>getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE,tt),deactivateActiveAudioNodeInputConnections=(tt,et)=>{const{activeInputs:nt}=getAudioNodeConnections(tt);nt.forEach(it=>it.forEach(([ot])=>{et.includes(tt)||deactivateActiveAudioNodeInputConnections(ot,[...et,tt])}));const rt=isAudioBufferSourceNode(tt)?[tt.playbackRate]:isAudioWorkletNode(tt)?Array.from(tt.parameters.values()):isBiquadFilterNode(tt)?[tt.Q,tt.detune,tt.frequency,tt.gain]:isConstantSourceNode(tt)?[tt.offset]:isGainNode(tt)?[tt.gain]:isOscillatorNode(tt)?[tt.detune,tt.frequency]:isStereoPannerNode(tt)?[tt.pan]:[];for(const it of rt){const ot=getAudioParamConnections(it);ot!==void 0&&ot.activeInputs.forEach(([at])=>deactivateActiveAudioNodeInputConnections(at,et))}isActiveAudioNode(tt)&&setInternalStateToPassive(tt)},deactivateAudioGraph=tt=>{deactivateActiveAudioNodeInputConnections(tt.destination,[])},isValidLatencyHint=tt=>tt===void 0||typeof tt=="number"||typeof tt=="string"&&(tt==="balanced"||tt==="interactive"||tt==="playback"),createAudioContextConstructor=(tt,et,nt,rt,it,ot,at,st,lt)=>class extends tt{constructor(ut={}){if(lt===null)throw new Error("Missing the native AudioContext constructor.");let ht;try{ht=new lt(ut)}catch(mt){throw mt.code===12&&mt.message==="sampleRate is not in range"?nt():mt}if(ht===null)throw rt();if(!isValidLatencyHint(ut.latencyHint))throw new TypeError(`The provided value '${ut.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(ut.sampleRate!==void 0&&ht.sampleRate!==ut.sampleRate)throw nt();super(ht,2);const{latencyHint:dt}=ut,{sampleRate:pt}=ht;if(this._baseLatency=typeof ht.baseLatency=="number"?ht.baseLatency:dt==="balanced"?512/pt:dt==="interactive"||dt===void 0?256/pt:dt==="playback"?1024/pt:Math.max(2,Math.min(128,Math.round(dt*pt/128)))*128/pt,this._nativeAudioContext=ht,lt.name==="webkitAudioContext"?(this._nativeGainNode=ht.createGain(),this._nativeOscillatorNode=ht.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(ht.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,ht.state==="running"){this._state="suspended";const mt=()=>{this._state==="suspended"&&(this._state=null),ht.removeEventListener("statechange",mt)};ht.addEventListener("statechange",mt)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw et()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),deactivateAudioGraph(this)}))}createMediaElementSource(ut){return new it(this,{mediaElement:ut})}createMediaStreamDestination(){return new ot(this)}createMediaStreamSource(ut){return new at(this,{mediaStream:ut})}createMediaStreamTrackSource(ut){return new st(this,{mediaStreamTrack:ut})}resume(){return this._state==="suspended"?new Promise((ut,ht)=>{const dt=()=>{this._nativeAudioContext.removeEventListener("statechange",dt),this._nativeAudioContext.state==="running"?ut():this.resume().then(ut,ht)};this._nativeAudioContext.addEventListener("statechange",dt)}):this._nativeAudioContext.resume().catch(ut=>{throw ut===void 0||ut.code===15?et():ut})}suspend(){return this._nativeAudioContext.suspend().catch(ut=>{throw ut===void 0?et():ut})}},createAudioDestinationNodeConstructor=(tt,et,nt,rt,it,ot,at,st)=>class extends tt{constructor(ct,ut){const ht=ot(ct),dt=at(ht),pt=it(ht,ut,dt),mt=dt?et(st):null;super(ct,!1,pt,mt),this._isNodeOfNativeOfflineAudioContext=dt,this._nativeAudioDestinationNode=pt}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount(ct){if(this._isNodeOfNativeOfflineAudioContext)throw rt();if(ct>this._nativeAudioDestinationNode.maxChannelCount)throw nt();this._nativeAudioDestinationNode.channelCount=ct}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode(ct){if(this._isNodeOfNativeOfflineAudioContext)throw rt();this._nativeAudioDestinationNode.channelCountMode=ct}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},createAudioDestinationNodeRenderer=tt=>{const et=new WeakMap,nt=async(rt,it)=>{const ot=it.destination;return et.set(it,ot),await tt(rt,it,ot),ot};return{render(rt,it){const ot=et.get(it);return ot!==void 0?Promise.resolve(ot):nt(rt,it)}}},createAudioListenerFactory=(tt,et,nt,rt,it,ot,at,st)=>(lt,ct)=>{const ut=ct.listener,ht=()=>{const St=new Float32Array(1),Tt=et(ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),At=at(ct);let Et=!1,$t=[0,0,-1,0,1,0],Dt=[0,0,0];const jt=()=>{if(Et)return;Et=!0;const It=rt(ct,256,9,0);It.onaudioprocess=({inputBuffer:Ot})=>{const Wt=[ot(Ot,St,0),ot(Ot,St,1),ot(Ot,St,2),ot(Ot,St,3),ot(Ot,St,4),ot(Ot,St,5)];Wt.some((Ft,Nt)=>Ft!==$t[Nt])&&(ut.setOrientation(...Wt),$t=Wt);const zt=[ot(Ot,St,6),ot(Ot,St,7),ot(Ot,St,8)];zt.some((Ft,Nt)=>Ft!==Dt[Nt])&&(ut.setPosition(...zt),Dt=zt)},Tt.connect(It)},Pt=It=>Ot=>{Ot!==$t[It]&&($t[It]=Ot,ut.setOrientation(...$t))},Ct=It=>Ot=>{Ot!==Dt[It]&&(Dt[It]=Ot,ut.setPosition(...Dt))},wt=(It,Ot,Wt)=>{const zt=nt(ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:Ot});zt.connect(Tt,0,It),zt.start(),Object.defineProperty(zt.offset,"defaultValue",{get(){return Ot}});const Ft=tt({context:lt},At,zt.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT);return st(Ft,"value",Nt=>()=>Nt.call(Ft),Nt=>Ut=>{try{Nt.call(Ft,Ut)}catch(Mt){if(Mt.code!==9)throw Mt}jt(),At&&Wt(Ut)}),Ft.cancelAndHoldAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.cancelAndHoldAtTime),Ft.cancelScheduledValues=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.cancelScheduledValues),Ft.exponentialRampToValueAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.exponentialRampToValueAtTime),Ft.linearRampToValueAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.linearRampToValueAtTime),Ft.setTargetAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.setTargetAtTime),Ft.setValueAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.setValueAtTime),Ft.setValueCurveAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.setValueCurveAtTime),Ft};return{forwardX:wt(0,0,Pt(0)),forwardY:wt(1,0,Pt(1)),forwardZ:wt(2,-1,Pt(2)),positionX:wt(6,0,Ct(0)),positionY:wt(7,0,Ct(1)),positionZ:wt(8,0,Ct(2)),upX:wt(3,0,Pt(3)),upY:wt(4,1,Pt(4)),upZ:wt(5,0,Pt(5))}},{forwardX:dt,forwardY:pt,forwardZ:mt,positionX:gt,positionY:yt,positionZ:bt,upX:vt,upY:xt,upZ:kt}=ut.forwardX===void 0?ht():ut;return{get forwardX(){return dt},get forwardY(){return pt},get forwardZ(){return mt},get positionX(){return gt},get positionY(){return yt},get positionZ(){return bt},get upX(){return vt},get upY(){return xt},get upZ(){return kt}}},isAudioNode$1=tt=>"context"in tt,isAudioNodeOutputConnection=tt=>isAudioNode$1(tt[0]),insertElementInSet=(tt,et,nt,rt)=>{for(const it of tt)if(nt(it)){if(rt)return!1;throw Error("The set contains at least one similar element.")}return tt.add(et),!0},addActiveInputConnectionToAudioParam=(tt,et,[nt,rt],it)=>{insertElementInSet(tt,[et,nt,rt],ot=>ot[0]===et&&ot[1]===nt,it)},addPassiveInputConnectionToAudioParam=(tt,[et,nt,rt],it)=>{const ot=tt.get(et);ot===void 0?tt.set(et,new Set([[nt,rt]])):insertElementInSet(ot,[nt,rt],at=>at[0]===nt,it)},isNativeAudioNodeFaker=tt=>"inputs"in tt,connectNativeAudioNodeToNativeAudioNode=(tt,et,nt,rt)=>{if(isNativeAudioNodeFaker(et)){const it=et.inputs[rt];return tt.connect(it,nt,0),[it,nt,0]}return tt.connect(et,nt,rt),[et,nt,rt]},deleteActiveInputConnection=(tt,et,nt)=>{for(const rt of tt)if(rt[0]===et&&rt[1]===nt)return tt.delete(rt),rt;return null},deleteActiveInputConnectionToAudioParam=(tt,et,nt)=>pickElementFromSet(tt,rt=>rt[0]===et&&rt[1]===nt),deleteEventListenerOfAudioNode=(tt,et)=>{if(!getEventListenersOfAudioNode(tt).delete(et))throw new Error("Missing the expected event listener.")},deletePassiveInputConnectionToAudioParam=(tt,et,nt)=>{const rt=getValueForKey(tt,et),it=pickElementFromSet(rt,ot=>ot[0]===nt);return rt.size===0&&tt.delete(et),it},disconnectNativeAudioNodeFromNativeAudioNode=(tt,et,nt,rt)=>{isNativeAudioNodeFaker(et)?tt.disconnect(et.inputs[rt],nt,0):tt.disconnect(et,nt,rt)},getNativeAudioNode=tt=>getValueForKey(AUDIO_NODE_STORE,tt),getNativeAudioParam=tt=>getValueForKey(AUDIO_PARAM_STORE,tt),isPartOfACycle=tt=>CYCLE_COUNTERS.has(tt),isPassiveAudioNode=tt=>!ACTIVE_AUDIO_NODE_STORE.has(tt),testAudioNodeDisconnectMethodSupport=(tt,et)=>new Promise(nt=>{if(et!==null)nt(!0);else{const rt=tt.createScriptProcessor(256,1,1),it=tt.createGain(),ot=tt.createBuffer(1,2,44100),at=ot.getChannelData(0);at[0]=1,at[1]=1;const st=tt.createBufferSource();st.buffer=ot,st.loop=!0,st.connect(rt).connect(tt.destination),st.connect(it),st.disconnect(it),rt.onaudioprocess=lt=>{const ct=lt.inputBuffer.getChannelData(0);Array.prototype.some.call(ct,ut=>ut===1)?nt(!0):nt(!1),st.stop(),rt.onaudioprocess=null,st.disconnect(rt),rt.disconnect(tt.destination)},st.start()}}),visitEachAudioNodeOnce=(tt,et)=>{const nt=new Map;for(const rt of tt)for(const it of rt){const ot=nt.get(it);nt.set(it,ot===void 0?1:ot+1)}nt.forEach((rt,it)=>et(it,rt))},isNativeAudioNode$1=tt=>"context"in tt,wrapAudioNodeDisconnectMethod=tt=>{const et=new Map;tt.connect=(nt=>(rt,it=0,ot=0)=>{const at=isNativeAudioNode$1(rt)?nt(rt,it,ot):nt(rt,it),st=et.get(rt);return st===void 0?et.set(rt,[{input:ot,output:it}]):st.every(lt=>lt.input!==ot||lt.output!==it)&&st.push({input:ot,output:it}),at})(tt.connect.bind(tt)),tt.disconnect=(nt=>(rt,it,ot)=>{if(nt.apply(tt),rt===void 0)et.clear();else if(typeof rt=="number")for(const[at,st]of et){const lt=st.filter(ct=>ct.output!==rt);lt.length===0?et.delete(at):et.set(at,lt)}else if(et.has(rt))if(it===void 0)et.delete(rt);else{const at=et.get(rt);if(at!==void 0){const st=at.filter(lt=>lt.output!==it&&(lt.input!==ot||ot===void 0));st.length===0?et.delete(rt):et.set(rt,st)}}for(const[at,st]of et)st.forEach(lt=>{isNativeAudioNode$1(at)?tt.connect(at,lt.output,lt.input):tt.connect(at,lt.output)})})(tt.disconnect)},addConnectionToAudioParamOfAudioContext=(tt,et,nt,rt)=>{const{activeInputs:it,passiveInputs:ot}=getAudioParamConnections(et),{outputs:at}=getAudioNodeConnections(tt),st=getEventListenersOfAudioNode(tt),lt=ct=>{const ut=getNativeAudioNode(tt),ht=getNativeAudioParam(et);if(ct){const dt=deletePassiveInputConnectionToAudioParam(ot,tt,nt);addActiveInputConnectionToAudioParam(it,tt,dt,!1),!rt&&!isPartOfACycle(tt)&&ut.connect(ht,nt)}else{const dt=deleteActiveInputConnectionToAudioParam(it,tt,nt);addPassiveInputConnectionToAudioParam(ot,dt,!1),!rt&&!isPartOfACycle(tt)&&ut.disconnect(ht,nt)}};return insertElementInSet(at,[et,nt],ct=>ct[0]===et&&ct[1]===nt,!0)?(st.add(lt),isActiveAudioNode(tt)?addActiveInputConnectionToAudioParam(it,tt,[nt,lt],!0):addPassiveInputConnectionToAudioParam(ot,[tt,nt,lt],!0),!0):!1},deleteInputConnectionOfAudioNode=(tt,et,nt,rt)=>{const{activeInputs:it,passiveInputs:ot}=getAudioNodeConnections(et),at=deleteActiveInputConnection(it[rt],tt,nt);return at===null?[deletePassiveInputConnectionToAudioNode(ot,tt,nt,rt)[2],!1]:[at[2],!0]},deleteInputConnectionOfAudioParam=(tt,et,nt)=>{const{activeInputs:rt,passiveInputs:it}=getAudioParamConnections(et),ot=deleteActiveInputConnection(rt,tt,nt);return ot===null?[deletePassiveInputConnectionToAudioParam(it,tt,nt)[1],!1]:[ot[2],!0]},deleteInputsOfAudioNode=(tt,et,nt,rt,it)=>{const[ot,at]=deleteInputConnectionOfAudioNode(tt,nt,rt,it);if(ot!==null&&(deleteEventListenerOfAudioNode(tt,ot),at&&!et&&!isPartOfACycle(tt)&&disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(tt),getNativeAudioNode(nt),rt,it)),isActiveAudioNode(nt)){const{activeInputs:st}=getAudioNodeConnections(nt);setInternalStateToPassiveWhenNecessary(nt,st)}},deleteInputsOfAudioParam=(tt,et,nt,rt)=>{const[it,ot]=deleteInputConnectionOfAudioParam(tt,nt,rt);it!==null&&(deleteEventListenerOfAudioNode(tt,it),ot&&!et&&!isPartOfACycle(tt)&&getNativeAudioNode(tt).disconnect(getNativeAudioParam(nt),rt))},deleteAnyConnection=(tt,et)=>{const nt=getAudioNodeConnections(tt),rt=[];for(const it of nt.outputs)isAudioNodeOutputConnection(it)?deleteInputsOfAudioNode(tt,et,...it):deleteInputsOfAudioParam(tt,et,...it),rt.push(it[0]);return nt.outputs.clear(),rt},deleteConnectionAtOutput=(tt,et,nt)=>{const rt=getAudioNodeConnections(tt),it=[];for(const ot of rt.outputs)ot[1]===nt&&(isAudioNodeOutputConnection(ot)?deleteInputsOfAudioNode(tt,et,...ot):deleteInputsOfAudioParam(tt,et,...ot),it.push(ot[0]),rt.outputs.delete(ot));return it},deleteConnectionToDestination=(tt,et,nt,rt,it)=>{const ot=getAudioNodeConnections(tt);return Array.from(ot.outputs).filter(at=>at[0]===nt&&(rt===void 0||at[1]===rt)&&(it===void 0||at[2]===it)).map(at=>(isAudioNodeOutputConnection(at)?deleteInputsOfAudioNode(tt,et,...at):deleteInputsOfAudioParam(tt,et,...at),ot.outputs.delete(at),at[0]))},createAudioNodeConstructor=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt,pt,mt,gt)=>class extends ct{constructor(bt,vt,xt,kt){super(xt),this._context=bt,this._nativeAudioNode=xt;const St=ut(bt);ht(St)&&nt(testAudioNodeDisconnectMethodSupport,()=>testAudioNodeDisconnectMethodSupport(St,gt))!==!0&&wrapAudioNodeDisconnectMethod(xt),AUDIO_NODE_STORE.set(this,xt),EVENT_LISTENERS.set(this,new Set),bt.state!=="closed"&&vt&&setInternalStateToActive(this),tt(this,kt,xt)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(bt){this._nativeAudioNode.channelCount=bt}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(bt){this._nativeAudioNode.channelCountMode=bt}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(bt){this._nativeAudioNode.channelInterpretation=bt}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(bt,vt=0,xt=0){if(vt<0||vt>=this._nativeAudioNode.numberOfOutputs)throw it();const kt=ut(this._context),St=mt(kt);if(dt(bt)||pt(bt))throw ot();if(isAudioNode$1(bt)){const Et=getNativeAudioNode(bt);try{const Dt=connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode,Et,vt,xt),jt=isPassiveAudioNode(this);(St||jt)&&this._nativeAudioNode.disconnect(...Dt),this.context.state!=="closed"&&!jt&&isPassiveAudioNode(bt)&&setInternalStateToActive(bt)}catch(Dt){throw Dt.code===12?ot():Dt}if(et(this,bt,vt,xt,St)){const Dt=lt([this],bt);visitEachAudioNodeOnce(Dt,rt(St))}return bt}const Tt=getNativeAudioParam(bt);if(Tt.name==="playbackRate"&&Tt.maxValue===1024)throw at();try{this._nativeAudioNode.connect(Tt,vt),(St||isPassiveAudioNode(this))&&this._nativeAudioNode.disconnect(Tt,vt)}catch(Et){throw Et.code===12?ot():Et}if(addConnectionToAudioParamOfAudioContext(this,bt,vt,St)){const Et=lt([this],bt);visitEachAudioNodeOnce(Et,rt(St))}}disconnect(bt,vt,xt){let kt;const St=ut(this._context),Tt=mt(St);if(bt===void 0)kt=deleteAnyConnection(this,Tt);else if(typeof bt=="number"){if(bt<0||bt>=this.numberOfOutputs)throw it();kt=deleteConnectionAtOutput(this,Tt,bt)}else{if(vt!==void 0&&(vt<0||vt>=this.numberOfOutputs)||isAudioNode$1(bt)&&xt!==void 0&&(xt<0||xt>=bt.numberOfInputs))throw it();if(kt=deleteConnectionToDestination(this,Tt,bt,vt,xt),kt.length===0)throw ot()}for(const At of kt){const Et=lt([this],At);visitEachAudioNodeOnce(Et,st)}}},createAudioParamFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt)=>(pt,mt,gt,yt=null,bt=null)=>{const vt=gt.value,xt=new AutomationEventList(vt),kt=mt?rt(xt):null,St={get defaultValue(){return vt},get maxValue(){return yt===null?gt.maxValue:yt},get minValue(){return bt===null?gt.minValue:bt},get value(){return gt.value},set value(Tt){gt.value=Tt,St.setValueAtTime(Tt,pt.context.currentTime)},cancelAndHoldAtTime(Tt){if(typeof gt.cancelAndHoldAtTime=="function")kt===null&&xt.flush(pt.context.currentTime),xt.add(it(Tt)),gt.cancelAndHoldAtTime(Tt);else{const At=Array.from(xt).pop();kt===null&&xt.flush(pt.context.currentTime),xt.add(it(Tt));const Et=Array.from(xt).pop();gt.cancelScheduledValues(Tt),At!==Et&&Et!==void 0&&(Et.type==="exponentialRampToValue"?gt.exponentialRampToValueAtTime(Et.value,Et.endTime):Et.type==="linearRampToValue"?gt.linearRampToValueAtTime(Et.value,Et.endTime):Et.type==="setValue"?gt.setValueAtTime(Et.value,Et.startTime):Et.type==="setValueCurve"&>.setValueCurveAtTime(Et.values,Et.startTime,Et.duration))}return St},cancelScheduledValues(Tt){return kt===null&&xt.flush(pt.context.currentTime),xt.add(ot(Tt)),gt.cancelScheduledValues(Tt),St},exponentialRampToValueAtTime(Tt,At){if(Tt===0)throw new RangeError;if(!Number.isFinite(At)||At<0)throw new RangeError;const Et=pt.context.currentTime;return kt===null&&xt.flush(Et),Array.from(xt).length===0&&(xt.add(ct(vt,Et)),gt.setValueAtTime(vt,Et)),xt.add(at(Tt,At)),gt.exponentialRampToValueAtTime(Tt,At),St},linearRampToValueAtTime(Tt,At){const Et=pt.context.currentTime;return kt===null&&xt.flush(Et),Array.from(xt).length===0&&(xt.add(ct(vt,Et)),gt.setValueAtTime(vt,Et)),xt.add(st(Tt,At)),gt.linearRampToValueAtTime(Tt,At),St},setTargetAtTime(Tt,At,Et){return kt===null&&xt.flush(pt.context.currentTime),xt.add(lt(Tt,At,Et)),gt.setTargetAtTime(Tt,At,Et),St},setValueAtTime(Tt,At){return kt===null&&xt.flush(pt.context.currentTime),xt.add(ct(Tt,At)),gt.setValueAtTime(Tt,At),St},setValueCurveAtTime(Tt,At,Et){const $t=Tt instanceof Float32Array?Tt:new Float32Array(Tt);if(ht!==null&&ht.name==="webkitAudioContext"){const Dt=At+Et,jt=pt.context.sampleRate,Pt=Math.ceil(At*jt),Ct=Math.floor(Dt*jt),wt=Ct-Pt,It=new Float32Array(wt);for(let Wt=0;Wt({replay(et){for(const nt of tt)if(nt.type==="exponentialRampToValue"){const{endTime:rt,value:it}=nt;et.exponentialRampToValueAtTime(it,rt)}else if(nt.type==="linearRampToValue"){const{endTime:rt,value:it}=nt;et.linearRampToValueAtTime(it,rt)}else if(nt.type==="setTarget"){const{startTime:rt,target:it,timeConstant:ot}=nt;et.setTargetAtTime(it,rt,ot)}else if(nt.type==="setValue"){const{startTime:rt,value:it}=nt;et.setValueAtTime(it,rt)}else if(nt.type==="setValueCurve"){const{duration:rt,startTime:it,values:ot}=nt;et.setValueCurveAtTime(ot,it,rt)}else throw new Error("Can't apply an unknown automation.")}});class ReadOnlyMap{constructor(et){this._map=new Map(et)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(et,nt=null){return this._map.forEach((rt,it)=>et.call(nt,rt,it,this))}get(et){return this._map.get(et)}has(et){return this._map.has(et)}keys(){return this._map.keys()}values(){return this._map.values()}}const DEFAULT_OPTIONS$g={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},createAudioWorkletNodeConstructor=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt,pt)=>class extends et{constructor(gt,yt,bt){var vt;const xt=st(gt),kt=lt(xt),St=ut({...DEFAULT_OPTIONS$g,...bt});dt(St);const Tt=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(xt),At=Tt==null?void 0:Tt.get(yt),Et=kt||xt.state!=="closed"?xt:(vt=at(xt))!==null&&vt!==void 0?vt:xt,$t=it(Et,kt?null:gt.baseLatency,ct,yt,At,St),Dt=kt?rt(yt,St,At):null;super(gt,!0,$t,Dt);const jt=[];$t.parameters.forEach((Ct,wt)=>{const It=nt(this,kt,Ct);jt.push([wt,It])}),this._nativeAudioWorkletNode=$t,this._onprocessorerror=null,this._parameters=new ReadOnlyMap(jt),kt&&tt(xt,this);const{activeInputs:Pt}=ot(this);ht($t,Pt)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(gt){const yt=typeof gt=="function"?pt(this,gt):null;this._nativeAudioWorkletNode.onprocessorerror=yt;const bt=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=bt!==null&&bt===yt?gt:bt}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function copyFromChannel(tt,et,nt,rt,it){if(typeof tt.copyFromChannel=="function")et[nt].byteLength===0&&(et[nt]=new Float32Array(128)),tt.copyFromChannel(et[nt],rt,it);else{const ot=tt.getChannelData(rt);if(et[nt].byteLength===0)et[nt]=ot.slice(it,it+128);else{const at=new Float32Array(ot.buffer,it*Float32Array.BYTES_PER_ELEMENT,128);et[nt].set(at)}}}const copyToChannel=(tt,et,nt,rt,it)=>{typeof tt.copyToChannel=="function"?et[nt].byteLength!==0&&tt.copyToChannel(et[nt],rt,it):et[nt].byteLength!==0&&tt.getChannelData(rt).set(et[nt],it)},createNestedArrays=(tt,et)=>{const nt=[];for(let rt=0;rt{const nt=getValueForKey(NODE_TO_PROCESSOR_MAPS,tt),rt=getNativeAudioNode(et);return getValueForKey(nt,rt)},processBuffer=async(tt,et,nt,rt,it,ot,at)=>{const st=et===null?Math.ceil(tt.context.length/128)*128:et.length,lt=rt.channelCount*rt.numberOfInputs,ct=it.reduce((yt,bt)=>yt+bt,0),ut=ct===0?null:nt.createBuffer(ct,st,nt.sampleRate);if(ot===void 0)throw new Error("Missing the processor constructor.");const ht=getAudioNodeConnections(tt),dt=await getAudioWorkletProcessor(nt,tt),pt=createNestedArrays(rt.numberOfInputs,rt.channelCount),mt=createNestedArrays(rt.numberOfOutputs,it),gt=Array.from(tt.parameters.keys()).reduce((yt,bt)=>({...yt,[bt]:new Float32Array(128)}),{});for(let yt=0;yt0&&et!==null)for(let bt=0;bt{copyFromChannel(et,gt,bt,lt+vt,yt)});for(let bt=0;btht.activeInputs[kt].size===0?[]:xt),vt=at(yt/nt.sampleRate,nt.sampleRate,()=>dt.process(bt,mt,gt));if(ut!==null)for(let xt=0,kt=0;xt(yt,bt,vt)=>{const xt=new WeakMap;let kt=null;const St=async(Tt,At)=>{let Et=ut(Tt),$t=null;const Dt=isOwnedByContext(Et,At),jt=Array.isArray(bt.outputChannelCount)?bt.outputChannelCount:Array.from(bt.outputChannelCount);if(ht===null){const Pt=jt.reduce((Ot,Wt)=>Ot+Wt,0),Ct=it(At,{channelCount:Math.max(1,Pt),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,Pt)}),wt=[];for(let Ot=0;Ot{const Ut=new dt(Ft,Math.ceil(Tt.context.length/128)*128,At.sampleRate),Mt=[],Ht=[];for(let Kt=0;Kt{const rn=ot(Ut,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:Kt.value});return await pt(Ut,Kt,rn.offset),rn})),sn=rt(Ut,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,Wt+zt)});for(let Kt=0;Ktmt(Tt,Ut,Kt))),gt(Ut)})(),At,bt,jt,vt,ct)}const Pt=await kt,Ct=nt(At,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[wt,It,Ot]=$t;Pt!==null&&(Ct.buffer=Pt,Ct.start(0)),Ct.connect(wt);for(let Wt=0,zt=0;Wtclass extends mt{constructor(St,Tt){super(St,Tt),this._nativeContext=St,this._audioWorklet=tt===void 0?void 0:{addModule:(At,Et)=>tt(this,At,Et)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new et(this)}createBiquadFilter(){return new it(this)}createBuffer(St,Tt,At){return new nt({length:Tt,numberOfChannels:St,sampleRate:At})}createBufferSource(){return new rt(this)}createChannelMerger(St=6){return new ot(this,{numberOfInputs:St})}createChannelSplitter(St=6){return new at(this,{numberOfOutputs:St})}createConstantSource(){return new st(this)}createConvolver(){return new lt(this)}createDelay(St=1){return new ut(this,{maxDelayTime:St})}createDynamicsCompressor(){return new ht(this)}createGain(){return new dt(this)}createIIRFilter(St,Tt){return new pt(this,{feedback:Tt,feedforward:St})}createOscillator(){return new gt(this)}createPanner(){return new yt(this)}createPeriodicWave(St,Tt,At={disableNormalization:!1}){return new bt(this,{...At,imag:Tt,real:St})}createStereoPanner(){return new vt(this)}createWaveShaper(){return new xt(this)}decodeAudioData(St,Tt,At){return ct(this._nativeContext,St).then(Et=>(typeof Tt=="function"&&Tt(Et),Et),Et=>{throw typeof At=="function"&&At(Et),Et})}},DEFAULT_OPTIONS$f={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},createBiquadFilterNodeConstructor=(tt,et,nt,rt,it,ot,at,st)=>class extends tt{constructor(ct,ut){const ht=ot(ct),dt={...DEFAULT_OPTIONS$f,...ut},pt=it(ht,dt),mt=at(ht),gt=mt?nt():null;super(ct,!1,pt,gt),this._Q=et(this,mt,pt.Q,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._detune=et(this,mt,pt.detune,1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT),-1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT)),this._frequency=et(this,mt,pt.frequency,ct.sampleRate/2,0),this._gain=et(this,mt,pt.gain,40*Math.log10(MOST_POSITIVE_SINGLE_FLOAT),MOST_NEGATIVE_SINGLE_FLOAT),this._nativeBiquadFilterNode=pt,st(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type(ct){this._nativeBiquadFilterNode.type=ct}getFrequencyResponse(ct,ut,ht){try{this._nativeBiquadFilterNode.getFrequencyResponse(ct,ut,ht)}catch(dt){throw dt.code===11?rt():dt}if(ct.length!==ut.length||ut.length!==ht.length)throw rt()}},createBiquadFilterNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap,at=async(st,lt)=>{let ct=nt(st);const ut=isOwnedByContext(ct,lt);if(!ut){const ht={Q:ct.Q.value,channelCount:ct.channelCount,channelCountMode:ct.channelCountMode,channelInterpretation:ct.channelInterpretation,detune:ct.detune.value,frequency:ct.frequency.value,gain:ct.gain.value,type:ct.type};ct=et(lt,ht)}return ot.set(lt,ct),ut?(await tt(lt,st.Q,ct.Q),await tt(lt,st.detune,ct.detune),await tt(lt,st.frequency,ct.frequency),await tt(lt,st.gain,ct.gain)):(await rt(lt,st.Q,ct.Q),await rt(lt,st.detune,ct.detune),await rt(lt,st.frequency,ct.frequency),await rt(lt,st.gain,ct.gain)),await it(st,lt,ct),ct};return{render(st,lt){const ct=ot.get(lt);return ct!==void 0?Promise.resolve(ct):at(st,lt)}}},createCacheTestResult=(tt,et)=>(nt,rt)=>{const it=et.get(nt);if(it!==void 0)return it;const ot=tt.get(nt);if(ot!==void 0)return ot;try{const at=rt();return at instanceof Promise?(tt.set(nt,at),at.catch(()=>!1).then(st=>(tt.delete(nt),et.set(nt,st),st))):(et.set(nt,at),at)}catch{return et.set(nt,!1),!1}},DEFAULT_OPTIONS$e={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},createChannelMergerNodeConstructor=(tt,et,nt,rt,it)=>class extends tt{constructor(at,st){const lt=rt(at),ct={...DEFAULT_OPTIONS$e,...st},ut=nt(lt,ct),ht=it(lt)?et():null;super(at,!1,ut,ht)}},createChannelMergerNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,numberOfInputs:st.numberOfInputs};st=tt(at,ct)}return rt.set(at,st),await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},DEFAULT_OPTIONS$d={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},createChannelSplitterNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=rt(st),ut=ot({...DEFAULT_OPTIONS$d,...lt}),ht=nt(ct,ut),dt=it(ct)?et():null;super(st,!1,ht,dt)}},createChannelSplitterNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,numberOfOutputs:st.numberOfOutputs};st=tt(at,ct)}return rt.set(at,st),await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},createConnectAudioParam=tt=>(et,nt,rt)=>tt(nt,et,rt),createConnectMultipleOutputs=tt=>(et,nt,rt=0,it=0)=>{const ot=et[rt];if(ot===void 0)throw tt();return isNativeAudioNode$1(nt)?ot.connect(nt,0,it):ot.connect(nt,0)},createConnectedNativeAudioBufferSourceNodeFactory=tt=>(et,nt)=>{const rt=tt(et,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),it=et.createBuffer(1,2,44100);return rt.buffer=it,rt.loop=!0,rt.connect(nt),rt.start(),()=>{rt.stop(),rt.disconnect(nt)}},DEFAULT_OPTIONS$c={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},createConstantSourceNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS$c,...ct},dt=rt(ut,ht),pt=ot(ut),mt=pt?nt():null;super(lt,!1,dt,mt),this._constantSourceNodeRenderer=mt,this._nativeConstantSourceNode=dt,this._offset=et(this,pt,dt.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(lt){const ct=typeof lt=="function"?at(this,lt):null;this._nativeConstantSourceNode.onended=ct;const ut=this._nativeConstantSourceNode.onended;this._onended=ut!==null&&ut===ct?lt:ut}start(lt=0){if(this._nativeConstantSourceNode.start(lt),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=lt),this.context.state!=="closed"){setInternalStateToActive(this);const ct=()=>{this._nativeConstantSourceNode.removeEventListener("ended",ct),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeConstantSourceNode.addEventListener("ended",ct)}}stop(lt=0){this._nativeConstantSourceNode.stop(lt),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=lt)}},createConstantSourceNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap;let at=null,st=null;const lt=async(ct,ut)=>{let ht=nt(ct);const dt=isOwnedByContext(ht,ut);if(!dt){const pt={channelCount:ht.channelCount,channelCountMode:ht.channelCountMode,channelInterpretation:ht.channelInterpretation,offset:ht.offset.value};ht=et(ut,pt),at!==null&&ht.start(at),st!==null&&ht.stop(st)}return ot.set(ut,ht),dt?await tt(ut,ct.offset,ht.offset):await rt(ut,ct.offset,ht.offset),await it(ct,ut,ht),ht};return{set start(ct){at=ct},set stop(ct){st=ct},render(ct,ut){const ht=ot.get(ut);return ht!==void 0?Promise.resolve(ht):lt(ct,ut)}}},createConvertNumberToUnsignedLong=tt=>et=>(tt[0]=et,tt[0]),DEFAULT_OPTIONS$b={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},createConvolverNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=rt(st),ut={...DEFAULT_OPTIONS$b,...lt},ht=nt(ct,ut),pt=it(ct)?et():null;super(st,!1,ht,pt),this._isBufferNullified=!1,this._nativeConvolverNode=ht,ut.buffer!==null&&ot(this,ut.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(st){if(this._nativeConvolverNode.buffer=st,st===null&&this._nativeConvolverNode.buffer!==null){const lt=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=lt.createBuffer(1,1,lt.sampleRate),this._isBufferNullified=!0,ot(this,0)}else this._isBufferNullified=!1,ot(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(st){this._nativeConvolverNode.normalize=st}},createConvolverNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={buffer:st.buffer,channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,disableNormalization:!st.normalize};st=tt(at,ct)}return rt.set(at,st),isNativeAudioNodeFaker(st)?await nt(ot,at,st.inputs[0]):await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},createCreateNativeOfflineAudioContext=(tt,et)=>(nt,rt,it)=>{if(et===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new et(nt,rt,it)}catch(ot){throw ot.name==="SyntaxError"?tt():ot}},createDataCloneError=()=>new DOMException("","DataCloneError"),detachArrayBuffer=tt=>{const{port1:et,port2:nt}=new MessageChannel;return new Promise(rt=>{const it=()=>{nt.onmessage=null,et.close(),nt.close(),rt()};nt.onmessage=()=>it();try{et.postMessage(tt,[tt])}catch{}finally{it()}})},createDecodeAudioData=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut)=>(ht,dt)=>{const pt=at(ht)?ht:ot(ht);if(it.has(dt)){const mt=nt();return Promise.reject(mt)}try{it.add(dt)}catch{}return et(lt,()=>lt(pt))?pt.decodeAudioData(dt).then(mt=>(detachArrayBuffer(dt).catch(()=>{}),et(st,()=>st(mt))||ut(mt),tt.add(mt),mt)):new Promise((mt,gt)=>{const yt=async()=>{try{await detachArrayBuffer(dt)}catch{}},bt=vt=>{gt(vt),yt()};try{pt.decodeAudioData(dt,vt=>{typeof vt.copyFromChannel!="function"&&(ct(vt),wrapAudioBufferGetChannelDataMethod(vt)),tt.add(vt),yt().then(()=>mt(vt))},vt=>{bt(vt===null?rt():vt)})}catch(vt){bt(vt)}})},createDecrementCycleCounter=(tt,et,nt,rt,it,ot,at,st)=>(lt,ct)=>{const ut=et.get(lt);if(ut===void 0)throw new Error("Missing the expected cycle count.");const ht=ot(lt.context),dt=st(ht);if(ut===ct){if(et.delete(lt),!dt&&at(lt)){const pt=rt(lt),{outputs:mt}=nt(lt);for(const gt of mt)if(isAudioNodeOutputConnection(gt)){const yt=rt(gt[0]);tt(pt,yt,gt[1],gt[2])}else{const yt=it(gt[0]);pt.connect(yt,gt[1])}}}else et.set(lt,ut-ct)},DEFAULT_OPTIONS$a={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},createDelayNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS$a,...ct},dt=rt(ut,ht),pt=ot(ut),mt=pt?nt(ht.maxDelayTime):null;super(lt,!1,dt,mt),this._delayTime=et(this,pt,dt.delayTime),at(this,ht.maxDelayTime)}get delayTime(){return this._delayTime}},createDelayNodeRendererFactory=(tt,et,nt,rt,it)=>ot=>{const at=new WeakMap,st=async(lt,ct)=>{let ut=nt(lt);const ht=isOwnedByContext(ut,ct);if(!ht){const dt={channelCount:ut.channelCount,channelCountMode:ut.channelCountMode,channelInterpretation:ut.channelInterpretation,delayTime:ut.delayTime.value,maxDelayTime:ot};ut=et(ct,dt)}return at.set(ct,ut),ht?await tt(ct,lt.delayTime,ut.delayTime):await rt(ct,lt.delayTime,ut.delayTime),await it(lt,ct,ut),ut};return{render(lt,ct){const ut=at.get(ct);return ut!==void 0?Promise.resolve(ut):st(lt,ct)}}},createDeleteActiveInputConnectionToAudioNode=tt=>(et,nt,rt,it)=>tt(et[it],ot=>ot[0]===nt&&ot[1]===rt),createDeleteUnrenderedAudioWorkletNode=tt=>(et,nt)=>{tt(et).delete(nt)},isDelayNode=tt=>"delayTime"in tt,createDetectCycles=(tt,et,nt)=>function rt(it,ot){const at=isAudioNode$1(ot)?ot:nt(tt,ot);if(isDelayNode(at))return[];if(it[0]===at)return[it];if(it.includes(at))return[];const{outputs:st}=et(at);return Array.from(st).map(lt=>rt([...it,at],lt[0])).reduce((lt,ct)=>lt.concat(ct),[])},getOutputAudioNodeAtIndex=(tt,et,nt)=>{const rt=et[nt];if(rt===void 0)throw tt();return rt},createDisconnectMultipleOutputs=tt=>(et,nt=void 0,rt=void 0,it=0)=>nt===void 0?et.forEach(ot=>ot.disconnect()):typeof nt=="number"?getOutputAudioNodeAtIndex(tt,et,nt).disconnect():isNativeAudioNode$1(nt)?rt===void 0?et.forEach(ot=>ot.disconnect(nt)):it===void 0?getOutputAudioNodeAtIndex(tt,et,rt).disconnect(nt,0):getOutputAudioNodeAtIndex(tt,et,rt).disconnect(nt,0,it):rt===void 0?et.forEach(ot=>ot.disconnect(nt)):getOutputAudioNodeAtIndex(tt,et,rt).disconnect(nt,0),DEFAULT_OPTIONS$9={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},createDynamicsCompressorNodeConstructor=(tt,et,nt,rt,it,ot,at,st)=>class extends tt{constructor(ct,ut){const ht=ot(ct),dt={...DEFAULT_OPTIONS$9,...ut},pt=rt(ht,dt),mt=at(ht),gt=mt?nt():null;super(ct,!1,pt,gt),this._attack=et(this,mt,pt.attack),this._knee=et(this,mt,pt.knee),this._nativeDynamicsCompressorNode=pt,this._ratio=et(this,mt,pt.ratio),this._release=et(this,mt,pt.release),this._threshold=et(this,mt,pt.threshold),st(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount(ct){const ut=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=ct,ct>2)throw this._nativeDynamicsCompressorNode.channelCount=ut,it()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode(ct){const ut=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=ct,ct==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=ut,it()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},createDynamicsCompressorNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap,at=async(st,lt)=>{let ct=nt(st);const ut=isOwnedByContext(ct,lt);if(!ut){const ht={attack:ct.attack.value,channelCount:ct.channelCount,channelCountMode:ct.channelCountMode,channelInterpretation:ct.channelInterpretation,knee:ct.knee.value,ratio:ct.ratio.value,release:ct.release.value,threshold:ct.threshold.value};ct=et(lt,ht)}return ot.set(lt,ct),ut?(await tt(lt,st.attack,ct.attack),await tt(lt,st.knee,ct.knee),await tt(lt,st.ratio,ct.ratio),await tt(lt,st.release,ct.release),await tt(lt,st.threshold,ct.threshold)):(await rt(lt,st.attack,ct.attack),await rt(lt,st.knee,ct.knee),await rt(lt,st.ratio,ct.ratio),await rt(lt,st.release,ct.release),await rt(lt,st.threshold,ct.threshold)),await it(st,lt,ct),ct};return{render(st,lt){const ct=ot.get(lt);return ct!==void 0?Promise.resolve(ct):at(st,lt)}}},createEncodingError=()=>new DOMException("","EncodingError"),createEvaluateSource=tt=>et=>new Promise((nt,rt)=>{if(tt===null){rt(new SyntaxError);return}const it=tt.document.head;if(it===null)rt(new SyntaxError);else{const ot=tt.document.createElement("script"),at=new Blob([et],{type:"application/javascript"}),st=URL.createObjectURL(at),lt=tt.onerror,ct=()=>{tt.onerror=lt,URL.revokeObjectURL(st)};tt.onerror=(ut,ht,dt,pt,mt)=>{if(ht===st||ht===tt.location.href&&dt===1&&pt===1)return ct(),rt(mt),!1;if(lt!==null)return lt(ut,ht,dt,pt,mt)},ot.onerror=()=>{ct(),rt(new SyntaxError)},ot.onload=()=>{ct(),nt()},ot.src=st,ot.type="module",it.appendChild(ot)}}),createEventTargetConstructor=tt=>class{constructor(nt){this._nativeEventTarget=nt,this._listeners=new WeakMap}addEventListener(nt,rt,it){if(rt!==null){let ot=this._listeners.get(rt);ot===void 0&&(ot=tt(this,rt),typeof rt=="function"&&this._listeners.set(rt,ot)),this._nativeEventTarget.addEventListener(nt,ot,it)}}dispatchEvent(nt){return this._nativeEventTarget.dispatchEvent(nt)}removeEventListener(nt,rt,it){const ot=rt===null?void 0:this._listeners.get(rt);this._nativeEventTarget.removeEventListener(nt,ot===void 0?null:ot,it)}},createExposeCurrentFrameAndCurrentTime=tt=>(et,nt,rt)=>{Object.defineProperties(tt,{currentFrame:{configurable:!0,get(){return Math.round(et*nt)}},currentTime:{configurable:!0,get(){return et}}});try{return rt()}finally{tt!==null&&(delete tt.currentFrame,delete tt.currentTime)}},createFetchSource=tt=>async et=>{try{const nt=await fetch(et);if(nt.ok)return[await nt.text(),nt.url]}catch{}throw tt()},DEFAULT_OPTIONS$8={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},createGainNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=it(st),ut={...DEFAULT_OPTIONS$8,...lt},ht=rt(ct,ut),dt=ot(ct),pt=dt?nt():null;super(st,!1,ht,pt),this._gain=et(this,dt,ht.gain,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get gain(){return this._gain}},createGainNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap,at=async(st,lt)=>{let ct=nt(st);const ut=isOwnedByContext(ct,lt);if(!ut){const ht={channelCount:ct.channelCount,channelCountMode:ct.channelCountMode,channelInterpretation:ct.channelInterpretation,gain:ct.gain.value};ct=et(lt,ht)}return ot.set(lt,ct),ut?await tt(lt,st.gain,ct.gain):await rt(lt,st.gain,ct.gain),await it(st,lt,ct),ct};return{render(st,lt){const ct=ot.get(lt);return ct!==void 0?Promise.resolve(ct):at(st,lt)}}},createGetActiveAudioWorkletNodeInputs=(tt,et)=>nt=>et(tt,nt),createGetAudioNodeRenderer=tt=>et=>{const nt=tt(et);if(nt.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return nt.renderer},createGetAudioNodeTailTime=tt=>et=>{var nt;return(nt=tt.get(et))!==null&&nt!==void 0?nt:0},createGetAudioParamRenderer=tt=>et=>{const nt=tt(et);if(nt.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return nt.renderer},createGetBackupOfflineAudioContext=tt=>et=>tt.get(et),createInvalidStateError=()=>new DOMException("","InvalidStateError"),createGetNativeContext=tt=>et=>{const nt=tt.get(et);if(nt===void 0)throw createInvalidStateError();return nt},createGetOrCreateBackupOfflineAudioContext=(tt,et)=>nt=>{let rt=tt.get(nt);if(rt!==void 0)return rt;if(et===null)throw new Error("Missing the native OfflineAudioContext constructor.");return rt=new et(1,1,44100),tt.set(nt,rt),rt},createGetUnrenderedAudioWorkletNodes=tt=>et=>{const nt=tt.get(et);if(nt===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return nt},createInvalidAccessError=()=>new DOMException("","InvalidAccessError"),wrapIIRFilterNodeGetFrequencyResponseMethod=tt=>{tt.getFrequencyResponse=(et=>(nt,rt,it)=>{if(nt.length!==rt.length||rt.length!==it.length)throw createInvalidAccessError();return et.call(tt,nt,rt,it)})(tt.getFrequencyResponse)},DEFAULT_OPTIONS$7={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},createIIRFilterNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=rt(st),ut=it(ct),ht={...DEFAULT_OPTIONS$7,...lt},dt=et(ct,ut?null:st.baseLatency,ht),pt=ut?nt(ht.feedback,ht.feedforward):null;super(st,!1,dt,pt),wrapIIRFilterNodeGetFrequencyResponseMethod(dt),this._nativeIIRFilterNode=dt,ot(this,1)}getFrequencyResponse(st,lt,ct){return this._nativeIIRFilterNode.getFrequencyResponse(st,lt,ct)}},filterBuffer=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut)=>{const ht=ct.length;let dt=st;for(let pt=0;pt{const it=nt instanceof Float64Array?nt:new Float64Array(nt),ot=rt instanceof Float64Array?rt:new Float64Array(rt),at=it.length,st=ot.length,lt=Math.min(at,st);if(it[0]!==1){for(let mt=0;mt(ot,at)=>{const st=new WeakMap;let lt=null;const ct=async(ut,ht)=>{let dt=null,pt=et(ut);const mt=isOwnedByContext(pt,ht);if(ht.createIIRFilter===void 0?dt=tt(ht,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):mt||(pt=ht.createIIRFilter(at,ot)),st.set(ht,dt===null?pt:dt),dt!==null){if(lt===null){if(nt===null)throw new Error("Missing the native OfflineAudioContext constructor.");const yt=new nt(ut.context.destination.channelCount,ut.context.length,ht.sampleRate);lt=(async()=>{await rt(ut,yt,yt.destination);const bt=await it(yt);return filterFullBuffer(bt,ht,ot,at)})()}const gt=await lt;return dt.buffer=gt,dt.start(0),dt}return await rt(ut,ht,pt),pt};return{render(ut,ht){const dt=st.get(ht);return dt!==void 0?Promise.resolve(dt):ct(ut,ht)}}},createIncrementCycleCounterFactory=(tt,et,nt,rt,it,ot)=>at=>(st,lt)=>{const ct=tt.get(st);if(ct===void 0){if(!at&&ot(st)){const ut=rt(st),{outputs:ht}=nt(st);for(const dt of ht)if(isAudioNodeOutputConnection(dt)){const pt=rt(dt[0]);et(ut,pt,dt[1],dt[2])}else{const pt=it(dt[0]);ut.disconnect(pt,dt[1])}}tt.set(st,lt)}else tt.set(st,ct+lt)},createIsAnyAudioContext=(tt,et)=>nt=>{const rt=tt.get(nt);return et(rt)||et(nt)},createIsAnyAudioNode=(tt,et)=>nt=>tt.has(nt)||et(nt),createIsAnyAudioParam=(tt,et)=>nt=>tt.has(nt)||et(nt),createIsAnyOfflineAudioContext=(tt,et)=>nt=>{const rt=tt.get(nt);return et(rt)||et(nt)},createIsNativeAudioContext=tt=>et=>tt!==null&&et instanceof tt,createIsNativeAudioNode=tt=>et=>tt!==null&&typeof tt.AudioNode=="function"&&et instanceof tt.AudioNode,createIsNativeAudioParam=tt=>et=>tt!==null&&typeof tt.AudioParam=="function"&&et instanceof tt.AudioParam,createIsNativeContext=(tt,et)=>nt=>tt(nt)||et(nt),createIsNativeOfflineAudioContext=tt=>et=>tt!==null&&et instanceof tt,createIsSecureContext=tt=>tt!==null&&tt.isSecureContext,createMediaElementAudioSourceNodeConstructor=(tt,et,nt,rt)=>class extends tt{constructor(ot,at){const st=nt(ot),lt=et(st,at);if(rt(st))throw TypeError();super(ot,!0,lt,null),this._nativeMediaElementAudioSourceNode=lt}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},DEFAULT_OPTIONS$6={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},createMediaStreamAudioDestinationNodeConstructor=(tt,et,nt,rt)=>class extends tt{constructor(ot,at){const st=nt(ot);if(rt(st))throw new TypeError;const lt={...DEFAULT_OPTIONS$6,...at},ct=et(st,lt);super(ot,!1,ct,null),this._nativeMediaStreamAudioDestinationNode=ct}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},createMediaStreamAudioSourceNodeConstructor=(tt,et,nt,rt)=>class extends tt{constructor(ot,at){const st=nt(ot),lt=et(st,at);if(rt(st))throw new TypeError;super(ot,!0,lt,null),this._nativeMediaStreamAudioSourceNode=lt}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},createMediaStreamTrackAudioSourceNodeConstructor=(tt,et,nt)=>class extends tt{constructor(it,ot){const at=nt(it),st=et(at,ot);super(it,!0,st,null)}},createMinimalBaseAudioContextConstructor=(tt,et,nt,rt,it,ot)=>class extends nt{constructor(st,lt){super(st),this._nativeContext=st,CONTEXT_STORE.set(this,st),rt(st)&&it.set(st,new Set),this._destination=new tt(this,lt),this._listener=et(this,st),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(st){const lt=typeof st=="function"?ot(this,st):null;this._nativeContext.onstatechange=lt;const ct=this._nativeContext.onstatechange;this._onstatechange=ct!==null&&ct===lt?st:ct}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},testPromiseSupport=tt=>{const et=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const nt=tt.decodeAudioData(et.buffer,()=>{});return nt===void 0?!1:(nt.catch(()=>{}),!0)}catch{}return!1},createMonitorConnections=(tt,et)=>(nt,rt,it)=>{const ot=new Set;return nt.connect=(at=>(st,lt=0,ct=0)=>{const ut=ot.size===0;if(et(st))return at.call(nt,st,lt,ct),tt(ot,[st,lt,ct],ht=>ht[0]===st&&ht[1]===lt&&ht[2]===ct,!0),ut&&rt(),st;at.call(nt,st,lt),tt(ot,[st,lt],ht=>ht[0]===st&&ht[1]===lt,!0),ut&&rt()})(nt.connect),nt.disconnect=(at=>(st,lt,ct)=>{const ut=ot.size>0;if(st===void 0)at.apply(nt),ot.clear();else if(typeof st=="number"){at.call(nt,st);for(const dt of ot)dt[1]===st&&ot.delete(dt)}else{et(st)?at.call(nt,st,lt,ct):at.call(nt,st,lt);for(const dt of ot)dt[0]===st&&(lt===void 0||dt[1]===lt)&&(ct===void 0||dt[2]===ct)&&ot.delete(dt)}const ht=ot.size===0;ut&&ht&&it()})(nt.disconnect),nt},assignNativeAudioNodeOption=(tt,et,nt)=>{const rt=et[nt];rt!==void 0&&rt!==tt[nt]&&(tt[nt]=rt)},assignNativeAudioNodeOptions=(tt,et)=>{assignNativeAudioNodeOption(tt,et,"channelCount"),assignNativeAudioNodeOption(tt,et,"channelCountMode"),assignNativeAudioNodeOption(tt,et,"channelInterpretation")},testAnalyserNodeGetFloatTimeDomainDataMethodSupport=tt=>typeof tt.getFloatTimeDomainData=="function",wrapAnalyserNodeGetFloatTimeDomainDataMethod=tt=>{tt.getFloatTimeDomainData=et=>{const nt=new Uint8Array(et.length);tt.getByteTimeDomainData(nt);const rt=Math.max(nt.length,tt.fftSize);for(let it=0;it(nt,rt)=>{const it=nt.createAnalyser();if(assignNativeAudioNodeOptions(it,rt),!(rt.maxDecibels>rt.minDecibels))throw et();return assignNativeAudioNodeOption(it,rt,"fftSize"),assignNativeAudioNodeOption(it,rt,"maxDecibels"),assignNativeAudioNodeOption(it,rt,"minDecibels"),assignNativeAudioNodeOption(it,rt,"smoothingTimeConstant"),tt(testAnalyserNodeGetFloatTimeDomainDataMethodSupport,()=>testAnalyserNodeGetFloatTimeDomainDataMethodSupport(it))||wrapAnalyserNodeGetFloatTimeDomainDataMethod(it),it},createNativeAudioBufferConstructor=tt=>tt===null?null:tt.hasOwnProperty("AudioBuffer")?tt.AudioBuffer:null,assignNativeAudioNodeAudioParamValue=(tt,et,nt)=>{const rt=et[nt];rt!==void 0&&rt!==tt[nt].value&&(tt[nt].value=rt)},wrapAudioBufferSourceNodeStartMethodConsecutiveCalls=tt=>{tt.start=(et=>{let nt=!1;return(rt=0,it=0,ot)=>{if(nt)throw createInvalidStateError();et.call(tt,rt,it,ot),nt=!0}})(tt.start)},wrapAudioScheduledSourceNodeStartMethodNegativeParameters=tt=>{tt.start=(et=>(nt=0,rt=0,it)=>{if(typeof it=="number"&&it<0||rt<0||nt<0)throw new RangeError("The parameters can't be negative.");et.call(tt,nt,rt,it)})(tt.start)},wrapAudioScheduledSourceNodeStopMethodNegativeParameters=tt=>{tt.stop=(et=>(nt=0)=>{if(nt<0)throw new RangeError("The parameter can't be negative.");et.call(tt,nt)})(tt.stop)},createNativeAudioBufferSourceNodeFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut)=>(ht,dt)=>{const pt=ht.createBufferSource();return assignNativeAudioNodeOptions(pt,dt),assignNativeAudioNodeAudioParamValue(pt,dt,"playbackRate"),assignNativeAudioNodeOption(pt,dt,"buffer"),assignNativeAudioNodeOption(pt,dt,"loop"),assignNativeAudioNodeOption(pt,dt,"loopEnd"),assignNativeAudioNodeOption(pt,dt,"loopStart"),et(nt,()=>nt(ht))||wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(pt),et(rt,()=>rt(ht))||lt(pt),et(it,()=>it(ht))||ct(pt,ht),et(ot,()=>ot(ht))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(pt),et(at,()=>at(ht))||ut(pt,ht),et(st,()=>st(ht))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(pt),tt(ht,pt),pt},createNativeAudioContextConstructor=tt=>tt===null?null:tt.hasOwnProperty("AudioContext")?tt.AudioContext:tt.hasOwnProperty("webkitAudioContext")?tt.webkitAudioContext:null,createNativeAudioDestinationNodeFactory=(tt,et)=>(nt,rt,it)=>{const ot=nt.destination;if(ot.channelCount!==rt)try{ot.channelCount=rt}catch{}it&&ot.channelCountMode!=="explicit"&&(ot.channelCountMode="explicit"),ot.maxChannelCount===0&&Object.defineProperty(ot,"maxChannelCount",{value:rt});const at=tt(nt,{channelCount:rt,channelCountMode:ot.channelCountMode,channelInterpretation:ot.channelInterpretation,gain:1});return et(at,"channelCount",st=>()=>st.call(at),st=>lt=>{st.call(at,lt);try{ot.channelCount=lt}catch(ct){if(lt>ot.maxChannelCount)throw ct}}),et(at,"channelCountMode",st=>()=>st.call(at),st=>lt=>{st.call(at,lt),ot.channelCountMode=lt}),et(at,"channelInterpretation",st=>()=>st.call(at),st=>lt=>{st.call(at,lt),ot.channelInterpretation=lt}),Object.defineProperty(at,"maxChannelCount",{get:()=>ot.maxChannelCount}),at.connect(ot),at},createNativeAudioWorkletNodeConstructor=tt=>tt===null?null:tt.hasOwnProperty("AudioWorkletNode")?tt.AudioWorkletNode:null,testClonabilityOfAudioWorkletNodeOptions=tt=>{const{port1:et}=new MessageChannel;try{et.postMessage(tt)}finally{et.close()}},createNativeAudioWorkletNodeFactory=(tt,et,nt,rt,it)=>(ot,at,st,lt,ct,ut)=>{if(st!==null)try{const ht=new st(ot,lt,ut),dt=new Map;let pt=null;if(Object.defineProperties(ht,{channelCount:{get:()=>ut.channelCount,set:()=>{throw tt()}},channelCountMode:{get:()=>"explicit",set:()=>{throw tt()}},onprocessorerror:{get:()=>pt,set:mt=>{typeof pt=="function"&&ht.removeEventListener("processorerror",pt),pt=typeof mt=="function"?mt:null,typeof pt=="function"&&ht.addEventListener("processorerror",pt)}}}),ht.addEventListener=(mt=>(...gt)=>{if(gt[0]==="processorerror"){const yt=typeof gt[1]=="function"?gt[1]:typeof gt[1]=="object"&>[1]!==null&&typeof gt[1].handleEvent=="function"?gt[1].handleEvent:null;if(yt!==null){const bt=dt.get(gt[1]);bt!==void 0?gt[1]=bt:(gt[1]=vt=>{vt.type==="error"?(Object.defineProperties(vt,{type:{value:"processorerror"}}),yt(vt)):yt(new ErrorEvent(gt[0],{...vt}))},dt.set(yt,gt[1]))}}return mt.call(ht,"error",gt[1],gt[2]),mt.call(ht,...gt)})(ht.addEventListener),ht.removeEventListener=(mt=>(...gt)=>{if(gt[0]==="processorerror"){const yt=dt.get(gt[1]);yt!==void 0&&(dt.delete(gt[1]),gt[1]=yt)}return mt.call(ht,"error",gt[1],gt[2]),mt.call(ht,gt[0],gt[1],gt[2])})(ht.removeEventListener),ut.numberOfOutputs!==0){const mt=nt(ot,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return ht.connect(mt).connect(ot.destination),it(ht,()=>mt.disconnect(),()=>mt.connect(ot.destination))}return ht}catch(ht){throw ht.code===11?rt():ht}if(ct===void 0)throw rt();return testClonabilityOfAudioWorkletNodeOptions(ut),et(ot,at,ct,ut)},computeBufferSize=(tt,et)=>tt===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(tt*et))))),cloneAudioWorkletNodeOptions=tt=>new Promise((et,nt)=>{const{port1:rt,port2:it}=new MessageChannel;rt.onmessage=({data:ot})=>{rt.close(),it.close(),et(ot)},rt.onmessageerror=({data:ot})=>{rt.close(),it.close(),nt(ot)},it.postMessage(tt)}),createAudioWorkletProcessorPromise=async(tt,et)=>{const nt=await cloneAudioWorkletNodeOptions(et);return new tt(nt)},createAudioWorkletProcessor=(tt,et,nt,rt)=>{let it=NODE_TO_PROCESSOR_MAPS.get(tt);it===void 0&&(it=new WeakMap,NODE_TO_PROCESSOR_MAPS.set(tt,it));const ot=createAudioWorkletProcessorPromise(nt,rt);return it.set(et,ot),ot},createNativeAudioWorkletNodeFakerFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt)=>(pt,mt,gt,yt)=>{if(yt.numberOfInputs===0&&yt.numberOfOutputs===0)throw lt();const bt=Array.isArray(yt.outputChannelCount)?yt.outputChannelCount:Array.from(yt.outputChannelCount);if(bt.some($n=>$n<1))throw lt();if(bt.length!==yt.numberOfOutputs)throw et();if(yt.channelCountMode!=="explicit")throw lt();const vt=yt.channelCount*yt.numberOfInputs,xt=bt.reduce(($n,Nn)=>$n+Nn,0),kt=gt.parameterDescriptors===void 0?0:gt.parameterDescriptors.length;if(vt+kt>6||xt>6)throw lt();const St=new MessageChannel,Tt=[],At=[];for(let $n=0;$n$n===void 0?0:$n},maxValue:{get:()=>Nn===void 0?MOST_POSITIVE_SINGLE_FLOAT:Nn},minValue:{get:()=>Tn===void 0?MOST_NEGATIVE_SINGLE_FLOAT:Tn}}),Et.push(mn)}const $t=rt(pt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,vt+kt)}),Dt=computeBufferSize(mt,pt.sampleRate),jt=st(pt,Dt,vt+kt,Math.max(1,xt)),Pt=it(pt,{channelCount:Math.max(1,xt),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,xt)}),Ct=[];for(let $n=0;$n{const Tn=Et[Nn];return Tn.connect($t,0,vt+Nn),Tn.start(0),[$n,Tn.offset]}));$t.connect(jt);let It=yt.channelInterpretation,Ot=null;const Wt=yt.numberOfOutputs===0?[jt]:Ct,zt={get bufferSize(){return Dt},get channelCount(){return yt.channelCount},set channelCount($n){throw nt()},get channelCountMode(){return yt.channelCountMode},set channelCountMode($n){throw nt()},get channelInterpretation(){return It},set channelInterpretation($n){for(const Nn of Tt)Nn.channelInterpretation=$n;It=$n},get context(){return jt.context},get inputs(){return Tt},get numberOfInputs(){return yt.numberOfInputs},get numberOfOutputs(){return yt.numberOfOutputs},get onprocessorerror(){return Ot},set onprocessorerror($n){typeof Ot=="function"&&zt.removeEventListener("processorerror",Ot),Ot=typeof $n=="function"?$n:null,typeof Ot=="function"&&zt.addEventListener("processorerror",Ot)},get parameters(){return wt},get port(){return St.port2},addEventListener(...$n){return jt.addEventListener($n[0],$n[1],$n[2])},connect:tt.bind(null,Wt),disconnect:ct.bind(null,Wt),dispatchEvent(...$n){return jt.dispatchEvent($n[0])},removeEventListener(...$n){return jt.removeEventListener($n[0],$n[1],$n[2])}},Ft=new Map;St.port1.addEventListener=($n=>(...Nn)=>{if(Nn[0]==="message"){const Tn=typeof Nn[1]=="function"?Nn[1]:typeof Nn[1]=="object"&&Nn[1]!==null&&typeof Nn[1].handleEvent=="function"?Nn[1].handleEvent:null;if(Tn!==null){const cn=Ft.get(Nn[1]);cn!==void 0?Nn[1]=cn:(Nn[1]=mn=>{ut(pt.currentTime,pt.sampleRate,()=>Tn(mn))},Ft.set(Tn,Nn[1]))}}return $n.call(St.port1,Nn[0],Nn[1],Nn[2])})(St.port1.addEventListener),St.port1.removeEventListener=($n=>(...Nn)=>{if(Nn[0]==="message"){const Tn=Ft.get(Nn[1]);Tn!==void 0&&(Ft.delete(Nn[1]),Nn[1]=Tn)}return $n.call(St.port1,Nn[0],Nn[1],Nn[2])})(St.port1.removeEventListener);let Nt=null;Object.defineProperty(St.port1,"onmessage",{get:()=>Nt,set:$n=>{typeof Nt=="function"&&St.port1.removeEventListener("message",Nt),Nt=typeof $n=="function"?$n:null,typeof Nt=="function"&&(St.port1.addEventListener("message",Nt),St.port1.start())}}),gt.prototype.port=St.port1;let Ut=null;createAudioWorkletProcessor(pt,zt,gt,yt).then($n=>Ut=$n);const Ht=createNestedArrays(yt.numberOfInputs,yt.channelCount),en=createNestedArrays(yt.numberOfOutputs,bt),sn=gt.parameterDescriptors===void 0?[]:gt.parameterDescriptors.reduce(($n,{name:Nn})=>({...$n,[Nn]:new Float32Array(128)}),{});let Kt=!0;const rn=()=>{yt.numberOfOutputs>0&&jt.disconnect(Pt);for(let $n=0,Nn=0;$n{if(Ut!==null){const Tn=ht(zt);for(let cn=0;cn{copyFromChannel($n,sn,mn,vt+In,cn)});for(let mn=0;mn{if(Tn[wn].size>0)return nn.set(wn,Dt/128),An;const pn=nn.get(wn);return pn===void 0?[]:(An.every(kn=>kn.every(Dn=>Dn===0))&&(pn===1?nn.delete(wn):nn.set(wn,pn-1)),An)});Kt=ut(pt.currentTime+cn/pt.sampleRate,pt.sampleRate,()=>Ut.process(mn,en,sn));for(let An=0,wn=0;Anjt.connect(vn).connect(pt.destination),Qt=()=>{jt.disconnect(vn),vn.disconnect()},_n=()=>{if(Kt){Qt(),yt.numberOfOutputs>0&&jt.connect(Pt);for(let $n=0,Nn=0;$n{Kt&&(an(),rn()),hn=!1};return an(),dt(zt,_n,Pn)},createNativeBiquadFilterNode=(tt,et)=>{const nt=tt.createBiquadFilter();return assignNativeAudioNodeOptions(nt,et),assignNativeAudioNodeAudioParamValue(nt,et,"Q"),assignNativeAudioNodeAudioParamValue(nt,et,"detune"),assignNativeAudioNodeAudioParamValue(nt,et,"frequency"),assignNativeAudioNodeAudioParamValue(nt,et,"gain"),assignNativeAudioNodeOption(nt,et,"type"),nt},createNativeChannelMergerNodeFactory=(tt,et)=>(nt,rt)=>{const it=nt.createChannelMerger(rt.numberOfInputs);return tt!==null&&tt.name==="webkitAudioContext"&&et(nt,it),assignNativeAudioNodeOptions(it,rt),it},wrapChannelSplitterNode=tt=>{const et=tt.numberOfOutputs;Object.defineProperty(tt,"channelCount",{get:()=>et,set:nt=>{if(nt!==et)throw createInvalidStateError()}}),Object.defineProperty(tt,"channelCountMode",{get:()=>"explicit",set:nt=>{if(nt!=="explicit")throw createInvalidStateError()}}),Object.defineProperty(tt,"channelInterpretation",{get:()=>"discrete",set:nt=>{if(nt!=="discrete")throw createInvalidStateError()}})},createNativeChannelSplitterNode=(tt,et)=>{const nt=tt.createChannelSplitter(et.numberOfOutputs);return assignNativeAudioNodeOptions(nt,et),wrapChannelSplitterNode(nt),nt},createNativeConstantSourceNodeFactory=(tt,et,nt,rt,it)=>(ot,at)=>{if(ot.createConstantSource===void 0)return nt(ot,at);const st=ot.createConstantSource();return assignNativeAudioNodeOptions(st,at),assignNativeAudioNodeAudioParamValue(st,at,"offset"),et(rt,()=>rt(ot))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(st),et(it,()=>it(ot))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(st),tt(ot,st),st},interceptConnections=(tt,et)=>(tt.connect=et.connect.bind(et),tt.disconnect=et.disconnect.bind(et),tt),createNativeConstantSourceNodeFakerFactory=(tt,et,nt,rt)=>(it,{offset:ot,...at})=>{const st=it.createBuffer(1,2,44100),lt=et(it,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),ct=nt(it,{...at,gain:ot}),ut=st.getChannelData(0);ut[0]=1,ut[1]=1,lt.buffer=st,lt.loop=!0;const ht={get bufferSize(){},get channelCount(){return ct.channelCount},set channelCount(mt){ct.channelCount=mt},get channelCountMode(){return ct.channelCountMode},set channelCountMode(mt){ct.channelCountMode=mt},get channelInterpretation(){return ct.channelInterpretation},set channelInterpretation(mt){ct.channelInterpretation=mt},get context(){return ct.context},get inputs(){return[]},get numberOfInputs(){return lt.numberOfInputs},get numberOfOutputs(){return ct.numberOfOutputs},get offset(){return ct.gain},get onended(){return lt.onended},set onended(mt){lt.onended=mt},addEventListener(...mt){return lt.addEventListener(mt[0],mt[1],mt[2])},dispatchEvent(...mt){return lt.dispatchEvent(mt[0])},removeEventListener(...mt){return lt.removeEventListener(mt[0],mt[1],mt[2])},start(mt=0){lt.start.call(lt,mt)},stop(mt=0){lt.stop.call(lt,mt)}},dt=()=>lt.connect(ct),pt=()=>lt.disconnect(ct);return tt(it,lt),rt(interceptConnections(ht,ct),dt,pt)},createNativeConvolverNodeFactory=(tt,et)=>(nt,rt)=>{const it=nt.createConvolver();if(assignNativeAudioNodeOptions(it,rt),rt.disableNormalization===it.normalize&&(it.normalize=!rt.disableNormalization),assignNativeAudioNodeOption(it,rt,"buffer"),rt.channelCount>2||(et(it,"channelCount",ot=>()=>ot.call(it),ot=>at=>{if(at>2)throw tt();return ot.call(it,at)}),rt.channelCountMode==="max"))throw tt();return et(it,"channelCountMode",ot=>()=>ot.call(it),ot=>at=>{if(at==="max")throw tt();return ot.call(it,at)}),it},createNativeDelayNode=(tt,et)=>{const nt=tt.createDelay(et.maxDelayTime);return assignNativeAudioNodeOptions(nt,et),assignNativeAudioNodeAudioParamValue(nt,et,"delayTime"),nt},createNativeDynamicsCompressorNodeFactory=tt=>(et,nt)=>{const rt=et.createDynamicsCompressor();if(assignNativeAudioNodeOptions(rt,nt),nt.channelCount>2||nt.channelCountMode==="max")throw tt();return assignNativeAudioNodeAudioParamValue(rt,nt,"attack"),assignNativeAudioNodeAudioParamValue(rt,nt,"knee"),assignNativeAudioNodeAudioParamValue(rt,nt,"ratio"),assignNativeAudioNodeAudioParamValue(rt,nt,"release"),assignNativeAudioNodeAudioParamValue(rt,nt,"threshold"),rt},createNativeGainNode=(tt,et)=>{const nt=tt.createGain();return assignNativeAudioNodeOptions(nt,et),assignNativeAudioNodeAudioParamValue(nt,et,"gain"),nt},createNativeIIRFilterNodeFactory=tt=>(et,nt,rt)=>{if(et.createIIRFilter===void 0)return tt(et,nt,rt);const it=et.createIIRFilter(rt.feedforward,rt.feedback);return assignNativeAudioNodeOptions(it,rt),it};function divide$1(tt,et){const nt=et[0]*et[0]+et[1]*et[1];return[(tt[0]*et[0]+tt[1]*et[1])/nt,(tt[1]*et[0]-tt[0]*et[1])/nt]}function multiply(tt,et){return[tt[0]*et[0]-tt[1]*et[1],tt[0]*et[1]+tt[1]*et[0]]}function evaluatePolynomial(tt,et){let nt=[0,0];for(let rt=tt.length-1;rt>=0;rt-=1)nt=multiply(nt,et),nt[0]+=tt[rt];return nt}const createNativeIIRFilterNodeFakerFactory=(tt,et,nt,rt)=>(it,ot,{channelCount:at,channelCountMode:st,channelInterpretation:lt,feedback:ct,feedforward:ut})=>{const ht=computeBufferSize(ot,it.sampleRate),dt=ct instanceof Float64Array?ct:new Float64Array(ct),pt=ut instanceof Float64Array?ut:new Float64Array(ut),mt=dt.length,gt=pt.length,yt=Math.min(mt,gt);if(mt===0||mt>20)throw rt();if(dt[0]===0)throw et();if(gt===0||gt>20)throw rt();if(pt[0]===0)throw et();if(dt[0]!==1){for(let Et=0;Et{const $t=Et.inputBuffer,Dt=Et.outputBuffer,jt=$t.numberOfChannels;for(let Pt=0;Pttt.createMediaElementSource(et.mediaElement),createNativeMediaStreamAudioDestinationNode=(tt,et)=>{const nt=tt.createMediaStreamDestination();return assignNativeAudioNodeOptions(nt,et),nt.numberOfOutputs===1&&Object.defineProperty(nt,"numberOfOutputs",{get:()=>0}),nt},createNativeMediaStreamAudioSourceNode=(tt,{mediaStream:et})=>{const nt=et.getAudioTracks();nt.sort((ot,at)=>ot.idat.id?1:0);const rt=nt.slice(0,1),it=tt.createMediaStreamSource(new MediaStream(rt));return Object.defineProperty(it,"mediaStream",{value:et}),it},createNativeMediaStreamTrackAudioSourceNodeFactory=(tt,et)=>(nt,{mediaStreamTrack:rt})=>{if(typeof nt.createMediaStreamTrackSource=="function")return nt.createMediaStreamTrackSource(rt);const it=new MediaStream([rt]),ot=nt.createMediaStreamSource(it);if(rt.kind!=="audio")throw tt();if(et(nt))throw new TypeError;return ot},createNativeOfflineAudioContextConstructor=tt=>tt===null?null:tt.hasOwnProperty("OfflineAudioContext")?tt.OfflineAudioContext:tt.hasOwnProperty("webkitOfflineAudioContext")?tt.webkitOfflineAudioContext:null,createNativeOscillatorNodeFactory=(tt,et,nt,rt,it,ot)=>(at,st)=>{const lt=at.createOscillator();return assignNativeAudioNodeOptions(lt,st),assignNativeAudioNodeAudioParamValue(lt,st,"detune"),assignNativeAudioNodeAudioParamValue(lt,st,"frequency"),st.periodicWave!==void 0?lt.setPeriodicWave(st.periodicWave):assignNativeAudioNodeOption(lt,st,"type"),et(nt,()=>nt(at))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(lt),et(rt,()=>rt(at))||ot(lt,at),et(it,()=>it(at))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(lt),tt(at,lt),lt},createNativePannerNodeFactory=tt=>(et,nt)=>{const rt=et.createPanner();return rt.orientationX===void 0?tt(et,nt):(assignNativeAudioNodeOptions(rt,nt),assignNativeAudioNodeAudioParamValue(rt,nt,"orientationX"),assignNativeAudioNodeAudioParamValue(rt,nt,"orientationY"),assignNativeAudioNodeAudioParamValue(rt,nt,"orientationZ"),assignNativeAudioNodeAudioParamValue(rt,nt,"positionX"),assignNativeAudioNodeAudioParamValue(rt,nt,"positionY"),assignNativeAudioNodeAudioParamValue(rt,nt,"positionZ"),assignNativeAudioNodeOption(rt,nt,"coneInnerAngle"),assignNativeAudioNodeOption(rt,nt,"coneOuterAngle"),assignNativeAudioNodeOption(rt,nt,"coneOuterGain"),assignNativeAudioNodeOption(rt,nt,"distanceModel"),assignNativeAudioNodeOption(rt,nt,"maxDistance"),assignNativeAudioNodeOption(rt,nt,"panningModel"),assignNativeAudioNodeOption(rt,nt,"refDistance"),assignNativeAudioNodeOption(rt,nt,"rolloffFactor"),rt)},createNativePannerNodeFakerFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct)=>(ut,{coneInnerAngle:ht,coneOuterAngle:dt,coneOuterGain:pt,distanceModel:mt,maxDistance:gt,orientationX:yt,orientationY:bt,orientationZ:vt,panningModel:xt,positionX:kt,positionY:St,positionZ:Tt,refDistance:At,rolloffFactor:Et,...$t})=>{const Dt=ut.createPanner();if($t.channelCount>2||$t.channelCountMode==="max")throw at();assignNativeAudioNodeOptions(Dt,$t);const jt={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},Pt=nt(ut,{...jt,channelInterpretation:"speakers",numberOfInputs:6}),Ct=rt(ut,{...$t,gain:1}),wt=rt(ut,{...jt,gain:1}),It=rt(ut,{...jt,gain:0}),Ot=rt(ut,{...jt,gain:0}),Wt=rt(ut,{...jt,gain:0}),zt=rt(ut,{...jt,gain:0}),Ft=rt(ut,{...jt,gain:0}),Nt=it(ut,256,6,1),Ut=ot(ut,{...jt,curve:new Float32Array([1,1]),oversample:"none"});let Mt=[yt,bt,vt],Ht=[kt,St,Tt];const en=new Float32Array(1);Nt.onaudioprocess=({inputBuffer:nn})=>{const hn=[lt(nn,en,0),lt(nn,en,1),lt(nn,en,2)];hn.some((an,Qt)=>an!==Mt[Qt])&&(Dt.setOrientation(...hn),Mt=hn);const vn=[lt(nn,en,3),lt(nn,en,4),lt(nn,en,5)];vn.some((an,Qt)=>an!==Ht[Qt])&&(Dt.setPosition(...vn),Ht=vn)},Object.defineProperty(It.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ot.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Wt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(zt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ft.gain,"defaultValue",{get:()=>0});const sn={get bufferSize(){},get channelCount(){return Dt.channelCount},set channelCount(nn){if(nn>2)throw at();Ct.channelCount=nn,Dt.channelCount=nn},get channelCountMode(){return Dt.channelCountMode},set channelCountMode(nn){if(nn==="max")throw at();Ct.channelCountMode=nn,Dt.channelCountMode=nn},get channelInterpretation(){return Dt.channelInterpretation},set channelInterpretation(nn){Ct.channelInterpretation=nn,Dt.channelInterpretation=nn},get coneInnerAngle(){return Dt.coneInnerAngle},set coneInnerAngle(nn){Dt.coneInnerAngle=nn},get coneOuterAngle(){return Dt.coneOuterAngle},set coneOuterAngle(nn){Dt.coneOuterAngle=nn},get coneOuterGain(){return Dt.coneOuterGain},set coneOuterGain(nn){if(nn<0||nn>1)throw et();Dt.coneOuterGain=nn},get context(){return Dt.context},get distanceModel(){return Dt.distanceModel},set distanceModel(nn){Dt.distanceModel=nn},get inputs(){return[Ct]},get maxDistance(){return Dt.maxDistance},set maxDistance(nn){if(nn<0)throw new RangeError;Dt.maxDistance=nn},get numberOfInputs(){return Dt.numberOfInputs},get numberOfOutputs(){return Dt.numberOfOutputs},get orientationX(){return wt.gain},get orientationY(){return It.gain},get orientationZ(){return Ot.gain},get panningModel(){return Dt.panningModel},set panningModel(nn){Dt.panningModel=nn},get positionX(){return Wt.gain},get positionY(){return zt.gain},get positionZ(){return Ft.gain},get refDistance(){return Dt.refDistance},set refDistance(nn){if(nn<0)throw new RangeError;Dt.refDistance=nn},get rolloffFactor(){return Dt.rolloffFactor},set rolloffFactor(nn){if(nn<0)throw new RangeError;Dt.rolloffFactor=nn},addEventListener(...nn){return Ct.addEventListener(nn[0],nn[1],nn[2])},dispatchEvent(...nn){return Ct.dispatchEvent(nn[0])},removeEventListener(...nn){return Ct.removeEventListener(nn[0],nn[1],nn[2])}};ht!==sn.coneInnerAngle&&(sn.coneInnerAngle=ht),dt!==sn.coneOuterAngle&&(sn.coneOuterAngle=dt),pt!==sn.coneOuterGain&&(sn.coneOuterGain=pt),mt!==sn.distanceModel&&(sn.distanceModel=mt),gt!==sn.maxDistance&&(sn.maxDistance=gt),yt!==sn.orientationX.value&&(sn.orientationX.value=yt),bt!==sn.orientationY.value&&(sn.orientationY.value=bt),vt!==sn.orientationZ.value&&(sn.orientationZ.value=vt),xt!==sn.panningModel&&(sn.panningModel=xt),kt!==sn.positionX.value&&(sn.positionX.value=kt),St!==sn.positionY.value&&(sn.positionY.value=St),Tt!==sn.positionZ.value&&(sn.positionZ.value=Tt),At!==sn.refDistance&&(sn.refDistance=At),Et!==sn.rolloffFactor&&(sn.rolloffFactor=Et),(Mt[0]!==1||Mt[1]!==0||Mt[2]!==0)&&Dt.setOrientation(...Mt),(Ht[0]!==0||Ht[1]!==0||Ht[2]!==0)&&Dt.setPosition(...Ht);const Kt=()=>{Ct.connect(Dt),tt(Ct,Ut,0,0),Ut.connect(wt).connect(Pt,0,0),Ut.connect(It).connect(Pt,0,1),Ut.connect(Ot).connect(Pt,0,2),Ut.connect(Wt).connect(Pt,0,3),Ut.connect(zt).connect(Pt,0,4),Ut.connect(Ft).connect(Pt,0,5),Pt.connect(Nt).connect(ut.destination)},rn=()=>{Ct.disconnect(Dt),st(Ct,Ut,0,0),Ut.disconnect(wt),wt.disconnect(Pt),Ut.disconnect(It),It.disconnect(Pt),Ut.disconnect(Ot),Ot.disconnect(Pt),Ut.disconnect(Wt),Wt.disconnect(Pt),Ut.disconnect(zt),zt.disconnect(Pt),Ut.disconnect(Ft),Ft.disconnect(Pt),Pt.disconnect(Nt),Nt.disconnect(ut.destination)};return ct(interceptConnections(sn,Dt),Kt,rn)},createNativePeriodicWaveFactory=tt=>(et,{disableNormalization:nt,imag:rt,real:it})=>{const ot=rt instanceof Float32Array?rt:new Float32Array(rt),at=it instanceof Float32Array?it:new Float32Array(it),st=et.createPeriodicWave(at,ot,{disableNormalization:nt});if(Array.from(rt).length<2)throw tt();return st},createNativeScriptProcessorNode=(tt,et,nt,rt)=>tt.createScriptProcessor(et,nt,rt),createNativeStereoPannerNodeFactory=(tt,et)=>(nt,rt)=>{const it=rt.channelCountMode;if(it==="clamped-max")throw et();if(nt.createStereoPanner===void 0)return tt(nt,rt);const ot=nt.createStereoPanner();return assignNativeAudioNodeOptions(ot,rt),assignNativeAudioNodeAudioParamValue(ot,rt,"pan"),Object.defineProperty(ot,"channelCountMode",{get:()=>it,set:at=>{if(at!==it)throw et()}}),ot},createNativeStereoPannerNodeFakerFactory=(tt,et,nt,rt,it,ot)=>{const st=new Float32Array([1,1]),lt=Math.PI/2,ct={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},ut={...ct,oversample:"none"},ht=(mt,gt,yt,bt)=>{const vt=new Float32Array(16385),xt=new Float32Array(16385);for(let $t=0;$t<16385;$t+=1){const Dt=$t/16384*lt;vt[$t]=Math.cos(Dt),xt[$t]=Math.sin(Dt)}const kt=nt(mt,{...ct,gain:0}),St=rt(mt,{...ut,curve:vt}),Tt=rt(mt,{...ut,curve:st}),At=nt(mt,{...ct,gain:0}),Et=rt(mt,{...ut,curve:xt});return{connectGraph(){gt.connect(kt),gt.connect(Tt.inputs===void 0?Tt:Tt.inputs[0]),gt.connect(At),Tt.connect(yt),yt.connect(St.inputs===void 0?St:St.inputs[0]),yt.connect(Et.inputs===void 0?Et:Et.inputs[0]),St.connect(kt.gain),Et.connect(At.gain),kt.connect(bt,0,0),At.connect(bt,0,1)},disconnectGraph(){gt.disconnect(kt),gt.disconnect(Tt.inputs===void 0?Tt:Tt.inputs[0]),gt.disconnect(At),Tt.disconnect(yt),yt.disconnect(St.inputs===void 0?St:St.inputs[0]),yt.disconnect(Et.inputs===void 0?Et:Et.inputs[0]),St.disconnect(kt.gain),Et.disconnect(At.gain),kt.disconnect(bt,0,0),At.disconnect(bt,0,1)}}},dt=(mt,gt,yt,bt)=>{const vt=new Float32Array(16385),xt=new Float32Array(16385),kt=new Float32Array(16385),St=new Float32Array(16385),Tt=Math.floor(16385/2);for(let Wt=0;Wt<16385;Wt+=1)if(Wt>Tt){const zt=(Wt-Tt)/(16384-Tt)*lt;vt[Wt]=Math.cos(zt),xt[Wt]=Math.sin(zt),kt[Wt]=0,St[Wt]=1}else{const zt=Wt/(16384-Tt)*lt;vt[Wt]=1,xt[Wt]=0,kt[Wt]=Math.cos(zt),St[Wt]=Math.sin(zt)}const At=et(mt,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),Et=nt(mt,{...ct,gain:0}),$t=rt(mt,{...ut,curve:vt}),Dt=nt(mt,{...ct,gain:0}),jt=rt(mt,{...ut,curve:xt}),Pt=rt(mt,{...ut,curve:st}),Ct=nt(mt,{...ct,gain:0}),wt=rt(mt,{...ut,curve:kt}),It=nt(mt,{...ct,gain:0}),Ot=rt(mt,{...ut,curve:St});return{connectGraph(){gt.connect(At),gt.connect(Pt.inputs===void 0?Pt:Pt.inputs[0]),At.connect(Et,0),At.connect(Dt,0),At.connect(Ct,1),At.connect(It,1),Pt.connect(yt),yt.connect($t.inputs===void 0?$t:$t.inputs[0]),yt.connect(jt.inputs===void 0?jt:jt.inputs[0]),yt.connect(wt.inputs===void 0?wt:wt.inputs[0]),yt.connect(Ot.inputs===void 0?Ot:Ot.inputs[0]),$t.connect(Et.gain),jt.connect(Dt.gain),wt.connect(Ct.gain),Ot.connect(It.gain),Et.connect(bt,0,0),Ct.connect(bt,0,0),Dt.connect(bt,0,1),It.connect(bt,0,1)},disconnectGraph(){gt.disconnect(At),gt.disconnect(Pt.inputs===void 0?Pt:Pt.inputs[0]),At.disconnect(Et,0),At.disconnect(Dt,0),At.disconnect(Ct,1),At.disconnect(It,1),Pt.disconnect(yt),yt.disconnect($t.inputs===void 0?$t:$t.inputs[0]),yt.disconnect(jt.inputs===void 0?jt:jt.inputs[0]),yt.disconnect(wt.inputs===void 0?wt:wt.inputs[0]),yt.disconnect(Ot.inputs===void 0?Ot:Ot.inputs[0]),$t.disconnect(Et.gain),jt.disconnect(Dt.gain),wt.disconnect(Ct.gain),Ot.disconnect(It.gain),Et.disconnect(bt,0,0),Ct.disconnect(bt,0,0),Dt.disconnect(bt,0,1),It.disconnect(bt,0,1)}}},pt=(mt,gt,yt,bt,vt)=>{if(gt===1)return ht(mt,yt,bt,vt);if(gt===2)return dt(mt,yt,bt,vt);throw it()};return(mt,{channelCount:gt,channelCountMode:yt,pan:bt,...vt})=>{if(yt==="max")throw it();const xt=tt(mt,{...vt,channelCount:1,channelCountMode:yt,numberOfInputs:2}),kt=nt(mt,{...vt,channelCount:gt,channelCountMode:yt,gain:1}),St=nt(mt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:bt});let{connectGraph:Tt,disconnectGraph:At}=pt(mt,gt,kt,St,xt);Object.defineProperty(St.gain,"defaultValue",{get:()=>0}),Object.defineProperty(St.gain,"maxValue",{get:()=>1}),Object.defineProperty(St.gain,"minValue",{get:()=>-1});const Et={get bufferSize(){},get channelCount(){return kt.channelCount},set channelCount(Pt){kt.channelCount!==Pt&&($t&&At(),{connectGraph:Tt,disconnectGraph:At}=pt(mt,Pt,kt,St,xt),$t&&Tt()),kt.channelCount=Pt},get channelCountMode(){return kt.channelCountMode},set channelCountMode(Pt){if(Pt==="clamped-max"||Pt==="max")throw it();kt.channelCountMode=Pt},get channelInterpretation(){return kt.channelInterpretation},set channelInterpretation(Pt){kt.channelInterpretation=Pt},get context(){return kt.context},get inputs(){return[kt]},get numberOfInputs(){return kt.numberOfInputs},get numberOfOutputs(){return kt.numberOfOutputs},get pan(){return St.gain},addEventListener(...Pt){return kt.addEventListener(Pt[0],Pt[1],Pt[2])},dispatchEvent(...Pt){return kt.dispatchEvent(Pt[0])},removeEventListener(...Pt){return kt.removeEventListener(Pt[0],Pt[1],Pt[2])}};let $t=!1;const Dt=()=>{Tt(),$t=!0},jt=()=>{At(),$t=!1};return ot(interceptConnections(Et,xt),Dt,jt)}},createNativeWaveShaperNodeFactory=(tt,et,nt,rt,it,ot,at)=>(st,lt)=>{const ct=st.createWaveShaper();if(ot!==null&&ot.name==="webkitAudioContext"&&st.createGain().gain.automationRate===void 0)return nt(st,lt);assignNativeAudioNodeOptions(ct,lt);const ut=lt.curve===null||lt.curve instanceof Float32Array?lt.curve:new Float32Array(lt.curve);if(ut!==null&&ut.length<2)throw et();assignNativeAudioNodeOption(ct,{curve:ut},"curve"),assignNativeAudioNodeOption(ct,lt,"oversample");let ht=null,dt=!1;return at(ct,"curve",gt=>()=>gt.call(ct),gt=>yt=>(gt.call(ct,yt),dt&&(rt(yt)&&ht===null?ht=tt(st,ct):!rt(yt)&&ht!==null&&(ht(),ht=null)),yt)),it(ct,()=>{dt=!0,rt(ct.curve)&&(ht=tt(st,ct))},()=>{dt=!1,ht!==null&&(ht(),ht=null)})},createNativeWaveShaperNodeFakerFactory=(tt,et,nt,rt,it)=>(ot,{curve:at,oversample:st,...lt})=>{const ct=ot.createWaveShaper(),ut=ot.createWaveShaper();assignNativeAudioNodeOptions(ct,lt),assignNativeAudioNodeOptions(ut,lt);const ht=nt(ot,{...lt,gain:1}),dt=nt(ot,{...lt,gain:-1}),pt=nt(ot,{...lt,gain:1}),mt=nt(ot,{...lt,gain:-1});let gt=null,yt=!1,bt=null;const vt={get bufferSize(){},get channelCount(){return ct.channelCount},set channelCount(St){ht.channelCount=St,dt.channelCount=St,ct.channelCount=St,pt.channelCount=St,ut.channelCount=St,mt.channelCount=St},get channelCountMode(){return ct.channelCountMode},set channelCountMode(St){ht.channelCountMode=St,dt.channelCountMode=St,ct.channelCountMode=St,pt.channelCountMode=St,ut.channelCountMode=St,mt.channelCountMode=St},get channelInterpretation(){return ct.channelInterpretation},set channelInterpretation(St){ht.channelInterpretation=St,dt.channelInterpretation=St,ct.channelInterpretation=St,pt.channelInterpretation=St,ut.channelInterpretation=St,mt.channelInterpretation=St},get context(){return ct.context},get curve(){return bt},set curve(St){if(St!==null&&St.length<2)throw et();if(St===null)ct.curve=St,ut.curve=St;else{const Tt=St.length,At=new Float32Array(Tt+2-Tt%2),Et=new Float32Array(Tt+2-Tt%2);At[0]=St[0],Et[0]=-St[Tt-1];const $t=Math.ceil((Tt+1)/2),Dt=(Tt+1)/2-1;for(let jt=1;jt<$t;jt+=1){const Pt=jt/$t*Dt,Ct=Math.floor(Pt),wt=Math.ceil(Pt);At[jt]=Ct===wt?St[Ct]:(1-(Pt-Ct))*St[Ct]+(1-(wt-Pt))*St[wt],Et[jt]=Ct===wt?-St[Tt-1-Ct]:-((1-(Pt-Ct))*St[Tt-1-Ct])-(1-(wt-Pt))*St[Tt-1-wt]}At[$t]=Tt%2===1?St[$t-1]:(St[$t-2]+St[$t-1])/2,ct.curve=At,ut.curve=Et}bt=St,yt&&(rt(bt)&>===null?gt=tt(ot,ht):gt!==null&&(gt(),gt=null))},get inputs(){return[ht]},get numberOfInputs(){return ct.numberOfInputs},get numberOfOutputs(){return ct.numberOfOutputs},get oversample(){return ct.oversample},set oversample(St){ct.oversample=St,ut.oversample=St},addEventListener(...St){return ht.addEventListener(St[0],St[1],St[2])},dispatchEvent(...St){return ht.dispatchEvent(St[0])},removeEventListener(...St){return ht.removeEventListener(St[0],St[1],St[2])}};at!==null&&(vt.curve=at instanceof Float32Array?at:new Float32Array(at)),st!==vt.oversample&&(vt.oversample=st);const xt=()=>{ht.connect(ct).connect(pt),ht.connect(dt).connect(ut).connect(mt).connect(pt),yt=!0,rt(bt)&&(gt=tt(ot,ht))},kt=()=>{ht.disconnect(ct),ct.disconnect(pt),ht.disconnect(dt),dt.disconnect(ut),ut.disconnect(mt),mt.disconnect(pt),yt=!1,gt!==null&&(gt(),gt=null)};return it(interceptConnections(vt,pt),xt,kt)},createNotSupportedError=()=>new DOMException("","NotSupportedError"),DEFAULT_OPTIONS$5={numberOfChannels:1},createOfflineAudioContextConstructor=(tt,et,nt,rt,it)=>class extends tt{constructor(at,st,lt){let ct;if(typeof at=="number"&&st!==void 0&<!==void 0)ct={length:st,numberOfChannels:at,sampleRate:lt};else if(typeof at=="object")ct=at;else throw new Error("The given parameters are not valid.");const{length:ut,numberOfChannels:ht,sampleRate:dt}={...DEFAULT_OPTIONS$5,...ct},pt=rt(ht,ut,dt);et(testPromiseSupport,()=>testPromiseSupport(pt))||pt.addEventListener("statechange",(()=>{let mt=0;const gt=yt=>{this._state==="running"&&(mt>0?(pt.removeEventListener("statechange",gt),yt.stopImmediatePropagation(),this._waitForThePromiseToSettle(yt)):mt+=1)};return gt})()),super(pt,ht),this._length=ut,this._nativeOfflineAudioContext=pt,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(nt()):(this._state="running",it(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,deactivateAudioGraph(this)}))}_waitForThePromiseToSettle(at){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(at):setTimeout(()=>this._waitForThePromiseToSettle(at))}},DEFAULT_OPTIONS$4={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},createOscillatorNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS$4,...ct},dt=nt(ut,ht),pt=ot(ut),mt=pt?rt():null,gt=lt.sampleRate/2;super(lt,!1,dt,mt),this._detune=et(this,pt,dt.detune,153600,-153600),this._frequency=et(this,pt,dt.frequency,gt,-gt),this._nativeOscillatorNode=dt,this._onended=null,this._oscillatorNodeRenderer=mt,this._oscillatorNodeRenderer!==null&&ht.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=ht.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(lt){const ct=typeof lt=="function"?at(this,lt):null;this._nativeOscillatorNode.onended=ct;const ut=this._nativeOscillatorNode.onended;this._onended=ut!==null&&ut===ct?lt:ut}get type(){return this._nativeOscillatorNode.type}set type(lt){this._nativeOscillatorNode.type=lt,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(lt){this._nativeOscillatorNode.setPeriodicWave(lt),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=lt)}start(lt=0){if(this._nativeOscillatorNode.start(lt),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=lt),this.context.state!=="closed"){setInternalStateToActive(this);const ct=()=>{this._nativeOscillatorNode.removeEventListener("ended",ct),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeOscillatorNode.addEventListener("ended",ct)}}stop(lt=0){this._nativeOscillatorNode.stop(lt),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=lt)}},createOscillatorNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap;let at=null,st=null,lt=null;const ct=async(ut,ht)=>{let dt=nt(ut);const pt=isOwnedByContext(dt,ht);if(!pt){const mt={channelCount:dt.channelCount,channelCountMode:dt.channelCountMode,channelInterpretation:dt.channelInterpretation,detune:dt.detune.value,frequency:dt.frequency.value,periodicWave:at===null?void 0:at,type:dt.type};dt=et(ht,mt),st!==null&&dt.start(st),lt!==null&&dt.stop(lt)}return ot.set(ht,dt),pt?(await tt(ht,ut.detune,dt.detune),await tt(ht,ut.frequency,dt.frequency)):(await rt(ht,ut.detune,dt.detune),await rt(ht,ut.frequency,dt.frequency)),await it(ut,ht,dt),dt};return{set periodicWave(ut){at=ut},set start(ut){st=ut},set stop(ut){lt=ut},render(ut,ht){const dt=ot.get(ht);return dt!==void 0?Promise.resolve(dt):ct(ut,ht)}}},DEFAULT_OPTIONS$3={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},createPannerNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS$3,...ct},dt=nt(ut,ht),pt=ot(ut),mt=pt?rt():null;super(lt,!1,dt,mt),this._nativePannerNode=dt,this._orientationX=et(this,pt,dt.orientationX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationY=et(this,pt,dt.orientationY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationZ=et(this,pt,dt.orientationZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionX=et(this,pt,dt.positionX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionY=et(this,pt,dt.positionY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionZ=et(this,pt,dt.positionZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),at(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(lt){this._nativePannerNode.coneInnerAngle=lt}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(lt){this._nativePannerNode.coneOuterAngle=lt}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(lt){this._nativePannerNode.coneOuterGain=lt}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(lt){this._nativePannerNode.distanceModel=lt}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(lt){this._nativePannerNode.maxDistance=lt}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(lt){this._nativePannerNode.panningModel=lt}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(lt){this._nativePannerNode.refDistance=lt}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(lt){this._nativePannerNode.rolloffFactor=lt}},createPannerNodeRendererFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct)=>()=>{const ut=new WeakMap;let ht=null;const dt=async(pt,mt)=>{let gt=null,yt=ot(pt);const bt={channelCount:yt.channelCount,channelCountMode:yt.channelCountMode,channelInterpretation:yt.channelInterpretation},vt={...bt,coneInnerAngle:yt.coneInnerAngle,coneOuterAngle:yt.coneOuterAngle,coneOuterGain:yt.coneOuterGain,distanceModel:yt.distanceModel,maxDistance:yt.maxDistance,panningModel:yt.panningModel,refDistance:yt.refDistance,rolloffFactor:yt.rolloffFactor},xt=isOwnedByContext(yt,mt);if("bufferSize"in yt)gt=rt(mt,{...bt,gain:1});else if(!xt){const kt={...vt,orientationX:yt.orientationX.value,orientationY:yt.orientationY.value,orientationZ:yt.orientationZ.value,positionX:yt.positionX.value,positionY:yt.positionY.value,positionZ:yt.positionZ.value};yt=it(mt,kt)}if(ut.set(mt,gt===null?yt:gt),gt!==null){if(ht===null){if(at===null)throw new Error("Missing the native OfflineAudioContext constructor.");const jt=new at(6,pt.context.length,mt.sampleRate),Pt=et(jt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});Pt.connect(jt.destination),ht=(async()=>{const Ct=await Promise.all([pt.orientationX,pt.orientationY,pt.orientationZ,pt.positionX,pt.positionY,pt.positionZ].map(async(wt,It)=>{const Ot=nt(jt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:It===0?1:0});return await st(jt,wt,Ot.offset),Ot}));for(let wt=0;wt<6;wt+=1)Ct[wt].connect(Pt,0,wt),Ct[wt].start(0);return ct(jt)})()}const kt=await ht,St=rt(mt,{...bt,gain:1});await lt(pt,mt,St);const Tt=[];for(let jt=0;jtwt!==At[It])||Ct.some((wt,It)=>wt!==Et[It])){At=Pt,Et=Ct;const wt=jt/mt.sampleRate;$t.gain.setValueAtTime(0,wt),$t=rt(mt,{...bt,gain:0}),Dt=it(mt,{...vt,orientationX:At[0],orientationY:At[1],orientationZ:At[2],positionX:Et[0],positionY:Et[1],positionZ:Et[2]}),$t.gain.setValueAtTime(1,wt),St.connect($t).connect(Dt.inputs[0]),Dt.connect(gt)}}return gt}return xt?(await tt(mt,pt.orientationX,yt.orientationX),await tt(mt,pt.orientationY,yt.orientationY),await tt(mt,pt.orientationZ,yt.orientationZ),await tt(mt,pt.positionX,yt.positionX),await tt(mt,pt.positionY,yt.positionY),await tt(mt,pt.positionZ,yt.positionZ)):(await st(mt,pt.orientationX,yt.orientationX),await st(mt,pt.orientationY,yt.orientationY),await st(mt,pt.orientationZ,yt.orientationZ),await st(mt,pt.positionX,yt.positionX),await st(mt,pt.positionY,yt.positionY),await st(mt,pt.positionZ,yt.positionZ)),isNativeAudioNodeFaker(yt)?await lt(pt,mt,yt.inputs[0]):await lt(pt,mt,yt),yt};return{render(pt,mt){const gt=ut.get(mt);return gt!==void 0?Promise.resolve(gt):dt(pt,mt)}}},DEFAULT_OPTIONS$2={disableNormalization:!1},createPeriodicWaveConstructor=(tt,et,nt,rt)=>class vw{constructor(ot,at){const st=et(ot),lt=rt({...DEFAULT_OPTIONS$2,...at}),ct=tt(st,lt);return nt.add(ct),ct}static[Symbol.hasInstance](ot){return ot!==null&&typeof ot=="object"&&Object.getPrototypeOf(ot)===vw.prototype||nt.has(ot)}},createRenderAutomation=(tt,et)=>(nt,rt,it)=>(tt(rt).replay(it),et(rt,nt,it)),createRenderInputsOfAudioNode=(tt,et,nt)=>async(rt,it,ot)=>{const at=tt(rt);await Promise.all(at.activeInputs.map((st,lt)=>Array.from(st).map(async([ct,ut])=>{const dt=await et(ct).render(ct,it),pt=rt.context.destination;!nt(ct)&&(rt!==pt||!nt(rt))&&dt.connect(ot,ut,lt)})).reduce((st,lt)=>[...st,...lt],[]))},createRenderInputsOfAudioParam=(tt,et,nt)=>async(rt,it,ot)=>{const at=et(rt);await Promise.all(Array.from(at.activeInputs).map(async([st,lt])=>{const ut=await tt(st).render(st,it);nt(st)||ut.connect(ot,lt)}))},createRenderNativeOfflineAudioContext=(tt,et,nt,rt)=>it=>tt(testPromiseSupport,()=>testPromiseSupport(it))?Promise.resolve(tt(rt,rt)).then(ot=>{if(!ot){const at=nt(it,512,0,1);it.oncomplete=()=>{at.onaudioprocess=null,at.disconnect()},at.onaudioprocess=()=>it.currentTime,at.connect(it.destination)}return it.startRendering()}):new Promise(ot=>{const at=et(it,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});it.oncomplete=st=>{at.disconnect(),ot(st.renderedBuffer)},at.connect(it.destination),it.startRendering()}),createSetActiveAudioWorkletNodeInputs=tt=>(et,nt)=>{tt.set(et,nt)},createSetAudioNodeTailTime=tt=>(et,nt)=>tt.set(et,nt),createStartRendering=(tt,et,nt,rt,it,ot,at,st)=>(lt,ct)=>nt(lt).render(lt,ct).then(()=>Promise.all(Array.from(rt(ct)).map(ut=>nt(ut).render(ut,ct)))).then(()=>it(ct)).then(ut=>(typeof ut.copyFromChannel!="function"?(at(ut),wrapAudioBufferGetChannelDataMethod(ut)):et(ot,()=>ot(ut))||st(ut),tt.add(ut),ut)),DEFAULT_OPTIONS$1={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},createStereoPannerNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=it(st),ut={...DEFAULT_OPTIONS$1,...lt},ht=nt(ct,ut),dt=ot(ct),pt=dt?rt():null;super(st,!1,ht,pt),this._pan=et(this,dt,ht.pan)}get pan(){return this._pan}},createStereoPannerNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap,at=async(st,lt)=>{let ct=nt(st);const ut=isOwnedByContext(ct,lt);if(!ut){const ht={channelCount:ct.channelCount,channelCountMode:ct.channelCountMode,channelInterpretation:ct.channelInterpretation,pan:ct.pan.value};ct=et(lt,ht)}return ot.set(lt,ct),ut?await tt(lt,st.pan,ct.pan):await rt(lt,st.pan,ct.pan),isNativeAudioNodeFaker(ct)?await it(st,lt,ct.inputs[0]):await it(st,lt,ct),ct};return{render(st,lt){const ct=ot.get(lt);return ct!==void 0?Promise.resolve(ct):at(st,lt)}}},createTestAudioBufferConstructorSupport=tt=>()=>{if(tt===null)return!1;try{new tt({length:1,sampleRate:44100})}catch{return!1}return!0},createTestAudioWorkletProcessorPostMessageSupport=(tt,et)=>async()=>{if(tt===null)return!0;if(et===null)return!1;const nt=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),rt=new et(1,128,44100),it=URL.createObjectURL(nt);let ot=!1,at=!1;try{await rt.audioWorklet.addModule(it);const st=new tt(rt,"a",{numberOfOutputs:0}),lt=rt.createOscillator();st.port.onmessage=()=>ot=!0,st.onprocessorerror=()=>at=!0,lt.connect(st),lt.start(0),await rt.startRendering(),await new Promise(ct=>setTimeout(ct))}catch{}finally{URL.revokeObjectURL(it)}return ot&&!at},createTestOfflineAudioContextCurrentTimeSupport=(tt,et)=>()=>{if(et===null)return Promise.resolve(!1);const nt=new et(1,1,44100),rt=tt(nt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(it=>{nt.oncomplete=()=>{rt.disconnect(),it(nt.currentTime!==0)},nt.startRendering()})},createUnknownError=()=>new DOMException("","UnknownError"),DEFAULT_OPTIONS={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},createWaveShaperNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS,...ct},dt=nt(ut,ht),mt=ot(ut)?rt():null;super(lt,!0,dt,mt),this._isCurveNullified=!1,this._nativeWaveShaperNode=dt,at(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(lt){if(lt===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(lt.length<2)throw et();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=lt}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(lt){this._nativeWaveShaperNode.oversample=lt}},createWaveShaperNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,curve:st.curve,oversample:st.oversample};st=tt(at,ct)}return rt.set(at,st),isNativeAudioNodeFaker(st)?await nt(ot,at,st.inputs[0]):await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},createWindow=()=>typeof window>"u"?null:window,createWrapAudioBufferCopyChannelMethods=(tt,et)=>nt=>{nt.copyFromChannel=(rt,it,ot=0)=>{const at=tt(ot),st=tt(it);if(st>=nt.numberOfChannels)throw et();const lt=nt.length,ct=nt.getChannelData(st),ut=rt.length;for(let ht=at<0?-at:0;ht+at{const at=tt(ot),st=tt(it);if(st>=nt.numberOfChannels)throw et();const lt=nt.length,ct=nt.getChannelData(st),ut=rt.length;for(let ht=at<0?-at:0;ht+atet=>{et.copyFromChannel=(nt=>(rt,it,ot=0)=>{const at=tt(ot),st=tt(it);if(at(rt,it,ot=0)=>{const at=tt(ot),st=tt(it);if(at(et,nt)=>{const rt=nt.createBuffer(1,1,44100);et.buffer===null&&(et.buffer=rt),tt(et,"buffer",it=>()=>{const ot=it.call(et);return ot===rt?null:ot},it=>ot=>it.call(et,ot===null?rt:ot))},createWrapChannelMergerNode=(tt,et)=>(nt,rt)=>{rt.channelCount=1,rt.channelCountMode="explicit",Object.defineProperty(rt,"channelCount",{get:()=>1,set:()=>{throw tt()}}),Object.defineProperty(rt,"channelCountMode",{get:()=>"explicit",set:()=>{throw tt()}});const it=nt.createBufferSource();et(rt,()=>{const st=rt.numberOfInputs;for(let lt=0;ltit.disconnect(rt))},getFirstSample=(tt,et,nt)=>tt.copyFromChannel===void 0?tt.getChannelData(nt)[0]:(tt.copyFromChannel(et,nt),et[0]),isDCCurve=tt=>{if(tt===null)return!1;const et=tt.length;return et%2!==0?tt[Math.floor(et/2)]!==0:tt[et/2-1]+tt[et/2]!==0},overwriteAccessors=(tt,et,nt,rt)=>{let it=tt;for(;!it.hasOwnProperty(et);)it=Object.getPrototypeOf(it);const{get:ot,set:at}=Object.getOwnPropertyDescriptor(it,et);Object.defineProperty(tt,et,{get:nt(ot),set:rt(at)})},sanitizeAudioWorkletNodeOptions=tt=>({...tt,outputChannelCount:tt.outputChannelCount!==void 0?tt.outputChannelCount:tt.numberOfInputs===1&&tt.numberOfOutputs===1?[tt.channelCount]:Array.from({length:tt.numberOfOutputs},()=>1)}),sanitizeChannelSplitterOptions=tt=>({...tt,channelCount:tt.numberOfOutputs}),sanitizePeriodicWaveOptions=tt=>{const{imag:et,real:nt}=tt;return et===void 0?nt===void 0?{...tt,imag:[0,0],real:[0,0]}:{...tt,imag:Array.from(nt,()=>0),real:nt}:nt===void 0?{...tt,imag:et,real:Array.from(et,()=>0)}:{...tt,imag:et,real:nt}},setValueAtTimeUntilPossible=(tt,et,nt)=>{try{tt.setValueAtTime(et,nt)}catch(rt){if(rt.code!==9)throw rt;setValueAtTimeUntilPossible(tt,et,nt+1e-7)}},testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport=tt=>{const et=tt.createBufferSource();et.start();try{et.start()}catch{return!0}return!1},testAudioBufferSourceNodeStartMethodOffsetClampingSupport=tt=>{const et=tt.createBufferSource(),nt=tt.createBuffer(1,1,44100);et.buffer=nt;try{et.start(0,1)}catch{return!1}return!0},testAudioBufferSourceNodeStopMethodNullifiedBufferSupport=tt=>{const et=tt.createBufferSource();et.start();try{et.stop()}catch{return!1}return!0},testAudioScheduledSourceNodeStartMethodNegativeParametersSupport=tt=>{const et=tt.createOscillator();try{et.start(-1)}catch(nt){return nt instanceof RangeError}return!1},testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport=tt=>{const et=tt.createBuffer(1,1,44100),nt=tt.createBufferSource();nt.buffer=et,nt.start(),nt.stop();try{return nt.stop(),!0}catch{return!1}},testAudioScheduledSourceNodeStopMethodNegativeParametersSupport=tt=>{const et=tt.createOscillator();try{et.stop(-1)}catch(nt){return nt instanceof RangeError}return!1},testAudioWorkletNodeOptionsClonability=tt=>{const{port1:et,port2:nt}=new MessageChannel;try{et.postMessage(tt)}finally{et.close(),nt.close()}},wrapAudioBufferSourceNodeStartMethodOffsetClamping=tt=>{tt.start=(et=>(nt=0,rt=0,it)=>{const ot=tt.buffer,at=ot===null?rt:Math.min(ot.duration,rt);ot!==null&&at>ot.duration-.5/tt.context.sampleRate?et.call(tt,nt,0,0):et.call(tt,nt,at,it)})(tt.start)},wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls=(tt,et)=>{const nt=et.createGain();tt.connect(nt);const rt=(it=>()=>{it.call(tt,nt),tt.removeEventListener("ended",rt)})(tt.disconnect);tt.addEventListener("ended",rt),interceptConnections(tt,nt),tt.stop=(it=>{let ot=!1;return(at=0)=>{if(ot)try{it.call(tt,at)}catch{nt.gain.setValueAtTime(0,at)}else it.call(tt,at),ot=!0}})(tt.stop)},wrapEventListener=(tt,et)=>nt=>{const rt={value:tt};return Object.defineProperties(nt,{currentTarget:rt,target:rt}),typeof et=="function"?et.call(tt,nt):et.handleEvent.call(tt,nt)},addActiveInputConnectionToAudioNode=createAddActiveInputConnectionToAudioNode(insertElementInSet),addPassiveInputConnectionToAudioNode=createAddPassiveInputConnectionToAudioNode(insertElementInSet),deleteActiveInputConnectionToAudioNode=createDeleteActiveInputConnectionToAudioNode(pickElementFromSet),audioNodeTailTimeStore=new WeakMap,getAudioNodeTailTime=createGetAudioNodeTailTime(audioNodeTailTimeStore),cacheTestResult=createCacheTestResult(new Map,new WeakMap),window$1=createWindow(),createNativeAnalyserNode=createNativeAnalyserNodeFactory(cacheTestResult,createIndexSizeError),getAudioNodeRenderer=createGetAudioNodeRenderer(getAudioNodeConnections),renderInputsOfAudioNode=createRenderInputsOfAudioNode(getAudioNodeConnections,getAudioNodeRenderer,isPartOfACycle),createAnalyserNodeRenderer=createAnalyserNodeRendererFactory(createNativeAnalyserNode,getNativeAudioNode,renderInputsOfAudioNode),getNativeContext=createGetNativeContext(CONTEXT_STORE),nativeOfflineAudioContextConstructor=createNativeOfflineAudioContextConstructor(window$1),isNativeOfflineAudioContext=createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor),audioParamAudioNodeStore=new WeakMap,eventTargetConstructor=createEventTargetConstructor(wrapEventListener),nativeAudioContextConstructor=createNativeAudioContextConstructor(window$1),isNativeAudioContext=createIsNativeAudioContext(nativeAudioContextConstructor),isNativeAudioNode=createIsNativeAudioNode(window$1),isNativeAudioParam=createIsNativeAudioParam(window$1),nativeAudioWorkletNodeConstructor=createNativeAudioWorkletNodeConstructor(window$1),audioNodeConstructor=createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE),createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode,addPassiveInputConnectionToAudioNode,connectNativeAudioNodeToNativeAudioNode,deleteActiveInputConnectionToAudioNode,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getAudioNodeTailTime,getEventListenersOfAudioNode,getNativeAudioNode,insertElementInSet,isActiveAudioNode,isPartOfACycle,isPassiveAudioNode),cacheTestResult,createIncrementCycleCounterFactory(CYCLE_COUNTERS,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,isActiveAudioNode),createIndexSizeError,createInvalidAccessError,createNotSupportedError,createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode,CYCLE_COUNTERS,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,getNativeContext,isActiveAudioNode,isNativeOfflineAudioContext),createDetectCycles(audioParamAudioNodeStore,getAudioNodeConnections,getValueForKey),eventTargetConstructor,getNativeContext,isNativeAudioContext,isNativeAudioNode,isNativeAudioParam,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor),analyserNodeConstructor=createAnalyserNodeConstructor(audioNodeConstructor,createAnalyserNodeRenderer,createIndexSizeError,createNativeAnalyserNode,getNativeContext,isNativeOfflineAudioContext),audioBufferStore=new WeakSet,nativeAudioBufferConstructor=createNativeAudioBufferConstructor(window$1),convertNumberToUnsignedLong=createConvertNumberToUnsignedLong(new Uint32Array(1)),wrapAudioBufferCopyChannelMethods=createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong,createIndexSizeError),wrapAudioBufferCopyChannelMethodsOutOfBounds=createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong),audioBufferConstructor=createAudioBufferConstructor(audioBufferStore,cacheTestResult,createNotSupportedError,nativeAudioBufferConstructor,nativeOfflineAudioContextConstructor,createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor),wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),addSilentConnection=createAddSilentConnection(createNativeGainNode),renderInputsOfAudioParam=createRenderInputsOfAudioParam(getAudioNodeRenderer,getAudioParamConnections,isPartOfACycle),connectAudioParam=createConnectAudioParam(renderInputsOfAudioParam),createNativeAudioBufferSourceNode=createNativeAudioBufferSourceNodeFactory(addSilentConnection,cacheTestResult,testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,testAudioBufferSourceNodeStartMethodOffsetClampingSupport,testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioBufferSourceNodeStartMethodOffsetClamping,createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors),wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),renderAutomation=createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections),renderInputsOfAudioParam),createAudioBufferSourceNodeRenderer=createAudioBufferSourceNodeRendererFactory(connectAudioParam,createNativeAudioBufferSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),createAudioParam=createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE),audioParamAudioNodeStore,AUDIO_PARAM_STORE,createAudioParamRenderer,createCancelAndHoldAutomationEvent,createCancelScheduledValuesAutomationEvent,createExponentialRampToValueAutomationEvent,createLinearRampToValueAutomationEvent,createSetTargetAutomationEvent,createSetValueAutomationEvent,createSetValueCurveAutomationEvent,nativeAudioContextConstructor,setValueAtTimeUntilPossible),audioBufferSourceNodeConstructor=createAudioBufferSourceNodeConstructor(audioNodeConstructor,createAudioBufferSourceNodeRenderer,createAudioParam,createInvalidStateError,createNativeAudioBufferSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),audioDestinationNodeConstructor=createAudioDestinationNodeConstructor(audioNodeConstructor,createAudioDestinationNodeRenderer,createIndexSizeError,createInvalidStateError,createNativeAudioDestinationNodeFactory(createNativeGainNode,overwriteAccessors),getNativeContext,isNativeOfflineAudioContext,renderInputsOfAudioNode),createBiquadFilterNodeRenderer=createBiquadFilterNodeRendererFactory(connectAudioParam,createNativeBiquadFilterNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),setAudioNodeTailTime=createSetAudioNodeTailTime(audioNodeTailTimeStore),biquadFilterNodeConstructor=createBiquadFilterNodeConstructor(audioNodeConstructor,createAudioParam,createBiquadFilterNodeRenderer,createInvalidAccessError,createNativeBiquadFilterNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),monitorConnections=createMonitorConnections(insertElementInSet,isNativeAudioNode),wrapChannelMergerNode=createWrapChannelMergerNode(createInvalidStateError,monitorConnections),createNativeChannelMergerNode=createNativeChannelMergerNodeFactory(nativeAudioContextConstructor,wrapChannelMergerNode),createChannelMergerNodeRenderer=createChannelMergerNodeRendererFactory(createNativeChannelMergerNode,getNativeAudioNode,renderInputsOfAudioNode),channelMergerNodeConstructor=createChannelMergerNodeConstructor(audioNodeConstructor,createChannelMergerNodeRenderer,createNativeChannelMergerNode,getNativeContext,isNativeOfflineAudioContext),createChannelSplitterNodeRenderer=createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode,getNativeAudioNode,renderInputsOfAudioNode),channelSplitterNodeConstructor=createChannelSplitterNodeConstructor(audioNodeConstructor,createChannelSplitterNodeRenderer,createNativeChannelSplitterNode,getNativeContext,isNativeOfflineAudioContext,sanitizeChannelSplitterOptions),createNativeConstantSourceNodeFaker=createNativeConstantSourceNodeFakerFactory(addSilentConnection,createNativeAudioBufferSourceNode,createNativeGainNode,monitorConnections),createNativeConstantSourceNode=createNativeConstantSourceNodeFactory(addSilentConnection,cacheTestResult,createNativeConstantSourceNodeFaker,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport),createConstantSourceNodeRenderer=createConstantSourceNodeRendererFactory(connectAudioParam,createNativeConstantSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),constantSourceNodeConstructor=createConstantSourceNodeConstructor(audioNodeConstructor,createAudioParam,createConstantSourceNodeRenderer,createNativeConstantSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createNativeConvolverNode=createNativeConvolverNodeFactory(createNotSupportedError,overwriteAccessors),createConvolverNodeRenderer=createConvolverNodeRendererFactory(createNativeConvolverNode,getNativeAudioNode,renderInputsOfAudioNode),convolverNodeConstructor=createConvolverNodeConstructor(audioNodeConstructor,createConvolverNodeRenderer,createNativeConvolverNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createDelayNodeRenderer=createDelayNodeRendererFactory(connectAudioParam,createNativeDelayNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),delayNodeConstructor=createDelayNodeConstructor(audioNodeConstructor,createAudioParam,createDelayNodeRenderer,createNativeDelayNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativeDynamicsCompressorNode=createNativeDynamicsCompressorNodeFactory(createNotSupportedError),createDynamicsCompressorNodeRenderer=createDynamicsCompressorNodeRendererFactory(connectAudioParam,createNativeDynamicsCompressorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),dynamicsCompressorNodeConstructor=createDynamicsCompressorNodeConstructor(audioNodeConstructor,createAudioParam,createDynamicsCompressorNodeRenderer,createNativeDynamicsCompressorNode,createNotSupportedError,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createGainNodeRenderer=createGainNodeRendererFactory(connectAudioParam,createNativeGainNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),gainNodeConstructor=createGainNodeConstructor(audioNodeConstructor,createAudioParam,createGainNodeRenderer,createNativeGainNode,getNativeContext,isNativeOfflineAudioContext),createNativeIIRFilterNodeFaker=createNativeIIRFilterNodeFakerFactory(createInvalidAccessError,createInvalidStateError,createNativeScriptProcessorNode,createNotSupportedError),renderNativeOfflineAudioContext=createRenderNativeOfflineAudioContext(cacheTestResult,createNativeGainNode,createNativeScriptProcessorNode,createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode,nativeOfflineAudioContextConstructor)),createIIRFilterNodeRenderer=createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderInputsOfAudioNode,renderNativeOfflineAudioContext),createNativeIIRFilterNode=createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker),iIRFilterNodeConstructor=createIIRFilterNodeConstructor(audioNodeConstructor,createNativeIIRFilterNode,createIIRFilterNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createAudioListener=createAudioListenerFactory(createAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeScriptProcessorNode,createNotSupportedError,getFirstSample,isNativeOfflineAudioContext,overwriteAccessors),unrenderedAudioWorkletNodeStore=new WeakMap,minimalBaseAudioContextConstructor=createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor,createAudioListener,eventTargetConstructor,isNativeOfflineAudioContext,unrenderedAudioWorkletNodeStore,wrapEventListener),createNativeOscillatorNode=createNativeOscillatorNodeFactory(addSilentConnection,cacheTestResult,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),createOscillatorNodeRenderer=createOscillatorNodeRendererFactory(connectAudioParam,createNativeOscillatorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),oscillatorNodeConstructor=createOscillatorNodeConstructor(audioNodeConstructor,createAudioParam,createNativeOscillatorNode,createOscillatorNodeRenderer,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createConnectedNativeAudioBufferSourceNode=createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode),createNativeWaveShaperNodeFaker=createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeGainNode,isDCCurve,monitorConnections),createNativeWaveShaperNode=createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeWaveShaperNodeFaker,isDCCurve,monitorConnections,nativeAudioContextConstructor,overwriteAccessors),createNativePannerNodeFaker=createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode,createInvalidStateError,createNativeChannelMergerNode,createNativeGainNode,createNativeScriptProcessorNode,createNativeWaveShaperNode,createNotSupportedError,disconnectNativeAudioNodeFromNativeAudioNode,getFirstSample,monitorConnections),createNativePannerNode=createNativePannerNodeFactory(createNativePannerNodeFaker),createPannerNodeRenderer=createPannerNodeRendererFactory(connectAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeGainNode,createNativePannerNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),pannerNodeConstructor=createPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativePannerNode,createPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativePeriodicWave=createNativePeriodicWaveFactory(createIndexSizeError),periodicWaveConstructor=createPeriodicWaveConstructor(createNativePeriodicWave,getNativeContext,new WeakSet,sanitizePeriodicWaveOptions),nativeStereoPannerNodeFakerFactory=createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeGainNode,createNativeWaveShaperNode,createNotSupportedError,monitorConnections),createNativeStereoPannerNode=createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory,createNotSupportedError),createStereoPannerNodeRenderer=createStereoPannerNodeRendererFactory(connectAudioParam,createNativeStereoPannerNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),stereoPannerNodeConstructor=createStereoPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativeStereoPannerNode,createStereoPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext),createWaveShaperNodeRenderer=createWaveShaperNodeRendererFactory(createNativeWaveShaperNode,getNativeAudioNode,renderInputsOfAudioNode),waveShaperNodeConstructor=createWaveShaperNodeConstructor(audioNodeConstructor,createInvalidStateError,createNativeWaveShaperNode,createWaveShaperNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),isSecureContext=createIsSecureContext(window$1),exposeCurrentFrameAndCurrentTime=createExposeCurrentFrameAndCurrentTime(window$1),backupOfflineAudioContextStore=new WeakMap,getOrCreateBackupOfflineAudioContext=createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore,nativeOfflineAudioContextConstructor),addAudioWorkletModule=isSecureContext?createAddAudioWorkletModule(cacheTestResult,createNotSupportedError,createEvaluateSource(window$1),exposeCurrentFrameAndCurrentTime,createFetchSource(createAbortError),getNativeContext,getOrCreateBackupOfflineAudioContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,new WeakMap,new WeakMap,createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor),window$1):void 0,isNativeContext=createIsNativeContext(isNativeAudioContext,isNativeOfflineAudioContext),decodeAudioData=createDecodeAudioData(audioBufferStore,cacheTestResult,createDataCloneError,createEncodingError,new WeakSet,getNativeContext,isNativeContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,testPromiseSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),baseAudioContextConstructor=createBaseAudioContextConstructor(addAudioWorkletModule,analyserNodeConstructor,audioBufferConstructor,audioBufferSourceNodeConstructor,biquadFilterNodeConstructor,channelMergerNodeConstructor,channelSplitterNodeConstructor,constantSourceNodeConstructor,convolverNodeConstructor,decodeAudioData,delayNodeConstructor,dynamicsCompressorNodeConstructor,gainNodeConstructor,iIRFilterNodeConstructor,minimalBaseAudioContextConstructor,oscillatorNodeConstructor,pannerNodeConstructor,periodicWaveConstructor,stereoPannerNodeConstructor,waveShaperNodeConstructor),mediaElementAudioSourceNodeConstructor=createMediaElementAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaElementAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioDestinationNodeConstructor=createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioDestinationNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioSourceNodeConstructor=createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),createNativeMediaStreamTrackAudioSourceNode=createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError,isNativeOfflineAudioContext),mediaStreamTrackAudioSourceNodeConstructor=createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamTrackAudioSourceNode,getNativeContext),audioContextConstructor=createAudioContextConstructor(baseAudioContextConstructor,createInvalidStateError,createNotSupportedError,createUnknownError,mediaElementAudioSourceNodeConstructor,mediaStreamAudioDestinationNodeConstructor,mediaStreamAudioSourceNodeConstructor,mediaStreamTrackAudioSourceNodeConstructor,nativeAudioContextConstructor),getUnrenderedAudioWorkletNodes=createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore),addUnrenderedAudioWorkletNode=createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),connectMultipleOutputs=createConnectMultipleOutputs(createIndexSizeError),deleteUnrenderedAudioWorkletNode=createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),disconnectMultipleOutputs=createDisconnectMultipleOutputs(createIndexSizeError),activeAudioWorkletNodeInputsStore=new WeakMap,getActiveAudioWorkletNodeInputs=createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore,getValueForKey),createNativeAudioWorkletNodeFaker=createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs,createIndexSizeError,createInvalidStateError,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,createNativeScriptProcessorNode,createNotSupportedError,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getActiveAudioWorkletNodeInputs,monitorConnections),createNativeAudioWorkletNode=createNativeAudioWorkletNodeFactory(createInvalidStateError,createNativeAudioWorkletNodeFaker,createNativeGainNode,createNotSupportedError,monitorConnections),createAudioWorkletNodeRenderer=createAudioWorkletNodeRendererFactory(connectAudioParam,connectMultipleOutputs,createNativeAudioBufferSourceNode,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,deleteUnrenderedAudioWorkletNode,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getNativeAudioNode,nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),getBackupOfflineAudioContext=createGetBackupOfflineAudioContext(backupOfflineAudioContextStore),setActiveAudioWorkletNodeInputs=createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore),audioWorkletNodeConstructor=isSecureContext?createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode,audioNodeConstructor,createAudioParam,createAudioWorkletNodeRenderer,createNativeAudioWorkletNode,getAudioNodeConnections,getBackupOfflineAudioContext,getNativeContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,sanitizeAudioWorkletNodeOptions,setActiveAudioWorkletNodeInputs,testAudioWorkletNodeOptionsClonability,wrapEventListener):void 0,createNativeOfflineAudioContext=createCreateNativeOfflineAudioContext(createNotSupportedError,nativeOfflineAudioContextConstructor),startRendering=createStartRendering(audioBufferStore,cacheTestResult,getAudioNodeRenderer,getUnrenderedAudioWorkletNodes,renderNativeOfflineAudioContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),offlineAudioContextConstructor=createOfflineAudioContextConstructor(baseAudioContextConstructor,cacheTestResult,createInvalidStateError,createNativeOfflineAudioContext,startRendering),isAnyAudioContext=createIsAnyAudioContext(CONTEXT_STORE,isNativeAudioContext),isAnyAudioNode=createIsAnyAudioNode(AUDIO_NODE_STORE,isNativeAudioNode),isAnyAudioParam=createIsAnyAudioParam(AUDIO_PARAM_STORE,isNativeAudioParam),isAnyOfflineAudioContext=createIsAnyOfflineAudioContext(CONTEXT_STORE,isNativeOfflineAudioContext);function isUndef(tt){return typeof tt>"u"}function isDefined(tt){return!isUndef(tt)}function isFunction$2(tt){return typeof tt=="function"}function isNumber$4(tt){return typeof tt=="number"}function isObject$7(tt){return Object.prototype.toString.call(tt)==="[object Object]"&&tt.constructor===Object}function isBoolean$1(tt){return typeof tt=="boolean"}function isArray$e(tt){return Array.isArray(tt)}function isString$2(tt){return typeof tt=="string"}function isNote(tt){return isString$2(tt)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(tt)}function assert(tt,et){if(!tt)throw new Error(et)}function assertRange(tt,et,nt=1/0){if(!(et<=tt&&tt<=nt))throw new RangeError(`Value must be within [${et}, ${nt}], got: ${tt}`)}function assertContextRunning(tt){!tt.isOffline&&tt.state!=="running"&&warn$2('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let isInsideScheduledCallback=!1,printedScheduledWarning=!1;function enterScheduledCallback(tt){isInsideScheduledCallback=tt}function assertUsedScheduleTime(tt){isUndef(tt)&&isInsideScheduledCallback&&!printedScheduledWarning&&(printedScheduledWarning=!0,warn$2("Events scheduled inside of scheduled callbacks should use the passed in scheduling time. See https://github.com/Tonejs/Tone.js/wiki/Accurate-Timing"))}let defaultLogger=console;function log$1(...tt){defaultLogger.log(...tt)}function warn$2(...tt){defaultLogger.warn(...tt)}function createAudioContext(tt){return new audioContextConstructor(tt)}function createOfflineAudioContext(tt,et,nt){return new offlineAudioContextConstructor(tt,et,nt)}const theWindow=typeof self=="object"?self:null,hasAudioContext=theWindow&&(theWindow.hasOwnProperty("AudioContext")||theWindow.hasOwnProperty("webkitAudioContext"));function createAudioWorkletNode(tt,et,nt){return assert(isDefined(audioWorkletNodeConstructor),"This node only works in a secure context (https or localhost)"),new audioWorkletNodeConstructor(tt,et,nt)}class Ticker{constructor(et,nt,rt,it){this._callback=et,this._type=nt,this._minimumUpdateInterval=Math.max(128/(it||44100),.001),this.updateInterval=rt,this._createClock()}_createWorker(){const et=new Blob([` +})(${At?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${At?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${At?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${Et}',class extends AudioWorkletProcessor{process(){return !1}})`,It=new Blob([wt],{type:"application/javascript; charset=utf-8"}),Ot=URL.createObjectURL(It);return xt.audioWorklet.addModule(Ot,yt).then(()=>{if(st(xt))return xt;const Wt=at(xt);return Wt.audioWorklet.addModule(Ot,yt).then(()=>Wt)}).then(Wt=>{if(lt===null)throw new SyntaxError;try{new lt(Wt,`__sac${Et}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(Ot))});return vt===void 0?ct.set(mt,new Map([[gt,kt]])):vt.set(gt,kt),kt.then(()=>{const St=ut.get(mt);St===void 0?ut.set(mt,new Set([gt])):St.add(gt)}).finally(()=>{const St=ct.get(mt);St!==void 0&&St.delete(gt)}),kt}},getValueForKey=(tt,et)=>{const nt=tt.get(et);if(nt===void 0)throw new Error("A value with the given key could not be found.");return nt},pickElementFromSet=(tt,et)=>{const nt=Array.from(tt).filter(et);if(nt.length>1)throw Error("More than one element was found.");if(nt.length===0)throw Error("No element was found.");const[rt]=nt;return tt.delete(rt),rt},deletePassiveInputConnectionToAudioNode=(tt,et,nt,rt)=>{const it=getValueForKey(tt,et),ot=pickElementFromSet(it,at=>at[0]===nt&&at[1]===rt);return it.size===0&&tt.delete(et),ot},getEventListenersOfAudioNode=tt=>getValueForKey(EVENT_LISTENERS,tt),setInternalStateToActive=tt=>{if(ACTIVE_AUDIO_NODE_STORE.has(tt))throw new Error("The AudioNode is already stored.");ACTIVE_AUDIO_NODE_STORE.add(tt),getEventListenersOfAudioNode(tt).forEach(et=>et(!0))},isAudioWorkletNode=tt=>"port"in tt,setInternalStateToPassive=tt=>{if(!ACTIVE_AUDIO_NODE_STORE.has(tt))throw new Error("The AudioNode is not stored.");ACTIVE_AUDIO_NODE_STORE.delete(tt),getEventListenersOfAudioNode(tt).forEach(et=>et(!1))},setInternalStateToPassiveWhenNecessary=(tt,et)=>{!isAudioWorkletNode(tt)&&et.every(nt=>nt.size===0)&&setInternalStateToPassive(tt)},createAddConnectionToAudioNode=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt)=>{const pt=new WeakMap;return(mt,gt,yt,bt,vt)=>{const{activeInputs:xt,passiveInputs:kt}=ot(gt),{outputs:St}=ot(mt),Tt=st(mt),At=Et=>{const $t=lt(gt),Dt=lt(mt);if(Et){const jt=deletePassiveInputConnectionToAudioNode(kt,mt,yt,bt);tt(xt,mt,jt,!1),!vt&&!ht(mt)&&nt(Dt,$t,yt,bt),dt(gt)&&setInternalStateToActive(gt)}else{const jt=rt(xt,mt,yt,bt);et(kt,bt,jt,!1),!vt&&!ht(mt)&&it(Dt,$t,yt,bt);const Pt=at(gt);if(Pt===0)ut(gt)&&setInternalStateToPassiveWhenNecessary(gt,xt);else{const Ct=pt.get(gt);Ct!==void 0&&clearTimeout(Ct),pt.set(gt,setTimeout(()=>{ut(gt)&&setInternalStateToPassiveWhenNecessary(gt,xt)},Pt*1e3))}}};return ct(St,[gt,yt,bt],Et=>Et[0]===gt&&Et[1]===yt&&Et[2]===bt,!0)?(Tt.add(At),ut(mt)?tt(xt,mt,[yt,bt,At],!0):et(kt,bt,[mt,yt,At],!0),!0):!1}},createAddPassiveInputConnectionToAudioNode=tt=>(et,nt,[rt,it,ot],at)=>{const st=et.get(rt);st===void 0?et.set(rt,new Set([[it,nt,ot]])):tt(st,[it,nt,ot],lt=>lt[0]===it&<[1]===nt,at)},createAddSilentConnection=tt=>(et,nt)=>{const rt=tt(et,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});nt.connect(rt).connect(et.destination);const it=()=>{nt.removeEventListener("ended",it),nt.disconnect(rt),rt.disconnect()};nt.addEventListener("ended",it)},createAddUnrenderedAudioWorkletNode=tt=>(et,nt)=>{tt(et).add(nt)},DEFAULT_OPTIONS$j={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},createAnalyserNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=it(st),ut={...DEFAULT_OPTIONS$j,...lt},ht=rt(ct,ut),dt=ot(ct)?et():null;super(st,!1,ht,dt),this._nativeAnalyserNode=ht}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(st){this._nativeAnalyserNode.fftSize=st}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(st){const lt=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=st,!(st>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=lt,nt()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(st){const lt=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=st,!(this._nativeAnalyserNode.maxDecibels>st))throw this._nativeAnalyserNode.minDecibels=lt,nt()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(st){this._nativeAnalyserNode.smoothingTimeConstant=st}getByteFrequencyData(st){this._nativeAnalyserNode.getByteFrequencyData(st)}getByteTimeDomainData(st){this._nativeAnalyserNode.getByteTimeDomainData(st)}getFloatFrequencyData(st){this._nativeAnalyserNode.getFloatFrequencyData(st)}getFloatTimeDomainData(st){this._nativeAnalyserNode.getFloatTimeDomainData(st)}},isOwnedByContext=(tt,et)=>tt.context===et,createAnalyserNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,fftSize:st.fftSize,maxDecibels:st.maxDecibels,minDecibels:st.minDecibels,smoothingTimeConstant:st.smoothingTimeConstant};st=tt(at,ct)}return rt.set(at,st),await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},testAudioBufferCopyChannelMethodsOutOfBoundsSupport=tt=>{try{tt.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},createIndexSizeError=()=>new DOMException("","IndexSizeError"),wrapAudioBufferGetChannelDataMethod=tt=>{tt.getChannelData=(et=>nt=>{try{return et.call(tt,nt)}catch(rt){throw rt.code===12?createIndexSizeError():rt}})(tt.getChannelData)},DEFAULT_OPTIONS$i={numberOfChannels:1},createAudioBufferConstructor=(tt,et,nt,rt,it,ot,at,st)=>{let lt=null;return class vw{constructor(ut){if(it===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:ht,numberOfChannels:dt,sampleRate:pt}={...DEFAULT_OPTIONS$i,...ut};lt===null&&(lt=new it(1,1,44100));const mt=rt!==null&&et(ot,ot)?new rt({length:ht,numberOfChannels:dt,sampleRate:pt}):lt.createBuffer(dt,ht,pt);if(mt.numberOfChannels===0)throw nt();return typeof mt.copyFromChannel!="function"?(at(mt),wrapAudioBufferGetChannelDataMethod(mt)):et(testAudioBufferCopyChannelMethodsOutOfBoundsSupport,()=>testAudioBufferCopyChannelMethodsOutOfBoundsSupport(mt))||st(mt),tt.add(mt),mt}static[Symbol.hasInstance](ut){return ut!==null&&typeof ut=="object"&&Object.getPrototypeOf(ut)===vw.prototype||tt.has(ut)}}},MOST_NEGATIVE_SINGLE_FLOAT=-34028234663852886e22,MOST_POSITIVE_SINGLE_FLOAT=-MOST_NEGATIVE_SINGLE_FLOAT,isActiveAudioNode=tt=>ACTIVE_AUDIO_NODE_STORE.has(tt),DEFAULT_OPTIONS$h={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},createAudioBufferSourceNodeConstructor=(tt,et,nt,rt,it,ot,at,st)=>class extends tt{constructor(ct,ut){const ht=ot(ct),dt={...DEFAULT_OPTIONS$h,...ut},pt=it(ht,dt),mt=at(ht),gt=mt?et():null;super(ct,!1,pt,gt),this._audioBufferSourceNodeRenderer=gt,this._isBufferNullified=!1,this._isBufferSet=dt.buffer!==null,this._nativeAudioBufferSourceNode=pt,this._onended=null,this._playbackRate=nt(this,mt,pt.playbackRate,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer(ct){if(this._nativeAudioBufferSourceNode.buffer=ct,ct!==null){if(this._isBufferSet)throw rt();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop(ct){this._nativeAudioBufferSourceNode.loop=ct}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd(ct){this._nativeAudioBufferSourceNode.loopEnd=ct}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart(ct){this._nativeAudioBufferSourceNode.loopStart=ct}get onended(){return this._onended}set onended(ct){const ut=typeof ct=="function"?st(this,ct):null;this._nativeAudioBufferSourceNode.onended=ut;const ht=this._nativeAudioBufferSourceNode.onended;this._onended=ht!==null&&ht===ut?ct:ht}get playbackRate(){return this._playbackRate}start(ct=0,ut=0,ht){if(this._nativeAudioBufferSourceNode.start(ct,ut,ht),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=ht===void 0?[ct,ut]:[ct,ut,ht]),this.context.state!=="closed"){setInternalStateToActive(this);const dt=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",dt),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",dt)}}stop(ct=0){this._nativeAudioBufferSourceNode.stop(ct),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=ct)}},createAudioBufferSourceNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap;let at=null,st=null;const lt=async(ct,ut)=>{let ht=nt(ct);const dt=isOwnedByContext(ht,ut);if(!dt){const pt={buffer:ht.buffer,channelCount:ht.channelCount,channelCountMode:ht.channelCountMode,channelInterpretation:ht.channelInterpretation,loop:ht.loop,loopEnd:ht.loopEnd,loopStart:ht.loopStart,playbackRate:ht.playbackRate.value};ht=et(ut,pt),at!==null&&ht.start(...at),st!==null&&ht.stop(st)}return ot.set(ut,ht),dt?await tt(ut,ct.playbackRate,ht.playbackRate):await rt(ut,ct.playbackRate,ht.playbackRate),await it(ct,ut,ht),ht};return{set start(ct){at=ct},set stop(ct){st=ct},render(ct,ut){const ht=ot.get(ut);return ht!==void 0?Promise.resolve(ht):lt(ct,ut)}}},isAudioBufferSourceNode=tt=>"playbackRate"in tt,isBiquadFilterNode=tt=>"frequency"in tt&&"gain"in tt,isConstantSourceNode=tt=>"offset"in tt,isGainNode=tt=>!("frequency"in tt)&&"gain"in tt,isOscillatorNode=tt=>"detune"in tt&&"frequency"in tt,isStereoPannerNode=tt=>"pan"in tt,getAudioNodeConnections=tt=>getValueForKey(AUDIO_NODE_CONNECTIONS_STORE,tt),getAudioParamConnections=tt=>getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE,tt),deactivateActiveAudioNodeInputConnections=(tt,et)=>{const{activeInputs:nt}=getAudioNodeConnections(tt);nt.forEach(it=>it.forEach(([ot])=>{et.includes(tt)||deactivateActiveAudioNodeInputConnections(ot,[...et,tt])}));const rt=isAudioBufferSourceNode(tt)?[tt.playbackRate]:isAudioWorkletNode(tt)?Array.from(tt.parameters.values()):isBiquadFilterNode(tt)?[tt.Q,tt.detune,tt.frequency,tt.gain]:isConstantSourceNode(tt)?[tt.offset]:isGainNode(tt)?[tt.gain]:isOscillatorNode(tt)?[tt.detune,tt.frequency]:isStereoPannerNode(tt)?[tt.pan]:[];for(const it of rt){const ot=getAudioParamConnections(it);ot!==void 0&&ot.activeInputs.forEach(([at])=>deactivateActiveAudioNodeInputConnections(at,et))}isActiveAudioNode(tt)&&setInternalStateToPassive(tt)},deactivateAudioGraph=tt=>{deactivateActiveAudioNodeInputConnections(tt.destination,[])},isValidLatencyHint=tt=>tt===void 0||typeof tt=="number"||typeof tt=="string"&&(tt==="balanced"||tt==="interactive"||tt==="playback"),createAudioContextConstructor=(tt,et,nt,rt,it,ot,at,st,lt)=>class extends tt{constructor(ut={}){if(lt===null)throw new Error("Missing the native AudioContext constructor.");let ht;try{ht=new lt(ut)}catch(mt){throw mt.code===12&&mt.message==="sampleRate is not in range"?nt():mt}if(ht===null)throw rt();if(!isValidLatencyHint(ut.latencyHint))throw new TypeError(`The provided value '${ut.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(ut.sampleRate!==void 0&&ht.sampleRate!==ut.sampleRate)throw nt();super(ht,2);const{latencyHint:dt}=ut,{sampleRate:pt}=ht;if(this._baseLatency=typeof ht.baseLatency=="number"?ht.baseLatency:dt==="balanced"?512/pt:dt==="interactive"||dt===void 0?256/pt:dt==="playback"?1024/pt:Math.max(2,Math.min(128,Math.round(dt*pt/128)))*128/pt,this._nativeAudioContext=ht,lt.name==="webkitAudioContext"?(this._nativeGainNode=ht.createGain(),this._nativeOscillatorNode=ht.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(ht.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,ht.state==="running"){this._state="suspended";const mt=()=>{this._state==="suspended"&&(this._state=null),ht.removeEventListener("statechange",mt)};ht.addEventListener("statechange",mt)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw et()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),deactivateAudioGraph(this)}))}createMediaElementSource(ut){return new it(this,{mediaElement:ut})}createMediaStreamDestination(){return new ot(this)}createMediaStreamSource(ut){return new at(this,{mediaStream:ut})}createMediaStreamTrackSource(ut){return new st(this,{mediaStreamTrack:ut})}resume(){return this._state==="suspended"?new Promise((ut,ht)=>{const dt=()=>{this._nativeAudioContext.removeEventListener("statechange",dt),this._nativeAudioContext.state==="running"?ut():this.resume().then(ut,ht)};this._nativeAudioContext.addEventListener("statechange",dt)}):this._nativeAudioContext.resume().catch(ut=>{throw ut===void 0||ut.code===15?et():ut})}suspend(){return this._nativeAudioContext.suspend().catch(ut=>{throw ut===void 0?et():ut})}},createAudioDestinationNodeConstructor=(tt,et,nt,rt,it,ot,at,st)=>class extends tt{constructor(ct,ut){const ht=ot(ct),dt=at(ht),pt=it(ht,ut,dt),mt=dt?et(st):null;super(ct,!1,pt,mt),this._isNodeOfNativeOfflineAudioContext=dt,this._nativeAudioDestinationNode=pt}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount(ct){if(this._isNodeOfNativeOfflineAudioContext)throw rt();if(ct>this._nativeAudioDestinationNode.maxChannelCount)throw nt();this._nativeAudioDestinationNode.channelCount=ct}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode(ct){if(this._isNodeOfNativeOfflineAudioContext)throw rt();this._nativeAudioDestinationNode.channelCountMode=ct}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},createAudioDestinationNodeRenderer=tt=>{const et=new WeakMap,nt=async(rt,it)=>{const ot=it.destination;return et.set(it,ot),await tt(rt,it,ot),ot};return{render(rt,it){const ot=et.get(it);return ot!==void 0?Promise.resolve(ot):nt(rt,it)}}},createAudioListenerFactory=(tt,et,nt,rt,it,ot,at,st)=>(lt,ct)=>{const ut=ct.listener,ht=()=>{const St=new Float32Array(1),Tt=et(ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),At=at(ct);let Et=!1,$t=[0,0,-1,0,1,0],Dt=[0,0,0];const jt=()=>{if(Et)return;Et=!0;const It=rt(ct,256,9,0);It.onaudioprocess=({inputBuffer:Ot})=>{const Wt=[ot(Ot,St,0),ot(Ot,St,1),ot(Ot,St,2),ot(Ot,St,3),ot(Ot,St,4),ot(Ot,St,5)];Wt.some((Ft,Nt)=>Ft!==$t[Nt])&&(ut.setOrientation(...Wt),$t=Wt);const zt=[ot(Ot,St,6),ot(Ot,St,7),ot(Ot,St,8)];zt.some((Ft,Nt)=>Ft!==Dt[Nt])&&(ut.setPosition(...zt),Dt=zt)},Tt.connect(It)},Pt=It=>Ot=>{Ot!==$t[It]&&($t[It]=Ot,ut.setOrientation(...$t))},Ct=It=>Ot=>{Ot!==Dt[It]&&(Dt[It]=Ot,ut.setPosition(...Dt))},wt=(It,Ot,Wt)=>{const zt=nt(ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:Ot});zt.connect(Tt,0,It),zt.start(),Object.defineProperty(zt.offset,"defaultValue",{get(){return Ot}});const Ft=tt({context:lt},At,zt.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT);return st(Ft,"value",Nt=>()=>Nt.call(Ft),Nt=>Ut=>{try{Nt.call(Ft,Ut)}catch(Mt){if(Mt.code!==9)throw Mt}jt(),At&&Wt(Ut)}),Ft.cancelAndHoldAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.cancelAndHoldAtTime),Ft.cancelScheduledValues=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.cancelScheduledValues),Ft.exponentialRampToValueAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.exponentialRampToValueAtTime),Ft.linearRampToValueAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.linearRampToValueAtTime),Ft.setTargetAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.setTargetAtTime),Ft.setValueAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.setValueAtTime),Ft.setValueCurveAtTime=(Nt=>At?()=>{throw it()}:(...Ut)=>{const Mt=Nt.apply(Ft,Ut);return jt(),Mt})(Ft.setValueCurveAtTime),Ft};return{forwardX:wt(0,0,Pt(0)),forwardY:wt(1,0,Pt(1)),forwardZ:wt(2,-1,Pt(2)),positionX:wt(6,0,Ct(0)),positionY:wt(7,0,Ct(1)),positionZ:wt(8,0,Ct(2)),upX:wt(3,0,Pt(3)),upY:wt(4,1,Pt(4)),upZ:wt(5,0,Pt(5))}},{forwardX:dt,forwardY:pt,forwardZ:mt,positionX:gt,positionY:yt,positionZ:bt,upX:vt,upY:xt,upZ:kt}=ut.forwardX===void 0?ht():ut;return{get forwardX(){return dt},get forwardY(){return pt},get forwardZ(){return mt},get positionX(){return gt},get positionY(){return yt},get positionZ(){return bt},get upX(){return vt},get upY(){return xt},get upZ(){return kt}}},isAudioNode$1=tt=>"context"in tt,isAudioNodeOutputConnection=tt=>isAudioNode$1(tt[0]),insertElementInSet=(tt,et,nt,rt)=>{for(const it of tt)if(nt(it)){if(rt)return!1;throw Error("The set contains at least one similar element.")}return tt.add(et),!0},addActiveInputConnectionToAudioParam=(tt,et,[nt,rt],it)=>{insertElementInSet(tt,[et,nt,rt],ot=>ot[0]===et&&ot[1]===nt,it)},addPassiveInputConnectionToAudioParam=(tt,[et,nt,rt],it)=>{const ot=tt.get(et);ot===void 0?tt.set(et,new Set([[nt,rt]])):insertElementInSet(ot,[nt,rt],at=>at[0]===nt,it)},isNativeAudioNodeFaker=tt=>"inputs"in tt,connectNativeAudioNodeToNativeAudioNode=(tt,et,nt,rt)=>{if(isNativeAudioNodeFaker(et)){const it=et.inputs[rt];return tt.connect(it,nt,0),[it,nt,0]}return tt.connect(et,nt,rt),[et,nt,rt]},deleteActiveInputConnection=(tt,et,nt)=>{for(const rt of tt)if(rt[0]===et&&rt[1]===nt)return tt.delete(rt),rt;return null},deleteActiveInputConnectionToAudioParam=(tt,et,nt)=>pickElementFromSet(tt,rt=>rt[0]===et&&rt[1]===nt),deleteEventListenerOfAudioNode=(tt,et)=>{if(!getEventListenersOfAudioNode(tt).delete(et))throw new Error("Missing the expected event listener.")},deletePassiveInputConnectionToAudioParam=(tt,et,nt)=>{const rt=getValueForKey(tt,et),it=pickElementFromSet(rt,ot=>ot[0]===nt);return rt.size===0&&tt.delete(et),it},disconnectNativeAudioNodeFromNativeAudioNode=(tt,et,nt,rt)=>{isNativeAudioNodeFaker(et)?tt.disconnect(et.inputs[rt],nt,0):tt.disconnect(et,nt,rt)},getNativeAudioNode=tt=>getValueForKey(AUDIO_NODE_STORE,tt),getNativeAudioParam=tt=>getValueForKey(AUDIO_PARAM_STORE,tt),isPartOfACycle=tt=>CYCLE_COUNTERS.has(tt),isPassiveAudioNode=tt=>!ACTIVE_AUDIO_NODE_STORE.has(tt),testAudioNodeDisconnectMethodSupport=(tt,et)=>new Promise(nt=>{if(et!==null)nt(!0);else{const rt=tt.createScriptProcessor(256,1,1),it=tt.createGain(),ot=tt.createBuffer(1,2,44100),at=ot.getChannelData(0);at[0]=1,at[1]=1;const st=tt.createBufferSource();st.buffer=ot,st.loop=!0,st.connect(rt).connect(tt.destination),st.connect(it),st.disconnect(it),rt.onaudioprocess=lt=>{const ct=lt.inputBuffer.getChannelData(0);Array.prototype.some.call(ct,ut=>ut===1)?nt(!0):nt(!1),st.stop(),rt.onaudioprocess=null,st.disconnect(rt),rt.disconnect(tt.destination)},st.start()}}),visitEachAudioNodeOnce=(tt,et)=>{const nt=new Map;for(const rt of tt)for(const it of rt){const ot=nt.get(it);nt.set(it,ot===void 0?1:ot+1)}nt.forEach((rt,it)=>et(it,rt))},isNativeAudioNode$1=tt=>"context"in tt,wrapAudioNodeDisconnectMethod=tt=>{const et=new Map;tt.connect=(nt=>(rt,it=0,ot=0)=>{const at=isNativeAudioNode$1(rt)?nt(rt,it,ot):nt(rt,it),st=et.get(rt);return st===void 0?et.set(rt,[{input:ot,output:it}]):st.every(lt=>lt.input!==ot||lt.output!==it)&&st.push({input:ot,output:it}),at})(tt.connect.bind(tt)),tt.disconnect=(nt=>(rt,it,ot)=>{if(nt.apply(tt),rt===void 0)et.clear();else if(typeof rt=="number")for(const[at,st]of et){const lt=st.filter(ct=>ct.output!==rt);lt.length===0?et.delete(at):et.set(at,lt)}else if(et.has(rt))if(it===void 0)et.delete(rt);else{const at=et.get(rt);if(at!==void 0){const st=at.filter(lt=>lt.output!==it&&(lt.input!==ot||ot===void 0));st.length===0?et.delete(rt):et.set(rt,st)}}for(const[at,st]of et)st.forEach(lt=>{isNativeAudioNode$1(at)?tt.connect(at,lt.output,lt.input):tt.connect(at,lt.output)})})(tt.disconnect)},addConnectionToAudioParamOfAudioContext=(tt,et,nt,rt)=>{const{activeInputs:it,passiveInputs:ot}=getAudioParamConnections(et),{outputs:at}=getAudioNodeConnections(tt),st=getEventListenersOfAudioNode(tt),lt=ct=>{const ut=getNativeAudioNode(tt),ht=getNativeAudioParam(et);if(ct){const dt=deletePassiveInputConnectionToAudioParam(ot,tt,nt);addActiveInputConnectionToAudioParam(it,tt,dt,!1),!rt&&!isPartOfACycle(tt)&&ut.connect(ht,nt)}else{const dt=deleteActiveInputConnectionToAudioParam(it,tt,nt);addPassiveInputConnectionToAudioParam(ot,dt,!1),!rt&&!isPartOfACycle(tt)&&ut.disconnect(ht,nt)}};return insertElementInSet(at,[et,nt],ct=>ct[0]===et&&ct[1]===nt,!0)?(st.add(lt),isActiveAudioNode(tt)?addActiveInputConnectionToAudioParam(it,tt,[nt,lt],!0):addPassiveInputConnectionToAudioParam(ot,[tt,nt,lt],!0),!0):!1},deleteInputConnectionOfAudioNode=(tt,et,nt,rt)=>{const{activeInputs:it,passiveInputs:ot}=getAudioNodeConnections(et),at=deleteActiveInputConnection(it[rt],tt,nt);return at===null?[deletePassiveInputConnectionToAudioNode(ot,tt,nt,rt)[2],!1]:[at[2],!0]},deleteInputConnectionOfAudioParam=(tt,et,nt)=>{const{activeInputs:rt,passiveInputs:it}=getAudioParamConnections(et),ot=deleteActiveInputConnection(rt,tt,nt);return ot===null?[deletePassiveInputConnectionToAudioParam(it,tt,nt)[1],!1]:[ot[2],!0]},deleteInputsOfAudioNode=(tt,et,nt,rt,it)=>{const[ot,at]=deleteInputConnectionOfAudioNode(tt,nt,rt,it);if(ot!==null&&(deleteEventListenerOfAudioNode(tt,ot),at&&!et&&!isPartOfACycle(tt)&&disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(tt),getNativeAudioNode(nt),rt,it)),isActiveAudioNode(nt)){const{activeInputs:st}=getAudioNodeConnections(nt);setInternalStateToPassiveWhenNecessary(nt,st)}},deleteInputsOfAudioParam=(tt,et,nt,rt)=>{const[it,ot]=deleteInputConnectionOfAudioParam(tt,nt,rt);it!==null&&(deleteEventListenerOfAudioNode(tt,it),ot&&!et&&!isPartOfACycle(tt)&&getNativeAudioNode(tt).disconnect(getNativeAudioParam(nt),rt))},deleteAnyConnection=(tt,et)=>{const nt=getAudioNodeConnections(tt),rt=[];for(const it of nt.outputs)isAudioNodeOutputConnection(it)?deleteInputsOfAudioNode(tt,et,...it):deleteInputsOfAudioParam(tt,et,...it),rt.push(it[0]);return nt.outputs.clear(),rt},deleteConnectionAtOutput=(tt,et,nt)=>{const rt=getAudioNodeConnections(tt),it=[];for(const ot of rt.outputs)ot[1]===nt&&(isAudioNodeOutputConnection(ot)?deleteInputsOfAudioNode(tt,et,...ot):deleteInputsOfAudioParam(tt,et,...ot),it.push(ot[0]),rt.outputs.delete(ot));return it},deleteConnectionToDestination=(tt,et,nt,rt,it)=>{const ot=getAudioNodeConnections(tt);return Array.from(ot.outputs).filter(at=>at[0]===nt&&(rt===void 0||at[1]===rt)&&(it===void 0||at[2]===it)).map(at=>(isAudioNodeOutputConnection(at)?deleteInputsOfAudioNode(tt,et,...at):deleteInputsOfAudioParam(tt,et,...at),ot.outputs.delete(at),at[0]))},createAudioNodeConstructor=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt,pt,mt,gt)=>class extends ct{constructor(bt,vt,xt,kt){super(xt),this._context=bt,this._nativeAudioNode=xt;const St=ut(bt);ht(St)&&nt(testAudioNodeDisconnectMethodSupport,()=>testAudioNodeDisconnectMethodSupport(St,gt))!==!0&&wrapAudioNodeDisconnectMethod(xt),AUDIO_NODE_STORE.set(this,xt),EVENT_LISTENERS.set(this,new Set),bt.state!=="closed"&&vt&&setInternalStateToActive(this),tt(this,kt,xt)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(bt){this._nativeAudioNode.channelCount=bt}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(bt){this._nativeAudioNode.channelCountMode=bt}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(bt){this._nativeAudioNode.channelInterpretation=bt}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(bt,vt=0,xt=0){if(vt<0||vt>=this._nativeAudioNode.numberOfOutputs)throw it();const kt=ut(this._context),St=mt(kt);if(dt(bt)||pt(bt))throw ot();if(isAudioNode$1(bt)){const Et=getNativeAudioNode(bt);try{const Dt=connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode,Et,vt,xt),jt=isPassiveAudioNode(this);(St||jt)&&this._nativeAudioNode.disconnect(...Dt),this.context.state!=="closed"&&!jt&&isPassiveAudioNode(bt)&&setInternalStateToActive(bt)}catch(Dt){throw Dt.code===12?ot():Dt}if(et(this,bt,vt,xt,St)){const Dt=lt([this],bt);visitEachAudioNodeOnce(Dt,rt(St))}return bt}const Tt=getNativeAudioParam(bt);if(Tt.name==="playbackRate"&&Tt.maxValue===1024)throw at();try{this._nativeAudioNode.connect(Tt,vt),(St||isPassiveAudioNode(this))&&this._nativeAudioNode.disconnect(Tt,vt)}catch(Et){throw Et.code===12?ot():Et}if(addConnectionToAudioParamOfAudioContext(this,bt,vt,St)){const Et=lt([this],bt);visitEachAudioNodeOnce(Et,rt(St))}}disconnect(bt,vt,xt){let kt;const St=ut(this._context),Tt=mt(St);if(bt===void 0)kt=deleteAnyConnection(this,Tt);else if(typeof bt=="number"){if(bt<0||bt>=this.numberOfOutputs)throw it();kt=deleteConnectionAtOutput(this,Tt,bt)}else{if(vt!==void 0&&(vt<0||vt>=this.numberOfOutputs)||isAudioNode$1(bt)&&xt!==void 0&&(xt<0||xt>=bt.numberOfInputs))throw it();if(kt=deleteConnectionToDestination(this,Tt,bt,vt,xt),kt.length===0)throw ot()}for(const At of kt){const Et=lt([this],At);visitEachAudioNodeOnce(Et,st)}}},createAudioParamFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt)=>(pt,mt,gt,yt=null,bt=null)=>{const vt=gt.value,xt=new AutomationEventList(vt),kt=mt?rt(xt):null,St={get defaultValue(){return vt},get maxValue(){return yt===null?gt.maxValue:yt},get minValue(){return bt===null?gt.minValue:bt},get value(){return gt.value},set value(Tt){gt.value=Tt,St.setValueAtTime(Tt,pt.context.currentTime)},cancelAndHoldAtTime(Tt){if(typeof gt.cancelAndHoldAtTime=="function")kt===null&&xt.flush(pt.context.currentTime),xt.add(it(Tt)),gt.cancelAndHoldAtTime(Tt);else{const At=Array.from(xt).pop();kt===null&&xt.flush(pt.context.currentTime),xt.add(it(Tt));const Et=Array.from(xt).pop();gt.cancelScheduledValues(Tt),At!==Et&&Et!==void 0&&(Et.type==="exponentialRampToValue"?gt.exponentialRampToValueAtTime(Et.value,Et.endTime):Et.type==="linearRampToValue"?gt.linearRampToValueAtTime(Et.value,Et.endTime):Et.type==="setValue"?gt.setValueAtTime(Et.value,Et.startTime):Et.type==="setValueCurve"&>.setValueCurveAtTime(Et.values,Et.startTime,Et.duration))}return St},cancelScheduledValues(Tt){return kt===null&&xt.flush(pt.context.currentTime),xt.add(ot(Tt)),gt.cancelScheduledValues(Tt),St},exponentialRampToValueAtTime(Tt,At){if(Tt===0)throw new RangeError;if(!Number.isFinite(At)||At<0)throw new RangeError;const Et=pt.context.currentTime;return kt===null&&xt.flush(Et),Array.from(xt).length===0&&(xt.add(ct(vt,Et)),gt.setValueAtTime(vt,Et)),xt.add(at(Tt,At)),gt.exponentialRampToValueAtTime(Tt,At),St},linearRampToValueAtTime(Tt,At){const Et=pt.context.currentTime;return kt===null&&xt.flush(Et),Array.from(xt).length===0&&(xt.add(ct(vt,Et)),gt.setValueAtTime(vt,Et)),xt.add(st(Tt,At)),gt.linearRampToValueAtTime(Tt,At),St},setTargetAtTime(Tt,At,Et){return kt===null&&xt.flush(pt.context.currentTime),xt.add(lt(Tt,At,Et)),gt.setTargetAtTime(Tt,At,Et),St},setValueAtTime(Tt,At){return kt===null&&xt.flush(pt.context.currentTime),xt.add(ct(Tt,At)),gt.setValueAtTime(Tt,At),St},setValueCurveAtTime(Tt,At,Et){const $t=Tt instanceof Float32Array?Tt:new Float32Array(Tt);if(ht!==null&&ht.name==="webkitAudioContext"){const Dt=At+Et,jt=pt.context.sampleRate,Pt=Math.ceil(At*jt),Ct=Math.floor(Dt*jt),wt=Ct-Pt,It=new Float32Array(wt);for(let Wt=0;Wt({replay(et){for(const nt of tt)if(nt.type==="exponentialRampToValue"){const{endTime:rt,value:it}=nt;et.exponentialRampToValueAtTime(it,rt)}else if(nt.type==="linearRampToValue"){const{endTime:rt,value:it}=nt;et.linearRampToValueAtTime(it,rt)}else if(nt.type==="setTarget"){const{startTime:rt,target:it,timeConstant:ot}=nt;et.setTargetAtTime(it,rt,ot)}else if(nt.type==="setValue"){const{startTime:rt,value:it}=nt;et.setValueAtTime(it,rt)}else if(nt.type==="setValueCurve"){const{duration:rt,startTime:it,values:ot}=nt;et.setValueCurveAtTime(ot,it,rt)}else throw new Error("Can't apply an unknown automation.")}});class ReadOnlyMap{constructor(et){this._map=new Map(et)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(et,nt=null){return this._map.forEach((rt,it)=>et.call(nt,rt,it,this))}get(et){return this._map.get(et)}has(et){return this._map.has(et)}keys(){return this._map.keys()}values(){return this._map.values()}}const DEFAULT_OPTIONS$g={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},createAudioWorkletNodeConstructor=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt,pt)=>class extends et{constructor(gt,yt,bt){var vt;const xt=st(gt),kt=lt(xt),St=ut({...DEFAULT_OPTIONS$g,...bt});dt(St);const Tt=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(xt),At=Tt==null?void 0:Tt.get(yt),Et=kt||xt.state!=="closed"?xt:(vt=at(xt))!==null&&vt!==void 0?vt:xt,$t=it(Et,kt?null:gt.baseLatency,ct,yt,At,St),Dt=kt?rt(yt,St,At):null;super(gt,!0,$t,Dt);const jt=[];$t.parameters.forEach((Ct,wt)=>{const It=nt(this,kt,Ct);jt.push([wt,It])}),this._nativeAudioWorkletNode=$t,this._onprocessorerror=null,this._parameters=new ReadOnlyMap(jt),kt&&tt(xt,this);const{activeInputs:Pt}=ot(this);ht($t,Pt)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(gt){const yt=typeof gt=="function"?pt(this,gt):null;this._nativeAudioWorkletNode.onprocessorerror=yt;const bt=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=bt!==null&&bt===yt?gt:bt}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function copyFromChannel(tt,et,nt,rt,it){if(typeof tt.copyFromChannel=="function")et[nt].byteLength===0&&(et[nt]=new Float32Array(128)),tt.copyFromChannel(et[nt],rt,it);else{const ot=tt.getChannelData(rt);if(et[nt].byteLength===0)et[nt]=ot.slice(it,it+128);else{const at=new Float32Array(ot.buffer,it*Float32Array.BYTES_PER_ELEMENT,128);et[nt].set(at)}}}const copyToChannel=(tt,et,nt,rt,it)=>{typeof tt.copyToChannel=="function"?et[nt].byteLength!==0&&tt.copyToChannel(et[nt],rt,it):et[nt].byteLength!==0&&tt.getChannelData(rt).set(et[nt],it)},createNestedArrays=(tt,et)=>{const nt=[];for(let rt=0;rt{const nt=getValueForKey(NODE_TO_PROCESSOR_MAPS,tt),rt=getNativeAudioNode(et);return getValueForKey(nt,rt)},processBuffer=async(tt,et,nt,rt,it,ot,at)=>{const st=et===null?Math.ceil(tt.context.length/128)*128:et.length,lt=rt.channelCount*rt.numberOfInputs,ct=it.reduce((yt,bt)=>yt+bt,0),ut=ct===0?null:nt.createBuffer(ct,st,nt.sampleRate);if(ot===void 0)throw new Error("Missing the processor constructor.");const ht=getAudioNodeConnections(tt),dt=await getAudioWorkletProcessor(nt,tt),pt=createNestedArrays(rt.numberOfInputs,rt.channelCount),mt=createNestedArrays(rt.numberOfOutputs,it),gt=Array.from(tt.parameters.keys()).reduce((yt,bt)=>({...yt,[bt]:new Float32Array(128)}),{});for(let yt=0;yt0&&et!==null)for(let bt=0;bt{copyFromChannel(et,gt,bt,lt+vt,yt)});for(let bt=0;btht.activeInputs[kt].size===0?[]:xt),vt=at(yt/nt.sampleRate,nt.sampleRate,()=>dt.process(bt,mt,gt));if(ut!==null)for(let xt=0,kt=0;xt(yt,bt,vt)=>{const xt=new WeakMap;let kt=null;const St=async(Tt,At)=>{let Et=ut(Tt),$t=null;const Dt=isOwnedByContext(Et,At),jt=Array.isArray(bt.outputChannelCount)?bt.outputChannelCount:Array.from(bt.outputChannelCount);if(ht===null){const Pt=jt.reduce((Ot,Wt)=>Ot+Wt,0),Ct=it(At,{channelCount:Math.max(1,Pt),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,Pt)}),wt=[];for(let Ot=0;Ot{const Ut=new dt(Ft,Math.ceil(Tt.context.length/128)*128,At.sampleRate),Mt=[],Ht=[];for(let Kt=0;Kt{const rn=ot(Ut,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:Kt.value});return await pt(Ut,Kt,rn.offset),rn})),sn=rt(Ut,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,Wt+zt)});for(let Kt=0;Ktmt(Tt,Ut,Kt))),gt(Ut)})(),At,bt,jt,vt,ct)}const Pt=await kt,Ct=nt(At,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[wt,It,Ot]=$t;Pt!==null&&(Ct.buffer=Pt,Ct.start(0)),Ct.connect(wt);for(let Wt=0,zt=0;Wtclass extends mt{constructor(St,Tt){super(St,Tt),this._nativeContext=St,this._audioWorklet=tt===void 0?void 0:{addModule:(At,Et)=>tt(this,At,Et)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new et(this)}createBiquadFilter(){return new it(this)}createBuffer(St,Tt,At){return new nt({length:Tt,numberOfChannels:St,sampleRate:At})}createBufferSource(){return new rt(this)}createChannelMerger(St=6){return new ot(this,{numberOfInputs:St})}createChannelSplitter(St=6){return new at(this,{numberOfOutputs:St})}createConstantSource(){return new st(this)}createConvolver(){return new lt(this)}createDelay(St=1){return new ut(this,{maxDelayTime:St})}createDynamicsCompressor(){return new ht(this)}createGain(){return new dt(this)}createIIRFilter(St,Tt){return new pt(this,{feedback:Tt,feedforward:St})}createOscillator(){return new gt(this)}createPanner(){return new yt(this)}createPeriodicWave(St,Tt,At={disableNormalization:!1}){return new bt(this,{...At,imag:Tt,real:St})}createStereoPanner(){return new vt(this)}createWaveShaper(){return new xt(this)}decodeAudioData(St,Tt,At){return ct(this._nativeContext,St).then(Et=>(typeof Tt=="function"&&Tt(Et),Et),Et=>{throw typeof At=="function"&&At(Et),Et})}},DEFAULT_OPTIONS$f={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},createBiquadFilterNodeConstructor=(tt,et,nt,rt,it,ot,at,st)=>class extends tt{constructor(ct,ut){const ht=ot(ct),dt={...DEFAULT_OPTIONS$f,...ut},pt=it(ht,dt),mt=at(ht),gt=mt?nt():null;super(ct,!1,pt,gt),this._Q=et(this,mt,pt.Q,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._detune=et(this,mt,pt.detune,1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT),-1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT)),this._frequency=et(this,mt,pt.frequency,ct.sampleRate/2,0),this._gain=et(this,mt,pt.gain,40*Math.log10(MOST_POSITIVE_SINGLE_FLOAT),MOST_NEGATIVE_SINGLE_FLOAT),this._nativeBiquadFilterNode=pt,st(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type(ct){this._nativeBiquadFilterNode.type=ct}getFrequencyResponse(ct,ut,ht){try{this._nativeBiquadFilterNode.getFrequencyResponse(ct,ut,ht)}catch(dt){throw dt.code===11?rt():dt}if(ct.length!==ut.length||ut.length!==ht.length)throw rt()}},createBiquadFilterNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap,at=async(st,lt)=>{let ct=nt(st);const ut=isOwnedByContext(ct,lt);if(!ut){const ht={Q:ct.Q.value,channelCount:ct.channelCount,channelCountMode:ct.channelCountMode,channelInterpretation:ct.channelInterpretation,detune:ct.detune.value,frequency:ct.frequency.value,gain:ct.gain.value,type:ct.type};ct=et(lt,ht)}return ot.set(lt,ct),ut?(await tt(lt,st.Q,ct.Q),await tt(lt,st.detune,ct.detune),await tt(lt,st.frequency,ct.frequency),await tt(lt,st.gain,ct.gain)):(await rt(lt,st.Q,ct.Q),await rt(lt,st.detune,ct.detune),await rt(lt,st.frequency,ct.frequency),await rt(lt,st.gain,ct.gain)),await it(st,lt,ct),ct};return{render(st,lt){const ct=ot.get(lt);return ct!==void 0?Promise.resolve(ct):at(st,lt)}}},createCacheTestResult=(tt,et)=>(nt,rt)=>{const it=et.get(nt);if(it!==void 0)return it;const ot=tt.get(nt);if(ot!==void 0)return ot;try{const at=rt();return at instanceof Promise?(tt.set(nt,at),at.catch(()=>!1).then(st=>(tt.delete(nt),et.set(nt,st),st))):(et.set(nt,at),at)}catch{return et.set(nt,!1),!1}},DEFAULT_OPTIONS$e={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},createChannelMergerNodeConstructor=(tt,et,nt,rt,it)=>class extends tt{constructor(at,st){const lt=rt(at),ct={...DEFAULT_OPTIONS$e,...st},ut=nt(lt,ct),ht=it(lt)?et():null;super(at,!1,ut,ht)}},createChannelMergerNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,numberOfInputs:st.numberOfInputs};st=tt(at,ct)}return rt.set(at,st),await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},DEFAULT_OPTIONS$d={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},createChannelSplitterNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=rt(st),ut=ot({...DEFAULT_OPTIONS$d,...lt}),ht=nt(ct,ut),dt=it(ct)?et():null;super(st,!1,ht,dt)}},createChannelSplitterNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,numberOfOutputs:st.numberOfOutputs};st=tt(at,ct)}return rt.set(at,st),await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},createConnectAudioParam=tt=>(et,nt,rt)=>tt(nt,et,rt),createConnectMultipleOutputs=tt=>(et,nt,rt=0,it=0)=>{const ot=et[rt];if(ot===void 0)throw tt();return isNativeAudioNode$1(nt)?ot.connect(nt,0,it):ot.connect(nt,0)},createConnectedNativeAudioBufferSourceNodeFactory=tt=>(et,nt)=>{const rt=tt(et,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),it=et.createBuffer(1,2,44100);return rt.buffer=it,rt.loop=!0,rt.connect(nt),rt.start(),()=>{rt.stop(),rt.disconnect(nt)}},DEFAULT_OPTIONS$c={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},createConstantSourceNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS$c,...ct},dt=rt(ut,ht),pt=ot(ut),mt=pt?nt():null;super(lt,!1,dt,mt),this._constantSourceNodeRenderer=mt,this._nativeConstantSourceNode=dt,this._offset=et(this,pt,dt.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(lt){const ct=typeof lt=="function"?at(this,lt):null;this._nativeConstantSourceNode.onended=ct;const ut=this._nativeConstantSourceNode.onended;this._onended=ut!==null&&ut===ct?lt:ut}start(lt=0){if(this._nativeConstantSourceNode.start(lt),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=lt),this.context.state!=="closed"){setInternalStateToActive(this);const ct=()=>{this._nativeConstantSourceNode.removeEventListener("ended",ct),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeConstantSourceNode.addEventListener("ended",ct)}}stop(lt=0){this._nativeConstantSourceNode.stop(lt),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=lt)}},createConstantSourceNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap;let at=null,st=null;const lt=async(ct,ut)=>{let ht=nt(ct);const dt=isOwnedByContext(ht,ut);if(!dt){const pt={channelCount:ht.channelCount,channelCountMode:ht.channelCountMode,channelInterpretation:ht.channelInterpretation,offset:ht.offset.value};ht=et(ut,pt),at!==null&&ht.start(at),st!==null&&ht.stop(st)}return ot.set(ut,ht),dt?await tt(ut,ct.offset,ht.offset):await rt(ut,ct.offset,ht.offset),await it(ct,ut,ht),ht};return{set start(ct){at=ct},set stop(ct){st=ct},render(ct,ut){const ht=ot.get(ut);return ht!==void 0?Promise.resolve(ht):lt(ct,ut)}}},createConvertNumberToUnsignedLong=tt=>et=>(tt[0]=et,tt[0]),DEFAULT_OPTIONS$b={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},createConvolverNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=rt(st),ut={...DEFAULT_OPTIONS$b,...lt},ht=nt(ct,ut),pt=it(ct)?et():null;super(st,!1,ht,pt),this._isBufferNullified=!1,this._nativeConvolverNode=ht,ut.buffer!==null&&ot(this,ut.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(st){if(this._nativeConvolverNode.buffer=st,st===null&&this._nativeConvolverNode.buffer!==null){const lt=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=lt.createBuffer(1,1,lt.sampleRate),this._isBufferNullified=!0,ot(this,0)}else this._isBufferNullified=!1,ot(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(st){this._nativeConvolverNode.normalize=st}},createConvolverNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={buffer:st.buffer,channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,disableNormalization:!st.normalize};st=tt(at,ct)}return rt.set(at,st),isNativeAudioNodeFaker(st)?await nt(ot,at,st.inputs[0]):await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},createCreateNativeOfflineAudioContext=(tt,et)=>(nt,rt,it)=>{if(et===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new et(nt,rt,it)}catch(ot){throw ot.name==="SyntaxError"?tt():ot}},createDataCloneError=()=>new DOMException("","DataCloneError"),detachArrayBuffer=tt=>{const{port1:et,port2:nt}=new MessageChannel;return new Promise(rt=>{const it=()=>{nt.onmessage=null,et.close(),nt.close(),rt()};nt.onmessage=()=>it();try{et.postMessage(tt,[tt])}catch{}finally{it()}})},createDecodeAudioData=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut)=>(ht,dt)=>{const pt=at(ht)?ht:ot(ht);if(it.has(dt)){const mt=nt();return Promise.reject(mt)}try{it.add(dt)}catch{}return et(lt,()=>lt(pt))?pt.decodeAudioData(dt).then(mt=>(detachArrayBuffer(dt).catch(()=>{}),et(st,()=>st(mt))||ut(mt),tt.add(mt),mt)):new Promise((mt,gt)=>{const yt=async()=>{try{await detachArrayBuffer(dt)}catch{}},bt=vt=>{gt(vt),yt()};try{pt.decodeAudioData(dt,vt=>{typeof vt.copyFromChannel!="function"&&(ct(vt),wrapAudioBufferGetChannelDataMethod(vt)),tt.add(vt),yt().then(()=>mt(vt))},vt=>{bt(vt===null?rt():vt)})}catch(vt){bt(vt)}})},createDecrementCycleCounter=(tt,et,nt,rt,it,ot,at,st)=>(lt,ct)=>{const ut=et.get(lt);if(ut===void 0)throw new Error("Missing the expected cycle count.");const ht=ot(lt.context),dt=st(ht);if(ut===ct){if(et.delete(lt),!dt&&at(lt)){const pt=rt(lt),{outputs:mt}=nt(lt);for(const gt of mt)if(isAudioNodeOutputConnection(gt)){const yt=rt(gt[0]);tt(pt,yt,gt[1],gt[2])}else{const yt=it(gt[0]);pt.connect(yt,gt[1])}}}else et.set(lt,ut-ct)},DEFAULT_OPTIONS$a={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},createDelayNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS$a,...ct},dt=rt(ut,ht),pt=ot(ut),mt=pt?nt(ht.maxDelayTime):null;super(lt,!1,dt,mt),this._delayTime=et(this,pt,dt.delayTime),at(this,ht.maxDelayTime)}get delayTime(){return this._delayTime}},createDelayNodeRendererFactory=(tt,et,nt,rt,it)=>ot=>{const at=new WeakMap,st=async(lt,ct)=>{let ut=nt(lt);const ht=isOwnedByContext(ut,ct);if(!ht){const dt={channelCount:ut.channelCount,channelCountMode:ut.channelCountMode,channelInterpretation:ut.channelInterpretation,delayTime:ut.delayTime.value,maxDelayTime:ot};ut=et(ct,dt)}return at.set(ct,ut),ht?await tt(ct,lt.delayTime,ut.delayTime):await rt(ct,lt.delayTime,ut.delayTime),await it(lt,ct,ut),ut};return{render(lt,ct){const ut=at.get(ct);return ut!==void 0?Promise.resolve(ut):st(lt,ct)}}},createDeleteActiveInputConnectionToAudioNode=tt=>(et,nt,rt,it)=>tt(et[it],ot=>ot[0]===nt&&ot[1]===rt),createDeleteUnrenderedAudioWorkletNode=tt=>(et,nt)=>{tt(et).delete(nt)},isDelayNode=tt=>"delayTime"in tt,createDetectCycles=(tt,et,nt)=>function rt(it,ot){const at=isAudioNode$1(ot)?ot:nt(tt,ot);if(isDelayNode(at))return[];if(it[0]===at)return[it];if(it.includes(at))return[];const{outputs:st}=et(at);return Array.from(st).map(lt=>rt([...it,at],lt[0])).reduce((lt,ct)=>lt.concat(ct),[])},getOutputAudioNodeAtIndex=(tt,et,nt)=>{const rt=et[nt];if(rt===void 0)throw tt();return rt},createDisconnectMultipleOutputs=tt=>(et,nt=void 0,rt=void 0,it=0)=>nt===void 0?et.forEach(ot=>ot.disconnect()):typeof nt=="number"?getOutputAudioNodeAtIndex(tt,et,nt).disconnect():isNativeAudioNode$1(nt)?rt===void 0?et.forEach(ot=>ot.disconnect(nt)):it===void 0?getOutputAudioNodeAtIndex(tt,et,rt).disconnect(nt,0):getOutputAudioNodeAtIndex(tt,et,rt).disconnect(nt,0,it):rt===void 0?et.forEach(ot=>ot.disconnect(nt)):getOutputAudioNodeAtIndex(tt,et,rt).disconnect(nt,0),DEFAULT_OPTIONS$9={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},createDynamicsCompressorNodeConstructor=(tt,et,nt,rt,it,ot,at,st)=>class extends tt{constructor(ct,ut){const ht=ot(ct),dt={...DEFAULT_OPTIONS$9,...ut},pt=rt(ht,dt),mt=at(ht),gt=mt?nt():null;super(ct,!1,pt,gt),this._attack=et(this,mt,pt.attack),this._knee=et(this,mt,pt.knee),this._nativeDynamicsCompressorNode=pt,this._ratio=et(this,mt,pt.ratio),this._release=et(this,mt,pt.release),this._threshold=et(this,mt,pt.threshold),st(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount(ct){const ut=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=ct,ct>2)throw this._nativeDynamicsCompressorNode.channelCount=ut,it()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode(ct){const ut=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=ct,ct==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=ut,it()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},createDynamicsCompressorNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap,at=async(st,lt)=>{let ct=nt(st);const ut=isOwnedByContext(ct,lt);if(!ut){const ht={attack:ct.attack.value,channelCount:ct.channelCount,channelCountMode:ct.channelCountMode,channelInterpretation:ct.channelInterpretation,knee:ct.knee.value,ratio:ct.ratio.value,release:ct.release.value,threshold:ct.threshold.value};ct=et(lt,ht)}return ot.set(lt,ct),ut?(await tt(lt,st.attack,ct.attack),await tt(lt,st.knee,ct.knee),await tt(lt,st.ratio,ct.ratio),await tt(lt,st.release,ct.release),await tt(lt,st.threshold,ct.threshold)):(await rt(lt,st.attack,ct.attack),await rt(lt,st.knee,ct.knee),await rt(lt,st.ratio,ct.ratio),await rt(lt,st.release,ct.release),await rt(lt,st.threshold,ct.threshold)),await it(st,lt,ct),ct};return{render(st,lt){const ct=ot.get(lt);return ct!==void 0?Promise.resolve(ct):at(st,lt)}}},createEncodingError=()=>new DOMException("","EncodingError"),createEvaluateSource=tt=>et=>new Promise((nt,rt)=>{if(tt===null){rt(new SyntaxError);return}const it=tt.document.head;if(it===null)rt(new SyntaxError);else{const ot=tt.document.createElement("script"),at=new Blob([et],{type:"application/javascript"}),st=URL.createObjectURL(at),lt=tt.onerror,ct=()=>{tt.onerror=lt,URL.revokeObjectURL(st)};tt.onerror=(ut,ht,dt,pt,mt)=>{if(ht===st||ht===tt.location.href&&dt===1&&pt===1)return ct(),rt(mt),!1;if(lt!==null)return lt(ut,ht,dt,pt,mt)},ot.onerror=()=>{ct(),rt(new SyntaxError)},ot.onload=()=>{ct(),nt()},ot.src=st,ot.type="module",it.appendChild(ot)}}),createEventTargetConstructor=tt=>class{constructor(nt){this._nativeEventTarget=nt,this._listeners=new WeakMap}addEventListener(nt,rt,it){if(rt!==null){let ot=this._listeners.get(rt);ot===void 0&&(ot=tt(this,rt),typeof rt=="function"&&this._listeners.set(rt,ot)),this._nativeEventTarget.addEventListener(nt,ot,it)}}dispatchEvent(nt){return this._nativeEventTarget.dispatchEvent(nt)}removeEventListener(nt,rt,it){const ot=rt===null?void 0:this._listeners.get(rt);this._nativeEventTarget.removeEventListener(nt,ot===void 0?null:ot,it)}},createExposeCurrentFrameAndCurrentTime=tt=>(et,nt,rt)=>{Object.defineProperties(tt,{currentFrame:{configurable:!0,get(){return Math.round(et*nt)}},currentTime:{configurable:!0,get(){return et}}});try{return rt()}finally{tt!==null&&(delete tt.currentFrame,delete tt.currentTime)}},createFetchSource=tt=>async et=>{try{const nt=await fetch(et);if(nt.ok)return[await nt.text(),nt.url]}catch{}throw tt()},DEFAULT_OPTIONS$8={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},createGainNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=it(st),ut={...DEFAULT_OPTIONS$8,...lt},ht=rt(ct,ut),dt=ot(ct),pt=dt?nt():null;super(st,!1,ht,pt),this._gain=et(this,dt,ht.gain,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get gain(){return this._gain}},createGainNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap,at=async(st,lt)=>{let ct=nt(st);const ut=isOwnedByContext(ct,lt);if(!ut){const ht={channelCount:ct.channelCount,channelCountMode:ct.channelCountMode,channelInterpretation:ct.channelInterpretation,gain:ct.gain.value};ct=et(lt,ht)}return ot.set(lt,ct),ut?await tt(lt,st.gain,ct.gain):await rt(lt,st.gain,ct.gain),await it(st,lt,ct),ct};return{render(st,lt){const ct=ot.get(lt);return ct!==void 0?Promise.resolve(ct):at(st,lt)}}},createGetActiveAudioWorkletNodeInputs=(tt,et)=>nt=>et(tt,nt),createGetAudioNodeRenderer=tt=>et=>{const nt=tt(et);if(nt.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return nt.renderer},createGetAudioNodeTailTime=tt=>et=>{var nt;return(nt=tt.get(et))!==null&&nt!==void 0?nt:0},createGetAudioParamRenderer=tt=>et=>{const nt=tt(et);if(nt.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return nt.renderer},createGetBackupOfflineAudioContext=tt=>et=>tt.get(et),createInvalidStateError=()=>new DOMException("","InvalidStateError"),createGetNativeContext=tt=>et=>{const nt=tt.get(et);if(nt===void 0)throw createInvalidStateError();return nt},createGetOrCreateBackupOfflineAudioContext=(tt,et)=>nt=>{let rt=tt.get(nt);if(rt!==void 0)return rt;if(et===null)throw new Error("Missing the native OfflineAudioContext constructor.");return rt=new et(1,1,44100),tt.set(nt,rt),rt},createGetUnrenderedAudioWorkletNodes=tt=>et=>{const nt=tt.get(et);if(nt===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return nt},createInvalidAccessError=()=>new DOMException("","InvalidAccessError"),wrapIIRFilterNodeGetFrequencyResponseMethod=tt=>{tt.getFrequencyResponse=(et=>(nt,rt,it)=>{if(nt.length!==rt.length||rt.length!==it.length)throw createInvalidAccessError();return et.call(tt,nt,rt,it)})(tt.getFrequencyResponse)},DEFAULT_OPTIONS$7={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},createIIRFilterNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=rt(st),ut=it(ct),ht={...DEFAULT_OPTIONS$7,...lt},dt=et(ct,ut?null:st.baseLatency,ht),pt=ut?nt(ht.feedback,ht.feedforward):null;super(st,!1,dt,pt),wrapIIRFilterNodeGetFrequencyResponseMethod(dt),this._nativeIIRFilterNode=dt,ot(this,1)}getFrequencyResponse(st,lt,ct){return this._nativeIIRFilterNode.getFrequencyResponse(st,lt,ct)}},filterBuffer=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut)=>{const ht=ct.length;let dt=st;for(let pt=0;pt{const it=nt instanceof Float64Array?nt:new Float64Array(nt),ot=rt instanceof Float64Array?rt:new Float64Array(rt),at=it.length,st=ot.length,lt=Math.min(at,st);if(it[0]!==1){for(let mt=0;mt(ot,at)=>{const st=new WeakMap;let lt=null;const ct=async(ut,ht)=>{let dt=null,pt=et(ut);const mt=isOwnedByContext(pt,ht);if(ht.createIIRFilter===void 0?dt=tt(ht,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):mt||(pt=ht.createIIRFilter(at,ot)),st.set(ht,dt===null?pt:dt),dt!==null){if(lt===null){if(nt===null)throw new Error("Missing the native OfflineAudioContext constructor.");const yt=new nt(ut.context.destination.channelCount,ut.context.length,ht.sampleRate);lt=(async()=>{await rt(ut,yt,yt.destination);const bt=await it(yt);return filterFullBuffer(bt,ht,ot,at)})()}const gt=await lt;return dt.buffer=gt,dt.start(0),dt}return await rt(ut,ht,pt),pt};return{render(ut,ht){const dt=st.get(ht);return dt!==void 0?Promise.resolve(dt):ct(ut,ht)}}},createIncrementCycleCounterFactory=(tt,et,nt,rt,it,ot)=>at=>(st,lt)=>{const ct=tt.get(st);if(ct===void 0){if(!at&&ot(st)){const ut=rt(st),{outputs:ht}=nt(st);for(const dt of ht)if(isAudioNodeOutputConnection(dt)){const pt=rt(dt[0]);et(ut,pt,dt[1],dt[2])}else{const pt=it(dt[0]);ut.disconnect(pt,dt[1])}}tt.set(st,lt)}else tt.set(st,ct+lt)},createIsAnyAudioContext=(tt,et)=>nt=>{const rt=tt.get(nt);return et(rt)||et(nt)},createIsAnyAudioNode=(tt,et)=>nt=>tt.has(nt)||et(nt),createIsAnyAudioParam=(tt,et)=>nt=>tt.has(nt)||et(nt),createIsAnyOfflineAudioContext=(tt,et)=>nt=>{const rt=tt.get(nt);return et(rt)||et(nt)},createIsNativeAudioContext=tt=>et=>tt!==null&&et instanceof tt,createIsNativeAudioNode=tt=>et=>tt!==null&&typeof tt.AudioNode=="function"&&et instanceof tt.AudioNode,createIsNativeAudioParam=tt=>et=>tt!==null&&typeof tt.AudioParam=="function"&&et instanceof tt.AudioParam,createIsNativeContext=(tt,et)=>nt=>tt(nt)||et(nt),createIsNativeOfflineAudioContext=tt=>et=>tt!==null&&et instanceof tt,createIsSecureContext=tt=>tt!==null&&tt.isSecureContext,createMediaElementAudioSourceNodeConstructor=(tt,et,nt,rt)=>class extends tt{constructor(ot,at){const st=nt(ot),lt=et(st,at);if(rt(st))throw TypeError();super(ot,!0,lt,null),this._nativeMediaElementAudioSourceNode=lt}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},DEFAULT_OPTIONS$6={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},createMediaStreamAudioDestinationNodeConstructor=(tt,et,nt,rt)=>class extends tt{constructor(ot,at){const st=nt(ot);if(rt(st))throw new TypeError;const lt={...DEFAULT_OPTIONS$6,...at},ct=et(st,lt);super(ot,!1,ct,null),this._nativeMediaStreamAudioDestinationNode=ct}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},createMediaStreamAudioSourceNodeConstructor=(tt,et,nt,rt)=>class extends tt{constructor(ot,at){const st=nt(ot),lt=et(st,at);if(rt(st))throw new TypeError;super(ot,!0,lt,null),this._nativeMediaStreamAudioSourceNode=lt}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},createMediaStreamTrackAudioSourceNodeConstructor=(tt,et,nt)=>class extends tt{constructor(it,ot){const at=nt(it),st=et(at,ot);super(it,!0,st,null)}},createMinimalBaseAudioContextConstructor=(tt,et,nt,rt,it,ot)=>class extends nt{constructor(st,lt){super(st),this._nativeContext=st,CONTEXT_STORE.set(this,st),rt(st)&&it.set(st,new Set),this._destination=new tt(this,lt),this._listener=et(this,st),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(st){const lt=typeof st=="function"?ot(this,st):null;this._nativeContext.onstatechange=lt;const ct=this._nativeContext.onstatechange;this._onstatechange=ct!==null&&ct===lt?st:ct}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},testPromiseSupport=tt=>{const et=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const nt=tt.decodeAudioData(et.buffer,()=>{});return nt===void 0?!1:(nt.catch(()=>{}),!0)}catch{}return!1},createMonitorConnections=(tt,et)=>(nt,rt,it)=>{const ot=new Set;return nt.connect=(at=>(st,lt=0,ct=0)=>{const ut=ot.size===0;if(et(st))return at.call(nt,st,lt,ct),tt(ot,[st,lt,ct],ht=>ht[0]===st&&ht[1]===lt&&ht[2]===ct,!0),ut&&rt(),st;at.call(nt,st,lt),tt(ot,[st,lt],ht=>ht[0]===st&&ht[1]===lt,!0),ut&&rt()})(nt.connect),nt.disconnect=(at=>(st,lt,ct)=>{const ut=ot.size>0;if(st===void 0)at.apply(nt),ot.clear();else if(typeof st=="number"){at.call(nt,st);for(const dt of ot)dt[1]===st&&ot.delete(dt)}else{et(st)?at.call(nt,st,lt,ct):at.call(nt,st,lt);for(const dt of ot)dt[0]===st&&(lt===void 0||dt[1]===lt)&&(ct===void 0||dt[2]===ct)&&ot.delete(dt)}const ht=ot.size===0;ut&&ht&&it()})(nt.disconnect),nt},assignNativeAudioNodeOption=(tt,et,nt)=>{const rt=et[nt];rt!==void 0&&rt!==tt[nt]&&(tt[nt]=rt)},assignNativeAudioNodeOptions=(tt,et)=>{assignNativeAudioNodeOption(tt,et,"channelCount"),assignNativeAudioNodeOption(tt,et,"channelCountMode"),assignNativeAudioNodeOption(tt,et,"channelInterpretation")},testAnalyserNodeGetFloatTimeDomainDataMethodSupport=tt=>typeof tt.getFloatTimeDomainData=="function",wrapAnalyserNodeGetFloatTimeDomainDataMethod=tt=>{tt.getFloatTimeDomainData=et=>{const nt=new Uint8Array(et.length);tt.getByteTimeDomainData(nt);const rt=Math.max(nt.length,tt.fftSize);for(let it=0;it(nt,rt)=>{const it=nt.createAnalyser();if(assignNativeAudioNodeOptions(it,rt),!(rt.maxDecibels>rt.minDecibels))throw et();return assignNativeAudioNodeOption(it,rt,"fftSize"),assignNativeAudioNodeOption(it,rt,"maxDecibels"),assignNativeAudioNodeOption(it,rt,"minDecibels"),assignNativeAudioNodeOption(it,rt,"smoothingTimeConstant"),tt(testAnalyserNodeGetFloatTimeDomainDataMethodSupport,()=>testAnalyserNodeGetFloatTimeDomainDataMethodSupport(it))||wrapAnalyserNodeGetFloatTimeDomainDataMethod(it),it},createNativeAudioBufferConstructor=tt=>tt===null?null:tt.hasOwnProperty("AudioBuffer")?tt.AudioBuffer:null,assignNativeAudioNodeAudioParamValue=(tt,et,nt)=>{const rt=et[nt];rt!==void 0&&rt!==tt[nt].value&&(tt[nt].value=rt)},wrapAudioBufferSourceNodeStartMethodConsecutiveCalls=tt=>{tt.start=(et=>{let nt=!1;return(rt=0,it=0,ot)=>{if(nt)throw createInvalidStateError();et.call(tt,rt,it,ot),nt=!0}})(tt.start)},wrapAudioScheduledSourceNodeStartMethodNegativeParameters=tt=>{tt.start=(et=>(nt=0,rt=0,it)=>{if(typeof it=="number"&&it<0||rt<0||nt<0)throw new RangeError("The parameters can't be negative.");et.call(tt,nt,rt,it)})(tt.start)},wrapAudioScheduledSourceNodeStopMethodNegativeParameters=tt=>{tt.stop=(et=>(nt=0)=>{if(nt<0)throw new RangeError("The parameter can't be negative.");et.call(tt,nt)})(tt.stop)},createNativeAudioBufferSourceNodeFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut)=>(ht,dt)=>{const pt=ht.createBufferSource();return assignNativeAudioNodeOptions(pt,dt),assignNativeAudioNodeAudioParamValue(pt,dt,"playbackRate"),assignNativeAudioNodeOption(pt,dt,"buffer"),assignNativeAudioNodeOption(pt,dt,"loop"),assignNativeAudioNodeOption(pt,dt,"loopEnd"),assignNativeAudioNodeOption(pt,dt,"loopStart"),et(nt,()=>nt(ht))||wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(pt),et(rt,()=>rt(ht))||lt(pt),et(it,()=>it(ht))||ct(pt,ht),et(ot,()=>ot(ht))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(pt),et(at,()=>at(ht))||ut(pt,ht),et(st,()=>st(ht))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(pt),tt(ht,pt),pt},createNativeAudioContextConstructor=tt=>tt===null?null:tt.hasOwnProperty("AudioContext")?tt.AudioContext:tt.hasOwnProperty("webkitAudioContext")?tt.webkitAudioContext:null,createNativeAudioDestinationNodeFactory=(tt,et)=>(nt,rt,it)=>{const ot=nt.destination;if(ot.channelCount!==rt)try{ot.channelCount=rt}catch{}it&&ot.channelCountMode!=="explicit"&&(ot.channelCountMode="explicit"),ot.maxChannelCount===0&&Object.defineProperty(ot,"maxChannelCount",{value:rt});const at=tt(nt,{channelCount:rt,channelCountMode:ot.channelCountMode,channelInterpretation:ot.channelInterpretation,gain:1});return et(at,"channelCount",st=>()=>st.call(at),st=>lt=>{st.call(at,lt);try{ot.channelCount=lt}catch(ct){if(lt>ot.maxChannelCount)throw ct}}),et(at,"channelCountMode",st=>()=>st.call(at),st=>lt=>{st.call(at,lt),ot.channelCountMode=lt}),et(at,"channelInterpretation",st=>()=>st.call(at),st=>lt=>{st.call(at,lt),ot.channelInterpretation=lt}),Object.defineProperty(at,"maxChannelCount",{get:()=>ot.maxChannelCount}),at.connect(ot),at},createNativeAudioWorkletNodeConstructor=tt=>tt===null?null:tt.hasOwnProperty("AudioWorkletNode")?tt.AudioWorkletNode:null,testClonabilityOfAudioWorkletNodeOptions=tt=>{const{port1:et}=new MessageChannel;try{et.postMessage(tt)}finally{et.close()}},createNativeAudioWorkletNodeFactory=(tt,et,nt,rt,it)=>(ot,at,st,lt,ct,ut)=>{if(st!==null)try{const ht=new st(ot,lt,ut),dt=new Map;let pt=null;if(Object.defineProperties(ht,{channelCount:{get:()=>ut.channelCount,set:()=>{throw tt()}},channelCountMode:{get:()=>"explicit",set:()=>{throw tt()}},onprocessorerror:{get:()=>pt,set:mt=>{typeof pt=="function"&&ht.removeEventListener("processorerror",pt),pt=typeof mt=="function"?mt:null,typeof pt=="function"&&ht.addEventListener("processorerror",pt)}}}),ht.addEventListener=(mt=>(...gt)=>{if(gt[0]==="processorerror"){const yt=typeof gt[1]=="function"?gt[1]:typeof gt[1]=="object"&>[1]!==null&&typeof gt[1].handleEvent=="function"?gt[1].handleEvent:null;if(yt!==null){const bt=dt.get(gt[1]);bt!==void 0?gt[1]=bt:(gt[1]=vt=>{vt.type==="error"?(Object.defineProperties(vt,{type:{value:"processorerror"}}),yt(vt)):yt(new ErrorEvent(gt[0],{...vt}))},dt.set(yt,gt[1]))}}return mt.call(ht,"error",gt[1],gt[2]),mt.call(ht,...gt)})(ht.addEventListener),ht.removeEventListener=(mt=>(...gt)=>{if(gt[0]==="processorerror"){const yt=dt.get(gt[1]);yt!==void 0&&(dt.delete(gt[1]),gt[1]=yt)}return mt.call(ht,"error",gt[1],gt[2]),mt.call(ht,gt[0],gt[1],gt[2])})(ht.removeEventListener),ut.numberOfOutputs!==0){const mt=nt(ot,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return ht.connect(mt).connect(ot.destination),it(ht,()=>mt.disconnect(),()=>mt.connect(ot.destination))}return ht}catch(ht){throw ht.code===11?rt():ht}if(ct===void 0)throw rt();return testClonabilityOfAudioWorkletNodeOptions(ut),et(ot,at,ct,ut)},computeBufferSize=(tt,et)=>tt===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(tt*et))))),cloneAudioWorkletNodeOptions=tt=>new Promise((et,nt)=>{const{port1:rt,port2:it}=new MessageChannel;rt.onmessage=({data:ot})=>{rt.close(),it.close(),et(ot)},rt.onmessageerror=({data:ot})=>{rt.close(),it.close(),nt(ot)},it.postMessage(tt)}),createAudioWorkletProcessorPromise=async(tt,et)=>{const nt=await cloneAudioWorkletNodeOptions(et);return new tt(nt)},createAudioWorkletProcessor=(tt,et,nt,rt)=>{let it=NODE_TO_PROCESSOR_MAPS.get(tt);it===void 0&&(it=new WeakMap,NODE_TO_PROCESSOR_MAPS.set(tt,it));const ot=createAudioWorkletProcessorPromise(nt,rt);return it.set(et,ot),ot},createNativeAudioWorkletNodeFakerFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct,ut,ht,dt)=>(pt,mt,gt,yt)=>{if(yt.numberOfInputs===0&&yt.numberOfOutputs===0)throw lt();const bt=Array.isArray(yt.outputChannelCount)?yt.outputChannelCount:Array.from(yt.outputChannelCount);if(bt.some($n=>$n<1))throw lt();if(bt.length!==yt.numberOfOutputs)throw et();if(yt.channelCountMode!=="explicit")throw lt();const vt=yt.channelCount*yt.numberOfInputs,xt=bt.reduce(($n,Nn)=>$n+Nn,0),kt=gt.parameterDescriptors===void 0?0:gt.parameterDescriptors.length;if(vt+kt>6||xt>6)throw lt();const St=new MessageChannel,Tt=[],At=[];for(let $n=0;$n$n===void 0?0:$n},maxValue:{get:()=>Nn===void 0?MOST_POSITIVE_SINGLE_FLOAT:Nn},minValue:{get:()=>Tn===void 0?MOST_NEGATIVE_SINGLE_FLOAT:Tn}}),Et.push(mn)}const $t=rt(pt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,vt+kt)}),Dt=computeBufferSize(mt,pt.sampleRate),jt=st(pt,Dt,vt+kt,Math.max(1,xt)),Pt=it(pt,{channelCount:Math.max(1,xt),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,xt)}),Ct=[];for(let $n=0;$n{const Tn=Et[Nn];return Tn.connect($t,0,vt+Nn),Tn.start(0),[$n,Tn.offset]}));$t.connect(jt);let It=yt.channelInterpretation,Ot=null;const Wt=yt.numberOfOutputs===0?[jt]:Ct,zt={get bufferSize(){return Dt},get channelCount(){return yt.channelCount},set channelCount($n){throw nt()},get channelCountMode(){return yt.channelCountMode},set channelCountMode($n){throw nt()},get channelInterpretation(){return It},set channelInterpretation($n){for(const Nn of Tt)Nn.channelInterpretation=$n;It=$n},get context(){return jt.context},get inputs(){return Tt},get numberOfInputs(){return yt.numberOfInputs},get numberOfOutputs(){return yt.numberOfOutputs},get onprocessorerror(){return Ot},set onprocessorerror($n){typeof Ot=="function"&&zt.removeEventListener("processorerror",Ot),Ot=typeof $n=="function"?$n:null,typeof Ot=="function"&&zt.addEventListener("processorerror",Ot)},get parameters(){return wt},get port(){return St.port2},addEventListener(...$n){return jt.addEventListener($n[0],$n[1],$n[2])},connect:tt.bind(null,Wt),disconnect:ct.bind(null,Wt),dispatchEvent(...$n){return jt.dispatchEvent($n[0])},removeEventListener(...$n){return jt.removeEventListener($n[0],$n[1],$n[2])}},Ft=new Map;St.port1.addEventListener=($n=>(...Nn)=>{if(Nn[0]==="message"){const Tn=typeof Nn[1]=="function"?Nn[1]:typeof Nn[1]=="object"&&Nn[1]!==null&&typeof Nn[1].handleEvent=="function"?Nn[1].handleEvent:null;if(Tn!==null){const cn=Ft.get(Nn[1]);cn!==void 0?Nn[1]=cn:(Nn[1]=mn=>{ut(pt.currentTime,pt.sampleRate,()=>Tn(mn))},Ft.set(Tn,Nn[1]))}}return $n.call(St.port1,Nn[0],Nn[1],Nn[2])})(St.port1.addEventListener),St.port1.removeEventListener=($n=>(...Nn)=>{if(Nn[0]==="message"){const Tn=Ft.get(Nn[1]);Tn!==void 0&&(Ft.delete(Nn[1]),Nn[1]=Tn)}return $n.call(St.port1,Nn[0],Nn[1],Nn[2])})(St.port1.removeEventListener);let Nt=null;Object.defineProperty(St.port1,"onmessage",{get:()=>Nt,set:$n=>{typeof Nt=="function"&&St.port1.removeEventListener("message",Nt),Nt=typeof $n=="function"?$n:null,typeof Nt=="function"&&(St.port1.addEventListener("message",Nt),St.port1.start())}}),gt.prototype.port=St.port1;let Ut=null;createAudioWorkletProcessor(pt,zt,gt,yt).then($n=>Ut=$n);const Ht=createNestedArrays(yt.numberOfInputs,yt.channelCount),en=createNestedArrays(yt.numberOfOutputs,bt),sn=gt.parameterDescriptors===void 0?[]:gt.parameterDescriptors.reduce(($n,{name:Nn})=>({...$n,[Nn]:new Float32Array(128)}),{});let Kt=!0;const rn=()=>{yt.numberOfOutputs>0&&jt.disconnect(Pt);for(let $n=0,Nn=0;$n{if(Ut!==null){const Tn=ht(zt);for(let cn=0;cn{copyFromChannel($n,sn,mn,vt+In,cn)});for(let mn=0;mn{if(Tn[wn].size>0)return nn.set(wn,Dt/128),An;const pn=nn.get(wn);return pn===void 0?[]:(An.every(kn=>kn.every(Dn=>Dn===0))&&(pn===1?nn.delete(wn):nn.set(wn,pn-1)),An)});Kt=ut(pt.currentTime+cn/pt.sampleRate,pt.sampleRate,()=>Ut.process(mn,en,sn));for(let An=0,wn=0;Anjt.connect(vn).connect(pt.destination),Qt=()=>{jt.disconnect(vn),vn.disconnect()},_n=()=>{if(Kt){Qt(),yt.numberOfOutputs>0&&jt.connect(Pt);for(let $n=0,Nn=0;$n{Kt&&(an(),rn()),hn=!1};return an(),dt(zt,_n,Pn)},createNativeBiquadFilterNode=(tt,et)=>{const nt=tt.createBiquadFilter();return assignNativeAudioNodeOptions(nt,et),assignNativeAudioNodeAudioParamValue(nt,et,"Q"),assignNativeAudioNodeAudioParamValue(nt,et,"detune"),assignNativeAudioNodeAudioParamValue(nt,et,"frequency"),assignNativeAudioNodeAudioParamValue(nt,et,"gain"),assignNativeAudioNodeOption(nt,et,"type"),nt},createNativeChannelMergerNodeFactory=(tt,et)=>(nt,rt)=>{const it=nt.createChannelMerger(rt.numberOfInputs);return tt!==null&&tt.name==="webkitAudioContext"&&et(nt,it),assignNativeAudioNodeOptions(it,rt),it},wrapChannelSplitterNode=tt=>{const et=tt.numberOfOutputs;Object.defineProperty(tt,"channelCount",{get:()=>et,set:nt=>{if(nt!==et)throw createInvalidStateError()}}),Object.defineProperty(tt,"channelCountMode",{get:()=>"explicit",set:nt=>{if(nt!=="explicit")throw createInvalidStateError()}}),Object.defineProperty(tt,"channelInterpretation",{get:()=>"discrete",set:nt=>{if(nt!=="discrete")throw createInvalidStateError()}})},createNativeChannelSplitterNode=(tt,et)=>{const nt=tt.createChannelSplitter(et.numberOfOutputs);return assignNativeAudioNodeOptions(nt,et),wrapChannelSplitterNode(nt),nt},createNativeConstantSourceNodeFactory=(tt,et,nt,rt,it)=>(ot,at)=>{if(ot.createConstantSource===void 0)return nt(ot,at);const st=ot.createConstantSource();return assignNativeAudioNodeOptions(st,at),assignNativeAudioNodeAudioParamValue(st,at,"offset"),et(rt,()=>rt(ot))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(st),et(it,()=>it(ot))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(st),tt(ot,st),st},interceptConnections=(tt,et)=>(tt.connect=et.connect.bind(et),tt.disconnect=et.disconnect.bind(et),tt),createNativeConstantSourceNodeFakerFactory=(tt,et,nt,rt)=>(it,{offset:ot,...at})=>{const st=it.createBuffer(1,2,44100),lt=et(it,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),ct=nt(it,{...at,gain:ot}),ut=st.getChannelData(0);ut[0]=1,ut[1]=1,lt.buffer=st,lt.loop=!0;const ht={get bufferSize(){},get channelCount(){return ct.channelCount},set channelCount(mt){ct.channelCount=mt},get channelCountMode(){return ct.channelCountMode},set channelCountMode(mt){ct.channelCountMode=mt},get channelInterpretation(){return ct.channelInterpretation},set channelInterpretation(mt){ct.channelInterpretation=mt},get context(){return ct.context},get inputs(){return[]},get numberOfInputs(){return lt.numberOfInputs},get numberOfOutputs(){return ct.numberOfOutputs},get offset(){return ct.gain},get onended(){return lt.onended},set onended(mt){lt.onended=mt},addEventListener(...mt){return lt.addEventListener(mt[0],mt[1],mt[2])},dispatchEvent(...mt){return lt.dispatchEvent(mt[0])},removeEventListener(...mt){return lt.removeEventListener(mt[0],mt[1],mt[2])},start(mt=0){lt.start.call(lt,mt)},stop(mt=0){lt.stop.call(lt,mt)}},dt=()=>lt.connect(ct),pt=()=>lt.disconnect(ct);return tt(it,lt),rt(interceptConnections(ht,ct),dt,pt)},createNativeConvolverNodeFactory=(tt,et)=>(nt,rt)=>{const it=nt.createConvolver();if(assignNativeAudioNodeOptions(it,rt),rt.disableNormalization===it.normalize&&(it.normalize=!rt.disableNormalization),assignNativeAudioNodeOption(it,rt,"buffer"),rt.channelCount>2||(et(it,"channelCount",ot=>()=>ot.call(it),ot=>at=>{if(at>2)throw tt();return ot.call(it,at)}),rt.channelCountMode==="max"))throw tt();return et(it,"channelCountMode",ot=>()=>ot.call(it),ot=>at=>{if(at==="max")throw tt();return ot.call(it,at)}),it},createNativeDelayNode=(tt,et)=>{const nt=tt.createDelay(et.maxDelayTime);return assignNativeAudioNodeOptions(nt,et),assignNativeAudioNodeAudioParamValue(nt,et,"delayTime"),nt},createNativeDynamicsCompressorNodeFactory=tt=>(et,nt)=>{const rt=et.createDynamicsCompressor();if(assignNativeAudioNodeOptions(rt,nt),nt.channelCount>2||nt.channelCountMode==="max")throw tt();return assignNativeAudioNodeAudioParamValue(rt,nt,"attack"),assignNativeAudioNodeAudioParamValue(rt,nt,"knee"),assignNativeAudioNodeAudioParamValue(rt,nt,"ratio"),assignNativeAudioNodeAudioParamValue(rt,nt,"release"),assignNativeAudioNodeAudioParamValue(rt,nt,"threshold"),rt},createNativeGainNode=(tt,et)=>{const nt=tt.createGain();return assignNativeAudioNodeOptions(nt,et),assignNativeAudioNodeAudioParamValue(nt,et,"gain"),nt},createNativeIIRFilterNodeFactory=tt=>(et,nt,rt)=>{if(et.createIIRFilter===void 0)return tt(et,nt,rt);const it=et.createIIRFilter(rt.feedforward,rt.feedback);return assignNativeAudioNodeOptions(it,rt),it};function divide$1(tt,et){const nt=et[0]*et[0]+et[1]*et[1];return[(tt[0]*et[0]+tt[1]*et[1])/nt,(tt[1]*et[0]-tt[0]*et[1])/nt]}function multiply(tt,et){return[tt[0]*et[0]-tt[1]*et[1],tt[0]*et[1]+tt[1]*et[0]]}function evaluatePolynomial(tt,et){let nt=[0,0];for(let rt=tt.length-1;rt>=0;rt-=1)nt=multiply(nt,et),nt[0]+=tt[rt];return nt}const createNativeIIRFilterNodeFakerFactory=(tt,et,nt,rt)=>(it,ot,{channelCount:at,channelCountMode:st,channelInterpretation:lt,feedback:ct,feedforward:ut})=>{const ht=computeBufferSize(ot,it.sampleRate),dt=ct instanceof Float64Array?ct:new Float64Array(ct),pt=ut instanceof Float64Array?ut:new Float64Array(ut),mt=dt.length,gt=pt.length,yt=Math.min(mt,gt);if(mt===0||mt>20)throw rt();if(dt[0]===0)throw et();if(gt===0||gt>20)throw rt();if(pt[0]===0)throw et();if(dt[0]!==1){for(let Et=0;Et{const $t=Et.inputBuffer,Dt=Et.outputBuffer,jt=$t.numberOfChannels;for(let Pt=0;Pttt.createMediaElementSource(et.mediaElement),createNativeMediaStreamAudioDestinationNode=(tt,et)=>{const nt=tt.createMediaStreamDestination();return assignNativeAudioNodeOptions(nt,et),nt.numberOfOutputs===1&&Object.defineProperty(nt,"numberOfOutputs",{get:()=>0}),nt},createNativeMediaStreamAudioSourceNode=(tt,{mediaStream:et})=>{const nt=et.getAudioTracks();nt.sort((ot,at)=>ot.idat.id?1:0);const rt=nt.slice(0,1),it=tt.createMediaStreamSource(new MediaStream(rt));return Object.defineProperty(it,"mediaStream",{value:et}),it},createNativeMediaStreamTrackAudioSourceNodeFactory=(tt,et)=>(nt,{mediaStreamTrack:rt})=>{if(typeof nt.createMediaStreamTrackSource=="function")return nt.createMediaStreamTrackSource(rt);const it=new MediaStream([rt]),ot=nt.createMediaStreamSource(it);if(rt.kind!=="audio")throw tt();if(et(nt))throw new TypeError;return ot},createNativeOfflineAudioContextConstructor=tt=>tt===null?null:tt.hasOwnProperty("OfflineAudioContext")?tt.OfflineAudioContext:tt.hasOwnProperty("webkitOfflineAudioContext")?tt.webkitOfflineAudioContext:null,createNativeOscillatorNodeFactory=(tt,et,nt,rt,it,ot)=>(at,st)=>{const lt=at.createOscillator();return assignNativeAudioNodeOptions(lt,st),assignNativeAudioNodeAudioParamValue(lt,st,"detune"),assignNativeAudioNodeAudioParamValue(lt,st,"frequency"),st.periodicWave!==void 0?lt.setPeriodicWave(st.periodicWave):assignNativeAudioNodeOption(lt,st,"type"),et(nt,()=>nt(at))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(lt),et(rt,()=>rt(at))||ot(lt,at),et(it,()=>it(at))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(lt),tt(at,lt),lt},createNativePannerNodeFactory=tt=>(et,nt)=>{const rt=et.createPanner();return rt.orientationX===void 0?tt(et,nt):(assignNativeAudioNodeOptions(rt,nt),assignNativeAudioNodeAudioParamValue(rt,nt,"orientationX"),assignNativeAudioNodeAudioParamValue(rt,nt,"orientationY"),assignNativeAudioNodeAudioParamValue(rt,nt,"orientationZ"),assignNativeAudioNodeAudioParamValue(rt,nt,"positionX"),assignNativeAudioNodeAudioParamValue(rt,nt,"positionY"),assignNativeAudioNodeAudioParamValue(rt,nt,"positionZ"),assignNativeAudioNodeOption(rt,nt,"coneInnerAngle"),assignNativeAudioNodeOption(rt,nt,"coneOuterAngle"),assignNativeAudioNodeOption(rt,nt,"coneOuterGain"),assignNativeAudioNodeOption(rt,nt,"distanceModel"),assignNativeAudioNodeOption(rt,nt,"maxDistance"),assignNativeAudioNodeOption(rt,nt,"panningModel"),assignNativeAudioNodeOption(rt,nt,"refDistance"),assignNativeAudioNodeOption(rt,nt,"rolloffFactor"),rt)},createNativePannerNodeFakerFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct)=>(ut,{coneInnerAngle:ht,coneOuterAngle:dt,coneOuterGain:pt,distanceModel:mt,maxDistance:gt,orientationX:yt,orientationY:bt,orientationZ:vt,panningModel:xt,positionX:kt,positionY:St,positionZ:Tt,refDistance:At,rolloffFactor:Et,...$t})=>{const Dt=ut.createPanner();if($t.channelCount>2||$t.channelCountMode==="max")throw at();assignNativeAudioNodeOptions(Dt,$t);const jt={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},Pt=nt(ut,{...jt,channelInterpretation:"speakers",numberOfInputs:6}),Ct=rt(ut,{...$t,gain:1}),wt=rt(ut,{...jt,gain:1}),It=rt(ut,{...jt,gain:0}),Ot=rt(ut,{...jt,gain:0}),Wt=rt(ut,{...jt,gain:0}),zt=rt(ut,{...jt,gain:0}),Ft=rt(ut,{...jt,gain:0}),Nt=it(ut,256,6,1),Ut=ot(ut,{...jt,curve:new Float32Array([1,1]),oversample:"none"});let Mt=[yt,bt,vt],Ht=[kt,St,Tt];const en=new Float32Array(1);Nt.onaudioprocess=({inputBuffer:nn})=>{const hn=[lt(nn,en,0),lt(nn,en,1),lt(nn,en,2)];hn.some((an,Qt)=>an!==Mt[Qt])&&(Dt.setOrientation(...hn),Mt=hn);const vn=[lt(nn,en,3),lt(nn,en,4),lt(nn,en,5)];vn.some((an,Qt)=>an!==Ht[Qt])&&(Dt.setPosition(...vn),Ht=vn)},Object.defineProperty(It.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ot.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Wt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(zt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ft.gain,"defaultValue",{get:()=>0});const sn={get bufferSize(){},get channelCount(){return Dt.channelCount},set channelCount(nn){if(nn>2)throw at();Ct.channelCount=nn,Dt.channelCount=nn},get channelCountMode(){return Dt.channelCountMode},set channelCountMode(nn){if(nn==="max")throw at();Ct.channelCountMode=nn,Dt.channelCountMode=nn},get channelInterpretation(){return Dt.channelInterpretation},set channelInterpretation(nn){Ct.channelInterpretation=nn,Dt.channelInterpretation=nn},get coneInnerAngle(){return Dt.coneInnerAngle},set coneInnerAngle(nn){Dt.coneInnerAngle=nn},get coneOuterAngle(){return Dt.coneOuterAngle},set coneOuterAngle(nn){Dt.coneOuterAngle=nn},get coneOuterGain(){return Dt.coneOuterGain},set coneOuterGain(nn){if(nn<0||nn>1)throw et();Dt.coneOuterGain=nn},get context(){return Dt.context},get distanceModel(){return Dt.distanceModel},set distanceModel(nn){Dt.distanceModel=nn},get inputs(){return[Ct]},get maxDistance(){return Dt.maxDistance},set maxDistance(nn){if(nn<0)throw new RangeError;Dt.maxDistance=nn},get numberOfInputs(){return Dt.numberOfInputs},get numberOfOutputs(){return Dt.numberOfOutputs},get orientationX(){return wt.gain},get orientationY(){return It.gain},get orientationZ(){return Ot.gain},get panningModel(){return Dt.panningModel},set panningModel(nn){Dt.panningModel=nn},get positionX(){return Wt.gain},get positionY(){return zt.gain},get positionZ(){return Ft.gain},get refDistance(){return Dt.refDistance},set refDistance(nn){if(nn<0)throw new RangeError;Dt.refDistance=nn},get rolloffFactor(){return Dt.rolloffFactor},set rolloffFactor(nn){if(nn<0)throw new RangeError;Dt.rolloffFactor=nn},addEventListener(...nn){return Ct.addEventListener(nn[0],nn[1],nn[2])},dispatchEvent(...nn){return Ct.dispatchEvent(nn[0])},removeEventListener(...nn){return Ct.removeEventListener(nn[0],nn[1],nn[2])}};ht!==sn.coneInnerAngle&&(sn.coneInnerAngle=ht),dt!==sn.coneOuterAngle&&(sn.coneOuterAngle=dt),pt!==sn.coneOuterGain&&(sn.coneOuterGain=pt),mt!==sn.distanceModel&&(sn.distanceModel=mt),gt!==sn.maxDistance&&(sn.maxDistance=gt),yt!==sn.orientationX.value&&(sn.orientationX.value=yt),bt!==sn.orientationY.value&&(sn.orientationY.value=bt),vt!==sn.orientationZ.value&&(sn.orientationZ.value=vt),xt!==sn.panningModel&&(sn.panningModel=xt),kt!==sn.positionX.value&&(sn.positionX.value=kt),St!==sn.positionY.value&&(sn.positionY.value=St),Tt!==sn.positionZ.value&&(sn.positionZ.value=Tt),At!==sn.refDistance&&(sn.refDistance=At),Et!==sn.rolloffFactor&&(sn.rolloffFactor=Et),(Mt[0]!==1||Mt[1]!==0||Mt[2]!==0)&&Dt.setOrientation(...Mt),(Ht[0]!==0||Ht[1]!==0||Ht[2]!==0)&&Dt.setPosition(...Ht);const Kt=()=>{Ct.connect(Dt),tt(Ct,Ut,0,0),Ut.connect(wt).connect(Pt,0,0),Ut.connect(It).connect(Pt,0,1),Ut.connect(Ot).connect(Pt,0,2),Ut.connect(Wt).connect(Pt,0,3),Ut.connect(zt).connect(Pt,0,4),Ut.connect(Ft).connect(Pt,0,5),Pt.connect(Nt).connect(ut.destination)},rn=()=>{Ct.disconnect(Dt),st(Ct,Ut,0,0),Ut.disconnect(wt),wt.disconnect(Pt),Ut.disconnect(It),It.disconnect(Pt),Ut.disconnect(Ot),Ot.disconnect(Pt),Ut.disconnect(Wt),Wt.disconnect(Pt),Ut.disconnect(zt),zt.disconnect(Pt),Ut.disconnect(Ft),Ft.disconnect(Pt),Pt.disconnect(Nt),Nt.disconnect(ut.destination)};return ct(interceptConnections(sn,Dt),Kt,rn)},createNativePeriodicWaveFactory=tt=>(et,{disableNormalization:nt,imag:rt,real:it})=>{const ot=rt instanceof Float32Array?rt:new Float32Array(rt),at=it instanceof Float32Array?it:new Float32Array(it),st=et.createPeriodicWave(at,ot,{disableNormalization:nt});if(Array.from(rt).length<2)throw tt();return st},createNativeScriptProcessorNode=(tt,et,nt,rt)=>tt.createScriptProcessor(et,nt,rt),createNativeStereoPannerNodeFactory=(tt,et)=>(nt,rt)=>{const it=rt.channelCountMode;if(it==="clamped-max")throw et();if(nt.createStereoPanner===void 0)return tt(nt,rt);const ot=nt.createStereoPanner();return assignNativeAudioNodeOptions(ot,rt),assignNativeAudioNodeAudioParamValue(ot,rt,"pan"),Object.defineProperty(ot,"channelCountMode",{get:()=>it,set:at=>{if(at!==it)throw et()}}),ot},createNativeStereoPannerNodeFakerFactory=(tt,et,nt,rt,it,ot)=>{const st=new Float32Array([1,1]),lt=Math.PI/2,ct={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},ut={...ct,oversample:"none"},ht=(mt,gt,yt,bt)=>{const vt=new Float32Array(16385),xt=new Float32Array(16385);for(let $t=0;$t<16385;$t+=1){const Dt=$t/16384*lt;vt[$t]=Math.cos(Dt),xt[$t]=Math.sin(Dt)}const kt=nt(mt,{...ct,gain:0}),St=rt(mt,{...ut,curve:vt}),Tt=rt(mt,{...ut,curve:st}),At=nt(mt,{...ct,gain:0}),Et=rt(mt,{...ut,curve:xt});return{connectGraph(){gt.connect(kt),gt.connect(Tt.inputs===void 0?Tt:Tt.inputs[0]),gt.connect(At),Tt.connect(yt),yt.connect(St.inputs===void 0?St:St.inputs[0]),yt.connect(Et.inputs===void 0?Et:Et.inputs[0]),St.connect(kt.gain),Et.connect(At.gain),kt.connect(bt,0,0),At.connect(bt,0,1)},disconnectGraph(){gt.disconnect(kt),gt.disconnect(Tt.inputs===void 0?Tt:Tt.inputs[0]),gt.disconnect(At),Tt.disconnect(yt),yt.disconnect(St.inputs===void 0?St:St.inputs[0]),yt.disconnect(Et.inputs===void 0?Et:Et.inputs[0]),St.disconnect(kt.gain),Et.disconnect(At.gain),kt.disconnect(bt,0,0),At.disconnect(bt,0,1)}}},dt=(mt,gt,yt,bt)=>{const vt=new Float32Array(16385),xt=new Float32Array(16385),kt=new Float32Array(16385),St=new Float32Array(16385),Tt=Math.floor(16385/2);for(let Wt=0;Wt<16385;Wt+=1)if(Wt>Tt){const zt=(Wt-Tt)/(16384-Tt)*lt;vt[Wt]=Math.cos(zt),xt[Wt]=Math.sin(zt),kt[Wt]=0,St[Wt]=1}else{const zt=Wt/(16384-Tt)*lt;vt[Wt]=1,xt[Wt]=0,kt[Wt]=Math.cos(zt),St[Wt]=Math.sin(zt)}const At=et(mt,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),Et=nt(mt,{...ct,gain:0}),$t=rt(mt,{...ut,curve:vt}),Dt=nt(mt,{...ct,gain:0}),jt=rt(mt,{...ut,curve:xt}),Pt=rt(mt,{...ut,curve:st}),Ct=nt(mt,{...ct,gain:0}),wt=rt(mt,{...ut,curve:kt}),It=nt(mt,{...ct,gain:0}),Ot=rt(mt,{...ut,curve:St});return{connectGraph(){gt.connect(At),gt.connect(Pt.inputs===void 0?Pt:Pt.inputs[0]),At.connect(Et,0),At.connect(Dt,0),At.connect(Ct,1),At.connect(It,1),Pt.connect(yt),yt.connect($t.inputs===void 0?$t:$t.inputs[0]),yt.connect(jt.inputs===void 0?jt:jt.inputs[0]),yt.connect(wt.inputs===void 0?wt:wt.inputs[0]),yt.connect(Ot.inputs===void 0?Ot:Ot.inputs[0]),$t.connect(Et.gain),jt.connect(Dt.gain),wt.connect(Ct.gain),Ot.connect(It.gain),Et.connect(bt,0,0),Ct.connect(bt,0,0),Dt.connect(bt,0,1),It.connect(bt,0,1)},disconnectGraph(){gt.disconnect(At),gt.disconnect(Pt.inputs===void 0?Pt:Pt.inputs[0]),At.disconnect(Et,0),At.disconnect(Dt,0),At.disconnect(Ct,1),At.disconnect(It,1),Pt.disconnect(yt),yt.disconnect($t.inputs===void 0?$t:$t.inputs[0]),yt.disconnect(jt.inputs===void 0?jt:jt.inputs[0]),yt.disconnect(wt.inputs===void 0?wt:wt.inputs[0]),yt.disconnect(Ot.inputs===void 0?Ot:Ot.inputs[0]),$t.disconnect(Et.gain),jt.disconnect(Dt.gain),wt.disconnect(Ct.gain),Ot.disconnect(It.gain),Et.disconnect(bt,0,0),Ct.disconnect(bt,0,0),Dt.disconnect(bt,0,1),It.disconnect(bt,0,1)}}},pt=(mt,gt,yt,bt,vt)=>{if(gt===1)return ht(mt,yt,bt,vt);if(gt===2)return dt(mt,yt,bt,vt);throw it()};return(mt,{channelCount:gt,channelCountMode:yt,pan:bt,...vt})=>{if(yt==="max")throw it();const xt=tt(mt,{...vt,channelCount:1,channelCountMode:yt,numberOfInputs:2}),kt=nt(mt,{...vt,channelCount:gt,channelCountMode:yt,gain:1}),St=nt(mt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:bt});let{connectGraph:Tt,disconnectGraph:At}=pt(mt,gt,kt,St,xt);Object.defineProperty(St.gain,"defaultValue",{get:()=>0}),Object.defineProperty(St.gain,"maxValue",{get:()=>1}),Object.defineProperty(St.gain,"minValue",{get:()=>-1});const Et={get bufferSize(){},get channelCount(){return kt.channelCount},set channelCount(Pt){kt.channelCount!==Pt&&($t&&At(),{connectGraph:Tt,disconnectGraph:At}=pt(mt,Pt,kt,St,xt),$t&&Tt()),kt.channelCount=Pt},get channelCountMode(){return kt.channelCountMode},set channelCountMode(Pt){if(Pt==="clamped-max"||Pt==="max")throw it();kt.channelCountMode=Pt},get channelInterpretation(){return kt.channelInterpretation},set channelInterpretation(Pt){kt.channelInterpretation=Pt},get context(){return kt.context},get inputs(){return[kt]},get numberOfInputs(){return kt.numberOfInputs},get numberOfOutputs(){return kt.numberOfOutputs},get pan(){return St.gain},addEventListener(...Pt){return kt.addEventListener(Pt[0],Pt[1],Pt[2])},dispatchEvent(...Pt){return kt.dispatchEvent(Pt[0])},removeEventListener(...Pt){return kt.removeEventListener(Pt[0],Pt[1],Pt[2])}};let $t=!1;const Dt=()=>{Tt(),$t=!0},jt=()=>{At(),$t=!1};return ot(interceptConnections(Et,xt),Dt,jt)}},createNativeWaveShaperNodeFactory=(tt,et,nt,rt,it,ot,at)=>(st,lt)=>{const ct=st.createWaveShaper();if(ot!==null&&ot.name==="webkitAudioContext"&&st.createGain().gain.automationRate===void 0)return nt(st,lt);assignNativeAudioNodeOptions(ct,lt);const ut=lt.curve===null||lt.curve instanceof Float32Array?lt.curve:new Float32Array(lt.curve);if(ut!==null&&ut.length<2)throw et();assignNativeAudioNodeOption(ct,{curve:ut},"curve"),assignNativeAudioNodeOption(ct,lt,"oversample");let ht=null,dt=!1;return at(ct,"curve",gt=>()=>gt.call(ct),gt=>yt=>(gt.call(ct,yt),dt&&(rt(yt)&&ht===null?ht=tt(st,ct):!rt(yt)&&ht!==null&&(ht(),ht=null)),yt)),it(ct,()=>{dt=!0,rt(ct.curve)&&(ht=tt(st,ct))},()=>{dt=!1,ht!==null&&(ht(),ht=null)})},createNativeWaveShaperNodeFakerFactory=(tt,et,nt,rt,it)=>(ot,{curve:at,oversample:st,...lt})=>{const ct=ot.createWaveShaper(),ut=ot.createWaveShaper();assignNativeAudioNodeOptions(ct,lt),assignNativeAudioNodeOptions(ut,lt);const ht=nt(ot,{...lt,gain:1}),dt=nt(ot,{...lt,gain:-1}),pt=nt(ot,{...lt,gain:1}),mt=nt(ot,{...lt,gain:-1});let gt=null,yt=!1,bt=null;const vt={get bufferSize(){},get channelCount(){return ct.channelCount},set channelCount(St){ht.channelCount=St,dt.channelCount=St,ct.channelCount=St,pt.channelCount=St,ut.channelCount=St,mt.channelCount=St},get channelCountMode(){return ct.channelCountMode},set channelCountMode(St){ht.channelCountMode=St,dt.channelCountMode=St,ct.channelCountMode=St,pt.channelCountMode=St,ut.channelCountMode=St,mt.channelCountMode=St},get channelInterpretation(){return ct.channelInterpretation},set channelInterpretation(St){ht.channelInterpretation=St,dt.channelInterpretation=St,ct.channelInterpretation=St,pt.channelInterpretation=St,ut.channelInterpretation=St,mt.channelInterpretation=St},get context(){return ct.context},get curve(){return bt},set curve(St){if(St!==null&&St.length<2)throw et();if(St===null)ct.curve=St,ut.curve=St;else{const Tt=St.length,At=new Float32Array(Tt+2-Tt%2),Et=new Float32Array(Tt+2-Tt%2);At[0]=St[0],Et[0]=-St[Tt-1];const $t=Math.ceil((Tt+1)/2),Dt=(Tt+1)/2-1;for(let jt=1;jt<$t;jt+=1){const Pt=jt/$t*Dt,Ct=Math.floor(Pt),wt=Math.ceil(Pt);At[jt]=Ct===wt?St[Ct]:(1-(Pt-Ct))*St[Ct]+(1-(wt-Pt))*St[wt],Et[jt]=Ct===wt?-St[Tt-1-Ct]:-((1-(Pt-Ct))*St[Tt-1-Ct])-(1-(wt-Pt))*St[Tt-1-wt]}At[$t]=Tt%2===1?St[$t-1]:(St[$t-2]+St[$t-1])/2,ct.curve=At,ut.curve=Et}bt=St,yt&&(rt(bt)&>===null?gt=tt(ot,ht):gt!==null&&(gt(),gt=null))},get inputs(){return[ht]},get numberOfInputs(){return ct.numberOfInputs},get numberOfOutputs(){return ct.numberOfOutputs},get oversample(){return ct.oversample},set oversample(St){ct.oversample=St,ut.oversample=St},addEventListener(...St){return ht.addEventListener(St[0],St[1],St[2])},dispatchEvent(...St){return ht.dispatchEvent(St[0])},removeEventListener(...St){return ht.removeEventListener(St[0],St[1],St[2])}};at!==null&&(vt.curve=at instanceof Float32Array?at:new Float32Array(at)),st!==vt.oversample&&(vt.oversample=st);const xt=()=>{ht.connect(ct).connect(pt),ht.connect(dt).connect(ut).connect(mt).connect(pt),yt=!0,rt(bt)&&(gt=tt(ot,ht))},kt=()=>{ht.disconnect(ct),ct.disconnect(pt),ht.disconnect(dt),dt.disconnect(ut),ut.disconnect(mt),mt.disconnect(pt),yt=!1,gt!==null&&(gt(),gt=null)};return it(interceptConnections(vt,pt),xt,kt)},createNotSupportedError=()=>new DOMException("","NotSupportedError"),DEFAULT_OPTIONS$5={numberOfChannels:1},createOfflineAudioContextConstructor=(tt,et,nt,rt,it)=>class extends tt{constructor(at,st,lt){let ct;if(typeof at=="number"&&st!==void 0&<!==void 0)ct={length:st,numberOfChannels:at,sampleRate:lt};else if(typeof at=="object")ct=at;else throw new Error("The given parameters are not valid.");const{length:ut,numberOfChannels:ht,sampleRate:dt}={...DEFAULT_OPTIONS$5,...ct},pt=rt(ht,ut,dt);et(testPromiseSupport,()=>testPromiseSupport(pt))||pt.addEventListener("statechange",(()=>{let mt=0;const gt=yt=>{this._state==="running"&&(mt>0?(pt.removeEventListener("statechange",gt),yt.stopImmediatePropagation(),this._waitForThePromiseToSettle(yt)):mt+=1)};return gt})()),super(pt,ht),this._length=ut,this._nativeOfflineAudioContext=pt,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(nt()):(this._state="running",it(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,deactivateAudioGraph(this)}))}_waitForThePromiseToSettle(at){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(at):setTimeout(()=>this._waitForThePromiseToSettle(at))}},DEFAULT_OPTIONS$4={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},createOscillatorNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS$4,...ct},dt=nt(ut,ht),pt=ot(ut),mt=pt?rt():null,gt=lt.sampleRate/2;super(lt,!1,dt,mt),this._detune=et(this,pt,dt.detune,153600,-153600),this._frequency=et(this,pt,dt.frequency,gt,-gt),this._nativeOscillatorNode=dt,this._onended=null,this._oscillatorNodeRenderer=mt,this._oscillatorNodeRenderer!==null&&ht.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=ht.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(lt){const ct=typeof lt=="function"?at(this,lt):null;this._nativeOscillatorNode.onended=ct;const ut=this._nativeOscillatorNode.onended;this._onended=ut!==null&&ut===ct?lt:ut}get type(){return this._nativeOscillatorNode.type}set type(lt){this._nativeOscillatorNode.type=lt,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(lt){this._nativeOscillatorNode.setPeriodicWave(lt),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=lt)}start(lt=0){if(this._nativeOscillatorNode.start(lt),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=lt),this.context.state!=="closed"){setInternalStateToActive(this);const ct=()=>{this._nativeOscillatorNode.removeEventListener("ended",ct),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeOscillatorNode.addEventListener("ended",ct)}}stop(lt=0){this._nativeOscillatorNode.stop(lt),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=lt)}},createOscillatorNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap;let at=null,st=null,lt=null;const ct=async(ut,ht)=>{let dt=nt(ut);const pt=isOwnedByContext(dt,ht);if(!pt){const mt={channelCount:dt.channelCount,channelCountMode:dt.channelCountMode,channelInterpretation:dt.channelInterpretation,detune:dt.detune.value,frequency:dt.frequency.value,periodicWave:at===null?void 0:at,type:dt.type};dt=et(ht,mt),st!==null&&dt.start(st),lt!==null&&dt.stop(lt)}return ot.set(ht,dt),pt?(await tt(ht,ut.detune,dt.detune),await tt(ht,ut.frequency,dt.frequency)):(await rt(ht,ut.detune,dt.detune),await rt(ht,ut.frequency,dt.frequency)),await it(ut,ht,dt),dt};return{set periodicWave(ut){at=ut},set start(ut){st=ut},set stop(ut){lt=ut},render(ut,ht){const dt=ot.get(ht);return dt!==void 0?Promise.resolve(dt):ct(ut,ht)}}},DEFAULT_OPTIONS$3={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},createPannerNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS$3,...ct},dt=nt(ut,ht),pt=ot(ut),mt=pt?rt():null;super(lt,!1,dt,mt),this._nativePannerNode=dt,this._orientationX=et(this,pt,dt.orientationX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationY=et(this,pt,dt.orientationY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationZ=et(this,pt,dt.orientationZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionX=et(this,pt,dt.positionX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionY=et(this,pt,dt.positionY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionZ=et(this,pt,dt.positionZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),at(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(lt){this._nativePannerNode.coneInnerAngle=lt}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(lt){this._nativePannerNode.coneOuterAngle=lt}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(lt){this._nativePannerNode.coneOuterGain=lt}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(lt){this._nativePannerNode.distanceModel=lt}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(lt){this._nativePannerNode.maxDistance=lt}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(lt){this._nativePannerNode.panningModel=lt}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(lt){this._nativePannerNode.refDistance=lt}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(lt){this._nativePannerNode.rolloffFactor=lt}},createPannerNodeRendererFactory=(tt,et,nt,rt,it,ot,at,st,lt,ct)=>()=>{const ut=new WeakMap;let ht=null;const dt=async(pt,mt)=>{let gt=null,yt=ot(pt);const bt={channelCount:yt.channelCount,channelCountMode:yt.channelCountMode,channelInterpretation:yt.channelInterpretation},vt={...bt,coneInnerAngle:yt.coneInnerAngle,coneOuterAngle:yt.coneOuterAngle,coneOuterGain:yt.coneOuterGain,distanceModel:yt.distanceModel,maxDistance:yt.maxDistance,panningModel:yt.panningModel,refDistance:yt.refDistance,rolloffFactor:yt.rolloffFactor},xt=isOwnedByContext(yt,mt);if("bufferSize"in yt)gt=rt(mt,{...bt,gain:1});else if(!xt){const kt={...vt,orientationX:yt.orientationX.value,orientationY:yt.orientationY.value,orientationZ:yt.orientationZ.value,positionX:yt.positionX.value,positionY:yt.positionY.value,positionZ:yt.positionZ.value};yt=it(mt,kt)}if(ut.set(mt,gt===null?yt:gt),gt!==null){if(ht===null){if(at===null)throw new Error("Missing the native OfflineAudioContext constructor.");const jt=new at(6,pt.context.length,mt.sampleRate),Pt=et(jt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});Pt.connect(jt.destination),ht=(async()=>{const Ct=await Promise.all([pt.orientationX,pt.orientationY,pt.orientationZ,pt.positionX,pt.positionY,pt.positionZ].map(async(wt,It)=>{const Ot=nt(jt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:It===0?1:0});return await st(jt,wt,Ot.offset),Ot}));for(let wt=0;wt<6;wt+=1)Ct[wt].connect(Pt,0,wt),Ct[wt].start(0);return ct(jt)})()}const kt=await ht,St=rt(mt,{...bt,gain:1});await lt(pt,mt,St);const Tt=[];for(let jt=0;jtwt!==At[It])||Ct.some((wt,It)=>wt!==Et[It])){At=Pt,Et=Ct;const wt=jt/mt.sampleRate;$t.gain.setValueAtTime(0,wt),$t=rt(mt,{...bt,gain:0}),Dt=it(mt,{...vt,orientationX:At[0],orientationY:At[1],orientationZ:At[2],positionX:Et[0],positionY:Et[1],positionZ:Et[2]}),$t.gain.setValueAtTime(1,wt),St.connect($t).connect(Dt.inputs[0]),Dt.connect(gt)}}return gt}return xt?(await tt(mt,pt.orientationX,yt.orientationX),await tt(mt,pt.orientationY,yt.orientationY),await tt(mt,pt.orientationZ,yt.orientationZ),await tt(mt,pt.positionX,yt.positionX),await tt(mt,pt.positionY,yt.positionY),await tt(mt,pt.positionZ,yt.positionZ)):(await st(mt,pt.orientationX,yt.orientationX),await st(mt,pt.orientationY,yt.orientationY),await st(mt,pt.orientationZ,yt.orientationZ),await st(mt,pt.positionX,yt.positionX),await st(mt,pt.positionY,yt.positionY),await st(mt,pt.positionZ,yt.positionZ)),isNativeAudioNodeFaker(yt)?await lt(pt,mt,yt.inputs[0]):await lt(pt,mt,yt),yt};return{render(pt,mt){const gt=ut.get(mt);return gt!==void 0?Promise.resolve(gt):dt(pt,mt)}}},DEFAULT_OPTIONS$2={disableNormalization:!1},createPeriodicWaveConstructor=(tt,et,nt,rt)=>class _w{constructor(ot,at){const st=et(ot),lt=rt({...DEFAULT_OPTIONS$2,...at}),ct=tt(st,lt);return nt.add(ct),ct}static[Symbol.hasInstance](ot){return ot!==null&&typeof ot=="object"&&Object.getPrototypeOf(ot)===_w.prototype||nt.has(ot)}},createRenderAutomation=(tt,et)=>(nt,rt,it)=>(tt(rt).replay(it),et(rt,nt,it)),createRenderInputsOfAudioNode=(tt,et,nt)=>async(rt,it,ot)=>{const at=tt(rt);await Promise.all(at.activeInputs.map((st,lt)=>Array.from(st).map(async([ct,ut])=>{const dt=await et(ct).render(ct,it),pt=rt.context.destination;!nt(ct)&&(rt!==pt||!nt(rt))&&dt.connect(ot,ut,lt)})).reduce((st,lt)=>[...st,...lt],[]))},createRenderInputsOfAudioParam=(tt,et,nt)=>async(rt,it,ot)=>{const at=et(rt);await Promise.all(Array.from(at.activeInputs).map(async([st,lt])=>{const ut=await tt(st).render(st,it);nt(st)||ut.connect(ot,lt)}))},createRenderNativeOfflineAudioContext=(tt,et,nt,rt)=>it=>tt(testPromiseSupport,()=>testPromiseSupport(it))?Promise.resolve(tt(rt,rt)).then(ot=>{if(!ot){const at=nt(it,512,0,1);it.oncomplete=()=>{at.onaudioprocess=null,at.disconnect()},at.onaudioprocess=()=>it.currentTime,at.connect(it.destination)}return it.startRendering()}):new Promise(ot=>{const at=et(it,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});it.oncomplete=st=>{at.disconnect(),ot(st.renderedBuffer)},at.connect(it.destination),it.startRendering()}),createSetActiveAudioWorkletNodeInputs=tt=>(et,nt)=>{tt.set(et,nt)},createSetAudioNodeTailTime=tt=>(et,nt)=>tt.set(et,nt),createStartRendering=(tt,et,nt,rt,it,ot,at,st)=>(lt,ct)=>nt(lt).render(lt,ct).then(()=>Promise.all(Array.from(rt(ct)).map(ut=>nt(ut).render(ut,ct)))).then(()=>it(ct)).then(ut=>(typeof ut.copyFromChannel!="function"?(at(ut),wrapAudioBufferGetChannelDataMethod(ut)):et(ot,()=>ot(ut))||st(ut),tt.add(ut),ut)),DEFAULT_OPTIONS$1={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},createStereoPannerNodeConstructor=(tt,et,nt,rt,it,ot)=>class extends tt{constructor(st,lt){const ct=it(st),ut={...DEFAULT_OPTIONS$1,...lt},ht=nt(ct,ut),dt=ot(ct),pt=dt?rt():null;super(st,!1,ht,pt),this._pan=et(this,dt,ht.pan)}get pan(){return this._pan}},createStereoPannerNodeRendererFactory=(tt,et,nt,rt,it)=>()=>{const ot=new WeakMap,at=async(st,lt)=>{let ct=nt(st);const ut=isOwnedByContext(ct,lt);if(!ut){const ht={channelCount:ct.channelCount,channelCountMode:ct.channelCountMode,channelInterpretation:ct.channelInterpretation,pan:ct.pan.value};ct=et(lt,ht)}return ot.set(lt,ct),ut?await tt(lt,st.pan,ct.pan):await rt(lt,st.pan,ct.pan),isNativeAudioNodeFaker(ct)?await it(st,lt,ct.inputs[0]):await it(st,lt,ct),ct};return{render(st,lt){const ct=ot.get(lt);return ct!==void 0?Promise.resolve(ct):at(st,lt)}}},createTestAudioBufferConstructorSupport=tt=>()=>{if(tt===null)return!1;try{new tt({length:1,sampleRate:44100})}catch{return!1}return!0},createTestAudioWorkletProcessorPostMessageSupport=(tt,et)=>async()=>{if(tt===null)return!0;if(et===null)return!1;const nt=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),rt=new et(1,128,44100),it=URL.createObjectURL(nt);let ot=!1,at=!1;try{await rt.audioWorklet.addModule(it);const st=new tt(rt,"a",{numberOfOutputs:0}),lt=rt.createOscillator();st.port.onmessage=()=>ot=!0,st.onprocessorerror=()=>at=!0,lt.connect(st),lt.start(0),await rt.startRendering(),await new Promise(ct=>setTimeout(ct))}catch{}finally{URL.revokeObjectURL(it)}return ot&&!at},createTestOfflineAudioContextCurrentTimeSupport=(tt,et)=>()=>{if(et===null)return Promise.resolve(!1);const nt=new et(1,1,44100),rt=tt(nt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(it=>{nt.oncomplete=()=>{rt.disconnect(),it(nt.currentTime!==0)},nt.startRendering()})},createUnknownError=()=>new DOMException("","UnknownError"),DEFAULT_OPTIONS={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},createWaveShaperNodeConstructor=(tt,et,nt,rt,it,ot,at)=>class extends tt{constructor(lt,ct){const ut=it(lt),ht={...DEFAULT_OPTIONS,...ct},dt=nt(ut,ht),mt=ot(ut)?rt():null;super(lt,!0,dt,mt),this._isCurveNullified=!1,this._nativeWaveShaperNode=dt,at(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(lt){if(lt===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(lt.length<2)throw et();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=lt}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(lt){this._nativeWaveShaperNode.oversample=lt}},createWaveShaperNodeRendererFactory=(tt,et,nt)=>()=>{const rt=new WeakMap,it=async(ot,at)=>{let st=et(ot);if(!isOwnedByContext(st,at)){const ct={channelCount:st.channelCount,channelCountMode:st.channelCountMode,channelInterpretation:st.channelInterpretation,curve:st.curve,oversample:st.oversample};st=tt(at,ct)}return rt.set(at,st),isNativeAudioNodeFaker(st)?await nt(ot,at,st.inputs[0]):await nt(ot,at,st),st};return{render(ot,at){const st=rt.get(at);return st!==void 0?Promise.resolve(st):it(ot,at)}}},createWindow=()=>typeof window>"u"?null:window,createWrapAudioBufferCopyChannelMethods=(tt,et)=>nt=>{nt.copyFromChannel=(rt,it,ot=0)=>{const at=tt(ot),st=tt(it);if(st>=nt.numberOfChannels)throw et();const lt=nt.length,ct=nt.getChannelData(st),ut=rt.length;for(let ht=at<0?-at:0;ht+at{const at=tt(ot),st=tt(it);if(st>=nt.numberOfChannels)throw et();const lt=nt.length,ct=nt.getChannelData(st),ut=rt.length;for(let ht=at<0?-at:0;ht+atet=>{et.copyFromChannel=(nt=>(rt,it,ot=0)=>{const at=tt(ot),st=tt(it);if(at(rt,it,ot=0)=>{const at=tt(ot),st=tt(it);if(at(et,nt)=>{const rt=nt.createBuffer(1,1,44100);et.buffer===null&&(et.buffer=rt),tt(et,"buffer",it=>()=>{const ot=it.call(et);return ot===rt?null:ot},it=>ot=>it.call(et,ot===null?rt:ot))},createWrapChannelMergerNode=(tt,et)=>(nt,rt)=>{rt.channelCount=1,rt.channelCountMode="explicit",Object.defineProperty(rt,"channelCount",{get:()=>1,set:()=>{throw tt()}}),Object.defineProperty(rt,"channelCountMode",{get:()=>"explicit",set:()=>{throw tt()}});const it=nt.createBufferSource();et(rt,()=>{const st=rt.numberOfInputs;for(let lt=0;ltit.disconnect(rt))},getFirstSample=(tt,et,nt)=>tt.copyFromChannel===void 0?tt.getChannelData(nt)[0]:(tt.copyFromChannel(et,nt),et[0]),isDCCurve=tt=>{if(tt===null)return!1;const et=tt.length;return et%2!==0?tt[Math.floor(et/2)]!==0:tt[et/2-1]+tt[et/2]!==0},overwriteAccessors=(tt,et,nt,rt)=>{let it=tt;for(;!it.hasOwnProperty(et);)it=Object.getPrototypeOf(it);const{get:ot,set:at}=Object.getOwnPropertyDescriptor(it,et);Object.defineProperty(tt,et,{get:nt(ot),set:rt(at)})},sanitizeAudioWorkletNodeOptions=tt=>({...tt,outputChannelCount:tt.outputChannelCount!==void 0?tt.outputChannelCount:tt.numberOfInputs===1&&tt.numberOfOutputs===1?[tt.channelCount]:Array.from({length:tt.numberOfOutputs},()=>1)}),sanitizeChannelSplitterOptions=tt=>({...tt,channelCount:tt.numberOfOutputs}),sanitizePeriodicWaveOptions=tt=>{const{imag:et,real:nt}=tt;return et===void 0?nt===void 0?{...tt,imag:[0,0],real:[0,0]}:{...tt,imag:Array.from(nt,()=>0),real:nt}:nt===void 0?{...tt,imag:et,real:Array.from(et,()=>0)}:{...tt,imag:et,real:nt}},setValueAtTimeUntilPossible=(tt,et,nt)=>{try{tt.setValueAtTime(et,nt)}catch(rt){if(rt.code!==9)throw rt;setValueAtTimeUntilPossible(tt,et,nt+1e-7)}},testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport=tt=>{const et=tt.createBufferSource();et.start();try{et.start()}catch{return!0}return!1},testAudioBufferSourceNodeStartMethodOffsetClampingSupport=tt=>{const et=tt.createBufferSource(),nt=tt.createBuffer(1,1,44100);et.buffer=nt;try{et.start(0,1)}catch{return!1}return!0},testAudioBufferSourceNodeStopMethodNullifiedBufferSupport=tt=>{const et=tt.createBufferSource();et.start();try{et.stop()}catch{return!1}return!0},testAudioScheduledSourceNodeStartMethodNegativeParametersSupport=tt=>{const et=tt.createOscillator();try{et.start(-1)}catch(nt){return nt instanceof RangeError}return!1},testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport=tt=>{const et=tt.createBuffer(1,1,44100),nt=tt.createBufferSource();nt.buffer=et,nt.start(),nt.stop();try{return nt.stop(),!0}catch{return!1}},testAudioScheduledSourceNodeStopMethodNegativeParametersSupport=tt=>{const et=tt.createOscillator();try{et.stop(-1)}catch(nt){return nt instanceof RangeError}return!1},testAudioWorkletNodeOptionsClonability=tt=>{const{port1:et,port2:nt}=new MessageChannel;try{et.postMessage(tt)}finally{et.close(),nt.close()}},wrapAudioBufferSourceNodeStartMethodOffsetClamping=tt=>{tt.start=(et=>(nt=0,rt=0,it)=>{const ot=tt.buffer,at=ot===null?rt:Math.min(ot.duration,rt);ot!==null&&at>ot.duration-.5/tt.context.sampleRate?et.call(tt,nt,0,0):et.call(tt,nt,at,it)})(tt.start)},wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls=(tt,et)=>{const nt=et.createGain();tt.connect(nt);const rt=(it=>()=>{it.call(tt,nt),tt.removeEventListener("ended",rt)})(tt.disconnect);tt.addEventListener("ended",rt),interceptConnections(tt,nt),tt.stop=(it=>{let ot=!1;return(at=0)=>{if(ot)try{it.call(tt,at)}catch{nt.gain.setValueAtTime(0,at)}else it.call(tt,at),ot=!0}})(tt.stop)},wrapEventListener=(tt,et)=>nt=>{const rt={value:tt};return Object.defineProperties(nt,{currentTarget:rt,target:rt}),typeof et=="function"?et.call(tt,nt):et.handleEvent.call(tt,nt)},addActiveInputConnectionToAudioNode=createAddActiveInputConnectionToAudioNode(insertElementInSet),addPassiveInputConnectionToAudioNode=createAddPassiveInputConnectionToAudioNode(insertElementInSet),deleteActiveInputConnectionToAudioNode=createDeleteActiveInputConnectionToAudioNode(pickElementFromSet),audioNodeTailTimeStore=new WeakMap,getAudioNodeTailTime=createGetAudioNodeTailTime(audioNodeTailTimeStore),cacheTestResult=createCacheTestResult(new Map,new WeakMap),window$1=createWindow(),createNativeAnalyserNode=createNativeAnalyserNodeFactory(cacheTestResult,createIndexSizeError),getAudioNodeRenderer=createGetAudioNodeRenderer(getAudioNodeConnections),renderInputsOfAudioNode=createRenderInputsOfAudioNode(getAudioNodeConnections,getAudioNodeRenderer,isPartOfACycle),createAnalyserNodeRenderer=createAnalyserNodeRendererFactory(createNativeAnalyserNode,getNativeAudioNode,renderInputsOfAudioNode),getNativeContext=createGetNativeContext(CONTEXT_STORE),nativeOfflineAudioContextConstructor=createNativeOfflineAudioContextConstructor(window$1),isNativeOfflineAudioContext=createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor),audioParamAudioNodeStore=new WeakMap,eventTargetConstructor=createEventTargetConstructor(wrapEventListener),nativeAudioContextConstructor=createNativeAudioContextConstructor(window$1),isNativeAudioContext=createIsNativeAudioContext(nativeAudioContextConstructor),isNativeAudioNode=createIsNativeAudioNode(window$1),isNativeAudioParam=createIsNativeAudioParam(window$1),nativeAudioWorkletNodeConstructor=createNativeAudioWorkletNodeConstructor(window$1),audioNodeConstructor=createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE),createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode,addPassiveInputConnectionToAudioNode,connectNativeAudioNodeToNativeAudioNode,deleteActiveInputConnectionToAudioNode,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getAudioNodeTailTime,getEventListenersOfAudioNode,getNativeAudioNode,insertElementInSet,isActiveAudioNode,isPartOfACycle,isPassiveAudioNode),cacheTestResult,createIncrementCycleCounterFactory(CYCLE_COUNTERS,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,isActiveAudioNode),createIndexSizeError,createInvalidAccessError,createNotSupportedError,createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode,CYCLE_COUNTERS,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,getNativeContext,isActiveAudioNode,isNativeOfflineAudioContext),createDetectCycles(audioParamAudioNodeStore,getAudioNodeConnections,getValueForKey),eventTargetConstructor,getNativeContext,isNativeAudioContext,isNativeAudioNode,isNativeAudioParam,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor),analyserNodeConstructor=createAnalyserNodeConstructor(audioNodeConstructor,createAnalyserNodeRenderer,createIndexSizeError,createNativeAnalyserNode,getNativeContext,isNativeOfflineAudioContext),audioBufferStore=new WeakSet,nativeAudioBufferConstructor=createNativeAudioBufferConstructor(window$1),convertNumberToUnsignedLong=createConvertNumberToUnsignedLong(new Uint32Array(1)),wrapAudioBufferCopyChannelMethods=createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong,createIndexSizeError),wrapAudioBufferCopyChannelMethodsOutOfBounds=createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong),audioBufferConstructor=createAudioBufferConstructor(audioBufferStore,cacheTestResult,createNotSupportedError,nativeAudioBufferConstructor,nativeOfflineAudioContextConstructor,createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor),wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),addSilentConnection=createAddSilentConnection(createNativeGainNode),renderInputsOfAudioParam=createRenderInputsOfAudioParam(getAudioNodeRenderer,getAudioParamConnections,isPartOfACycle),connectAudioParam=createConnectAudioParam(renderInputsOfAudioParam),createNativeAudioBufferSourceNode=createNativeAudioBufferSourceNodeFactory(addSilentConnection,cacheTestResult,testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,testAudioBufferSourceNodeStartMethodOffsetClampingSupport,testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioBufferSourceNodeStartMethodOffsetClamping,createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors),wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),renderAutomation=createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections),renderInputsOfAudioParam),createAudioBufferSourceNodeRenderer=createAudioBufferSourceNodeRendererFactory(connectAudioParam,createNativeAudioBufferSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),createAudioParam=createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE),audioParamAudioNodeStore,AUDIO_PARAM_STORE,createAudioParamRenderer,createCancelAndHoldAutomationEvent,createCancelScheduledValuesAutomationEvent,createExponentialRampToValueAutomationEvent,createLinearRampToValueAutomationEvent,createSetTargetAutomationEvent,createSetValueAutomationEvent,createSetValueCurveAutomationEvent,nativeAudioContextConstructor,setValueAtTimeUntilPossible),audioBufferSourceNodeConstructor=createAudioBufferSourceNodeConstructor(audioNodeConstructor,createAudioBufferSourceNodeRenderer,createAudioParam,createInvalidStateError,createNativeAudioBufferSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),audioDestinationNodeConstructor=createAudioDestinationNodeConstructor(audioNodeConstructor,createAudioDestinationNodeRenderer,createIndexSizeError,createInvalidStateError,createNativeAudioDestinationNodeFactory(createNativeGainNode,overwriteAccessors),getNativeContext,isNativeOfflineAudioContext,renderInputsOfAudioNode),createBiquadFilterNodeRenderer=createBiquadFilterNodeRendererFactory(connectAudioParam,createNativeBiquadFilterNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),setAudioNodeTailTime=createSetAudioNodeTailTime(audioNodeTailTimeStore),biquadFilterNodeConstructor=createBiquadFilterNodeConstructor(audioNodeConstructor,createAudioParam,createBiquadFilterNodeRenderer,createInvalidAccessError,createNativeBiquadFilterNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),monitorConnections=createMonitorConnections(insertElementInSet,isNativeAudioNode),wrapChannelMergerNode=createWrapChannelMergerNode(createInvalidStateError,monitorConnections),createNativeChannelMergerNode=createNativeChannelMergerNodeFactory(nativeAudioContextConstructor,wrapChannelMergerNode),createChannelMergerNodeRenderer=createChannelMergerNodeRendererFactory(createNativeChannelMergerNode,getNativeAudioNode,renderInputsOfAudioNode),channelMergerNodeConstructor=createChannelMergerNodeConstructor(audioNodeConstructor,createChannelMergerNodeRenderer,createNativeChannelMergerNode,getNativeContext,isNativeOfflineAudioContext),createChannelSplitterNodeRenderer=createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode,getNativeAudioNode,renderInputsOfAudioNode),channelSplitterNodeConstructor=createChannelSplitterNodeConstructor(audioNodeConstructor,createChannelSplitterNodeRenderer,createNativeChannelSplitterNode,getNativeContext,isNativeOfflineAudioContext,sanitizeChannelSplitterOptions),createNativeConstantSourceNodeFaker=createNativeConstantSourceNodeFakerFactory(addSilentConnection,createNativeAudioBufferSourceNode,createNativeGainNode,monitorConnections),createNativeConstantSourceNode=createNativeConstantSourceNodeFactory(addSilentConnection,cacheTestResult,createNativeConstantSourceNodeFaker,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport),createConstantSourceNodeRenderer=createConstantSourceNodeRendererFactory(connectAudioParam,createNativeConstantSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),constantSourceNodeConstructor=createConstantSourceNodeConstructor(audioNodeConstructor,createAudioParam,createConstantSourceNodeRenderer,createNativeConstantSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createNativeConvolverNode=createNativeConvolverNodeFactory(createNotSupportedError,overwriteAccessors),createConvolverNodeRenderer=createConvolverNodeRendererFactory(createNativeConvolverNode,getNativeAudioNode,renderInputsOfAudioNode),convolverNodeConstructor=createConvolverNodeConstructor(audioNodeConstructor,createConvolverNodeRenderer,createNativeConvolverNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createDelayNodeRenderer=createDelayNodeRendererFactory(connectAudioParam,createNativeDelayNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),delayNodeConstructor=createDelayNodeConstructor(audioNodeConstructor,createAudioParam,createDelayNodeRenderer,createNativeDelayNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativeDynamicsCompressorNode=createNativeDynamicsCompressorNodeFactory(createNotSupportedError),createDynamicsCompressorNodeRenderer=createDynamicsCompressorNodeRendererFactory(connectAudioParam,createNativeDynamicsCompressorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),dynamicsCompressorNodeConstructor=createDynamicsCompressorNodeConstructor(audioNodeConstructor,createAudioParam,createDynamicsCompressorNodeRenderer,createNativeDynamicsCompressorNode,createNotSupportedError,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createGainNodeRenderer=createGainNodeRendererFactory(connectAudioParam,createNativeGainNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),gainNodeConstructor=createGainNodeConstructor(audioNodeConstructor,createAudioParam,createGainNodeRenderer,createNativeGainNode,getNativeContext,isNativeOfflineAudioContext),createNativeIIRFilterNodeFaker=createNativeIIRFilterNodeFakerFactory(createInvalidAccessError,createInvalidStateError,createNativeScriptProcessorNode,createNotSupportedError),renderNativeOfflineAudioContext=createRenderNativeOfflineAudioContext(cacheTestResult,createNativeGainNode,createNativeScriptProcessorNode,createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode,nativeOfflineAudioContextConstructor)),createIIRFilterNodeRenderer=createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderInputsOfAudioNode,renderNativeOfflineAudioContext),createNativeIIRFilterNode=createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker),iIRFilterNodeConstructor=createIIRFilterNodeConstructor(audioNodeConstructor,createNativeIIRFilterNode,createIIRFilterNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createAudioListener=createAudioListenerFactory(createAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeScriptProcessorNode,createNotSupportedError,getFirstSample,isNativeOfflineAudioContext,overwriteAccessors),unrenderedAudioWorkletNodeStore=new WeakMap,minimalBaseAudioContextConstructor=createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor,createAudioListener,eventTargetConstructor,isNativeOfflineAudioContext,unrenderedAudioWorkletNodeStore,wrapEventListener),createNativeOscillatorNode=createNativeOscillatorNodeFactory(addSilentConnection,cacheTestResult,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),createOscillatorNodeRenderer=createOscillatorNodeRendererFactory(connectAudioParam,createNativeOscillatorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),oscillatorNodeConstructor=createOscillatorNodeConstructor(audioNodeConstructor,createAudioParam,createNativeOscillatorNode,createOscillatorNodeRenderer,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createConnectedNativeAudioBufferSourceNode=createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode),createNativeWaveShaperNodeFaker=createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeGainNode,isDCCurve,monitorConnections),createNativeWaveShaperNode=createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeWaveShaperNodeFaker,isDCCurve,monitorConnections,nativeAudioContextConstructor,overwriteAccessors),createNativePannerNodeFaker=createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode,createInvalidStateError,createNativeChannelMergerNode,createNativeGainNode,createNativeScriptProcessorNode,createNativeWaveShaperNode,createNotSupportedError,disconnectNativeAudioNodeFromNativeAudioNode,getFirstSample,monitorConnections),createNativePannerNode=createNativePannerNodeFactory(createNativePannerNodeFaker),createPannerNodeRenderer=createPannerNodeRendererFactory(connectAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeGainNode,createNativePannerNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),pannerNodeConstructor=createPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativePannerNode,createPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativePeriodicWave=createNativePeriodicWaveFactory(createIndexSizeError),periodicWaveConstructor=createPeriodicWaveConstructor(createNativePeriodicWave,getNativeContext,new WeakSet,sanitizePeriodicWaveOptions),nativeStereoPannerNodeFakerFactory=createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeGainNode,createNativeWaveShaperNode,createNotSupportedError,monitorConnections),createNativeStereoPannerNode=createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory,createNotSupportedError),createStereoPannerNodeRenderer=createStereoPannerNodeRendererFactory(connectAudioParam,createNativeStereoPannerNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),stereoPannerNodeConstructor=createStereoPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativeStereoPannerNode,createStereoPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext),createWaveShaperNodeRenderer=createWaveShaperNodeRendererFactory(createNativeWaveShaperNode,getNativeAudioNode,renderInputsOfAudioNode),waveShaperNodeConstructor=createWaveShaperNodeConstructor(audioNodeConstructor,createInvalidStateError,createNativeWaveShaperNode,createWaveShaperNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),isSecureContext=createIsSecureContext(window$1),exposeCurrentFrameAndCurrentTime=createExposeCurrentFrameAndCurrentTime(window$1),backupOfflineAudioContextStore=new WeakMap,getOrCreateBackupOfflineAudioContext=createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore,nativeOfflineAudioContextConstructor),addAudioWorkletModule=isSecureContext?createAddAudioWorkletModule(cacheTestResult,createNotSupportedError,createEvaluateSource(window$1),exposeCurrentFrameAndCurrentTime,createFetchSource(createAbortError),getNativeContext,getOrCreateBackupOfflineAudioContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,new WeakMap,new WeakMap,createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor),window$1):void 0,isNativeContext=createIsNativeContext(isNativeAudioContext,isNativeOfflineAudioContext),decodeAudioData=createDecodeAudioData(audioBufferStore,cacheTestResult,createDataCloneError,createEncodingError,new WeakSet,getNativeContext,isNativeContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,testPromiseSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),baseAudioContextConstructor=createBaseAudioContextConstructor(addAudioWorkletModule,analyserNodeConstructor,audioBufferConstructor,audioBufferSourceNodeConstructor,biquadFilterNodeConstructor,channelMergerNodeConstructor,channelSplitterNodeConstructor,constantSourceNodeConstructor,convolverNodeConstructor,decodeAudioData,delayNodeConstructor,dynamicsCompressorNodeConstructor,gainNodeConstructor,iIRFilterNodeConstructor,minimalBaseAudioContextConstructor,oscillatorNodeConstructor,pannerNodeConstructor,periodicWaveConstructor,stereoPannerNodeConstructor,waveShaperNodeConstructor),mediaElementAudioSourceNodeConstructor=createMediaElementAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaElementAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioDestinationNodeConstructor=createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioDestinationNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioSourceNodeConstructor=createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),createNativeMediaStreamTrackAudioSourceNode=createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError,isNativeOfflineAudioContext),mediaStreamTrackAudioSourceNodeConstructor=createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamTrackAudioSourceNode,getNativeContext),audioContextConstructor=createAudioContextConstructor(baseAudioContextConstructor,createInvalidStateError,createNotSupportedError,createUnknownError,mediaElementAudioSourceNodeConstructor,mediaStreamAudioDestinationNodeConstructor,mediaStreamAudioSourceNodeConstructor,mediaStreamTrackAudioSourceNodeConstructor,nativeAudioContextConstructor),getUnrenderedAudioWorkletNodes=createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore),addUnrenderedAudioWorkletNode=createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),connectMultipleOutputs=createConnectMultipleOutputs(createIndexSizeError),deleteUnrenderedAudioWorkletNode=createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),disconnectMultipleOutputs=createDisconnectMultipleOutputs(createIndexSizeError),activeAudioWorkletNodeInputsStore=new WeakMap,getActiveAudioWorkletNodeInputs=createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore,getValueForKey),createNativeAudioWorkletNodeFaker=createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs,createIndexSizeError,createInvalidStateError,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,createNativeScriptProcessorNode,createNotSupportedError,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getActiveAudioWorkletNodeInputs,monitorConnections),createNativeAudioWorkletNode=createNativeAudioWorkletNodeFactory(createInvalidStateError,createNativeAudioWorkletNodeFaker,createNativeGainNode,createNotSupportedError,monitorConnections),createAudioWorkletNodeRenderer=createAudioWorkletNodeRendererFactory(connectAudioParam,connectMultipleOutputs,createNativeAudioBufferSourceNode,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,deleteUnrenderedAudioWorkletNode,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getNativeAudioNode,nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),getBackupOfflineAudioContext=createGetBackupOfflineAudioContext(backupOfflineAudioContextStore),setActiveAudioWorkletNodeInputs=createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore),audioWorkletNodeConstructor=isSecureContext?createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode,audioNodeConstructor,createAudioParam,createAudioWorkletNodeRenderer,createNativeAudioWorkletNode,getAudioNodeConnections,getBackupOfflineAudioContext,getNativeContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,sanitizeAudioWorkletNodeOptions,setActiveAudioWorkletNodeInputs,testAudioWorkletNodeOptionsClonability,wrapEventListener):void 0,createNativeOfflineAudioContext=createCreateNativeOfflineAudioContext(createNotSupportedError,nativeOfflineAudioContextConstructor),startRendering=createStartRendering(audioBufferStore,cacheTestResult,getAudioNodeRenderer,getUnrenderedAudioWorkletNodes,renderNativeOfflineAudioContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),offlineAudioContextConstructor=createOfflineAudioContextConstructor(baseAudioContextConstructor,cacheTestResult,createInvalidStateError,createNativeOfflineAudioContext,startRendering),isAnyAudioContext=createIsAnyAudioContext(CONTEXT_STORE,isNativeAudioContext),isAnyAudioNode=createIsAnyAudioNode(AUDIO_NODE_STORE,isNativeAudioNode),isAnyAudioParam=createIsAnyAudioParam(AUDIO_PARAM_STORE,isNativeAudioParam),isAnyOfflineAudioContext=createIsAnyOfflineAudioContext(CONTEXT_STORE,isNativeOfflineAudioContext);function isUndef(tt){return typeof tt>"u"}function isDefined(tt){return!isUndef(tt)}function isFunction$2(tt){return typeof tt=="function"}function isNumber$4(tt){return typeof tt=="number"}function isObject$7(tt){return Object.prototype.toString.call(tt)==="[object Object]"&&tt.constructor===Object}function isBoolean$1(tt){return typeof tt=="boolean"}function isArray$e(tt){return Array.isArray(tt)}function isString$2(tt){return typeof tt=="string"}function isNote(tt){return isString$2(tt)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(tt)}function assert(tt,et){if(!tt)throw new Error(et)}function assertRange(tt,et,nt=1/0){if(!(et<=tt&&tt<=nt))throw new RangeError(`Value must be within [${et}, ${nt}], got: ${tt}`)}function assertContextRunning(tt){!tt.isOffline&&tt.state!=="running"&&warn$2('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let isInsideScheduledCallback=!1,printedScheduledWarning=!1;function enterScheduledCallback(tt){isInsideScheduledCallback=tt}function assertUsedScheduleTime(tt){isUndef(tt)&&isInsideScheduledCallback&&!printedScheduledWarning&&(printedScheduledWarning=!0,warn$2("Events scheduled inside of scheduled callbacks should use the passed in scheduling time. See https://github.com/Tonejs/Tone.js/wiki/Accurate-Timing"))}let defaultLogger=console;function log$1(...tt){defaultLogger.log(...tt)}function warn$2(...tt){defaultLogger.warn(...tt)}function createAudioContext(tt){return new audioContextConstructor(tt)}function createOfflineAudioContext(tt,et,nt){return new offlineAudioContextConstructor(tt,et,nt)}const theWindow=typeof self=="object"?self:null,hasAudioContext=theWindow&&(theWindow.hasOwnProperty("AudioContext")||theWindow.hasOwnProperty("webkitAudioContext"));function createAudioWorkletNode(tt,et,nt){return assert(isDefined(audioWorkletNodeConstructor),"This node only works in a secure context (https or localhost)"),new audioWorkletNodeConstructor(tt,et,nt)}class Ticker{constructor(et,nt,rt,it){this._callback=et,this._type=nt,this._minimumUpdateInterval=Math.max(128/(it||44100),.001),this.updateInterval=rt,this._createClock()}_createWorker(){const et=new Blob([` // the initial timeout time let timeoutTime = ${(this._updateInterval*1e3).toFixed(1)}; // onmessage callback @@ -6498,7 +6498,7 @@ void main() { * @author Yotam Mann * @license http://opensource.org/licenses/MIT MIT License * @copyright 2014-2019 Yotam Mann - */class Tone{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...et){(this.debug||theWindow&&this.toString()===theWindow.TONE_DEBUG_CLASS)&&log$1(this,...et)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}Tone.version=version$1;const EPSILON=1e-6;function GT(tt,et){return tt>et+EPSILON}function GTE(tt,et){return GT(tt,et)||EQ(tt,et)}function LT(tt,et){return tt+EPSILONthis.memory){const nt=this.length-this.memory;this._timeline.splice(0,nt)}return this}remove(et){const nt=this._timeline.indexOf(et);return nt!==-1&&this._timeline.splice(nt,1),this}get(et,nt="time"){const rt=this._search(et,nt);return rt!==-1?this._timeline[rt]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(et,nt="time"){const rt=this._search(et,nt);return rt+10&&this._timeline[nt-1].time=0?this._timeline[rt-1]:null}cancel(et){if(this._timeline.length>1){let nt=this._search(et);if(nt>=0)if(EQ(this._timeline[nt].time,et)){for(let rt=nt;rt>=0&&EQ(this._timeline[rt].time,et);rt--)nt=rt;this._timeline=this._timeline.slice(0,nt)}else this._timeline=this._timeline.slice(0,nt+1);else this._timeline=[]}else this._timeline.length===1&>E(this._timeline[0].time,et)&&(this._timeline=[]);return this}cancelBefore(et){const nt=this._search(et);return nt>=0&&(this._timeline=this._timeline.slice(nt+1)),this}previousEvent(et){const nt=this._timeline.indexOf(et);return nt>0?this._timeline[nt-1]:null}_search(et,nt="time"){if(this._timeline.length===0)return-1;let rt=0;const it=this._timeline.length;let ot=it;if(it>0&&this._timeline[it-1][nt]<=et)return it-1;for(;rt=0&&this._timeline[rt].time>=et;)rt--;return this._iterate(nt,rt+1),this}forEachAtTime(et,nt){const rt=this._search(et);if(rt!==-1&&EQ(this._timeline[rt].time,et)){let it=rt;for(let ot=rt;ot>=0&&EQ(this._timeline[ot].time,et);ot--)it=ot;this._iterate(ot=>{nt(ot)},it,rt)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const notifyNewContext=[];function onContextInit(tt){notifyNewContext.push(tt)}function initializeContext(tt){notifyNewContext.forEach(et=>et(tt))}const notifyCloseContext=[];function onContextClose(tt){notifyCloseContext.push(tt)}function closeContext(tt){notifyCloseContext.forEach(et=>et(tt))}let Emitter$1=class _w extends Tone{constructor(){super(...arguments),this.name="Emitter"}on(et,nt){return et.split(/\W+/).forEach(it=>{isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(it)||(this._events[it]=[]),this._events[it].push(nt)}),this}once(et,nt){const rt=(...it)=>{nt(...it),this.off(et,rt)};return this.on(et,rt),this}off(et,nt){return et.split(/\W+/).forEach(it=>{if(isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(it))if(isUndef(nt))this._events[it]=[];else{const ot=this._events[it];for(let at=ot.length-1;at>=0;at--)ot[at]===nt&&ot.splice(at,1)}}),this}emit(et,...nt){if(this._events&&this._events.hasOwnProperty(et)){const rt=this._events[et].slice(0);for(let it=0,ot=rt.length;it{const rt=Object.getOwnPropertyDescriptor(_w.prototype,nt);Object.defineProperty(et.prototype,nt,rt)})}dispose(){return super.dispose(),this._events=void 0,this}};class BaseContext extends Emitter$1{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class Context extends BaseContext{constructor(){var et,nt;super(),this.name="Context",this._constants=new Map,this._timeouts=new Timeline,this._timeoutIds=0,this._initialized=!1,this._closeStarted=!1,this.isOffline=!1,this._workletPromise=null;const rt=optionsFromArguments(Context.getDefaults(),arguments,["context"]);rt.context?(this._context=rt.context,this._latencyHint=((et=arguments[0])===null||et===void 0?void 0:et.latencyHint)||""):(this._context=createAudioContext({latencyHint:rt.latencyHint}),this._latencyHint=rt.latencyHint),this._ticker=new Ticker(this.emit.bind(this,"tick"),rt.clockSource,rt.updateInterval,this._context.sampleRate),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this[!((nt=arguments[0])===null||nt===void 0)&&nt.hasOwnProperty("updateInterval")?"_lookAhead":"lookAhead"]=rt.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(initializeContext(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(et,nt,rt){return this._context.createBuffer(et,nt,rt)}createChannelMerger(et){return this._context.createChannelMerger(et)}createChannelSplitter(et){return this._context.createChannelSplitter(et)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(et){return this._context.createDelay(et)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(et,nt){return this._context.createIIRFilter(et,nt)}createPanner(){return this._context.createPanner()}createPeriodicWave(et,nt,rt){return this._context.createPeriodicWave(et,nt,rt)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(et){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(et)}createMediaElementSource(et){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(et)}createMediaStreamDestination(){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(et){return this._context.decodeAudioData(et)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(et){assert(!this._initialized,"The listener cannot be set after initialization."),this._listener=et}get transport(){return this.initialize(),this._transport}set transport(et){assert(!this._initialized,"The transport cannot be set after initialization."),this._transport=et}get draw(){return this.initialize(),this._draw}set draw(et){assert(!this._initialized,"Draw cannot be set after initialization."),this._draw=et}get destination(){return this.initialize(),this._destination}set destination(et){assert(!this._initialized,"The destination cannot be set after initialization."),this._destination=et}createAudioWorkletNode(et,nt){return createAudioWorkletNode(this.rawContext,et,nt)}addAudioWorkletModule(et){return __awaiter(this,void 0,void 0,function*(){assert(isDefined(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletPromise||(this._workletPromise=this.rawContext.audioWorklet.addModule(et)),yield this._workletPromise})}workletsAreReady(){return __awaiter(this,void 0,void 0,function*(){(yield this._workletPromise)?this._workletPromise:Promise.resolve()})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(et){this._ticker.updateInterval=et}get clockSource(){return this._ticker.type}set clockSource(et){this._ticker.type=et}get lookAhead(){return this._lookAhead}set lookAhead(et){this._lookAhead=et,this.updateInterval=et?et/2:.01}get latencyHint(){return this._latencyHint}get rawContext(){return this._context}now(){return this._context.currentTime+this._lookAhead}immediate(){return this._context.currentTime}resume(){return isAudioContext(this._context)?this._context.resume():Promise.resolve()}close(){return __awaiter(this,void 0,void 0,function*(){isAudioContext(this._context)&&this.state!=="closed"&&!this._closeStarted&&(this._closeStarted=!0,yield this._context.close()),this._initialized&&closeContext(this)})}getConstant(et){if(this._constants.has(et))return this._constants.get(et);{const nt=this._context.createBuffer(1,128,this._context.sampleRate),rt=nt.getChannelData(0);for(let ot=0;otthis._constants[et].disconnect()),this.close(),this}_timeoutLoop(){const et=this.now();let nt=this._timeouts.peek();for(;this._timeouts.length&&nt&&nt.time<=et;)nt.callback(),this._timeouts.shift(),nt=this._timeouts.peek()}setTimeout(et,nt){this._timeoutIds++;const rt=this.now();return this._timeouts.add({callback:et,id:this._timeoutIds,time:rt+nt}),this._timeoutIds}clearTimeout(et){return this._timeouts.forEach(nt=>{nt.id===et&&this._timeouts.remove(nt)}),this}clearInterval(et){return this.clearTimeout(et)}setInterval(et,nt){const rt=++this._timeoutIds,it=()=>{const ot=this.now();this._timeouts.add({callback:()=>{et(),it()},id:rt,time:ot+nt})};return it(),rt}}class DummyContext extends BaseContext{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(et,nt,rt){return{}}createChannelMerger(et){return{}}createChannelSplitter(et){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(et){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(et,nt){return{}}createPanner(){return{}}createPeriodicWave(et,nt,rt){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(et){return{}}createMediaElementSource(et){return{}}createMediaStreamDestination(){return{}}decodeAudioData(et){return Promise.resolve({})}createAudioWorkletNode(et,nt){return{}}get rawContext(){return{}}addAudioWorkletModule(et){return __awaiter(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(et,nt){return 0}clearTimeout(et){return this}setInterval(et,nt){return 0}clearInterval(et){return this}getConstant(et){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(et){}get destination(){return{}}set destination(et){}now(){return 0}immediate(){return 0}}function readOnly(tt,et){isArray$e(et)?et.forEach(nt=>readOnly(tt,nt)):Object.defineProperty(tt,et,{enumerable:!0,writable:!1})}function writable(tt,et){isArray$e(et)?et.forEach(nt=>writable(tt,nt)):Object.defineProperty(tt,et,{writable:!0})}const noOp=()=>{};class ToneAudioBuffer extends Tone{constructor(){super(),this.name="ToneAudioBuffer",this.onload=noOp;const et=optionsFromArguments(ToneAudioBuffer.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=et.reverse,this.onload=et.onload,isString$2(et.url)?this.load(et.url).catch(et.onerror):et.url&&this.set(et.url)}static getDefaults(){return{onerror:noOp,onload:noOp,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:getContext().sampleRate}set(et){return et instanceof ToneAudioBuffer?et.loaded?this._buffer=et.get():et.onload=()=>{this.set(et),this.onload(this)}:this._buffer=et,this._reversed&&this._reverse(),this}get(){return this._buffer}load(et){return __awaiter(this,void 0,void 0,function*(){const nt=ToneAudioBuffer.load(et).then(rt=>{this.set(rt),this.onload(this)});ToneAudioBuffer.downloads.push(nt);try{yield nt}finally{const rt=ToneAudioBuffer.downloads.indexOf(nt);ToneAudioBuffer.downloads.splice(rt,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(et){const nt=isArray$e(et)&&et[0].length>0,rt=nt?et.length:1,it=nt?et[0].length:et.length,ot=getContext(),at=ot.createBuffer(rt,it,ot.sampleRate),st=!nt&&rt===1?[et]:et;for(let lt=0;ltit/rt),this.fromArray(nt)}return this}toArray(et){if(isNumber$4(et))return this.getChannelData(et);if(this.numberOfChannels===1)return this.toArray(0);{const nt=[];for(let rt=0;rt0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(et){this._reversed!==et&&(this._reversed=et,this._reverse())}static fromArray(et){return new ToneAudioBuffer().fromArray(et)}static fromUrl(et){return __awaiter(this,void 0,void 0,function*(){return yield new ToneAudioBuffer().load(et)})}static load(et){return __awaiter(this,void 0,void 0,function*(){const nt=et.match(/\[([^\]\[]+\|.+)\]$/);if(nt){const lt=nt[1].split("|");let ct=lt[0];for(const ut of lt)if(ToneAudioBuffer.supportsType(ut)){ct=ut;break}et=et.replace(nt[0],ct)}const rt=ToneAudioBuffer.baseUrl===""||ToneAudioBuffer.baseUrl.endsWith("/")?ToneAudioBuffer.baseUrl:ToneAudioBuffer.baseUrl+"/",it=document.createElement("a");it.href=rt+et,it.pathname=(it.pathname+it.hash).split("/").map(encodeURIComponent).join("/");const ot=yield fetch(it.href);if(!ot.ok)throw new Error(`could not load url: ${et}`);const at=yield ot.arrayBuffer();return yield getContext().decodeAudioData(at)})}static supportsType(et){const nt=et.split("."),rt=nt[nt.length-1];return document.createElement("audio").canPlayType("audio/"+rt)!==""}static loaded(){return __awaiter(this,void 0,void 0,function*(){for(yield Promise.resolve();ToneAudioBuffer.downloads.length;)yield ToneAudioBuffer.downloads[0]})}}ToneAudioBuffer.baseUrl="";ToneAudioBuffer.downloads=[];class OfflineContext extends Context{constructor(){super({clockSource:"offline",context:isOfflineAudioContext(arguments[0])?arguments[0]:createOfflineAudioContext(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:isOfflineAudioContext(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=isOfflineAudioContext(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(et){return __awaiter(this,void 0,void 0,function*(){let nt=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,nt++;const rt=Math.floor(this.sampleRate/128);et&&nt%rt===0&&(yield new Promise(it=>setTimeout(it,1)))}})}render(et=!0){return __awaiter(this,void 0,void 0,function*(){yield this.workletsAreReady(),yield this._renderClock(et);const nt=yield this._context.startRendering();return new ToneAudioBuffer(nt)})}close(){return Promise.resolve()}}const dummyContext=new DummyContext;let globalContext=dummyContext;function getContext(){return globalContext===dummyContext&&hasAudioContext&&setContext(new Context),globalContext}function setContext(tt,et=!1){et&&globalContext.dispose(),isAudioContext(tt)?globalContext=new Context(tt):isOfflineAudioContext(tt)?globalContext=new OfflineContext(tt):globalContext=tt}function start$1(){return globalContext.resume()}if(theWindow&&!theWindow.TONE_SILENCE_LOGGING){const et=` * Tone.js v${version$1} * `;console.log(`%c${et}`,"background: #000; color: #fff")}function dbToGain(tt){return Math.pow(10,tt/20)}function gainToDb(tt){return 20*(Math.log(tt)/Math.LN10)}function intervalToFrequencyRatio(tt){return Math.pow(2,tt/12)}let A4=440;function getA4(){return A4}function setA4(tt){A4=tt}function ftom(tt){return Math.round(ftomf(tt))}function ftomf(tt){return 69+12*Math.log2(tt/A4)}function mtof(tt){return A4*Math.pow(2,(tt-69)/12)}class TimeBaseClass extends Tone{constructor(et,nt,rt){super(),this.defaultUnits="s",this._val=nt,this._units=rt,this.context=et,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:et=>this._frequencyToUnits(parseFloat(et)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:et=>this._ticksToUnits(parseInt(et,10)),regexp:/^(\d+)i$/i},m:{method:et=>this._beatsToUnits(parseInt(et,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(et,nt)=>{const rt=parseInt(et,10),it=nt==="."?1.5:1;return rt===1?this._beatsToUnits(this._getTimeSignature())*it:this._beatsToUnits(4/rt)*it},regexp:/^(\d+)n(\.?)$/i},number:{method:et=>this._expressions[this.defaultUnits].method.call(this,et),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:et=>this._secondsToUnits(parseFloat(et)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:et=>parseInt(et,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:et=>{const nt=parseInt(et,10);return this._beatsToUnits(8/(Math.floor(nt)*3))},regexp:/^(\d+)t$/i},tr:{method:(et,nt,rt)=>{let it=0;return et&&et!=="0"&&(it+=this._beatsToUnits(this._getTimeSignature()*parseFloat(et))),nt&&nt!=="0"&&(it+=this._beatsToUnits(parseFloat(nt))),rt&&rt!=="0"&&(it+=this._beatsToUnits(parseFloat(rt)/4)),it},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof TimeBaseClass&&this.fromType(this._val),isUndef(this._val))return this._noArg();if(isString$2(this._val)&&isUndef(this._units)){for(const et in this._expressions)if(this._expressions[et].regexp.test(this._val.trim())){this._units=et;break}}else if(isObject$7(this._val)){let et=0;for(const nt in this._val)if(isDefined(this._val[nt])){const rt=this._val[nt],it=new this.constructor(this.context,nt).valueOf()*rt;et+=it}return et}if(isDefined(this._units)){const et=this._expressions[this._units],nt=this._val.toString().trim().match(et.regexp);return nt?et.method.apply(this,nt.slice(1)):et.method.call(this,this._val)}else return isString$2(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(et){return 1/et}_beatsToUnits(et){return 60/this._getBpm()*et}_secondsToUnits(et){return et}_ticksToUnits(et){return et*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(et){switch(this._units=void 0,this.defaultUnits){case"s":this._val=et.toSeconds();break;case"i":this._val=et.toTicks();break;case"hz":this._val=et.toFrequency();break;case"midi":this._val=et.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class TimeClass extends TimeBaseClass{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:et=>this._now()+new this.constructor(this.context,et).valueOf(),regexp:/^\+(.+)/},quantize:{method:et=>{const nt=new TimeClass(this.context,et).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(nt))},regexp:/^@(.+)/}})}quantize(et,nt=1){const rt=new this.constructor(this.context,et).valueOf(),it=this.valueOf(),st=Math.round(it/rt)*rt-it;return it+st*nt}toNotation(){const et=this.toSeconds(),nt=["1m"];for(let ot=1;ot<9;ot++){const at=Math.pow(2,ot);nt.push(at+"n."),nt.push(at+"n"),nt.push(at+"t")}nt.push("0");let rt=nt[0],it=new TimeClass(this.context,nt[0]).toSeconds();return nt.forEach(ot=>{const at=new TimeClass(this.context,ot).toSeconds();Math.abs(at-et)3&&(it=parseFloat(parseFloat(ot).toFixed(3))),[rt,nt,it].join(":")}toTicks(){const et=this._beatsToUnits(1);return this.valueOf()/et*this._getPPQ()}toSeconds(){return this.valueOf()}toMidi(){return ftom(this.toFrequency())}_now(){return this.context.now()}}class FrequencyClass extends TimeClass{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return getA4()}static set A4(et){setA4(et)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(et){return this.defaultUnits==="midi"?et:FrequencyClass.mtof(et)}},note:{regexp:/^([a-g]{1}(?:b|#|##|x|bb|###|#x|x#|bbb)?)(-?[0-9]+)/i,method(et,nt){const it=noteToScaleIndex[et.toLowerCase()]+(parseInt(nt,10)+1)*12;return this.defaultUnits==="midi"?it:FrequencyClass.mtof(it)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(et,nt,rt){let it=1;return et&&et!=="0"&&(it*=this._beatsToUnits(this._getTimeSignature()*parseFloat(et))),nt&&nt!=="0"&&(it*=this._beatsToUnits(parseFloat(nt))),rt&&rt!=="0"&&(it*=this._beatsToUnits(parseFloat(rt)/4)),it}}})}transpose(et){return new FrequencyClass(this.context,this.valueOf()*intervalToFrequencyRatio(et))}harmonize(et){return et.map(nt=>this.transpose(nt))}toMidi(){return ftom(this.valueOf())}toNote(){const et=this.toFrequency(),nt=Math.log2(et/FrequencyClass.A4);let rt=Math.round(12*nt)+57;const it=Math.floor(rt/12);return it<0&&(rt+=-12*it),scaleIndexToNote[rt%12]+it.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const et=this._beatsToUnits(1),nt=this.valueOf()/et;return Math.floor(nt*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(et){return et}_ticksToUnits(et){return 1/(et*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(et){return 1/super._beatsToUnits(et)}_secondsToUnits(et){return 1/et}static mtof(et){return mtof(et)}static ftom(et){return ftom(et)}}const noteToScaleIndex={cbbb:-3,cbb:-2,cb:-1,c:0,"c#":1,cx:2,"c##":2,"c###":3,"cx#":3,"c#x":3,dbbb:-1,dbb:0,db:1,d:2,"d#":3,dx:4,"d##":4,"d###":5,"dx#":5,"d#x":5,ebbb:1,ebb:2,eb:3,e:4,"e#":5,ex:6,"e##":6,"e###":7,"ex#":7,"e#x":7,fbbb:2,fbb:3,fb:4,f:5,"f#":6,fx:7,"f##":7,"f###":8,"fx#":8,"f#x":8,gbbb:4,gbb:5,gb:6,g:7,"g#":8,gx:9,"g##":9,"g###":10,"gx#":10,"g#x":10,abbb:6,abb:7,ab:8,a:9,"a#":10,ax:11,"a##":11,"a###":12,"ax#":12,"a#x":12,bbbb:8,bbb:9,bb:10,b:11,"b#":12,bx:13,"b##":13,"b###":14,"bx#":14,"b#x":14},scaleIndexToNote=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];class TransportTimeClass extends TimeClass{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}class ToneWithContext extends Tone{constructor(){super();const et=optionsFromArguments(ToneWithContext.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=et.context}static getDefaults(){return{context:getContext()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(et){return assertUsedScheduleTime(et),new TimeClass(this.context,et).toSeconds()}toFrequency(et){return new FrequencyClass(this.context,et).toFrequency()}toTicks(et){return new TransportTimeClass(this.context,et).toTicks()}_getPartialProperties(et){const nt=this.get();return Object.keys(nt).forEach(rt=>{isUndef(et[rt])&&delete nt[rt]}),nt}get(){const et=getDefaultsFromInstance(this);return Object.keys(et).forEach(nt=>{if(Reflect.has(this,nt)){const rt=this[nt];isDefined(rt)&&isDefined(rt.value)&&isDefined(rt.setValueAtTime)?et[nt]=rt.value:rt instanceof ToneWithContext?et[nt]=rt._getPartialProperties(et[nt]):isArray$e(rt)||isNumber$4(rt)||isString$2(rt)||isBoolean$1(rt)?et[nt]=rt:delete et[nt]}}),et}set(et){return Object.keys(et).forEach(nt=>{Reflect.has(this,nt)&&isDefined(this[nt])&&(this[nt]&&isDefined(this[nt].value)&&isDefined(this[nt].setValueAtTime)?this[nt].value!==et[nt]&&(this[nt].value=et[nt]):this[nt]instanceof ToneWithContext?this[nt].set(et[nt]):this[nt]=et[nt])}),this}}class StateTimeline extends Timeline{constructor(et="stopped"){super(),this.name="StateTimeline",this._initial=et,this.setStateAtTime(this._initial,0)}getValueAtTime(et){const nt=this.get(et);return nt!==null?nt.state:this._initial}setStateAtTime(et,nt,rt){return assertRange(nt,0),this.add(Object.assign({},rt,{state:et,time:nt})),this}getLastState(et,nt){const rt=this._search(nt);for(let it=rt;it>=0;it--){const ot=this._timeline[it];if(ot.state===et)return ot}}getNextState(et,nt){const rt=this._search(nt);if(rt!==-1)for(let it=rt;it0,"timeConstant must be a number greater than 0");const ot=this.toSeconds(nt);return this._assertRange(it),assert(isFinite(it)&&isFinite(ot),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(et)}, ${JSON.stringify(nt)}`),this._events.add({constant:rt,time:ot,type:"setTargetAtTime",value:it}),this.log(this.units,"setTargetAtTime",et,ot,rt),this._param.setTargetAtTime(it,ot,rt),this}setValueCurveAtTime(et,nt,rt,it=1){rt=this.toSeconds(rt),nt=this.toSeconds(nt);const ot=this._fromType(et[0])*it;this.setValueAtTime(this._toType(ot),nt);const at=rt/(et.length-1);for(let st=1;st{it.type==="cancelScheduledValues"?et.cancelScheduledValues(it.time):it.type==="setTargetAtTime"?et.setTargetAtTime(it.value,it.time,it.constant):et[it.type](it.value,it.time)}),this}setParam(et){assert(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const nt=this.input;return nt.disconnect(this._param),this.apply(et),this._param=et,nt.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(et,nt,rt,it,ot){return rt+(nt-rt)*Math.exp(-(ot-et)/it)}_linearInterpolate(et,nt,rt,it,ot){return nt+(it-nt)*((ot-et)/(rt-et))}_exponentialInterpolate(et,nt,rt,it,ot){return nt*Math.pow(it/nt,(ot-et)/(rt-et))}}class ToneAudioNode extends ToneWithContext{constructor(){super(...arguments),this._internalChannels=[]}get numberOfInputs(){return isDefined(this.input)?isAudioParam(this.input)||this.input instanceof Param?1:this.input.numberOfInputs:0}get numberOfOutputs(){return isDefined(this.output)?this.output.numberOfOutputs:0}_isAudioNode(et){return isDefined(et)&&(et instanceof ToneAudioNode||isAudioNode(et))}_getInternalNodes(){const et=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&et.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&et.push(this.output),et}_setChannelProperties(et){this._getInternalNodes().forEach(rt=>{rt.channelCount=et.channelCount,rt.channelCountMode=et.channelCountMode,rt.channelInterpretation=et.channelInterpretation})}_getChannelProperties(){const et=this._getInternalNodes();assert(et.length>0,"ToneAudioNode does not have any internal nodes");const nt=et[0];return{channelCount:nt.channelCount,channelCountMode:nt.channelCountMode,channelInterpretation:nt.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(et){const nt=this._getChannelProperties();this._setChannelProperties(Object.assign(nt,{channelCount:et}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(et){const nt=this._getChannelProperties();this._setChannelProperties(Object.assign(nt,{channelCountMode:et}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(et){const nt=this._getChannelProperties();this._setChannelProperties(Object.assign(nt,{channelInterpretation:et}))}connect(et,nt=0,rt=0){return connect(this,et,nt,rt),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return warn$2("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(et,nt=0,rt=0){return disconnect(this,et,nt,rt),this}chain(...et){return connectSeries(this,...et),this}fan(...et){return et.forEach(nt=>this.connect(nt)),this}dispose(){return super.dispose(),isDefined(this.input)&&(this.input instanceof ToneAudioNode?this.input.dispose():isAudioNode(this.input)&&this.input.disconnect()),isDefined(this.output)&&(this.output instanceof ToneAudioNode?this.output.dispose():isAudioNode(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function connectSeries(...tt){const et=tt.shift();tt.reduce((nt,rt)=>(nt instanceof ToneAudioNode?nt.connect(rt):isAudioNode(nt)&&connect(nt,rt),rt),et)}function connect(tt,et,nt=0,rt=0){for(assert(isDefined(tt),"Cannot connect from undefined node"),assert(isDefined(et),"Cannot connect to undefined node"),(et instanceof ToneAudioNode||isAudioNode(et))&&assert(et.numberOfInputs>0,"Cannot connect to node with no inputs"),assert(tt.numberOfOutputs>0,"Cannot connect from node with no outputs");et instanceof ToneAudioNode||et instanceof Param;)isDefined(et.input)&&(et=et.input);for(;tt instanceof ToneAudioNode;)isDefined(tt.output)&&(tt=tt.output);isAudioParam(et)?tt.connect(et,nt):tt.connect(et,nt,rt)}function disconnect(tt,et,nt=0,rt=0){if(isDefined(et))for(;et instanceof ToneAudioNode;)et=et.input;for(;!isAudioNode(tt);)isDefined(tt.output)&&(tt=tt.output);isAudioParam(et)?tt.disconnect(et,nt):isAudioNode(et)?tt.disconnect(et,nt,rt):tt.disconnect()}class Gain extends ToneAudioNode{constructor(){super(optionsFromArguments(Gain.getDefaults(),arguments,["gain","units"])),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode;const et=optionsFromArguments(Gain.getDefaults(),arguments,["gain","units"]);this.gain=new Param({context:this.context,convert:et.convert,param:this._gainNode.gain,units:et.units,value:et.gain,minValue:et.minValue,maxValue:et.maxValue}),readOnly(this,"gain")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class OneShotSource extends ToneAudioNode{constructor(et){super(et),this.onended=noOp,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Gain({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(nt){const rt=this.toSeconds(nt);return this._startTime!==-1&&rt>=this._startTime&&(this._stopTime===-1||rt<=this._stopTime)?"started":"stopped"},this._fadeIn=et.fadeIn,this._fadeOut=et.fadeOut,this._curve=et.curve,this.onended=et.onended}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:noOp})}_startGain(et,nt=1){assert(this._startTime===-1,"Source cannot be started more than once");const rt=this.toSeconds(this._fadeIn);return this._startTime=et+rt,this._startTime=Math.max(this._startTime,this.context.currentTime),rt>0?(this._gainNode.gain.setValueAtTime(0,et),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(nt,et+rt):this._gainNode.gain.exponentialApproachValueAtTime(nt,et,rt)):this._gainNode.gain.setValueAtTime(nt,et),this}stop(et){return this.log("stop",et),this._stopGain(this.toSeconds(et)),this}_stopGain(et){assert(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const nt=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(et)+nt,this._stopTime=Math.max(this._stopTime,this.now()),nt>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,nt,et):this._gainNode.gain.targetRampTo(0,nt,et):(this._gainNode.gain.cancelAndHoldAtTime(et),this._gainNode.gain.setValueAtTime(0,et)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const rt=this._curve==="exponential"?nt*2:0;this._stopSource(this.now()+rt),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==noOp&&(this.onended(this),this.onended=noOp,!this.context.isOffline)){const et=()=>this.dispose();typeof window.requestIdleCallback<"u"?window.requestIdleCallback(et):setTimeout(et,1e3)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),assert(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.dispose(),this.onended=noOp,this}}class ToneConstantSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"])),this.name="ToneConstantSource",this._source=this.context.createConstantSource();const et=optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"]);connect(this._source,this._gainNode),this.offset=new Param({context:this.context,convert:et.convert,param:this._source.offset,units:et.units,value:et.offset,minValue:et.minValue,maxValue:et.maxValue})}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{convert:!0,offset:1,units:"number"})}start(et){const nt=this.toSeconds(et);return this.log("start",nt),this._startGain(nt),this._source.start(nt),this}_stopSource(et){this._source.stop(et)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class Signal extends ToneAudioNode{constructor(){super(optionsFromArguments(Signal.getDefaults(),arguments,["value","units"])),this.name="Signal",this.override=!0;const et=optionsFromArguments(Signal.getDefaults(),arguments,["value","units"]);this.output=this._constantSource=new ToneConstantSource({context:this.context,convert:et.convert,offset:et.value,units:et.units,minValue:et.minValue,maxValue:et.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,units:"number",value:0})}connect(et,nt=0,rt=0){return connectSignal(this,et,nt,rt),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(et,nt){return this._param.setValueAtTime(et,nt),this}getValueAtTime(et){return this._param.getValueAtTime(et)}setRampPoint(et){return this._param.setRampPoint(et),this}linearRampToValueAtTime(et,nt){return this._param.linearRampToValueAtTime(et,nt),this}exponentialRampToValueAtTime(et,nt){return this._param.exponentialRampToValueAtTime(et,nt),this}exponentialRampTo(et,nt,rt){return this._param.exponentialRampTo(et,nt,rt),this}linearRampTo(et,nt,rt){return this._param.linearRampTo(et,nt,rt),this}targetRampTo(et,nt,rt){return this._param.targetRampTo(et,nt,rt),this}exponentialApproachValueAtTime(et,nt,rt){return this._param.exponentialApproachValueAtTime(et,nt,rt),this}setTargetAtTime(et,nt,rt){return this._param.setTargetAtTime(et,nt,rt),this}setValueCurveAtTime(et,nt,rt,it){return this._param.setValueCurveAtTime(et,nt,rt,it),this}cancelScheduledValues(et){return this._param.cancelScheduledValues(et),this}cancelAndHoldAtTime(et){return this._param.cancelAndHoldAtTime(et),this}rampTo(et,nt,rt){return this._param.rampTo(et,nt,rt),this}get value(){return this._param.value}set value(et){this._param.value=et}get convert(){return this._param.convert}set convert(et){this._param.convert=et}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(et){this._param.overridden=et}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(et){return this._param.apply(et),this}}function connectSignal(tt,et,nt,rt){(et instanceof Param||isAudioParam(et)||et instanceof Signal&&et.override)&&(et.cancelScheduledValues(0),et.setValueAtTime(0,0),et instanceof Signal&&(et.overridden=!0)),connect(tt,et,nt,rt)}class TickParam extends Param{constructor(){super(optionsFromArguments(TickParam.getDefaults(),arguments,["value"])),this.name="TickParam",this._events=new Timeline(1/0),this._multiplier=1;const et=optionsFromArguments(TickParam.getDefaults(),arguments,["value"]);this._multiplier=et.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(et.value)}),this.setValueAtTime(et.value,0)}static getDefaults(){return Object.assign(Param.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(et,nt,rt){nt=this.toSeconds(nt),this.setRampPoint(nt);const it=this._fromType(et),ot=this._events.get(nt),at=Math.round(Math.max(1/rt,1));for(let st=0;st<=at;st++){const lt=rt*st+nt,ct=this._exponentialApproach(ot.time,ot.value,it,rt,lt);this.linearRampToValueAtTime(this._toType(ct),lt)}return this}setValueAtTime(et,nt){const rt=this.toSeconds(nt);super.setValueAtTime(et,nt);const it=this._events.get(rt),ot=this._events.previousEvent(it),at=this._getTicksUntilEvent(ot,rt);return it.ticks=Math.max(at,0),this}linearRampToValueAtTime(et,nt){const rt=this.toSeconds(nt);super.linearRampToValueAtTime(et,nt);const it=this._events.get(rt),ot=this._events.previousEvent(it),at=this._getTicksUntilEvent(ot,rt);return it.ticks=Math.max(at,0),this}exponentialRampToValueAtTime(et,nt){nt=this.toSeconds(nt);const rt=this._fromType(et),it=this._events.get(nt),ot=Math.round(Math.max((nt-it.time)*10,1)),at=(nt-it.time)/ot;for(let st=0;st<=ot;st++){const lt=at*st+it.time,ct=this._exponentialInterpolate(it.time,it.value,nt,rt,lt);this.linearRampToValueAtTime(this._toType(ct),lt)}return this}_getTicksUntilEvent(et,nt){if(et===null)et={ticks:0,time:0,type:"setValueAtTime",value:0};else if(isUndef(et.ticks)){const at=this._events.previousEvent(et);et.ticks=this._getTicksUntilEvent(at,et.time)}const rt=this._fromType(this.getValueAtTime(et.time));let it=this._fromType(this.getValueAtTime(nt));const ot=this._events.get(nt);return ot&&ot.time===nt&&ot.type==="setValueAtTime"&&(it=this._fromType(this.getValueAtTime(nt-this.sampleTime))),.5*(nt-et.time)*(rt+it)+et.ticks}getTicksAtTime(et){const nt=this.toSeconds(et),rt=this._events.get(nt);return Math.max(this._getTicksUntilEvent(rt,nt),0)}getDurationOfTicks(et,nt){const rt=this.toSeconds(nt),it=this.getTicksAtTime(nt);return this.getTimeOfTick(it+et)-rt}getTimeOfTick(et){const nt=this._events.get(et,"ticks"),rt=this._events.getAfter(et,"ticks");if(nt&&nt.ticks===et)return nt.time;if(nt&&rt&&rt.type==="linearRampToValueAtTime"&&nt.value!==rt.value){const it=this._fromType(this.getValueAtTime(nt.time)),at=(this._fromType(this.getValueAtTime(rt.time))-it)/(rt.time-nt.time),st=Math.sqrt(Math.pow(it,2)-2*at*(nt.ticks-et)),lt=(-it+st)/at,ct=(-it-st)/at;return(lt>0?lt:ct)+nt.time}else return nt?nt.value===0?1/0:nt.time+(et-nt.ticks)/nt.value:et/this._initialValue}ticksToTime(et,nt){return this.getDurationOfTicks(et,nt)}timeToTicks(et,nt){const rt=this.toSeconds(nt),it=this.toSeconds(et),ot=this.getTicksAtTime(rt);return this.getTicksAtTime(rt+it)-ot}_fromType(et){return this.units==="bpm"&&this.multiplier?1/(60/et/this.multiplier):super._fromType(et)}_toType(et){return this.units==="bpm"&&this.multiplier?et/this.multiplier*60:super._toType(et)}get multiplier(){return this._multiplier}set multiplier(et){const nt=this.value;this._multiplier=et,this.cancelScheduledValues(0),this.setValueAtTime(nt,0)}}class TickSignal extends Signal{constructor(){super(optionsFromArguments(TickSignal.getDefaults(),arguments,["value"])),this.name="TickSignal";const et=optionsFromArguments(TickSignal.getDefaults(),arguments,["value"]);this.input=this._param=new TickParam({context:this.context,convert:et.convert,multiplier:et.multiplier,param:this._constantSource.offset,units:et.units,value:et.value})}static getDefaults(){return Object.assign(Signal.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(et,nt){return this._param.ticksToTime(et,nt)}timeToTicks(et,nt){return this._param.timeToTicks(et,nt)}getTimeOfTick(et){return this._param.getTimeOfTick(et)}getDurationOfTicks(et,nt){return this._param.getDurationOfTicks(et,nt)}getTicksAtTime(et){return this._param.getTicksAtTime(et)}get multiplier(){return this._param.multiplier}set multiplier(et){this._param.multiplier=et}dispose(){return super.dispose(),this._param.dispose(),this}}class TickSource extends ToneWithContext{constructor(){super(optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"])),this.name="TickSource",this._state=new StateTimeline,this._tickOffset=new Timeline,this._ticksAtTime=new Timeline,this._secondsAtTime=new Timeline;const et=optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"]);this.frequency=new TickSignal({context:this.context,units:et.units,value:et.frequency}),readOnly(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},ToneWithContext.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(et,nt){const rt=this.toSeconds(et);return this._state.getValueAtTime(rt)!=="started"&&(this._state.setStateAtTime("started",rt),isDefined(nt)&&this.setTicksAtTime(nt,rt),this._ticksAtTime.cancel(rt),this._secondsAtTime.cancel(rt)),this}stop(et){const nt=this.toSeconds(et);if(this._state.getValueAtTime(nt)==="stopped"){const rt=this._state.get(nt);rt&&rt.time>0&&(this._tickOffset.cancel(rt.time),this._state.cancel(rt.time))}return this._state.cancel(nt),this._state.setStateAtTime("stopped",nt),this.setTicksAtTime(0,nt),this._ticksAtTime.cancel(nt),this._secondsAtTime.cancel(nt),this}pause(et){const nt=this.toSeconds(et);return this._state.getValueAtTime(nt)==="started"&&(this._state.setStateAtTime("paused",nt),this._ticksAtTime.cancel(nt),this._secondsAtTime.cancel(nt)),this}cancel(et){return et=this.toSeconds(et),this._state.cancel(et),this._tickOffset.cancel(et),this._ticksAtTime.cancel(et),this._secondsAtTime.cancel(et),this}getTicksAtTime(et){const nt=this.toSeconds(et),rt=this._state.getLastState("stopped",nt),it=this._ticksAtTime.get(nt),ot={state:"paused",time:nt};this._state.add(ot);let at=it||rt,st=it?it.ticks:0,lt=null;return this._state.forEachBetween(at.time,nt+this.sampleTime,ct=>{let ut=at.time;const ht=this._tickOffset.get(ct.time);ht&&ht.time>=at.time&&(st=ht.ticks,ut=ht.time),at.state==="started"&&ct.state!=="started"&&(st+=this.frequency.getTicksAtTime(ct.time)-this.frequency.getTicksAtTime(ut),ct.time!=ot.time&&(lt={state:ct.state,time:ct.time,ticks:st})),at=ct}),this._state.remove(ot),lt&&this._ticksAtTime.add(lt),st}get ticks(){return this.getTicksAtTime(this.now())}set ticks(et){this.setTicksAtTime(et,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(et){const nt=this.now(),rt=this.frequency.timeToTicks(et,nt);this.setTicksAtTime(rt,nt)}getSecondsAtTime(et){et=this.toSeconds(et);const nt=this._state.getLastState("stopped",et),rt={state:"paused",time:et};this._state.add(rt);const it=this._secondsAtTime.get(et);let ot=it||nt,at=it?it.seconds:0,st=null;return this._state.forEachBetween(ot.time,et+this.sampleTime,lt=>{let ct=ot.time;const ut=this._tickOffset.get(lt.time);ut&&ut.time>=ot.time&&(at=ut.seconds,ct=ut.time),ot.state==="started"&<.state!=="started"&&(at+=lt.time-ct,lt.time!=rt.time&&(st={state:lt.state,time:lt.time,seconds:at})),ot=lt}),this._state.remove(rt),st&&this._secondsAtTime.add(st),at}setTicksAtTime(et,nt){return nt=this.toSeconds(nt),this._tickOffset.cancel(nt),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(et,nt),ticks:et,time:nt}),this._ticksAtTime.cancel(nt),this._secondsAtTime.cancel(nt),this}getStateAtTime(et){return et=this.toSeconds(et),this._state.getValueAtTime(et)}getTimeOfTick(et,nt=this.now()){const rt=this._tickOffset.get(nt),it=this._state.get(nt),ot=Math.max(rt.time,it.time),at=this.frequency.getTicksAtTime(ot)+et-rt.ticks;return this.frequency.getTimeOfTick(at)}forEachTickBetween(et,nt,rt){let it=this._state.get(et);this._state.forEachBetween(et,nt,at=>{it&&it.state==="started"&&at.state!=="started"&&this.forEachTickBetween(Math.max(it.time,et),at.time-this.sampleTime,rt),it=at});let ot=null;if(it&&it.state==="started"){const at=Math.max(it.time,et),st=this.frequency.getTicksAtTime(at),lt=this.frequency.getTicksAtTime(it.time),ct=st-lt;let ut=Math.ceil(ct)-ct;ut=EQ(ut,1)?0:ut;let ht=this.frequency.getTimeOfTick(st+ut);for(;ht{switch(rt.state){case"started":const it=this._tickSource.getTicksAtTime(rt.time);this.emit("start",rt.time,it);break;case"stopped":rt.time!==0&&this.emit("stop",rt.time);break;case"paused":this.emit("pause",rt.time);break}}),this._tickSource.forEachTickBetween(et,nt,(rt,it)=>{this.callback(rt,it)}))}getStateAtTime(et){const nt=this.toSeconds(et);return this._state.getValueAtTime(nt)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}Emitter$1.mixin(Clock);class ToneAudioBuffers extends Tone{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const et=optionsFromArguments(ToneAudioBuffers.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=et.baseUrl,Object.keys(et.urls).forEach(nt=>{this._loadingCount++;const rt=et.urls[nt];this.add(nt,rt,this._bufferLoaded.bind(this,et.onload),et.onerror)})}static getDefaults(){return{baseUrl:"",onerror:noOp,onload:noOp,urls:{}}}has(et){return this._buffers.has(et.toString())}get(et){return assert(this.has(et),`ToneAudioBuffers has no buffer named: ${et}`),this._buffers.get(et.toString())}_bufferLoaded(et){this._loadingCount--,this._loadingCount===0&&et&&et()}get loaded(){return Array.from(this._buffers).every(([et,nt])=>nt.loaded)}add(et,nt,rt=noOp,it=noOp){return isString$2(nt)?(this.baseUrl&&nt.trim().substring(0,11).toLowerCase()==="data:audio/"&&(this.baseUrl=""),this._buffers.set(et.toString(),new ToneAudioBuffer(this.baseUrl+nt,rt,it))):this._buffers.set(et.toString(),new ToneAudioBuffer(nt,rt,it)),this}dispose(){return super.dispose(),this._buffers.forEach(et=>et.dispose()),this._buffers.clear(),this}}class TicksClass extends TransportTimeClass{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(et){return this._getPPQ()*et}_secondsToUnits(et){return Math.floor(et/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(et){return et}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}class Draw extends ToneWithContext{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Timeline,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(et,nt){return this._events.add({callback:et,time:this.toSeconds(nt)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(et){return this._events.cancel(this.toSeconds(et)),this}_drawLoop(){const et=this.context.currentTime;for(;this._events.length&&this._events.peek().time-this.anticipation<=et;){const nt=this._events.shift();nt&&et-nt.time<=this.expiration&&nt.callback()}this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}onContextInit(tt=>{tt.draw=new Draw({context:tt})});onContextClose(tt=>{tt.draw.dispose()});class IntervalTimeline extends Tone{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(et){assert(isDefined(et.time),"Events must have a time property"),assert(isDefined(et.duration),"Events must have a duration parameter"),et.time=et.time.valueOf();let nt=new IntervalNode(et.time,et.time+et.duration,et);for(this._root===null?this._root=nt:this._root.insert(nt),this._length++;nt!==null;)nt.updateHeight(),nt.updateMax(),this._rebalance(nt),nt=nt.parent;return this}remove(et){if(this._root!==null){const nt=[];this._root.search(et.time,nt);for(const rt of nt)if(rt.event===et){this._removeNode(rt),this._length--;break}}return this}get length(){return this._length}cancel(et){return this.forEachFrom(et,nt=>this.remove(nt)),this}_setRoot(et){this._root=et,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(et,nt){et.parent!==null?(et.isLeftChild()?et.parent.left=nt:et.parent.right=nt,this._rebalance(et.parent)):this._setRoot(nt)}_removeNode(et){if(et.left===null&&et.right===null)this._replaceNodeInParent(et,null);else if(et.right===null)this._replaceNodeInParent(et,et.left);else if(et.left===null)this._replaceNodeInParent(et,et.right);else{const nt=et.getBalance();let rt,it=null;if(nt>0)if(et.left.right===null)rt=et.left,rt.right=et.right,it=rt;else{for(rt=et.left.right;rt.right!==null;)rt=rt.right;rt.parent&&(rt.parent.right=rt.left,it=rt.parent,rt.left=et.left,rt.right=et.right)}else if(et.right.left===null)rt=et.right,rt.left=et.left,it=rt;else{for(rt=et.right.left;rt.left!==null;)rt=rt.left;rt.parent&&(rt.parent.left=rt.right,it=rt.parent,rt.left=et.left,rt.right=et.right)}et.parent!==null?et.isLeftChild()?et.parent.left=rt:et.parent.right=rt:this._setRoot(rt),it&&this._rebalance(it)}et.dispose()}_rotateLeft(et){const nt=et.parent,rt=et.isLeftChild(),it=et.right;it&&(et.right=it.left,it.left=et),nt!==null?rt?nt.left=it:nt.right=it:this._setRoot(it)}_rotateRight(et){const nt=et.parent,rt=et.isLeftChild(),it=et.left;it&&(et.left=it.right,it.right=et),nt!==null?rt?nt.left=it:nt.right=it:this._setRoot(it)}_rebalance(et){const nt=et.getBalance();nt>1&&et.left?et.left.getBalance()<0?this._rotateLeft(et.left):this._rotateRight(et):nt<-1&&et.right&&(et.right.getBalance()>0?this._rotateRight(et.right):this._rotateLeft(et))}get(et){if(this._root!==null){const nt=[];if(this._root.search(et,nt),nt.length>0){let rt=nt[0];for(let it=1;itrt.low&&(rt=nt[it]);return rt.event}}return null}forEach(et){if(this._root!==null){const nt=[];this._root.traverse(rt=>nt.push(rt)),nt.forEach(rt=>{rt.event&&et(rt.event)})}return this}forEachAtTime(et,nt){if(this._root!==null){const rt=[];this._root.search(et,rt),rt.forEach(it=>{it.event&&nt(it.event)})}return this}forEachFrom(et,nt){if(this._root!==null){const rt=[];this._root.searchAfter(et,rt),rt.forEach(it=>{it.event&&nt(it.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(et=>et.dispose()),this._root=null,this}}class IntervalNode{constructor(et,nt,rt){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=rt,this.low=et,this.high=nt,this.max=this.high}insert(et){et.low<=this.low?this.left===null?this.left=et:this.left.insert(et):this.right===null?this.right=et:this.right.insert(et)}search(et,nt){et>this.max||(this.left!==null&&this.left.search(et,nt),this.low<=et&&this.high>et&&nt.push(this),!(this.low>et)&&this.right!==null&&this.right.search(et,nt))}searchAfter(et,nt){this.low>=et&&(nt.push(this),this.left!==null&&this.left.searchAfter(et,nt)),this.right!==null&&this.right.searchAfter(et,nt)}traverse(et){et(this),this.left!==null&&this.left.traverse(et),this.right!==null&&this.right.traverse(et)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let et=0;return this.left!==null&&this.right!==null?et=this.left.height-this.right.height:this.left!==null?et=this.left.height+1:this.right!==null&&(et=-(this.right.height+1)),et}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(et){this._left=et,et!==null&&(et.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(et){this._right=et,et!==null&&(et.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}class Volume extends ToneAudioNode{constructor(){super(optionsFromArguments(Volume.getDefaults(),arguments,["volume"])),this.name="Volume";const et=optionsFromArguments(Volume.getDefaults(),arguments,["volume"]);this.input=this.output=new Gain({context:this.context,gain:et.volume,units:"decibels"}),this.volume=this.output.gain,readOnly(this,"volume"),this._unmutedVolume=et.volume,this.mute=et.mute}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(et){!this.mute&&et?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!et&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}let Destination$1=class b1 extends ToneAudioNode{constructor(){super(optionsFromArguments(b1.getDefaults(),arguments)),this.name="Destination",this.input=new Volume({context:this.context}),this.output=new Gain({context:this.context}),this.volume=this.input.volume;const et=optionsFromArguments(b1.getDefaults(),arguments);connectSeries(this.input,this.output,this.context.rawContext.destination),this.mute=et.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(et){this.input.mute=et}chain(...et){return this.input.disconnect(),et.unshift(this.input),et.push(this.output),connectSeries(...et),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}};onContextInit(tt=>{tt.destination=new Destination$1({context:tt})});onContextClose(tt=>{tt.destination.dispose()});class TimelineValue extends Tone{constructor(et){super(),this.name="TimelineValue",this._timeline=new Timeline({memory:10}),this._initialValue=et}set(et,nt){return this._timeline.add({value:et,time:nt}),this}get(et){const nt=this._timeline.get(et);return nt?nt.value:this._initialValue}}class SignalOperator extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(SignalOperator.getDefaults(),arguments,["context"])))}connect(et,nt=0,rt=0){return connectSignal(this,et,nt,rt),this}}class WaveShaper extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(WaveShaper.getDefaults(),arguments,["mapping","length"]))),this.name="WaveShaper",this._shaper=this.context.createWaveShaper(),this.input=this._shaper,this.output=this._shaper;const et=optionsFromArguments(WaveShaper.getDefaults(),arguments,["mapping","length"]);isArray$e(et.mapping)||et.mapping instanceof Float32Array?this.curve=Float32Array.from(et.mapping):isFunction$2(et.mapping)&&this.setMap(et.mapping,et.length)}static getDefaults(){return Object.assign(Signal.getDefaults(),{length:1024})}setMap(et,nt=1024){const rt=new Float32Array(nt);for(let it=0,ot=nt;itrt.includes(et));assert(nt,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=et}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class Pow extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Pow.getDefaults(),arguments,["value"]))),this.name="Pow";const et=optionsFromArguments(Pow.getDefaults(),arguments,["value"]);this._exponentScaler=this.input=this.output=new WaveShaper({context:this.context,mapping:this._expFunc(et.value),length:8192}),this._exponent=et.value}static getDefaults(){return Object.assign(SignalOperator.getDefaults(),{value:1})}_expFunc(et){return nt=>Math.pow(Math.abs(nt),et)}get value(){return this._exponent}set value(et){this._exponent=et,this._exponentScaler.setMap(this._expFunc(this._exponent))}dispose(){return super.dispose(),this._exponentScaler.dispose(),this}}class TransportEvent{constructor(et,nt){this.id=TransportEvent._eventId++,this._remainderTime=0;const rt=Object.assign(TransportEvent.getDefaults(),nt);this.transport=et,this.callback=rt.callback,this._once=rt.once,this.time=Math.floor(rt.time),this._remainderTime=rt.time-this.time}static getDefaults(){return{callback:noOp,once:!1,time:0}}get floatTime(){return this.time+this._remainderTime}invoke(et){if(this.callback){const nt=this.transport.bpm.getDurationOfTicks(1,et);this.callback(et+this._remainderTime*nt),this._once&&this.transport.clear(this.id)}}dispose(){return this.callback=void 0,this}}TransportEvent._eventId=0;class TransportRepeatEvent extends TransportEvent{constructor(et,nt){super(et,nt),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const rt=Object.assign(TransportRepeatEvent.getDefaults(),nt);this.duration=rt.duration,this._interval=rt.interval,this._nextTick=rt.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.transport.on("ticks",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},TransportEvent.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(et){this._createEvents(et),super.invoke(et)}_createEvent(){return LT(this._nextTick,this.floatTime+this.duration)?this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds()):-1}_createEvents(et){LT(this._nextTick+this._interval,this.floatTime+this.duration)&&(this._nextTick+=this._interval,this._currentId=this._nextId,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds()))}_restart(et){this.transport.clear(this._currentId),this.transport.clear(this._nextId),this._nextTick=this.floatTime;const nt=this.transport.getTicksAtTime(et);GT(nt,this.time)&&(this._nextTick=this.floatTime+Math.ceil((nt-this.floatTime)/this._interval)*this._interval),this._currentId=this._createEvent(),this._nextTick+=this._interval,this._nextId=this._createEvent()}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this.transport.off("ticks",this._boundRestart),this}}let Transport$1=class w1 extends ToneWithContext{constructor(){super(optionsFromArguments(w1.getDefaults(),arguments)),this.name="Transport",this._loop=new TimelineValue(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Timeline,this._repeatedEvents=new IntervalTimeline,this._syncedSignals=[],this._swingAmount=0;const et=optionsFromArguments(w1.getDefaults(),arguments);this._ppq=et.ppq,this._clock=new Clock({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=et.ppq,this.bpm.setValueAtTime(et.bpm,0),readOnly(this,"bpm"),this._timeSignature=et.timeSignature,this._swingTicks=et.ppq/2}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(et,nt){if(this._loop.get(et)&&nt>=this._loopEnd&&(this.emit("loopEnd",et),this._clock.setTicksAtTime(this._loopStart,et),nt=this._loopStart,this.emit("loopStart",et,this._clock.getSecondsAtTime(et)),this.emit("loop",et)),this._swingAmount>0&&nt%this._ppq!==0&&nt%(this._swingTicks*2)!==0){const rt=nt%(this._swingTicks*2)/(this._swingTicks*2),it=Math.sin(rt*Math.PI)*this._swingAmount;et+=new TicksClass(this.context,this._swingTicks*2/3).toSeconds()*it}enterScheduledCallback(!0),this._timeline.forEachAtTime(nt,rt=>rt.invoke(et)),enterScheduledCallback(!1)}schedule(et,nt){const rt=new TransportEvent(this,{callback:et,time:new TransportTimeClass(this.context,nt).toTicks()});return this._addEvent(rt,this._timeline)}scheduleRepeat(et,nt,rt,it=1/0){const ot=new TransportRepeatEvent(this,{callback:et,duration:new TimeClass(this.context,it).toTicks(),interval:new TimeClass(this.context,nt).toTicks(),time:new TransportTimeClass(this.context,rt).toTicks()});return this._addEvent(ot,this._repeatedEvents)}scheduleOnce(et,nt){const rt=new TransportEvent(this,{callback:et,once:!0,time:new TransportTimeClass(this.context,nt).toTicks()});return this._addEvent(rt,this._timeline)}clear(et){if(this._scheduledEvents.hasOwnProperty(et)){const nt=this._scheduledEvents[et.toString()];nt.timeline.remove(nt.event),nt.event.dispose(),delete this._scheduledEvents[et.toString()]}return this}_addEvent(et,nt){return this._scheduledEvents[et.id.toString()]={event:et,timeline:nt},nt.add(et),et.id}cancel(et=0){const nt=this.toTicks(et);return this._timeline.forEachFrom(nt,rt=>this.clear(rt.id)),this._repeatedEvents.forEachFrom(nt,rt=>this.clear(rt.id)),this}_bindClockEvents(){this._clock.on("start",(et,nt)=>{nt=new TicksClass(this.context,nt).toSeconds(),this.emit("start",et,nt)}),this._clock.on("stop",et=>{this.emit("stop",et)}),this._clock.on("pause",et=>{this.emit("pause",et)})}get state(){return this._clock.getStateAtTime(this.now())}start(et,nt){this.context.resume();let rt;return isDefined(nt)&&(rt=this.toTicks(nt)),this._clock.start(et,rt),this}stop(et){return this._clock.stop(et),this}pause(et){return this._clock.pause(et),this}toggle(et){return et=this.toSeconds(et),this._clock.getStateAtTime(et)!=="started"?this.start(et):this.stop(et),this}get timeSignature(){return this._timeSignature}set timeSignature(et){isArray$e(et)&&(et=et[0]/et[1]*4),this._timeSignature=et}get loopStart(){return new TimeClass(this.context,this._loopStart,"i").toSeconds()}set loopStart(et){this._loopStart=this.toTicks(et)}get loopEnd(){return new TimeClass(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(et){this._loopEnd=this.toTicks(et)}get loop(){return this._loop.get(this.now())}set loop(et){this._loop.set(et,this.now())}setLoopPoints(et,nt){return this.loopStart=et,this.loopEnd=nt,this}get swing(){return this._swingAmount}set swing(et){this._swingAmount=et}get swingSubdivision(){return new TicksClass(this.context,this._swingTicks).toNotation()}set swingSubdivision(et){this._swingTicks=this.toTicks(et)}get position(){const et=this.now(),nt=this._clock.getTicksAtTime(et);return new TicksClass(this.context,nt).toBarsBeatsSixteenths()}set position(et){const nt=this.toTicks(et);this.ticks=nt}get seconds(){return this._clock.seconds}set seconds(et){const nt=this.now(),rt=this._clock.frequency.timeToTicks(et,nt);this.ticks=rt}get progress(){if(this.loop){const et=this.now();return(this._clock.getTicksAtTime(et)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(et){if(this._clock.ticks!==et){const nt=this.now();if(this.state==="started"){const rt=this._clock.getTicksAtTime(nt),it=this._clock.frequency.getDurationOfTicks(Math.ceil(rt)-rt,nt),ot=nt+it;this.emit("stop",ot),this._clock.setTicksAtTime(et,ot),this.emit("start",ot,this._clock.getSecondsAtTime(ot))}else this.emit("ticks",nt),this._clock.setTicksAtTime(et,nt)}}getTicksAtTime(et){return this._clock.getTicksAtTime(et)}getSecondsAtTime(et){return this._clock.getSecondsAtTime(et)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(et){this._clock.frequency.multiplier=et}nextSubdivision(et){if(et=this.toTicks(et),this.state!=="started")return 0;{const nt=this.now(),rt=this.getTicksAtTime(nt),it=et-rt%et;return this._clock.nextTickTime(it,nt)}}syncSignal(et,nt){const rt=this.now();let it=this.bpm,ot=1/(60/it.getValueAtTime(rt)/this.PPQ),at=[];if(et.units==="time"){const lt=.015625/ot,ct=new Gain(lt),ut=new Pow(-1),ht=new Gain(lt);it.chain(ct,ut,ht),it=ht,ot=1/ot,at=[ct,ut,ht]}nt||(et.getValueAtTime(rt)!==0?nt=et.getValueAtTime(rt)/ot:nt=0);const st=new Gain(nt);return it.connect(st),st.connect(et._param),at.push(st),this._syncedSignals.push({initial:et.value,nodes:at,signal:et}),et.value=0,this}unsyncSignal(et){for(let nt=this._syncedSignals.length-1;nt>=0;nt--){const rt=this._syncedSignals[nt];rt.signal===et&&(rt.nodes.forEach(it=>it.dispose()),rt.signal.value=rt.initial,this._syncedSignals.splice(nt,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),writable(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}};Emitter$1.mixin(Transport$1);onContextInit(tt=>{tt.transport=new Transport$1({context:tt})});onContextClose(tt=>{tt.transport.dispose()});class Source extends ToneAudioNode{constructor(et){super(et),this.input=void 0,this._state=new StateTimeline("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=noOp,this._syncedStop=noOp,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Volume({context:this.context,mute:et.mute,volume:et.volume}),this.volume=this._volume.volume,readOnly(this,"volume"),this.onstop=et.onstop}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,onstop:noOp,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(et){this._volume.mute=et}_clampToCurrentTime(et){return this._synced?et:Math.max(et,this.context.currentTime)}start(et,nt,rt){let it=isUndef(et)&&this._synced?this.context.transport.seconds:this.toSeconds(et);if(it=this._clampToCurrentTime(it),!this._synced&&this._state.getValueAtTime(it)==="started")assert(GT(it,this._state.get(it).time),"Start time must be strictly greater than previous start time"),this._state.cancel(it),this._state.setStateAtTime("started",it),this.log("restart",it),this.restart(it,nt,rt);else if(this.log("start",it),this._state.setStateAtTime("started",it),this._synced){const ot=this._state.get(it);ot&&(ot.offset=this.toSeconds(defaultArg(nt,0)),ot.duration=rt?this.toSeconds(rt):void 0);const at=this.context.transport.schedule(st=>{this._start(st,nt,rt)},it);this._scheduled.push(at),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>it&&this._syncedStart(this.now(),this.context.transport.seconds)}else assertContextRunning(this.context),this._start(it,nt,rt);return this}stop(et){let nt=isUndef(et)&&this._synced?this.context.transport.seconds:this.toSeconds(et);if(nt=this._clampToCurrentTime(nt),this._state.getValueAtTime(nt)==="started"||isDefined(this._state.getNextState("started",nt))){if(this.log("stop",nt),!this._synced)this._stop(nt);else{const rt=this.context.transport.schedule(this._stop.bind(this),nt);this._scheduled.push(rt)}this._state.cancel(nt),this._state.setStateAtTime("stopped",nt)}return this}restart(et,nt,rt){return et=this.toSeconds(et),this._state.getValueAtTime(et)==="started"&&(this._state.cancel(et),this._restart(et,nt,rt)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(et,nt)=>{if(GT(nt,0)){const rt=this._state.get(nt);if(rt&&rt.state==="started"&&rt.time!==nt){const it=nt-this.toSeconds(rt.time);let ot;rt.duration&&(ot=this.toSeconds(rt.duration)-it),this._start(et,this.toSeconds(rt.offset)+it,ot)}}},this._syncedStop=et=>{const nt=this.context.transport.getSecondsAtTime(Math.max(et-this.sampleTime,0));this._state.getValueAtTime(nt)==="started"&&this._stop(et)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(et=>this.context.transport.clear(et)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=noOp,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class ToneBufferSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"])),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1;const et=optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"]);connect(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new Param({context:this.context,param:this._source.playbackRate,units:"positive",value:et.playbackRate}),this.loop=et.loop,this.loopStart=et.loopStart,this.loopEnd=et.loopEnd,this._buffer=new ToneAudioBuffer(et.url,et.onload,et.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{url:new ToneAudioBuffer,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(et){this._fadeIn=et}get fadeOut(){return this._fadeOut}set fadeOut(et){this._fadeOut=et}get curve(){return this._curve}set curve(et){this._curve=et}start(et,nt,rt,it=1){assert(this.buffer.loaded,"buffer is either not set or not loaded");const ot=this.toSeconds(et);this._startGain(ot,it),this.loop?nt=defaultArg(nt,this.loopStart):nt=defaultArg(nt,0);let at=Math.max(this.toSeconds(nt),0);if(this.loop){const st=this.toSeconds(this.loopEnd)||this.buffer.duration,lt=this.toSeconds(this.loopStart),ct=st-lt;GTE(at,st)&&(at=(at-lt)%ct+lt),EQ(at,this.buffer.duration)&&(at=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,LT(at,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(ot,at)),isDefined(rt)){let st=this.toSeconds(rt);st=Math.max(st,0),this.stop(ot+st)}return this}_stopSource(et){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(et)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(et){this._source.loopStart=this.toSeconds(et)}get loopEnd(){return this._source.loopEnd}set loopEnd(et){this._source.loopEnd=this.toSeconds(et)}get buffer(){return this._buffer}set buffer(et){this._buffer.set(et)}get loop(){return this._source.loop}set loop(et){this._source.loop=et,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}class Noise extends Source{constructor(){super(optionsFromArguments(Noise.getDefaults(),arguments,["type"])),this.name="Noise",this._source=null;const et=optionsFromArguments(Noise.getDefaults(),arguments,["type"]);this._playbackRate=et.playbackRate,this.type=et.type,this._fadeIn=et.fadeIn,this._fadeOut=et.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{fadeIn:0,fadeOut:0,playbackRate:1,type:"white"})}get type(){return this._type}set type(et){if(assert(et in _noiseBuffers,"Noise: invalid type: "+et),this._type!==et&&(this._type=et,this.state==="started")){const nt=this.now();this._stop(nt),this._start(nt)}}get playbackRate(){return this._playbackRate}set playbackRate(et){this._playbackRate=et,this._source&&(this._source.playbackRate.value=et)}_start(et){const nt=_noiseBuffers[this._type];this._source=new ToneBufferSource({url:nt,context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,loop:!0,onended:()=>this.onstop(this),playbackRate:this._playbackRate}).connect(this.output),this._source.start(this.toSeconds(et),Math.random()*(nt.duration-.001))}_stop(et){this._source&&(this._source.stop(this.toSeconds(et)),this._source=null)}get fadeIn(){return this._fadeIn}set fadeIn(et){this._fadeIn=et,this._source&&(this._source.fadeIn=this._fadeIn)}get fadeOut(){return this._fadeOut}set fadeOut(et){this._fadeOut=et,this._source&&(this._source.fadeOut=this._fadeOut)}_restart(et){this._stop(et),this._start(et)}dispose(){return super.dispose(),this._source&&this._source.disconnect(),this}}const BUFFER_LENGTH=44100*5,NUM_CHANNELS=2,_noiseCache={brown:null,pink:null,white:null},_noiseBuffers={get brown(){if(!_noiseCache.brown){const tt=[];for(let et=0;etthis.onstop(this)});this._oscillator=rt,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(nt)}_stop(et){const nt=this.toSeconds(et);this._oscillator&&this._oscillator.stop(nt)}_restart(et){const nt=this.toSeconds(et);return this.log("restart",nt),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(nt),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Oscillator._periodicWaveCache.find(nt=>nt.phase===this._phase&&deepEquals(nt.partials,this._partials));{const et=Oscillator._periodicWaveCache.find(nt=>nt.type===this._type&&nt.phase===this._phase);return this._partialCount=et?et.partialCount:this._partialCount,et}}get type(){return this._type}set type(et){this._type=et;const nt=["sine","square","sawtooth","triangle"].indexOf(et)!==-1;if(this._phase===0&&nt)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=et);else{const rt=this._getCachedPeriodicWave();if(isDefined(rt)){const{partials:it,wave:ot}=rt;this._wave=ot,this._partials=it,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[it,ot]=this._getRealImaginary(et,this._phase),at=this.context.createPeriodicWave(it,ot);this._wave=at,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Oscillator._periodicWaveCache.push({imag:ot,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:it,type:this._type,wave:this._wave}),Oscillator._periodicWaveCache.length>100&&Oscillator._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(et){this.partialCount&&this._type!=="custom"&&et!=="custom"?this.type=et+this.partialCount:this.type=et}get partialCount(){return this._partialCount}set partialCount(et){assertRange(et,0);let nt=this._type;const rt=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(rt&&(nt=rt[1]),this._type!=="custom")et===0?this.type=nt:this.type=nt+et.toString();else{const it=new Float32Array(et);this._partials.forEach((ot,at)=>it[at]=ot),this._partials=Array.from(it),this.type=this._type}}_getRealImaginary(et,nt){let it=2048;const ot=new Float32Array(it),at=new Float32Array(it);let st=1;if(et==="custom"){if(st=this._partials.length+1,this._partialCount=this._partials.length,it=st,this._partials.length===0)return[ot,at]}else{const lt=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(et);lt?(st=parseInt(lt[2],10)+1,this._partialCount=parseInt(lt[2],10),et=lt[1],st=Math.max(st,2),it=st):this._partialCount=0,this._partials=[]}for(let lt=1;lt>1&1?-1:1):ut=0,this._partials[lt-1]=ut;break;case"custom":ut=this._partials[lt-1];break;default:throw new TypeError("Oscillator: invalid type: "+et)}ut!==0?(ot[lt]=-ut*Math.sin(nt*lt),at[lt]=ut*Math.cos(nt*lt)):(ot[lt]=0,at[lt]=0)}return[ot,at]}_inverseFFT(et,nt,rt){let it=0;const ot=et.length;for(let at=0;at(et+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Multiply extends Signal{constructor(){super(Object.assign(optionsFromArguments(Multiply.getDefaults(),arguments,["value"]))),this.name="Multiply",this.override=!1;const et=optionsFromArguments(Multiply.getDefaults(),arguments,["value"]);this._mult=this.input=this.output=new Gain({context:this.context,minValue:et.minValue,maxValue:et.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(et.value,0)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class AMOscillator extends Source{constructor(){super(optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="AMOscillator",this._modulationScale=new AudioToGain({context:this.context}),this._modulationNode=new Gain({context:this.context});const et=optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:et.detune,frequency:et.frequency,onstop:()=>this.onstop(this),phase:et.phase,type:et.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Oscillator({context:this.context,phase:et.phase,type:et.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:et.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),readOnly(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(et){this._modulator.start(et),this._carrier.start(et)}_stop(et){this._modulator.stop(et),this._carrier.stop(et)}_restart(et){this._modulator.restart(et),this._carrier.restart(et)}get type(){return this._carrier.type}set type(et){this._carrier.type=et}get baseType(){return this._carrier.baseType}set baseType(et){this._carrier.baseType=et}get partialCount(){return this._carrier.partialCount}set partialCount(et){this._carrier.partialCount=et}get modulationType(){return this._modulator.type}set modulationType(et){this._modulator.type=et}get phase(){return this._carrier.phase}set phase(et){this._carrier.phase=et,this._modulator.phase=et}get partials(){return this._carrier.partials}set partials(et){this._carrier.partials=et}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class FMOscillator extends Source{constructor(){super(optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="FMOscillator",this._modulationNode=new Gain({context:this.context,gain:0});const et=optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:et.detune,frequency:0,onstop:()=>this.onstop(this),phase:et.phase,type:et.type}),this.detune=this._carrier.detune,this.frequency=new Signal({context:this.context,units:"frequency",value:et.frequency}),this._modulator=new Oscillator({context:this.context,phase:et.phase,type:et.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:et.harmonicity}),this.modulationIndex=new Multiply({context:this.context,units:"positive",value:et.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),readOnly(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(et){this._modulator.start(et),this._carrier.start(et)}_stop(et){this._modulator.stop(et),this._carrier.stop(et)}_restart(et){return this._modulator.restart(et),this._carrier.restart(et),this}get type(){return this._carrier.type}set type(et){this._carrier.type=et}get baseType(){return this._carrier.baseType}set baseType(et){this._carrier.baseType=et}get partialCount(){return this._carrier.partialCount}set partialCount(et){this._carrier.partialCount=et}get modulationType(){return this._modulator.type}set modulationType(et){this._modulator.type=et}get phase(){return this._carrier.phase}set phase(et){this._carrier.phase=et,this._modulator.phase=et}get partials(){return this._carrier.partials}set partials(et){this._carrier.partials=et}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class PulseOscillator extends Source{constructor(){super(optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"])),this.name="PulseOscillator",this._widthGate=new Gain({context:this.context,gain:0}),this._thresh=new WaveShaper({context:this.context,mapping:nt=>nt<=0?-1:1});const et=optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"]);this.width=new Signal({context:this.context,units:"audioRange",value:et.width}),this._triangle=new Oscillator({context:this.context,detune:et.detune,frequency:et.frequency,onstop:()=>this.onstop(this),phase:et.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),readOnly(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(et){et=this.toSeconds(et),this._triangle.start(et),this._widthGate.gain.setValueAtTime(1,et)}_stop(et){et=this.toSeconds(et),this._triangle.stop(et),this._widthGate.gain.cancelScheduledValues(et),this._widthGate.gain.setValueAtTime(0,et)}_restart(et){this._triangle.restart(et),this._widthGate.gain.cancelScheduledValues(et),this._widthGate.gain.setValueAtTime(1,et)}get phase(){return this._triangle.phase}set phase(et){this._triangle.phase=et}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(et){this._triangle.type=et}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class FatOscillator extends Source{constructor(){super(optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"])),this.name="FatOscillator",this._oscillators=[];const et=optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"]);this.frequency=new Signal({context:this.context,units:"frequency",value:et.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:et.detune}),this._spread=et.spread,this._type=et.type,this._phase=et.phase,this._partials=et.partials,this._partialCount=et.partialCount,this.count=et.count,readOnly(this,["frequency","detune"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(et){et=this.toSeconds(et),this._forEach(nt=>nt.start(et))}_stop(et){et=this.toSeconds(et),this._forEach(nt=>nt.stop(et))}_restart(et){this._forEach(nt=>nt.restart(et))}_forEach(et){for(let nt=0;ntnt.type=et)}get spread(){return this._spread}set spread(et){if(this._spread=et,this._oscillators.length>1){const nt=-et/2,rt=et/(this._oscillators.length-1);this._forEach((it,ot)=>it.detune.value=nt+rt*ot)}}get count(){return this._oscillators.length}set count(et){if(assertRange(et,1),this._oscillators.length!==et){this._forEach(nt=>nt.dispose()),this._oscillators=[];for(let nt=0;ntthis.onstop(this):noOp});this.type==="custom"&&(rt.partials=this._partials),this.frequency.connect(rt.frequency),this.detune.connect(rt.detune),rt.detune.overridden=!1,rt.connect(this.output),this._oscillators[nt]=rt}this.spread=this._spread,this.state==="started"&&this._forEach(nt=>nt.start())}}get phase(){return this._phase}set phase(et){this._phase=et,this._forEach((nt,rt)=>nt.phase=this._phase+rt/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(et){this._forEach(nt=>nt.baseType=et),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(et){this._partials=et,this._partialCount=this._partials.length,et.length&&(this._type="custom",this._forEach(nt=>nt.partials=et))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(et){this._partialCount=et,this._forEach(nt=>nt.partialCount=et),this._type=this._oscillators[0].type}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(et=>et.dispose()),this}}class PWMOscillator extends Source{constructor(){super(optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"])),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Multiply({context:this.context,value:2});const et=optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"]);this._pulse=new PulseOscillator({context:this.context,frequency:et.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Oscillator({context:this.context,detune:et.detune,frequency:et.frequency,onstop:()=>this.onstop(this),phase:et.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),readOnly(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(et){et=this.toSeconds(et),this._modulator.start(et),this._pulse.start(et)}_stop(et){et=this.toSeconds(et),this._modulator.stop(et),this._pulse.stop(et)}_restart(et){this._modulator.restart(et),this._pulse.restart(et)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(et){this._modulator.phase=et}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const OmniOscillatorSourceMap={am:AMOscillator,fat:FatOscillator,fm:FMOscillator,oscillator:Oscillator,pulse:PulseOscillator,pwm:PWMOscillator};class OmniOscillator extends Source{constructor(){super(optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"])),this.name="OmniOscillator";const et=optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:et.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:et.detune}),readOnly(this,["frequency","detune"]),this.set(et)}static getDefaults(){return Object.assign(Oscillator.getDefaults(),FMOscillator.getDefaults(),AMOscillator.getDefaults(),FatOscillator.getDefaults(),PulseOscillator.getDefaults(),PWMOscillator.getDefaults())}_start(et){this._oscillator.start(et)}_stop(et){this._oscillator.stop(et)}_restart(et){return this._oscillator.restart(et),this}get type(){let et="";return["am","fm","fat"].some(nt=>this._sourceType===nt)&&(et=this._sourceType),et+this._oscillator.type}set type(et){et.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=et.substr(2)):et.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=et.substr(2)):et.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=et.substr(3)):et==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):et==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=et)}get partials(){return this._oscillator.partials}set partials(et){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=et)}get partialCount(){return this._oscillator.partialCount}set partialCount(et){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=et)}set(et){return Reflect.has(et,"type")&&et.type&&(this.type=et.type),super.set(et),this}_createNewOscillator(et){if(et!==this._sourceType){this._sourceType=et;const nt=OmniOscillatorSourceMap[et],rt=this.now();if(this._oscillator){const it=this._oscillator;it.stop(rt),this.context.setTimeout(()=>it.dispose(),this.blockTime)}this._oscillator=new nt({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(rt)}}get phase(){return this._oscillator.phase}set phase(et){this._oscillator.phase=et}get sourceType(){return this._sourceType}set sourceType(et){let nt="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(nt=this._oscillator.type),et==="fm"?this.type="fm"+nt:et==="am"?this.type="am"+nt:et==="fat"?this.type="fat"+nt:et==="oscillator"?this.type=nt:et==="pulse"?this.type="pulse":et==="pwm"&&(this.type="pwm")}_getOscType(et,nt){return et instanceof OmniOscillatorSourceMap[nt]}get baseType(){return this._oscillator.baseType}set baseType(et){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&et!=="pulse"&&et!=="pwm"&&(this._oscillator.baseType=et)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(et){this._getOscType(this._oscillator,"fat")&&isNumber$4(et)&&(this._oscillator.count=et)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(et){this._getOscType(this._oscillator,"fat")&&isNumber$4(et)&&(this._oscillator.spread=et)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(et){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&isString$2(et)&&(this._oscillator.modulationType=et)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}class Add extends Signal{constructor(){super(Object.assign(optionsFromArguments(Add.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Add",this._sum=new Gain({context:this.context}),this.input=this._sum,this.output=this._sum,this.addend=this._param,connectSeries(this._constantSource,this._sum)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._sum.dispose(),this}}class Scale extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Scale.getDefaults(),arguments,["min","max"]))),this.name="Scale";const et=optionsFromArguments(Scale.getDefaults(),arguments,["min","max"]);this._mult=this.input=new Multiply({context:this.context,value:et.max-et.min}),this._add=this.output=new Add({context:this.context,value:et.min}),this._min=et.min,this._max=et.max,this.input.connect(this.output)}static getDefaults(){return Object.assign(SignalOperator.getDefaults(),{max:1,min:0})}get min(){return this._min}set min(et){this._min=et,this._setRange()}get max(){return this._max}set max(et){this._max=et,this._setRange()}_setRange(){this._add.value=this._min,this._mult.value=this._max-this._min}dispose(){return super.dispose(),this._add.dispose(),this._mult.dispose(),this}}function range$3(tt,et=1/0){const nt=new WeakMap;return function(rt,it){Reflect.defineProperty(rt,it,{configurable:!0,enumerable:!0,get:function(){return nt.get(this)},set:function(ot){assertRange(ot,tt,et),nt.set(this,ot)}})}}function timeRange(tt,et=1/0){const nt=new WeakMap;return function(rt,it){Reflect.defineProperty(rt,it,{configurable:!0,enumerable:!0,get:function(){return nt.get(this)},set:function(ot){assertRange(this.toSeconds(ot),tt,et),nt.set(this,ot)}})}}let Player$1=class x1 extends Source{constructor(){super(optionsFromArguments(x1.getDefaults(),arguments,["url","onload"])),this.name="Player",this._activeSources=new Set;const et=optionsFromArguments(x1.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer({onload:this._onload.bind(this,et.onload),onerror:et.onerror,reverse:et.reverse,url:et.url}),this.autostart=et.autostart,this._loop=et.loop,this._loopStart=et.loopStart,this._loopEnd=et.loopEnd,this._playbackRate=et.playbackRate,this.fadeIn=et.fadeIn,this.fadeOut=et.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1,reverse:!1})}load(et){return __awaiter(this,void 0,void 0,function*(){return yield this._buffer.load(et),this._onload(),this})}_onload(et=noOp){et(),this.autostart&&this.start()}_onSourceEnd(et){this.onstop(this),this._activeSources.delete(et),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(et,nt,rt){return super.start(et,nt,rt),this}_start(et,nt,rt){this._loop?nt=defaultArg(nt,this._loopStart):nt=defaultArg(nt,0);const it=this.toSeconds(nt),ot=rt;rt=defaultArg(rt,Math.max(this._buffer.duration-it,0));let at=this.toSeconds(rt);at=at/this._playbackRate,et=this.toSeconds(et);const st=new ToneBufferSource({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(et+at),this._state.setStateAtTime("stopped",et+at,{implicitEnd:!0})),this._activeSources.add(st),this._loop&&isUndef(ot)?st.start(et,it):st.start(et,it,at-this.toSeconds(this.fadeOut))}_stop(et){const nt=this.toSeconds(et);this._activeSources.forEach(rt=>rt.stop(nt))}restart(et,nt,rt){return super.restart(et,nt,rt),this}_restart(et,nt,rt){var it;(it=[...this._activeSources].pop())===null||it===void 0||it.stop(et),this._start(et,nt,rt)}seek(et,nt){const rt=this.toSeconds(nt);if(this._state.getValueAtTime(rt)==="started"){const it=this.toSeconds(et);this._stop(rt),this._start(rt,it)}return this}setLoopPoints(et,nt){return this.loopStart=et,this.loopEnd=nt,this}get loopStart(){return this._loopStart}set loopStart(et){this._loopStart=et,this.buffer.loaded&&assertRange(this.toSeconds(et),0,this.buffer.duration),this._activeSources.forEach(nt=>{nt.loopStart=et})}get loopEnd(){return this._loopEnd}set loopEnd(et){this._loopEnd=et,this.buffer.loaded&&assertRange(this.toSeconds(et),0,this.buffer.duration),this._activeSources.forEach(nt=>{nt.loopEnd=et})}get buffer(){return this._buffer}set buffer(et){this._buffer.set(et)}get loop(){return this._loop}set loop(et){if(this._loop!==et&&(this._loop=et,this._activeSources.forEach(nt=>{nt.loop=et}),et)){const nt=this._state.getNextState("stopped",this.now());nt&&this._state.cancel(nt.time)}}get playbackRate(){return this._playbackRate}set playbackRate(et){this._playbackRate=et;const nt=this.now(),rt=this._state.getNextState("stopped",nt);rt&&rt.implicitEnd&&(this._state.cancel(rt.time),this._activeSources.forEach(it=>it.cancelStop())),this._activeSources.forEach(it=>{it.playbackRate.setValueAtTime(et,nt)})}get reverse(){return this._buffer.reverse}set reverse(et){this._buffer.reverse=et}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(et=>et.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}};__decorate([timeRange(0)],Player$1.prototype,"fadeIn",void 0);__decorate([timeRange(0)],Player$1.prototype,"fadeOut",void 0);class GainToAudio extends SignalOperator{constructor(){super(...arguments),this.name="GainToAudio",this._norm=new WaveShaper({context:this.context,mapping:et=>Math.abs(et)*2-1}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Envelope extends ToneAudioNode{constructor(){super(optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="Envelope",this._sig=new Signal({context:this.context,value:0}),this.output=this._sig,this.input=void 0;const et=optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this.attack=et.attack,this.decay=et.decay,this.sustain=et.sustain,this.release=et.release,this.attackCurve=et.attackCurve,this.releaseCurve=et.releaseCurve,this.decayCurve=et.decayCurve}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(et,nt){if(isString$2(et))return et;{let rt;for(rt in EnvelopeCurves)if(EnvelopeCurves[rt][nt]===et)return rt;return et}}_setCurve(et,nt,rt){if(isString$2(rt)&&Reflect.has(EnvelopeCurves,rt)){const it=EnvelopeCurves[rt];isObject$7(it)?et!=="_decayCurve"&&(this[et]=it[nt]):this[et]=it}else if(isArray$e(rt)&&et!=="_decayCurve")this[et]=rt;else throw new Error("Envelope: invalid curve: "+rt)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(et){this._setCurve("_attackCurve","In",et)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(et){this._setCurve("_releaseCurve","Out",et)}get decayCurve(){return this._getCurve(this._decayCurve,"Out")}set decayCurve(et){this._setCurve("_decayCurve","Out",et)}triggerAttack(et,nt=1){this.log("triggerAttack",et,nt),et=this.toSeconds(et);let it=this.toSeconds(this.attack);const ot=this.toSeconds(this.decay),at=this.getValueAtTime(et);if(at>0){const st=1/it;it=(1-at)/st}if(it0){const rt=this.toSeconds(this.release);rt{let et,nt;const rt=[];for(et=0;et<128;et++)rt[et]=Math.sin(et/(128-1)*(Math.PI/2));const it=[],ot=6.4;for(et=0;et<128-1;et++){nt=et/(128-1);const dt=Math.sin(nt*(Math.PI*2)*ot-Math.PI/2)+1;it[et]=dt/10+nt*.83}it[128-1]=1;const at=[],st=5;for(et=0;et<128;et++)at[et]=Math.ceil(et/(128-1)*st)/st;const lt=[];for(et=0;et<128;et++)nt=et/(128-1),lt[et]=.5*(1-Math.cos(Math.PI*nt));const ct=[];for(et=0;et<128;et++){nt=et/(128-1);const dt=Math.pow(nt,3)*4+.2,pt=Math.cos(dt*Math.PI*2*nt);ct[et]=Math.abs(pt*(1-nt))}function ut(dt){const pt=new Array(dt.length);for(let mt=0;mtthis._original_triggerRelease(nt);const et=optionsFromArguments(Instrument.getDefaults(),arguments);this._volume=this.output=new Volume({context:this.context,volume:et.volume}),this.volume=this._volume.volume,readOnly(this,"volume")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{volume:0})}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",0),this.context.transport.on("stop",this._syncedRelease),this.context.transport.on("pause",this._syncedRelease),this.context.transport.on("loopEnd",this._syncedRelease)),this}_syncState(){let et=!1;return this._synced||(this._synced=!0,et=!0),et}_syncMethod(et,nt){const rt=this["_original_"+et]=this[et];this[et]=(...it)=>{const ot=it[nt],at=this.context.transport.schedule(st=>{it[nt]=st,rt.apply(this,it)},ot);this._scheduledEvents.push(at)}}unsync(){return this._scheduledEvents.forEach(et=>this.context.transport.clear(et)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease,this.context.transport.off("stop",this._syncedRelease),this.context.transport.off("pause",this._syncedRelease),this.context.transport.off("loopEnd",this._syncedRelease)),this}triggerAttackRelease(et,nt,rt,it){const ot=this.toSeconds(rt),at=this.toSeconds(nt);return this.triggerAttack(et,ot,it),this.triggerRelease(ot+at),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class Monophonic extends Instrument{constructor(){super(optionsFromArguments(Monophonic.getDefaults(),arguments));const et=optionsFromArguments(Monophonic.getDefaults(),arguments);this.portamento=et.portamento,this.onsilence=et.onsilence}static getDefaults(){return Object.assign(Instrument.getDefaults(),{detune:0,onsilence:noOp,portamento:0})}triggerAttack(et,nt,rt=1){this.log("triggerAttack",et,nt,rt);const it=this.toSeconds(nt);return this._triggerEnvelopeAttack(it,rt),this.setNote(et,it),this}triggerRelease(et){this.log("triggerRelease",et);const nt=this.toSeconds(et);return this._triggerEnvelopeRelease(nt),this}setNote(et,nt){const rt=this.toSeconds(nt),it=et instanceof FrequencyClass?et.toFrequency():et;if(this.portamento>0&&this.getLevelAtTime(rt)>.05){const ot=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(it,ot,rt)}else this.frequency.setValueAtTime(it,rt);return this}}__decorate([timeRange(0)],Monophonic.prototype,"portamento",void 0);class AmplitudeEnvelope extends Envelope{constructor(){super(optionsFromArguments(AmplitudeEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Gain({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class Synth extends Monophonic{constructor(){super(optionsFromArguments(Synth.getDefaults(),arguments)),this.name="Synth";const et=optionsFromArguments(Synth.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign({context:this.context,detune:et.detune,onstop:()=>this.onsilence(this)},et.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new AmplitudeEnvelope(Object.assign({context:this.context},et.envelope)),this.oscillator.chain(this.envelope,this.output),readOnly(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(et,nt){if(this.envelope.triggerAttack(et,nt),this.oscillator.start(et),this.envelope.sustain===0){const rt=this.toSeconds(this.envelope.attack),it=this.toSeconds(this.envelope.decay);this.oscillator.stop(et+rt+it)}}_triggerEnvelopeRelease(et){this.envelope.triggerRelease(et),this.oscillator.stop(et+this.toSeconds(this.envelope.release))}getLevelAtTime(et){return et=this.toSeconds(et),this.envelope.getValueAtTime(et)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class BiquadFilter extends ToneAudioNode{constructor(){super(optionsFromArguments(BiquadFilter.getDefaults(),arguments,["frequency","type"])),this.name="BiquadFilter";const et=optionsFromArguments(BiquadFilter.getDefaults(),arguments,["frequency","type"]);this._filter=this.context.createBiquadFilter(),this.input=this.output=this._filter,this.Q=new Param({context:this.context,units:"number",value:et.Q,param:this._filter.Q}),this.frequency=new Param({context:this.context,units:"frequency",value:et.frequency,param:this._filter.frequency}),this.detune=new Param({context:this.context,units:"cents",value:et.detune,param:this._filter.detune}),this.gain=new Param({context:this.context,units:"decibels",convert:!1,value:et.gain,param:this._filter.gain}),this.type=et.type}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{Q:1,type:"lowpass",frequency:350,detune:0,gain:0})}get type(){return this._filter.type}set type(et){assert(["lowpass","highpass","bandpass","lowshelf","highshelf","notch","allpass","peaking"].indexOf(et)!==-1,`Invalid filter type: ${et}`),this._filter.type=et}getFrequencyResponse(et=128){const nt=new Float32Array(et);for(let at=0;atrt.type=et)}get rolloff(){return this._rolloff}set rolloff(et){const nt=isNumber$4(et)?et:parseInt(et,10),rt=[-12,-24,-48,-96];let it=rt.indexOf(nt);assert(it!==-1,`rolloff can only be ${rt.join(", ")}`),it+=1,this._rolloff=nt,this.input.disconnect(),this._filters.forEach(ot=>ot.disconnect()),this._filters=new Array(it);for(let ot=0;ot1);return this._filters.forEach(()=>{nt.getFrequencyResponse(et).forEach((ot,at)=>rt[at]*=ot)}),nt.dispose(),rt}dispose(){return super.dispose(),this._filters.forEach(et=>{et.dispose()}),writable(this,["detune","frequency","gain","Q"]),this.frequency.dispose(),this.Q.dispose(),this.detune.dispose(),this.gain.dispose(),this}}class FrequencyEnvelope extends Envelope{constructor(){super(optionsFromArguments(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="FrequencyEnvelope";const et=optionsFromArguments(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this._octaves=et.octaves,this._baseFrequency=this.toFrequency(et.baseFrequency),this._exponent=this.input=new Pow({context:this.context,value:et.exponent}),this._scale=this.output=new Scale({context:this.context,min:this._baseFrequency,max:this._baseFrequency*Math.pow(2,this._octaves)}),this._sig.chain(this._exponent,this._scale)}static getDefaults(){return Object.assign(Envelope.getDefaults(),{baseFrequency:200,exponent:1,octaves:4})}get baseFrequency(){return this._baseFrequency}set baseFrequency(et){const nt=this.toFrequency(et);assertRange(nt,0),this._baseFrequency=nt,this._scale.min=this._baseFrequency,this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(et){this._octaves=et,this._scale.max=this._baseFrequency*Math.pow(2,et)}get exponent(){return this._exponent.value}set exponent(et){this._exponent.value=et}dispose(){return super.dispose(),this._exponent.dispose(),this._scale.dispose(),this}}class MonoSynth extends Monophonic{constructor(){super(optionsFromArguments(MonoSynth.getDefaults(),arguments)),this.name="MonoSynth";const et=optionsFromArguments(MonoSynth.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign(et.oscillator,{context:this.context,detune:et.detune,onstop:()=>this.onsilence(this)})),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new Filter(Object.assign(et.filter,{context:this.context})),this.filterEnvelope=new FrequencyEnvelope(Object.assign(et.filterEnvelope,{context:this.context})),this.envelope=new AmplitudeEnvelope(Object.assign(et.envelope,{context:this.context})),this.oscillator.chain(this.filter,this.envelope,this.output),this.filterEnvelope.connect(this.filter.frequency),readOnly(this,["oscillator","frequency","detune","filter","filterEnvelope","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.9}),filter:Object.assign(omitFromObject(Filter.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{Q:1,rolloff:-12,type:"lowpass"}),filterEnvelope:Object.assign(omitFromObject(FrequencyEnvelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.6,baseFrequency:200,decay:.2,exponent:2,octaves:3,release:2,sustain:.5}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),Object.keys(Source.getDefaults())),{type:"sawtooth"})})}_triggerEnvelopeAttack(et,nt=1){if(this.envelope.triggerAttack(et,nt),this.filterEnvelope.triggerAttack(et),this.oscillator.start(et),this.envelope.sustain===0){const rt=this.toSeconds(this.envelope.attack),it=this.toSeconds(this.envelope.decay);this.oscillator.stop(et+rt+it)}}_triggerEnvelopeRelease(et){this.envelope.triggerRelease(et),this.filterEnvelope.triggerRelease(et),this.oscillator.stop(et+this.toSeconds(this.envelope.release))}getLevelAtTime(et){return et=this.toSeconds(et),this.envelope.getValueAtTime(et)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this.filterEnvelope.dispose(),this.filter.dispose(),this}}class MembraneSynth extends Synth{constructor(){super(optionsFromArguments(MembraneSynth.getDefaults(),arguments)),this.name="MembraneSynth",this.portamento=0;const et=optionsFromArguments(MembraneSynth.getDefaults(),arguments);this.pitchDecay=et.pitchDecay,this.octaves=et.octaves,readOnly(this,["oscillator","envelope"])}static getDefaults(){return deepMerge(Monophonic.getDefaults(),Synth.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(et,nt){const rt=this.toSeconds(nt),it=this.toFrequency(et instanceof FrequencyClass?et.toFrequency():et),ot=it*this.octaves;return this.oscillator.frequency.setValueAtTime(ot,rt),this.oscillator.frequency.exponentialRampToValueAtTime(it,rt+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}__decorate([range$3(0)],MembraneSynth.prototype,"octaves",void 0);__decorate([timeRange(0)],MembraneSynth.prototype,"pitchDecay",void 0);const workletContext=new Set;function addToWorklet(tt){workletContext.add(tt)}function registerProcessor(tt,et){const nt=`registerProcessor("${tt}", ${et})`;workletContext.add(nt)}const toneAudioWorkletProcessor=` + */class Tone{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...et){(this.debug||theWindow&&this.toString()===theWindow.TONE_DEBUG_CLASS)&&log$1(this,...et)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}Tone.version=version$1;const EPSILON=1e-6;function GT(tt,et){return tt>et+EPSILON}function GTE(tt,et){return GT(tt,et)||EQ(tt,et)}function LT(tt,et){return tt+EPSILONthis.memory){const nt=this.length-this.memory;this._timeline.splice(0,nt)}return this}remove(et){const nt=this._timeline.indexOf(et);return nt!==-1&&this._timeline.splice(nt,1),this}get(et,nt="time"){const rt=this._search(et,nt);return rt!==-1?this._timeline[rt]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(et,nt="time"){const rt=this._search(et,nt);return rt+10&&this._timeline[nt-1].time=0?this._timeline[rt-1]:null}cancel(et){if(this._timeline.length>1){let nt=this._search(et);if(nt>=0)if(EQ(this._timeline[nt].time,et)){for(let rt=nt;rt>=0&&EQ(this._timeline[rt].time,et);rt--)nt=rt;this._timeline=this._timeline.slice(0,nt)}else this._timeline=this._timeline.slice(0,nt+1);else this._timeline=[]}else this._timeline.length===1&>E(this._timeline[0].time,et)&&(this._timeline=[]);return this}cancelBefore(et){const nt=this._search(et);return nt>=0&&(this._timeline=this._timeline.slice(nt+1)),this}previousEvent(et){const nt=this._timeline.indexOf(et);return nt>0?this._timeline[nt-1]:null}_search(et,nt="time"){if(this._timeline.length===0)return-1;let rt=0;const it=this._timeline.length;let ot=it;if(it>0&&this._timeline[it-1][nt]<=et)return it-1;for(;rt=0&&this._timeline[rt].time>=et;)rt--;return this._iterate(nt,rt+1),this}forEachAtTime(et,nt){const rt=this._search(et);if(rt!==-1&&EQ(this._timeline[rt].time,et)){let it=rt;for(let ot=rt;ot>=0&&EQ(this._timeline[ot].time,et);ot--)it=ot;this._iterate(ot=>{nt(ot)},it,rt)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const notifyNewContext=[];function onContextInit(tt){notifyNewContext.push(tt)}function initializeContext(tt){notifyNewContext.forEach(et=>et(tt))}const notifyCloseContext=[];function onContextClose(tt){notifyCloseContext.push(tt)}function closeContext(tt){notifyCloseContext.forEach(et=>et(tt))}let Emitter$1=class xw extends Tone{constructor(){super(...arguments),this.name="Emitter"}on(et,nt){return et.split(/\W+/).forEach(it=>{isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(it)||(this._events[it]=[]),this._events[it].push(nt)}),this}once(et,nt){const rt=(...it)=>{nt(...it),this.off(et,rt)};return this.on(et,rt),this}off(et,nt){return et.split(/\W+/).forEach(it=>{if(isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(it))if(isUndef(nt))this._events[it]=[];else{const ot=this._events[it];for(let at=ot.length-1;at>=0;at--)ot[at]===nt&&ot.splice(at,1)}}),this}emit(et,...nt){if(this._events&&this._events.hasOwnProperty(et)){const rt=this._events[et].slice(0);for(let it=0,ot=rt.length;it{const rt=Object.getOwnPropertyDescriptor(xw.prototype,nt);Object.defineProperty(et.prototype,nt,rt)})}dispose(){return super.dispose(),this._events=void 0,this}};class BaseContext extends Emitter$1{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class Context extends BaseContext{constructor(){var et,nt;super(),this.name="Context",this._constants=new Map,this._timeouts=new Timeline,this._timeoutIds=0,this._initialized=!1,this._closeStarted=!1,this.isOffline=!1,this._workletPromise=null;const rt=optionsFromArguments(Context.getDefaults(),arguments,["context"]);rt.context?(this._context=rt.context,this._latencyHint=((et=arguments[0])===null||et===void 0?void 0:et.latencyHint)||""):(this._context=createAudioContext({latencyHint:rt.latencyHint}),this._latencyHint=rt.latencyHint),this._ticker=new Ticker(this.emit.bind(this,"tick"),rt.clockSource,rt.updateInterval,this._context.sampleRate),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this[!((nt=arguments[0])===null||nt===void 0)&&nt.hasOwnProperty("updateInterval")?"_lookAhead":"lookAhead"]=rt.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(initializeContext(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(et,nt,rt){return this._context.createBuffer(et,nt,rt)}createChannelMerger(et){return this._context.createChannelMerger(et)}createChannelSplitter(et){return this._context.createChannelSplitter(et)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(et){return this._context.createDelay(et)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(et,nt){return this._context.createIIRFilter(et,nt)}createPanner(){return this._context.createPanner()}createPeriodicWave(et,nt,rt){return this._context.createPeriodicWave(et,nt,rt)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(et){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(et)}createMediaElementSource(et){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(et)}createMediaStreamDestination(){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(et){return this._context.decodeAudioData(et)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(et){assert(!this._initialized,"The listener cannot be set after initialization."),this._listener=et}get transport(){return this.initialize(),this._transport}set transport(et){assert(!this._initialized,"The transport cannot be set after initialization."),this._transport=et}get draw(){return this.initialize(),this._draw}set draw(et){assert(!this._initialized,"Draw cannot be set after initialization."),this._draw=et}get destination(){return this.initialize(),this._destination}set destination(et){assert(!this._initialized,"The destination cannot be set after initialization."),this._destination=et}createAudioWorkletNode(et,nt){return createAudioWorkletNode(this.rawContext,et,nt)}addAudioWorkletModule(et){return __awaiter(this,void 0,void 0,function*(){assert(isDefined(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletPromise||(this._workletPromise=this.rawContext.audioWorklet.addModule(et)),yield this._workletPromise})}workletsAreReady(){return __awaiter(this,void 0,void 0,function*(){(yield this._workletPromise)?this._workletPromise:Promise.resolve()})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(et){this._ticker.updateInterval=et}get clockSource(){return this._ticker.type}set clockSource(et){this._ticker.type=et}get lookAhead(){return this._lookAhead}set lookAhead(et){this._lookAhead=et,this.updateInterval=et?et/2:.01}get latencyHint(){return this._latencyHint}get rawContext(){return this._context}now(){return this._context.currentTime+this._lookAhead}immediate(){return this._context.currentTime}resume(){return isAudioContext(this._context)?this._context.resume():Promise.resolve()}close(){return __awaiter(this,void 0,void 0,function*(){isAudioContext(this._context)&&this.state!=="closed"&&!this._closeStarted&&(this._closeStarted=!0,yield this._context.close()),this._initialized&&closeContext(this)})}getConstant(et){if(this._constants.has(et))return this._constants.get(et);{const nt=this._context.createBuffer(1,128,this._context.sampleRate),rt=nt.getChannelData(0);for(let ot=0;otthis._constants[et].disconnect()),this.close(),this}_timeoutLoop(){const et=this.now();let nt=this._timeouts.peek();for(;this._timeouts.length&&nt&&nt.time<=et;)nt.callback(),this._timeouts.shift(),nt=this._timeouts.peek()}setTimeout(et,nt){this._timeoutIds++;const rt=this.now();return this._timeouts.add({callback:et,id:this._timeoutIds,time:rt+nt}),this._timeoutIds}clearTimeout(et){return this._timeouts.forEach(nt=>{nt.id===et&&this._timeouts.remove(nt)}),this}clearInterval(et){return this.clearTimeout(et)}setInterval(et,nt){const rt=++this._timeoutIds,it=()=>{const ot=this.now();this._timeouts.add({callback:()=>{et(),it()},id:rt,time:ot+nt})};return it(),rt}}class DummyContext extends BaseContext{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(et,nt,rt){return{}}createChannelMerger(et){return{}}createChannelSplitter(et){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(et){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(et,nt){return{}}createPanner(){return{}}createPeriodicWave(et,nt,rt){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(et){return{}}createMediaElementSource(et){return{}}createMediaStreamDestination(){return{}}decodeAudioData(et){return Promise.resolve({})}createAudioWorkletNode(et,nt){return{}}get rawContext(){return{}}addAudioWorkletModule(et){return __awaiter(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(et,nt){return 0}clearTimeout(et){return this}setInterval(et,nt){return 0}clearInterval(et){return this}getConstant(et){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(et){}get destination(){return{}}set destination(et){}now(){return 0}immediate(){return 0}}function readOnly(tt,et){isArray$e(et)?et.forEach(nt=>readOnly(tt,nt)):Object.defineProperty(tt,et,{enumerable:!0,writable:!1})}function writable(tt,et){isArray$e(et)?et.forEach(nt=>writable(tt,nt)):Object.defineProperty(tt,et,{writable:!0})}const noOp=()=>{};class ToneAudioBuffer extends Tone{constructor(){super(),this.name="ToneAudioBuffer",this.onload=noOp;const et=optionsFromArguments(ToneAudioBuffer.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=et.reverse,this.onload=et.onload,isString$2(et.url)?this.load(et.url).catch(et.onerror):et.url&&this.set(et.url)}static getDefaults(){return{onerror:noOp,onload:noOp,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:getContext().sampleRate}set(et){return et instanceof ToneAudioBuffer?et.loaded?this._buffer=et.get():et.onload=()=>{this.set(et),this.onload(this)}:this._buffer=et,this._reversed&&this._reverse(),this}get(){return this._buffer}load(et){return __awaiter(this,void 0,void 0,function*(){const nt=ToneAudioBuffer.load(et).then(rt=>{this.set(rt),this.onload(this)});ToneAudioBuffer.downloads.push(nt);try{yield nt}finally{const rt=ToneAudioBuffer.downloads.indexOf(nt);ToneAudioBuffer.downloads.splice(rt,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(et){const nt=isArray$e(et)&&et[0].length>0,rt=nt?et.length:1,it=nt?et[0].length:et.length,ot=getContext(),at=ot.createBuffer(rt,it,ot.sampleRate),st=!nt&&rt===1?[et]:et;for(let lt=0;ltit/rt),this.fromArray(nt)}return this}toArray(et){if(isNumber$4(et))return this.getChannelData(et);if(this.numberOfChannels===1)return this.toArray(0);{const nt=[];for(let rt=0;rt0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(et){this._reversed!==et&&(this._reversed=et,this._reverse())}static fromArray(et){return new ToneAudioBuffer().fromArray(et)}static fromUrl(et){return __awaiter(this,void 0,void 0,function*(){return yield new ToneAudioBuffer().load(et)})}static load(et){return __awaiter(this,void 0,void 0,function*(){const nt=et.match(/\[([^\]\[]+\|.+)\]$/);if(nt){const lt=nt[1].split("|");let ct=lt[0];for(const ut of lt)if(ToneAudioBuffer.supportsType(ut)){ct=ut;break}et=et.replace(nt[0],ct)}const rt=ToneAudioBuffer.baseUrl===""||ToneAudioBuffer.baseUrl.endsWith("/")?ToneAudioBuffer.baseUrl:ToneAudioBuffer.baseUrl+"/",it=document.createElement("a");it.href=rt+et,it.pathname=(it.pathname+it.hash).split("/").map(encodeURIComponent).join("/");const ot=yield fetch(it.href);if(!ot.ok)throw new Error(`could not load url: ${et}`);const at=yield ot.arrayBuffer();return yield getContext().decodeAudioData(at)})}static supportsType(et){const nt=et.split("."),rt=nt[nt.length-1];return document.createElement("audio").canPlayType("audio/"+rt)!==""}static loaded(){return __awaiter(this,void 0,void 0,function*(){for(yield Promise.resolve();ToneAudioBuffer.downloads.length;)yield ToneAudioBuffer.downloads[0]})}}ToneAudioBuffer.baseUrl="";ToneAudioBuffer.downloads=[];class OfflineContext extends Context{constructor(){super({clockSource:"offline",context:isOfflineAudioContext(arguments[0])?arguments[0]:createOfflineAudioContext(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:isOfflineAudioContext(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=isOfflineAudioContext(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(et){return __awaiter(this,void 0,void 0,function*(){let nt=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,nt++;const rt=Math.floor(this.sampleRate/128);et&&nt%rt===0&&(yield new Promise(it=>setTimeout(it,1)))}})}render(et=!0){return __awaiter(this,void 0,void 0,function*(){yield this.workletsAreReady(),yield this._renderClock(et);const nt=yield this._context.startRendering();return new ToneAudioBuffer(nt)})}close(){return Promise.resolve()}}const dummyContext=new DummyContext;let globalContext=dummyContext;function getContext(){return globalContext===dummyContext&&hasAudioContext&&setContext(new Context),globalContext}function setContext(tt,et=!1){et&&globalContext.dispose(),isAudioContext(tt)?globalContext=new Context(tt):isOfflineAudioContext(tt)?globalContext=new OfflineContext(tt):globalContext=tt}function start$1(){return globalContext.resume()}if(theWindow&&!theWindow.TONE_SILENCE_LOGGING){const et=` * Tone.js v${version$1} * `;console.log(`%c${et}`,"background: #000; color: #fff")}function dbToGain(tt){return Math.pow(10,tt/20)}function gainToDb(tt){return 20*(Math.log(tt)/Math.LN10)}function intervalToFrequencyRatio(tt){return Math.pow(2,tt/12)}let A4=440;function getA4(){return A4}function setA4(tt){A4=tt}function ftom(tt){return Math.round(ftomf(tt))}function ftomf(tt){return 69+12*Math.log2(tt/A4)}function mtof(tt){return A4*Math.pow(2,(tt-69)/12)}class TimeBaseClass extends Tone{constructor(et,nt,rt){super(),this.defaultUnits="s",this._val=nt,this._units=rt,this.context=et,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:et=>this._frequencyToUnits(parseFloat(et)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:et=>this._ticksToUnits(parseInt(et,10)),regexp:/^(\d+)i$/i},m:{method:et=>this._beatsToUnits(parseInt(et,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(et,nt)=>{const rt=parseInt(et,10),it=nt==="."?1.5:1;return rt===1?this._beatsToUnits(this._getTimeSignature())*it:this._beatsToUnits(4/rt)*it},regexp:/^(\d+)n(\.?)$/i},number:{method:et=>this._expressions[this.defaultUnits].method.call(this,et),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:et=>this._secondsToUnits(parseFloat(et)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:et=>parseInt(et,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:et=>{const nt=parseInt(et,10);return this._beatsToUnits(8/(Math.floor(nt)*3))},regexp:/^(\d+)t$/i},tr:{method:(et,nt,rt)=>{let it=0;return et&&et!=="0"&&(it+=this._beatsToUnits(this._getTimeSignature()*parseFloat(et))),nt&&nt!=="0"&&(it+=this._beatsToUnits(parseFloat(nt))),rt&&rt!=="0"&&(it+=this._beatsToUnits(parseFloat(rt)/4)),it},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof TimeBaseClass&&this.fromType(this._val),isUndef(this._val))return this._noArg();if(isString$2(this._val)&&isUndef(this._units)){for(const et in this._expressions)if(this._expressions[et].regexp.test(this._val.trim())){this._units=et;break}}else if(isObject$7(this._val)){let et=0;for(const nt in this._val)if(isDefined(this._val[nt])){const rt=this._val[nt],it=new this.constructor(this.context,nt).valueOf()*rt;et+=it}return et}if(isDefined(this._units)){const et=this._expressions[this._units],nt=this._val.toString().trim().match(et.regexp);return nt?et.method.apply(this,nt.slice(1)):et.method.call(this,this._val)}else return isString$2(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(et){return 1/et}_beatsToUnits(et){return 60/this._getBpm()*et}_secondsToUnits(et){return et}_ticksToUnits(et){return et*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(et){switch(this._units=void 0,this.defaultUnits){case"s":this._val=et.toSeconds();break;case"i":this._val=et.toTicks();break;case"hz":this._val=et.toFrequency();break;case"midi":this._val=et.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class TimeClass extends TimeBaseClass{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:et=>this._now()+new this.constructor(this.context,et).valueOf(),regexp:/^\+(.+)/},quantize:{method:et=>{const nt=new TimeClass(this.context,et).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(nt))},regexp:/^@(.+)/}})}quantize(et,nt=1){const rt=new this.constructor(this.context,et).valueOf(),it=this.valueOf(),st=Math.round(it/rt)*rt-it;return it+st*nt}toNotation(){const et=this.toSeconds(),nt=["1m"];for(let ot=1;ot<9;ot++){const at=Math.pow(2,ot);nt.push(at+"n."),nt.push(at+"n"),nt.push(at+"t")}nt.push("0");let rt=nt[0],it=new TimeClass(this.context,nt[0]).toSeconds();return nt.forEach(ot=>{const at=new TimeClass(this.context,ot).toSeconds();Math.abs(at-et)3&&(it=parseFloat(parseFloat(ot).toFixed(3))),[rt,nt,it].join(":")}toTicks(){const et=this._beatsToUnits(1);return this.valueOf()/et*this._getPPQ()}toSeconds(){return this.valueOf()}toMidi(){return ftom(this.toFrequency())}_now(){return this.context.now()}}class FrequencyClass extends TimeClass{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return getA4()}static set A4(et){setA4(et)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(et){return this.defaultUnits==="midi"?et:FrequencyClass.mtof(et)}},note:{regexp:/^([a-g]{1}(?:b|#|##|x|bb|###|#x|x#|bbb)?)(-?[0-9]+)/i,method(et,nt){const it=noteToScaleIndex[et.toLowerCase()]+(parseInt(nt,10)+1)*12;return this.defaultUnits==="midi"?it:FrequencyClass.mtof(it)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(et,nt,rt){let it=1;return et&&et!=="0"&&(it*=this._beatsToUnits(this._getTimeSignature()*parseFloat(et))),nt&&nt!=="0"&&(it*=this._beatsToUnits(parseFloat(nt))),rt&&rt!=="0"&&(it*=this._beatsToUnits(parseFloat(rt)/4)),it}}})}transpose(et){return new FrequencyClass(this.context,this.valueOf()*intervalToFrequencyRatio(et))}harmonize(et){return et.map(nt=>this.transpose(nt))}toMidi(){return ftom(this.valueOf())}toNote(){const et=this.toFrequency(),nt=Math.log2(et/FrequencyClass.A4);let rt=Math.round(12*nt)+57;const it=Math.floor(rt/12);return it<0&&(rt+=-12*it),scaleIndexToNote[rt%12]+it.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const et=this._beatsToUnits(1),nt=this.valueOf()/et;return Math.floor(nt*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(et){return et}_ticksToUnits(et){return 1/(et*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(et){return 1/super._beatsToUnits(et)}_secondsToUnits(et){return 1/et}static mtof(et){return mtof(et)}static ftom(et){return ftom(et)}}const noteToScaleIndex={cbbb:-3,cbb:-2,cb:-1,c:0,"c#":1,cx:2,"c##":2,"c###":3,"cx#":3,"c#x":3,dbbb:-1,dbb:0,db:1,d:2,"d#":3,dx:4,"d##":4,"d###":5,"dx#":5,"d#x":5,ebbb:1,ebb:2,eb:3,e:4,"e#":5,ex:6,"e##":6,"e###":7,"ex#":7,"e#x":7,fbbb:2,fbb:3,fb:4,f:5,"f#":6,fx:7,"f##":7,"f###":8,"fx#":8,"f#x":8,gbbb:4,gbb:5,gb:6,g:7,"g#":8,gx:9,"g##":9,"g###":10,"gx#":10,"g#x":10,abbb:6,abb:7,ab:8,a:9,"a#":10,ax:11,"a##":11,"a###":12,"ax#":12,"a#x":12,bbbb:8,bbb:9,bb:10,b:11,"b#":12,bx:13,"b##":13,"b###":14,"bx#":14,"b#x":14},scaleIndexToNote=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];class TransportTimeClass extends TimeClass{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}class ToneWithContext extends Tone{constructor(){super();const et=optionsFromArguments(ToneWithContext.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=et.context}static getDefaults(){return{context:getContext()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(et){return assertUsedScheduleTime(et),new TimeClass(this.context,et).toSeconds()}toFrequency(et){return new FrequencyClass(this.context,et).toFrequency()}toTicks(et){return new TransportTimeClass(this.context,et).toTicks()}_getPartialProperties(et){const nt=this.get();return Object.keys(nt).forEach(rt=>{isUndef(et[rt])&&delete nt[rt]}),nt}get(){const et=getDefaultsFromInstance(this);return Object.keys(et).forEach(nt=>{if(Reflect.has(this,nt)){const rt=this[nt];isDefined(rt)&&isDefined(rt.value)&&isDefined(rt.setValueAtTime)?et[nt]=rt.value:rt instanceof ToneWithContext?et[nt]=rt._getPartialProperties(et[nt]):isArray$e(rt)||isNumber$4(rt)||isString$2(rt)||isBoolean$1(rt)?et[nt]=rt:delete et[nt]}}),et}set(et){return Object.keys(et).forEach(nt=>{Reflect.has(this,nt)&&isDefined(this[nt])&&(this[nt]&&isDefined(this[nt].value)&&isDefined(this[nt].setValueAtTime)?this[nt].value!==et[nt]&&(this[nt].value=et[nt]):this[nt]instanceof ToneWithContext?this[nt].set(et[nt]):this[nt]=et[nt])}),this}}class StateTimeline extends Timeline{constructor(et="stopped"){super(),this.name="StateTimeline",this._initial=et,this.setStateAtTime(this._initial,0)}getValueAtTime(et){const nt=this.get(et);return nt!==null?nt.state:this._initial}setStateAtTime(et,nt,rt){return assertRange(nt,0),this.add(Object.assign({},rt,{state:et,time:nt})),this}getLastState(et,nt){const rt=this._search(nt);for(let it=rt;it>=0;it--){const ot=this._timeline[it];if(ot.state===et)return ot}}getNextState(et,nt){const rt=this._search(nt);if(rt!==-1)for(let it=rt;it0,"timeConstant must be a number greater than 0");const ot=this.toSeconds(nt);return this._assertRange(it),assert(isFinite(it)&&isFinite(ot),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(et)}, ${JSON.stringify(nt)}`),this._events.add({constant:rt,time:ot,type:"setTargetAtTime",value:it}),this.log(this.units,"setTargetAtTime",et,ot,rt),this._param.setTargetAtTime(it,ot,rt),this}setValueCurveAtTime(et,nt,rt,it=1){rt=this.toSeconds(rt),nt=this.toSeconds(nt);const ot=this._fromType(et[0])*it;this.setValueAtTime(this._toType(ot),nt);const at=rt/(et.length-1);for(let st=1;st{it.type==="cancelScheduledValues"?et.cancelScheduledValues(it.time):it.type==="setTargetAtTime"?et.setTargetAtTime(it.value,it.time,it.constant):et[it.type](it.value,it.time)}),this}setParam(et){assert(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const nt=this.input;return nt.disconnect(this._param),this.apply(et),this._param=et,nt.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(et,nt,rt,it,ot){return rt+(nt-rt)*Math.exp(-(ot-et)/it)}_linearInterpolate(et,nt,rt,it,ot){return nt+(it-nt)*((ot-et)/(rt-et))}_exponentialInterpolate(et,nt,rt,it,ot){return nt*Math.pow(it/nt,(ot-et)/(rt-et))}}class ToneAudioNode extends ToneWithContext{constructor(){super(...arguments),this._internalChannels=[]}get numberOfInputs(){return isDefined(this.input)?isAudioParam(this.input)||this.input instanceof Param?1:this.input.numberOfInputs:0}get numberOfOutputs(){return isDefined(this.output)?this.output.numberOfOutputs:0}_isAudioNode(et){return isDefined(et)&&(et instanceof ToneAudioNode||isAudioNode(et))}_getInternalNodes(){const et=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&et.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&et.push(this.output),et}_setChannelProperties(et){this._getInternalNodes().forEach(rt=>{rt.channelCount=et.channelCount,rt.channelCountMode=et.channelCountMode,rt.channelInterpretation=et.channelInterpretation})}_getChannelProperties(){const et=this._getInternalNodes();assert(et.length>0,"ToneAudioNode does not have any internal nodes");const nt=et[0];return{channelCount:nt.channelCount,channelCountMode:nt.channelCountMode,channelInterpretation:nt.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(et){const nt=this._getChannelProperties();this._setChannelProperties(Object.assign(nt,{channelCount:et}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(et){const nt=this._getChannelProperties();this._setChannelProperties(Object.assign(nt,{channelCountMode:et}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(et){const nt=this._getChannelProperties();this._setChannelProperties(Object.assign(nt,{channelInterpretation:et}))}connect(et,nt=0,rt=0){return connect(this,et,nt,rt),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return warn$2("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(et,nt=0,rt=0){return disconnect(this,et,nt,rt),this}chain(...et){return connectSeries(this,...et),this}fan(...et){return et.forEach(nt=>this.connect(nt)),this}dispose(){return super.dispose(),isDefined(this.input)&&(this.input instanceof ToneAudioNode?this.input.dispose():isAudioNode(this.input)&&this.input.disconnect()),isDefined(this.output)&&(this.output instanceof ToneAudioNode?this.output.dispose():isAudioNode(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function connectSeries(...tt){const et=tt.shift();tt.reduce((nt,rt)=>(nt instanceof ToneAudioNode?nt.connect(rt):isAudioNode(nt)&&connect(nt,rt),rt),et)}function connect(tt,et,nt=0,rt=0){for(assert(isDefined(tt),"Cannot connect from undefined node"),assert(isDefined(et),"Cannot connect to undefined node"),(et instanceof ToneAudioNode||isAudioNode(et))&&assert(et.numberOfInputs>0,"Cannot connect to node with no inputs"),assert(tt.numberOfOutputs>0,"Cannot connect from node with no outputs");et instanceof ToneAudioNode||et instanceof Param;)isDefined(et.input)&&(et=et.input);for(;tt instanceof ToneAudioNode;)isDefined(tt.output)&&(tt=tt.output);isAudioParam(et)?tt.connect(et,nt):tt.connect(et,nt,rt)}function disconnect(tt,et,nt=0,rt=0){if(isDefined(et))for(;et instanceof ToneAudioNode;)et=et.input;for(;!isAudioNode(tt);)isDefined(tt.output)&&(tt=tt.output);isAudioParam(et)?tt.disconnect(et,nt):isAudioNode(et)?tt.disconnect(et,nt,rt):tt.disconnect()}class Gain extends ToneAudioNode{constructor(){super(optionsFromArguments(Gain.getDefaults(),arguments,["gain","units"])),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode;const et=optionsFromArguments(Gain.getDefaults(),arguments,["gain","units"]);this.gain=new Param({context:this.context,convert:et.convert,param:this._gainNode.gain,units:et.units,value:et.gain,minValue:et.minValue,maxValue:et.maxValue}),readOnly(this,"gain")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class OneShotSource extends ToneAudioNode{constructor(et){super(et),this.onended=noOp,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Gain({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(nt){const rt=this.toSeconds(nt);return this._startTime!==-1&&rt>=this._startTime&&(this._stopTime===-1||rt<=this._stopTime)?"started":"stopped"},this._fadeIn=et.fadeIn,this._fadeOut=et.fadeOut,this._curve=et.curve,this.onended=et.onended}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:noOp})}_startGain(et,nt=1){assert(this._startTime===-1,"Source cannot be started more than once");const rt=this.toSeconds(this._fadeIn);return this._startTime=et+rt,this._startTime=Math.max(this._startTime,this.context.currentTime),rt>0?(this._gainNode.gain.setValueAtTime(0,et),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(nt,et+rt):this._gainNode.gain.exponentialApproachValueAtTime(nt,et,rt)):this._gainNode.gain.setValueAtTime(nt,et),this}stop(et){return this.log("stop",et),this._stopGain(this.toSeconds(et)),this}_stopGain(et){assert(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const nt=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(et)+nt,this._stopTime=Math.max(this._stopTime,this.now()),nt>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,nt,et):this._gainNode.gain.targetRampTo(0,nt,et):(this._gainNode.gain.cancelAndHoldAtTime(et),this._gainNode.gain.setValueAtTime(0,et)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const rt=this._curve==="exponential"?nt*2:0;this._stopSource(this.now()+rt),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==noOp&&(this.onended(this),this.onended=noOp,!this.context.isOffline)){const et=()=>this.dispose();typeof window.requestIdleCallback<"u"?window.requestIdleCallback(et):setTimeout(et,1e3)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),assert(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.dispose(),this.onended=noOp,this}}class ToneConstantSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"])),this.name="ToneConstantSource",this._source=this.context.createConstantSource();const et=optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"]);connect(this._source,this._gainNode),this.offset=new Param({context:this.context,convert:et.convert,param:this._source.offset,units:et.units,value:et.offset,minValue:et.minValue,maxValue:et.maxValue})}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{convert:!0,offset:1,units:"number"})}start(et){const nt=this.toSeconds(et);return this.log("start",nt),this._startGain(nt),this._source.start(nt),this}_stopSource(et){this._source.stop(et)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class Signal extends ToneAudioNode{constructor(){super(optionsFromArguments(Signal.getDefaults(),arguments,["value","units"])),this.name="Signal",this.override=!0;const et=optionsFromArguments(Signal.getDefaults(),arguments,["value","units"]);this.output=this._constantSource=new ToneConstantSource({context:this.context,convert:et.convert,offset:et.value,units:et.units,minValue:et.minValue,maxValue:et.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,units:"number",value:0})}connect(et,nt=0,rt=0){return connectSignal(this,et,nt,rt),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(et,nt){return this._param.setValueAtTime(et,nt),this}getValueAtTime(et){return this._param.getValueAtTime(et)}setRampPoint(et){return this._param.setRampPoint(et),this}linearRampToValueAtTime(et,nt){return this._param.linearRampToValueAtTime(et,nt),this}exponentialRampToValueAtTime(et,nt){return this._param.exponentialRampToValueAtTime(et,nt),this}exponentialRampTo(et,nt,rt){return this._param.exponentialRampTo(et,nt,rt),this}linearRampTo(et,nt,rt){return this._param.linearRampTo(et,nt,rt),this}targetRampTo(et,nt,rt){return this._param.targetRampTo(et,nt,rt),this}exponentialApproachValueAtTime(et,nt,rt){return this._param.exponentialApproachValueAtTime(et,nt,rt),this}setTargetAtTime(et,nt,rt){return this._param.setTargetAtTime(et,nt,rt),this}setValueCurveAtTime(et,nt,rt,it){return this._param.setValueCurveAtTime(et,nt,rt,it),this}cancelScheduledValues(et){return this._param.cancelScheduledValues(et),this}cancelAndHoldAtTime(et){return this._param.cancelAndHoldAtTime(et),this}rampTo(et,nt,rt){return this._param.rampTo(et,nt,rt),this}get value(){return this._param.value}set value(et){this._param.value=et}get convert(){return this._param.convert}set convert(et){this._param.convert=et}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(et){this._param.overridden=et}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(et){return this._param.apply(et),this}}function connectSignal(tt,et,nt,rt){(et instanceof Param||isAudioParam(et)||et instanceof Signal&&et.override)&&(et.cancelScheduledValues(0),et.setValueAtTime(0,0),et instanceof Signal&&(et.overridden=!0)),connect(tt,et,nt,rt)}class TickParam extends Param{constructor(){super(optionsFromArguments(TickParam.getDefaults(),arguments,["value"])),this.name="TickParam",this._events=new Timeline(1/0),this._multiplier=1;const et=optionsFromArguments(TickParam.getDefaults(),arguments,["value"]);this._multiplier=et.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(et.value)}),this.setValueAtTime(et.value,0)}static getDefaults(){return Object.assign(Param.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(et,nt,rt){nt=this.toSeconds(nt),this.setRampPoint(nt);const it=this._fromType(et),ot=this._events.get(nt),at=Math.round(Math.max(1/rt,1));for(let st=0;st<=at;st++){const lt=rt*st+nt,ct=this._exponentialApproach(ot.time,ot.value,it,rt,lt);this.linearRampToValueAtTime(this._toType(ct),lt)}return this}setValueAtTime(et,nt){const rt=this.toSeconds(nt);super.setValueAtTime(et,nt);const it=this._events.get(rt),ot=this._events.previousEvent(it),at=this._getTicksUntilEvent(ot,rt);return it.ticks=Math.max(at,0),this}linearRampToValueAtTime(et,nt){const rt=this.toSeconds(nt);super.linearRampToValueAtTime(et,nt);const it=this._events.get(rt),ot=this._events.previousEvent(it),at=this._getTicksUntilEvent(ot,rt);return it.ticks=Math.max(at,0),this}exponentialRampToValueAtTime(et,nt){nt=this.toSeconds(nt);const rt=this._fromType(et),it=this._events.get(nt),ot=Math.round(Math.max((nt-it.time)*10,1)),at=(nt-it.time)/ot;for(let st=0;st<=ot;st++){const lt=at*st+it.time,ct=this._exponentialInterpolate(it.time,it.value,nt,rt,lt);this.linearRampToValueAtTime(this._toType(ct),lt)}return this}_getTicksUntilEvent(et,nt){if(et===null)et={ticks:0,time:0,type:"setValueAtTime",value:0};else if(isUndef(et.ticks)){const at=this._events.previousEvent(et);et.ticks=this._getTicksUntilEvent(at,et.time)}const rt=this._fromType(this.getValueAtTime(et.time));let it=this._fromType(this.getValueAtTime(nt));const ot=this._events.get(nt);return ot&&ot.time===nt&&ot.type==="setValueAtTime"&&(it=this._fromType(this.getValueAtTime(nt-this.sampleTime))),.5*(nt-et.time)*(rt+it)+et.ticks}getTicksAtTime(et){const nt=this.toSeconds(et),rt=this._events.get(nt);return Math.max(this._getTicksUntilEvent(rt,nt),0)}getDurationOfTicks(et,nt){const rt=this.toSeconds(nt),it=this.getTicksAtTime(nt);return this.getTimeOfTick(it+et)-rt}getTimeOfTick(et){const nt=this._events.get(et,"ticks"),rt=this._events.getAfter(et,"ticks");if(nt&&nt.ticks===et)return nt.time;if(nt&&rt&&rt.type==="linearRampToValueAtTime"&&nt.value!==rt.value){const it=this._fromType(this.getValueAtTime(nt.time)),at=(this._fromType(this.getValueAtTime(rt.time))-it)/(rt.time-nt.time),st=Math.sqrt(Math.pow(it,2)-2*at*(nt.ticks-et)),lt=(-it+st)/at,ct=(-it-st)/at;return(lt>0?lt:ct)+nt.time}else return nt?nt.value===0?1/0:nt.time+(et-nt.ticks)/nt.value:et/this._initialValue}ticksToTime(et,nt){return this.getDurationOfTicks(et,nt)}timeToTicks(et,nt){const rt=this.toSeconds(nt),it=this.toSeconds(et),ot=this.getTicksAtTime(rt);return this.getTicksAtTime(rt+it)-ot}_fromType(et){return this.units==="bpm"&&this.multiplier?1/(60/et/this.multiplier):super._fromType(et)}_toType(et){return this.units==="bpm"&&this.multiplier?et/this.multiplier*60:super._toType(et)}get multiplier(){return this._multiplier}set multiplier(et){const nt=this.value;this._multiplier=et,this.cancelScheduledValues(0),this.setValueAtTime(nt,0)}}class TickSignal extends Signal{constructor(){super(optionsFromArguments(TickSignal.getDefaults(),arguments,["value"])),this.name="TickSignal";const et=optionsFromArguments(TickSignal.getDefaults(),arguments,["value"]);this.input=this._param=new TickParam({context:this.context,convert:et.convert,multiplier:et.multiplier,param:this._constantSource.offset,units:et.units,value:et.value})}static getDefaults(){return Object.assign(Signal.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(et,nt){return this._param.ticksToTime(et,nt)}timeToTicks(et,nt){return this._param.timeToTicks(et,nt)}getTimeOfTick(et){return this._param.getTimeOfTick(et)}getDurationOfTicks(et,nt){return this._param.getDurationOfTicks(et,nt)}getTicksAtTime(et){return this._param.getTicksAtTime(et)}get multiplier(){return this._param.multiplier}set multiplier(et){this._param.multiplier=et}dispose(){return super.dispose(),this._param.dispose(),this}}class TickSource extends ToneWithContext{constructor(){super(optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"])),this.name="TickSource",this._state=new StateTimeline,this._tickOffset=new Timeline,this._ticksAtTime=new Timeline,this._secondsAtTime=new Timeline;const et=optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"]);this.frequency=new TickSignal({context:this.context,units:et.units,value:et.frequency}),readOnly(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},ToneWithContext.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(et,nt){const rt=this.toSeconds(et);return this._state.getValueAtTime(rt)!=="started"&&(this._state.setStateAtTime("started",rt),isDefined(nt)&&this.setTicksAtTime(nt,rt),this._ticksAtTime.cancel(rt),this._secondsAtTime.cancel(rt)),this}stop(et){const nt=this.toSeconds(et);if(this._state.getValueAtTime(nt)==="stopped"){const rt=this._state.get(nt);rt&&rt.time>0&&(this._tickOffset.cancel(rt.time),this._state.cancel(rt.time))}return this._state.cancel(nt),this._state.setStateAtTime("stopped",nt),this.setTicksAtTime(0,nt),this._ticksAtTime.cancel(nt),this._secondsAtTime.cancel(nt),this}pause(et){const nt=this.toSeconds(et);return this._state.getValueAtTime(nt)==="started"&&(this._state.setStateAtTime("paused",nt),this._ticksAtTime.cancel(nt),this._secondsAtTime.cancel(nt)),this}cancel(et){return et=this.toSeconds(et),this._state.cancel(et),this._tickOffset.cancel(et),this._ticksAtTime.cancel(et),this._secondsAtTime.cancel(et),this}getTicksAtTime(et){const nt=this.toSeconds(et),rt=this._state.getLastState("stopped",nt),it=this._ticksAtTime.get(nt),ot={state:"paused",time:nt};this._state.add(ot);let at=it||rt,st=it?it.ticks:0,lt=null;return this._state.forEachBetween(at.time,nt+this.sampleTime,ct=>{let ut=at.time;const ht=this._tickOffset.get(ct.time);ht&&ht.time>=at.time&&(st=ht.ticks,ut=ht.time),at.state==="started"&&ct.state!=="started"&&(st+=this.frequency.getTicksAtTime(ct.time)-this.frequency.getTicksAtTime(ut),ct.time!=ot.time&&(lt={state:ct.state,time:ct.time,ticks:st})),at=ct}),this._state.remove(ot),lt&&this._ticksAtTime.add(lt),st}get ticks(){return this.getTicksAtTime(this.now())}set ticks(et){this.setTicksAtTime(et,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(et){const nt=this.now(),rt=this.frequency.timeToTicks(et,nt);this.setTicksAtTime(rt,nt)}getSecondsAtTime(et){et=this.toSeconds(et);const nt=this._state.getLastState("stopped",et),rt={state:"paused",time:et};this._state.add(rt);const it=this._secondsAtTime.get(et);let ot=it||nt,at=it?it.seconds:0,st=null;return this._state.forEachBetween(ot.time,et+this.sampleTime,lt=>{let ct=ot.time;const ut=this._tickOffset.get(lt.time);ut&&ut.time>=ot.time&&(at=ut.seconds,ct=ut.time),ot.state==="started"&<.state!=="started"&&(at+=lt.time-ct,lt.time!=rt.time&&(st={state:lt.state,time:lt.time,seconds:at})),ot=lt}),this._state.remove(rt),st&&this._secondsAtTime.add(st),at}setTicksAtTime(et,nt){return nt=this.toSeconds(nt),this._tickOffset.cancel(nt),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(et,nt),ticks:et,time:nt}),this._ticksAtTime.cancel(nt),this._secondsAtTime.cancel(nt),this}getStateAtTime(et){return et=this.toSeconds(et),this._state.getValueAtTime(et)}getTimeOfTick(et,nt=this.now()){const rt=this._tickOffset.get(nt),it=this._state.get(nt),ot=Math.max(rt.time,it.time),at=this.frequency.getTicksAtTime(ot)+et-rt.ticks;return this.frequency.getTimeOfTick(at)}forEachTickBetween(et,nt,rt){let it=this._state.get(et);this._state.forEachBetween(et,nt,at=>{it&&it.state==="started"&&at.state!=="started"&&this.forEachTickBetween(Math.max(it.time,et),at.time-this.sampleTime,rt),it=at});let ot=null;if(it&&it.state==="started"){const at=Math.max(it.time,et),st=this.frequency.getTicksAtTime(at),lt=this.frequency.getTicksAtTime(it.time),ct=st-lt;let ut=Math.ceil(ct)-ct;ut=EQ(ut,1)?0:ut;let ht=this.frequency.getTimeOfTick(st+ut);for(;ht{switch(rt.state){case"started":const it=this._tickSource.getTicksAtTime(rt.time);this.emit("start",rt.time,it);break;case"stopped":rt.time!==0&&this.emit("stop",rt.time);break;case"paused":this.emit("pause",rt.time);break}}),this._tickSource.forEachTickBetween(et,nt,(rt,it)=>{this.callback(rt,it)}))}getStateAtTime(et){const nt=this.toSeconds(et);return this._state.getValueAtTime(nt)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}Emitter$1.mixin(Clock);class ToneAudioBuffers extends Tone{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const et=optionsFromArguments(ToneAudioBuffers.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=et.baseUrl,Object.keys(et.urls).forEach(nt=>{this._loadingCount++;const rt=et.urls[nt];this.add(nt,rt,this._bufferLoaded.bind(this,et.onload),et.onerror)})}static getDefaults(){return{baseUrl:"",onerror:noOp,onload:noOp,urls:{}}}has(et){return this._buffers.has(et.toString())}get(et){return assert(this.has(et),`ToneAudioBuffers has no buffer named: ${et}`),this._buffers.get(et.toString())}_bufferLoaded(et){this._loadingCount--,this._loadingCount===0&&et&&et()}get loaded(){return Array.from(this._buffers).every(([et,nt])=>nt.loaded)}add(et,nt,rt=noOp,it=noOp){return isString$2(nt)?(this.baseUrl&&nt.trim().substring(0,11).toLowerCase()==="data:audio/"&&(this.baseUrl=""),this._buffers.set(et.toString(),new ToneAudioBuffer(this.baseUrl+nt,rt,it))):this._buffers.set(et.toString(),new ToneAudioBuffer(nt,rt,it)),this}dispose(){return super.dispose(),this._buffers.forEach(et=>et.dispose()),this._buffers.clear(),this}}class TicksClass extends TransportTimeClass{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(et){return this._getPPQ()*et}_secondsToUnits(et){return Math.floor(et/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(et){return et}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}class Draw extends ToneWithContext{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Timeline,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(et,nt){return this._events.add({callback:et,time:this.toSeconds(nt)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(et){return this._events.cancel(this.toSeconds(et)),this}_drawLoop(){const et=this.context.currentTime;for(;this._events.length&&this._events.peek().time-this.anticipation<=et;){const nt=this._events.shift();nt&&et-nt.time<=this.expiration&&nt.callback()}this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}onContextInit(tt=>{tt.draw=new Draw({context:tt})});onContextClose(tt=>{tt.draw.dispose()});class IntervalTimeline extends Tone{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(et){assert(isDefined(et.time),"Events must have a time property"),assert(isDefined(et.duration),"Events must have a duration parameter"),et.time=et.time.valueOf();let nt=new IntervalNode(et.time,et.time+et.duration,et);for(this._root===null?this._root=nt:this._root.insert(nt),this._length++;nt!==null;)nt.updateHeight(),nt.updateMax(),this._rebalance(nt),nt=nt.parent;return this}remove(et){if(this._root!==null){const nt=[];this._root.search(et.time,nt);for(const rt of nt)if(rt.event===et){this._removeNode(rt),this._length--;break}}return this}get length(){return this._length}cancel(et){return this.forEachFrom(et,nt=>this.remove(nt)),this}_setRoot(et){this._root=et,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(et,nt){et.parent!==null?(et.isLeftChild()?et.parent.left=nt:et.parent.right=nt,this._rebalance(et.parent)):this._setRoot(nt)}_removeNode(et){if(et.left===null&&et.right===null)this._replaceNodeInParent(et,null);else if(et.right===null)this._replaceNodeInParent(et,et.left);else if(et.left===null)this._replaceNodeInParent(et,et.right);else{const nt=et.getBalance();let rt,it=null;if(nt>0)if(et.left.right===null)rt=et.left,rt.right=et.right,it=rt;else{for(rt=et.left.right;rt.right!==null;)rt=rt.right;rt.parent&&(rt.parent.right=rt.left,it=rt.parent,rt.left=et.left,rt.right=et.right)}else if(et.right.left===null)rt=et.right,rt.left=et.left,it=rt;else{for(rt=et.right.left;rt.left!==null;)rt=rt.left;rt.parent&&(rt.parent.left=rt.right,it=rt.parent,rt.left=et.left,rt.right=et.right)}et.parent!==null?et.isLeftChild()?et.parent.left=rt:et.parent.right=rt:this._setRoot(rt),it&&this._rebalance(it)}et.dispose()}_rotateLeft(et){const nt=et.parent,rt=et.isLeftChild(),it=et.right;it&&(et.right=it.left,it.left=et),nt!==null?rt?nt.left=it:nt.right=it:this._setRoot(it)}_rotateRight(et){const nt=et.parent,rt=et.isLeftChild(),it=et.left;it&&(et.left=it.right,it.right=et),nt!==null?rt?nt.left=it:nt.right=it:this._setRoot(it)}_rebalance(et){const nt=et.getBalance();nt>1&&et.left?et.left.getBalance()<0?this._rotateLeft(et.left):this._rotateRight(et):nt<-1&&et.right&&(et.right.getBalance()>0?this._rotateRight(et.right):this._rotateLeft(et))}get(et){if(this._root!==null){const nt=[];if(this._root.search(et,nt),nt.length>0){let rt=nt[0];for(let it=1;itrt.low&&(rt=nt[it]);return rt.event}}return null}forEach(et){if(this._root!==null){const nt=[];this._root.traverse(rt=>nt.push(rt)),nt.forEach(rt=>{rt.event&&et(rt.event)})}return this}forEachAtTime(et,nt){if(this._root!==null){const rt=[];this._root.search(et,rt),rt.forEach(it=>{it.event&&nt(it.event)})}return this}forEachFrom(et,nt){if(this._root!==null){const rt=[];this._root.searchAfter(et,rt),rt.forEach(it=>{it.event&&nt(it.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(et=>et.dispose()),this._root=null,this}}class IntervalNode{constructor(et,nt,rt){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=rt,this.low=et,this.high=nt,this.max=this.high}insert(et){et.low<=this.low?this.left===null?this.left=et:this.left.insert(et):this.right===null?this.right=et:this.right.insert(et)}search(et,nt){et>this.max||(this.left!==null&&this.left.search(et,nt),this.low<=et&&this.high>et&&nt.push(this),!(this.low>et)&&this.right!==null&&this.right.search(et,nt))}searchAfter(et,nt){this.low>=et&&(nt.push(this),this.left!==null&&this.left.searchAfter(et,nt)),this.right!==null&&this.right.searchAfter(et,nt)}traverse(et){et(this),this.left!==null&&this.left.traverse(et),this.right!==null&&this.right.traverse(et)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let et=0;return this.left!==null&&this.right!==null?et=this.left.height-this.right.height:this.left!==null?et=this.left.height+1:this.right!==null&&(et=-(this.right.height+1)),et}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(et){this._left=et,et!==null&&(et.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(et){this._right=et,et!==null&&(et.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}class Volume extends ToneAudioNode{constructor(){super(optionsFromArguments(Volume.getDefaults(),arguments,["volume"])),this.name="Volume";const et=optionsFromArguments(Volume.getDefaults(),arguments,["volume"]);this.input=this.output=new Gain({context:this.context,gain:et.volume,units:"decibels"}),this.volume=this.output.gain,readOnly(this,"volume"),this._unmutedVolume=et.volume,this.mute=et.mute}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(et){!this.mute&&et?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!et&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}let Destination$1=class b1 extends ToneAudioNode{constructor(){super(optionsFromArguments(b1.getDefaults(),arguments)),this.name="Destination",this.input=new Volume({context:this.context}),this.output=new Gain({context:this.context}),this.volume=this.input.volume;const et=optionsFromArguments(b1.getDefaults(),arguments);connectSeries(this.input,this.output,this.context.rawContext.destination),this.mute=et.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(et){this.input.mute=et}chain(...et){return this.input.disconnect(),et.unshift(this.input),et.push(this.output),connectSeries(...et),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}};onContextInit(tt=>{tt.destination=new Destination$1({context:tt})});onContextClose(tt=>{tt.destination.dispose()});class TimelineValue extends Tone{constructor(et){super(),this.name="TimelineValue",this._timeline=new Timeline({memory:10}),this._initialValue=et}set(et,nt){return this._timeline.add({value:et,time:nt}),this}get(et){const nt=this._timeline.get(et);return nt?nt.value:this._initialValue}}class SignalOperator extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(SignalOperator.getDefaults(),arguments,["context"])))}connect(et,nt=0,rt=0){return connectSignal(this,et,nt,rt),this}}class WaveShaper extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(WaveShaper.getDefaults(),arguments,["mapping","length"]))),this.name="WaveShaper",this._shaper=this.context.createWaveShaper(),this.input=this._shaper,this.output=this._shaper;const et=optionsFromArguments(WaveShaper.getDefaults(),arguments,["mapping","length"]);isArray$e(et.mapping)||et.mapping instanceof Float32Array?this.curve=Float32Array.from(et.mapping):isFunction$2(et.mapping)&&this.setMap(et.mapping,et.length)}static getDefaults(){return Object.assign(Signal.getDefaults(),{length:1024})}setMap(et,nt=1024){const rt=new Float32Array(nt);for(let it=0,ot=nt;itrt.includes(et));assert(nt,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=et}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class Pow extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Pow.getDefaults(),arguments,["value"]))),this.name="Pow";const et=optionsFromArguments(Pow.getDefaults(),arguments,["value"]);this._exponentScaler=this.input=this.output=new WaveShaper({context:this.context,mapping:this._expFunc(et.value),length:8192}),this._exponent=et.value}static getDefaults(){return Object.assign(SignalOperator.getDefaults(),{value:1})}_expFunc(et){return nt=>Math.pow(Math.abs(nt),et)}get value(){return this._exponent}set value(et){this._exponent=et,this._exponentScaler.setMap(this._expFunc(this._exponent))}dispose(){return super.dispose(),this._exponentScaler.dispose(),this}}class TransportEvent{constructor(et,nt){this.id=TransportEvent._eventId++,this._remainderTime=0;const rt=Object.assign(TransportEvent.getDefaults(),nt);this.transport=et,this.callback=rt.callback,this._once=rt.once,this.time=Math.floor(rt.time),this._remainderTime=rt.time-this.time}static getDefaults(){return{callback:noOp,once:!1,time:0}}get floatTime(){return this.time+this._remainderTime}invoke(et){if(this.callback){const nt=this.transport.bpm.getDurationOfTicks(1,et);this.callback(et+this._remainderTime*nt),this._once&&this.transport.clear(this.id)}}dispose(){return this.callback=void 0,this}}TransportEvent._eventId=0;class TransportRepeatEvent extends TransportEvent{constructor(et,nt){super(et,nt),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const rt=Object.assign(TransportRepeatEvent.getDefaults(),nt);this.duration=rt.duration,this._interval=rt.interval,this._nextTick=rt.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.transport.on("ticks",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},TransportEvent.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(et){this._createEvents(et),super.invoke(et)}_createEvent(){return LT(this._nextTick,this.floatTime+this.duration)?this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds()):-1}_createEvents(et){LT(this._nextTick+this._interval,this.floatTime+this.duration)&&(this._nextTick+=this._interval,this._currentId=this._nextId,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds()))}_restart(et){this.transport.clear(this._currentId),this.transport.clear(this._nextId),this._nextTick=this.floatTime;const nt=this.transport.getTicksAtTime(et);GT(nt,this.time)&&(this._nextTick=this.floatTime+Math.ceil((nt-this.floatTime)/this._interval)*this._interval),this._currentId=this._createEvent(),this._nextTick+=this._interval,this._nextId=this._createEvent()}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this.transport.off("ticks",this._boundRestart),this}}let Transport$1=class w1 extends ToneWithContext{constructor(){super(optionsFromArguments(w1.getDefaults(),arguments)),this.name="Transport",this._loop=new TimelineValue(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Timeline,this._repeatedEvents=new IntervalTimeline,this._syncedSignals=[],this._swingAmount=0;const et=optionsFromArguments(w1.getDefaults(),arguments);this._ppq=et.ppq,this._clock=new Clock({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=et.ppq,this.bpm.setValueAtTime(et.bpm,0),readOnly(this,"bpm"),this._timeSignature=et.timeSignature,this._swingTicks=et.ppq/2}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(et,nt){if(this._loop.get(et)&&nt>=this._loopEnd&&(this.emit("loopEnd",et),this._clock.setTicksAtTime(this._loopStart,et),nt=this._loopStart,this.emit("loopStart",et,this._clock.getSecondsAtTime(et)),this.emit("loop",et)),this._swingAmount>0&&nt%this._ppq!==0&&nt%(this._swingTicks*2)!==0){const rt=nt%(this._swingTicks*2)/(this._swingTicks*2),it=Math.sin(rt*Math.PI)*this._swingAmount;et+=new TicksClass(this.context,this._swingTicks*2/3).toSeconds()*it}enterScheduledCallback(!0),this._timeline.forEachAtTime(nt,rt=>rt.invoke(et)),enterScheduledCallback(!1)}schedule(et,nt){const rt=new TransportEvent(this,{callback:et,time:new TransportTimeClass(this.context,nt).toTicks()});return this._addEvent(rt,this._timeline)}scheduleRepeat(et,nt,rt,it=1/0){const ot=new TransportRepeatEvent(this,{callback:et,duration:new TimeClass(this.context,it).toTicks(),interval:new TimeClass(this.context,nt).toTicks(),time:new TransportTimeClass(this.context,rt).toTicks()});return this._addEvent(ot,this._repeatedEvents)}scheduleOnce(et,nt){const rt=new TransportEvent(this,{callback:et,once:!0,time:new TransportTimeClass(this.context,nt).toTicks()});return this._addEvent(rt,this._timeline)}clear(et){if(this._scheduledEvents.hasOwnProperty(et)){const nt=this._scheduledEvents[et.toString()];nt.timeline.remove(nt.event),nt.event.dispose(),delete this._scheduledEvents[et.toString()]}return this}_addEvent(et,nt){return this._scheduledEvents[et.id.toString()]={event:et,timeline:nt},nt.add(et),et.id}cancel(et=0){const nt=this.toTicks(et);return this._timeline.forEachFrom(nt,rt=>this.clear(rt.id)),this._repeatedEvents.forEachFrom(nt,rt=>this.clear(rt.id)),this}_bindClockEvents(){this._clock.on("start",(et,nt)=>{nt=new TicksClass(this.context,nt).toSeconds(),this.emit("start",et,nt)}),this._clock.on("stop",et=>{this.emit("stop",et)}),this._clock.on("pause",et=>{this.emit("pause",et)})}get state(){return this._clock.getStateAtTime(this.now())}start(et,nt){this.context.resume();let rt;return isDefined(nt)&&(rt=this.toTicks(nt)),this._clock.start(et,rt),this}stop(et){return this._clock.stop(et),this}pause(et){return this._clock.pause(et),this}toggle(et){return et=this.toSeconds(et),this._clock.getStateAtTime(et)!=="started"?this.start(et):this.stop(et),this}get timeSignature(){return this._timeSignature}set timeSignature(et){isArray$e(et)&&(et=et[0]/et[1]*4),this._timeSignature=et}get loopStart(){return new TimeClass(this.context,this._loopStart,"i").toSeconds()}set loopStart(et){this._loopStart=this.toTicks(et)}get loopEnd(){return new TimeClass(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(et){this._loopEnd=this.toTicks(et)}get loop(){return this._loop.get(this.now())}set loop(et){this._loop.set(et,this.now())}setLoopPoints(et,nt){return this.loopStart=et,this.loopEnd=nt,this}get swing(){return this._swingAmount}set swing(et){this._swingAmount=et}get swingSubdivision(){return new TicksClass(this.context,this._swingTicks).toNotation()}set swingSubdivision(et){this._swingTicks=this.toTicks(et)}get position(){const et=this.now(),nt=this._clock.getTicksAtTime(et);return new TicksClass(this.context,nt).toBarsBeatsSixteenths()}set position(et){const nt=this.toTicks(et);this.ticks=nt}get seconds(){return this._clock.seconds}set seconds(et){const nt=this.now(),rt=this._clock.frequency.timeToTicks(et,nt);this.ticks=rt}get progress(){if(this.loop){const et=this.now();return(this._clock.getTicksAtTime(et)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(et){if(this._clock.ticks!==et){const nt=this.now();if(this.state==="started"){const rt=this._clock.getTicksAtTime(nt),it=this._clock.frequency.getDurationOfTicks(Math.ceil(rt)-rt,nt),ot=nt+it;this.emit("stop",ot),this._clock.setTicksAtTime(et,ot),this.emit("start",ot,this._clock.getSecondsAtTime(ot))}else this.emit("ticks",nt),this._clock.setTicksAtTime(et,nt)}}getTicksAtTime(et){return this._clock.getTicksAtTime(et)}getSecondsAtTime(et){return this._clock.getSecondsAtTime(et)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(et){this._clock.frequency.multiplier=et}nextSubdivision(et){if(et=this.toTicks(et),this.state!=="started")return 0;{const nt=this.now(),rt=this.getTicksAtTime(nt),it=et-rt%et;return this._clock.nextTickTime(it,nt)}}syncSignal(et,nt){const rt=this.now();let it=this.bpm,ot=1/(60/it.getValueAtTime(rt)/this.PPQ),at=[];if(et.units==="time"){const lt=.015625/ot,ct=new Gain(lt),ut=new Pow(-1),ht=new Gain(lt);it.chain(ct,ut,ht),it=ht,ot=1/ot,at=[ct,ut,ht]}nt||(et.getValueAtTime(rt)!==0?nt=et.getValueAtTime(rt)/ot:nt=0);const st=new Gain(nt);return it.connect(st),st.connect(et._param),at.push(st),this._syncedSignals.push({initial:et.value,nodes:at,signal:et}),et.value=0,this}unsyncSignal(et){for(let nt=this._syncedSignals.length-1;nt>=0;nt--){const rt=this._syncedSignals[nt];rt.signal===et&&(rt.nodes.forEach(it=>it.dispose()),rt.signal.value=rt.initial,this._syncedSignals.splice(nt,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),writable(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}};Emitter$1.mixin(Transport$1);onContextInit(tt=>{tt.transport=new Transport$1({context:tt})});onContextClose(tt=>{tt.transport.dispose()});class Source extends ToneAudioNode{constructor(et){super(et),this.input=void 0,this._state=new StateTimeline("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=noOp,this._syncedStop=noOp,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Volume({context:this.context,mute:et.mute,volume:et.volume}),this.volume=this._volume.volume,readOnly(this,"volume"),this.onstop=et.onstop}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,onstop:noOp,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(et){this._volume.mute=et}_clampToCurrentTime(et){return this._synced?et:Math.max(et,this.context.currentTime)}start(et,nt,rt){let it=isUndef(et)&&this._synced?this.context.transport.seconds:this.toSeconds(et);if(it=this._clampToCurrentTime(it),!this._synced&&this._state.getValueAtTime(it)==="started")assert(GT(it,this._state.get(it).time),"Start time must be strictly greater than previous start time"),this._state.cancel(it),this._state.setStateAtTime("started",it),this.log("restart",it),this.restart(it,nt,rt);else if(this.log("start",it),this._state.setStateAtTime("started",it),this._synced){const ot=this._state.get(it);ot&&(ot.offset=this.toSeconds(defaultArg(nt,0)),ot.duration=rt?this.toSeconds(rt):void 0);const at=this.context.transport.schedule(st=>{this._start(st,nt,rt)},it);this._scheduled.push(at),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>it&&this._syncedStart(this.now(),this.context.transport.seconds)}else assertContextRunning(this.context),this._start(it,nt,rt);return this}stop(et){let nt=isUndef(et)&&this._synced?this.context.transport.seconds:this.toSeconds(et);if(nt=this._clampToCurrentTime(nt),this._state.getValueAtTime(nt)==="started"||isDefined(this._state.getNextState("started",nt))){if(this.log("stop",nt),!this._synced)this._stop(nt);else{const rt=this.context.transport.schedule(this._stop.bind(this),nt);this._scheduled.push(rt)}this._state.cancel(nt),this._state.setStateAtTime("stopped",nt)}return this}restart(et,nt,rt){return et=this.toSeconds(et),this._state.getValueAtTime(et)==="started"&&(this._state.cancel(et),this._restart(et,nt,rt)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(et,nt)=>{if(GT(nt,0)){const rt=this._state.get(nt);if(rt&&rt.state==="started"&&rt.time!==nt){const it=nt-this.toSeconds(rt.time);let ot;rt.duration&&(ot=this.toSeconds(rt.duration)-it),this._start(et,this.toSeconds(rt.offset)+it,ot)}}},this._syncedStop=et=>{const nt=this.context.transport.getSecondsAtTime(Math.max(et-this.sampleTime,0));this._state.getValueAtTime(nt)==="started"&&this._stop(et)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(et=>this.context.transport.clear(et)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=noOp,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class ToneBufferSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"])),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1;const et=optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"]);connect(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new Param({context:this.context,param:this._source.playbackRate,units:"positive",value:et.playbackRate}),this.loop=et.loop,this.loopStart=et.loopStart,this.loopEnd=et.loopEnd,this._buffer=new ToneAudioBuffer(et.url,et.onload,et.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{url:new ToneAudioBuffer,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(et){this._fadeIn=et}get fadeOut(){return this._fadeOut}set fadeOut(et){this._fadeOut=et}get curve(){return this._curve}set curve(et){this._curve=et}start(et,nt,rt,it=1){assert(this.buffer.loaded,"buffer is either not set or not loaded");const ot=this.toSeconds(et);this._startGain(ot,it),this.loop?nt=defaultArg(nt,this.loopStart):nt=defaultArg(nt,0);let at=Math.max(this.toSeconds(nt),0);if(this.loop){const st=this.toSeconds(this.loopEnd)||this.buffer.duration,lt=this.toSeconds(this.loopStart),ct=st-lt;GTE(at,st)&&(at=(at-lt)%ct+lt),EQ(at,this.buffer.duration)&&(at=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,LT(at,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(ot,at)),isDefined(rt)){let st=this.toSeconds(rt);st=Math.max(st,0),this.stop(ot+st)}return this}_stopSource(et){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(et)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(et){this._source.loopStart=this.toSeconds(et)}get loopEnd(){return this._source.loopEnd}set loopEnd(et){this._source.loopEnd=this.toSeconds(et)}get buffer(){return this._buffer}set buffer(et){this._buffer.set(et)}get loop(){return this._source.loop}set loop(et){this._source.loop=et,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}class Noise extends Source{constructor(){super(optionsFromArguments(Noise.getDefaults(),arguments,["type"])),this.name="Noise",this._source=null;const et=optionsFromArguments(Noise.getDefaults(),arguments,["type"]);this._playbackRate=et.playbackRate,this.type=et.type,this._fadeIn=et.fadeIn,this._fadeOut=et.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{fadeIn:0,fadeOut:0,playbackRate:1,type:"white"})}get type(){return this._type}set type(et){if(assert(et in _noiseBuffers,"Noise: invalid type: "+et),this._type!==et&&(this._type=et,this.state==="started")){const nt=this.now();this._stop(nt),this._start(nt)}}get playbackRate(){return this._playbackRate}set playbackRate(et){this._playbackRate=et,this._source&&(this._source.playbackRate.value=et)}_start(et){const nt=_noiseBuffers[this._type];this._source=new ToneBufferSource({url:nt,context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,loop:!0,onended:()=>this.onstop(this),playbackRate:this._playbackRate}).connect(this.output),this._source.start(this.toSeconds(et),Math.random()*(nt.duration-.001))}_stop(et){this._source&&(this._source.stop(this.toSeconds(et)),this._source=null)}get fadeIn(){return this._fadeIn}set fadeIn(et){this._fadeIn=et,this._source&&(this._source.fadeIn=this._fadeIn)}get fadeOut(){return this._fadeOut}set fadeOut(et){this._fadeOut=et,this._source&&(this._source.fadeOut=this._fadeOut)}_restart(et){this._stop(et),this._start(et)}dispose(){return super.dispose(),this._source&&this._source.disconnect(),this}}const BUFFER_LENGTH=44100*5,NUM_CHANNELS=2,_noiseCache={brown:null,pink:null,white:null},_noiseBuffers={get brown(){if(!_noiseCache.brown){const tt=[];for(let et=0;etthis.onstop(this)});this._oscillator=rt,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(nt)}_stop(et){const nt=this.toSeconds(et);this._oscillator&&this._oscillator.stop(nt)}_restart(et){const nt=this.toSeconds(et);return this.log("restart",nt),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(nt),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Oscillator._periodicWaveCache.find(nt=>nt.phase===this._phase&&deepEquals(nt.partials,this._partials));{const et=Oscillator._periodicWaveCache.find(nt=>nt.type===this._type&&nt.phase===this._phase);return this._partialCount=et?et.partialCount:this._partialCount,et}}get type(){return this._type}set type(et){this._type=et;const nt=["sine","square","sawtooth","triangle"].indexOf(et)!==-1;if(this._phase===0&&nt)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=et);else{const rt=this._getCachedPeriodicWave();if(isDefined(rt)){const{partials:it,wave:ot}=rt;this._wave=ot,this._partials=it,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[it,ot]=this._getRealImaginary(et,this._phase),at=this.context.createPeriodicWave(it,ot);this._wave=at,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Oscillator._periodicWaveCache.push({imag:ot,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:it,type:this._type,wave:this._wave}),Oscillator._periodicWaveCache.length>100&&Oscillator._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(et){this.partialCount&&this._type!=="custom"&&et!=="custom"?this.type=et+this.partialCount:this.type=et}get partialCount(){return this._partialCount}set partialCount(et){assertRange(et,0);let nt=this._type;const rt=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(rt&&(nt=rt[1]),this._type!=="custom")et===0?this.type=nt:this.type=nt+et.toString();else{const it=new Float32Array(et);this._partials.forEach((ot,at)=>it[at]=ot),this._partials=Array.from(it),this.type=this._type}}_getRealImaginary(et,nt){let it=2048;const ot=new Float32Array(it),at=new Float32Array(it);let st=1;if(et==="custom"){if(st=this._partials.length+1,this._partialCount=this._partials.length,it=st,this._partials.length===0)return[ot,at]}else{const lt=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(et);lt?(st=parseInt(lt[2],10)+1,this._partialCount=parseInt(lt[2],10),et=lt[1],st=Math.max(st,2),it=st):this._partialCount=0,this._partials=[]}for(let lt=1;lt>1&1?-1:1):ut=0,this._partials[lt-1]=ut;break;case"custom":ut=this._partials[lt-1];break;default:throw new TypeError("Oscillator: invalid type: "+et)}ut!==0?(ot[lt]=-ut*Math.sin(nt*lt),at[lt]=ut*Math.cos(nt*lt)):(ot[lt]=0,at[lt]=0)}return[ot,at]}_inverseFFT(et,nt,rt){let it=0;const ot=et.length;for(let at=0;at(et+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Multiply extends Signal{constructor(){super(Object.assign(optionsFromArguments(Multiply.getDefaults(),arguments,["value"]))),this.name="Multiply",this.override=!1;const et=optionsFromArguments(Multiply.getDefaults(),arguments,["value"]);this._mult=this.input=this.output=new Gain({context:this.context,minValue:et.minValue,maxValue:et.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(et.value,0)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class AMOscillator extends Source{constructor(){super(optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="AMOscillator",this._modulationScale=new AudioToGain({context:this.context}),this._modulationNode=new Gain({context:this.context});const et=optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:et.detune,frequency:et.frequency,onstop:()=>this.onstop(this),phase:et.phase,type:et.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Oscillator({context:this.context,phase:et.phase,type:et.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:et.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),readOnly(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(et){this._modulator.start(et),this._carrier.start(et)}_stop(et){this._modulator.stop(et),this._carrier.stop(et)}_restart(et){this._modulator.restart(et),this._carrier.restart(et)}get type(){return this._carrier.type}set type(et){this._carrier.type=et}get baseType(){return this._carrier.baseType}set baseType(et){this._carrier.baseType=et}get partialCount(){return this._carrier.partialCount}set partialCount(et){this._carrier.partialCount=et}get modulationType(){return this._modulator.type}set modulationType(et){this._modulator.type=et}get phase(){return this._carrier.phase}set phase(et){this._carrier.phase=et,this._modulator.phase=et}get partials(){return this._carrier.partials}set partials(et){this._carrier.partials=et}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class FMOscillator extends Source{constructor(){super(optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="FMOscillator",this._modulationNode=new Gain({context:this.context,gain:0});const et=optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:et.detune,frequency:0,onstop:()=>this.onstop(this),phase:et.phase,type:et.type}),this.detune=this._carrier.detune,this.frequency=new Signal({context:this.context,units:"frequency",value:et.frequency}),this._modulator=new Oscillator({context:this.context,phase:et.phase,type:et.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:et.harmonicity}),this.modulationIndex=new Multiply({context:this.context,units:"positive",value:et.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),readOnly(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(et){this._modulator.start(et),this._carrier.start(et)}_stop(et){this._modulator.stop(et),this._carrier.stop(et)}_restart(et){return this._modulator.restart(et),this._carrier.restart(et),this}get type(){return this._carrier.type}set type(et){this._carrier.type=et}get baseType(){return this._carrier.baseType}set baseType(et){this._carrier.baseType=et}get partialCount(){return this._carrier.partialCount}set partialCount(et){this._carrier.partialCount=et}get modulationType(){return this._modulator.type}set modulationType(et){this._modulator.type=et}get phase(){return this._carrier.phase}set phase(et){this._carrier.phase=et,this._modulator.phase=et}get partials(){return this._carrier.partials}set partials(et){this._carrier.partials=et}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class PulseOscillator extends Source{constructor(){super(optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"])),this.name="PulseOscillator",this._widthGate=new Gain({context:this.context,gain:0}),this._thresh=new WaveShaper({context:this.context,mapping:nt=>nt<=0?-1:1});const et=optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"]);this.width=new Signal({context:this.context,units:"audioRange",value:et.width}),this._triangle=new Oscillator({context:this.context,detune:et.detune,frequency:et.frequency,onstop:()=>this.onstop(this),phase:et.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),readOnly(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(et){et=this.toSeconds(et),this._triangle.start(et),this._widthGate.gain.setValueAtTime(1,et)}_stop(et){et=this.toSeconds(et),this._triangle.stop(et),this._widthGate.gain.cancelScheduledValues(et),this._widthGate.gain.setValueAtTime(0,et)}_restart(et){this._triangle.restart(et),this._widthGate.gain.cancelScheduledValues(et),this._widthGate.gain.setValueAtTime(1,et)}get phase(){return this._triangle.phase}set phase(et){this._triangle.phase=et}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(et){this._triangle.type=et}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class FatOscillator extends Source{constructor(){super(optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"])),this.name="FatOscillator",this._oscillators=[];const et=optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"]);this.frequency=new Signal({context:this.context,units:"frequency",value:et.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:et.detune}),this._spread=et.spread,this._type=et.type,this._phase=et.phase,this._partials=et.partials,this._partialCount=et.partialCount,this.count=et.count,readOnly(this,["frequency","detune"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(et){et=this.toSeconds(et),this._forEach(nt=>nt.start(et))}_stop(et){et=this.toSeconds(et),this._forEach(nt=>nt.stop(et))}_restart(et){this._forEach(nt=>nt.restart(et))}_forEach(et){for(let nt=0;ntnt.type=et)}get spread(){return this._spread}set spread(et){if(this._spread=et,this._oscillators.length>1){const nt=-et/2,rt=et/(this._oscillators.length-1);this._forEach((it,ot)=>it.detune.value=nt+rt*ot)}}get count(){return this._oscillators.length}set count(et){if(assertRange(et,1),this._oscillators.length!==et){this._forEach(nt=>nt.dispose()),this._oscillators=[];for(let nt=0;ntthis.onstop(this):noOp});this.type==="custom"&&(rt.partials=this._partials),this.frequency.connect(rt.frequency),this.detune.connect(rt.detune),rt.detune.overridden=!1,rt.connect(this.output),this._oscillators[nt]=rt}this.spread=this._spread,this.state==="started"&&this._forEach(nt=>nt.start())}}get phase(){return this._phase}set phase(et){this._phase=et,this._forEach((nt,rt)=>nt.phase=this._phase+rt/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(et){this._forEach(nt=>nt.baseType=et),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(et){this._partials=et,this._partialCount=this._partials.length,et.length&&(this._type="custom",this._forEach(nt=>nt.partials=et))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(et){this._partialCount=et,this._forEach(nt=>nt.partialCount=et),this._type=this._oscillators[0].type}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(et=>et.dispose()),this}}class PWMOscillator extends Source{constructor(){super(optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"])),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Multiply({context:this.context,value:2});const et=optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"]);this._pulse=new PulseOscillator({context:this.context,frequency:et.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Oscillator({context:this.context,detune:et.detune,frequency:et.frequency,onstop:()=>this.onstop(this),phase:et.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),readOnly(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(et){et=this.toSeconds(et),this._modulator.start(et),this._pulse.start(et)}_stop(et){et=this.toSeconds(et),this._modulator.stop(et),this._pulse.stop(et)}_restart(et){this._modulator.restart(et),this._pulse.restart(et)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(et){this._modulator.phase=et}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const OmniOscillatorSourceMap={am:AMOscillator,fat:FatOscillator,fm:FMOscillator,oscillator:Oscillator,pulse:PulseOscillator,pwm:PWMOscillator};class OmniOscillator extends Source{constructor(){super(optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"])),this.name="OmniOscillator";const et=optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:et.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:et.detune}),readOnly(this,["frequency","detune"]),this.set(et)}static getDefaults(){return Object.assign(Oscillator.getDefaults(),FMOscillator.getDefaults(),AMOscillator.getDefaults(),FatOscillator.getDefaults(),PulseOscillator.getDefaults(),PWMOscillator.getDefaults())}_start(et){this._oscillator.start(et)}_stop(et){this._oscillator.stop(et)}_restart(et){return this._oscillator.restart(et),this}get type(){let et="";return["am","fm","fat"].some(nt=>this._sourceType===nt)&&(et=this._sourceType),et+this._oscillator.type}set type(et){et.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=et.substr(2)):et.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=et.substr(2)):et.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=et.substr(3)):et==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):et==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=et)}get partials(){return this._oscillator.partials}set partials(et){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=et)}get partialCount(){return this._oscillator.partialCount}set partialCount(et){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=et)}set(et){return Reflect.has(et,"type")&&et.type&&(this.type=et.type),super.set(et),this}_createNewOscillator(et){if(et!==this._sourceType){this._sourceType=et;const nt=OmniOscillatorSourceMap[et],rt=this.now();if(this._oscillator){const it=this._oscillator;it.stop(rt),this.context.setTimeout(()=>it.dispose(),this.blockTime)}this._oscillator=new nt({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(rt)}}get phase(){return this._oscillator.phase}set phase(et){this._oscillator.phase=et}get sourceType(){return this._sourceType}set sourceType(et){let nt="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(nt=this._oscillator.type),et==="fm"?this.type="fm"+nt:et==="am"?this.type="am"+nt:et==="fat"?this.type="fat"+nt:et==="oscillator"?this.type=nt:et==="pulse"?this.type="pulse":et==="pwm"&&(this.type="pwm")}_getOscType(et,nt){return et instanceof OmniOscillatorSourceMap[nt]}get baseType(){return this._oscillator.baseType}set baseType(et){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&et!=="pulse"&&et!=="pwm"&&(this._oscillator.baseType=et)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(et){this._getOscType(this._oscillator,"fat")&&isNumber$4(et)&&(this._oscillator.count=et)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(et){this._getOscType(this._oscillator,"fat")&&isNumber$4(et)&&(this._oscillator.spread=et)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(et){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&isString$2(et)&&(this._oscillator.modulationType=et)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(et=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,et)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}class Add extends Signal{constructor(){super(Object.assign(optionsFromArguments(Add.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Add",this._sum=new Gain({context:this.context}),this.input=this._sum,this.output=this._sum,this.addend=this._param,connectSeries(this._constantSource,this._sum)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._sum.dispose(),this}}class Scale extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Scale.getDefaults(),arguments,["min","max"]))),this.name="Scale";const et=optionsFromArguments(Scale.getDefaults(),arguments,["min","max"]);this._mult=this.input=new Multiply({context:this.context,value:et.max-et.min}),this._add=this.output=new Add({context:this.context,value:et.min}),this._min=et.min,this._max=et.max,this.input.connect(this.output)}static getDefaults(){return Object.assign(SignalOperator.getDefaults(),{max:1,min:0})}get min(){return this._min}set min(et){this._min=et,this._setRange()}get max(){return this._max}set max(et){this._max=et,this._setRange()}_setRange(){this._add.value=this._min,this._mult.value=this._max-this._min}dispose(){return super.dispose(),this._add.dispose(),this._mult.dispose(),this}}function range$3(tt,et=1/0){const nt=new WeakMap;return function(rt,it){Reflect.defineProperty(rt,it,{configurable:!0,enumerable:!0,get:function(){return nt.get(this)},set:function(ot){assertRange(ot,tt,et),nt.set(this,ot)}})}}function timeRange(tt,et=1/0){const nt=new WeakMap;return function(rt,it){Reflect.defineProperty(rt,it,{configurable:!0,enumerable:!0,get:function(){return nt.get(this)},set:function(ot){assertRange(this.toSeconds(ot),tt,et),nt.set(this,ot)}})}}let Player$1=class x1 extends Source{constructor(){super(optionsFromArguments(x1.getDefaults(),arguments,["url","onload"])),this.name="Player",this._activeSources=new Set;const et=optionsFromArguments(x1.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer({onload:this._onload.bind(this,et.onload),onerror:et.onerror,reverse:et.reverse,url:et.url}),this.autostart=et.autostart,this._loop=et.loop,this._loopStart=et.loopStart,this._loopEnd=et.loopEnd,this._playbackRate=et.playbackRate,this.fadeIn=et.fadeIn,this.fadeOut=et.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1,reverse:!1})}load(et){return __awaiter(this,void 0,void 0,function*(){return yield this._buffer.load(et),this._onload(),this})}_onload(et=noOp){et(),this.autostart&&this.start()}_onSourceEnd(et){this.onstop(this),this._activeSources.delete(et),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(et,nt,rt){return super.start(et,nt,rt),this}_start(et,nt,rt){this._loop?nt=defaultArg(nt,this._loopStart):nt=defaultArg(nt,0);const it=this.toSeconds(nt),ot=rt;rt=defaultArg(rt,Math.max(this._buffer.duration-it,0));let at=this.toSeconds(rt);at=at/this._playbackRate,et=this.toSeconds(et);const st=new ToneBufferSource({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(et+at),this._state.setStateAtTime("stopped",et+at,{implicitEnd:!0})),this._activeSources.add(st),this._loop&&isUndef(ot)?st.start(et,it):st.start(et,it,at-this.toSeconds(this.fadeOut))}_stop(et){const nt=this.toSeconds(et);this._activeSources.forEach(rt=>rt.stop(nt))}restart(et,nt,rt){return super.restart(et,nt,rt),this}_restart(et,nt,rt){var it;(it=[...this._activeSources].pop())===null||it===void 0||it.stop(et),this._start(et,nt,rt)}seek(et,nt){const rt=this.toSeconds(nt);if(this._state.getValueAtTime(rt)==="started"){const it=this.toSeconds(et);this._stop(rt),this._start(rt,it)}return this}setLoopPoints(et,nt){return this.loopStart=et,this.loopEnd=nt,this}get loopStart(){return this._loopStart}set loopStart(et){this._loopStart=et,this.buffer.loaded&&assertRange(this.toSeconds(et),0,this.buffer.duration),this._activeSources.forEach(nt=>{nt.loopStart=et})}get loopEnd(){return this._loopEnd}set loopEnd(et){this._loopEnd=et,this.buffer.loaded&&assertRange(this.toSeconds(et),0,this.buffer.duration),this._activeSources.forEach(nt=>{nt.loopEnd=et})}get buffer(){return this._buffer}set buffer(et){this._buffer.set(et)}get loop(){return this._loop}set loop(et){if(this._loop!==et&&(this._loop=et,this._activeSources.forEach(nt=>{nt.loop=et}),et)){const nt=this._state.getNextState("stopped",this.now());nt&&this._state.cancel(nt.time)}}get playbackRate(){return this._playbackRate}set playbackRate(et){this._playbackRate=et;const nt=this.now(),rt=this._state.getNextState("stopped",nt);rt&&rt.implicitEnd&&(this._state.cancel(rt.time),this._activeSources.forEach(it=>it.cancelStop())),this._activeSources.forEach(it=>{it.playbackRate.setValueAtTime(et,nt)})}get reverse(){return this._buffer.reverse}set reverse(et){this._buffer.reverse=et}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(et=>et.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}};__decorate([timeRange(0)],Player$1.prototype,"fadeIn",void 0);__decorate([timeRange(0)],Player$1.prototype,"fadeOut",void 0);class GainToAudio extends SignalOperator{constructor(){super(...arguments),this.name="GainToAudio",this._norm=new WaveShaper({context:this.context,mapping:et=>Math.abs(et)*2-1}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Envelope extends ToneAudioNode{constructor(){super(optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="Envelope",this._sig=new Signal({context:this.context,value:0}),this.output=this._sig,this.input=void 0;const et=optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this.attack=et.attack,this.decay=et.decay,this.sustain=et.sustain,this.release=et.release,this.attackCurve=et.attackCurve,this.releaseCurve=et.releaseCurve,this.decayCurve=et.decayCurve}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(et,nt){if(isString$2(et))return et;{let rt;for(rt in EnvelopeCurves)if(EnvelopeCurves[rt][nt]===et)return rt;return et}}_setCurve(et,nt,rt){if(isString$2(rt)&&Reflect.has(EnvelopeCurves,rt)){const it=EnvelopeCurves[rt];isObject$7(it)?et!=="_decayCurve"&&(this[et]=it[nt]):this[et]=it}else if(isArray$e(rt)&&et!=="_decayCurve")this[et]=rt;else throw new Error("Envelope: invalid curve: "+rt)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(et){this._setCurve("_attackCurve","In",et)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(et){this._setCurve("_releaseCurve","Out",et)}get decayCurve(){return this._getCurve(this._decayCurve,"Out")}set decayCurve(et){this._setCurve("_decayCurve","Out",et)}triggerAttack(et,nt=1){this.log("triggerAttack",et,nt),et=this.toSeconds(et);let it=this.toSeconds(this.attack);const ot=this.toSeconds(this.decay),at=this.getValueAtTime(et);if(at>0){const st=1/it;it=(1-at)/st}if(it0){const rt=this.toSeconds(this.release);rt{let et,nt;const rt=[];for(et=0;et<128;et++)rt[et]=Math.sin(et/(128-1)*(Math.PI/2));const it=[],ot=6.4;for(et=0;et<128-1;et++){nt=et/(128-1);const dt=Math.sin(nt*(Math.PI*2)*ot-Math.PI/2)+1;it[et]=dt/10+nt*.83}it[128-1]=1;const at=[],st=5;for(et=0;et<128;et++)at[et]=Math.ceil(et/(128-1)*st)/st;const lt=[];for(et=0;et<128;et++)nt=et/(128-1),lt[et]=.5*(1-Math.cos(Math.PI*nt));const ct=[];for(et=0;et<128;et++){nt=et/(128-1);const dt=Math.pow(nt,3)*4+.2,pt=Math.cos(dt*Math.PI*2*nt);ct[et]=Math.abs(pt*(1-nt))}function ut(dt){const pt=new Array(dt.length);for(let mt=0;mtthis._original_triggerRelease(nt);const et=optionsFromArguments(Instrument.getDefaults(),arguments);this._volume=this.output=new Volume({context:this.context,volume:et.volume}),this.volume=this._volume.volume,readOnly(this,"volume")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{volume:0})}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",0),this.context.transport.on("stop",this._syncedRelease),this.context.transport.on("pause",this._syncedRelease),this.context.transport.on("loopEnd",this._syncedRelease)),this}_syncState(){let et=!1;return this._synced||(this._synced=!0,et=!0),et}_syncMethod(et,nt){const rt=this["_original_"+et]=this[et];this[et]=(...it)=>{const ot=it[nt],at=this.context.transport.schedule(st=>{it[nt]=st,rt.apply(this,it)},ot);this._scheduledEvents.push(at)}}unsync(){return this._scheduledEvents.forEach(et=>this.context.transport.clear(et)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease,this.context.transport.off("stop",this._syncedRelease),this.context.transport.off("pause",this._syncedRelease),this.context.transport.off("loopEnd",this._syncedRelease)),this}triggerAttackRelease(et,nt,rt,it){const ot=this.toSeconds(rt),at=this.toSeconds(nt);return this.triggerAttack(et,ot,it),this.triggerRelease(ot+at),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class Monophonic extends Instrument{constructor(){super(optionsFromArguments(Monophonic.getDefaults(),arguments));const et=optionsFromArguments(Monophonic.getDefaults(),arguments);this.portamento=et.portamento,this.onsilence=et.onsilence}static getDefaults(){return Object.assign(Instrument.getDefaults(),{detune:0,onsilence:noOp,portamento:0})}triggerAttack(et,nt,rt=1){this.log("triggerAttack",et,nt,rt);const it=this.toSeconds(nt);return this._triggerEnvelopeAttack(it,rt),this.setNote(et,it),this}triggerRelease(et){this.log("triggerRelease",et);const nt=this.toSeconds(et);return this._triggerEnvelopeRelease(nt),this}setNote(et,nt){const rt=this.toSeconds(nt),it=et instanceof FrequencyClass?et.toFrequency():et;if(this.portamento>0&&this.getLevelAtTime(rt)>.05){const ot=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(it,ot,rt)}else this.frequency.setValueAtTime(it,rt);return this}}__decorate([timeRange(0)],Monophonic.prototype,"portamento",void 0);class AmplitudeEnvelope extends Envelope{constructor(){super(optionsFromArguments(AmplitudeEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Gain({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class Synth extends Monophonic{constructor(){super(optionsFromArguments(Synth.getDefaults(),arguments)),this.name="Synth";const et=optionsFromArguments(Synth.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign({context:this.context,detune:et.detune,onstop:()=>this.onsilence(this)},et.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new AmplitudeEnvelope(Object.assign({context:this.context},et.envelope)),this.oscillator.chain(this.envelope,this.output),readOnly(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(et,nt){if(this.envelope.triggerAttack(et,nt),this.oscillator.start(et),this.envelope.sustain===0){const rt=this.toSeconds(this.envelope.attack),it=this.toSeconds(this.envelope.decay);this.oscillator.stop(et+rt+it)}}_triggerEnvelopeRelease(et){this.envelope.triggerRelease(et),this.oscillator.stop(et+this.toSeconds(this.envelope.release))}getLevelAtTime(et){return et=this.toSeconds(et),this.envelope.getValueAtTime(et)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class BiquadFilter extends ToneAudioNode{constructor(){super(optionsFromArguments(BiquadFilter.getDefaults(),arguments,["frequency","type"])),this.name="BiquadFilter";const et=optionsFromArguments(BiquadFilter.getDefaults(),arguments,["frequency","type"]);this._filter=this.context.createBiquadFilter(),this.input=this.output=this._filter,this.Q=new Param({context:this.context,units:"number",value:et.Q,param:this._filter.Q}),this.frequency=new Param({context:this.context,units:"frequency",value:et.frequency,param:this._filter.frequency}),this.detune=new Param({context:this.context,units:"cents",value:et.detune,param:this._filter.detune}),this.gain=new Param({context:this.context,units:"decibels",convert:!1,value:et.gain,param:this._filter.gain}),this.type=et.type}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{Q:1,type:"lowpass",frequency:350,detune:0,gain:0})}get type(){return this._filter.type}set type(et){assert(["lowpass","highpass","bandpass","lowshelf","highshelf","notch","allpass","peaking"].indexOf(et)!==-1,`Invalid filter type: ${et}`),this._filter.type=et}getFrequencyResponse(et=128){const nt=new Float32Array(et);for(let at=0;atrt.type=et)}get rolloff(){return this._rolloff}set rolloff(et){const nt=isNumber$4(et)?et:parseInt(et,10),rt=[-12,-24,-48,-96];let it=rt.indexOf(nt);assert(it!==-1,`rolloff can only be ${rt.join(", ")}`),it+=1,this._rolloff=nt,this.input.disconnect(),this._filters.forEach(ot=>ot.disconnect()),this._filters=new Array(it);for(let ot=0;ot1);return this._filters.forEach(()=>{nt.getFrequencyResponse(et).forEach((ot,at)=>rt[at]*=ot)}),nt.dispose(),rt}dispose(){return super.dispose(),this._filters.forEach(et=>{et.dispose()}),writable(this,["detune","frequency","gain","Q"]),this.frequency.dispose(),this.Q.dispose(),this.detune.dispose(),this.gain.dispose(),this}};class FrequencyEnvelope extends Envelope{constructor(){super(optionsFromArguments(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="FrequencyEnvelope";const et=optionsFromArguments(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this._octaves=et.octaves,this._baseFrequency=this.toFrequency(et.baseFrequency),this._exponent=this.input=new Pow({context:this.context,value:et.exponent}),this._scale=this.output=new Scale({context:this.context,min:this._baseFrequency,max:this._baseFrequency*Math.pow(2,this._octaves)}),this._sig.chain(this._exponent,this._scale)}static getDefaults(){return Object.assign(Envelope.getDefaults(),{baseFrequency:200,exponent:1,octaves:4})}get baseFrequency(){return this._baseFrequency}set baseFrequency(et){const nt=this.toFrequency(et);assertRange(nt,0),this._baseFrequency=nt,this._scale.min=this._baseFrequency,this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(et){this._octaves=et,this._scale.max=this._baseFrequency*Math.pow(2,et)}get exponent(){return this._exponent.value}set exponent(et){this._exponent.value=et}dispose(){return super.dispose(),this._exponent.dispose(),this._scale.dispose(),this}}class MonoSynth extends Monophonic{constructor(){super(optionsFromArguments(MonoSynth.getDefaults(),arguments)),this.name="MonoSynth";const et=optionsFromArguments(MonoSynth.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign(et.oscillator,{context:this.context,detune:et.detune,onstop:()=>this.onsilence(this)})),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new Filter$1(Object.assign(et.filter,{context:this.context})),this.filterEnvelope=new FrequencyEnvelope(Object.assign(et.filterEnvelope,{context:this.context})),this.envelope=new AmplitudeEnvelope(Object.assign(et.envelope,{context:this.context})),this.oscillator.chain(this.filter,this.envelope,this.output),this.filterEnvelope.connect(this.filter.frequency),readOnly(this,["oscillator","frequency","detune","filter","filterEnvelope","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.9}),filter:Object.assign(omitFromObject(Filter$1.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{Q:1,rolloff:-12,type:"lowpass"}),filterEnvelope:Object.assign(omitFromObject(FrequencyEnvelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.6,baseFrequency:200,decay:.2,exponent:2,octaves:3,release:2,sustain:.5}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),Object.keys(Source.getDefaults())),{type:"sawtooth"})})}_triggerEnvelopeAttack(et,nt=1){if(this.envelope.triggerAttack(et,nt),this.filterEnvelope.triggerAttack(et),this.oscillator.start(et),this.envelope.sustain===0){const rt=this.toSeconds(this.envelope.attack),it=this.toSeconds(this.envelope.decay);this.oscillator.stop(et+rt+it)}}_triggerEnvelopeRelease(et){this.envelope.triggerRelease(et),this.filterEnvelope.triggerRelease(et),this.oscillator.stop(et+this.toSeconds(this.envelope.release))}getLevelAtTime(et){return et=this.toSeconds(et),this.envelope.getValueAtTime(et)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this.filterEnvelope.dispose(),this.filter.dispose(),this}}class MembraneSynth extends Synth{constructor(){super(optionsFromArguments(MembraneSynth.getDefaults(),arguments)),this.name="MembraneSynth",this.portamento=0;const et=optionsFromArguments(MembraneSynth.getDefaults(),arguments);this.pitchDecay=et.pitchDecay,this.octaves=et.octaves,readOnly(this,["oscillator","envelope"])}static getDefaults(){return deepMerge(Monophonic.getDefaults(),Synth.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(et,nt){const rt=this.toSeconds(nt),it=this.toFrequency(et instanceof FrequencyClass?et.toFrequency():et),ot=it*this.octaves;return this.oscillator.frequency.setValueAtTime(ot,rt),this.oscillator.frequency.exponentialRampToValueAtTime(it,rt+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}__decorate([range$3(0)],MembraneSynth.prototype,"octaves",void 0);__decorate([timeRange(0)],MembraneSynth.prototype,"pitchDecay",void 0);const workletContext=new Set;function addToWorklet(tt){workletContext.add(tt)}function registerProcessor(tt,et){const nt=`registerProcessor("${tt}", ${et})`;workletContext.add(nt)}const toneAudioWorkletProcessor=` /** * The base AudioWorkletProcessor for use in Tone.js. Works with the [[ToneAudioWorklet]]. */ @@ -6688,7 +6688,7 @@ void main() { return val; } } -`;registerProcessor(workletName,bitCrusherWorklet);class Merge extends ToneAudioNode{constructor(){super(optionsFromArguments(Merge.getDefaults(),arguments,["channels"])),this.name="Merge";const et=optionsFromArguments(Merge.getDefaults(),arguments,["channels"]);this._merger=this.output=this.input=this.context.createChannelMerger(et.channels)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._merger.disconnect(),this}}class Reverb extends Effect{constructor(){super(optionsFromArguments(Reverb.getDefaults(),arguments,["decay"])),this.name="Reverb",this._convolver=this.context.createConvolver(),this.ready=Promise.resolve();const et=optionsFromArguments(Reverb.getDefaults(),arguments,["decay"]);this._decay=et.decay,this._preDelay=et.preDelay,this.generate(),this.connectEffect(this._convolver)}static getDefaults(){return Object.assign(Effect.getDefaults(),{decay:1.5,preDelay:.01})}get decay(){return this._decay}set decay(et){et=this.toSeconds(et),assertRange(et,.001),this._decay=et,this.generate()}get preDelay(){return this._preDelay}set preDelay(et){et=this.toSeconds(et),assertRange(et,0),this._preDelay=et,this.generate()}generate(){return __awaiter(this,void 0,void 0,function*(){const et=this.ready,nt=new OfflineContext(2,this._decay+this._preDelay,this.context.sampleRate),rt=new Noise({context:nt}),it=new Noise({context:nt}),ot=new Merge({context:nt});rt.connect(ot,0,0),it.connect(ot,0,1);const at=new Gain({context:nt}).toDestination();ot.connect(at),rt.start(0),it.start(0),at.gain.setValueAtTime(0,0),at.gain.setValueAtTime(1,this._preDelay),at.gain.exponentialApproachValueAtTime(0,this._preDelay,this.decay);const st=nt.render();return this.ready=st.then(noOp),yield et,this._convolver.buffer=(yield st).get(),this})}dispose(){return super.dispose(),this._convolver.disconnect(),this}}class Solo extends ToneAudioNode{constructor(){super(optionsFromArguments(Solo.getDefaults(),arguments,["solo"])),this.name="Solo";const et=optionsFromArguments(Solo.getDefaults(),arguments,["solo"]);this.input=this.output=new Gain({context:this.context}),Solo._allSolos.has(this.context)||Solo._allSolos.set(this.context,new Set),Solo._allSolos.get(this.context).add(this),this.solo=et.solo}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{solo:!1})}get solo(){return this._isSoloed()}set solo(et){et?this._addSolo():this._removeSolo(),Solo._allSolos.get(this.context).forEach(nt=>nt._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Solo._soloed.has(this.context)||Solo._soloed.set(this.context,new Set),Solo._soloed.get(this.context).add(this)}_removeSolo(){Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).delete(this)}_isSoloed(){return Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).has(this)}_noSolos(){return!Solo._soloed.has(this.context)||Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Solo._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Solo._allSolos=new Map;Solo._soloed=new Map;class PanVol extends ToneAudioNode{constructor(){super(optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"])),this.name="PanVol";const et=optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"]);this._panner=this.input=new Panner({context:this.context,pan:et.pan,channelCount:et.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Volume({context:this.context,volume:et.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=et.mute,readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(et){this._volume.mute=et}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}class Channel extends ToneAudioNode{constructor(){super(optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"])),this.name="Channel";const et=optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"]);this._solo=this.input=new Solo({solo:et.solo,context:this.context}),this._panVol=this.output=new PanVol({context:this.context,pan:et.pan,volume:et.volume,mute:et.mute,channelCount:et.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(et){this._solo.solo=et}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(et){this._panVol.mute=et}_getBus(et){return Channel.buses.has(et)||Channel.buses.set(et,new Gain({context:this.context})),Channel.buses.get(et)}send(et,nt=0){const rt=this._getBus(et),it=new Gain({context:this.context,units:"decibels",gain:nt});return this.connect(it),it.connect(rt),it}receive(et){return this._getBus(et).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}}Channel.buses=new Map;class Listener extends ToneAudioNode{constructor(){super(...arguments),this.name="Listener",this.positionX=new Param({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new Param({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new Param({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new Param({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new Param({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new Param({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new Param({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new Param({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new Param({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}onContextInit(tt=>{tt.listener=new Listener({context:tt})});onContextClose(tt=>{tt.listener.dispose()});getContext().transport;const Destination=getContext().destination;getContext().destination;getContext().listener;getContext().draw;getContext();const highPassFilter=new Filter(900,"highpass"),effectsBus=new Volume(-6);effectsBus.chain(highPassFilter,Destination);const reverb=new Reverb(3).connect(effectsBus),monoSynth=new MonoSynth({envelope:{attack:0,decay:.9,sustain:.2,release:.1}});monoSynth.oscillator.type="triangle2";monoSynth.volume.value=-6;monoSynth.chain(highPassFilter,Destination);const monoSynth2=new MonoSynth({envelope:{attack:.4,decay:.9,sustain:.7,release:.6}}).connect(reverb);monoSynth2.oscillator.type="triangle";monoSynth2.volume.value=-6;monoSynth2.chain(highPassFilter,Destination);function addOrganicVariant(){return Math.floor((Math.random()-.5)*20)}let toneStarted=!1;const playInspectSound=async(tt=0)=>{toneStarted||(await start$1(),toneStarted=!0);try{if(tt>2e3)monoSynth2.triggerAttackRelease(60,.3);else if(tt>1e3){let et=310;et+=addOrganicVariant(),monoSynth.triggerAttackRelease(et,.001)}}catch(et){console.warn(et)}};let lookAtAnimationTimer,departAnimationTimer;const departAnimationTimerLength=4e3,lookAtAnimationTimerLength=2e3,useAutoNavigate=tt=>{const et=useSelectedNode(),nt=useDataStore(At=>At.cameraFocusTrigger),rt=useControlStore(At=>At.isUserDragging),it=useControlStore(At=>At.isUserScrolling),ot=useControlStore(At=>At.setUserMovedCamera),at=useDataStore(At=>At.setNearbyNodeIds),st=useDataStore(At=>At.showSelectionGraph),lt=useDataStore(At=>At.data),ct=useDataStore(At=>At.graphStyle),{camera:ut}=useThree(),[ht,dt]=reactExports.useState(!1),[pt,mt]=reactExports.useState(!1),[gt,yt]=reactExports.useState(arriveDistance),bt=reactExports.useMemo(()=>{if(st)return new Vector3(0,0,0);const At=lt==null?void 0:lt.nodes.find($t=>$t.ref_id===(et==null?void 0:et.ref_id));let Et=new Vector3(0,0,0);if(At&<){const $t=lt==null?void 0:lt.nodes.filter(wt=>{var It;return(It=At.children)==null?void 0:It.find(Ot=>Ot===wt.id)}),Dt=new Vector3(At.x,At.y,At.z);let jt=new Vector3(0,0,0);$t.map(wt=>(jt=jt.add(new Vector3(wt.x,wt.y,wt.z).normalize()),wt));const Pt=At.scale?1-1/(At.scale+10):1,Ct=Dt.sub(jt).multiplyScalar(.8*Pt);Et=Dt.add(Ct)}return Et},[st,et,lt]),vt=reactExports.useMemo(()=>{if(st)return new Vector3(0,0,0);const At=lt==null?void 0:lt.nodes.find(Et=>Et.ref_id===(et==null?void 0:et.ref_id));return new Vector3((At==null?void 0:At.x)||0,(At==null?void 0:At.y)||0,(At==null?void 0:At.z)||0)},[st,et,lt]);reactExports.useEffect(()=>{var At;st&&((At=tt.current)==null||At.setLookAt(selectionGraphCameraPosition.x,selectionGraphCameraPosition.y,selectionGraphCameraPosition.z,0,0,0,!1)),xt()},[st]),reactExports.useEffect(()=>{st?yt(selectionGraphDistance):(et==null?void 0:et.node_type)==="topic"?yt(topicArriveDistance):yt(arriveDistance)},[et,yt,st]),reactExports.useEffect(()=>{kt()},[nt]),reactExports.useEffect(()=>{(rt||it)&&(dt(!0),mt(!0))},[rt,it,dt,mt]),reactExports.useEffect(()=>{if(et)if(!st&&ct==="earth"&&(tt!=null&&tt.current)){const At=tt.current.camera.position.distanceTo(new Vector3),Et=getPointAbove(vt,-At/2);tt.current.setLookAt(Et.x,Et.y,Et.z,0,0,0,!0)}else lookAtAnimationTimer&&clearTimeout(lookAtAnimationTimer),lookAtAnimationTimer=setTimeout(()=>{mt(!0),clearTimeout(lookAtAnimationTimer)},lookAtAnimationTimerLength),xt();return()=>{lookAtAnimationTimer&&clearTimeout(lookAtAnimationTimer),departAnimationTimer&&clearTimeout(departAnimationTimer)}},[et]),useFrame(At=>{tt.current&&et&&(ht||St(bt,At.camera),pt||Tt(vt,At.camera))});const xt=()=>{if(et){const At=ut.position.distanceTo(bt);playInspectSound(At)}kt()},kt=()=>{dt(!1),mt(!1),ot(!1),departAnimationTimer&&clearTimeout(departAnimationTimer),departAnimationTimer=setTimeout(()=>{dt(!0),mt(!0)},departAnimationTimerLength)},St=(At,Et)=>{if(Et.position.distanceTo(At){var $t;($t=tt==null?void 0:tt.current)==null||$t.setLookAt(Et.position.x,Et.position.y,Et.position.z,At.x,At.y,At.z,!0)};return null},autoRotateSpeed=1;let cameraAnimation=null;const useCameraAnimations=(tt,{enabled:et})=>{const nt=useSelectedNode();useAutoNavigate(tt);const rt=useControlStore(ct=>ct.isUserDragging),it=useDataStore(ct=>ct.disableCameraRotation),ot=useDataStore(ct=>ct.data),at=useDataStore(ct=>ct.graphRadius),st=useDataStore(ct=>ct.setNearbyNodeIds);reactExports.useEffect(()=>{et||(cameraAnimation==null||cameraAnimation.kill(),cameraAnimation=null)},[et]);const lt=reactExports.useCallback(()=>{cameraAnimation==null||cameraAnimation.kill();const ct={value:-244},ut=gsapWithCSS.to(ct,{duration:5,keyframes:{"0%":{value:10},"100%":{delay:2,ease:"Power4.easeIn",value:-200}},onComplete:()=>{cameraAnimation=null},onInterrupt(){ut.kill()},onUpdate:()=>{var dt;const{value:ht}=ct;if(tt.current){const pt=getNearbyNodeIds((ot==null?void 0:ot.nodes)||[],tt.current.camera);pt&&st(pt),(dt=tt.current)==null||dt.dolly(ht,!1)}}});ut.play(),cameraAnimation=ut},[]);return reactExports.useEffect(()=>{tt.current&&at&&(tt.current.maxDistance=tt.current.getDistanceToFitSphere(at+200)),et&<()},[at]),reactExports.useEffect(()=>{!nt&&tt.current&&tt.current.setLookAt(initialCameraPosition.x,initialCameraPosition.y,initialCameraPosition.z,0,0,0,!0)},[nt]),useFrame((ct,ut)=>{tt.current&&(!it&&!rt&&(tt.current.azimuthAngle+=autoRotateSpeed*ut*MathUtils.DEG2RAD),tt.current.update(ut))}),null},Controls=({disableAnimations:tt})=>{const et=reactExports.useRef(null),nt=useDataStore(dt=>dt.graphStyle),rt=useDataStore(dt=>dt.data),it=useDataStore(dt=>dt.setNearbyNodeIds),ot=useDataStore(dt=>dt.setDisableCameraRotation),[at]=reactExports.useState(.8),{camera:st}=useThree(),[lt,ct,ut,ht]=useControlStore(dt=>[dt.isUserDragging,dt.setIsUserDragging,dt.isUserScrolling,dt.isUserScrollingOnHtmlPanel]);return useCameraAnimations(et,{enabled:!tt&&!ut&&!lt}),reactExports.useEffect(()=>{et.current&&et.current.setLookAt(initialCameraPosition.x,initialCameraPosition.y,initialCameraPosition.z,0,0,0,!0)},[nt]),reactExports.useEffect(()=>{if(!lt){const dt=getNearbyNodeIds((rt==null?void 0:rt.nodes)||[],st);dt&&it(dt)}},[st,st.position,st.position.x,st.position.y,st.position.z,rt==null?void 0:rt.nodes,it,lt]),reactExports.useEffect(()=>{lt&&ot(!0)},[lt,ot]),jsxRuntimeExports.jsx(CameraControls,{ref:et,boundaryEnclosesCamera:!0,enabled:!ht,makeDefault:!0,maxDistance:12e3,minDistance:100,onEnd:()=>ct(!1),onStart:()=>ct(!0),smoothTime:at})},smoothness={metalness:.9,roughness:0},materialOptions={...smoothness},blurryMaterial=new MeshStandardMaterial(materialOptions),BlurryInstances=({hide:tt})=>{const et=useGraphData(),nt=useDataStore(it=>it.graphStyle),rt=reactExports.useMemo(()=>et.nodes.map((it,ot)=>{if(it.node_type==="topic")return!1;const at=!isMainTopic(it),st=getNodeColorByType(it.node_type||"",!0);return jsxRuntimeExports.jsx(Instance,{color:st,name:it.id,position:[it.x,it.y,it.z],scale:at?(it.scale||1)*.9:0,userData:it},`${it.ref_id||it.id}-instanced-node-${ot}-${nt}`)}),[nt,et]);return jsxRuntimeExports.jsx(Instances,{geometry:boxGeometry,material:blurryMaterial,visible:!tt,children:rt})},loader=new TextureLoader,noImageTexture=loader.load("noimage.jpeg"),noImageMaterial=new MeshStandardMaterial({...smoothness,map:noImageTexture}),transparentValue=.4,noImageTransparentMaterial=new MeshStandardMaterial({...smoothness,map:noImageTexture,transparent:!0,opacity:transparentValue}),cachedMaterials={},useMaterial=(tt,et)=>{const[nt,rt]=reactExports.useState(noImageTexture),[it,ot]=reactExports.useState(noImageMaterial);return reactExports.useEffect(()=>{const at=`${tt}${et&&"-transparent"}`;if(cachedMaterials[at]){rt(cachedMaterials[at].texture),ot(cachedMaterials[at].material);return}loader.load(tt,st=>{const lt=new MeshStandardMaterial({map:st,transparent:et,opacity:et?transparentValue:1,...smoothness});cachedMaterials[at]={texture:st,material:lt},rt(st),ot(lt)},void 0,()=>{rt(noImageTexture),ot(et?noImageTransparentMaterial:noImageMaterial)})},[tt,et]),reactExports.useEffect(()=>function(){nt.dispose(),it.dispose()},[nt,it]),it},Cube=reactExports.memo(({node:tt,hide:et,animated:nt})=>{const rt=reactExports.useRef(null),[it]=reactExports.useState(boxGeometry),ot=useSelectedNode(),at=useDataStore(ut=>ut.showSelectionGraph),st=!!ot&&tt.ref_id===ot.ref_id,lt=useMaterial(tt.image_url||"noimage.jpeg",!1);useFrame((ut,ht)=>{nt&&rt.current&&(rt.current.position.set(tt.x,tt.y,tt.z),st&&(rt.current.rotation.y+=ht*1,rt.current.rotation.x-=ht*.6))}),reactExports.useEffect(()=>function(){it.dispose()},[it]);const ct=reactExports.useMemo(()=>at&&st?20:st?(tt.scale||1)*1.2:tt.scale,[tt,st,at]);return jsxRuntimeExports.jsx(Select,{enabled:!!st,children:jsxRuntimeExports.jsx("mesh",{ref:rt,geometry:boxGeometry,material:lt,name:tt.id,position:[tt.x,tt.y,tt.z],scale:ct,userData:tt,visible:!et})})});Cube.displayName="Cube";const TypesMapper={youtube:"video",podcast:"audio",episode:"audio",clip:"audio",tweet:"twitter",person:"person",guest:"person",twitter_space:"audio"},Avatar$1=styled$4.div` +`;registerProcessor(workletName,bitCrusherWorklet);class Merge extends ToneAudioNode{constructor(){super(optionsFromArguments(Merge.getDefaults(),arguments,["channels"])),this.name="Merge";const et=optionsFromArguments(Merge.getDefaults(),arguments,["channels"]);this._merger=this.output=this.input=this.context.createChannelMerger(et.channels)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._merger.disconnect(),this}}class Reverb extends Effect{constructor(){super(optionsFromArguments(Reverb.getDefaults(),arguments,["decay"])),this.name="Reverb",this._convolver=this.context.createConvolver(),this.ready=Promise.resolve();const et=optionsFromArguments(Reverb.getDefaults(),arguments,["decay"]);this._decay=et.decay,this._preDelay=et.preDelay,this.generate(),this.connectEffect(this._convolver)}static getDefaults(){return Object.assign(Effect.getDefaults(),{decay:1.5,preDelay:.01})}get decay(){return this._decay}set decay(et){et=this.toSeconds(et),assertRange(et,.001),this._decay=et,this.generate()}get preDelay(){return this._preDelay}set preDelay(et){et=this.toSeconds(et),assertRange(et,0),this._preDelay=et,this.generate()}generate(){return __awaiter(this,void 0,void 0,function*(){const et=this.ready,nt=new OfflineContext(2,this._decay+this._preDelay,this.context.sampleRate),rt=new Noise({context:nt}),it=new Noise({context:nt}),ot=new Merge({context:nt});rt.connect(ot,0,0),it.connect(ot,0,1);const at=new Gain({context:nt}).toDestination();ot.connect(at),rt.start(0),it.start(0),at.gain.setValueAtTime(0,0),at.gain.setValueAtTime(1,this._preDelay),at.gain.exponentialApproachValueAtTime(0,this._preDelay,this.decay);const st=nt.render();return this.ready=st.then(noOp),yield et,this._convolver.buffer=(yield st).get(),this})}dispose(){return super.dispose(),this._convolver.disconnect(),this}}class Solo extends ToneAudioNode{constructor(){super(optionsFromArguments(Solo.getDefaults(),arguments,["solo"])),this.name="Solo";const et=optionsFromArguments(Solo.getDefaults(),arguments,["solo"]);this.input=this.output=new Gain({context:this.context}),Solo._allSolos.has(this.context)||Solo._allSolos.set(this.context,new Set),Solo._allSolos.get(this.context).add(this),this.solo=et.solo}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{solo:!1})}get solo(){return this._isSoloed()}set solo(et){et?this._addSolo():this._removeSolo(),Solo._allSolos.get(this.context).forEach(nt=>nt._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Solo._soloed.has(this.context)||Solo._soloed.set(this.context,new Set),Solo._soloed.get(this.context).add(this)}_removeSolo(){Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).delete(this)}_isSoloed(){return Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).has(this)}_noSolos(){return!Solo._soloed.has(this.context)||Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Solo._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Solo._allSolos=new Map;Solo._soloed=new Map;class PanVol extends ToneAudioNode{constructor(){super(optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"])),this.name="PanVol";const et=optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"]);this._panner=this.input=new Panner({context:this.context,pan:et.pan,channelCount:et.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Volume({context:this.context,volume:et.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=et.mute,readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(et){this._volume.mute=et}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}class Channel extends ToneAudioNode{constructor(){super(optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"])),this.name="Channel";const et=optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"]);this._solo=this.input=new Solo({solo:et.solo,context:this.context}),this._panVol=this.output=new PanVol({context:this.context,pan:et.pan,volume:et.volume,mute:et.mute,channelCount:et.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(et){this._solo.solo=et}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(et){this._panVol.mute=et}_getBus(et){return Channel.buses.has(et)||Channel.buses.set(et,new Gain({context:this.context})),Channel.buses.get(et)}send(et,nt=0){const rt=this._getBus(et),it=new Gain({context:this.context,units:"decibels",gain:nt});return this.connect(it),it.connect(rt),it}receive(et){return this._getBus(et).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}}Channel.buses=new Map;class Listener extends ToneAudioNode{constructor(){super(...arguments),this.name="Listener",this.positionX=new Param({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new Param({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new Param({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new Param({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new Param({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new Param({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new Param({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new Param({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new Param({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}onContextInit(tt=>{tt.listener=new Listener({context:tt})});onContextClose(tt=>{tt.listener.dispose()});getContext().transport;const Destination=getContext().destination;getContext().destination;getContext().listener;getContext().draw;getContext();const highPassFilter=new Filter$1(900,"highpass"),effectsBus=new Volume(-6);effectsBus.chain(highPassFilter,Destination);const reverb=new Reverb(3).connect(effectsBus),monoSynth=new MonoSynth({envelope:{attack:0,decay:.9,sustain:.2,release:.1}});monoSynth.oscillator.type="triangle2";monoSynth.volume.value=-6;monoSynth.chain(highPassFilter,Destination);const monoSynth2=new MonoSynth({envelope:{attack:.4,decay:.9,sustain:.7,release:.6}}).connect(reverb);monoSynth2.oscillator.type="triangle";monoSynth2.volume.value=-6;monoSynth2.chain(highPassFilter,Destination);function addOrganicVariant(){return Math.floor((Math.random()-.5)*20)}let toneStarted=!1;const playInspectSound=async(tt=0)=>{toneStarted||(await start$1(),toneStarted=!0);try{if(tt>2e3)monoSynth2.triggerAttackRelease(60,.3);else if(tt>1e3){let et=310;et+=addOrganicVariant(),monoSynth.triggerAttackRelease(et,.001)}}catch(et){console.warn(et)}};let lookAtAnimationTimer,departAnimationTimer;const departAnimationTimerLength=4e3,lookAtAnimationTimerLength=2e3,useAutoNavigate=tt=>{const et=useSelectedNode(),nt=useDataStore(At=>At.cameraFocusTrigger),rt=useControlStore(At=>At.isUserDragging),it=useControlStore(At=>At.isUserScrolling),ot=useControlStore(At=>At.setUserMovedCamera),at=useDataStore(At=>At.setNearbyNodeIds),st=useDataStore(At=>At.showSelectionGraph),lt=useDataStore(At=>At.data),ct=useDataStore(At=>At.graphStyle),{camera:ut}=useThree(),[ht,dt]=reactExports.useState(!1),[pt,mt]=reactExports.useState(!1),[gt,yt]=reactExports.useState(arriveDistance),bt=reactExports.useMemo(()=>{if(st)return new Vector3(0,0,0);const At=lt==null?void 0:lt.nodes.find($t=>$t.ref_id===(et==null?void 0:et.ref_id));let Et=new Vector3(0,0,0);if(At&<){const $t=lt==null?void 0:lt.nodes.filter(wt=>{var It;return(It=At.children)==null?void 0:It.find(Ot=>Ot===wt.id)}),Dt=new Vector3(At.x,At.y,At.z);let jt=new Vector3(0,0,0);$t.map(wt=>(jt=jt.add(new Vector3(wt.x,wt.y,wt.z).normalize()),wt));const Pt=At.scale?1-1/(At.scale+10):1,Ct=Dt.sub(jt).multiplyScalar(.8*Pt);Et=Dt.add(Ct)}return Et},[st,et,lt]),vt=reactExports.useMemo(()=>{if(st)return new Vector3(0,0,0);const At=lt==null?void 0:lt.nodes.find(Et=>Et.ref_id===(et==null?void 0:et.ref_id));return new Vector3((At==null?void 0:At.x)||0,(At==null?void 0:At.y)||0,(At==null?void 0:At.z)||0)},[st,et,lt]);reactExports.useEffect(()=>{var At;st&&((At=tt.current)==null||At.setLookAt(selectionGraphCameraPosition.x,selectionGraphCameraPosition.y,selectionGraphCameraPosition.z,0,0,0,!1)),xt()},[st]),reactExports.useEffect(()=>{st?yt(selectionGraphDistance):(et==null?void 0:et.node_type)==="topic"?yt(topicArriveDistance):yt(arriveDistance)},[et,yt,st]),reactExports.useEffect(()=>{kt()},[nt]),reactExports.useEffect(()=>{(rt||it)&&(dt(!0),mt(!0))},[rt,it,dt,mt]),reactExports.useEffect(()=>{if(et)if(!st&&ct==="earth"&&(tt!=null&&tt.current)){const At=tt.current.camera.position.distanceTo(new Vector3),Et=getPointAbove(vt,-At/2);tt.current.setLookAt(Et.x,Et.y,Et.z,0,0,0,!0)}else lookAtAnimationTimer&&clearTimeout(lookAtAnimationTimer),lookAtAnimationTimer=setTimeout(()=>{mt(!0),clearTimeout(lookAtAnimationTimer)},lookAtAnimationTimerLength),xt();return()=>{lookAtAnimationTimer&&clearTimeout(lookAtAnimationTimer),departAnimationTimer&&clearTimeout(departAnimationTimer)}},[et]),useFrame(At=>{tt.current&&et&&(ht||St(bt,At.camera),pt||Tt(vt,At.camera))});const xt=()=>{if(et){const At=ut.position.distanceTo(bt);playInspectSound(At)}kt()},kt=()=>{dt(!1),mt(!1),ot(!1),departAnimationTimer&&clearTimeout(departAnimationTimer),departAnimationTimer=setTimeout(()=>{dt(!0),mt(!0)},departAnimationTimerLength)},St=(At,Et)=>{if(Et.position.distanceTo(At){var $t;($t=tt==null?void 0:tt.current)==null||$t.setLookAt(Et.position.x,Et.position.y,Et.position.z,At.x,At.y,At.z,!0)};return null},autoRotateSpeed=1;let cameraAnimation=null;const useCameraAnimations=(tt,{enabled:et})=>{const nt=useSelectedNode();useAutoNavigate(tt);const rt=useControlStore(ct=>ct.isUserDragging),it=useDataStore(ct=>ct.disableCameraRotation),ot=useDataStore(ct=>ct.data),at=useDataStore(ct=>ct.graphRadius),st=useDataStore(ct=>ct.setNearbyNodeIds);reactExports.useEffect(()=>{et||(cameraAnimation==null||cameraAnimation.kill(),cameraAnimation=null)},[et]);const lt=reactExports.useCallback(()=>{cameraAnimation==null||cameraAnimation.kill();const ct={value:-244},ut=gsapWithCSS.to(ct,{duration:5,keyframes:{"0%":{value:10},"100%":{delay:2,ease:"Power4.easeIn",value:-200}},onComplete:()=>{cameraAnimation=null},onInterrupt(){ut.kill()},onUpdate:()=>{var dt;const{value:ht}=ct;if(tt.current){const pt=getNearbyNodeIds((ot==null?void 0:ot.nodes)||[],tt.current.camera);pt&&st(pt),(dt=tt.current)==null||dt.dolly(ht,!1)}}});ut.play(),cameraAnimation=ut},[]);return reactExports.useEffect(()=>{tt.current&&at&&(tt.current.maxDistance=tt.current.getDistanceToFitSphere(at+200)),et&<()},[at]),reactExports.useEffect(()=>{!nt&&tt.current&&tt.current.setLookAt(initialCameraPosition.x,initialCameraPosition.y,initialCameraPosition.z,0,0,0,!0)},[nt]),useFrame((ct,ut)=>{tt.current&&(!it&&!rt&&(tt.current.azimuthAngle+=autoRotateSpeed*ut*MathUtils.DEG2RAD),tt.current.update(ut))}),null},Controls=({disableAnimations:tt})=>{const et=reactExports.useRef(null),nt=useDataStore(dt=>dt.graphStyle),rt=useDataStore(dt=>dt.data),it=useDataStore(dt=>dt.setNearbyNodeIds),ot=useDataStore(dt=>dt.setDisableCameraRotation),[at]=reactExports.useState(.8),{camera:st}=useThree(),[lt,ct,ut,ht]=useControlStore(dt=>[dt.isUserDragging,dt.setIsUserDragging,dt.isUserScrolling,dt.isUserScrollingOnHtmlPanel]);return useCameraAnimations(et,{enabled:!tt&&!ut&&!lt}),reactExports.useEffect(()=>{et.current&&et.current.setLookAt(initialCameraPosition.x,initialCameraPosition.y,initialCameraPosition.z,0,0,0,!0)},[nt]),reactExports.useEffect(()=>{if(!lt){const dt=getNearbyNodeIds((rt==null?void 0:rt.nodes)||[],st);dt&&it(dt)}},[st,st.position,st.position.x,st.position.y,st.position.z,rt==null?void 0:rt.nodes,it,lt]),reactExports.useEffect(()=>{lt&&ot(!0)},[lt,ot]),jsxRuntimeExports.jsx(CameraControls,{ref:et,boundaryEnclosesCamera:!0,enabled:!ht,makeDefault:!0,maxDistance:12e3,minDistance:100,onEnd:()=>ct(!1),onStart:()=>ct(!0),smoothTime:at})},smoothness={metalness:.9,roughness:0},materialOptions={...smoothness},blurryMaterial=new MeshStandardMaterial(materialOptions),BlurryInstances=({hide:tt})=>{const et=useGraphData(),nt=useDataStore(it=>it.graphStyle),rt=reactExports.useMemo(()=>et.nodes.map((it,ot)=>{if(it.node_type==="topic")return!1;const at=!isMainTopic(it),st=getNodeColorByType(it.node_type||"",!0);return jsxRuntimeExports.jsx(Instance,{color:st,name:it.id,position:[it.x,it.y,it.z],scale:at?(it.scale||1)*.9:0,userData:it},`${it.ref_id||it.id}-instanced-node-${ot}-${nt}`)}),[nt,et]);return jsxRuntimeExports.jsx(Instances,{geometry:boxGeometry,material:blurryMaterial,visible:!tt,children:rt})},loader=new TextureLoader,noImageTexture=loader.load("noimage.jpeg"),noImageMaterial=new MeshStandardMaterial({...smoothness,map:noImageTexture}),transparentValue=.4,noImageTransparentMaterial=new MeshStandardMaterial({...smoothness,map:noImageTexture,transparent:!0,opacity:transparentValue}),cachedMaterials={},useMaterial=(tt,et)=>{const[nt,rt]=reactExports.useState(noImageTexture),[it,ot]=reactExports.useState(noImageMaterial);return reactExports.useEffect(()=>{const at=`${tt}${et&&"-transparent"}`;if(cachedMaterials[at]){rt(cachedMaterials[at].texture),ot(cachedMaterials[at].material);return}loader.load(tt,st=>{const lt=new MeshStandardMaterial({map:st,transparent:et,opacity:et?transparentValue:1,...smoothness});cachedMaterials[at]={texture:st,material:lt},rt(st),ot(lt)},void 0,()=>{rt(noImageTexture),ot(et?noImageTransparentMaterial:noImageMaterial)})},[tt,et]),reactExports.useEffect(()=>function(){nt.dispose(),it.dispose()},[nt,it]),it},Cube=reactExports.memo(({node:tt,hide:et,animated:nt})=>{const rt=reactExports.useRef(null),[it]=reactExports.useState(boxGeometry),ot=useSelectedNode(),at=useDataStore(ut=>ut.showSelectionGraph),st=!!ot&&tt.ref_id===ot.ref_id,lt=useMaterial(tt.image_url||"noimage.jpeg",!1);useFrame((ut,ht)=>{nt&&rt.current&&(rt.current.position.set(tt.x,tt.y,tt.z),st&&(rt.current.rotation.y+=ht*1,rt.current.rotation.x-=ht*.6))}),reactExports.useEffect(()=>function(){it.dispose()},[it]);const ct=reactExports.useMemo(()=>at&&st?20:st?(tt.scale||1)*1.2:tt.scale,[tt,st,at]);return jsxRuntimeExports.jsx(Select,{enabled:!!st,children:jsxRuntimeExports.jsx("mesh",{ref:rt,geometry:boxGeometry,material:lt,name:tt.id,position:[tt.x,tt.y,tt.z],scale:ct,userData:tt,visible:!et})})});Cube.displayName="Cube";const TypesMapper={youtube:"video",podcast:"audio",episode:"audio",clip:"audio",tweet:"twitter",person:"person",guest:"person",twitter_space:"audio"},Avatar$1=styled$4.div` background-image: ${({src:tt,type:et="audio"})=>`url(${tt}), url('/${TypesMapper[et]}_placeholder_img.png')`}; background-size: contain; background-repeat: no-repeat; @@ -6816,7 +6816,7 @@ void main() { font-weight: 500; border-radius: 6px; margin-right: 5px; -`;const variableVector3=new Vector3,NodeBadge=({position:tt,userData:et,color:nt})=>{const rt=reactExports.useRef(null),[it,ot]=useDataStore(pt=>[pt.selectedNode,pt.setSelectedNode]),at=useDataStore(pt=>pt.setHoveredNode),st=useDataStore(pt=>pt.hoveredNode),lt=useDataStore(pt=>pt.showSelectionGraph),ct=((et==null?void 0:et.node_type)||"")==="topic",ut=((et==null?void 0:et.node_type)||"")==="guest"||((et==null?void 0:et.node_type)||"")==="person";useFrame(()=>{if(lt&&rt.current){const pt=variableVector3.set((et==null?void 0:et.x)||0,(et==null?void 0:et.y)||0,(et==null?void 0:et.z)||0);rt.current.position.copy(pt)}}),reactExports.useEffect(()=>function(){rt.current&&rt.current.clear()},[rt]);const ht=reactExports.useMemo(()=>(st==null?void 0:st.ref_id)===(et==null?void 0:et.ref_id),[st==null?void 0:st.ref_id,et==null?void 0:et.ref_id]),dt=(it==null?void 0:it.ref_id)===(et==null?void 0:et.ref_id);return dt&<||!dt?jsxRuntimeExports.jsx("group",{ref:rt,position:tt,children:jsxRuntimeExports.jsx(Html$1,{center:!0,sprite:!0,children:jsxRuntimeExports.jsxs(Tag,{className:clsx$1(et==null?void 0:et.node_type,{selected:dt}),color:nt,fontColor:colors.white,fontSize:ct?14:20,onClick:pt=>{pt.stopPropagation(),et&&ot(et)},onPointerOut:pt=>{pt.stopPropagation(),at(null)},onPointerOver:pt=>{pt.stopPropagation(),at(et||null)},scale:ht?1.05:1,selected:!1,size:dt?100:68,type:(et==null?void 0:et.node_type)||"",children:[!ut&&!ct?jsxRuntimeExports.jsx("div",{className:"badge-wrapper",children:jsxRuntimeExports.jsx(TypeBadge,{type:(et==null?void 0:et.node_type)||""})}):null,ct?et==null?void 0:et.label:jsxRuntimeExports.jsx(Avatar$1,{rounded:ut,size:dt?60:52,src:(et==null?void 0:et.image_url)||"audio_default.svg",type:et==null?void 0:et.node_type})]})})}):null},RelevanceBadges=reactExports.memo(()=>{const tt=useDataStore(at=>at.data),et=useSelectedNode(),nt=useDataStore(at=>at.showSelectionGraph),rt=useDataStore(at=>at.selectionGraphData),it=useDataStore(at=>at.selectedNodeRelativeIds),ot=reactExports.useMemo(()=>(nt?rt.nodes:(tt==null?void 0:tt.nodes)||[]).filter(lt=>it.includes((lt==null?void 0:lt.ref_id)||"")||(et==null?void 0:et.ref_id)===(lt==null?void 0:lt.ref_id)).map(lt=>{const ct=getNodeColorByType(lt.node_type||"",!0),ut=new Vector3((lt==null?void 0:lt.x)||0,(lt==null?void 0:lt.y)||0,(lt==null?void 0:lt.z)||0),ht=((tt==null?void 0:tt.nodes)||[]).filter(dt=>dt.ref_id&&nodesAreRelatives(dt,lt)).map(dt=>(dt==null?void 0:dt.ref_id)||"")||[];return jsxRuntimeExports.jsx(NodeBadge,{color:ct,position:ut,relativeIds:ht,userData:lt},`node-badge-${lt.ref_id}`)}),[it,tt==null?void 0:tt.nodes,nt,rt,et]);return jsxRuntimeExports.jsx(reactExports.Fragment,{children:ot.length?ot:null},"node-badges")});RelevanceBadges.displayName="RelevanceBadges";const Segment=({link:tt,animated:et})=>{const nt=reactExports.useRef(null),rt=useSelectedNode(),[it,ot]=reactExports.useState(new Vector3(0,0,0)),[at,st]=reactExports.useState(new Vector3(0,0,0)),[lt,ct]=reactExports.useState(8947848),ut=useDataStore(ht=>ht.selectionGraphData);return reactExports.useEffect(()=>{var pt,mt,gt,yt,bt,vt;const ht=(rt==null?void 0:rt.ref_id)||"",dt=rt&&(ht===tt.targetRef||ht===tt.sourceRef);!tt.onlyVisibleOnSelect||dt?(ot(new Vector3(((pt=tt.sourcePosition)==null?void 0:pt.x)||0,((mt=tt.sourcePosition)==null?void 0:mt.y)||0,((gt=tt.sourcePosition)==null?void 0:gt.z)||0)),st(new Vector3(((yt=tt.targetPosition)==null?void 0:yt.x)||0,((bt=tt.targetPosition)==null?void 0:bt.y)||0,((vt=tt.targetPosition)==null?void 0:vt.z)||0))):(ot(new Vector3(0,0,0)),st(new Vector3(0,0,0))),ct(dt?tt.color||NODE_RELATIVE_HIGHLIGHT_COLORS.children.segmentColor:rt?5592405:8947848)},[rt,tt]),useFrame(()=>{if(et&&nt.current){const ht=ut.nodes.find(pt=>pt.ref_id===tt.sourceRef),dt=ut.nodes.find(pt=>pt.ref_id===tt.targetRef);nt.current.start.set((ht==null?void 0:ht.x)||0,(ht==null?void 0:ht.y)||0,(ht==null?void 0:ht.z)||0),nt.current.end.set((dt==null?void 0:dt.x)||0,(dt==null?void 0:dt.y)||0,(dt==null?void 0:dt.z)||0)}}),jsxRuntimeExports.jsx(Segment$1,{ref:nt,color:"0xFFFFFF",end:at,start:it})},fontProps={font:"/fonts/Inter-Bold.woff",characters:"abcdefghijklmnopqrstuvwxyz0123456789!",fontSize:2,letterSpacing:-.05,lineHeight:1,"material-toneMapped":!1},TextNode=reactExports.memo(({node:tt,hide:et})=>{const nt=reactExports.useRef(null),rt=useSelectedNode(),ot=useDataStore(ut=>ut.selectedNodeRelativeIds).includes((tt==null?void 0:tt.ref_id)||""),at=!!rt&&(rt==null?void 0:rt.id)===tt.id,st=useDataStore(ut=>ut.showSelectionGraph);useFrame(({camera:ut})=>{nt!=null&&nt.current&&(nt.current.quaternion.copy(ut.quaternion),st&&nt.current.position.set(tt.x,tt.y,tt.z))});const lt=reactExports.useMemo(()=>{let ut=(tt.scale||1)*4;return st&&at?ut=40:!at&&ot&&(ut=0),ut},[tt.scale,at,ot,st]),ct=reactExports.useMemo(()=>rt&&rt.node_type==="topic"&&!at?.2:1,[at,rt]);return jsxRuntimeExports.jsx(Text$1,{ref:nt,anchorX:"center",anchorY:"middle",color:colors.white,fillOpacity:ct,position:[tt.x,tt.y,tt.z],scale:lt,userData:tt,visible:!et,...fontProps,children:tt.label})});TextNode.displayName="TextNode";let simulation2d=null;const SelectionDataNodes=reactExports.memo(()=>{const tt=useGraphData(),et=useSelectedNode(),nt=useDataStore(ot=>ot.selectedNodeRelativeIds),rt=useDataStore(ot=>ot.selectionGraphData),it=useDataStore(ot=>ot.setSelectionData);return reactExports.useEffect(()=>{const ot=tt.nodes.filter(st=>st.ref_id===(et==null?void 0:et.ref_id)||nt.includes((st==null?void 0:st.ref_id)||"")).map(st=>{const lt=st.ref_id===(et==null?void 0:et.ref_id)&&st.node_type!=="topic"?{fx:0,fy:0,fz:0}:{};return{...st,x:0,y:0,z:0,...lt}}),at=generateLinksFromNodeData(ot,!1,!1);it({nodes:ot,links:at})},[tt,et,nt,it]),reactExports.useEffect(()=>{simulation2d=runForceSimulation(rt.nodes,rt.links,{numDimensions:2,forceLinkStrength:.01,forceCenterStrength:.85,forceChargeStrength:-20,velocityDecay:.9})},[rt]),useFrame(()=>{simulation2d&&simulation2d.tick()}),jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[rt==null?void 0:rt.nodes.map(ot=>ot.node_type==="topic"?jsxRuntimeExports.jsx(TextNode,{hide:!0,node:ot},`${ot.ref_id||ot.id}-compact`):jsxRuntimeExports.jsx(Cube,{animated:!0,hide:!0,node:ot},`${ot.ref_id||ot.id}-compact`)),jsxRuntimeExports.jsx(Segments,{fog:!0,lineWidth:.9,children:(rt==null?void 0:rt.links).map((ot,at)=>jsxRuntimeExports.jsx(Segment,{animated:!0,link:ot},at.toString()))},`selection-links-${rt==null?void 0:rt.links.length}`)]})});SelectionDataNodes.displayName="SelectionDataNodes";const Cubes=reactExports.memo(()=>{const tt=useGraphData(),et=useSelectedNode(),nt=useDataStore(dt=>dt.nearbyNodeIds),rt=useDataStore(dt=>dt.setHoveredNode),it=useDataStore(dt=>dt.showSelectionGraph),ot=useDataStore(dt=>dt.selectionGraphData),at=useAppStore(dt=>dt.setTranscriptOpen),st=reactExports.useCallback(dt=>!!(it&&!ot.nodes.find(pt=>pt.ref_id===dt.ref_id)),[it,ot]),lt=reactExports.useCallback(dt=>{const pt=dt==null?void 0:dt[0];pt&&(at(!1),pt.userData&&(st(pt.userData)||useDataStore.getState().setSelectedNode((pt==null?void 0:pt.userData)||null)))},[at,st]),ct=reactExports.useCallback(dt=>{dt.stopPropagation(),rt(null)},[rt]),ut=reactExports.useCallback(dt=>{var gt;const mt=dt.intersections.map(yt=>yt.object)[0];if((gt=mt==null?void 0:mt.userData)!=null&>.ref_id){const yt=mt.userData;st(yt)||(dt.stopPropagation(),rt(yt))}},[rt,st]),ht=it&&!!et;return jsxRuntimeExports.jsxs(Select$1,{filter:dt=>dt.filter(pt=>{var mt;return!!((mt=pt.userData)!=null&&mt.id)}),onChange:lt,onPointerOut:ct,onPointerOver:ut,children:[jsxRuntimeExports.jsx(BlurryInstances,{hide:ht}),tt.nodes.filter(dt=>{const pt=(dt==null?void 0:dt.ref_id)===(et==null?void 0:et.ref_id);return nt.includes(dt.ref_id||"")||isMainTopic(dt)||pt}).map(dt=>dt.node_type==="topic"?jsxRuntimeExports.jsx(TextNode,{hide:ht,node:dt},dt.ref_id||dt.id):jsxRuntimeExports.jsx(Cube,{hide:ht,node:dt},dt.ref_id||dt.id)),ht&&jsxRuntimeExports.jsx(SelectionDataNodes,{}),jsxRuntimeExports.jsx(RelevanceBadges,{})]})});Cubes.displayName="Cubes";const defaultData$4={earthRef:null},useRefStore=react(tt=>({...defaultData$4,setEarthRef:et=>tt({earthRef:et})})),getCurvedLineFromStartAndEnd=(tt,et)=>{const nt=new Quaternion().setFromUnitVectors(new Vector3(0,1,0),tt.clone().normalize()),rt=new Quaternion().setFromUnitVectors(new Vector3(0,1,0),et.clone().normalize()),it=new Quaternion,ot=50,at=[];for(let lt=0;lt<=ot;lt+=1){const ct=lt/ot;it.slerpQuaternions(nt,rt,ct);const ut=new Vector3(0,1,0).applyQuaternion(it).multiplyScalar(EARTH_RADIUS+EARTH_DATA_PADDING);at.push(ut)}return new CatmullRomCurve3(at).getPoints(ot)},CurvedLine=({link:tt})=>{const et=useSelectedNode(),[nt,rt]=reactExports.useState(8947848);reactExports.useEffect(()=>{const ot=(et==null?void 0:et.ref_id)||"",at=et&&(ot===tt.targetRef||ot===tt.sourceRef);rt(at?tt.color||NODE_RELATIVE_HIGHLIGHT_COLORS.children.segmentColor:et?5592405:8947848)},[et,tt]);const it=reactExports.useMemo(()=>{var ct,ut,ht,dt,pt,mt;const ot=(et==null?void 0:et.ref_id)||"",at=et&&(ot===tt.targetRef||ot===tt.sourceRef);if(!(!tt.onlyVisibleOnSelect||at))return[];const st=new Vector3(((ct=tt.sourcePosition)==null?void 0:ct.x)||0,((ut=tt.sourcePosition)==null?void 0:ut.y)||0,((ht=tt.sourcePosition)==null?void 0:ht.z)||0),lt=new Vector3(((dt=tt.targetPosition)==null?void 0:dt.x)||0,((pt=tt.targetPosition)==null?void 0:pt.y)||0,((mt=tt.targetPosition)==null?void 0:mt.z)||0);return getCurvedLineFromStartAndEnd(st,lt)},[tt,et]);return it.length?jsxRuntimeExports.jsx(Line$1,{color:nt,dashed:!1,lineWidth:3,points:it}):null},center$1=new Vector3(0,0,0),Earth=()=>{const tt=reactExports.useRef(null),et=reactExports.useRef(null),nt=useDataStore(lt=>lt.graphStyle),rt=useDataStore(lt=>lt.showSelectionGraph),it=useDataStore(lt=>lt.data),ot=useRefStore(lt=>lt.setEarthRef),at=useTexture("textures/earth/galaxy.png"),st=useTexture("textures/earth/clouds.png");return useFrame(({camera:lt})=>{et.current&&et.current.position.copy(lt.getWorldPosition(center$1))}),reactExports.useLayoutEffect(()=>{tt.current&&ot(tt)},[ot]),nt!=="earth"||rt?null:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("mesh",{ref:tt,userData:{type:"earth"},children:[jsxRuntimeExports.jsx("sphereGeometry",{args:[EARTH_RADIUS,200,200]}),jsxRuntimeExports.jsx(EarthMaterial,{})]}),jsxRuntimeExports.jsxs("mesh",{children:[jsxRuntimeExports.jsx("sphereGeometry",{args:[EARTH_RADIUS+2,200,200]}),jsxRuntimeExports.jsx("meshStandardMaterial",{alphaMap:st,map:st,transparent:!0})]}),jsxRuntimeExports.jsxs("mesh",{children:[jsxRuntimeExports.jsx("sphereGeometry",{args:[EARTH_RADIUS*4,200,200]}),jsxRuntimeExports.jsx("meshStandardMaterial",{map:at,opacity:.4,side:DoubleSide,transparent:!0})]}),jsxRuntimeExports.jsx("directionalLight",{ref:et,intensity:.9,position:[0,0,EARTH_RADIUS*3]}),it==null?void 0:it.links.map((lt,ct)=>jsxRuntimeExports.jsx(CurvedLine,{link:lt},`curved-${ct}`))]})},EarthMaterial=()=>{const tt=useTexture("textures/earth/earth.jpeg"),et=useTexture("textures/earth/bump.jpeg"),nt=useTexture("textures/earth/water.png"),rt=reactExports.useMemo(()=>new MeshStandardMaterial({map:tt,bumpMap:et,aoMap:et,roughnessMap:et,metalnessMap:nt,toneMapped:!0,roughness:35,metalness:0}),[tt,et,nt]);return jsxRuntimeExports.jsx("meshStandardMaterial",{...rt})},particleCount=2e3,radiusLimit=UNIVERSE_SCALE*4,colorsArray=Object.values(DATA_COLOR_PALETTE).map(tt=>tt),Particles=()=>{const tt=reactExports.useRef(null);useFrame(()=>{var at,st,lt;const it=((at=tt.current)==null?void 0:at.geometry.getAttribute("position")).array,ot=((st=tt.current)==null?void 0:st.geometry.getAttribute("velocity")).array;if(it&&ot){for(let ct=0;ctradiusLimit*radiusLimit){const vt=Math.random()*Math.PI*2,xt=Math.random()*Math.PI*2,kt=Math.random()*radiusLimit;it[ct]=Math.sin(vt)*Math.cos(xt)*kt,it[ct+1]=Math.sin(vt)*Math.sin(xt)*kt,it[ct+2]=Math.cos(vt)*kt}}((lt=tt.current)==null?void 0:lt.geometry.getAttribute("position")).needsUpdate=!0}});const et=reactExports.useMemo(()=>new Float32Array(particleCount*3),[]),nt=reactExports.useMemo(()=>new Float32Array(particleCount*3),[]);reactExports.useEffect(()=>{const it=radiusLimit;for(let ot=0;ot{rt.current&&tt.current&&(rt.current.setAttribute("position",new BufferAttribute(et,3)),rt.current.setAttribute("velocity",new BufferAttribute(nt,3)),tt.current.geometry=rt.current)},[et,nt]),reactExports.useEffect(()=>{if(rt.current){const it=[];for(let ot=0;ot({close:{backgroundColor:"rgba(48, 51, 66, 1)",borderColor:"#fff",fontColor:"rgba(255, 255, 255, 1)"},focus:{backgroundColor:tt?"rgba(255, 255, 255, 0.90);":"rgba(255, 255, 255, 0.90)",borderColor:tt?"#FFDB58bb":"#fff",fontColor:"rgba(48, 51, 66, 1)"},menu:{backgroundColor:"#00000066",borderColor:tt?"#ffffff66":"#5078f2",fontColor:tt?"#ffffff66":"#fff"}}),reuseableVector3=new Vector3,NodeControls=reactExports.memo(()=>{const tt=reactExports.useRef(null),et=useAppStore(ut=>ut.setSidebarOpen),nt=useDataStore(ut=>ut.showSelectionGraph),rt=useDataStore(ut=>ut.selectionGraphData),it=useDataStore(ut=>ut.data),ot=useSelectedNode(),at=useDataStore(ut=>ut.setSelectedNode),st=useDataStore(ut=>ut.setShowSelectionGraph);useFrame(()=>{lt()});const lt=reactExports.useCallback(()=>{const ut=nt?rt:it;if(tt.current){const ht=ut==null?void 0:ut.nodes.find(dt=>dt.ref_id===(ot==null?void 0:ot.ref_id));if(ht){const dt=reuseableVector3.set(ht==null?void 0:ht.x,ht==null?void 0:ht.y,ht==null?void 0:ht.z);tt.current.position.copy(dt)}}},[ot,nt,rt,it]),ct=reactExports.useMemo(()=>[{key:"control-key-1",colors:buttonColors(nt).focus,icon:jsxRuntimeExports.jsx(MdViewInAr,{}),left:10,className:"expand",onClick:()=>{const ut=!nt;st(ut),ut&&et(!0)}},{key:"control-key-2",colors:buttonColors(!0).close,icon:jsxRuntimeExports.jsx(MdClose,{}),left:40,className:"exit",onClick:()=>{at(null),st(!1)}}],[st,at,et,nt]);return ot?jsxRuntimeExports.jsx("group",{ref:tt,children:jsxRuntimeExports.jsx(Html$1,{center:!0,className:"control-panel",onClick:ut=>ut.stopPropagation(),onKeyDown:ut=>ut.stopPropagation(),onPointerDown:ut=>ut.stopPropagation(),onPointerOut:ut=>ut.stopPropagation(),onPointerOver:ut=>ut.stopPropagation(),onPointerUp:ut=>ut.stopPropagation(),sprite:!0,zIndexRange:[16777271,16777272],children:ct.map(ut=>jsxRuntimeExports.jsx(IconButton,{backgroundColor:ut.colors.backgroundColor,borderColor:ut.colors.borderColor,className:ut.className,fontColor:ut.colors.fontColor,left:ut.left,onClick:ht=>{ht.stopPropagation(),ut.onClick()},children:ut.icon},ut.key))})}):null});NodeControls.displayName="NodeControls";const IconButton=styled$4.div` +`;const variableVector3=new Vector3,NodeBadge=({position:tt,userData:et,color:nt})=>{const rt=reactExports.useRef(null),[it,ot]=useDataStore(pt=>[pt.selectedNode,pt.setSelectedNode]),at=useDataStore(pt=>pt.setHoveredNode),st=useDataStore(pt=>pt.hoveredNode),lt=useDataStore(pt=>pt.showSelectionGraph),ct=((et==null?void 0:et.node_type)||"")==="topic",ut=((et==null?void 0:et.node_type)||"")==="guest"||((et==null?void 0:et.node_type)||"")==="person";useFrame(()=>{if(lt&&rt.current){const pt=variableVector3.set((et==null?void 0:et.x)||0,(et==null?void 0:et.y)||0,(et==null?void 0:et.z)||0);rt.current.position.copy(pt)}}),reactExports.useEffect(()=>function(){rt.current&&rt.current.clear()},[rt]);const ht=reactExports.useMemo(()=>(st==null?void 0:st.ref_id)===(et==null?void 0:et.ref_id),[st==null?void 0:st.ref_id,et==null?void 0:et.ref_id]),dt=(it==null?void 0:it.ref_id)===(et==null?void 0:et.ref_id);return dt&<||!dt?jsxRuntimeExports.jsx("group",{ref:rt,position:tt,children:jsxRuntimeExports.jsx(Html$1,{center:!0,sprite:!0,children:jsxRuntimeExports.jsxs(Tag,{className:clsx$1(et==null?void 0:et.node_type,{selected:dt}),color:nt,fontColor:colors.white,fontSize:ct?14:20,onClick:pt=>{pt.stopPropagation(),et&&ot(et)},onPointerOut:pt=>{pt.stopPropagation(),at(null)},onPointerOver:pt=>{pt.stopPropagation(),at(et||null)},scale:ht?1.05:1,selected:!1,size:dt?100:68,type:(et==null?void 0:et.node_type)||"",children:[!ut&&!ct?jsxRuntimeExports.jsx("div",{className:"badge-wrapper",children:jsxRuntimeExports.jsx(TypeBadge,{type:(et==null?void 0:et.node_type)||""})}):null,ct?et==null?void 0:et.label:jsxRuntimeExports.jsx(Avatar$1,{rounded:ut,size:dt?60:52,src:(et==null?void 0:et.image_url)||"audio_default.svg",type:et==null?void 0:et.node_type})]})})}):null},RelevanceBadges=reactExports.memo(()=>{const tt=useDataStore(at=>at.data),et=useSelectedNode(),nt=useDataStore(at=>at.showSelectionGraph),rt=useDataStore(at=>at.selectionGraphData),it=useDataStore(at=>at.selectedNodeRelativeIds),ot=reactExports.useMemo(()=>(nt?rt.nodes:(tt==null?void 0:tt.nodes)||[]).filter(ct=>it.includes((ct==null?void 0:ct.ref_id)||"")||(et==null?void 0:et.ref_id)===(ct==null?void 0:ct.ref_id)).slice(0,maxChildrenDisplayed).map(ct=>{const ut=getNodeColorByType(ct.node_type||"",!0),ht=new Vector3((ct==null?void 0:ct.x)||0,(ct==null?void 0:ct.y)||0,(ct==null?void 0:ct.z)||0),dt=((tt==null?void 0:tt.nodes)||[]).filter(pt=>pt.ref_id&&nodesAreRelatives(pt,ct)).map(pt=>(pt==null?void 0:pt.ref_id)||"")||[];return jsxRuntimeExports.jsx(NodeBadge,{color:ut,position:ht,relativeIds:dt,userData:ct},`node-badge-${ct.ref_id}`)}),[it,tt==null?void 0:tt.nodes,nt,rt,et]);return jsxRuntimeExports.jsx(reactExports.Fragment,{children:ot.length?ot:null},"node-badges")});RelevanceBadges.displayName="RelevanceBadges";const Segment=({link:tt,animated:et})=>{const nt=reactExports.useRef(null),rt=useSelectedNode(),[it,ot]=reactExports.useState(new Vector3(0,0,0)),[at,st]=reactExports.useState(new Vector3(0,0,0)),[lt,ct]=reactExports.useState(8947848),ut=useDataStore(ht=>ht.selectionGraphData);return reactExports.useEffect(()=>{var pt,mt,gt,yt,bt,vt;const ht=(rt==null?void 0:rt.ref_id)||"",dt=rt&&(ht===tt.targetRef||ht===tt.sourceRef);!tt.onlyVisibleOnSelect||dt?(ot(new Vector3(((pt=tt.sourcePosition)==null?void 0:pt.x)||0,((mt=tt.sourcePosition)==null?void 0:mt.y)||0,((gt=tt.sourcePosition)==null?void 0:gt.z)||0)),st(new Vector3(((yt=tt.targetPosition)==null?void 0:yt.x)||0,((bt=tt.targetPosition)==null?void 0:bt.y)||0,((vt=tt.targetPosition)==null?void 0:vt.z)||0))):(ot(new Vector3(0,0,0)),st(new Vector3(0,0,0))),ct(dt?tt.color||NODE_RELATIVE_HIGHLIGHT_COLORS.children.segmentColor:rt?5592405:8947848)},[rt,tt]),useFrame(()=>{if(et&&nt.current){const ht=ut.nodes.find(pt=>pt.ref_id===tt.sourceRef),dt=ut.nodes.find(pt=>pt.ref_id===tt.targetRef);nt.current.start.set((ht==null?void 0:ht.x)||0,(ht==null?void 0:ht.y)||0,(ht==null?void 0:ht.z)||0),nt.current.end.set((dt==null?void 0:dt.x)||0,(dt==null?void 0:dt.y)||0,(dt==null?void 0:dt.z)||0)}}),jsxRuntimeExports.jsx(Segment$1,{ref:nt,color:"0xFFFFFF",end:at,start:it})},fontProps={font:"/fonts/Inter-Bold.woff",characters:"abcdefghijklmnopqrstuvwxyz0123456789!",fontSize:2,letterSpacing:-.05,lineHeight:1,"material-toneMapped":!1},TextNode=reactExports.memo(({node:tt,hide:et})=>{const nt=reactExports.useRef(null),rt=useSelectedNode(),ot=useDataStore(ut=>ut.selectedNodeRelativeIds).includes((tt==null?void 0:tt.ref_id)||""),at=!!rt&&(rt==null?void 0:rt.id)===tt.id,st=useDataStore(ut=>ut.showSelectionGraph);useFrame(({camera:ut})=>{nt!=null&&nt.current&&(nt.current.quaternion.copy(ut.quaternion),st&&nt.current.position.set(tt.x,tt.y,tt.z))});const lt=reactExports.useMemo(()=>{let ut=(tt.scale||1)*4;return st&&at?ut=40:!at&&ot&&(ut=0),ut},[tt.scale,at,ot,st]),ct=reactExports.useMemo(()=>rt&&rt.node_type==="topic"&&!at?.2:1,[at,rt]);return jsxRuntimeExports.jsx(Text$1,{ref:nt,anchorX:"center",anchorY:"middle",color:colors.white,fillOpacity:ct,position:[tt.x,tt.y,tt.z],scale:lt,userData:tt,visible:!et,...fontProps,children:tt.label})});TextNode.displayName="TextNode";let simulation2d=null;const SelectionDataNodes=reactExports.memo(()=>{const tt=useGraphData(),et=useSelectedNode(),nt=useDataStore(ot=>ot.selectedNodeRelativeIds),rt=useDataStore(ot=>ot.selectionGraphData),it=useDataStore(ot=>ot.setSelectionData);return reactExports.useEffect(()=>{const ot=tt.nodes.filter(st=>st.ref_id===(et==null?void 0:et.ref_id)||nt.includes((st==null?void 0:st.ref_id)||"")).map(st=>{const lt=st.ref_id===(et==null?void 0:et.ref_id)&&st.node_type!=="topic"?{fx:0,fy:0,fz:0}:{};return{...st,x:0,y:0,z:0,...lt}}),at=generateLinksFromNodeData(ot,!1,!1);it({nodes:ot,links:at})},[tt,et,nt,it]),reactExports.useEffect(()=>{simulation2d=runForceSimulation(rt.nodes,rt.links,{numDimensions:2,forceLinkStrength:.01,forceCenterStrength:.85,forceChargeStrength:-20,velocityDecay:.9})},[rt]),useFrame(()=>{simulation2d&&simulation2d.tick()}),jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[rt==null?void 0:rt.nodes.map(ot=>ot.node_type==="topic"?jsxRuntimeExports.jsx(TextNode,{hide:!0,node:ot},`${ot.ref_id||ot.id}-compact`):jsxRuntimeExports.jsx(Cube,{animated:!0,hide:!0,node:ot},`${ot.ref_id||ot.id}-compact`)),jsxRuntimeExports.jsx(Segments,{fog:!0,lineWidth:.9,children:(rt==null?void 0:rt.links).map((ot,at)=>jsxRuntimeExports.jsx(Segment,{animated:!0,link:ot},at.toString()))},`selection-links-${rt==null?void 0:rt.links.length}`)]})});SelectionDataNodes.displayName="SelectionDataNodes";const Cubes=reactExports.memo(()=>{const tt=useGraphData(),et=useSelectedNode(),nt=useDataStore(dt=>dt.nearbyNodeIds),rt=useDataStore(dt=>dt.setHoveredNode),it=useDataStore(dt=>dt.showSelectionGraph),ot=useDataStore(dt=>dt.selectionGraphData),at=useAppStore(dt=>dt.setTranscriptOpen),st=reactExports.useCallback(dt=>!!(it&&!ot.nodes.find(pt=>pt.ref_id===dt.ref_id)),[it,ot]),lt=reactExports.useCallback(dt=>{const pt=dt==null?void 0:dt[0];pt&&(at(!1),pt.userData&&(st(pt.userData)||useDataStore.getState().setSelectedNode((pt==null?void 0:pt.userData)||null)))},[at,st]),ct=reactExports.useCallback(dt=>{dt.stopPropagation(),rt(null)},[rt]),ut=reactExports.useCallback(dt=>{var gt;const mt=dt.intersections.map(yt=>yt.object)[0];if((gt=mt==null?void 0:mt.userData)!=null&>.ref_id){const yt=mt.userData;st(yt)||(dt.stopPropagation(),rt(yt))}},[rt,st]),ht=it&&!!et;return jsxRuntimeExports.jsxs(Select$1,{filter:dt=>dt.filter(pt=>{var mt;return!!((mt=pt.userData)!=null&&mt.id)}),onChange:lt,onPointerOut:ct,onPointerOver:ut,children:[jsxRuntimeExports.jsx(BlurryInstances,{hide:ht}),tt.nodes.filter(dt=>{const pt=(dt==null?void 0:dt.ref_id)===(et==null?void 0:et.ref_id);return nt.includes(dt.ref_id||"")||isMainTopic(dt)||pt}).map(dt=>dt.node_type==="topic"?jsxRuntimeExports.jsx(TextNode,{hide:ht,node:dt},dt.ref_id||dt.id):jsxRuntimeExports.jsx(Cube,{hide:ht,node:dt},dt.ref_id||dt.id)),ht&&jsxRuntimeExports.jsx(SelectionDataNodes,{}),jsxRuntimeExports.jsx(RelevanceBadges,{})]})});Cubes.displayName="Cubes";const defaultData$4={earthRef:null},useRefStore=react(tt=>({...defaultData$4,setEarthRef:et=>tt({earthRef:et})})),getCurvedLineFromStartAndEnd=(tt,et)=>{const nt=new Quaternion().setFromUnitVectors(new Vector3(0,1,0),tt.clone().normalize()),rt=new Quaternion().setFromUnitVectors(new Vector3(0,1,0),et.clone().normalize()),it=new Quaternion,ot=50,at=[];for(let lt=0;lt<=ot;lt+=1){const ct=lt/ot;it.slerpQuaternions(nt,rt,ct);const ut=new Vector3(0,1,0).applyQuaternion(it).multiplyScalar(EARTH_RADIUS+EARTH_DATA_PADDING);at.push(ut)}return new CatmullRomCurve3(at).getPoints(ot)},CurvedLine=({link:tt})=>{const et=useSelectedNode(),[nt,rt]=reactExports.useState(8947848);reactExports.useEffect(()=>{const ot=(et==null?void 0:et.ref_id)||"",at=et&&(ot===tt.targetRef||ot===tt.sourceRef);rt(at?tt.color||NODE_RELATIVE_HIGHLIGHT_COLORS.children.segmentColor:et?5592405:8947848)},[et,tt]);const it=reactExports.useMemo(()=>{var ct,ut,ht,dt,pt,mt;const ot=(et==null?void 0:et.ref_id)||"",at=et&&(ot===tt.targetRef||ot===tt.sourceRef);if(!(!tt.onlyVisibleOnSelect||at))return[];const st=new Vector3(((ct=tt.sourcePosition)==null?void 0:ct.x)||0,((ut=tt.sourcePosition)==null?void 0:ut.y)||0,((ht=tt.sourcePosition)==null?void 0:ht.z)||0),lt=new Vector3(((dt=tt.targetPosition)==null?void 0:dt.x)||0,((pt=tt.targetPosition)==null?void 0:pt.y)||0,((mt=tt.targetPosition)==null?void 0:mt.z)||0);return getCurvedLineFromStartAndEnd(st,lt)},[tt,et]);return it.length?jsxRuntimeExports.jsx(Line$1,{color:nt,dashed:!1,lineWidth:3,points:it}):null},center$1=new Vector3(0,0,0),Earth=()=>{const tt=reactExports.useRef(null),et=reactExports.useRef(null),nt=useDataStore(lt=>lt.graphStyle),rt=useDataStore(lt=>lt.showSelectionGraph),it=useDataStore(lt=>lt.data),ot=useRefStore(lt=>lt.setEarthRef),at=useTexture("textures/earth/galaxy.png"),st=useTexture("textures/earth/clouds.png");return useFrame(({camera:lt})=>{et.current&&et.current.position.copy(lt.getWorldPosition(center$1))}),reactExports.useLayoutEffect(()=>{tt.current&&ot(tt)},[ot]),nt!=="earth"||rt?null:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("mesh",{ref:tt,userData:{type:"earth"},children:[jsxRuntimeExports.jsx("sphereGeometry",{args:[EARTH_RADIUS,200,200]}),jsxRuntimeExports.jsx(EarthMaterial,{})]}),jsxRuntimeExports.jsxs("mesh",{children:[jsxRuntimeExports.jsx("sphereGeometry",{args:[EARTH_RADIUS+2,200,200]}),jsxRuntimeExports.jsx("meshStandardMaterial",{alphaMap:st,map:st,transparent:!0})]}),jsxRuntimeExports.jsxs("mesh",{children:[jsxRuntimeExports.jsx("sphereGeometry",{args:[EARTH_RADIUS*4,200,200]}),jsxRuntimeExports.jsx("meshStandardMaterial",{map:at,opacity:.4,side:DoubleSide,transparent:!0})]}),jsxRuntimeExports.jsx("directionalLight",{ref:et,intensity:.9,position:[0,0,EARTH_RADIUS*3]}),it==null?void 0:it.links.map((lt,ct)=>jsxRuntimeExports.jsx(CurvedLine,{link:lt},`curved-${ct}`))]})},EarthMaterial=()=>{const tt=useTexture("textures/earth/earth.jpeg"),et=useTexture("textures/earth/bump.jpeg"),nt=useTexture("textures/earth/water.png"),rt=reactExports.useMemo(()=>new MeshStandardMaterial({map:tt,bumpMap:et,aoMap:et,roughnessMap:et,metalnessMap:nt,toneMapped:!0,roughness:35,metalness:0}),[tt,et,nt]);return jsxRuntimeExports.jsx("meshStandardMaterial",{...rt})},particleCount=2e3,radiusLimit=UNIVERSE_SCALE*4,colorsArray=Object.values(DATA_COLOR_PALETTE).map(tt=>tt),Particles=()=>{const tt=reactExports.useRef(null);useFrame(()=>{var at,st,lt;const it=((at=tt.current)==null?void 0:at.geometry.getAttribute("position")).array,ot=((st=tt.current)==null?void 0:st.geometry.getAttribute("velocity")).array;if(it&&ot){for(let ct=0;ctradiusLimit*radiusLimit){const vt=Math.random()*Math.PI*2,xt=Math.random()*Math.PI*2,kt=Math.random()*radiusLimit;it[ct]=Math.sin(vt)*Math.cos(xt)*kt,it[ct+1]=Math.sin(vt)*Math.sin(xt)*kt,it[ct+2]=Math.cos(vt)*kt}}((lt=tt.current)==null?void 0:lt.geometry.getAttribute("position")).needsUpdate=!0}});const et=reactExports.useMemo(()=>new Float32Array(particleCount*3),[]),nt=reactExports.useMemo(()=>new Float32Array(particleCount*3),[]);reactExports.useEffect(()=>{const it=radiusLimit;for(let ot=0;ot{rt.current&&tt.current&&(rt.current.setAttribute("position",new BufferAttribute(et,3)),rt.current.setAttribute("velocity",new BufferAttribute(nt,3)),tt.current.geometry=rt.current)},[et,nt]),reactExports.useEffect(()=>{if(rt.current){const it=[];for(let ot=0;ot({close:{backgroundColor:"rgba(48, 51, 66, 1)",borderColor:"#fff",fontColor:"rgba(255, 255, 255, 1)"},focus:{backgroundColor:tt?"rgba(255, 255, 255, 0.90);":"rgba(255, 255, 255, 0.90)",borderColor:tt?"#FFDB58bb":"#fff",fontColor:"rgba(48, 51, 66, 1)"},menu:{backgroundColor:"#00000066",borderColor:tt?"#ffffff66":"#5078f2",fontColor:tt?"#ffffff66":"#fff"}}),reuseableVector3=new Vector3,NodeControls=reactExports.memo(()=>{const tt=reactExports.useRef(null),et=useAppStore(ut=>ut.setSidebarOpen),nt=useDataStore(ut=>ut.showSelectionGraph),rt=useDataStore(ut=>ut.selectionGraphData),it=useDataStore(ut=>ut.data),ot=useSelectedNode(),at=useDataStore(ut=>ut.setSelectedNode),st=useDataStore(ut=>ut.setShowSelectionGraph);useFrame(()=>{lt()});const lt=reactExports.useCallback(()=>{const ut=nt?rt:it;if(tt.current){const ht=ut==null?void 0:ut.nodes.find(dt=>dt.ref_id===(ot==null?void 0:ot.ref_id));if(ht){const dt=reuseableVector3.set(ht==null?void 0:ht.x,ht==null?void 0:ht.y,ht==null?void 0:ht.z);tt.current.position.copy(dt)}}},[ot,nt,rt,it]),ct=reactExports.useMemo(()=>[{key:"control-key-1",colors:buttonColors(nt).focus,icon:jsxRuntimeExports.jsx(MdViewInAr,{}),left:10,className:"expand",onClick:()=>{const ut=!nt;st(ut),ut&&et(!0)}},{key:"control-key-2",colors:buttonColors(!0).close,icon:jsxRuntimeExports.jsx(MdClose,{}),left:40,className:"exit",onClick:()=>{at(null),st(!1)}}],[st,at,et,nt]);return ot?jsxRuntimeExports.jsx("group",{ref:tt,children:jsxRuntimeExports.jsx(Html$1,{center:!0,className:"control-panel",onClick:ut=>ut.stopPropagation(),onKeyDown:ut=>ut.stopPropagation(),onPointerDown:ut=>ut.stopPropagation(),onPointerOut:ut=>ut.stopPropagation(),onPointerOver:ut=>ut.stopPropagation(),onPointerUp:ut=>ut.stopPropagation(),sprite:!0,zIndexRange:[16777271,16777272],children:ct.map(ut=>jsxRuntimeExports.jsx(IconButton,{backgroundColor:ut.colors.backgroundColor,borderColor:ut.colors.borderColor,className:ut.className,fontColor:ut.colors.fontColor,left:ut.left,onClick:ht=>{ht.stopPropagation(),ut.onClick()},children:ut.icon},ut.key))})}):null});NodeControls.displayName="NodeControls";const IconButton=styled$4.div` position: fixed; top: -60px; left: ${tt=>-7+tt.left}px; @@ -6834,7 +6834,7 @@ void main() { cursor: pointer; transition: opacity 0.4s; box-shadow: 0px 2px 12px rgba(0, 0, 0, 0.5); -`,NodeDetailsPanel=reactExports.memo(()=>jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:jsxRuntimeExports.jsx(NodeControls,{})}));NodeDetailsPanel.displayName="NodeDetailsPanel";const Graph=()=>{const tt=useGraphData(),et=useDataStore(ot=>ot.isFetching),nt=useDataStore(ot=>ot.graphStyle),rt=useDataStore(ot=>ot.showSelectionGraph),it=reactExports.useMemo(()=>rt?0:nt==="force"?.2:.4,[rt,nt]);return et?null:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Cubes,{}),jsxRuntimeExports.jsx(Earth,{}),jsxRuntimeExports.jsx(Particles,{}),nt!=="earth"&&jsxRuntimeExports.jsx(Segments,{fog:!0,limit:tt.links.length,lineWidth:it,children:tt.links.map((ot,at)=>jsxRuntimeExports.jsx(Segment,{link:ot},at.toString()))},`links-${tt.links.length}-${nt}`),jsxRuntimeExports.jsx(NodeDetailsPanel,{})]})},Lights=()=>{const{fogColor:tt}=useControls("universe",{fogColor:GRAPH_FOG_COLOR}),et=useDataStore(ot=>ot.graphStyle),nt=reactExports.useRef(null),rt=reactExports.useRef(null),it=reactExports.useRef(null);return useFrame(({camera:ot,clock:at})=>{const st=at.getElapsedTime();if(nt.current){const ct=Math.sin(st/8)*1e3;nt.current.position.setZ(ct)}if(rt.current&&rt.current.position.lerp(ot.position,.5),it.current){const lt=st*.5,ct=Math.sin(lt)*UNIVERSE_SCALE,ut=Math.cos(lt)*UNIVERSE_SCALE;it.current.position.set(ct,0,ut)}}),jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("hemisphereLight",{args:[colors.white,GRAPH_GROUND_COLOR,GRAPH_LIGHT_INTENSITY]}),et!=="earth"&&jsxRuntimeExports.jsx("fog",{args:[tt,5,18e3],attach:"fog"}),jsxRuntimeExports.jsx("ambientLight",{color:colors.white,intensity:1}),jsxRuntimeExports.jsx("pointLight",{ref:rt,color:colors.white,distance:4e3,intensity:5,position:[0,0,0]}),jsxRuntimeExports.jsx("directionalLight",{ref:it,color:colors.white,intensity:8,position:[UNIVERSE_SCALE,0,0]}),jsxRuntimeExports.jsx("pointLight",{ref:nt,color:colors.white,distance:4e3,intensity:8,position:[0,0,0]})]})};function formatDescription(tt){return tt?tt.replace(/[[]{2}/g,"").replace(/[\]]{2}/g,""):""}var loadjs_umd={exports:{}};(function(tt,et){(function(nt,rt){tt.exports=rt()})(commonjsGlobal,function(){var nt=function(){},rt={},it={},ot={};function at(dt,pt){dt=dt.push?dt:[dt];var mt=[],gt=dt.length,yt=gt,bt,vt,xt,kt;for(bt=function(St,Tt){Tt.length&&mt.push(St),yt--,yt||pt(mt)};gt--;){if(vt=dt[gt],xt=it[vt],xt){bt(vt,xt);continue}kt=ot[vt]=ot[vt]||[],kt.push(bt)}}function st(dt,pt){if(dt){var mt=ot[dt];if(it[dt]=pt,!!mt)for(;mt.length;)mt[0](dt,pt),mt.splice(0,1)}}function lt(dt,pt){dt.call&&(dt={success:dt}),pt.length?(dt.error||nt)(pt):(dt.success||nt)(dt)}function ct(dt,pt,mt,gt){var yt=document,bt=mt.async,vt=(mt.numRetries||0)+1,xt=mt.before||nt,kt=dt.replace(/[\?|#].*$/,""),St=dt.replace(/^(css|img)!/,""),Tt,At;gt=gt||0,/(^css!|\.css$)/.test(kt)?(At=yt.createElement("link"),At.rel="stylesheet",At.href=St,Tt="hideFocus"in At,Tt&&At.relList&&(Tt=0,At.rel="preload",At.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(kt)?(At=yt.createElement("img"),At.src=St):(At=yt.createElement("script"),At.src=dt,At.async=bt===void 0?!0:bt),At.onload=At.onerror=At.onbeforeload=function(Et){var $t=Et.type[0];if(Tt)try{At.sheet.cssText.length||($t="e")}catch(Dt){Dt.code!=18&&($t="e")}if($t=="e"){if(gt+=1,gt{const[nt,rt]=reactExports.useState(!0);return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Flex,{direction:"row",children:jsxRuntimeExports.jsx(Flex,{align:"flex-start",pb:12,children:jsxRuntimeExports.jsxs(Text$3,{children:["Tweet by @",tt]})})}),jsxRuntimeExports.jsxs(Flex,{direction:"column",py:16,children:[nt&&jsxRuntimeExports.jsx(Flex,{align:"center",direction:"row",justify:"center",p:10,children:jsxRuntimeExports.jsx(ClipLoader$2,{color:colors.white})}),et&&jsxRuntimeExports.jsx(Tweet,{onLoad:()=>rt(!1),renderError:()=>jsxRuntimeExports.jsx(Error$1,{}),tweetId:et})]})]})},Error$1=()=>jsxRuntimeExports.jsx(Flex,{children:"Error occurred"}),Wrapper$n=styled$4(Flex)(({theme:tt})=>({position:"absolute",top:"20px",right:"20px",width:"300px",pointerEvents:"none",background:colors.dashboardHeader,boxShadow:"0px 1px 6px rgba(0, 0, 0, 0.1)",color:colors.primaryText1,zIndex:100,transition:"opacity 0.6s",padding:tt.spacing(2,3),[tt.breakpoints.down("sm")]:{padding:tt.spacing(1,1.5)}})),Divider$1=styled$4(Flex)` +`,NodeDetailsPanel=reactExports.memo(()=>jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:jsxRuntimeExports.jsx(NodeControls,{})}));NodeDetailsPanel.displayName="NodeDetailsPanel";const Graph=()=>{const tt=useGraphData(),et=useDataStore(ct=>ct.isFetching),nt=useDataStore(ct=>ct.graphStyle),rt=useDataStore(ct=>ct.showSelectionGraph),it=useDataStore(ct=>ct.selectedNodeRelativeIds),ot=useDataStore(ct=>ct.selectionGraphData),at=useDataStore(ct=>ct.selectedNode),st=reactExports.useMemo(()=>rt?0:nt==="force"?.2:.4,[rt,nt]),lt=reactExports.useMemo(()=>(rt?ot.nodes:(tt==null?void 0:tt.nodes)||[]).filter(dt=>it.includes((dt==null?void 0:dt.ref_id)||"")||(at==null?void 0:at.ref_id)===(dt==null?void 0:dt.ref_id)).slice(0,maxChildrenDisplayed).map(dt=>{const pt=new Vector3(at==null?void 0:at.x,at==null?void 0:at.y,at==null?void 0:at.z),mt=new Vector3(dt.x,dt.y,dt.z),gt={source:at!=null&&at.id?at.id:"",target:dt.id?dt.id:"",targetRef:dt.ref_id,sourceRef:at==null?void 0:at.ref_id,sourcePosition:pt,targetPosition:mt};return jsxRuntimeExports.jsx(Segment,{link:gt},dt.id)}),[it,tt==null?void 0:tt.nodes,rt,ot,at]);return et?null:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Cubes,{}),jsxRuntimeExports.jsx(Earth,{}),jsxRuntimeExports.jsx(Particles,{}),nt!=="earth"&&jsxRuntimeExports.jsx(Segments,{fog:!0,limit:lt.length,lineWidth:st,children:lt},`links-${lt.length}-${nt}`),jsxRuntimeExports.jsx(NodeDetailsPanel,{})]})},Lights=()=>{const{fogColor:tt}=useControls("universe",{fogColor:GRAPH_FOG_COLOR}),et=useDataStore(ot=>ot.graphStyle),nt=reactExports.useRef(null),rt=reactExports.useRef(null),it=reactExports.useRef(null);return useFrame(({camera:ot,clock:at})=>{const st=at.getElapsedTime();if(nt.current){const ct=Math.sin(st/8)*1e3;nt.current.position.setZ(ct)}if(rt.current&&rt.current.position.lerp(ot.position,.5),it.current){const lt=st*.5,ct=Math.sin(lt)*UNIVERSE_SCALE,ut=Math.cos(lt)*UNIVERSE_SCALE;it.current.position.set(ct,0,ut)}}),jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("hemisphereLight",{args:[colors.white,GRAPH_GROUND_COLOR,GRAPH_LIGHT_INTENSITY]}),et!=="earth"&&jsxRuntimeExports.jsx("fog",{args:[tt,5,18e3],attach:"fog"}),jsxRuntimeExports.jsx("ambientLight",{color:colors.white,intensity:1}),jsxRuntimeExports.jsx("pointLight",{ref:rt,color:colors.white,distance:4e3,intensity:5,position:[0,0,0]}),jsxRuntimeExports.jsx("directionalLight",{ref:it,color:colors.white,intensity:8,position:[UNIVERSE_SCALE,0,0]}),jsxRuntimeExports.jsx("pointLight",{ref:nt,color:colors.white,distance:4e3,intensity:8,position:[0,0,0]})]})};function formatDescription(tt){return tt?tt.replace(/[[]{2}/g,"").replace(/[\]]{2}/g,""):""}var loadjs_umd={exports:{}};(function(tt,et){(function(nt,rt){tt.exports=rt()})(commonjsGlobal,function(){var nt=function(){},rt={},it={},ot={};function at(dt,pt){dt=dt.push?dt:[dt];var mt=[],gt=dt.length,yt=gt,bt,vt,xt,kt;for(bt=function(St,Tt){Tt.length&&mt.push(St),yt--,yt||pt(mt)};gt--;){if(vt=dt[gt],xt=it[vt],xt){bt(vt,xt);continue}kt=ot[vt]=ot[vt]||[],kt.push(bt)}}function st(dt,pt){if(dt){var mt=ot[dt];if(it[dt]=pt,!!mt)for(;mt.length;)mt[0](dt,pt),mt.splice(0,1)}}function lt(dt,pt){dt.call&&(dt={success:dt}),pt.length?(dt.error||nt)(pt):(dt.success||nt)(dt)}function ct(dt,pt,mt,gt){var yt=document,bt=mt.async,vt=(mt.numRetries||0)+1,xt=mt.before||nt,kt=dt.replace(/[\?|#].*$/,""),St=dt.replace(/^(css|img)!/,""),Tt,At;gt=gt||0,/(^css!|\.css$)/.test(kt)?(At=yt.createElement("link"),At.rel="stylesheet",At.href=St,Tt="hideFocus"in At,Tt&&At.relList&&(Tt=0,At.rel="preload",At.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(kt)?(At=yt.createElement("img"),At.src=St):(At=yt.createElement("script"),At.src=dt,At.async=bt===void 0?!0:bt),At.onload=At.onerror=At.onbeforeload=function(Et){var $t=Et.type[0];if(Tt)try{At.sheet.cssText.length||($t="e")}catch(Dt){Dt.code!=18&&($t="e")}if($t=="e"){if(gt+=1,gt{const[nt,rt]=reactExports.useState(!0);return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Flex,{direction:"row",children:jsxRuntimeExports.jsx(Flex,{align:"flex-start",pb:12,children:jsxRuntimeExports.jsxs(Text$3,{children:["Tweet by @",tt]})})}),jsxRuntimeExports.jsxs(Flex,{direction:"column",py:16,children:[nt&&jsxRuntimeExports.jsx(Flex,{align:"center",direction:"row",justify:"center",p:10,children:jsxRuntimeExports.jsx(ClipLoader$2,{color:colors.white})}),et&&jsxRuntimeExports.jsx(Tweet,{onLoad:()=>rt(!1),renderError:()=>jsxRuntimeExports.jsx(Error$1,{}),tweetId:et})]})]})},Error$1=()=>jsxRuntimeExports.jsx(Flex,{children:"Error occurred"}),Wrapper$n=styled$4(Flex)(({theme:tt})=>({position:"absolute",top:"20px",right:"20px",width:"300px",pointerEvents:"none",background:colors.dashboardHeader,boxShadow:"0px 1px 6px rgba(0, 0, 0, 0.1)",color:colors.primaryText1,zIndex:100,transition:"opacity 0.6s",padding:tt.spacing(2,3),[tt.breakpoints.down("sm")]:{padding:tt.spacing(1,1.5)}})),Divider$1=styled$4(Flex)` width: 22.5%; `,Tooltip$1=({node:tt})=>{if(!tt)return null;const{node_type:et,show_title:nt,episode_title:rt,description:it,label:ot,text:at,timestamp:st,type:lt,tweet_id:ct,twitter_handle:ut}=tt,ht=tt.guests;let dt=!1,pt=!1;ht&&(ht.length&&ht[0]!==null&&(dt=!0),typeof ht[0]=="object"&&(pt=!0));let mt=tt.image_url;if(lt==="twitter_space"&&(mt="twitter_placeholder.png"),mt==null)switch(et){case"guest":mt="person_placeholder2.png";break;default:mt="noimage.jpeg"}return jsxRuntimeExports.jsx(Wrapper$n,{borderRadius:8,px:24,py:16,children:et==="tweet"?jsxRuntimeExports.jsx(TwitData$1,{tweetId:ct,twitterHandle:ut}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs(Flex,{direction:"row",children:[jsxRuntimeExports.jsx(Divider$1,{}),jsxRuntimeExports.jsx(Flex,{align:"flex-start",pb:12,children:jsxRuntimeExports.jsx(Text$3,{children:et==null?void 0:et.toUpperCase()})})]}),jsxRuntimeExports.jsxs(Flex,{direction:"row",children:[jsxRuntimeExports.jsx(Flex,{pr:12,children:jsxRuntimeExports.jsx(Avatar$1,{src:mt,type:"person"})}),jsxRuntimeExports.jsxs("div",{children:[lt==="guest"?jsxRuntimeExports.jsxs(Flex,{direction:"column",children:[jsxRuntimeExports.jsx(Text$3,{children:ot}),at&&jsxRuntimeExports.jsx(Flex,{pt:4,children:jsxRuntimeExports.jsxs(Text$3,{color:"primaryText1",kind:"tiny",children:["@",at]})})]}):jsxRuntimeExports.jsx(Text$3,{color:"primaryText1",kind:"tiny",children:nt}),jsxRuntimeExports.jsxs(Flex,{pt:4,children:[et==="clip"||et==="episode"&&jsxRuntimeExports.jsx(Text$3,{color:"primaryText1",children:"Episode"}),et==="clip"?jsxRuntimeExports.jsx(Text$3,{as:"div",kind:"regularBold",children:formatDescription(it)}):jsxRuntimeExports.jsx(Text$3,{color:"primaryText1",kind:"tiny",children:rt})]}),jsxRuntimeExports.jsx(Text$3,{color:"primaryText1",kind:"tiny",children:st}),jsxRuntimeExports.jsxs(Flex,{pt:12,children:[et==="clip"&&jsxRuntimeExports.jsx(Text$3,{color:"primaryText1",children:"Episode"}),jsxRuntimeExports.jsx(Text$3,{color:"primaryText1",kind:"tiny",children:et==="clip"?rt:formatDescription(it)})]}),dt&&jsxRuntimeExports.jsxs(Flex,{pt:12,children:[jsxRuntimeExports.jsx(Text$3,{color:"primaryText1",children:"People"}),jsxRuntimeExports.jsx(Flex,{pt:4,children:jsxRuntimeExports.jsx(Text$3,{color:"primaryText1",kind:"tiny",children:pt?ht.map(gt=>gt.name?gt.name:`@${gt.twitter_handle}`).join(", "):ht==null?void 0:ht.join(", ")})})]})]})]})]})})},Overlay=()=>{const[tt,et,nt,rt]=useDataStore(ot=>[ot.selectedNode,ot.hoveredNode,ot.cameraFocusTrigger,ot.setCameraFocusTrigger]),it=useControlStore(ot=>ot.userMovedCamera);return reactExports.useEffect(()=>{document.body.style.cursor=et?"pointer":"auto"},[et]),jsxRuntimeExports.jsxs(OverlayWrap,{children:[!!tt&&it&&jsxRuntimeExports.jsx(Button,{background:"bluePressState",kind:"small",onClick:()=>rt(!nt),children:"Re-center map"}),et&&jsxRuntimeExports.jsx("div",{id:"tooltip-portal",children:jsxRuntimeExports.jsx(Tooltip$1,{node:et})})]})},OverlayWrap=styled$4("div")(({theme:tt})=>({position:"absolute",zIndex:1,top:0,left:0,userSelect:"none",pointerEvents:"none",display:"flex",justifyContent:"flex-end",alignItems:"flex-start",height:"100%",width:"100%",padding:"16px",[tt.breakpoints.down("sm")]:{top:50}})),Preloader=({fullSize:tt=!0})=>{const et=useAppStore(nt=>nt.sidebarIsOpen);return jsxRuntimeExports.jsx(Loader,{align:"center",className:clsx$1({"sidebar-is-open":et&&!tt}),justify:"center",children:jsxRuntimeExports.jsx(ClipLoader$2,{color:colors.SECONDARY_BLUE,size:64})})},Loader=styled$4(Flex)` position: absolute; @@ -6847,7 +6847,7 @@ void main() { `,Fallback=()=>jsxRuntimeExports.jsx(Html$1,{children:jsxRuntimeExports.jsx(Loader$1,{})}),Content$1=()=>{const{universeColor:tt}=useControls("universe",{universeColor:colors.black}),et=useSelectedNode(),nt=reactExports.useMemo(()=>et!=null&&et.node_type?getNodeColorByType(et.node_type):outlineEffectColor,[et]);return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("color",{args:[tt],attach:"background"}),jsxRuntimeExports.jsx(Lights,{}),jsxRuntimeExports.jsx(Controls,{}),jsxRuntimeExports.jsxs(Selection$2,{children:[jsxRuntimeExports.jsxs(EffectComposer,{autoClear:!1,multisampling:8,children:[jsxRuntimeExports.jsx(Vignette,{darkness:.7,eskil:!1,offset:.05}),jsxRuntimeExports.jsx(Bloom,{luminanceThreshold:1,mipmapBlur:!0,resolutionX:Resolution.AUTO_SIZE,resolutionY:Resolution.AUTO_SIZE}),jsxRuntimeExports.jsx(Outline,{blendFunction:BlendFunction.SCREEN,blur:!0,edgeStrength:4,hiddenEdgeColor:nt,visibleEdgeColor:nt})]}),jsxRuntimeExports.jsx(Graph,{})]})]})};let wheelEventTimeout=null;const cameraProps={aspect:window.innerWidth/window.innerHeight,far:3e4,near:1,position:[initialCameraPosition.x,initialCameraPosition.y,initialCameraPosition.z]},_Universe=()=>{const[tt,et,nt]=[useControlStore(at=>at.setIsUserScrollingOnHtmlPanel),useControlStore(at=>at.setIsUserScrolling),useControlStore(at=>at.setUserMovedCamera)],rt=useDataStore(at=>at.isFetching),it=reactExports.useCallback(at=>{var ct;const{target:st}=at,{offsetParent:lt}=st;wheelEventTimeout&&clearTimeout(wheelEventTimeout),(ct=lt==null?void 0:lt.classList)!=null&&ct.contains("html-panel")&<.clientHeight{et(!1),tt(!1)},200)},[et,tt,nt]),ot=reactExports.useCallback(at=>addToGlobalForE2e(at,"threeState"),[]);return jsxRuntimeExports.jsxs(Wrapper$m,{children:[jsxRuntimeExports.jsx(Overlay,{}),jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:null,children:jsxRuntimeExports.jsxs(Canvas$1,{camera:cameraProps,id:"universe-canvas",onCreated:ot,onWheel:it,children:[isDevelopment&&jsxRuntimeExports.jsx(Perf,{position:"top-right"}),jsxRuntimeExports.jsxs(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(Fallback,{}),children:[jsxRuntimeExports.jsx(Preload,{}),jsxRuntimeExports.jsx(AdaptiveDpr,{}),jsxRuntimeExports.jsx(AdaptiveEvents,{}),jsxRuntimeExports.jsx(Content$1,{})]})]})}),rt&&jsxRuntimeExports.jsx(Preloader,{fullSize:!1})]})},Wrapper$m=styled$4(Flex)` flex: 1 1 100%; position: relative; -`,Universe=reactExports.memo(_Universe),defaultData$3={askedQuestions:null,askedQuestionsAnswers:null,hasQuestionInProgress:!1,hasTeachingInProgress:!1,hasInstagraphInProgress:!1,teachMeAnswer:null,instgraphAnswser:null},useTeachStore=react(tt=>({...defaultData$3,setAskedQuestion:et=>tt(nt=>({askedQuestions:[...nt.askedQuestions||[],et],hasQuestionInProgress:!0})),setAskedQuestionAnswer:et=>tt(nt=>({askedQuestionsAnswers:[...nt.askedQuestionsAnswers||[],et],hasQuestionInProgress:!1})),setHasQuestionInProgress:et=>tt({hasQuestionInProgress:et}),setHasTeachingInProgress:et=>tt({hasTeachingInProgress:et}),setHasInstagraphInProgress:et=>tt({hasInstagraphInProgress:et}),setTeachMeAnswer:et=>tt({hasTeachingInProgress:!1,teachMeAnswer:et}),setInstagraphAnswer:et=>{var nt,rt,it,ot;(nt=et==null?void 0:et.instagraph)!=null&&nt.edges&&((rt=et==null?void 0:et.instagraph)!=null&&rt.nodes)&&tt({hasInstagraphInProgress:!1,instgraphAnswser:{edges:(it=et==null?void 0:et.instagraph)==null?void 0:it.edges,nodes:(ot=et==null?void 0:et.instagraph)==null?void 0:ot.nodes}})}})),version="0.1.87",StyledTableCell=styled$4(TableCell$1)` +`,Universe=reactExports.memo(_Universe),defaultData$3={askedQuestions:null,askedQuestionsAnswers:null,hasQuestionInProgress:!1,hasTeachingInProgress:!1,hasInstagraphInProgress:!1,teachMeAnswer:null,instgraphAnswser:null},useTeachStore=react(tt=>({...defaultData$3,setAskedQuestion:et=>tt(nt=>({askedQuestions:[...nt.askedQuestions||[],et],hasQuestionInProgress:!0})),setAskedQuestionAnswer:et=>tt(nt=>({askedQuestionsAnswers:[...nt.askedQuestionsAnswers||[],et],hasQuestionInProgress:!1})),setHasQuestionInProgress:et=>tt({hasQuestionInProgress:et}),setHasTeachingInProgress:et=>tt({hasTeachingInProgress:et}),setHasInstagraphInProgress:et=>tt({hasInstagraphInProgress:et}),setTeachMeAnswer:et=>tt({hasTeachingInProgress:!1,teachMeAnswer:et}),setInstagraphAnswer:et=>{var nt,rt,it,ot;(nt=et==null?void 0:et.instagraph)!=null&&nt.edges&&((rt=et==null?void 0:et.instagraph)!=null&&rt.nodes)&&tt({hasInstagraphInProgress:!1,instgraphAnswser:{edges:(it=et==null?void 0:et.instagraph)==null?void 0:it.edges,nodes:(ot=et==null?void 0:et.instagraph)==null?void 0:ot.nodes}})}})),version="0.1.90",StyledTableCell=styled$4(TableCell$1)` && { color: ${colors.white}; border: none; @@ -6898,7 +6898,7 @@ void main() { margin-left: 16px; } `,Heading$4=styled$4(Flex)` - margin-bottom: 26px; + margin-bottom: 16px; padding: 0 36px; ${Text$3} { margin-bottom: 0; @@ -7038,32 +7038,66 @@ void main() { margin-left: 8px; `,EditButton$1=styled$4(Button$2)` margin-left: auto; -`,Pill=styled$4(Flex).attrs({align:"center",direction:"row",grow:0,justify:"center",shrink:0})` - border-radius: 20px; - color: ${colors.primaryText1}; - border: 2px solid ${colors.white}; +`,CheckIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 10 7",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsx("path",{d:"M3.08467 5.34482L8.02842 0.401074C8.14508 0.284408 8.28363 0.226074 8.44404 0.226074C8.60446 0.226074 8.743 0.284408 8.85967 0.401074C8.97633 0.517741 9.03467 0.656283 9.03467 0.816699C9.03467 0.977116 8.97633 1.11566 8.85967 1.23232L3.493 6.59899C3.37633 6.71566 3.24022 6.77399 3.08467 6.77399C2.92911 6.77399 2.793 6.71566 2.67633 6.59899L0.168 4.09066C0.0513333 3.97399 -0.00456944 3.83545 0.000291667 3.67503C0.00515278 3.51462 0.0659167 3.37607 0.182583 3.25941C0.29925 3.14274 0.437792 3.08441 0.598208 3.08441C0.758625 3.08441 0.897167 3.14274 1.01383 3.25941L3.08467 5.34482Z",fill:"currentColor"})}),ChevronDownIcon=tt=>jsxRuntimeExports.jsxs("svg",{width:"1em",height:"1em",viewBox:"0 0 14 14",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_2337_2483",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"14",height:"14",children:jsxRuntimeExports.jsx("rect",{width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_2337_2483)",children:jsxRuntimeExports.jsx("path",{d:"M7.00001 8.72074C6.92223 8.72074 6.84931 8.70858 6.78126 8.68428C6.7132 8.65997 6.65001 8.61865 6.59167 8.56032L3.90834 5.87699C3.8014 5.77004 3.74792 5.63393 3.74792 5.46865C3.74792 5.30337 3.8014 5.16726 3.90834 5.06032C4.01529 4.95337 4.1514 4.8999 4.31667 4.8999C4.48195 4.8999 4.61806 4.95337 4.72501 5.06032L7.00001 7.33532L9.27501 5.06032C9.38195 4.95337 9.51806 4.8999 9.68334 4.8999C9.84862 4.8999 9.98473 4.95337 10.0917 5.06032C10.1986 5.16726 10.2521 5.30337 10.2521 5.46865C10.2521 5.63393 10.1986 5.77004 10.0917 5.87699L7.40834 8.56032C7.35001 8.61865 7.28681 8.65997 7.21876 8.68428C7.1507 8.70858 7.07779 8.72074 7.00001 8.72074Z",fill:"currentColor"})})]}),ChevronUpIcon=tt=>jsxRuntimeExports.jsxs("svg",{width:"1em",height:"1em",viewBox:"0 0 14 14",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_2337_2442",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"14",height:"14",children:jsxRuntimeExports.jsx("rect",{width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_2337_2442)",children:jsxRuntimeExports.jsx("path",{d:"M7.00001 6.28532L4.72501 8.56032C4.61806 8.66726 4.48195 8.72074 4.31667 8.72074C4.1514 8.72074 4.01529 8.66726 3.90834 8.56032C3.8014 8.45337 3.74792 8.31726 3.74792 8.15199C3.74792 7.98671 3.8014 7.8506 3.90834 7.74365L6.59167 5.06032C6.65001 5.00199 6.7132 4.96067 6.78126 4.93636C6.84931 4.91206 6.92223 4.8999 7.00001 4.8999C7.07779 4.8999 7.1507 4.91206 7.21876 4.93636C7.28681 4.96067 7.35001 5.00199 7.40834 5.06032L10.0917 7.74365C10.1986 7.8506 10.2521 7.98671 10.2521 8.15199C10.2521 8.31726 10.1986 8.45337 10.0917 8.56032C9.98473 8.66726 9.84862 8.72074 9.68334 8.72074C9.51806 8.72074 9.38195 8.66726 9.27501 8.56032L7.00001 6.28532Z",fill:"currentColor"})})]}),options$1={[DEFAULT$1]:"Default",[DATE$1]:"Date",[EDGES]:"Edges Count"},Filter=({onChangeFilter:tt,currentFilter:et})=>{const[nt,rt]=reactExports.useState(null),it=st=>{rt(st.currentTarget)},ot=()=>{rt(null)},at=st=>{tt(st),ot()};return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs(Action$1,{onClick:it,children:[jsxRuntimeExports.jsx("div",{className:"text",children:"Sort By"}),jsxRuntimeExports.jsx("div",{className:"value",children:options$1[et]}),jsxRuntimeExports.jsx("div",{className:"icon",children:nt?jsxRuntimeExports.jsx(ChevronUpIcon,{}):jsxRuntimeExports.jsx(ChevronDownIcon,{})})]}),jsxRuntimeExports.jsx(StyledPopover$1,{anchorEl:nt,anchorOrigin:{vertical:"bottom",horizontal:"left"},anchorPosition:{top:62,left:0},onClose:ot,open:!!nt,transformOrigin:{vertical:"top",horizontal:"left"},children:jsxRuntimeExports.jsx(FormControl$1,{children:Object.keys(options$1).map(st=>jsxRuntimeExports.jsxs(MenuItem$1,{className:clsx$1({active:st===et}),onClick:()=>at(st),children:[jsxRuntimeExports.jsx("span",{className:"icon",children:st===et?jsxRuntimeExports.jsx(CheckIcon,{}):null}),jsxRuntimeExports.jsx("span",{children:options$1[st]})]},st))})})]})},Action$1=styled$4(Flex).attrs({direction:"row",align:"center"})` cursor: pointer; - font-size: 12px; + flex-grow: 1; + color: ${colors.GRAY6}; + font-family: Barlow; + font-size: 13px; + font-style: normal; font-weight: 500; - line-height: 14px; - margin-right: 10px; - - opacity: ${({disabled:tt})=>tt?"0.7":"1"}; - - padding: 10px 20px; + padding: 0 8px; + .value, + .icon { + color: ${colors.white}; + } -${({disabled:tt})=>tt&&Ae` - cursor: none; - opacity: 0.5; - `} + .value { + margin: 0 8px 0 4px; + } +`,MenuItem$1=styled$4(Flex).attrs({direction:"row",align:"center"})` + font-family: Barlow; + font-size: 13px; + font-style: normal; + font-weight: 500; + color: ${colors.GRAY3}; + height: 27px; + cursor: pointer; + &.active { + color: ${colors.white}; + } + &:hover { + color: ${colors.white}; + } + .icon { + margin-right: 8px; + width: 9px; + font-size: 10px; + } +`,StyledPopover$1=styled$4(Popover$1)` + && { + z-index: 99999; } - &:hover { - background: ${({selected:tt})=>tt?colors.gray300:colors.gray200}; + .MuiPaper-root { + background: ${colors.BUTTON1}; + min-width: 149px; + padding: 16px; + color: ${colors.GRAY3}; + box-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.2); + border-radius: 6px; } -} -`,Table=({data:tt,showMuted:et})=>{const nt=async(rt,it)=>{if(tt!=null&&tt.length)try{await putNodeData({ref_id:rt,node_name:"muted_topic",node_value:it})}catch(ot){console.warn(ot)}};return tt!=null&&tt.length?jsxRuntimeExports.jsxs(MaterialTable,{component:"table",children:[jsxRuntimeExports.jsx(StyledTableHead,{children:jsxRuntimeExports.jsxs(TableRow$1,{component:"tr",children:[jsxRuntimeExports.jsx(StyledTableCell,{className:"empty"}),jsxRuntimeExports.jsx(StyledTableCell,{children:"Type"}),jsxRuntimeExports.jsx(StyledTableCell,{children:et?"Unmute":"Mute"})]})}),(tt==null?void 0:tt.length)&&jsxRuntimeExports.jsx("tbody",{children:tt==null?void 0:tt.map(rt=>jsxRuntimeExports.jsxs(StyledTableRow,{children:[jsxRuntimeExports.jsx(StyledTableCell,{className:"empty"}),jsxRuntimeExports.jsx(StyledTableCell,{children:rt.topic}),jsxRuntimeExports.jsx(StyledTableCell,{className:"cell-center",children:jsxRuntimeExports.jsx(Flex,{direction:"row",justify:"space-between",children:jsxRuntimeExports.jsx("div",{className:"approve-wrapper",children:rt.muted_topic?jsxRuntimeExports.jsx(IconWrapper$2,{className:"centered",onClick:()=>nt(rt.ref_id,!1),children:jsxRuntimeExports.jsx(MdCheckCircle,{color:colors.primaryGreen,fontSize:24})}):jsxRuntimeExports.jsx(IconWrapper$2,{className:"centered",onClick:()=>nt(rt.ref_id,!0),children:jsxRuntimeExports.jsx(MdCancel,{color:colors.primaryRed,fontSize:24})})})})}),jsxRuntimeExports.jsx(StyledTableCell,{className:"empty"})]},rt.topic))})]}):jsxRuntimeExports.jsxs(Flex,{children:[jsxRuntimeExports.jsx(Text$3,{children:"There is not any results for selected filters"}),jsxRuntimeExports.jsx(FilterOffIcon,{})]})},IconWrapper$2=styled$4(Flex)` +`;//! moment.js +//! version : 2.29.4 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +var hookCallback;function hooks(){return hookCallback.apply(null,arguments)}function setHookCallback(tt){hookCallback=tt}function isArray$d(tt){return tt instanceof Array||Object.prototype.toString.call(tt)==="[object Array]"}function isObject$6(tt){return tt!=null&&Object.prototype.toString.call(tt)==="[object Object]"}function hasOwnProp(tt,et){return Object.prototype.hasOwnProperty.call(tt,et)}function isObjectEmpty(tt){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(tt).length===0;var et;for(et in tt)if(hasOwnProp(tt,et))return!1;return!0}function isUndefined(tt){return tt===void 0}function isNumber$3(tt){return typeof tt=="number"||Object.prototype.toString.call(tt)==="[object Number]"}function isDate(tt){return tt instanceof Date||Object.prototype.toString.call(tt)==="[object Date]"}function map$5(tt,et){var nt=[],rt,it=tt.length;for(rt=0;rt>>0,rt;for(rt=0;rt0)for(nt=0;nt=0;return(ot?nt?"+":"":"-")+Math.pow(10,Math.max(0,it)).toString().substr(1)+rt}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};function addFormatToken(tt,et,nt,rt){var it=rt;typeof rt=="string"&&(it=function(){return this[rt]()}),tt&&(formatTokenFunctions[tt]=it),et&&(formatTokenFunctions[et[0]]=function(){return zeroFill(it.apply(this,arguments),et[1],et[2])}),nt&&(formatTokenFunctions[nt]=function(){return this.localeData().ordinal(it.apply(this,arguments),tt)})}function removeFormattingTokens(tt){return tt.match(/\[[\s\S]/)?tt.replace(/^\[|\]$/g,""):tt.replace(/\\/g,"")}function makeFormatFunction(tt){var et=tt.match(formattingTokens),nt,rt;for(nt=0,rt=et.length;nt=0&&localFormattingTokens.test(tt);)tt=tt.replace(localFormattingTokens,rt),localFormattingTokens.lastIndex=0,nt-=1;return tt}var defaultLongDateFormat={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function longDateFormat(tt){var et=this._longDateFormat[tt],nt=this._longDateFormat[tt.toUpperCase()];return et||!nt?et:(this._longDateFormat[tt]=nt.match(formattingTokens).map(function(rt){return rt==="MMMM"||rt==="MM"||rt==="DD"||rt==="dddd"?rt.slice(1):rt}).join(""),this._longDateFormat[tt])}var defaultInvalidDate="Invalid date";function invalidDate(){return this._invalidDate}var defaultOrdinal="%d",defaultDayOfMonthOrdinalParse=/\d{1,2}/;function ordinal$1(tt){return this._ordinal.replace("%d",tt)}var defaultRelativeTime={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function relativeTime(tt,et,nt,rt){var it=this._relativeTime[nt];return isFunction$1(it)?it(tt,et,nt,rt):it.replace(/%d/i,tt)}function pastFuture(tt,et){var nt=this._relativeTime[tt>0?"future":"past"];return isFunction$1(nt)?nt(et):nt.replace(/%s/i,et)}var aliases={};function addUnitAlias(tt,et){var nt=tt.toLowerCase();aliases[nt]=aliases[nt+"s"]=aliases[et]=tt}function normalizeUnits(tt){return typeof tt=="string"?aliases[tt]||aliases[tt.toLowerCase()]:void 0}function normalizeObjectUnits(tt){var et={},nt,rt;for(rt in tt)hasOwnProp(tt,rt)&&(nt=normalizeUnits(rt),nt&&(et[nt]=tt[rt]));return et}var priorities={};function addUnitPriority(tt,et){priorities[tt]=et}function getPrioritizedUnits(tt){var et=[],nt;for(nt in tt)hasOwnProp(tt,nt)&&et.push({unit:nt,priority:priorities[nt]});return et.sort(function(rt,it){return rt.priority-it.priority}),et}function isLeapYear(tt){return tt%4===0&&tt%100!==0||tt%400===0}function absFloor(tt){return tt<0?Math.ceil(tt)||0:Math.floor(tt)}function toInt(tt){var et=+tt,nt=0;return et!==0&&isFinite(et)&&(nt=absFloor(et)),nt}function makeGetSet(tt,et){return function(nt){return nt!=null?(set$1$1(this,tt,nt),hooks.updateOffset(this,et),this):get$3(this,tt)}}function get$3(tt,et){return tt.isValid()?tt._d["get"+(tt._isUTC?"UTC":"")+et]():NaN}function set$1$1(tt,et,nt){tt.isValid()&&!isNaN(nt)&&(et==="FullYear"&&isLeapYear(tt.year())&&tt.month()===1&&tt.date()===29?(nt=toInt(nt),tt._d["set"+(tt._isUTC?"UTC":"")+et](nt,tt.month(),daysInMonth(nt,tt.month()))):tt._d["set"+(tt._isUTC?"UTC":"")+et](nt))}function stringGet(tt){return tt=normalizeUnits(tt),isFunction$1(this[tt])?this[tt]():this}function stringSet(tt,et){if(typeof tt=="object"){tt=normalizeObjectUnits(tt);var nt=getPrioritizedUnits(tt),rt,it=nt.length;for(rt=0;rt68?1900:2e3)};var getSetYear=makeGetSet("FullYear",!0);function getIsLeapYear(){return isLeapYear(this.year())}function createDate(tt,et,nt,rt,it,ot,at){var st;return tt<100&&tt>=0?(st=new Date(tt+400,et,nt,rt,it,ot,at),isFinite(st.getFullYear())&&st.setFullYear(tt)):st=new Date(tt,et,nt,rt,it,ot,at),st}function createUTCDate(tt){var et,nt;return tt<100&&tt>=0?(nt=Array.prototype.slice.call(arguments),nt[0]=tt+400,et=new Date(Date.UTC.apply(null,nt)),isFinite(et.getUTCFullYear())&&et.setUTCFullYear(tt)):et=new Date(Date.UTC.apply(null,arguments)),et}function firstWeekOffset(tt,et,nt){var rt=7+et-nt,it=(7+createUTCDate(tt,0,rt).getUTCDay()-et)%7;return-it+rt-1}function dayOfYearFromWeeks(tt,et,nt,rt,it){var ot=(7+nt-rt)%7,at=firstWeekOffset(tt,rt,it),st=1+7*(et-1)+ot+at,lt,ct;return st<=0?(lt=tt-1,ct=daysInYear(lt)+st):st>daysInYear(tt)?(lt=tt+1,ct=st-daysInYear(tt)):(lt=tt,ct=st),{year:lt,dayOfYear:ct}}function weekOfYear(tt,et,nt){var rt=firstWeekOffset(tt.year(),et,nt),it=Math.floor((tt.dayOfYear()-rt-1)/7)+1,ot,at;return it<1?(at=tt.year()-1,ot=it+weeksInYear(at,et,nt)):it>weeksInYear(tt.year(),et,nt)?(ot=it-weeksInYear(tt.year(),et,nt),at=tt.year()+1):(at=tt.year(),ot=it),{week:ot,year:at}}function weeksInYear(tt,et,nt){var rt=firstWeekOffset(tt,et,nt),it=firstWeekOffset(tt+1,et,nt);return(daysInYear(tt)-rt+it)/7}addFormatToken("w",["ww",2],"wo","week");addFormatToken("W",["WW",2],"Wo","isoWeek");addUnitAlias("week","w");addUnitAlias("isoWeek","W");addUnitPriority("week",5);addUnitPriority("isoWeek",5);addRegexToken("w",match1to2);addRegexToken("ww",match1to2,match2);addRegexToken("W",match1to2);addRegexToken("WW",match1to2,match2);addWeekParseToken(["w","ww","W","WW"],function(tt,et,nt,rt){et[rt.substr(0,1)]=toInt(tt)});function localeWeek(tt){return weekOfYear(tt,this._week.dow,this._week.doy).week}var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow}function localeFirstDayOfYear(){return this._week.doy}function getSetWeek(tt){var et=this.localeData().week(this);return tt==null?et:this.add((tt-et)*7,"d")}function getSetISOWeek(tt){var et=weekOfYear(this,1,4).week;return tt==null?et:this.add((tt-et)*7,"d")}addFormatToken("d",0,"do","day");addFormatToken("dd",0,0,function(tt){return this.localeData().weekdaysMin(this,tt)});addFormatToken("ddd",0,0,function(tt){return this.localeData().weekdaysShort(this,tt)});addFormatToken("dddd",0,0,function(tt){return this.localeData().weekdays(this,tt)});addFormatToken("e",0,0,"weekday");addFormatToken("E",0,0,"isoWeekday");addUnitAlias("day","d");addUnitAlias("weekday","e");addUnitAlias("isoWeekday","E");addUnitPriority("day",11);addUnitPriority("weekday",11);addUnitPriority("isoWeekday",11);addRegexToken("d",match1to2);addRegexToken("e",match1to2);addRegexToken("E",match1to2);addRegexToken("dd",function(tt,et){return et.weekdaysMinRegex(tt)});addRegexToken("ddd",function(tt,et){return et.weekdaysShortRegex(tt)});addRegexToken("dddd",function(tt,et){return et.weekdaysRegex(tt)});addWeekParseToken(["dd","ddd","dddd"],function(tt,et,nt,rt){var it=nt._locale.weekdaysParse(tt,rt,nt._strict);it!=null?et.d=it:getParsingFlags(nt).invalidWeekday=tt});addWeekParseToken(["d","e","E"],function(tt,et,nt,rt){et[rt]=toInt(tt)});function parseWeekday(tt,et){return typeof tt!="string"?tt:isNaN(tt)?(tt=et.weekdaysParse(tt),typeof tt=="number"?tt:null):parseInt(tt,10)}function parseIsoWeekday(tt,et){return typeof tt=="string"?et.weekdaysParse(tt)%7||7:isNaN(tt)?null:tt}function shiftWeekdays(tt,et){return tt.slice(et,7).concat(tt.slice(0,et))}var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),defaultWeekdaysRegex=matchWord,defaultWeekdaysShortRegex=matchWord,defaultWeekdaysMinRegex=matchWord;function localeWeekdays(tt,et){var nt=isArray$d(this._weekdays)?this._weekdays:this._weekdays[tt&&tt!==!0&&this._weekdays.isFormat.test(et)?"format":"standalone"];return tt===!0?shiftWeekdays(nt,this._week.dow):tt?nt[tt.day()]:nt}function localeWeekdaysShort(tt){return tt===!0?shiftWeekdays(this._weekdaysShort,this._week.dow):tt?this._weekdaysShort[tt.day()]:this._weekdaysShort}function localeWeekdaysMin(tt){return tt===!0?shiftWeekdays(this._weekdaysMin,this._week.dow):tt?this._weekdaysMin[tt.day()]:this._weekdaysMin}function handleStrictParse$1(tt,et,nt){var rt,it,ot,at=tt.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],rt=0;rt<7;++rt)ot=createUTC([2e3,1]).day(rt),this._minWeekdaysParse[rt]=this.weekdaysMin(ot,"").toLocaleLowerCase(),this._shortWeekdaysParse[rt]=this.weekdaysShort(ot,"").toLocaleLowerCase(),this._weekdaysParse[rt]=this.weekdays(ot,"").toLocaleLowerCase();return nt?et==="dddd"?(it=indexOf.call(this._weekdaysParse,at),it!==-1?it:null):et==="ddd"?(it=indexOf.call(this._shortWeekdaysParse,at),it!==-1?it:null):(it=indexOf.call(this._minWeekdaysParse,at),it!==-1?it:null):et==="dddd"?(it=indexOf.call(this._weekdaysParse,at),it!==-1||(it=indexOf.call(this._shortWeekdaysParse,at),it!==-1)?it:(it=indexOf.call(this._minWeekdaysParse,at),it!==-1?it:null)):et==="ddd"?(it=indexOf.call(this._shortWeekdaysParse,at),it!==-1||(it=indexOf.call(this._weekdaysParse,at),it!==-1)?it:(it=indexOf.call(this._minWeekdaysParse,at),it!==-1?it:null)):(it=indexOf.call(this._minWeekdaysParse,at),it!==-1||(it=indexOf.call(this._weekdaysParse,at),it!==-1)?it:(it=indexOf.call(this._shortWeekdaysParse,at),it!==-1?it:null))}function localeWeekdaysParse(tt,et,nt){var rt,it,ot;if(this._weekdaysParseExact)return handleStrictParse$1.call(this,tt,et,nt);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),rt=0;rt<7;rt++){if(it=createUTC([2e3,1]).day(rt),nt&&!this._fullWeekdaysParse[rt]&&(this._fullWeekdaysParse[rt]=new RegExp("^"+this.weekdays(it,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[rt]=new RegExp("^"+this.weekdaysShort(it,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[rt]=new RegExp("^"+this.weekdaysMin(it,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[rt]||(ot="^"+this.weekdays(it,"")+"|^"+this.weekdaysShort(it,"")+"|^"+this.weekdaysMin(it,""),this._weekdaysParse[rt]=new RegExp(ot.replace(".",""),"i")),nt&&et==="dddd"&&this._fullWeekdaysParse[rt].test(tt))return rt;if(nt&&et==="ddd"&&this._shortWeekdaysParse[rt].test(tt))return rt;if(nt&&et==="dd"&&this._minWeekdaysParse[rt].test(tt))return rt;if(!nt&&this._weekdaysParse[rt].test(tt))return rt}}function getSetDayOfWeek(tt){if(!this.isValid())return tt!=null?this:NaN;var et=this._isUTC?this._d.getUTCDay():this._d.getDay();return tt!=null?(tt=parseWeekday(tt,this.localeData()),this.add(tt-et,"d")):et}function getSetLocaleDayOfWeek(tt){if(!this.isValid())return tt!=null?this:NaN;var et=(this.day()+7-this.localeData()._week.dow)%7;return tt==null?et:this.add(tt-et,"d")}function getSetISODayOfWeek(tt){if(!this.isValid())return tt!=null?this:NaN;if(tt!=null){var et=parseIsoWeekday(tt,this.localeData());return this.day(this.day()%7?et:et-7)}else return this.day()||7}function weekdaysRegex(tt){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),tt?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=defaultWeekdaysRegex),this._weekdaysStrictRegex&&tt?this._weekdaysStrictRegex:this._weekdaysRegex)}function weekdaysShortRegex(tt){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),tt?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=defaultWeekdaysShortRegex),this._weekdaysShortStrictRegex&&tt?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function weekdaysMinRegex(tt){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),tt?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=defaultWeekdaysMinRegex),this._weekdaysMinStrictRegex&&tt?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function computeWeekdaysParse(){function tt(ut,ht){return ht.length-ut.length}var et=[],nt=[],rt=[],it=[],ot,at,st,lt,ct;for(ot=0;ot<7;ot++)at=createUTC([2e3,1]).day(ot),st=regexEscape(this.weekdaysMin(at,"")),lt=regexEscape(this.weekdaysShort(at,"")),ct=regexEscape(this.weekdays(at,"")),et.push(st),nt.push(lt),rt.push(ct),it.push(st),it.push(lt),it.push(ct);et.sort(tt),nt.sort(tt),rt.sort(tt),it.sort(tt),this._weekdaysRegex=new RegExp("^("+it.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+rt.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+nt.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+et.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function kFormat(){return this.hours()||24}addFormatToken("H",["HH",2],0,"hour");addFormatToken("h",["hh",2],0,hFormat);addFormatToken("k",["kk",2],0,kFormat);addFormatToken("hmm",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)});addFormatToken("hmmss",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)});addFormatToken("Hmm",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)});addFormatToken("Hmmss",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)});function meridiem(tt,et){addFormatToken(tt,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),et)})}meridiem("a",!0);meridiem("A",!1);addUnitAlias("hour","h");addUnitPriority("hour",13);function matchMeridiem(tt,et){return et._meridiemParse}addRegexToken("a",matchMeridiem);addRegexToken("A",matchMeridiem);addRegexToken("H",match1to2);addRegexToken("h",match1to2);addRegexToken("k",match1to2);addRegexToken("HH",match1to2,match2);addRegexToken("hh",match1to2,match2);addRegexToken("kk",match1to2,match2);addRegexToken("hmm",match3to4);addRegexToken("hmmss",match5to6);addRegexToken("Hmm",match3to4);addRegexToken("Hmmss",match5to6);addParseToken(["H","HH"],HOUR);addParseToken(["k","kk"],function(tt,et,nt){var rt=toInt(tt);et[HOUR]=rt===24?0:rt});addParseToken(["a","A"],function(tt,et,nt){nt._isPm=nt._locale.isPM(tt),nt._meridiem=tt});addParseToken(["h","hh"],function(tt,et,nt){et[HOUR]=toInt(tt),getParsingFlags(nt).bigHour=!0});addParseToken("hmm",function(tt,et,nt){var rt=tt.length-2;et[HOUR]=toInt(tt.substr(0,rt)),et[MINUTE]=toInt(tt.substr(rt)),getParsingFlags(nt).bigHour=!0});addParseToken("hmmss",function(tt,et,nt){var rt=tt.length-4,it=tt.length-2;et[HOUR]=toInt(tt.substr(0,rt)),et[MINUTE]=toInt(tt.substr(rt,2)),et[SECOND]=toInt(tt.substr(it)),getParsingFlags(nt).bigHour=!0});addParseToken("Hmm",function(tt,et,nt){var rt=tt.length-2;et[HOUR]=toInt(tt.substr(0,rt)),et[MINUTE]=toInt(tt.substr(rt))});addParseToken("Hmmss",function(tt,et,nt){var rt=tt.length-4,it=tt.length-2;et[HOUR]=toInt(tt.substr(0,rt)),et[MINUTE]=toInt(tt.substr(rt,2)),et[SECOND]=toInt(tt.substr(it))});function localeIsPM(tt){return(tt+"").toLowerCase().charAt(0)==="p"}var defaultLocaleMeridiemParse=/[ap]\.?m?\.?/i,getSetHour=makeGetSet("Hours",!0);function localeMeridiem(tt,et,nt){return tt>11?nt?"pm":"PM":nt?"am":"AM"}var baseConfig={calendar:defaultCalendar,longDateFormat:defaultLongDateFormat,invalidDate:defaultInvalidDate,ordinal:defaultOrdinal,dayOfMonthOrdinalParse:defaultDayOfMonthOrdinalParse,relativeTime:defaultRelativeTime,months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:defaultLocaleWeek,weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:defaultLocaleMeridiemParse},locales={},localeFamilies={},globalLocale;function commonPrefix(tt,et){var nt,rt=Math.min(tt.length,et.length);for(nt=0;nt0;){if(it=loadLocale(ot.slice(0,nt).join("-")),it)return it;if(rt&&rt.length>=nt&&commonPrefix(ot,rt)>=nt-1)break;nt--}et++}return globalLocale}function isLocaleNameSane(tt){return tt.match("^[^/\\\\]*$")!=null}function loadLocale(tt){var et=null,nt;if(locales[tt]===void 0&&typeof module<"u"&&module&&module.exports&&isLocaleNameSane(tt))try{et=globalLocale._abbr,nt=require,nt("./locale/"+tt),getSetGlobalLocale(et)}catch{locales[tt]=null}return locales[tt]}function getSetGlobalLocale(tt,et){var nt;return tt&&(isUndefined(et)?nt=getLocale(tt):nt=defineLocale(tt,et),nt?globalLocale=nt:typeof console<"u"&&console.warn&&console.warn("Locale "+tt+" not found. Did you forget to load it?")),globalLocale._abbr}function defineLocale(tt,et){if(et!==null){var nt,rt=baseConfig;if(et.abbr=tt,locales[tt]!=null)deprecateSimple("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),rt=locales[tt]._config;else if(et.parentLocale!=null)if(locales[et.parentLocale]!=null)rt=locales[et.parentLocale]._config;else if(nt=loadLocale(et.parentLocale),nt!=null)rt=nt._config;else return localeFamilies[et.parentLocale]||(localeFamilies[et.parentLocale]=[]),localeFamilies[et.parentLocale].push({name:tt,config:et}),null;return locales[tt]=new Locale(mergeConfigs(rt,et)),localeFamilies[tt]&&localeFamilies[tt].forEach(function(it){defineLocale(it.name,it.config)}),getSetGlobalLocale(tt),locales[tt]}else return delete locales[tt],null}function updateLocale(tt,et){if(et!=null){var nt,rt,it=baseConfig;locales[tt]!=null&&locales[tt].parentLocale!=null?locales[tt].set(mergeConfigs(locales[tt]._config,et)):(rt=loadLocale(tt),rt!=null&&(it=rt._config),et=mergeConfigs(it,et),rt==null&&(et.abbr=tt),nt=new Locale(et),nt.parentLocale=locales[tt],locales[tt]=nt),getSetGlobalLocale(tt)}else locales[tt]!=null&&(locales[tt].parentLocale!=null?(locales[tt]=locales[tt].parentLocale,tt===getSetGlobalLocale()&&getSetGlobalLocale(tt)):locales[tt]!=null&&delete locales[tt]);return locales[tt]}function getLocale(tt){var et;if(tt&&tt._locale&&tt._locale._abbr&&(tt=tt._locale._abbr),!tt)return globalLocale;if(!isArray$d(tt)){if(et=loadLocale(tt),et)return et;tt=[tt]}return chooseLocale(tt)}function listLocales(){return keys$4(locales)}function checkOverflow(tt){var et,nt=tt._a;return nt&&getParsingFlags(tt).overflow===-2&&(et=nt[MONTH]<0||nt[MONTH]>11?MONTH:nt[DATE]<1||nt[DATE]>daysInMonth(nt[YEAR],nt[MONTH])?DATE:nt[HOUR]<0||nt[HOUR]>24||nt[HOUR]===24&&(nt[MINUTE]!==0||nt[SECOND]!==0||nt[MILLISECOND]!==0)?HOUR:nt[MINUTE]<0||nt[MINUTE]>59?MINUTE:nt[SECOND]<0||nt[SECOND]>59?SECOND:nt[MILLISECOND]<0||nt[MILLISECOND]>999?MILLISECOND:-1,getParsingFlags(tt)._overflowDayOfYear&&(etDATE)&&(et=DATE),getParsingFlags(tt)._overflowWeeks&&et===-1&&(et=WEEK),getParsingFlags(tt)._overflowWeekday&&et===-1&&(et=WEEKDAY),getParsingFlags(tt).overflow=et),tt}var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],isoTimes=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aspNetJsonRegex=/^\/?Date\((-?\d+)/i,rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,obsOffsets={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function configFromISO(tt){var et,nt,rt=tt._i,it=extendedIsoRegex.exec(rt)||basicIsoRegex.exec(rt),ot,at,st,lt,ct=isoDates.length,ut=isoTimes.length;if(it){for(getParsingFlags(tt).iso=!0,et=0,nt=ct;etdaysInYear(at)||tt._dayOfYear===0)&&(getParsingFlags(tt)._overflowDayOfYear=!0),nt=createUTCDate(at,0,tt._dayOfYear),tt._a[MONTH]=nt.getUTCMonth(),tt._a[DATE]=nt.getUTCDate()),et=0;et<3&&tt._a[et]==null;++et)tt._a[et]=rt[et]=it[et];for(;et<7;et++)tt._a[et]=rt[et]=tt._a[et]==null?et===2?1:0:tt._a[et];tt._a[HOUR]===24&&tt._a[MINUTE]===0&&tt._a[SECOND]===0&&tt._a[MILLISECOND]===0&&(tt._nextDay=!0,tt._a[HOUR]=0),tt._d=(tt._useUTC?createUTCDate:createDate).apply(null,rt),ot=tt._useUTC?tt._d.getUTCDay():tt._d.getDay(),tt._tzm!=null&&tt._d.setUTCMinutes(tt._d.getUTCMinutes()-tt._tzm),tt._nextDay&&(tt._a[HOUR]=24),tt._w&&typeof tt._w.d<"u"&&tt._w.d!==ot&&(getParsingFlags(tt).weekdayMismatch=!0)}}function dayOfYearFromWeekInfo(tt){var et,nt,rt,it,ot,at,st,lt,ct;et=tt._w,et.GG!=null||et.W!=null||et.E!=null?(ot=1,at=4,nt=defaults$1(et.GG,tt._a[YEAR],weekOfYear(createLocal(),1,4).year),rt=defaults$1(et.W,1),it=defaults$1(et.E,1),(it<1||it>7)&&(lt=!0)):(ot=tt._locale._week.dow,at=tt._locale._week.doy,ct=weekOfYear(createLocal(),ot,at),nt=defaults$1(et.gg,tt._a[YEAR],ct.year),rt=defaults$1(et.w,ct.week),et.d!=null?(it=et.d,(it<0||it>6)&&(lt=!0)):et.e!=null?(it=et.e+ot,(et.e<0||et.e>6)&&(lt=!0)):it=ot),rt<1||rt>weeksInYear(nt,ot,at)?getParsingFlags(tt)._overflowWeeks=!0:lt!=null?getParsingFlags(tt)._overflowWeekday=!0:(st=dayOfYearFromWeeks(nt,rt,it,ot,at),tt._a[YEAR]=st.year,tt._dayOfYear=st.dayOfYear)}hooks.ISO_8601=function(){};hooks.RFC_2822=function(){};function configFromStringAndFormat(tt){if(tt._f===hooks.ISO_8601){configFromISO(tt);return}if(tt._f===hooks.RFC_2822){configFromRFC2822(tt);return}tt._a=[],getParsingFlags(tt).empty=!0;var et=""+tt._i,nt,rt,it,ot,at,st=et.length,lt=0,ct,ut;for(it=expandFormat(tt._f,tt._locale).match(formattingTokens)||[],ut=it.length,nt=0;nt0&&getParsingFlags(tt).unusedInput.push(at),et=et.slice(et.indexOf(rt)+rt.length),lt+=rt.length),formatTokenFunctions[ot]?(rt?getParsingFlags(tt).empty=!1:getParsingFlags(tt).unusedTokens.push(ot),addTimeToArrayFromToken(ot,rt,tt)):tt._strict&&!rt&&getParsingFlags(tt).unusedTokens.push(ot);getParsingFlags(tt).charsLeftOver=st-lt,et.length>0&&getParsingFlags(tt).unusedInput.push(et),tt._a[HOUR]<=12&&getParsingFlags(tt).bigHour===!0&&tt._a[HOUR]>0&&(getParsingFlags(tt).bigHour=void 0),getParsingFlags(tt).parsedDateParts=tt._a.slice(0),getParsingFlags(tt).meridiem=tt._meridiem,tt._a[HOUR]=meridiemFixWrap(tt._locale,tt._a[HOUR],tt._meridiem),ct=getParsingFlags(tt).era,ct!==null&&(tt._a[YEAR]=tt._locale.erasConvertYear(ct,tt._a[YEAR])),configFromArray(tt),checkOverflow(tt)}function meridiemFixWrap(tt,et,nt){var rt;return nt==null?et:tt.meridiemHour!=null?tt.meridiemHour(et,nt):(tt.isPM!=null&&(rt=tt.isPM(nt),rt&&et<12&&(et+=12),!rt&&et===12&&(et=0)),et)}function configFromStringAndArray(tt){var et,nt,rt,it,ot,at,st=!1,lt=tt._f.length;if(lt===0){getParsingFlags(tt).invalidFormat=!0,tt._d=new Date(NaN);return}for(it=0;itthis?this:tt:createInvalid()});function pickBy(tt,et){var nt,rt;if(et.length===1&&isArray$d(et[0])&&(et=et[0]),!et.length)return createLocal();for(nt=et[0],rt=1;rtthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var tt={},et;return copyConfig(tt,this),tt=prepareConfig(tt),tt._a?(et=tt._isUTC?createUTC(tt._a):createLocal(tt._a),this._isDSTShifted=this.isValid()&&compareArrays(tt._a,et.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function isLocal(){return this.isValid()?!this._isUTC:!1}function isUtcOffset(){return this.isValid()?this._isUTC:!1}function isUtc(){return this.isValid()?this._isUTC&&this._offset===0:!1}var aspNetRegex=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(tt,et){var nt=tt,rt=null,it,ot,at;return isDuration(tt)?nt={ms:tt._milliseconds,d:tt._days,M:tt._months}:isNumber$3(tt)||!isNaN(+tt)?(nt={},et?nt[et]=+tt:nt.milliseconds=+tt):(rt=aspNetRegex.exec(tt))?(it=rt[1]==="-"?-1:1,nt={y:0,d:toInt(rt[DATE])*it,h:toInt(rt[HOUR])*it,m:toInt(rt[MINUTE])*it,s:toInt(rt[SECOND])*it,ms:toInt(absRound(rt[MILLISECOND]*1e3))*it}):(rt=isoRegex.exec(tt))?(it=rt[1]==="-"?-1:1,nt={y:parseIso(rt[2],it),M:parseIso(rt[3],it),w:parseIso(rt[4],it),d:parseIso(rt[5],it),h:parseIso(rt[6],it),m:parseIso(rt[7],it),s:parseIso(rt[8],it)}):nt==null?nt={}:typeof nt=="object"&&("from"in nt||"to"in nt)&&(at=momentsDifference(createLocal(nt.from),createLocal(nt.to)),nt={},nt.ms=at.milliseconds,nt.M=at.months),ot=new Duration(nt),isDuration(tt)&&hasOwnProp(tt,"_locale")&&(ot._locale=tt._locale),isDuration(tt)&&hasOwnProp(tt,"_isValid")&&(ot._isValid=tt._isValid),ot}createDuration.fn=Duration.prototype;createDuration.invalid=createInvalid$1;function parseIso(tt,et){var nt=tt&&parseFloat(tt.replace(",","."));return(isNaN(nt)?0:nt)*et}function positiveMomentsDifference(tt,et){var nt={};return nt.months=et.month()-tt.month()+(et.year()-tt.year())*12,tt.clone().add(nt.months,"M").isAfter(et)&&--nt.months,nt.milliseconds=+et-+tt.clone().add(nt.months,"M"),nt}function momentsDifference(tt,et){var nt;return tt.isValid()&&et.isValid()?(et=cloneWithOffset(et,tt),tt.isBefore(et)?nt=positiveMomentsDifference(tt,et):(nt=positiveMomentsDifference(et,tt),nt.milliseconds=-nt.milliseconds,nt.months=-nt.months),nt):{milliseconds:0,months:0}}function createAdder(tt,et){return function(nt,rt){var it,ot;return rt!==null&&!isNaN(+rt)&&(deprecateSimple(et,"moment()."+et+"(period, number) is deprecated. Please use moment()."+et+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),ot=nt,nt=rt,rt=ot),it=createDuration(nt,rt),addSubtract(this,it,tt),this}}function addSubtract(tt,et,nt,rt){var it=et._milliseconds,ot=absRound(et._days),at=absRound(et._months);tt.isValid()&&(rt=rt??!0,at&&setMonth(tt,get$3(tt,"Month")+at*nt),ot&&set$1$1(tt,"Date",get$3(tt,"Date")+ot*nt),it&&tt._d.setTime(tt._d.valueOf()+it*nt),rt&&hooks.updateOffset(tt,ot||at))}var add$1=createAdder(1,"add"),subtract$1=createAdder(-1,"subtract");function isString$1(tt){return typeof tt=="string"||tt instanceof String}function isMomentInput(tt){return isMoment(tt)||isDate(tt)||isString$1(tt)||isNumber$3(tt)||isNumberOrStringArray(tt)||isMomentInputObject(tt)||tt===null||tt===void 0}function isMomentInputObject(tt){var et=isObject$6(tt)&&!isObjectEmpty(tt),nt=!1,rt=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],it,ot,at=rt.length;for(it=0;itnt.valueOf():nt.valueOf()9999?formatMoment(nt,et?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction$1(Date.prototype.toISOString)?et?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",formatMoment(nt,"Z")):formatMoment(nt,et?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function inspect(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var tt="moment",et="",nt,rt,it,ot;return this.isLocal()||(tt=this.utcOffset()===0?"moment.utc":"moment.parseZone",et="Z"),nt="["+tt+'("]',rt=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",it="-MM-DD[T]HH:mm:ss.SSS",ot=et+'[")]',this.format(nt+rt+it+ot)}function format$1(tt){tt||(tt=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var et=formatMoment(this,tt);return this.localeData().postformat(et)}function from(tt,et){return this.isValid()&&(isMoment(tt)&&tt.isValid()||createLocal(tt).isValid())?createDuration({to:this,from:tt}).locale(this.locale()).humanize(!et):this.localeData().invalidDate()}function fromNow(tt){return this.from(createLocal(),tt)}function to(tt,et){return this.isValid()&&(isMoment(tt)&&tt.isValid()||createLocal(tt).isValid())?createDuration({from:this,to:tt}).locale(this.locale()).humanize(!et):this.localeData().invalidDate()}function toNow(tt){return this.to(createLocal(),tt)}function locale$2(tt){var et;return tt===void 0?this._locale._abbr:(et=getLocale(tt),et!=null&&(this._locale=et),this)}var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(tt){return tt===void 0?this.localeData():this.locale(tt)});function localeData(){return this._locale}var MS_PER_SECOND=1e3,MS_PER_MINUTE=60*MS_PER_SECOND,MS_PER_HOUR=60*MS_PER_MINUTE,MS_PER_400_YEARS=(365*400+97)*24*MS_PER_HOUR;function mod$1(tt,et){return(tt%et+et)%et}function localStartOfDate(tt,et,nt){return tt<100&&tt>=0?new Date(tt+400,et,nt)-MS_PER_400_YEARS:new Date(tt,et,nt).valueOf()}function utcStartOfDate(tt,et,nt){return tt<100&&tt>=0?Date.UTC(tt+400,et,nt)-MS_PER_400_YEARS:Date.UTC(tt,et,nt)}function startOf(tt){var et,nt;if(tt=normalizeUnits(tt),tt===void 0||tt==="millisecond"||!this.isValid())return this;switch(nt=this._isUTC?utcStartOfDate:localStartOfDate,tt){case"year":et=nt(this.year(),0,1);break;case"quarter":et=nt(this.year(),this.month()-this.month()%3,1);break;case"month":et=nt(this.year(),this.month(),1);break;case"week":et=nt(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":et=nt(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":et=nt(this.year(),this.month(),this.date());break;case"hour":et=this._d.valueOf(),et-=mod$1(et+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR);break;case"minute":et=this._d.valueOf(),et-=mod$1(et,MS_PER_MINUTE);break;case"second":et=this._d.valueOf(),et-=mod$1(et,MS_PER_SECOND);break}return this._d.setTime(et),hooks.updateOffset(this,!0),this}function endOf(tt){var et,nt;if(tt=normalizeUnits(tt),tt===void 0||tt==="millisecond"||!this.isValid())return this;switch(nt=this._isUTC?utcStartOfDate:localStartOfDate,tt){case"year":et=nt(this.year()+1,0,1)-1;break;case"quarter":et=nt(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":et=nt(this.year(),this.month()+1,1)-1;break;case"week":et=nt(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":et=nt(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":et=nt(this.year(),this.month(),this.date()+1)-1;break;case"hour":et=this._d.valueOf(),et+=MS_PER_HOUR-mod$1(et+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR)-1;break;case"minute":et=this._d.valueOf(),et+=MS_PER_MINUTE-mod$1(et,MS_PER_MINUTE)-1;break;case"second":et=this._d.valueOf(),et+=MS_PER_SECOND-mod$1(et,MS_PER_SECOND)-1;break}return this._d.setTime(et),hooks.updateOffset(this,!0),this}function valueOf(){return this._d.valueOf()-(this._offset||0)*6e4}function unix(){return Math.floor(this.valueOf()/1e3)}function toDate(){return new Date(this.valueOf())}function toArray$2(){var tt=this;return[tt.year(),tt.month(),tt.date(),tt.hour(),tt.minute(),tt.second(),tt.millisecond()]}function toObject(){var tt=this;return{years:tt.year(),months:tt.month(),date:tt.date(),hours:tt.hours(),minutes:tt.minutes(),seconds:tt.seconds(),milliseconds:tt.milliseconds()}}function toJSON(){return this.isValid()?this.toISOString():null}function isValid$2(){return isValid(this)}function parsingFlags(){return extend$1({},getParsingFlags(this))}function invalidAt(){return getParsingFlags(this).overflow}function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}addFormatToken("N",0,0,"eraAbbr");addFormatToken("NN",0,0,"eraAbbr");addFormatToken("NNN",0,0,"eraAbbr");addFormatToken("NNNN",0,0,"eraName");addFormatToken("NNNNN",0,0,"eraNarrow");addFormatToken("y",["y",1],"yo","eraYear");addFormatToken("y",["yy",2],0,"eraYear");addFormatToken("y",["yyy",3],0,"eraYear");addFormatToken("y",["yyyy",4],0,"eraYear");addRegexToken("N",matchEraAbbr);addRegexToken("NN",matchEraAbbr);addRegexToken("NNN",matchEraAbbr);addRegexToken("NNNN",matchEraName);addRegexToken("NNNNN",matchEraNarrow);addParseToken(["N","NN","NNN","NNNN","NNNNN"],function(tt,et,nt,rt){var it=nt._locale.erasParse(tt,rt,nt._strict);it?getParsingFlags(nt).era=it:getParsingFlags(nt).invalidEra=tt});addRegexToken("y",matchUnsigned);addRegexToken("yy",matchUnsigned);addRegexToken("yyy",matchUnsigned);addRegexToken("yyyy",matchUnsigned);addRegexToken("yo",matchEraYearOrdinal);addParseToken(["y","yy","yyy","yyyy"],YEAR);addParseToken(["yo"],function(tt,et,nt,rt){var it;nt._locale._eraYearOrdinalRegex&&(it=tt.match(nt._locale._eraYearOrdinalRegex)),nt._locale.eraYearOrdinalParse?et[YEAR]=nt._locale.eraYearOrdinalParse(tt,it):et[YEAR]=parseInt(tt,10)});function localeEras(tt,et){var nt,rt,it,ot=this._eras||getLocale("en")._eras;for(nt=0,rt=ot.length;nt=0)return ot[rt]}function localeErasConvertYear(tt,et){var nt=tt.since<=tt.until?1:-1;return et===void 0?hooks(tt.since).year():hooks(tt.since).year()+(et-tt.offset)*nt}function getEraName(){var tt,et,nt,rt=this.localeData().eras();for(tt=0,et=rt.length;ttot&&(et=ot),setWeekAll.call(this,tt,et,nt,rt,it))}function setWeekAll(tt,et,nt,rt,it){var ot=dayOfYearFromWeeks(tt,et,nt,rt,it),at=createUTCDate(ot.year,0,ot.dayOfYear);return this.year(at.getUTCFullYear()),this.month(at.getUTCMonth()),this.date(at.getUTCDate()),this}addFormatToken("Q",0,"Qo","quarter");addUnitAlias("quarter","Q");addUnitPriority("quarter",7);addRegexToken("Q",match1);addParseToken("Q",function(tt,et){et[MONTH]=(toInt(tt)-1)*3});function getSetQuarter(tt){return tt==null?Math.ceil((this.month()+1)/3):this.month((tt-1)*3+this.month()%3)}addFormatToken("D",["DD",2],"Do","date");addUnitAlias("date","D");addUnitPriority("date",9);addRegexToken("D",match1to2);addRegexToken("DD",match1to2,match2);addRegexToken("Do",function(tt,et){return tt?et._dayOfMonthOrdinalParse||et._ordinalParse:et._dayOfMonthOrdinalParseLenient});addParseToken(["D","DD"],DATE);addParseToken("Do",function(tt,et){et[DATE]=toInt(tt.match(match1to2)[0])});var getSetDayOfMonth=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear");addUnitAlias("dayOfYear","DDD");addUnitPriority("dayOfYear",4);addRegexToken("DDD",match1to3);addRegexToken("DDDD",match3);addParseToken(["DDD","DDDD"],function(tt,et,nt){nt._dayOfYear=toInt(tt)});function getSetDayOfYear(tt){var et=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return tt==null?et:this.add(tt-et,"d")}addFormatToken("m",["mm",2],0,"minute");addUnitAlias("minute","m");addUnitPriority("minute",14);addRegexToken("m",match1to2);addRegexToken("mm",match1to2,match2);addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second");addUnitAlias("second","s");addUnitPriority("second",15);addRegexToken("s",match1to2);addRegexToken("ss",match1to2,match2);addParseToken(["s","ss"],SECOND);var getSetSecond=makeGetSet("Seconds",!1);addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)});addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)});addFormatToken(0,["SSS",3],0,"millisecond");addFormatToken(0,["SSSS",4],0,function(){return this.millisecond()*10});addFormatToken(0,["SSSSS",5],0,function(){return this.millisecond()*100});addFormatToken(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});addFormatToken(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});addFormatToken(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});addFormatToken(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});addUnitAlias("millisecond","ms");addUnitPriority("millisecond",16);addRegexToken("S",match1to3,match1);addRegexToken("SS",match1to3,match2);addRegexToken("SSS",match1to3,match3);var token,getSetMillisecond;for(token="SSSS";token.length<=9;token+="S")addRegexToken(token,matchUnsigned);function parseMs(tt,et){et[MILLISECOND]=toInt(("0."+tt)*1e3)}for(token="S";token.length<=9;token+="S")addParseToken(token,parseMs);getSetMillisecond=makeGetSet("Milliseconds",!1);addFormatToken("z",0,0,"zoneAbbr");addFormatToken("zz",0,0,"zoneName");function getZoneAbbr(){return this._isUTC?"UTC":""}function getZoneName(){return this._isUTC?"Coordinated Universal Time":""}var proto=Moment.prototype;proto.add=add$1;proto.calendar=calendar$1$1;proto.clone=clone$1;proto.diff=diff;proto.endOf=endOf;proto.format=format$1;proto.from=from;proto.fromNow=fromNow;proto.to=to;proto.toNow=toNow;proto.get=stringGet;proto.invalidAt=invalidAt;proto.isAfter=isAfter;proto.isBefore=isBefore;proto.isBetween=isBetween;proto.isSame=isSame;proto.isSameOrAfter=isSameOrAfter;proto.isSameOrBefore=isSameOrBefore;proto.isValid=isValid$2;proto.lang=lang;proto.locale=locale$2;proto.localeData=localeData;proto.max=prototypeMax;proto.min=prototypeMin;proto.parsingFlags=parsingFlags;proto.set=stringSet;proto.startOf=startOf;proto.subtract=subtract$1;proto.toArray=toArray$2;proto.toObject=toObject;proto.toDate=toDate;proto.toISOString=toISOString;proto.inspect=inspect;typeof Symbol<"u"&&Symbol.for!=null&&(proto[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});proto.toJSON=toJSON;proto.toString=toString$5;proto.unix=unix;proto.valueOf=valueOf;proto.creationData=creationData;proto.eraName=getEraName;proto.eraNarrow=getEraNarrow;proto.eraAbbr=getEraAbbr;proto.eraYear=getEraYear;proto.year=getSetYear;proto.isLeapYear=getIsLeapYear;proto.weekYear=getSetWeekYear;proto.isoWeekYear=getSetISOWeekYear;proto.quarter=proto.quarters=getSetQuarter;proto.month=getSetMonth;proto.daysInMonth=getDaysInMonth;proto.week=proto.weeks=getSetWeek;proto.isoWeek=proto.isoWeeks=getSetISOWeek;proto.weeksInYear=getWeeksInYear;proto.weeksInWeekYear=getWeeksInWeekYear;proto.isoWeeksInYear=getISOWeeksInYear;proto.isoWeeksInISOWeekYear=getISOWeeksInISOWeekYear;proto.date=getSetDayOfMonth;proto.day=proto.days=getSetDayOfWeek;proto.weekday=getSetLocaleDayOfWeek;proto.isoWeekday=getSetISODayOfWeek;proto.dayOfYear=getSetDayOfYear;proto.hour=proto.hours=getSetHour;proto.minute=proto.minutes=getSetMinute;proto.second=proto.seconds=getSetSecond;proto.millisecond=proto.milliseconds=getSetMillisecond;proto.utcOffset=getSetOffset;proto.utc=setOffsetToUTC;proto.local=setOffsetToLocal;proto.parseZone=setOffsetToParsedOffset;proto.hasAlignedHourOffset=hasAlignedHourOffset;proto.isDST=isDaylightSavingTime;proto.isLocal=isLocal;proto.isUtcOffset=isUtcOffset;proto.isUtc=isUtc;proto.isUTC=isUtc;proto.zoneAbbr=getZoneAbbr;proto.zoneName=getZoneName;proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth);proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth);proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear);proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",getSetZone);proto.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",isDaylightSavingTimeShifted);function createUnix(tt){return createLocal(tt*1e3)}function createInZone(){return createLocal.apply(null,arguments).parseZone()}function preParsePostFormat(tt){return tt}var proto$1=Locale.prototype;proto$1.calendar=calendar$1;proto$1.longDateFormat=longDateFormat;proto$1.invalidDate=invalidDate;proto$1.ordinal=ordinal$1;proto$1.preparse=preParsePostFormat;proto$1.postformat=preParsePostFormat;proto$1.relativeTime=relativeTime;proto$1.pastFuture=pastFuture;proto$1.set=set$1;proto$1.eras=localeEras;proto$1.erasParse=localeErasParse;proto$1.erasConvertYear=localeErasConvertYear;proto$1.erasAbbrRegex=erasAbbrRegex;proto$1.erasNameRegex=erasNameRegex;proto$1.erasNarrowRegex=erasNarrowRegex;proto$1.months=localeMonths;proto$1.monthsShort=localeMonthsShort;proto$1.monthsParse=localeMonthsParse;proto$1.monthsRegex=monthsRegex;proto$1.monthsShortRegex=monthsShortRegex;proto$1.week=localeWeek;proto$1.firstDayOfYear=localeFirstDayOfYear;proto$1.firstDayOfWeek=localeFirstDayOfWeek;proto$1.weekdays=localeWeekdays;proto$1.weekdaysMin=localeWeekdaysMin;proto$1.weekdaysShort=localeWeekdaysShort;proto$1.weekdaysParse=localeWeekdaysParse;proto$1.weekdaysRegex=weekdaysRegex;proto$1.weekdaysShortRegex=weekdaysShortRegex;proto$1.weekdaysMinRegex=weekdaysMinRegex;proto$1.isPM=localeIsPM;proto$1.meridiem=localeMeridiem;function get$1$1(tt,et,nt,rt){var it=getLocale(),ot=createUTC().set(rt,et);return it[nt](ot,tt)}function listMonthsImpl(tt,et,nt){if(isNumber$3(tt)&&(et=tt,tt=void 0),tt=tt||"",et!=null)return get$1$1(tt,et,nt,"month");var rt,it=[];for(rt=0;rt<12;rt++)it[rt]=get$1$1(tt,rt,nt,"month");return it}function listWeekdaysImpl(tt,et,nt,rt){typeof tt=="boolean"?(isNumber$3(et)&&(nt=et,et=void 0),et=et||""):(et=tt,nt=et,tt=!1,isNumber$3(et)&&(nt=et,et=void 0),et=et||"");var it=getLocale(),ot=tt?it._week.dow:0,at,st=[];if(nt!=null)return get$1$1(et,(nt+ot)%7,rt,"day");for(at=0;at<7;at++)st[at]=get$1$1(et,(at+ot)%7,rt,"day");return st}function listMonths(tt,et){return listMonthsImpl(tt,et,"months")}function listMonthsShort(tt,et){return listMonthsImpl(tt,et,"monthsShort")}function listWeekdays(tt,et,nt){return listWeekdaysImpl(tt,et,nt,"weekdays")}function listWeekdaysShort(tt,et,nt){return listWeekdaysImpl(tt,et,nt,"weekdaysShort")}function listWeekdaysMin(tt,et,nt){return listWeekdaysImpl(tt,et,nt,"weekdaysMin")}getSetGlobalLocale("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(tt){var et=tt%10,nt=toInt(tt%100/10)===1?"th":et===1?"st":et===2?"nd":et===3?"rd":"th";return tt+nt}});hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale);hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var mathAbs=Math.abs;function abs(){var tt=this._data;return this._milliseconds=mathAbs(this._milliseconds),this._days=mathAbs(this._days),this._months=mathAbs(this._months),tt.milliseconds=mathAbs(tt.milliseconds),tt.seconds=mathAbs(tt.seconds),tt.minutes=mathAbs(tt.minutes),tt.hours=mathAbs(tt.hours),tt.months=mathAbs(tt.months),tt.years=mathAbs(tt.years),this}function addSubtract$1(tt,et,nt,rt){var it=createDuration(et,nt);return tt._milliseconds+=rt*it._milliseconds,tt._days+=rt*it._days,tt._months+=rt*it._months,tt._bubble()}function add$1$1(tt,et){return addSubtract$1(this,tt,et,1)}function subtract$1$1(tt,et){return addSubtract$1(this,tt,et,-1)}function absCeil(tt){return tt<0?Math.floor(tt):Math.ceil(tt)}function bubble(){var tt=this._milliseconds,et=this._days,nt=this._months,rt=this._data,it,ot,at,st,lt;return tt>=0&&et>=0&&nt>=0||tt<=0&&et<=0&&nt<=0||(tt+=absCeil(monthsToDays(nt)+et)*864e5,et=0,nt=0),rt.milliseconds=tt%1e3,it=absFloor(tt/1e3),rt.seconds=it%60,ot=absFloor(it/60),rt.minutes=ot%60,at=absFloor(ot/60),rt.hours=at%24,et+=absFloor(at/24),lt=absFloor(daysToMonths(et)),nt+=lt,et-=absCeil(monthsToDays(lt)),st=absFloor(nt/12),nt%=12,rt.days=et,rt.months=nt,rt.years=st,this}function daysToMonths(tt){return tt*4800/146097}function monthsToDays(tt){return tt*146097/4800}function as(tt){if(!this.isValid())return NaN;var et,nt,rt=this._milliseconds;if(tt=normalizeUnits(tt),tt==="month"||tt==="quarter"||tt==="year")switch(et=this._days+rt/864e5,nt=this._months+daysToMonths(et),tt){case"month":return nt;case"quarter":return nt/3;case"year":return nt/12}else switch(et=this._days+Math.round(monthsToDays(this._months)),tt){case"week":return et/7+rt/6048e5;case"day":return et+rt/864e5;case"hour":return et*24+rt/36e5;case"minute":return et*1440+rt/6e4;case"second":return et*86400+rt/1e3;case"millisecond":return Math.floor(et*864e5)+rt;default:throw new Error("Unknown unit "+tt)}}function valueOf$1(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6:NaN}function makeAs(tt){return function(){return this.as(tt)}}var asMilliseconds=makeAs("ms"),asSeconds=makeAs("s"),asMinutes=makeAs("m"),asHours=makeAs("h"),asDays=makeAs("d"),asWeeks=makeAs("w"),asMonths=makeAs("M"),asQuarters=makeAs("Q"),asYears=makeAs("y");function clone$1$1(){return createDuration(this)}function get$2$1(tt){return tt=normalizeUnits(tt),this.isValid()?this[tt+"s"]():NaN}function makeGetter(tt){return function(){return this.isValid()?this._data[tt]:NaN}}var milliseconds=makeGetter("milliseconds"),seconds=makeGetter("seconds"),minutes=makeGetter("minutes"),hours=makeGetter("hours"),days=makeGetter("days"),months=makeGetter("months"),years=makeGetter("years");function weeks(){return absFloor(this.days()/7)}var round$1=Math.round,thresholds={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function substituteTimeAgo(tt,et,nt,rt,it){return it.relativeTime(et||1,!!nt,tt,rt)}function relativeTime$1(tt,et,nt,rt){var it=createDuration(tt).abs(),ot=round$1(it.as("s")),at=round$1(it.as("m")),st=round$1(it.as("h")),lt=round$1(it.as("d")),ct=round$1(it.as("M")),ut=round$1(it.as("w")),ht=round$1(it.as("y")),dt=ot<=nt.ss&&["s",ot]||ot0,dt[4]=rt,substituteTimeAgo.apply(null,dt)}function getSetRelativeTimeRounding(tt){return tt===void 0?round$1:typeof tt=="function"?(round$1=tt,!0):!1}function getSetRelativeTimeThreshold(tt,et){return thresholds[tt]===void 0?!1:et===void 0?thresholds[tt]:(thresholds[tt]=et,tt==="s"&&(thresholds.ss=et-1),!0)}function humanize(tt,et){if(!this.isValid())return this.localeData().invalidDate();var nt=!1,rt=thresholds,it,ot;return typeof tt=="object"&&(et=tt,tt=!1),typeof tt=="boolean"&&(nt=tt),typeof et=="object"&&(rt=Object.assign({},thresholds,et),et.s!=null&&et.ss==null&&(rt.ss=et.s-1)),it=this.localeData(),ot=relativeTime$1(this,!nt,rt,it),nt&&(ot=it.pastFuture(+this,ot)),it.postformat(ot)}var abs$1=Math.abs;function sign$1(tt){return(tt>0)-(tt<0)||+tt}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var tt=abs$1(this._milliseconds)/1e3,et=abs$1(this._days),nt=abs$1(this._months),rt,it,ot,at,st=this.asSeconds(),lt,ct,ut,ht;return st?(rt=absFloor(tt/60),it=absFloor(rt/60),tt%=60,rt%=60,ot=absFloor(nt/12),nt%=12,at=tt?tt.toFixed(3).replace(/\.?0+$/,""):"",lt=st<0?"-":"",ct=sign$1(this._months)!==sign$1(st)?"-":"",ut=sign$1(this._days)!==sign$1(st)?"-":"",ht=sign$1(this._milliseconds)!==sign$1(st)?"-":"",lt+"P"+(ot?ct+ot+"Y":"")+(nt?ct+nt+"M":"")+(et?ut+et+"D":"")+(it||rt||tt?"T":"")+(it?ht+it+"H":"")+(rt?ht+rt+"M":"")+(tt?ht+at+"S":"")):"P0D"}var proto$2=Duration.prototype;proto$2.isValid=isValid$1;proto$2.abs=abs;proto$2.add=add$1$1;proto$2.subtract=subtract$1$1;proto$2.as=as;proto$2.asMilliseconds=asMilliseconds;proto$2.asSeconds=asSeconds;proto$2.asMinutes=asMinutes;proto$2.asHours=asHours;proto$2.asDays=asDays;proto$2.asWeeks=asWeeks;proto$2.asMonths=asMonths;proto$2.asQuarters=asQuarters;proto$2.asYears=asYears;proto$2.valueOf=valueOf$1;proto$2._bubble=bubble;proto$2.clone=clone$1$1;proto$2.get=get$2$1;proto$2.milliseconds=milliseconds;proto$2.seconds=seconds;proto$2.minutes=minutes;proto$2.hours=hours;proto$2.days=days;proto$2.weeks=weeks;proto$2.months=months;proto$2.years=years;proto$2.humanize=humanize;proto$2.toISOString=toISOString$1;proto$2.toString=toISOString$1;proto$2.toJSON=toISOString$1;proto$2.locale=locale$2;proto$2.localeData=localeData;proto$2.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1);proto$2.lang=lang;addFormatToken("X",0,0,"unix");addFormatToken("x",0,0,"valueOf");addRegexToken("x",matchSigned);addRegexToken("X",matchTimestamp);addParseToken("X",function(tt,et,nt){nt._d=new Date(parseFloat(tt)*1e3)});addParseToken("x",function(tt,et,nt){nt._d=new Date(toInt(tt))});//! moment.js +hooks.version="2.29.4";setHookCallback(createLocal);hooks.fn=proto;hooks.min=min$2;hooks.max=max$2;hooks.now=now$2;hooks.utc=createUTC;hooks.unix=createUnix;hooks.months=listMonths;hooks.isDate=isDate;hooks.locale=getSetGlobalLocale;hooks.invalid=createInvalid;hooks.duration=createDuration;hooks.isMoment=isMoment;hooks.weekdays=listWeekdays;hooks.parseZone=createInZone;hooks.localeData=getLocale;hooks.isDuration=isDuration;hooks.monthsShort=listMonthsShort;hooks.weekdaysMin=listWeekdaysMin;hooks.defineLocale=defineLocale;hooks.updateLocale=updateLocale;hooks.locales=listLocales;hooks.weekdaysShort=listWeekdaysShort;hooks.normalizeUnits=normalizeUnits;hooks.relativeTimeRounding=getSetRelativeTimeRounding;hooks.relativeTimeThreshold=getSetRelativeTimeThreshold;hooks.calendarFormat=getCalendarFormat;hooks.prototype=proto;hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};const Table=({data:tt,showMuted:et})=>{const[nt]=useDataStore(at=>[at.setTopics]),[rt,it]=reactExports.useState(""),ot=async(at,st)=>{if(tt!=null&&tt.length){it(at);try{await putNodeData({ref_id:at,node_name:"muted_topic",node_value:st}),nt(tt.filter(lt=>lt.ref_id!==at))}catch(lt){console.warn(lt)}}};return tt!=null&&tt.length?jsxRuntimeExports.jsxs(MaterialTable,{component:"table",children:[jsxRuntimeExports.jsx(StyledTableHead,{children:jsxRuntimeExports.jsxs(TableRow$1,{component:"tr",children:[jsxRuntimeExports.jsx(StyledTableCell,{className:"empty"}),jsxRuntimeExports.jsx(StyledTableCell,{children:"Type"}),jsxRuntimeExports.jsx(StyledTableCell,{children:"Edge Count"}),jsxRuntimeExports.jsx(StyledTableCell,{children:"Edge list"}),jsxRuntimeExports.jsx(StyledTableCell,{children:"Date"}),jsxRuntimeExports.jsx(StyledTableCell,{children:et?"Unmute":"Mute"})]})}),(tt==null?void 0:tt.length)&&jsxRuntimeExports.jsx("tbody",{children:tt==null?void 0:tt.map(at=>jsxRuntimeExports.jsxs(StyledTableRow,{children:[jsxRuntimeExports.jsx(StyledTableCell,{className:"empty"}),jsxRuntimeExports.jsx(StyledTableCell,{children:at.topic}),jsxRuntimeExports.jsx(StyledTableCell,{children:at.edgeCount}),jsxRuntimeExports.jsx(StyledTableCell,{children:at.edgeList.map(st=>jsxRuntimeExports.jsx("span",{children:st},st))}),jsxRuntimeExports.jsx(StyledTableCell,{children:at.date_added_to_graph?jsxRuntimeExports.jsx("span",{children:hooks(at.date_added_to_graph).format("MM.DD.YYYY")}):null}),jsxRuntimeExports.jsx(StyledTableCell,{className:"cell-center",children:jsxRuntimeExports.jsx(Flex,{direction:"row",justify:"space-between",children:jsxRuntimeExports.jsx("div",{className:"approve-wrapper",children:rt===at.ref_id?jsxRuntimeExports.jsx(ClipLoader$2,{color:colors.white,size:16}):jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:at.muted_topic?jsxRuntimeExports.jsx(IconWrapper$2,{className:"centered",onClick:()=>ot(at.ref_id,!1),children:jsxRuntimeExports.jsx(MdCheckCircle,{color:colors.primaryGreen,fontSize:24})}):jsxRuntimeExports.jsx(IconWrapper$2,{className:"centered",onClick:()=>ot(at.ref_id,!0),children:jsxRuntimeExports.jsx(MdCancel,{color:colors.primaryRed,fontSize:24})})})})})}),jsxRuntimeExports.jsx(StyledTableCell,{className:"empty"})]},at.topic))})]}):jsxRuntimeExports.jsxs(Flex,{children:[jsxRuntimeExports.jsx(Text$3,{children:"There is not any results for selected filters"}),jsxRuntimeExports.jsx(FilterOffIcon,{})]})},IconWrapper$2=styled$4(Flex)` width: 20px; height: 20px; border-radius: 50%; @@ -7077,11 +7111,10 @@ ${({disabled:tt})=>tt&&Ae` & + & { margin-left: 4px; } -`,TopicSources=()=>{const[tt,et]=reactExports.useState(!0),[nt,rt]=reactExports.useState(!1),[it,ot]=useDataStore(at=>[at.topics,at.setTopics]);return reactExports.useEffect(()=>{(async()=>{et(!0);try{const lt=await getTopicsData({muted:nt?"True":"False"});ot(lt.data)}catch(st){console.warn(st)}finally{et(!1)}})()},[ot,nt]),jsxRuntimeExports.jsxs(Wrapper$i,{align:"stretch",direction:"column",justify:"flex-end",children:[jsxRuntimeExports.jsx(Heading$4,{align:"flex-start",justify:"space-between",children:jsxRuntimeExports.jsx(Text$3,{className:"title",children:"Topics"})}),jsxRuntimeExports.jsx(Pill,{className:"booster__pill",onClick:()=>rt(!nt),style:{marginLeft:"30px",marginBottom:"10px",padding:"5px 10px 5px 10px",width:"fit-content"},children:tt?jsxRuntimeExports.jsx(ClipLoader$2,{color:colors.white}):jsxRuntimeExports.jsx(Flex,{align:"center",direction:"row",justify:"center",children:jsxRuntimeExports.jsxs("div",{style:{fontSize:10},children:["Show ",nt?"Unmuted":"Muted"]})})}),jsxRuntimeExports.jsx(TableWrapper,{align:"center",justify:tt?"center":"flex-start",children:tt?jsxRuntimeExports.jsx(ClipLoader$2,{color:colors.white}):jsxRuntimeExports.jsx(Table,{data:it,showMuted:nt})})]})},Wrapper$i=styled$4(Flex)` +`,TopicSources=()=>{const[tt,et]=reactExports.useState(!0),[nt,rt]=reactExports.useState(!1),[it,ot]=useDataStore(ct=>[ct.topics,ct.setTopics]),[at,st]=reactExports.useState(DEFAULT$1);reactExports.useEffect(()=>{(async()=>{et(!0);try{const ht=await getTopicsData({muted:nt?"True":"False"});ot(ht.data)}catch(ut){console.warn(ut)}finally{et(!1)}})()},[ot,nt]);const lt=reactExports.useMemo(()=>it?at===DEFAULT$1?it:at===DATE$1?[...it].sort((ct,ut)=>ct.date_added_to_graph&&ut.date_added_to_graph?ct.date_added_to_graph-ut.date_added_to_graph:1):at===EDGES?[...it].sort((ct,ut)=>ct.edgeCount-ut.edgeCount):null:[],[at,it]);return jsxRuntimeExports.jsxs(Wrapper$i,{direction:"column",justify:"flex-end",children:[jsxRuntimeExports.jsx(Heading$4,{align:"flex-start",justify:"space-between",children:jsxRuntimeExports.jsx(Text$3,{className:"title",children:"Topics"})}),jsxRuntimeExports.jsxs(ActionsWrapper,{children:[jsxRuntimeExports.jsxs(Button$2,{onClick:()=>rt(!nt),size:"medium",children:[nt?"Show Unmuted":"Show Muted",tt&&jsxRuntimeExports.jsx(ClipLoader$2,{color:colors.BLUE_PRESS_STATE,size:10})]}),jsxRuntimeExports.jsx(Filter,{currentFilter:at,onChangeFilter:st})]}),jsxRuntimeExports.jsx(TableWrapper,{align:"center",justify:tt?"center":"flex-start",children:tt?jsxRuntimeExports.jsx(ClipLoader$2,{color:colors.white}):jsxRuntimeExports.jsx(Table,{data:lt||[],showMuted:nt})})]})},Wrapper$i=styled$4(Flex)` flex: 1; .title { - margin-bottom: 32px; font-size: 20px; color: ${colors.white}; font-family: Barlow; @@ -7108,6 +7141,9 @@ ${({disabled:tt})=>tt&&Ae` overflow: auto; flex: 1; width: 100%; +`,ActionsWrapper=styled$4(Flex).attrs({direction:"row",align:"center",justify:"space-between"})` + padding: 0 36px; + margin-bottom: 32px; `,TabPanel=tt=>{const{children:et,value:nt,index:rt,...it}=tt;return nt===rt?jsxRuntimeExports.jsx(TabPanelWrapper,{"aria-labelledby":`simple-tab-${rt}`,hidden:nt!==rt,id:`simple-tabpanel-${rt}`,role:"tabpanel",...it,children:et}):null};function a11yProps(tt){return{id:`simple-tab-${tt}`,"aria-controls":`simple-tabpanel-${tt}`}}const SourcesView=()=>{const[tt,et]=reactExports.useState(0),nt=(rt,it)=>{et(it)};return jsxRuntimeExports.jsxs(Wrapper$h,{direction:"column",children:[jsxRuntimeExports.jsxs(StyledTabs,{"aria-label":"basic tabs example",onChange:nt,value:tt,children:[jsxRuntimeExports.jsx(StyledTab,{disableRipple:!0,label:"Sources table",...a11yProps(0)}),jsxRuntimeExports.jsx(StyledTab,{color:colors.white,disableRipple:!0,label:"Queued sources",...a11yProps(1)}),jsxRuntimeExports.jsx(StyledTab,{color:colors.white,disableRipple:!0,label:"Topics",...a11yProps(1)})]}),jsxRuntimeExports.jsx(TabPanel,{index:0,value:tt,children:jsxRuntimeExports.jsx(Sources,{})}),jsxRuntimeExports.jsx(TabPanel,{index:1,value:tt,children:jsxRuntimeExports.jsx(QueuedSources,{})}),jsxRuntimeExports.jsx(TabPanel,{index:2,value:tt,children:jsxRuntimeExports.jsx(TopicSources,{})})]})},StyledTabs=styled$4(Tabs$1)` && { background: rgba(0, 0, 0, 0.2); @@ -7175,9 +7211,9 @@ ${({disabled:tt})=>tt&&Ae` * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */lodash.exports;(function(tt,et){(function(){var nt,rt="4.17.21",it=200,ot="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",at="Expected a function",st="Invalid `variable` option passed into `_.template`",lt="__lodash_hash_undefined__",ct=500,ut="__lodash_placeholder__",ht=1,dt=2,pt=4,mt=1,gt=2,yt=1,bt=2,vt=4,xt=8,kt=16,St=32,Tt=64,At=128,Et=256,$t=512,Dt=30,jt="...",Pt=800,Ct=16,wt=1,It=2,Ot=3,Wt=1/0,zt=9007199254740991,Ft=17976931348623157e292,Nt=0/0,Ut=4294967295,Mt=Ut-1,Ht=Ut>>>1,en=[["ary",At],["bind",yt],["bindKey",bt],["curry",xt],["curryRight",kt],["flip",$t],["partial",St],["partialRight",Tt],["rearg",Et]],sn="[object Arguments]",Kt="[object Array]",rn="[object AsyncFunction]",nn="[object Boolean]",hn="[object Date]",vn="[object DOMException]",an="[object Error]",Qt="[object Function]",_n="[object GeneratorFunction]",Pn="[object Map]",$n="[object Number]",Nn="[object Null]",Tn="[object Object]",cn="[object Promise]",mn="[object Proxy]",In="[object RegExp]",An="[object Set]",wn="[object String]",fn="[object Symbol]",pn="[object Undefined]",kn="[object WeakMap]",Dn="[object WeakSet]",un="[object ArrayBuffer]",Zt="[object DataView]",Xt="[object Float32Array]",Sn="[object Float64Array]",Rn="[object Int8Array]",jn="[object Int16Array]",On="[object Int32Array]",Zn="[object Uint8Array]",Vn="[object Uint8ClampedArray]",qn="[object Uint16Array]",zn="[object Uint32Array]",Jn=/\b__p \+= '';/g,Hn=/\b(__p \+=) '' \+/g,pr=/(__e\(.*?\)|\b__t\)) \+\n'';/g,fr=/&(?:amp|lt|gt|quot|#39);/g,xr=/[&<>"']/g,io=RegExp(fr.source),Tr=RegExp(xr.source),Ar=/<%-([\s\S]+?)%>/g,qr=/<%([\s\S]+?)%>/g,jr=/<%=([\s\S]+?)%>/g,Fr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ao=/^\w*$/,Yr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Dr=/[\\^$.*+?()[\]{}|]/g,go=RegExp(Dr.source),xn=/^\s+/,Mn=/\s/,dn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Jt=/\{\n\/\* \[wrapped with (.+)\] \*/,En=/,? & /,Ln=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Un=/[()=,{}\[\]\/\s]/,Kn=/\\(\\)?/g,nr=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,lr=/\w*$/,cr=/^[-+]0x[0-9a-f]+$/i,Hr=/^0b[01]+$/i,vr=/^\[object .+?Constructor\]$/,Nr=/^0o[0-7]+$/i,Gr=/^(?:0|[1-9]\d*)$/,eo=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Zr=/($^)/,Jr=/['\n\r\u2028\u2029\\]/g,wr="\\ud800-\\udfff",Mr="\\u0300-\\u036f",Ur="\\ufe20-\\ufe2f",Rr="\\u20d0-\\u20ff",Pr=Mr+Ur+Rr,Lr="\\u2700-\\u27bf",Wr="a-z\\xdf-\\xf6\\xf8-\\xff",Br="\\xac\\xb1\\xd7\\xf7",tr="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",ir="\\u2000-\\u206f",Sr=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",dr="A-Z\\xc0-\\xd6\\xd8-\\xde",br="\\ufe0e\\ufe0f",$r=Br+tr+ir+Sr,no="['’]",so="["+wr+"]",fo="["+$r+"]",po="["+Pr+"]",Yn="\\d+",vo="["+Lr+"]",_o="["+Wr+"]",xo="[^"+wr+$r+Yn+Lr+Wr+dr+"]",bo="\\ud83c[\\udffb-\\udfff]",Co="(?:"+po+"|"+bo+")",Ro="[^"+wr+"]",Wo="(?:\\ud83c[\\udde6-\\uddff]){2}",Po="[\\ud800-\\udbff][\\udc00-\\udfff]",Fo="["+dr+"]",Go="\\u200d",Xo="(?:"+_o+"|"+xo+")",ga="(?:"+Fo+"|"+xo+")",na="(?:"+no+"(?:d|ll|m|re|s|t|ve))?",$a="(?:"+no+"(?:D|LL|M|RE|S|T|VE))?",Zo=Co+"?",pu="["+br+"]?",eu="(?:"+Go+"(?:"+[Ro,Wo,Po].join("|")+")"+pu+Zo+")*",No="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Mp="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",tu=pu+Zo+eu,op="(?:"+[vo,Wo,Po].join("|")+")"+tu,Rp="(?:"+[Ro+po+"?",po,Wo,Po,so].join("|")+")",mm=RegExp(no,"g"),ts=RegExp(po,"g"),mu=RegExp(bo+"(?="+bo+")|"+Rp+tu,"g"),gm=RegExp([Fo+"?"+_o+"+"+na+"(?="+[fo,Fo,"$"].join("|")+")",ga+"+"+$a+"(?="+[fo,Fo+Xo,"$"].join("|")+")",Fo+"?"+Xo+"+"+na,Fo+"+"+$a,Mp,No,Yn,op].join("|"),"g"),Us=RegExp("["+Go+wr+Pr+br+"]"),Bp=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Vu=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Xs=-1,Yo={};Yo[Xt]=Yo[Sn]=Yo[Rn]=Yo[jn]=Yo[On]=Yo[Zn]=Yo[Vn]=Yo[qn]=Yo[zn]=!0,Yo[sn]=Yo[Kt]=Yo[un]=Yo[nn]=Yo[Zt]=Yo[hn]=Yo[an]=Yo[Qt]=Yo[Pn]=Yo[$n]=Yo[Tn]=Yo[In]=Yo[An]=Yo[wn]=Yo[kn]=!1;var Ko={};Ko[sn]=Ko[Kt]=Ko[un]=Ko[Zt]=Ko[nn]=Ko[hn]=Ko[Xt]=Ko[Sn]=Ko[Rn]=Ko[jn]=Ko[On]=Ko[Pn]=Ko[$n]=Ko[Tn]=Ko[In]=Ko[An]=Ko[wn]=Ko[fn]=Ko[Zn]=Ko[Vn]=Ko[qn]=Ko[zn]=!0,Ko[an]=Ko[Qt]=Ko[kn]=!1;var Zs={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},zs={"&":"&","<":"<",">":">",'"':""","'":"'"},nu={"&":"&","<":"<",">":">",""":'"',"'":"'"},Cl={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Op=parseFloat,jp=parseInt,Ws=typeof commonjsGlobal=="object"&&commonjsGlobal&&commonjsGlobal.Object===Object&&commonjsGlobal,Hu=typeof self=="object"&&self&&self.Object===Object&&self,ns=Ws||Hu||Function("return this")(),gu=et&&!et.nodeType&&et,ls=gu&&!0&&tt&&!tt.nodeType&&tt,ys=ls&&ls.exports===gu,Iu=ys&&Ws.process,rs=function(){try{var er=ls&&ls.require&&ls.require("util").types;return er||Iu&&Iu.binding&&Iu.binding("util")}catch{}}(),yu=rs&&rs.isArrayBuffer,Gu=rs&&rs.isDate,Dp=rs&&rs.isMap,bs=rs&&rs.isRegExp,$s=rs&&rs.isSet,os=rs&&rs.isTypedArray;function Vo(er,Er,gr){switch(gr.length){case 0:return er.call(Er);case 1:return er.call(Er,gr[0]);case 2:return er.call(Er,gr[0],gr[1]);case 3:return er.call(Er,gr[0],gr[1],gr[2])}return er.apply(Er,gr)}function Js(er,Er,gr,ro){for(var To=-1,$o=er==null?0:er.length;++To<$o;){var es=er[To];Er(ro,es,gr(es),er)}return ro}function ws(er,Er){for(var gr=-1,ro=er==null?0:er.length;++gr-1}function ap(er,Er,gr){for(var ro=-1,To=er==null?0:er.length;++ro-1;);return gr}function cp(er,Er){for(var gr=er.length;gr--&&Fl(Er,er[gr],0)>-1;);return gr}function Wl(er,Er){for(var gr=er.length,ro=0;gr--;)er[gr]===Er&&++ro;return ro}var Ny=Ys(Zs),Ly=Ys(zs);function Xm(er){return"\\"+Cl[er]}function Zm(er,Er){return er==null?nt:er[Er]}function qu(er){return Us.test(er)}function Up(er){return Bp.test(er)}function up(er){for(var Er,gr=[];!(Er=er.next()).done;)gr.push(Er.value);return gr}function zp(er){var Er=-1,gr=Array(er.size);return er.forEach(function(ro,To){gr[++Er]=[To,ro]}),gr}function hp(er,Er){return function(gr){return er(Er(gr))}}function Vl(er,Er){for(var gr=-1,ro=er.length,To=0,$o=[];++gr-1}function Sm(Rt,Vt){var Yt=this.__data__,yn=Bu(Yt,Rt);return yn<0?(++this.size,Yt.push([Rt,Vt])):Yt[yn][1]=Vt,this}Hl.prototype.clear=a0,Hl.prototype.delete=oy,Hl.prototype.get=s0,Hl.prototype.has=l0,Hl.prototype.set=Sm;function $l(Rt){var Vt=-1,Yt=Rt==null?0:Rt.length;for(this.clear();++Vt=Vt?Rt:Vt)),Rt}function _l(Rt,Vt,Yt,yn,Bn,Wn){var Xn,Qn=Vt&ht,ar=Vt&dt,Ir=Vt&pt;if(Yt&&(Xn=Bn?Yt(Rt,yn,Bn,Wn):Yt(Rt)),Xn!==nt)return Xn;if(!ds(Rt))return Rt;var Cr=Mo(Rt);if(Cr){if(Xn=Ew(Rt),!Qn)return Ns(Rt,Xn)}else{var Or=Ks(Rt),Qr=Or==Qt||Or==_n;if(Pp(Rt))return Ay(Rt,Qn);if(Or==Tn||Or==sn||Qr&&!Bn){if(Xn=ar||Qr?{}:E1(Rt),!Qn)return ar?S0(Rt,p0(Xn,Rt)):q0(Rt,hy(Xn,Rt))}else{if(!Ko[Or])return Bn?Rt:{};Xn=Tw(Rt,Or,Qn)}}Wn||(Wn=new xs);var uo=Wn.get(Rt);if(uo)return uo;Wn.set(Rt,Xn),ew(Rt)?Rt.forEach(function(Eo){Xn.add(_l(Eo,Vt,Yt,Eo,Rt,Wn))}):J1(Rt)&&Rt.forEach(function(Eo,Uo){Xn.set(Uo,_l(Eo,Vt,Yt,Uo,Rt,Wn))});var So=Ir?ar?zo:ms:ar?Ol:Fs,Lo=Cr?nt:So(Rt);return ws(Lo||Rt,function(Eo,Uo){Lo&&(Uo=Eo,Eo=Rt[Uo]),Gl(Xn,Uo,_l(Eo,Vt,Yt,Uo,Rt,Wn))}),Xn}function dy(Rt){var Vt=Fs(Rt);return function(Yt){return Am(Yt,Rt,Vt)}}function Am(Rt,Vt,Yt){var yn=Yt.length;if(Rt==null)return!yn;for(Rt=ko(Rt);yn--;){var Bn=Yt[yn],Wn=Vt[Bn],Xn=Rt[Bn];if(Xn===nt&&!(Bn in Rt)||!Wn(Xn))return!1}return!0}function fy(Rt,Vt,Yt){if(typeof Rt!="function")throw new Gs(at);return My(function(){Rt.apply(nt,Yt)},Vt)}function Qu(Rt,Vt,Yt,yn){var Bn=-1,Wn=Nl,Xn=!0,Qn=Rt.length,ar=[],Ir=Vt.length;if(!Qn)return ar;Yt&&(Vt=ba(Vt,Vs(Yt))),yn?(Wn=ap,Xn=!1):Vt.length>=it&&(Wn=As,Xn=!1,Vt=new Ru(Vt));e:for(;++BnBn?0:Bn+Yt),yn=yn===nt||yn>Bn?Bn:Do(yn),yn<0&&(yn+=Bn),yn=Yt>yn?0:nw(yn);Yt0&&Yt(Qn)?Vt>1?Is(Qn,Vt-1,Yt,yn,Bn):Ll(Bn,Qn):yn||(Bn[Bn.length]=Qn)}return Bn}var xp=Fm(),rm=Fm(!0);function xl(Rt,Vt){return Rt&&xp(Rt,Vt,Fs)}function kp(Rt,Vt){return Rt&&rm(Rt,Vt,Fs)}function _h(Rt,Vt){return Ps(Vt,function(Yt){return np(Rt[Yt])})}function Xl(Rt,Vt){Vt=Fu(Vt,Rt);for(var Yt=0,yn=Vt.length;Rt!=null&&YtVt}function y0(Rt,Vt){return Rt!=null&&qo.call(Rt,Vt)}function gy(Rt,Vt){return Rt!=null&&Vt in ko(Rt)}function H0(Rt,Vt,Yt){return Rt>=Ms(Vt,Yt)&&Rt<_s(Vt,Yt)}function Sp(Rt,Vt,Yt){for(var yn=Yt?ap:Nl,Bn=Rt[0].length,Wn=Rt.length,Xn=Wn,Qn=gr(Wn),ar=1/0,Ir=[];Xn--;){var Cr=Rt[Xn];Xn&&Vt&&(Cr=ba(Cr,Vs(Vt))),ar=Ms(Cr.length,ar),Qn[Xn]=!Yt&&(Vt||Bn>=120&&Cr.length>=120)?new Ru(Xn&&Cr):nt}Cr=Rt[0];var Or=-1,Qr=Qn[0];e:for(;++Or-1;)Qn!==Rt&&Pu.call(Qn,ar,1),Pu.call(Rt,ar,1);return Rt}function Os(Rt,Vt){for(var Yt=Rt?Vt.length:0,yn=Yt-1;Yt--;){var Bn=Vt[Yt];if(Yt==yn||Bn!==Wn){var Wn=Bn;tp(Bn)?Pu.call(Rt,Bn,1):Ey(Rt,Bn)}}return Rt}function cu(Rt,Vt){return Rt+Xp(ry()*(Vt-Rt+1))}function Pl(Rt,Vt,Yt,yn){for(var Bn=-1,Wn=_s(Kp((Vt-Rt)/(Yt||1)),0),Xn=gr(Wn);Wn--;)Xn[yn?Wn:++Bn]=Rt,Rt+=Yt;return Xn}function $p(Rt,Vt){var Yt="";if(!Rt||Vt<1||Vt>zt)return Yt;do Vt%2&&(Yt+=Rt),Vt=Xp(Vt/2),Vt&&(Rt+=Rt);while(Vt);return Yt}function mo(Rt,Vt){return _b(A1(Rt,Vt,Dl),Rt+"")}function b0(Rt){return tm(Vm(Rt))}function vy(Rt,Vt){var Yt=Vm(Rt);return I0(Yt,Ou(Vt,0,Yt.length))}function _f(Rt,Vt,Yt,yn){if(!ds(Rt))return Rt;Vt=Fu(Vt,Rt);for(var Bn=-1,Wn=Vt.length,Xn=Wn-1,Qn=Rt;Qn!=null&&++BnBn?0:Bn+Vt),Yt=Yt>Bn?Bn:Yt,Yt<0&&(Yt+=Bn),Bn=Vt>Yt?0:Yt-Vt>>>0,Vt>>>=0;for(var Wn=gr(Bn);++yn>>1,Xn=Rt[Wn];Xn!==null&&!Jl(Xn)&&(Yt?Xn<=Vt:Xn=it){var Ir=Vt?null:Ls(Rt);if(Ir)return Wp(Ir);Xn=!1,Bn=As,ar=new Ru}else ar=Vt?[]:Qn;e:for(;++yn=yn?Rt:El(Rt,Vt,Yt)}var x0=Yp||function(Rt){return ns.clearTimeout(Rt)};function Ay(Rt,Vt){if(Vt)return Rt.slice();var Yt=Rt.length,yn=_g?_g(Yt):new Rt.constructor(Yt);return Rt.copy(yn),yn}function Nm(Rt){var Vt=new Rt.constructor(Rt.byteLength);return new Gp(Vt).set(new Gp(Rt)),Vt}function G0(Rt,Vt){var Yt=Vt?Nm(Rt.buffer):Rt.buffer;return new Rt.constructor(Yt,Rt.byteOffset,Rt.byteLength)}function Ml(Rt){var Vt=new Rt.constructor(Rt.source,lr.exec(Rt));return Vt.lastIndex=Rt.lastIndex,Vt}function Cy(Rt){return _u?ko(_u.call(Rt)):{}}function k0(Rt,Vt){var Yt=Vt?Nm(Rt.buffer):Rt.buffer;return new Rt.constructor(Yt,Rt.byteOffset,Rt.length)}function Su(Rt,Vt){if(Rt!==Vt){var Yt=Rt!==nt,yn=Rt===null,Bn=Rt===Rt,Wn=Jl(Rt),Xn=Vt!==nt,Qn=Vt===null,ar=Vt===Vt,Ir=Jl(Vt);if(!Qn&&!Ir&&!Wn&&Rt>Vt||Wn&&Xn&&ar&&!Qn&&!Ir||yn&&Xn&&ar||!Yt&&ar||!Bn)return 1;if(!yn&&!Wn&&!Ir&&Rt=Qn)return ar;var Ir=Yt[yn];return ar*(Ir=="desc"?-1:1)}}return Rt.index-Vt.index}function zu(Rt,Vt,Yt,yn){for(var Bn=-1,Wn=Rt.length,Xn=Yt.length,Qn=-1,ar=Vt.length,Ir=_s(Wn-Xn,0),Cr=gr(ar+Ir),Or=!yn;++Qn1?Yt[Bn-1]:nt,Xn=Bn>2?Yt[2]:nt;for(Wn=Rt.length>3&&typeof Wn=="function"?(Bn--,Wn):nt,Xn&&Il(Yt[0],Yt[1],Xn)&&(Wn=Bn<3?nt:Wn,Bn=1),Vt=ko(Vt);++yn-1?Bn[Wn?Vt[Xn]:Xn]:nt}}function gn(Rt){return jo(function(Vt){var Yt=Vt.length,yn=Yt,Bn=Rs.prototype.thru;for(Rt&&Vt.reverse();yn--;){var Wn=Vt[yn];if(typeof Wn!="function")throw new Gs(at);if(Bn&&!Xn&&Um(Wn)=="wrapper")var Xn=new Rs([],!0)}for(yn=Xn?yn:Yt;++yn1&&Ho.reverse(),Cr&&arQn))return!1;var Ir=Wn.get(Rt),Cr=Wn.get(Vt);if(Ir&&Cr)return Ir==Vt&&Cr==Rt;var Or=-1,Qr=!0,uo=Yt>?new Ru:nt;for(Wn.set(Rt,Vt),Wn.set(Vt,Rt);++Or1?"& ":"")+Vt[yn],Vt=Vt.join(Yt>2?", ":" "),Rt.replace(dn,`{ + */lodash.exports;(function(tt,et){(function(){var nt,rt="4.17.21",it=200,ot="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",at="Expected a function",st="Invalid `variable` option passed into `_.template`",lt="__lodash_hash_undefined__",ct=500,ut="__lodash_placeholder__",ht=1,dt=2,pt=4,mt=1,gt=2,yt=1,bt=2,vt=4,xt=8,kt=16,St=32,Tt=64,At=128,Et=256,$t=512,Dt=30,jt="...",Pt=800,Ct=16,wt=1,It=2,Ot=3,Wt=1/0,zt=9007199254740991,Ft=17976931348623157e292,Nt=0/0,Ut=4294967295,Mt=Ut-1,Ht=Ut>>>1,en=[["ary",At],["bind",yt],["bindKey",bt],["curry",xt],["curryRight",kt],["flip",$t],["partial",St],["partialRight",Tt],["rearg",Et]],sn="[object Arguments]",Kt="[object Array]",rn="[object AsyncFunction]",nn="[object Boolean]",hn="[object Date]",vn="[object DOMException]",an="[object Error]",Qt="[object Function]",_n="[object GeneratorFunction]",Pn="[object Map]",$n="[object Number]",Nn="[object Null]",Tn="[object Object]",cn="[object Promise]",mn="[object Proxy]",In="[object RegExp]",An="[object Set]",wn="[object String]",fn="[object Symbol]",pn="[object Undefined]",kn="[object WeakMap]",Dn="[object WeakSet]",un="[object ArrayBuffer]",Zt="[object DataView]",Xt="[object Float32Array]",Sn="[object Float64Array]",Rn="[object Int8Array]",jn="[object Int16Array]",On="[object Int32Array]",Zn="[object Uint8Array]",Vn="[object Uint8ClampedArray]",qn="[object Uint16Array]",zn="[object Uint32Array]",Jn=/\b__p \+= '';/g,Hn=/\b(__p \+=) '' \+/g,pr=/(__e\(.*?\)|\b__t\)) \+\n'';/g,fr=/&(?:amp|lt|gt|quot|#39);/g,xr=/[&<>"']/g,io=RegExp(fr.source),Tr=RegExp(xr.source),Ar=/<%-([\s\S]+?)%>/g,qr=/<%([\s\S]+?)%>/g,jr=/<%=([\s\S]+?)%>/g,Fr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ao=/^\w*$/,Yr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Dr=/[\\^$.*+?()[\]{}|]/g,go=RegExp(Dr.source),xn=/^\s+/,Mn=/\s/,dn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Jt=/\{\n\/\* \[wrapped with (.+)\] \*/,En=/,? & /,Ln=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Un=/[()=,{}\[\]\/\s]/,Kn=/\\(\\)?/g,nr=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,lr=/\w*$/,cr=/^[-+]0x[0-9a-f]+$/i,Hr=/^0b[01]+$/i,vr=/^\[object .+?Constructor\]$/,Nr=/^0o[0-7]+$/i,Gr=/^(?:0|[1-9]\d*)$/,eo=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Zr=/($^)/,Jr=/['\n\r\u2028\u2029\\]/g,wr="\\ud800-\\udfff",Mr="\\u0300-\\u036f",Ur="\\ufe20-\\ufe2f",Rr="\\u20d0-\\u20ff",Pr=Mr+Ur+Rr,Lr="\\u2700-\\u27bf",Wr="a-z\\xdf-\\xf6\\xf8-\\xff",Br="\\xac\\xb1\\xd7\\xf7",tr="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",ir="\\u2000-\\u206f",Sr=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",dr="A-Z\\xc0-\\xd6\\xd8-\\xde",br="\\ufe0e\\ufe0f",$r=Br+tr+ir+Sr,no="['’]",so="["+wr+"]",fo="["+$r+"]",po="["+Pr+"]",Yn="\\d+",vo="["+Lr+"]",_o="["+Wr+"]",xo="[^"+wr+$r+Yn+Lr+Wr+dr+"]",bo="\\ud83c[\\udffb-\\udfff]",Co="(?:"+po+"|"+bo+")",Ro="[^"+wr+"]",Wo="(?:\\ud83c[\\udde6-\\uddff]){2}",Po="[\\ud800-\\udbff][\\udc00-\\udfff]",Fo="["+dr+"]",Go="\\u200d",Xo="(?:"+_o+"|"+xo+")",ga="(?:"+Fo+"|"+xo+")",na="(?:"+no+"(?:d|ll|m|re|s|t|ve))?",$a="(?:"+no+"(?:D|LL|M|RE|S|T|VE))?",Zo=Co+"?",pu="["+br+"]?",eu="(?:"+Go+"(?:"+[Ro,Wo,Po].join("|")+")"+pu+Zo+")*",No="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Mp="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",tu=pu+Zo+eu,op="(?:"+[vo,Wo,Po].join("|")+")"+tu,Rp="(?:"+[Ro+po+"?",po,Wo,Po,so].join("|")+")",mm=RegExp(no,"g"),ts=RegExp(po,"g"),mu=RegExp(bo+"(?="+bo+")|"+Rp+tu,"g"),gm=RegExp([Fo+"?"+_o+"+"+na+"(?="+[fo,Fo,"$"].join("|")+")",ga+"+"+$a+"(?="+[fo,Fo+Xo,"$"].join("|")+")",Fo+"?"+Xo+"+"+na,Fo+"+"+$a,Mp,No,Yn,op].join("|"),"g"),Us=RegExp("["+Go+wr+Pr+br+"]"),Bp=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Vu=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Xs=-1,Yo={};Yo[Xt]=Yo[Sn]=Yo[Rn]=Yo[jn]=Yo[On]=Yo[Zn]=Yo[Vn]=Yo[qn]=Yo[zn]=!0,Yo[sn]=Yo[Kt]=Yo[un]=Yo[nn]=Yo[Zt]=Yo[hn]=Yo[an]=Yo[Qt]=Yo[Pn]=Yo[$n]=Yo[Tn]=Yo[In]=Yo[An]=Yo[wn]=Yo[kn]=!1;var Ko={};Ko[sn]=Ko[Kt]=Ko[un]=Ko[Zt]=Ko[nn]=Ko[hn]=Ko[Xt]=Ko[Sn]=Ko[Rn]=Ko[jn]=Ko[On]=Ko[Pn]=Ko[$n]=Ko[Tn]=Ko[In]=Ko[An]=Ko[wn]=Ko[fn]=Ko[Zn]=Ko[Vn]=Ko[qn]=Ko[zn]=!0,Ko[an]=Ko[Qt]=Ko[kn]=!1;var Zs={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},zs={"&":"&","<":"<",">":">",'"':""","'":"'"},nu={"&":"&","<":"<",">":">",""":'"',"'":"'"},Cl={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Op=parseFloat,jp=parseInt,Ws=typeof commonjsGlobal=="object"&&commonjsGlobal&&commonjsGlobal.Object===Object&&commonjsGlobal,Hu=typeof self=="object"&&self&&self.Object===Object&&self,ns=Ws||Hu||Function("return this")(),gu=et&&!et.nodeType&&et,ls=gu&&!0&&tt&&!tt.nodeType&&tt,ys=ls&&ls.exports===gu,Iu=ys&&Ws.process,rs=function(){try{var er=ls&&ls.require&&ls.require("util").types;return er||Iu&&Iu.binding&&Iu.binding("util")}catch{}}(),yu=rs&&rs.isArrayBuffer,Gu=rs&&rs.isDate,Dp=rs&&rs.isMap,bs=rs&&rs.isRegExp,$s=rs&&rs.isSet,os=rs&&rs.isTypedArray;function Vo(er,Er,gr){switch(gr.length){case 0:return er.call(Er);case 1:return er.call(Er,gr[0]);case 2:return er.call(Er,gr[0],gr[1]);case 3:return er.call(Er,gr[0],gr[1],gr[2])}return er.apply(Er,gr)}function Js(er,Er,gr,ro){for(var To=-1,$o=er==null?0:er.length;++To<$o;){var es=er[To];Er(ro,es,gr(es),er)}return ro}function ws(er,Er){for(var gr=-1,ro=er==null?0:er.length;++gr-1}function ap(er,Er,gr){for(var ro=-1,To=er==null?0:er.length;++ro-1;);return gr}function cp(er,Er){for(var gr=er.length;gr--&&Fl(Er,er[gr],0)>-1;);return gr}function Wl(er,Er){for(var gr=er.length,ro=0;gr--;)er[gr]===Er&&++ro;return ro}var Ny=Ys(Zs),Ly=Ys(zs);function Xm(er){return"\\"+Cl[er]}function Zm(er,Er){return er==null?nt:er[Er]}function qu(er){return Us.test(er)}function Up(er){return Bp.test(er)}function up(er){for(var Er,gr=[];!(Er=er.next()).done;)gr.push(Er.value);return gr}function zp(er){var Er=-1,gr=Array(er.size);return er.forEach(function(ro,To){gr[++Er]=[To,ro]}),gr}function hp(er,Er){return function(gr){return er(Er(gr))}}function Vl(er,Er){for(var gr=-1,ro=er.length,To=0,$o=[];++gr-1}function Sm(Rt,Vt){var Yt=this.__data__,yn=Bu(Yt,Rt);return yn<0?(++this.size,Yt.push([Rt,Vt])):Yt[yn][1]=Vt,this}Hl.prototype.clear=a0,Hl.prototype.delete=oy,Hl.prototype.get=s0,Hl.prototype.has=l0,Hl.prototype.set=Sm;function $l(Rt){var Vt=-1,Yt=Rt==null?0:Rt.length;for(this.clear();++Vt=Vt?Rt:Vt)),Rt}function _l(Rt,Vt,Yt,yn,Bn,Wn){var Xn,Qn=Vt&ht,ar=Vt&dt,Ir=Vt&pt;if(Yt&&(Xn=Bn?Yt(Rt,yn,Bn,Wn):Yt(Rt)),Xn!==nt)return Xn;if(!ds(Rt))return Rt;var Cr=Mo(Rt);if(Cr){if(Xn=Tw(Rt),!Qn)return Ns(Rt,Xn)}else{var Or=Ks(Rt),Qr=Or==Qt||Or==_n;if(Pp(Rt))return Ay(Rt,Qn);if(Or==Tn||Or==sn||Qr&&!Bn){if(Xn=ar||Qr?{}:T1(Rt),!Qn)return ar?S0(Rt,p0(Xn,Rt)):q0(Rt,hy(Xn,Rt))}else{if(!Ko[Or])return Bn?Rt:{};Xn=Iw(Rt,Or,Qn)}}Wn||(Wn=new xs);var uo=Wn.get(Rt);if(uo)return uo;Wn.set(Rt,Xn),tw(Rt)?Rt.forEach(function(Eo){Xn.add(_l(Eo,Vt,Yt,Eo,Rt,Wn))}):Q1(Rt)&&Rt.forEach(function(Eo,Uo){Xn.set(Uo,_l(Eo,Vt,Yt,Uo,Rt,Wn))});var So=Ir?ar?zo:ms:ar?Ol:Fs,Lo=Cr?nt:So(Rt);return ws(Lo||Rt,function(Eo,Uo){Lo&&(Uo=Eo,Eo=Rt[Uo]),Gl(Xn,Uo,_l(Eo,Vt,Yt,Uo,Rt,Wn))}),Xn}function dy(Rt){var Vt=Fs(Rt);return function(Yt){return Am(Yt,Rt,Vt)}}function Am(Rt,Vt,Yt){var yn=Yt.length;if(Rt==null)return!yn;for(Rt=ko(Rt);yn--;){var Bn=Yt[yn],Wn=Vt[Bn],Xn=Rt[Bn];if(Xn===nt&&!(Bn in Rt)||!Wn(Xn))return!1}return!0}function fy(Rt,Vt,Yt){if(typeof Rt!="function")throw new Gs(at);return My(function(){Rt.apply(nt,Yt)},Vt)}function Qu(Rt,Vt,Yt,yn){var Bn=-1,Wn=Nl,Xn=!0,Qn=Rt.length,ar=[],Ir=Vt.length;if(!Qn)return ar;Yt&&(Vt=ba(Vt,Vs(Yt))),yn?(Wn=ap,Xn=!1):Vt.length>=it&&(Wn=As,Xn=!1,Vt=new Ru(Vt));e:for(;++BnBn?0:Bn+Yt),yn=yn===nt||yn>Bn?Bn:Do(yn),yn<0&&(yn+=Bn),yn=Yt>yn?0:rw(yn);Yt0&&Yt(Qn)?Vt>1?Is(Qn,Vt-1,Yt,yn,Bn):Ll(Bn,Qn):yn||(Bn[Bn.length]=Qn)}return Bn}var xp=Fm(),rm=Fm(!0);function xl(Rt,Vt){return Rt&&xp(Rt,Vt,Fs)}function kp(Rt,Vt){return Rt&&rm(Rt,Vt,Fs)}function _h(Rt,Vt){return Ps(Vt,function(Yt){return np(Rt[Yt])})}function Xl(Rt,Vt){Vt=Fu(Vt,Rt);for(var Yt=0,yn=Vt.length;Rt!=null&&YtVt}function y0(Rt,Vt){return Rt!=null&&qo.call(Rt,Vt)}function gy(Rt,Vt){return Rt!=null&&Vt in ko(Rt)}function H0(Rt,Vt,Yt){return Rt>=Ms(Vt,Yt)&&Rt<_s(Vt,Yt)}function Sp(Rt,Vt,Yt){for(var yn=Yt?ap:Nl,Bn=Rt[0].length,Wn=Rt.length,Xn=Wn,Qn=gr(Wn),ar=1/0,Ir=[];Xn--;){var Cr=Rt[Xn];Xn&&Vt&&(Cr=ba(Cr,Vs(Vt))),ar=Ms(Cr.length,ar),Qn[Xn]=!Yt&&(Vt||Bn>=120&&Cr.length>=120)?new Ru(Xn&&Cr):nt}Cr=Rt[0];var Or=-1,Qr=Qn[0];e:for(;++Or-1;)Qn!==Rt&&Pu.call(Qn,ar,1),Pu.call(Rt,ar,1);return Rt}function Os(Rt,Vt){for(var Yt=Rt?Vt.length:0,yn=Yt-1;Yt--;){var Bn=Vt[Yt];if(Yt==yn||Bn!==Wn){var Wn=Bn;tp(Bn)?Pu.call(Rt,Bn,1):Ey(Rt,Bn)}}return Rt}function cu(Rt,Vt){return Rt+Xp(ry()*(Vt-Rt+1))}function Pl(Rt,Vt,Yt,yn){for(var Bn=-1,Wn=_s(Kp((Vt-Rt)/(Yt||1)),0),Xn=gr(Wn);Wn--;)Xn[yn?Wn:++Bn]=Rt,Rt+=Yt;return Xn}function $p(Rt,Vt){var Yt="";if(!Rt||Vt<1||Vt>zt)return Yt;do Vt%2&&(Yt+=Rt),Vt=Xp(Vt/2),Vt&&(Rt+=Rt);while(Vt);return Yt}function mo(Rt,Vt){return _b(C1(Rt,Vt,Dl),Rt+"")}function b0(Rt){return tm(Vm(Rt))}function vy(Rt,Vt){var Yt=Vm(Rt);return I0(Yt,Ou(Vt,0,Yt.length))}function _f(Rt,Vt,Yt,yn){if(!ds(Rt))return Rt;Vt=Fu(Vt,Rt);for(var Bn=-1,Wn=Vt.length,Xn=Wn-1,Qn=Rt;Qn!=null&&++BnBn?0:Bn+Vt),Yt=Yt>Bn?Bn:Yt,Yt<0&&(Yt+=Bn),Bn=Vt>Yt?0:Yt-Vt>>>0,Vt>>>=0;for(var Wn=gr(Bn);++yn>>1,Xn=Rt[Wn];Xn!==null&&!Jl(Xn)&&(Yt?Xn<=Vt:Xn=it){var Ir=Vt?null:Ls(Rt);if(Ir)return Wp(Ir);Xn=!1,Bn=As,ar=new Ru}else ar=Vt?[]:Qn;e:for(;++yn=yn?Rt:El(Rt,Vt,Yt)}var x0=Yp||function(Rt){return ns.clearTimeout(Rt)};function Ay(Rt,Vt){if(Vt)return Rt.slice();var Yt=Rt.length,yn=_g?_g(Yt):new Rt.constructor(Yt);return Rt.copy(yn),yn}function Nm(Rt){var Vt=new Rt.constructor(Rt.byteLength);return new Gp(Vt).set(new Gp(Rt)),Vt}function G0(Rt,Vt){var Yt=Vt?Nm(Rt.buffer):Rt.buffer;return new Rt.constructor(Yt,Rt.byteOffset,Rt.byteLength)}function Ml(Rt){var Vt=new Rt.constructor(Rt.source,lr.exec(Rt));return Vt.lastIndex=Rt.lastIndex,Vt}function Cy(Rt){return _u?ko(_u.call(Rt)):{}}function k0(Rt,Vt){var Yt=Vt?Nm(Rt.buffer):Rt.buffer;return new Rt.constructor(Yt,Rt.byteOffset,Rt.length)}function Su(Rt,Vt){if(Rt!==Vt){var Yt=Rt!==nt,yn=Rt===null,Bn=Rt===Rt,Wn=Jl(Rt),Xn=Vt!==nt,Qn=Vt===null,ar=Vt===Vt,Ir=Jl(Vt);if(!Qn&&!Ir&&!Wn&&Rt>Vt||Wn&&Xn&&ar&&!Qn&&!Ir||yn&&Xn&&ar||!Yt&&ar||!Bn)return 1;if(!yn&&!Wn&&!Ir&&Rt=Qn)return ar;var Ir=Yt[yn];return ar*(Ir=="desc"?-1:1)}}return Rt.index-Vt.index}function zu(Rt,Vt,Yt,yn){for(var Bn=-1,Wn=Rt.length,Xn=Yt.length,Qn=-1,ar=Vt.length,Ir=_s(Wn-Xn,0),Cr=gr(ar+Ir),Or=!yn;++Qn1?Yt[Bn-1]:nt,Xn=Bn>2?Yt[2]:nt;for(Wn=Rt.length>3&&typeof Wn=="function"?(Bn--,Wn):nt,Xn&&Il(Yt[0],Yt[1],Xn)&&(Wn=Bn<3?nt:Wn,Bn=1),Vt=ko(Vt);++yn-1?Bn[Wn?Vt[Xn]:Xn]:nt}}function gn(Rt){return jo(function(Vt){var Yt=Vt.length,yn=Yt,Bn=Rs.prototype.thru;for(Rt&&Vt.reverse();yn--;){var Wn=Vt[yn];if(typeof Wn!="function")throw new Gs(at);if(Bn&&!Xn&&Um(Wn)=="wrapper")var Xn=new Rs([],!0)}for(yn=Xn?yn:Yt;++yn1&&Ho.reverse(),Cr&&arQn))return!1;var Ir=Wn.get(Rt),Cr=Wn.get(Vt);if(Ir&&Cr)return Ir==Vt&&Cr==Rt;var Or=-1,Qr=!0,uo=Yt>?new Ru:nt;for(Wn.set(Rt,Vt),Wn.set(Vt,Rt);++Or1?"& ":"")+Vt[yn],Vt=Vt.join(Yt>2?", ":" "),Rt.replace(dn,`{ /* [wrapped with `+Vt+`] */ -`)}function Aw(Rt){return Mo(Rt)||pm(Rt)||!!(ty&&Rt&&Rt[ty])}function tp(Rt,Vt){var Yt=typeof Rt;return Vt=Vt??zt,!!Vt&&(Yt=="number"||Yt!="symbol"&&Gr.test(Rt))&&Rt>-1&&Rt%1==0&&Rt0){if(++Vt>=Pt)return arguments[0]}else Vt=0;return Rt.apply(nt,arguments)}}function I0(Rt,Vt){var Yt=-1,yn=Rt.length,Bn=yn-1;for(Vt=Vt===nt?yn:Vt;++Yt1?Rt[Vt-1]:nt;return Yt=typeof Yt=="function"?(Rt.pop(),Yt):nt,F1(Rt,Yt)});function U1(Rt){var Vt=Fn(Rt);return Vt.__chain__=!0,Vt}function Lv(Rt,Vt){return Vt(Rt),Rt}function A0(Rt,Vt){return Vt(Rt)}var Fv=jo(function(Rt){var Vt=Rt.length,Yt=Vt?Rt[0]:0,yn=this.__wrapped__,Bn=function(Wn){return Im(Wn,Rt)};return Vt>1||this.__actions__.length||!(yn instanceof yo)||!tp(Yt)?this.thru(Bn):(yn=yn.slice(Yt,+Yt+(Vt?1:0)),yn.__actions__.push({func:A0,args:[Bn],thisArg:nt}),new Rs(yn,this.__chain__).thru(function(Wn){return Vt&&!Wn.length&&Wn.push(nt),Wn}))});function Uv(){return U1(this)}function zv(){return new Rs(this.value(),this.__chain__)}function Wv(){this.__values__===nt&&(this.__values__=tw(this.value()));var Rt=this.__index__>=this.__values__.length,Vt=Rt?nt:this.__values__[this.__index__++];return{done:Rt,value:Vt}}function Vv(){return this}function Hv(Rt){for(var Vt,Yt=this;Yt instanceof em;){var yn=B1(Yt);yn.__index__=0,yn.__values__=nt,Vt?Bn.__wrapped__=yn:Vt=yn;var Bn=yn;Yt=Yt.__wrapped__}return Bn.__wrapped__=Rt,Vt}function Gv(){var Rt=this.__wrapped__;if(Rt instanceof yo){var Vt=Rt;return this.__actions__.length&&(Vt=new yo(this)),Vt=Vt.reverse(),Vt.__actions__.push({func:A0,args:[e1],thisArg:nt}),new Rs(Vt,this.__chain__)}return this.thru(e1)}function qv(){return Nu(this.__wrapped__,this.__actions__)}var Yv=hm(function(Rt,Vt,Yt){qo.call(Rt,Yt)?++Rt[Yt]:lu(Rt,Yt,1)});function Kv(Rt,Vt,Yt){var yn=Mo(Rt)?Ym:V0;return Yt&&Il(Rt,Vt,Yt)&&(Vt=nt),yn(Rt,wo(Vt,3))}function Xv(Rt,Vt){var Yt=Mo(Rt)?Ps:my;return Yt(Rt,wo(Vt,3))}var Zv=tn(O1),Jv=tn(j1);function Qv(Rt,Vt){return Is(C0(Rt,Vt),1)}function e_(Rt,Vt){return Is(C0(Rt,Vt),Wt)}function t_(Rt,Vt,Yt){return Yt=Yt===nt?1:Do(Yt),Is(C0(Rt,Vt),Yt)}function z1(Rt,Vt){var Yt=Mo(Rt)?ws:Yl;return Yt(Rt,wo(Vt,3))}function W1(Rt,Vt){var Yt=Mo(Rt)?qm:m0;return Yt(Rt,wo(Vt,3))}var n_=hm(function(Rt,Vt,Yt){qo.call(Rt,Yt)?Rt[Yt].push(Vt):lu(Rt,Yt,[Vt])});function r_(Rt,Vt,Yt,yn){Rt=Bl(Rt)?Rt:Vm(Rt),Yt=Yt&&!yn?Do(Yt):0;var Bn=Rt.length;return Yt<0&&(Yt=_s(Bn+Yt,0)),B0(Rt)?Yt<=Bn&&Rt.indexOf(Vt,Yt)>-1:!!Bn&&Fl(Rt,Vt,Yt)>-1}var i_=mo(function(Rt,Vt,Yt){var yn=-1,Bn=typeof Vt=="function",Wn=Bl(Rt)?gr(Rt.length):[];return Yl(Rt,function(Xn){Wn[++yn]=Bn?Vo(Vt,Xn,Yt):xa(Xn,Vt,Yt)}),Wn}),o_=hm(function(Rt,Vt,Yt){lu(Rt,Yt,Vt)});function C0(Rt,Vt){var Yt=Mo(Rt)?ba:_d;return Yt(Rt,wo(Vt,3))}function a_(Rt,Vt,Yt,yn){return Rt==null?[]:(Mo(Vt)||(Vt=Vt==null?[]:[Vt]),Yt=yn?nt:Yt,Mo(Yt)||(Yt=Yt==null?[]:[Yt]),sm(Rt,Vt,Yt))}var s_=hm(function(Rt,Vt,Yt){Rt[Yt?0:1].push(Vt)},function(){return[[],[]]});function l_(Rt,Vt,Yt){var yn=Mo(Rt)?ym:Au,Bn=arguments.length<3;return yn(Rt,wo(Vt,4),Yt,Bn,Yl)}function c_(Rt,Vt,Yt){var yn=Mo(Rt)?By:Au,Bn=arguments.length<3;return yn(Rt,wo(Vt,4),Yt,Bn,m0)}function u_(Rt,Vt){var Yt=Mo(Rt)?Ps:my;return Yt(Rt,M0(wo(Vt,3)))}function h_(Rt){var Vt=Mo(Rt)?tm:b0;return Vt(Rt)}function d_(Rt,Vt,Yt){(Yt?Il(Rt,Vt,Yt):Vt===nt)?Vt=1:Vt=Do(Vt);var yn=Mo(Rt)?ly:vy;return yn(Rt,Vt)}function f_(Rt){var Vt=Mo(Rt)?f0:v0;return Vt(Rt)}function p_(Rt){if(Rt==null)return 0;if(Bl(Rt))return B0(Rt)?ru(Rt):Rt.length;var Vt=Ks(Rt);return Vt==Pn||Vt==An?Rt.size:Bs(Rt).length}function m_(Rt,Vt,Yt){var yn=Mo(Rt)?Np:xy;return Yt&&Il(Rt,Vt,Yt)&&(Vt=nt),yn(Rt,wo(Vt,3))}var g_=mo(function(Rt,Vt){if(Rt==null)return[];var Yt=Vt.length;return Yt>1&&Il(Rt,Vt[0],Vt[1])?Vt=[]:Yt>2&&Il(Vt[0],Vt[1],Vt[2])&&(Vt=[Vt[0]]),sm(Rt,Is(Vt,1),[])}),$0=Wy||function(){return ns.Date.now()};function y_(Rt,Vt){if(typeof Vt!="function")throw new Gs(at);return Rt=Do(Rt),function(){if(--Rt<1)return Vt.apply(this,arguments)}}function V1(Rt,Vt,Yt){return Vt=Yt?nt:Vt,Vt=Rt&&Vt==null?Rt.length:Vt,ur(Rt,At,nt,nt,nt,nt,Vt)}function H1(Rt,Vt){var Yt;if(typeof Vt!="function")throw new Gs(at);return Rt=Do(Rt),function(){return--Rt>0&&(Yt=Vt.apply(this,arguments)),Rt<=1&&(Vt=nt),Yt}}var r1=mo(function(Rt,Vt,Yt){var yn=yt;if(Yt.length){var Bn=Vl(Yt,zm(r1));yn|=St}return ur(Rt,yn,Vt,Yt,Bn)}),G1=mo(function(Rt,Vt,Yt){var yn=yt|bt;if(Yt.length){var Bn=Vl(Yt,zm(G1));yn|=St}return ur(Vt,yn,Rt,Yt,Bn)});function q1(Rt,Vt,Yt){Vt=Yt?nt:Vt;var yn=ur(Rt,xt,nt,nt,nt,nt,nt,Vt);return yn.placeholder=q1.placeholder,yn}function Y1(Rt,Vt,Yt){Vt=Yt?nt:Vt;var yn=ur(Rt,kt,nt,nt,nt,nt,nt,Vt);return yn.placeholder=Y1.placeholder,yn}function K1(Rt,Vt,Yt){var yn,Bn,Wn,Xn,Qn,ar,Ir=0,Cr=!1,Or=!1,Qr=!0;if(typeof Rt!="function")throw new Gs(at);Vt=fu(Vt)||0,ds(Yt)&&(Cr=!!Yt.leading,Or="maxWait"in Yt,Wn=Or?_s(fu(Yt.maxWait)||0,Vt):Wn,Qr="trailing"in Yt?!!Yt.trailing:Qr);function uo(Ss){var Tu=yn,ip=Bn;return yn=Bn=nt,Ir=Ss,Xn=Rt.apply(ip,Tu),Xn}function So(Ss){return Ir=Ss,Qn=My(Uo,Vt),Cr?uo(Ss):Xn}function Lo(Ss){var Tu=Ss-ar,ip=Ss-Ir,pw=Vt-Tu;return Or?Ms(pw,Wn-ip):pw}function Eo(Ss){var Tu=Ss-ar,ip=Ss-Ir;return ar===nt||Tu>=Vt||Tu<0||Or&&ip>=Wn}function Uo(){var Ss=$0();if(Eo(Ss))return Ho(Ss);Qn=My(Uo,Lo(Ss))}function Ho(Ss){return Qn=nt,Qr&&yn?uo(Ss):(yn=Bn=nt,Xn)}function Ql(){Qn!==nt&&x0(Qn),Ir=0,yn=ar=Bn=Qn=nt}function Al(){return Qn===nt?Xn:Ho($0())}function _c(){var Ss=$0(),Tu=Eo(Ss);if(yn=arguments,Bn=this,ar=Ss,Tu){if(Qn===nt)return So(ar);if(Or)return x0(Qn),Qn=My(Uo,Vt),uo(ar)}return Qn===nt&&(Qn=My(Uo,Vt)),Xn}return _c.cancel=Ql,_c.flush=Al,_c}var b_=mo(function(Rt,Vt){return fy(Rt,1,Vt)}),w_=mo(function(Rt,Vt,Yt){return fy(Rt,fu(Vt)||0,Yt)});function v_(Rt){return ur(Rt,$t)}function P0(Rt,Vt){if(typeof Rt!="function"||Vt!=null&&typeof Vt!="function")throw new Gs(at);var Yt=function(){var yn=arguments,Bn=Vt?Vt.apply(this,yn):yn[0],Wn=Yt.cache;if(Wn.has(Bn))return Wn.get(Bn);var Xn=Rt.apply(this,yn);return Yt.cache=Wn.set(Bn,Xn)||Wn,Xn};return Yt.cache=new(P0.Cache||$l),Yt}P0.Cache=$l;function M0(Rt){if(typeof Rt!="function")throw new Gs(at);return function(){var Vt=arguments;switch(Vt.length){case 0:return!Rt.call(this);case 1:return!Rt.call(this,Vt[0]);case 2:return!Rt.call(this,Vt[0],Vt[1]);case 3:return!Rt.call(this,Vt[0],Vt[1],Vt[2])}return!Rt.apply(this,Vt)}}function __(Rt){return H1(2,Rt)}var x_=_0(function(Rt,Vt){Vt=Vt.length==1&&Mo(Vt[0])?ba(Vt[0],Vs(wo())):ba(Is(Vt,1),Vs(wo()));var Yt=Vt.length;return mo(function(yn){for(var Bn=-1,Wn=Ms(yn.length,Yt);++Bn=Vt}),pm=Bo(function(){return arguments}())?Bo:function(Rt){return gs(Rt)&&qo.call(Rt,"callee")&&!xm.call(Rt,"callee")},Mo=gr.isArray,D_=yu?Vs(yu):fs;function Bl(Rt){return Rt!=null&&R0(Rt.length)&&!np(Rt)}function ks(Rt){return gs(Rt)&&Bl(Rt)}function N_(Rt){return Rt===!0||Rt===!1||gs(Rt)&&Cs(Rt)==nn}var Pp=Hy||m1,L_=Gu?Vs(Gu):ps;function F_(Rt){return gs(Rt)&&Rt.nodeType===1&&!Ry(Rt)}function U_(Rt){if(Rt==null)return!0;if(Bl(Rt)&&(Mo(Rt)||typeof Rt=="string"||typeof Rt.splice=="function"||Pp(Rt)||Wm(Rt)||pm(Rt)))return!Rt.length;var Vt=Ks(Rt);if(Vt==Pn||Vt==An)return!Rt.size;if(Py(Rt))return!Bs(Rt).length;for(var Yt in Rt)if(qo.call(Rt,Yt))return!1;return!0}function z_(Rt,Vt){return us(Rt,Vt)}function W_(Rt,Vt,Yt){Yt=typeof Yt=="function"?Yt:nt;var yn=Yt?Yt(Rt,Vt):nt;return yn===nt?us(Rt,Vt,nt,Yt):!!yn}function o1(Rt){if(!gs(Rt))return!1;var Vt=Cs(Rt);return Vt==an||Vt==vn||typeof Rt.message=="string"&&typeof Rt.name=="string"&&!Ry(Rt)}function V_(Rt){return typeof Rt=="number"&&ny(Rt)}function np(Rt){if(!ds(Rt))return!1;var Vt=Cs(Rt);return Vt==Qt||Vt==_n||Vt==rn||Vt==mn}function Z1(Rt){return typeof Rt=="number"&&Rt==Do(Rt)}function R0(Rt){return typeof Rt=="number"&&Rt>-1&&Rt%1==0&&Rt<=zt}function ds(Rt){var Vt=typeof Rt;return Rt!=null&&(Vt=="object"||Vt=="function")}function gs(Rt){return Rt!=null&&typeof Rt=="object"}var J1=Dp?Vs(Dp):Ep;function H_(Rt,Vt){return Rt===Vt||hs(Rt,Vt,K0(Vt))}function G_(Rt,Vt,Yt){return Yt=typeof Yt=="function"?Yt:nt,hs(Rt,Vt,K0(Vt),Yt)}function q_(Rt){return Q1(Rt)&&Rt!=+Rt}function Y_(Rt){if(Pw(Rt))throw new To(ot);return Tp(Rt)}function K_(Rt){return Rt===null}function X_(Rt){return Rt==null}function Q1(Rt){return typeof Rt=="number"||gs(Rt)&&Cs(Rt)==$n}function Ry(Rt){if(!gs(Rt)||Cs(Rt)!=Tn)return!1;var Vt=qp(Rt);if(Vt===null)return!0;var Yt=qo.call(Vt,"constructor")&&Vt.constructor;return typeof Yt=="function"&&Yt instanceof Yt&&yp.call(Yt)==Yu}var a1=bs?Vs(bs):Ip;function Z_(Rt){return Z1(Rt)&&Rt>=-zt&&Rt<=zt}var ew=$s?Vs($s):$m;function B0(Rt){return typeof Rt=="string"||!Mo(Rt)&&gs(Rt)&&Cs(Rt)==wn}function Jl(Rt){return typeof Rt=="symbol"||gs(Rt)&&Cs(Rt)==fn}var Wm=os?Vs(os):by;function J_(Rt){return Rt===nt}function Q_(Rt){return gs(Rt)&&Ks(Rt)==kn}function t2(Rt){return gs(Rt)&&Cs(Rt)==Dn}var n2=ho(om),r2=ho(function(Rt,Vt){return Rt<=Vt});function tw(Rt){if(!Rt)return[];if(Bl(Rt))return B0(Rt)?ss(Rt):Ns(Rt);if(Mu&&Rt[Mu])return up(Rt[Mu]());var Vt=Ks(Rt),Yt=Vt==Pn?zp:Vt==An?Wp:Vm;return Yt(Rt)}function rp(Rt){if(!Rt)return Rt===0?Rt:0;if(Rt=fu(Rt),Rt===Wt||Rt===-Wt){var Vt=Rt<0?-1:1;return Vt*Ft}return Rt===Rt?Rt:0}function Do(Rt){var Vt=rp(Rt),Yt=Vt%1;return Vt===Vt?Yt?Vt-Yt:Vt:0}function nw(Rt){return Rt?Ou(Do(Rt),0,Ut):0}function fu(Rt){if(typeof Rt=="number")return Rt;if(Jl(Rt))return Nt;if(ds(Rt)){var Vt=typeof Rt.valueOf=="function"?Rt.valueOf():Rt;Rt=ds(Vt)?Vt+"":Vt}if(typeof Rt!="string")return Rt===0?Rt:+Rt;Rt=wm(Rt);var Yt=Hr.test(Rt);return Yt||Nr.test(Rt)?jp(Rt.slice(2),Yt?2:8):cr.test(Rt)?Nt:+Rt}function rw(Rt){return Rl(Rt,Ol(Rt))}function i2(Rt){return Rt?Ou(Do(Rt),-zt,zt):Rt===0?Rt:0}function Qo(Rt){return Rt==null?"":js(Rt)}var o2=ep(function(Rt,Vt){if(Py(Vt)||Bl(Vt)){Rl(Vt,Fs(Vt),Rt);return}for(var Yt in Vt)qo.call(Vt,Yt)&&Gl(Rt,Yt,Vt[Yt])}),iw=ep(function(Rt,Vt){Rl(Vt,Ol(Vt),Rt)}),O0=ep(function(Rt,Vt,Yt,yn){Rl(Vt,Ol(Vt),Rt,yn)}),s2=ep(function(Rt,Vt,Yt,yn){Rl(Vt,Fs(Vt),Rt,yn)}),l2=jo(Im);function c2(Rt,Vt){var Yt=xu(Rt);return Vt==null?Yt:hy(Yt,Vt)}var u2=mo(function(Rt,Vt){Rt=ko(Rt);var Yt=-1,yn=Vt.length,Bn=yn>2?Vt[2]:nt;for(Bn&&Il(Vt[0],Vt[1],Bn)&&(yn=1);++Yt1),Wn}),Rl(Rt,zo(Rt),Yt),yn&&(Yt=_l(Yt,ht|dt|pt,_i));for(var Bn=Vt.length;Bn--;)Ey(Yt,Vt[Bn]);return Yt});function $2(Rt,Vt){return aw(Rt,M0(wo(Vt)))}var P2=jo(function(Rt,Vt){return Rt==null?{}:lm(Rt,Vt)});function aw(Rt,Vt){if(Rt==null)return{};var Yt=ba(zo(Rt),function(yn){return[yn]});return Vt=wo(Vt),Rm(Rt,Yt,function(yn,Bn){return Vt(yn,Bn[0])})}function M2(Rt,Vt,Yt){Vt=Fu(Vt,Rt);var yn=-1,Bn=Vt.length;for(Bn||(Bn=1,Rt=nt);++ynVt){var yn=Rt;Rt=Vt,Vt=yn}if(Yt||Rt%1||Vt%1){var Bn=ry();return Ms(Rt+Bn*(Vt-Rt+Op("1e-"+((Bn+"").length-1))),Vt)}return cu(Rt,Vt)}var W2=Bt(function(Rt,Vt,Yt){return Vt=Vt.toLowerCase(),Rt+(Yt?cw(Vt):Vt)});function cw(Rt){return c1(Qo(Rt).toLowerCase())}function uw(Rt){return Rt=Qo(Rt),Rt&&Rt.replace(eo,Ny).replace(ts,"")}function V2(Rt,Vt,Yt){Rt=Qo(Rt),Vt=js(Vt);var yn=Rt.length;Yt=Yt===nt?yn:Ou(Do(Yt),0,yn);var Bn=Yt;return Yt-=Vt.length,Yt>=0&&Rt.slice(Yt,Bn)==Vt}function H2(Rt){return Rt=Qo(Rt),Rt&&Tr.test(Rt)?Rt.replace(xr,Ly):Rt}function G2(Rt){return Rt=Qo(Rt),Rt&&go.test(Rt)?Rt.replace(Dr,"\\$&"):Rt}var q2=Bt(function(Rt,Vt,Yt){return Rt+(Yt?"-":"")+Vt.toLowerCase()}),Y2=Bt(function(Rt,Vt,Yt){return Rt+(Yt?" ":"")+Vt.toLowerCase()}),K2=E0("toLowerCase");function X2(Rt,Vt,Yt){Rt=Qo(Rt),Vt=Do(Vt);var yn=Vt?ru(Rt):0;if(!Vt||yn>=Vt)return Rt;var Bn=(Vt-yn)/2;return Vr(Xp(Bn),Yt)+Rt+Vr(Kp(Bn),Yt)}function Z2(Rt,Vt,Yt){Rt=Qo(Rt),Vt=Do(Vt);var yn=Vt?ru(Rt):0;return Vt&&yn>>0,Yt?(Rt=Qo(Rt),Rt&&(typeof Vt=="string"||Vt!=null&&!a1(Vt))&&(Vt=js(Vt),!Vt&&qu(Rt))?Uu(ss(Rt),0,Yt):Rt.split(Vt,Yt)):[]}var ix=Bt(function(Rt,Vt,Yt){return Rt+(Yt?" ":"")+c1(Vt)});function ox(Rt,Vt,Yt){return Rt=Qo(Rt),Yt=Yt==null?0:Ou(Do(Yt),0,Rt.length),Vt=js(Vt),Rt.slice(Yt,Yt+Vt.length)==Vt}function ax(Rt,Vt,Yt){var yn=Fn.templateSettings;Yt&&Il(Rt,Vt,Yt)&&(Vt=nt),Rt=Qo(Rt),Vt=O0({},Vt,yn,or);var Bn=O0({},Vt.imports,yn.imports,or),Wn=Fs(Bn),Xn=Hs(Bn,Wn),Qn,ar,Ir=0,Cr=Vt.interpolate||Zr,Or="__p += '",Qr=Es((Vt.escape||Zr).source+"|"+Cr.source+"|"+(Cr===jr?nr:Zr).source+"|"+(Vt.evaluate||Zr).source+"|$","g"),uo="//# sourceURL="+(qo.call(Vt,"sourceURL")?(Vt.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Xs+"]")+` +`)}function Cw(Rt){return Mo(Rt)||pm(Rt)||!!(ty&&Rt&&Rt[ty])}function tp(Rt,Vt){var Yt=typeof Rt;return Vt=Vt??zt,!!Vt&&(Yt=="number"||Yt!="symbol"&&Gr.test(Rt))&&Rt>-1&&Rt%1==0&&Rt0){if(++Vt>=Pt)return arguments[0]}else Vt=0;return Rt.apply(nt,arguments)}}function I0(Rt,Vt){var Yt=-1,yn=Rt.length,Bn=yn-1;for(Vt=Vt===nt?yn:Vt;++Yt1?Rt[Vt-1]:nt;return Yt=typeof Yt=="function"?(Rt.pop(),Yt):nt,U1(Rt,Yt)});function z1(Rt){var Vt=Fn(Rt);return Vt.__chain__=!0,Vt}function Fv(Rt,Vt){return Vt(Rt),Rt}function A0(Rt,Vt){return Vt(Rt)}var Uv=jo(function(Rt){var Vt=Rt.length,Yt=Vt?Rt[0]:0,yn=this.__wrapped__,Bn=function(Wn){return Im(Wn,Rt)};return Vt>1||this.__actions__.length||!(yn instanceof yo)||!tp(Yt)?this.thru(Bn):(yn=yn.slice(Yt,+Yt+(Vt?1:0)),yn.__actions__.push({func:A0,args:[Bn],thisArg:nt}),new Rs(yn,this.__chain__).thru(function(Wn){return Vt&&!Wn.length&&Wn.push(nt),Wn}))});function zv(){return z1(this)}function Wv(){return new Rs(this.value(),this.__chain__)}function Vv(){this.__values__===nt&&(this.__values__=nw(this.value()));var Rt=this.__index__>=this.__values__.length,Vt=Rt?nt:this.__values__[this.__index__++];return{done:Rt,value:Vt}}function Hv(){return this}function Gv(Rt){for(var Vt,Yt=this;Yt instanceof em;){var yn=O1(Yt);yn.__index__=0,yn.__values__=nt,Vt?Bn.__wrapped__=yn:Vt=yn;var Bn=yn;Yt=Yt.__wrapped__}return Bn.__wrapped__=Rt,Vt}function qv(){var Rt=this.__wrapped__;if(Rt instanceof yo){var Vt=Rt;return this.__actions__.length&&(Vt=new yo(this)),Vt=Vt.reverse(),Vt.__actions__.push({func:A0,args:[e1],thisArg:nt}),new Rs(Vt,this.__chain__)}return this.thru(e1)}function Yv(){return Nu(this.__wrapped__,this.__actions__)}var Kv=hm(function(Rt,Vt,Yt){qo.call(Rt,Yt)?++Rt[Yt]:lu(Rt,Yt,1)});function Xv(Rt,Vt,Yt){var yn=Mo(Rt)?Ym:V0;return Yt&&Il(Rt,Vt,Yt)&&(Vt=nt),yn(Rt,wo(Vt,3))}function Zv(Rt,Vt){var Yt=Mo(Rt)?Ps:my;return Yt(Rt,wo(Vt,3))}var Jv=tn(j1),Qv=tn(D1);function e_(Rt,Vt){return Is(C0(Rt,Vt),1)}function t_(Rt,Vt){return Is(C0(Rt,Vt),Wt)}function n_(Rt,Vt,Yt){return Yt=Yt===nt?1:Do(Yt),Is(C0(Rt,Vt),Yt)}function W1(Rt,Vt){var Yt=Mo(Rt)?ws:Yl;return Yt(Rt,wo(Vt,3))}function V1(Rt,Vt){var Yt=Mo(Rt)?qm:m0;return Yt(Rt,wo(Vt,3))}var r_=hm(function(Rt,Vt,Yt){qo.call(Rt,Yt)?Rt[Yt].push(Vt):lu(Rt,Yt,[Vt])});function i_(Rt,Vt,Yt,yn){Rt=Bl(Rt)?Rt:Vm(Rt),Yt=Yt&&!yn?Do(Yt):0;var Bn=Rt.length;return Yt<0&&(Yt=_s(Bn+Yt,0)),B0(Rt)?Yt<=Bn&&Rt.indexOf(Vt,Yt)>-1:!!Bn&&Fl(Rt,Vt,Yt)>-1}var o_=mo(function(Rt,Vt,Yt){var yn=-1,Bn=typeof Vt=="function",Wn=Bl(Rt)?gr(Rt.length):[];return Yl(Rt,function(Xn){Wn[++yn]=Bn?Vo(Vt,Xn,Yt):xa(Xn,Vt,Yt)}),Wn}),a_=hm(function(Rt,Vt,Yt){lu(Rt,Yt,Vt)});function C0(Rt,Vt){var Yt=Mo(Rt)?ba:_d;return Yt(Rt,wo(Vt,3))}function s_(Rt,Vt,Yt,yn){return Rt==null?[]:(Mo(Vt)||(Vt=Vt==null?[]:[Vt]),Yt=yn?nt:Yt,Mo(Yt)||(Yt=Yt==null?[]:[Yt]),sm(Rt,Vt,Yt))}var l_=hm(function(Rt,Vt,Yt){Rt[Yt?0:1].push(Vt)},function(){return[[],[]]});function c_(Rt,Vt,Yt){var yn=Mo(Rt)?ym:Au,Bn=arguments.length<3;return yn(Rt,wo(Vt,4),Yt,Bn,Yl)}function u_(Rt,Vt,Yt){var yn=Mo(Rt)?By:Au,Bn=arguments.length<3;return yn(Rt,wo(Vt,4),Yt,Bn,m0)}function h_(Rt,Vt){var Yt=Mo(Rt)?Ps:my;return Yt(Rt,M0(wo(Vt,3)))}function d_(Rt){var Vt=Mo(Rt)?tm:b0;return Vt(Rt)}function f_(Rt,Vt,Yt){(Yt?Il(Rt,Vt,Yt):Vt===nt)?Vt=1:Vt=Do(Vt);var yn=Mo(Rt)?ly:vy;return yn(Rt,Vt)}function p_(Rt){var Vt=Mo(Rt)?f0:v0;return Vt(Rt)}function m_(Rt){if(Rt==null)return 0;if(Bl(Rt))return B0(Rt)?ru(Rt):Rt.length;var Vt=Ks(Rt);return Vt==Pn||Vt==An?Rt.size:Bs(Rt).length}function g_(Rt,Vt,Yt){var yn=Mo(Rt)?Np:xy;return Yt&&Il(Rt,Vt,Yt)&&(Vt=nt),yn(Rt,wo(Vt,3))}var y_=mo(function(Rt,Vt){if(Rt==null)return[];var Yt=Vt.length;return Yt>1&&Il(Rt,Vt[0],Vt[1])?Vt=[]:Yt>2&&Il(Vt[0],Vt[1],Vt[2])&&(Vt=[Vt[0]]),sm(Rt,Is(Vt,1),[])}),$0=Wy||function(){return ns.Date.now()};function b_(Rt,Vt){if(typeof Vt!="function")throw new Gs(at);return Rt=Do(Rt),function(){if(--Rt<1)return Vt.apply(this,arguments)}}function H1(Rt,Vt,Yt){return Vt=Yt?nt:Vt,Vt=Rt&&Vt==null?Rt.length:Vt,ur(Rt,At,nt,nt,nt,nt,Vt)}function G1(Rt,Vt){var Yt;if(typeof Vt!="function")throw new Gs(at);return Rt=Do(Rt),function(){return--Rt>0&&(Yt=Vt.apply(this,arguments)),Rt<=1&&(Vt=nt),Yt}}var r1=mo(function(Rt,Vt,Yt){var yn=yt;if(Yt.length){var Bn=Vl(Yt,zm(r1));yn|=St}return ur(Rt,yn,Vt,Yt,Bn)}),q1=mo(function(Rt,Vt,Yt){var yn=yt|bt;if(Yt.length){var Bn=Vl(Yt,zm(q1));yn|=St}return ur(Vt,yn,Rt,Yt,Bn)});function Y1(Rt,Vt,Yt){Vt=Yt?nt:Vt;var yn=ur(Rt,xt,nt,nt,nt,nt,nt,Vt);return yn.placeholder=Y1.placeholder,yn}function K1(Rt,Vt,Yt){Vt=Yt?nt:Vt;var yn=ur(Rt,kt,nt,nt,nt,nt,nt,Vt);return yn.placeholder=K1.placeholder,yn}function X1(Rt,Vt,Yt){var yn,Bn,Wn,Xn,Qn,ar,Ir=0,Cr=!1,Or=!1,Qr=!0;if(typeof Rt!="function")throw new Gs(at);Vt=fu(Vt)||0,ds(Yt)&&(Cr=!!Yt.leading,Or="maxWait"in Yt,Wn=Or?_s(fu(Yt.maxWait)||0,Vt):Wn,Qr="trailing"in Yt?!!Yt.trailing:Qr);function uo(Ss){var Tu=yn,ip=Bn;return yn=Bn=nt,Ir=Ss,Xn=Rt.apply(ip,Tu),Xn}function So(Ss){return Ir=Ss,Qn=My(Uo,Vt),Cr?uo(Ss):Xn}function Lo(Ss){var Tu=Ss-ar,ip=Ss-Ir,mw=Vt-Tu;return Or?Ms(mw,Wn-ip):mw}function Eo(Ss){var Tu=Ss-ar,ip=Ss-Ir;return ar===nt||Tu>=Vt||Tu<0||Or&&ip>=Wn}function Uo(){var Ss=$0();if(Eo(Ss))return Ho(Ss);Qn=My(Uo,Lo(Ss))}function Ho(Ss){return Qn=nt,Qr&&yn?uo(Ss):(yn=Bn=nt,Xn)}function Ql(){Qn!==nt&&x0(Qn),Ir=0,yn=ar=Bn=Qn=nt}function Al(){return Qn===nt?Xn:Ho($0())}function _c(){var Ss=$0(),Tu=Eo(Ss);if(yn=arguments,Bn=this,ar=Ss,Tu){if(Qn===nt)return So(ar);if(Or)return x0(Qn),Qn=My(Uo,Vt),uo(ar)}return Qn===nt&&(Qn=My(Uo,Vt)),Xn}return _c.cancel=Ql,_c.flush=Al,_c}var w_=mo(function(Rt,Vt){return fy(Rt,1,Vt)}),v_=mo(function(Rt,Vt,Yt){return fy(Rt,fu(Vt)||0,Yt)});function __(Rt){return ur(Rt,$t)}function P0(Rt,Vt){if(typeof Rt!="function"||Vt!=null&&typeof Vt!="function")throw new Gs(at);var Yt=function(){var yn=arguments,Bn=Vt?Vt.apply(this,yn):yn[0],Wn=Yt.cache;if(Wn.has(Bn))return Wn.get(Bn);var Xn=Rt.apply(this,yn);return Yt.cache=Wn.set(Bn,Xn)||Wn,Xn};return Yt.cache=new(P0.Cache||$l),Yt}P0.Cache=$l;function M0(Rt){if(typeof Rt!="function")throw new Gs(at);return function(){var Vt=arguments;switch(Vt.length){case 0:return!Rt.call(this);case 1:return!Rt.call(this,Vt[0]);case 2:return!Rt.call(this,Vt[0],Vt[1]);case 3:return!Rt.call(this,Vt[0],Vt[1],Vt[2])}return!Rt.apply(this,Vt)}}function x_(Rt){return G1(2,Rt)}var k_=_0(function(Rt,Vt){Vt=Vt.length==1&&Mo(Vt[0])?ba(Vt[0],Vs(wo())):ba(Is(Vt,1),Vs(wo()));var Yt=Vt.length;return mo(function(yn){for(var Bn=-1,Wn=Ms(yn.length,Yt);++Bn=Vt}),pm=Bo(function(){return arguments}())?Bo:function(Rt){return gs(Rt)&&qo.call(Rt,"callee")&&!xm.call(Rt,"callee")},Mo=gr.isArray,N_=yu?Vs(yu):fs;function Bl(Rt){return Rt!=null&&R0(Rt.length)&&!np(Rt)}function ks(Rt){return gs(Rt)&&Bl(Rt)}function L_(Rt){return Rt===!0||Rt===!1||gs(Rt)&&Cs(Rt)==nn}var Pp=Hy||m1,F_=Gu?Vs(Gu):ps;function U_(Rt){return gs(Rt)&&Rt.nodeType===1&&!Ry(Rt)}function z_(Rt){if(Rt==null)return!0;if(Bl(Rt)&&(Mo(Rt)||typeof Rt=="string"||typeof Rt.splice=="function"||Pp(Rt)||Wm(Rt)||pm(Rt)))return!Rt.length;var Vt=Ks(Rt);if(Vt==Pn||Vt==An)return!Rt.size;if(Py(Rt))return!Bs(Rt).length;for(var Yt in Rt)if(qo.call(Rt,Yt))return!1;return!0}function W_(Rt,Vt){return us(Rt,Vt)}function V_(Rt,Vt,Yt){Yt=typeof Yt=="function"?Yt:nt;var yn=Yt?Yt(Rt,Vt):nt;return yn===nt?us(Rt,Vt,nt,Yt):!!yn}function o1(Rt){if(!gs(Rt))return!1;var Vt=Cs(Rt);return Vt==an||Vt==vn||typeof Rt.message=="string"&&typeof Rt.name=="string"&&!Ry(Rt)}function H_(Rt){return typeof Rt=="number"&&ny(Rt)}function np(Rt){if(!ds(Rt))return!1;var Vt=Cs(Rt);return Vt==Qt||Vt==_n||Vt==rn||Vt==mn}function J1(Rt){return typeof Rt=="number"&&Rt==Do(Rt)}function R0(Rt){return typeof Rt=="number"&&Rt>-1&&Rt%1==0&&Rt<=zt}function ds(Rt){var Vt=typeof Rt;return Rt!=null&&(Vt=="object"||Vt=="function")}function gs(Rt){return Rt!=null&&typeof Rt=="object"}var Q1=Dp?Vs(Dp):Ep;function G_(Rt,Vt){return Rt===Vt||hs(Rt,Vt,K0(Vt))}function q_(Rt,Vt,Yt){return Yt=typeof Yt=="function"?Yt:nt,hs(Rt,Vt,K0(Vt),Yt)}function Y_(Rt){return ew(Rt)&&Rt!=+Rt}function K_(Rt){if(Mw(Rt))throw new To(ot);return Tp(Rt)}function X_(Rt){return Rt===null}function Z_(Rt){return Rt==null}function ew(Rt){return typeof Rt=="number"||gs(Rt)&&Cs(Rt)==$n}function Ry(Rt){if(!gs(Rt)||Cs(Rt)!=Tn)return!1;var Vt=qp(Rt);if(Vt===null)return!0;var Yt=qo.call(Vt,"constructor")&&Vt.constructor;return typeof Yt=="function"&&Yt instanceof Yt&&yp.call(Yt)==Yu}var a1=bs?Vs(bs):Ip;function J_(Rt){return J1(Rt)&&Rt>=-zt&&Rt<=zt}var tw=$s?Vs($s):$m;function B0(Rt){return typeof Rt=="string"||!Mo(Rt)&&gs(Rt)&&Cs(Rt)==wn}function Jl(Rt){return typeof Rt=="symbol"||gs(Rt)&&Cs(Rt)==fn}var Wm=os?Vs(os):by;function Q_(Rt){return Rt===nt}function t2(Rt){return gs(Rt)&&Ks(Rt)==kn}function n2(Rt){return gs(Rt)&&Cs(Rt)==Dn}var r2=ho(om),i2=ho(function(Rt,Vt){return Rt<=Vt});function nw(Rt){if(!Rt)return[];if(Bl(Rt))return B0(Rt)?ss(Rt):Ns(Rt);if(Mu&&Rt[Mu])return up(Rt[Mu]());var Vt=Ks(Rt),Yt=Vt==Pn?zp:Vt==An?Wp:Vm;return Yt(Rt)}function rp(Rt){if(!Rt)return Rt===0?Rt:0;if(Rt=fu(Rt),Rt===Wt||Rt===-Wt){var Vt=Rt<0?-1:1;return Vt*Ft}return Rt===Rt?Rt:0}function Do(Rt){var Vt=rp(Rt),Yt=Vt%1;return Vt===Vt?Yt?Vt-Yt:Vt:0}function rw(Rt){return Rt?Ou(Do(Rt),0,Ut):0}function fu(Rt){if(typeof Rt=="number")return Rt;if(Jl(Rt))return Nt;if(ds(Rt)){var Vt=typeof Rt.valueOf=="function"?Rt.valueOf():Rt;Rt=ds(Vt)?Vt+"":Vt}if(typeof Rt!="string")return Rt===0?Rt:+Rt;Rt=wm(Rt);var Yt=Hr.test(Rt);return Yt||Nr.test(Rt)?jp(Rt.slice(2),Yt?2:8):cr.test(Rt)?Nt:+Rt}function iw(Rt){return Rl(Rt,Ol(Rt))}function o2(Rt){return Rt?Ou(Do(Rt),-zt,zt):Rt===0?Rt:0}function Qo(Rt){return Rt==null?"":js(Rt)}var s2=ep(function(Rt,Vt){if(Py(Vt)||Bl(Vt)){Rl(Vt,Fs(Vt),Rt);return}for(var Yt in Vt)qo.call(Vt,Yt)&&Gl(Rt,Yt,Vt[Yt])}),ow=ep(function(Rt,Vt){Rl(Vt,Ol(Vt),Rt)}),O0=ep(function(Rt,Vt,Yt,yn){Rl(Vt,Ol(Vt),Rt,yn)}),l2=ep(function(Rt,Vt,Yt,yn){Rl(Vt,Fs(Vt),Rt,yn)}),c2=jo(Im);function u2(Rt,Vt){var Yt=xu(Rt);return Vt==null?Yt:hy(Yt,Vt)}var h2=mo(function(Rt,Vt){Rt=ko(Rt);var Yt=-1,yn=Vt.length,Bn=yn>2?Vt[2]:nt;for(Bn&&Il(Vt[0],Vt[1],Bn)&&(yn=1);++Yt1),Wn}),Rl(Rt,zo(Rt),Yt),yn&&(Yt=_l(Yt,ht|dt|pt,_i));for(var Bn=Vt.length;Bn--;)Ey(Yt,Vt[Bn]);return Yt});function P2(Rt,Vt){return sw(Rt,M0(wo(Vt)))}var M2=jo(function(Rt,Vt){return Rt==null?{}:lm(Rt,Vt)});function sw(Rt,Vt){if(Rt==null)return{};var Yt=ba(zo(Rt),function(yn){return[yn]});return Vt=wo(Vt),Rm(Rt,Yt,function(yn,Bn){return Vt(yn,Bn[0])})}function R2(Rt,Vt,Yt){Vt=Fu(Vt,Rt);var yn=-1,Bn=Vt.length;for(Bn||(Bn=1,Rt=nt);++ynVt){var yn=Rt;Rt=Vt,Vt=yn}if(Yt||Rt%1||Vt%1){var Bn=ry();return Ms(Rt+Bn*(Vt-Rt+Op("1e-"+((Bn+"").length-1))),Vt)}return cu(Rt,Vt)}var V2=Bt(function(Rt,Vt,Yt){return Vt=Vt.toLowerCase(),Rt+(Yt?uw(Vt):Vt)});function uw(Rt){return c1(Qo(Rt).toLowerCase())}function hw(Rt){return Rt=Qo(Rt),Rt&&Rt.replace(eo,Ny).replace(ts,"")}function H2(Rt,Vt,Yt){Rt=Qo(Rt),Vt=js(Vt);var yn=Rt.length;Yt=Yt===nt?yn:Ou(Do(Yt),0,yn);var Bn=Yt;return Yt-=Vt.length,Yt>=0&&Rt.slice(Yt,Bn)==Vt}function G2(Rt){return Rt=Qo(Rt),Rt&&Tr.test(Rt)?Rt.replace(xr,Ly):Rt}function q2(Rt){return Rt=Qo(Rt),Rt&&go.test(Rt)?Rt.replace(Dr,"\\$&"):Rt}var Y2=Bt(function(Rt,Vt,Yt){return Rt+(Yt?"-":"")+Vt.toLowerCase()}),K2=Bt(function(Rt,Vt,Yt){return Rt+(Yt?" ":"")+Vt.toLowerCase()}),X2=E0("toLowerCase");function Z2(Rt,Vt,Yt){Rt=Qo(Rt),Vt=Do(Vt);var yn=Vt?ru(Rt):0;if(!Vt||yn>=Vt)return Rt;var Bn=(Vt-yn)/2;return Vr(Xp(Bn),Yt)+Rt+Vr(Kp(Bn),Yt)}function J2(Rt,Vt,Yt){Rt=Qo(Rt),Vt=Do(Vt);var yn=Vt?ru(Rt):0;return Vt&&yn>>0,Yt?(Rt=Qo(Rt),Rt&&(typeof Vt=="string"||Vt!=null&&!a1(Vt))&&(Vt=js(Vt),!Vt&&qu(Rt))?Uu(ss(Rt),0,Yt):Rt.split(Vt,Yt)):[]}var ox=Bt(function(Rt,Vt,Yt){return Rt+(Yt?" ":"")+c1(Vt)});function ax(Rt,Vt,Yt){return Rt=Qo(Rt),Yt=Yt==null?0:Ou(Do(Yt),0,Rt.length),Vt=js(Vt),Rt.slice(Yt,Yt+Vt.length)==Vt}function sx(Rt,Vt,Yt){var yn=Fn.templateSettings;Yt&&Il(Rt,Vt,Yt)&&(Vt=nt),Rt=Qo(Rt),Vt=O0({},Vt,yn,or);var Bn=O0({},Vt.imports,yn.imports,or),Wn=Fs(Bn),Xn=Hs(Bn,Wn),Qn,ar,Ir=0,Cr=Vt.interpolate||Zr,Or="__p += '",Qr=Es((Vt.escape||Zr).source+"|"+Cr.source+"|"+(Cr===jr?nr:Zr).source+"|"+(Vt.evaluate||Zr).source+"|$","g"),uo="//# sourceURL="+(qo.call(Vt,"sourceURL")?(Vt.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Xs+"]")+` `;Rt.replace(Qr,function(Eo,Uo,Ho,Ql,Al,_c){return Ho||(Ho=Ql),Or+=Rt.slice(Ir,_c).replace(Jr,Xm),Uo&&(Qn=!0,Or+=`' + __e(`+Uo+`) + '`),Al&&(ar=!0,Or+=`'; @@ -7194,7 +7230,7 @@ __p += '`),Ho&&(Or+=`' + function print() { __p += __j.call(arguments, '') } `:`; `)+Or+`return __p -}`;var Lo=dw(function(){return $o(Wn,uo+"return "+Or).apply(nt,Xn)});if(Lo.source=Or,o1(Lo))throw Lo;return Lo}function sx(Rt){return Qo(Rt).toLowerCase()}function lx(Rt){return Qo(Rt).toUpperCase()}function cx(Rt,Vt,Yt){if(Rt=Qo(Rt),Rt&&(Yt||Vt===nt))return wm(Rt);if(!Rt||!(Vt=js(Vt)))return Rt;var yn=ss(Rt),Bn=ss(Vt),Wn=_a(yn,Bn),Xn=cp(yn,Bn)+1;return Uu(yn,Wn,Xn).join("")}function ux(Rt,Vt,Yt){if(Rt=Qo(Rt),Rt&&(Yt||Vt===nt))return Rt.slice(0,fp(Rt)+1);if(!Rt||!(Vt=js(Vt)))return Rt;var yn=ss(Rt),Bn=cp(yn,ss(Vt))+1;return Uu(yn,0,Bn).join("")}function hx(Rt,Vt,Yt){if(Rt=Qo(Rt),Rt&&(Yt||Vt===nt))return Rt.replace(xn,"");if(!Rt||!(Vt=js(Vt)))return Rt;var yn=ss(Rt),Bn=_a(yn,ss(Vt));return Uu(yn,Bn).join("")}function dx(Rt,Vt){var Yt=Dt,yn=jt;if(ds(Vt)){var Bn="separator"in Vt?Vt.separator:Bn;Yt="length"in Vt?Do(Vt.length):Yt,yn="omission"in Vt?js(Vt.omission):yn}Rt=Qo(Rt);var Wn=Rt.length;if(qu(Rt)){var Xn=ss(Rt);Wn=Xn.length}if(Yt>=Wn)return Rt;var Qn=Yt-ru(yn);if(Qn<1)return yn;var ar=Xn?Uu(Xn,0,Qn).join(""):Rt.slice(0,Qn);if(Bn===nt)return ar+yn;if(Xn&&(Qn+=ar.length-Qn),a1(Bn)){if(Rt.slice(Qn).search(Bn)){var Ir,Cr=ar;for(Bn.global||(Bn=Es(Bn.source,Qo(lr.exec(Bn))+"g")),Bn.lastIndex=0;Ir=Bn.exec(Cr);)var Or=Ir.index;ar=ar.slice(0,Or===nt?Qn:Or)}}else if(Rt.indexOf(js(Bn),Qn)!=Qn){var Qr=ar.lastIndexOf(Bn);Qr>-1&&(ar=ar.slice(0,Qr))}return ar+yn}function fx(Rt){return Rt=Qo(Rt),Rt&&io.test(Rt)?Rt.replace(fr,pp):Rt}var mx=Bt(function(Rt,Vt,Yt){return Rt+(Yt?" ":"")+Vt.toUpperCase()}),c1=E0("toUpperCase");function hw(Rt,Vt,Yt){return Rt=Qo(Rt),Vt=Yt?nt:Vt,Vt===nt?Up(Rt)?mp(Rt):jy(Rt):Rt.match(Vt)||[]}var dw=mo(function(Rt,Vt){try{return Vo(Rt,nt,Vt)}catch(Yt){return o1(Yt)?Yt:new To(Yt)}}),gx=jo(function(Rt,Vt){return ws(Vt,function(Yt){Yt=Wu(Yt),lu(Rt,Yt,r1(Rt[Yt],Rt))}),Rt});function yx(Rt){var Vt=Rt==null?0:Rt.length,Yt=wo();return Rt=Vt?ba(Rt,function(yn){if(typeof yn[1]!="function")throw new Gs(at);return[Yt(yn[0]),yn[1]]}):[],mo(function(yn){for(var Bn=-1;++Bnzt)return[];var Yt=Ut,yn=Ms(Rt,Ut);Vt=wo(Vt),Rt-=Ut;for(var Bn=wu(yn,Vt);++Yt0||Vt<0)?new yo(Yt):(Rt<0?Yt=Yt.takeRight(-Rt):Rt&&(Yt=Yt.drop(Rt)),Vt!==nt&&(Vt=Do(Vt),Yt=Vt<0?Yt.dropRight(-Vt):Yt.take(Vt-Rt)),Yt)},yo.prototype.takeRightWhile=function(Rt){return this.reverse().takeWhile(Rt).reverse()},yo.prototype.toArray=function(){return this.take(Ut)},xl(yo.prototype,function(Rt,Vt){var Yt=/^(?:filter|find|map|reject)|While$/.test(Vt),yn=/^(?:head|last)$/.test(Vt),Bn=Fn[yn?"take"+(Vt=="last"?"Right":""):Vt],Wn=yn||/^find/.test(Vt);Bn&&(Fn.prototype[Vt]=function(){var Xn=this.__wrapped__,Qn=yn?[1]:arguments,ar=Xn instanceof yo,Ir=Qn[0],Cr=ar||Mo(Xn),Or=function(Uo){var Ho=Bn.apply(Fn,Ll([Uo],Qn));return yn&&Qr?Ho[0]:Ho};Cr&&Yt&&typeof Ir=="function"&&Ir.length!=1&&(ar=Cr=!1);var Qr=this.__chain__,uo=!!this.__actions__.length,So=Wn&&!Qr,Lo=ar&&!uo;if(!Wn&&Cr){Xn=Lo?Xn:new yo(this);var Eo=Rt.apply(Xn,Qn);return Eo.__actions__.push({func:A0,args:[Or],thisArg:nt}),new Rs(Eo,Qr)}return So&&Lo?Rt.apply(this,Qn):(Eo=this.thru(Or),So?yn?Eo.value()[0]:Eo.value():Eo)})}),ws(["pop","push","shift","sort","splice","unshift"],function(Rt){var Vt=$u[Rt],Yt=/^(?:push|sort|unshift)$/.test(Rt)?"tap":"thru",yn=/^(?:pop|shift)$/.test(Rt);Fn.prototype[Rt]=function(){var Bn=arguments;if(yn&&!this.__chain__){var Wn=this.value();return Vt.apply(Mo(Wn)?Wn:[],Bn)}return this[Yt](function(Xn){return Vt.apply(Mo(Xn)?Xn:[],Bn)})}}),xl(yo.prototype,function(Rt,Vt){var Yt=Fn[Vt];if(Yt){var yn=Yt.name+"";qo.call(Zu,yn)||(Zu[yn]=[]),Zu[yn].push({name:Vt,func:Yt})}}),Zu[Cn(nt,bt).name]=[{name:"wrapper",func:nt}],yo.prototype.clone=L0,yo.prototype.reverse=F0,yo.prototype.value=yl,Fn.prototype.at=Fv,Fn.prototype.chain=Uv,Fn.prototype.commit=zv,Fn.prototype.next=Wv,Fn.prototype.plant=Hv,Fn.prototype.reverse=Gv,Fn.prototype.toJSON=Fn.prototype.valueOf=Fn.prototype.value=qv,Fn.prototype.first=Fn.prototype.head,Mu&&(Fn.prototype[Mu]=Vv),Fn},Cu=zy();ls?((ls.exports=Cu)._=Cu,gu._=Cu):ns._=Cu}).call(commonjsGlobal)})(lodash,lodash.exports);var lodashExports=lodash.exports;const AudioIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Audio",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1506_147",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1506_147)",children:jsxRuntimeExports.jsx("path",{id:"headphones",d:"M4.48719 13.6667H3.53851C3.20175 13.6667 2.91671 13.55 2.68337 13.3167C2.45004 13.0833 2.33337 12.7983 2.33337 12.4615V8.00002C2.33337 7.21337 2.4821 6.47654 2.77954 5.78952C3.07697 5.10251 3.48124 4.50345 3.99234 3.99234C4.50345 3.48124 5.10247 3.07697 5.78941 2.77954C6.47634 2.4821 7.21309 2.33337 7.99966 2.33337C8.78622 2.33337 9.5231 2.4821 10.2103 2.77954C10.8975 3.07697 11.4966 3.48124 12.0077 3.99234C12.5188 4.50345 12.9231 5.10251 13.2205 5.78952C13.518 6.47654 13.6667 7.21337 13.6667 8.00002V12.4615C13.6667 12.7983 13.55 13.0833 13.3167 13.3167C13.0833 13.55 12.7983 13.6667 12.4615 13.6667H11.5129C11.1814 13.6667 10.8977 13.5487 10.6617 13.3127C10.4257 13.0767 10.3077 12.793 10.3077 12.4615V10.1539C10.3077 9.82247 10.4257 9.53878 10.6617 9.30278C10.8977 9.06676 11.1814 8.94876 11.5129 8.94876H12.6667V8.00002C12.6667 6.70002 12.2139 5.59725 11.3084 4.69169C10.4028 3.78614 9.30002 3.33336 8.00002 3.33336C6.70002 3.33336 5.59725 3.78614 4.69169 4.69169C3.78614 5.59725 3.33336 6.70002 3.33336 8.00002V8.94876H4.48719C4.8186 8.94876 5.10231 9.06676 5.33831 9.30278C5.57431 9.53878 5.69231 9.82247 5.69231 10.1539V12.4615C5.69231 12.793 5.57431 13.0767 5.33831 13.3127C5.10231 13.5487 4.8186 13.6667 4.48719 13.6667Z",fill:"currentColor"})})]})}),BudgetIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 22 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsx("path",{d:"M14 16C11.7667 16 9.875 15.225 8.325 13.675C6.775 12.125 6 10.2333 6 8C6 5.76667 6.775 3.875 8.325 2.325C9.875 0.775 11.7667 0 14 0C16.2333 0 18.125 0.775 19.675 2.325C21.225 3.875 22 5.76667 22 8C22 10.2333 21.225 12.125 19.675 13.675C18.125 15.225 16.2333 16 14 16ZM4.625 15.25C3.225 14.6 2.10433 13.625 1.263 12.325C0.421 11.025 0 9.58333 0 8C0 6.41667 0.421 4.975 1.263 3.675C2.10433 2.375 3.225 1.4 4.625 0.75C4.975 0.583333 5.29167 0.595667 5.575 0.787C5.85833 0.979 6 1.29167 6 1.725C6 1.89167 5.946 2.054 5.838 2.212C5.72933 2.37067 5.59167 2.49167 5.425 2.575C4.375 3.05833 3.54167 3.78733 2.925 4.762C2.30833 5.73733 2 6.81667 2 8C2 9.18333 2.30833 10.2623 2.925 11.237C3.54167 12.2123 4.375 12.9417 5.425 13.425C5.59167 13.5083 5.72933 13.625 5.838 13.775C5.946 13.925 6 14.0917 6 14.275C6 14.6917 5.85833 15 5.575 15.2C5.29167 15.4 4.975 15.4167 4.625 15.25ZM14 14C15.6667 14 17.0833 13.4167 18.25 12.25C19.4167 11.0833 20 9.66667 20 8C20 6.33333 19.4167 4.91667 18.25 3.75C17.0833 2.58333 15.6667 2 14 2C12.3333 2 10.9167 2.58333 9.75 3.75C8.58333 4.91667 8 6.33333 8 8C8 9.66667 8.58333 11.0833 9.75 12.25C10.9167 13.4167 12.3333 14 14 14Z",fill:"currentColor"})}),NodesIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Nodes",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1506_141",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1506_141)",children:jsxRuntimeExports.jsx("path",{id:"hub",d:"M4.00071 15.1667C3.49166 15.1667 3.05873 14.9886 2.70189 14.6322C2.34506 14.2759 2.16664 13.8432 2.16664 13.3341C2.16664 12.8251 2.3449 12.3922 2.70141 12.0353C3.05793 11.6785 3.49084 11.5001 4.00014 11.5001C4.14275 11.5001 4.28286 11.5178 4.42048 11.5533C4.55808 11.5887 4.68799 11.6364 4.81021 11.6962L6.13204 10.0513C5.85512 9.74962 5.66409 9.41201 5.55896 9.03851C5.45384 8.66501 5.43247 8.28938 5.49486 7.91161L3.57431 7.2757C3.40679 7.54493 3.18652 7.76074 2.91351 7.92313C2.6405 8.08552 2.33598 8.16671 1.99996 8.16671C1.4907 8.16671 1.05784 7.98855 0.701359 7.63221C0.344882 7.27588 0.166637 6.84319 0.166626 6.33415C0.166626 5.8251 0.344793 5.39217 0.701126 5.03533C1.05746 4.6785 1.49015 4.50008 1.99919 4.50008C2.50824 4.50008 2.94118 4.67832 3.29801 5.0348C3.65484 5.39128 3.83326 5.82414 3.83328 6.3334C3.83328 6.37272 3.83221 6.40563 3.83008 6.43211C3.82794 6.45861 3.82688 6.48511 3.82688 6.51161L5.74101 7.177C5.92476 6.83683 6.17711 6.54496 6.49806 6.30138C6.81899 6.05779 7.18715 5.90138 7.60253 5.83215V3.78595C7.17347 3.68509 6.82689 3.46821 6.56279 3.13531C6.29869 2.80241 6.16664 2.42312 6.16664 1.99742C6.16664 1.49064 6.34481 1.05883 6.70114 0.701999C7.05748 0.345166 7.49016 0.166748 7.99921 0.166748C8.50825 0.166748 8.94119 0.344987 9.29803 0.701465C9.65486 1.05794 9.83328 1.49081 9.83328 2.00007C9.83328 2.424 9.69951 2.80241 9.43199 3.13531C9.16448 3.46821 8.81961 3.68509 8.39739 3.78595V5.83215C8.81277 5.90138 9.17986 6.05779 9.49866 6.30138C9.81746 6.54496 10.0709 6.83683 10.2589 7.177L12.173 6.51161C12.1688 6.48084 12.1666 6.45327 12.1666 6.42892V6.3334C12.1666 5.82414 12.3448 5.39128 12.7011 5.0348C13.0575 4.67832 13.4902 4.50008 13.9992 4.50008C14.5083 4.50008 14.9412 4.67825 15.298 5.03458C15.6549 5.39091 15.8333 5.8236 15.8333 6.33265C15.8333 6.84169 15.655 7.27463 15.2986 7.63146C14.9421 7.9883 14.5092 8.16671 14 8.16671C13.6653 8.16671 13.3594 8.08552 13.0823 7.92313C12.8052 7.76074 12.5863 7.54493 12.4256 7.2757L10.5051 7.91161C10.5674 8.28938 10.5461 8.6633 10.441 9.03338C10.3358 9.40347 10.1448 9.74065 9.86788 10.0449L11.1897 11.6796C11.3119 11.624 11.4418 11.5802 11.5794 11.5481C11.7171 11.5161 11.8572 11.5001 11.9998 11.5001C12.5091 11.5001 12.942 11.6782 13.2985 12.0346C13.655 12.3909 13.8333 12.8236 13.8333 13.3326C13.8333 13.8417 13.6551 14.2746 13.2988 14.6315C12.9424 14.9883 12.5098 15.1667 12.0007 15.1667C11.4917 15.1667 11.0587 14.9885 10.7019 14.632C10.3451 14.2755 10.1666 13.8427 10.1666 13.3334C10.1666 13.1232 10.2006 12.9208 10.2686 12.7264C10.3365 12.5319 10.438 12.3535 10.573 12.1911L9.25123 10.5334C8.8726 10.759 8.45488 10.8718 7.99804 10.8718C7.54121 10.8718 7.12134 10.759 6.73844 10.5334L5.42688 12.1911C5.55764 12.3535 5.65807 12.5319 5.72816 12.7264C5.79824 12.9208 5.83328 13.1232 5.83328 13.3334C5.83328 13.8427 5.65511 14.2755 5.29878 14.632C4.94244 14.9885 4.50975 15.1667 4.00071 15.1667Z",fill:"currentColor"})})]})}),TwitterIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Twitter",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1506_167",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1506_167)",children:jsxRuntimeExports.jsx("g",{id:"X",children:jsxRuntimeExports.jsx("path",{id:"path1009",d:"M2.0317 2L7.05085 8.71109L2 14.1675H3.13674L7.55875 9.39033L11.1316 14.1675H15L9.69845 7.07891L14.3997 2H13.263L9.19054 6.39967L5.90008 2H2.0317ZM3.70336 2.83733H5.48051L13.3281 13.33H11.5509L3.70336 2.83733Z",fill:"currentColor"})})})]})}),VideoIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Video",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1506_153",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1506_153)",children:jsxRuntimeExports.jsx("path",{id:"Subtract","fill-rule":"evenodd","clip-rule":"evenodd",d:"M14.3782 3.03719C15.0725 3.22309 15.6201 3.76987 15.8053 4.46427C16.1429 5.72367 16.1429 8.35001 16.1429 8.35001C16.1429 8.35001 16.1429 10.9773 15.8053 12.2358C15.6201 12.9302 15.0725 13.4769 14.3782 13.6628C13.1197 14 8.07143 14 8.07143 14C8.07143 14 3.02403 14 1.76471 13.6628C1.07038 13.4769 0.522808 12.9302 0.337533 12.2358C0 10.9764 0 8.35001 0 8.35001C0 8.35001 0 5.72367 0.337533 4.46427C0.522808 3.76987 1.07038 3.22309 1.76471 3.03719C3.02312 2.70001 8.07143 2.70001 8.07143 2.70001C8.07143 2.70001 13.1197 2.70001 14.3782 3.03719ZM10.4931 8.35003L6.45735 5.9286V10.7715L10.4931 8.35003Z",fill:"currentColor"})})]})}),EpisodeIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 12",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Episode",children:[jsxRuntimeExports.jsx("rect",{id:"Rectangle 4456",x:"0.5",y:"5.625",width:"1em",height:"1em",rx:"0.5",stroke:"white"}),jsxRuntimeExports.jsx("path",{id:"Rectangle 4457",d:"M2.0625 3.0625H12.0625C12.6148 3.0625 13.0625 3.51022 13.0625 4.0625V9.9375",stroke:"white"}),jsxRuntimeExports.jsx("path",{id:"Rectangle 4458",d:"M4.125 1H14.125C14.6773 1 15.125 1.44772 15.125 2V7.875",stroke:"white"})]})}),Stats=()=>{const[tt,et]=reactExports.useState(null),[nt]=useUserStore(it=>[it.budget]);function rt(it){return it===null?"?":it.toLocaleString().split(",").join(" ")}return reactExports.useEffect(()=>{(async()=>{try{const ot=await api.get("/stats");ot&&et({numAudio:ot.num_audio,numContributors:ot.num_contributors,numDaily:ot.num_daily,numEpisodes:ot.num_episodes,numNodes:ot.num_nodes,numTwitterSpace:ot.num_twitter_space,numVideo:ot.num_video})}catch{lodashExports.noop()}})()},[]),tt?jsxRuntimeExports.jsxs(StatisticsContainer,{children:[jsxRuntimeExports.jsxs(StatisticsWrapper,{children:[jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(NodesIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numNodes})]}),jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(EpisodeIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numEpisodes})]}),jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(AudioIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numAudio})]}),jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(VideoIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numVideo})]}),jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(TwitterIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numTwitterSpace})]})]}),jsxRuntimeExports.jsx(StatisticsBudget,{children:jsxRuntimeExports.jsxs(Budget,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(BudgetIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:jsxRuntimeExports.jsxs("p",{children:[`${rt(nt)} `," ",jsxRuntimeExports.jsx("span",{className:"budgetUnit",children:"SAT"})]})})]})})]}):null},StatisticsWrapper=styled$4(Flex).attrs({align:"center",direction:"row",grow:1,justify:"flex-start"})``,StatisticsBudget=styled$4(Flex).attrs({align:"center",direction:"row",grow:1,justify:"flex-end"})``,StatisticsContainer=styled$4(Flex).attrs({align:"center",direction:"row",grow:1})` +}`;var Lo=fw(function(){return $o(Wn,uo+"return "+Or).apply(nt,Xn)});if(Lo.source=Or,o1(Lo))throw Lo;return Lo}function lx(Rt){return Qo(Rt).toLowerCase()}function cx(Rt){return Qo(Rt).toUpperCase()}function ux(Rt,Vt,Yt){if(Rt=Qo(Rt),Rt&&(Yt||Vt===nt))return wm(Rt);if(!Rt||!(Vt=js(Vt)))return Rt;var yn=ss(Rt),Bn=ss(Vt),Wn=_a(yn,Bn),Xn=cp(yn,Bn)+1;return Uu(yn,Wn,Xn).join("")}function hx(Rt,Vt,Yt){if(Rt=Qo(Rt),Rt&&(Yt||Vt===nt))return Rt.slice(0,fp(Rt)+1);if(!Rt||!(Vt=js(Vt)))return Rt;var yn=ss(Rt),Bn=cp(yn,ss(Vt))+1;return Uu(yn,0,Bn).join("")}function dx(Rt,Vt,Yt){if(Rt=Qo(Rt),Rt&&(Yt||Vt===nt))return Rt.replace(xn,"");if(!Rt||!(Vt=js(Vt)))return Rt;var yn=ss(Rt),Bn=_a(yn,ss(Vt));return Uu(yn,Bn).join("")}function fx(Rt,Vt){var Yt=Dt,yn=jt;if(ds(Vt)){var Bn="separator"in Vt?Vt.separator:Bn;Yt="length"in Vt?Do(Vt.length):Yt,yn="omission"in Vt?js(Vt.omission):yn}Rt=Qo(Rt);var Wn=Rt.length;if(qu(Rt)){var Xn=ss(Rt);Wn=Xn.length}if(Yt>=Wn)return Rt;var Qn=Yt-ru(yn);if(Qn<1)return yn;var ar=Xn?Uu(Xn,0,Qn).join(""):Rt.slice(0,Qn);if(Bn===nt)return ar+yn;if(Xn&&(Qn+=ar.length-Qn),a1(Bn)){if(Rt.slice(Qn).search(Bn)){var Ir,Cr=ar;for(Bn.global||(Bn=Es(Bn.source,Qo(lr.exec(Bn))+"g")),Bn.lastIndex=0;Ir=Bn.exec(Cr);)var Or=Ir.index;ar=ar.slice(0,Or===nt?Qn:Or)}}else if(Rt.indexOf(js(Bn),Qn)!=Qn){var Qr=ar.lastIndexOf(Bn);Qr>-1&&(ar=ar.slice(0,Qr))}return ar+yn}function mx(Rt){return Rt=Qo(Rt),Rt&&io.test(Rt)?Rt.replace(fr,pp):Rt}var gx=Bt(function(Rt,Vt,Yt){return Rt+(Yt?" ":"")+Vt.toUpperCase()}),c1=E0("toUpperCase");function dw(Rt,Vt,Yt){return Rt=Qo(Rt),Vt=Yt?nt:Vt,Vt===nt?Up(Rt)?mp(Rt):jy(Rt):Rt.match(Vt)||[]}var fw=mo(function(Rt,Vt){try{return Vo(Rt,nt,Vt)}catch(Yt){return o1(Yt)?Yt:new To(Yt)}}),yx=jo(function(Rt,Vt){return ws(Vt,function(Yt){Yt=Wu(Yt),lu(Rt,Yt,r1(Rt[Yt],Rt))}),Rt});function bx(Rt){var Vt=Rt==null?0:Rt.length,Yt=wo();return Rt=Vt?ba(Rt,function(yn){if(typeof yn[1]!="function")throw new Gs(at);return[Yt(yn[0]),yn[1]]}):[],mo(function(yn){for(var Bn=-1;++Bnzt)return[];var Yt=Ut,yn=Ms(Rt,Ut);Vt=wo(Vt),Rt-=Ut;for(var Bn=wu(yn,Vt);++Yt0||Vt<0)?new yo(Yt):(Rt<0?Yt=Yt.takeRight(-Rt):Rt&&(Yt=Yt.drop(Rt)),Vt!==nt&&(Vt=Do(Vt),Yt=Vt<0?Yt.dropRight(-Vt):Yt.take(Vt-Rt)),Yt)},yo.prototype.takeRightWhile=function(Rt){return this.reverse().takeWhile(Rt).reverse()},yo.prototype.toArray=function(){return this.take(Ut)},xl(yo.prototype,function(Rt,Vt){var Yt=/^(?:filter|find|map|reject)|While$/.test(Vt),yn=/^(?:head|last)$/.test(Vt),Bn=Fn[yn?"take"+(Vt=="last"?"Right":""):Vt],Wn=yn||/^find/.test(Vt);Bn&&(Fn.prototype[Vt]=function(){var Xn=this.__wrapped__,Qn=yn?[1]:arguments,ar=Xn instanceof yo,Ir=Qn[0],Cr=ar||Mo(Xn),Or=function(Uo){var Ho=Bn.apply(Fn,Ll([Uo],Qn));return yn&&Qr?Ho[0]:Ho};Cr&&Yt&&typeof Ir=="function"&&Ir.length!=1&&(ar=Cr=!1);var Qr=this.__chain__,uo=!!this.__actions__.length,So=Wn&&!Qr,Lo=ar&&!uo;if(!Wn&&Cr){Xn=Lo?Xn:new yo(this);var Eo=Rt.apply(Xn,Qn);return Eo.__actions__.push({func:A0,args:[Or],thisArg:nt}),new Rs(Eo,Qr)}return So&&Lo?Rt.apply(this,Qn):(Eo=this.thru(Or),So?yn?Eo.value()[0]:Eo.value():Eo)})}),ws(["pop","push","shift","sort","splice","unshift"],function(Rt){var Vt=$u[Rt],Yt=/^(?:push|sort|unshift)$/.test(Rt)?"tap":"thru",yn=/^(?:pop|shift)$/.test(Rt);Fn.prototype[Rt]=function(){var Bn=arguments;if(yn&&!this.__chain__){var Wn=this.value();return Vt.apply(Mo(Wn)?Wn:[],Bn)}return this[Yt](function(Xn){return Vt.apply(Mo(Xn)?Xn:[],Bn)})}}),xl(yo.prototype,function(Rt,Vt){var Yt=Fn[Vt];if(Yt){var yn=Yt.name+"";qo.call(Zu,yn)||(Zu[yn]=[]),Zu[yn].push({name:Vt,func:Yt})}}),Zu[Cn(nt,bt).name]=[{name:"wrapper",func:nt}],yo.prototype.clone=L0,yo.prototype.reverse=F0,yo.prototype.value=yl,Fn.prototype.at=Uv,Fn.prototype.chain=zv,Fn.prototype.commit=Wv,Fn.prototype.next=Vv,Fn.prototype.plant=Gv,Fn.prototype.reverse=qv,Fn.prototype.toJSON=Fn.prototype.valueOf=Fn.prototype.value=Yv,Fn.prototype.first=Fn.prototype.head,Mu&&(Fn.prototype[Mu]=Hv),Fn},Cu=zy();ls?((ls.exports=Cu)._=Cu,gu._=Cu):ns._=Cu}).call(commonjsGlobal)})(lodash,lodash.exports);var lodashExports=lodash.exports;const AudioIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Audio",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1506_147",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1506_147)",children:jsxRuntimeExports.jsx("path",{id:"headphones",d:"M4.48719 13.6667H3.53851C3.20175 13.6667 2.91671 13.55 2.68337 13.3167C2.45004 13.0833 2.33337 12.7983 2.33337 12.4615V8.00002C2.33337 7.21337 2.4821 6.47654 2.77954 5.78952C3.07697 5.10251 3.48124 4.50345 3.99234 3.99234C4.50345 3.48124 5.10247 3.07697 5.78941 2.77954C6.47634 2.4821 7.21309 2.33337 7.99966 2.33337C8.78622 2.33337 9.5231 2.4821 10.2103 2.77954C10.8975 3.07697 11.4966 3.48124 12.0077 3.99234C12.5188 4.50345 12.9231 5.10251 13.2205 5.78952C13.518 6.47654 13.6667 7.21337 13.6667 8.00002V12.4615C13.6667 12.7983 13.55 13.0833 13.3167 13.3167C13.0833 13.55 12.7983 13.6667 12.4615 13.6667H11.5129C11.1814 13.6667 10.8977 13.5487 10.6617 13.3127C10.4257 13.0767 10.3077 12.793 10.3077 12.4615V10.1539C10.3077 9.82247 10.4257 9.53878 10.6617 9.30278C10.8977 9.06676 11.1814 8.94876 11.5129 8.94876H12.6667V8.00002C12.6667 6.70002 12.2139 5.59725 11.3084 4.69169C10.4028 3.78614 9.30002 3.33336 8.00002 3.33336C6.70002 3.33336 5.59725 3.78614 4.69169 4.69169C3.78614 5.59725 3.33336 6.70002 3.33336 8.00002V8.94876H4.48719C4.8186 8.94876 5.10231 9.06676 5.33831 9.30278C5.57431 9.53878 5.69231 9.82247 5.69231 10.1539V12.4615C5.69231 12.793 5.57431 13.0767 5.33831 13.3127C5.10231 13.5487 4.8186 13.6667 4.48719 13.6667Z",fill:"currentColor"})})]})}),BudgetIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 22 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsx("path",{d:"M14 16C11.7667 16 9.875 15.225 8.325 13.675C6.775 12.125 6 10.2333 6 8C6 5.76667 6.775 3.875 8.325 2.325C9.875 0.775 11.7667 0 14 0C16.2333 0 18.125 0.775 19.675 2.325C21.225 3.875 22 5.76667 22 8C22 10.2333 21.225 12.125 19.675 13.675C18.125 15.225 16.2333 16 14 16ZM4.625 15.25C3.225 14.6 2.10433 13.625 1.263 12.325C0.421 11.025 0 9.58333 0 8C0 6.41667 0.421 4.975 1.263 3.675C2.10433 2.375 3.225 1.4 4.625 0.75C4.975 0.583333 5.29167 0.595667 5.575 0.787C5.85833 0.979 6 1.29167 6 1.725C6 1.89167 5.946 2.054 5.838 2.212C5.72933 2.37067 5.59167 2.49167 5.425 2.575C4.375 3.05833 3.54167 3.78733 2.925 4.762C2.30833 5.73733 2 6.81667 2 8C2 9.18333 2.30833 10.2623 2.925 11.237C3.54167 12.2123 4.375 12.9417 5.425 13.425C5.59167 13.5083 5.72933 13.625 5.838 13.775C5.946 13.925 6 14.0917 6 14.275C6 14.6917 5.85833 15 5.575 15.2C5.29167 15.4 4.975 15.4167 4.625 15.25ZM14 14C15.6667 14 17.0833 13.4167 18.25 12.25C19.4167 11.0833 20 9.66667 20 8C20 6.33333 19.4167 4.91667 18.25 3.75C17.0833 2.58333 15.6667 2 14 2C12.3333 2 10.9167 2.58333 9.75 3.75C8.58333 4.91667 8 6.33333 8 8C8 9.66667 8.58333 11.0833 9.75 12.25C10.9167 13.4167 12.3333 14 14 14Z",fill:"currentColor"})}),NodesIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Nodes",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1506_141",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1506_141)",children:jsxRuntimeExports.jsx("path",{id:"hub",d:"M4.00071 15.1667C3.49166 15.1667 3.05873 14.9886 2.70189 14.6322C2.34506 14.2759 2.16664 13.8432 2.16664 13.3341C2.16664 12.8251 2.3449 12.3922 2.70141 12.0353C3.05793 11.6785 3.49084 11.5001 4.00014 11.5001C4.14275 11.5001 4.28286 11.5178 4.42048 11.5533C4.55808 11.5887 4.68799 11.6364 4.81021 11.6962L6.13204 10.0513C5.85512 9.74962 5.66409 9.41201 5.55896 9.03851C5.45384 8.66501 5.43247 8.28938 5.49486 7.91161L3.57431 7.2757C3.40679 7.54493 3.18652 7.76074 2.91351 7.92313C2.6405 8.08552 2.33598 8.16671 1.99996 8.16671C1.4907 8.16671 1.05784 7.98855 0.701359 7.63221C0.344882 7.27588 0.166637 6.84319 0.166626 6.33415C0.166626 5.8251 0.344793 5.39217 0.701126 5.03533C1.05746 4.6785 1.49015 4.50008 1.99919 4.50008C2.50824 4.50008 2.94118 4.67832 3.29801 5.0348C3.65484 5.39128 3.83326 5.82414 3.83328 6.3334C3.83328 6.37272 3.83221 6.40563 3.83008 6.43211C3.82794 6.45861 3.82688 6.48511 3.82688 6.51161L5.74101 7.177C5.92476 6.83683 6.17711 6.54496 6.49806 6.30138C6.81899 6.05779 7.18715 5.90138 7.60253 5.83215V3.78595C7.17347 3.68509 6.82689 3.46821 6.56279 3.13531C6.29869 2.80241 6.16664 2.42312 6.16664 1.99742C6.16664 1.49064 6.34481 1.05883 6.70114 0.701999C7.05748 0.345166 7.49016 0.166748 7.99921 0.166748C8.50825 0.166748 8.94119 0.344987 9.29803 0.701465C9.65486 1.05794 9.83328 1.49081 9.83328 2.00007C9.83328 2.424 9.69951 2.80241 9.43199 3.13531C9.16448 3.46821 8.81961 3.68509 8.39739 3.78595V5.83215C8.81277 5.90138 9.17986 6.05779 9.49866 6.30138C9.81746 6.54496 10.0709 6.83683 10.2589 7.177L12.173 6.51161C12.1688 6.48084 12.1666 6.45327 12.1666 6.42892V6.3334C12.1666 5.82414 12.3448 5.39128 12.7011 5.0348C13.0575 4.67832 13.4902 4.50008 13.9992 4.50008C14.5083 4.50008 14.9412 4.67825 15.298 5.03458C15.6549 5.39091 15.8333 5.8236 15.8333 6.33265C15.8333 6.84169 15.655 7.27463 15.2986 7.63146C14.9421 7.9883 14.5092 8.16671 14 8.16671C13.6653 8.16671 13.3594 8.08552 13.0823 7.92313C12.8052 7.76074 12.5863 7.54493 12.4256 7.2757L10.5051 7.91161C10.5674 8.28938 10.5461 8.6633 10.441 9.03338C10.3358 9.40347 10.1448 9.74065 9.86788 10.0449L11.1897 11.6796C11.3119 11.624 11.4418 11.5802 11.5794 11.5481C11.7171 11.5161 11.8572 11.5001 11.9998 11.5001C12.5091 11.5001 12.942 11.6782 13.2985 12.0346C13.655 12.3909 13.8333 12.8236 13.8333 13.3326C13.8333 13.8417 13.6551 14.2746 13.2988 14.6315C12.9424 14.9883 12.5098 15.1667 12.0007 15.1667C11.4917 15.1667 11.0587 14.9885 10.7019 14.632C10.3451 14.2755 10.1666 13.8427 10.1666 13.3334C10.1666 13.1232 10.2006 12.9208 10.2686 12.7264C10.3365 12.5319 10.438 12.3535 10.573 12.1911L9.25123 10.5334C8.8726 10.759 8.45488 10.8718 7.99804 10.8718C7.54121 10.8718 7.12134 10.759 6.73844 10.5334L5.42688 12.1911C5.55764 12.3535 5.65807 12.5319 5.72816 12.7264C5.79824 12.9208 5.83328 13.1232 5.83328 13.3334C5.83328 13.8427 5.65511 14.2755 5.29878 14.632C4.94244 14.9885 4.50975 15.1667 4.00071 15.1667Z",fill:"currentColor"})})]})}),TwitterIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Twitter",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1506_167",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1506_167)",children:jsxRuntimeExports.jsx("g",{id:"X",children:jsxRuntimeExports.jsx("path",{id:"path1009",d:"M2.0317 2L7.05085 8.71109L2 14.1675H3.13674L7.55875 9.39033L11.1316 14.1675H15L9.69845 7.07891L14.3997 2H13.263L9.19054 6.39967L5.90008 2H2.0317ZM3.70336 2.83733H5.48051L13.3281 13.33H11.5509L3.70336 2.83733Z",fill:"currentColor"})})})]})}),VideoIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Video",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1506_153",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1506_153)",children:jsxRuntimeExports.jsx("path",{id:"Subtract","fill-rule":"evenodd","clip-rule":"evenodd",d:"M14.3782 3.03719C15.0725 3.22309 15.6201 3.76987 15.8053 4.46427C16.1429 5.72367 16.1429 8.35001 16.1429 8.35001C16.1429 8.35001 16.1429 10.9773 15.8053 12.2358C15.6201 12.9302 15.0725 13.4769 14.3782 13.6628C13.1197 14 8.07143 14 8.07143 14C8.07143 14 3.02403 14 1.76471 13.6628C1.07038 13.4769 0.522808 12.9302 0.337533 12.2358C0 10.9764 0 8.35001 0 8.35001C0 8.35001 0 5.72367 0.337533 4.46427C0.522808 3.76987 1.07038 3.22309 1.76471 3.03719C3.02312 2.70001 8.07143 2.70001 8.07143 2.70001C8.07143 2.70001 13.1197 2.70001 14.3782 3.03719ZM10.4931 8.35003L6.45735 5.9286V10.7715L10.4931 8.35003Z",fill:"currentColor"})})]})}),EpisodeIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 12",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"Episode",children:[jsxRuntimeExports.jsx("rect",{id:"Rectangle 4456",x:"0.5",y:"5.625",width:"1em",height:"1em",rx:"0.5",stroke:"white"}),jsxRuntimeExports.jsx("path",{id:"Rectangle 4457",d:"M2.0625 3.0625H12.0625C12.6148 3.0625 13.0625 3.51022 13.0625 4.0625V9.9375",stroke:"white"}),jsxRuntimeExports.jsx("path",{id:"Rectangle 4458",d:"M4.125 1H14.125C14.6773 1 15.125 1.44772 15.125 2V7.875",stroke:"white"})]})}),Stats=()=>{const[tt,et]=reactExports.useState(null),[nt]=useUserStore(it=>[it.budget]);function rt(it){return it===null?"?":it.toLocaleString().split(",").join(" ")}return reactExports.useEffect(()=>{(async()=>{try{const ot=await api.get("/stats");ot&&et({numAudio:ot.num_audio,numContributors:ot.num_contributors,numDaily:ot.num_daily,numEpisodes:ot.num_episodes,numNodes:ot.num_nodes,numTwitterSpace:ot.num_twitter_space,numVideo:ot.num_video})}catch{lodashExports.noop()}})()},[]),tt?jsxRuntimeExports.jsxs(StatisticsContainer,{children:[jsxRuntimeExports.jsxs(StatisticsWrapper,{children:[jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(NodesIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numNodes})]}),jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(EpisodeIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numEpisodes})]}),jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(AudioIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numAudio})]}),jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(VideoIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numVideo})]}),jsxRuntimeExports.jsxs(Stat,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(TwitterIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:tt.numTwitterSpace})]})]}),jsxRuntimeExports.jsx(StatisticsBudget,{children:jsxRuntimeExports.jsxs(Budget,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(BudgetIcon,{})}),jsxRuntimeExports.jsx("div",{className:"text",children:jsxRuntimeExports.jsxs("p",{children:[`${rt(nt)} `," ",jsxRuntimeExports.jsx("span",{className:"budgetUnit",children:"SAT"})]})})]})})]}):null},StatisticsWrapper=styled$4(Flex).attrs({align:"center",direction:"row",grow:1,justify:"flex-start"})``,StatisticsBudget=styled$4(Flex).attrs({align:"center",direction:"row",grow:1,justify:"flex-end"})``,StatisticsContainer=styled$4(Flex).attrs({align:"center",direction:"row",grow:1})` justify-content: between; `,Stat=styled$4(Flex).attrs({align:"center",direction:"row",justify:"flex-start"})` color: ${colors.white}; @@ -7303,16 +7339,7 @@ function print() { __p += __j.call(arguments, '') } `));if(tt.utils===null)throw new Error(["MUI: Can not find the date and time pickers adapter from its localization context.","It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider."].join(` `));const et=reactExports.useMemo(()=>_extends$u({},DEFAULT_LOCALE,tt.localeText),[tt.localeText]);return reactExports.useMemo(()=>_extends$u({},tt,{localeText:et}),[tt,et])},useUtils=()=>useLocalizationContext().utils,useDefaultDates=()=>useLocalizationContext().defaultDates,useLocaleText=()=>useLocalizationContext().localeText,useNow=tt=>{const et=useUtils(),nt=reactExports.useRef();return nt.current===void 0&&(nt.current=et.dateWithTimezone(void 0,tt)),nt.current},ArrowDropDownIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),ArrowLeftIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"}),"ArrowLeft"),ArrowRightIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"}),"ArrowRight"),CalendarIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"}),"Calendar");createSvgIcon(jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),jsxRuntimeExports.jsx("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]}),"Clock");createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z"}),"DateRange");createSvgIcon(jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),jsxRuntimeExports.jsx("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]}),"Time");const ClearIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear");function getPickersArrowSwitcherUtilityClass(tt){return generateUtilityClass("MuiPickersArrowSwitcher",tt)}generateUtilityClasses("MuiPickersArrowSwitcher",["root","spacer","button"]);const _excluded$E=["children","className","slots","slotProps","isNextDisabled","isNextHidden","onGoToNext","nextLabel","isPreviousDisabled","isPreviousHidden","onGoToPrevious","previousLabel"],_excluded2$b=["ownerState"],_excluded3$3=["ownerState"],PickersArrowSwitcherRoot=styled$1("div",{name:"MuiPickersArrowSwitcher",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex"}),PickersArrowSwitcherSpacer=styled$1("div",{name:"MuiPickersArrowSwitcher",slot:"Spacer",overridesResolver:(tt,et)=>et.spacer})(({theme:tt})=>({width:tt.spacing(3)})),PickersArrowSwitcherButton=styled$1(IconButton$2,{name:"MuiPickersArrowSwitcher",slot:"Button",overridesResolver:(tt,et)=>et.button})(({ownerState:tt})=>_extends$u({},tt.hidden&&{visibility:"hidden"})),useUtilityClasses$f=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],spacer:["spacer"],button:["button"]},getPickersArrowSwitcherUtilityClass,et)},PickersArrowSwitcher=reactExports.forwardRef(function(et,nt){var rt,it,ot,at;const lt=useTheme().direction==="rtl",ct=useThemeProps({props:et,name:"MuiPickersArrowSwitcher"}),{children:ut,className:ht,slots:dt,slotProps:pt,isNextDisabled:mt,isNextHidden:gt,onGoToNext:yt,nextLabel:bt,isPreviousDisabled:vt,isPreviousHidden:xt,onGoToPrevious:kt,previousLabel:St}=ct,Tt=_objectWithoutPropertiesLoose$m(ct,_excluded$E),At=ct,Et=useUtilityClasses$f(At),$t={isDisabled:mt,isHidden:gt,goTo:yt,label:bt},Dt={isDisabled:vt,isHidden:xt,goTo:kt,label:St},jt=(rt=dt==null?void 0:dt.previousIconButton)!=null?rt:PickersArrowSwitcherButton,Pt=useSlotProps({elementType:jt,externalSlotProps:pt==null?void 0:pt.previousIconButton,additionalProps:{size:"medium",title:Dt.label,"aria-label":Dt.label,disabled:Dt.isDisabled,edge:"end",onClick:Dt.goTo},ownerState:_extends$u({},At,{hidden:Dt.isHidden}),className:Et.button}),Ct=(it=dt==null?void 0:dt.nextIconButton)!=null?it:PickersArrowSwitcherButton,wt=useSlotProps({elementType:Ct,externalSlotProps:pt==null?void 0:pt.nextIconButton,additionalProps:{size:"medium",title:$t.label,"aria-label":$t.label,disabled:$t.isDisabled,edge:"start",onClick:$t.goTo},ownerState:_extends$u({},At,{hidden:$t.isHidden}),className:Et.button}),It=(ot=dt==null?void 0:dt.leftArrowIcon)!=null?ot:ArrowLeftIcon,Ot=useSlotProps({elementType:It,externalSlotProps:pt==null?void 0:pt.leftArrowIcon,additionalProps:{fontSize:"inherit"},ownerState:void 0}),Wt=_objectWithoutPropertiesLoose$m(Ot,_excluded2$b),zt=(at=dt==null?void 0:dt.rightArrowIcon)!=null?at:ArrowRightIcon,Ft=useSlotProps({elementType:zt,externalSlotProps:pt==null?void 0:pt.rightArrowIcon,additionalProps:{fontSize:"inherit"},ownerState:void 0}),Nt=_objectWithoutPropertiesLoose$m(Ft,_excluded3$3);return jsxRuntimeExports.jsxs(PickersArrowSwitcherRoot,_extends$u({ref:nt,className:clsx(Et.root,ht),ownerState:At},Tt,{children:[jsxRuntimeExports.jsx(jt,_extends$u({},Pt,{children:lt?jsxRuntimeExports.jsx(zt,_extends$u({},Nt)):jsxRuntimeExports.jsx(It,_extends$u({},Wt))})),ut?jsxRuntimeExports.jsx(Typography$1,{variant:"subtitle1",component:"span",children:ut}):jsxRuntimeExports.jsx(PickersArrowSwitcherSpacer,{className:Et.spacer,ownerState:At}),jsxRuntimeExports.jsx(Ct,_extends$u({},wt,{children:lt?jsxRuntimeExports.jsx(It,_extends$u({},Wt)):jsxRuntimeExports.jsx(zt,_extends$u({},Nt))}))]}))}),areViewsEqual=(tt,et)=>tt.length!==et.length?!1:et.every(nt=>tt.includes(nt)),applyDefaultViewProps=({openTo:tt,defaultOpenTo:et,views:nt,defaultViews:rt})=>{const it=nt??rt;let ot;if(tt!=null)ot=tt;else if(it.includes(et))ot=et;else if(it.length>0)ot=it[0];else throw new Error("MUI: The `views` prop must contain at least one view");return{views:it,openTo:ot}},timeViews=["hours","minutes","seconds"],isTimeView=tt=>timeViews.includes(tt),getSecondsInDay=(tt,et)=>et.getHours(tt)*3600+et.getMinutes(tt)*60+et.getSeconds(tt),createIsAfterIgnoreDatePart=(tt,et)=>(nt,rt)=>tt?et.isAfter(nt,rt):getSecondsInDay(nt,et)>getSecondsInDay(rt,et);function useViews({onChange:tt,onViewChange:et,openTo:nt,view:rt,views:it,autoFocus:ot,focusedView:at,onFocusedViewChange:st}){var lt,ct;const ut=reactExports.useRef(nt),ht=reactExports.useRef(it),dt=reactExports.useRef(it.includes(nt)?nt:it[0]),[pt,mt]=useControlled({name:"useViews",state:"view",controlled:rt,default:dt.current}),gt=reactExports.useRef(ot?pt:null),[yt,bt]=useControlled({name:"useViews",state:"focusedView",controlled:at,default:gt.current});reactExports.useEffect(()=>{(ut.current&&ut.current!==nt||ht.current&&ht.current.some(Dt=>!it.includes(Dt)))&&(mt(it.includes(nt)?nt:it[0]),ht.current=it,ut.current=nt)},[nt,mt,pt,it]);const vt=it.indexOf(pt),xt=(lt=it[vt-1])!=null?lt:null,kt=(ct=it[vt+1])!=null?ct:null,St=useEventCallback((Dt,jt)=>{bt(jt?Dt:Pt=>Dt===Pt?null:Pt),st==null||st(Dt,jt)}),Tt=useEventCallback(Dt=>{Dt!==pt&&(mt(Dt),St(Dt,!0),et&&et(Dt))}),At=useEventCallback(()=>{kt&&Tt(kt),St(kt,!0)}),Et=useEventCallback((Dt,jt,Pt)=>{const Ct=jt==="finish",wt=Pt?it.indexOf(Pt){tt(Dt,jt?"partial":"finish",Pt),jt&&(Tt(jt),St(jt,!0))});return{view:pt,setView:Tt,focusedView:yt,setFocusedView:St,nextView:kt,previousView:xt,defaultView:dt.current,goToNextView:At,setValueAndGoToNextView:Et,setValueAndGoToView:$t}}function useNextMonthDisabled(tt,{disableFuture:et,maxDate:nt,timezone:rt}){const it=useUtils();return reactExports.useMemo(()=>{const ot=it.dateWithTimezone(void 0,rt),at=it.startOfMonth(et&&it.isBefore(ot,nt)?ot:nt);return!it.isAfter(at,tt)},[et,nt,tt,it,rt])}function usePreviousMonthDisabled(tt,{disablePast:et,minDate:nt,timezone:rt}){const it=useUtils();return reactExports.useMemo(()=>{const ot=it.dateWithTimezone(void 0,rt),at=it.startOfMonth(et&&it.isAfter(ot,nt)?ot:nt);return!it.isBefore(at,tt)},[et,nt,tt,it,rt])}const DAY_SIZE=36,DAY_MARGIN=2,DIALOG_WIDTH=320,MAX_CALENDAR_HEIGHT=280,VIEW_HEIGHT=334,PickerViewRoot=styled$1("div")({overflow:"hidden",width:DIALOG_WIDTH,maxHeight:VIEW_HEIGHT,display:"flex",flexDirection:"column",margin:"0 auto"}),findClosestEnabledDate=({date:tt,disableFuture:et,disablePast:nt,maxDate:rt,minDate:it,isDateDisabled:ot,utils:at,timezone:st})=>{const lt=at.startOfDay(at.dateWithTimezone(void 0,st));nt&&at.isBefore(it,lt)&&(it=lt),et&&at.isAfter(rt,lt)&&(rt=lt);let ct=tt,ut=tt;for(at.isBefore(tt,it)&&(ct=it,ut=null),at.isAfter(tt,rt)&&(ut&&(ut=rt),ct=null);ct||ut;){if(ct&&at.isAfter(ct,rt)&&(ct=null),ut&&at.isBefore(ut,it)&&(ut=null),ct){if(!ot(ct))return ct;ct=at.addDays(ct,1)}if(ut){if(!ot(ut))return ut;ut=at.addDays(ut,-1)}}return null},replaceInvalidDateByNull=(tt,et)=>et==null||!tt.isValid(et)?null:et,applyDefaultDate=(tt,et,nt)=>et==null||!tt.isValid(et)?nt:et,areDatesEqual$1=(tt,et,nt)=>!tt.isValid(et)&&et!=null&&!tt.isValid(nt)&&nt!=null?!0:tt.isEqual(et,nt),getMonthsInYear=(tt,et)=>{const rt=[tt.startOfYear(et)];for(;rt.length<12;){const it=rt[rt.length-1];rt.push(tt.addMonths(it,1))}return rt},mergeDateAndTime=(tt,et,nt)=>{let rt=et;return rt=tt.setHours(rt,tt.getHours(nt)),rt=tt.setMinutes(rt,tt.getMinutes(nt)),rt=tt.setSeconds(rt,tt.getSeconds(nt)),rt},getTodayDate=(tt,et,nt)=>nt==="date"?tt.startOfDay(tt.dateWithTimezone(void 0,et)):tt.dateWithTimezone(void 0,et),dateViews=["year","month","day"],isDatePickerView=tt=>dateViews.includes(tt),resolveDateFormat=(tt,{format:et,views:nt},rt)=>{if(et!=null)return et;const it=tt.formats;return areViewsEqual(nt,["year"])?it.year:areViewsEqual(nt,["month"])?it.month:areViewsEqual(nt,["day"])?it.dayOfMonth:areViewsEqual(nt,["month","year"])?`${it.month} ${it.year}`:areViewsEqual(nt,["day","month"])?`${it.month} ${it.dayOfMonth}`:rt?/en/.test(tt.getCurrentLocaleCode())?it.normalDateWithWeekday:it.normalDate:it.keyboardDate},getWeekdays=(tt,et)=>{const nt=tt.startOfWeek(et);return[0,1,2,3,4,5,6].map(rt=>tt.addDays(nt,rt))},useValueWithTimezone=({timezone:tt,value:et,defaultValue:nt,onChange:rt,valueManager:it})=>{var ot,at;const st=useUtils(),lt=reactExports.useRef(nt),ct=(ot=et??lt.current)!=null?ot:it.emptyValue,ut=reactExports.useMemo(()=>it.getTimezone(st,ct),[st,it,ct]),ht=useEventCallback(gt=>ut==null?gt:it.setTimezone(st,ut,gt)),dt=(at=tt??ut)!=null?at:"default",pt=reactExports.useMemo(()=>it.setTimezone(st,dt,ct),[it,st,dt,ct]),mt=useEventCallback((gt,...yt)=>{const bt=ht(gt);rt==null||rt(bt,...yt)});return{value:pt,handleValueChange:mt,timezone:dt}},useControlledValueWithTimezone=({name:tt,timezone:et,value:nt,defaultValue:rt,onChange:it,valueManager:ot})=>{const[at,st]=useControlled({name:tt,state:"value",controlled:nt,default:rt??ot.emptyValue}),lt=useEventCallback((ct,...ut)=>{st(ct),it==null||it(ct,...ut)});return useValueWithTimezone({timezone:et,value:at,defaultValue:void 0,onChange:lt,valueManager:ot})},SECTION_TYPE_GRANULARITY={year:1,month:2,day:3,hours:4,minutes:5,seconds:6,milliseconds:7},getSectionTypeGranularity=tt=>Math.max(...tt.map(et=>{var nt;return(nt=SECTION_TYPE_GRANULARITY[et.type])!=null?nt:1})),roundDate=(tt,et,nt)=>{if(et===SECTION_TYPE_GRANULARITY.year)return tt.startOfYear(nt);if(et===SECTION_TYPE_GRANULARITY.month)return tt.startOfMonth(nt);if(et===SECTION_TYPE_GRANULARITY.day)return tt.startOfDay(nt);let rt=nt;return et{var ot;let at=it?it():roundDate(et,nt,getTodayDate(et,rt));tt.minDate!=null&&et.isAfterDay(tt.minDate,at)&&(at=roundDate(et,nt,tt.minDate)),tt.maxDate!=null&&et.isBeforeDay(tt.maxDate,at)&&(at=roundDate(et,nt,tt.maxDate));const st=createIsAfterIgnoreDatePart((ot=tt.disableIgnoringDatePartForTimeValidation)!=null?ot:!1,et);return tt.minTime!=null&&st(tt.minTime,at)&&(at=roundDate(et,nt,tt.disableIgnoringDatePartForTimeValidation?tt.minTime:mergeDateAndTime(et,at,tt.minTime))),tt.maxTime!=null&&st(at,tt.maxTime)&&(at=roundDate(et,nt,tt.disableIgnoringDatePartForTimeValidation?tt.maxTime:mergeDateAndTime(et,at,tt.maxTime))),at},getDateSectionConfigFromFormatToken=(tt,et)=>{const nt=tt.formatTokenMap[et];if(nt==null)throw new Error([`MUI: The token "${et}" is not supported by the Date and Time Pickers.`,"Please try using another token or open an issue on https://github.com/mui/mui-x/issues/new/choose if you think it should be supported."].join(` `));return typeof nt=="string"?{type:nt,contentType:nt==="meridiem"?"letter":"digit",maxLength:void 0}:{type:nt.sectionType,contentType:nt.contentType,maxLength:nt.maxLength}},getDeltaFromKeyCode=tt=>{switch(tt){case"ArrowUp":return 1;case"ArrowDown":return-1;case"PageUp":return 5;case"PageDown":return-5;default:return 0}},getDaysInWeekStr=(tt,et,nt)=>{const rt=[],it=tt.dateWithTimezone(void 0,et),ot=tt.startOfWeek(it),at=tt.endOfWeek(it);let st=ot;for(;tt.isBefore(st,at);)rt.push(st),st=tt.addDays(st,1);return rt.map(lt=>tt.formatByString(lt,nt))},getLetterEditingOptions=(tt,et,nt,rt)=>{switch(nt){case"month":return getMonthsInYear(tt,tt.dateWithTimezone(void 0,et)).map(it=>tt.formatByString(it,rt));case"weekDay":return getDaysInWeekStr(tt,et,rt);case"meridiem":{const it=tt.dateWithTimezone(void 0,et);return[tt.startOfDay(it),tt.endOfDay(it)].map(ot=>tt.formatByString(ot,rt))}default:return[]}},cleanLeadingZeros=(tt,et,nt)=>{let rt=et;for(rt=Number(rt).toString();rt.length{if(it.type==="day"&&it.contentType==="digit-with-letter"){const at=tt.setDate(rt.longestMonth,nt);return tt.formatByString(at,it.format)}const ot=nt.toString();return it.hasLeadingZerosInInput?cleanLeadingZeros(tt,ot,it.maxLength):ot},adjustSectionValue=(tt,et,nt,rt,it,ot,at)=>{const st=getDeltaFromKeyCode(rt),lt=rt==="Home",ct=rt==="End",ut=nt.value===""||lt||ct,ht=()=>{const pt=it[nt.type]({currentDate:ot,format:nt.format,contentType:nt.contentType}),mt=vt=>cleanDigitSectionValue(tt,et,vt,pt,nt),gt=nt.type==="minutes"&&at!=null&&at.minutesStep?at.minutesStep:1;let bt=parseInt(nt.value,10)+st*gt;if(ut){if(nt.type==="year"&&!ct&&!lt)return tt.formatByString(tt.dateWithTimezone(void 0,et),nt.format);st>0||lt?bt=pt.minimum:bt=pt.maximum}return bt%gt!==0&&((st<0||lt)&&(bt+=gt-(gt+bt)%gt),(st>0||ct)&&(bt-=bt%gt)),bt>pt.maximum?mt(pt.minimum+(bt-pt.maximum-1)%(pt.maximum-pt.minimum+1)):bt{const pt=getLetterEditingOptions(tt,et,nt.type,nt.format);if(pt.length===0)return nt.value;if(ut)return st>0||lt?pt[0]:pt[pt.length-1];const gt=(pt.indexOf(nt.value)+pt.length+st)%pt.length;return pt[gt]};return nt.contentType==="digit"||nt.contentType==="digit-with-letter"?ht():dt()},getSectionVisibleValue=(tt,et)=>{let nt=tt.value||tt.placeholder;const rt=et==="non-input"?tt.hasLeadingZerosInFormat:tt.hasLeadingZerosInInput;return et==="non-input"&&tt.hasLeadingZerosInInput&&!tt.hasLeadingZerosInFormat&&(nt=Number(nt).toString()),["input-rtl","input-ltr"].includes(et)&&tt.contentType==="digit"&&!rt&&nt.length===1&&(nt=`${nt}‎`),et==="input-rtl"&&(nt=`⁨${nt}⁩`),nt},cleanString=tt=>tt.replace(/[\u2066\u2067\u2068\u2069]/g,""),addPositionPropertiesToSections=(tt,et)=>{let nt=0,rt=et?1:0;const it=[];for(let ot=0;ot{switch(rt.type){case"year":return nt.fieldYearPlaceholder({digitAmount:tt.formatByString(tt.dateWithTimezone(void 0,et),it).length});case"month":return nt.fieldMonthPlaceholder({contentType:rt.contentType});case"day":return nt.fieldDayPlaceholder();case"weekDay":return nt.fieldWeekDayPlaceholder({contentType:rt.contentType});case"hours":return nt.fieldHoursPlaceholder();case"minutes":return nt.fieldMinutesPlaceholder();case"seconds":return nt.fieldSecondsPlaceholder();case"meridiem":return nt.fieldMeridiemPlaceholder();default:return it}},changeSectionValueFormat=(tt,et,nt,rt)=>tt.formatByString(tt.parse(et,nt),rt),isFourDigitYearFormat=(tt,et,nt)=>tt.formatByString(tt.dateWithTimezone(void 0,et),nt).length===4,doesSectionFormatHaveLeadingZeros=(tt,et,nt,rt,it)=>{if(nt!=="digit")return!1;const ot=tt.dateWithTimezone(void 0,et);switch(rt){case"year":return isFourDigitYearFormat(tt,et,it)?tt.formatByString(tt.setYear(ot,1),it)==="0001":tt.formatByString(tt.setYear(ot,2001),it)==="01";case"month":return tt.formatByString(tt.startOfYear(ot),it).length>1;case"day":return tt.formatByString(tt.startOfMonth(ot),it).length>1;case"weekDay":return tt.formatByString(tt.startOfWeek(ot),it).length>1;case"hours":return tt.formatByString(tt.setHours(ot,1),it).length>1;case"minutes":return tt.formatByString(tt.setMinutes(ot,1),it).length>1;case"seconds":return tt.formatByString(tt.setMinutes(ot,1),it).length>1;default:throw new Error("Invalid section type")}},getEscapedPartsFromFormat=(tt,et)=>{const nt=[],{start:rt,end:it}=tt.escapedCharacters,ot=new RegExp(`(\\${rt}[^\\${it}]*\\${it})+`,"g");let at=null;for(;at=ot.exec(et);)nt.push({start:at.index,end:ot.lastIndex-1});return nt},splitFormatIntoSections=(tt,et,nt,rt,it,ot,at,st)=>{let lt="";const ct=[],ut=tt.date(),ht=xt=>{if(xt==="")return null;const kt=getDateSectionConfigFromFormatToken(tt,xt),St=doesSectionFormatHaveLeadingZeros(tt,et,kt.contentType,kt.type,xt),Tt=at?St:kt.contentType==="digit",At=it!=null&&tt.isValid(it);let Et=At?tt.formatByString(it,xt):"",$t=null;if(Tt)if(St)$t=Et===""?tt.formatByString(ut,xt).length:Et.length;else{if(kt.maxLength==null)throw new Error(`MUI: The token ${xt} should have a 'maxDigitNumber' property on it's adapter`);$t=kt.maxLength,At&&(Et=cleanLeadingZeros(tt,Et,$t))}return ct.push(_extends$u({},kt,{format:xt,maxLength:$t,value:Et,placeholder:getSectionPlaceholder(tt,et,nt,kt,xt),hasLeadingZeros:St,hasLeadingZerosInFormat:St,hasLeadingZerosInInput:Tt,startSeparator:ct.length===0?lt:"",endSeparator:"",modified:!1})),null};let dt=10,pt=rt,mt=tt.expandFormat(rt);for(;mt!==pt;)if(pt=mt,mt=tt.expandFormat(pt),dt-=1,dt<0)throw new Error("MUI: The format expansion seems to be enter in an infinite loop. Please open an issue with the format passed to the picker component");const gt=mt,yt=getEscapedPartsFromFormat(tt,gt),bt=new RegExp(`^(${Object.keys(tt.formatTokenMap).sort((xt,kt)=>kt.length-xt.length).join("|")})`,"g");let vt="";for(let xt=0;xt$t.start<=xt&&$t.end>=xt),St=gt[xt],Tt=kt!=null,At=`${vt}${gt.slice(xt)}`,Et=bt.test(At);!Tt&&St.match(/([A-Za-z]+)/)&&Et?(vt=At.slice(0,bt.lastIndex),xt+=bt.lastIndex-1):Tt&&(kt==null?void 0:kt.start)===xt||(kt==null?void 0:kt.end)===xt||(ht(vt),vt="",ct.length===0?lt+=St:ct[ct.length-1].endSeparator+=St)}return ht(vt),ct.map(xt=>{const kt=St=>{let Tt=St;return st&&Tt!==null&&Tt.includes(" ")&&(Tt=`⁩${Tt}⁦`),ot==="spacious"&&["/",".","-"].includes(Tt)&&(Tt=` ${Tt} `),Tt};return xt.startSeparator=kt(xt.startSeparator),xt.endSeparator=kt(xt.endSeparator),xt})},getDateFromDateSections=(tt,et)=>{const nt=et.some(st=>st.type==="day"),rt=[],it=[];for(let st=0;st{const rt=tt.map(it=>{const ot=getSectionVisibleValue(it,et?"input-rtl":"input-ltr");return`${it.startSeparator}${ot}${it.endSeparator}`}).join("");return et?`⁦${rt}⁩`:rt},getSectionsBoundaries=(tt,et)=>{const nt=tt.dateWithTimezone(void 0,et),rt=tt.endOfYear(nt),it=tt.endOfDay(nt),{maxDaysInMonth:ot,longestMonth:at}=getMonthsInYear(tt,nt).reduce((st,lt)=>{const ct=tt.getDaysInMonth(lt);return ct>st.maxDaysInMonth?{maxDaysInMonth:ct,longestMonth:lt}:st},{maxDaysInMonth:0,longestMonth:null});return{year:({format:st})=>({minimum:0,maximum:isFourDigitYearFormat(tt,et,st)?9999:99}),month:()=>({minimum:1,maximum:tt.getMonth(rt)+1}),day:({currentDate:st})=>({minimum:1,maximum:st!=null&&tt.isValid(st)?tt.getDaysInMonth(st):ot,longestMonth:at}),weekDay:({format:st,contentType:lt})=>{if(lt==="digit"){const ct=getDaysInWeekStr(tt,et,st).map(Number);return{minimum:Math.min(...ct),maximum:Math.max(...ct)}}return{minimum:1,maximum:7}},hours:({format:st})=>{const lt=tt.getHours(it);return tt.formatByString(tt.endOfDay(nt),st)!==lt.toString()?{minimum:1,maximum:Number(tt.formatByString(tt.startOfDay(nt),st))}:{minimum:0,maximum:lt}},minutes:()=>({minimum:0,maximum:tt.getMinutes(it)}),seconds:()=>({minimum:0,maximum:tt.getSeconds(it)}),meridiem:()=>({minimum:0,maximum:0})}},transferDateSectionValue=(tt,et,nt,rt,it)=>{switch(nt.type){case"year":return tt.setYear(it,tt.getYear(rt));case"month":return tt.setMonth(it,tt.getMonth(rt));case"weekDay":{const ot=getDaysInWeekStr(tt,et,nt.format),at=tt.formatByString(rt,nt.format),st=ot.indexOf(at),ct=ot.indexOf(nt.value)-st;return tt.addDays(rt,ct)}case"day":return tt.setDate(it,tt.getDate(rt));case"meridiem":{const ot=tt.getHours(rt)<12,at=tt.getHours(it);return ot&&at>=12?tt.addHours(it,-12):!ot&&at<12?tt.addHours(it,12):it}case"hours":return tt.setHours(it,tt.getHours(rt));case"minutes":return tt.setMinutes(it,tt.getMinutes(rt));case"seconds":return tt.setSeconds(it,tt.getSeconds(rt));default:return it}},reliableSectionModificationOrder={year:1,month:2,day:3,weekDay:4,hours:5,minutes:6,seconds:7,meridiem:8},mergeDateIntoReferenceDate=(tt,et,nt,rt,it,ot)=>[...rt].sort((at,st)=>reliableSectionModificationOrder[at.type]-reliableSectionModificationOrder[st.type]).reduce((at,st)=>!ot||st.modified?transferDateSectionValue(tt,et,st,nt,at):at,it),isAndroid=()=>navigator.userAgent.toLowerCase().indexOf("android")>-1,getSectionOrder=(tt,et)=>{const nt={};if(!et)return tt.forEach((lt,ct)=>{const ut=ct===0?null:ct-1,ht=ct===tt.length-1?null:ct+1;nt[ct]={leftIndex:ut,rightIndex:ht}}),{neighbors:nt,startIndex:0,endIndex:tt.length-1};const rt={},it={};let ot=0,at=0,st=tt.length-1;for(;st>=0;){at=tt.findIndex((lt,ct)=>{var ut;return ct>=ot&&((ut=lt.endSeparator)==null?void 0:ut.includes(" "))&<.endSeparator!==" / "}),at===-1&&(at=tt.length-1);for(let lt=at;lt>=ot;lt-=1)it[lt]=st,rt[st]=lt,st-=1;ot=at+1}return tt.forEach((lt,ct)=>{const ut=it[ct],ht=ut===0?null:rt[ut-1],dt=ut===tt.length-1?null:rt[ut+1];nt[ct]={leftIndex:ht,rightIndex:dt}}),{neighbors:nt,startIndex:rt[0],endIndex:rt[tt.length-1]}},_excluded$D=["value","referenceDate"],singleItemValueManager={emptyValue:null,getTodayValue:getTodayDate,getInitialReferenceValue:tt=>{let{value:et,referenceDate:nt}=tt,rt=_objectWithoutPropertiesLoose$m(tt,_excluded$D);return et!=null&&rt.utils.isValid(et)?et:nt??getDefaultReferenceDate(rt)},cleanValue:replaceInvalidDateByNull,areValuesEqual:areDatesEqual$1,isSameError:(tt,et)=>tt===et,hasError:tt=>tt!=null,defaultErrorState:null,getTimezone:(tt,et)=>et==null||!tt.isValid(et)?null:tt.getTimezone(et),setTimezone:(tt,et,nt)=>nt==null?null:tt.setTimezone(nt,et)},singleItemFieldValueManager={updateReferenceValue:(tt,et,nt)=>et==null||!tt.isValid(et)?nt:et,getSectionsFromValue:(tt,et,nt,rt,it)=>!tt.isValid(et)&&!!nt?nt:addPositionPropertiesToSections(it(et),rt),getValueStrFromSections:createDateStrForInputFromSections,getActiveDateManager:(tt,et)=>({date:et.value,referenceDate:et.referenceValue,getSections:nt=>nt,getNewValuesFromNewActiveDate:nt=>({value:nt,referenceValue:nt==null||!tt.isValid(nt)?et.referenceValue:nt})}),parseValueStr:(tt,et,nt)=>nt(tt.trim(),et)},uncapitalizeObjectKeys=tt=>{if(tt!==void 0)return Object.keys(tt).reduce((et,nt)=>_extends$u({},et,{[`${nt.slice(0,1).toLowerCase()}${nt.slice(1)}`]:tt[nt]}),{})};function getPickersDayUtilityClass(tt){return generateUtilityClass("MuiPickersDay",tt)}const pickersDayClasses=generateUtilityClasses("MuiPickersDay",["root","dayWithMargin","dayOutsideMonth","hiddenDaySpacingFiller","today","selected","disabled"]),_excluded$C=["autoFocus","className","day","disabled","disableHighlightToday","disableMargin","hidden","isAnimating","onClick","onDaySelect","onFocus","onBlur","onKeyDown","onMouseDown","onMouseEnter","outsideCurrentMonth","selected","showDaysOutsideCurrentMonth","children","today","isFirstVisibleCell","isLastVisibleCell"],useUtilityClasses$e=tt=>{const{selected:et,disableMargin:nt,disableHighlightToday:rt,today:it,disabled:ot,outsideCurrentMonth:at,showDaysOutsideCurrentMonth:st,classes:lt}=tt,ct=at&&!st;return composeClasses({root:["root",et&&!ct&&"selected",ot&&"disabled",!nt&&"dayWithMargin",!rt&&it&&"today",at&&st&&"dayOutsideMonth",ct&&"hiddenDaySpacingFiller"],hiddenDaySpacingFiller:["hiddenDaySpacingFiller"]},getPickersDayUtilityClass,lt)},styleArg=({theme:tt,ownerState:et})=>_extends$u({},tt.typography.caption,{width:DAY_SIZE,height:DAY_SIZE,borderRadius:"50%",padding:0,backgroundColor:"transparent",transition:tt.transitions.create("background-color",{duration:tt.transitions.duration.short}),color:(tt.vars||tt).palette.text.primary,"@media (pointer: fine)":{"&:hover":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.hoverOpacity)}},"&:focus":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.primary.mainChannel} / ${tt.vars.palette.action.focusOpacity})`:alpha$1(tt.palette.primary.main,tt.palette.action.focusOpacity),[`&.${pickersDayClasses.selected}`]:{willChange:"background-color",backgroundColor:(tt.vars||tt).palette.primary.dark}},[`&.${pickersDayClasses.selected}`]:{color:(tt.vars||tt).palette.primary.contrastText,backgroundColor:(tt.vars||tt).palette.primary.main,fontWeight:tt.typography.fontWeightMedium,"&:hover":{willChange:"background-color",backgroundColor:(tt.vars||tt).palette.primary.dark}},[`&.${pickersDayClasses.disabled}:not(.${pickersDayClasses.selected})`]:{color:(tt.vars||tt).palette.text.disabled},[`&.${pickersDayClasses.disabled}&.${pickersDayClasses.selected}`]:{opacity:.6}},!et.disableMargin&&{margin:`0 ${DAY_MARGIN}px`},et.outsideCurrentMonth&&et.showDaysOutsideCurrentMonth&&{color:(tt.vars||tt).palette.text.secondary},!et.disableHighlightToday&&et.today&&{[`&:not(.${pickersDayClasses.selected})`]:{border:`1px solid ${(tt.vars||tt).palette.text.secondary}`}}),overridesResolver=(tt,et)=>{const{ownerState:nt}=tt;return[et.root,!nt.disableMargin&&et.dayWithMargin,!nt.disableHighlightToday&&nt.today&&et.today,!nt.outsideCurrentMonth&&nt.showDaysOutsideCurrentMonth&&et.dayOutsideMonth,nt.outsideCurrentMonth&&!nt.showDaysOutsideCurrentMonth&&et.hiddenDaySpacingFiller]},PickersDayRoot=styled$1(ButtonBase$1,{name:"MuiPickersDay",slot:"Root",overridesResolver})(styleArg),PickersDayFiller=styled$1("div",{name:"MuiPickersDay",slot:"Root",overridesResolver})(({theme:tt,ownerState:et})=>_extends$u({},styleArg({theme:tt,ownerState:et}),{opacity:0,pointerEvents:"none"})),noop$5=()=>{},PickersDayRaw=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiPickersDay"}),{autoFocus:it=!1,className:ot,day:at,disabled:st=!1,disableHighlightToday:lt=!1,disableMargin:ct=!1,isAnimating:ut,onClick:ht,onDaySelect:dt,onFocus:pt=noop$5,onBlur:mt=noop$5,onKeyDown:gt=noop$5,onMouseDown:yt=noop$5,onMouseEnter:bt=noop$5,outsideCurrentMonth:vt,selected:xt=!1,showDaysOutsideCurrentMonth:kt=!1,children:St,today:Tt=!1}=rt,At=_objectWithoutPropertiesLoose$m(rt,_excluded$C),Et=_extends$u({},rt,{autoFocus:it,disabled:st,disableHighlightToday:lt,disableMargin:ct,selected:xt,showDaysOutsideCurrentMonth:kt,today:Tt}),$t=useUtilityClasses$e(Et),Dt=useUtils(),jt=reactExports.useRef(null),Pt=useForkRef(jt,nt);useEnhancedEffect$1(()=>{it&&!st&&!ut&&!vt&&jt.current.focus()},[it,st,ut,vt]);const Ct=It=>{yt(It),vt&&It.preventDefault()},wt=It=>{st||dt(at),vt&&It.currentTarget.focus(),ht&&ht(It)};return vt&&!kt?jsxRuntimeExports.jsx(PickersDayFiller,{className:clsx($t.root,$t.hiddenDaySpacingFiller,ot),ownerState:Et,role:At.role}):jsxRuntimeExports.jsx(PickersDayRoot,_extends$u({className:clsx($t.root,ot),ref:Pt,centerRipple:!0,disabled:st,tabIndex:xt?0:-1,onKeyDown:It=>gt(It,at),onFocus:It=>pt(It,at),onBlur:It=>mt(It,at),onMouseEnter:It=>bt(It,at),onClick:wt,onMouseDown:Ct},At,{ownerState:Et,children:St||Dt.format(at,"dayOfMonth")}))}),PickersDay=reactExports.memo(PickersDayRaw);function useValidation(tt,et,nt,rt){const{value:it,onError:ot}=tt,at=useLocalizationContext(),st=reactExports.useRef(rt),lt=et({adapter:at,value:it,props:tt});return reactExports.useEffect(()=>{ot&&!nt(lt,st.current)&&ot(lt,it),st.current=lt},[nt,ot,st,lt,it]),lt}const useFieldState=tt=>{const et=useUtils(),nt=useLocaleText(),rt=useLocalizationContext(),ot=useTheme().direction==="rtl",{valueManager:at,fieldValueManager:st,valueType:lt,validator:ct,internalProps:ut,internalProps:{value:ht,defaultValue:dt,referenceDate:pt,onChange:mt,format:gt,formatDensity:yt="dense",selectedSections:bt,onSelectedSectionsChange:vt,shouldRespectLeadingZeros:xt=!1,timezone:kt}}=tt,{timezone:St,value:Tt,handleValueChange:At}=useValueWithTimezone({timezone:kt,value:ht,defaultValue:dt,onChange:mt,valueManager:at}),Et=reactExports.useMemo(()=>getSectionsBoundaries(et,St),[et,St]),$t=reactExports.useCallback((en,sn=null)=>st.getSectionsFromValue(et,en,sn,ot,Kt=>splitFormatIntoSections(et,St,nt,gt,Kt,yt,xt,ot)),[st,gt,nt,ot,xt,et,yt,St]),Dt=reactExports.useMemo(()=>st.getValueStrFromSections($t(at.emptyValue),ot),[st,$t,at.emptyValue,ot]),[jt,Pt]=reactExports.useState(()=>{const en=$t(Tt),sn={sections:en,value:Tt,referenceValue:at.emptyValue,tempValueStrAndroid:null},Kt=getSectionTypeGranularity(en),rn=at.getInitialReferenceValue({referenceDate:pt,value:Tt,utils:et,props:ut,granularity:Kt,timezone:St});return _extends$u({},sn,{referenceValue:rn})}),[Ct,wt]=useControlled({controlled:bt,default:null,name:"useField",state:"selectedSectionIndexes"}),It=en=>{wt(en),vt==null||vt(en),Pt(sn=>_extends$u({},sn,{selectedSectionQuery:null}))},Ot=reactExports.useMemo(()=>{if(Ct==null)return null;if(Ct==="all")return{startIndex:0,endIndex:jt.sections.length-1,shouldSelectBoundarySelectors:!0};if(typeof Ct=="number")return{startIndex:Ct,endIndex:Ct};if(typeof Ct=="string"){const en=jt.sections.findIndex(sn=>sn.type===Ct);return{startIndex:en,endIndex:en}}return Ct},[Ct,jt.sections]),Wt=({value:en,referenceValue:sn,sections:Kt})=>{Pt(nn=>_extends$u({},nn,{sections:Kt,value:en,referenceValue:sn,tempValueStrAndroid:null}));const rn={validationError:ct({adapter:rt,value:en,props:_extends$u({},ut,{value:en,timezone:St})})};At(en,rn)},zt=(en,sn)=>{const Kt=[...jt.sections];return Kt[en]=_extends$u({},Kt[en],{value:sn,modified:!0}),addPositionPropertiesToSections(Kt,ot)},Ft=()=>{at.areValuesEqual(et,jt.value,at.emptyValue)||Wt({value:at.emptyValue,referenceValue:jt.referenceValue,sections:$t(at.emptyValue)})},Nt=()=>{if(Ot==null)return;const en=jt.sections[Ot.startIndex];if(en.value==="")return;const sn=st.getActiveDateManager(et,jt,en),rn=sn.getSections(jt.sections).filter(an=>an.value!=="").length===1,nn=zt(Ot.startIndex,""),hn=rn?null:et.date(new Date("")),vn=sn.getNewValuesFromNewActiveDate(hn);(hn!=null&&!et.isValid(hn))!=(sn.date!=null&&!et.isValid(sn.date))?Wt(_extends$u({},vn,{sections:nn})):Pt(an=>_extends$u({},an,vn,{sections:nn,tempValueStrAndroid:null}))},Ut=en=>{const sn=(nn,hn)=>{const vn=et.parse(nn,gt);if(vn==null||!et.isValid(vn))return null;const an=splitFormatIntoSections(et,St,nt,gt,vn,yt,xt,ot);return mergeDateIntoReferenceDate(et,St,vn,an,hn,!1)},Kt=st.parseValueStr(en,jt.referenceValue,sn),rn=st.updateReferenceValue(et,Kt,jt.referenceValue);Wt({value:Kt,referenceValue:rn,sections:$t(Kt,jt.sections)})},Mt=({activeSection:en,newSectionValue:sn,shouldGoToNextSection:Kt})=>{Kt&&Ot&&Ot.startIndex_extends$u({},_n,an,{sections:nn,tempValueStrAndroid:null}))},Ht=en=>Pt(sn=>_extends$u({},sn,{tempValueStrAndroid:en}));return reactExports.useEffect(()=>{const en=$t(jt.value);Pt(sn=>_extends$u({},sn,{sections:en}))},[gt,et.locale]),reactExports.useEffect(()=>{let en=!1;at.areValuesEqual(et,jt.value,Tt)?en=at.getTimezone(et,jt.value)!==at.getTimezone(et,Tt):en=!0,en&&Pt(sn=>_extends$u({},sn,{value:Tt,referenceValue:st.updateReferenceValue(et,Tt,sn.referenceValue),sections:$t(Tt)}))},[Tt]),{state:jt,selectedSectionIndexes:Ot,setSelectedSections:It,clearValue:Ft,clearActiveSection:Nt,updateSectionValue:Mt,updateValueFromValueStr:Ut,setTempAndroidValueStr:Ht,sectionsValueBoundaries:Et,placeholder:Dt,timezone:St}},QUERY_LIFE_DURATION_MS=5e3,isQueryResponseWithoutValue=tt=>tt.saveQuery!=null,useFieldCharacterEditing=({sections:tt,updateSectionValue:et,sectionsValueBoundaries:nt,setTempAndroidValueStr:rt,timezone:it})=>{const ot=useUtils(),[at,st]=reactExports.useState(null),lt=useEventCallback(()=>st(null));reactExports.useEffect(()=>{var pt;at!=null&&((pt=tt[at.sectionIndex])==null?void 0:pt.type)!==at.sectionType&<()},[tt,at,lt]),reactExports.useEffect(()=>{if(at!=null){const pt=setTimeout(()=>lt(),QUERY_LIFE_DURATION_MS);return()=>{window.clearTimeout(pt)}}return()=>{}},[at,lt]);const ct=({keyPressed:pt,sectionIndex:mt},gt,yt)=>{const bt=pt.toLowerCase(),vt=tt[mt];if(at!=null&&(!yt||yt(at.value))&&at.sectionIndex===mt){const kt=`${at.value}${bt}`,St=gt(kt,vt);if(!isQueryResponseWithoutValue(St))return st({sectionIndex:mt,value:kt,sectionType:vt.type}),St}const xt=gt(bt,vt);return isQueryResponseWithoutValue(xt)&&!xt.saveQuery?(lt(),null):(st({sectionIndex:mt,value:bt,sectionType:vt.type}),isQueryResponseWithoutValue(xt)?null:xt)},ut=pt=>{const mt=(bt,vt,xt)=>{const kt=vt.filter(St=>St.toLowerCase().startsWith(xt));return kt.length===0?{saveQuery:!1}:{sectionValue:kt[0],shouldGoToNextSection:kt.length===1}},gt=(bt,vt,xt,kt)=>{const St=Tt=>getLetterEditingOptions(ot,it,vt.type,Tt);if(vt.contentType==="letter")return mt(vt.format,St(vt.format),bt);if(xt&&kt!=null&&getDateSectionConfigFromFormatToken(ot,xt).contentType==="letter"){const Tt=St(xt),At=mt(xt,Tt,bt);return isQueryResponseWithoutValue(At)?{saveQuery:!1}:_extends$u({},At,{sectionValue:kt(At.sectionValue,Tt)})}return{saveQuery:!1}};return ct(pt,(bt,vt)=>{switch(vt.type){case"month":{const xt=kt=>changeSectionValueFormat(ot,kt,ot.formats.month,vt.format);return gt(bt,vt,ot.formats.month,xt)}case"weekDay":{const xt=(kt,St)=>St.indexOf(kt).toString();return gt(bt,vt,ot.formats.weekday,xt)}case"meridiem":return gt(bt,vt);default:return{saveQuery:!1}}})},ht=pt=>{const mt=(yt,bt)=>{const vt=+`${yt}`,xt=nt[bt.type]({currentDate:null,format:bt.format,contentType:bt.contentType});if(vt>xt.maximum)return{saveQuery:!1};if(vtxt.maximum||yt.length===xt.maximum.toString().length;return{sectionValue:cleanDigitSectionValue(ot,it,vt,xt,bt),shouldGoToNextSection:kt}};return ct(pt,(yt,bt)=>{if(bt.contentType==="digit"||bt.contentType==="digit-with-letter")return mt(yt,bt);if(bt.type==="month"){const vt=doesSectionFormatHaveLeadingZeros(ot,it,"digit","month","MM"),xt=mt(yt,{type:bt.type,format:"MM",hasLeadingZerosInFormat:vt,hasLeadingZerosInInput:!0,contentType:"digit",maxLength:2});if(isQueryResponseWithoutValue(xt))return xt;const kt=changeSectionValueFormat(ot,xt.sectionValue,"MM",bt.format);return _extends$u({},xt,{sectionValue:kt})}if(bt.type==="weekDay"){const vt=mt(yt,bt);if(isQueryResponseWithoutValue(vt))return vt;const xt=getDaysInWeekStr(ot,it,bt.format)[Number(vt.sectionValue)-1];return _extends$u({},vt,{sectionValue:xt})}return{saveQuery:!1}},yt=>!Number.isNaN(Number(yt)))};return{applyCharacterEditing:useEventCallback(pt=>{const mt=tt[pt.sectionIndex],yt=!Number.isNaN(Number(pt.keyPressed))?ht(pt):ut(pt);yt==null?rt(null):et({activeSection:mt,newSectionValue:yt.sectionValue,shouldGoToNextSection:yt.shouldGoToNextSection})}),resetCharacterQuery:lt}};function arrayIncludes$2(tt,et){return Array.isArray(et)?et.every(nt=>tt.indexOf(nt)!==-1):tt.indexOf(et)!==-1}const onSpaceOrEnter=(tt,et)=>nt=>{(nt.key==="Enter"||nt.key===" ")&&(tt(nt),nt.preventDefault(),nt.stopPropagation()),et&&et(nt)},getActiveElement=(tt=document)=>{const et=tt.activeElement;return et?et.shadowRoot?getActiveElement(et.shadowRoot):et:null},DEFAULT_DESKTOP_MODE_MEDIA_QUERY="@media (pointer: fine)",_excluded$B=["onClick","onKeyDown","onFocus","onBlur","onMouseUp","onPaste","error","clearable","onClear","disabled"],useField=tt=>{const et=useUtils(),{state:nt,selectedSectionIndexes:rt,setSelectedSections:it,clearValue:ot,clearActiveSection:at,updateSectionValue:st,updateValueFromValueStr:lt,setTempAndroidValueStr:ct,sectionsValueBoundaries:ut,placeholder:ht,timezone:dt}=useFieldState(tt),{inputRef:pt,internalProps:mt,internalProps:{readOnly:gt=!1,unstableFieldRef:yt,minutesStep:bt},forwardedProps:{onClick:vt,onKeyDown:xt,onFocus:kt,onBlur:St,onMouseUp:Tt,onPaste:At,error:Et,clearable:$t,onClear:Dt,disabled:jt},fieldValueManager:Pt,valueManager:Ct,validator:wt}=tt,It=_objectWithoutPropertiesLoose$m(tt.forwardedProps,_excluded$B),{applyCharacterEditing:Ot,resetCharacterQuery:Wt}=useFieldCharacterEditing({sections:nt.sections,updateSectionValue:st,sectionsValueBoundaries:ut,setTempAndroidValueStr:ct,timezone:dt}),zt=reactExports.useRef(null),Ft=useForkRef(pt,zt),Nt=reactExports.useRef(void 0),Mt=useTheme().direction==="rtl",Ht=reactExports.useMemo(()=>getSectionOrder(nt.sections,Mt),[nt.sections,Mt]),en=()=>{var In;if(gt){it(null);return}const An=(In=zt.current.selectionStart)!=null?In:0;let wn;An<=nt.sections[0].startInInput||An>=nt.sections[nt.sections.length-1].endInInput?wn=1:wn=nt.sections.findIndex(pn=>pn.startInInput-pn.startSeparator.length>An);const fn=wn===-1?nt.sections.length-1:wn-1;it(fn)},sn=useEventCallback((In,...An)=>{In.isDefaultPrevented()||(vt==null||vt(In,...An),en())}),Kt=useEventCallback(In=>{Tt==null||Tt(In),In.preventDefault()}),rn=useEventCallback((...In)=>{kt==null||kt(...In);const An=zt.current;window.clearTimeout(Nt.current),Nt.current=setTimeout(()=>{!An||An!==zt.current||rt!=null||gt||(An.value.length&&Number(An.selectionEnd)-Number(An.selectionStart)===An.value.length?it("all"):en())})}),nn=useEventCallback((...In)=>{St==null||St(...In),it(null)}),hn=useEventCallback(In=>{if(At==null||At(In),gt){In.preventDefault();return}const An=In.clipboardData.getData("text");if(rt&&rt.startIndex===rt.endIndex){const wn=nt.sections[rt.startIndex],fn=/^[a-zA-Z]+$/.test(An),pn=/^[0-9]+$/.test(An),kn=/^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(An);if(wn.contentType==="letter"&&fn||wn.contentType==="digit"&&pn||wn.contentType==="digit-with-letter"&&kn)return;if(fn||pn){In.preventDefault();return}}In.preventDefault(),Wt(),lt(An)}),vn=useEventCallback(In=>{if(gt)return;const An=In.target.value,wn=In.nativeEvent.data,fn=wn&&wn.length>1,pn=fn?wn:An,kn=cleanString(pn);if(rt==null||fn){lt(fn?wn:kn);return}let Dn;if(rt.startIndex===0&&rt.endIndex===nt.sections.length-1&&kn.length===1)Dn=kn;else{const un=cleanString(Pt.getValueStrFromSections(nt.sections,Mt));let Zt=-1,Xt=-1;for(let On=0;OnSn.end)return;const jn=kn.length-un.length+Sn.end-cleanString(Sn.endSeparator||"").length;Dn=kn.slice(Sn.start+cleanString(Sn.startSeparator||"").length,jn)}if(isAndroid()&&Dn.length===0){ct(pn);return}Ot({keyPressed:Dn,sectionIndex:rt.startIndex})}),an=useEventCallback(In=>{switch(xt==null||xt(In),!0){case(In.key==="a"&&(In.ctrlKey||In.metaKey)):{In.preventDefault(),it("all");break}case In.key==="ArrowRight":{if(In.preventDefault(),rt==null)it(Ht.startIndex);else if(rt.startIndex!==rt.endIndex)it(rt.endIndex);else{const An=Ht.neighbors[rt.startIndex].rightIndex;An!==null&&it(An)}break}case In.key==="ArrowLeft":{if(In.preventDefault(),rt==null)it(Ht.endIndex);else if(rt.startIndex!==rt.endIndex)it(rt.startIndex);else{const An=Ht.neighbors[rt.startIndex].leftIndex;An!==null&&it(An)}break}case["Backspace","Delete"].includes(In.key):{if(In.preventDefault(),gt)break;rt==null||rt.startIndex===0&&rt.endIndex===nt.sections.length-1?ot():at(),Wt();break}case["ArrowUp","ArrowDown","Home","End","PageUp","PageDown"].includes(In.key):{if(In.preventDefault(),gt||rt==null)break;const An=nt.sections[rt.startIndex],wn=Pt.getActiveDateManager(et,nt,An),fn=adjustSectionValue(et,dt,An,In.key,ut,wn.date,{minutesStep:bt});st({activeSection:An,newSectionValue:fn,shouldGoToNextSection:!1});break}}});useEnhancedEffect$1(()=>{if(!zt.current)return;if(rt==null){zt.current.scrollLeft&&(zt.current.scrollLeft=0);return}const In=nt.sections[rt.startIndex],An=nt.sections[rt.endIndex];let wn=In.startInInput,fn=An.endInInput;if(rt.shouldSelectBoundarySelectors&&(wn-=In.startSeparator.length,fn+=An.endSeparator.length),wn!==zt.current.selectionStart||fn!==zt.current.selectionEnd){const pn=zt.current.scrollTop;zt.current===getActiveElement(document)&&zt.current.setSelectionRange(wn,fn),zt.current.scrollTop=pn}});const Qt=useValidation(_extends$u({},mt,{value:nt.value,timezone:dt}),wt,Ct.isSameError,Ct.defaultErrorState),_n=reactExports.useMemo(()=>Et!==void 0?Et:Ct.hasError(Qt),[Ct,Qt,Et]);reactExports.useEffect(()=>{!_n&&!rt&&Wt()},[nt.referenceValue,rt,_n]),reactExports.useEffect(()=>(zt.current&&zt.current===document.activeElement&&it("all"),()=>window.clearTimeout(Nt.current)),[]),reactExports.useEffect(()=>{nt.tempValueStrAndroid!=null&&rt!=null&&(Wt(),at())},[nt.tempValueStrAndroid]);const Pn=reactExports.useMemo(()=>{var In;return(In=nt.tempValueStrAndroid)!=null?In:Pt.getValueStrFromSections(nt.sections,Mt)},[nt.sections,Pt,nt.tempValueStrAndroid,Mt]),$n=reactExports.useMemo(()=>rt==null||nt.sections[rt.startIndex].contentType==="letter"?"text":"numeric",[rt,nt.sections]),Nn=zt.current&&zt.current===getActiveElement(document),Tn=Ct.areValuesEqual(et,nt.value,Ct.emptyValue),cn=!Nn&&Tn;reactExports.useImperativeHandle(yt,()=>({getSections:()=>nt.sections,getActiveSectionIndex:()=>{var In,An;const wn=(In=zt.current.selectionStart)!=null?In:0,fn=(An=zt.current.selectionEnd)!=null?An:0;if(wn===0&&fn===0)return null;const pn=wn<=nt.sections[0].startInInput?1:nt.sections.findIndex(kn=>kn.startInInput-kn.startSeparator.length>wn);return pn===-1?nt.sections.length-1:pn-1},setSelectedSections:In=>it(In)}));const mn=useEventCallback((In,...An)=>{var wn;In.preventDefault(),Dt==null||Dt(In,...An),ot(),zt==null||(wn=zt.current)==null||wn.focus(),it(0)});return _extends$u({placeholder:ht,autoComplete:"off",disabled:!!jt},It,{value:cn?"":Pn,inputMode:$n,readOnly:gt,onClick:sn,onFocus:rn,onBlur:nn,onPaste:hn,onChange:vn,onKeyDown:an,onMouseUp:Kt,onClear:mn,error:_n,ref:Ft,clearable:!!($t&&!Tn&&!gt&&!jt)})},validateDate=({props:tt,value:et,adapter:nt})=>{if(et===null)return null;const{shouldDisableDate:rt,shouldDisableMonth:it,shouldDisableYear:ot,disablePast:at,disableFuture:st,timezone:lt}=tt,ct=nt.utils.dateWithTimezone(void 0,lt),ut=applyDefaultDate(nt.utils,tt.minDate,nt.defaultDates.minDate),ht=applyDefaultDate(nt.utils,tt.maxDate,nt.defaultDates.maxDate);switch(!0){case!nt.utils.isValid(et):return"invalidDate";case!!(rt&&rt(et)):return"shouldDisableDate";case!!(it&&it(et)):return"shouldDisableMonth";case!!(ot&&ot(et)):return"shouldDisableYear";case!!(st&&nt.utils.isAfterDay(et,ct)):return"disableFuture";case!!(at&&nt.utils.isBeforeDay(et,ct)):return"disablePast";case!!(ut&&nt.utils.isBeforeDay(et,ut)):return"minDate";case!!(ht&&nt.utils.isAfterDay(et,ht)):return"maxDate";default:return null}},DATE_VALIDATION_PROP_NAMES=["disablePast","disableFuture","minDate","maxDate","shouldDisableDate","shouldDisableMonth","shouldDisableYear"],TIME_VALIDATION_PROP_NAMES=["disablePast","disableFuture","minTime","maxTime","shouldDisableClock","shouldDisableTime","minutesStep","ampm","disableIgnoringDatePartForTimeValidation"],DATE_TIME_VALIDATION_PROP_NAMES=["minDateTime","maxDateTime"],VALIDATION_PROP_NAMES=[...DATE_VALIDATION_PROP_NAMES,...TIME_VALIDATION_PROP_NAMES,...DATE_TIME_VALIDATION_PROP_NAMES],extractValidationProps=tt=>VALIDATION_PROP_NAMES.reduce((et,nt)=>(tt.hasOwnProperty(nt)&&(et[nt]=tt[nt]),et),{}),SHARED_FIELD_INTERNAL_PROP_NAMES=["value","defaultValue","referenceDate","format","formatDensity","onChange","timezone","readOnly","onError","shouldRespectLeadingZeros","selectedSections","onSelectedSectionsChange","unstableFieldRef"],splitFieldInternalAndForwardedProps=(tt,et)=>{const nt=_extends$u({},tt),rt={},it=ot=>{nt.hasOwnProperty(ot)&&(rt[ot]=nt[ot],delete nt[ot])};return SHARED_FIELD_INTERNAL_PROP_NAMES.forEach(it),et==="date"?DATE_VALIDATION_PROP_NAMES.forEach(it):et==="time"?TIME_VALIDATION_PROP_NAMES.forEach(it):et==="date-time"&&(DATE_VALIDATION_PROP_NAMES.forEach(it),TIME_VALIDATION_PROP_NAMES.forEach(it),DATE_TIME_VALIDATION_PROP_NAMES.forEach(it)),{forwardedProps:nt,internalProps:rt}},useDefaultizedDateField=tt=>{var et,nt,rt;const it=useUtils(),ot=useDefaultDates();return _extends$u({},tt,{disablePast:(et=tt.disablePast)!=null?et:!1,disableFuture:(nt=tt.disableFuture)!=null?nt:!1,format:(rt=tt.format)!=null?rt:it.formats.keyboardDate,minDate:applyDefaultDate(it,tt.minDate,ot.minDate),maxDate:applyDefaultDate(it,tt.maxDate,ot.maxDate)})},useDateField=({props:tt,inputRef:et})=>{const nt=useDefaultizedDateField(tt),{forwardedProps:rt,internalProps:it}=splitFieldInternalAndForwardedProps(nt,"date");return useField({inputRef:et,forwardedProps:rt,internalProps:it,valueManager:singleItemValueManager,fieldValueManager:singleItemFieldValueManager,validator:validateDate,valueType:"date"})},PickersModalDialogRoot=styled$1(MuiDialog)({[`& .${dialogClasses$1.container}`]:{outline:0},[`& .${dialogClasses$1.paper}`]:{outline:0,minWidth:DIALOG_WIDTH}}),PickersModalDialogContent=styled$1(DialogContent$1)({"&:first-of-type":{padding:0}});function PickersModalDialog(tt){var et,nt;const{children:rt,onDismiss:it,open:ot,slots:at,slotProps:st}=tt,lt=(et=at==null?void 0:at.dialog)!=null?et:PickersModalDialogRoot,ct=(nt=at==null?void 0:at.mobileTransition)!=null?nt:Fade$1;return jsxRuntimeExports.jsx(lt,_extends$u({open:ot,onClose:it},st==null?void 0:st.dialog,{TransitionComponent:ct,TransitionProps:st==null?void 0:st.mobileTransition,PaperComponent:at==null?void 0:at.mobilePaper,PaperProps:st==null?void 0:st.mobilePaper,children:jsxRuntimeExports.jsx(PickersModalDialogContent,{children:rt})}))}function getPickersPopperUtilityClass(tt){return generateUtilityClass("MuiPickersPopper",tt)}generateUtilityClasses("MuiPickersPopper",["root","paper"]);const PREFERS_REDUCED_MOTION="@media (prefers-reduced-motion: reduce)",mobileVersionMatches=typeof navigator<"u"&&navigator.userAgent.match(/android\s(\d+)|OS\s(\d+)/i),androidVersion=mobileVersionMatches&&mobileVersionMatches[1]?parseInt(mobileVersionMatches[1],10):null,iOSVersion=mobileVersionMatches&&mobileVersionMatches[2]?parseInt(mobileVersionMatches[2],10):null,slowAnimationDevices=androidVersion&&androidVersion<10||iOSVersion&&iOSVersion<13||!1,useDefaultReduceAnimations=()=>useMediaQuery(PREFERS_REDUCED_MOTION,{defaultMatches:!1})||slowAnimationDevices,_excluded$A=["PaperComponent","popperPlacement","ownerState","children","paperSlotProps","paperClasses","onPaperClick","onPaperTouchStart"],useUtilityClasses$d=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],paper:["paper"]},getPickersPopperUtilityClass,et)},PickersPopperRoot=styled$1(MuiPopper,{name:"MuiPickersPopper",slot:"Root",overridesResolver:(tt,et)=>et.root})(({theme:tt})=>({zIndex:tt.zIndex.modal})),PickersPopperPaper=styled$1(Paper$1,{name:"MuiPickersPopper",slot:"Paper",overridesResolver:(tt,et)=>et.paper})(({ownerState:tt})=>_extends$u({outline:0,transformOrigin:"top center"},tt.placement.includes("top")&&{transformOrigin:"bottom center"}));function clickedRootScrollbar(tt,et){return et.documentElement.clientWidth{if(!tt)return;function lt(){ot.current=!0}return document.addEventListener("mousedown",lt,!0),document.addEventListener("touchstart",lt,!0),()=>{document.removeEventListener("mousedown",lt,!0),document.removeEventListener("touchstart",lt,!0),ot.current=!1}},[tt]);const at=useEventCallback(lt=>{if(!ot.current)return;const ct=rt.current;rt.current=!1;const ut=ownerDocument(it.current);if(!it.current||"clientX"in lt&&clickedRootScrollbar(lt,ut))return;if(nt.current){nt.current=!1;return}let ht;lt.composedPath?ht=lt.composedPath().indexOf(it.current)>-1:ht=!ut.documentElement.contains(lt.target)||it.current.contains(lt.target),!ht&&!ct&&et(lt)}),st=()=>{rt.current=!0};return reactExports.useEffect(()=>{if(tt){const lt=ownerDocument(it.current),ct=()=>{nt.current=!0};return lt.addEventListener("touchstart",at),lt.addEventListener("touchmove",ct),()=>{lt.removeEventListener("touchstart",at),lt.removeEventListener("touchmove",ct)}}},[tt,at]),reactExports.useEffect(()=>{if(tt){const lt=ownerDocument(it.current);return lt.addEventListener("click",at),()=>{lt.removeEventListener("click",at),rt.current=!1}}},[tt,at]),[it,st,st]}const PickersPopperPaperWrapper=reactExports.forwardRef((tt,et)=>{const{PaperComponent:nt,popperPlacement:rt,ownerState:it,children:ot,paperSlotProps:at,paperClasses:st,onPaperClick:lt,onPaperTouchStart:ct}=tt,ut=_objectWithoutPropertiesLoose$m(tt,_excluded$A),ht=_extends$u({},it,{placement:rt}),dt=useSlotProps({elementType:nt,externalSlotProps:at,additionalProps:{tabIndex:-1,elevation:8,ref:et},className:st,ownerState:ht});return jsxRuntimeExports.jsx(nt,_extends$u({},ut,dt,{onClick:pt=>{var mt;lt(pt),(mt=dt.onClick)==null||mt.call(dt,pt)},onTouchStart:pt=>{var mt;ct(pt),(mt=dt.onTouchStart)==null||mt.call(dt,pt)},ownerState:ht,children:ot}))});function PickersPopper(tt){var et,nt,rt,it;const ot=useThemeProps({props:tt,name:"MuiPickersPopper"}),{anchorEl:at,children:st,containerRef:lt=null,shouldRestoreFocus:ct,onBlur:ut,onDismiss:ht,open:dt,role:pt,placement:mt,slots:gt,slotProps:yt,reduceAnimations:bt}=ot;reactExports.useEffect(()=>{function Ft(Nt){dt&&(Nt.key==="Escape"||Nt.key==="Esc")&&ht()}return document.addEventListener("keydown",Ft),()=>{document.removeEventListener("keydown",Ft)}},[ht,dt]);const vt=reactExports.useRef(null);reactExports.useEffect(()=>{pt==="tooltip"||ct&&!ct()||(dt?vt.current=getActiveElement(document):vt.current&&vt.current instanceof HTMLElement&&setTimeout(()=>{vt.current instanceof HTMLElement&&vt.current.focus()}))},[dt,pt,ct]);const[xt,kt,St]=useClickAwayListener(dt,ut??ht),Tt=reactExports.useRef(null),At=useForkRef(Tt,lt),Et=useForkRef(At,xt),$t=ot,Dt=useUtilityClasses$d($t),jt=useDefaultReduceAnimations(),Pt=bt??jt,Ct=Ft=>{Ft.key==="Escape"&&(Ft.stopPropagation(),ht())},wt=((et=gt==null?void 0:gt.desktopTransition)!=null?et:Pt)?Fade$1:Grow$1,It=(nt=gt==null?void 0:gt.desktopTrapFocus)!=null?nt:FocusTrap,Ot=(rt=gt==null?void 0:gt.desktopPaper)!=null?rt:PickersPopperPaper,Wt=(it=gt==null?void 0:gt.popper)!=null?it:PickersPopperRoot,zt=useSlotProps({elementType:Wt,externalSlotProps:yt==null?void 0:yt.popper,additionalProps:{transition:!0,role:pt,open:dt,anchorEl:at,placement:mt,onKeyDown:Ct},className:Dt.root,ownerState:ot});return jsxRuntimeExports.jsx(Wt,_extends$u({},zt,{children:({TransitionProps:Ft,placement:Nt})=>jsxRuntimeExports.jsx(It,_extends$u({open:dt,disableAutoFocus:!0,disableRestoreFocus:!0,disableEnforceFocus:pt==="tooltip",isEnabled:()=>!0},yt==null?void 0:yt.desktopTrapFocus,{children:jsxRuntimeExports.jsx(wt,_extends$u({},Ft,yt==null?void 0:yt.desktopTransition,{children:jsxRuntimeExports.jsx(PickersPopperPaperWrapper,{PaperComponent:Ot,ownerState:$t,popperPlacement:Nt,ref:Et,onPaperClick:kt,onPaperTouchStart:St,paperClasses:Dt.paper,paperSlotProps:yt==null?void 0:yt.desktopPaper,children:st})}))}))}))}function getPickersToolbarUtilityClass(tt){return generateUtilityClass("MuiPickersToolbar",tt)}generateUtilityClasses("MuiPickersToolbar",["root","content"]);const useUtilityClasses$c=tt=>{const{classes:et,isLandscape:nt}=tt;return composeClasses({root:["root"],content:["content"],penIconButton:["penIconButton",nt&&"penIconButtonLandscape"]},getPickersToolbarUtilityClass,et)},PickersToolbarRoot=styled$1("div",{name:"MuiPickersToolbar",slot:"Root",overridesResolver:(tt,et)=>et.root})(({theme:tt,ownerState:et})=>_extends$u({display:"flex",flexDirection:"column",alignItems:"flex-start",justifyContent:"space-between",padding:tt.spacing(2,3)},et.isLandscape&&{height:"auto",maxWidth:160,padding:16,justifyContent:"flex-start",flexWrap:"wrap"})),PickersToolbarContent=styled$1("div",{name:"MuiPickersToolbar",slot:"Content",overridesResolver:(tt,et)=>et.content})(({ownerState:tt})=>{var et;return{display:"flex",flexWrap:"wrap",width:"100%",justifyContent:tt.isLandscape?"flex-start":"space-between",flexDirection:tt.isLandscape?(et=tt.landscapeDirection)!=null?et:"column":"row",flex:1,alignItems:tt.isLandscape?"flex-start":"center"}}),PickersToolbar=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiPickersToolbar"}),{children:it,className:ot,toolbarTitle:at,hidden:st,titleId:lt}=rt,ct=rt,ut=useUtilityClasses$c(ct);return st?null:jsxRuntimeExports.jsxs(PickersToolbarRoot,{ref:nt,className:clsx(ut.root,ot),ownerState:ct,children:[jsxRuntimeExports.jsx(Typography$1,{color:"text.secondary",variant:"overline",id:lt,children:at}),jsxRuntimeExports.jsx(PickersToolbarContent,{className:ut.content,ownerState:ct,children:it})]})}),useOpenState=({open:tt,onOpen:et,onClose:nt})=>{const rt=reactExports.useRef(typeof tt=="boolean").current,[it,ot]=reactExports.useState(!1);reactExports.useEffect(()=>{if(rt){if(typeof tt!="boolean")throw new Error("You must not mix controlling and uncontrolled mode for `open` prop");ot(tt)}},[rt,tt]);const at=reactExports.useCallback(st=>{rt||ot(st),st&&et&&et(),!st&&nt&&nt()},[rt,et,nt]);return{isOpen:it,setIsOpen:at}},shouldPublishValue=tt=>{const{action:et,hasChanged:nt,dateState:rt,isControlled:it}=tt,ot=!it&&!rt.hasBeenModifiedSinceMount;return et.name==="setValueFromField"?!0:et.name==="setValueFromAction"?ot&&["accept","today","clear"].includes(et.pickerAction)?!0:nt(rt.lastPublishedValue):et.name==="setValueFromView"&&et.selectionState!=="shallow"||et.name==="setValueFromShortcut"?ot?!0:nt(rt.lastPublishedValue):!1},shouldCommitValue=tt=>{const{action:et,hasChanged:nt,dateState:rt,isControlled:it,closeOnSelect:ot}=tt,at=!it&&!rt.hasBeenModifiedSinceMount;return et.name==="setValueFromAction"?at&&["accept","today","clear"].includes(et.pickerAction)?!0:nt(rt.lastCommittedValue):et.name==="setValueFromView"&&et.selectionState==="finish"&&ot?at?!0:nt(rt.lastCommittedValue):et.name==="setValueFromShortcut"?et.changeImportance==="accept"&&nt(rt.lastCommittedValue):!1},shouldClosePicker=tt=>{const{action:et,closeOnSelect:nt}=tt;return et.name==="setValueFromAction"?!0:et.name==="setValueFromView"?et.selectionState==="finish"&&nt:et.name==="setValueFromShortcut"?et.changeImportance==="accept":!1},usePickerValue=({props:tt,valueManager:et,valueType:nt,wrapperVariant:rt,validator:it})=>{const{onAccept:ot,onChange:at,value:st,defaultValue:lt,closeOnSelect:ct=rt==="desktop",selectedSections:ut,onSelectedSectionsChange:ht,timezone:dt}=tt,{current:pt}=reactExports.useRef(lt),{current:mt}=reactExports.useRef(st!==void 0),gt=useUtils(),yt=useLocalizationContext(),[bt,vt]=useControlled({controlled:ut,default:null,name:"usePickerValue",state:"selectedSections"}),{isOpen:xt,setIsOpen:kt}=useOpenState(tt),[St,Tt]=reactExports.useState(()=>{let rn;return st!==void 0?rn=st:pt!==void 0?rn=pt:rn=et.emptyValue,{draft:rn,lastPublishedValue:rn,lastCommittedValue:rn,lastControlledValue:st,hasBeenModifiedSinceMount:!1}}),{timezone:At,handleValueChange:Et}=useValueWithTimezone({timezone:dt,value:st,defaultValue:pt,onChange:at,valueManager:et});useValidation(_extends$u({},tt,{value:St.draft,timezone:At}),it,et.isSameError,et.defaultErrorState);const $t=useEventCallback(rn=>{const nn={action:rn,dateState:St,hasChanged:Qt=>!et.areValuesEqual(gt,rn.value,Qt),isControlled:mt,closeOnSelect:ct},hn=shouldPublishValue(nn),vn=shouldCommitValue(nn),an=shouldClosePicker(nn);if(Tt(Qt=>_extends$u({},Qt,{draft:rn.value,lastPublishedValue:hn?rn.value:Qt.lastPublishedValue,lastCommittedValue:vn?rn.value:Qt.lastCommittedValue,hasBeenModifiedSinceMount:!0})),hn){const _n={validationError:rn.name==="setValueFromField"?rn.context.validationError:it({adapter:yt,value:rn.value,props:_extends$u({},tt,{value:rn.value,timezone:At})})};rn.name==="setValueFromShortcut"&&rn.shortcut!=null&&(_n.shortcut=rn.shortcut),Et(rn.value,_n)}vn&&ot&&ot(rn.value),an&&kt(!1)});if(st!==void 0&&(St.lastControlledValue===void 0||!et.areValuesEqual(gt,St.lastControlledValue,st))){const rn=et.areValuesEqual(gt,St.draft,st);Tt(nn=>_extends$u({},nn,{lastControlledValue:st},rn?{}:{lastCommittedValue:st,lastPublishedValue:st,draft:st,hasBeenModifiedSinceMount:!0}))}const Dt=useEventCallback(()=>{$t({value:et.emptyValue,name:"setValueFromAction",pickerAction:"clear"})}),jt=useEventCallback(()=>{$t({value:St.lastPublishedValue,name:"setValueFromAction",pickerAction:"accept"})}),Pt=useEventCallback(()=>{$t({value:St.lastPublishedValue,name:"setValueFromAction",pickerAction:"dismiss"})}),Ct=useEventCallback(()=>{$t({value:St.lastCommittedValue,name:"setValueFromAction",pickerAction:"cancel"})}),wt=useEventCallback(()=>{$t({value:et.getTodayValue(gt,At,nt),name:"setValueFromAction",pickerAction:"today"})}),It=useEventCallback(()=>kt(!0)),Ot=useEventCallback(()=>kt(!1)),Wt=useEventCallback((rn,nn="partial")=>$t({name:"setValueFromView",value:rn,selectionState:nn})),zt=useEventCallback((rn,nn,hn)=>$t({name:"setValueFromShortcut",value:rn,changeImportance:nn??"accept",shortcut:hn})),Ft=useEventCallback((rn,nn)=>$t({name:"setValueFromField",value:rn,context:nn})),Nt=useEventCallback(rn=>{vt(rn),ht==null||ht(rn)}),Ut={onClear:Dt,onAccept:jt,onDismiss:Pt,onCancel:Ct,onSetToday:wt,onOpen:It,onClose:Ot},Mt={value:St.draft,onChange:Ft,selectedSections:bt,onSelectedSectionsChange:Nt},Ht=reactExports.useMemo(()=>et.cleanValue(gt,St.draft),[gt,et,St.draft]),en={value:Ht,onChange:Wt,onClose:Ot,open:xt,onSelectedSectionsChange:Nt},Kt=_extends$u({},Ut,{value:Ht,onChange:Wt,onSelectShortcut:zt,isValid:rn=>{const nn=it({adapter:yt,value:rn,props:_extends$u({},tt,{value:rn,timezone:At})});return!et.hasError(nn)}});return{open:xt,fieldProps:Mt,viewProps:en,layoutProps:Kt,actions:Ut}},_excluded$z=["className","sx"],usePickerViews=({props:tt,propsFromPickerValue:et,additionalViewProps:nt,inputRef:rt,autoFocusView:it})=>{const{onChange:ot,open:at,onSelectedSectionsChange:st,onClose:lt}=et,{views:ct,openTo:ut,onViewChange:ht,disableOpenPicker:dt,viewRenderers:pt,timezone:mt}=tt,gt=_objectWithoutPropertiesLoose$m(tt,_excluded$z),{view:yt,setView:bt,defaultView:vt,focusedView:xt,setFocusedView:kt,setValueAndGoToNextView:St}=useViews({view:void 0,views:ct,openTo:ut,onChange:ot,onViewChange:ht,autoFocus:it}),{hasUIView:Tt,viewModeLookup:At}=reactExports.useMemo(()=>ct.reduce((wt,It)=>{let Ot;return dt?Ot="field":pt[It]!=null?Ot="UI":Ot="field",wt.viewModeLookup[It]=Ot,Ot==="UI"&&(wt.hasUIView=!0),wt},{hasUIView:!1,viewModeLookup:{}}),[dt,pt,ct]),Et=reactExports.useMemo(()=>ct.reduce((wt,It)=>pt[It]!=null&&isTimeView(It)?wt+1:wt,0),[pt,ct]),$t=At[yt],Dt=useEventCallback(()=>$t==="UI"),[jt,Pt]=reactExports.useState($t==="UI"?yt:null);return jt!==yt&&At[yt]==="UI"&&Pt(yt),useEnhancedEffect$1(()=>{$t==="field"&&at&&(lt(),setTimeout(()=>{rt==null||rt.current.focus(),st(yt)}))},[yt]),useEnhancedEffect$1(()=>{if(!at)return;let wt=yt;$t==="field"&&jt!=null&&(wt=jt),wt!==vt&&At[wt]==="UI"&&At[vt]==="UI"&&(wt=vt),wt!==yt&&bt(wt),kt(wt,!0)},[at]),{hasUIView:Tt,shouldRestoreFocus:Dt,layoutProps:{views:ct,view:jt,onViewChange:bt},renderCurrentView:()=>{if(jt==null)return null;const wt=pt[jt];return wt==null?null:wt(_extends$u({},gt,nt,et,{views:ct,timezone:mt,onChange:St,view:jt,onViewChange:bt,focusedView:xt,onFocusedViewChange:kt,showViewSwitcher:Et>1,timeViewsCount:Et}))}}};function getOrientation(){return typeof window>"u"?"portrait":window.screen&&window.screen.orientation&&window.screen.orientation.angle?Math.abs(window.screen.orientation.angle)===90?"landscape":"portrait":window.orientation&&Math.abs(Number(window.orientation))===90?"landscape":"portrait"}const useIsLandscape=(tt,et)=>{const[nt,rt]=reactExports.useState(getOrientation);return useEnhancedEffect$1(()=>{const ot=()=>{rt(getOrientation())};return window.addEventListener("orientationchange",ot),()=>{window.removeEventListener("orientationchange",ot)}},[]),arrayIncludes$2(tt,["hours","minutes","seconds"])?!1:(et||nt)==="landscape"},usePickerLayoutProps=({props:tt,propsFromPickerValue:et,propsFromPickerViews:nt,wrapperVariant:rt})=>{const{orientation:it}=tt,ot=useIsLandscape(nt.views,it);return{layoutProps:_extends$u({},nt,et,{isLandscape:ot,wrapperVariant:rt,disabled:tt.disabled,readOnly:tt.readOnly})}},buildWarning=(tt,et="warning")=>{let nt=!1;const rt=Array.isArray(tt)?tt.join(` -`):tt;return()=>{nt||(nt=!0,et==="error"?console.error(rt):console.warn(rt))}};buildWarning(["The `renderInput` prop has been removed in version 6.0 of the Date and Time Pickers.","You can replace it with the `textField` component slot in most cases.","For more information, please have a look at the migration guide (https://mui.com/x/migration/migration-pickers-v5/#input-renderer-required-in-v5)."]);const usePicker=({props:tt,valueManager:et,valueType:nt,wrapperVariant:rt,inputRef:it,additionalViewProps:ot,validator:at,autoFocusView:st})=>{const lt=usePickerValue({props:tt,valueManager:et,valueType:nt,wrapperVariant:rt,validator:at}),ct=usePickerViews({props:tt,inputRef:it,additionalViewProps:ot,autoFocusView:st,propsFromPickerValue:lt.viewProps}),ut=usePickerLayoutProps({props:tt,wrapperVariant:rt,propsFromPickerValue:lt.layoutProps,propsFromPickerViews:ct.layoutProps});return{open:lt.open,actions:lt.actions,fieldProps:lt.fieldProps,renderCurrentView:ct.renderCurrentView,hasUIView:ct.hasUIView,shouldRestoreFocus:ct.shouldRestoreFocus,layoutProps:ut.layoutProps}};function getPickersLayoutUtilityClass(tt){return generateUtilityClass("MuiPickersLayout",tt)}const pickersLayoutClasses=generateUtilityClasses("MuiPickersLayout",["root","landscape","contentWrapper","toolbar","actionBar","shortcuts"]),_excluded$y=["onAccept","onClear","onCancel","onSetToday","actions"];function PickersActionBar(tt){const{onAccept:et,onClear:nt,onCancel:rt,onSetToday:it,actions:ot}=tt,at=_objectWithoutPropertiesLoose$m(tt,_excluded$y),st=useLocaleText();if(ot==null||ot.length===0)return null;const lt=ot==null?void 0:ot.map(ct=>{switch(ct){case"clear":return jsxRuntimeExports.jsx(Button$2,{onClick:nt,children:st.clearButtonLabel},ct);case"cancel":return jsxRuntimeExports.jsx(Button$2,{onClick:rt,children:st.cancelButtonLabel},ct);case"accept":return jsxRuntimeExports.jsx(Button$2,{onClick:et,children:st.okButtonLabel},ct);case"today":return jsxRuntimeExports.jsx(Button$2,{onClick:it,children:st.todayButtonLabel},ct);default:return null}});return jsxRuntimeExports.jsx(DialogActions$1,_extends$u({},at,{children:lt}))}const _excluded$x=["items","changeImportance","isLandscape","onChange","isValid"],_excluded2$a=["getValue"];function PickersShortcuts(tt){const{items:et,changeImportance:nt,onChange:rt,isValid:it}=tt,ot=_objectWithoutPropertiesLoose$m(tt,_excluded$x);if(et==null||et.length===0)return null;const at=et.map(st=>{let{getValue:lt}=st,ct=_objectWithoutPropertiesLoose$m(st,_excluded2$a);const ut=lt({isValid:it});return{label:ct.label,onClick:()=>{rt(ut,nt,ct)},disabled:!it(ut)}});return jsxRuntimeExports.jsx(List$1,_extends$u({dense:!0,sx:[{maxHeight:VIEW_HEIGHT,maxWidth:200,overflow:"auto"},...Array.isArray(ot.sx)?ot.sx:[ot.sx]]},ot,{children:at.map(st=>jsxRuntimeExports.jsx(ListItem$1,{children:jsxRuntimeExports.jsx(Chip$1,_extends$u({},st))},st.label))}))}function toolbarHasView(tt){return tt.view!==null}const useUtilityClasses$b=tt=>{const{classes:et,isLandscape:nt}=tt;return composeClasses({root:["root",nt&&"landscape"],contentWrapper:["contentWrapper"],toolbar:["toolbar"],actionBar:["actionBar"],tabs:["tabs"],landscape:["landscape"],shortcuts:["shortcuts"]},getPickersLayoutUtilityClass,et)},usePickerLayout=tt=>{var et,nt;const{wrapperVariant:rt,onAccept:it,onClear:ot,onCancel:at,onSetToday:st,view:lt,views:ct,onViewChange:ut,value:ht,onChange:dt,onSelectShortcut:pt,isValid:mt,isLandscape:gt,disabled:yt,readOnly:bt,children:vt,components:xt,componentsProps:kt,slots:St,slotProps:Tt}=tt,At=St??uncapitalizeObjectKeys(xt),Et=Tt??kt,$t=useUtilityClasses$b(tt),Dt=(et=At==null?void 0:At.actionBar)!=null?et:PickersActionBar,jt=useSlotProps({elementType:Dt,externalSlotProps:Et==null?void 0:Et.actionBar,additionalProps:{onAccept:it,onClear:ot,onCancel:at,onSetToday:st,actions:rt==="desktop"?[]:["cancel","accept"],className:$t.actionBar},ownerState:_extends$u({},tt,{wrapperVariant:rt})}),Pt=jsxRuntimeExports.jsx(Dt,_extends$u({},jt)),Ct=At==null?void 0:At.toolbar,wt=useSlotProps({elementType:Ct,externalSlotProps:Et==null?void 0:Et.toolbar,additionalProps:{isLandscape:gt,onChange:dt,value:ht,view:lt,onViewChange:ut,views:ct,disabled:yt,readOnly:bt,className:$t.toolbar},ownerState:_extends$u({},tt,{wrapperVariant:rt})}),It=toolbarHasView(wt)&&Ct?jsxRuntimeExports.jsx(Ct,_extends$u({},wt)):null,Ot=vt,Wt=At==null?void 0:At.tabs,zt=lt&&Wt?jsxRuntimeExports.jsx(Wt,_extends$u({view:lt,onViewChange:ut},Et==null?void 0:Et.tabs)):null,Ft=(nt=At==null?void 0:At.shortcuts)!=null?nt:PickersShortcuts,Nt=useSlotProps({elementType:Ft,externalSlotProps:Et==null?void 0:Et.shortcuts,additionalProps:{isValid:mt,isLandscape:gt,onChange:pt,className:$t.shortcuts},ownerState:{isValid:mt,isLandscape:gt,onChange:pt,className:$t.shortcuts,wrapperVariant:rt}}),Ut=lt&&Ft?jsxRuntimeExports.jsx(Ft,_extends$u({},Nt)):null;return{toolbar:It,content:Ot,tabs:zt,actionBar:Pt,shortcuts:Ut}},usePickerLayout$1=usePickerLayout,useUtilityClasses$a=tt=>{const{isLandscape:et,classes:nt}=tt;return composeClasses({root:["root",et&&"landscape"],contentWrapper:["contentWrapper"]},getPickersLayoutUtilityClass,nt)},PickersLayoutRoot=styled$1("div",{name:"MuiPickersLayout",slot:"Root",overridesResolver:(tt,et)=>et.root})(({theme:tt,ownerState:et})=>({display:"grid",gridAutoColumns:"max-content auto max-content",gridAutoRows:"max-content auto max-content",[`& .${pickersLayoutClasses.toolbar}`]:et.isLandscape?{gridColumn:tt.direction==="rtl"?3:1,gridRow:"2 / 3"}:{gridColumn:"2 / 4",gridRow:1},[`.${pickersLayoutClasses.shortcuts}`]:et.isLandscape?{gridColumn:"2 / 4",gridRow:1}:{gridColumn:tt.direction==="rtl"?3:1,gridRow:"2 / 3"},[`& .${pickersLayoutClasses.actionBar}`]:{gridColumn:"1 / 4",gridRow:3}}));PickersLayoutRoot.propTypes={as:PropTypes.elementType,ownerState:PropTypes.shape({isLandscape:PropTypes.bool.isRequired}).isRequired,sx:PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func,PropTypes.object,PropTypes.bool])),PropTypes.func,PropTypes.object])};const PickersLayoutContentWrapper=styled$1("div",{name:"MuiPickersLayout",slot:"ContentWrapper",overridesResolver:(tt,et)=>et.contentWrapper})({gridColumn:2,gridRow:2,display:"flex",flexDirection:"column"}),PickersLayout=function(et){const nt=useThemeProps({props:et,name:"MuiPickersLayout"}),{toolbar:rt,content:it,tabs:ot,actionBar:at,shortcuts:st}=usePickerLayout$1(nt),{sx:lt,className:ct,isLandscape:ut,ref:ht,wrapperVariant:dt}=nt,pt=nt,mt=useUtilityClasses$a(pt);return jsxRuntimeExports.jsxs(PickersLayoutRoot,{ref:ht,sx:lt,className:clsx(ct,mt.root),ownerState:pt,children:[ut?st:rt,ut?rt:st,jsxRuntimeExports.jsx(PickersLayoutContentWrapper,{className:mt.contentWrapper,children:dt==="desktop"?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[it,ot]}):jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[ot,it]})}),at]})},getPickersSlideTransitionUtilityClass=tt=>generateUtilityClass("MuiPickersSlideTransition",tt),pickersSlideTransitionClasses=generateUtilityClasses("MuiPickersSlideTransition",["root","slideEnter-left","slideEnter-right","slideEnterActive","slideExit","slideExitActiveLeft-left","slideExitActiveLeft-right"]),_excluded$w=["children","className","reduceAnimations","slideDirection","transKey","classes"],useUtilityClasses$9=tt=>{const{classes:et,slideDirection:nt}=tt,rt={root:["root"],exit:["slideExit"],enterActive:["slideEnterActive"],enter:[`slideEnter-${nt}`],exitActive:[`slideExitActiveLeft-${nt}`]};return composeClasses(rt,getPickersSlideTransitionUtilityClass,et)},PickersSlideTransitionRoot=styled$1(TransitionGroup$1,{name:"MuiPickersSlideTransition",slot:"Root",overridesResolver:(tt,et)=>[et.root,{[`.${pickersSlideTransitionClasses["slideEnter-left"]}`]:et["slideEnter-left"]},{[`.${pickersSlideTransitionClasses["slideEnter-right"]}`]:et["slideEnter-right"]},{[`.${pickersSlideTransitionClasses.slideEnterActive}`]:et.slideEnterActive},{[`.${pickersSlideTransitionClasses.slideExit}`]:et.slideExit},{[`.${pickersSlideTransitionClasses["slideExitActiveLeft-left"]}`]:et["slideExitActiveLeft-left"]},{[`.${pickersSlideTransitionClasses["slideExitActiveLeft-right"]}`]:et["slideExitActiveLeft-right"]}]})(({theme:tt})=>{const et=tt.transitions.create("transform",{duration:tt.transitions.duration.complex,easing:"cubic-bezier(0.35, 0.8, 0.4, 1)"});return{display:"block",position:"relative",overflowX:"hidden","& > *":{position:"absolute",top:0,right:0,left:0},[`& .${pickersSlideTransitionClasses["slideEnter-left"]}`]:{willChange:"transform",transform:"translate(100%)",zIndex:1},[`& .${pickersSlideTransitionClasses["slideEnter-right"]}`]:{willChange:"transform",transform:"translate(-100%)",zIndex:1},[`& .${pickersSlideTransitionClasses.slideEnterActive}`]:{transform:"translate(0%)",transition:et},[`& .${pickersSlideTransitionClasses.slideExit}`]:{transform:"translate(0%)"},[`& .${pickersSlideTransitionClasses["slideExitActiveLeft-left"]}`]:{willChange:"transform",transform:"translate(-100%)",transition:et,zIndex:0},[`& .${pickersSlideTransitionClasses["slideExitActiveLeft-right"]}`]:{willChange:"transform",transform:"translate(100%)",transition:et,zIndex:0}}});function PickersSlideTransition(tt){const et=useThemeProps({props:tt,name:"MuiPickersSlideTransition"}),{children:nt,className:rt,reduceAnimations:it,transKey:ot}=et,at=_objectWithoutPropertiesLoose$m(et,_excluded$w),st=useUtilityClasses$9(et),lt=useTheme();if(it)return jsxRuntimeExports.jsx("div",{className:clsx(st.root,rt),children:nt});const ct={exit:st.exit,enterActive:st.enterActive,enter:st.enter,exitActive:st.exitActive};return jsxRuntimeExports.jsx(PickersSlideTransitionRoot,{className:clsx(st.root,rt),childFactory:ut=>reactExports.cloneElement(ut,{classNames:ct}),role:"presentation",children:jsxRuntimeExports.jsx(CSSTransition$1,_extends$u({mountOnEnter:!0,unmountOnExit:!0,timeout:lt.transitions.duration.complex,classNames:ct},at,{children:nt}),ot)})}const useIsDateDisabled=({shouldDisableDate:tt,shouldDisableMonth:et,shouldDisableYear:nt,minDate:rt,maxDate:it,disableFuture:ot,disablePast:at,timezone:st})=>{const lt=useLocalizationContext();return reactExports.useCallback(ct=>validateDate({adapter:lt,value:ct,props:{shouldDisableDate:tt,shouldDisableMonth:et,shouldDisableYear:nt,minDate:rt,maxDate:it,disableFuture:ot,disablePast:at,timezone:st}})!==null,[lt,tt,et,nt,rt,it,ot,at,st])},getDayCalendarUtilityClass=tt=>generateUtilityClass("MuiDayCalendar",tt);generateUtilityClasses("MuiDayCalendar",["root","header","weekDayLabel","loadingContainer","slideTransition","monthContainer","weekContainer","weekNumberLabel","weekNumber"]);const _excluded$v=["parentProps","day","focusableDay","selectedDays","isDateDisabled","currentMonthNumber","isViewFocused"],_excluded2$9=["ownerState"],useUtilityClasses$8=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],header:["header"],weekDayLabel:["weekDayLabel"],loadingContainer:["loadingContainer"],slideTransition:["slideTransition"],monthContainer:["monthContainer"],weekContainer:["weekContainer"],weekNumberLabel:["weekNumberLabel"],weekNumber:["weekNumber"]},getDayCalendarUtilityClass,et)},weeksContainerHeight=(DAY_SIZE+DAY_MARGIN*2)*6,PickersCalendarDayRoot=styled$1("div",{name:"MuiDayCalendar",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),PickersCalendarDayHeader=styled$1("div",{name:"MuiDayCalendar",slot:"Header",overridesResolver:(tt,et)=>et.header})({display:"flex",justifyContent:"center",alignItems:"center"}),PickersCalendarWeekDayLabel=styled$1(Typography$1,{name:"MuiDayCalendar",slot:"WeekDayLabel",overridesResolver:(tt,et)=>et.weekDayLabel})(({theme:tt})=>({width:36,height:40,margin:"0 2px",textAlign:"center",display:"flex",justifyContent:"center",alignItems:"center",color:(tt.vars||tt).palette.text.secondary})),PickersCalendarWeekNumberLabel=styled$1(Typography$1,{name:"MuiDayCalendar",slot:"WeekNumberLabel",overridesResolver:(tt,et)=>et.weekNumberLabel})(({theme:tt})=>({width:36,height:40,margin:"0 2px",textAlign:"center",display:"flex",justifyContent:"center",alignItems:"center",color:tt.palette.text.disabled})),PickersCalendarWeekNumber=styled$1(Typography$1,{name:"MuiDayCalendar",slot:"WeekNumber",overridesResolver:(tt,et)=>et.weekNumber})(({theme:tt})=>_extends$u({},tt.typography.caption,{width:DAY_SIZE,height:DAY_SIZE,padding:0,margin:`0 ${DAY_MARGIN}px`,color:tt.palette.text.disabled,fontSize:"0.75rem",alignItems:"center",justifyContent:"center",display:"inline-flex"})),PickersCalendarLoadingContainer=styled$1("div",{name:"MuiDayCalendar",slot:"LoadingContainer",overridesResolver:(tt,et)=>et.loadingContainer})({display:"flex",justifyContent:"center",alignItems:"center",minHeight:weeksContainerHeight}),PickersCalendarSlideTransition=styled$1(PickersSlideTransition,{name:"MuiDayCalendar",slot:"SlideTransition",overridesResolver:(tt,et)=>et.slideTransition})({minHeight:weeksContainerHeight}),PickersCalendarWeekContainer=styled$1("div",{name:"MuiDayCalendar",slot:"MonthContainer",overridesResolver:(tt,et)=>et.monthContainer})({overflow:"hidden"}),PickersCalendarWeek=styled$1("div",{name:"MuiDayCalendar",slot:"WeekContainer",overridesResolver:(tt,et)=>et.weekContainer})({margin:`${DAY_MARGIN}px 0`,display:"flex",justifyContent:"center"});function WrappedDay(tt){var et,nt,rt;let{parentProps:it,day:ot,focusableDay:at,selectedDays:st,isDateDisabled:lt,currentMonthNumber:ct,isViewFocused:ut}=tt,ht=_objectWithoutPropertiesLoose$m(tt,_excluded$v);const{disabled:dt,disableHighlightToday:pt,isMonthSwitchingAnimating:mt,showDaysOutsideCurrentMonth:gt,components:yt,componentsProps:bt,slots:vt,slotProps:xt,timezone:kt}=it,St=useUtils(),Tt=useNow(kt),At=at!==null&&St.isSameDay(ot,at),Et=st.some(Wt=>St.isSameDay(Wt,ot)),$t=St.isSameDay(ot,Tt),Dt=(et=(nt=vt==null?void 0:vt.day)!=null?nt:yt==null?void 0:yt.Day)!=null?et:PickersDay,jt=useSlotProps({elementType:Dt,externalSlotProps:(rt=xt==null?void 0:xt.day)!=null?rt:bt==null?void 0:bt.day,additionalProps:_extends$u({disableHighlightToday:pt,showDaysOutsideCurrentMonth:gt,role:"gridcell",isAnimating:mt,"data-timestamp":St.toJsDate(ot).valueOf()},ht),ownerState:_extends$u({},it,{day:ot,selected:Et})}),Pt=_objectWithoutPropertiesLoose$m(jt,_excluded2$9),Ct=reactExports.useMemo(()=>dt||lt(ot),[dt,lt,ot]),wt=reactExports.useMemo(()=>St.getMonth(ot)!==ct,[St,ot,ct]),It=reactExports.useMemo(()=>{const Wt=St.startOfMonth(St.setMonth(ot,ct));return gt?St.isSameDay(ot,St.startOfWeek(Wt)):St.isSameDay(ot,Wt)},[ct,ot,gt,St]),Ot=reactExports.useMemo(()=>{const Wt=St.endOfMonth(St.setMonth(ot,ct));return gt?St.isSameDay(ot,St.endOfWeek(Wt)):St.isSameDay(ot,Wt)},[ct,ot,gt,St]);return jsxRuntimeExports.jsx(Dt,_extends$u({},Pt,{day:ot,disabled:Ct,autoFocus:ut&&At,today:$t,outsideCurrentMonth:wt,isFirstVisibleCell:It,isLastVisibleCell:Ot,selected:Et,tabIndex:At?0:-1,"aria-selected":Et,"aria-current":$t?"date":void 0}))}function DayCalendar(tt){const et=useThemeProps({props:tt,name:"MuiDayCalendar"}),{onFocusedDayChange:nt,className:rt,currentMonth:it,selectedDays:ot,focusedDay:at,loading:st,onSelectedDaysChange:lt,onMonthSwitchingAnimationEnd:ct,readOnly:ut,reduceAnimations:ht,renderLoading:dt=()=>jsxRuntimeExports.jsx("span",{children:"..."}),slideDirection:pt,TransitionProps:mt,disablePast:gt,disableFuture:yt,minDate:bt,maxDate:vt,shouldDisableDate:xt,shouldDisableMonth:kt,shouldDisableYear:St,dayOfWeekFormatter:Tt,hasFocus:At,onFocusedViewChange:Et,gridLabelId:$t,displayWeekNumber:Dt,fixedWeekNumber:jt,autoFocus:Pt,timezone:Ct}=et,wt=useNow(Ct),It=useUtils(),Ot=useUtilityClasses$8(et),zt=useTheme().direction==="rtl",Ft=Tt||((cn,mn)=>It.format(mn,"weekdayShort").charAt(0).toUpperCase()),Nt=useIsDateDisabled({shouldDisableDate:xt,shouldDisableMonth:kt,shouldDisableYear:St,minDate:bt,maxDate:vt,disablePast:gt,disableFuture:yt,timezone:Ct}),Ut=useLocaleText(),[Mt,Ht]=useControlled({name:"DayCalendar",state:"hasFocus",controlled:At,default:Pt??!1}),[en,sn]=reactExports.useState(()=>at||wt),Kt=useEventCallback(cn=>{ut||lt(cn)}),rn=cn=>{Nt(cn)||(nt(cn),sn(cn),Et==null||Et(!0),Ht(!0))},nn=useEventCallback((cn,mn)=>{switch(cn.key){case"ArrowUp":rn(It.addDays(mn,-7)),cn.preventDefault();break;case"ArrowDown":rn(It.addDays(mn,7)),cn.preventDefault();break;case"ArrowLeft":{const In=It.addDays(mn,zt?1:-1),An=It.addMonths(mn,zt?1:-1),wn=findClosestEnabledDate({utils:It,date:In,minDate:zt?In:It.startOfMonth(An),maxDate:zt?It.endOfMonth(An):In,isDateDisabled:Nt,timezone:Ct});rn(wn||In),cn.preventDefault();break}case"ArrowRight":{const In=It.addDays(mn,zt?-1:1),An=It.addMonths(mn,zt?-1:1),wn=findClosestEnabledDate({utils:It,date:In,minDate:zt?It.startOfMonth(An):In,maxDate:zt?In:It.endOfMonth(An),isDateDisabled:Nt,timezone:Ct});rn(wn||In),cn.preventDefault();break}case"Home":rn(It.startOfWeek(mn)),cn.preventDefault();break;case"End":rn(It.endOfWeek(mn)),cn.preventDefault();break;case"PageUp":rn(It.addMonths(mn,1)),cn.preventDefault();break;case"PageDown":rn(It.addMonths(mn,-1)),cn.preventDefault();break}}),hn=useEventCallback((cn,mn)=>rn(mn)),vn=useEventCallback((cn,mn)=>{Mt&&It.isSameDay(en,mn)&&(Et==null||Et(!1))}),an=It.getMonth(it),Qt=reactExports.useMemo(()=>ot.filter(cn=>!!cn).map(cn=>It.startOfDay(cn)),[It,ot]),_n=an,Pn=reactExports.useMemo(()=>reactExports.createRef(),[_n]),$n=It.startOfWeek(wt),Nn=reactExports.useMemo(()=>{const cn=It.startOfMonth(it),mn=It.endOfMonth(it);return Nt(en)||It.isAfterDay(en,mn)||It.isBeforeDay(en,cn)?findClosestEnabledDate({utils:It,date:en,minDate:cn,maxDate:mn,disablePast:gt,disableFuture:yt,isDateDisabled:Nt,timezone:Ct}):en},[it,yt,gt,en,Nt,It,Ct]),Tn=reactExports.useMemo(()=>{const cn=It.setTimezone(it,Ct),mn=It.getWeekArray(cn);let In=It.addMonths(cn,1);for(;jt&&mn.length{mn.length{var In;const An=It.format(cn,"weekdayShort").slice(0,2);return jsxRuntimeExports.jsx(PickersCalendarWeekDayLabel,{variant:"caption",role:"columnheader","aria-label":It.format(It.addDays($n,mn),"weekday"),className:Ot.weekDayLabel,children:(In=Ft==null?void 0:Ft(An,cn))!=null?In:An},An+mn.toString())})]}),st?jsxRuntimeExports.jsx(PickersCalendarLoadingContainer,{className:Ot.loadingContainer,children:dt()}):jsxRuntimeExports.jsx(PickersCalendarSlideTransition,_extends$u({transKey:_n,onExited:ct,reduceAnimations:ht,slideDirection:pt,className:clsx(rt,Ot.slideTransition)},mt,{nodeRef:Pn,children:jsxRuntimeExports.jsx(PickersCalendarWeekContainer,{ref:Pn,role:"rowgroup",className:Ot.monthContainer,children:Tn.map((cn,mn)=>jsxRuntimeExports.jsxs(PickersCalendarWeek,{role:"row",className:Ot.weekContainer,"aria-rowindex":mn+1,children:[Dt&&jsxRuntimeExports.jsx(PickersCalendarWeekNumber,{className:Ot.weekNumber,role:"rowheader","aria-label":Ut.calendarWeekNumberAriaLabelText(It.getWeekNumber(cn[0])),children:Ut.calendarWeekNumberText(It.getWeekNumber(cn[0]))}),cn.map((In,An)=>jsxRuntimeExports.jsx(WrappedDay,{parentProps:et,day:In,selectedDays:Qt,focusableDay:Nn,onKeyDown:nn,onFocus:hn,onBlur:vn,onDaySelect:Kt,isDateDisabled:Nt,currentMonthNumber:an,isViewFocused:Mt,"aria-colindex":An+1},In.toString()))]},`week-${cn[0]}`))})}))]})}const createCalendarStateReducer=(tt,et,nt)=>(rt,it)=>{switch(it.type){case"changeMonth":return _extends$u({},rt,{slideDirection:it.direction,currentMonth:it.newMonth,isMonthSwitchingAnimating:!tt});case"finishMonthSwitchingAnimation":return _extends$u({},rt,{isMonthSwitchingAnimating:!1});case"changeFocusedDay":{if(rt.focusedDay!=null&&it.focusedDay!=null&&nt.isSameDay(it.focusedDay,rt.focusedDay))return rt;const ot=it.focusedDay!=null&&!et&&!nt.isSameMonth(rt.currentMonth,it.focusedDay);return _extends$u({},rt,{focusedDay:it.focusedDay,isMonthSwitchingAnimating:ot&&!tt&&!it.withoutMonthSwitchingAnimation,currentMonth:ot?nt.startOfMonth(it.focusedDay):rt.currentMonth,slideDirection:it.focusedDay!=null&&nt.isAfterDay(it.focusedDay,rt.currentMonth)?"left":"right"})}default:throw new Error("missing support")}},useCalendarState=tt=>{const{value:et,referenceDate:nt,defaultCalendarMonth:rt,disableFuture:it,disablePast:ot,disableSwitchToMonthOnDayFocus:at=!1,maxDate:st,minDate:lt,onMonthChange:ct,reduceAnimations:ut,shouldDisableDate:ht,timezone:dt}=tt,pt=useNow(dt),mt=useUtils(),gt=reactExports.useRef(createCalendarStateReducer(!!ut,at,mt)).current,yt=reactExports.useMemo(()=>{let Et=null;return nt?Et=nt:rt&&(Et=mt.startOfMonth(rt)),singleItemValueManager.getInitialReferenceValue({value:et,utils:mt,timezone:dt,props:tt,referenceDate:Et,granularity:SECTION_TYPE_GRANULARITY.day})},[]),[bt,vt]=reactExports.useReducer(gt,{isMonthSwitchingAnimating:!1,focusedDay:et||pt,currentMonth:mt.startOfMonth(yt),slideDirection:"left"}),xt=reactExports.useCallback(Et=>{vt(_extends$u({type:"changeMonth"},Et)),ct&&ct(Et.newMonth)},[ct]),kt=reactExports.useCallback(Et=>{const $t=Et;mt.isSameMonth($t,bt.currentMonth)||xt({newMonth:mt.startOfMonth($t),direction:mt.isAfterDay($t,bt.currentMonth)?"left":"right"})},[bt.currentMonth,xt,mt]),St=useIsDateDisabled({shouldDisableDate:ht,minDate:lt,maxDate:st,disableFuture:it,disablePast:ot,timezone:dt}),Tt=reactExports.useCallback(()=>{vt({type:"finishMonthSwitchingAnimation"})},[]),At=useEventCallback((Et,$t)=>{St(Et)||vt({type:"changeFocusedDay",focusedDay:Et,withoutMonthSwitchingAnimation:$t})});return{referenceDate:yt,calendarState:bt,changeMonth:kt,changeFocusedDay:At,isDateDisabled:St,onMonthSwitchingAnimationEnd:Tt,handleChangeMonth:xt}},_excluded$u=["ownerState"],useClearableField=({clearable:tt,fieldProps:et,InputProps:nt,onClear:rt,slots:it,slotProps:ot,components:at,componentsProps:st})=>{var lt,ct,ut,ht,dt,pt;const mt=useLocaleText(),gt=(lt=(ct=it==null?void 0:it.clearButton)!=null?ct:at==null?void 0:at.ClearButton)!=null?lt:IconButton$2,yt=useSlotProps({elementType:gt,externalSlotProps:(ut=ot==null?void 0:ot.clearButton)!=null?ut:st==null?void 0:st.clearButton,ownerState:{},className:"clearButton",additionalProps:{title:mt.fieldClearLabel}}),bt=_objectWithoutPropertiesLoose$m(yt,_excluded$u),vt=(ht=(dt=it==null?void 0:it.clearIcon)!=null?dt:at==null?void 0:at.ClearIcon)!=null?ht:ClearIcon,xt=useSlotProps({elementType:vt,externalSlotProps:(pt=ot==null?void 0:ot.clearIcon)!=null?pt:st==null?void 0:st.clearIcon,ownerState:{}}),kt=_extends$u({},nt,{endAdornment:tt?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(MuiInputAdornment,{position:"end",sx:{marginRight:nt!=null&&nt.endAdornment?-1:-1.5},children:jsxRuntimeExports.jsx(gt,_extends$u({},bt,{onClick:rt,children:jsxRuntimeExports.jsx(vt,_extends$u({fontSize:"small"},xt))}))}),nt==null?void 0:nt.endAdornment]}):nt==null?void 0:nt.endAdornment}),St=_extends$u({},et,{sx:[{"& .clearButton":{opacity:1},"@media (pointer: fine)":{"& .clearButton":{opacity:0},"&:hover, &:focus-within":{".clearButton":{opacity:1}}}},...Array.isArray(et.sx)?et.sx:[et.sx]]});return{InputProps:kt,fieldProps:St}},_excluded$t=["components","componentsProps","slots","slotProps","InputProps","inputProps"],_excluded2$8=["inputRef"],_excluded3$2=["ref","onPaste","onKeyDown","inputMode","readOnly","clearable","onClear"],DateField=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useThemeProps({props:et,name:"MuiDateField"}),{components:st,componentsProps:lt,slots:ct,slotProps:ut,InputProps:ht,inputProps:dt}=at,pt=_objectWithoutPropertiesLoose$m(at,_excluded$t),mt=at,gt=(rt=(it=ct==null?void 0:ct.textField)!=null?it:st==null?void 0:st.TextField)!=null?rt:MuiTextField,yt=useSlotProps({elementType:gt,externalSlotProps:(ot=ut==null?void 0:ut.textField)!=null?ot:lt==null?void 0:lt.textField,externalForwardedProps:pt,ownerState:mt}),{inputRef:bt}=yt,vt=_objectWithoutPropertiesLoose$m(yt,_excluded2$8);vt.inputProps=_extends$u({},dt,vt.inputProps),vt.InputProps=_extends$u({},ht,vt.InputProps);const xt=useDateField({props:vt,inputRef:bt}),{ref:kt,onPaste:St,onKeyDown:Tt,inputMode:At,readOnly:Et,clearable:$t,onClear:Dt}=xt,jt=_objectWithoutPropertiesLoose$m(xt,_excluded3$2),{InputProps:Pt,fieldProps:Ct}=useClearableField({onClear:Dt,clearable:$t,fieldProps:jt,InputProps:jt.InputProps,slots:ct,slotProps:ut,components:st,componentsProps:lt});return jsxRuntimeExports.jsx(gt,_extends$u({ref:nt},Ct,{InputProps:_extends$u({},Pt,{readOnly:Et}),inputProps:_extends$u({},jt.inputProps,{inputMode:At,onPaste:St,onKeyDown:Tt,ref:kt})}))}),getPickersFadeTransitionGroupUtilityClass=tt=>generateUtilityClass("MuiPickersFadeTransitionGroup",tt);generateUtilityClasses("MuiPickersFadeTransitionGroup",["root"]);const useUtilityClasses$7=tt=>{const{classes:et}=tt;return composeClasses({root:["root"]},getPickersFadeTransitionGroupUtilityClass,et)},PickersFadeTransitionGroupRoot=styled$1(TransitionGroup$1,{name:"MuiPickersFadeTransitionGroup",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"block",position:"relative"});function PickersFadeTransitionGroup(tt){const et=useThemeProps({props:tt,name:"MuiPickersFadeTransitionGroup"}),{children:nt,className:rt,reduceAnimations:it,transKey:ot}=et,at=useUtilityClasses$7(et),st=useTheme();return it?nt:jsxRuntimeExports.jsx(PickersFadeTransitionGroupRoot,{className:clsx(at.root,rt),children:jsxRuntimeExports.jsx(Fade$1,{appear:!1,mountOnEnter:!0,unmountOnExit:!0,timeout:{appear:st.transitions.duration.enteringScreen,enter:st.transitions.duration.enteringScreen,exit:0},children:nt},ot)})}function getPickersMonthUtilityClass(tt){return generateUtilityClass("MuiPickersMonth",tt)}const pickersMonthClasses=generateUtilityClasses("MuiPickersMonth",["root","monthButton","disabled","selected"]),_excluded$s=["autoFocus","children","disabled","selected","value","tabIndex","onClick","onKeyDown","onFocus","onBlur","aria-current","aria-label","monthsPerRow"],useUtilityClasses$6=tt=>{const{disabled:et,selected:nt,classes:rt}=tt;return composeClasses({root:["root"],monthButton:["monthButton",et&&"disabled",nt&&"selected"]},getPickersMonthUtilityClass,rt)},PickersMonthRoot=styled$1("div",{name:"MuiPickersMonth",slot:"Root",overridesResolver:(tt,et)=>[et.root]})(({ownerState:tt})=>({flexBasis:tt.monthsPerRow===3?"33.3%":"25%",display:"flex",alignItems:"center",justifyContent:"center"})),PickersMonthButton=styled$1("button",{name:"MuiPickersMonth",slot:"MonthButton",overridesResolver:(tt,et)=>[et.monthButton,{[`&.${pickersMonthClasses.disabled}`]:et.disabled},{[`&.${pickersMonthClasses.selected}`]:et.selected}]})(({theme:tt})=>_extends$u({color:"unset",backgroundColor:"transparent",border:0,outline:0},tt.typography.subtitle1,{margin:"8px 0",height:36,width:72,borderRadius:18,cursor:"pointer","&:focus":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.hoverOpacity)},"&:hover":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.hoverOpacity)},"&:disabled":{cursor:"auto",pointerEvents:"none"},[`&.${pickersMonthClasses.disabled}`]:{color:(tt.vars||tt).palette.text.secondary},[`&.${pickersMonthClasses.selected}`]:{color:(tt.vars||tt).palette.primary.contrastText,backgroundColor:(tt.vars||tt).palette.primary.main,"&:focus, &:hover":{backgroundColor:(tt.vars||tt).palette.primary.dark}}})),PickersMonth=reactExports.memo(function(et){const nt=useThemeProps({props:et,name:"MuiPickersMonth"}),{autoFocus:rt,children:it,disabled:ot,selected:at,value:st,tabIndex:lt,onClick:ct,onKeyDown:ut,onFocus:ht,onBlur:dt,"aria-current":pt,"aria-label":mt}=nt,gt=_objectWithoutPropertiesLoose$m(nt,_excluded$s),yt=reactExports.useRef(null),bt=useUtilityClasses$6(nt);return useEnhancedEffect$1(()=>{if(rt){var vt;(vt=yt.current)==null||vt.focus()}},[rt]),jsxRuntimeExports.jsx(PickersMonthRoot,_extends$u({className:bt.root,ownerState:nt},gt,{children:jsxRuntimeExports.jsx(PickersMonthButton,{ref:yt,disabled:ot,type:"button",role:"radio",tabIndex:ot?-1:lt,"aria-current":pt,"aria-checked":at,"aria-label":mt,onClick:vt=>ct(vt,st),onKeyDown:vt=>ut(vt,st),onFocus:vt=>ht(vt,st),onBlur:vt=>dt(vt,st),className:bt.monthButton,ownerState:nt,children:it})}))});function getMonthCalendarUtilityClass(tt){return generateUtilityClass("MuiMonthCalendar",tt)}generateUtilityClasses("MuiMonthCalendar",["root"]);const _excluded$r=["className","value","defaultValue","referenceDate","disabled","disableFuture","disablePast","maxDate","minDate","onChange","shouldDisableMonth","readOnly","disableHighlightToday","autoFocus","onMonthFocus","hasFocus","onFocusedViewChange","monthsPerRow","timezone","gridLabelId"],useUtilityClasses$5=tt=>{const{classes:et}=tt;return composeClasses({root:["root"]},getMonthCalendarUtilityClass,et)};function useMonthCalendarDefaultizedProps(tt,et){const nt=useUtils(),rt=useDefaultDates(),it=useThemeProps({props:tt,name:et});return _extends$u({disableFuture:!1,disablePast:!1},it,{minDate:applyDefaultDate(nt,it.minDate,rt.minDate),maxDate:applyDefaultDate(nt,it.maxDate,rt.maxDate)})}const MonthCalendarRoot=styled$1("div",{name:"MuiMonthCalendar",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex",flexWrap:"wrap",alignContent:"stretch",padding:"0 4px",width:DIALOG_WIDTH,boxSizing:"border-box"}),MonthCalendar=reactExports.forwardRef(function(et,nt){const rt=useMonthCalendarDefaultizedProps(et,"MuiMonthCalendar"),{className:it,value:ot,defaultValue:at,referenceDate:st,disabled:lt,disableFuture:ct,disablePast:ut,maxDate:ht,minDate:dt,onChange:pt,shouldDisableMonth:mt,readOnly:gt,disableHighlightToday:yt,autoFocus:bt=!1,onMonthFocus:vt,hasFocus:xt,onFocusedViewChange:kt,monthsPerRow:St=3,timezone:Tt,gridLabelId:At}=rt,Et=_objectWithoutPropertiesLoose$m(rt,_excluded$r),{value:$t,handleValueChange:Dt,timezone:jt}=useControlledValueWithTimezone({name:"MonthCalendar",timezone:Tt,value:ot,defaultValue:at,onChange:pt,valueManager:singleItemValueManager}),Pt=useNow(jt),Ct=useTheme$2(),wt=useUtils(),It=reactExports.useMemo(()=>singleItemValueManager.getInitialReferenceValue({value:$t,utils:wt,props:rt,timezone:jt,referenceDate:st,granularity:SECTION_TYPE_GRANULARITY.month}),[]),Ot=rt,Wt=useUtilityClasses$5(Ot),zt=reactExports.useMemo(()=>wt.getMonth(Pt),[wt,Pt]),Ft=reactExports.useMemo(()=>$t!=null?wt.getMonth($t):yt?null:wt.getMonth(It),[$t,wt,yt,It]),[Nt,Ut]=reactExports.useState(()=>Ft||zt),[Mt,Ht]=useControlled({name:"MonthCalendar",state:"hasFocus",controlled:xt,default:bt??!1}),en=useEventCallback(an=>{Ht(an),kt&&kt(an)}),sn=reactExports.useCallback(an=>{const Qt=wt.startOfMonth(ut&&wt.isAfter(Pt,dt)?Pt:dt),_n=wt.startOfMonth(ct&&wt.isBefore(Pt,ht)?Pt:ht),Pn=wt.startOfMonth(an);return wt.isBefore(Pn,Qt)||wt.isAfter(Pn,_n)?!0:mt?mt(Pn):!1},[ct,ut,ht,dt,Pt,mt,wt]),Kt=useEventCallback((an,Qt)=>{if(gt)return;const _n=wt.setMonth($t??It,Qt);Dt(_n)}),rn=useEventCallback(an=>{sn(wt.setMonth($t??It,an))||(Ut(an),en(!0),vt&&vt(an))});reactExports.useEffect(()=>{Ut(an=>Ft!==null&&an!==Ft?Ft:an)},[Ft]);const nn=useEventCallback((an,Qt)=>{switch(an.key){case"ArrowUp":rn((12+Qt-3)%12),an.preventDefault();break;case"ArrowDown":rn((12+Qt+3)%12),an.preventDefault();break;case"ArrowLeft":rn((12+Qt+(Ct.direction==="ltr"?-1:1))%12),an.preventDefault();break;case"ArrowRight":rn((12+Qt+(Ct.direction==="ltr"?1:-1))%12),an.preventDefault();break}}),hn=useEventCallback((an,Qt)=>{rn(Qt)}),vn=useEventCallback((an,Qt)=>{Nt===Qt&&en(!1)});return jsxRuntimeExports.jsx(MonthCalendarRoot,_extends$u({ref:nt,className:clsx(Wt.root,it),ownerState:Ot,role:"radiogroup","aria-labelledby":At},Et,{children:getMonthsInYear(wt,$t??It).map(an=>{const Qt=wt.getMonth(an),_n=wt.format(an,"monthShort"),Pn=wt.format(an,"month"),$n=Qt===Ft,Nn=lt||sn(an);return jsxRuntimeExports.jsx(PickersMonth,{selected:$n,value:Qt,onClick:Kt,onKeyDown:nn,autoFocus:Mt&&Qt===Nt,disabled:Nn,tabIndex:Qt===Nt?0:-1,onFocus:hn,onBlur:vn,"aria-current":zt===Qt?"date":void 0,"aria-label":Pn,monthsPerRow:St,children:_n},_n)})}))});function getPickersYearUtilityClass(tt){return generateUtilityClass("MuiPickersYear",tt)}const pickersYearClasses=generateUtilityClasses("MuiPickersYear",["root","yearButton","selected","disabled"]),_excluded$q=["autoFocus","className","children","disabled","selected","value","tabIndex","onClick","onKeyDown","onFocus","onBlur","aria-current","yearsPerRow"],useUtilityClasses$4=tt=>{const{disabled:et,selected:nt,classes:rt}=tt;return composeClasses({root:["root"],yearButton:["yearButton",et&&"disabled",nt&&"selected"]},getPickersYearUtilityClass,rt)},PickersYearRoot=styled$1("div",{name:"MuiPickersYear",slot:"Root",overridesResolver:(tt,et)=>[et.root]})(({ownerState:tt})=>({flexBasis:tt.yearsPerRow===3?"33.3%":"25%",display:"flex",alignItems:"center",justifyContent:"center"})),PickersYearButton=styled$1("button",{name:"MuiPickersYear",slot:"YearButton",overridesResolver:(tt,et)=>[et.yearButton,{[`&.${pickersYearClasses.disabled}`]:et.disabled},{[`&.${pickersYearClasses.selected}`]:et.selected}]})(({theme:tt})=>_extends$u({color:"unset",backgroundColor:"transparent",border:0,outline:0},tt.typography.subtitle1,{margin:"6px 0",height:36,width:72,borderRadius:18,cursor:"pointer","&:focus":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.focusOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.focusOpacity)},"&:hover":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.hoverOpacity)},"&:disabled":{cursor:"auto",pointerEvents:"none"},[`&.${pickersYearClasses.disabled}`]:{color:(tt.vars||tt).palette.text.secondary},[`&.${pickersYearClasses.selected}`]:{color:(tt.vars||tt).palette.primary.contrastText,backgroundColor:(tt.vars||tt).palette.primary.main,"&:focus, &:hover":{backgroundColor:(tt.vars||tt).palette.primary.dark}}})),PickersYear=reactExports.memo(function(et){const nt=useThemeProps({props:et,name:"MuiPickersYear"}),{autoFocus:rt,className:it,children:ot,disabled:at,selected:st,value:lt,tabIndex:ct,onClick:ut,onKeyDown:ht,onFocus:dt,onBlur:pt,"aria-current":mt}=nt,gt=_objectWithoutPropertiesLoose$m(nt,_excluded$q),yt=reactExports.useRef(null),bt=useUtilityClasses$4(nt);return reactExports.useEffect(()=>{rt&&yt.current.focus()},[rt]),jsxRuntimeExports.jsx(PickersYearRoot,_extends$u({className:clsx(bt.root,it),ownerState:nt},gt,{children:jsxRuntimeExports.jsx(PickersYearButton,{ref:yt,disabled:at,type:"button",role:"radio",tabIndex:at?-1:ct,"aria-current":mt,"aria-checked":st,onClick:vt=>ut(vt,lt),onKeyDown:vt=>ht(vt,lt),onFocus:vt=>dt(vt,lt),onBlur:vt=>pt(vt,lt),className:bt.yearButton,ownerState:nt,children:ot})}))});function getYearCalendarUtilityClass(tt){return generateUtilityClass("MuiYearCalendar",tt)}generateUtilityClasses("MuiYearCalendar",["root"]);const _excluded$p=["autoFocus","className","value","defaultValue","referenceDate","disabled","disableFuture","disablePast","maxDate","minDate","onChange","readOnly","shouldDisableYear","disableHighlightToday","onYearFocus","hasFocus","onFocusedViewChange","yearsPerRow","timezone","gridLabelId"],useUtilityClasses$3=tt=>{const{classes:et}=tt;return composeClasses({root:["root"]},getYearCalendarUtilityClass,et)};function useYearCalendarDefaultizedProps(tt,et){var nt;const rt=useUtils(),it=useDefaultDates(),ot=useThemeProps({props:tt,name:et});return _extends$u({disablePast:!1,disableFuture:!1},ot,{yearsPerRow:(nt=ot.yearsPerRow)!=null?nt:3,minDate:applyDefaultDate(rt,ot.minDate,it.minDate),maxDate:applyDefaultDate(rt,ot.maxDate,it.maxDate)})}const YearCalendarRoot=styled$1("div",{name:"MuiYearCalendar",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex",flexDirection:"row",flexWrap:"wrap",overflowY:"auto",height:"100%",padding:"0 4px",width:DIALOG_WIDTH,maxHeight:MAX_CALENDAR_HEIGHT,boxSizing:"border-box",position:"relative"}),YearCalendar=reactExports.forwardRef(function(et,nt){const rt=useYearCalendarDefaultizedProps(et,"MuiYearCalendar"),{autoFocus:it,className:ot,value:at,defaultValue:st,referenceDate:lt,disabled:ct,disableFuture:ut,disablePast:ht,maxDate:dt,minDate:pt,onChange:mt,readOnly:gt,shouldDisableYear:yt,disableHighlightToday:bt,onYearFocus:vt,hasFocus:xt,onFocusedViewChange:kt,yearsPerRow:St,timezone:Tt,gridLabelId:At}=rt,Et=_objectWithoutPropertiesLoose$m(rt,_excluded$p),{value:$t,handleValueChange:Dt,timezone:jt}=useControlledValueWithTimezone({name:"YearCalendar",timezone:Tt,value:at,defaultValue:st,onChange:mt,valueManager:singleItemValueManager}),Pt=useNow(jt),Ct=useTheme$2(),wt=useUtils(),It=reactExports.useMemo(()=>singleItemValueManager.getInitialReferenceValue({value:$t,utils:wt,props:rt,timezone:jt,referenceDate:lt,granularity:SECTION_TYPE_GRANULARITY.year}),[]),Ot=rt,Wt=useUtilityClasses$3(Ot),zt=reactExports.useMemo(()=>wt.getYear(Pt),[wt,Pt]),Ft=reactExports.useMemo(()=>$t!=null?wt.getYear($t):bt?null:wt.getYear(It),[$t,wt,bt,It]),[Nt,Ut]=reactExports.useState(()=>Ft||zt),[Mt,Ht]=useControlled({name:"YearCalendar",state:"hasFocus",controlled:xt,default:it??!1}),en=useEventCallback(_n=>{Ht(_n),kt&&kt(_n)}),sn=reactExports.useCallback(_n=>{if(ht&&wt.isBeforeYear(_n,Pt)||ut&&wt.isAfterYear(_n,Pt)||pt&&wt.isBeforeYear(_n,pt)||dt&&wt.isAfterYear(_n,dt))return!0;if(!yt)return!1;const Pn=wt.startOfYear(_n);return yt(Pn)},[ut,ht,dt,pt,Pt,yt,wt]),Kt=useEventCallback((_n,Pn)=>{if(gt)return;const $n=wt.setYear($t??It,Pn);Dt($n)}),rn=useEventCallback(_n=>{sn(wt.setYear($t??It,_n))||(Ut(_n),en(!0),vt==null||vt(_n))});reactExports.useEffect(()=>{Ut(_n=>Ft!==null&&_n!==Ft?Ft:_n)},[Ft]);const nn=useEventCallback((_n,Pn)=>{switch(_n.key){case"ArrowUp":rn(Pn-St),_n.preventDefault();break;case"ArrowDown":rn(Pn+St),_n.preventDefault();break;case"ArrowLeft":rn(Pn+(Ct.direction==="ltr"?-1:1)),_n.preventDefault();break;case"ArrowRight":rn(Pn+(Ct.direction==="ltr"?1:-1)),_n.preventDefault();break}}),hn=useEventCallback((_n,Pn)=>{rn(Pn)}),vn=useEventCallback((_n,Pn)=>{Nt===Pn&&en(!1)}),an=reactExports.useRef(null),Qt=useForkRef(nt,an);return reactExports.useEffect(()=>{if(it||an.current===null)return;const _n=an.current.querySelector('[tabindex="0"]');if(!_n)return;const Pn=_n.offsetHeight,$n=_n.offsetTop,Nn=an.current.clientHeight,Tn=an.current.scrollTop,cn=$n+Pn;Pn>Nn||$n{const Pn=wt.getYear(_n),$n=Pn===Ft,Nn=ct||sn(_n);return jsxRuntimeExports.jsx(PickersYear,{selected:$n,value:Pn,onClick:Kt,onKeyDown:nn,autoFocus:Mt&&Pn===Nt,disabled:Nn,tabIndex:Pn===Nt?0:-1,onFocus:hn,onBlur:vn,"aria-current":zt===Pn?"date":void 0,yearsPerRow:St,children:wt.format(_n,"year")},wt.format(_n,"year"))})}))}),getPickersCalendarHeaderUtilityClass=tt=>generateUtilityClass("MuiPickersCalendarHeader",tt),pickersCalendarHeaderClasses=generateUtilityClasses("MuiPickersCalendarHeader",["root","labelContainer","label","switchViewButton","switchViewIcon"]),_excluded$o=["slots","slotProps","currentMonth","disabled","disableFuture","disablePast","maxDate","minDate","onMonthChange","onViewChange","view","reduceAnimations","views","labelId","className","timezone"],_excluded2$7=["ownerState"],useUtilityClasses$2=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],labelContainer:["labelContainer"],label:["label"],switchViewButton:["switchViewButton"],switchViewIcon:["switchViewIcon"]},getPickersCalendarHeaderUtilityClass,et)},PickersCalendarHeaderRoot=styled$1("div",{name:"MuiPickersCalendarHeader",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex",alignItems:"center",marginTop:16,marginBottom:8,paddingLeft:24,paddingRight:12,maxHeight:30,minHeight:30}),PickersCalendarHeaderLabelContainer=styled$1("div",{name:"MuiPickersCalendarHeader",slot:"LabelContainer",overridesResolver:(tt,et)=>et.labelContainer})(({theme:tt})=>_extends$u({display:"flex",overflow:"hidden",alignItems:"center",cursor:"pointer",marginRight:"auto"},tt.typography.body1,{fontWeight:tt.typography.fontWeightMedium})),PickersCalendarHeaderLabel=styled$1("div",{name:"MuiPickersCalendarHeader",slot:"Label",overridesResolver:(tt,et)=>et.label})({marginRight:6}),PickersCalendarHeaderSwitchViewButton=styled$1(IconButton$2,{name:"MuiPickersCalendarHeader",slot:"SwitchViewButton",overridesResolver:(tt,et)=>et.switchViewButton})(({ownerState:tt})=>_extends$u({marginRight:"auto"},tt.view==="year"&&{[`.${pickersCalendarHeaderClasses.switchViewIcon}`]:{transform:"rotate(180deg)"}})),PickersCalendarHeaderSwitchViewIcon=styled$1(ArrowDropDownIcon,{name:"MuiPickersCalendarHeader",slot:"SwitchViewIcon",overridesResolver:(tt,et)=>et.switchViewIcon})(({theme:tt})=>({willChange:"transform",transition:tt.transitions.create("transform"),transform:"rotate(0deg)"})),PickersCalendarHeader=reactExports.forwardRef(function(et,nt){var rt,it;const ot=useLocaleText(),at=useUtils(),st=useThemeProps({props:et,name:"MuiPickersCalendarHeader"}),{slots:lt,slotProps:ct,currentMonth:ut,disabled:ht,disableFuture:dt,disablePast:pt,maxDate:mt,minDate:gt,onMonthChange:yt,onViewChange:bt,view:vt,reduceAnimations:xt,views:kt,labelId:St,className:Tt,timezone:At}=st,Et=_objectWithoutPropertiesLoose$m(st,_excluded$o),$t=st,Dt=useUtilityClasses$2(st),jt=(rt=lt==null?void 0:lt.switchViewButton)!=null?rt:PickersCalendarHeaderSwitchViewButton,Pt=useSlotProps({elementType:jt,externalSlotProps:ct==null?void 0:ct.switchViewButton,additionalProps:{size:"small","aria-label":ot.calendarViewSwitchingButtonAriaLabel(vt)},ownerState:$t,className:Dt.switchViewButton}),Ct=(it=lt==null?void 0:lt.switchViewIcon)!=null?it:PickersCalendarHeaderSwitchViewIcon,wt=useSlotProps({elementType:Ct,externalSlotProps:ct==null?void 0:ct.switchViewIcon,ownerState:void 0,className:Dt.switchViewIcon}),It=_objectWithoutPropertiesLoose$m(wt,_excluded2$7),Ot=()=>yt(at.addMonths(ut,1),"left"),Wt=()=>yt(at.addMonths(ut,-1),"right"),zt=useNextMonthDisabled(ut,{disableFuture:dt,maxDate:mt,timezone:At}),Ft=usePreviousMonthDisabled(ut,{disablePast:pt,minDate:gt,timezone:At}),Nt=()=>{if(!(kt.length===1||!bt||ht))if(kt.length===2)bt(kt.find(Ut=>Ut!==vt)||kt[0]);else{const Ut=kt.indexOf(vt)!==0?0:1;bt(kt[Ut])}};return kt.length===1&&kt[0]==="year"?null:jsxRuntimeExports.jsxs(PickersCalendarHeaderRoot,_extends$u({},Et,{ownerState:$t,className:clsx(Tt,Dt.root),ref:nt,children:[jsxRuntimeExports.jsxs(PickersCalendarHeaderLabelContainer,{role:"presentation",onClick:Nt,ownerState:$t,"aria-live":"polite",className:Dt.labelContainer,children:[jsxRuntimeExports.jsx(PickersFadeTransitionGroup,{reduceAnimations:xt,transKey:at.format(ut,"monthAndYear"),children:jsxRuntimeExports.jsx(PickersCalendarHeaderLabel,{id:St,ownerState:$t,className:Dt.label,children:at.format(ut,"monthAndYear")})}),kt.length>1&&!ht&&jsxRuntimeExports.jsx(jt,_extends$u({},Pt,{children:jsxRuntimeExports.jsx(Ct,_extends$u({},It))}))]}),jsxRuntimeExports.jsx(Fade$1,{in:vt==="day",children:jsxRuntimeExports.jsx(PickersArrowSwitcher,{slots:lt,slotProps:ct,onGoToPrevious:Wt,isPreviousDisabled:Ft,previousLabel:ot.previousMonth,onGoToNext:Ot,isNextDisabled:zt,nextLabel:ot.nextMonth})})]}))}),getDateCalendarUtilityClass=tt=>generateUtilityClass("MuiDateCalendar",tt);generateUtilityClasses("MuiDateCalendar",["root","viewTransitionContainer"]);const _excluded$n=["autoFocus","onViewChange","value","defaultValue","referenceDate","disableFuture","disablePast","defaultCalendarMonth","onChange","onYearChange","onMonthChange","reduceAnimations","shouldDisableDate","shouldDisableMonth","shouldDisableYear","view","views","openTo","className","disabled","readOnly","minDate","maxDate","disableHighlightToday","focusedView","onFocusedViewChange","showDaysOutsideCurrentMonth","fixedWeekNumber","dayOfWeekFormatter","components","componentsProps","slots","slotProps","loading","renderLoading","displayWeekNumber","yearsPerRow","monthsPerRow","timezone"],useUtilityClasses$1=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],viewTransitionContainer:["viewTransitionContainer"]},getDateCalendarUtilityClass,et)};function useDateCalendarDefaultizedProps(tt,et){var nt,rt,it,ot,at,st,lt;const ct=useUtils(),ut=useDefaultDates(),ht=useDefaultReduceAnimations(),dt=useThemeProps({props:tt,name:et});return _extends$u({},dt,{loading:(nt=dt.loading)!=null?nt:!1,disablePast:(rt=dt.disablePast)!=null?rt:!1,disableFuture:(it=dt.disableFuture)!=null?it:!1,openTo:(ot=dt.openTo)!=null?ot:"day",views:(at=dt.views)!=null?at:["year","day"],reduceAnimations:(st=dt.reduceAnimations)!=null?st:ht,renderLoading:(lt=dt.renderLoading)!=null?lt:()=>jsxRuntimeExports.jsx("span",{children:"..."}),minDate:applyDefaultDate(ct,dt.minDate,ut.minDate),maxDate:applyDefaultDate(ct,dt.maxDate,ut.maxDate)})}const DateCalendarRoot=styled$1(PickerViewRoot,{name:"MuiDateCalendar",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex",flexDirection:"column",height:VIEW_HEIGHT}),DateCalendarViewTransitionContainer=styled$1(PickersFadeTransitionGroup,{name:"MuiDateCalendar",slot:"ViewTransitionContainer",overridesResolver:(tt,et)=>et.viewTransitionContainer})({}),DateCalendar=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useUtils(),st=useId(),lt=useDateCalendarDefaultizedProps(et,"MuiDateCalendar"),{autoFocus:ct,onViewChange:ut,value:ht,defaultValue:dt,referenceDate:pt,disableFuture:mt,disablePast:gt,defaultCalendarMonth:yt,onChange:bt,onYearChange:vt,onMonthChange:xt,reduceAnimations:kt,shouldDisableDate:St,shouldDisableMonth:Tt,shouldDisableYear:At,view:Et,views:$t,openTo:Dt,className:jt,disabled:Pt,readOnly:Ct,minDate:wt,maxDate:It,disableHighlightToday:Ot,focusedView:Wt,onFocusedViewChange:zt,showDaysOutsideCurrentMonth:Ft,fixedWeekNumber:Nt,dayOfWeekFormatter:Ut,components:Mt,componentsProps:Ht,slots:en,slotProps:sn,loading:Kt,renderLoading:rn,displayWeekNumber:nn,yearsPerRow:hn,monthsPerRow:vn,timezone:an}=lt,Qt=_objectWithoutPropertiesLoose$m(lt,_excluded$n),{value:_n,handleValueChange:Pn,timezone:$n}=useControlledValueWithTimezone({name:"DateCalendar",timezone:an,value:ht,defaultValue:dt,onChange:bt,valueManager:singleItemValueManager}),{view:Nn,setView:Tn,focusedView:cn,setFocusedView:mn,goToNextView:In,setValueAndGoToNextView:An}=useViews({view:Et,views:$t,openTo:Dt,onChange:Pn,onViewChange:ut,autoFocus:ct,focusedView:Wt,onFocusedViewChange:zt}),{referenceDate:wn,calendarState:fn,changeFocusedDay:pn,changeMonth:kn,handleChangeMonth:Dn,isDateDisabled:un,onMonthSwitchingAnimationEnd:Zt}=useCalendarState({value:_n,defaultCalendarMonth:yt,referenceDate:pt,reduceAnimations:kt,onMonthChange:xt,minDate:wt,maxDate:It,shouldDisableDate:St,disablePast:gt,disableFuture:mt,timezone:$n}),Xt=Pt&&_n||wt,Sn=Pt&&_n||It,Rn=`${st}-grid-label`,jn=cn!==null,On=(rt=(it=en==null?void 0:en.calendarHeader)!=null?it:Mt==null?void 0:Mt.CalendarHeader)!=null?rt:PickersCalendarHeader,Zn=useSlotProps({elementType:On,externalSlotProps:(ot=sn==null?void 0:sn.calendarHeader)!=null?ot:Ht==null?void 0:Ht.calendarHeader,additionalProps:{views:$t,view:Nn,currentMonth:fn.currentMonth,onViewChange:Tn,onMonthChange:(Tr,Ar)=>Dn({newMonth:Tr,direction:Ar}),minDate:Xt,maxDate:Sn,disabled:Pt,disablePast:gt,disableFuture:mt,reduceAnimations:kt,timezone:$n,labelId:Rn,slots:en,slotProps:sn},ownerState:lt}),Vn=useEventCallback(Tr=>{const Ar=at.startOfMonth(Tr),qr=at.endOfMonth(Tr),jr=un(Tr)?findClosestEnabledDate({utils:at,date:Tr,minDate:at.isBefore(wt,Ar)?Ar:wt,maxDate:at.isAfter(It,qr)?qr:It,disablePast:gt,disableFuture:mt,isDateDisabled:un,timezone:$n}):Tr;jr?(An(jr,"finish"),xt==null||xt(Ar)):(In(),kn(Ar)),pn(jr,!0)}),qn=useEventCallback(Tr=>{const Ar=at.startOfYear(Tr),qr=at.endOfYear(Tr),jr=un(Tr)?findClosestEnabledDate({utils:at,date:Tr,minDate:at.isBefore(wt,Ar)?Ar:wt,maxDate:at.isAfter(It,qr)?qr:It,disablePast:gt,disableFuture:mt,isDateDisabled:un,timezone:$n}):Tr;jr?(An(jr,"finish"),vt==null||vt(jr)):(In(),kn(Ar)),pn(jr,!0)}),zn=useEventCallback(Tr=>Pn(Tr&&mergeDateAndTime(at,Tr,_n??wn),"finish"));reactExports.useEffect(()=>{_n!=null&&at.isValid(_n)&&kn(_n)},[_n]);const Jn=lt,Hn=useUtilityClasses$1(Jn),pr={disablePast:gt,disableFuture:mt,maxDate:It,minDate:wt},fr={disableHighlightToday:Ot,readOnly:Ct,disabled:Pt,timezone:$n,gridLabelId:Rn},xr=reactExports.useRef(Nn);reactExports.useEffect(()=>{xr.current!==Nn&&(cn===xr.current&&mn(Nn,!0),xr.current=Nn)},[cn,mn,Nn]);const io=reactExports.useMemo(()=>[_n],[_n]);return jsxRuntimeExports.jsxs(DateCalendarRoot,_extends$u({ref:nt,className:clsx(Hn.root,jt),ownerState:Jn},Qt,{children:[jsxRuntimeExports.jsx(On,_extends$u({},Zn)),jsxRuntimeExports.jsx(DateCalendarViewTransitionContainer,{reduceAnimations:kt,className:Hn.viewTransitionContainer,transKey:Nn,ownerState:Jn,children:jsxRuntimeExports.jsxs("div",{children:[Nn==="year"&&jsxRuntimeExports.jsx(YearCalendar,_extends$u({},pr,fr,{value:_n,onChange:qn,shouldDisableYear:At,hasFocus:jn,onFocusedViewChange:Tr=>mn("year",Tr),yearsPerRow:hn,referenceDate:wn})),Nn==="month"&&jsxRuntimeExports.jsx(MonthCalendar,_extends$u({},pr,fr,{hasFocus:jn,className:jt,value:_n,onChange:Vn,shouldDisableMonth:Tt,onFocusedViewChange:Tr=>mn("month",Tr),monthsPerRow:vn,referenceDate:wn})),Nn==="day"&&jsxRuntimeExports.jsx(DayCalendar,_extends$u({},fn,pr,fr,{onMonthSwitchingAnimationEnd:Zt,onFocusedDayChange:pn,reduceAnimations:kt,selectedDays:io,onSelectedDaysChange:zn,shouldDisableDate:St,shouldDisableMonth:Tt,shouldDisableYear:At,hasFocus:jn,onFocusedViewChange:Tr=>mn("day",Tr),showDaysOutsideCurrentMonth:Ft,fixedWeekNumber:Nt,dayOfWeekFormatter:Ut,displayWeekNumber:nn,components:Mt,componentsProps:Ht,slots:en,slotProps:sn,loading:Kt,renderLoading:rn}))]})})]}))});function getDatePickerToolbarUtilityClass(tt){return generateUtilityClass("MuiDatePickerToolbar",tt)}generateUtilityClasses("MuiDatePickerToolbar",["root","title"]);const _excluded$m=["value","isLandscape","onChange","toolbarFormat","toolbarPlaceholder","views"],useUtilityClasses=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],title:["title"]},getDatePickerToolbarUtilityClass,et)},DatePickerToolbarRoot=styled$1(PickersToolbar,{name:"MuiDatePickerToolbar",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),DatePickerToolbarTitle=styled$1(Typography$1,{name:"MuiDatePickerToolbar",slot:"Title",overridesResolver:(tt,et)=>et.title})(({ownerState:tt})=>_extends$u({},tt.isLandscape&&{margin:"auto 16px auto auto"})),DatePickerToolbar=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDatePickerToolbar"}),{value:it,isLandscape:ot,toolbarFormat:at,toolbarPlaceholder:st="––",views:lt}=rt,ct=_objectWithoutPropertiesLoose$m(rt,_excluded$m),ut=useUtils(),ht=useLocaleText(),dt=useUtilityClasses(rt),pt=reactExports.useMemo(()=>{if(!it)return st;const gt=resolveDateFormat(ut,{format:at,views:lt},!0);return ut.formatByString(it,gt)},[it,at,st,ut,lt]),mt=rt;return jsxRuntimeExports.jsx(DatePickerToolbarRoot,_extends$u({ref:nt,toolbarTitle:ht.datePickerToolbarTitle,isLandscape:ot,className:dt.root},ct,{children:jsxRuntimeExports.jsx(DatePickerToolbarTitle,{variant:"h4",align:ot?"left":"center",ownerState:mt,className:dt.title,children:pt})}))});function useDatePickerDefaultizedProps(tt,et){var nt,rt,it,ot;const at=useUtils(),st=useDefaultDates(),lt=useThemeProps({props:tt,name:et}),ct=reactExports.useMemo(()=>{var ht;return((ht=lt.localeText)==null?void 0:ht.toolbarTitle)==null?lt.localeText:_extends$u({},lt.localeText,{datePickerToolbarTitle:lt.localeText.toolbarTitle})},[lt.localeText]),ut=(nt=lt.slots)!=null?nt:uncapitalizeObjectKeys(lt.components);return _extends$u({},lt,{localeText:ct},applyDefaultViewProps({views:lt.views,openTo:lt.openTo,defaultViews:["year","day"],defaultOpenTo:"day"}),{disableFuture:(rt=lt.disableFuture)!=null?rt:!1,disablePast:(it=lt.disablePast)!=null?it:!1,minDate:applyDefaultDate(at,lt.minDate,st.minDate),maxDate:applyDefaultDate(at,lt.maxDate,st.maxDate),slots:_extends$u({toolbar:DatePickerToolbar},ut),slotProps:(ot=lt.slotProps)!=null?ot:lt.componentsProps})}const _excluded$l=["props","getOpenDialogAriaText"],_excluded2$6=["ownerState"],_excluded3$1=["ownerState"],useDesktopPicker=tt=>{var et,nt,rt,it,ot;let{props:at,getOpenDialogAriaText:st}=tt,lt=_objectWithoutPropertiesLoose$m(tt,_excluded$l);const{slots:ct,slotProps:ut,className:ht,sx:dt,format:pt,formatDensity:mt,timezone:gt,label:yt,inputRef:bt,readOnly:vt,disabled:xt,autoFocus:kt,localeText:St,reduceAnimations:Tt}=at,At=useUtils(),Et=reactExports.useRef(null),$t=reactExports.useRef(null),Dt=useId(),jt=(et=ut==null||(nt=ut.toolbar)==null?void 0:nt.hidden)!=null?et:!1,{open:Pt,actions:Ct,hasUIView:wt,layoutProps:It,renderCurrentView:Ot,shouldRestoreFocus:Wt,fieldProps:zt}=usePicker(_extends$u({},lt,{props:at,inputRef:Et,autoFocusView:!0,additionalViewProps:{},wrapperVariant:"desktop"})),Ft=(rt=ct.inputAdornment)!=null?rt:MuiInputAdornment,Nt=useSlotProps({elementType:Ft,externalSlotProps:ut==null?void 0:ut.inputAdornment,additionalProps:{position:"end"},ownerState:at}),Ut=_objectWithoutPropertiesLoose$m(Nt,_excluded2$6),Mt=(it=ct.openPickerButton)!=null?it:IconButton$2,Ht=useSlotProps({elementType:Mt,externalSlotProps:ut==null?void 0:ut.openPickerButton,additionalProps:{disabled:xt||vt,onClick:Pt?Ct.onClose:Ct.onOpen,"aria-label":st(zt.value,At),edge:Ut.position},ownerState:at}),en=_objectWithoutPropertiesLoose$m(Ht,_excluded3$1),sn=ct.openPickerIcon,Kt=ct.field,rn=useSlotProps({elementType:Kt,externalSlotProps:ut==null?void 0:ut.field,additionalProps:_extends$u({},zt,jt&&{id:Dt},{readOnly:vt,disabled:xt,className:ht,sx:dt,format:pt,formatDensity:mt,timezone:gt,label:yt,autoFocus:kt&&!at.open,focused:Pt?!0:void 0}),ownerState:at});wt&&(rn.InputProps=_extends$u({},rn.InputProps,{ref:$t,[`${Ut.position}Adornment`]:jsxRuntimeExports.jsx(Ft,_extends$u({},Ut,{children:jsxRuntimeExports.jsx(Mt,_extends$u({},en,{children:jsxRuntimeExports.jsx(sn,_extends$u({},ut==null?void 0:ut.openPickerIcon))}))}))}));const nn=_extends$u({textField:ct.textField,clearIcon:ct.clearIcon,clearButton:ct.clearButton},rn.slots),hn=(ot=ct.layout)!=null?ot:PickersLayout,vn=useForkRef(Et,rn.inputRef,bt);let an=Dt;jt&&(yt?an=`${Dt}-label`:an=void 0);const Qt=_extends$u({},ut,{toolbar:_extends$u({},ut==null?void 0:ut.toolbar,{titleId:Dt}),popper:_extends$u({"aria-labelledby":an},ut==null?void 0:ut.popper)});return{renderPicker:()=>jsxRuntimeExports.jsxs(LocalizationProvider,{localeText:St,children:[jsxRuntimeExports.jsx(Kt,_extends$u({},rn,{slots:nn,slotProps:Qt,inputRef:vn})),jsxRuntimeExports.jsx(PickersPopper,_extends$u({role:"dialog",placement:"bottom-start",anchorEl:$t.current},Ct,{open:Pt,slots:ct,slotProps:Qt,shouldRestoreFocus:Wt,reduceAnimations:Tt,children:jsxRuntimeExports.jsx(hn,_extends$u({},It,Qt==null?void 0:Qt.layout,{slots:ct,slotProps:Qt,children:Ot()}))}))]})}},renderDateViewCalendar=({view:tt,onViewChange:et,views:nt,focusedView:rt,onFocusedViewChange:it,value:ot,defaultValue:at,referenceDate:st,onChange:lt,className:ct,classes:ut,disableFuture:ht,disablePast:dt,minDate:pt,maxDate:mt,shouldDisableDate:gt,shouldDisableMonth:yt,shouldDisableYear:bt,reduceAnimations:vt,onMonthChange:xt,monthsPerRow:kt,onYearChange:St,yearsPerRow:Tt,defaultCalendarMonth:At,components:Et,componentsProps:$t,slots:Dt,slotProps:jt,loading:Pt,renderLoading:Ct,disableHighlightToday:wt,readOnly:It,disabled:Ot,showDaysOutsideCurrentMonth:Wt,dayOfWeekFormatter:zt,sx:Ft,autoFocus:Nt,fixedWeekNumber:Ut,displayWeekNumber:Mt,timezone:Ht})=>jsxRuntimeExports.jsx(DateCalendar,{view:tt,onViewChange:et,views:nt.filter(isDatePickerView),focusedView:rt&&isDatePickerView(rt)?rt:null,onFocusedViewChange:it,value:ot,defaultValue:at,referenceDate:st,onChange:lt,className:ct,classes:ut,disableFuture:ht,disablePast:dt,minDate:pt,maxDate:mt,shouldDisableDate:gt,shouldDisableMonth:yt,shouldDisableYear:bt,reduceAnimations:vt,onMonthChange:xt,monthsPerRow:kt,onYearChange:St,yearsPerRow:Tt,defaultCalendarMonth:At,components:Et,componentsProps:$t,slots:Dt,slotProps:jt,loading:Pt,renderLoading:Ct,disableHighlightToday:wt,readOnly:It,disabled:Ot,showDaysOutsideCurrentMonth:Wt,dayOfWeekFormatter:zt,sx:Ft,autoFocus:Nt,fixedWeekNumber:Ut,displayWeekNumber:Mt,timezone:Ht}),DesktopDatePicker=reactExports.forwardRef(function(et,nt){var rt,it,ot,at;const st=useLocaleText(),lt=useUtils(),ct=useDatePickerDefaultizedProps(et,"MuiDesktopDatePicker"),ut=_extends$u({day:renderDateViewCalendar,month:renderDateViewCalendar,year:renderDateViewCalendar},ct.viewRenderers),ht=_extends$u({},ct,{viewRenderers:ut,format:resolveDateFormat(lt,ct,!1),yearsPerRow:(rt=ct.yearsPerRow)!=null?rt:4,slots:_extends$u({openPickerIcon:CalendarIcon,field:DateField},ct.slots),slotProps:_extends$u({},ct.slotProps,{field:pt=>{var mt;return _extends$u({},resolveComponentProps((mt=ct.slotProps)==null?void 0:mt.field,pt),extractValidationProps(ct),{ref:nt})},toolbar:_extends$u({hidden:!0},(it=ct.slotProps)==null?void 0:it.toolbar)})}),{renderPicker:dt}=useDesktopPicker({props:ht,valueManager:singleItemValueManager,valueType:"date",getOpenDialogAriaText:(ot=(at=ht.localeText)==null?void 0:at.openDatePickerDialogue)!=null?ot:st.openDatePickerDialogue,validator:validateDate});return dt()});DesktopDatePicker.propTypes={autoFocus:PropTypes.bool,className:PropTypes.string,closeOnSelect:PropTypes.bool,components:PropTypes.object,componentsProps:PropTypes.object,dayOfWeekFormatter:PropTypes.func,defaultCalendarMonth:PropTypes.any,defaultValue:PropTypes.any,disabled:PropTypes.bool,disableFuture:PropTypes.bool,disableHighlightToday:PropTypes.bool,disableOpenPicker:PropTypes.bool,disablePast:PropTypes.bool,displayWeekNumber:PropTypes.bool,fixedWeekNumber:PropTypes.number,format:PropTypes.string,formatDensity:PropTypes.oneOf(["dense","spacious"]),inputRef:refType$1,label:PropTypes.node,loading:PropTypes.bool,localeText:PropTypes.object,maxDate:PropTypes.any,minDate:PropTypes.any,monthsPerRow:PropTypes.oneOf([3,4]),onAccept:PropTypes.func,onChange:PropTypes.func,onClose:PropTypes.func,onError:PropTypes.func,onMonthChange:PropTypes.func,onOpen:PropTypes.func,onSelectedSectionsChange:PropTypes.func,onViewChange:PropTypes.func,onYearChange:PropTypes.func,open:PropTypes.bool,openTo:PropTypes.oneOf(["day","month","year"]),orientation:PropTypes.oneOf(["landscape","portrait"]),readOnly:PropTypes.bool,reduceAnimations:PropTypes.bool,referenceDate:PropTypes.any,renderLoading:PropTypes.func,selectedSections:PropTypes.oneOfType([PropTypes.oneOf(["all","day","hours","meridiem","minutes","month","seconds","weekDay","year"]),PropTypes.number,PropTypes.shape({endIndex:PropTypes.number.isRequired,startIndex:PropTypes.number.isRequired})]),shouldDisableDate:PropTypes.func,shouldDisableMonth:PropTypes.func,shouldDisableYear:PropTypes.func,showDaysOutsideCurrentMonth:PropTypes.bool,slotProps:PropTypes.object,slots:PropTypes.object,sx:PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func,PropTypes.object,PropTypes.bool])),PropTypes.func,PropTypes.object]),timezone:PropTypes.string,value:PropTypes.any,view:PropTypes.oneOf(["day","month","year"]),viewRenderers:PropTypes.shape({day:PropTypes.func,month:PropTypes.func,year:PropTypes.func}),views:PropTypes.arrayOf(PropTypes.oneOf(["day","month","year"]).isRequired),yearsPerRow:PropTypes.oneOf([3,4])};const _excluded$k=["props","getOpenDialogAriaText"],useMobilePicker=tt=>{var et,nt,rt;let{props:it,getOpenDialogAriaText:ot}=tt,at=_objectWithoutPropertiesLoose$m(tt,_excluded$k);const{slots:st,slotProps:lt,className:ct,sx:ut,format:ht,formatDensity:dt,timezone:pt,label:mt,inputRef:gt,readOnly:yt,disabled:bt,localeText:vt}=it,xt=useUtils(),kt=reactExports.useRef(null),St=useId(),Tt=(et=lt==null||(nt=lt.toolbar)==null?void 0:nt.hidden)!=null?et:!1,{open:At,actions:Et,layoutProps:$t,renderCurrentView:Dt,fieldProps:jt}=usePicker(_extends$u({},at,{props:it,inputRef:kt,autoFocusView:!0,additionalViewProps:{},wrapperVariant:"mobile"})),Pt=st.field,Ct=useSlotProps({elementType:Pt,externalSlotProps:lt==null?void 0:lt.field,additionalProps:_extends$u({},jt,Tt&&{id:St},!(bt||yt)&&{onClick:Et.onOpen,onKeyDown:onSpaceOrEnter(Et.onOpen)},{readOnly:yt??!0,disabled:bt,className:ct,sx:ut,format:ht,formatDensity:dt,timezone:pt,label:mt}),ownerState:it});Ct.inputProps=_extends$u({},Ct.inputProps,{"aria-label":ot(jt.value,xt)});const wt=_extends$u({textField:st.textField},Ct.slots),It=(rt=st.layout)!=null?rt:PickersLayout,Ot=useForkRef(kt,Ct.inputRef,gt);let Wt=St;Tt&&(mt?Wt=`${St}-label`:Wt=void 0);const zt=_extends$u({},lt,{toolbar:_extends$u({},lt==null?void 0:lt.toolbar,{titleId:St}),mobilePaper:_extends$u({"aria-labelledby":Wt},lt==null?void 0:lt.mobilePaper)});return{renderPicker:()=>jsxRuntimeExports.jsxs(LocalizationProvider,{localeText:vt,children:[jsxRuntimeExports.jsx(Pt,_extends$u({},Ct,{slots:wt,slotProps:zt,inputRef:Ot})),jsxRuntimeExports.jsx(PickersModalDialog,_extends$u({},Et,{open:At,slots:st,slotProps:zt,children:jsxRuntimeExports.jsx(It,_extends$u({},$t,zt==null?void 0:zt.layout,{slots:st,slotProps:zt,children:Dt()}))}))]})}},MobileDatePicker=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useLocaleText(),st=useUtils(),lt=useDatePickerDefaultizedProps(et,"MuiMobileDatePicker"),ct=_extends$u({day:renderDateViewCalendar,month:renderDateViewCalendar,year:renderDateViewCalendar},lt.viewRenderers),ut=_extends$u({},lt,{viewRenderers:ct,format:resolveDateFormat(st,lt,!1),slots:_extends$u({field:DateField},lt.slots),slotProps:_extends$u({},lt.slotProps,{field:dt=>{var pt;return _extends$u({},resolveComponentProps((pt=lt.slotProps)==null?void 0:pt.field,dt),extractValidationProps(lt),{ref:nt})},toolbar:_extends$u({hidden:!1},(rt=lt.slotProps)==null?void 0:rt.toolbar)})}),{renderPicker:ht}=useMobilePicker({props:ut,valueManager:singleItemValueManager,valueType:"date",getOpenDialogAriaText:(it=(ot=ut.localeText)==null?void 0:ot.openDatePickerDialogue)!=null?it:at.openDatePickerDialogue,validator:validateDate});return ht()});MobileDatePicker.propTypes={autoFocus:PropTypes.bool,className:PropTypes.string,closeOnSelect:PropTypes.bool,components:PropTypes.object,componentsProps:PropTypes.object,dayOfWeekFormatter:PropTypes.func,defaultCalendarMonth:PropTypes.any,defaultValue:PropTypes.any,disabled:PropTypes.bool,disableFuture:PropTypes.bool,disableHighlightToday:PropTypes.bool,disableOpenPicker:PropTypes.bool,disablePast:PropTypes.bool,displayWeekNumber:PropTypes.bool,fixedWeekNumber:PropTypes.number,format:PropTypes.string,formatDensity:PropTypes.oneOf(["dense","spacious"]),inputRef:refType$1,label:PropTypes.node,loading:PropTypes.bool,localeText:PropTypes.object,maxDate:PropTypes.any,minDate:PropTypes.any,monthsPerRow:PropTypes.oneOf([3,4]),onAccept:PropTypes.func,onChange:PropTypes.func,onClose:PropTypes.func,onError:PropTypes.func,onMonthChange:PropTypes.func,onOpen:PropTypes.func,onSelectedSectionsChange:PropTypes.func,onViewChange:PropTypes.func,onYearChange:PropTypes.func,open:PropTypes.bool,openTo:PropTypes.oneOf(["day","month","year"]),orientation:PropTypes.oneOf(["landscape","portrait"]),readOnly:PropTypes.bool,reduceAnimations:PropTypes.bool,referenceDate:PropTypes.any,renderLoading:PropTypes.func,selectedSections:PropTypes.oneOfType([PropTypes.oneOf(["all","day","hours","meridiem","minutes","month","seconds","weekDay","year"]),PropTypes.number,PropTypes.shape({endIndex:PropTypes.number.isRequired,startIndex:PropTypes.number.isRequired})]),shouldDisableDate:PropTypes.func,shouldDisableMonth:PropTypes.func,shouldDisableYear:PropTypes.func,showDaysOutsideCurrentMonth:PropTypes.bool,slotProps:PropTypes.object,slots:PropTypes.object,sx:PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func,PropTypes.object,PropTypes.bool])),PropTypes.func,PropTypes.object]),timezone:PropTypes.string,value:PropTypes.any,view:PropTypes.oneOf(["day","month","year"]),viewRenderers:PropTypes.shape({day:PropTypes.func,month:PropTypes.func,year:PropTypes.func}),views:PropTypes.arrayOf(PropTypes.oneOf(["day","month","year"]).isRequired),yearsPerRow:PropTypes.oneOf([3,4])};const _excluded$j=["desktopModeMediaQuery"],DatePicker=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDatePicker"}),{desktopModeMediaQuery:it=DEFAULT_DESKTOP_MODE_MEDIA_QUERY}=rt,ot=_objectWithoutPropertiesLoose$m(rt,_excluded$j);return useMediaQuery(it,{defaultMatches:!0})?jsxRuntimeExports.jsx(DesktopDatePicker,_extends$u({ref:nt},ot)):jsxRuntimeExports.jsx(MobileDatePicker,_extends$u({ref:nt},ot))});//! moment.js -//! version : 2.29.4 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com -var hookCallback;function hooks(){return hookCallback.apply(null,arguments)}function setHookCallback(tt){hookCallback=tt}function isArray$d(tt){return tt instanceof Array||Object.prototype.toString.call(tt)==="[object Array]"}function isObject$6(tt){return tt!=null&&Object.prototype.toString.call(tt)==="[object Object]"}function hasOwnProp(tt,et){return Object.prototype.hasOwnProperty.call(tt,et)}function isObjectEmpty(tt){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(tt).length===0;var et;for(et in tt)if(hasOwnProp(tt,et))return!1;return!0}function isUndefined(tt){return tt===void 0}function isNumber$3(tt){return typeof tt=="number"||Object.prototype.toString.call(tt)==="[object Number]"}function isDate(tt){return tt instanceof Date||Object.prototype.toString.call(tt)==="[object Date]"}function map$5(tt,et){var nt=[],rt,it=tt.length;for(rt=0;rt>>0,rt;for(rt=0;rt0)for(nt=0;nt=0;return(ot?nt?"+":"":"-")+Math.pow(10,Math.max(0,it)).toString().substr(1)+rt}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};function addFormatToken(tt,et,nt,rt){var it=rt;typeof rt=="string"&&(it=function(){return this[rt]()}),tt&&(formatTokenFunctions[tt]=it),et&&(formatTokenFunctions[et[0]]=function(){return zeroFill(it.apply(this,arguments),et[1],et[2])}),nt&&(formatTokenFunctions[nt]=function(){return this.localeData().ordinal(it.apply(this,arguments),tt)})}function removeFormattingTokens(tt){return tt.match(/\[[\s\S]/)?tt.replace(/^\[|\]$/g,""):tt.replace(/\\/g,"")}function makeFormatFunction(tt){var et=tt.match(formattingTokens),nt,rt;for(nt=0,rt=et.length;nt=0&&localFormattingTokens.test(tt);)tt=tt.replace(localFormattingTokens,rt),localFormattingTokens.lastIndex=0,nt-=1;return tt}var defaultLongDateFormat={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function longDateFormat(tt){var et=this._longDateFormat[tt],nt=this._longDateFormat[tt.toUpperCase()];return et||!nt?et:(this._longDateFormat[tt]=nt.match(formattingTokens).map(function(rt){return rt==="MMMM"||rt==="MM"||rt==="DD"||rt==="dddd"?rt.slice(1):rt}).join(""),this._longDateFormat[tt])}var defaultInvalidDate="Invalid date";function invalidDate(){return this._invalidDate}var defaultOrdinal="%d",defaultDayOfMonthOrdinalParse=/\d{1,2}/;function ordinal$1(tt){return this._ordinal.replace("%d",tt)}var defaultRelativeTime={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function relativeTime(tt,et,nt,rt){var it=this._relativeTime[nt];return isFunction$1(it)?it(tt,et,nt,rt):it.replace(/%d/i,tt)}function pastFuture(tt,et){var nt=this._relativeTime[tt>0?"future":"past"];return isFunction$1(nt)?nt(et):nt.replace(/%s/i,et)}var aliases={};function addUnitAlias(tt,et){var nt=tt.toLowerCase();aliases[nt]=aliases[nt+"s"]=aliases[et]=tt}function normalizeUnits(tt){return typeof tt=="string"?aliases[tt]||aliases[tt.toLowerCase()]:void 0}function normalizeObjectUnits(tt){var et={},nt,rt;for(rt in tt)hasOwnProp(tt,rt)&&(nt=normalizeUnits(rt),nt&&(et[nt]=tt[rt]));return et}var priorities={};function addUnitPriority(tt,et){priorities[tt]=et}function getPrioritizedUnits(tt){var et=[],nt;for(nt in tt)hasOwnProp(tt,nt)&&et.push({unit:nt,priority:priorities[nt]});return et.sort(function(rt,it){return rt.priority-it.priority}),et}function isLeapYear(tt){return tt%4===0&&tt%100!==0||tt%400===0}function absFloor(tt){return tt<0?Math.ceil(tt)||0:Math.floor(tt)}function toInt(tt){var et=+tt,nt=0;return et!==0&&isFinite(et)&&(nt=absFloor(et)),nt}function makeGetSet(tt,et){return function(nt){return nt!=null?(set$1$1(this,tt,nt),hooks.updateOffset(this,et),this):get$3(this,tt)}}function get$3(tt,et){return tt.isValid()?tt._d["get"+(tt._isUTC?"UTC":"")+et]():NaN}function set$1$1(tt,et,nt){tt.isValid()&&!isNaN(nt)&&(et==="FullYear"&&isLeapYear(tt.year())&&tt.month()===1&&tt.date()===29?(nt=toInt(nt),tt._d["set"+(tt._isUTC?"UTC":"")+et](nt,tt.month(),daysInMonth(nt,tt.month()))):tt._d["set"+(tt._isUTC?"UTC":"")+et](nt))}function stringGet(tt){return tt=normalizeUnits(tt),isFunction$1(this[tt])?this[tt]():this}function stringSet(tt,et){if(typeof tt=="object"){tt=normalizeObjectUnits(tt);var nt=getPrioritizedUnits(tt),rt,it=nt.length;for(rt=0;rt68?1900:2e3)};var getSetYear=makeGetSet("FullYear",!0);function getIsLeapYear(){return isLeapYear(this.year())}function createDate(tt,et,nt,rt,it,ot,at){var st;return tt<100&&tt>=0?(st=new Date(tt+400,et,nt,rt,it,ot,at),isFinite(st.getFullYear())&&st.setFullYear(tt)):st=new Date(tt,et,nt,rt,it,ot,at),st}function createUTCDate(tt){var et,nt;return tt<100&&tt>=0?(nt=Array.prototype.slice.call(arguments),nt[0]=tt+400,et=new Date(Date.UTC.apply(null,nt)),isFinite(et.getUTCFullYear())&&et.setUTCFullYear(tt)):et=new Date(Date.UTC.apply(null,arguments)),et}function firstWeekOffset(tt,et,nt){var rt=7+et-nt,it=(7+createUTCDate(tt,0,rt).getUTCDay()-et)%7;return-it+rt-1}function dayOfYearFromWeeks(tt,et,nt,rt,it){var ot=(7+nt-rt)%7,at=firstWeekOffset(tt,rt,it),st=1+7*(et-1)+ot+at,lt,ct;return st<=0?(lt=tt-1,ct=daysInYear(lt)+st):st>daysInYear(tt)?(lt=tt+1,ct=st-daysInYear(tt)):(lt=tt,ct=st),{year:lt,dayOfYear:ct}}function weekOfYear(tt,et,nt){var rt=firstWeekOffset(tt.year(),et,nt),it=Math.floor((tt.dayOfYear()-rt-1)/7)+1,ot,at;return it<1?(at=tt.year()-1,ot=it+weeksInYear(at,et,nt)):it>weeksInYear(tt.year(),et,nt)?(ot=it-weeksInYear(tt.year(),et,nt),at=tt.year()+1):(at=tt.year(),ot=it),{week:ot,year:at}}function weeksInYear(tt,et,nt){var rt=firstWeekOffset(tt,et,nt),it=firstWeekOffset(tt+1,et,nt);return(daysInYear(tt)-rt+it)/7}addFormatToken("w",["ww",2],"wo","week");addFormatToken("W",["WW",2],"Wo","isoWeek");addUnitAlias("week","w");addUnitAlias("isoWeek","W");addUnitPriority("week",5);addUnitPriority("isoWeek",5);addRegexToken("w",match1to2);addRegexToken("ww",match1to2,match2);addRegexToken("W",match1to2);addRegexToken("WW",match1to2,match2);addWeekParseToken(["w","ww","W","WW"],function(tt,et,nt,rt){et[rt.substr(0,1)]=toInt(tt)});function localeWeek(tt){return weekOfYear(tt,this._week.dow,this._week.doy).week}var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow}function localeFirstDayOfYear(){return this._week.doy}function getSetWeek(tt){var et=this.localeData().week(this);return tt==null?et:this.add((tt-et)*7,"d")}function getSetISOWeek(tt){var et=weekOfYear(this,1,4).week;return tt==null?et:this.add((tt-et)*7,"d")}addFormatToken("d",0,"do","day");addFormatToken("dd",0,0,function(tt){return this.localeData().weekdaysMin(this,tt)});addFormatToken("ddd",0,0,function(tt){return this.localeData().weekdaysShort(this,tt)});addFormatToken("dddd",0,0,function(tt){return this.localeData().weekdays(this,tt)});addFormatToken("e",0,0,"weekday");addFormatToken("E",0,0,"isoWeekday");addUnitAlias("day","d");addUnitAlias("weekday","e");addUnitAlias("isoWeekday","E");addUnitPriority("day",11);addUnitPriority("weekday",11);addUnitPriority("isoWeekday",11);addRegexToken("d",match1to2);addRegexToken("e",match1to2);addRegexToken("E",match1to2);addRegexToken("dd",function(tt,et){return et.weekdaysMinRegex(tt)});addRegexToken("ddd",function(tt,et){return et.weekdaysShortRegex(tt)});addRegexToken("dddd",function(tt,et){return et.weekdaysRegex(tt)});addWeekParseToken(["dd","ddd","dddd"],function(tt,et,nt,rt){var it=nt._locale.weekdaysParse(tt,rt,nt._strict);it!=null?et.d=it:getParsingFlags(nt).invalidWeekday=tt});addWeekParseToken(["d","e","E"],function(tt,et,nt,rt){et[rt]=toInt(tt)});function parseWeekday(tt,et){return typeof tt!="string"?tt:isNaN(tt)?(tt=et.weekdaysParse(tt),typeof tt=="number"?tt:null):parseInt(tt,10)}function parseIsoWeekday(tt,et){return typeof tt=="string"?et.weekdaysParse(tt)%7||7:isNaN(tt)?null:tt}function shiftWeekdays(tt,et){return tt.slice(et,7).concat(tt.slice(0,et))}var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),defaultWeekdaysRegex=matchWord,defaultWeekdaysShortRegex=matchWord,defaultWeekdaysMinRegex=matchWord;function localeWeekdays(tt,et){var nt=isArray$d(this._weekdays)?this._weekdays:this._weekdays[tt&&tt!==!0&&this._weekdays.isFormat.test(et)?"format":"standalone"];return tt===!0?shiftWeekdays(nt,this._week.dow):tt?nt[tt.day()]:nt}function localeWeekdaysShort(tt){return tt===!0?shiftWeekdays(this._weekdaysShort,this._week.dow):tt?this._weekdaysShort[tt.day()]:this._weekdaysShort}function localeWeekdaysMin(tt){return tt===!0?shiftWeekdays(this._weekdaysMin,this._week.dow):tt?this._weekdaysMin[tt.day()]:this._weekdaysMin}function handleStrictParse$1(tt,et,nt){var rt,it,ot,at=tt.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],rt=0;rt<7;++rt)ot=createUTC([2e3,1]).day(rt),this._minWeekdaysParse[rt]=this.weekdaysMin(ot,"").toLocaleLowerCase(),this._shortWeekdaysParse[rt]=this.weekdaysShort(ot,"").toLocaleLowerCase(),this._weekdaysParse[rt]=this.weekdays(ot,"").toLocaleLowerCase();return nt?et==="dddd"?(it=indexOf.call(this._weekdaysParse,at),it!==-1?it:null):et==="ddd"?(it=indexOf.call(this._shortWeekdaysParse,at),it!==-1?it:null):(it=indexOf.call(this._minWeekdaysParse,at),it!==-1?it:null):et==="dddd"?(it=indexOf.call(this._weekdaysParse,at),it!==-1||(it=indexOf.call(this._shortWeekdaysParse,at),it!==-1)?it:(it=indexOf.call(this._minWeekdaysParse,at),it!==-1?it:null)):et==="ddd"?(it=indexOf.call(this._shortWeekdaysParse,at),it!==-1||(it=indexOf.call(this._weekdaysParse,at),it!==-1)?it:(it=indexOf.call(this._minWeekdaysParse,at),it!==-1?it:null)):(it=indexOf.call(this._minWeekdaysParse,at),it!==-1||(it=indexOf.call(this._weekdaysParse,at),it!==-1)?it:(it=indexOf.call(this._shortWeekdaysParse,at),it!==-1?it:null))}function localeWeekdaysParse(tt,et,nt){var rt,it,ot;if(this._weekdaysParseExact)return handleStrictParse$1.call(this,tt,et,nt);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),rt=0;rt<7;rt++){if(it=createUTC([2e3,1]).day(rt),nt&&!this._fullWeekdaysParse[rt]&&(this._fullWeekdaysParse[rt]=new RegExp("^"+this.weekdays(it,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[rt]=new RegExp("^"+this.weekdaysShort(it,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[rt]=new RegExp("^"+this.weekdaysMin(it,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[rt]||(ot="^"+this.weekdays(it,"")+"|^"+this.weekdaysShort(it,"")+"|^"+this.weekdaysMin(it,""),this._weekdaysParse[rt]=new RegExp(ot.replace(".",""),"i")),nt&&et==="dddd"&&this._fullWeekdaysParse[rt].test(tt))return rt;if(nt&&et==="ddd"&&this._shortWeekdaysParse[rt].test(tt))return rt;if(nt&&et==="dd"&&this._minWeekdaysParse[rt].test(tt))return rt;if(!nt&&this._weekdaysParse[rt].test(tt))return rt}}function getSetDayOfWeek(tt){if(!this.isValid())return tt!=null?this:NaN;var et=this._isUTC?this._d.getUTCDay():this._d.getDay();return tt!=null?(tt=parseWeekday(tt,this.localeData()),this.add(tt-et,"d")):et}function getSetLocaleDayOfWeek(tt){if(!this.isValid())return tt!=null?this:NaN;var et=(this.day()+7-this.localeData()._week.dow)%7;return tt==null?et:this.add(tt-et,"d")}function getSetISODayOfWeek(tt){if(!this.isValid())return tt!=null?this:NaN;if(tt!=null){var et=parseIsoWeekday(tt,this.localeData());return this.day(this.day()%7?et:et-7)}else return this.day()||7}function weekdaysRegex(tt){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),tt?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=defaultWeekdaysRegex),this._weekdaysStrictRegex&&tt?this._weekdaysStrictRegex:this._weekdaysRegex)}function weekdaysShortRegex(tt){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),tt?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=defaultWeekdaysShortRegex),this._weekdaysShortStrictRegex&&tt?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function weekdaysMinRegex(tt){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),tt?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=defaultWeekdaysMinRegex),this._weekdaysMinStrictRegex&&tt?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function computeWeekdaysParse(){function tt(ut,ht){return ht.length-ut.length}var et=[],nt=[],rt=[],it=[],ot,at,st,lt,ct;for(ot=0;ot<7;ot++)at=createUTC([2e3,1]).day(ot),st=regexEscape(this.weekdaysMin(at,"")),lt=regexEscape(this.weekdaysShort(at,"")),ct=regexEscape(this.weekdays(at,"")),et.push(st),nt.push(lt),rt.push(ct),it.push(st),it.push(lt),it.push(ct);et.sort(tt),nt.sort(tt),rt.sort(tt),it.sort(tt),this._weekdaysRegex=new RegExp("^("+it.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+rt.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+nt.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+et.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function kFormat(){return this.hours()||24}addFormatToken("H",["HH",2],0,"hour");addFormatToken("h",["hh",2],0,hFormat);addFormatToken("k",["kk",2],0,kFormat);addFormatToken("hmm",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)});addFormatToken("hmmss",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)});addFormatToken("Hmm",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)});addFormatToken("Hmmss",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)});function meridiem(tt,et){addFormatToken(tt,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),et)})}meridiem("a",!0);meridiem("A",!1);addUnitAlias("hour","h");addUnitPriority("hour",13);function matchMeridiem(tt,et){return et._meridiemParse}addRegexToken("a",matchMeridiem);addRegexToken("A",matchMeridiem);addRegexToken("H",match1to2);addRegexToken("h",match1to2);addRegexToken("k",match1to2);addRegexToken("HH",match1to2,match2);addRegexToken("hh",match1to2,match2);addRegexToken("kk",match1to2,match2);addRegexToken("hmm",match3to4);addRegexToken("hmmss",match5to6);addRegexToken("Hmm",match3to4);addRegexToken("Hmmss",match5to6);addParseToken(["H","HH"],HOUR);addParseToken(["k","kk"],function(tt,et,nt){var rt=toInt(tt);et[HOUR]=rt===24?0:rt});addParseToken(["a","A"],function(tt,et,nt){nt._isPm=nt._locale.isPM(tt),nt._meridiem=tt});addParseToken(["h","hh"],function(tt,et,nt){et[HOUR]=toInt(tt),getParsingFlags(nt).bigHour=!0});addParseToken("hmm",function(tt,et,nt){var rt=tt.length-2;et[HOUR]=toInt(tt.substr(0,rt)),et[MINUTE]=toInt(tt.substr(rt)),getParsingFlags(nt).bigHour=!0});addParseToken("hmmss",function(tt,et,nt){var rt=tt.length-4,it=tt.length-2;et[HOUR]=toInt(tt.substr(0,rt)),et[MINUTE]=toInt(tt.substr(rt,2)),et[SECOND]=toInt(tt.substr(it)),getParsingFlags(nt).bigHour=!0});addParseToken("Hmm",function(tt,et,nt){var rt=tt.length-2;et[HOUR]=toInt(tt.substr(0,rt)),et[MINUTE]=toInt(tt.substr(rt))});addParseToken("Hmmss",function(tt,et,nt){var rt=tt.length-4,it=tt.length-2;et[HOUR]=toInt(tt.substr(0,rt)),et[MINUTE]=toInt(tt.substr(rt,2)),et[SECOND]=toInt(tt.substr(it))});function localeIsPM(tt){return(tt+"").toLowerCase().charAt(0)==="p"}var defaultLocaleMeridiemParse=/[ap]\.?m?\.?/i,getSetHour=makeGetSet("Hours",!0);function localeMeridiem(tt,et,nt){return tt>11?nt?"pm":"PM":nt?"am":"AM"}var baseConfig={calendar:defaultCalendar,longDateFormat:defaultLongDateFormat,invalidDate:defaultInvalidDate,ordinal:defaultOrdinal,dayOfMonthOrdinalParse:defaultDayOfMonthOrdinalParse,relativeTime:defaultRelativeTime,months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:defaultLocaleWeek,weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:defaultLocaleMeridiemParse},locales={},localeFamilies={},globalLocale;function commonPrefix(tt,et){var nt,rt=Math.min(tt.length,et.length);for(nt=0;nt0;){if(it=loadLocale(ot.slice(0,nt).join("-")),it)return it;if(rt&&rt.length>=nt&&commonPrefix(ot,rt)>=nt-1)break;nt--}et++}return globalLocale}function isLocaleNameSane(tt){return tt.match("^[^/\\\\]*$")!=null}function loadLocale(tt){var et=null,nt;if(locales[tt]===void 0&&typeof module<"u"&&module&&module.exports&&isLocaleNameSane(tt))try{et=globalLocale._abbr,nt=require,nt("./locale/"+tt),getSetGlobalLocale(et)}catch{locales[tt]=null}return locales[tt]}function getSetGlobalLocale(tt,et){var nt;return tt&&(isUndefined(et)?nt=getLocale(tt):nt=defineLocale(tt,et),nt?globalLocale=nt:typeof console<"u"&&console.warn&&console.warn("Locale "+tt+" not found. Did you forget to load it?")),globalLocale._abbr}function defineLocale(tt,et){if(et!==null){var nt,rt=baseConfig;if(et.abbr=tt,locales[tt]!=null)deprecateSimple("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),rt=locales[tt]._config;else if(et.parentLocale!=null)if(locales[et.parentLocale]!=null)rt=locales[et.parentLocale]._config;else if(nt=loadLocale(et.parentLocale),nt!=null)rt=nt._config;else return localeFamilies[et.parentLocale]||(localeFamilies[et.parentLocale]=[]),localeFamilies[et.parentLocale].push({name:tt,config:et}),null;return locales[tt]=new Locale(mergeConfigs(rt,et)),localeFamilies[tt]&&localeFamilies[tt].forEach(function(it){defineLocale(it.name,it.config)}),getSetGlobalLocale(tt),locales[tt]}else return delete locales[tt],null}function updateLocale(tt,et){if(et!=null){var nt,rt,it=baseConfig;locales[tt]!=null&&locales[tt].parentLocale!=null?locales[tt].set(mergeConfigs(locales[tt]._config,et)):(rt=loadLocale(tt),rt!=null&&(it=rt._config),et=mergeConfigs(it,et),rt==null&&(et.abbr=tt),nt=new Locale(et),nt.parentLocale=locales[tt],locales[tt]=nt),getSetGlobalLocale(tt)}else locales[tt]!=null&&(locales[tt].parentLocale!=null?(locales[tt]=locales[tt].parentLocale,tt===getSetGlobalLocale()&&getSetGlobalLocale(tt)):locales[tt]!=null&&delete locales[tt]);return locales[tt]}function getLocale(tt){var et;if(tt&&tt._locale&&tt._locale._abbr&&(tt=tt._locale._abbr),!tt)return globalLocale;if(!isArray$d(tt)){if(et=loadLocale(tt),et)return et;tt=[tt]}return chooseLocale(tt)}function listLocales(){return keys$4(locales)}function checkOverflow(tt){var et,nt=tt._a;return nt&&getParsingFlags(tt).overflow===-2&&(et=nt[MONTH]<0||nt[MONTH]>11?MONTH:nt[DATE]<1||nt[DATE]>daysInMonth(nt[YEAR],nt[MONTH])?DATE:nt[HOUR]<0||nt[HOUR]>24||nt[HOUR]===24&&(nt[MINUTE]!==0||nt[SECOND]!==0||nt[MILLISECOND]!==0)?HOUR:nt[MINUTE]<0||nt[MINUTE]>59?MINUTE:nt[SECOND]<0||nt[SECOND]>59?SECOND:nt[MILLISECOND]<0||nt[MILLISECOND]>999?MILLISECOND:-1,getParsingFlags(tt)._overflowDayOfYear&&(etDATE)&&(et=DATE),getParsingFlags(tt)._overflowWeeks&&et===-1&&(et=WEEK),getParsingFlags(tt)._overflowWeekday&&et===-1&&(et=WEEKDAY),getParsingFlags(tt).overflow=et),tt}var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],isoTimes=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aspNetJsonRegex=/^\/?Date\((-?\d+)/i,rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,obsOffsets={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function configFromISO(tt){var et,nt,rt=tt._i,it=extendedIsoRegex.exec(rt)||basicIsoRegex.exec(rt),ot,at,st,lt,ct=isoDates.length,ut=isoTimes.length;if(it){for(getParsingFlags(tt).iso=!0,et=0,nt=ct;etdaysInYear(at)||tt._dayOfYear===0)&&(getParsingFlags(tt)._overflowDayOfYear=!0),nt=createUTCDate(at,0,tt._dayOfYear),tt._a[MONTH]=nt.getUTCMonth(),tt._a[DATE]=nt.getUTCDate()),et=0;et<3&&tt._a[et]==null;++et)tt._a[et]=rt[et]=it[et];for(;et<7;et++)tt._a[et]=rt[et]=tt._a[et]==null?et===2?1:0:tt._a[et];tt._a[HOUR]===24&&tt._a[MINUTE]===0&&tt._a[SECOND]===0&&tt._a[MILLISECOND]===0&&(tt._nextDay=!0,tt._a[HOUR]=0),tt._d=(tt._useUTC?createUTCDate:createDate).apply(null,rt),ot=tt._useUTC?tt._d.getUTCDay():tt._d.getDay(),tt._tzm!=null&&tt._d.setUTCMinutes(tt._d.getUTCMinutes()-tt._tzm),tt._nextDay&&(tt._a[HOUR]=24),tt._w&&typeof tt._w.d<"u"&&tt._w.d!==ot&&(getParsingFlags(tt).weekdayMismatch=!0)}}function dayOfYearFromWeekInfo(tt){var et,nt,rt,it,ot,at,st,lt,ct;et=tt._w,et.GG!=null||et.W!=null||et.E!=null?(ot=1,at=4,nt=defaults$1(et.GG,tt._a[YEAR],weekOfYear(createLocal(),1,4).year),rt=defaults$1(et.W,1),it=defaults$1(et.E,1),(it<1||it>7)&&(lt=!0)):(ot=tt._locale._week.dow,at=tt._locale._week.doy,ct=weekOfYear(createLocal(),ot,at),nt=defaults$1(et.gg,tt._a[YEAR],ct.year),rt=defaults$1(et.w,ct.week),et.d!=null?(it=et.d,(it<0||it>6)&&(lt=!0)):et.e!=null?(it=et.e+ot,(et.e<0||et.e>6)&&(lt=!0)):it=ot),rt<1||rt>weeksInYear(nt,ot,at)?getParsingFlags(tt)._overflowWeeks=!0:lt!=null?getParsingFlags(tt)._overflowWeekday=!0:(st=dayOfYearFromWeeks(nt,rt,it,ot,at),tt._a[YEAR]=st.year,tt._dayOfYear=st.dayOfYear)}hooks.ISO_8601=function(){};hooks.RFC_2822=function(){};function configFromStringAndFormat(tt){if(tt._f===hooks.ISO_8601){configFromISO(tt);return}if(tt._f===hooks.RFC_2822){configFromRFC2822(tt);return}tt._a=[],getParsingFlags(tt).empty=!0;var et=""+tt._i,nt,rt,it,ot,at,st=et.length,lt=0,ct,ut;for(it=expandFormat(tt._f,tt._locale).match(formattingTokens)||[],ut=it.length,nt=0;nt0&&getParsingFlags(tt).unusedInput.push(at),et=et.slice(et.indexOf(rt)+rt.length),lt+=rt.length),formatTokenFunctions[ot]?(rt?getParsingFlags(tt).empty=!1:getParsingFlags(tt).unusedTokens.push(ot),addTimeToArrayFromToken(ot,rt,tt)):tt._strict&&!rt&&getParsingFlags(tt).unusedTokens.push(ot);getParsingFlags(tt).charsLeftOver=st-lt,et.length>0&&getParsingFlags(tt).unusedInput.push(et),tt._a[HOUR]<=12&&getParsingFlags(tt).bigHour===!0&&tt._a[HOUR]>0&&(getParsingFlags(tt).bigHour=void 0),getParsingFlags(tt).parsedDateParts=tt._a.slice(0),getParsingFlags(tt).meridiem=tt._meridiem,tt._a[HOUR]=meridiemFixWrap(tt._locale,tt._a[HOUR],tt._meridiem),ct=getParsingFlags(tt).era,ct!==null&&(tt._a[YEAR]=tt._locale.erasConvertYear(ct,tt._a[YEAR])),configFromArray(tt),checkOverflow(tt)}function meridiemFixWrap(tt,et,nt){var rt;return nt==null?et:tt.meridiemHour!=null?tt.meridiemHour(et,nt):(tt.isPM!=null&&(rt=tt.isPM(nt),rt&&et<12&&(et+=12),!rt&&et===12&&(et=0)),et)}function configFromStringAndArray(tt){var et,nt,rt,it,ot,at,st=!1,lt=tt._f.length;if(lt===0){getParsingFlags(tt).invalidFormat=!0,tt._d=new Date(NaN);return}for(it=0;itthis?this:tt:createInvalid()});function pickBy(tt,et){var nt,rt;if(et.length===1&&isArray$d(et[0])&&(et=et[0]),!et.length)return createLocal();for(nt=et[0],rt=1;rtthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var tt={},et;return copyConfig(tt,this),tt=prepareConfig(tt),tt._a?(et=tt._isUTC?createUTC(tt._a):createLocal(tt._a),this._isDSTShifted=this.isValid()&&compareArrays(tt._a,et.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function isLocal(){return this.isValid()?!this._isUTC:!1}function isUtcOffset(){return this.isValid()?this._isUTC:!1}function isUtc(){return this.isValid()?this._isUTC&&this._offset===0:!1}var aspNetRegex=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(tt,et){var nt=tt,rt=null,it,ot,at;return isDuration(tt)?nt={ms:tt._milliseconds,d:tt._days,M:tt._months}:isNumber$3(tt)||!isNaN(+tt)?(nt={},et?nt[et]=+tt:nt.milliseconds=+tt):(rt=aspNetRegex.exec(tt))?(it=rt[1]==="-"?-1:1,nt={y:0,d:toInt(rt[DATE])*it,h:toInt(rt[HOUR])*it,m:toInt(rt[MINUTE])*it,s:toInt(rt[SECOND])*it,ms:toInt(absRound(rt[MILLISECOND]*1e3))*it}):(rt=isoRegex.exec(tt))?(it=rt[1]==="-"?-1:1,nt={y:parseIso(rt[2],it),M:parseIso(rt[3],it),w:parseIso(rt[4],it),d:parseIso(rt[5],it),h:parseIso(rt[6],it),m:parseIso(rt[7],it),s:parseIso(rt[8],it)}):nt==null?nt={}:typeof nt=="object"&&("from"in nt||"to"in nt)&&(at=momentsDifference(createLocal(nt.from),createLocal(nt.to)),nt={},nt.ms=at.milliseconds,nt.M=at.months),ot=new Duration(nt),isDuration(tt)&&hasOwnProp(tt,"_locale")&&(ot._locale=tt._locale),isDuration(tt)&&hasOwnProp(tt,"_isValid")&&(ot._isValid=tt._isValid),ot}createDuration.fn=Duration.prototype;createDuration.invalid=createInvalid$1;function parseIso(tt,et){var nt=tt&&parseFloat(tt.replace(",","."));return(isNaN(nt)?0:nt)*et}function positiveMomentsDifference(tt,et){var nt={};return nt.months=et.month()-tt.month()+(et.year()-tt.year())*12,tt.clone().add(nt.months,"M").isAfter(et)&&--nt.months,nt.milliseconds=+et-+tt.clone().add(nt.months,"M"),nt}function momentsDifference(tt,et){var nt;return tt.isValid()&&et.isValid()?(et=cloneWithOffset(et,tt),tt.isBefore(et)?nt=positiveMomentsDifference(tt,et):(nt=positiveMomentsDifference(et,tt),nt.milliseconds=-nt.milliseconds,nt.months=-nt.months),nt):{milliseconds:0,months:0}}function createAdder(tt,et){return function(nt,rt){var it,ot;return rt!==null&&!isNaN(+rt)&&(deprecateSimple(et,"moment()."+et+"(period, number) is deprecated. Please use moment()."+et+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),ot=nt,nt=rt,rt=ot),it=createDuration(nt,rt),addSubtract(this,it,tt),this}}function addSubtract(tt,et,nt,rt){var it=et._milliseconds,ot=absRound(et._days),at=absRound(et._months);tt.isValid()&&(rt=rt??!0,at&&setMonth(tt,get$3(tt,"Month")+at*nt),ot&&set$1$1(tt,"Date",get$3(tt,"Date")+ot*nt),it&&tt._d.setTime(tt._d.valueOf()+it*nt),rt&&hooks.updateOffset(tt,ot||at))}var add$1=createAdder(1,"add"),subtract$1=createAdder(-1,"subtract");function isString$1(tt){return typeof tt=="string"||tt instanceof String}function isMomentInput(tt){return isMoment(tt)||isDate(tt)||isString$1(tt)||isNumber$3(tt)||isNumberOrStringArray(tt)||isMomentInputObject(tt)||tt===null||tt===void 0}function isMomentInputObject(tt){var et=isObject$6(tt)&&!isObjectEmpty(tt),nt=!1,rt=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],it,ot,at=rt.length;for(it=0;itnt.valueOf():nt.valueOf()9999?formatMoment(nt,et?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction$1(Date.prototype.toISOString)?et?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",formatMoment(nt,"Z")):formatMoment(nt,et?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function inspect(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var tt="moment",et="",nt,rt,it,ot;return this.isLocal()||(tt=this.utcOffset()===0?"moment.utc":"moment.parseZone",et="Z"),nt="["+tt+'("]',rt=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",it="-MM-DD[T]HH:mm:ss.SSS",ot=et+'[")]',this.format(nt+rt+it+ot)}function format$1(tt){tt||(tt=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var et=formatMoment(this,tt);return this.localeData().postformat(et)}function from(tt,et){return this.isValid()&&(isMoment(tt)&&tt.isValid()||createLocal(tt).isValid())?createDuration({to:this,from:tt}).locale(this.locale()).humanize(!et):this.localeData().invalidDate()}function fromNow(tt){return this.from(createLocal(),tt)}function to(tt,et){return this.isValid()&&(isMoment(tt)&&tt.isValid()||createLocal(tt).isValid())?createDuration({from:this,to:tt}).locale(this.locale()).humanize(!et):this.localeData().invalidDate()}function toNow(tt){return this.to(createLocal(),tt)}function locale$2(tt){var et;return tt===void 0?this._locale._abbr:(et=getLocale(tt),et!=null&&(this._locale=et),this)}var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(tt){return tt===void 0?this.localeData():this.locale(tt)});function localeData(){return this._locale}var MS_PER_SECOND=1e3,MS_PER_MINUTE=60*MS_PER_SECOND,MS_PER_HOUR=60*MS_PER_MINUTE,MS_PER_400_YEARS=(365*400+97)*24*MS_PER_HOUR;function mod$1(tt,et){return(tt%et+et)%et}function localStartOfDate(tt,et,nt){return tt<100&&tt>=0?new Date(tt+400,et,nt)-MS_PER_400_YEARS:new Date(tt,et,nt).valueOf()}function utcStartOfDate(tt,et,nt){return tt<100&&tt>=0?Date.UTC(tt+400,et,nt)-MS_PER_400_YEARS:Date.UTC(tt,et,nt)}function startOf(tt){var et,nt;if(tt=normalizeUnits(tt),tt===void 0||tt==="millisecond"||!this.isValid())return this;switch(nt=this._isUTC?utcStartOfDate:localStartOfDate,tt){case"year":et=nt(this.year(),0,1);break;case"quarter":et=nt(this.year(),this.month()-this.month()%3,1);break;case"month":et=nt(this.year(),this.month(),1);break;case"week":et=nt(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":et=nt(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":et=nt(this.year(),this.month(),this.date());break;case"hour":et=this._d.valueOf(),et-=mod$1(et+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR);break;case"minute":et=this._d.valueOf(),et-=mod$1(et,MS_PER_MINUTE);break;case"second":et=this._d.valueOf(),et-=mod$1(et,MS_PER_SECOND);break}return this._d.setTime(et),hooks.updateOffset(this,!0),this}function endOf(tt){var et,nt;if(tt=normalizeUnits(tt),tt===void 0||tt==="millisecond"||!this.isValid())return this;switch(nt=this._isUTC?utcStartOfDate:localStartOfDate,tt){case"year":et=nt(this.year()+1,0,1)-1;break;case"quarter":et=nt(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":et=nt(this.year(),this.month()+1,1)-1;break;case"week":et=nt(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":et=nt(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":et=nt(this.year(),this.month(),this.date()+1)-1;break;case"hour":et=this._d.valueOf(),et+=MS_PER_HOUR-mod$1(et+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR)-1;break;case"minute":et=this._d.valueOf(),et+=MS_PER_MINUTE-mod$1(et,MS_PER_MINUTE)-1;break;case"second":et=this._d.valueOf(),et+=MS_PER_SECOND-mod$1(et,MS_PER_SECOND)-1;break}return this._d.setTime(et),hooks.updateOffset(this,!0),this}function valueOf(){return this._d.valueOf()-(this._offset||0)*6e4}function unix(){return Math.floor(this.valueOf()/1e3)}function toDate(){return new Date(this.valueOf())}function toArray$2(){var tt=this;return[tt.year(),tt.month(),tt.date(),tt.hour(),tt.minute(),tt.second(),tt.millisecond()]}function toObject(){var tt=this;return{years:tt.year(),months:tt.month(),date:tt.date(),hours:tt.hours(),minutes:tt.minutes(),seconds:tt.seconds(),milliseconds:tt.milliseconds()}}function toJSON(){return this.isValid()?this.toISOString():null}function isValid$2(){return isValid(this)}function parsingFlags(){return extend$1({},getParsingFlags(this))}function invalidAt(){return getParsingFlags(this).overflow}function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}addFormatToken("N",0,0,"eraAbbr");addFormatToken("NN",0,0,"eraAbbr");addFormatToken("NNN",0,0,"eraAbbr");addFormatToken("NNNN",0,0,"eraName");addFormatToken("NNNNN",0,0,"eraNarrow");addFormatToken("y",["y",1],"yo","eraYear");addFormatToken("y",["yy",2],0,"eraYear");addFormatToken("y",["yyy",3],0,"eraYear");addFormatToken("y",["yyyy",4],0,"eraYear");addRegexToken("N",matchEraAbbr);addRegexToken("NN",matchEraAbbr);addRegexToken("NNN",matchEraAbbr);addRegexToken("NNNN",matchEraName);addRegexToken("NNNNN",matchEraNarrow);addParseToken(["N","NN","NNN","NNNN","NNNNN"],function(tt,et,nt,rt){var it=nt._locale.erasParse(tt,rt,nt._strict);it?getParsingFlags(nt).era=it:getParsingFlags(nt).invalidEra=tt});addRegexToken("y",matchUnsigned);addRegexToken("yy",matchUnsigned);addRegexToken("yyy",matchUnsigned);addRegexToken("yyyy",matchUnsigned);addRegexToken("yo",matchEraYearOrdinal);addParseToken(["y","yy","yyy","yyyy"],YEAR);addParseToken(["yo"],function(tt,et,nt,rt){var it;nt._locale._eraYearOrdinalRegex&&(it=tt.match(nt._locale._eraYearOrdinalRegex)),nt._locale.eraYearOrdinalParse?et[YEAR]=nt._locale.eraYearOrdinalParse(tt,it):et[YEAR]=parseInt(tt,10)});function localeEras(tt,et){var nt,rt,it,ot=this._eras||getLocale("en")._eras;for(nt=0,rt=ot.length;nt=0)return ot[rt]}function localeErasConvertYear(tt,et){var nt=tt.since<=tt.until?1:-1;return et===void 0?hooks(tt.since).year():hooks(tt.since).year()+(et-tt.offset)*nt}function getEraName(){var tt,et,nt,rt=this.localeData().eras();for(tt=0,et=rt.length;ttot&&(et=ot),setWeekAll.call(this,tt,et,nt,rt,it))}function setWeekAll(tt,et,nt,rt,it){var ot=dayOfYearFromWeeks(tt,et,nt,rt,it),at=createUTCDate(ot.year,0,ot.dayOfYear);return this.year(at.getUTCFullYear()),this.month(at.getUTCMonth()),this.date(at.getUTCDate()),this}addFormatToken("Q",0,"Qo","quarter");addUnitAlias("quarter","Q");addUnitPriority("quarter",7);addRegexToken("Q",match1);addParseToken("Q",function(tt,et){et[MONTH]=(toInt(tt)-1)*3});function getSetQuarter(tt){return tt==null?Math.ceil((this.month()+1)/3):this.month((tt-1)*3+this.month()%3)}addFormatToken("D",["DD",2],"Do","date");addUnitAlias("date","D");addUnitPriority("date",9);addRegexToken("D",match1to2);addRegexToken("DD",match1to2,match2);addRegexToken("Do",function(tt,et){return tt?et._dayOfMonthOrdinalParse||et._ordinalParse:et._dayOfMonthOrdinalParseLenient});addParseToken(["D","DD"],DATE);addParseToken("Do",function(tt,et){et[DATE]=toInt(tt.match(match1to2)[0])});var getSetDayOfMonth=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear");addUnitAlias("dayOfYear","DDD");addUnitPriority("dayOfYear",4);addRegexToken("DDD",match1to3);addRegexToken("DDDD",match3);addParseToken(["DDD","DDDD"],function(tt,et,nt){nt._dayOfYear=toInt(tt)});function getSetDayOfYear(tt){var et=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return tt==null?et:this.add(tt-et,"d")}addFormatToken("m",["mm",2],0,"minute");addUnitAlias("minute","m");addUnitPriority("minute",14);addRegexToken("m",match1to2);addRegexToken("mm",match1to2,match2);addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second");addUnitAlias("second","s");addUnitPriority("second",15);addRegexToken("s",match1to2);addRegexToken("ss",match1to2,match2);addParseToken(["s","ss"],SECOND);var getSetSecond=makeGetSet("Seconds",!1);addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)});addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)});addFormatToken(0,["SSS",3],0,"millisecond");addFormatToken(0,["SSSS",4],0,function(){return this.millisecond()*10});addFormatToken(0,["SSSSS",5],0,function(){return this.millisecond()*100});addFormatToken(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});addFormatToken(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});addFormatToken(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});addFormatToken(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});addUnitAlias("millisecond","ms");addUnitPriority("millisecond",16);addRegexToken("S",match1to3,match1);addRegexToken("SS",match1to3,match2);addRegexToken("SSS",match1to3,match3);var token,getSetMillisecond;for(token="SSSS";token.length<=9;token+="S")addRegexToken(token,matchUnsigned);function parseMs(tt,et){et[MILLISECOND]=toInt(("0."+tt)*1e3)}for(token="S";token.length<=9;token+="S")addParseToken(token,parseMs);getSetMillisecond=makeGetSet("Milliseconds",!1);addFormatToken("z",0,0,"zoneAbbr");addFormatToken("zz",0,0,"zoneName");function getZoneAbbr(){return this._isUTC?"UTC":""}function getZoneName(){return this._isUTC?"Coordinated Universal Time":""}var proto=Moment.prototype;proto.add=add$1;proto.calendar=calendar$1$1;proto.clone=clone$1;proto.diff=diff;proto.endOf=endOf;proto.format=format$1;proto.from=from;proto.fromNow=fromNow;proto.to=to;proto.toNow=toNow;proto.get=stringGet;proto.invalidAt=invalidAt;proto.isAfter=isAfter;proto.isBefore=isBefore;proto.isBetween=isBetween;proto.isSame=isSame;proto.isSameOrAfter=isSameOrAfter;proto.isSameOrBefore=isSameOrBefore;proto.isValid=isValid$2;proto.lang=lang;proto.locale=locale$2;proto.localeData=localeData;proto.max=prototypeMax;proto.min=prototypeMin;proto.parsingFlags=parsingFlags;proto.set=stringSet;proto.startOf=startOf;proto.subtract=subtract$1;proto.toArray=toArray$2;proto.toObject=toObject;proto.toDate=toDate;proto.toISOString=toISOString;proto.inspect=inspect;typeof Symbol<"u"&&Symbol.for!=null&&(proto[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});proto.toJSON=toJSON;proto.toString=toString$5;proto.unix=unix;proto.valueOf=valueOf;proto.creationData=creationData;proto.eraName=getEraName;proto.eraNarrow=getEraNarrow;proto.eraAbbr=getEraAbbr;proto.eraYear=getEraYear;proto.year=getSetYear;proto.isLeapYear=getIsLeapYear;proto.weekYear=getSetWeekYear;proto.isoWeekYear=getSetISOWeekYear;proto.quarter=proto.quarters=getSetQuarter;proto.month=getSetMonth;proto.daysInMonth=getDaysInMonth;proto.week=proto.weeks=getSetWeek;proto.isoWeek=proto.isoWeeks=getSetISOWeek;proto.weeksInYear=getWeeksInYear;proto.weeksInWeekYear=getWeeksInWeekYear;proto.isoWeeksInYear=getISOWeeksInYear;proto.isoWeeksInISOWeekYear=getISOWeeksInISOWeekYear;proto.date=getSetDayOfMonth;proto.day=proto.days=getSetDayOfWeek;proto.weekday=getSetLocaleDayOfWeek;proto.isoWeekday=getSetISODayOfWeek;proto.dayOfYear=getSetDayOfYear;proto.hour=proto.hours=getSetHour;proto.minute=proto.minutes=getSetMinute;proto.second=proto.seconds=getSetSecond;proto.millisecond=proto.milliseconds=getSetMillisecond;proto.utcOffset=getSetOffset;proto.utc=setOffsetToUTC;proto.local=setOffsetToLocal;proto.parseZone=setOffsetToParsedOffset;proto.hasAlignedHourOffset=hasAlignedHourOffset;proto.isDST=isDaylightSavingTime;proto.isLocal=isLocal;proto.isUtcOffset=isUtcOffset;proto.isUtc=isUtc;proto.isUTC=isUtc;proto.zoneAbbr=getZoneAbbr;proto.zoneName=getZoneName;proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth);proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth);proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear);proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",getSetZone);proto.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",isDaylightSavingTimeShifted);function createUnix(tt){return createLocal(tt*1e3)}function createInZone(){return createLocal.apply(null,arguments).parseZone()}function preParsePostFormat(tt){return tt}var proto$1=Locale.prototype;proto$1.calendar=calendar$1;proto$1.longDateFormat=longDateFormat;proto$1.invalidDate=invalidDate;proto$1.ordinal=ordinal$1;proto$1.preparse=preParsePostFormat;proto$1.postformat=preParsePostFormat;proto$1.relativeTime=relativeTime;proto$1.pastFuture=pastFuture;proto$1.set=set$1;proto$1.eras=localeEras;proto$1.erasParse=localeErasParse;proto$1.erasConvertYear=localeErasConvertYear;proto$1.erasAbbrRegex=erasAbbrRegex;proto$1.erasNameRegex=erasNameRegex;proto$1.erasNarrowRegex=erasNarrowRegex;proto$1.months=localeMonths;proto$1.monthsShort=localeMonthsShort;proto$1.monthsParse=localeMonthsParse;proto$1.monthsRegex=monthsRegex;proto$1.monthsShortRegex=monthsShortRegex;proto$1.week=localeWeek;proto$1.firstDayOfYear=localeFirstDayOfYear;proto$1.firstDayOfWeek=localeFirstDayOfWeek;proto$1.weekdays=localeWeekdays;proto$1.weekdaysMin=localeWeekdaysMin;proto$1.weekdaysShort=localeWeekdaysShort;proto$1.weekdaysParse=localeWeekdaysParse;proto$1.weekdaysRegex=weekdaysRegex;proto$1.weekdaysShortRegex=weekdaysShortRegex;proto$1.weekdaysMinRegex=weekdaysMinRegex;proto$1.isPM=localeIsPM;proto$1.meridiem=localeMeridiem;function get$1$1(tt,et,nt,rt){var it=getLocale(),ot=createUTC().set(rt,et);return it[nt](ot,tt)}function listMonthsImpl(tt,et,nt){if(isNumber$3(tt)&&(et=tt,tt=void 0),tt=tt||"",et!=null)return get$1$1(tt,et,nt,"month");var rt,it=[];for(rt=0;rt<12;rt++)it[rt]=get$1$1(tt,rt,nt,"month");return it}function listWeekdaysImpl(tt,et,nt,rt){typeof tt=="boolean"?(isNumber$3(et)&&(nt=et,et=void 0),et=et||""):(et=tt,nt=et,tt=!1,isNumber$3(et)&&(nt=et,et=void 0),et=et||"");var it=getLocale(),ot=tt?it._week.dow:0,at,st=[];if(nt!=null)return get$1$1(et,(nt+ot)%7,rt,"day");for(at=0;at<7;at++)st[at]=get$1$1(et,(at+ot)%7,rt,"day");return st}function listMonths(tt,et){return listMonthsImpl(tt,et,"months")}function listMonthsShort(tt,et){return listMonthsImpl(tt,et,"monthsShort")}function listWeekdays(tt,et,nt){return listWeekdaysImpl(tt,et,nt,"weekdays")}function listWeekdaysShort(tt,et,nt){return listWeekdaysImpl(tt,et,nt,"weekdaysShort")}function listWeekdaysMin(tt,et,nt){return listWeekdaysImpl(tt,et,nt,"weekdaysMin")}getSetGlobalLocale("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(tt){var et=tt%10,nt=toInt(tt%100/10)===1?"th":et===1?"st":et===2?"nd":et===3?"rd":"th";return tt+nt}});hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale);hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var mathAbs=Math.abs;function abs(){var tt=this._data;return this._milliseconds=mathAbs(this._milliseconds),this._days=mathAbs(this._days),this._months=mathAbs(this._months),tt.milliseconds=mathAbs(tt.milliseconds),tt.seconds=mathAbs(tt.seconds),tt.minutes=mathAbs(tt.minutes),tt.hours=mathAbs(tt.hours),tt.months=mathAbs(tt.months),tt.years=mathAbs(tt.years),this}function addSubtract$1(tt,et,nt,rt){var it=createDuration(et,nt);return tt._milliseconds+=rt*it._milliseconds,tt._days+=rt*it._days,tt._months+=rt*it._months,tt._bubble()}function add$1$1(tt,et){return addSubtract$1(this,tt,et,1)}function subtract$1$1(tt,et){return addSubtract$1(this,tt,et,-1)}function absCeil(tt){return tt<0?Math.floor(tt):Math.ceil(tt)}function bubble(){var tt=this._milliseconds,et=this._days,nt=this._months,rt=this._data,it,ot,at,st,lt;return tt>=0&&et>=0&&nt>=0||tt<=0&&et<=0&&nt<=0||(tt+=absCeil(monthsToDays(nt)+et)*864e5,et=0,nt=0),rt.milliseconds=tt%1e3,it=absFloor(tt/1e3),rt.seconds=it%60,ot=absFloor(it/60),rt.minutes=ot%60,at=absFloor(ot/60),rt.hours=at%24,et+=absFloor(at/24),lt=absFloor(daysToMonths(et)),nt+=lt,et-=absCeil(monthsToDays(lt)),st=absFloor(nt/12),nt%=12,rt.days=et,rt.months=nt,rt.years=st,this}function daysToMonths(tt){return tt*4800/146097}function monthsToDays(tt){return tt*146097/4800}function as(tt){if(!this.isValid())return NaN;var et,nt,rt=this._milliseconds;if(tt=normalizeUnits(tt),tt==="month"||tt==="quarter"||tt==="year")switch(et=this._days+rt/864e5,nt=this._months+daysToMonths(et),tt){case"month":return nt;case"quarter":return nt/3;case"year":return nt/12}else switch(et=this._days+Math.round(monthsToDays(this._months)),tt){case"week":return et/7+rt/6048e5;case"day":return et+rt/864e5;case"hour":return et*24+rt/36e5;case"minute":return et*1440+rt/6e4;case"second":return et*86400+rt/1e3;case"millisecond":return Math.floor(et*864e5)+rt;default:throw new Error("Unknown unit "+tt)}}function valueOf$1(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6:NaN}function makeAs(tt){return function(){return this.as(tt)}}var asMilliseconds=makeAs("ms"),asSeconds=makeAs("s"),asMinutes=makeAs("m"),asHours=makeAs("h"),asDays=makeAs("d"),asWeeks=makeAs("w"),asMonths=makeAs("M"),asQuarters=makeAs("Q"),asYears=makeAs("y");function clone$1$1(){return createDuration(this)}function get$2$1(tt){return tt=normalizeUnits(tt),this.isValid()?this[tt+"s"]():NaN}function makeGetter(tt){return function(){return this.isValid()?this._data[tt]:NaN}}var milliseconds=makeGetter("milliseconds"),seconds=makeGetter("seconds"),minutes=makeGetter("minutes"),hours=makeGetter("hours"),days=makeGetter("days"),months=makeGetter("months"),years=makeGetter("years");function weeks(){return absFloor(this.days()/7)}var round$1=Math.round,thresholds={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function substituteTimeAgo(tt,et,nt,rt,it){return it.relativeTime(et||1,!!nt,tt,rt)}function relativeTime$1(tt,et,nt,rt){var it=createDuration(tt).abs(),ot=round$1(it.as("s")),at=round$1(it.as("m")),st=round$1(it.as("h")),lt=round$1(it.as("d")),ct=round$1(it.as("M")),ut=round$1(it.as("w")),ht=round$1(it.as("y")),dt=ot<=nt.ss&&["s",ot]||ot0,dt[4]=rt,substituteTimeAgo.apply(null,dt)}function getSetRelativeTimeRounding(tt){return tt===void 0?round$1:typeof tt=="function"?(round$1=tt,!0):!1}function getSetRelativeTimeThreshold(tt,et){return thresholds[tt]===void 0?!1:et===void 0?thresholds[tt]:(thresholds[tt]=et,tt==="s"&&(thresholds.ss=et-1),!0)}function humanize(tt,et){if(!this.isValid())return this.localeData().invalidDate();var nt=!1,rt=thresholds,it,ot;return typeof tt=="object"&&(et=tt,tt=!1),typeof tt=="boolean"&&(nt=tt),typeof et=="object"&&(rt=Object.assign({},thresholds,et),et.s!=null&&et.ss==null&&(rt.ss=et.s-1)),it=this.localeData(),ot=relativeTime$1(this,!nt,rt,it),nt&&(ot=it.pastFuture(+this,ot)),it.postformat(ot)}var abs$1=Math.abs;function sign$1(tt){return(tt>0)-(tt<0)||+tt}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var tt=abs$1(this._milliseconds)/1e3,et=abs$1(this._days),nt=abs$1(this._months),rt,it,ot,at,st=this.asSeconds(),lt,ct,ut,ht;return st?(rt=absFloor(tt/60),it=absFloor(rt/60),tt%=60,rt%=60,ot=absFloor(nt/12),nt%=12,at=tt?tt.toFixed(3).replace(/\.?0+$/,""):"",lt=st<0?"-":"",ct=sign$1(this._months)!==sign$1(st)?"-":"",ut=sign$1(this._days)!==sign$1(st)?"-":"",ht=sign$1(this._milliseconds)!==sign$1(st)?"-":"",lt+"P"+(ot?ct+ot+"Y":"")+(nt?ct+nt+"M":"")+(et?ut+et+"D":"")+(it||rt||tt?"T":"")+(it?ht+it+"H":"")+(rt?ht+rt+"M":"")+(tt?ht+at+"S":"")):"P0D"}var proto$2=Duration.prototype;proto$2.isValid=isValid$1;proto$2.abs=abs;proto$2.add=add$1$1;proto$2.subtract=subtract$1$1;proto$2.as=as;proto$2.asMilliseconds=asMilliseconds;proto$2.asSeconds=asSeconds;proto$2.asMinutes=asMinutes;proto$2.asHours=asHours;proto$2.asDays=asDays;proto$2.asWeeks=asWeeks;proto$2.asMonths=asMonths;proto$2.asQuarters=asQuarters;proto$2.asYears=asYears;proto$2.valueOf=valueOf$1;proto$2._bubble=bubble;proto$2.clone=clone$1$1;proto$2.get=get$2$1;proto$2.milliseconds=milliseconds;proto$2.seconds=seconds;proto$2.minutes=minutes;proto$2.hours=hours;proto$2.days=days;proto$2.weeks=weeks;proto$2.months=months;proto$2.years=years;proto$2.humanize=humanize;proto$2.toISOString=toISOString$1;proto$2.toString=toISOString$1;proto$2.toJSON=toISOString$1;proto$2.locale=locale$2;proto$2.localeData=localeData;proto$2.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1);proto$2.lang=lang;addFormatToken("X",0,0,"unix");addFormatToken("x",0,0,"valueOf");addRegexToken("x",matchSigned);addRegexToken("X",matchTimestamp);addParseToken("X",function(tt,et,nt){nt._d=new Date(parseFloat(tt)*1e3)});addParseToken("x",function(tt,et,nt){nt._d=new Date(toInt(tt))});//! moment.js -hooks.version="2.29.4";setHookCallback(createLocal);hooks.fn=proto;hooks.min=min$2;hooks.max=max$2;hooks.now=now$2;hooks.utc=createUTC;hooks.unix=createUnix;hooks.months=listMonths;hooks.isDate=isDate;hooks.locale=getSetGlobalLocale;hooks.invalid=createInvalid;hooks.duration=createDuration;hooks.isMoment=isMoment;hooks.weekdays=listWeekdays;hooks.parseZone=createInZone;hooks.localeData=getLocale;hooks.isDuration=isDuration;hooks.monthsShort=listMonthsShort;hooks.weekdaysMin=listWeekdaysMin;hooks.defineLocale=defineLocale;hooks.updateLocale=updateLocale;hooks.locales=listLocales;hooks.weekdaysShort=listWeekdaysShort;hooks.normalizeUnits=normalizeUnits;hooks.relativeTimeRounding=getSetRelativeTimeRounding;hooks.relativeTimeThreshold=getSetRelativeTimeThreshold;hooks.calendarFormat=getCalendarFormat;hooks.prototype=proto;hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};var classnames={exports:{}};/*! +`):tt;return()=>{nt||(nt=!0,et==="error"?console.error(rt):console.warn(rt))}};buildWarning(["The `renderInput` prop has been removed in version 6.0 of the Date and Time Pickers.","You can replace it with the `textField` component slot in most cases.","For more information, please have a look at the migration guide (https://mui.com/x/migration/migration-pickers-v5/#input-renderer-required-in-v5)."]);const usePicker=({props:tt,valueManager:et,valueType:nt,wrapperVariant:rt,inputRef:it,additionalViewProps:ot,validator:at,autoFocusView:st})=>{const lt=usePickerValue({props:tt,valueManager:et,valueType:nt,wrapperVariant:rt,validator:at}),ct=usePickerViews({props:tt,inputRef:it,additionalViewProps:ot,autoFocusView:st,propsFromPickerValue:lt.viewProps}),ut=usePickerLayoutProps({props:tt,wrapperVariant:rt,propsFromPickerValue:lt.layoutProps,propsFromPickerViews:ct.layoutProps});return{open:lt.open,actions:lt.actions,fieldProps:lt.fieldProps,renderCurrentView:ct.renderCurrentView,hasUIView:ct.hasUIView,shouldRestoreFocus:ct.shouldRestoreFocus,layoutProps:ut.layoutProps}};function getPickersLayoutUtilityClass(tt){return generateUtilityClass("MuiPickersLayout",tt)}const pickersLayoutClasses=generateUtilityClasses("MuiPickersLayout",["root","landscape","contentWrapper","toolbar","actionBar","shortcuts"]),_excluded$y=["onAccept","onClear","onCancel","onSetToday","actions"];function PickersActionBar(tt){const{onAccept:et,onClear:nt,onCancel:rt,onSetToday:it,actions:ot}=tt,at=_objectWithoutPropertiesLoose$m(tt,_excluded$y),st=useLocaleText();if(ot==null||ot.length===0)return null;const lt=ot==null?void 0:ot.map(ct=>{switch(ct){case"clear":return jsxRuntimeExports.jsx(Button$2,{onClick:nt,children:st.clearButtonLabel},ct);case"cancel":return jsxRuntimeExports.jsx(Button$2,{onClick:rt,children:st.cancelButtonLabel},ct);case"accept":return jsxRuntimeExports.jsx(Button$2,{onClick:et,children:st.okButtonLabel},ct);case"today":return jsxRuntimeExports.jsx(Button$2,{onClick:it,children:st.todayButtonLabel},ct);default:return null}});return jsxRuntimeExports.jsx(DialogActions$1,_extends$u({},at,{children:lt}))}const _excluded$x=["items","changeImportance","isLandscape","onChange","isValid"],_excluded2$a=["getValue"];function PickersShortcuts(tt){const{items:et,changeImportance:nt,onChange:rt,isValid:it}=tt,ot=_objectWithoutPropertiesLoose$m(tt,_excluded$x);if(et==null||et.length===0)return null;const at=et.map(st=>{let{getValue:lt}=st,ct=_objectWithoutPropertiesLoose$m(st,_excluded2$a);const ut=lt({isValid:it});return{label:ct.label,onClick:()=>{rt(ut,nt,ct)},disabled:!it(ut)}});return jsxRuntimeExports.jsx(List$1,_extends$u({dense:!0,sx:[{maxHeight:VIEW_HEIGHT,maxWidth:200,overflow:"auto"},...Array.isArray(ot.sx)?ot.sx:[ot.sx]]},ot,{children:at.map(st=>jsxRuntimeExports.jsx(ListItem$1,{children:jsxRuntimeExports.jsx(Chip$1,_extends$u({},st))},st.label))}))}function toolbarHasView(tt){return tt.view!==null}const useUtilityClasses$b=tt=>{const{classes:et,isLandscape:nt}=tt;return composeClasses({root:["root",nt&&"landscape"],contentWrapper:["contentWrapper"],toolbar:["toolbar"],actionBar:["actionBar"],tabs:["tabs"],landscape:["landscape"],shortcuts:["shortcuts"]},getPickersLayoutUtilityClass,et)},usePickerLayout=tt=>{var et,nt;const{wrapperVariant:rt,onAccept:it,onClear:ot,onCancel:at,onSetToday:st,view:lt,views:ct,onViewChange:ut,value:ht,onChange:dt,onSelectShortcut:pt,isValid:mt,isLandscape:gt,disabled:yt,readOnly:bt,children:vt,components:xt,componentsProps:kt,slots:St,slotProps:Tt}=tt,At=St??uncapitalizeObjectKeys(xt),Et=Tt??kt,$t=useUtilityClasses$b(tt),Dt=(et=At==null?void 0:At.actionBar)!=null?et:PickersActionBar,jt=useSlotProps({elementType:Dt,externalSlotProps:Et==null?void 0:Et.actionBar,additionalProps:{onAccept:it,onClear:ot,onCancel:at,onSetToday:st,actions:rt==="desktop"?[]:["cancel","accept"],className:$t.actionBar},ownerState:_extends$u({},tt,{wrapperVariant:rt})}),Pt=jsxRuntimeExports.jsx(Dt,_extends$u({},jt)),Ct=At==null?void 0:At.toolbar,wt=useSlotProps({elementType:Ct,externalSlotProps:Et==null?void 0:Et.toolbar,additionalProps:{isLandscape:gt,onChange:dt,value:ht,view:lt,onViewChange:ut,views:ct,disabled:yt,readOnly:bt,className:$t.toolbar},ownerState:_extends$u({},tt,{wrapperVariant:rt})}),It=toolbarHasView(wt)&&Ct?jsxRuntimeExports.jsx(Ct,_extends$u({},wt)):null,Ot=vt,Wt=At==null?void 0:At.tabs,zt=lt&&Wt?jsxRuntimeExports.jsx(Wt,_extends$u({view:lt,onViewChange:ut},Et==null?void 0:Et.tabs)):null,Ft=(nt=At==null?void 0:At.shortcuts)!=null?nt:PickersShortcuts,Nt=useSlotProps({elementType:Ft,externalSlotProps:Et==null?void 0:Et.shortcuts,additionalProps:{isValid:mt,isLandscape:gt,onChange:pt,className:$t.shortcuts},ownerState:{isValid:mt,isLandscape:gt,onChange:pt,className:$t.shortcuts,wrapperVariant:rt}}),Ut=lt&&Ft?jsxRuntimeExports.jsx(Ft,_extends$u({},Nt)):null;return{toolbar:It,content:Ot,tabs:zt,actionBar:Pt,shortcuts:Ut}},usePickerLayout$1=usePickerLayout,useUtilityClasses$a=tt=>{const{isLandscape:et,classes:nt}=tt;return composeClasses({root:["root",et&&"landscape"],contentWrapper:["contentWrapper"]},getPickersLayoutUtilityClass,nt)},PickersLayoutRoot=styled$1("div",{name:"MuiPickersLayout",slot:"Root",overridesResolver:(tt,et)=>et.root})(({theme:tt,ownerState:et})=>({display:"grid",gridAutoColumns:"max-content auto max-content",gridAutoRows:"max-content auto max-content",[`& .${pickersLayoutClasses.toolbar}`]:et.isLandscape?{gridColumn:tt.direction==="rtl"?3:1,gridRow:"2 / 3"}:{gridColumn:"2 / 4",gridRow:1},[`.${pickersLayoutClasses.shortcuts}`]:et.isLandscape?{gridColumn:"2 / 4",gridRow:1}:{gridColumn:tt.direction==="rtl"?3:1,gridRow:"2 / 3"},[`& .${pickersLayoutClasses.actionBar}`]:{gridColumn:"1 / 4",gridRow:3}}));PickersLayoutRoot.propTypes={as:PropTypes.elementType,ownerState:PropTypes.shape({isLandscape:PropTypes.bool.isRequired}).isRequired,sx:PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func,PropTypes.object,PropTypes.bool])),PropTypes.func,PropTypes.object])};const PickersLayoutContentWrapper=styled$1("div",{name:"MuiPickersLayout",slot:"ContentWrapper",overridesResolver:(tt,et)=>et.contentWrapper})({gridColumn:2,gridRow:2,display:"flex",flexDirection:"column"}),PickersLayout=function(et){const nt=useThemeProps({props:et,name:"MuiPickersLayout"}),{toolbar:rt,content:it,tabs:ot,actionBar:at,shortcuts:st}=usePickerLayout$1(nt),{sx:lt,className:ct,isLandscape:ut,ref:ht,wrapperVariant:dt}=nt,pt=nt,mt=useUtilityClasses$a(pt);return jsxRuntimeExports.jsxs(PickersLayoutRoot,{ref:ht,sx:lt,className:clsx(ct,mt.root),ownerState:pt,children:[ut?st:rt,ut?rt:st,jsxRuntimeExports.jsx(PickersLayoutContentWrapper,{className:mt.contentWrapper,children:dt==="desktop"?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[it,ot]}):jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[ot,it]})}),at]})},getPickersSlideTransitionUtilityClass=tt=>generateUtilityClass("MuiPickersSlideTransition",tt),pickersSlideTransitionClasses=generateUtilityClasses("MuiPickersSlideTransition",["root","slideEnter-left","slideEnter-right","slideEnterActive","slideExit","slideExitActiveLeft-left","slideExitActiveLeft-right"]),_excluded$w=["children","className","reduceAnimations","slideDirection","transKey","classes"],useUtilityClasses$9=tt=>{const{classes:et,slideDirection:nt}=tt,rt={root:["root"],exit:["slideExit"],enterActive:["slideEnterActive"],enter:[`slideEnter-${nt}`],exitActive:[`slideExitActiveLeft-${nt}`]};return composeClasses(rt,getPickersSlideTransitionUtilityClass,et)},PickersSlideTransitionRoot=styled$1(TransitionGroup$1,{name:"MuiPickersSlideTransition",slot:"Root",overridesResolver:(tt,et)=>[et.root,{[`.${pickersSlideTransitionClasses["slideEnter-left"]}`]:et["slideEnter-left"]},{[`.${pickersSlideTransitionClasses["slideEnter-right"]}`]:et["slideEnter-right"]},{[`.${pickersSlideTransitionClasses.slideEnterActive}`]:et.slideEnterActive},{[`.${pickersSlideTransitionClasses.slideExit}`]:et.slideExit},{[`.${pickersSlideTransitionClasses["slideExitActiveLeft-left"]}`]:et["slideExitActiveLeft-left"]},{[`.${pickersSlideTransitionClasses["slideExitActiveLeft-right"]}`]:et["slideExitActiveLeft-right"]}]})(({theme:tt})=>{const et=tt.transitions.create("transform",{duration:tt.transitions.duration.complex,easing:"cubic-bezier(0.35, 0.8, 0.4, 1)"});return{display:"block",position:"relative",overflowX:"hidden","& > *":{position:"absolute",top:0,right:0,left:0},[`& .${pickersSlideTransitionClasses["slideEnter-left"]}`]:{willChange:"transform",transform:"translate(100%)",zIndex:1},[`& .${pickersSlideTransitionClasses["slideEnter-right"]}`]:{willChange:"transform",transform:"translate(-100%)",zIndex:1},[`& .${pickersSlideTransitionClasses.slideEnterActive}`]:{transform:"translate(0%)",transition:et},[`& .${pickersSlideTransitionClasses.slideExit}`]:{transform:"translate(0%)"},[`& .${pickersSlideTransitionClasses["slideExitActiveLeft-left"]}`]:{willChange:"transform",transform:"translate(-100%)",transition:et,zIndex:0},[`& .${pickersSlideTransitionClasses["slideExitActiveLeft-right"]}`]:{willChange:"transform",transform:"translate(100%)",transition:et,zIndex:0}}});function PickersSlideTransition(tt){const et=useThemeProps({props:tt,name:"MuiPickersSlideTransition"}),{children:nt,className:rt,reduceAnimations:it,transKey:ot}=et,at=_objectWithoutPropertiesLoose$m(et,_excluded$w),st=useUtilityClasses$9(et),lt=useTheme();if(it)return jsxRuntimeExports.jsx("div",{className:clsx(st.root,rt),children:nt});const ct={exit:st.exit,enterActive:st.enterActive,enter:st.enter,exitActive:st.exitActive};return jsxRuntimeExports.jsx(PickersSlideTransitionRoot,{className:clsx(st.root,rt),childFactory:ut=>reactExports.cloneElement(ut,{classNames:ct}),role:"presentation",children:jsxRuntimeExports.jsx(CSSTransition$1,_extends$u({mountOnEnter:!0,unmountOnExit:!0,timeout:lt.transitions.duration.complex,classNames:ct},at,{children:nt}),ot)})}const useIsDateDisabled=({shouldDisableDate:tt,shouldDisableMonth:et,shouldDisableYear:nt,minDate:rt,maxDate:it,disableFuture:ot,disablePast:at,timezone:st})=>{const lt=useLocalizationContext();return reactExports.useCallback(ct=>validateDate({adapter:lt,value:ct,props:{shouldDisableDate:tt,shouldDisableMonth:et,shouldDisableYear:nt,minDate:rt,maxDate:it,disableFuture:ot,disablePast:at,timezone:st}})!==null,[lt,tt,et,nt,rt,it,ot,at,st])},getDayCalendarUtilityClass=tt=>generateUtilityClass("MuiDayCalendar",tt);generateUtilityClasses("MuiDayCalendar",["root","header","weekDayLabel","loadingContainer","slideTransition","monthContainer","weekContainer","weekNumberLabel","weekNumber"]);const _excluded$v=["parentProps","day","focusableDay","selectedDays","isDateDisabled","currentMonthNumber","isViewFocused"],_excluded2$9=["ownerState"],useUtilityClasses$8=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],header:["header"],weekDayLabel:["weekDayLabel"],loadingContainer:["loadingContainer"],slideTransition:["slideTransition"],monthContainer:["monthContainer"],weekContainer:["weekContainer"],weekNumberLabel:["weekNumberLabel"],weekNumber:["weekNumber"]},getDayCalendarUtilityClass,et)},weeksContainerHeight=(DAY_SIZE+DAY_MARGIN*2)*6,PickersCalendarDayRoot=styled$1("div",{name:"MuiDayCalendar",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),PickersCalendarDayHeader=styled$1("div",{name:"MuiDayCalendar",slot:"Header",overridesResolver:(tt,et)=>et.header})({display:"flex",justifyContent:"center",alignItems:"center"}),PickersCalendarWeekDayLabel=styled$1(Typography$1,{name:"MuiDayCalendar",slot:"WeekDayLabel",overridesResolver:(tt,et)=>et.weekDayLabel})(({theme:tt})=>({width:36,height:40,margin:"0 2px",textAlign:"center",display:"flex",justifyContent:"center",alignItems:"center",color:(tt.vars||tt).palette.text.secondary})),PickersCalendarWeekNumberLabel=styled$1(Typography$1,{name:"MuiDayCalendar",slot:"WeekNumberLabel",overridesResolver:(tt,et)=>et.weekNumberLabel})(({theme:tt})=>({width:36,height:40,margin:"0 2px",textAlign:"center",display:"flex",justifyContent:"center",alignItems:"center",color:tt.palette.text.disabled})),PickersCalendarWeekNumber=styled$1(Typography$1,{name:"MuiDayCalendar",slot:"WeekNumber",overridesResolver:(tt,et)=>et.weekNumber})(({theme:tt})=>_extends$u({},tt.typography.caption,{width:DAY_SIZE,height:DAY_SIZE,padding:0,margin:`0 ${DAY_MARGIN}px`,color:tt.palette.text.disabled,fontSize:"0.75rem",alignItems:"center",justifyContent:"center",display:"inline-flex"})),PickersCalendarLoadingContainer=styled$1("div",{name:"MuiDayCalendar",slot:"LoadingContainer",overridesResolver:(tt,et)=>et.loadingContainer})({display:"flex",justifyContent:"center",alignItems:"center",minHeight:weeksContainerHeight}),PickersCalendarSlideTransition=styled$1(PickersSlideTransition,{name:"MuiDayCalendar",slot:"SlideTransition",overridesResolver:(tt,et)=>et.slideTransition})({minHeight:weeksContainerHeight}),PickersCalendarWeekContainer=styled$1("div",{name:"MuiDayCalendar",slot:"MonthContainer",overridesResolver:(tt,et)=>et.monthContainer})({overflow:"hidden"}),PickersCalendarWeek=styled$1("div",{name:"MuiDayCalendar",slot:"WeekContainer",overridesResolver:(tt,et)=>et.weekContainer})({margin:`${DAY_MARGIN}px 0`,display:"flex",justifyContent:"center"});function WrappedDay(tt){var et,nt,rt;let{parentProps:it,day:ot,focusableDay:at,selectedDays:st,isDateDisabled:lt,currentMonthNumber:ct,isViewFocused:ut}=tt,ht=_objectWithoutPropertiesLoose$m(tt,_excluded$v);const{disabled:dt,disableHighlightToday:pt,isMonthSwitchingAnimating:mt,showDaysOutsideCurrentMonth:gt,components:yt,componentsProps:bt,slots:vt,slotProps:xt,timezone:kt}=it,St=useUtils(),Tt=useNow(kt),At=at!==null&&St.isSameDay(ot,at),Et=st.some(Wt=>St.isSameDay(Wt,ot)),$t=St.isSameDay(ot,Tt),Dt=(et=(nt=vt==null?void 0:vt.day)!=null?nt:yt==null?void 0:yt.Day)!=null?et:PickersDay,jt=useSlotProps({elementType:Dt,externalSlotProps:(rt=xt==null?void 0:xt.day)!=null?rt:bt==null?void 0:bt.day,additionalProps:_extends$u({disableHighlightToday:pt,showDaysOutsideCurrentMonth:gt,role:"gridcell",isAnimating:mt,"data-timestamp":St.toJsDate(ot).valueOf()},ht),ownerState:_extends$u({},it,{day:ot,selected:Et})}),Pt=_objectWithoutPropertiesLoose$m(jt,_excluded2$9),Ct=reactExports.useMemo(()=>dt||lt(ot),[dt,lt,ot]),wt=reactExports.useMemo(()=>St.getMonth(ot)!==ct,[St,ot,ct]),It=reactExports.useMemo(()=>{const Wt=St.startOfMonth(St.setMonth(ot,ct));return gt?St.isSameDay(ot,St.startOfWeek(Wt)):St.isSameDay(ot,Wt)},[ct,ot,gt,St]),Ot=reactExports.useMemo(()=>{const Wt=St.endOfMonth(St.setMonth(ot,ct));return gt?St.isSameDay(ot,St.endOfWeek(Wt)):St.isSameDay(ot,Wt)},[ct,ot,gt,St]);return jsxRuntimeExports.jsx(Dt,_extends$u({},Pt,{day:ot,disabled:Ct,autoFocus:ut&&At,today:$t,outsideCurrentMonth:wt,isFirstVisibleCell:It,isLastVisibleCell:Ot,selected:Et,tabIndex:At?0:-1,"aria-selected":Et,"aria-current":$t?"date":void 0}))}function DayCalendar(tt){const et=useThemeProps({props:tt,name:"MuiDayCalendar"}),{onFocusedDayChange:nt,className:rt,currentMonth:it,selectedDays:ot,focusedDay:at,loading:st,onSelectedDaysChange:lt,onMonthSwitchingAnimationEnd:ct,readOnly:ut,reduceAnimations:ht,renderLoading:dt=()=>jsxRuntimeExports.jsx("span",{children:"..."}),slideDirection:pt,TransitionProps:mt,disablePast:gt,disableFuture:yt,minDate:bt,maxDate:vt,shouldDisableDate:xt,shouldDisableMonth:kt,shouldDisableYear:St,dayOfWeekFormatter:Tt,hasFocus:At,onFocusedViewChange:Et,gridLabelId:$t,displayWeekNumber:Dt,fixedWeekNumber:jt,autoFocus:Pt,timezone:Ct}=et,wt=useNow(Ct),It=useUtils(),Ot=useUtilityClasses$8(et),zt=useTheme().direction==="rtl",Ft=Tt||((cn,mn)=>It.format(mn,"weekdayShort").charAt(0).toUpperCase()),Nt=useIsDateDisabled({shouldDisableDate:xt,shouldDisableMonth:kt,shouldDisableYear:St,minDate:bt,maxDate:vt,disablePast:gt,disableFuture:yt,timezone:Ct}),Ut=useLocaleText(),[Mt,Ht]=useControlled({name:"DayCalendar",state:"hasFocus",controlled:At,default:Pt??!1}),[en,sn]=reactExports.useState(()=>at||wt),Kt=useEventCallback(cn=>{ut||lt(cn)}),rn=cn=>{Nt(cn)||(nt(cn),sn(cn),Et==null||Et(!0),Ht(!0))},nn=useEventCallback((cn,mn)=>{switch(cn.key){case"ArrowUp":rn(It.addDays(mn,-7)),cn.preventDefault();break;case"ArrowDown":rn(It.addDays(mn,7)),cn.preventDefault();break;case"ArrowLeft":{const In=It.addDays(mn,zt?1:-1),An=It.addMonths(mn,zt?1:-1),wn=findClosestEnabledDate({utils:It,date:In,minDate:zt?In:It.startOfMonth(An),maxDate:zt?It.endOfMonth(An):In,isDateDisabled:Nt,timezone:Ct});rn(wn||In),cn.preventDefault();break}case"ArrowRight":{const In=It.addDays(mn,zt?-1:1),An=It.addMonths(mn,zt?-1:1),wn=findClosestEnabledDate({utils:It,date:In,minDate:zt?It.startOfMonth(An):In,maxDate:zt?In:It.endOfMonth(An),isDateDisabled:Nt,timezone:Ct});rn(wn||In),cn.preventDefault();break}case"Home":rn(It.startOfWeek(mn)),cn.preventDefault();break;case"End":rn(It.endOfWeek(mn)),cn.preventDefault();break;case"PageUp":rn(It.addMonths(mn,1)),cn.preventDefault();break;case"PageDown":rn(It.addMonths(mn,-1)),cn.preventDefault();break}}),hn=useEventCallback((cn,mn)=>rn(mn)),vn=useEventCallback((cn,mn)=>{Mt&&It.isSameDay(en,mn)&&(Et==null||Et(!1))}),an=It.getMonth(it),Qt=reactExports.useMemo(()=>ot.filter(cn=>!!cn).map(cn=>It.startOfDay(cn)),[It,ot]),_n=an,Pn=reactExports.useMemo(()=>reactExports.createRef(),[_n]),$n=It.startOfWeek(wt),Nn=reactExports.useMemo(()=>{const cn=It.startOfMonth(it),mn=It.endOfMonth(it);return Nt(en)||It.isAfterDay(en,mn)||It.isBeforeDay(en,cn)?findClosestEnabledDate({utils:It,date:en,minDate:cn,maxDate:mn,disablePast:gt,disableFuture:yt,isDateDisabled:Nt,timezone:Ct}):en},[it,yt,gt,en,Nt,It,Ct]),Tn=reactExports.useMemo(()=>{const cn=It.setTimezone(it,Ct),mn=It.getWeekArray(cn);let In=It.addMonths(cn,1);for(;jt&&mn.length{mn.length{var In;const An=It.format(cn,"weekdayShort").slice(0,2);return jsxRuntimeExports.jsx(PickersCalendarWeekDayLabel,{variant:"caption",role:"columnheader","aria-label":It.format(It.addDays($n,mn),"weekday"),className:Ot.weekDayLabel,children:(In=Ft==null?void 0:Ft(An,cn))!=null?In:An},An+mn.toString())})]}),st?jsxRuntimeExports.jsx(PickersCalendarLoadingContainer,{className:Ot.loadingContainer,children:dt()}):jsxRuntimeExports.jsx(PickersCalendarSlideTransition,_extends$u({transKey:_n,onExited:ct,reduceAnimations:ht,slideDirection:pt,className:clsx(rt,Ot.slideTransition)},mt,{nodeRef:Pn,children:jsxRuntimeExports.jsx(PickersCalendarWeekContainer,{ref:Pn,role:"rowgroup",className:Ot.monthContainer,children:Tn.map((cn,mn)=>jsxRuntimeExports.jsxs(PickersCalendarWeek,{role:"row",className:Ot.weekContainer,"aria-rowindex":mn+1,children:[Dt&&jsxRuntimeExports.jsx(PickersCalendarWeekNumber,{className:Ot.weekNumber,role:"rowheader","aria-label":Ut.calendarWeekNumberAriaLabelText(It.getWeekNumber(cn[0])),children:Ut.calendarWeekNumberText(It.getWeekNumber(cn[0]))}),cn.map((In,An)=>jsxRuntimeExports.jsx(WrappedDay,{parentProps:et,day:In,selectedDays:Qt,focusableDay:Nn,onKeyDown:nn,onFocus:hn,onBlur:vn,onDaySelect:Kt,isDateDisabled:Nt,currentMonthNumber:an,isViewFocused:Mt,"aria-colindex":An+1},In.toString()))]},`week-${cn[0]}`))})}))]})}const createCalendarStateReducer=(tt,et,nt)=>(rt,it)=>{switch(it.type){case"changeMonth":return _extends$u({},rt,{slideDirection:it.direction,currentMonth:it.newMonth,isMonthSwitchingAnimating:!tt});case"finishMonthSwitchingAnimation":return _extends$u({},rt,{isMonthSwitchingAnimating:!1});case"changeFocusedDay":{if(rt.focusedDay!=null&&it.focusedDay!=null&&nt.isSameDay(it.focusedDay,rt.focusedDay))return rt;const ot=it.focusedDay!=null&&!et&&!nt.isSameMonth(rt.currentMonth,it.focusedDay);return _extends$u({},rt,{focusedDay:it.focusedDay,isMonthSwitchingAnimating:ot&&!tt&&!it.withoutMonthSwitchingAnimation,currentMonth:ot?nt.startOfMonth(it.focusedDay):rt.currentMonth,slideDirection:it.focusedDay!=null&&nt.isAfterDay(it.focusedDay,rt.currentMonth)?"left":"right"})}default:throw new Error("missing support")}},useCalendarState=tt=>{const{value:et,referenceDate:nt,defaultCalendarMonth:rt,disableFuture:it,disablePast:ot,disableSwitchToMonthOnDayFocus:at=!1,maxDate:st,minDate:lt,onMonthChange:ct,reduceAnimations:ut,shouldDisableDate:ht,timezone:dt}=tt,pt=useNow(dt),mt=useUtils(),gt=reactExports.useRef(createCalendarStateReducer(!!ut,at,mt)).current,yt=reactExports.useMemo(()=>{let Et=null;return nt?Et=nt:rt&&(Et=mt.startOfMonth(rt)),singleItemValueManager.getInitialReferenceValue({value:et,utils:mt,timezone:dt,props:tt,referenceDate:Et,granularity:SECTION_TYPE_GRANULARITY.day})},[]),[bt,vt]=reactExports.useReducer(gt,{isMonthSwitchingAnimating:!1,focusedDay:et||pt,currentMonth:mt.startOfMonth(yt),slideDirection:"left"}),xt=reactExports.useCallback(Et=>{vt(_extends$u({type:"changeMonth"},Et)),ct&&ct(Et.newMonth)},[ct]),kt=reactExports.useCallback(Et=>{const $t=Et;mt.isSameMonth($t,bt.currentMonth)||xt({newMonth:mt.startOfMonth($t),direction:mt.isAfterDay($t,bt.currentMonth)?"left":"right"})},[bt.currentMonth,xt,mt]),St=useIsDateDisabled({shouldDisableDate:ht,minDate:lt,maxDate:st,disableFuture:it,disablePast:ot,timezone:dt}),Tt=reactExports.useCallback(()=>{vt({type:"finishMonthSwitchingAnimation"})},[]),At=useEventCallback((Et,$t)=>{St(Et)||vt({type:"changeFocusedDay",focusedDay:Et,withoutMonthSwitchingAnimation:$t})});return{referenceDate:yt,calendarState:bt,changeMonth:kt,changeFocusedDay:At,isDateDisabled:St,onMonthSwitchingAnimationEnd:Tt,handleChangeMonth:xt}},_excluded$u=["ownerState"],useClearableField=({clearable:tt,fieldProps:et,InputProps:nt,onClear:rt,slots:it,slotProps:ot,components:at,componentsProps:st})=>{var lt,ct,ut,ht,dt,pt;const mt=useLocaleText(),gt=(lt=(ct=it==null?void 0:it.clearButton)!=null?ct:at==null?void 0:at.ClearButton)!=null?lt:IconButton$2,yt=useSlotProps({elementType:gt,externalSlotProps:(ut=ot==null?void 0:ot.clearButton)!=null?ut:st==null?void 0:st.clearButton,ownerState:{},className:"clearButton",additionalProps:{title:mt.fieldClearLabel}}),bt=_objectWithoutPropertiesLoose$m(yt,_excluded$u),vt=(ht=(dt=it==null?void 0:it.clearIcon)!=null?dt:at==null?void 0:at.ClearIcon)!=null?ht:ClearIcon,xt=useSlotProps({elementType:vt,externalSlotProps:(pt=ot==null?void 0:ot.clearIcon)!=null?pt:st==null?void 0:st.clearIcon,ownerState:{}}),kt=_extends$u({},nt,{endAdornment:tt?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(MuiInputAdornment,{position:"end",sx:{marginRight:nt!=null&&nt.endAdornment?-1:-1.5},children:jsxRuntimeExports.jsx(gt,_extends$u({},bt,{onClick:rt,children:jsxRuntimeExports.jsx(vt,_extends$u({fontSize:"small"},xt))}))}),nt==null?void 0:nt.endAdornment]}):nt==null?void 0:nt.endAdornment}),St=_extends$u({},et,{sx:[{"& .clearButton":{opacity:1},"@media (pointer: fine)":{"& .clearButton":{opacity:0},"&:hover, &:focus-within":{".clearButton":{opacity:1}}}},...Array.isArray(et.sx)?et.sx:[et.sx]]});return{InputProps:kt,fieldProps:St}},_excluded$t=["components","componentsProps","slots","slotProps","InputProps","inputProps"],_excluded2$8=["inputRef"],_excluded3$2=["ref","onPaste","onKeyDown","inputMode","readOnly","clearable","onClear"],DateField=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useThemeProps({props:et,name:"MuiDateField"}),{components:st,componentsProps:lt,slots:ct,slotProps:ut,InputProps:ht,inputProps:dt}=at,pt=_objectWithoutPropertiesLoose$m(at,_excluded$t),mt=at,gt=(rt=(it=ct==null?void 0:ct.textField)!=null?it:st==null?void 0:st.TextField)!=null?rt:MuiTextField,yt=useSlotProps({elementType:gt,externalSlotProps:(ot=ut==null?void 0:ut.textField)!=null?ot:lt==null?void 0:lt.textField,externalForwardedProps:pt,ownerState:mt}),{inputRef:bt}=yt,vt=_objectWithoutPropertiesLoose$m(yt,_excluded2$8);vt.inputProps=_extends$u({},dt,vt.inputProps),vt.InputProps=_extends$u({},ht,vt.InputProps);const xt=useDateField({props:vt,inputRef:bt}),{ref:kt,onPaste:St,onKeyDown:Tt,inputMode:At,readOnly:Et,clearable:$t,onClear:Dt}=xt,jt=_objectWithoutPropertiesLoose$m(xt,_excluded3$2),{InputProps:Pt,fieldProps:Ct}=useClearableField({onClear:Dt,clearable:$t,fieldProps:jt,InputProps:jt.InputProps,slots:ct,slotProps:ut,components:st,componentsProps:lt});return jsxRuntimeExports.jsx(gt,_extends$u({ref:nt},Ct,{InputProps:_extends$u({},Pt,{readOnly:Et}),inputProps:_extends$u({},jt.inputProps,{inputMode:At,onPaste:St,onKeyDown:Tt,ref:kt})}))}),getPickersFadeTransitionGroupUtilityClass=tt=>generateUtilityClass("MuiPickersFadeTransitionGroup",tt);generateUtilityClasses("MuiPickersFadeTransitionGroup",["root"]);const useUtilityClasses$7=tt=>{const{classes:et}=tt;return composeClasses({root:["root"]},getPickersFadeTransitionGroupUtilityClass,et)},PickersFadeTransitionGroupRoot=styled$1(TransitionGroup$1,{name:"MuiPickersFadeTransitionGroup",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"block",position:"relative"});function PickersFadeTransitionGroup(tt){const et=useThemeProps({props:tt,name:"MuiPickersFadeTransitionGroup"}),{children:nt,className:rt,reduceAnimations:it,transKey:ot}=et,at=useUtilityClasses$7(et),st=useTheme();return it?nt:jsxRuntimeExports.jsx(PickersFadeTransitionGroupRoot,{className:clsx(at.root,rt),children:jsxRuntimeExports.jsx(Fade$1,{appear:!1,mountOnEnter:!0,unmountOnExit:!0,timeout:{appear:st.transitions.duration.enteringScreen,enter:st.transitions.duration.enteringScreen,exit:0},children:nt},ot)})}function getPickersMonthUtilityClass(tt){return generateUtilityClass("MuiPickersMonth",tt)}const pickersMonthClasses=generateUtilityClasses("MuiPickersMonth",["root","monthButton","disabled","selected"]),_excluded$s=["autoFocus","children","disabled","selected","value","tabIndex","onClick","onKeyDown","onFocus","onBlur","aria-current","aria-label","monthsPerRow"],useUtilityClasses$6=tt=>{const{disabled:et,selected:nt,classes:rt}=tt;return composeClasses({root:["root"],monthButton:["monthButton",et&&"disabled",nt&&"selected"]},getPickersMonthUtilityClass,rt)},PickersMonthRoot=styled$1("div",{name:"MuiPickersMonth",slot:"Root",overridesResolver:(tt,et)=>[et.root]})(({ownerState:tt})=>({flexBasis:tt.monthsPerRow===3?"33.3%":"25%",display:"flex",alignItems:"center",justifyContent:"center"})),PickersMonthButton=styled$1("button",{name:"MuiPickersMonth",slot:"MonthButton",overridesResolver:(tt,et)=>[et.monthButton,{[`&.${pickersMonthClasses.disabled}`]:et.disabled},{[`&.${pickersMonthClasses.selected}`]:et.selected}]})(({theme:tt})=>_extends$u({color:"unset",backgroundColor:"transparent",border:0,outline:0},tt.typography.subtitle1,{margin:"8px 0",height:36,width:72,borderRadius:18,cursor:"pointer","&:focus":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.hoverOpacity)},"&:hover":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.hoverOpacity)},"&:disabled":{cursor:"auto",pointerEvents:"none"},[`&.${pickersMonthClasses.disabled}`]:{color:(tt.vars||tt).palette.text.secondary},[`&.${pickersMonthClasses.selected}`]:{color:(tt.vars||tt).palette.primary.contrastText,backgroundColor:(tt.vars||tt).palette.primary.main,"&:focus, &:hover":{backgroundColor:(tt.vars||tt).palette.primary.dark}}})),PickersMonth=reactExports.memo(function(et){const nt=useThemeProps({props:et,name:"MuiPickersMonth"}),{autoFocus:rt,children:it,disabled:ot,selected:at,value:st,tabIndex:lt,onClick:ct,onKeyDown:ut,onFocus:ht,onBlur:dt,"aria-current":pt,"aria-label":mt}=nt,gt=_objectWithoutPropertiesLoose$m(nt,_excluded$s),yt=reactExports.useRef(null),bt=useUtilityClasses$6(nt);return useEnhancedEffect$1(()=>{if(rt){var vt;(vt=yt.current)==null||vt.focus()}},[rt]),jsxRuntimeExports.jsx(PickersMonthRoot,_extends$u({className:bt.root,ownerState:nt},gt,{children:jsxRuntimeExports.jsx(PickersMonthButton,{ref:yt,disabled:ot,type:"button",role:"radio",tabIndex:ot?-1:lt,"aria-current":pt,"aria-checked":at,"aria-label":mt,onClick:vt=>ct(vt,st),onKeyDown:vt=>ut(vt,st),onFocus:vt=>ht(vt,st),onBlur:vt=>dt(vt,st),className:bt.monthButton,ownerState:nt,children:it})}))});function getMonthCalendarUtilityClass(tt){return generateUtilityClass("MuiMonthCalendar",tt)}generateUtilityClasses("MuiMonthCalendar",["root"]);const _excluded$r=["className","value","defaultValue","referenceDate","disabled","disableFuture","disablePast","maxDate","minDate","onChange","shouldDisableMonth","readOnly","disableHighlightToday","autoFocus","onMonthFocus","hasFocus","onFocusedViewChange","monthsPerRow","timezone","gridLabelId"],useUtilityClasses$5=tt=>{const{classes:et}=tt;return composeClasses({root:["root"]},getMonthCalendarUtilityClass,et)};function useMonthCalendarDefaultizedProps(tt,et){const nt=useUtils(),rt=useDefaultDates(),it=useThemeProps({props:tt,name:et});return _extends$u({disableFuture:!1,disablePast:!1},it,{minDate:applyDefaultDate(nt,it.minDate,rt.minDate),maxDate:applyDefaultDate(nt,it.maxDate,rt.maxDate)})}const MonthCalendarRoot=styled$1("div",{name:"MuiMonthCalendar",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex",flexWrap:"wrap",alignContent:"stretch",padding:"0 4px",width:DIALOG_WIDTH,boxSizing:"border-box"}),MonthCalendar=reactExports.forwardRef(function(et,nt){const rt=useMonthCalendarDefaultizedProps(et,"MuiMonthCalendar"),{className:it,value:ot,defaultValue:at,referenceDate:st,disabled:lt,disableFuture:ct,disablePast:ut,maxDate:ht,minDate:dt,onChange:pt,shouldDisableMonth:mt,readOnly:gt,disableHighlightToday:yt,autoFocus:bt=!1,onMonthFocus:vt,hasFocus:xt,onFocusedViewChange:kt,monthsPerRow:St=3,timezone:Tt,gridLabelId:At}=rt,Et=_objectWithoutPropertiesLoose$m(rt,_excluded$r),{value:$t,handleValueChange:Dt,timezone:jt}=useControlledValueWithTimezone({name:"MonthCalendar",timezone:Tt,value:ot,defaultValue:at,onChange:pt,valueManager:singleItemValueManager}),Pt=useNow(jt),Ct=useTheme$2(),wt=useUtils(),It=reactExports.useMemo(()=>singleItemValueManager.getInitialReferenceValue({value:$t,utils:wt,props:rt,timezone:jt,referenceDate:st,granularity:SECTION_TYPE_GRANULARITY.month}),[]),Ot=rt,Wt=useUtilityClasses$5(Ot),zt=reactExports.useMemo(()=>wt.getMonth(Pt),[wt,Pt]),Ft=reactExports.useMemo(()=>$t!=null?wt.getMonth($t):yt?null:wt.getMonth(It),[$t,wt,yt,It]),[Nt,Ut]=reactExports.useState(()=>Ft||zt),[Mt,Ht]=useControlled({name:"MonthCalendar",state:"hasFocus",controlled:xt,default:bt??!1}),en=useEventCallback(an=>{Ht(an),kt&&kt(an)}),sn=reactExports.useCallback(an=>{const Qt=wt.startOfMonth(ut&&wt.isAfter(Pt,dt)?Pt:dt),_n=wt.startOfMonth(ct&&wt.isBefore(Pt,ht)?Pt:ht),Pn=wt.startOfMonth(an);return wt.isBefore(Pn,Qt)||wt.isAfter(Pn,_n)?!0:mt?mt(Pn):!1},[ct,ut,ht,dt,Pt,mt,wt]),Kt=useEventCallback((an,Qt)=>{if(gt)return;const _n=wt.setMonth($t??It,Qt);Dt(_n)}),rn=useEventCallback(an=>{sn(wt.setMonth($t??It,an))||(Ut(an),en(!0),vt&&vt(an))});reactExports.useEffect(()=>{Ut(an=>Ft!==null&&an!==Ft?Ft:an)},[Ft]);const nn=useEventCallback((an,Qt)=>{switch(an.key){case"ArrowUp":rn((12+Qt-3)%12),an.preventDefault();break;case"ArrowDown":rn((12+Qt+3)%12),an.preventDefault();break;case"ArrowLeft":rn((12+Qt+(Ct.direction==="ltr"?-1:1))%12),an.preventDefault();break;case"ArrowRight":rn((12+Qt+(Ct.direction==="ltr"?1:-1))%12),an.preventDefault();break}}),hn=useEventCallback((an,Qt)=>{rn(Qt)}),vn=useEventCallback((an,Qt)=>{Nt===Qt&&en(!1)});return jsxRuntimeExports.jsx(MonthCalendarRoot,_extends$u({ref:nt,className:clsx(Wt.root,it),ownerState:Ot,role:"radiogroup","aria-labelledby":At},Et,{children:getMonthsInYear(wt,$t??It).map(an=>{const Qt=wt.getMonth(an),_n=wt.format(an,"monthShort"),Pn=wt.format(an,"month"),$n=Qt===Ft,Nn=lt||sn(an);return jsxRuntimeExports.jsx(PickersMonth,{selected:$n,value:Qt,onClick:Kt,onKeyDown:nn,autoFocus:Mt&&Qt===Nt,disabled:Nn,tabIndex:Qt===Nt?0:-1,onFocus:hn,onBlur:vn,"aria-current":zt===Qt?"date":void 0,"aria-label":Pn,monthsPerRow:St,children:_n},_n)})}))});function getPickersYearUtilityClass(tt){return generateUtilityClass("MuiPickersYear",tt)}const pickersYearClasses=generateUtilityClasses("MuiPickersYear",["root","yearButton","selected","disabled"]),_excluded$q=["autoFocus","className","children","disabled","selected","value","tabIndex","onClick","onKeyDown","onFocus","onBlur","aria-current","yearsPerRow"],useUtilityClasses$4=tt=>{const{disabled:et,selected:nt,classes:rt}=tt;return composeClasses({root:["root"],yearButton:["yearButton",et&&"disabled",nt&&"selected"]},getPickersYearUtilityClass,rt)},PickersYearRoot=styled$1("div",{name:"MuiPickersYear",slot:"Root",overridesResolver:(tt,et)=>[et.root]})(({ownerState:tt})=>({flexBasis:tt.yearsPerRow===3?"33.3%":"25%",display:"flex",alignItems:"center",justifyContent:"center"})),PickersYearButton=styled$1("button",{name:"MuiPickersYear",slot:"YearButton",overridesResolver:(tt,et)=>[et.yearButton,{[`&.${pickersYearClasses.disabled}`]:et.disabled},{[`&.${pickersYearClasses.selected}`]:et.selected}]})(({theme:tt})=>_extends$u({color:"unset",backgroundColor:"transparent",border:0,outline:0},tt.typography.subtitle1,{margin:"6px 0",height:36,width:72,borderRadius:18,cursor:"pointer","&:focus":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.focusOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.focusOpacity)},"&:hover":{backgroundColor:tt.vars?`rgba(${tt.vars.palette.action.activeChannel} / ${tt.vars.palette.action.hoverOpacity})`:alpha$1(tt.palette.action.active,tt.palette.action.hoverOpacity)},"&:disabled":{cursor:"auto",pointerEvents:"none"},[`&.${pickersYearClasses.disabled}`]:{color:(tt.vars||tt).palette.text.secondary},[`&.${pickersYearClasses.selected}`]:{color:(tt.vars||tt).palette.primary.contrastText,backgroundColor:(tt.vars||tt).palette.primary.main,"&:focus, &:hover":{backgroundColor:(tt.vars||tt).palette.primary.dark}}})),PickersYear=reactExports.memo(function(et){const nt=useThemeProps({props:et,name:"MuiPickersYear"}),{autoFocus:rt,className:it,children:ot,disabled:at,selected:st,value:lt,tabIndex:ct,onClick:ut,onKeyDown:ht,onFocus:dt,onBlur:pt,"aria-current":mt}=nt,gt=_objectWithoutPropertiesLoose$m(nt,_excluded$q),yt=reactExports.useRef(null),bt=useUtilityClasses$4(nt);return reactExports.useEffect(()=>{rt&&yt.current.focus()},[rt]),jsxRuntimeExports.jsx(PickersYearRoot,_extends$u({className:clsx(bt.root,it),ownerState:nt},gt,{children:jsxRuntimeExports.jsx(PickersYearButton,{ref:yt,disabled:at,type:"button",role:"radio",tabIndex:at?-1:ct,"aria-current":mt,"aria-checked":st,onClick:vt=>ut(vt,lt),onKeyDown:vt=>ht(vt,lt),onFocus:vt=>dt(vt,lt),onBlur:vt=>pt(vt,lt),className:bt.yearButton,ownerState:nt,children:ot})}))});function getYearCalendarUtilityClass(tt){return generateUtilityClass("MuiYearCalendar",tt)}generateUtilityClasses("MuiYearCalendar",["root"]);const _excluded$p=["autoFocus","className","value","defaultValue","referenceDate","disabled","disableFuture","disablePast","maxDate","minDate","onChange","readOnly","shouldDisableYear","disableHighlightToday","onYearFocus","hasFocus","onFocusedViewChange","yearsPerRow","timezone","gridLabelId"],useUtilityClasses$3=tt=>{const{classes:et}=tt;return composeClasses({root:["root"]},getYearCalendarUtilityClass,et)};function useYearCalendarDefaultizedProps(tt,et){var nt;const rt=useUtils(),it=useDefaultDates(),ot=useThemeProps({props:tt,name:et});return _extends$u({disablePast:!1,disableFuture:!1},ot,{yearsPerRow:(nt=ot.yearsPerRow)!=null?nt:3,minDate:applyDefaultDate(rt,ot.minDate,it.minDate),maxDate:applyDefaultDate(rt,ot.maxDate,it.maxDate)})}const YearCalendarRoot=styled$1("div",{name:"MuiYearCalendar",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex",flexDirection:"row",flexWrap:"wrap",overflowY:"auto",height:"100%",padding:"0 4px",width:DIALOG_WIDTH,maxHeight:MAX_CALENDAR_HEIGHT,boxSizing:"border-box",position:"relative"}),YearCalendar=reactExports.forwardRef(function(et,nt){const rt=useYearCalendarDefaultizedProps(et,"MuiYearCalendar"),{autoFocus:it,className:ot,value:at,defaultValue:st,referenceDate:lt,disabled:ct,disableFuture:ut,disablePast:ht,maxDate:dt,minDate:pt,onChange:mt,readOnly:gt,shouldDisableYear:yt,disableHighlightToday:bt,onYearFocus:vt,hasFocus:xt,onFocusedViewChange:kt,yearsPerRow:St,timezone:Tt,gridLabelId:At}=rt,Et=_objectWithoutPropertiesLoose$m(rt,_excluded$p),{value:$t,handleValueChange:Dt,timezone:jt}=useControlledValueWithTimezone({name:"YearCalendar",timezone:Tt,value:at,defaultValue:st,onChange:mt,valueManager:singleItemValueManager}),Pt=useNow(jt),Ct=useTheme$2(),wt=useUtils(),It=reactExports.useMemo(()=>singleItemValueManager.getInitialReferenceValue({value:$t,utils:wt,props:rt,timezone:jt,referenceDate:lt,granularity:SECTION_TYPE_GRANULARITY.year}),[]),Ot=rt,Wt=useUtilityClasses$3(Ot),zt=reactExports.useMemo(()=>wt.getYear(Pt),[wt,Pt]),Ft=reactExports.useMemo(()=>$t!=null?wt.getYear($t):bt?null:wt.getYear(It),[$t,wt,bt,It]),[Nt,Ut]=reactExports.useState(()=>Ft||zt),[Mt,Ht]=useControlled({name:"YearCalendar",state:"hasFocus",controlled:xt,default:it??!1}),en=useEventCallback(_n=>{Ht(_n),kt&&kt(_n)}),sn=reactExports.useCallback(_n=>{if(ht&&wt.isBeforeYear(_n,Pt)||ut&&wt.isAfterYear(_n,Pt)||pt&&wt.isBeforeYear(_n,pt)||dt&&wt.isAfterYear(_n,dt))return!0;if(!yt)return!1;const Pn=wt.startOfYear(_n);return yt(Pn)},[ut,ht,dt,pt,Pt,yt,wt]),Kt=useEventCallback((_n,Pn)=>{if(gt)return;const $n=wt.setYear($t??It,Pn);Dt($n)}),rn=useEventCallback(_n=>{sn(wt.setYear($t??It,_n))||(Ut(_n),en(!0),vt==null||vt(_n))});reactExports.useEffect(()=>{Ut(_n=>Ft!==null&&_n!==Ft?Ft:_n)},[Ft]);const nn=useEventCallback((_n,Pn)=>{switch(_n.key){case"ArrowUp":rn(Pn-St),_n.preventDefault();break;case"ArrowDown":rn(Pn+St),_n.preventDefault();break;case"ArrowLeft":rn(Pn+(Ct.direction==="ltr"?-1:1)),_n.preventDefault();break;case"ArrowRight":rn(Pn+(Ct.direction==="ltr"?1:-1)),_n.preventDefault();break}}),hn=useEventCallback((_n,Pn)=>{rn(Pn)}),vn=useEventCallback((_n,Pn)=>{Nt===Pn&&en(!1)}),an=reactExports.useRef(null),Qt=useForkRef(nt,an);return reactExports.useEffect(()=>{if(it||an.current===null)return;const _n=an.current.querySelector('[tabindex="0"]');if(!_n)return;const Pn=_n.offsetHeight,$n=_n.offsetTop,Nn=an.current.clientHeight,Tn=an.current.scrollTop,cn=$n+Pn;Pn>Nn||$n{const Pn=wt.getYear(_n),$n=Pn===Ft,Nn=ct||sn(_n);return jsxRuntimeExports.jsx(PickersYear,{selected:$n,value:Pn,onClick:Kt,onKeyDown:nn,autoFocus:Mt&&Pn===Nt,disabled:Nn,tabIndex:Pn===Nt?0:-1,onFocus:hn,onBlur:vn,"aria-current":zt===Pn?"date":void 0,yearsPerRow:St,children:wt.format(_n,"year")},wt.format(_n,"year"))})}))}),getPickersCalendarHeaderUtilityClass=tt=>generateUtilityClass("MuiPickersCalendarHeader",tt),pickersCalendarHeaderClasses=generateUtilityClasses("MuiPickersCalendarHeader",["root","labelContainer","label","switchViewButton","switchViewIcon"]),_excluded$o=["slots","slotProps","currentMonth","disabled","disableFuture","disablePast","maxDate","minDate","onMonthChange","onViewChange","view","reduceAnimations","views","labelId","className","timezone"],_excluded2$7=["ownerState"],useUtilityClasses$2=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],labelContainer:["labelContainer"],label:["label"],switchViewButton:["switchViewButton"],switchViewIcon:["switchViewIcon"]},getPickersCalendarHeaderUtilityClass,et)},PickersCalendarHeaderRoot=styled$1("div",{name:"MuiPickersCalendarHeader",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex",alignItems:"center",marginTop:16,marginBottom:8,paddingLeft:24,paddingRight:12,maxHeight:30,minHeight:30}),PickersCalendarHeaderLabelContainer=styled$1("div",{name:"MuiPickersCalendarHeader",slot:"LabelContainer",overridesResolver:(tt,et)=>et.labelContainer})(({theme:tt})=>_extends$u({display:"flex",overflow:"hidden",alignItems:"center",cursor:"pointer",marginRight:"auto"},tt.typography.body1,{fontWeight:tt.typography.fontWeightMedium})),PickersCalendarHeaderLabel=styled$1("div",{name:"MuiPickersCalendarHeader",slot:"Label",overridesResolver:(tt,et)=>et.label})({marginRight:6}),PickersCalendarHeaderSwitchViewButton=styled$1(IconButton$2,{name:"MuiPickersCalendarHeader",slot:"SwitchViewButton",overridesResolver:(tt,et)=>et.switchViewButton})(({ownerState:tt})=>_extends$u({marginRight:"auto"},tt.view==="year"&&{[`.${pickersCalendarHeaderClasses.switchViewIcon}`]:{transform:"rotate(180deg)"}})),PickersCalendarHeaderSwitchViewIcon=styled$1(ArrowDropDownIcon,{name:"MuiPickersCalendarHeader",slot:"SwitchViewIcon",overridesResolver:(tt,et)=>et.switchViewIcon})(({theme:tt})=>({willChange:"transform",transition:tt.transitions.create("transform"),transform:"rotate(0deg)"})),PickersCalendarHeader=reactExports.forwardRef(function(et,nt){var rt,it;const ot=useLocaleText(),at=useUtils(),st=useThemeProps({props:et,name:"MuiPickersCalendarHeader"}),{slots:lt,slotProps:ct,currentMonth:ut,disabled:ht,disableFuture:dt,disablePast:pt,maxDate:mt,minDate:gt,onMonthChange:yt,onViewChange:bt,view:vt,reduceAnimations:xt,views:kt,labelId:St,className:Tt,timezone:At}=st,Et=_objectWithoutPropertiesLoose$m(st,_excluded$o),$t=st,Dt=useUtilityClasses$2(st),jt=(rt=lt==null?void 0:lt.switchViewButton)!=null?rt:PickersCalendarHeaderSwitchViewButton,Pt=useSlotProps({elementType:jt,externalSlotProps:ct==null?void 0:ct.switchViewButton,additionalProps:{size:"small","aria-label":ot.calendarViewSwitchingButtonAriaLabel(vt)},ownerState:$t,className:Dt.switchViewButton}),Ct=(it=lt==null?void 0:lt.switchViewIcon)!=null?it:PickersCalendarHeaderSwitchViewIcon,wt=useSlotProps({elementType:Ct,externalSlotProps:ct==null?void 0:ct.switchViewIcon,ownerState:void 0,className:Dt.switchViewIcon}),It=_objectWithoutPropertiesLoose$m(wt,_excluded2$7),Ot=()=>yt(at.addMonths(ut,1),"left"),Wt=()=>yt(at.addMonths(ut,-1),"right"),zt=useNextMonthDisabled(ut,{disableFuture:dt,maxDate:mt,timezone:At}),Ft=usePreviousMonthDisabled(ut,{disablePast:pt,minDate:gt,timezone:At}),Nt=()=>{if(!(kt.length===1||!bt||ht))if(kt.length===2)bt(kt.find(Ut=>Ut!==vt)||kt[0]);else{const Ut=kt.indexOf(vt)!==0?0:1;bt(kt[Ut])}};return kt.length===1&&kt[0]==="year"?null:jsxRuntimeExports.jsxs(PickersCalendarHeaderRoot,_extends$u({},Et,{ownerState:$t,className:clsx(Tt,Dt.root),ref:nt,children:[jsxRuntimeExports.jsxs(PickersCalendarHeaderLabelContainer,{role:"presentation",onClick:Nt,ownerState:$t,"aria-live":"polite",className:Dt.labelContainer,children:[jsxRuntimeExports.jsx(PickersFadeTransitionGroup,{reduceAnimations:xt,transKey:at.format(ut,"monthAndYear"),children:jsxRuntimeExports.jsx(PickersCalendarHeaderLabel,{id:St,ownerState:$t,className:Dt.label,children:at.format(ut,"monthAndYear")})}),kt.length>1&&!ht&&jsxRuntimeExports.jsx(jt,_extends$u({},Pt,{children:jsxRuntimeExports.jsx(Ct,_extends$u({},It))}))]}),jsxRuntimeExports.jsx(Fade$1,{in:vt==="day",children:jsxRuntimeExports.jsx(PickersArrowSwitcher,{slots:lt,slotProps:ct,onGoToPrevious:Wt,isPreviousDisabled:Ft,previousLabel:ot.previousMonth,onGoToNext:Ot,isNextDisabled:zt,nextLabel:ot.nextMonth})})]}))}),getDateCalendarUtilityClass=tt=>generateUtilityClass("MuiDateCalendar",tt);generateUtilityClasses("MuiDateCalendar",["root","viewTransitionContainer"]);const _excluded$n=["autoFocus","onViewChange","value","defaultValue","referenceDate","disableFuture","disablePast","defaultCalendarMonth","onChange","onYearChange","onMonthChange","reduceAnimations","shouldDisableDate","shouldDisableMonth","shouldDisableYear","view","views","openTo","className","disabled","readOnly","minDate","maxDate","disableHighlightToday","focusedView","onFocusedViewChange","showDaysOutsideCurrentMonth","fixedWeekNumber","dayOfWeekFormatter","components","componentsProps","slots","slotProps","loading","renderLoading","displayWeekNumber","yearsPerRow","monthsPerRow","timezone"],useUtilityClasses$1=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],viewTransitionContainer:["viewTransitionContainer"]},getDateCalendarUtilityClass,et)};function useDateCalendarDefaultizedProps(tt,et){var nt,rt,it,ot,at,st,lt;const ct=useUtils(),ut=useDefaultDates(),ht=useDefaultReduceAnimations(),dt=useThemeProps({props:tt,name:et});return _extends$u({},dt,{loading:(nt=dt.loading)!=null?nt:!1,disablePast:(rt=dt.disablePast)!=null?rt:!1,disableFuture:(it=dt.disableFuture)!=null?it:!1,openTo:(ot=dt.openTo)!=null?ot:"day",views:(at=dt.views)!=null?at:["year","day"],reduceAnimations:(st=dt.reduceAnimations)!=null?st:ht,renderLoading:(lt=dt.renderLoading)!=null?lt:()=>jsxRuntimeExports.jsx("span",{children:"..."}),minDate:applyDefaultDate(ct,dt.minDate,ut.minDate),maxDate:applyDefaultDate(ct,dt.maxDate,ut.maxDate)})}const DateCalendarRoot=styled$1(PickerViewRoot,{name:"MuiDateCalendar",slot:"Root",overridesResolver:(tt,et)=>et.root})({display:"flex",flexDirection:"column",height:VIEW_HEIGHT}),DateCalendarViewTransitionContainer=styled$1(PickersFadeTransitionGroup,{name:"MuiDateCalendar",slot:"ViewTransitionContainer",overridesResolver:(tt,et)=>et.viewTransitionContainer})({}),DateCalendar=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useUtils(),st=useId(),lt=useDateCalendarDefaultizedProps(et,"MuiDateCalendar"),{autoFocus:ct,onViewChange:ut,value:ht,defaultValue:dt,referenceDate:pt,disableFuture:mt,disablePast:gt,defaultCalendarMonth:yt,onChange:bt,onYearChange:vt,onMonthChange:xt,reduceAnimations:kt,shouldDisableDate:St,shouldDisableMonth:Tt,shouldDisableYear:At,view:Et,views:$t,openTo:Dt,className:jt,disabled:Pt,readOnly:Ct,minDate:wt,maxDate:It,disableHighlightToday:Ot,focusedView:Wt,onFocusedViewChange:zt,showDaysOutsideCurrentMonth:Ft,fixedWeekNumber:Nt,dayOfWeekFormatter:Ut,components:Mt,componentsProps:Ht,slots:en,slotProps:sn,loading:Kt,renderLoading:rn,displayWeekNumber:nn,yearsPerRow:hn,monthsPerRow:vn,timezone:an}=lt,Qt=_objectWithoutPropertiesLoose$m(lt,_excluded$n),{value:_n,handleValueChange:Pn,timezone:$n}=useControlledValueWithTimezone({name:"DateCalendar",timezone:an,value:ht,defaultValue:dt,onChange:bt,valueManager:singleItemValueManager}),{view:Nn,setView:Tn,focusedView:cn,setFocusedView:mn,goToNextView:In,setValueAndGoToNextView:An}=useViews({view:Et,views:$t,openTo:Dt,onChange:Pn,onViewChange:ut,autoFocus:ct,focusedView:Wt,onFocusedViewChange:zt}),{referenceDate:wn,calendarState:fn,changeFocusedDay:pn,changeMonth:kn,handleChangeMonth:Dn,isDateDisabled:un,onMonthSwitchingAnimationEnd:Zt}=useCalendarState({value:_n,defaultCalendarMonth:yt,referenceDate:pt,reduceAnimations:kt,onMonthChange:xt,minDate:wt,maxDate:It,shouldDisableDate:St,disablePast:gt,disableFuture:mt,timezone:$n}),Xt=Pt&&_n||wt,Sn=Pt&&_n||It,Rn=`${st}-grid-label`,jn=cn!==null,On=(rt=(it=en==null?void 0:en.calendarHeader)!=null?it:Mt==null?void 0:Mt.CalendarHeader)!=null?rt:PickersCalendarHeader,Zn=useSlotProps({elementType:On,externalSlotProps:(ot=sn==null?void 0:sn.calendarHeader)!=null?ot:Ht==null?void 0:Ht.calendarHeader,additionalProps:{views:$t,view:Nn,currentMonth:fn.currentMonth,onViewChange:Tn,onMonthChange:(Tr,Ar)=>Dn({newMonth:Tr,direction:Ar}),minDate:Xt,maxDate:Sn,disabled:Pt,disablePast:gt,disableFuture:mt,reduceAnimations:kt,timezone:$n,labelId:Rn,slots:en,slotProps:sn},ownerState:lt}),Vn=useEventCallback(Tr=>{const Ar=at.startOfMonth(Tr),qr=at.endOfMonth(Tr),jr=un(Tr)?findClosestEnabledDate({utils:at,date:Tr,minDate:at.isBefore(wt,Ar)?Ar:wt,maxDate:at.isAfter(It,qr)?qr:It,disablePast:gt,disableFuture:mt,isDateDisabled:un,timezone:$n}):Tr;jr?(An(jr,"finish"),xt==null||xt(Ar)):(In(),kn(Ar)),pn(jr,!0)}),qn=useEventCallback(Tr=>{const Ar=at.startOfYear(Tr),qr=at.endOfYear(Tr),jr=un(Tr)?findClosestEnabledDate({utils:at,date:Tr,minDate:at.isBefore(wt,Ar)?Ar:wt,maxDate:at.isAfter(It,qr)?qr:It,disablePast:gt,disableFuture:mt,isDateDisabled:un,timezone:$n}):Tr;jr?(An(jr,"finish"),vt==null||vt(jr)):(In(),kn(Ar)),pn(jr,!0)}),zn=useEventCallback(Tr=>Pn(Tr&&mergeDateAndTime(at,Tr,_n??wn),"finish"));reactExports.useEffect(()=>{_n!=null&&at.isValid(_n)&&kn(_n)},[_n]);const Jn=lt,Hn=useUtilityClasses$1(Jn),pr={disablePast:gt,disableFuture:mt,maxDate:It,minDate:wt},fr={disableHighlightToday:Ot,readOnly:Ct,disabled:Pt,timezone:$n,gridLabelId:Rn},xr=reactExports.useRef(Nn);reactExports.useEffect(()=>{xr.current!==Nn&&(cn===xr.current&&mn(Nn,!0),xr.current=Nn)},[cn,mn,Nn]);const io=reactExports.useMemo(()=>[_n],[_n]);return jsxRuntimeExports.jsxs(DateCalendarRoot,_extends$u({ref:nt,className:clsx(Hn.root,jt),ownerState:Jn},Qt,{children:[jsxRuntimeExports.jsx(On,_extends$u({},Zn)),jsxRuntimeExports.jsx(DateCalendarViewTransitionContainer,{reduceAnimations:kt,className:Hn.viewTransitionContainer,transKey:Nn,ownerState:Jn,children:jsxRuntimeExports.jsxs("div",{children:[Nn==="year"&&jsxRuntimeExports.jsx(YearCalendar,_extends$u({},pr,fr,{value:_n,onChange:qn,shouldDisableYear:At,hasFocus:jn,onFocusedViewChange:Tr=>mn("year",Tr),yearsPerRow:hn,referenceDate:wn})),Nn==="month"&&jsxRuntimeExports.jsx(MonthCalendar,_extends$u({},pr,fr,{hasFocus:jn,className:jt,value:_n,onChange:Vn,shouldDisableMonth:Tt,onFocusedViewChange:Tr=>mn("month",Tr),monthsPerRow:vn,referenceDate:wn})),Nn==="day"&&jsxRuntimeExports.jsx(DayCalendar,_extends$u({},fn,pr,fr,{onMonthSwitchingAnimationEnd:Zt,onFocusedDayChange:pn,reduceAnimations:kt,selectedDays:io,onSelectedDaysChange:zn,shouldDisableDate:St,shouldDisableMonth:Tt,shouldDisableYear:At,hasFocus:jn,onFocusedViewChange:Tr=>mn("day",Tr),showDaysOutsideCurrentMonth:Ft,fixedWeekNumber:Nt,dayOfWeekFormatter:Ut,displayWeekNumber:nn,components:Mt,componentsProps:Ht,slots:en,slotProps:sn,loading:Kt,renderLoading:rn}))]})})]}))});function getDatePickerToolbarUtilityClass(tt){return generateUtilityClass("MuiDatePickerToolbar",tt)}generateUtilityClasses("MuiDatePickerToolbar",["root","title"]);const _excluded$m=["value","isLandscape","onChange","toolbarFormat","toolbarPlaceholder","views"],useUtilityClasses=tt=>{const{classes:et}=tt;return composeClasses({root:["root"],title:["title"]},getDatePickerToolbarUtilityClass,et)},DatePickerToolbarRoot=styled$1(PickersToolbar,{name:"MuiDatePickerToolbar",slot:"Root",overridesResolver:(tt,et)=>et.root})({}),DatePickerToolbarTitle=styled$1(Typography$1,{name:"MuiDatePickerToolbar",slot:"Title",overridesResolver:(tt,et)=>et.title})(({ownerState:tt})=>_extends$u({},tt.isLandscape&&{margin:"auto 16px auto auto"})),DatePickerToolbar=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDatePickerToolbar"}),{value:it,isLandscape:ot,toolbarFormat:at,toolbarPlaceholder:st="––",views:lt}=rt,ct=_objectWithoutPropertiesLoose$m(rt,_excluded$m),ut=useUtils(),ht=useLocaleText(),dt=useUtilityClasses(rt),pt=reactExports.useMemo(()=>{if(!it)return st;const gt=resolveDateFormat(ut,{format:at,views:lt},!0);return ut.formatByString(it,gt)},[it,at,st,ut,lt]),mt=rt;return jsxRuntimeExports.jsx(DatePickerToolbarRoot,_extends$u({ref:nt,toolbarTitle:ht.datePickerToolbarTitle,isLandscape:ot,className:dt.root},ct,{children:jsxRuntimeExports.jsx(DatePickerToolbarTitle,{variant:"h4",align:ot?"left":"center",ownerState:mt,className:dt.title,children:pt})}))});function useDatePickerDefaultizedProps(tt,et){var nt,rt,it,ot;const at=useUtils(),st=useDefaultDates(),lt=useThemeProps({props:tt,name:et}),ct=reactExports.useMemo(()=>{var ht;return((ht=lt.localeText)==null?void 0:ht.toolbarTitle)==null?lt.localeText:_extends$u({},lt.localeText,{datePickerToolbarTitle:lt.localeText.toolbarTitle})},[lt.localeText]),ut=(nt=lt.slots)!=null?nt:uncapitalizeObjectKeys(lt.components);return _extends$u({},lt,{localeText:ct},applyDefaultViewProps({views:lt.views,openTo:lt.openTo,defaultViews:["year","day"],defaultOpenTo:"day"}),{disableFuture:(rt=lt.disableFuture)!=null?rt:!1,disablePast:(it=lt.disablePast)!=null?it:!1,minDate:applyDefaultDate(at,lt.minDate,st.minDate),maxDate:applyDefaultDate(at,lt.maxDate,st.maxDate),slots:_extends$u({toolbar:DatePickerToolbar},ut),slotProps:(ot=lt.slotProps)!=null?ot:lt.componentsProps})}const _excluded$l=["props","getOpenDialogAriaText"],_excluded2$6=["ownerState"],_excluded3$1=["ownerState"],useDesktopPicker=tt=>{var et,nt,rt,it,ot;let{props:at,getOpenDialogAriaText:st}=tt,lt=_objectWithoutPropertiesLoose$m(tt,_excluded$l);const{slots:ct,slotProps:ut,className:ht,sx:dt,format:pt,formatDensity:mt,timezone:gt,label:yt,inputRef:bt,readOnly:vt,disabled:xt,autoFocus:kt,localeText:St,reduceAnimations:Tt}=at,At=useUtils(),Et=reactExports.useRef(null),$t=reactExports.useRef(null),Dt=useId(),jt=(et=ut==null||(nt=ut.toolbar)==null?void 0:nt.hidden)!=null?et:!1,{open:Pt,actions:Ct,hasUIView:wt,layoutProps:It,renderCurrentView:Ot,shouldRestoreFocus:Wt,fieldProps:zt}=usePicker(_extends$u({},lt,{props:at,inputRef:Et,autoFocusView:!0,additionalViewProps:{},wrapperVariant:"desktop"})),Ft=(rt=ct.inputAdornment)!=null?rt:MuiInputAdornment,Nt=useSlotProps({elementType:Ft,externalSlotProps:ut==null?void 0:ut.inputAdornment,additionalProps:{position:"end"},ownerState:at}),Ut=_objectWithoutPropertiesLoose$m(Nt,_excluded2$6),Mt=(it=ct.openPickerButton)!=null?it:IconButton$2,Ht=useSlotProps({elementType:Mt,externalSlotProps:ut==null?void 0:ut.openPickerButton,additionalProps:{disabled:xt||vt,onClick:Pt?Ct.onClose:Ct.onOpen,"aria-label":st(zt.value,At),edge:Ut.position},ownerState:at}),en=_objectWithoutPropertiesLoose$m(Ht,_excluded3$1),sn=ct.openPickerIcon,Kt=ct.field,rn=useSlotProps({elementType:Kt,externalSlotProps:ut==null?void 0:ut.field,additionalProps:_extends$u({},zt,jt&&{id:Dt},{readOnly:vt,disabled:xt,className:ht,sx:dt,format:pt,formatDensity:mt,timezone:gt,label:yt,autoFocus:kt&&!at.open,focused:Pt?!0:void 0}),ownerState:at});wt&&(rn.InputProps=_extends$u({},rn.InputProps,{ref:$t,[`${Ut.position}Adornment`]:jsxRuntimeExports.jsx(Ft,_extends$u({},Ut,{children:jsxRuntimeExports.jsx(Mt,_extends$u({},en,{children:jsxRuntimeExports.jsx(sn,_extends$u({},ut==null?void 0:ut.openPickerIcon))}))}))}));const nn=_extends$u({textField:ct.textField,clearIcon:ct.clearIcon,clearButton:ct.clearButton},rn.slots),hn=(ot=ct.layout)!=null?ot:PickersLayout,vn=useForkRef(Et,rn.inputRef,bt);let an=Dt;jt&&(yt?an=`${Dt}-label`:an=void 0);const Qt=_extends$u({},ut,{toolbar:_extends$u({},ut==null?void 0:ut.toolbar,{titleId:Dt}),popper:_extends$u({"aria-labelledby":an},ut==null?void 0:ut.popper)});return{renderPicker:()=>jsxRuntimeExports.jsxs(LocalizationProvider,{localeText:St,children:[jsxRuntimeExports.jsx(Kt,_extends$u({},rn,{slots:nn,slotProps:Qt,inputRef:vn})),jsxRuntimeExports.jsx(PickersPopper,_extends$u({role:"dialog",placement:"bottom-start",anchorEl:$t.current},Ct,{open:Pt,slots:ct,slotProps:Qt,shouldRestoreFocus:Wt,reduceAnimations:Tt,children:jsxRuntimeExports.jsx(hn,_extends$u({},It,Qt==null?void 0:Qt.layout,{slots:ct,slotProps:Qt,children:Ot()}))}))]})}},renderDateViewCalendar=({view:tt,onViewChange:et,views:nt,focusedView:rt,onFocusedViewChange:it,value:ot,defaultValue:at,referenceDate:st,onChange:lt,className:ct,classes:ut,disableFuture:ht,disablePast:dt,minDate:pt,maxDate:mt,shouldDisableDate:gt,shouldDisableMonth:yt,shouldDisableYear:bt,reduceAnimations:vt,onMonthChange:xt,monthsPerRow:kt,onYearChange:St,yearsPerRow:Tt,defaultCalendarMonth:At,components:Et,componentsProps:$t,slots:Dt,slotProps:jt,loading:Pt,renderLoading:Ct,disableHighlightToday:wt,readOnly:It,disabled:Ot,showDaysOutsideCurrentMonth:Wt,dayOfWeekFormatter:zt,sx:Ft,autoFocus:Nt,fixedWeekNumber:Ut,displayWeekNumber:Mt,timezone:Ht})=>jsxRuntimeExports.jsx(DateCalendar,{view:tt,onViewChange:et,views:nt.filter(isDatePickerView),focusedView:rt&&isDatePickerView(rt)?rt:null,onFocusedViewChange:it,value:ot,defaultValue:at,referenceDate:st,onChange:lt,className:ct,classes:ut,disableFuture:ht,disablePast:dt,minDate:pt,maxDate:mt,shouldDisableDate:gt,shouldDisableMonth:yt,shouldDisableYear:bt,reduceAnimations:vt,onMonthChange:xt,monthsPerRow:kt,onYearChange:St,yearsPerRow:Tt,defaultCalendarMonth:At,components:Et,componentsProps:$t,slots:Dt,slotProps:jt,loading:Pt,renderLoading:Ct,disableHighlightToday:wt,readOnly:It,disabled:Ot,showDaysOutsideCurrentMonth:Wt,dayOfWeekFormatter:zt,sx:Ft,autoFocus:Nt,fixedWeekNumber:Ut,displayWeekNumber:Mt,timezone:Ht}),DesktopDatePicker=reactExports.forwardRef(function(et,nt){var rt,it,ot,at;const st=useLocaleText(),lt=useUtils(),ct=useDatePickerDefaultizedProps(et,"MuiDesktopDatePicker"),ut=_extends$u({day:renderDateViewCalendar,month:renderDateViewCalendar,year:renderDateViewCalendar},ct.viewRenderers),ht=_extends$u({},ct,{viewRenderers:ut,format:resolveDateFormat(lt,ct,!1),yearsPerRow:(rt=ct.yearsPerRow)!=null?rt:4,slots:_extends$u({openPickerIcon:CalendarIcon,field:DateField},ct.slots),slotProps:_extends$u({},ct.slotProps,{field:pt=>{var mt;return _extends$u({},resolveComponentProps((mt=ct.slotProps)==null?void 0:mt.field,pt),extractValidationProps(ct),{ref:nt})},toolbar:_extends$u({hidden:!0},(it=ct.slotProps)==null?void 0:it.toolbar)})}),{renderPicker:dt}=useDesktopPicker({props:ht,valueManager:singleItemValueManager,valueType:"date",getOpenDialogAriaText:(ot=(at=ht.localeText)==null?void 0:at.openDatePickerDialogue)!=null?ot:st.openDatePickerDialogue,validator:validateDate});return dt()});DesktopDatePicker.propTypes={autoFocus:PropTypes.bool,className:PropTypes.string,closeOnSelect:PropTypes.bool,components:PropTypes.object,componentsProps:PropTypes.object,dayOfWeekFormatter:PropTypes.func,defaultCalendarMonth:PropTypes.any,defaultValue:PropTypes.any,disabled:PropTypes.bool,disableFuture:PropTypes.bool,disableHighlightToday:PropTypes.bool,disableOpenPicker:PropTypes.bool,disablePast:PropTypes.bool,displayWeekNumber:PropTypes.bool,fixedWeekNumber:PropTypes.number,format:PropTypes.string,formatDensity:PropTypes.oneOf(["dense","spacious"]),inputRef:refType$1,label:PropTypes.node,loading:PropTypes.bool,localeText:PropTypes.object,maxDate:PropTypes.any,minDate:PropTypes.any,monthsPerRow:PropTypes.oneOf([3,4]),onAccept:PropTypes.func,onChange:PropTypes.func,onClose:PropTypes.func,onError:PropTypes.func,onMonthChange:PropTypes.func,onOpen:PropTypes.func,onSelectedSectionsChange:PropTypes.func,onViewChange:PropTypes.func,onYearChange:PropTypes.func,open:PropTypes.bool,openTo:PropTypes.oneOf(["day","month","year"]),orientation:PropTypes.oneOf(["landscape","portrait"]),readOnly:PropTypes.bool,reduceAnimations:PropTypes.bool,referenceDate:PropTypes.any,renderLoading:PropTypes.func,selectedSections:PropTypes.oneOfType([PropTypes.oneOf(["all","day","hours","meridiem","minutes","month","seconds","weekDay","year"]),PropTypes.number,PropTypes.shape({endIndex:PropTypes.number.isRequired,startIndex:PropTypes.number.isRequired})]),shouldDisableDate:PropTypes.func,shouldDisableMonth:PropTypes.func,shouldDisableYear:PropTypes.func,showDaysOutsideCurrentMonth:PropTypes.bool,slotProps:PropTypes.object,slots:PropTypes.object,sx:PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func,PropTypes.object,PropTypes.bool])),PropTypes.func,PropTypes.object]),timezone:PropTypes.string,value:PropTypes.any,view:PropTypes.oneOf(["day","month","year"]),viewRenderers:PropTypes.shape({day:PropTypes.func,month:PropTypes.func,year:PropTypes.func}),views:PropTypes.arrayOf(PropTypes.oneOf(["day","month","year"]).isRequired),yearsPerRow:PropTypes.oneOf([3,4])};const _excluded$k=["props","getOpenDialogAriaText"],useMobilePicker=tt=>{var et,nt,rt;let{props:it,getOpenDialogAriaText:ot}=tt,at=_objectWithoutPropertiesLoose$m(tt,_excluded$k);const{slots:st,slotProps:lt,className:ct,sx:ut,format:ht,formatDensity:dt,timezone:pt,label:mt,inputRef:gt,readOnly:yt,disabled:bt,localeText:vt}=it,xt=useUtils(),kt=reactExports.useRef(null),St=useId(),Tt=(et=lt==null||(nt=lt.toolbar)==null?void 0:nt.hidden)!=null?et:!1,{open:At,actions:Et,layoutProps:$t,renderCurrentView:Dt,fieldProps:jt}=usePicker(_extends$u({},at,{props:it,inputRef:kt,autoFocusView:!0,additionalViewProps:{},wrapperVariant:"mobile"})),Pt=st.field,Ct=useSlotProps({elementType:Pt,externalSlotProps:lt==null?void 0:lt.field,additionalProps:_extends$u({},jt,Tt&&{id:St},!(bt||yt)&&{onClick:Et.onOpen,onKeyDown:onSpaceOrEnter(Et.onOpen)},{readOnly:yt??!0,disabled:bt,className:ct,sx:ut,format:ht,formatDensity:dt,timezone:pt,label:mt}),ownerState:it});Ct.inputProps=_extends$u({},Ct.inputProps,{"aria-label":ot(jt.value,xt)});const wt=_extends$u({textField:st.textField},Ct.slots),It=(rt=st.layout)!=null?rt:PickersLayout,Ot=useForkRef(kt,Ct.inputRef,gt);let Wt=St;Tt&&(mt?Wt=`${St}-label`:Wt=void 0);const zt=_extends$u({},lt,{toolbar:_extends$u({},lt==null?void 0:lt.toolbar,{titleId:St}),mobilePaper:_extends$u({"aria-labelledby":Wt},lt==null?void 0:lt.mobilePaper)});return{renderPicker:()=>jsxRuntimeExports.jsxs(LocalizationProvider,{localeText:vt,children:[jsxRuntimeExports.jsx(Pt,_extends$u({},Ct,{slots:wt,slotProps:zt,inputRef:Ot})),jsxRuntimeExports.jsx(PickersModalDialog,_extends$u({},Et,{open:At,slots:st,slotProps:zt,children:jsxRuntimeExports.jsx(It,_extends$u({},$t,zt==null?void 0:zt.layout,{slots:st,slotProps:zt,children:Dt()}))}))]})}},MobileDatePicker=reactExports.forwardRef(function(et,nt){var rt,it,ot;const at=useLocaleText(),st=useUtils(),lt=useDatePickerDefaultizedProps(et,"MuiMobileDatePicker"),ct=_extends$u({day:renderDateViewCalendar,month:renderDateViewCalendar,year:renderDateViewCalendar},lt.viewRenderers),ut=_extends$u({},lt,{viewRenderers:ct,format:resolveDateFormat(st,lt,!1),slots:_extends$u({field:DateField},lt.slots),slotProps:_extends$u({},lt.slotProps,{field:dt=>{var pt;return _extends$u({},resolveComponentProps((pt=lt.slotProps)==null?void 0:pt.field,dt),extractValidationProps(lt),{ref:nt})},toolbar:_extends$u({hidden:!1},(rt=lt.slotProps)==null?void 0:rt.toolbar)})}),{renderPicker:ht}=useMobilePicker({props:ut,valueManager:singleItemValueManager,valueType:"date",getOpenDialogAriaText:(it=(ot=ut.localeText)==null?void 0:ot.openDatePickerDialogue)!=null?it:at.openDatePickerDialogue,validator:validateDate});return ht()});MobileDatePicker.propTypes={autoFocus:PropTypes.bool,className:PropTypes.string,closeOnSelect:PropTypes.bool,components:PropTypes.object,componentsProps:PropTypes.object,dayOfWeekFormatter:PropTypes.func,defaultCalendarMonth:PropTypes.any,defaultValue:PropTypes.any,disabled:PropTypes.bool,disableFuture:PropTypes.bool,disableHighlightToday:PropTypes.bool,disableOpenPicker:PropTypes.bool,disablePast:PropTypes.bool,displayWeekNumber:PropTypes.bool,fixedWeekNumber:PropTypes.number,format:PropTypes.string,formatDensity:PropTypes.oneOf(["dense","spacious"]),inputRef:refType$1,label:PropTypes.node,loading:PropTypes.bool,localeText:PropTypes.object,maxDate:PropTypes.any,minDate:PropTypes.any,monthsPerRow:PropTypes.oneOf([3,4]),onAccept:PropTypes.func,onChange:PropTypes.func,onClose:PropTypes.func,onError:PropTypes.func,onMonthChange:PropTypes.func,onOpen:PropTypes.func,onSelectedSectionsChange:PropTypes.func,onViewChange:PropTypes.func,onYearChange:PropTypes.func,open:PropTypes.bool,openTo:PropTypes.oneOf(["day","month","year"]),orientation:PropTypes.oneOf(["landscape","portrait"]),readOnly:PropTypes.bool,reduceAnimations:PropTypes.bool,referenceDate:PropTypes.any,renderLoading:PropTypes.func,selectedSections:PropTypes.oneOfType([PropTypes.oneOf(["all","day","hours","meridiem","minutes","month","seconds","weekDay","year"]),PropTypes.number,PropTypes.shape({endIndex:PropTypes.number.isRequired,startIndex:PropTypes.number.isRequired})]),shouldDisableDate:PropTypes.func,shouldDisableMonth:PropTypes.func,shouldDisableYear:PropTypes.func,showDaysOutsideCurrentMonth:PropTypes.bool,slotProps:PropTypes.object,slots:PropTypes.object,sx:PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func,PropTypes.object,PropTypes.bool])),PropTypes.func,PropTypes.object]),timezone:PropTypes.string,value:PropTypes.any,view:PropTypes.oneOf(["day","month","year"]),viewRenderers:PropTypes.shape({day:PropTypes.func,month:PropTypes.func,year:PropTypes.func}),views:PropTypes.arrayOf(PropTypes.oneOf(["day","month","year"]).isRequired),yearsPerRow:PropTypes.oneOf([3,4])};const _excluded$j=["desktopModeMediaQuery"],DatePicker=reactExports.forwardRef(function(et,nt){const rt=useThemeProps({props:et,name:"MuiDatePicker"}),{desktopModeMediaQuery:it=DEFAULT_DESKTOP_MODE_MEDIA_QUERY}=rt,ot=_objectWithoutPropertiesLoose$m(rt,_excluded$j);return useMediaQuery(it,{defaultMatches:!0})?jsxRuntimeExports.jsx(DesktopDatePicker,_extends$u({ref:nt},ot)):jsxRuntimeExports.jsx(MobileDatePicker,_extends$u({ref:nt},ot))});var classnames={exports:{}};/*! Copyright (c) 2018 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames @@ -7389,7 +7416,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho width: 100%; `,StyledButton$1=styled$4(Button)` height: 48px; -`,TABS=[{label:"Teach me",value:"teachMe"},{label:"Ask question",value:"askQuestion"},{label:"Sentiment Analysis",value:"sentiment"}],ActionsMenu=({onChange:tt,active:et})=>{const nt=(rt,it)=>{tt(TABS[it].value)};return et?jsxRuntimeExports.jsx(MenuWrapper,{direction:"row",id:"cy-helper-menu",maxWidth:"100%",mb:3,overflow:"auto",spacing:1,children:TABS.map((rt,it)=>jsxRuntimeExports.jsx(Chip$1,{color:rt.value===et?"primary":"default",component:"div",id:rt.value,label:rt.label,onClick:ot=>nt(ot,it)},rt.value))}):jsxRuntimeExports.jsx(Stack$5,{component:"div",flexGrow:1,id:"cy-helper-menu",justifyContent:"flex-end",mb:1,spacing:1,children:TABS.map((rt,it)=>jsxRuntimeExports.jsx(Chip$1,{component:"div",id:rt.value,label:rt.label,onClick:ot=>nt(ot,it)},rt.value))})},MenuWrapper=styled$1(Stack$5)(()=>({"&::-webkit-scrollbar":{width:"1px",height:"4px"},"&::-webkit-scrollbar-thumb":{width:"1px",height:"4px"}})),PACKET_TYPES=Object.create(null);PACKET_TYPES.open="0";PACKET_TYPES.close="1";PACKET_TYPES.ping="2";PACKET_TYPES.pong="3";PACKET_TYPES.message="4";PACKET_TYPES.upgrade="5";PACKET_TYPES.noop="6";const PACKET_TYPES_REVERSE=Object.create(null);Object.keys(PACKET_TYPES).forEach(tt=>{PACKET_TYPES_REVERSE[PACKET_TYPES[tt]]=tt});const ERROR_PACKET={type:"error",data:"parser error"},withNativeBlob$1=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",withNativeArrayBuffer$2=typeof ArrayBuffer=="function",isView$1=tt=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(tt):tt&&tt.buffer instanceof ArrayBuffer,encodePacket=({type:tt,data:et},nt,rt)=>withNativeBlob$1&&et instanceof Blob?nt?rt(et):encodeBlobAsBase64(et,rt):withNativeArrayBuffer$2&&(et instanceof ArrayBuffer||isView$1(et))?nt?rt(et):encodeBlobAsBase64(new Blob([et]),rt):rt(PACKET_TYPES[tt]+(et||"")),encodeBlobAsBase64=(tt,et)=>{const nt=new FileReader;return nt.onload=function(){const rt=nt.result.split(",")[1];et("b"+(rt||""))},nt.readAsDataURL(tt)};function toArray(tt){return tt instanceof Uint8Array?tt:tt instanceof ArrayBuffer?new Uint8Array(tt):new Uint8Array(tt.buffer,tt.byteOffset,tt.byteLength)}let TEXT_ENCODER;function encodePacketToBinary(tt,et){if(withNativeBlob$1&&tt.data instanceof Blob)return tt.data.arrayBuffer().then(toArray).then(et);if(withNativeArrayBuffer$2&&(tt.data instanceof ArrayBuffer||isView$1(tt.data)))return et(toArray(tt.data));encodePacket(tt,!1,nt=>{TEXT_ENCODER||(TEXT_ENCODER=new TextEncoder),et(TEXT_ENCODER.encode(nt))})}const chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",lookup$1=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let tt=0;tt{let et=tt.length*.75,nt=tt.length,rt,it=0,ot,at,st,lt;tt[tt.length-1]==="="&&(et--,tt[tt.length-2]==="="&&et--);const ct=new ArrayBuffer(et),ut=new Uint8Array(ct);for(rt=0;rt>4,ut[it++]=(at&15)<<4|st>>2,ut[it++]=(st&3)<<6|lt&63;return ct},withNativeArrayBuffer$1=typeof ArrayBuffer=="function",decodePacket=(tt,et)=>{if(typeof tt!="string")return{type:"message",data:mapBinary(tt,et)};const nt=tt.charAt(0);return nt==="b"?{type:"message",data:decodeBase64Packet(tt.substring(1),et)}:PACKET_TYPES_REVERSE[nt]?tt.length>1?{type:PACKET_TYPES_REVERSE[nt],data:tt.substring(1)}:{type:PACKET_TYPES_REVERSE[nt]}:ERROR_PACKET},decodeBase64Packet=(tt,et)=>{if(withNativeArrayBuffer$1){const nt=decode$1(tt);return mapBinary(nt,et)}else return{base64:!0,data:tt}},mapBinary=(tt,et)=>{switch(et){case"blob":return tt instanceof Blob?tt:new Blob([tt]);case"arraybuffer":default:return tt instanceof ArrayBuffer?tt:tt.buffer}},SEPARATOR=String.fromCharCode(30),encodePayload=(tt,et)=>{const nt=tt.length,rt=new Array(nt);let it=0;tt.forEach((ot,at)=>{encodePacket(ot,!1,st=>{rt[at]=st,++it===nt&&et(rt.join(SEPARATOR))})})},decodePayload=(tt,et)=>{const nt=tt.split(SEPARATOR),rt=[];for(let it=0;it{const rt=nt.length;let it;if(rt<126)it=new Uint8Array(1),new DataView(it.buffer).setUint8(0,rt);else if(rt<65536){it=new Uint8Array(3);const ot=new DataView(it.buffer);ot.setUint8(0,126),ot.setUint16(1,rt)}else{it=new Uint8Array(9);const ot=new DataView(it.buffer);ot.setUint8(0,127),ot.setBigUint64(1,BigInt(rt))}tt.data&&typeof tt.data!="string"&&(it[0]|=128),et.enqueue(it),et.enqueue(nt)})}})}let TEXT_DECODER;function totalLength(tt){return tt.reduce((et,nt)=>et+nt.length,0)}function concatChunks(tt,et){if(tt[0].length===et)return tt.shift();const nt=new Uint8Array(et);let rt=0;for(let it=0;itMath.pow(2,53-32)-1){st.enqueue(ERROR_PACKET);break}it=ut*Math.pow(2,32)+ct.getUint32(4),rt=3}else{if(totalLength(nt)tt){st.enqueue(ERROR_PACKET);break}}}})}const protocol$1=4;function Emitter(tt){if(tt)return mixin(tt)}function mixin(tt){for(var et in Emitter.prototype)tt[et]=Emitter.prototype[et];return tt}Emitter.prototype.on=Emitter.prototype.addEventListener=function(tt,et){return this._callbacks=this._callbacks||{},(this._callbacks["$"+tt]=this._callbacks["$"+tt]||[]).push(et),this};Emitter.prototype.once=function(tt,et){function nt(){this.off(tt,nt),et.apply(this,arguments)}return nt.fn=et,this.on(tt,nt),this};Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(tt,et){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var nt=this._callbacks["$"+tt];if(!nt)return this;if(arguments.length==1)return delete this._callbacks["$"+tt],this;for(var rt,it=0;ittypeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function pick(tt,...et){return et.reduce((nt,rt)=>(tt.hasOwnProperty(rt)&&(nt[rt]=tt[rt]),nt),{})}const NATIVE_SET_TIMEOUT=globalThisShim.setTimeout,NATIVE_CLEAR_TIMEOUT=globalThisShim.clearTimeout;function installTimerFunctions(tt,et){et.useNativeTimers?(tt.setTimeoutFn=NATIVE_SET_TIMEOUT.bind(globalThisShim),tt.clearTimeoutFn=NATIVE_CLEAR_TIMEOUT.bind(globalThisShim)):(tt.setTimeoutFn=globalThisShim.setTimeout.bind(globalThisShim),tt.clearTimeoutFn=globalThisShim.clearTimeout.bind(globalThisShim))}const BASE64_OVERHEAD=1.33;function byteLength(tt){return typeof tt=="string"?utf8Length(tt):Math.ceil((tt.byteLength||tt.size)*BASE64_OVERHEAD)}function utf8Length(tt){let et=0,nt=0;for(let rt=0,it=tt.length;rt=57344?nt+=3:(rt++,nt+=4);return nt}function encode$1(tt){let et="";for(let nt in tt)tt.hasOwnProperty(nt)&&(et.length&&(et+="&"),et+=encodeURIComponent(nt)+"="+encodeURIComponent(tt[nt]));return et}function decode(tt){let et={},nt=tt.split("&");for(let rt=0,it=nt.length;rt0);return et}function yeast(){const tt=encode(+new Date);return tt!==prev?(seed=0,prev=tt):tt+"."+encode(seed++)}for(;i{this.readyState="paused",et()};if(this.polling||!this.writable){let rt=0;this.polling&&(rt++,this.once("pollComplete",function(){--rt||nt()})),this.writable||(rt++,this.once("drain",function(){--rt||nt()}))}else nt()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(et){const nt=rt=>{if(this.readyState==="opening"&&rt.type==="open"&&this.onOpen(),rt.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(rt)};decodePayload(et,this.socket.binaryType).forEach(nt),this.readyState!=="closed"&&(this.polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this.poll())}doClose(){const et=()=>{this.write([{type:"close"}])};this.readyState==="open"?et():this.once("open",et)}write(et){this.writable=!1,encodePayload(et,nt=>{this.doWrite(nt,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const et=this.opts.secure?"https":"http",nt=this.query||{};return this.opts.timestampRequests!==!1&&(nt[this.opts.timestampParam]=yeast()),!this.supportsBinary&&!nt.sid&&(nt.b64=1),this.createUri(et,nt)}request(et={}){return Object.assign(et,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Request$1(this.uri(),et)}doWrite(et,nt){const rt=this.request({method:"POST",data:et});rt.on("success",nt),rt.on("error",(it,ot)=>{this.onError("xhr post error",it,ot)})}doPoll(){const et=this.request();et.on("data",this.onData.bind(this)),et.on("error",(nt,rt)=>{this.onError("xhr poll error",nt,rt)}),this.pollXhr=et}}let Request$1=class D0 extends Emitter{constructor(et,nt){super(),installTimerFunctions(this,nt),this.opts=nt,this.method=nt.method||"GET",this.uri=et,this.data=nt.data!==void 0?nt.data:null,this.create()}create(){var et;const nt=pick(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");nt.xdomain=!!this.opts.xd;const rt=this.xhr=new XHR(nt);try{rt.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){rt.setDisableHeaderCheck&&rt.setDisableHeaderCheck(!0);for(let it in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(it)&&rt.setRequestHeader(it,this.opts.extraHeaders[it])}}catch{}if(this.method==="POST")try{rt.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{rt.setRequestHeader("Accept","*/*")}catch{}(et=this.opts.cookieJar)===null||et===void 0||et.addCookies(rt),"withCredentials"in rt&&(rt.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(rt.timeout=this.opts.requestTimeout),rt.onreadystatechange=()=>{var it;rt.readyState===3&&((it=this.opts.cookieJar)===null||it===void 0||it.parseCookies(rt)),rt.readyState===4&&(rt.status===200||rt.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof rt.status=="number"?rt.status:0)},0))},rt.send(this.data)}catch(it){this.setTimeoutFn(()=>{this.onError(it)},0);return}typeof document<"u"&&(this.index=D0.requestsCount++,D0.requests[this.index]=this)}onError(et){this.emitReserved("error",et,this.xhr),this.cleanup(!0)}cleanup(et){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.xhr.onreadystatechange=empty$1,et)try{this.xhr.abort()}catch{}typeof document<"u"&&delete D0.requests[this.index],this.xhr=null}}onLoad(){const et=this.xhr.responseText;et!==null&&(this.emitReserved("data",et),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}};Request$1.requestsCount=0;Request$1.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",unloadHandler);else if(typeof addEventListener=="function"){const tt="onpagehide"in globalThisShim?"pagehide":"unload";addEventListener(tt,unloadHandler,!1)}}function unloadHandler(){for(let tt in Request$1.requests)Request$1.requests.hasOwnProperty(tt)&&Request$1.requests[tt].abort()}const nextTick=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?et=>Promise.resolve().then(et):(et,nt)=>nt(et,0))(),WebSocket=globalThisShim.WebSocket||globalThisShim.MozWebSocket,usingBrowserWebSocket=!0,defaultBinaryType="arraybuffer",isReactNative=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class WS extends Transport{constructor(et){super(et),this.supportsBinary=!et.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const et=this.uri(),nt=this.opts.protocols,rt=isReactNative?{}:pick(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(rt.headers=this.opts.extraHeaders);try{this.ws=usingBrowserWebSocket&&!isReactNative?nt?new WebSocket(et,nt):new WebSocket(et):new WebSocket(et,nt,rt)}catch(it){return this.emitReserved("error",it)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=et=>this.onClose({description:"websocket connection closed",context:et}),this.ws.onmessage=et=>this.onData(et.data),this.ws.onerror=et=>this.onError("websocket error",et)}write(et){this.writable=!1;for(let nt=0;nt{const at={};try{usingBrowserWebSocket&&this.ws.send(ot)}catch{}it&&nextTick(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){const et=this.opts.secure?"wss":"ws",nt=this.query||{};return this.opts.timestampRequests&&(nt[this.opts.timestampParam]=yeast()),this.supportsBinary||(nt.b64=1),this.createUri(et,nt)}check(){return!!WebSocket}}class WT extends Transport{get name(){return"webtransport"}doOpen(){typeof WebTransport=="function"&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then(()=>{this.onClose()}).catch(et=>{this.onError("webtransport error",et)}),this.transport.ready.then(()=>{this.transport.createBidirectionalStream().then(et=>{const nt=createPacketDecoderStream(Number.MAX_SAFE_INTEGER,this.socket.binaryType),rt=et.readable.pipeThrough(nt).getReader(),it=createPacketEncoderStream();it.readable.pipeTo(et.writable),this.writer=it.writable.getWriter();const ot=()=>{rt.read().then(({done:st,value:lt})=>{st||(this.onPacket(lt),ot())}).catch(st=>{})};ot();const at={type:"open"};this.query.sid&&(at.data=`{"sid":"${this.query.sid}"}`),this.writer.write(at).then(()=>this.onOpen())})}))}write(et){this.writable=!1;for(let nt=0;nt{it&&nextTick(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var et;(et=this.transport)===null||et===void 0||et.close()}}const transports={websocket:WS,webtransport:WT,polling:Polling},re=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,parts=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function parse(tt){const et=tt,nt=tt.indexOf("["),rt=tt.indexOf("]");nt!=-1&&rt!=-1&&(tt=tt.substring(0,nt)+tt.substring(nt,rt).replace(/:/g,";")+tt.substring(rt,tt.length));let it=re.exec(tt||""),ot={},at=14;for(;at--;)ot[parts[at]]=it[at]||"";return nt!=-1&&rt!=-1&&(ot.source=et,ot.host=ot.host.substring(1,ot.host.length-1).replace(/;/g,":"),ot.authority=ot.authority.replace("[","").replace("]","").replace(/;/g,":"),ot.ipv6uri=!0),ot.pathNames=pathNames(ot,ot.path),ot.queryKey=queryKey(ot,ot.query),ot}function pathNames(tt,et){const nt=/\/{2,9}/g,rt=et.replace(nt,"/").split("/");return(et.slice(0,1)=="/"||et.length===0)&&rt.splice(0,1),et.slice(-1)=="/"&&rt.splice(rt.length-1,1),rt}function queryKey(tt,et){const nt={};return et.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(rt,it,ot){it&&(nt[it]=ot)}),nt}let Socket$1=class Gm extends Emitter{constructor(et,nt={}){super(),this.binaryType=defaultBinaryType,this.writeBuffer=[],et&&typeof et=="object"&&(nt=et,et=null),et?(et=parse(et),nt.hostname=et.host,nt.secure=et.protocol==="https"||et.protocol==="wss",nt.port=et.port,et.query&&(nt.query=et.query)):nt.host&&(nt.hostname=parse(nt.host).host),installTimerFunctions(this,nt),this.secure=nt.secure!=null?nt.secure:typeof location<"u"&&location.protocol==="https:",nt.hostname&&!nt.port&&(nt.port=this.secure?"443":"80"),this.hostname=nt.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=nt.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=nt.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},nt),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,typeof addEventListener=="function"&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(et){const nt=Object.assign({},this.opts.query);nt.EIO=protocol$1,nt.transport=et,this.id&&(nt.sid=this.id);const rt=Object.assign({},this.opts,{query:nt,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[et]);return new transports[et](rt)}open(){let et;if(this.opts.rememberUpgrade&&Gm.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)et="websocket";else if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}else et=this.transports[0];this.readyState="opening";try{et=this.createTransport(et)}catch{this.transports.shift(),this.open();return}et.open(),this.setTransport(et)}setTransport(et){this.transport&&this.transport.removeAllListeners(),this.transport=et,et.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",nt=>this.onClose("transport close",nt))}probe(et){let nt=this.createTransport(et),rt=!1;Gm.priorWebsocketSuccess=!1;const it=()=>{rt||(nt.send([{type:"ping",data:"probe"}]),nt.once("packet",ht=>{if(!rt)if(ht.type==="pong"&&ht.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",nt),!nt)return;Gm.priorWebsocketSuccess=nt.name==="websocket",this.transport.pause(()=>{rt||this.readyState!=="closed"&&(ut(),this.setTransport(nt),nt.send([{type:"upgrade"}]),this.emitReserved("upgrade",nt),nt=null,this.upgrading=!1,this.flush())})}else{const dt=new Error("probe error");dt.transport=nt.name,this.emitReserved("upgradeError",dt)}}))};function ot(){rt||(rt=!0,ut(),nt.close(),nt=null)}const at=ht=>{const dt=new Error("probe error: "+ht);dt.transport=nt.name,ot(),this.emitReserved("upgradeError",dt)};function st(){at("transport closed")}function lt(){at("socket closed")}function ct(ht){nt&&ht.name!==nt.name&&ot()}const ut=()=>{nt.removeListener("open",it),nt.removeListener("error",at),nt.removeListener("close",st),this.off("close",lt),this.off("upgrading",ct)};nt.once("open",it),nt.once("error",at),nt.once("close",st),this.once("close",lt),this.once("upgrading",ct),this.upgrades.indexOf("webtransport")!==-1&&et!=="webtransport"?this.setTimeoutFn(()=>{rt||nt.open()},200):nt.open()}onOpen(){if(this.readyState="open",Gm.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade){let et=0;const nt=this.upgrades.length;for(;et{this.onClose("ping timeout")},this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const et=this.getWritablePackets();this.transport.send(et),this.prevBufferLen=et.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let nt=1;for(let rt=0;rt0&&nt>this.maxPayload)return this.writeBuffer.slice(0,rt);nt+=2}return this.writeBuffer}write(et,nt,rt){return this.sendPacket("message",et,nt,rt),this}send(et,nt,rt){return this.sendPacket("message",et,nt,rt),this}sendPacket(et,nt,rt,it){if(typeof nt=="function"&&(it=nt,nt=void 0),typeof rt=="function"&&(it=rt,rt=null),this.readyState==="closing"||this.readyState==="closed")return;rt=rt||{},rt.compress=rt.compress!==!1;const ot={type:et,data:nt,options:rt};this.emitReserved("packetCreate",ot),this.writeBuffer.push(ot),it&&this.once("flush",it),this.flush()}close(){const et=()=>{this.onClose("forced close"),this.transport.close()},nt=()=>{this.off("upgrade",nt),this.off("upgradeError",nt),et()},rt=()=>{this.once("upgrade",nt),this.once("upgradeError",nt)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?rt():et()}):this.upgrading?rt():et()),this}onError(et){Gm.priorWebsocketSuccess=!1,this.emitReserved("error",et),this.onClose("transport error",et)}onClose(et,nt){(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")&&(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),typeof removeEventListener=="function"&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",et,nt),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(et){const nt=[];let rt=0;const it=et.length;for(;rttypeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(tt):tt.buffer instanceof ArrayBuffer,toString=Object.prototype.toString,withNativeBlob=typeof Blob=="function"||typeof Blob<"u"&&toString.call(Blob)==="[object BlobConstructor]",withNativeFile=typeof File=="function"||typeof File<"u"&&toString.call(File)==="[object FileConstructor]";function isBinary(tt){return withNativeArrayBuffer&&(tt instanceof ArrayBuffer||isView(tt))||withNativeBlob&&tt instanceof Blob||withNativeFile&&tt instanceof File}function hasBinary(tt,et){if(!tt||typeof tt!="object")return!1;if(Array.isArray(tt)){for(let nt=0,rt=tt.length;nt=0&&tt.num{delete this.acks[et];for(let at=0;at{this.io.clearTimeoutFn(ot),nt.apply(this,[null,...at])}}emitWithAck(et,...nt){const rt=this.flags.timeout!==void 0||this._opts.ackTimeout!==void 0;return new Promise((it,ot)=>{nt.push((at,st)=>rt?at?ot(at):it(st):it(at)),this.emit(et,...nt)})}_addToQueue(et){let nt;typeof et[et.length-1]=="function"&&(nt=et.pop());const rt={id:this._queueSeq++,tryCount:0,pending:!1,args:et,flags:Object.assign({fromQueue:!0},this.flags)};et.push((it,...ot)=>rt!==this._queue[0]?void 0:(it!==null?rt.tryCount>this._opts.retries&&(this._queue.shift(),nt&&nt(it)):(this._queue.shift(),nt&&nt(null,...ot)),rt.pending=!1,this._drainQueue())),this._queue.push(rt),this._drainQueue()}_drainQueue(et=!1){if(!this.connected||this._queue.length===0)return;const nt=this._queue[0];nt.pending&&!et||(nt.pending=!0,nt.tryCount++,this.flags=nt.flags,this.emit.apply(this,nt.args))}packet(et){et.nsp=this.nsp,this.io._packet(et)}onopen(){typeof this.auth=="function"?this.auth(et=>{this._sendConnectPacket(et)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(et){this.packet({type:PacketType.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},et):et})}onerror(et){this.connected||this.emitReserved("connect_error",et)}onclose(et,nt){this.connected=!1,delete this.id,this.emitReserved("disconnect",et,nt)}onpacket(et){if(et.nsp===this.nsp)switch(et.type){case PacketType.CONNECT:et.data&&et.data.sid?this.onconnect(et.data.sid,et.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case PacketType.EVENT:case PacketType.BINARY_EVENT:this.onevent(et);break;case PacketType.ACK:case PacketType.BINARY_ACK:this.onack(et);break;case PacketType.DISCONNECT:this.ondisconnect();break;case PacketType.CONNECT_ERROR:this.destroy();const rt=new Error(et.data.message);rt.data=et.data.data,this.emitReserved("connect_error",rt);break}}onevent(et){const nt=et.data||[];et.id!=null&&nt.push(this.ack(et.id)),this.connected?this.emitEvent(nt):this.receiveBuffer.push(Object.freeze(nt))}emitEvent(et){if(this._anyListeners&&this._anyListeners.length){const nt=this._anyListeners.slice();for(const rt of nt)rt.apply(this,et)}super.emit.apply(this,et),this._pid&&et.length&&typeof et[et.length-1]=="string"&&(this._lastOffset=et[et.length-1])}ack(et){const nt=this;let rt=!1;return function(...it){rt||(rt=!0,nt.packet({type:PacketType.ACK,id:et,data:it}))}}onack(et){const nt=this.acks[et.id];typeof nt=="function"&&(nt.apply(this,et.data),delete this.acks[et.id])}onconnect(et,nt){this.id=et,this.recovered=nt&&this._pid===nt,this._pid=nt,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(et=>this.emitEvent(et)),this.receiveBuffer=[],this.sendBuffer.forEach(et=>{this.notifyOutgoingListeners(et),this.packet(et)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(et=>et()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:PacketType.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(et){return this.flags.compress=et,this}get volatile(){return this.flags.volatile=!0,this}timeout(et){return this.flags.timeout=et,this}onAny(et){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(et),this}prependAny(et){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(et),this}offAny(et){if(!this._anyListeners)return this;if(et){const nt=this._anyListeners;for(let rt=0;rt0&&tt.jitter<=1?tt.jitter:0,this.attempts=0}Backoff.prototype.duration=function(){var tt=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var et=Math.random(),nt=Math.floor(et*this.jitter*tt);tt=Math.floor(et*10)&1?tt+nt:tt-nt}return Math.min(tt,this.max)|0};Backoff.prototype.reset=function(){this.attempts=0};Backoff.prototype.setMin=function(tt){this.ms=tt};Backoff.prototype.setMax=function(tt){this.max=tt};Backoff.prototype.setJitter=function(tt){this.jitter=tt};class Manager extends Emitter{constructor(et,nt){var rt;super(),this.nsps={},this.subs=[],et&&typeof et=="object"&&(nt=et,et=void 0),nt=nt||{},nt.path=nt.path||"/socket.io",this.opts=nt,installTimerFunctions(this,nt),this.reconnection(nt.reconnection!==!1),this.reconnectionAttempts(nt.reconnectionAttempts||1/0),this.reconnectionDelay(nt.reconnectionDelay||1e3),this.reconnectionDelayMax(nt.reconnectionDelayMax||5e3),this.randomizationFactor((rt=nt.randomizationFactor)!==null&&rt!==void 0?rt:.5),this.backoff=new Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(nt.timeout==null?2e4:nt.timeout),this._readyState="closed",this.uri=et;const it=nt.parser||parser;this.encoder=new it.Encoder,this.decoder=new it.Decoder,this._autoConnect=nt.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(et){return arguments.length?(this._reconnection=!!et,this):this._reconnection}reconnectionAttempts(et){return et===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=et,this)}reconnectionDelay(et){var nt;return et===void 0?this._reconnectionDelay:(this._reconnectionDelay=et,(nt=this.backoff)===null||nt===void 0||nt.setMin(et),this)}randomizationFactor(et){var nt;return et===void 0?this._randomizationFactor:(this._randomizationFactor=et,(nt=this.backoff)===null||nt===void 0||nt.setJitter(et),this)}reconnectionDelayMax(et){var nt;return et===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=et,(nt=this.backoff)===null||nt===void 0||nt.setMax(et),this)}timeout(et){return arguments.length?(this._timeout=et,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(et){if(~this._readyState.indexOf("open"))return this;this.engine=new Socket$1(this.uri,this.opts);const nt=this.engine,rt=this;this._readyState="opening",this.skipReconnect=!1;const it=on(nt,"open",function(){rt.onopen(),et&&et()}),ot=st=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",st),et?et(st):this.maybeReconnectOnOpen()},at=on(nt,"error",ot);if(this._timeout!==!1){const st=this._timeout,lt=this.setTimeoutFn(()=>{it(),ot(new Error("timeout")),nt.close()},st);this.opts.autoUnref&<.unref(),this.subs.push(()=>{this.clearTimeoutFn(lt)})}return this.subs.push(it),this.subs.push(at),this}connect(et){return this.open(et)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const et=this.engine;this.subs.push(on(et,"ping",this.onping.bind(this)),on(et,"data",this.ondata.bind(this)),on(et,"error",this.onerror.bind(this)),on(et,"close",this.onclose.bind(this)),on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(et){try{this.decoder.add(et)}catch(nt){this.onclose("parse error",nt)}}ondecoded(et){nextTick(()=>{this.emitReserved("packet",et)},this.setTimeoutFn)}onerror(et){this.emitReserved("error",et)}socket(et,nt){let rt=this.nsps[et];return rt?this._autoConnect&&!rt.active&&rt.connect():(rt=new Socket(this,et,nt),this.nsps[et]=rt),rt}_destroy(et){const nt=Object.keys(this.nsps);for(const rt of nt)if(this.nsps[rt].active)return;this._close()}_packet(et){const nt=this.encoder.encode(et);for(let rt=0;rtet()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(et,nt){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",et,nt),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const et=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const nt=this.backoff.duration();this._reconnecting=!0;const rt=this.setTimeoutFn(()=>{et.skipReconnect||(this.emitReserved("reconnect_attempt",et.backoff.attempts),!et.skipReconnect&&et.open(it=>{it?(et._reconnecting=!1,et.reconnect(),this.emitReserved("reconnect_error",it)):et.onreconnect()}))},nt);this.opts.autoUnref&&rt.unref(),this.subs.push(()=>{this.clearTimeoutFn(rt)})}}onreconnect(){const et=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",et)}}const cache={};function lookup(tt,et){typeof tt=="object"&&(et=tt,tt=void 0),et=et||{};const nt=url(tt,et.path||"/socket.io"),rt=nt.source,it=nt.id,ot=nt.path,at=cache[it]&&ot in cache[it].nsps,st=et.forceNew||et["force new connection"]||et.multiplex===!1||at;let lt;return st?lt=new Manager(rt,et):(cache[it]||(cache[it]=new Manager(rt,et)),lt=cache[it]),nt.query&&!et.query&&(et.query=nt.queryKey),lt.socket(nt.path,et)}Object.assign(lookup,{Manager,Socket,io:lookup,connect:lookup});const useSocket=()=>{const[tt,et]=reactExports.useState(null);return reactExports.useEffect(()=>{const nt=lookup(API_URL);return et(nt),()=>{nt.disconnect()}},[]),tt},ITEM_HEIGHT=48,ITEM_PADDING_TOP=8,MenuProps={PaperProps:{style:{maxHeight:ITEM_HEIGHT*4.5+ITEM_PADDING_TOP,width:250}}},names=["Beginner","Intermediate","Advanced","Expert"],AskQuestion=()=>{const tt=useDataStore(xt=>xt.data),[et,nt]=reactExports.useState(""),[rt,it]=reactExports.useState("Beginner"),ot=useAppStore(xt=>xt.currentSearch),at=reactExports.useRef(!1),st=useSocket(),[lt]=useUserStore(xt=>[xt.setBudget]),[ct,ut,ht,dt,pt]=useTeachStore(xt=>[xt.askedQuestions,xt.askedQuestionsAnswers,xt.setAskedQuestion,xt.setAskedQuestionAnswer,xt.hasQuestionInProgress]),mt=reactExports.useCallback(xt=>{dt(xt.answer),toast(jsxRuntimeExports.jsx(ToastMessage,{message:"Response is ready"}),{position:toast.POSITION.BOTTOM_CENTER,type:"success"})},[dt]);reactExports.useEffect(()=>{at.current||mt&&st&&(st.on("askquestionhook",mt),at.current=!0)},[mt,st]);const gt=async()=>{et&&(ht(et),nt(""));try{const xt=tt==null?void 0:tt.nodes.filter(Tt=>Tt.text),kt=xt==null?void 0:xt.slice(0,5),St=(kt!=null&&kt.length?kt.map(Tt=>Tt.text).join(" "):"").substring(0,2500).replace(/[?&=+/#]/g,Tt=>`\\${Tt}`);ot&&(await distExports$1.enable(),await postAskQuestion({expertise_level:rt,question_text:et,search_term:ot,transcripts:St}),await updateBudget(lt),toast(jsxRuntimeExports.jsx(ToastMessage,{message:"We started preparing response for you"}),{type:"success"}))}catch(xt){console.error(xt)}},yt=rt&&et.trim()&&!pt,bt=xt=>{it(xt.target.value)},vt=async xt=>{if(pt){xt.preventDefault();return}xt.keyCode===13&&xt.shiftKey===!1&&yt&&(xt.preventDefault(),gt())};return jsxRuntimeExports.jsxs(AskQuestionContainer,{children:[jsxRuntimeExports.jsx(Flex,{children:jsxRuntimeExports.jsx(Flex,{children:jsxRuntimeExports.jsxs(FormControl$1,{component:"div",children:[jsxRuntimeExports.jsx(StyledInput,{id:"select-label",size:"small",children:"Expertise level"}),jsxRuntimeExports.jsx(StyledSelect,{id:"demo-multiple-name",input:jsxRuntimeExports.jsx(OutlinedInput$1,{label:"Expertise level"}),labelId:"select-label",MenuProps,onChange:bt,size:"small",value:rt,children:names.map(xt=>jsxRuntimeExports.jsx(MenuItem$2,{component:"li",value:xt,children:xt},xt))})]})})}),jsxRuntimeExports.jsx(ResponsesWrapper,{children:ct==null?void 0:ct.map((xt,kt)=>jsxRuntimeExports.jsxs(Flex,{className:"response",py:12,children:[jsxRuntimeExports.jsx(Text$3,{kind:"medium",children:xt}),jsxRuntimeExports.jsx(Flex,{py:12,children:(ut==null?void 0:ut[kt])!==void 0?jsxRuntimeExports.jsx(Text$3,{color:"unreadMsgText",children:ut[kt]}):jsxRuntimeExports.jsxs(Flex,{align:"center",py:12,children:[jsxRuntimeExports.jsx(Flex,{align:"center",py:12,children:jsxRuntimeExports.jsx(PropagateLoader,{color:colors.white})}),jsxRuntimeExports.jsx(Flex,{align:"center",py:12,children:jsxRuntimeExports.jsx(Text$3,{children:"Generating response"})})]})})]},xt))}),jsxRuntimeExports.jsxs(TextAreaWrapper,{onKeyDown:vt,py:12,tabIndex:-1,children:[jsxRuntimeExports.jsx(StyledTextarea,{disabled:pt,onChange:xt=>nt(xt.target.value),placeholder:"Enter your question",value:et}),jsxRuntimeExports.jsx(IconWrapper$1,{children:jsxRuntimeExports.jsx(MdSend,{color:yt?colors.white:colors.gray300,size:"18"})})]})]})},AskQuestionContainer=styled$4.div` +`,TABS=[{label:"Teach me",value:"teachMe"},{label:"Ask question",value:"askQuestion"},{label:"Sentiment Analysis",value:"sentiment"}],ActionsMenu=({onChange:tt,active:et})=>{const nt=(rt,it)=>{tt(TABS[it].value)};return et?jsxRuntimeExports.jsx(MenuWrapper,{direction:"row",id:"cy-helper-menu",maxWidth:"100%",mb:3,overflow:"auto",spacing:1,children:TABS.map((rt,it)=>jsxRuntimeExports.jsx(Chip$1,{color:rt.value===et?"primary":"default",component:"div",id:rt.value,label:rt.label,onClick:ot=>nt(ot,it)},rt.value))}):jsxRuntimeExports.jsx(Stack$5,{component:"div",flexGrow:1,id:"cy-helper-menu",justifyContent:"flex-end",mb:1,spacing:1,children:TABS.map((rt,it)=>jsxRuntimeExports.jsx(Chip$1,{component:"div",id:rt.value,label:rt.label,onClick:ot=>nt(ot,it)},rt.value))})},MenuWrapper=styled$1(Stack$5)(()=>({"&::-webkit-scrollbar":{width:"1px",height:"4px"},"&::-webkit-scrollbar-thumb":{width:"1px",height:"4px"}})),PACKET_TYPES=Object.create(null);PACKET_TYPES.open="0";PACKET_TYPES.close="1";PACKET_TYPES.ping="2";PACKET_TYPES.pong="3";PACKET_TYPES.message="4";PACKET_TYPES.upgrade="5";PACKET_TYPES.noop="6";const PACKET_TYPES_REVERSE=Object.create(null);Object.keys(PACKET_TYPES).forEach(tt=>{PACKET_TYPES_REVERSE[PACKET_TYPES[tt]]=tt});const ERROR_PACKET={type:"error",data:"parser error"},withNativeBlob$1=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",withNativeArrayBuffer$2=typeof ArrayBuffer=="function",isView$1=tt=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(tt):tt&&tt.buffer instanceof ArrayBuffer,encodePacket=({type:tt,data:et},nt,rt)=>withNativeBlob$1&&et instanceof Blob?nt?rt(et):encodeBlobAsBase64(et,rt):withNativeArrayBuffer$2&&(et instanceof ArrayBuffer||isView$1(et))?nt?rt(et):encodeBlobAsBase64(new Blob([et]),rt):rt(PACKET_TYPES[tt]+(et||"")),encodeBlobAsBase64=(tt,et)=>{const nt=new FileReader;return nt.onload=function(){const rt=nt.result.split(",")[1];et("b"+(rt||""))},nt.readAsDataURL(tt)};function toArray(tt){return tt instanceof Uint8Array?tt:tt instanceof ArrayBuffer?new Uint8Array(tt):new Uint8Array(tt.buffer,tt.byteOffset,tt.byteLength)}let TEXT_ENCODER;function encodePacketToBinary(tt,et){if(withNativeBlob$1&&tt.data instanceof Blob)return tt.data.arrayBuffer().then(toArray).then(et);if(withNativeArrayBuffer$2&&(tt.data instanceof ArrayBuffer||isView$1(tt.data)))return et(toArray(tt.data));encodePacket(tt,!1,nt=>{TEXT_ENCODER||(TEXT_ENCODER=new TextEncoder),et(TEXT_ENCODER.encode(nt))})}const chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",lookup$1=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let tt=0;tt{let et=tt.length*.75,nt=tt.length,rt,it=0,ot,at,st,lt;tt[tt.length-1]==="="&&(et--,tt[tt.length-2]==="="&&et--);const ct=new ArrayBuffer(et),ut=new Uint8Array(ct);for(rt=0;rt>4,ut[it++]=(at&15)<<4|st>>2,ut[it++]=(st&3)<<6|lt&63;return ct},withNativeArrayBuffer$1=typeof ArrayBuffer=="function",decodePacket=(tt,et)=>{if(typeof tt!="string")return{type:"message",data:mapBinary(tt,et)};const nt=tt.charAt(0);return nt==="b"?{type:"message",data:decodeBase64Packet(tt.substring(1),et)}:PACKET_TYPES_REVERSE[nt]?tt.length>1?{type:PACKET_TYPES_REVERSE[nt],data:tt.substring(1)}:{type:PACKET_TYPES_REVERSE[nt]}:ERROR_PACKET},decodeBase64Packet=(tt,et)=>{if(withNativeArrayBuffer$1){const nt=decode$1(tt);return mapBinary(nt,et)}else return{base64:!0,data:tt}},mapBinary=(tt,et)=>{switch(et){case"blob":return tt instanceof Blob?tt:new Blob([tt]);case"arraybuffer":default:return tt instanceof ArrayBuffer?tt:tt.buffer}},SEPARATOR=String.fromCharCode(30),encodePayload=(tt,et)=>{const nt=tt.length,rt=new Array(nt);let it=0;tt.forEach((ot,at)=>{encodePacket(ot,!1,st=>{rt[at]=st,++it===nt&&et(rt.join(SEPARATOR))})})},decodePayload=(tt,et)=>{const nt=tt.split(SEPARATOR),rt=[];for(let it=0;it{const rt=nt.length;let it;if(rt<126)it=new Uint8Array(1),new DataView(it.buffer).setUint8(0,rt);else if(rt<65536){it=new Uint8Array(3);const ot=new DataView(it.buffer);ot.setUint8(0,126),ot.setUint16(1,rt)}else{it=new Uint8Array(9);const ot=new DataView(it.buffer);ot.setUint8(0,127),ot.setBigUint64(1,BigInt(rt))}tt.data&&typeof tt.data!="string"&&(it[0]|=128),et.enqueue(it),et.enqueue(nt)})}})}let TEXT_DECODER;function totalLength(tt){return tt.reduce((et,nt)=>et+nt.length,0)}function concatChunks(tt,et){if(tt[0].length===et)return tt.shift();const nt=new Uint8Array(et);let rt=0;for(let it=0;itMath.pow(2,53-32)-1){st.enqueue(ERROR_PACKET);break}it=ut*Math.pow(2,32)+ct.getUint32(4),rt=3}else{if(totalLength(nt)tt){st.enqueue(ERROR_PACKET);break}}}})}const protocol$1=4;function Emitter(tt){if(tt)return mixin(tt)}function mixin(tt){for(var et in Emitter.prototype)tt[et]=Emitter.prototype[et];return tt}Emitter.prototype.on=Emitter.prototype.addEventListener=function(tt,et){return this._callbacks=this._callbacks||{},(this._callbacks["$"+tt]=this._callbacks["$"+tt]||[]).push(et),this};Emitter.prototype.once=function(tt,et){function nt(){this.off(tt,nt),et.apply(this,arguments)}return nt.fn=et,this.on(tt,nt),this};Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(tt,et){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var nt=this._callbacks["$"+tt];if(!nt)return this;if(arguments.length==1)return delete this._callbacks["$"+tt],this;for(var rt,it=0;ittypeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function pick(tt,...et){return et.reduce((nt,rt)=>(tt.hasOwnProperty(rt)&&(nt[rt]=tt[rt]),nt),{})}const NATIVE_SET_TIMEOUT=globalThisShim.setTimeout,NATIVE_CLEAR_TIMEOUT=globalThisShim.clearTimeout;function installTimerFunctions(tt,et){et.useNativeTimers?(tt.setTimeoutFn=NATIVE_SET_TIMEOUT.bind(globalThisShim),tt.clearTimeoutFn=NATIVE_CLEAR_TIMEOUT.bind(globalThisShim)):(tt.setTimeoutFn=globalThisShim.setTimeout.bind(globalThisShim),tt.clearTimeoutFn=globalThisShim.clearTimeout.bind(globalThisShim))}const BASE64_OVERHEAD=1.33;function byteLength(tt){return typeof tt=="string"?utf8Length(tt):Math.ceil((tt.byteLength||tt.size)*BASE64_OVERHEAD)}function utf8Length(tt){let et=0,nt=0;for(let rt=0,it=tt.length;rt=57344?nt+=3:(rt++,nt+=4);return nt}function encode$1(tt){let et="";for(let nt in tt)tt.hasOwnProperty(nt)&&(et.length&&(et+="&"),et+=encodeURIComponent(nt)+"="+encodeURIComponent(tt[nt]));return et}function decode(tt){let et={},nt=tt.split("&");for(let rt=0,it=nt.length;rt0);return et}function yeast(){const tt=encode(+new Date);return tt!==prev?(seed=0,prev=tt):tt+"."+encode(seed++)}for(;i{this.readyState="paused",et()};if(this.polling||!this.writable){let rt=0;this.polling&&(rt++,this.once("pollComplete",function(){--rt||nt()})),this.writable||(rt++,this.once("drain",function(){--rt||nt()}))}else nt()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(et){const nt=rt=>{if(this.readyState==="opening"&&rt.type==="open"&&this.onOpen(),rt.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(rt)};decodePayload(et,this.socket.binaryType).forEach(nt),this.readyState!=="closed"&&(this.polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this.poll())}doClose(){const et=()=>{this.write([{type:"close"}])};this.readyState==="open"?et():this.once("open",et)}write(et){this.writable=!1,encodePayload(et,nt=>{this.doWrite(nt,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const et=this.opts.secure?"https":"http",nt=this.query||{};return this.opts.timestampRequests!==!1&&(nt[this.opts.timestampParam]=yeast()),!this.supportsBinary&&!nt.sid&&(nt.b64=1),this.createUri(et,nt)}request(et={}){return Object.assign(et,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Request$1(this.uri(),et)}doWrite(et,nt){const rt=this.request({method:"POST",data:et});rt.on("success",nt),rt.on("error",(it,ot)=>{this.onError("xhr post error",it,ot)})}doPoll(){const et=this.request();et.on("data",this.onData.bind(this)),et.on("error",(nt,rt)=>{this.onError("xhr poll error",nt,rt)}),this.pollXhr=et}}let Request$1=class D0 extends Emitter{constructor(et,nt){super(),installTimerFunctions(this,nt),this.opts=nt,this.method=nt.method||"GET",this.uri=et,this.data=nt.data!==void 0?nt.data:null,this.create()}create(){var et;const nt=pick(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");nt.xdomain=!!this.opts.xd;const rt=this.xhr=new XHR(nt);try{rt.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){rt.setDisableHeaderCheck&&rt.setDisableHeaderCheck(!0);for(let it in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(it)&&rt.setRequestHeader(it,this.opts.extraHeaders[it])}}catch{}if(this.method==="POST")try{rt.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{rt.setRequestHeader("Accept","*/*")}catch{}(et=this.opts.cookieJar)===null||et===void 0||et.addCookies(rt),"withCredentials"in rt&&(rt.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(rt.timeout=this.opts.requestTimeout),rt.onreadystatechange=()=>{var it;rt.readyState===3&&((it=this.opts.cookieJar)===null||it===void 0||it.parseCookies(rt)),rt.readyState===4&&(rt.status===200||rt.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof rt.status=="number"?rt.status:0)},0))},rt.send(this.data)}catch(it){this.setTimeoutFn(()=>{this.onError(it)},0);return}typeof document<"u"&&(this.index=D0.requestsCount++,D0.requests[this.index]=this)}onError(et){this.emitReserved("error",et,this.xhr),this.cleanup(!0)}cleanup(et){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.xhr.onreadystatechange=empty$1,et)try{this.xhr.abort()}catch{}typeof document<"u"&&delete D0.requests[this.index],this.xhr=null}}onLoad(){const et=this.xhr.responseText;et!==null&&(this.emitReserved("data",et),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}};Request$1.requestsCount=0;Request$1.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",unloadHandler);else if(typeof addEventListener=="function"){const tt="onpagehide"in globalThisShim?"pagehide":"unload";addEventListener(tt,unloadHandler,!1)}}function unloadHandler(){for(let tt in Request$1.requests)Request$1.requests.hasOwnProperty(tt)&&Request$1.requests[tt].abort()}const nextTick=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?et=>Promise.resolve().then(et):(et,nt)=>nt(et,0))(),WebSocket=globalThisShim.WebSocket||globalThisShim.MozWebSocket,usingBrowserWebSocket=!0,defaultBinaryType="arraybuffer",isReactNative=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class WS extends Transport{constructor(et){super(et),this.supportsBinary=!et.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const et=this.uri(),nt=this.opts.protocols,rt=isReactNative?{}:pick(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(rt.headers=this.opts.extraHeaders);try{this.ws=usingBrowserWebSocket&&!isReactNative?nt?new WebSocket(et,nt):new WebSocket(et):new WebSocket(et,nt,rt)}catch(it){return this.emitReserved("error",it)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=et=>this.onClose({description:"websocket connection closed",context:et}),this.ws.onmessage=et=>this.onData(et.data),this.ws.onerror=et=>this.onError("websocket error",et)}write(et){this.writable=!1;for(let nt=0;nt{const at={};try{usingBrowserWebSocket&&this.ws.send(ot)}catch{}it&&nextTick(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){const et=this.opts.secure?"wss":"ws",nt=this.query||{};return this.opts.timestampRequests&&(nt[this.opts.timestampParam]=yeast()),this.supportsBinary||(nt.b64=1),this.createUri(et,nt)}check(){return!!WebSocket}}class WT extends Transport{get name(){return"webtransport"}doOpen(){typeof WebTransport=="function"&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then(()=>{this.onClose()}).catch(et=>{this.onError("webtransport error",et)}),this.transport.ready.then(()=>{this.transport.createBidirectionalStream().then(et=>{const nt=createPacketDecoderStream(Number.MAX_SAFE_INTEGER,this.socket.binaryType),rt=et.readable.pipeThrough(nt).getReader(),it=createPacketEncoderStream();it.readable.pipeTo(et.writable),this.writer=it.writable.getWriter();const ot=()=>{rt.read().then(({done:st,value:lt})=>{st||(this.onPacket(lt),ot())}).catch(st=>{})};ot();const at={type:"open"};this.query.sid&&(at.data=`{"sid":"${this.query.sid}"}`),this.writer.write(at).then(()=>this.onOpen())})}))}write(et){this.writable=!1;for(let nt=0;nt{it&&nextTick(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var et;(et=this.transport)===null||et===void 0||et.close()}}const transports={websocket:WS,webtransport:WT,polling:Polling},re=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,parts=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function parse(tt){const et=tt,nt=tt.indexOf("["),rt=tt.indexOf("]");nt!=-1&&rt!=-1&&(tt=tt.substring(0,nt)+tt.substring(nt,rt).replace(/:/g,";")+tt.substring(rt,tt.length));let it=re.exec(tt||""),ot={},at=14;for(;at--;)ot[parts[at]]=it[at]||"";return nt!=-1&&rt!=-1&&(ot.source=et,ot.host=ot.host.substring(1,ot.host.length-1).replace(/;/g,":"),ot.authority=ot.authority.replace("[","").replace("]","").replace(/;/g,":"),ot.ipv6uri=!0),ot.pathNames=pathNames(ot,ot.path),ot.queryKey=queryKey(ot,ot.query),ot}function pathNames(tt,et){const nt=/\/{2,9}/g,rt=et.replace(nt,"/").split("/");return(et.slice(0,1)=="/"||et.length===0)&&rt.splice(0,1),et.slice(-1)=="/"&&rt.splice(rt.length-1,1),rt}function queryKey(tt,et){const nt={};return et.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(rt,it,ot){it&&(nt[it]=ot)}),nt}let Socket$1=class Gm extends Emitter{constructor(et,nt={}){super(),this.binaryType=defaultBinaryType,this.writeBuffer=[],et&&typeof et=="object"&&(nt=et,et=null),et?(et=parse(et),nt.hostname=et.host,nt.secure=et.protocol==="https"||et.protocol==="wss",nt.port=et.port,et.query&&(nt.query=et.query)):nt.host&&(nt.hostname=parse(nt.host).host),installTimerFunctions(this,nt),this.secure=nt.secure!=null?nt.secure:typeof location<"u"&&location.protocol==="https:",nt.hostname&&!nt.port&&(nt.port=this.secure?"443":"80"),this.hostname=nt.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=nt.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=nt.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},nt),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,typeof addEventListener=="function"&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(et){const nt=Object.assign({},this.opts.query);nt.EIO=protocol$1,nt.transport=et,this.id&&(nt.sid=this.id);const rt=Object.assign({},this.opts,{query:nt,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[et]);return new transports[et](rt)}open(){let et;if(this.opts.rememberUpgrade&&Gm.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)et="websocket";else if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}else et=this.transports[0];this.readyState="opening";try{et=this.createTransport(et)}catch{this.transports.shift(),this.open();return}et.open(),this.setTransport(et)}setTransport(et){this.transport&&this.transport.removeAllListeners(),this.transport=et,et.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",nt=>this.onClose("transport close",nt))}probe(et){let nt=this.createTransport(et),rt=!1;Gm.priorWebsocketSuccess=!1;const it=()=>{rt||(nt.send([{type:"ping",data:"probe"}]),nt.once("packet",ht=>{if(!rt)if(ht.type==="pong"&&ht.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",nt),!nt)return;Gm.priorWebsocketSuccess=nt.name==="websocket",this.transport.pause(()=>{rt||this.readyState!=="closed"&&(ut(),this.setTransport(nt),nt.send([{type:"upgrade"}]),this.emitReserved("upgrade",nt),nt=null,this.upgrading=!1,this.flush())})}else{const dt=new Error("probe error");dt.transport=nt.name,this.emitReserved("upgradeError",dt)}}))};function ot(){rt||(rt=!0,ut(),nt.close(),nt=null)}const at=ht=>{const dt=new Error("probe error: "+ht);dt.transport=nt.name,ot(),this.emitReserved("upgradeError",dt)};function st(){at("transport closed")}function lt(){at("socket closed")}function ct(ht){nt&&ht.name!==nt.name&&ot()}const ut=()=>{nt.removeListener("open",it),nt.removeListener("error",at),nt.removeListener("close",st),this.off("close",lt),this.off("upgrading",ct)};nt.once("open",it),nt.once("error",at),nt.once("close",st),this.once("close",lt),this.once("upgrading",ct),this.upgrades.indexOf("webtransport")!==-1&&et!=="webtransport"?this.setTimeoutFn(()=>{rt||nt.open()},200):nt.open()}onOpen(){if(this.readyState="open",Gm.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade){let et=0;const nt=this.upgrades.length;for(;et{this.onClose("ping timeout")},this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const et=this.getWritablePackets();this.transport.send(et),this.prevBufferLen=et.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let nt=1;for(let rt=0;rt0&&nt>this.maxPayload)return this.writeBuffer.slice(0,rt);nt+=2}return this.writeBuffer}write(et,nt,rt){return this.sendPacket("message",et,nt,rt),this}send(et,nt,rt){return this.sendPacket("message",et,nt,rt),this}sendPacket(et,nt,rt,it){if(typeof nt=="function"&&(it=nt,nt=void 0),typeof rt=="function"&&(it=rt,rt=null),this.readyState==="closing"||this.readyState==="closed")return;rt=rt||{},rt.compress=rt.compress!==!1;const ot={type:et,data:nt,options:rt};this.emitReserved("packetCreate",ot),this.writeBuffer.push(ot),it&&this.once("flush",it),this.flush()}close(){const et=()=>{this.onClose("forced close"),this.transport.close()},nt=()=>{this.off("upgrade",nt),this.off("upgradeError",nt),et()},rt=()=>{this.once("upgrade",nt),this.once("upgradeError",nt)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?rt():et()}):this.upgrading?rt():et()),this}onError(et){Gm.priorWebsocketSuccess=!1,this.emitReserved("error",et),this.onClose("transport error",et)}onClose(et,nt){(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")&&(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),typeof removeEventListener=="function"&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",et,nt),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(et){const nt=[];let rt=0;const it=et.length;for(;rttypeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(tt):tt.buffer instanceof ArrayBuffer,toString=Object.prototype.toString,withNativeBlob=typeof Blob=="function"||typeof Blob<"u"&&toString.call(Blob)==="[object BlobConstructor]",withNativeFile=typeof File=="function"||typeof File<"u"&&toString.call(File)==="[object FileConstructor]";function isBinary(tt){return withNativeArrayBuffer&&(tt instanceof ArrayBuffer||isView(tt))||withNativeBlob&&tt instanceof Blob||withNativeFile&&tt instanceof File}function hasBinary(tt,et){if(!tt||typeof tt!="object")return!1;if(Array.isArray(tt)){for(let nt=0,rt=tt.length;nt=0&&tt.num{delete this.acks[et];for(let at=0;at{this.io.clearTimeoutFn(ot),nt.apply(this,[null,...at])}}emitWithAck(et,...nt){const rt=this.flags.timeout!==void 0||this._opts.ackTimeout!==void 0;return new Promise((it,ot)=>{nt.push((at,st)=>rt?at?ot(at):it(st):it(at)),this.emit(et,...nt)})}_addToQueue(et){let nt;typeof et[et.length-1]=="function"&&(nt=et.pop());const rt={id:this._queueSeq++,tryCount:0,pending:!1,args:et,flags:Object.assign({fromQueue:!0},this.flags)};et.push((it,...ot)=>rt!==this._queue[0]?void 0:(it!==null?rt.tryCount>this._opts.retries&&(this._queue.shift(),nt&&nt(it)):(this._queue.shift(),nt&&nt(null,...ot)),rt.pending=!1,this._drainQueue())),this._queue.push(rt),this._drainQueue()}_drainQueue(et=!1){if(!this.connected||this._queue.length===0)return;const nt=this._queue[0];nt.pending&&!et||(nt.pending=!0,nt.tryCount++,this.flags=nt.flags,this.emit.apply(this,nt.args))}packet(et){et.nsp=this.nsp,this.io._packet(et)}onopen(){typeof this.auth=="function"?this.auth(et=>{this._sendConnectPacket(et)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(et){this.packet({type:PacketType.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},et):et})}onerror(et){this.connected||this.emitReserved("connect_error",et)}onclose(et,nt){this.connected=!1,delete this.id,this.emitReserved("disconnect",et,nt)}onpacket(et){if(et.nsp===this.nsp)switch(et.type){case PacketType.CONNECT:et.data&&et.data.sid?this.onconnect(et.data.sid,et.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case PacketType.EVENT:case PacketType.BINARY_EVENT:this.onevent(et);break;case PacketType.ACK:case PacketType.BINARY_ACK:this.onack(et);break;case PacketType.DISCONNECT:this.ondisconnect();break;case PacketType.CONNECT_ERROR:this.destroy();const rt=new Error(et.data.message);rt.data=et.data.data,this.emitReserved("connect_error",rt);break}}onevent(et){const nt=et.data||[];et.id!=null&&nt.push(this.ack(et.id)),this.connected?this.emitEvent(nt):this.receiveBuffer.push(Object.freeze(nt))}emitEvent(et){if(this._anyListeners&&this._anyListeners.length){const nt=this._anyListeners.slice();for(const rt of nt)rt.apply(this,et)}super.emit.apply(this,et),this._pid&&et.length&&typeof et[et.length-1]=="string"&&(this._lastOffset=et[et.length-1])}ack(et){const nt=this;let rt=!1;return function(...it){rt||(rt=!0,nt.packet({type:PacketType.ACK,id:et,data:it}))}}onack(et){const nt=this.acks[et.id];typeof nt=="function"&&(nt.apply(this,et.data),delete this.acks[et.id])}onconnect(et,nt){this.id=et,this.recovered=nt&&this._pid===nt,this._pid=nt,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(et=>this.emitEvent(et)),this.receiveBuffer=[],this.sendBuffer.forEach(et=>{this.notifyOutgoingListeners(et),this.packet(et)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(et=>et()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:PacketType.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(et){return this.flags.compress=et,this}get volatile(){return this.flags.volatile=!0,this}timeout(et){return this.flags.timeout=et,this}onAny(et){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(et),this}prependAny(et){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(et),this}offAny(et){if(!this._anyListeners)return this;if(et){const nt=this._anyListeners;for(let rt=0;rt0&&tt.jitter<=1?tt.jitter:0,this.attempts=0}Backoff.prototype.duration=function(){var tt=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var et=Math.random(),nt=Math.floor(et*this.jitter*tt);tt=Math.floor(et*10)&1?tt+nt:tt-nt}return Math.min(tt,this.max)|0};Backoff.prototype.reset=function(){this.attempts=0};Backoff.prototype.setMin=function(tt){this.ms=tt};Backoff.prototype.setMax=function(tt){this.max=tt};Backoff.prototype.setJitter=function(tt){this.jitter=tt};class Manager extends Emitter{constructor(et,nt){var rt;super(),this.nsps={},this.subs=[],et&&typeof et=="object"&&(nt=et,et=void 0),nt=nt||{},nt.path=nt.path||"/socket.io",this.opts=nt,installTimerFunctions(this,nt),this.reconnection(nt.reconnection!==!1),this.reconnectionAttempts(nt.reconnectionAttempts||1/0),this.reconnectionDelay(nt.reconnectionDelay||1e3),this.reconnectionDelayMax(nt.reconnectionDelayMax||5e3),this.randomizationFactor((rt=nt.randomizationFactor)!==null&&rt!==void 0?rt:.5),this.backoff=new Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(nt.timeout==null?2e4:nt.timeout),this._readyState="closed",this.uri=et;const it=nt.parser||parser;this.encoder=new it.Encoder,this.decoder=new it.Decoder,this._autoConnect=nt.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(et){return arguments.length?(this._reconnection=!!et,this):this._reconnection}reconnectionAttempts(et){return et===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=et,this)}reconnectionDelay(et){var nt;return et===void 0?this._reconnectionDelay:(this._reconnectionDelay=et,(nt=this.backoff)===null||nt===void 0||nt.setMin(et),this)}randomizationFactor(et){var nt;return et===void 0?this._randomizationFactor:(this._randomizationFactor=et,(nt=this.backoff)===null||nt===void 0||nt.setJitter(et),this)}reconnectionDelayMax(et){var nt;return et===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=et,(nt=this.backoff)===null||nt===void 0||nt.setMax(et),this)}timeout(et){return arguments.length?(this._timeout=et,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(et){if(~this._readyState.indexOf("open"))return this;this.engine=new Socket$1(this.uri,this.opts);const nt=this.engine,rt=this;this._readyState="opening",this.skipReconnect=!1;const it=on(nt,"open",function(){rt.onopen(),et&&et()}),ot=st=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",st),et?et(st):this.maybeReconnectOnOpen()},at=on(nt,"error",ot);if(this._timeout!==!1){const st=this._timeout,lt=this.setTimeoutFn(()=>{it(),ot(new Error("timeout")),nt.close()},st);this.opts.autoUnref&<.unref(),this.subs.push(()=>{this.clearTimeoutFn(lt)})}return this.subs.push(it),this.subs.push(at),this}connect(et){return this.open(et)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const et=this.engine;this.subs.push(on(et,"ping",this.onping.bind(this)),on(et,"data",this.ondata.bind(this)),on(et,"error",this.onerror.bind(this)),on(et,"close",this.onclose.bind(this)),on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(et){try{this.decoder.add(et)}catch(nt){this.onclose("parse error",nt)}}ondecoded(et){nextTick(()=>{this.emitReserved("packet",et)},this.setTimeoutFn)}onerror(et){this.emitReserved("error",et)}socket(et,nt){let rt=this.nsps[et];return rt?this._autoConnect&&!rt.active&&rt.connect():(rt=new Socket(this,et,nt),this.nsps[et]=rt),rt}_destroy(et){const nt=Object.keys(this.nsps);for(const rt of nt)if(this.nsps[rt].active)return;this._close()}_packet(et){const nt=this.encoder.encode(et);for(let rt=0;rtet()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(et,nt){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",et,nt),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const et=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const nt=this.backoff.duration();this._reconnecting=!0;const rt=this.setTimeoutFn(()=>{et.skipReconnect||(this.emitReserved("reconnect_attempt",et.backoff.attempts),!et.skipReconnect&&et.open(it=>{it?(et._reconnecting=!1,et.reconnect(),this.emitReserved("reconnect_error",it)):et.onreconnect()}))},nt);this.opts.autoUnref&&rt.unref(),this.subs.push(()=>{this.clearTimeoutFn(rt)})}}onreconnect(){const et=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",et)}}const cache={};function lookup(tt,et){typeof tt=="object"&&(et=tt,tt=void 0),et=et||{};const nt=url(tt,et.path||"/socket.io"),rt=nt.source,it=nt.id,ot=nt.path,at=cache[it]&&ot in cache[it].nsps,st=et.forceNew||et["force new connection"]||et.multiplex===!1||at;let lt;return st?lt=new Manager(rt,et):(cache[it]||(cache[it]=new Manager(rt,et)),lt=cache[it]),nt.query&&!et.query&&(et.query=nt.queryKey),lt.socket(nt.path,et)}Object.assign(lookup,{Manager,Socket,io:lookup,connect:lookup});const useSocket=()=>{const[tt,et]=reactExports.useState(null);return reactExports.useEffect(()=>{const nt=lookup(API_URL);return et(nt),()=>{nt.disconnect()}},[]),tt},ITEM_HEIGHT=48,ITEM_PADDING_TOP=8,MenuProps={PaperProps:{style:{maxHeight:ITEM_HEIGHT*4.5+ITEM_PADDING_TOP,width:250}}},names=["Beginner","Intermediate","Advanced","Expert"],AskQuestion=()=>{const tt=useDataStore(xt=>xt.data),[et,nt]=reactExports.useState(""),[rt,it]=reactExports.useState("Beginner"),ot=useAppStore(xt=>xt.currentSearch),at=reactExports.useRef(!1),st=useSocket(),[lt]=useUserStore(xt=>[xt.setBudget]),[ct,ut,ht,dt,pt]=useTeachStore(xt=>[xt.askedQuestions,xt.askedQuestionsAnswers,xt.setAskedQuestion,xt.setAskedQuestionAnswer,xt.hasQuestionInProgress]),mt=reactExports.useCallback(xt=>{dt(xt.answer),toast(jsxRuntimeExports.jsx(ToastMessage,{message:"Response is ready"}),{position:toast.POSITION.BOTTOM_CENTER,type:"success"})},[dt]);reactExports.useEffect(()=>{at.current||mt&&st&&(st.on("askquestionhook",mt),at.current=!0)},[mt,st]);const gt=async()=>{et&&(ht(et),nt(""));try{const xt=tt==null?void 0:tt.nodes.filter(Tt=>Tt.text),kt=xt==null?void 0:xt.slice(0,5),St=(kt!=null&&kt.length?kt.map(Tt=>Tt.text).join(" "):"").substring(0,2500).replace(/[?&=+/#]/g,Tt=>`\\${Tt}`);ot&&(await distExports$1.enable(),await postAskQuestion({expertise_level:rt,question_text:et,search_term:ot,transcripts:St}),await updateBudget(lt),toast(jsxRuntimeExports.jsx(ToastMessage,{message:"We started preparing response for you"}),{type:"success"}))}catch(xt){console.error(xt)}},yt=rt&&et.trim()&&!pt,bt=xt=>{it(xt.target.value)},vt=async xt=>{if(pt){xt.preventDefault();return}xt.keyCode===13&&xt.shiftKey===!1&&yt&&(xt.preventDefault(),gt())};return jsxRuntimeExports.jsxs(AskQuestionContainer,{children:[jsxRuntimeExports.jsx(Flex,{children:jsxRuntimeExports.jsx(Flex,{children:jsxRuntimeExports.jsxs(FormControl$1,{component:"div",children:[jsxRuntimeExports.jsx(StyledInput,{id:"select-label",size:"small",children:"Expertise level"}),jsxRuntimeExports.jsx(StyledSelect,{id:"demo-multiple-name",input:jsxRuntimeExports.jsx(OutlinedInput$1,{label:"Expertise level"}),labelId:"select-label",MenuProps,onChange:bt,size:"small",value:rt,children:names.map(xt=>jsxRuntimeExports.jsx(MenuItem$3,{component:"li",value:xt,children:xt},xt))})]})})}),jsxRuntimeExports.jsx(ResponsesWrapper,{children:ct==null?void 0:ct.map((xt,kt)=>jsxRuntimeExports.jsxs(Flex,{className:"response",py:12,children:[jsxRuntimeExports.jsx(Text$3,{kind:"medium",children:xt}),jsxRuntimeExports.jsx(Flex,{py:12,children:(ut==null?void 0:ut[kt])!==void 0?jsxRuntimeExports.jsx(Text$3,{color:"unreadMsgText",children:ut[kt]}):jsxRuntimeExports.jsxs(Flex,{align:"center",py:12,children:[jsxRuntimeExports.jsx(Flex,{align:"center",py:12,children:jsxRuntimeExports.jsx(PropagateLoader,{color:colors.white})}),jsxRuntimeExports.jsx(Flex,{align:"center",py:12,children:jsxRuntimeExports.jsx(Text$3,{children:"Generating response"})})]})})]},xt))}),jsxRuntimeExports.jsxs(TextAreaWrapper,{onKeyDown:vt,py:12,tabIndex:-1,children:[jsxRuntimeExports.jsx(StyledTextarea,{disabled:pt,onChange:xt=>nt(xt.target.value),placeholder:"Enter your question",value:et}),jsxRuntimeExports.jsx(IconWrapper$1,{children:jsxRuntimeExports.jsx(MdSend,{color:yt?colors.white:colors.gray300,size:"18"})})]})]})},AskQuestionContainer=styled$4.div` margin-top: 20px; `,StyledTextarea=styled$4(TextareaAutosize)` background: ${colors.inputBg1}; @@ -7581,7 +7608,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho &:hover { background-color: ${colors.gray200}; } -`,CheckIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 10 7",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsx("path",{d:"M3.08467 5.34482L8.02842 0.401074C8.14508 0.284408 8.28363 0.226074 8.44404 0.226074C8.60446 0.226074 8.743 0.284408 8.85967 0.401074C8.97633 0.517741 9.03467 0.656283 9.03467 0.816699C9.03467 0.977116 8.97633 1.11566 8.85967 1.23232L3.493 6.59899C3.37633 6.71566 3.24022 6.77399 3.08467 6.77399C2.92911 6.77399 2.793 6.71566 2.67633 6.59899L0.168 4.09066C0.0513333 3.97399 -0.00456944 3.83545 0.000291667 3.67503C0.00515278 3.51462 0.0659167 3.37607 0.182583 3.25941C0.29925 3.14274 0.437792 3.08441 0.598208 3.08441C0.758625 3.08441 0.897167 3.14274 1.01383 3.25941L3.08467 5.34482Z",fill:"currentColor"})}),ChevronDownIcon=tt=>jsxRuntimeExports.jsxs("svg",{width:"1em",height:"1em",viewBox:"0 0 14 14",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_2337_2483",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"14",height:"14",children:jsxRuntimeExports.jsx("rect",{width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_2337_2483)",children:jsxRuntimeExports.jsx("path",{d:"M7.00001 8.72074C6.92223 8.72074 6.84931 8.70858 6.78126 8.68428C6.7132 8.65997 6.65001 8.61865 6.59167 8.56032L3.90834 5.87699C3.8014 5.77004 3.74792 5.63393 3.74792 5.46865C3.74792 5.30337 3.8014 5.16726 3.90834 5.06032C4.01529 4.95337 4.1514 4.8999 4.31667 4.8999C4.48195 4.8999 4.61806 4.95337 4.72501 5.06032L7.00001 7.33532L9.27501 5.06032C9.38195 4.95337 9.51806 4.8999 9.68334 4.8999C9.84862 4.8999 9.98473 4.95337 10.0917 5.06032C10.1986 5.16726 10.2521 5.30337 10.2521 5.46865C10.2521 5.63393 10.1986 5.77004 10.0917 5.87699L7.40834 8.56032C7.35001 8.61865 7.28681 8.65997 7.21876 8.68428C7.1507 8.70858 7.07779 8.72074 7.00001 8.72074Z",fill:"currentColor"})})]}),ChevronUpIcon=tt=>jsxRuntimeExports.jsxs("svg",{width:"1em",height:"1em",viewBox:"0 0 14 14",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_2337_2442",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"14",height:"14",children:jsxRuntimeExports.jsx("rect",{width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_2337_2442)",children:jsxRuntimeExports.jsx("path",{d:"M7.00001 6.28532L4.72501 8.56032C4.61806 8.66726 4.48195 8.72074 4.31667 8.72074C4.1514 8.72074 4.01529 8.66726 3.90834 8.56032C3.8014 8.45337 3.74792 8.31726 3.74792 8.15199C3.74792 7.98671 3.8014 7.8506 3.90834 7.74365L6.59167 5.06032C6.65001 5.00199 6.7132 4.96067 6.78126 4.93636C6.84931 4.91206 6.92223 4.8999 7.00001 4.8999C7.07779 4.8999 7.1507 4.91206 7.21876 4.93636C7.28681 4.96067 7.35001 5.00199 7.40834 5.06032L10.0917 7.74365C10.1986 7.8506 10.2521 7.98671 10.2521 8.15199C10.2521 8.31726 10.1986 8.45337 10.0917 8.56032C9.98473 8.66726 9.84862 8.72074 9.68334 8.72074C9.51806 8.72074 9.38195 8.66726 9.27501 8.56032L7.00001 6.28532Z",fill:"currentColor"})})]}),options={all:"All",show:"Show",episode:"Episode",twitter_space:"Twitter Space",tweet:"Tweet",youtube:"Video (Youtube)",person:"People (Person)",document:"Document",podcast:"Podcast"},SelectWithPopover=()=>{const[tt,et]=reactExports.useState(null),[nt,rt]=useDataStore(st=>[st.sidebarFilter,st.setSidebarFilter]),it=st=>{et(st.currentTarget)},ot=()=>{et(null)},at=st=>{rt(st),ot()};return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs(Action,{onClick:it,children:[jsxRuntimeExports.jsx("div",{className:"text",children:"Show"}),jsxRuntimeExports.jsx("div",{className:"value",children:options[nt]}),jsxRuntimeExports.jsx("div",{className:"icon",children:tt?jsxRuntimeExports.jsx(ChevronUpIcon,{}):jsxRuntimeExports.jsx(ChevronDownIcon,{})})]}),jsxRuntimeExports.jsx(StyledPopover,{anchorEl:tt,anchorOrigin:{vertical:"bottom",horizontal:"left"},anchorPosition:{top:62,left:0},onClose:ot,open:!!tt,transformOrigin:{vertical:"top",horizontal:"left"},children:jsxRuntimeExports.jsx(FormControl$1,{children:Object.keys(options).map(st=>jsxRuntimeExports.jsxs(MenuItem,{className:clsx$1({active:st===nt}),onClick:()=>at(st),children:[jsxRuntimeExports.jsx("span",{className:"icon",children:st===nt?jsxRuntimeExports.jsx(CheckIcon,{}):null}),jsxRuntimeExports.jsx("span",{children:options[st]})]},st))})})]})},Action=styled$4(Flex).attrs({direction:"row",align:"center"})` +`,options={all:"All",show:"Show",episode:"Episode",twitter_space:"Twitter Space",tweet:"Tweet",youtube:"Video (Youtube)",person:"People (Person)",document:"Document",podcast:"Podcast"},SelectWithPopover=()=>{const[tt,et]=reactExports.useState(null),[nt,rt]=useDataStore(st=>[st.sidebarFilter,st.setSidebarFilter]),it=st=>{et(st.currentTarget)},ot=()=>{et(null)},at=st=>{rt(st),ot()};return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs(Action,{onClick:it,children:[jsxRuntimeExports.jsx("div",{className:"text",children:"Show"}),jsxRuntimeExports.jsx("div",{className:"value",children:options[nt]}),jsxRuntimeExports.jsx("div",{className:"icon",children:tt?jsxRuntimeExports.jsx(ChevronUpIcon,{}):jsxRuntimeExports.jsx(ChevronDownIcon,{})})]}),jsxRuntimeExports.jsx(StyledPopover,{anchorEl:tt,anchorOrigin:{vertical:"bottom",horizontal:"left"},anchorPosition:{top:62,left:0},onClose:ot,open:!!tt,transformOrigin:{vertical:"top",horizontal:"left"},children:jsxRuntimeExports.jsx(FormControl$1,{children:Object.keys(options).map(st=>jsxRuntimeExports.jsxs(MenuItem,{className:clsx$1({active:st===nt}),onClick:()=>at(st),children:[jsxRuntimeExports.jsx("span",{className:"icon",children:st===nt?jsxRuntimeExports.jsx(CheckIcon,{}):null}),jsxRuntimeExports.jsx("span",{children:options[st]})]},st))})})]})},Action=styled$4(Flex).attrs({direction:"row",align:"center"})` cursor: pointer; flex-grow: 1; color: ${colors.GRAY6}; @@ -7934,7 +7961,32 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho @keyframes `.concat(rt,` { `).concat(et,` } - `);return ot&&ot.insertRule(at,0),rt};animation.createAnimation=createAnimation;var __assign=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign=Object.assign||function(tt){for(var et,nt=1,rt=arguments.length;nt{let et=await distExports$1.enable(!0);if(et||console.warn("Sphinx enable failed, means no pubkey and no budget (including budget of 0)"),et=await distExports$1.keysend(sphinxPubkey,tt),!(et!=null&&et.success)){if(et=await distExports$1.topup(),!(et!=null&&et.budget)||(et==null?void 0:et.budget){const nt=await boostAgainstBudget(et),rt={amount:et,refid:tt};return await api.post("/boost",JSON.stringify(rt)),nt},notify=tt=>{toast(jsxRuntimeExports.jsx(ToastMessage,{message:tt}),{icon:!1,position:toast.POSITION.BOTTOM_CENTER,type:tt===BOOST_SUCCESS?"success":"error"})},Booster=({count:tt=0,updateCount:et,content:nt,readOnly:rt,refId:it})=>{const[ot,at]=reactExports.useState(!1),[st,lt]=reactExports.useState(!1),[ct]=useUserStore(pt=>[pt.setBudget]);reactExports.useEffect(()=>{lt(!1),at(!1)},[it]);let{image_url:ut}=nt||{};ut&&(ut=ut.replace(".jpg","_l.jpg"));const ht=5;async function dt(){if(!(ot||!it)){at(!0);try{const pt=await boost(it,ht);lt(!0),notify(BOOST_SUCCESS),et&&et(tt+ht),pt.budget&&ct(pt.budget)}catch{notify(BOOST_ERROR_BUDGET)}at(!1)}}return rt?tt?jsxRuntimeExports.jsx(Pill,{className:"booster__pill",style:{padding:"1px 8px 1px 3px",width:"fit-content"},children:jsxRuntimeExports.jsxs(Flex,{align:"center",direction:"row",justify:"center",children:[jsxRuntimeExports.jsx(MdBolt,{fontSize:12}),jsxRuntimeExports.jsx("div",{style:{fontSize:10},children:tt||0})]})}):null:jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(Pill,{disabled:ot,onClick:async()=>{st||ot||await dt()},style:{padding:"4px 8px",borderWidth:0,backgroundColor:"#303342",height:"25px",width:"fit-content"},children:ot?jsxRuntimeExports.jsx(_default,{color:"#fff",loading:!0,size:10}):jsxRuntimeExports.jsxs(Flex,{align:"center",direction:"row",justify:"space-around",children:[jsxRuntimeExports.jsx(BoostIcon,{style:{color:colors.white}}),jsxRuntimeExports.jsx("div",{style:{marginLeft:8,marginRight:8},children:"Boost"})]})})})},defaultData={isPlaying:!1},usePlayerStore=react(tt=>({...defaultData,setIsPlaying:et=>tt({isPlaying:et})})),NotesIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"notes",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1473_73722",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1473_73722)",children:jsxRuntimeExports.jsx("path",{id:"notes_2",d:"M2.83337 11.7564C2.69171 11.7564 2.57296 11.7085 2.47712 11.6126C2.38129 11.5167 2.33337 11.3979 2.33337 11.2562C2.33337 11.1144 2.38129 10.9957 2.47712 10.9C2.57296 10.8043 2.69171 10.7564 2.83337 10.7564H9.16668C9.30834 10.7564 9.42709 10.8043 9.52293 10.9002C9.61876 10.9961 9.66668 11.1149 9.66668 11.2566C9.66668 11.3983 9.61876 11.5171 9.52293 11.6128C9.42709 11.7085 9.30834 11.7564 9.16668 11.7564H2.83337ZM2.83337 8.49997C2.69171 8.49997 2.57296 8.45204 2.47712 8.35617C2.38129 8.2603 2.33337 8.1415 2.33337 7.99977C2.33337 7.85804 2.38129 7.73931 2.47712 7.64359C2.57296 7.54787 2.69171 7.50001 2.83337 7.50001H13.1667C13.3083 7.50001 13.4271 7.54794 13.5229 7.64381C13.6188 7.73969 13.6667 7.85849 13.6667 8.00021C13.6667 8.14194 13.6188 8.26067 13.5229 8.35639C13.4271 8.45211 13.3083 8.49997 13.1667 8.49997H2.83337ZM2.83337 5.24357C2.69171 5.24357 2.57296 5.19564 2.47712 5.09976C2.38129 5.00389 2.33337 4.88509 2.33337 4.74336C2.33337 4.60164 2.38129 4.48291 2.47712 4.38719C2.57296 4.29146 2.69171 4.24359 2.83337 4.24359H13.1667C13.3083 4.24359 13.4271 4.29153 13.5229 4.38741C13.6188 4.48329 13.6667 4.60209 13.6667 4.74381C13.6667 4.88554 13.6188 5.00427 13.5229 5.09999C13.4271 5.19571 13.3083 5.24357 13.1667 5.24357H2.83337Z",fill:"currentColor"})})]})}),Description=({stateless:tt,node:et})=>jsxRuntimeExports.jsxs(Flex,{grow:1,shrink:1,children:[jsxRuntimeExports.jsx(Header$1,{children:tt&&jsxRuntimeExports.jsxs(Heading$2,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(NotesIcon,{})}),jsxRuntimeExports.jsx("div",{className:"title",children:"Description"})]})}),jsxRuntimeExports.jsx(Box$1,{children:et!=null&&et.description?`"${et==null?void 0:et.description}"`:"..."})]}),Heading$2=styled$4(Flex).attrs({direction:"row",align:"center"})` + `);return ot&&ot.insertRule(at,0),rt};animation.createAnimation=createAnimation;var __assign=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign=Object.assign||function(tt){for(var et,nt=1,rt=arguments.length;nttt?"0.7":"1"}; + + padding: 10px 20px; + +${({disabled:tt})=>tt&&Ae` + cursor: none; + opacity: 0.5; + `} + + } + + &:hover { + background: ${({selected:tt})=>tt?colors.gray300:colors.gray200}; + } +} +`,sphinxPubkey="023d8eb306f0027b902fbdc81d33b49b6558b3434d374626f8c324979c92d47c21",boostAgainstBudget=async tt=>{let et=await distExports$1.enable(!0);if(et||console.warn("Sphinx enable failed, means no pubkey and no budget (including budget of 0)"),et=await distExports$1.keysend(sphinxPubkey,tt),!(et!=null&&et.success)){if(et=await distExports$1.topup(),!(et!=null&&et.budget)||(et==null?void 0:et.budget){const nt=await boostAgainstBudget(et),rt={amount:et,refid:tt};return await api.post("/boost",JSON.stringify(rt)),nt},notify=tt=>{toast(jsxRuntimeExports.jsx(ToastMessage,{message:tt}),{icon:!1,position:toast.POSITION.BOTTOM_CENTER,type:tt===BOOST_SUCCESS?"success":"error"})},Booster=({count:tt=0,updateCount:et,content:nt,readOnly:rt,refId:it})=>{const[ot,at]=reactExports.useState(!1),[st,lt]=reactExports.useState(!1),[ct]=useUserStore(pt=>[pt.setBudget]);reactExports.useEffect(()=>{lt(!1),at(!1)},[it]);let{image_url:ut}=nt||{};ut&&(ut=ut.replace(".jpg","_l.jpg"));const ht=5;async function dt(){if(!(ot||!it)){at(!0);try{const pt=await boost(it,ht);lt(!0),notify(BOOST_SUCCESS),et&&et(tt+ht),pt.budget&&ct(pt.budget)}catch{notify(BOOST_ERROR_BUDGET)}at(!1)}}return rt?tt?jsxRuntimeExports.jsx(Pill,{className:"booster__pill",style:{padding:"1px 8px 1px 3px",width:"fit-content"},children:jsxRuntimeExports.jsxs(Flex,{align:"center",direction:"row",justify:"center",children:[jsxRuntimeExports.jsx(MdBolt,{fontSize:12}),jsxRuntimeExports.jsx("div",{style:{fontSize:10},children:tt||0})]})}):null:jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(Pill,{disabled:ot,onClick:async()=>{st||ot||await dt()},style:{padding:"4px 8px",borderWidth:0,backgroundColor:"#303342",height:"25px",width:"fit-content"},children:ot?jsxRuntimeExports.jsx(_default,{color:"#fff",loading:!0,size:10}):jsxRuntimeExports.jsxs(Flex,{align:"center",direction:"row",justify:"space-around",children:[jsxRuntimeExports.jsx(BoostIcon,{style:{color:colors.white}}),jsxRuntimeExports.jsx("div",{style:{marginLeft:8,marginRight:8},children:"Boost"})]})})})},defaultData={isPlaying:!1},usePlayerStore=react(tt=>({...defaultData,setIsPlaying:et=>tt({isPlaying:et})})),NotesIcon=tt=>jsxRuntimeExports.jsx("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntimeExports.jsxs("g",{id:"notes",children:[jsxRuntimeExports.jsx("mask",{id:"mask0_1473_73722",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"16",height:"16",children:jsxRuntimeExports.jsx("rect",{id:"Bounding box",width:"1em",height:"1em",fill:"currentColor"})}),jsxRuntimeExports.jsx("g",{mask:"url(#mask0_1473_73722)",children:jsxRuntimeExports.jsx("path",{id:"notes_2",d:"M2.83337 11.7564C2.69171 11.7564 2.57296 11.7085 2.47712 11.6126C2.38129 11.5167 2.33337 11.3979 2.33337 11.2562C2.33337 11.1144 2.38129 10.9957 2.47712 10.9C2.57296 10.8043 2.69171 10.7564 2.83337 10.7564H9.16668C9.30834 10.7564 9.42709 10.8043 9.52293 10.9002C9.61876 10.9961 9.66668 11.1149 9.66668 11.2566C9.66668 11.3983 9.61876 11.5171 9.52293 11.6128C9.42709 11.7085 9.30834 11.7564 9.16668 11.7564H2.83337ZM2.83337 8.49997C2.69171 8.49997 2.57296 8.45204 2.47712 8.35617C2.38129 8.2603 2.33337 8.1415 2.33337 7.99977C2.33337 7.85804 2.38129 7.73931 2.47712 7.64359C2.57296 7.54787 2.69171 7.50001 2.83337 7.50001H13.1667C13.3083 7.50001 13.4271 7.54794 13.5229 7.64381C13.6188 7.73969 13.6667 7.85849 13.6667 8.00021C13.6667 8.14194 13.6188 8.26067 13.5229 8.35639C13.4271 8.45211 13.3083 8.49997 13.1667 8.49997H2.83337ZM2.83337 5.24357C2.69171 5.24357 2.57296 5.19564 2.47712 5.09976C2.38129 5.00389 2.33337 4.88509 2.33337 4.74336C2.33337 4.60164 2.38129 4.48291 2.47712 4.38719C2.57296 4.29146 2.69171 4.24359 2.83337 4.24359H13.1667C13.3083 4.24359 13.4271 4.29153 13.5229 4.38741C13.6188 4.48329 13.6667 4.60209 13.6667 4.74381C13.6667 4.88554 13.6188 5.00427 13.5229 5.09999C13.4271 5.19571 13.3083 5.24357 13.1667 5.24357H2.83337Z",fill:"currentColor"})})]})}),Description=({stateless:tt,node:et})=>jsxRuntimeExports.jsxs(Flex,{grow:1,shrink:1,children:[jsxRuntimeExports.jsx(Header$1,{children:tt&&jsxRuntimeExports.jsxs(Heading$2,{children:[jsxRuntimeExports.jsx("div",{className:"icon",children:jsxRuntimeExports.jsx(NotesIcon,{})}),jsxRuntimeExports.jsx("div",{className:"title",children:"Description"})]})}),jsxRuntimeExports.jsx(Box$1,{children:et!=null&&et.description?`"${et==null?void 0:et.description}"`:"..."})]}),Heading$2=styled$4(Flex).attrs({direction:"row",align:"center"})` .icon { font-size: 16px; color: ${colors.GRAY3}; @@ -8320,4 +8372,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho color: ${colors.white}; font-size: 12px; opacity: 0.5; -`,App=()=>{const{open:tt}=useModal("budgetExplanation"),[et]=useUserStore(kt=>[kt.setBudget]),[nt,rt,it,ot,at,st]=[useAppStore(kt=>kt.setSidebarOpen),useAppStore(kt=>kt.currentSearch),useAppStore(kt=>kt.setCurrentSearch),useAppStore(kt=>kt.setRelevanceSelected),useAppStore(kt=>kt.setTranscriptOpen),useAppStore(kt=>kt.hasBudgetExplanationModalBeSeen)],lt=useTeachStore(kt=>kt.setTeachMeAnswer),[ct,ut,ht,dt,pt,mt,gt]=[useDataStore(kt=>kt.data),useDataStore(kt=>kt.setData),useDataStore(kt=>kt.fetchData),useDataStore(kt=>kt.graphStyle),useDataStore(kt=>kt.setSphinxModalOpen),useDataStore(kt=>kt.setSelectedNode),useDataStore(kt=>kt.setCategoryFilter)],yt=useForm({mode:"onChange"}),bt=yt.handleSubmit(({search:kt})=>{at(!1),mt(null),ot(!1),it(kt),lt(""),gt(null)}),vt=reactExports.useCallback(async()=>{rt&&(pt(!0),isE2E||(await distExports$1.enable(),await updateBudget(et)),await distExports$1.enable(),await updateBudget(et),pt(!1)),await ht(rt),nt(!0),await updateBudget(et)},[ht,rt,pt,nt,et]);reactExports.useEffect(()=>{if(rt&&!st){tt();return}vt()},[rt,vt,st]);const xt=()=>{if(ct){const kt=getGraphDataPositions(dt,ct.nodes);ut(kt)}};return reactExports.useEffect(()=>{xt()},[dt]),jsxRuntimeExports.jsxs(AppProviders,{children:[jsxRuntimeExports.jsx(GlobalStyle,{}),jsxRuntimeExports.jsx(Leva,{hidden:!isDevelopment}),jsxRuntimeExports.jsxs(Wrapper,{direction:"row",children:[jsxRuntimeExports.jsx(DataRetriever,{loader:jsxRuntimeExports.jsx(Preloader,{}),children:jsxRuntimeExports.jsxs(FormProvider,{...yt,children:[jsxRuntimeExports.jsx(MainToolbar,{}),jsxRuntimeExports.jsx(SideBar,{onSubmit:bt}),jsxRuntimeExports.jsx(Universe,{}),jsxRuntimeExports.jsx(SecondarySideBar,{}),jsxRuntimeExports.jsx(AppBar,{}),jsxRuntimeExports.jsxs(Version,{children:["v",version]}),jsxRuntimeExports.jsx(ActionsToolbar,{})]})}),jsxRuntimeExports.jsx(AddNodeModal,{}),jsxRuntimeExports.jsx(Toasts,{}),jsxRuntimeExports.jsx(BudgetExplanationModal,{}),jsxRuntimeExports.jsx(SourcesTableModal,{}),jsxRuntimeExports.jsx(Helper,{})]}),jsxRuntimeExports.jsx(E2ETests,{})]})},scriptRel="modulepreload",assetsURL=function(tt){return"/"+tt},seen={},__vitePreload=function tt(et,nt,rt){if(!nt||nt.length===0)return et();const it=document.getElementsByTagName("link");return Promise.all(nt.map(ot=>{if(ot=assetsURL(ot),ot in seen)return;seen[ot]=!0;const at=ot.endsWith(".css"),st=at?'[rel="stylesheet"]':"";if(!!rt)for(let ut=it.length-1;ut>=0;ut--){const ht=it[ut];if(ht.href===ot&&(!at||ht.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${ot}"]${st}`))return;const ct=document.createElement("link");if(ct.rel=at?"stylesheet":scriptRel,at||(ct.as="script",ct.crossOrigin=""),ct.href=ot,document.head.appendChild(ct),at)return new Promise((ut,ht)=>{ct.addEventListener("load",ut),ct.addEventListener("error",()=>ht(new Error(`Unable to preload CSS for ${ot}`)))})})).then(()=>et()).catch(ot=>{const at=new Event("vite:preloadError",{cancelable:!0});if(at.payload=ot,window.dispatchEvent(at),!at.defaultPrevented)throw ot})},reportWebVitals=tt=>{tt&&tt instanceof Function&&__vitePreload(()=>import("./web-vitals-60d3425a.js"),[]).then(({getCLS:et,getFID:nt,getFCP:rt,getLCP:it,getTTFB:ot})=>{et(tt),nt(tt),rt(tt),it(tt),ot(tt)})},index="",styles="",getElementsMemoized=()=>{const tt={};return()=>{if(tt.inner&&tt.body)return tt;const et=document.querySelector("body"),nt=document.createElement("div"),rt=document.createElement("div"),it=document.createElement("div"),ot=document.createElement("div"),at=()=>{nt.classList.toggle("hide")};return it.addEventListener("click",at),ot.addEventListener("click",at),nt.classList.add("loggerWrapper"),nt.classList.add("hide"),rt.classList.add("loggerInner"),it.classList.add("close"),ot.classList.add("open"),it.textContent="X",ot.textContent="OPEN LOG",et==null||et.appendChild(nt),et==null||et.appendChild(ot),nt.appendChild(it),nt.appendChild(rt),tt.body=et,tt.inner=rt,{body:et,inner:rt}}},getElements=getElementsMemoized(),variants=["log","info","warn","error"],logMessage=(tt,et)=>{const{inner:nt}=getElements(),rt=document.createElement("span");rt.textContent=tt,rt.classList.add("message"),rt.classList.add(et),nt.appendChild(rt)},overrideConsole=()=>{if(!window.location.hostname.includes("local"))return;const tt=function(et){const nt=variants.reduce((rt,it)=>({...rt,[it](...ot){et[it](...ot),logMessage(JSON.stringify(ot,null," "),it)}}),{});return{...et,...nt}}(window.console);window.console=tt},root=client$1.createRoot(document.getElementById("root"));root.render(isE2E?jsxRuntimeExports.jsx(App,{}):jsxRuntimeExports.jsx(React$1.StrictMode,{children:jsxRuntimeExports.jsx(App,{})}));reportWebVitals();overrideConsole()});export default s4(); +`,App=()=>{const{open:tt}=useModal("budgetExplanation"),[et]=useUserStore(kt=>[kt.setBudget]),[nt,rt,it,ot,at,st]=[useAppStore(kt=>kt.setSidebarOpen),useAppStore(kt=>kt.currentSearch),useAppStore(kt=>kt.setCurrentSearch),useAppStore(kt=>kt.setRelevanceSelected),useAppStore(kt=>kt.setTranscriptOpen),useAppStore(kt=>kt.hasBudgetExplanationModalBeSeen)],lt=useTeachStore(kt=>kt.setTeachMeAnswer),[ct,ut,ht,dt,pt,mt,gt]=[useDataStore(kt=>kt.data),useDataStore(kt=>kt.setData),useDataStore(kt=>kt.fetchData),useDataStore(kt=>kt.graphStyle),useDataStore(kt=>kt.setSphinxModalOpen),useDataStore(kt=>kt.setSelectedNode),useDataStore(kt=>kt.setCategoryFilter)],yt=useForm({mode:"onChange"}),bt=yt.handleSubmit(({search:kt})=>{at(!1),mt(null),ot(!1),it(kt),lt(""),gt(null)}),vt=reactExports.useCallback(async()=>{rt&&(pt(!0),isE2E||(await distExports$1.enable(),await updateBudget(et)),pt(!1)),await ht(rt),nt(!0),await updateBudget(et)},[ht,rt,pt,nt,et]);reactExports.useEffect(()=>{if(rt&&!st){tt();return}vt()},[rt,vt,st]);const xt=()=>{if(ct){const kt=getGraphDataPositions(dt,ct.nodes);ut(kt)}};return reactExports.useEffect(()=>{xt()},[dt]),jsxRuntimeExports.jsxs(AppProviders,{children:[jsxRuntimeExports.jsx(GlobalStyle,{}),jsxRuntimeExports.jsx(Leva,{hidden:!isDevelopment}),jsxRuntimeExports.jsxs(Wrapper,{direction:"row",children:[jsxRuntimeExports.jsx(DataRetriever,{loader:jsxRuntimeExports.jsx(Preloader,{}),children:jsxRuntimeExports.jsxs(FormProvider,{...yt,children:[jsxRuntimeExports.jsx(MainToolbar,{}),jsxRuntimeExports.jsx(SideBar,{onSubmit:bt}),jsxRuntimeExports.jsx(Universe,{}),jsxRuntimeExports.jsx(SecondarySideBar,{}),jsxRuntimeExports.jsx(AppBar,{}),jsxRuntimeExports.jsxs(Version,{children:["v",version]}),jsxRuntimeExports.jsx(ActionsToolbar,{})]})}),jsxRuntimeExports.jsx(AddNodeModal,{}),jsxRuntimeExports.jsx(Toasts,{}),jsxRuntimeExports.jsx(BudgetExplanationModal,{}),jsxRuntimeExports.jsx(SourcesTableModal,{}),jsxRuntimeExports.jsx(Helper,{})]}),jsxRuntimeExports.jsx(E2ETests,{})]})},scriptRel="modulepreload",assetsURL=function(tt){return"/"+tt},seen={},__vitePreload=function tt(et,nt,rt){if(!nt||nt.length===0)return et();const it=document.getElementsByTagName("link");return Promise.all(nt.map(ot=>{if(ot=assetsURL(ot),ot in seen)return;seen[ot]=!0;const at=ot.endsWith(".css"),st=at?'[rel="stylesheet"]':"";if(!!rt)for(let ut=it.length-1;ut>=0;ut--){const ht=it[ut];if(ht.href===ot&&(!at||ht.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${ot}"]${st}`))return;const ct=document.createElement("link");if(ct.rel=at?"stylesheet":scriptRel,at||(ct.as="script",ct.crossOrigin=""),ct.href=ot,document.head.appendChild(ct),at)return new Promise((ut,ht)=>{ct.addEventListener("load",ut),ct.addEventListener("error",()=>ht(new Error(`Unable to preload CSS for ${ot}`)))})})).then(()=>et()).catch(ot=>{const at=new Event("vite:preloadError",{cancelable:!0});if(at.payload=ot,window.dispatchEvent(at),!at.defaultPrevented)throw ot})},reportWebVitals=tt=>{tt&&tt instanceof Function&&__vitePreload(()=>import("./web-vitals-60d3425a.js"),[]).then(({getCLS:et,getFID:nt,getFCP:rt,getLCP:it,getTTFB:ot})=>{et(tt),nt(tt),rt(tt),it(tt),ot(tt)})},index="",styles="",getElementsMemoized=()=>{const tt={};return()=>{if(tt.inner&&tt.body)return tt;const et=document.querySelector("body"),nt=document.createElement("div"),rt=document.createElement("div"),it=document.createElement("div"),ot=document.createElement("div"),at=()=>{nt.classList.toggle("hide")};return it.addEventListener("click",at),ot.addEventListener("click",at),nt.classList.add("loggerWrapper"),nt.classList.add("hide"),rt.classList.add("loggerInner"),it.classList.add("close"),ot.classList.add("open"),it.textContent="X",ot.textContent="OPEN LOG",et==null||et.appendChild(nt),et==null||et.appendChild(ot),nt.appendChild(it),nt.appendChild(rt),tt.body=et,tt.inner=rt,{body:et,inner:rt}}},getElements=getElementsMemoized(),variants=["log","info","warn","error"],logMessage=(tt,et)=>{const{inner:nt}=getElements(),rt=document.createElement("span");rt.textContent=tt,rt.classList.add("message"),rt.classList.add(et),nt.appendChild(rt)},overrideConsole=()=>{if(!window.location.hostname.includes("local"))return;const tt=function(et){const nt=variants.reduce((rt,it)=>({...rt,[it](...ot){et[it](...ot),logMessage(JSON.stringify(ot,null," "),it)}}),{});return{...et,...nt}}(window.console);window.console=tt},root=client$1.createRoot(document.getElementById("root"));root.render(isE2E?jsxRuntimeExports.jsx(App,{}):jsxRuntimeExports.jsx(React$1.StrictMode,{children:jsxRuntimeExports.jsx(App,{})}));reportWebVitals();overrideConsole()});export default l4(); diff --git a/build/index.html b/build/index.html index 5e824ea75..4364e520a 100644 --- a/build/index.html +++ b/build/index.html @@ -22,7 +22,7 @@ Learn how to configure a non-root public URL by running `npm run build`. --> Second Brain - + diff --git a/package.json b/package.json index 987f22caf..89e24c712 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sphinx-nav", - "version": "0.1.87", + "version": "0.1.90", "private": true, "dependencies": { "@emotion/react": "^11.11.1", diff --git a/src/components/App/index.tsx b/src/components/App/index.tsx index e4b58ed71..ac527a2c5 100644 --- a/src/components/App/index.tsx +++ b/src/components/App/index.tsx @@ -111,12 +111,6 @@ export const App = () => { await updateBudget(setBudget) } - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - await sphinx.enable() - - await updateBudget(setBudget) - setSphinxModalOpen(false) } diff --git a/src/components/SourcesTableModal/SourcesView/Topics/Filter/index.tsx b/src/components/SourcesTableModal/SourcesView/Topics/Filter/index.tsx new file mode 100644 index 000000000..f782e1e6f --- /dev/null +++ b/src/components/SourcesTableModal/SourcesView/Topics/Filter/index.tsx @@ -0,0 +1,143 @@ +import FormControl from '@mui/material/FormControl' +import Popover from '@mui/material/Popover' +import clsx from 'clsx' +import { FC, useState } from 'react' +import styled from 'styled-components' +import CheckIcon from '~/components/Icons/CheckIcon' +import ChevronDownIcon from '~/components/Icons/ChevronDownIcon' +import ChevronUpIcon from '~/components/Icons/ChevronUpIcon' +import { Flex } from '~/components/common/Flex' +import { DATE, DEFAULT, EDGES } from '~/constants' +import { colors } from '~/utils/colors' + +type Option = Record + +const options: Option = { + [DEFAULT]: 'Default', + [DATE]: 'Date', + [EDGES]: 'Edges Count', +} + +type Props = { + onChangeFilter: (val: string) => void + currentFilter: string +} + +export const Filter: FC = ({ onChangeFilter, currentFilter }) => { + const [anchorEl, setAnchorEl] = useState(null) + + const handleOpenPopover = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget as HTMLElement) + } + + const handleClosePopover = () => { + setAnchorEl(null) + } + + const handleSelectChange = (option: string) => { + onChangeFilter(option) + handleClosePopover() + } + + return ( +
+ +
Sort By
+
{options[currentFilter]}
+
{!anchorEl ? : }
+
+ + + {Object.keys(options).map((option) => ( + handleSelectChange(option)} + > + {option === currentFilter ? : null} + {options[option]} + + ))} + + +
+ ) +} + +const Action = styled(Flex).attrs({ + direction: 'row', + align: 'center', +})` + cursor: pointer; + flex-grow: 1; + color: ${colors.GRAY6}; + font-family: Barlow; + font-size: 13px; + font-style: normal; + font-weight: 500; + padding: 0 8px; + .value, + .icon { + color: ${colors.white}; + } + + .value { + margin: 0 8px 0 4px; + } +` + +const MenuItem = styled(Flex).attrs({ + direction: 'row', + align: 'center', +})` + font-family: Barlow; + font-size: 13px; + font-style: normal; + font-weight: 500; + color: ${colors.GRAY3}; + height: 27px; + cursor: pointer; + &.active { + color: ${colors.white}; + } + &:hover { + color: ${colors.white}; + } + + .icon { + margin-right: 8px; + width: 9px; + font-size: 10px; + } +` + +const StyledPopover = styled(Popover)` + && { + z-index: 99999; + } + + .MuiPaper-root { + background: ${colors.BUTTON1}; + min-width: 149px; + padding: 16px; + color: ${colors.GRAY3}; + box-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.2); + border-radius: 6px; + } +` diff --git a/src/components/SourcesTableModal/SourcesView/Topics/Table/index.tsx b/src/components/SourcesTableModal/SourcesView/Topics/Table/index.tsx index dd49bb5e5..9a309e64d 100644 --- a/src/components/SourcesTableModal/SourcesView/Topics/Table/index.tsx +++ b/src/components/SourcesTableModal/SourcesView/Topics/Table/index.tsx @@ -1,26 +1,30 @@ import { Table as MaterialTable, TableRow } from '@mui/material' -import React from 'react' -import { MdCheckCircle, MdCancel } from 'react-icons/md' +import moment from 'moment' +import React, { useState } from 'react' +import { MdCancel, MdCheckCircle } from 'react-icons/md' +import { ClipLoader } from 'react-spinners' import styled from 'styled-components' import FilterOffIcon from '~/components/Icons/FilterOffIcon' import { Flex } from '~/components/common/Flex' import { Text } from '~/components/common/Text' import { putNodeData } from '~/network/fetchSourcesData' -// import { useDataStore } from '~/stores/useDataStore' +import { useDataStore } from '~/stores/useDataStore' import { Topic } from '~/types' import { colors } from '~/utils/colors' import { StyledTableCell, StyledTableHead, StyledTableRow } from '../../common' import { TopicTableProps } from '../../types' const Table: React.FC = ({ data, showMuted }) => { - // const setSources = useDataStore((s) => s.setQueuedSources) + const [setTopics] = useDataStore((s) => [s.setTopics]) + const [loadingId, setLoadingId] = useState('') const handleMute = async (refId: string, shouldMute: boolean) => { if (data?.length) { + setLoadingId(refId) + try { await putNodeData({ ref_id: refId, node_name: 'muted_topic', node_value: shouldMute }) - - // setSources(data.filter((i) => i.ref_id !== id)) + setTopics(data.filter((i) => i.ref_id !== refId)) } catch (error) { console.warn(error) } @@ -38,6 +42,9 @@ const Table: React.FC = ({ data, showMuted }) => { Type + Edge Count + Edge list + Date {showMuted ? 'Unmute' : 'Mute'} @@ -47,18 +54,33 @@ const Table: React.FC = ({ data, showMuted }) => { {i.topic} + {i.edgeCount} + + {i.edgeList.map((topic) => ( + {topic} + ))} + + + {i.date_added_to_graph ? {moment(i.date_added_to_graph).format('MM.DD.YYYY')} : null} +
- {i.muted_topic ? ( - handleMute(i.ref_id, false)}> - - + {loadingId === i.ref_id ? ( + ) : ( - handleMute(i.ref_id, true)}> - - + <> + {i.muted_topic ? ( + handleMute(i.ref_id, false)}> + + + ) : ( + handleMute(i.ref_id, true)}> + + + )} + )}
diff --git a/src/components/SourcesTableModal/SourcesView/Topics/index.tsx b/src/components/SourcesTableModal/SourcesView/Topics/index.tsx index 32f4962ae..85c1e44c6 100644 --- a/src/components/SourcesTableModal/SourcesView/Topics/index.tsx +++ b/src/components/SourcesTableModal/SourcesView/Topics/index.tsx @@ -1,20 +1,23 @@ -import { useEffect, useState } from 'react' +import { Button } from '@mui/material' +import { useEffect, useMemo, useState } from 'react' import { ClipLoader } from 'react-spinners' import styled from 'styled-components' import { Flex } from '~/components/common/Flex' import { Text } from '~/components/common/Text' -import { Pill } from '~/components/common/Pill' +import { DATE, DEFAULT, EDGES } from '~/constants' import { getTopicsData } from '~/network/fetchSourcesData' import { useDataStore } from '~/stores/useDataStore' import { FetchTopicResponse } from '~/types' import { colors } from '~/utils/colors' import { Heading } from '../common' +import { Filter } from './Filter' import Table from './Table' export const TopicSources = () => { const [loading, setLoading] = useState(true) const [showMuted, setShowMuted] = useState(false) const [topics, setTopics] = useDataStore((s) => [s.topics, s.setTopics]) + const [currentFilter, setCurrentFilter] = useState(DEFAULT) useEffect(() => { const init = async () => { @@ -35,27 +38,45 @@ export const TopicSources = () => { init() }, [setTopics, showMuted]) + const sortedNodes = useMemo(() => { + if (!topics) { + return [] + } + + if (currentFilter === DEFAULT) { + return topics + } + + if (currentFilter === DATE) { + return [...topics].sort((a, b) => + a.date_added_to_graph && b.date_added_to_graph ? a.date_added_to_graph - b.date_added_to_graph : 1, + ) + } + + if (currentFilter === EDGES) { + return [...topics].sort((a, b) => a.edgeCount - b.edgeCount) + } + + return null + }, [currentFilter, topics]) + return ( - + Topics - setShowMuted(!showMuted)} - style={{ marginLeft: '30px', marginBottom: '10px', padding: '5px 10px 5px 10px', width: 'fit-content' }} - > - {loading ? ( - - ) : ( - -
Show {showMuted ? 'Unmuted' : 'Muted'}
-
- )} -
+ + + + + + - {loading ? : } + {loading ? :
} ) @@ -65,7 +86,6 @@ const Wrapper = styled(Flex)` flex: 1; .title { - margin-bottom: 32px; font-size: 20px; color: ${colors.white}; font-family: Barlow; @@ -95,3 +115,12 @@ const TableWrapper = styled(Flex)` flex: 1; width: 100%; ` + +const ActionsWrapper = styled(Flex).attrs({ + direction: 'row', + align: 'center', + justify: 'space-between', +})` + padding: 0 36px; + margin-bottom: 32px; +` diff --git a/src/components/SourcesTableModal/SourcesView/common/index.tsx b/src/components/SourcesTableModal/SourcesView/common/index.tsx index c880dd6d7..ccdc9fe13 100644 --- a/src/components/SourcesTableModal/SourcesView/common/index.tsx +++ b/src/components/SourcesTableModal/SourcesView/common/index.tsx @@ -63,7 +63,7 @@ export const StyledPill = styled(Button)` ` export const Heading = styled(Flex)` - margin-bottom: 26px; + margin-bottom: 16px; padding: 0 36px; ${Text} { margin-bottom: 0; diff --git a/src/components/Universe/Graph/Cubes/RelevanceBadges/index.tsx b/src/components/Universe/Graph/Cubes/RelevanceBadges/index.tsx index b89b6e0ff..24f531c42 100644 --- a/src/components/Universe/Graph/Cubes/RelevanceBadges/index.tsx +++ b/src/components/Universe/Graph/Cubes/RelevanceBadges/index.tsx @@ -4,7 +4,7 @@ import clsx from 'clsx' import { Fragment, memo, useEffect, useMemo, useRef } from 'react' import { Group, Vector3 } from 'three' import { getNodeColorByType } from '~/components/Universe/Graph/constant' -import { nodesAreRelatives } from '~/components/Universe/constants' +import { maxChildrenDisplayed, nodesAreRelatives } from '~/components/Universe/constants' import { Avatar } from '~/components/common/Avatar' import { TypeBadge } from '~/components/common/TypeBadge' import { useDataStore, useSelectedNode } from '~/stores/useDataStore' @@ -104,25 +104,27 @@ export const RelevanceBadges = memo(() => { const nodeBadges = useMemo(() => { const nodes = showSelectionGraph ? selectionGraphData.nodes : data?.nodes || [] - const badgesToRender = nodes + const childIds = nodes .filter((f) => selectedNodeRelativeIds.includes(f?.ref_id || '') || selectedNode?.ref_id === f?.ref_id) - .map((n) => { - const color = getNodeColorByType(n.node_type || '', true) as string - const position = new Vector3(n?.x || 0, n?.y || 0, n?.z || 0) - - const relativeIds = - (data?.nodes || []).filter((f) => f.ref_id && nodesAreRelatives(f, n)).map((nd) => nd?.ref_id || '') || [] - - return ( - - ) - }) + .slice(0, maxChildrenDisplayed) + + const badgesToRender = childIds.map((n) => { + const color = getNodeColorByType(n.node_type || '', true) as string + const position = new Vector3(n?.x || 0, n?.y || 0, n?.z || 0) + + const relativeIds = + (data?.nodes || []).filter((f) => f.ref_id && nodesAreRelatives(f, n)).map((nd) => nd?.ref_id || '') || [] + + return ( + + ) + }) return badgesToRender }, [selectedNodeRelativeIds, data?.nodes, showSelectionGraph, selectionGraphData, selectedNode]) diff --git a/src/components/Universe/Graph/index.tsx b/src/components/Universe/Graph/index.tsx index dae69c83c..87ed69dc2 100644 --- a/src/components/Universe/Graph/index.tsx +++ b/src/components/Universe/Graph/index.tsx @@ -1,8 +1,10 @@ import { Segments } from '@react-three/drei' import { useMemo } from 'react' +import { Vector3 } from 'three' import { useGraphData } from '~/components/DataRetriever' import { useDataStore } from '~/stores/useDataStore' -import { GraphData } from '~/types' +import { Link } from '~/types' +import { maxChildrenDisplayed } from '../constants' import { Cubes } from './Cubes' import { Earth } from './Earth' import { Particles } from './Particles' @@ -14,6 +16,9 @@ export const Graph = () => { const isLoading = useDataStore((s) => s.isFetching) const graphStyle = useDataStore((s) => s.graphStyle) const showSelectionGraph = useDataStore((s) => s.showSelectionGraph) + const selectedNodeRelativeIds = useDataStore((s) => s.selectedNodeRelativeIds) + const selectionGraphData = useDataStore((s) => s.selectionGraphData) + const selectedNode = useDataStore((s) => s.selectedNode) const lineWidth = useMemo(() => { if (showSelectionGraph) { @@ -27,6 +32,42 @@ export const Graph = () => { return 0.4 }, [showSelectionGraph, graphStyle]) + const nodeBadges = useMemo(() => { + const nodes = showSelectionGraph ? selectionGraphData.nodes : data?.nodes || [] + + const childIds = nodes + .filter((f) => selectedNodeRelativeIds.includes(f?.ref_id || '') || selectedNode?.ref_id === f?.ref_id) + .slice(0, maxChildrenDisplayed) + + const badgesToRender = childIds.map((n) => { + // const relativeIds = + // (data?.nodes || []).filter((f) => f.ref_id && nodesAreRelatives(f, n)).map((nd) => nd?.ref_id || '') || [] + + const spos = new Vector3(selectedNode?.x, selectedNode?.y, selectedNode?.z) + + const tpos = new Vector3(n.x, n.y, n.z) + + const l: Link = { + source: selectedNode?.id ? selectedNode.id : '', + target: n.id ? n.id : '', + targetRef: n.ref_id, + sourceRef: selectedNode?.ref_id, + sourcePosition: spos, + targetPosition: tpos, + } + + return ( + + ) + }) + + return badgesToRender + }, [selectedNodeRelativeIds, data?.nodes, showSelectionGraph, selectionGraphData, selectedNode]) + if (isLoading) { return null } @@ -43,20 +84,14 @@ export const Graph = () => { /** NOTE: using the key in this way the segments re-mounts * everytime the data.links count changes * */ - key={`links-${data.links.length}-${graphStyle}`} + key={`links-${nodeBadges.length}-${graphStyle}`} // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore fog - limit={data.links.length} + limit={nodeBadges.length} lineWidth={lineWidth} > - {(data.links as unknown as GraphData['links']).map((link, index) => ( - - ))} + {nodeBadges} )} diff --git a/src/components/Universe/constants.ts b/src/components/Universe/constants.ts index bf32c86cb..2d5bf69ec 100644 --- a/src/components/Universe/constants.ts +++ b/src/components/Universe/constants.ts @@ -5,6 +5,8 @@ export const variableVector3 = new Vector3(0, 0, 0) export const outlineEffectColor = 0xffffff +export const maxChildrenDisplayed = 20 + export const nodesAreRelatives = (a: NodeExtended | null, b: NodeExtended | null) => { if (!a?.ref_id || !b?.ref_id) { return false diff --git a/src/constants/index.ts b/src/constants/index.ts index 16efe205a..34296aa0a 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -53,6 +53,10 @@ export const BOOST_ERROR_BUDGET = 'Boost failed, insufficient budget' export const NODE_ADD_SUCCESS = 'Submitted!' export const NODE_ADD_ERROR = 'Submission failed, please try again.' +export const DEFAULT = 'default' +export const DATE = 'date' +export const EDGES = 'edges' + type NodeRelativeHighlightColors = { nodeColor: string segmentColor: number diff --git a/src/types/index.ts b/src/types/index.ts index 6348d7286..5c344b40c 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -156,6 +156,9 @@ export type Topic = { topic: string ref_id: string muted_topic: string + edgeList: Array + edgeCount: number + date_added_to_graph: null } export type SubmitErrRes = { diff --git a/src/utils/setBudget/index.ts b/src/utils/setBudget/index.ts index 4799f788b..557a21bbb 100644 --- a/src/utils/setBudget/index.ts +++ b/src/utils/setBudget/index.ts @@ -1,10 +1,6 @@ import * as sphinx from 'sphinx-bridge-kevkevinpal' export async function updateBudget(setBudget: (value: number | null) => void) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - await sphinx.enable() - // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore const budget = await sphinx.getBudget()