@genome-spy/core 0.75.0 → 0.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/browser-KWU9rWZT.js +123 -0
- package/dist/bundle/{esm-CgfVIRJ-.js → esm-0dYHNV_D.js} +2 -2
- package/dist/bundle/{esm-sIoQYZ21.js → esm-CRMf_I9V.js} +18 -18
- package/dist/bundle/esm-CT3ygiMq.js +1084 -0
- package/dist/bundle/{esm-DQiq2Zhd.js → esm-CscjKVDc.js} +44 -44
- package/dist/bundle/index.es.js +3408 -3185
- package/dist/bundle/index.js +106 -97
- package/dist/schema.json +352 -0
- package/dist/src/config/defaults/markDefaults.d.ts.map +1 -1
- package/dist/src/config/defaults/markDefaults.js +1 -12
- package/dist/src/config/defaults/scaleDefaults.d.ts.map +1 -1
- package/dist/src/config/defaults/scaleDefaults.js +1 -0
- package/dist/src/config/markConfig.d.ts.map +1 -1
- package/dist/src/config/markConfig.js +16 -8
- package/dist/src/config/themes.d.ts.map +1 -1
- package/dist/src/config/themes.js +15 -2
- package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bigWigSource.js +31 -11
- package/dist/src/data/sources/lazy/registerBuiltInLazySources.js +2 -2
- package/dist/src/data/sources/lazy/registerCoreLazySources.d.ts +2 -0
- package/dist/src/data/sources/lazy/registerCoreLazySources.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/registerCoreLazySources.js +2 -0
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts +19 -3
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +34 -13
- package/dist/src/data/sources/lazy/tabixSource.d.ts +7 -0
- package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/tabixSource.js +18 -0
- package/dist/src/data/sources/lazy/tabixTsvSource.d.ts +37 -0
- package/dist/src/data/sources/lazy/tabixTsvSource.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/tabixTsvSource.js +163 -0
- package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
- package/dist/src/data/transforms/filterScoredLabels.js +3 -2
- package/dist/src/embedFactory.d.ts.map +1 -1
- package/dist/src/embedFactory.js +2 -0
- package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
- package/dist/src/genomeSpy/viewContextFactory.js +1 -0
- package/dist/src/genomeSpyBase.d.ts +6 -0
- package/dist/src/genomeSpyBase.d.ts.map +1 -1
- package/dist/src/genomeSpyBase.js +15 -1
- package/dist/src/gl/webGLHelper.d.ts +5 -2
- package/dist/src/gl/webGLHelper.d.ts.map +1 -1
- package/dist/src/gl/webGLHelper.js +20 -3
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +1084 -2
- package/dist/src/marks/link.vertex.glsl.js +1 -1
- package/dist/src/marks/mark.d.ts.map +1 -1
- package/dist/src/marks/mark.js +0 -6
- package/dist/src/marks/rect.vertex.glsl.js +1 -1
- package/dist/src/minimal.d.ts +1 -0
- package/dist/src/minimal.d.ts.map +1 -1
- package/dist/src/minimal.js +6 -4
- package/dist/src/paramRuntime/embedParamApi.d.ts +26 -0
- package/dist/src/paramRuntime/embedParamApi.d.ts.map +1 -0
- package/dist/src/paramRuntime/embedParamApi.js +133 -0
- package/dist/src/scale/scale.js +10 -2
- package/dist/src/scales/domainPlanner.js +1 -1
- package/dist/src/scales/scaleInteractionController.d.ts +8 -4
- package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
- package/dist/src/scales/scaleInteractionController.js +55 -7
- package/dist/src/scales/scaleResolution.d.ts +3 -3
- package/dist/src/scales/scaleResolution.d.ts.map +1 -1
- package/dist/src/scales/scaleResolution.js +14 -7
- package/dist/src/scales/selectionDomainUtils.d.ts +10 -0
- package/dist/src/scales/selectionDomainUtils.d.ts.map +1 -1
- package/dist/src/scales/selectionDomainUtils.js +32 -3
- package/dist/src/selection/index.d.ts +8 -0
- package/dist/src/selection/index.d.ts.map +1 -0
- package/dist/src/selection/index.js +12 -0
- package/dist/src/spec/channel.d.ts +30 -0
- package/dist/src/spec/data.d.ts +40 -0
- package/dist/src/spec/parameter.d.ts +6 -0
- package/dist/src/spec/transform.d.ts +6 -0
- package/dist/src/styles/genome-spy.css +8 -0
- package/dist/src/styles/genome-spy.css.d.ts +1 -1
- package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
- package/dist/src/styles/genome-spy.css.js +8 -0
- package/dist/src/types/embedApi.d.ts +54 -0
- package/dist/src/types/scaleResolutionApi.d.ts +28 -1
- package/dist/src/types/viewContext.d.ts +11 -0
- package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
- package/dist/src/utils/ui/tooltip.js +22 -0
- package/dist/src/view/axisGridView.d.ts.map +1 -1
- package/dist/src/view/axisGridView.js +2 -1
- package/dist/src/view/axisView.d.ts.map +1 -1
- package/dist/src/view/axisView.js +2 -1
- package/dist/src/view/facetView.d.ts.map +1 -1
- package/dist/src/view/facetView.js +2 -1
- package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
- package/dist/src/view/gridView/gridChild.js +9 -1
- package/dist/src/view/gridView/gridView.d.ts.map +1 -1
- package/dist/src/view/gridView/gridView.js +198 -32
- package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
- package/dist/src/view/gridView/scrollbar.js +5 -1
- package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
- package/dist/src/view/gridView/selectionRect.js +5 -1
- package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
- package/dist/src/view/gridView/separatorView.js +5 -1
- package/dist/src/view/testUtils.d.ts +30 -3
- package/dist/src/view/testUtils.d.ts.map +1 -1
- package/dist/src/view/testUtils.js +51 -2
- package/dist/src/view/viewSelectors.d.ts +38 -10
- package/dist/src/view/viewSelectors.d.ts.map +1 -1
- package/dist/src/view/viewSelectors.js +67 -2
- package/dist/src/view/viewUtilTypes.d.ts +15 -0
- package/dist/src/view/viewUtils.d.ts.map +1 -1
- package/dist/src/view/viewUtils.js +10 -0
- package/package.json +3 -3
- package/dist/bundle/browser-BTgw5ieH.js +0 -126
- package/dist/bundle/esm-DtE8VqAv.js +0 -1015
- /package/dist/bundle/{esm-BDFRLEuD.js → esm-C49STiCR.js} +0 -0
- /package/dist/bundle/{esm-CGX-qz1d.js → esm-CuVa5T98.js} +0 -0
package/dist/bundle/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.genomeSpyEmbed={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t)=>()=>(e&&(t=e(e=0)),t),r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=globalThis,a=i.ShadowRoot&&(i.ShadyCSS===void 0||i.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap,c=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(a&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=s.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&s.set(t,e))}return e}toString(){return this.cssText}},l=e=>new c(typeof e==`string`?e:e+``,void 0,o),u=(e,t)=>{if(a)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=i.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},d=a?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return l(t)})(e):e,{is:f,defineProperty:p,getOwnPropertyDescriptor:m,getOwnPropertyNames:h,getOwnPropertySymbols:g,getPrototypeOf:_}=Object,v=globalThis,y=v.trustedTypes,b=y?y.emptyScript:``,x=v.reactiveElementPolyfillSupport,S=(e,t)=>e,C={toAttribute(e,t){switch(t){case Boolean:e=e?b:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},w=(e,t)=>!f(e,t),T={attribute:!0,type:String,converter:C,reflect:!1,useDefault:!1,hasChanged:w};Symbol.metadata??=Symbol(`metadata`),v.litPropertyMetadata??=new WeakMap;var E=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=T){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&p(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=m(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??T}static _$Ei(){if(this.hasOwnProperty(S(`elementProperties`)))return;let e=_(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(S(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(S(`properties`))){let e=this.properties,t=[...h(e),...g(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(d(e))}else e!==void 0&&t.push(d(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return u(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?C:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?C:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??w)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};E.elementStyles=[],E.shadowRootOptions={mode:`open`},E[S(`elementProperties`)]=new Map,E[S(`finalized`)]=new Map,x?.({ReactiveElement:E}),(v.reactiveElementVersions??=[]).push(`2.1.2`);var
|
|
2
|
-
\f\r]`,me=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,he=/-->/g,ge=/>/g,_e=RegExp(`>|${pe}(?:([^\\s"'>=/]+)(${pe}*=${pe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),ve=/'/g,ye=/"/g,be=/^(?:script|style|textarea|title)$/i,D=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),xe=Symbol.for(`lit-noChange`),Se=Symbol.for(`lit-nothing`),Ce=new WeakMap,we=ce.createTreeWalker(ce,129);function Te(e,t){if(!de(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return re===void 0?t:re.createHTML(t)}var Ee=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=me;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===me?c[1]===`!--`?o=he:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=_e):(be.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=_e):o=ge:o===_e?c[0]===`>`?(o=i??me,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?_e:c[3]===`"`?ye:ve):o===ye||o===ve?o=_e:o===he||o===ge?o=me:(o=_e,i=void 0);let d=o===_e&&e[t+1].startsWith(`/>`)?` `:``;a+=o===me?n+se:l>=0?(r.push(s),n.slice(0,l)+ie+n.slice(l)+ae+d):n+ae+(l===-2?t:d)}return[Te(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},De=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=Ee(t,n);if(this.el=e.createElement(l,r),we.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=we.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(ie)){let t=u[o++],n=i.getAttribute(e).split(ae),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?Me:r[1]===`?`?Ne:r[1]===`@`?Pe:je}),i.removeAttribute(e)}else e.startsWith(ae)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(be.test(i.tagName)){let e=i.textContent.split(ae),t=e.length-1;if(t>0){i.textContent=ne?ne.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],le()),we.nextNode(),c.push({type:2,index:++a});i.append(e[t],le())}}}else if(i.nodeType===8)if(i.data===oe)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(ae,e+1))!==-1;)c.push({type:7,index:a}),e+=ae.length-1}a++}}static createElement(e,t){let n=ce.createElement(`template`);return n.innerHTML=e,n}};function Oe(e,t,n=e,r){if(t===xe)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=ue(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=Oe(e,i._$AS(e,t.values),i,r)),t}var ke=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??ce).importNode(t,!0);we.currentNode=r;let i=we.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new Ae(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Fe(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=we.nextNode(),a++)}return we.currentNode=ce,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},Ae=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=Se,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=Oe(this,e,t),ue(e)?e===Se||e==null||e===``?(this._$AH!==Se&&this._$AR(),this._$AH=Se):e!==this._$AH&&e!==xe&&this._(e):e._$litType$===void 0?e.nodeType===void 0?fe(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==Se&&ue(this._$AH)?this._$AA.nextSibling.data=e:this.T(ce.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=De.createElement(Te(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new ke(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=Ce.get(e.strings);return t===void 0&&Ce.set(e.strings,t=new De(e)),t}k(t){de(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(le()),this.O(le()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=te(e).nextSibling;te(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},je=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=Se,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=Se}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=Oe(this,e,t,0),a=!ue(e)||e!==this._$AH&&e!==xe,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=Oe(this,r[n+o],t,o),s===xe&&(s=this._$AH[o]),a||=!ue(s)||s!==this._$AH[o],s===Se?e=Se:e!==Se&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===Se?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},Me=class extends je{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===Se?void 0:e}},Ne=class extends je{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==Se)}},Pe=class extends je{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=Oe(this,e,t,0)??Se)===xe)return;let n=this._$AH,r=e===Se&&n!==Se||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==Se&&(n===Se||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Fe=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){Oe(this,e)}},Ie=ee.litHtmlPolyfillSupport;Ie?.(De,Ae),(ee.litHtmlVersions??=[]).push(`3.3.2`);var Le=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new Ae(t.insertBefore(le(),e),e,void 0,n??{})}return i._$AI(e),i},Re=globalThis,ze=class extends E{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Le(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return xe}};ze._$litElement$=!0,ze.finalized=!0,Re.litElementHydrateSupport?.({LitElement:ze});var Be=Re.litElementPolyfillSupport;Be?.({LitElement:ze}),(Re.litElementVersions??=[]).push(`4.2.2`);function Ve(e,t,n){return e.fields=t||[],e.fname=n,e}function He(e){return e==null?null:e.fname}function Ue(e){return e==null?null:e.fields}function We(e){return e.length===1?Ge(e[0]):Ke(e)}var Ge=e=>function(t){return t[e]},Ke=e=>{let t=e.length;return function(n){for(let r=0;r<t;++r)n=n[e[r]];return n}};function qe(e){throw Error(e)}function Je(e){let t=[],n=e.length,r=null,i=0,a=``,o,s,c;e+=``;function l(){t.push(a+e.substring(o,s)),a=``,o=s+1}for(o=s=0;s<n;++s)if(c=e[s],c===`\\`)a+=e.substring(o,s++),o=s;else if(c===r)l(),r=null,i=-1;else if(r)continue;else o===i&&c===`"`||o===i&&c===`'`?(o=s+1,r=c):c===`.`&&!i?s>o?l():o=s+1:c===`[`?(s>o&&l(),i=o=s+1):c===`]`&&(i||qe(`Access path missing open bracket: `+e),i>0&&l(),i=0,o=s+1);return i&&qe(`Access path missing closing bracket: `+e),r&&qe(`Access path missing closing quote: `+e),s>o&&(s++,l()),t}function Ye(e,t,n){let r=Je(e);return e=r.length===1?r[0]:e,Ve((n&&n.get||We)(r),[e],t||e)}Ye(`id`);var Xe=Ve(e=>e,[],`identity`);Ve(()=>0,[],`zero`),Ve(()=>1,[],`one`),Ve(()=>!0,[],`true`),Ve(()=>!1,[],`false`);var Ze=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]),Qe=Array.isArray;function $e(e){return e===Object(e)}function et(e){return e[e.length-1]}function tt(e){return e==null||e===``?null:+e}var O=e=>t=>e*Math.exp(t),nt=e=>t=>Math.log(e*t),rt=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),it=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,at=e=>t=>t<0?-((-t)**+e):t**+e;function k(e,t,n,r){let i=n(e[0]),a=n(et(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function ot(e,t){return k(e,t,tt,Xe)}function st(e,t){var n=Math.sign(e[0]);return k(e,t,nt(n),O(n))}function A(e,t,n){return k(e,t,at(n),at(1/n))}function ct(e,t,n,r,i){let a=r(e[0]),o=r(et(e)),s=t==null?(a+o)/2:r(t);return[i(s+(a-s)*n),i(s+(o-s)*n)]}function lt(e,t,n){return ct(e,t,n,tt,Xe)}function ut(e,t,n){let r=Math.sign(e[0]);return ct(e,t,n,nt(r),O(r))}function dt(e,t,n,r){return ct(e,t,n,at(r),at(1/r))}function ft(e,t,n,r){return ct(e,t,n,rt(r),it(r))}function j(e){return e==null?[]:Qe(e)?e:[e]}function pt(e,t,n){let r=e[0],i=e[1],a;return i<r&&(a=i,i=r,r=a),a=i-r,a>=n-t?[t,n]:[r=Math.min(Math.max(r,t),n-a),r+a]}function mt(e){return typeof e==`function`}var ht=`descending`;function gt(e,t,n){n||={},t=j(t)||[];let r=[],i=[],a={},o=n.comparator||vt;return j(e).forEach((e,o)=>{e!=null&&(r.push(t[o]===ht?-1:1),i.push(e=mt(e)?e:Ye(e,null,n)),(Ue(e)||[]).forEach(e=>a[e]=1))}),i.length===0?null:Ve(o(i,r),Object.keys(a))}var _t=(e,t)=>(e<t||e==null)&&t!=null?-1:(e>t||t==null)&&e!=null?1:(t=t instanceof Date?+t:t,e=e instanceof Date?+e:e)!==e&&t===t?-1:t!==t&&e===e?1:0,vt=(e,t)=>e.length===1?yt(e[0],t[0]):bt(e,t,e.length),yt=(e,t)=>function(n,r){return _t(e(n),e(r))*t},bt=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=_t(a(r),a(i));return o*t[s]});function xt(e){for(let t,n,r=1,i=arguments.length;r<i;++r)for(n in t=arguments[r],t)e[n]=t[n];return e}function St(e,t){return Object.hasOwn(e,t)}function Ct(e){return typeof e==`boolean`}function wt(e){return Object.prototype.toString.call(e)===`[object Date]`}function Tt(e){return e&&mt(e[Symbol.iterator])}function M(e){return typeof e==`number`}function Et(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function N(e){return typeof e==`string`}function P(e,t){let n=e[0],r=et(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Dt(e){return e&&et(e)-e[0]||0}function Ot(e){return Qe(e)?`[${e.map(e=>e===null?`null`:Ot(e))}]`:$e(e)||N(e)?JSON.stringify(e).replaceAll(`\u2028`,`\\u2028`).replaceAll(`\u2029`,`\\u2029`):e}function kt(e){return e==null||e===``?null:!e||e===`false`||e===`0`?!1:!!e}var At=e=>M(e)||wt(e)?e:Date.parse(e);function jt(e,t){return t||=At,e==null||e===``?null:t(e)}function Mt(e){return e==null||e===``?null:e+``}function Nt(e){let t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Pt={},Ft={},It=34,Lt=10,Rt=13;function zt(e){return Function(`d`,`return {`+e.map(function(e,t){return JSON.stringify(e)+`: d[`+t+`] || ""`}).join(`,`)+`}`)}function Bt(e,t){var n=zt(e);return function(r,i){return t(n(r),i,e)}}function Vt(e){var t=Object.create(null),n=[];return e.forEach(function(e){for(var r in e)r in t||n.push(t[r]=r)}),n}function Ht(e,t){var n=e+``,r=n.length;return r<t?Array(t-r+1).join(0)+n:n}function Ut(e){return e<0?`-`+Ht(-e,6):e>9999?`+`+Ht(e,6):Ht(e,4)}function Wt(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?`Invalid Date`:Ut(e.getUTCFullYear(),4)+`-`+Ht(e.getUTCMonth()+1,2)+`-`+Ht(e.getUTCDate(),2)+(i?`T`+Ht(t,2)+`:`+Ht(n,2)+`:`+Ht(r,2)+`.`+Ht(i,3)+`Z`:r?`T`+Ht(t,2)+`:`+Ht(n,2)+`:`+Ht(r,2)+`Z`:n||t?`T`+Ht(t,2)+`:`+Ht(n,2)+`Z`:``)}function Gt(e){var t=RegExp(`["`+e+`
|
|
3
|
-
\r]`),n=e.charCodeAt(0);function r(e,t){var n,r,a=i(e,function(e,i){if(n)return n(e,i-1);r=e,n=t?
|
|
4
|
-
`)}function s(e,t){return t??=
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.genomeSpyEmbed={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t)=>()=>(e&&(t=e(e=0)),t),r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=globalThis,a=i.ShadowRoot&&(i.ShadyCSS===void 0||i.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap,c=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(a&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=s.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&s.set(t,e))}return e}toString(){return this.cssText}},l=e=>new c(typeof e==`string`?e:e+``,void 0,o),u=(e,t)=>{if(a)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=i.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},d=a?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return l(t)})(e):e,{is:f,defineProperty:p,getOwnPropertyDescriptor:m,getOwnPropertyNames:h,getOwnPropertySymbols:g,getPrototypeOf:_}=Object,v=globalThis,y=v.trustedTypes,b=y?y.emptyScript:``,x=v.reactiveElementPolyfillSupport,S=(e,t)=>e,C={toAttribute(e,t){switch(t){case Boolean:e=e?b:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},w=(e,t)=>!f(e,t),T={attribute:!0,type:String,converter:C,reflect:!1,useDefault:!1,hasChanged:w};Symbol.metadata??=Symbol(`metadata`),v.litPropertyMetadata??=new WeakMap;var E=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=T){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&p(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=m(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??T}static _$Ei(){if(this.hasOwnProperty(S(`elementProperties`)))return;let e=_(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(S(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(S(`properties`))){let e=this.properties,t=[...h(e),...g(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(d(e))}else e!==void 0&&t.push(d(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return u(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?C:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?C:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??w)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};E.elementStyles=[],E.shadowRootOptions={mode:`open`},E[S(`elementProperties`)]=new Map,E[S(`finalized`)]=new Map,x?.({ReactiveElement:E}),(v.reactiveElementVersions??=[]).push(`2.1.2`);var D=globalThis,ee=e=>e,te=D.trustedTypes,ne=te?te.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,re=`$lit$`,ie=`lit$${Math.random().toFixed(9).slice(2)}$`,ae=`?`+ie,oe=`<${ae}>`,se=document,ce=()=>se.createComment(``),le=e=>e===null||typeof e!=`object`&&typeof e!=`function`,ue=Array.isArray,de=e=>ue(e)||typeof e?.[Symbol.iterator]==`function`,fe=`[
|
|
2
|
+
\f\r]`,pe=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,me=/-->/g,he=/>/g,ge=RegExp(`>|${fe}(?:([^\\s"'>=/]+)(${fe}*=${fe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),_e=/'/g,ve=/"/g,ye=/^(?:script|style|textarea|title)$/i,O=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),be=Symbol.for(`lit-noChange`),xe=Symbol.for(`lit-nothing`),Se=new WeakMap,Ce=se.createTreeWalker(se,129);function we(e,t){if(!ue(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return ne===void 0?t:ne.createHTML(t)}var Te=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=pe;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===pe?c[1]===`!--`?o=me:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=ge):(ye.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=ge):o=he:o===ge?c[0]===`>`?(o=i??pe,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?ge:c[3]===`"`?ve:_e):o===ve||o===_e?o=ge:o===me||o===he?o=pe:(o=ge,i=void 0);let d=o===ge&&e[t+1].startsWith(`/>`)?` `:``;a+=o===pe?n+oe:l>=0?(r.push(s),n.slice(0,l)+re+n.slice(l)+ie+d):n+ie+(l===-2?t:d)}return[we(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},Ee=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=Te(t,n);if(this.el=e.createElement(l,r),Ce.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=Ce.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(re)){let t=u[o++],n=i.getAttribute(e).split(ie),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?je:r[1]===`?`?Me:r[1]===`@`?Ne:Ae}),i.removeAttribute(e)}else e.startsWith(ie)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(ye.test(i.tagName)){let e=i.textContent.split(ie),t=e.length-1;if(t>0){i.textContent=te?te.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],ce()),Ce.nextNode(),c.push({type:2,index:++a});i.append(e[t],ce())}}}else if(i.nodeType===8)if(i.data===ae)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(ie,e+1))!==-1;)c.push({type:7,index:a}),e+=ie.length-1}a++}}static createElement(e,t){let n=se.createElement(`template`);return n.innerHTML=e,n}};function De(e,t,n=e,r){if(t===be)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=le(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=De(e,i._$AS(e,t.values),i,r)),t}var Oe=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??se).importNode(t,!0);Ce.currentNode=r;let i=Ce.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new ke(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Pe(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=Ce.nextNode(),a++)}return Ce.currentNode=se,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},ke=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=xe,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=De(this,e,t),le(e)?e===xe||e==null||e===``?(this._$AH!==xe&&this._$AR(),this._$AH=xe):e!==this._$AH&&e!==be&&this._(e):e._$litType$===void 0?e.nodeType===void 0?de(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==xe&&le(this._$AH)?this._$AA.nextSibling.data=e:this.T(se.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=Ee.createElement(we(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new Oe(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=Se.get(e.strings);return t===void 0&&Se.set(e.strings,t=new Ee(e)),t}k(t){ue(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(ce()),this.O(ce()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=ee(e).nextSibling;ee(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},Ae=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=xe,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=xe}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=De(this,e,t,0),a=!le(e)||e!==this._$AH&&e!==be,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=De(this,r[n+o],t,o),s===be&&(s=this._$AH[o]),a||=!le(s)||s!==this._$AH[o],s===xe?e=xe:e!==xe&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===xe?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},je=class extends Ae{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===xe?void 0:e}},Me=class extends Ae{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==xe)}},Ne=class extends Ae{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=De(this,e,t,0)??xe)===be)return;let n=this._$AH,r=e===xe&&n!==xe||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==xe&&(n===xe||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Pe=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){De(this,e)}},Fe=D.litHtmlPolyfillSupport;Fe?.(Ee,ke),(D.litHtmlVersions??=[]).push(`3.3.2`);var Ie=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new ke(t.insertBefore(ce(),e),e,void 0,n??{})}return i._$AI(e),i},Le=globalThis,Re=class extends E{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Ie(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return be}};Re._$litElement$=!0,Re.finalized=!0,Le.litElementHydrateSupport?.({LitElement:Re});var ze=Le.litElementPolyfillSupport;ze?.({LitElement:Re}),(Le.litElementVersions??=[]).push(`4.2.2`);function Be(e,t,n){return e.fields=t||[],e.fname=n,e}function Ve(e){return e==null?null:e.fname}function He(e){return e==null?null:e.fields}function Ue(e){return e.length===1?We(e[0]):Ge(e)}var We=e=>function(t){return t[e]},Ge=e=>{let t=e.length;return function(n){for(let r=0;r<t;++r)n=n[e[r]];return n}};function Ke(e){throw Error(e)}function qe(e){let t=[],n=e.length,r=null,i=0,a=``,o,s,c;e+=``;function l(){t.push(a+e.substring(o,s)),a=``,o=s+1}for(o=s=0;s<n;++s)if(c=e[s],c===`\\`)a+=e.substring(o,s++),o=s;else if(c===r)l(),r=null,i=-1;else if(r)continue;else o===i&&c===`"`||o===i&&c===`'`?(o=s+1,r=c):c===`.`&&!i?s>o?l():o=s+1:c===`[`?(s>o&&l(),i=o=s+1):c===`]`&&(i||Ke(`Access path missing open bracket: `+e),i>0&&l(),i=0,o=s+1);return i&&Ke(`Access path missing closing bracket: `+e),r&&Ke(`Access path missing closing quote: `+e),s>o&&(s++,l()),t}function Je(e,t,n){let r=qe(e);return e=r.length===1?r[0]:e,Be((n&&n.get||Ue)(r),[e],t||e)}Je(`id`);var Ye=Be(e=>e,[],`identity`);Be(()=>0,[],`zero`),Be(()=>1,[],`one`),Be(()=>!0,[],`true`),Be(()=>!1,[],`false`);var Xe=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]),Ze=Array.isArray;function Qe(e){return e===Object(e)}function $e(e){return e[e.length-1]}function et(e){return e==null||e===``?null:+e}var k=e=>t=>e*Math.exp(t),tt=e=>t=>Math.log(e*t),nt=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),rt=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,it=e=>t=>t<0?-((-t)**+e):t**+e;function A(e,t,n,r){let i=n(e[0]),a=n($e(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function at(e,t){return A(e,t,et,Ye)}function ot(e,t){var n=Math.sign(e[0]);return A(e,t,tt(n),k(n))}function j(e,t,n){return A(e,t,it(n),it(1/n))}function st(e,t,n,r,i){let a=r(e[0]),o=r($e(e)),s=t==null?(a+o)/2:r(t);return[i(s+(a-s)*n),i(s+(o-s)*n)]}function ct(e,t,n){return st(e,t,n,et,Ye)}function lt(e,t,n){let r=Math.sign(e[0]);return st(e,t,n,tt(r),k(r))}function ut(e,t,n,r){return st(e,t,n,it(r),it(1/r))}function dt(e,t,n,r){return st(e,t,n,nt(r),rt(r))}function M(e){return e==null?[]:Ze(e)?e:[e]}function ft(e,t,n){let r=e[0],i=e[1],a;return i<r&&(a=i,i=r,r=a),a=i-r,a>=n-t?[t,n]:[r=Math.min(Math.max(r,t),n-a),r+a]}function pt(e){return typeof e==`function`}var mt=`descending`;function ht(e,t,n){n||={},t=M(t)||[];let r=[],i=[],a={},o=n.comparator||_t;return M(e).forEach((e,o)=>{e!=null&&(r.push(t[o]===mt?-1:1),i.push(e=pt(e)?e:Je(e,null,n)),(He(e)||[]).forEach(e=>a[e]=1))}),i.length===0?null:Be(o(i,r),Object.keys(a))}var gt=(e,t)=>(e<t||e==null)&&t!=null?-1:(e>t||t==null)&&e!=null?1:(t=t instanceof Date?+t:t,e=e instanceof Date?+e:e)!==e&&t===t?-1:t!==t&&e===e?1:0,_t=(e,t)=>e.length===1?vt(e[0],t[0]):yt(e,t,e.length),vt=(e,t)=>function(n,r){return gt(e(n),e(r))*t},yt=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=gt(a(r),a(i));return o*t[s]});function bt(e){for(let t,n,r=1,i=arguments.length;r<i;++r)for(n in t=arguments[r],t)e[n]=t[n];return e}function xt(e,t){return Object.hasOwn(e,t)}function St(e){return typeof e==`boolean`}function Ct(e){return Object.prototype.toString.call(e)===`[object Date]`}function wt(e){return e&&pt(e[Symbol.iterator])}function N(e){return typeof e==`number`}function Tt(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function P(e){return typeof e==`string`}function F(e,t){let n=e[0],r=$e(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Et(e){return e&&$e(e)-e[0]||0}function Dt(e){return Ze(e)?`[${e.map(e=>e===null?`null`:Dt(e))}]`:Qe(e)||P(e)?JSON.stringify(e).replaceAll(`\u2028`,`\\u2028`).replaceAll(`\u2029`,`\\u2029`):e}function Ot(e){return e==null||e===``?null:!e||e===`false`||e===`0`?!1:!!e}var kt=e=>N(e)||Ct(e)?e:Date.parse(e);function At(e,t){return t||=kt,e==null||e===``?null:t(e)}function jt(e){return e==null||e===``?null:e+``}function Mt(e){let t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Nt={},Pt={},Ft=34,It=10,Lt=13;function Rt(e){return Function(`d`,`return {`+e.map(function(e,t){return JSON.stringify(e)+`: d[`+t+`] || ""`}).join(`,`)+`}`)}function zt(e,t){var n=Rt(e);return function(r,i){return t(n(r),i,e)}}function Bt(e){var t=Object.create(null),n=[];return e.forEach(function(e){for(var r in e)r in t||n.push(t[r]=r)}),n}function Vt(e,t){var n=e+``,r=n.length;return r<t?Array(t-r+1).join(0)+n:n}function Ht(e){return e<0?`-`+Vt(-e,6):e>9999?`+`+Vt(e,6):Vt(e,4)}function Ut(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?`Invalid Date`:Ht(e.getUTCFullYear(),4)+`-`+Vt(e.getUTCMonth()+1,2)+`-`+Vt(e.getUTCDate(),2)+(i?`T`+Vt(t,2)+`:`+Vt(n,2)+`:`+Vt(r,2)+`.`+Vt(i,3)+`Z`:r?`T`+Vt(t,2)+`:`+Vt(n,2)+`:`+Vt(r,2)+`Z`:n||t?`T`+Vt(t,2)+`:`+Vt(n,2)+`Z`:``)}function Wt(e){var t=RegExp(`["`+e+`
|
|
3
|
+
\r]`),n=e.charCodeAt(0);function r(e,t){var n,r,a=i(e,function(e,i){if(n)return n(e,i-1);r=e,n=t?zt(e,t):Rt(e)});return a.columns=r||[],a}function i(e,t){var r=[],i=e.length,a=0,o=0,s,c=i<=0,l=!1;e.charCodeAt(i-1)===It&&--i,e.charCodeAt(i-1)===Lt&&--i;function u(){if(c)return Pt;if(l)return l=!1,Nt;var t,r=a,o;if(e.charCodeAt(r)===Ft){for(;a++<i&&e.charCodeAt(a)!==Ft||e.charCodeAt(++a)===Ft;);return(t=a)>=i?c=!0:(o=e.charCodeAt(a++))===It?l=!0:o===Lt&&(l=!0,e.charCodeAt(a)===It&&++a),e.slice(r+1,t-1).replace(/""/g,`"`)}for(;a<i;){if((o=e.charCodeAt(t=a++))===It)l=!0;else if(o===Lt)l=!0,e.charCodeAt(a)===It&&++a;else if(o!==n)continue;return e.slice(r,t)}return c=!0,e.slice(r,i)}for(;(s=u())!==Pt;){for(var d=[];s!==Nt&&s!==Pt;)d.push(s),s=u();t&&(d=t(d,o++))==null||r.push(d)}return r}function a(t,n){return t.map(function(t){return n.map(function(e){return u(t[e])}).join(e)})}function o(t,n){return n??=Bt(t),[n.map(u).join(e)].concat(a(t,n)).join(`
|
|
4
|
+
`)}function s(e,t){return t??=Bt(e),a(e,t).join(`
|
|
5
5
|
`)}function c(e){return e.map(l).join(`
|
|
6
|
-
`)}function l(t){return t.map(u).join(e)}function u(e){return e==null?``:e instanceof Date?Wt(e):t.test(e+=``)?`"`+e.replace(/"/g,`""`)+`"`:e}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:c,formatRow:l,formatValue:u}}var Kt=Gt(` `);Kt.parse;var qt=Kt.parseRows;Kt.format,Kt.formatBody,Kt.formatRows,Kt.formatRow,Kt.formatValue;function Jt(e){return e}function Yt(e){if(e==null)return Jt;var t,n,r=e.scale[0],i=e.scale[1],a=e.translate[0],o=e.translate[1];return function(e,s){s||(t=n=0);var c=2,l=e.length,u=Array(l);for(u[0]=(t+=e[0])*r+a,u[1]=(n+=e[1])*i+o;c<l;)u[c]=e[c],++c;return u}}function Xt(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function Zt(e,t){return typeof t==`string`&&(t=e.objects[t]),t.type===`GeometryCollection`?{type:`FeatureCollection`,features:t.geometries.map(function(t){return Qt(e,t)})}:Qt(e,t)}function Qt(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=$t(e,t);return n==null&&r==null?{type:`Feature`,properties:i,geometry:a}:r==null?{type:`Feature`,id:n,properties:i,geometry:a}:{type:`Feature`,id:n,bbox:r,properties:i,geometry:a}}function $t(e,t){var n=Yt(e.transform),r=e.arcs;function i(e,t){t.length&&t.pop();for(var i=r[e<0?~e:e],a=0,o=i.length;a<o;++a)t.push(n(i[a],a));e<0&&Xt(t,o)}function a(e){return n(e)}function o(e){for(var t=[],n=0,r=e.length;n<r;++n)i(e[n],t);return t.length<2&&t.push(t[0]),t}function s(e){for(var t=o(e);t.length<4;)t.push(t[0]);return t}function c(e){return e.map(s)}function l(e){var t=e.type,n;switch(t){case`GeometryCollection`:return{type:t,geometries:e.geometries.map(l)};case`Point`:n=a(e.coordinates);break;case`MultiPoint`:n=e.coordinates.map(a);break;case`LineString`:n=o(e.arcs);break;case`MultiLineString`:n=e.arcs.map(o);break;case`Polygon`:n=c(e.arcs);break;case`MultiPolygon`:n=e.arcs.map(c);break;default:return null}return{type:t,coordinates:n}}return l(t)}function en(e,t){var n={},r={},i={},a=[],o=-1;t.forEach(function(n,r){var i=e.arcs[n<0?~n:n],a;i.length<3&&!i[1][0]&&!i[1][1]&&(a=t[++o],t[o]=n,t[r]=a)}),t.forEach(function(e){var t=s(e),n=t[0],a=t[1],o,c;if(o=i[n])if(delete i[o.end],o.push(e),o.end=a,c=r[a]){delete r[c.start];var l=c===o?o:o.concat(c);r[l.start=o.start]=i[l.end=c.end]=l}else r[o.start]=i[o.end]=o;else if(o=r[a])if(delete r[o.start],o.unshift(e),o.start=n,c=i[n]){delete i[c.end];var u=c===o?o:c.concat(o);r[u.start=c.start]=i[u.end=o.end]=u}else r[o.start]=i[o.end]=o;else o=[e],r[o.start=n]=i[o.end=a]=o});function s(t){var n=e.arcs[t<0?~t:t],r=n[0],i;return e.transform?(i=[0,0],n.forEach(function(e){i[0]+=e[0],i[1]+=e[1]})):i=n[n.length-1],t<0?[i,r]:[r,i]}function c(e,t){for(var r in e){var i=e[r];delete t[i.start],delete i.start,delete i.end,i.forEach(function(e){n[e<0?~e:e]=1}),a.push(i)}}return c(i,r),c(r,i),t.forEach(function(e){n[e<0?~e:e]||a.push([e])}),a}function tn(e){return $t(e,nn.apply(this,arguments))}function nn(e,t,n){var r,i,a;if(arguments.length>1)r=rn(e,t,n);else for(i=0,r=Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:`MultiLineString`,arcs:en(e,r)}}function rn(e,t,n){var r=[],i=[],a;function o(e){var t=e<0?~e:e;(i[t]||(i[t]=[])).push({i:e,g:a})}function s(e){e.forEach(o)}function c(e){e.forEach(s)}function l(e){e.forEach(c)}function u(e){switch(a=e,e.type){case`GeometryCollection`:e.geometries.forEach(u);break;case`LineString`:s(e.arcs);break;case`MultiLineString`:case`Polygon`:c(e.arcs);break;case`MultiPolygon`:l(e.arcs);break}}return u(t),i.forEach(n==null?function(e){r.push(e[0].i)}:function(e){n(e[0].g,e[e.length-1].g)&&r.push(e[0].i)}),r}function an(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function on(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function sn(e){let t,n,r;e.length===2?(t=e===an||e===on?e:cn,n=e,r=e):(t=an,n=(t,n)=>an(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<0?i=t+1:a=t}while(i<a)}return i}function a(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<=0?i=t+1:a=t}while(i<a)}return i}function o(e,t,n=0,a=e.length){let o=i(e,t,n,a-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function cn(){return 0}function ln(e){return e===null?NaN:+e}function*un(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var dn=sn(an),fn=dn.right;dn.left,sn(ln).center;function pn(e,t){let n=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&++n;else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(i=+i)>=i&&++n}return n}function mn(e,t){let n=0,r,i=0,a=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(r=t-i,i+=r/++n,a+=r*(t-i));else{let o=-1;for(let s of e)(s=t(s,++o,e))!=null&&(s=+s)>=s&&(r=s-i,i+=r/++n,a+=r*(s-i))}if(n>1)return a/(n-1)}function hn(e,t){let n,r;if(t===void 0)for(let t of e)t!=null&&(n===void 0?t>=t&&(n=r=t):(n>t&&(n=t),r<t&&(r=t)));else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(n===void 0?a>=a&&(n=r=a):(n>a&&(n=a),r<a&&(r=a)))}return[n,r]}var gn=class extends Map{constructor(e,t=bn){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(_n(this,e))}has(e){return super.has(_n(this,e))}set(e,t){return super.set(vn(this,e),t)}delete(e){return super.delete(yn(this,e))}};function _n({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function vn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function yn({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function bn(e){return typeof e==`object`&&e?e.valueOf():e}function xn(e){return e}function Sn(e,...t){return wn(e,xn,xn,t)}function Cn(e,...t){return wn(e,Array.from,xn,t)}function wn(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new gn,s=r[a++],c=-1;for(let e of i){let t=s(e,++c,i),n=o.get(t);n?n.push(e):o.set(t,[e])}for(let[t,n]of o)o.set(t,e(n,a));return t(o)})(e,0)}function Tn(e=an){if(e===an)return En;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function En(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var Dn=Math.sqrt(50),On=Math.sqrt(10),kn=Math.sqrt(2);function An(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Dn?10:a>=On?5:a>=kn?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/l<e&&++s,c/l>t&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*l<e&&++s,c*l>t&&--c),c<s&&.5<=n&&n<2?An(e,t,n*2):[s,c,l]}function jn(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];let r=t<e,[i,a,o]=r?An(t,e,n):An(e,t,n);if(!(a>=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e<s;++e)c[e]=(a-e)/-o;else for(let e=0;e<s;++e)c[e]=(a-e)*o;else if(o<0)for(let e=0;e<s;++e)c[e]=(i+e)/-o;else for(let e=0;e<s;++e)c[e]=(i+e)*o;return c}function Mn(e,t,n){return t=+t,e=+e,n=+n,An(e,t,n)[2]}function Nn(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?Mn(t,e,n):Mn(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function Pn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n<t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n<i||n===void 0&&i>=i)&&(n=i)}return n}function Fn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function In(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?En:Tn(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));In(e,t,u,d,i)}let a=e[t],o=n,s=r;for(Ln(e,n,t),i(e[r],a)>0&&Ln(e,n,r);o<s;){for(Ln(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?Ln(e,n,s):(++s,Ln(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function Ln(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Rn(e,t,n){if(e=Float64Array.from(un(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Fn(e);if(t>=1)return Pn(e);var r,i=(r-1)*t,a=Math.floor(i),o=Pn(In(e,a).subarray(0,a+1));return o+(Fn(e.subarray(a+1))-o)*(i-a)}}function zn(e,t,n=ln){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function Bn(e,t){let n=0,r=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(++n,r+=t);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(a=+a)>=a&&(++n,r+=a)}if(n)return r/n}function Vn(e,t){return Rn(e,.5,t)}function Hn(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function Un(e,t){let n=0;if(t===void 0)for(let t of e)(t=+t)&&(n+=t);else{let r=-1;for(let i of e)(i=+t(i,++r,e))&&(n+=i)}return n}function Wn(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Gn(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Kn(e){return e=Gn(Math.abs(e)),e?e[1]:NaN}function qn(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function Jn(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var Yn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Xn(e){if(!(t=Yn.exec(e)))throw Error(`invalid format: `+e);var t;return new Zn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Xn.prototype=Zn.prototype;function Zn(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Zn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function Qn(e){out:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case`.`:r=i=n;break;case`0`:r===0&&(r=n),i=n;break;default:if(!+e[n])break out;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var $n;function er(e,t){var n=Gn(e,t);if(!n)return $n=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-($n=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+Gn(e,Math.max(0,t+a-1))[0]}function tr(e,t){var n=Gn(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var nr={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Wn,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>tr(e*100,t),r:tr,s:er,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function rr(e){return e}var ir=Array.prototype.map,ar=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function or(e){var t=e.grouping===void 0||e.thousands===void 0?rr:qn(ir.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?rr:Jn(ir.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=Xn(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):nr[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=nr[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Qn(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&$n!==void 0?ar[8+$n/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++o<l;)if(p=e.charCodeAt(o),48>p||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T<h?Array(h-T+1).join(u):``;switch(g&&m&&(e=t(E+e,E.length?h-r.length:1/0),E=``),d){case`<`:e=n+e+r+E;break;case`=`:e=n+E+e+r;break;case`^`:e=E.slice(0,T=E.length>>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Kn(t)/3)))*3,r=10**-n,i=l((e=Xn(e),e.type=`f`,e),{suffix:ar[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var sr,cr,lr;ur({thousands:`,`,grouping:[3],currency:[`$`,``]});function ur(e){return sr=or(e),cr=sr.format,lr=sr.formatPrefix,sr}function dr(e){return Math.max(0,-Kn(Math.abs(e)))}function fr(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Kn(t)/3)))*3-Kn(Math.abs(e)))}function pr(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Kn(t)-Kn(e))+1}var mr=new Date,hr=new Date;function gr(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t<n-e?t:n},i.offset=(e,n)=>(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n<r)||!(a>0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(s<n&&n<r);return o},i.filter=n=>gr(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(mr.setTime(+t),hr.setTime(+r),e(mr),e(hr),Math.floor(n(mr,hr))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var _r=gr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);_r.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?gr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):_r),_r.range;var vr=1e3,yr=vr*60,br=yr*60,xr=br*24,Sr=xr*7,Cr=xr*30,wr=xr*365,Tr=gr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getUTCSeconds());Tr.range;var Er=gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*vr)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getMinutes());Er.range;var Dr=gr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getUTCMinutes());Dr.range;var Or=gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*vr-e.getMinutes()*yr)},(e,t)=>{e.setTime(+e+t*br)},(e,t)=>(t-e)/br,e=>e.getHours());Or.range;var kr=gr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*br)},(e,t)=>(t-e)/br,e=>e.getUTCHours());kr.range;var Ar=gr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*yr)/xr,e=>e.getDate()-1);Ar.range;var jr=gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/xr,e=>e.getUTCDate()-1);jr.range;var Mr=gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/xr,e=>Math.floor(e/xr));Mr.range;function Nr(e){return gr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*yr)/Sr)}var Pr=Nr(0),Fr=Nr(1),Ir=Nr(2),Lr=Nr(3),Rr=Nr(4),zr=Nr(5),Br=Nr(6);Pr.range,Fr.range,Ir.range,Lr.range,Rr.range,zr.range,Br.range;function Vr(e){return gr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/Sr)}var Hr=Vr(0),Ur=Vr(1),Wr=Vr(2),Gr=Vr(3),Kr=Vr(4),qr=Vr(5),Jr=Vr(6);Hr.range,Ur.range,Wr.range,Gr.range,Kr.range,qr.range,Jr.range;var Yr=gr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Yr.range;var Xr=gr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Xr.range;var Zr=gr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Zr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:gr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Zr.range;var Qr=gr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Qr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:gr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Qr.range;function $r(e,t,n,r,i,a){let o=[[Tr,1,vr],[Tr,5,5*vr],[Tr,15,15*vr],[Tr,30,30*vr],[a,1,yr],[a,5,5*yr],[a,15,15*yr],[a,30,30*yr],[i,1,br],[i,3,3*br],[i,6,6*br],[i,12,12*br],[r,1,xr],[r,2,2*xr],[n,1,Sr],[t,1,Cr],[t,3,3*Cr],[e,1,wr]];function s(e,t,n){let r=t<e;r&&([e,t]=[t,e]);let i=n&&typeof n.range==`function`?n:c(e,t,n),a=i?i.range(e,+t+1):[];return r?a.reverse():a}function c(t,n,r){let i=Math.abs(n-t)/r,a=sn(([,,e])=>e).right(o,i);if(a===o.length)return e.every(Nn(t/wr,n/wr,r));if(a===0)return _r.every(Math.max(Nn(t,n,r),1));let[s,c]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(c)}return[s,c]}var[ei,ti]=$r(Qr,Xr,Hr,Mr,kr,Dr),[ni,ri]=$r(Zr,Yr,Pr,Ar,Or,Er),ii=`year`,ai=`quarter`,oi=`month`,si=`week`,ci=`date`,li=`dayofyear`,ui=`hours`,di=`minutes`,fi=`seconds`,pi=`milliseconds`;[ii,ai,oi,si,ci,`day`,li,ui,di,fi,pi].reduce((e,t,n)=>(e[t]=1+n,e),{}),`${ii}${oi}`,`${ii}${oi}${ci}`,`${ui}${di}`,si+``,si+``;var mi={[ii]:Zr,[ai]:Yr.every(3),[oi]:Yr,[si]:Pr,[ci]:Ar,day:Ar,[li]:Ar,[ui]:Or,[di]:Er,[fi]:Tr,[pi]:_r},hi={[ii]:Qr,[ai]:Xr.every(3),[oi]:Xr,[si]:Hr,[ci]:jr,day:jr,[li]:jr,[ui]:kr,[di]:Dr,[fi]:Tr,[pi]:_r};function gi(e){return mi[e]}function _i(e){return hi[e]}var vi=1e3,yi=vi*60,bi=yi*60,xi=bi*24;xi*7;var Si=xi*30;xi*365,[ii,oi,ci,ui,di,fi,pi].slice(0,-1).slice(0,-1).slice(0,-1).slice(0,-1),5*vi,15*vi,30*vi,5*yi,15*yi,30*yi,3*bi,6*bi,12*bi,3*Si;function Ci(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function wi(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Ti(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function Ei(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,a=e.days,o=e.shortDays,s=e.months,c=e.shortMonths,l=Mi(i),u=Ni(i),d=Mi(a),f=Ni(a),p=Mi(o),m=Ni(o),h=Mi(s),g=Ni(s),_=Mi(c),v=Ni(c),y={a:oe,A:se,b:ce,B:le,c:null,d:ea,e:ea,f:aa,g:ga,G:va,H:ta,I:na,j:ra,L:ia,m:oa,M:sa,p:ue,q:de,Q:Va,s:Ha,S:ca,u:la,U:ua,V:fa,w:pa,W:ma,x:null,X:null,y:ha,Y:_a,Z:ya,"%":Ba},b={a:fe,A:pe,b:me,B:he,c:null,d:ba,e:ba,f:Ta,g:Ia,G:Ra,H:xa,I:Sa,j:Ca,L:wa,m:Ea,M:Da,p:ge,q:_e,Q:Va,s:Ha,S:Oa,u:ka,U:Aa,V:Ma,w:Na,W:Pa,x:null,X:null,y:Fa,Y:La,Z:za,"%":Ba},x={a:E,A:ee,b:te,B:ne,c:re,d:Wi,e:Wi,f:Xi,g:Bi,G:zi,H:Ki,I:Ki,j:Gi,L:Yi,m:Ui,M:qi,p:T,q:Hi,Q:Qi,s:$i,S:Ji,u:Fi,U:Ii,V:Li,w:Pi,W:Ri,x:ie,X:ae,y:Bi,Y:zi,Z:Vi,"%":Zi};y.x=S(n,y),y.X=S(r,y),y.c=S(t,y),b.x=S(n,b),b.X=S(r,b),b.c=S(t,b);function S(e,t){return function(n){var r=[],i=-1,a=0,o=e.length,s,c,l;for(n instanceof Date||(n=new Date(+n));++i<o;)e.charCodeAt(i)===37&&(r.push(e.slice(a,i)),(c=Di[s=e.charAt(++i)])==null?c=s===`e`?` `:`0`:s=e.charAt(++i),(l=t[s])&&(s=l(n,c)),r.push(s),a=i+1);return r.push(e.slice(a,i)),r.join(``)}}function C(e,t){return function(n){var r=Ti(1900,void 0,1),i=w(r,e,n+=``,0),a,o;if(i!=n.length)return null;if(`Q`in r)return new Date(r.Q);if(`s`in r)return new Date(r.s*1e3+(`L`in r?r.L:0));if(t&&!(`Z`in r)&&(r.Z=0),`p`in r&&(r.H=r.H%12+r.p*12),r.m===void 0&&(r.m=`q`in r?r.q:0),`V`in r){if(r.V<1||r.V>53)return null;`w`in r||(r.w=1),`Z`in r?(a=wi(Ti(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Ur.ceil(a):Ur(a),a=jr.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Ci(Ti(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Fr.ceil(a):Fr(a),a=Ar.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?wi(Ti(r.y,0,1)).getUTCDay():Ci(Ti(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,wi(r)):Ci(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i<a;){if(r>=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Di?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function te(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function ne(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function re(e,n,r){return w(e,t,n,r)}function ie(e,t,r){return w(e,n,t,r)}function ae(e,t,n){return w(e,r,t,n)}function oe(e){return o[e.getDay()]}function se(e){return a[e.getDay()]}function ce(e){return c[e.getMonth()]}function le(e){return s[e.getMonth()]}function ue(e){return i[+(e.getHours()>=12)]}function de(e){return 1+~~(e.getMonth()/3)}function fe(e){return o[e.getUTCDay()]}function pe(e){return a[e.getUTCDay()]}function me(e){return c[e.getUTCMonth()]}function he(e){return s[e.getUTCMonth()]}function ge(e){return i[+(e.getUTCHours()>=12)]}function _e(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Di={"-":``,_:` `,0:`0`},Oi=/^\s*\d+/,ki=/^%/,Ai=/[\\^$*+?|[\]().{}]/g;function F(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a<n?Array(n-a+1).join(t)+i:i)}function ji(e){return e.replace(Ai,`\\$&`)}function Mi(e){return RegExp(`^(?:`+e.map(ji).join(`|`)+`)`,`i`)}function Ni(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Pi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Fi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Ii(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Li(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Ri(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function zi(e,t,n){var r=Oi.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Bi(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Vi(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Hi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Ui(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Wi(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Oi.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function qi(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Ji(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Yi(e,t,n){var r=Oi.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Xi(e,t,n){var r=Oi.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Zi(e,t,n){var r=ki.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Qi(e,t,n){var r=Oi.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function $i(e,t,n){var r=Oi.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function ea(e,t){return F(e.getDate(),t,2)}function ta(e,t){return F(e.getHours(),t,2)}function na(e,t){return F(e.getHours()%12||12,t,2)}function ra(e,t){return F(1+Ar.count(Zr(e),e),t,3)}function ia(e,t){return F(e.getMilliseconds(),t,3)}function aa(e,t){return ia(e,t)+`000`}function oa(e,t){return F(e.getMonth()+1,t,2)}function sa(e,t){return F(e.getMinutes(),t,2)}function ca(e,t){return F(e.getSeconds(),t,2)}function la(e){var t=e.getDay();return t===0?7:t}function ua(e,t){return F(Pr.count(Zr(e)-1,e),t,2)}function da(e){var t=e.getDay();return t>=4||t===0?Rr(e):Rr.ceil(e)}function fa(e,t){return e=da(e),F(Rr.count(Zr(e),e)+(Zr(e).getDay()===4),t,2)}function pa(e){return e.getDay()}function ma(e,t){return F(Fr.count(Zr(e)-1,e),t,2)}function ha(e,t){return F(e.getFullYear()%100,t,2)}function ga(e,t){return e=da(e),F(e.getFullYear()%100,t,2)}function _a(e,t){return F(e.getFullYear()%1e4,t,4)}function va(e,t){var n=e.getDay();return e=n>=4||n===0?Rr(e):Rr.ceil(e),F(e.getFullYear()%1e4,t,4)}function ya(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+F(t/60|0,`0`,2)+F(t%60,`0`,2)}function ba(e,t){return F(e.getUTCDate(),t,2)}function xa(e,t){return F(e.getUTCHours(),t,2)}function Sa(e,t){return F(e.getUTCHours()%12||12,t,2)}function Ca(e,t){return F(1+jr.count(Qr(e),e),t,3)}function wa(e,t){return F(e.getUTCMilliseconds(),t,3)}function Ta(e,t){return wa(e,t)+`000`}function Ea(e,t){return F(e.getUTCMonth()+1,t,2)}function Da(e,t){return F(e.getUTCMinutes(),t,2)}function Oa(e,t){return F(e.getUTCSeconds(),t,2)}function ka(e){var t=e.getUTCDay();return t===0?7:t}function Aa(e,t){return F(Hr.count(Qr(e)-1,e),t,2)}function ja(e){var t=e.getUTCDay();return t>=4||t===0?Kr(e):Kr.ceil(e)}function Ma(e,t){return e=ja(e),F(Kr.count(Qr(e),e)+(Qr(e).getUTCDay()===4),t,2)}function Na(e){return e.getUTCDay()}function Pa(e,t){return F(Ur.count(Qr(e)-1,e),t,2)}function Fa(e,t){return F(e.getUTCFullYear()%100,t,2)}function Ia(e,t){return e=ja(e),F(e.getUTCFullYear()%100,t,2)}function La(e,t){return F(e.getUTCFullYear()%1e4,t,4)}function Ra(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Kr(e):Kr.ceil(e),F(e.getUTCFullYear()%1e4,t,4)}function za(){return`+0000`}function Ba(){return`%`}function Va(e){return+e}function Ha(e){return Math.floor(e/1e3)}var Ua,Wa,Ga,Ka,qa;Ja({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function Ja(e){return Ua=Ei(e),Wa=Ua.format,Ga=Ua.parse,Ka=Ua.utcFormat,qa=Ua.utcParse,Ua}function Ya(e){let t={};return n=>t[n]||(t[n]=e(n))}function Xa(e,t){return n=>{let r=e(n),i=r.indexOf(t);if(i<0)return r;let a=Za(r,i),o=a<r.length?r.slice(a):``;for(;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Za(e,t){let n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}function Qa(e){let t=Ya(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(e){let n=Xn(e||`,`);if(n.precision==null){switch(n.precision=12,n.type){case`%`:n.precision-=2;break;case`e`:--n.precision;break}return Xa(t(n),t(`.1f`)(1)[1])}else return t(n)},formatSpan(e,r,i,a){a=Xn(a??`,f`);let o=Nn(e,r,i),s=Math.max(Math.abs(e),Math.abs(r)),c;if(a.precision==null)switch(a.type){case`s`:return isNaN(c=fr(o,s))||(a.precision=c),n(a,s);case``:case`e`:case`g`:case`p`:case`r`:isNaN(c=pr(o,s))||(a.precision=c-(a.type===`e`));break;case`f`:case`%`:isNaN(c=dr(o))||(a.precision=c-(a.type===`%`)*2);break}return t(a)}}}$a();function $a(){return Qa({format:cr,formatPrefix:lr})}function eo(e,t,n){n||={},$e(n)||qe(`Invalid time multi-format specifier: ${n}`);let r=t(fi),i=t(di),a=t(ui),o=t(ci),s=t(si),c=t(oi),l=t(ai),u=t(ii),d=e(n.milliseconds||`.%L`),f=e(n.seconds||`:%S`),p=e(n.minutes||`%I:%M`),m=e(n.hours||`%I %p`),h=e(n.date||n.day||`%a %d`),g=e(n.week||`%b %d`),_=e(n.month||`%B`),v=e(n.quarter||`%B`),y=e(n.year||`%Y`);return e=>(r(e)<e?d:i(e)<e?f:a(e)<e?p:o(e)<e?m:c(e)<e?s(e)<e?h:g:u(e)<e?l(e)<e?_:v:y)(e)}function to(e){let t=Ya(e.format),n=Ya(e.utcFormat);return{timeFormat:e=>N(e)?t(e):eo(t,gi,e),utcFormat:e=>N(e)?n(e):eo(n,_i,e),timeParse:Ya(e.parse),utcParse:Ya(e.utcParse)}}var no;ro();function ro(){return no=to({format:Wa,parse:Ga,utcFormat:Ka,utcParse:qa})}function io(e){return to(Ei(e))}function ao(e){return arguments.length?no=io(e):no}var oo=e=>e!=null&&e===e,so=e=>e===`true`||e===`false`||e===!0||e===!1,co=e=>!Number.isNaN(Date.parse(e)),lo=e=>!Number.isNaN(+e)&&!(e instanceof Date),uo=e=>lo(e)&&Number.isInteger(+e),fo={boolean:kt,integer:tt,number:tt,date:jt,string:Mt,unknown:Xe},po=[so,uo,lo,co],mo=[`boolean`,`integer`,`number`,`date`];function ho(e,t){if(!e||!e.length)return`unknown`;let n=e.length,r=po.length,i=po.map((e,t)=>t+1);for(let a=0,o=0,s,c;a<n;++a)for(c=t?e[a][t]:e[a],s=0;s<r;++s)if(i[s]&&oo(c)&&!po[s](c)&&(i[s]=0,++o,o===po.length))return`string`;return mo[i.reduce((e,t)=>e===0?t:e,0)-1]}function go(e,t){return t.reduce((t,n)=>(t[n]=ho(e,n),t),{})}function _o(e){let t=function(t,n){let r={delimiter:e};return vo(t,n?xt(n,r):r)};return t.responseType=`text`,t}function vo(e,t){return t.header&&(e=t.header.map(Ot).join(t.delimiter)+`
|
|
7
|
-
`+e),Gt(t.delimiter).parse(e+``)}vo.responseType=`text`;function yo(e){return typeof Buffer==`function`&&mt(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function bo(e,t){let n=t&&t.property?Ye(t.property):Xe;return $e(e)&&!yo(e)?xo(n(e),t):n(JSON.parse(e))}bo.responseType=`json`;function xo(e,t){return!Qe(e)&&Tt(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}var So={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function Co(e,t){let n,r,i,a;return e=bo(e,t),t&&t.feature?(n=Zt,i=t.feature):t&&t.mesh?(n=tn,i=t.mesh,a=So[t.filter]):qe(`Missing TopoJSON feature or mesh parameter.`),r=(r=e.objects[i])?n(e,r,a):qe(`Invalid TopoJSON object: `+i),r&&r.features||[r]}Co.responseType=`json`;var wo={dsv:vo,csv:_o(`,`),tsv:_o(` `),json:bo,topojson:Co};function To(e,t){return arguments.length>1?(wo[e]=t,this):St(wo,e)?wo[e]:null}function Eo(e,t,n,r){t||={};let i=To(t.type||`json`);return i||qe(`Unknown data format type: `+t.type),e=i(e,t),t.parse&&Do(e,t.parse,n,r),St(e,`columns`)&&delete e.columns,e}function Do(e,t,n,r){if(!e.length)return;let i=ao();n||=i.timeParse,r||=i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,c,l,u,d;t===`auto`&&(t=go(e,a)),a=Object.keys(t);let f=a.map(e=>{let i=t[e],a,o;if(i&&(i.startsWith(`date:`)||i.startsWith(`utc:`)))return a=i.split(/:(.+)?/,2),o=a[1],(o[0]===`'`&&o[o.length-1]===`'`||o[0]===`"`&&o[o.length-1]===`"`)&&(o=o.slice(1,-1)),(a[0]===`utc`?r:n)(o);if(!fo[i])throw Error(`Illegal format pattern: `+e+`:`+i);return fo[i]});for(c=0,u=e.length,d=a.length;c<u;++c)for(o=e[c],l=0;l<d;++l)s=a[l],o[s]=f[l](o[s])}var Oo,ko,Ao,jo,Mo,No,Po,Fo=n((()=>{Oo=[`BOOLEAN`,`INT32`,`INT64`,`INT96`,`FLOAT`,`DOUBLE`,`BYTE_ARRAY`,`FIXED_LEN_BYTE_ARRAY`],ko=[`PLAIN`,`GROUP_VAR_INT`,`PLAIN_DICTIONARY`,`RLE`,`BIT_PACKED`,`DELTA_BINARY_PACKED`,`DELTA_LENGTH_BYTE_ARRAY`,`DELTA_BYTE_ARRAY`,`RLE_DICTIONARY`,`BYTE_STREAM_SPLIT`],Ao=[`REQUIRED`,`OPTIONAL`,`REPEATED`],jo=[`UTF8`,`MAP`,`MAP_KEY_VALUE`,`LIST`,`ENUM`,`DECIMAL`,`DATE`,`TIME_MILLIS`,`TIME_MICROS`,`TIMESTAMP_MILLIS`,`TIMESTAMP_MICROS`,`UINT_8`,`UINT_16`,`UINT_32`,`UINT_64`,`INT_8`,`INT_16`,`INT_32`,`INT_64`,`JSON`,`BSON`,`INTERVAL`],Mo=[`UNCOMPRESSED`,`SNAPPY`,`GZIP`,`LZO`,`BROTLI`,`LZ4`,`ZSTD`,`LZ4_RAW`],No=[`DATA_PAGE`,`INDEX_PAGE`,`DICTIONARY_PAGE`,`DATA_PAGE_V2`],Po=[`SPHERICAL`,`VINCENTY`,`THOMAS`,`ANDOYER`,`KARNEY`]}));function Io(e){let t=Lo(e);if(t.type===1)return{type:`Point`,coordinates:Ro(e,t)};if(t.type===2)return{type:`LineString`,coordinates:zo(e,t)};if(t.type===3)return{type:`Polygon`,coordinates:Bo(e,t)};if(t.type===4){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,Lo(e)));return{type:`MultiPoint`,coordinates:n}}else if(t.type===5){let n=[];for(let r=0;r<t.count;r++)n.push(zo(e,Lo(e)));return{type:`MultiLineString`,coordinates:n}}else if(t.type===6){let n=[];for(let r=0;r<t.count;r++)n.push(Bo(e,Lo(e)));return{type:`MultiPolygon`,coordinates:n}}else if(t.type===7){let n=[];for(let r=0;r<t.count;r++)n.push(Io(e));return{type:`GeometryCollection`,geometries:n}}else throw Error(`Unsupported geometry type: ${t.type}`)}function Lo(e){let{view:t}=e,n=t.getUint8(e.offset++)===1,r=t.getUint32(e.offset,n);e.offset+=4;let i=r%1e3,a=Math.floor(r/1e3),o=0;i>1&&i<=7&&(o=t.getUint32(e.offset,n),e.offset+=4);let s=2;return a&&s++,a===3&&s++,{littleEndian:n,type:i,dim:s,count:o}}function Ro(e,t){let n=[];for(let r=0;r<t.dim;r++){let r=e.view.getFloat64(e.offset,t.littleEndian);e.offset+=8,n.push(r)}return n}function zo(e,t){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,t));return n}function Bo(e,t){let{view:n}=e,r=[];for(let i=0;i<t.count;i++){let i=n.getUint32(e.offset,t.littleEndian);e.offset+=4,r.push(zo(e,{...t,count:i}))}return r}var Vo=n((()=>{}));function Ho(e,t,n,r){if(t&&n.endsWith(`_DICTIONARY`)){let n=e;e instanceof Uint8Array&&!(t instanceof Uint8Array)&&(n=new t.constructor(e.length));for(let r=0;r<e.length;r++)n[r]=t[e[r]];return n}else return Uo(e,r)}function Uo(e,t){let{element:n,parsers:r,utf8:i=!0,schemaPath:a}=t,{type:o,converted_type:s,logical_type:c}=n;if(a?.some(e=>e.element.logical_type?.type===`VARIANT`)&&o===`BYTE_ARRAY`&&s!==`UTF8`&&c?.type!==`STRING`)return e;if(s===`DECIMAL`){let t=10**-(n.scale||0),r=Array(e.length);for(let n=0;n<r.length;n++)e[n]instanceof Uint8Array?r[n]=Wo(e[n])*t:r[n]=Number(e[n])*t;return r}if(!s&&o===`INT96`)return Array.from(e).map(e=>r.timestampFromNanoseconds(Go(e)));if(s===`DATE`)return Array.from(e).map(e=>r.dateFromDays(e));if(s===`TIMESTAMP_MILLIS`)return Array.from(e).map(e=>r.timestampFromMilliseconds(e));if(s===`TIMESTAMP_MICROS`)return Array.from(e).map(e=>r.timestampFromMicroseconds(e));if(s===`JSON`)return e.map(e=>JSON.parse(qo.decode(e)));if(s===`BSON`)throw Error(`parquet bson not supported`);if(s===`INTERVAL`)throw Error(`parquet interval not supported`);if(c?.type===`GEOMETRY`)return e.map(e=>r.geometryFromBytes(e));if(c?.type===`GEOGRAPHY`)return e.map(e=>r.geographyFromBytes(e));if(s===`UTF8`||c?.type===`STRING`||i&&o===`BYTE_ARRAY`)return e.map(e=>r.stringFromBytes(e));if(s===`UINT_64`||c?.type===`INTEGER`&&c.bitWidth===64&&!c.isSigned){if(e instanceof BigInt64Array)return new BigUint64Array(e.buffer,e.byteOffset,e.length);let t=new BigUint64Array(e.length);for(let n=0;n<t.length;n++)t[n]=BigInt(e[n]);return t}if(s===`UINT_32`||c?.type===`INTEGER`&&c.bitWidth===32&&!c.isSigned){if(e instanceof Int32Array)return new Uint32Array(e.buffer,e.byteOffset,e.length);let t=new Uint32Array(e.length);for(let n=0;n<t.length;n++)t[n]=e[n];return t}if(c?.type===`FLOAT16`)return Array.from(e).map(Ko);if(c?.type===`TIMESTAMP`){let{unit:t}=c,n=r.timestampFromMilliseconds;t===`MICROS`&&(n=r.timestampFromMicroseconds),t===`NANOS`&&(n=r.timestampFromNanoseconds);let i=Array(e.length);for(let t=0;t<i.length;t++)i[t]=n(e[t]);return i}return e}function Wo(e){if(!e.length)return 0;let t=0n;for(let n of e)t=t*256n+BigInt(n);let n=e.length*8;return t>=2n**BigInt(n-1)&&(t-=2n**BigInt(n)),Number(t)}function Go(e){let t=(e>>64n)-2440588n,n=e&18446744073709551615n;return t*86400000000000n+n}function Ko(e){if(!e)return;let t=e[1]<<8|e[0],n=t>>15?-1:1,r=t>>10&31,i=t&1023;return r===0?n*2**-14*(i/1024):r===31?i?NaN:n*(1/0):n*2**(r-15)*(1+i/1024)}var qo,Jo,Yo=n((()=>{Vo(),qo=new TextDecoder,Jo={timestampFromMilliseconds(e){return new Date(Number(e))},timestampFromMicroseconds(e){return new Date(Number(e/1000n))},timestampFromNanoseconds(e){return new Date(Number(e/1000000n))},dateFromDays(e){return new Date(e*864e5)},stringFromBytes(e){return e&&qo.decode(e)},geometryFromBytes(e){return e&&Io({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&Io({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})}}}));function Xo(e,t,n){let r=e[t],i=[],a=1;if(r.num_children)for(;i.length<r.num_children;){let r=e[t+a],o=Xo(e,t+a,[...n,r.name]);a+=o.count,i.push(o)}return{count:a,element:r,children:i,path:n}}function Zo(e,t){let n=Xo(e,0,[]),r=[n];for(let e of t){let i=n.children.find(t=>t.element.name===e);if(!i)throw Error(`parquet schema element not found: ${t}`);r.push(i),n=i}return r}function Qo(e){let t=[];function n(e){if(e.children.length)for(let t of e.children)n(t);else t.push(e.path.join(`.`))}return n(e),t}function $o(e){let t=0;for(let{element:n}of e)n.repetition_type===`REPEATED`&&t++;return t}function es(e){let t=0;for(let{element:n}of e.slice(1))n.repetition_type!==`REQUIRED`&&t++;return t}function ts(e){if(!e||e.element.converted_type!==`LIST`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length>1||t.element.repetition_type!==`REPEATED`)}function ns(e){if(!e||e.element.converted_type!==`MAP`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length!==2||t.element.repetition_type!==`REPEATED`||t.children.find(e=>e.element.name===`key`)?.element.repetition_type===`REPEATED`||t.children.find(e=>e.element.name===`value`)?.element.repetition_type===`REPEATED`)}function rs(e){if(e.length!==2)return!1;let[,t]=e;return!(t.element.repetition_type===`REPEATED`||t.children.length)}var is=n((()=>{}));function as(e){let t=0,n={};for(;e.offset<e.view.byteLength;){let[r,i,a]=ds(e,t);if(t=a,r===fs.STOP)break;n[`field_${i}`]=os(e,r)}return n}function os(e,t){switch(t){case fs.TRUE:return!0;case fs.FALSE:return!1;case fs.BYTE:return e.view.getInt8(e.offset++);case fs.I16:case fs.I32:return ls(e);case fs.I64:return us(e);case fs.DOUBLE:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case fs.BINARY:{let t=ss(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case fs.LIST:{let t=e.view.getUint8(e.offset++),n=t&15,r=t>>4;r===15&&(r=ss(e));let i=n===fs.TRUE||n===fs.FALSE,a=Array(r);for(let t=0;t<r;t++)a[t]=i?os(e,fs.BYTE)===1:os(e,n);return a}case fs.STRUCT:{let t={},n=0;for(;;){let[r,i,a]=ds(e,n);if(n=a,r===fs.STOP)break;t[`field_${i}`]=os(e,r)}return t}default:throw Error(`thrift unhandled type: ${t}`)}}function ss(e){let t=0,n=0;for(;;){let r=e.view.getUint8(e.offset++);if(t|=(r&127)<<n,!(r&128))return t;n+=7}}function cs(e){let t=0n,n=0n;for(;;){let r=e.view.getUint8(e.offset++);if(t|=BigInt(r&127)<<n,!(r&128))return t;n+=7n}}function ls(e){let t=ss(e);return t>>>1^-(t&1)}function us(e){let t=cs(e);return t>>1n^-(t&1n)}function ds(e,t){let n=e.view.getUint8(e.offset++),r=n&15;if(r===fs.STOP)return[0,0,t];let i=n>>4,a=i?t+i:ls(e);return[r,a,a]}var fs,ps=n((()=>{fs={STOP:0,TRUE:1,FALSE:2,BYTE:3,I16:4,I32:5,I64:6,DOUBLE:7,BINARY:8,LIST:9,SET:10,MAP:11,STRUCT:12,UUID:13}}));function ms(e,t){let n=new Map,r=t?.find(({key:e})=>e===`geo`)?.value,i=(r&&JSON.parse(r)?.columns)??{};for(let[e,t]of Object.entries(i)){if(t.encoding!==`WKB`)continue;let r=t.edges===`spherical`?`GEOGRAPHY`:`GEOMETRY`,i=t.crs?.id??t.crs?.ids?.[0],a=i?`${i.authority}:${i.code.toString()}`:void 0;n.set(e,{type:r,crs:a})}for(let t=1;t<e.length;t++){let r=e[t],{logical_type:i,name:a,num_children:o,repetition_type:s,type:c}=r;if(o){t+=o;continue}c===`BYTE_ARRAY`&&i===void 0&&s!==`REPEATED`&&(r.logical_type=n.get(a))}}var hs=n((()=>{}));function gs(e){return e&&Ts.decode(e)}async function _s(e,{parsers:t,initialFetchSize:n=ws,geoparquet:r=!0}={}){if(!e||!(e.byteLength>=0))throw Error(`parquet expected AsyncBuffer`);let i=Math.max(0,e.byteLength-n),a=await e.slice(i,e.byteLength),o=new DataView(a);if(o.getUint32(a.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let s=o.getUint32(a.byteLength-8,!0);if(s>e.byteLength-8)throw Error(`parquet metadata length ${s} exceeds available buffer ${e.byteLength-8}`);if(s+8>n){let n=e.byteLength-s-8,o=await e.slice(n,i),c=new ArrayBuffer(s+8),l=new Uint8Array(c);return l.set(new Uint8Array(o)),l.set(new Uint8Array(a),i-n),vs(c,{parsers:t,geoparquet:r})}else return vs(a,{parsers:t,geoparquet:r})}function vs(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw Error(`parquet expected ArrayBuffer`);let r=new DataView(e);if(t={...Jo,...t},r.byteLength<8)throw Error(`parquet file is too short`);if(r.getUint32(r.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let i=r.byteLength-8,a=r.getUint32(i,!0);if(a>r.byteLength-8)throw Error(`parquet metadata length ${a} exceeds available buffer ${r.byteLength-8}`);let o=as({view:r,offset:i-a}),s=o.field_1,c=o.field_2.map(e=>({type:Oo[e.field_1],type_length:e.field_2,repetition_type:Ao[e.field_3],name:gs(e.field_4),num_children:e.field_5,converted_type:jo[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:bs(e.field_10)})),l=c.filter(e=>e.type),u=o.field_3,d=o.field_4.map(e=>({columns:e.field_1.map((e,n)=>({file_path:gs(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:Oo[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>ko[e]),path_in_schema:e.field_3.field_3.map(gs),codec:Mo[e.field_3.field_4],num_values:e.field_3.field_5,total_uncompressed_size:e.field_3.field_6,total_compressed_size:e.field_3.field_7,key_value_metadata:e.field_3.field_8?.map(e=>({key:gs(e.field_1),value:gs(e.field_2)})),data_page_offset:e.field_3.field_9,index_page_offset:e.field_3.field_10,dictionary_page_offset:e.field_3.field_11,statistics:Ss(e.field_3.field_12,l[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:No[e.field_1],encoding:ko[e.field_2],count:e.field_3})),bloom_filter_offset:e.field_3.field_14,bloom_filter_length:e.field_3.field_15,size_statistics:e.field_3.field_16&&{unencoded_byte_array_data_bytes:e.field_3.field_16.field_1,repetition_level_histogram:e.field_3.field_16.field_2,definition_level_histogram:e.field_3.field_16.field_3},geospatial_statistics:e.field_3.field_17&&{bbox:e.field_3.field_17.field_1&&{xmin:e.field_3.field_17.field_1.field_1,xmax:e.field_3.field_17.field_1.field_2,ymin:e.field_3.field_17.field_1.field_3,ymax:e.field_3.field_17.field_1.field_4,zmin:e.field_3.field_17.field_1.field_5,zmax:e.field_3.field_17.field_1.field_6,mmin:e.field_3.field_17.field_1.field_7,mmax:e.field_3.field_17.field_1.field_8},geospatial_types:e.field_3.field_17.field_2}},offset_index_offset:e.field_4,offset_index_length:e.field_5,column_index_offset:e.field_6,column_index_length:e.field_7,crypto_metadata:e.field_8,encrypted_column_metadata:e.field_9})),total_byte_size:e.field_2,num_rows:e.field_3,sorting_columns:e.field_4?.map(e=>({column_idx:e.field_1,descending:e.field_2,nulls_first:e.field_3})),file_offset:e.field_5,total_compressed_size:e.field_6,ordinal:e.field_7})),f=o.field_5?.map(e=>({key:gs(e.field_1),value:gs(e.field_2)})),p=gs(o.field_6);return n&&ms(c,f),{version:s,schema:c,num_rows:u,row_groups:d,key_value_metadata:f,created_by:p,metadata_length:a}}function ys({schema:e}){return Zo(e,[])[0]}function bs(e){return e?.field_1?{type:`STRING`}:e?.field_2?{type:`MAP`}:e?.field_3?{type:`LIST`}:e?.field_4?{type:`ENUM`}:e?.field_5?{type:`DECIMAL`,scale:e.field_5.field_1,precision:e.field_5.field_2}:e?.field_6?{type:`DATE`}:e?.field_7?{type:`TIME`,isAdjustedToUTC:e.field_7.field_1,unit:xs(e.field_7.field_2)}:e?.field_8?{type:`TIMESTAMP`,isAdjustedToUTC:e.field_8.field_1,unit:xs(e.field_8.field_2)}:e?.field_10?{type:`INTEGER`,bitWidth:e.field_10.field_1,isSigned:e.field_10.field_2}:e?.field_11?{type:`NULL`}:e?.field_12?{type:`JSON`}:e?.field_13?{type:`BSON`}:e?.field_14?{type:`UUID`}:e?.field_15?{type:`FLOAT16`}:e?.field_16?{type:`VARIANT`,specification_version:e.field_16.field_1}:e?.field_17?{type:`GEOMETRY`,crs:gs(e.field_17.field_1)}:e?.field_18?{type:`GEOGRAPHY`,crs:gs(e.field_18.field_1),algorithm:Po[e.field_18.field_2]}:e}function xs(e){if(e.field_1)return`MILLIS`;if(e.field_2)return`MICROS`;if(e.field_3)return`NANOS`;throw Error(`parquet time unit required`)}function Ss(e,t,n){return e&&{max:Cs(e.field_1,t,n),min:Cs(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:Cs(e.field_5,t,n),min_value:Cs(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function Cs(e,t,n){let{type:r,converted_type:i,logical_type:a}=t;if(e===void 0)return e;if(r===`BOOLEAN`)return e[0]===1;if(r===`BYTE_ARRAY`)return n.stringFromBytes(e);let o=new DataView(e.buffer,e.byteOffset,e.byteLength);return r===`FLOAT`&&o.byteLength===4?o.getFloat32(0,!0):r===`DOUBLE`&&o.byteLength===8?o.getFloat64(0,!0):r===`INT32`&&i===`DATE`?n.dateFromDays(o.getInt32(0,!0)):r===`INT64`&&i===`TIMESTAMP_MILLIS`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT64`&&i===`TIMESTAMP_MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`NANOS`?n.timestampFromNanoseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT32`&&o.byteLength===4?o.getInt32(0,!0):r===`INT64`&&o.byteLength===8?o.getBigInt64(0,!0):i===`DECIMAL`?Wo(e)*10**-(t.scale||0):a?.type===`FLOAT16`?Ko(e):e}var ws,Ts,Es=n((()=>{Fo(),Yo(),is(),ps(),hs(),ws=1<<19,Ts=new TextDecoder}));function Ds(e,t){let n=1e4;for(let r=0;r<t.length;r+=n)e.push(...t.slice(r,r+n))}function Os(e,t,n=!0){if(n?e===t:e==t)return!0;if(e instanceof Uint8Array&&t instanceof Uint8Array)return Os(Array.from(e),Array.from(t),n);if(!e||!t||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Os(e[r],t[r],n))return!1;return!0}if(typeof e!=`object`)return!1;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let i of r)if(!Os(e[i],t[i],n))return!1;return!0}function ks(e){if(!e)return[];if(e.length===1)return e[0];let t=[];for(let n of e)Ds(t,n);return t}var As=n((()=>{}));function js({rowGroup:e,physicalColumns:t,filter:n,strict:r=!0}){if(!n)return!1;if(`$and`in n&&Array.isArray(n.$and))return n.$and.some(n=>js({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$or`in n&&Array.isArray(n.$or))return n.$or.every(n=>js({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$nor`in n&&Array.isArray(n.$nor))return!1;for(let[i,a]of Object.entries(n)){let n=t.indexOf(i);if(n===-1)continue;let o=e.columns[n].meta_data?.statistics;if(!o)continue;let{min:s,max:c,min_value:l,max_value:u}=o,d=l===void 0?s:l,f=u===void 0?c:u;if(!(d===void 0||f===void 0)){for(let[e,t]of Object.entries(a||{}))if(e===`$gt`&&f<=t||e===`$gte`&&f<t||e===`$lt`&&d>=t||e===`$lte`&&d>t||e===`$eq`&&(t<d||t>f)||e===`$ne`&&Os(d,f,r)&&Os(d,t,r)||e===`$in`&&Array.isArray(t)&&t.every(e=>e<d||e>f)||e===`$nin`&&Array.isArray(t)&&Os(d,f,r)&&t.includes(d))return!0}}return!1}var Ms=n((()=>{As()}));function Ns({metadata:e,rowStart:t=0,rowEnd:n=1/0,columns:r,filter:i,filterStrict:a=!0,useOffsetIndex:o=!1}){if(!e)throw Error(`parquetPlan requires metadata`);let s=[],c=[],l=[],u=Qo(ys(e)),d=0;for(let f of e.row_groups){let e=Number(f.num_rows),p=d+e;if(e>0&&p>t&&d<n&&!js({rowGroup:f,physicalColumns:u,filter:i,strict:a})){let i=[],a=1/0,u=-1/0;for(let e of f.columns){let t=e.meta_data;if(e.file_path)throw Error(`parquet file_path not supported`);if(!t)throw Error(`parquet column metadata is undefined`);if(!r||r.includes(t.path_in_schema[0])){let n=t.dictionary_page_offset||t.data_page_offset,r=Number(n),s=Number(n+t.total_compressed_size);if(r<a&&(a=r),s>u&&(u=s),o&&e.offset_index_offset&&e.offset_index_length){let n=Number(e.offset_index_offset);i.push({columnMetadata:t,offsetIndex:{startByte:n,endByte:n+e.offset_index_length},bounds:{startByte:r,endByte:s}})}else i.push({columnMetadata:t,range:{startByte:r,endByte:s}})}}let p=Math.max(t-d,0),m=Math.min(n-d,e);s.push({chunks:i,rowGroup:f,groupStart:d,groupRows:e,selectStart:p,selectEnd:m});let h;for(let e of i)if(`offsetIndex`in e)l.push(e.offsetIndex);else{let{range:t}=e;r?c.push(t):h&&t.endByte-h.startByte<=Fs?h.endByte=t.endByte:(h&&c.push(h),h={...t})}h&&c.push(h)}d=p}return isFinite(n)||(n=d),c.push(...l),{metadata:e,rowStart:t,rowEnd:n,columns:r,fetches:c,groups:s}}function Ps(e,{fetches:t}){let n=t.map(({startByte:t,endByte:n})=>e.slice(t,n));return{byteLength:e.byteLength,slice(r,i=e.byteLength){let a=t.findIndex(({startByte:e,endByte:t})=>e<=r&&i<=t);if(a<0)return e.slice(r,i);if(t[a].startByte!==r||t[a].endByte!==i){let e=r-t[a].startByte,o=i-t[a].startByte;return n[a]instanceof Promise?n[a].then(t=>t.slice(e,o)):n[a].slice(e,o)}else return n[a]}}}var Fs,Is=n((()=>{Ms(),Es(),is(),Fs=1<<21}));function Ls(e,t=Jo){if(Array.isArray(e))return e.map(e=>Ls(e,t));if(typeof e!=`object`)return e;if(`metadata`in e){let n=Bs(e.metadata),r=e.typed_value&&Rs(e.typed_value,n,t),i=e.value&&Hs(zs(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Rs(e,t,n){if(e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if(`typed_value`in e)return Rs(e.typed_value,t,n);if(`value`in e&&e.value instanceof Uint8Array)return Hs(zs(e.value),t,n);let r={};for(let[i,a]of Object.entries(e))r[i]=Rs(a,t,n);return r}return e instanceof Uint8Array?Hs(zs(e),t,n):Array.isArray(e)?e.map(e=>Rs(e,t,n)):e}function zs(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function Bs(e){let t=Ys.get(e.buffer);t||(t=new Map,Ys.set(e.buffer,t));let n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;let i=zs(e),a=i.view.getUint8(i.offset++),o=a&15;if(o!==1)throw Error(`parquet unsupported variant metadata version: ${o}`);let s=(a>>4&1)==1,c=(a>>6&3)+1,l=Vs(i,c),u=Array(l+1);for(let e=0;e<u.length;e++)u[e]=Vs(i,c);let d=i.offset,f=Array(l);for(let t=0;t<l;t++){let n=u[t],r=u[t+1],i=new Uint8Array(e.buffer,e.byteOffset+d+n,r-n);f[t]=Js.decode(i)}let p={dictionary:f,sorted:s};return t.set(n,p),p}function Vs(e,t){let n=0;for(let r=0;r<t;r++)n|=e.view.getUint8(e.offset+r)<<r*8;return e.offset+=t,n}function Hs(e,t,n){let r=e.view.getUint8(e.offset++),i=r&3,a=r>>2;if(i===0)return Us(e,a,n);if(i===2)return Ws(e,a,t,n);if(i===3)return Gs(e,a,t,n);let o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,a);return e.offset+=a,Js.decode(o)}function Us(e,t,n){switch(t){case 0:return null;case 1:return!0;case 2:return!1;case 3:{let t=e.view.getInt8(e.offset);return e.offset+=1,t}case 4:{let t=e.view.getInt16(e.offset,!0);return e.offset+=2,t}case 5:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,t}case 6:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 7:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case 8:return Ks(e,4);case 9:return Ks(e,8);case 10:return Ks(e,16);case 11:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,n.dateFromDays(t)}case 12:case 13:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromMicroseconds(t)}case 14:{let t=e.view.getFloat32(e.offset,!0);return e.offset+=4,t}case 15:return qs(e);case 16:{let t=qs(e);return Js.decode(t)}case 17:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 18:case 19:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromNanoseconds(t)}case 20:{let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,16);e.offset+=16;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}default:throw Error(`parquet unsupported variant primitive type: ${t}`)}}function Ws(e,t,n,r){let i=(t&3)+1,a=(t>>2&3)+1,o=t>>4&1?Vs(e,4):e.view.getUint8(e.offset++),s=Array(o);for(let t=0;t<o;t++)s[t]=Vs(e,a);let c=Array(o+1);for(let t=0;t<c.length;t++)c[t]=Vs(e,i);let l={};for(let t=0;t<o;t++){let i=n.dictionary[s[t]];l[i]=Hs({view:e.view,offset:e.offset+c[t]},n,r)}return e.offset+=c[c.length-1],l}function Gs(e,t,n,r){let i=t&3,a=t>>2&1,o=i+1,s=Vs(e,a?4:1),c=Array(s+1);for(let t=0;t<c.length;t++)c[t]=Vs(e,o);let l=e.offset,u=Array(s);for(let t=0;t<s;t++)u[t]=Hs({view:e.view,offset:l+c[t]},n,r);return e.offset=l+c[c.length-1],u}function Ks(e,t){let n=e.view.getUint8(e.offset);e.offset+=1;let r;if(t===4)r=BigInt(e.view.getInt32(e.offset,!0)),e.offset+=4;else if(t===8)r=e.view.getBigInt64(e.offset,!0),e.offset+=8;else{let t=e.view.getBigUint64(e.offset,!0);r=e.view.getBigInt64(e.offset+8,!0)<<64n|t,e.offset+=16}return Number(r)*10**-n}function qs(e){let t=e.view.getUint32(e.offset,!0);e.offset+=4;let n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}var Js,Ys,Xs=n((()=>{Yo(),Js=new TextDecoder,Ys=new WeakMap}));function Zs(e,t,n,r,i){let a=es(i);if(!t?.length&&!n.length){if(!a||!r.length)return r;t=Array(r.length).fill(a)}let o=t?.length||n.length,s=i.map(({element:e})=>e.repetition_type),c=0,l=[e],u=e,d=0,f=0,p=0;if(n[0])for(;d<s.length-2&&p<n[0];)d++,s[d]!==`REQUIRED`&&(u=u.at(-1),l.push(u),f++),s[d]===`REPEATED`&&p++;for(let e=0;e<o;e++){let i=t?.length?t[e]:a,o=n[e];for(;d&&(o<p||s[d]!==`REPEATED`);)s[d]!==`REQUIRED`&&(l.pop(),f--),s[d]===`REPEATED`&&p--,d--;for(u=l.at(-1);(d<s.length-2||s[d+1]===`REPEATED`)&&(f<i||s[d+1]===`REQUIRED`);){if(d++,s[d]!==`REQUIRED`){let e=[];u.push(e),u=e,l.push(e),f++}s[d]===`REPEATED`&&p++}i===a?u.push(r[c++]):d===s.length-2?u.push(null):u.push([])}if(!e.length)for(let e=0;e<a;e++){let e=[];u.push(e),u=e}return e}function Qs(e,t,n,r=0){let i=t.path.join(`.`),a=t.element.repetition_type===`OPTIONAL`,o=a?r+1:r;if(ts(t)){let s=t.children[0],c=o;s.children.length===1&&(s=s.children[0],c++),Qs(e,s,n,c);let l=s.path.join(`.`),u=e.get(l);if(!u)throw Error(`parquet list column missing values`);a&&$s(u,r),e.set(i,u),e.delete(l);return}if(ns(t)){let s=t.children[0].element.name;Qs(e,t.children[0].children[0],n,o+1),Qs(e,t.children[0].children[1],n,o+1);let c=e.get(`${i}.${s}.key`),l=e.get(`${i}.${s}.value`);if(!c)throw Error(`parquet map column missing keys`);if(!l)throw Error(`parquet map column missing values`);if(c.length!==l.length)throw Error(`parquet map column key/value length mismatch`);let u=ec(c,l,o);a&&$s(u,r),e.delete(`${i}.${s}.key`),e.delete(`${i}.${s}.value`),e.set(i,u);return}if(t.children.length){let o=t.element.repetition_type===`REQUIRED`?r:r+1,s={};for(let r of t.children){Qs(e,r,n,o);let t=e.get(r.path.join(`.`));if(!t)throw Error(`parquet struct missing child data`);s[r.element.name]=t}for(let n of t.children)e.delete(n.path.join(`.`));let c=tc(s,o);t.element.logical_type?.type===`VARIANT`&&(c=Ls(c,n)),a&&$s(c,r),e.set(i,c)}}function $s(e,t){for(let n=0;n<e.length;n++)t?$s(e[n],t-1):e[n]=e[n][0]}function ec(e,t,n){let r=[];for(let i=0;i<e.length;i++)if(n)r.push(ec(e[i],t[i],n-1));else if(e[i]){let n={};for(let r=0;r<e[i].length;r++){let a=t[i][r];n[e[i][r]]=a===void 0?null:a}r.push(n)}else r.push(void 0);return r}function tc(e,t){let n=Object.keys(e),r=e[n[0]]?.length,i=[];for(let a=0;a<r;a++){let o={};for(let t of n){if(e[t].length!==r)throw Error(`parquet struct parsing error`);o[t]=e[t][a]}t?i.push(tc(o,t-1)):i.push(o)}return i}var nc=n((()=>{is(),Xs()}));function rc(e,t,n){let r=n instanceof Int32Array,i=ss(e),a=ss(e);ss(e);let o=us(e),s=0;n[s++]=r?Number(o):o;let c=i/a;for(;s<t;){let i=us(e),l=new Uint8Array(a);for(let t=0;t<a;t++)l[t]=e.view.getUint8(e.offset++);for(let u=0;u<a&&s<t;u++){let a=BigInt(l[u]);if(a){let l=0n,u=c,d=(1n<<a)-1n;for(;u&&s<t;){let t=BigInt(e.view.getUint8(e.offset))>>l&d;for(l+=a;l>=8;)l-=8n,e.offset++,l&&(t|=BigInt(e.view.getUint8(e.offset))<<a-l&d);let c=i+t;o+=c,n[s++]=r?Number(o):o,u--}u&&(e.offset+=Math.ceil((u*Number(a)+Number(l))/8))}else for(let e=0;e<c&&s<t;e++)o+=i,n[s++]=r?Number(o):o}}}function ic(e,t,n){let r=new Int32Array(t);rc(e,t,r);for(let i=0;i<t;i++)n[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,r[i]),e.offset+=r[i]}function ac(e,t,n){let r=new Int32Array(t);rc(e,t,r);let i=new Int32Array(t);rc(e,t,i);for(let a=0;a<t;a++){let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,i[a]);r[a]?(n[a]=new Uint8Array(r[a]+i[a]),n[a].set(n[a-1].subarray(0,r[a])),n[a].set(t,r[a])):n[a]=t,e.offset+=i[a]}}var oc=n((()=>{ps()}));function sc(e){return 32-Math.clz32(e)}function cc(e,t,n,r){r===void 0&&(r=e.view.getUint32(e.offset,!0),e.offset+=4);let i=e.offset,a=0;for(;a<n.length;){let r=ss(e);if(r&1)a=uc(e,r,t,n,a);else{let i=r>>>1;lc(e,i,t,n,a),a+=i}}e.offset=i+r}function lc(e,t,n,r,i){let a=n+7>>3,o=0;for(let t=0;t<a;t++)o|=e.view.getUint8(e.offset++)<<(t<<3);for(let e=0;e<t;e++)r[i+e]=o}function uc(e,t,n,r,i){let a=t>>1<<3,o=(1<<n)-1,s=0;if(e.offset<e.view.byteLength)s=e.view.getUint8(e.offset++);else if(o)throw Error(`parquet bitpack offset ${e.offset} out of range`);let c=8,l=0;for(;a;)l>8?(l-=8,c-=8,s>>>=8):c-l<n?(s|=e.view.getUint8(e.offset)<<c,e.offset++,c+=8):(i<r.length&&(r[i++]=s>>l&o),a--,l+=n);return i}function dc(e,t,n,r){let i=fc(n,r),a=new Uint8Array(t*i);for(let n=0;n<i;n++)for(let r=0;r<t;r++)a[r*i+n]=e.view.getUint8(e.offset++);if(n===`FLOAT`)return new Float32Array(a.buffer);if(n===`DOUBLE`)return new Float64Array(a.buffer);if(n===`INT32`)return new Int32Array(a.buffer);if(n===`INT64`)return new BigInt64Array(a.buffer);if(n===`FIXED_LEN_BYTE_ARRAY`){let e=Array(t);for(let n=0;n<t;n++)e[n]=a.subarray(n*i,(n+1)*i);return e}throw Error(`parquet byte_stream_split unsupported type: ${n}`)}function fc(e,t){switch(e){case`INT32`:case`FLOAT`:return 4;case`INT64`:case`DOUBLE`:return 8;case`FIXED_LEN_BYTE_ARRAY`:if(!t)throw Error(`parquet byteWidth missing type_length`);return t;default:throw Error(`parquet unsupported type: ${e}`)}}var pc=n((()=>{ps()}));function mc(e,t,n,r){if(n===0)return[];if(t===`BOOLEAN`)return hc(e,n);if(t===`INT32`)return gc(e,n);if(t===`INT64`)return _c(e,n);if(t===`INT96`)return vc(e,n);if(t===`FLOAT`)return yc(e,n);if(t===`DOUBLE`)return bc(e,n);if(t===`BYTE_ARRAY`)return xc(e,n);if(t===`FIXED_LEN_BYTE_ARRAY`){if(!r)throw Error(`parquet missing fixed length`);return Sc(e,n,r)}else throw Error(`parquet unhandled type: ${t}`)}function hc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.offset+(r/8|0),i=r%8;n[r]=(e.view.getUint8(t)&1<<i)!=0}return e.offset+=Math.ceil(t/8),n}function gc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Int32Array(Cc(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Int32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function _c(e,t){let n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(Cc(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new BigInt64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function vc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getBigInt64(e.offset+r*12,!0),i=e.view.getInt32(e.offset+r*12+8,!0);n[r]=BigInt(i)<<64n|t}return e.offset+=t*12,n}function yc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Float32Array(Cc(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Float32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function bc(e,t){let n=(e.view.byteOffset+e.offset)%8?new Float64Array(Cc(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new Float64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function xc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getUint32(e.offset,!0);e.offset+=4,n[r]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t),e.offset+=t}return n}function Sc(e,t,n){let r=Array(t);for(let i=0;i<t;i++)r[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,n),e.offset+=n;return r}function Cc(e,t,n){let r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}var wc=n((()=>{}));function Tc(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[t+a]}function Ec(e,t){let n=e.byteLength,r=t.byteLength,i=0,a=0;for(;i<n;){let t=e[i];if(i++,t<128)break}if(r&&i>=n)throw Error(`invalid snappy length header`);for(;i<n;){let r=e[i],o=0;if(i++,i>=n)throw Error(`missing eof marker`);if(r&3){let s=0;switch(r&3){case 1:o=(r>>>2&7)+4,s=e[i]+(r>>>5<<8),i++;break;case 2:if(n<=i+1)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8),i+=2;break;case 3:if(n<=i+3)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),i+=4;break;default:break}if(s===0||isNaN(s))throw Error(`invalid offset ${s} pos ${i} inputLength ${n}`);if(s>a)throw Error(`cannot copy from before start of buffer`);Tc(t,a-s,t,a,o),a+=o}else{let o=(r>>>2)+1;if(o>60){if(i+3>=n)throw Error(`snappy error literal pos + 3 >= inputLength`);let t=o-60;o=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),o=(o&Dc[t])+1,i+=t}if(i+o>n)throw Error(`snappy error literal exceeds input length`);Tc(e,i,t,a,o),i+=o,a+=o}}if(a!==r)throw Error(`premature end of input`)}var Dc,Oc=n((()=>{Dc=[0,255,65535,16777215,4294967295]}));function kc(e,t,{type:n,element:r,schemaPath:i}){let a=new DataView(e.buffer,e.byteOffset,e.byteLength),o={view:a,offset:0},s,c=Ac(o,t,i),{definitionLevels:l,numNulls:u}=jc(o,t,i),d=t.num_values-u;if(t.encoding===`PLAIN`)s=mc(o,n,d,r.type_length);else if(t.encoding===`PLAIN_DICTIONARY`||t.encoding===`RLE_DICTIONARY`||t.encoding===`RLE`){let e=n===`BOOLEAN`?1:a.getUint8(o.offset++);e?(s=Array(d),n===`BOOLEAN`?(cc(o,e,s),s=s.map(e=>!!e)):cc(o,e,s,a.byteLength-o.offset)):s=new Uint8Array(d)}else if(t.encoding===`BYTE_STREAM_SPLIT`)s=dc(o,d,n,r.type_length);else if(t.encoding===`DELTA_BINARY_PACKED`)s=n===`INT32`?new Int32Array(d):new BigInt64Array(d),rc(o,d,s);else if(t.encoding===`DELTA_LENGTH_BYTE_ARRAY`)s=Array(d),ic(o,d,s);else throw Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:l,repetitionLevels:c,dataPage:s}}function Ac(e,t,n){if(n.length>1){let r=$o(n);if(r){let n=Array(t.num_values);return cc(e,sc(r),n),n}}return[]}function jc(e,t,n){let r=es(n);if(!r)return{definitionLevels:[],numNulls:0};let i=Array(t.num_values);cc(e,sc(r),i);let a=t.num_values;for(let e of i)e===r&&a--;return a===0&&(i.length=0),{definitionLevels:i,numNulls:a}}function Mc(e,t,n,r){let i,a=r?.[n];if(n===`UNCOMPRESSED`)i=e;else if(a)i=a(e,t);else if(n===`SNAPPY`)i=new Uint8Array(t),Ec(e,i);else throw Error(`parquet unsupported compression codec: ${n}`);if(i?.length!==t)throw Error(`parquet decompressed page length ${i?.length} does not match header ${t}`);return i}function Nc(e,t,n){let r={view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0},{type:i,element:a,schemaPath:o,codec:s,compressors:c}=n,l=t.data_page_header_v2;if(!l)throw Error(`parquet data page header v2 is undefined`);let u=Pc(r,l,o);r.offset=l.repetition_levels_byte_length;let d=Fc(r,l,o),f=t.uncompressed_page_size-l.definition_levels_byte_length-l.repetition_levels_byte_length,p=e.subarray(r.offset);l.is_compressed!==!1&&(p=Mc(p,f,s,c));let m=new DataView(p.buffer,p.byteOffset,p.byteLength),h={view:m,offset:0},g,_=l.num_values-l.num_nulls;if(l.encoding===`PLAIN`)g=mc(h,i,_,a.type_length);else if(l.encoding===`RLE`)g=Array(_),cc(h,1,g),g=g.map(e=>!!e);else if(l.encoding===`PLAIN_DICTIONARY`||l.encoding===`RLE_DICTIONARY`){let e=m.getUint8(h.offset++);g=Array(_),cc(h,e,g,f-1)}else if(l.encoding===`DELTA_BINARY_PACKED`)g=i===`INT32`?new Int32Array(_):new BigInt64Array(_),rc(h,_,g);else if(l.encoding===`DELTA_LENGTH_BYTE_ARRAY`)g=Array(_),ic(h,_,g);else if(l.encoding===`DELTA_BYTE_ARRAY`)g=Array(_),ac(h,_,g);else if(l.encoding===`BYTE_STREAM_SPLIT`)g=dc(h,_,i,a.type_length);else throw Error(`parquet unsupported encoding: ${l.encoding}`);return{definitionLevels:d,repetitionLevels:u,dataPage:g}}function Pc(e,t,n){let r=$o(n);if(!r)return[];let i=Array(t.num_values);return cc(e,sc(r),i,t.repetition_levels_byte_length),i}function Fc(e,t,n){let r=es(n);if(r){let n=Array(t.num_values);return cc(e,sc(r),n,t.definition_levels_byte_length),n}}var Ic=n((()=>{oc(),pc(),wc(),is(),Oc()}));function Lc(e,{groupStart:t,selectStart:n,selectEnd:r},i,a){let{pathInSchema:o,schemaPath:s}=i,c=rs(s),l=[],u,d,f=0,p=0,m=a&&(()=>{d&&a({pathInSchema:o,columnData:d,rowStart:t+f-d.length,rowEnd:t+f})});for(;(c?f<r:e.offset<e.view.byteLength-1)&&!(e.offset>=e.view.byteLength-1);){let t=zc(e);if(t.type===`DICTIONARY_PAGE`){let{data:n}=Rc(e,t,i,u,void 0,0);n&&(u=Uo(n,i))}else{let r=d?.length||0,a=Rc(e,t,i,u,d,n-f);a.skipped?(l.length||(p+=a.skipped),f+=a.skipped):a.data&&d===a.data?f+=a.data.length-r:a.data&&a.data.length&&(m?.(),l.push(a.data),f+=a.data.length,d=a.data)}}return m?.(),{data:l,skipped:p}}function Rc(e,t,n,r,i,a){let{type:o,element:s,schemaPath:c,codec:l,compressors:u}=n,d=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t.compressed_page_size);if(e.offset+=t.compressed_page_size,t.type===`DATA_PAGE`){let e=t.data_page_header;if(!e)throw Error(`parquet data page header is undefined`);if(a>e.num_values&&rs(c))return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:f}=kc(Mc(d,Number(t.uncompressed_page_size),l,u),e,n),p=Ho(f,r,e.encoding,n);return{skipped:0,data:Zs(Array.isArray(i)?i:[],o,s,p,c)}}else if(t.type===`DATA_PAGE_V2`){let e=t.data_page_header_v2;if(!e)throw Error(`parquet data page header v2 is undefined`);if(a>e.num_rows)return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:l}=Nc(d,t,n),u=Ho(l,r,e.encoding,n);return{skipped:0,data:Zs(Array.isArray(i)?i:[],o,s,u,c)}}else if(t.type===`DICTIONARY_PAGE`){let e=t.dictionary_page_header;if(!e)throw Error(`parquet dictionary page header is undefined`);let n=Mc(d,Number(t.uncompressed_page_size),l,u);return{skipped:0,data:mc({view:new DataView(n.buffer,n.byteOffset,n.byteLength),offset:0},o,e.num_values,s.type_length)}}else throw Error(`parquet unsupported page type: ${t.type}`)}function zc(e){let t=as(e);return{type:No[t.field_1],uncompressed_page_size:t.field_2,compressed_page_size:t.field_3,crc:t.field_4,data_page_header:t.field_5&&{num_values:t.field_5.field_1,encoding:ko[t.field_5.field_2],definition_level_encoding:ko[t.field_5.field_3],repetition_level_encoding:ko[t.field_5.field_4],statistics:t.field_5.field_5&&{max:t.field_5.field_5.field_1,min:t.field_5.field_5.field_2,null_count:t.field_5.field_5.field_3,distinct_count:t.field_5.field_5.field_4,max_value:t.field_5.field_5.field_5,min_value:t.field_5.field_5.field_6}},index_page_header:t.field_6,dictionary_page_header:t.field_7&&{num_values:t.field_7.field_1,encoding:ko[t.field_7.field_2],is_sorted:t.field_7.field_3},data_page_header_v2:t.field_8&&{num_values:t.field_8.field_1,num_nulls:t.field_8.field_2,num_rows:t.field_8.field_3,encoding:ko[t.field_8.field_4],definition_levels_byte_length:t.field_8.field_5,repetition_levels_byte_length:t.field_8.field_6,is_compressed:t.field_8.field_7===void 0?!0:t.field_8.field_7,statistics:t.field_8.field_8}}}var Bc=n((()=>{nc(),Fo(),Yo(),Ic(),wc(),is(),ps()}));function Vc(e){let t=as(e);return{page_locations:t.field_1.map(Hc),unencoded_byte_array_data_bytes:t.field_2}}function Hc(e){return{offset:e.field_1,compressed_page_size:e.field_2,first_row_index:e.field_3}}var Uc=n((()=>{ps()}));function Wc(e,{metadata:t},n){let{file:r,compressors:i,utf8:a}=e,o=[],s={...Jo,...e.parsers};for(let c of n.chunks){let{columnMetadata:l}=c,u=Zo(t.schema,l.path_in_schema),d={pathInSchema:l.path_in_schema,type:l.type,element:u[u.length-1].element,schemaPath:u,codec:l.codec,parsers:s,compressors:i,utf8:a};if(!(`offsetIndex`in c)){o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.range.startByte,c.range.endByte)).then(t=>Lc({view:new DataView(t),offset:0},n,d,e.onPage))});continue}o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.offsetIndex.startByte,c.offsetIndex.endByte)).then(async t=>{let i=Vc({view:new DataView(t),offset:0}),{selectStart:a,selectEnd:o}=n,s=i.page_locations,c=NaN,l=NaN,u=0;for(let e=0;e<s.length;e++){let t=s[e],r=Number(t.first_row_index),i=e+1<s.length?Number(s[e+1].first_row_index):n.groupRows;r<o&&i>a&&(Number.isNaN(c)&&(c=Number(t.offset),u=r),l=Number(t.offset)+t.compressed_page_size)}let f=await r.slice(c,l),{data:p,skipped:m}=Lc({view:new DataView(f),offset:0},u?{...n,groupStart:n.groupStart+u,selectStart:n.selectStart-u,selectEnd:n.selectEnd-u}:n,d,e.onPage);return{data:p,skipped:u+m}})})}return{groupStart:n.groupStart,groupRows:n.groupRows,asyncColumns:o}}function Gc(e,t,n){let{asyncColumns:r}=e;n={...Jo,...n};let i=[];for(let e of t.children)if(e.children.length){let t=r.filter(t=>t.pathInSchema[0]===e.element.name);if(!t.length)continue;let a=new Map,o=Promise.all(t.map(e=>e.data.then(({data:t})=>{a.set(e.pathInSchema.join(`.`),ks(t))}))).then(()=>{Qs(a,e,n);let t=a.get(e.path.join(`.`));if(!t)throw Error(`parquet column data not assembled`);return{data:[t],skipped:0}});i.push({pathInSchema:e.path,data:o})}else{let t=r.find(t=>t.pathInSchema[0]===e.element.name);t&&i.push(t)}return{...e,asyncColumns:i}}var Kc=n((()=>{nc(),Bc(),Yo(),Uc(),is(),As()})),qc=r({parquetRead:()=>$c,parquetReadObjects:()=>el});function Jc(e){if(!e.metadata)throw Error(`parquet requires metadata`);let t=Ns(e);return e.file=Ps(e.file,t),t.groups.map(n=>Wc(e,t,n))}function Yc(e){if(!e)return[];if(e.length===1)return e[0];let t=0;for(let n of e)t+=n.length;let n=Array(t),r=0;for(let t of e){for(let e=0;e<t.length;e++)n[r+e]=t[e];r+=t.length}return n}function Xc(e){let t=e.join(``),n=tl.get(t);if(n)return n;let r=e.map((e,t)=>JSON.stringify(e)+`: columnData[`+t+`][row - columnSkipped[`+t+`]]`).join(`,
|
|
6
|
+
`)}function l(t){return t.map(u).join(e)}function u(e){return e==null?``:e instanceof Date?Ut(e):t.test(e+=``)?`"`+e.replace(/"/g,`""`)+`"`:e}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:c,formatRow:l,formatValue:u}}var Gt=Wt(` `);Gt.parse;var Kt=Gt.parseRows;Gt.format,Gt.formatBody,Gt.formatRows,Gt.formatRow,Gt.formatValue;function qt(e){return e}function Jt(e){if(e==null)return qt;var t,n,r=e.scale[0],i=e.scale[1],a=e.translate[0],o=e.translate[1];return function(e,s){s||(t=n=0);var c=2,l=e.length,u=Array(l);for(u[0]=(t+=e[0])*r+a,u[1]=(n+=e[1])*i+o;c<l;)u[c]=e[c],++c;return u}}function Yt(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function Xt(e,t){return typeof t==`string`&&(t=e.objects[t]),t.type===`GeometryCollection`?{type:`FeatureCollection`,features:t.geometries.map(function(t){return Zt(e,t)})}:Zt(e,t)}function Zt(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=Qt(e,t);return n==null&&r==null?{type:`Feature`,properties:i,geometry:a}:r==null?{type:`Feature`,id:n,properties:i,geometry:a}:{type:`Feature`,id:n,bbox:r,properties:i,geometry:a}}function Qt(e,t){var n=Jt(e.transform),r=e.arcs;function i(e,t){t.length&&t.pop();for(var i=r[e<0?~e:e],a=0,o=i.length;a<o;++a)t.push(n(i[a],a));e<0&&Yt(t,o)}function a(e){return n(e)}function o(e){for(var t=[],n=0,r=e.length;n<r;++n)i(e[n],t);return t.length<2&&t.push(t[0]),t}function s(e){for(var t=o(e);t.length<4;)t.push(t[0]);return t}function c(e){return e.map(s)}function l(e){var t=e.type,n;switch(t){case`GeometryCollection`:return{type:t,geometries:e.geometries.map(l)};case`Point`:n=a(e.coordinates);break;case`MultiPoint`:n=e.coordinates.map(a);break;case`LineString`:n=o(e.arcs);break;case`MultiLineString`:n=e.arcs.map(o);break;case`Polygon`:n=c(e.arcs);break;case`MultiPolygon`:n=e.arcs.map(c);break;default:return null}return{type:t,coordinates:n}}return l(t)}function $t(e,t){var n={},r={},i={},a=[],o=-1;t.forEach(function(n,r){var i=e.arcs[n<0?~n:n],a;i.length<3&&!i[1][0]&&!i[1][1]&&(a=t[++o],t[o]=n,t[r]=a)}),t.forEach(function(e){var t=s(e),n=t[0],a=t[1],o,c;if(o=i[n])if(delete i[o.end],o.push(e),o.end=a,c=r[a]){delete r[c.start];var l=c===o?o:o.concat(c);r[l.start=o.start]=i[l.end=c.end]=l}else r[o.start]=i[o.end]=o;else if(o=r[a])if(delete r[o.start],o.unshift(e),o.start=n,c=i[n]){delete i[c.end];var u=c===o?o:c.concat(o);r[u.start=c.start]=i[u.end=o.end]=u}else r[o.start]=i[o.end]=o;else o=[e],r[o.start=n]=i[o.end=a]=o});function s(t){var n=e.arcs[t<0?~t:t],r=n[0],i;return e.transform?(i=[0,0],n.forEach(function(e){i[0]+=e[0],i[1]+=e[1]})):i=n[n.length-1],t<0?[i,r]:[r,i]}function c(e,t){for(var r in e){var i=e[r];delete t[i.start],delete i.start,delete i.end,i.forEach(function(e){n[e<0?~e:e]=1}),a.push(i)}}return c(i,r),c(r,i),t.forEach(function(e){n[e<0?~e:e]||a.push([e])}),a}function en(e){return Qt(e,tn.apply(this,arguments))}function tn(e,t,n){var r,i,a;if(arguments.length>1)r=nn(e,t,n);else for(i=0,r=Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:`MultiLineString`,arcs:$t(e,r)}}function nn(e,t,n){var r=[],i=[],a;function o(e){var t=e<0?~e:e;(i[t]||(i[t]=[])).push({i:e,g:a})}function s(e){e.forEach(o)}function c(e){e.forEach(s)}function l(e){e.forEach(c)}function u(e){switch(a=e,e.type){case`GeometryCollection`:e.geometries.forEach(u);break;case`LineString`:s(e.arcs);break;case`MultiLineString`:case`Polygon`:c(e.arcs);break;case`MultiPolygon`:l(e.arcs);break}}return u(t),i.forEach(n==null?function(e){r.push(e[0].i)}:function(e){n(e[0].g,e[e.length-1].g)&&r.push(e[0].i)}),r}function rn(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function an(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function on(e){let t,n,r;e.length===2?(t=e===rn||e===an?e:sn,n=e,r=e):(t=rn,n=(t,n)=>rn(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<0?i=t+1:a=t}while(i<a)}return i}function a(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<=0?i=t+1:a=t}while(i<a)}return i}function o(e,t,n=0,a=e.length){let o=i(e,t,n,a-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function sn(){return 0}function cn(e){return e===null?NaN:+e}function*ln(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var un=on(rn),dn=un.right;un.left,on(cn).center;function fn(e,t){let n=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&++n;else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(i=+i)>=i&&++n}return n}function pn(e,t){let n=0,r,i=0,a=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(r=t-i,i+=r/++n,a+=r*(t-i));else{let o=-1;for(let s of e)(s=t(s,++o,e))!=null&&(s=+s)>=s&&(r=s-i,i+=r/++n,a+=r*(s-i))}if(n>1)return a/(n-1)}function mn(e,t){let n,r;if(t===void 0)for(let t of e)t!=null&&(n===void 0?t>=t&&(n=r=t):(n>t&&(n=t),r<t&&(r=t)));else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(n===void 0?a>=a&&(n=r=a):(n>a&&(n=a),r<a&&(r=a)))}return[n,r]}var hn=class extends Map{constructor(e,t=yn){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(gn(this,e))}has(e){return super.has(gn(this,e))}set(e,t){return super.set(_n(this,e),t)}delete(e){return super.delete(vn(this,e))}};function gn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function _n({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function vn({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function yn(e){return typeof e==`object`&&e?e.valueOf():e}function bn(e){return e}function xn(e,...t){return Cn(e,bn,bn,t)}function Sn(e,...t){return Cn(e,Array.from,bn,t)}function Cn(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new hn,s=r[a++],c=-1;for(let e of i){let t=s(e,++c,i),n=o.get(t);n?n.push(e):o.set(t,[e])}for(let[t,n]of o)o.set(t,e(n,a));return t(o)})(e,0)}function wn(e=rn){if(e===rn)return Tn;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function Tn(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var En=Math.sqrt(50),Dn=Math.sqrt(10),On=Math.sqrt(2);function kn(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=En?10:a>=Dn?5:a>=On?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/l<e&&++s,c/l>t&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*l<e&&++s,c*l>t&&--c),c<s&&.5<=n&&n<2?kn(e,t,n*2):[s,c,l]}function An(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];let r=t<e,[i,a,o]=r?kn(t,e,n):kn(e,t,n);if(!(a>=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e<s;++e)c[e]=(a-e)/-o;else for(let e=0;e<s;++e)c[e]=(a-e)*o;else if(o<0)for(let e=0;e<s;++e)c[e]=(i+e)/-o;else for(let e=0;e<s;++e)c[e]=(i+e)*o;return c}function jn(e,t,n){return t=+t,e=+e,n=+n,kn(e,t,n)[2]}function Mn(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?jn(t,e,n):jn(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function Nn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n<t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n<i||n===void 0&&i>=i)&&(n=i)}return n}function Pn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Fn(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?Tn:wn(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Fn(e,t,u,d,i)}let a=e[t],o=n,s=r;for(In(e,n,t),i(e[r],a)>0&&In(e,n,r);o<s;){for(In(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?In(e,n,s):(++s,In(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function In(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Ln(e,t,n){if(e=Float64Array.from(ln(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Pn(e);if(t>=1)return Nn(e);var r,i=(r-1)*t,a=Math.floor(i),o=Nn(Fn(e,a).subarray(0,a+1));return o+(Pn(e.subarray(a+1))-o)*(i-a)}}function Rn(e,t,n=cn){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function zn(e,t){let n=0,r=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(++n,r+=t);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(a=+a)>=a&&(++n,r+=a)}if(n)return r/n}function Bn(e,t){return Ln(e,.5,t)}function Vn(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function Hn(e,t){let n=0;if(t===void 0)for(let t of e)(t=+t)&&(n+=t);else{let r=-1;for(let i of e)(i=+t(i,++r,e))&&(n+=i)}return n}function Un(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Wn(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Gn(e){return e=Wn(Math.abs(e)),e?e[1]:NaN}function Kn(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function qn(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var Jn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Yn(e){if(!(t=Jn.exec(e)))throw Error(`invalid format: `+e);var t;return new Xn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Yn.prototype=Xn.prototype;function Xn(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Xn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function Zn(e){out:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case`.`:r=i=n;break;case`0`:r===0&&(r=n),i=n;break;default:if(!+e[n])break out;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var Qn;function $n(e,t){var n=Wn(e,t);if(!n)return Qn=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(Qn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+Wn(e,Math.max(0,t+a-1))[0]}function er(e,t){var n=Wn(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var tr={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Un,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>er(e*100,t),r:er,s:$n,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function nr(e){return e}var rr=Array.prototype.map,ir=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function ar(e){var t=e.grouping===void 0||e.thousands===void 0?nr:Kn(rr.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?nr:qn(rr.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=Yn(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):tr[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=tr[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Zn(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&Qn!==void 0?ir[8+Qn/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++o<l;)if(p=e.charCodeAt(o),48>p||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T<h?Array(h-T+1).join(u):``;switch(g&&m&&(e=t(E+e,E.length?h-r.length:1/0),E=``),d){case`<`:e=n+e+r+E;break;case`=`:e=n+E+e+r;break;case`^`:e=E.slice(0,T=E.length>>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Gn(t)/3)))*3,r=10**-n,i=l((e=Yn(e),e.type=`f`,e),{suffix:ir[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var or,sr,cr;lr({thousands:`,`,grouping:[3],currency:[`$`,``]});function lr(e){return or=ar(e),sr=or.format,cr=or.formatPrefix,or}function ur(e){return Math.max(0,-Gn(Math.abs(e)))}function dr(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(t)/3)))*3-Gn(Math.abs(e)))}function fr(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Gn(t)-Gn(e))+1}var pr=new Date,mr=new Date;function hr(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t<n-e?t:n},i.offset=(e,n)=>(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n<r)||!(a>0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(s<n&&n<r);return o},i.filter=n=>hr(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(pr.setTime(+t),mr.setTime(+r),e(pr),e(mr),Math.floor(n(pr,mr))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var gr=hr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);gr.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?hr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):gr),gr.range;var _r=1e3,vr=_r*60,yr=vr*60,br=yr*24,xr=br*7,Sr=br*30,Cr=br*365,wr=hr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getUTCSeconds());wr.range;var Tr=hr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getMinutes());Tr.range;var Er=hr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getUTCMinutes());Er.range;var Dr=hr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r-e.getMinutes()*vr)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getHours());Dr.range;var Or=hr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getUTCHours());Or.range;var kr=hr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*vr)/br,e=>e.getDate()-1);kr.range;var Ar=hr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/br,e=>e.getUTCDate()-1);Ar.range;var jr=hr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/br,e=>Math.floor(e/br));jr.range;function Mr(e){return hr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*vr)/xr)}var Nr=Mr(0),Pr=Mr(1),Fr=Mr(2),Ir=Mr(3),Lr=Mr(4),Rr=Mr(5),zr=Mr(6);Nr.range,Pr.range,Fr.range,Ir.range,Lr.range,Rr.range,zr.range;function Br(e){return hr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/xr)}var Vr=Br(0),Hr=Br(1),Ur=Br(2),Wr=Br(3),Gr=Br(4),Kr=Br(5),qr=Br(6);Vr.range,Hr.range,Ur.range,Wr.range,Gr.range,Kr.range,qr.range;var Jr=hr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Jr.range;var Yr=hr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Yr.range;var Xr=hr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Xr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:hr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Xr.range;var Zr=hr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Zr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:hr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Zr.range;function Qr(e,t,n,r,i,a){let o=[[wr,1,_r],[wr,5,5*_r],[wr,15,15*_r],[wr,30,30*_r],[a,1,vr],[a,5,5*vr],[a,15,15*vr],[a,30,30*vr],[i,1,yr],[i,3,3*yr],[i,6,6*yr],[i,12,12*yr],[r,1,br],[r,2,2*br],[n,1,xr],[t,1,Sr],[t,3,3*Sr],[e,1,Cr]];function s(e,t,n){let r=t<e;r&&([e,t]=[t,e]);let i=n&&typeof n.range==`function`?n:c(e,t,n),a=i?i.range(e,+t+1):[];return r?a.reverse():a}function c(t,n,r){let i=Math.abs(n-t)/r,a=on(([,,e])=>e).right(o,i);if(a===o.length)return e.every(Mn(t/Cr,n/Cr,r));if(a===0)return gr.every(Math.max(Mn(t,n,r),1));let[s,c]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(c)}return[s,c]}var[$r,ei]=Qr(Zr,Yr,Vr,jr,Or,Er),[ti,ni]=Qr(Xr,Jr,Nr,kr,Dr,Tr),ri=`year`,ii=`quarter`,ai=`month`,oi=`week`,si=`date`,ci=`dayofyear`,li=`hours`,ui=`minutes`,di=`seconds`,fi=`milliseconds`;[ri,ii,ai,oi,si,`day`,ci,li,ui,di,fi].reduce((e,t,n)=>(e[t]=1+n,e),{}),`${ri}${ai}`,`${ri}${ai}${si}`,`${li}${ui}`,oi+``,oi+``;var pi={[ri]:Xr,[ii]:Jr.every(3),[ai]:Jr,[oi]:Nr,[si]:kr,day:kr,[ci]:kr,[li]:Dr,[ui]:Tr,[di]:wr,[fi]:gr},mi={[ri]:Zr,[ii]:Yr.every(3),[ai]:Yr,[oi]:Vr,[si]:Ar,day:Ar,[ci]:Ar,[li]:Or,[ui]:Er,[di]:wr,[fi]:gr};function hi(e){return pi[e]}function gi(e){return mi[e]}var _i=1e3,vi=_i*60,yi=vi*60,bi=yi*24;bi*7;var xi=bi*30;bi*365,[ri,ai,si,li,ui,di,fi].slice(0,-1).slice(0,-1).slice(0,-1).slice(0,-1),5*_i,15*_i,30*_i,5*vi,15*vi,30*vi,3*yi,6*yi,12*yi,3*xi;function Si(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Ci(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function wi(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function Ti(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,a=e.days,o=e.shortDays,s=e.months,c=e.shortMonths,l=ji(i),u=Mi(i),d=ji(a),f=Mi(a),p=ji(o),m=Mi(o),h=ji(s),g=Mi(s),_=ji(c),v=Mi(c),y={a:ae,A:oe,b:se,B:ce,c:null,d:$i,e:$i,f:ia,g:ha,G:_a,H:ea,I:ta,j:na,L:ra,m:aa,M:oa,p:le,q:ue,Q:Ba,s:Va,S:sa,u:ca,U:la,V:da,w:fa,W:pa,x:null,X:null,y:ma,Y:ga,Z:va,"%":za},b={a:de,A:fe,b:pe,B:me,c:null,d:ya,e:ya,f:wa,g:Fa,G:La,H:ba,I:xa,j:Sa,L:Ca,m:Ta,M:Ea,p:he,q:ge,Q:Ba,s:Va,S:Da,u:Oa,U:ka,V:ja,w:Ma,W:Na,x:null,X:null,y:Pa,Y:Ia,Z:Ra,"%":za},x={a:E,A:D,b:ee,B:te,c:ne,d:Ui,e:Ui,f:Yi,g:zi,G:Ri,H:Gi,I:Gi,j:Wi,L:Ji,m:Hi,M:Ki,p:T,q:Vi,Q:Zi,s:Qi,S:qi,u:Pi,U:Fi,V:Ii,w:Ni,W:Li,x:re,X:ie,y:zi,Y:Ri,Z:Bi,"%":Xi};y.x=S(n,y),y.X=S(r,y),y.c=S(t,y),b.x=S(n,b),b.X=S(r,b),b.c=S(t,b);function S(e,t){return function(n){var r=[],i=-1,a=0,o=e.length,s,c,l;for(n instanceof Date||(n=new Date(+n));++i<o;)e.charCodeAt(i)===37&&(r.push(e.slice(a,i)),(c=Ei[s=e.charAt(++i)])==null?c=s===`e`?` `:`0`:s=e.charAt(++i),(l=t[s])&&(s=l(n,c)),r.push(s),a=i+1);return r.push(e.slice(a,i)),r.join(``)}}function C(e,t){return function(n){var r=wi(1900,void 0,1),i=w(r,e,n+=``,0),a,o;if(i!=n.length)return null;if(`Q`in r)return new Date(r.Q);if(`s`in r)return new Date(r.s*1e3+(`L`in r?r.L:0));if(t&&!(`Z`in r)&&(r.Z=0),`p`in r&&(r.H=r.H%12+r.p*12),r.m===void 0&&(r.m=`q`in r?r.q:0),`V`in r){if(r.V<1||r.V>53)return null;`w`in r||(r.w=1),`Z`in r?(a=Ci(wi(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Hr.ceil(a):Hr(a),a=Ar.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Si(wi(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Pr.ceil(a):Pr(a),a=kr.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?Ci(wi(r.y,0,1)).getUTCDay():Si(wi(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,Ci(r)):Si(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i<a;){if(r>=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Ei?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function te(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function ne(e,n,r){return w(e,t,n,r)}function re(e,t,r){return w(e,n,t,r)}function ie(e,t,n){return w(e,r,t,n)}function ae(e){return o[e.getDay()]}function oe(e){return a[e.getDay()]}function se(e){return c[e.getMonth()]}function ce(e){return s[e.getMonth()]}function le(e){return i[+(e.getHours()>=12)]}function ue(e){return 1+~~(e.getMonth()/3)}function de(e){return o[e.getUTCDay()]}function fe(e){return a[e.getUTCDay()]}function pe(e){return c[e.getUTCMonth()]}function me(e){return s[e.getUTCMonth()]}function he(e){return i[+(e.getUTCHours()>=12)]}function ge(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Ei={"-":``,_:` `,0:`0`},Di=/^\s*\d+/,Oi=/^%/,ki=/[\\^$*+?|[\]().{}]/g;function I(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a<n?Array(n-a+1).join(t)+i:i)}function Ai(e){return e.replace(ki,`\\$&`)}function ji(e){return RegExp(`^(?:`+e.map(Ai).join(`|`)+`)`,`i`)}function Mi(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Ni(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Pi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Fi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ii(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Li(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Ri(e,t,n){var r=Di.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function zi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Bi(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Vi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Hi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ui(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Wi(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function qi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Ji(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Yi(e,t,n){var r=Di.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Xi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Zi(e,t,n){var r=Di.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Qi(e,t,n){var r=Di.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function $i(e,t){return I(e.getDate(),t,2)}function ea(e,t){return I(e.getHours(),t,2)}function ta(e,t){return I(e.getHours()%12||12,t,2)}function na(e,t){return I(1+kr.count(Xr(e),e),t,3)}function ra(e,t){return I(e.getMilliseconds(),t,3)}function ia(e,t){return ra(e,t)+`000`}function aa(e,t){return I(e.getMonth()+1,t,2)}function oa(e,t){return I(e.getMinutes(),t,2)}function sa(e,t){return I(e.getSeconds(),t,2)}function ca(e){var t=e.getDay();return t===0?7:t}function la(e,t){return I(Nr.count(Xr(e)-1,e),t,2)}function ua(e){var t=e.getDay();return t>=4||t===0?Lr(e):Lr.ceil(e)}function da(e,t){return e=ua(e),I(Lr.count(Xr(e),e)+(Xr(e).getDay()===4),t,2)}function fa(e){return e.getDay()}function pa(e,t){return I(Pr.count(Xr(e)-1,e),t,2)}function ma(e,t){return I(e.getFullYear()%100,t,2)}function ha(e,t){return e=ua(e),I(e.getFullYear()%100,t,2)}function ga(e,t){return I(e.getFullYear()%1e4,t,4)}function _a(e,t){var n=e.getDay();return e=n>=4||n===0?Lr(e):Lr.ceil(e),I(e.getFullYear()%1e4,t,4)}function va(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+I(t/60|0,`0`,2)+I(t%60,`0`,2)}function ya(e,t){return I(e.getUTCDate(),t,2)}function ba(e,t){return I(e.getUTCHours(),t,2)}function xa(e,t){return I(e.getUTCHours()%12||12,t,2)}function Sa(e,t){return I(1+Ar.count(Zr(e),e),t,3)}function Ca(e,t){return I(e.getUTCMilliseconds(),t,3)}function wa(e,t){return Ca(e,t)+`000`}function Ta(e,t){return I(e.getUTCMonth()+1,t,2)}function Ea(e,t){return I(e.getUTCMinutes(),t,2)}function Da(e,t){return I(e.getUTCSeconds(),t,2)}function Oa(e){var t=e.getUTCDay();return t===0?7:t}function ka(e,t){return I(Vr.count(Zr(e)-1,e),t,2)}function Aa(e){var t=e.getUTCDay();return t>=4||t===0?Gr(e):Gr.ceil(e)}function ja(e,t){return e=Aa(e),I(Gr.count(Zr(e),e)+(Zr(e).getUTCDay()===4),t,2)}function Ma(e){return e.getUTCDay()}function Na(e,t){return I(Hr.count(Zr(e)-1,e),t,2)}function Pa(e,t){return I(e.getUTCFullYear()%100,t,2)}function Fa(e,t){return e=Aa(e),I(e.getUTCFullYear()%100,t,2)}function Ia(e,t){return I(e.getUTCFullYear()%1e4,t,4)}function La(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Gr(e):Gr.ceil(e),I(e.getUTCFullYear()%1e4,t,4)}function Ra(){return`+0000`}function za(){return`%`}function Ba(e){return+e}function Va(e){return Math.floor(e/1e3)}var Ha,Ua,Wa,Ga,Ka;qa({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function qa(e){return Ha=Ti(e),Ua=Ha.format,Wa=Ha.parse,Ga=Ha.utcFormat,Ka=Ha.utcParse,Ha}function Ja(e){let t={};return n=>t[n]||(t[n]=e(n))}function Ya(e,t){return n=>{let r=e(n),i=r.indexOf(t);if(i<0)return r;let a=Xa(r,i),o=a<r.length?r.slice(a):``;for(;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Xa(e,t){let n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}function Za(e){let t=Ja(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(e){let n=Yn(e||`,`);if(n.precision==null){switch(n.precision=12,n.type){case`%`:n.precision-=2;break;case`e`:--n.precision;break}return Ya(t(n),t(`.1f`)(1)[1])}else return t(n)},formatSpan(e,r,i,a){a=Yn(a??`,f`);let o=Mn(e,r,i),s=Math.max(Math.abs(e),Math.abs(r)),c;if(a.precision==null)switch(a.type){case`s`:return isNaN(c=dr(o,s))||(a.precision=c),n(a,s);case``:case`e`:case`g`:case`p`:case`r`:isNaN(c=fr(o,s))||(a.precision=c-(a.type===`e`));break;case`f`:case`%`:isNaN(c=ur(o))||(a.precision=c-(a.type===`%`)*2);break}return t(a)}}}Qa();function Qa(){return Za({format:sr,formatPrefix:cr})}function $a(e,t,n){n||={},Qe(n)||Ke(`Invalid time multi-format specifier: ${n}`);let r=t(di),i=t(ui),a=t(li),o=t(si),s=t(oi),c=t(ai),l=t(ii),u=t(ri),d=e(n.milliseconds||`.%L`),f=e(n.seconds||`:%S`),p=e(n.minutes||`%I:%M`),m=e(n.hours||`%I %p`),h=e(n.date||n.day||`%a %d`),g=e(n.week||`%b %d`),_=e(n.month||`%B`),v=e(n.quarter||`%B`),y=e(n.year||`%Y`);return e=>(r(e)<e?d:i(e)<e?f:a(e)<e?p:o(e)<e?m:c(e)<e?s(e)<e?h:g:u(e)<e?l(e)<e?_:v:y)(e)}function eo(e){let t=Ja(e.format),n=Ja(e.utcFormat);return{timeFormat:e=>P(e)?t(e):$a(t,hi,e),utcFormat:e=>P(e)?n(e):$a(n,gi,e),timeParse:Ja(e.parse),utcParse:Ja(e.utcParse)}}var to;no();function no(){return to=eo({format:Ua,parse:Wa,utcFormat:Ga,utcParse:Ka})}function ro(e){return eo(Ti(e))}function io(e){return arguments.length?to=ro(e):to}var ao=e=>e!=null&&e===e,oo=e=>e===`true`||e===`false`||e===!0||e===!1,so=e=>!Number.isNaN(Date.parse(e)),co=e=>!Number.isNaN(+e)&&!(e instanceof Date),lo=e=>co(e)&&Number.isInteger(+e),uo={boolean:Ot,integer:et,number:et,date:At,string:jt,unknown:Ye},fo=[oo,lo,co,so],po=[`boolean`,`integer`,`number`,`date`];function mo(e,t){if(!e||!e.length)return`unknown`;let n=e.length,r=fo.length,i=fo.map((e,t)=>t+1);for(let a=0,o=0,s,c;a<n;++a)for(c=t?e[a][t]:e[a],s=0;s<r;++s)if(i[s]&&ao(c)&&!fo[s](c)&&(i[s]=0,++o,o===fo.length))return`string`;return po[i.reduce((e,t)=>e===0?t:e,0)-1]}function ho(e,t){return t.reduce((t,n)=>(t[n]=mo(e,n),t),{})}function go(e){let t=function(t,n){let r={delimiter:e};return _o(t,n?bt(n,r):r)};return t.responseType=`text`,t}function _o(e,t){return t.header&&(e=t.header.map(Dt).join(t.delimiter)+`
|
|
7
|
+
`+e),Wt(t.delimiter).parse(e+``)}_o.responseType=`text`;function vo(e){return typeof Buffer==`function`&&pt(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function yo(e,t){let n=t&&t.property?Je(t.property):Ye;return Qe(e)&&!vo(e)?bo(n(e),t):n(JSON.parse(e))}yo.responseType=`json`;function bo(e,t){return!Ze(e)&&wt(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}var xo={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function So(e,t){let n,r,i,a;return e=yo(e,t),t&&t.feature?(n=Xt,i=t.feature):t&&t.mesh?(n=en,i=t.mesh,a=xo[t.filter]):Ke(`Missing TopoJSON feature or mesh parameter.`),r=(r=e.objects[i])?n(e,r,a):Ke(`Invalid TopoJSON object: `+i),r&&r.features||[r]}So.responseType=`json`;var Co={dsv:_o,csv:go(`,`),tsv:go(` `),json:yo,topojson:So};function wo(e,t){return arguments.length>1?(Co[e]=t,this):xt(Co,e)?Co[e]:null}function To(e,t,n,r){t||={};let i=wo(t.type||`json`);return i||Ke(`Unknown data format type: `+t.type),e=i(e,t),t.parse&&Eo(e,t.parse,n,r),xt(e,`columns`)&&delete e.columns,e}function Eo(e,t,n,r){if(!e.length)return;let i=io();n||=i.timeParse,r||=i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,c,l,u,d;t===`auto`&&(t=ho(e,a)),a=Object.keys(t);let f=a.map(e=>{let i=t[e],a,o;if(i&&(i.startsWith(`date:`)||i.startsWith(`utc:`)))return a=i.split(/:(.+)?/,2),o=a[1],(o[0]===`'`&&o[o.length-1]===`'`||o[0]===`"`&&o[o.length-1]===`"`)&&(o=o.slice(1,-1)),(a[0]===`utc`?r:n)(o);if(!uo[i])throw Error(`Illegal format pattern: `+e+`:`+i);return uo[i]});for(c=0,u=e.length,d=a.length;c<u;++c)for(o=e[c],l=0;l<d;++l)s=a[l],o[s]=f[l](o[s])}var Do,Oo,ko,Ao,jo,Mo,No,Po=n((()=>{Do=[`BOOLEAN`,`INT32`,`INT64`,`INT96`,`FLOAT`,`DOUBLE`,`BYTE_ARRAY`,`FIXED_LEN_BYTE_ARRAY`],Oo=[`PLAIN`,`GROUP_VAR_INT`,`PLAIN_DICTIONARY`,`RLE`,`BIT_PACKED`,`DELTA_BINARY_PACKED`,`DELTA_LENGTH_BYTE_ARRAY`,`DELTA_BYTE_ARRAY`,`RLE_DICTIONARY`,`BYTE_STREAM_SPLIT`],ko=[`REQUIRED`,`OPTIONAL`,`REPEATED`],Ao=[`UTF8`,`MAP`,`MAP_KEY_VALUE`,`LIST`,`ENUM`,`DECIMAL`,`DATE`,`TIME_MILLIS`,`TIME_MICROS`,`TIMESTAMP_MILLIS`,`TIMESTAMP_MICROS`,`UINT_8`,`UINT_16`,`UINT_32`,`UINT_64`,`INT_8`,`INT_16`,`INT_32`,`INT_64`,`JSON`,`BSON`,`INTERVAL`],jo=[`UNCOMPRESSED`,`SNAPPY`,`GZIP`,`LZO`,`BROTLI`,`LZ4`,`ZSTD`,`LZ4_RAW`],Mo=[`DATA_PAGE`,`INDEX_PAGE`,`DICTIONARY_PAGE`,`DATA_PAGE_V2`],No=[`SPHERICAL`,`VINCENTY`,`THOMAS`,`ANDOYER`,`KARNEY`]}));function Fo(e){let t=Io(e);if(t.type===1)return{type:`Point`,coordinates:Lo(e,t)};if(t.type===2)return{type:`LineString`,coordinates:Ro(e,t)};if(t.type===3)return{type:`Polygon`,coordinates:zo(e,t)};if(t.type===4){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,Io(e)));return{type:`MultiPoint`,coordinates:n}}else if(t.type===5){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,Io(e)));return{type:`MultiLineString`,coordinates:n}}else if(t.type===6){let n=[];for(let r=0;r<t.count;r++)n.push(zo(e,Io(e)));return{type:`MultiPolygon`,coordinates:n}}else if(t.type===7){let n=[];for(let r=0;r<t.count;r++)n.push(Fo(e));return{type:`GeometryCollection`,geometries:n}}else throw Error(`Unsupported geometry type: ${t.type}`)}function Io(e){let{view:t}=e,n=t.getUint8(e.offset++)===1,r=t.getUint32(e.offset,n);e.offset+=4;let i=r%1e3,a=Math.floor(r/1e3),o=0;i>1&&i<=7&&(o=t.getUint32(e.offset,n),e.offset+=4);let s=2;return a&&s++,a===3&&s++,{littleEndian:n,type:i,dim:s,count:o}}function Lo(e,t){let n=[];for(let r=0;r<t.dim;r++){let r=e.view.getFloat64(e.offset,t.littleEndian);e.offset+=8,n.push(r)}return n}function Ro(e,t){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,t));return n}function zo(e,t){let{view:n}=e,r=[];for(let i=0;i<t.count;i++){let i=n.getUint32(e.offset,t.littleEndian);e.offset+=4,r.push(Ro(e,{...t,count:i}))}return r}var Bo=n((()=>{}));function Vo(e,t,n,r){if(t&&n.endsWith(`_DICTIONARY`)){let n=e;e instanceof Uint8Array&&!(t instanceof Uint8Array)&&(n=new t.constructor(e.length));for(let r=0;r<e.length;r++)n[r]=t[e[r]];return n}else return Ho(e,r)}function Ho(e,t){let{element:n,parsers:r,utf8:i=!0,schemaPath:a}=t,{type:o,converted_type:s,logical_type:c}=n;if(a?.some(e=>e.element.logical_type?.type===`VARIANT`)&&o===`BYTE_ARRAY`&&s!==`UTF8`&&c?.type!==`STRING`)return e;if(s===`DECIMAL`){let t=10**-(n.scale||0),r=Array(e.length);for(let n=0;n<r.length;n++)e[n]instanceof Uint8Array?r[n]=Uo(e[n])*t:r[n]=Number(e[n])*t;return r}if(!s&&o===`INT96`)return Array.from(e).map(e=>r.timestampFromNanoseconds(Wo(e)));if(s===`DATE`)return Array.from(e).map(e=>r.dateFromDays(e));if(s===`TIMESTAMP_MILLIS`)return Array.from(e).map(e=>r.timestampFromMilliseconds(e));if(s===`TIMESTAMP_MICROS`)return Array.from(e).map(e=>r.timestampFromMicroseconds(e));if(s===`JSON`)return e.map(e=>JSON.parse(Ko.decode(e)));if(s===`BSON`)throw Error(`parquet bson not supported`);if(s===`INTERVAL`)throw Error(`parquet interval not supported`);if(c?.type===`GEOMETRY`)return e.map(e=>r.geometryFromBytes(e));if(c?.type===`GEOGRAPHY`)return e.map(e=>r.geographyFromBytes(e));if(s===`UTF8`||c?.type===`STRING`||i&&o===`BYTE_ARRAY`)return e.map(e=>r.stringFromBytes(e));if(s===`UINT_64`||c?.type===`INTEGER`&&c.bitWidth===64&&!c.isSigned){if(e instanceof BigInt64Array)return new BigUint64Array(e.buffer,e.byteOffset,e.length);let t=new BigUint64Array(e.length);for(let n=0;n<t.length;n++)t[n]=BigInt(e[n]);return t}if(s===`UINT_32`||c?.type===`INTEGER`&&c.bitWidth===32&&!c.isSigned){if(e instanceof Int32Array)return new Uint32Array(e.buffer,e.byteOffset,e.length);let t=new Uint32Array(e.length);for(let n=0;n<t.length;n++)t[n]=e[n];return t}if(c?.type===`FLOAT16`)return Array.from(e).map(Go);if(c?.type===`TIMESTAMP`){let{unit:t}=c,n=r.timestampFromMilliseconds;t===`MICROS`&&(n=r.timestampFromMicroseconds),t===`NANOS`&&(n=r.timestampFromNanoseconds);let i=Array(e.length);for(let t=0;t<i.length;t++)i[t]=n(e[t]);return i}return e}function Uo(e){if(!e.length)return 0;let t=0n;for(let n of e)t=t*256n+BigInt(n);let n=e.length*8;return t>=2n**BigInt(n-1)&&(t-=2n**BigInt(n)),Number(t)}function Wo(e){let t=(e>>64n)-2440588n,n=e&18446744073709551615n;return t*86400000000000n+n}function Go(e){if(!e)return;let t=e[1]<<8|e[0],n=t>>15?-1:1,r=t>>10&31,i=t&1023;return r===0?n*2**-14*(i/1024):r===31?i?NaN:n*(1/0):n*2**(r-15)*(1+i/1024)}var Ko,qo,Jo=n((()=>{Bo(),Ko=new TextDecoder,qo={timestampFromMilliseconds(e){return new Date(Number(e))},timestampFromMicroseconds(e){return new Date(Number(e/1000n))},timestampFromNanoseconds(e){return new Date(Number(e/1000000n))},dateFromDays(e){return new Date(e*864e5)},stringFromBytes(e){return e&&Ko.decode(e)},geometryFromBytes(e){return e&&Fo({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&Fo({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})}}}));function Yo(e,t,n){let r=e[t],i=[],a=1;if(r.num_children)for(;i.length<r.num_children;){let r=e[t+a],o=Yo(e,t+a,[...n,r.name]);a+=o.count,i.push(o)}return{count:a,element:r,children:i,path:n}}function Xo(e,t){let n=Yo(e,0,[]),r=[n];for(let e of t){let i=n.children.find(t=>t.element.name===e);if(!i)throw Error(`parquet schema element not found: ${t}`);r.push(i),n=i}return r}function Zo(e){let t=[];function n(e){if(e.children.length)for(let t of e.children)n(t);else t.push(e.path.join(`.`))}return n(e),t}function Qo(e){let t=0;for(let{element:n}of e)n.repetition_type===`REPEATED`&&t++;return t}function $o(e){let t=0;for(let{element:n}of e.slice(1))n.repetition_type!==`REQUIRED`&&t++;return t}function es(e){if(!e||e.element.converted_type!==`LIST`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length>1||t.element.repetition_type!==`REPEATED`)}function ts(e){if(!e||e.element.converted_type!==`MAP`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length!==2||t.element.repetition_type!==`REPEATED`||t.children.find(e=>e.element.name===`key`)?.element.repetition_type===`REPEATED`||t.children.find(e=>e.element.name===`value`)?.element.repetition_type===`REPEATED`)}function ns(e){if(e.length!==2)return!1;let[,t]=e;return!(t.element.repetition_type===`REPEATED`||t.children.length)}var rs=n((()=>{}));function is(e){let t=0,n={};for(;e.offset<e.view.byteLength;){let[r,i,a]=us(e,t);if(t=a,r===ds.STOP)break;n[`field_${i}`]=as(e,r)}return n}function as(e,t){switch(t){case ds.TRUE:return!0;case ds.FALSE:return!1;case ds.BYTE:return e.view.getInt8(e.offset++);case ds.I16:case ds.I32:return cs(e);case ds.I64:return ls(e);case ds.DOUBLE:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case ds.BINARY:{let t=os(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case ds.LIST:{let t=e.view.getUint8(e.offset++),n=t&15,r=t>>4;r===15&&(r=os(e));let i=n===ds.TRUE||n===ds.FALSE,a=Array(r);for(let t=0;t<r;t++)a[t]=i?as(e,ds.BYTE)===1:as(e,n);return a}case ds.STRUCT:{let t={},n=0;for(;;){let[r,i,a]=us(e,n);if(n=a,r===ds.STOP)break;t[`field_${i}`]=as(e,r)}return t}default:throw Error(`thrift unhandled type: ${t}`)}}function os(e){let t=0,n=0;for(;;){let r=e.view.getUint8(e.offset++);if(t|=(r&127)<<n,!(r&128))return t;n+=7}}function ss(e){let t=0n,n=0n;for(;;){let r=e.view.getUint8(e.offset++);if(t|=BigInt(r&127)<<n,!(r&128))return t;n+=7n}}function cs(e){let t=os(e);return t>>>1^-(t&1)}function ls(e){let t=ss(e);return t>>1n^-(t&1n)}function us(e,t){let n=e.view.getUint8(e.offset++),r=n&15;if(r===ds.STOP)return[0,0,t];let i=n>>4,a=i?t+i:cs(e);return[r,a,a]}var ds,fs=n((()=>{ds={STOP:0,TRUE:1,FALSE:2,BYTE:3,I16:4,I32:5,I64:6,DOUBLE:7,BINARY:8,LIST:9,SET:10,MAP:11,STRUCT:12,UUID:13}}));function ps(e,t){let n=new Map,r=t?.find(({key:e})=>e===`geo`)?.value,i=(r&&JSON.parse(r)?.columns)??{};for(let[e,t]of Object.entries(i)){if(t.encoding!==`WKB`)continue;let r=t.edges===`spherical`?`GEOGRAPHY`:`GEOMETRY`,i=t.crs?.id??t.crs?.ids?.[0],a=i?`${i.authority}:${i.code.toString()}`:void 0;n.set(e,{type:r,crs:a})}for(let t=1;t<e.length;t++){let r=e[t],{logical_type:i,name:a,num_children:o,repetition_type:s,type:c}=r;if(o){t+=o;continue}c===`BYTE_ARRAY`&&i===void 0&&s!==`REPEATED`&&(r.logical_type=n.get(a))}}var ms=n((()=>{}));function hs(e){return e&&ws.decode(e)}async function gs(e,{parsers:t,initialFetchSize:n=Cs,geoparquet:r=!0}={}){if(!e||!(e.byteLength>=0))throw Error(`parquet expected AsyncBuffer`);let i=Math.max(0,e.byteLength-n),a=await e.slice(i,e.byteLength),o=new DataView(a);if(o.getUint32(a.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let s=o.getUint32(a.byteLength-8,!0);if(s>e.byteLength-8)throw Error(`parquet metadata length ${s} exceeds available buffer ${e.byteLength-8}`);if(s+8>n){let n=e.byteLength-s-8,o=await e.slice(n,i),c=new ArrayBuffer(s+8),l=new Uint8Array(c);return l.set(new Uint8Array(o)),l.set(new Uint8Array(a),i-n),_s(c,{parsers:t,geoparquet:r})}else return _s(a,{parsers:t,geoparquet:r})}function _s(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw Error(`parquet expected ArrayBuffer`);let r=new DataView(e);if(t={...qo,...t},r.byteLength<8)throw Error(`parquet file is too short`);if(r.getUint32(r.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let i=r.byteLength-8,a=r.getUint32(i,!0);if(a>r.byteLength-8)throw Error(`parquet metadata length ${a} exceeds available buffer ${r.byteLength-8}`);let o=is({view:r,offset:i-a}),s=o.field_1,c=o.field_2.map(e=>({type:Do[e.field_1],type_length:e.field_2,repetition_type:ko[e.field_3],name:hs(e.field_4),num_children:e.field_5,converted_type:Ao[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:ys(e.field_10)})),l=c.filter(e=>e.type),u=o.field_3,d=o.field_4.map(e=>({columns:e.field_1.map((e,n)=>({file_path:hs(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:Do[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>Oo[e]),path_in_schema:e.field_3.field_3.map(hs),codec:jo[e.field_3.field_4],num_values:e.field_3.field_5,total_uncompressed_size:e.field_3.field_6,total_compressed_size:e.field_3.field_7,key_value_metadata:e.field_3.field_8?.map(e=>({key:hs(e.field_1),value:hs(e.field_2)})),data_page_offset:e.field_3.field_9,index_page_offset:e.field_3.field_10,dictionary_page_offset:e.field_3.field_11,statistics:xs(e.field_3.field_12,l[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:Mo[e.field_1],encoding:Oo[e.field_2],count:e.field_3})),bloom_filter_offset:e.field_3.field_14,bloom_filter_length:e.field_3.field_15,size_statistics:e.field_3.field_16&&{unencoded_byte_array_data_bytes:e.field_3.field_16.field_1,repetition_level_histogram:e.field_3.field_16.field_2,definition_level_histogram:e.field_3.field_16.field_3},geospatial_statistics:e.field_3.field_17&&{bbox:e.field_3.field_17.field_1&&{xmin:e.field_3.field_17.field_1.field_1,xmax:e.field_3.field_17.field_1.field_2,ymin:e.field_3.field_17.field_1.field_3,ymax:e.field_3.field_17.field_1.field_4,zmin:e.field_3.field_17.field_1.field_5,zmax:e.field_3.field_17.field_1.field_6,mmin:e.field_3.field_17.field_1.field_7,mmax:e.field_3.field_17.field_1.field_8},geospatial_types:e.field_3.field_17.field_2}},offset_index_offset:e.field_4,offset_index_length:e.field_5,column_index_offset:e.field_6,column_index_length:e.field_7,crypto_metadata:e.field_8,encrypted_column_metadata:e.field_9})),total_byte_size:e.field_2,num_rows:e.field_3,sorting_columns:e.field_4?.map(e=>({column_idx:e.field_1,descending:e.field_2,nulls_first:e.field_3})),file_offset:e.field_5,total_compressed_size:e.field_6,ordinal:e.field_7})),f=o.field_5?.map(e=>({key:hs(e.field_1),value:hs(e.field_2)})),p=hs(o.field_6);return n&&ps(c,f),{version:s,schema:c,num_rows:u,row_groups:d,key_value_metadata:f,created_by:p,metadata_length:a}}function vs({schema:e}){return Xo(e,[])[0]}function ys(e){return e?.field_1?{type:`STRING`}:e?.field_2?{type:`MAP`}:e?.field_3?{type:`LIST`}:e?.field_4?{type:`ENUM`}:e?.field_5?{type:`DECIMAL`,scale:e.field_5.field_1,precision:e.field_5.field_2}:e?.field_6?{type:`DATE`}:e?.field_7?{type:`TIME`,isAdjustedToUTC:e.field_7.field_1,unit:bs(e.field_7.field_2)}:e?.field_8?{type:`TIMESTAMP`,isAdjustedToUTC:e.field_8.field_1,unit:bs(e.field_8.field_2)}:e?.field_10?{type:`INTEGER`,bitWidth:e.field_10.field_1,isSigned:e.field_10.field_2}:e?.field_11?{type:`NULL`}:e?.field_12?{type:`JSON`}:e?.field_13?{type:`BSON`}:e?.field_14?{type:`UUID`}:e?.field_15?{type:`FLOAT16`}:e?.field_16?{type:`VARIANT`,specification_version:e.field_16.field_1}:e?.field_17?{type:`GEOMETRY`,crs:hs(e.field_17.field_1)}:e?.field_18?{type:`GEOGRAPHY`,crs:hs(e.field_18.field_1),algorithm:No[e.field_18.field_2]}:e}function bs(e){if(e.field_1)return`MILLIS`;if(e.field_2)return`MICROS`;if(e.field_3)return`NANOS`;throw Error(`parquet time unit required`)}function xs(e,t,n){return e&&{max:Ss(e.field_1,t,n),min:Ss(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:Ss(e.field_5,t,n),min_value:Ss(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function Ss(e,t,n){let{type:r,converted_type:i,logical_type:a}=t;if(e===void 0)return e;if(r===`BOOLEAN`)return e[0]===1;if(r===`BYTE_ARRAY`)return n.stringFromBytes(e);let o=new DataView(e.buffer,e.byteOffset,e.byteLength);return r===`FLOAT`&&o.byteLength===4?o.getFloat32(0,!0):r===`DOUBLE`&&o.byteLength===8?o.getFloat64(0,!0):r===`INT32`&&i===`DATE`?n.dateFromDays(o.getInt32(0,!0)):r===`INT64`&&i===`TIMESTAMP_MILLIS`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT64`&&i===`TIMESTAMP_MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`NANOS`?n.timestampFromNanoseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT32`&&o.byteLength===4?o.getInt32(0,!0):r===`INT64`&&o.byteLength===8?o.getBigInt64(0,!0):i===`DECIMAL`?Uo(e)*10**-(t.scale||0):a?.type===`FLOAT16`?Go(e):e}var Cs,ws,Ts=n((()=>{Po(),Jo(),rs(),fs(),ms(),Cs=1<<19,ws=new TextDecoder}));function Es(e,t){let n=1e4;for(let r=0;r<t.length;r+=n)e.push(...t.slice(r,r+n))}function Ds(e,t,n=!0){if(n?e===t:e==t)return!0;if(e instanceof Uint8Array&&t instanceof Uint8Array)return Ds(Array.from(e),Array.from(t),n);if(!e||!t||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Ds(e[r],t[r],n))return!1;return!0}if(typeof e!=`object`)return!1;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let i of r)if(!Ds(e[i],t[i],n))return!1;return!0}function Os(e){if(!e)return[];if(e.length===1)return e[0];let t=[];for(let n of e)Es(t,n);return t}var ks=n((()=>{}));function As({rowGroup:e,physicalColumns:t,filter:n,strict:r=!0}){if(!n)return!1;if(`$and`in n&&Array.isArray(n.$and))return n.$and.some(n=>As({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$or`in n&&Array.isArray(n.$or))return n.$or.every(n=>As({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$nor`in n&&Array.isArray(n.$nor))return!1;for(let[i,a]of Object.entries(n)){let n=t.indexOf(i);if(n===-1)continue;let o=e.columns[n].meta_data?.statistics;if(!o)continue;let{min:s,max:c,min_value:l,max_value:u}=o,d=l===void 0?s:l,f=u===void 0?c:u;if(!(d===void 0||f===void 0)){for(let[e,t]of Object.entries(a||{}))if(e===`$gt`&&f<=t||e===`$gte`&&f<t||e===`$lt`&&d>=t||e===`$lte`&&d>t||e===`$eq`&&(t<d||t>f)||e===`$ne`&&Ds(d,f,r)&&Ds(d,t,r)||e===`$in`&&Array.isArray(t)&&t.every(e=>e<d||e>f)||e===`$nin`&&Array.isArray(t)&&Ds(d,f,r)&&t.includes(d))return!0}}return!1}var js=n((()=>{ks()}));function Ms({metadata:e,rowStart:t=0,rowEnd:n=1/0,columns:r,filter:i,filterStrict:a=!0,useOffsetIndex:o=!1}){if(!e)throw Error(`parquetPlan requires metadata`);let s=[],c=[],l=[],u=Zo(vs(e)),d=0;for(let f of e.row_groups){let e=Number(f.num_rows),p=d+e;if(e>0&&p>t&&d<n&&!As({rowGroup:f,physicalColumns:u,filter:i,strict:a})){let i=[],a=1/0,u=-1/0;for(let e of f.columns){let t=e.meta_data;if(e.file_path)throw Error(`parquet file_path not supported`);if(!t)throw Error(`parquet column metadata is undefined`);if(!r||r.includes(t.path_in_schema[0])){let n=t.dictionary_page_offset||t.data_page_offset,r=Number(n),s=Number(n+t.total_compressed_size);if(r<a&&(a=r),s>u&&(u=s),o&&e.offset_index_offset&&e.offset_index_length){let n=Number(e.offset_index_offset);i.push({columnMetadata:t,offsetIndex:{startByte:n,endByte:n+e.offset_index_length},bounds:{startByte:r,endByte:s}})}else i.push({columnMetadata:t,range:{startByte:r,endByte:s}})}}let p=Math.max(t-d,0),m=Math.min(n-d,e);s.push({chunks:i,rowGroup:f,groupStart:d,groupRows:e,selectStart:p,selectEnd:m});let h;for(let e of i)if(`offsetIndex`in e)l.push(e.offsetIndex);else{let{range:t}=e;r?c.push(t):h&&t.endByte-h.startByte<=Ps?h.endByte=t.endByte:(h&&c.push(h),h={...t})}h&&c.push(h)}d=p}return isFinite(n)||(n=d),c.push(...l),{metadata:e,rowStart:t,rowEnd:n,columns:r,fetches:c,groups:s}}function Ns(e,{fetches:t}){let n=t.map(({startByte:t,endByte:n})=>e.slice(t,n));return{byteLength:e.byteLength,slice(r,i=e.byteLength){let a=t.findIndex(({startByte:e,endByte:t})=>e<=r&&i<=t);if(a<0)return e.slice(r,i);if(t[a].startByte!==r||t[a].endByte!==i){let e=r-t[a].startByte,o=i-t[a].startByte;return n[a]instanceof Promise?n[a].then(t=>t.slice(e,o)):n[a].slice(e,o)}else return n[a]}}}var Ps,Fs=n((()=>{js(),Ts(),rs(),Ps=1<<21}));function Is(e,t=qo){if(Array.isArray(e))return e.map(e=>Is(e,t));if(typeof e!=`object`)return e;if(`metadata`in e){let n=zs(e.metadata),r=e.typed_value&&Ls(e.typed_value,n,t),i=e.value&&Vs(Rs(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Ls(e,t,n){if(e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if(`typed_value`in e)return Ls(e.typed_value,t,n);if(`value`in e&&e.value instanceof Uint8Array)return Vs(Rs(e.value),t,n);let r={};for(let[i,a]of Object.entries(e))r[i]=Ls(a,t,n);return r}return e instanceof Uint8Array?Vs(Rs(e),t,n):Array.isArray(e)?e.map(e=>Ls(e,t,n)):e}function Rs(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function zs(e){let t=Js.get(e.buffer);t||(t=new Map,Js.set(e.buffer,t));let n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;let i=Rs(e),a=i.view.getUint8(i.offset++),o=a&15;if(o!==1)throw Error(`parquet unsupported variant metadata version: ${o}`);let s=(a>>4&1)==1,c=(a>>6&3)+1,l=Bs(i,c),u=Array(l+1);for(let e=0;e<u.length;e++)u[e]=Bs(i,c);let d=i.offset,f=Array(l);for(let t=0;t<l;t++){let n=u[t],r=u[t+1],i=new Uint8Array(e.buffer,e.byteOffset+d+n,r-n);f[t]=qs.decode(i)}let p={dictionary:f,sorted:s};return t.set(n,p),p}function Bs(e,t){let n=0;for(let r=0;r<t;r++)n|=e.view.getUint8(e.offset+r)<<r*8;return e.offset+=t,n}function Vs(e,t,n){let r=e.view.getUint8(e.offset++),i=r&3,a=r>>2;if(i===0)return Hs(e,a,n);if(i===2)return Us(e,a,t,n);if(i===3)return Ws(e,a,t,n);let o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,a);return e.offset+=a,qs.decode(o)}function Hs(e,t,n){switch(t){case 0:return null;case 1:return!0;case 2:return!1;case 3:{let t=e.view.getInt8(e.offset);return e.offset+=1,t}case 4:{let t=e.view.getInt16(e.offset,!0);return e.offset+=2,t}case 5:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,t}case 6:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 7:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case 8:return Gs(e,4);case 9:return Gs(e,8);case 10:return Gs(e,16);case 11:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,n.dateFromDays(t)}case 12:case 13:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromMicroseconds(t)}case 14:{let t=e.view.getFloat32(e.offset,!0);return e.offset+=4,t}case 15:return Ks(e);case 16:{let t=Ks(e);return qs.decode(t)}case 17:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 18:case 19:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromNanoseconds(t)}case 20:{let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,16);e.offset+=16;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}default:throw Error(`parquet unsupported variant primitive type: ${t}`)}}function Us(e,t,n,r){let i=(t&3)+1,a=(t>>2&3)+1,o=t>>4&1?Bs(e,4):e.view.getUint8(e.offset++),s=Array(o);for(let t=0;t<o;t++)s[t]=Bs(e,a);let c=Array(o+1);for(let t=0;t<c.length;t++)c[t]=Bs(e,i);let l={};for(let t=0;t<o;t++){let i=n.dictionary[s[t]];l[i]=Vs({view:e.view,offset:e.offset+c[t]},n,r)}return e.offset+=c[c.length-1],l}function Ws(e,t,n,r){let i=t&3,a=t>>2&1,o=i+1,s=Bs(e,a?4:1),c=Array(s+1);for(let t=0;t<c.length;t++)c[t]=Bs(e,o);let l=e.offset,u=Array(s);for(let t=0;t<s;t++)u[t]=Vs({view:e.view,offset:l+c[t]},n,r);return e.offset=l+c[c.length-1],u}function Gs(e,t){let n=e.view.getUint8(e.offset);e.offset+=1;let r;if(t===4)r=BigInt(e.view.getInt32(e.offset,!0)),e.offset+=4;else if(t===8)r=e.view.getBigInt64(e.offset,!0),e.offset+=8;else{let t=e.view.getBigUint64(e.offset,!0);r=e.view.getBigInt64(e.offset+8,!0)<<64n|t,e.offset+=16}return Number(r)*10**-n}function Ks(e){let t=e.view.getUint32(e.offset,!0);e.offset+=4;let n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}var qs,Js,Ys=n((()=>{Jo(),qs=new TextDecoder,Js=new WeakMap}));function Xs(e,t,n,r,i){let a=$o(i);if(!t?.length&&!n.length){if(!a||!r.length)return r;t=Array(r.length).fill(a)}let o=t?.length||n.length,s=i.map(({element:e})=>e.repetition_type),c=0,l=[e],u=e,d=0,f=0,p=0;if(n[0])for(;d<s.length-2&&p<n[0];)d++,s[d]!==`REQUIRED`&&(u=u.at(-1),l.push(u),f++),s[d]===`REPEATED`&&p++;for(let e=0;e<o;e++){let i=t?.length?t[e]:a,o=n[e];for(;d&&(o<p||s[d]!==`REPEATED`);)s[d]!==`REQUIRED`&&(l.pop(),f--),s[d]===`REPEATED`&&p--,d--;for(u=l.at(-1);(d<s.length-2||s[d+1]===`REPEATED`)&&(f<i||s[d+1]===`REQUIRED`);){if(d++,s[d]!==`REQUIRED`){let e=[];u.push(e),u=e,l.push(e),f++}s[d]===`REPEATED`&&p++}i===a?u.push(r[c++]):d===s.length-2?u.push(null):u.push([])}if(!e.length)for(let e=0;e<a;e++){let e=[];u.push(e),u=e}return e}function Zs(e,t,n,r=0){let i=t.path.join(`.`),a=t.element.repetition_type===`OPTIONAL`,o=a?r+1:r;if(es(t)){let s=t.children[0],c=o;s.children.length===1&&(s=s.children[0],c++),Zs(e,s,n,c);let l=s.path.join(`.`),u=e.get(l);if(!u)throw Error(`parquet list column missing values`);a&&Qs(u,r),e.set(i,u),e.delete(l);return}if(ts(t)){let s=t.children[0].element.name;Zs(e,t.children[0].children[0],n,o+1),Zs(e,t.children[0].children[1],n,o+1);let c=e.get(`${i}.${s}.key`),l=e.get(`${i}.${s}.value`);if(!c)throw Error(`parquet map column missing keys`);if(!l)throw Error(`parquet map column missing values`);if(c.length!==l.length)throw Error(`parquet map column key/value length mismatch`);let u=$s(c,l,o);a&&Qs(u,r),e.delete(`${i}.${s}.key`),e.delete(`${i}.${s}.value`),e.set(i,u);return}if(t.children.length){let o=t.element.repetition_type===`REQUIRED`?r:r+1,s={};for(let r of t.children){Zs(e,r,n,o);let t=e.get(r.path.join(`.`));if(!t)throw Error(`parquet struct missing child data`);s[r.element.name]=t}for(let n of t.children)e.delete(n.path.join(`.`));let c=ec(s,o);t.element.logical_type?.type===`VARIANT`&&(c=Is(c,n)),a&&Qs(c,r),e.set(i,c)}}function Qs(e,t){for(let n=0;n<e.length;n++)t?Qs(e[n],t-1):e[n]=e[n][0]}function $s(e,t,n){let r=[];for(let i=0;i<e.length;i++)if(n)r.push($s(e[i],t[i],n-1));else if(e[i]){let n={};for(let r=0;r<e[i].length;r++){let a=t[i][r];n[e[i][r]]=a===void 0?null:a}r.push(n)}else r.push(void 0);return r}function ec(e,t){let n=Object.keys(e),r=e[n[0]]?.length,i=[];for(let a=0;a<r;a++){let o={};for(let t of n){if(e[t].length!==r)throw Error(`parquet struct parsing error`);o[t]=e[t][a]}t?i.push(ec(o,t-1)):i.push(o)}return i}var tc=n((()=>{rs(),Ys()}));function nc(e,t,n){let r=n instanceof Int32Array,i=os(e),a=os(e);os(e);let o=ls(e),s=0;n[s++]=r?Number(o):o;let c=i/a;for(;s<t;){let i=ls(e),l=new Uint8Array(a);for(let t=0;t<a;t++)l[t]=e.view.getUint8(e.offset++);for(let u=0;u<a&&s<t;u++){let a=BigInt(l[u]);if(a){let l=0n,u=c,d=(1n<<a)-1n;for(;u&&s<t;){let t=BigInt(e.view.getUint8(e.offset))>>l&d;for(l+=a;l>=8;)l-=8n,e.offset++,l&&(t|=BigInt(e.view.getUint8(e.offset))<<a-l&d);let c=i+t;o+=c,n[s++]=r?Number(o):o,u--}u&&(e.offset+=Math.ceil((u*Number(a)+Number(l))/8))}else for(let e=0;e<c&&s<t;e++)o+=i,n[s++]=r?Number(o):o}}}function rc(e,t,n){let r=new Int32Array(t);nc(e,t,r);for(let i=0;i<t;i++)n[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,r[i]),e.offset+=r[i]}function ic(e,t,n){let r=new Int32Array(t);nc(e,t,r);let i=new Int32Array(t);nc(e,t,i);for(let a=0;a<t;a++){let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,i[a]);r[a]?(n[a]=new Uint8Array(r[a]+i[a]),n[a].set(n[a-1].subarray(0,r[a])),n[a].set(t,r[a])):n[a]=t,e.offset+=i[a]}}var ac=n((()=>{fs()}));function oc(e){return 32-Math.clz32(e)}function sc(e,t,n,r){r===void 0&&(r=e.view.getUint32(e.offset,!0),e.offset+=4);let i=e.offset,a=0;for(;a<n.length;){let r=os(e);if(r&1)a=lc(e,r,t,n,a);else{let i=r>>>1;cc(e,i,t,n,a),a+=i}}e.offset=i+r}function cc(e,t,n,r,i){let a=n+7>>3,o=0;for(let t=0;t<a;t++)o|=e.view.getUint8(e.offset++)<<(t<<3);for(let e=0;e<t;e++)r[i+e]=o}function lc(e,t,n,r,i){let a=t>>1<<3,o=(1<<n)-1,s=0;if(e.offset<e.view.byteLength)s=e.view.getUint8(e.offset++);else if(o)throw Error(`parquet bitpack offset ${e.offset} out of range`);let c=8,l=0;for(;a;)l>8?(l-=8,c-=8,s>>>=8):c-l<n?(s|=e.view.getUint8(e.offset)<<c,e.offset++,c+=8):(i<r.length&&(r[i++]=s>>l&o),a--,l+=n);return i}function uc(e,t,n,r){let i=dc(n,r),a=new Uint8Array(t*i);for(let n=0;n<i;n++)for(let r=0;r<t;r++)a[r*i+n]=e.view.getUint8(e.offset++);if(n===`FLOAT`)return new Float32Array(a.buffer);if(n===`DOUBLE`)return new Float64Array(a.buffer);if(n===`INT32`)return new Int32Array(a.buffer);if(n===`INT64`)return new BigInt64Array(a.buffer);if(n===`FIXED_LEN_BYTE_ARRAY`){let e=Array(t);for(let n=0;n<t;n++)e[n]=a.subarray(n*i,(n+1)*i);return e}throw Error(`parquet byte_stream_split unsupported type: ${n}`)}function dc(e,t){switch(e){case`INT32`:case`FLOAT`:return 4;case`INT64`:case`DOUBLE`:return 8;case`FIXED_LEN_BYTE_ARRAY`:if(!t)throw Error(`parquet byteWidth missing type_length`);return t;default:throw Error(`parquet unsupported type: ${e}`)}}var fc=n((()=>{fs()}));function pc(e,t,n,r){if(n===0)return[];if(t===`BOOLEAN`)return mc(e,n);if(t===`INT32`)return hc(e,n);if(t===`INT64`)return gc(e,n);if(t===`INT96`)return _c(e,n);if(t===`FLOAT`)return vc(e,n);if(t===`DOUBLE`)return yc(e,n);if(t===`BYTE_ARRAY`)return bc(e,n);if(t===`FIXED_LEN_BYTE_ARRAY`){if(!r)throw Error(`parquet missing fixed length`);return xc(e,n,r)}else throw Error(`parquet unhandled type: ${t}`)}function mc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.offset+(r/8|0),i=r%8;n[r]=(e.view.getUint8(t)&1<<i)!=0}return e.offset+=Math.ceil(t/8),n}function hc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Int32Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Int32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function gc(e,t){let n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new BigInt64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function _c(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getBigInt64(e.offset+r*12,!0),i=e.view.getInt32(e.offset+r*12+8,!0);n[r]=BigInt(i)<<64n|t}return e.offset+=t*12,n}function vc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Float32Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Float32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function yc(e,t){let n=(e.view.byteOffset+e.offset)%8?new Float64Array(Sc(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new Float64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function bc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getUint32(e.offset,!0);e.offset+=4,n[r]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t),e.offset+=t}return n}function xc(e,t,n){let r=Array(t);for(let i=0;i<t;i++)r[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,n),e.offset+=n;return r}function Sc(e,t,n){let r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}var Cc=n((()=>{}));function wc(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[t+a]}function Tc(e,t){let n=e.byteLength,r=t.byteLength,i=0,a=0;for(;i<n;){let t=e[i];if(i++,t<128)break}if(r&&i>=n)throw Error(`invalid snappy length header`);for(;i<n;){let r=e[i],o=0;if(i++,i>=n)throw Error(`missing eof marker`);if(r&3){let s=0;switch(r&3){case 1:o=(r>>>2&7)+4,s=e[i]+(r>>>5<<8),i++;break;case 2:if(n<=i+1)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8),i+=2;break;case 3:if(n<=i+3)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),i+=4;break;default:break}if(s===0||isNaN(s))throw Error(`invalid offset ${s} pos ${i} inputLength ${n}`);if(s>a)throw Error(`cannot copy from before start of buffer`);wc(t,a-s,t,a,o),a+=o}else{let o=(r>>>2)+1;if(o>60){if(i+3>=n)throw Error(`snappy error literal pos + 3 >= inputLength`);let t=o-60;o=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),o=(o&Ec[t])+1,i+=t}if(i+o>n)throw Error(`snappy error literal exceeds input length`);wc(e,i,t,a,o),i+=o,a+=o}}if(a!==r)throw Error(`premature end of input`)}var Ec,Dc=n((()=>{Ec=[0,255,65535,16777215,4294967295]}));function Oc(e,t,{type:n,element:r,schemaPath:i}){let a=new DataView(e.buffer,e.byteOffset,e.byteLength),o={view:a,offset:0},s,c=kc(o,t,i),{definitionLevels:l,numNulls:u}=Ac(o,t,i),d=t.num_values-u;if(t.encoding===`PLAIN`)s=pc(o,n,d,r.type_length);else if(t.encoding===`PLAIN_DICTIONARY`||t.encoding===`RLE_DICTIONARY`||t.encoding===`RLE`){let e=n===`BOOLEAN`?1:a.getUint8(o.offset++);e?(s=Array(d),n===`BOOLEAN`?(sc(o,e,s),s=s.map(e=>!!e)):sc(o,e,s,a.byteLength-o.offset)):s=new Uint8Array(d)}else if(t.encoding===`BYTE_STREAM_SPLIT`)s=uc(o,d,n,r.type_length);else if(t.encoding===`DELTA_BINARY_PACKED`)s=n===`INT32`?new Int32Array(d):new BigInt64Array(d),nc(o,d,s);else if(t.encoding===`DELTA_LENGTH_BYTE_ARRAY`)s=Array(d),rc(o,d,s);else throw Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:l,repetitionLevels:c,dataPage:s}}function kc(e,t,n){if(n.length>1){let r=Qo(n);if(r){let n=Array(t.num_values);return sc(e,oc(r),n),n}}return[]}function Ac(e,t,n){let r=$o(n);if(!r)return{definitionLevels:[],numNulls:0};let i=Array(t.num_values);sc(e,oc(r),i);let a=t.num_values;for(let e of i)e===r&&a--;return a===0&&(i.length=0),{definitionLevels:i,numNulls:a}}function jc(e,t,n,r){let i,a=r?.[n];if(n===`UNCOMPRESSED`)i=e;else if(a)i=a(e,t);else if(n===`SNAPPY`)i=new Uint8Array(t),Tc(e,i);else throw Error(`parquet unsupported compression codec: ${n}`);if(i?.length!==t)throw Error(`parquet decompressed page length ${i?.length} does not match header ${t}`);return i}function Mc(e,t,n){let r={view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0},{type:i,element:a,schemaPath:o,codec:s,compressors:c}=n,l=t.data_page_header_v2;if(!l)throw Error(`parquet data page header v2 is undefined`);let u=Nc(r,l,o);r.offset=l.repetition_levels_byte_length;let d=Pc(r,l,o),f=t.uncompressed_page_size-l.definition_levels_byte_length-l.repetition_levels_byte_length,p=e.subarray(r.offset);l.is_compressed!==!1&&(p=jc(p,f,s,c));let m=new DataView(p.buffer,p.byteOffset,p.byteLength),h={view:m,offset:0},g,_=l.num_values-l.num_nulls;if(l.encoding===`PLAIN`)g=pc(h,i,_,a.type_length);else if(l.encoding===`RLE`)g=Array(_),sc(h,1,g),g=g.map(e=>!!e);else if(l.encoding===`PLAIN_DICTIONARY`||l.encoding===`RLE_DICTIONARY`){let e=m.getUint8(h.offset++);g=Array(_),sc(h,e,g,f-1)}else if(l.encoding===`DELTA_BINARY_PACKED`)g=i===`INT32`?new Int32Array(_):new BigInt64Array(_),nc(h,_,g);else if(l.encoding===`DELTA_LENGTH_BYTE_ARRAY`)g=Array(_),rc(h,_,g);else if(l.encoding===`DELTA_BYTE_ARRAY`)g=Array(_),ic(h,_,g);else if(l.encoding===`BYTE_STREAM_SPLIT`)g=uc(h,_,i,a.type_length);else throw Error(`parquet unsupported encoding: ${l.encoding}`);return{definitionLevels:d,repetitionLevels:u,dataPage:g}}function Nc(e,t,n){let r=Qo(n);if(!r)return[];let i=Array(t.num_values);return sc(e,oc(r),i,t.repetition_levels_byte_length),i}function Pc(e,t,n){let r=$o(n);if(r){let n=Array(t.num_values);return sc(e,oc(r),n,t.definition_levels_byte_length),n}}var Fc=n((()=>{ac(),fc(),Cc(),rs(),Dc()}));function Ic(e,{groupStart:t,selectStart:n,selectEnd:r},i,a){let{pathInSchema:o,schemaPath:s}=i,c=ns(s),l=[],u,d,f=0,p=0,m=a&&(()=>{d&&a({pathInSchema:o,columnData:d,rowStart:t+f-d.length,rowEnd:t+f})});for(;(c?f<r:e.offset<e.view.byteLength-1)&&!(e.offset>=e.view.byteLength-1);){let t=Rc(e);if(t.type===`DICTIONARY_PAGE`){let{data:n}=Lc(e,t,i,u,void 0,0);n&&(u=Ho(n,i))}else{let r=d?.length||0,a=Lc(e,t,i,u,d,n-f);a.skipped?(l.length||(p+=a.skipped),f+=a.skipped):a.data&&d===a.data?f+=a.data.length-r:a.data&&a.data.length&&(m?.(),l.push(a.data),f+=a.data.length,d=a.data)}}return m?.(),{data:l,skipped:p}}function Lc(e,t,n,r,i,a){let{type:o,element:s,schemaPath:c,codec:l,compressors:u}=n,d=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t.compressed_page_size);if(e.offset+=t.compressed_page_size,t.type===`DATA_PAGE`){let e=t.data_page_header;if(!e)throw Error(`parquet data page header is undefined`);if(a>e.num_values&&ns(c))return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:f}=Oc(jc(d,Number(t.uncompressed_page_size),l,u),e,n),p=Vo(f,r,e.encoding,n);return{skipped:0,data:Xs(Array.isArray(i)?i:[],o,s,p,c)}}else if(t.type===`DATA_PAGE_V2`){let e=t.data_page_header_v2;if(!e)throw Error(`parquet data page header v2 is undefined`);if(a>e.num_rows)return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:l}=Mc(d,t,n),u=Vo(l,r,e.encoding,n);return{skipped:0,data:Xs(Array.isArray(i)?i:[],o,s,u,c)}}else if(t.type===`DICTIONARY_PAGE`){let e=t.dictionary_page_header;if(!e)throw Error(`parquet dictionary page header is undefined`);let n=jc(d,Number(t.uncompressed_page_size),l,u);return{skipped:0,data:pc({view:new DataView(n.buffer,n.byteOffset,n.byteLength),offset:0},o,e.num_values,s.type_length)}}else throw Error(`parquet unsupported page type: ${t.type}`)}function Rc(e){let t=is(e);return{type:Mo[t.field_1],uncompressed_page_size:t.field_2,compressed_page_size:t.field_3,crc:t.field_4,data_page_header:t.field_5&&{num_values:t.field_5.field_1,encoding:Oo[t.field_5.field_2],definition_level_encoding:Oo[t.field_5.field_3],repetition_level_encoding:Oo[t.field_5.field_4],statistics:t.field_5.field_5&&{max:t.field_5.field_5.field_1,min:t.field_5.field_5.field_2,null_count:t.field_5.field_5.field_3,distinct_count:t.field_5.field_5.field_4,max_value:t.field_5.field_5.field_5,min_value:t.field_5.field_5.field_6}},index_page_header:t.field_6,dictionary_page_header:t.field_7&&{num_values:t.field_7.field_1,encoding:Oo[t.field_7.field_2],is_sorted:t.field_7.field_3},data_page_header_v2:t.field_8&&{num_values:t.field_8.field_1,num_nulls:t.field_8.field_2,num_rows:t.field_8.field_3,encoding:Oo[t.field_8.field_4],definition_levels_byte_length:t.field_8.field_5,repetition_levels_byte_length:t.field_8.field_6,is_compressed:t.field_8.field_7===void 0?!0:t.field_8.field_7,statistics:t.field_8.field_8}}}var zc=n((()=>{tc(),Po(),Jo(),Fc(),Cc(),rs(),fs()}));function Bc(e){let t=is(e);return{page_locations:t.field_1.map(Vc),unencoded_byte_array_data_bytes:t.field_2}}function Vc(e){return{offset:e.field_1,compressed_page_size:e.field_2,first_row_index:e.field_3}}var Hc=n((()=>{fs()}));function Uc(e,{metadata:t},n){let{file:r,compressors:i,utf8:a}=e,o=[],s={...qo,...e.parsers};for(let c of n.chunks){let{columnMetadata:l}=c,u=Xo(t.schema,l.path_in_schema),d={pathInSchema:l.path_in_schema,type:l.type,element:u[u.length-1].element,schemaPath:u,codec:l.codec,parsers:s,compressors:i,utf8:a};if(!(`offsetIndex`in c)){o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.range.startByte,c.range.endByte)).then(t=>Ic({view:new DataView(t),offset:0},n,d,e.onPage))});continue}o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.offsetIndex.startByte,c.offsetIndex.endByte)).then(async t=>{let i=Bc({view:new DataView(t),offset:0}),{selectStart:a,selectEnd:o}=n,s=i.page_locations,c=NaN,l=NaN,u=0;for(let e=0;e<s.length;e++){let t=s[e],r=Number(t.first_row_index),i=e+1<s.length?Number(s[e+1].first_row_index):n.groupRows;r<o&&i>a&&(Number.isNaN(c)&&(c=Number(t.offset),u=r),l=Number(t.offset)+t.compressed_page_size)}let f=await r.slice(c,l),{data:p,skipped:m}=Ic({view:new DataView(f),offset:0},u?{...n,groupStart:n.groupStart+u,selectStart:n.selectStart-u,selectEnd:n.selectEnd-u}:n,d,e.onPage);return{data:p,skipped:u+m}})})}return{groupStart:n.groupStart,groupRows:n.groupRows,asyncColumns:o}}function Wc(e,t,n){let{asyncColumns:r}=e;n={...qo,...n};let i=[];for(let e of t.children)if(e.children.length){let t=r.filter(t=>t.pathInSchema[0]===e.element.name);if(!t.length)continue;let a=new Map,o=Promise.all(t.map(e=>e.data.then(({data:t})=>{a.set(e.pathInSchema.join(`.`),Os(t))}))).then(()=>{Zs(a,e,n);let t=a.get(e.path.join(`.`));if(!t)throw Error(`parquet column data not assembled`);return{data:[t],skipped:0}});i.push({pathInSchema:e.path,data:o})}else{let t=r.find(t=>t.pathInSchema[0]===e.element.name);t&&i.push(t)}return{...e,asyncColumns:i}}var Gc=n((()=>{tc(),zc(),Jo(),Hc(),rs(),ks()})),Kc=r({parquetRead:()=>Qc,parquetReadObjects:()=>$c});function qc(e){if(!e.metadata)throw Error(`parquet requires metadata`);let t=Ms(e);return e.file=Ns(e.file,t),t.groups.map(n=>Uc(e,t,n))}function Jc(e){if(!e)return[];if(e.length===1)return e[0];let t=0;for(let n of e)t+=n.length;let n=Array(t),r=0;for(let t of e){for(let e=0;e<t.length;e++)n[r+e]=t[e];r+=t.length}return n}function Yc(e){let t=e.join(``),n=el.get(t);if(n)return n;let r=e.map((e,t)=>JSON.stringify(e)+`: columnData[`+t+`][row - columnSkipped[`+t+`]]`).join(`,
|
|
8
8
|
`),i=Function(`groupData`,`selectStart`,`selectCount`,`columnData`,`columnSkipped`,`for (let selectRow = 0; selectRow < selectCount; selectRow++) {
|
|
9
9
|
const row = selectStart + selectRow;
|
|
10
10
|
groupData[selectRow] = {
|
|
11
11
|
`+r+`
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
return groupData;`);return
|
|
15
|
-
`,`\r`],!0,!1),
|
|
16
|
-
`,`\r`],!1,!1),
|
|
14
|
+
return groupData;`);return el.set(t,i),i}function Xc(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=t+o,s={};for(let e=0;e<r.length;e++)s[r[e]]=i[e][n-a[e]];e[o]=s}return e}async function Zc({asyncColumns:e},t,n){let r=await Promise.all(e.map(e=>e.data)),i=e.length,a=Array(i),o=Array(i),s=Array(i);for(let t=0;t<i;t++)a[t]=e[t].pathInSchema[0],o[t]=Jc(r[t].data),s[t]=r[t].skipped;let c=n-t,l=Array(c);return i>tl?Xc(l,t,c,a,o,s):Yc(a)(l,t,c,o,s)}async function Qc(e){if(`rowFormat`in e)throw Error(`parquetRead supports only object rows; use rowFormat: "object" implicitly`);if(`filter`in e||`filterStrict`in e)throw Error(`parquetRead does not support filtering`);e.metadata??=await gs(e.file,e);let{rowStart:t=0,rowEnd:n,onChunk:r,onComplete:i}=e,a=qc(e);if(!i&&!r){for(let{asyncColumns:e}of a)for(let{data:t}of e)await t;return}let o=vs(e.metadata),s=a.map(t=>Wc(t,o,e.parsers));if(r)for(let e of s)for(let t of e.asyncColumns)t.data.then(n=>{let i=e.groupStart+n.skipped;for(let e of n.data)r({columnName:t.pathInSchema[0],columnData:e,rowStart:i,rowEnd:i+e.length}),i+=e.length});if(i){let e=[];for(let r of s)Es(e,await Zc(r,Math.max(t-r.groupStart,0),Math.min((n??1/0)-r.groupStart,r.groupRows)));i(e)}else for(let{asyncColumns:e}of s)for(let{data:t}of e)await t}function $c(e){return new Promise((t,n)=>{Qc({...e,onComplete:t}).catch(n)})}var el,tl,nl=n((()=>{Ts(),Fs(),Gc(),ks(),el=new Map,tl=200}));async function rl(){let{parquetReadObjects:e}=await Promise.resolve().then(()=>(nl(),Kc));return e}async function il(e){return await(await rl())({file:e instanceof Uint8Array?e.buffer:e})}il.responseType=`arrayBuffer`,wo(`parquet`,il);function al(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}function ol(e,t,n,r){this.message=e,this.expected=t,this.found=n,this.location=r,this.name=`SyntaxError`,typeof Error.captureStackTrace==`function`&&Error.captureStackTrace(this,ol)}function sl(e,t){t=t===void 0?{}:t;var n={},r={declaration:pt},i=pt,a=`(`,o=j(`(`,!1),s=`)`,c=j(`)`,!1),l=function(e,t,n,r){return{type:e,name:t,comment:n,fields:r}},u=`simple`,d=j(`simple`,!1),f=`object`,p=j(`object`,!1),m=`table`,h=j(`table`,!1),g=`auto`,_=j(`auto`,!1),v=`primary`,y=j(`primary`,!1),b=`index`,x=j(`index`,!1),S=`unique`,C=j(`unique`,!1),w=function(e,t){return t},T=function(e,t){return e.name&&t.unshift(e),t},E=`#`,D=j(`#`,!1),ee=`;`,te=j(`;`,!1),ne=function(e,t,n){return{type:e,name:t,comment:n}},re=`[`,ie=j(`[`,!1),ae=`]`,oe=j(`]`,!1),se=function(e,t,n,r){return{type:e,size:t,name:n,comment:r}},ce=function(e,t,n,r){return{type:e,vals:t,name:n,comment:r}},le=`,`,ue=j(`,`,!1),de=function(e,t){return t.unshift(e),t},fe=`int`,pe=j(`int`,!1),me=`uint`,he=j(`uint`,!1),ge=`short`,_e=j(`short`,!1),ve=`ushort`,ye=j(`ushort`,!1),O=`byte`,be=j(`byte`,!1),xe=`ubyte`,Se=j(`ubyte`,!1),Ce=`float`,we=j(`float`,!1),Te=`char`,Ee=j(`char`,!1),De=`string`,Oe=j(`string`,!1),ke=`lstring`,Ae=j(`lstring`,!1),je=`enum`,Me=j(`enum`,!1),Ne=`double`,Pe=j(`double`,!1),Fe=`bigint`,Ie=j(`bigint`,!1),Le=`set`,Re=j(`set`,!1),ze=function(e,t){return e+` `+t},Be=/^[a-zA-Z_]/,Ve=st([[`a`,`z`],[`A`,`Z`],`_`],!1,!1),He=/^[a-zA-Z0-9_]/,Ue=st([[`a`,`z`],[`A`,`Z`],[`0`,`9`],`_`],!1,!1),We=function(e){return ot()},Ge=/^[^\n\r]/,Ke=st([`
|
|
15
|
+
`,`\r`],!0,!1),qe=function(e){return e.join(``).replace(/^"/,``).replace(/"$/,``)},Je=lt(`integer`),Ye=/^[0-9]/,Xe=st([[`0`,`9`]],!1,!1),Ze=function(){return parseInt(ot(),10)},Qe=lt(`whitespace`),$e=/^[ \t\n\r]/,et=st([` `,` `,`
|
|
16
|
+
`,`\r`],!1,!1),k=0,tt=0,nt=[{line:1,column:1}],rt=0,it=[],A=0,at;if(`startRule`in t){if(!(t.startRule in r))throw Error(`Can't start parsing from rule "`+t.startRule+`".`);i=r[t.startRule]}function ot(){return e.substring(tt,k)}function j(e,t){return{type:`literal`,text:e,ignoreCase:t}}function st(e,t,n){return{type:`class`,parts:e,inverted:t,ignoreCase:n}}function ct(){return{type:`end`}}function lt(e){return{type:`other`,description:e}}function ut(t){var n=nt[t],r;if(n)return n;for(r=t-1;!nt[r];)r--;for(n=nt[r],n={line:n.line,column:n.column};r<t;)e.charCodeAt(r)===10?(n.line++,n.column=1):n.column++,r++;return nt[t]=n,n}function dt(e,t){var n=ut(e),r=ut(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:r.line,column:r.column}}}function M(e){k<rt||(k>rt&&(rt=k,it=[]),it.push(e))}function ft(e,t,n){return new ol(ol.buildMessage(e,t),e,t,n)}function pt(){var t=k,r=F(),i,u,d,f,p,m,h,g,_,v,y,b;return r===n?(k=t,t=n):(i=mt(),i===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(d=ht(),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(p=_t(),p===n?(k=t,t=n):(m=F(),m===n?(k=t,t=n):(e.charCodeAt(k)===40?(h=a,k++):(h=n,A===0&&M(o)),h===n?(k=t,t=n):(g=F(),g===n?(k=t,t=n):(_=vt(),_===n?(k=t,t=n):(v=F(),v===n?(k=t,t=n):(e.charCodeAt(k)===41?(y=s,k++):(y=n,A===0&&M(c)),y===n?(k=t,t=n):(b=F(),b===n?(k=t,t=n):(tt=t,r=l(i,d,p,_),t=r))))))))))))),t}function mt(){var t;return e.substr(k,6)===u?(t=u,k+=6):(t=n,A===0&&M(d)),t===n&&(e.substr(k,6)===f?(t=f,k+=6):(t=n,A===0&&M(p)),t===n&&(e.substr(k,5)===m?(t=m,k+=5):(t=n,A===0&&M(h)))),t}function ht(){var t=N(),r,i,a;return t===n&&(t=k,r=N(),r===n?(k=t,t=n):(i=gt(),i===n?(k=t,t=n):(r=[r,i],t=r)),t===n&&(t=k,r=N(),r===n?(k=t,t=n):(e.substr(k,4)===g?(i=g,k+=4):(i=n,A===0&&M(_)),i===n?(k=t,t=n):(r=[r,i],t=r)),t===n&&(t=k,r=N(),r===n?(k=t,t=n):(i=gt(),i===n?(k=t,t=n):(e.substr(k,4)===g?(a=g,k+=4):(a=n,A===0&&M(_)),a===n?(k=t,t=n):(r=[r,i,a],t=r)))))),t}function gt(){var t;return e.substr(k,7)===v?(t=v,k+=7):(t=n,A===0&&M(y)),t===n&&(e.substr(k,5)===b?(t=b,k+=5):(t=n,A===0&&M(x)),t===n&&(e.substr(k,6)===S?(t=S,k+=6):(t=n,A===0&&M(C)))),t}function _t(){var e=Tt();return e===n&&(e=F()),e}function vt(){var e=k,t=xt(),r,i,a,o,s;if(t!==n)if(r=F(),r!==n){for(i=[],a=k,o=F(),o===n?(k=a,a=n):(s=xt(),s===n?(k=a,a=n):(tt=a,o=w(t,s),a=o));a!==n;)i.push(a),a=k,o=F(),o===n?(k=a,a=n):(s=xt(),s===n?(k=a,a=n):(tt=a,o=w(t,s),a=o));i===n?(k=e,e=n):(a=F(),a===n?(k=e,e=n):(tt=e,t=T(t,i),e=t))}else k=e,e=n;else k=e,e=n;return e}function yt(){var t;return e.charCodeAt(k)===35?(t=E,k++):(t=n,A===0&&M(D)),t}function bt(){var e=k,t=F(),r,i,a;return t===n?(k=e,e=n):(r=yt(),r===n?(k=e,e=n):(i=Tt(),i===n?(k=e,e=n):(a=F(),a===n?(k=e,e=n):(t=[t,r,i,a],e=t)))),e}function xt(){var t=k,r=Ct(),i,l,u,d,f,p,m,h,g,_,v,y;return r===n?(k=t,t=n):(i=F(),i===n?(k=t,t=n):(l=N(),l===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(e.charCodeAt(k)===59?(d=ee,k++):(d=n,A===0&&M(te)),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(p=_t(),p===n?(k=t,t=n):(tt=t,r=ne(r,l,p),t=r))))))),t===n&&(t=k,r=Ct(),r===n?(k=t,t=n):(i=F(),i===n?(k=t,t=n):(e.charCodeAt(k)===91?(l=re,k++):(l=n,A===0&&M(ie)),l===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(d=wt(),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(e.charCodeAt(k)===93?(p=ae,k++):(p=n,A===0&&M(oe)),p===n?(k=t,t=n):(m=F(),m===n?(k=t,t=n):(h=N(),h===n?(k=t,t=n):(g=F(),g===n?(k=t,t=n):(e.charCodeAt(k)===59?(_=ee,k++):(_=n,A===0&&M(te)),_===n?(k=t,t=n):(v=F(),v===n?(k=t,t=n):(y=_t(),y===n?(k=t,t=n):(tt=t,r=se(r,d,h,y),t=r))))))))))))),t===n&&(t=k,r=Ct(),r===n?(k=t,t=n):(i=F(),i===n?(k=t,t=n):(e.charCodeAt(k)===40?(l=a,k++):(l=n,A===0&&M(o)),l===n?(k=t,t=n):(u=F(),u===n?(k=t,t=n):(d=St(),d===n?(k=t,t=n):(f=F(),f===n?(k=t,t=n):(e.charCodeAt(k)===41?(p=s,k++):(p=n,A===0&&M(c)),p===n?(k=t,t=n):(m=F(),m===n?(k=t,t=n):(h=N(),h===n?(k=t,t=n):(g=F(),g===n?(k=t,t=n):(e.charCodeAt(k)===59?(_=ee,k++):(_=n,A===0&&M(te)),_===n?(k=t,t=n):(v=F(),v===n?(k=t,t=n):(y=_t(),y===n?(k=t,t=n):(tt=t,r=ce(r,d,h,y),t=r))))))))))))),t===n&&(t=bt()))),t}function St(){var t=k,r=N(),i,a,o,s,c;if(r!==n){for(i=[],a=k,e.charCodeAt(k)===44?(o=le,k++):(o=n,A===0&&M(ue)),o===n?(k=a,a=n):(s=F(),s===n?(k=a,a=n):(c=N(),c===n?(k=a,a=n):(tt=a,o=w(r,c),a=o)));a!==n;)i.push(a),a=k,e.charCodeAt(k)===44?(o=le,k++):(o=n,A===0&&M(ue)),o===n?(k=a,a=n):(s=F(),s===n?(k=a,a=n):(c=N(),c===n?(k=a,a=n):(tt=a,o=w(r,c),a=o)));i===n?(k=t,t=n):(tt=t,r=de(r,i),t=r)}else k=t,t=n;return t}function Ct(){var t,r,i,a;return e.substr(k,3)===fe?(t=fe,k+=3):(t=n,A===0&&M(pe)),t===n&&(e.substr(k,4)===me?(t=me,k+=4):(t=n,A===0&&M(he)),t===n&&(e.substr(k,5)===ge?(t=ge,k+=5):(t=n,A===0&&M(_e)),t===n&&(e.substr(k,6)===ve?(t=ve,k+=6):(t=n,A===0&&M(ye)),t===n&&(e.substr(k,4)===O?(t=O,k+=4):(t=n,A===0&&M(be)),t===n&&(e.substr(k,5)===xe?(t=xe,k+=5):(t=n,A===0&&M(Se)),t===n&&(e.substr(k,5)===Ce?(t=Ce,k+=5):(t=n,A===0&&M(we)),t===n&&(e.substr(k,4)===Te?(t=Te,k+=4):(t=n,A===0&&M(Ee)),t===n&&(e.substr(k,6)===De?(t=De,k+=6):(t=n,A===0&&M(Oe)),t===n&&(e.substr(k,7)===ke?(t=ke,k+=7):(t=n,A===0&&M(Ae)),t===n&&(e.substr(k,4)===je?(t=je,k+=4):(t=n,A===0&&M(Me)),t===n&&(e.substr(k,6)===Ne?(t=Ne,k+=6):(t=n,A===0&&M(Pe)),t===n&&(e.substr(k,6)===Fe?(t=Fe,k+=6):(t=n,A===0&&M(Ie)),t===n&&(e.substr(k,3)===Le?(t=Le,k+=3):(t=n,A===0&&M(Re)),t===n&&(t=k,r=mt(),r===n?(k=t,t=n):(i=F(),i===n?(k=t,t=n):(a=ht(),a===n?(k=t,t=n):(tt=t,r=ze(r,a),t=r))))))))))))))))),t}function wt(){var e=P();return e===n&&(e=N()),e}function N(){var t=k,r=k,i,a,o;if(Be.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(Ve)),i!==n){for(a=[],He.test(e.charAt(k))?(o=e.charAt(k),k++):(o=n,A===0&&M(Ue));o!==n;)a.push(o),He.test(e.charAt(k))?(o=e.charAt(k),k++):(o=n,A===0&&M(Ue));a===n?(k=r,r=n):(i=[i,a],r=i)}else k=r,r=n;return r!==n&&(tt=t,r=We(r)),t=r,t}function Tt(){var t=k,r=[],i;for(Ge.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(Ke));i!==n;)r.push(i),Ge.test(e.charAt(k))?(i=e.charAt(k),k++):(i=n,A===0&&M(Ke));return r!==n&&(tt=t,r=qe(r)),t=r,t}function P(){var t,r,i,a;if(A++,t=k,r=F(),r!==n){if(i=[],Ye.test(e.charAt(k))?(a=e.charAt(k),k++):(a=n,A===0&&M(Xe)),a!==n)for(;a!==n;)i.push(a),Ye.test(e.charAt(k))?(a=e.charAt(k),k++):(a=n,A===0&&M(Xe));else i=n;i===n?(k=t,t=n):(tt=t,r=Ze(),t=r)}else k=t,t=n;return A--,t===n&&(r=n,A===0&&M(Je)),t}function F(){var t,r;for(A++,t=[],$e.test(e.charAt(k))?(r=e.charAt(k),k++):(r=n,A===0&&M(et));r!==n;)t.push(r),$e.test(e.charAt(k))?(r=e.charAt(k),k++):(r=n,A===0&&M(et));return A--,t===n&&(r=n,A===0&&M(Qe)),t}if(at=i(),at!==n&&k===e.length)return at;throw at!==n&&k<e.length&&M(ct()),ft(it,rt<e.length?e.charAt(rt):null,rt<e.length?dt(rt,rt+1):dt(rt,rt))}var cl,ll=n((()=>{al(ol,Error),ol.buildMessage=function(e,t){var n={literal:function(e){return`"`+i(e.text)+`"`},class:function(e){var t=``,n;for(n=0;n<e.parts.length;n++)t+=e.parts[n]instanceof Array?a(e.parts[n][0])+`-`+a(e.parts[n][1]):a(e.parts[n]);return`[`+(e.inverted?`^`:``)+t+`]`},any:function(e){return`any character`},end:function(e){return`end of input`},other:function(e){return e.description}};function r(e){return e.charCodeAt(0).toString(16).toUpperCase()}function i(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\0/g,`\\0`).replace(/\t/g,`\\t`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/[\x00-\x0F]/g,function(e){return`\\x0`+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return`\\x`+r(e)})}function a(e){return e.replace(/\\/g,`\\\\`).replace(/\]/g,`\\]`).replace(/\^/g,`\\^`).replace(/-/g,`\\-`).replace(/\0/g,`\\0`).replace(/\t/g,`\\t`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/[\x00-\x0F]/g,function(e){return`\\x0`+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return`\\x`+r(e)})}function o(e){return n[e.type](e)}function s(e){var t=Array(e.length),n,r;for(n=0;n<e.length;n++)t[n]=o(e[n]);if(t.sort(),t.length>0){for(n=1,r=1;n<t.length;n++)t[n-1]!==t[n]&&(t[r]=t[n],r++);t.length=r}switch(t.length){case 1:return t[0];case 2:return t[0]+` or `+t[1];default:return t.slice(0,-1).join(`, `)+`, or `+t[t.length-1]}}function c(e){return e?`"`+i(e)+`"`:`end of input`}return`Expected `+s(e)+` but `+c(t)+` found.`},cl={SyntaxError:ol,parse:sl}})),ul=r({bigChain:()=>dl,bigGenePred:()=>fl,bigInteract:()=>pl,bigLink:()=>ml,bigMaf:()=>hl,bigNarrowPeak:()=>gl,bigPsl:()=>_l,defaultBedSchema:()=>vl,mafFrames:()=>yl,mafSummary:()=>bl}),dl,fl,pl,ml,hl,gl,_l,vl,yl,bl,xl=n((()=>{dl=`table bigChain
|
|
17
17
|
"bigChain pairwise alignment"
|
|
18
18
|
(
|
|
19
19
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -28,7 +28,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
28
28
|
uint qStart; "start of alignment on query sequence"
|
|
29
29
|
uint qEnd; "end of alignment on query sequence"
|
|
30
30
|
uint chainScore; "score from chain"
|
|
31
|
-
)`,
|
|
31
|
+
)`,fl=`table bigGenePred
|
|
32
32
|
"bigGenePred gene models"
|
|
33
33
|
(
|
|
34
34
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -51,7 +51,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
51
51
|
string geneName; "Primary identifier for gene"
|
|
52
52
|
string geneName2; "Alternative/human readable gene name"
|
|
53
53
|
string geneType; "Gene type"
|
|
54
|
-
)`,
|
|
54
|
+
)`,pl=`table interact
|
|
55
55
|
"interaction between two regions"
|
|
56
56
|
(
|
|
57
57
|
string chrom; "Chromosome (or contig, scaffold, etc.). For interchromosomal, use 2 records"
|
|
@@ -73,7 +73,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
73
73
|
string targetName; "Identifier of target/upper/this region"
|
|
74
74
|
string targetStrand; "Orientation of target/upper/this region: + or -. Use . if not applicable"
|
|
75
75
|
|
|
76
|
-
)`,
|
|
76
|
+
)`,ml=`table bigLink
|
|
77
77
|
"bigLink pairwise alignment"
|
|
78
78
|
(
|
|
79
79
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -81,14 +81,14 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
81
81
|
uint chromEnd; "End position in chromosome"
|
|
82
82
|
string name; "Name or ID of item, ideally both human readable and unique"
|
|
83
83
|
uint qStart; "start of alignment on query sequence"
|
|
84
|
-
)`,
|
|
84
|
+
)`,hl=`table bedMaf
|
|
85
85
|
"Bed3 with MAF block"
|
|
86
86
|
(
|
|
87
87
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
88
88
|
uint chromStart; "Start position in chromosome"
|
|
89
89
|
uint chromEnd; "End position in chromosome"
|
|
90
90
|
lstring mafBlock; "MAF block"
|
|
91
|
-
)`,
|
|
91
|
+
)`,gl=`table bigNarrowPeak
|
|
92
92
|
"BED6+4 Peaks of signal enrichment based on pooled, normalized (interpreted) data."
|
|
93
93
|
(
|
|
94
94
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -101,7 +101,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
101
101
|
float pValue; "Statistical significance of signal value (-log10). Set to -1 if not used."
|
|
102
102
|
float qValue; "Statistical significance with multiple-test correction applied (FDR -log10). Set to -1 if not used."
|
|
103
103
|
int peak; "Point-source called for this peak; 0-based offset from chromStart. Set to -1 if no point-source called."
|
|
104
|
-
)`,
|
|
104
|
+
)`,_l=`table bigPsl
|
|
105
105
|
"bigPsl pairwise alignment"
|
|
106
106
|
(
|
|
107
107
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -133,7 +133,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
133
133
|
uint repMatch; " Number of bases that match but are part of repeats "
|
|
134
134
|
uint nCount; " Number of 'N' bases "
|
|
135
135
|
uint seqType; "0=empty, 1=nucleotide, 2=amino_acid"
|
|
136
|
-
)`,
|
|
136
|
+
)`,vl=`table defaultBedSchema
|
|
137
137
|
"BED12"
|
|
138
138
|
(
|
|
139
139
|
string chrom; "The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671)."
|
|
@@ -148,7 +148,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
148
148
|
uint blockCount; " The number of blocks (exons) in the BED line."
|
|
149
149
|
uint[blockCount] blockSizes; " A comma-separated list of the block sizes. The number of items in this list should correspond to blockCount."
|
|
150
150
|
uint[blockCount] blockStarts; "A comma-separated list of block starts. All of the blockStart positions should be calculated relative to chromStart. The number of items in this list should correspond to blockCount."
|
|
151
|
-
)`,
|
|
151
|
+
)`,yl=`table mafFrames
|
|
152
152
|
"codon frame assignment for MAF components"
|
|
153
153
|
(
|
|
154
154
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -162,7 +162,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
162
162
|
int nextFramePos; "target position of the next base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous"
|
|
163
163
|
ubyte isExonStart; "does this start the CDS portion of an exon?"
|
|
164
164
|
ubyte isExonEnd; "does this end the CDS portion of an exon?"
|
|
165
|
-
)`,
|
|
165
|
+
)`,bl=`table mafSummary
|
|
166
166
|
"Positions and scores for alignment blocks"
|
|
167
167
|
(
|
|
168
168
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -172,16 +172,16 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
172
172
|
float score; "Floating point score."
|
|
173
173
|
char[1] leftStatus; "Gap/break annotation for preceding block"
|
|
174
174
|
char[1] rightStatus; "Gap/break annotation for following block"
|
|
175
|
-
)`})),Cl
|
|
176
|
-
`))if(t.startsWith(`>`))r={identifier:t.match(/>(\S+)/)[1],sequence:``},n.push(r);else if(r)r.sequence+=t.trim();else throw Error(`Invalid fasta file!`);return n}To(`fasta`,Yl);function Xl(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Zl(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Ql(e){return e[e.length-1]}function $l(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}function eu(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function tu(e,t){switch(arguments.length){case 0:break;case 1:typeof e==`function`?this.interpolator(e):this.range(e);break;default:this.domain(e),typeof t==`function`?this.interpolator(t):this.range(t);break}return this}var nu=Symbol(`implicit`);function ru(){var e=new gn,t=[],n=[],r=nu;function i(i){let a=e.get(i);if(a===void 0){if(r!==nu)return r;e.set(i,a=t.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new gn;for(let r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return ru(t,n).unknown(r)},eu.apply(i,arguments),i}function iu(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function au(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function ou(){}var su=.7,cu=1/su,lu=`\\s*([+-]?\\d+)\\s*`,uu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,du=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,fu=/^#([0-9a-f]{3,8})$/,pu=RegExp(`^rgb\\(${lu},${lu},${lu}\\)$`),mu=RegExp(`^rgb\\(${du},${du},${du}\\)$`),hu=RegExp(`^rgba\\(${lu},${lu},${lu},${uu}\\)$`),gu=RegExp(`^rgba\\(${du},${du},${du},${uu}\\)$`),_u=RegExp(`^hsl\\(${uu},${du},${du}\\)$`),vu=RegExp(`^hsla\\(${uu},${du},${du},${uu}\\)$`),yu={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};iu(ou,wu,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:bu,formatHex:bu,formatHex8:xu,formatHsl:Su,formatRgb:Cu,toString:Cu});function bu(){return this.rgb().formatHex()}function xu(){return this.rgb().formatHex8()}function Su(){return Lu(this).formatHsl()}function Cu(){return this.rgb().formatRgb()}function wu(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=fu.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Tu(t):n===3?new ku(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Eu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Eu(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=pu.exec(e))?new ku(t[1],t[2],t[3],1):(t=mu.exec(e))?new ku(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=hu.exec(e))?Eu(t[1],t[2],t[3],t[4]):(t=gu.exec(e))?Eu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=_u.exec(e))?Iu(t[1],t[2]/100,t[3]/100,1):(t=vu.exec(e))?Iu(t[1],t[2]/100,t[3]/100,t[4]):yu.hasOwnProperty(e)?Tu(yu[e]):e===`transparent`?new ku(NaN,NaN,NaN,0):null}function Tu(e){return new ku(e>>16&255,e>>8&255,e&255,1)}function Eu(e,t,n,r){return r<=0&&(e=t=n=NaN),new ku(e,t,n,r)}function Du(e){return e instanceof ou||(e=wu(e)),e?(e=e.rgb(),new ku(e.r,e.g,e.b,e.opacity)):new ku}function Ou(e,t,n,r){return arguments.length===1?Du(e):new ku(e,t,n,r??1)}function ku(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}iu(ku,Ou,au(ou,{brighter(e){return e=e==null?cu:cu**+e,new ku(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?su:su**+e,new ku(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ku(Pu(this.r),Pu(this.g),Pu(this.b),Nu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Au,formatHex:Au,formatHex8:ju,formatRgb:Mu,toString:Mu}));function Au(){return`#${Fu(this.r)}${Fu(this.g)}${Fu(this.b)}`}function ju(){return`#${Fu(this.r)}${Fu(this.g)}${Fu(this.b)}${Fu((isNaN(this.opacity)?1:this.opacity)*255)}`}function Mu(){let e=Nu(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Pu(this.r)}, ${Pu(this.g)}, ${Pu(this.b)}${e===1?`)`:`, ${e})`}`}function Nu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Pu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Fu(e){return e=Pu(e),(e<16?`0`:``)+e.toString(16)}function Iu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new zu(e,t,n,r)}function Lu(e){if(e instanceof zu)return new zu(e.h,e.s,e.l,e.opacity);if(e instanceof ou||(e=wu(e)),!e)return new zu;if(e instanceof zu)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new zu(o,s,c,e.opacity)}function Ru(e,t,n,r){return arguments.length===1?Lu(e):new zu(e,t,n,r??1)}function zu(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}iu(zu,Ru,au(ou,{brighter(e){return e=e==null?cu:cu**+e,new zu(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?su:su**+e,new zu(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new ku(Hu(e>=240?e-240:e+120,i,r),Hu(e,i,r),Hu(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new zu(Bu(this.h),Vu(this.s),Vu(this.l),Nu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Nu(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Bu(this.h)}, ${Vu(this.s)*100}%, ${Vu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Bu(e){return e=(e||0)%360,e<0?e+360:e}function Vu(e){return Math.max(0,Math.min(1,e||0))}function Hu(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Uu=Math.PI/180,Wu=180/Math.PI,Gu=18,Ku=.96422,qu=1,Ju=.82521,Yu=4/29,Xu=6/29,Zu=3*Xu*Xu,Qu=Xu*Xu*Xu;function $u(e){if(e instanceof td)return new td(e.l,e.a,e.b,e.opacity);if(e instanceof cd)return ld(e);e instanceof ku||(e=Du(e));var t=ad(e.r),n=ad(e.g),r=ad(e.b),i=nd((.2225045*t+.7168786*n+.0606169*r)/qu),a,o;return t===n&&n===r?a=o=i:(a=nd((.4360747*t+.3850649*n+.1430804*r)/Ku),o=nd((.0139322*t+.0971045*n+.7141733*r)/Ju)),new td(116*i-16,500*(a-i),200*(i-o),e.opacity)}function ed(e,t,n,r){return arguments.length===1?$u(e):new td(e,t,n,r??1)}function td(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}iu(td,ed,au(ou,{brighter(e){return new td(this.l+Gu*(e??1),this.a,this.b,this.opacity)},darker(e){return new td(this.l-Gu*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=Ku*rd(t),e=qu*rd(e),n=Ju*rd(n),new ku(id(3.1338561*t-1.6168667*e-.4906146*n),id(-.9787684*t+1.9161415*e+.033454*n),id(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function nd(e){return e>Qu?e**(1/3):e/Zu+Yu}function rd(e){return e>Xu?e*e*e:Zu*(e-Yu)}function id(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function ad(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function od(e){if(e instanceof cd)return new cd(e.h,e.c,e.l,e.opacity);if(e instanceof td||(e=$u(e)),e.a===0&&e.b===0)return new cd(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Wu;return new cd(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function sd(e,t,n,r){return arguments.length===1?od(e):new cd(e,t,n,r??1)}function cd(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function ld(e){if(isNaN(e.h))return new td(e.l,0,0,e.opacity);var t=e.h*Uu;return new td(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}iu(cd,sd,au(ou,{brighter(e){return new cd(this.h,this.c,this.l+Gu*(e??1),this.opacity)},darker(e){return new cd(this.h,this.c,this.l-Gu*(e??1),this.opacity)},rgb(){return ld(this).rgb()}}));var ud=-.14861,dd=1.78277,fd=-.29227,pd=-.90649,md=1.97294,hd=md*pd,gd=md*dd,_d=dd*fd-pd*ud;function vd(e){if(e instanceof bd)return new bd(e.h,e.s,e.l,e.opacity);e instanceof ku||(e=Du(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(_d*r+hd*t-gd*n)/(_d+hd-gd),a=r-i,o=(md*(n-i)-fd*a)/pd,s=Math.sqrt(o*o+a*a)/(md*i*(1-i)),c=s?Math.atan2(o,a)*Wu-120:NaN;return new bd(c<0?c+360:c,s,i,e.opacity)}function yd(e,t,n,r){return arguments.length===1?vd(e):new bd(e,t,n,r??1)}function bd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}iu(bd,yd,au(ou,{brighter(e){return e=e==null?cu:cu**+e,new bd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?su:su**+e,new bd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Uu,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new ku(255*(t+n*(ud*r+dd*i)),255*(t+n*(fd*r+pd*i)),255*(t+md*r*n),this.opacity)}}));function xd(e,t,n,r,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*n+(1+3*e+3*a-3*o)*r+o*i)/6}function Sd(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[r],a=e[r+1],o=r>0?e[r-1]:2*i-a,s=r<t-1?e[r+2]:2*a-i;return xd((n-r/t)*t,o,i,a,s)}}function Cd(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),i=e[(r+t-1)%t],a=e[r%t],o=e[(r+1)%t],s=e[(r+2)%t];return xd((n-r/t)*t,i,a,o,s)}}var wd=e=>()=>e;function Td(e,t){return function(n){return e+n*t}}function Ed(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Dd(e,t){var n=t-e;return n?Td(e,n>180||n<-180?n-360*Math.round(n/360):n):wd(isNaN(e)?t:e)}function Od(e){return(e=+e)==1?kd:function(t,n){return n-t?Ed(t,n,e):wd(isNaN(t)?n:t)}}function kd(e,t){var n=t-e;return n?Td(e,n):wd(isNaN(e)?t:e)}var Ad=(function e(t){var n=Od(t);function r(e,t){var r=n((e=Ou(e)).r,(t=Ou(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=kd(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function jd(e){return function(t){var n=t.length,r=Array(n),i=Array(n),a=Array(n),o,s;for(o=0;o<n;++o)s=Ou(t[o]),r[o]=s.r||0,i[o]=s.g||0,a[o]=s.b||0;return r=e(r),i=e(i),a=e(a),s.opacity=1,function(e){return s.r=r(e),s.g=i(e),s.b=a(e),s+``}}}var Md=jd(Sd),Nd=jd(Cd);function Pd(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Fd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Id(e,t){return(Fd(t)?Pd:Ld)(e,t)}function Ld(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Kd(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Rd(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function zd(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function Bd(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Kd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Vd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hd=new RegExp(Vd.source,`g`);function Ud(e){return function(){return e}}function Wd(e){return function(t){return e(t)+``}}function Gd(e,t){var n=Vd.lastIndex=Hd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Vd.exec(e))&&(i=Hd.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:zd(r,i)})),n=Hd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Wd(c[0].x):Ud(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function Kd(e,t){var n=typeof t,r;return t==null||n===`boolean`?wd(t):(n===`number`?zd:n===`string`?(r=wu(t))?(t=r,Ad):Gd:t instanceof wu?Ad:t instanceof Date?Rd:Fd(t)?Pd:Array.isArray(t)?Ld:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?Bd:zd)(e,t)}function qd(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function Jd(e,t){var n=Dd(+e,+t);return function(e){var t=n(e);return t-360*Math.floor(t/360)}}function Yd(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Xd=180/Math.PI,Zd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qd(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Xd,skewX:Math.atan(c)*Xd,scaleX:o,scaleY:s}}var $d;function ef(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Zd:Qd(t.a,t.b,t.c,t.d,t.e,t.f)}function tf(e){return e==null||($d||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),$d.setAttribute(`transform`,e),!(e=$d.transform.baseVal.consolidate()))?Zd:(e=e.matrix,Qd(e.a,e.b,e.c,e.d,e.e,e.f))}function nf(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:zd(e,i)},{i:c-2,x:zd(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:zd(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:zd(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:zd(e,n)},{i:s-2,x:zd(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var rf=nf(ef,`px, `,`px)`,`deg)`),af=nf(tf,`, `,`)`,`)`),of=1e-12;function sf(e){return((e=Math.exp(e))+1/e)/2}function cf(e){return((e=Math.exp(e))-1/e)/2}function lf(e){return((e=Math.exp(2*e))-1)/(e+1)}var uf=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<of)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=sf(y),c=s/(n*g)*(i*lf(t*r+y)-cf(y));return[a+c*d,o+c*f,s*i/sf(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4);function df(e){return function(t,n){var r=e((t=Ru(t)).h,(n=Ru(n)).h),i=kd(t.s,n.s),a=kd(t.l,n.l),o=kd(t.opacity,n.opacity);return function(e){return t.h=r(e),t.s=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var ff=df(Dd),pf=df(kd);function mf(e,t){var n=kd((e=ed(e)).l,(t=ed(t)).l),r=kd(e.a,t.a),i=kd(e.b,t.b),a=kd(e.opacity,t.opacity);return function(t){return e.l=n(t),e.a=r(t),e.b=i(t),e.opacity=a(t),e+``}}function hf(e){return function(t,n){var r=e((t=sd(t)).h,(n=sd(n)).h),i=kd(t.c,n.c),a=kd(t.l,n.l),o=kd(t.opacity,n.opacity);return function(e){return t.h=r(e),t.c=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var gf=hf(Dd),_f=hf(kd);function vf(e){return(function t(n){n=+n;function r(t,r){var i=e((t=yd(t)).h,(r=yd(r)).h),a=kd(t.s,r.s),o=kd(t.l,r.l),s=kd(t.opacity,r.opacity);return function(e){return t.h=i(e),t.s=a(e),t.l=o(e**+n),t.opacity=s(e),t+``}}return r.gamma=t,r})(1)}var yf=vf(Dd),bf=vf(kd);function xf(e,t){t===void 0&&(t=e,e=Kd);for(var n=0,r=t.length-1,i=t[0],a=Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return function(e){var t=Math.max(0,Math.min(r-1,Math.floor(e*=r)));return a[t](e-t)}}function Sf(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var Cf=r({interpolate:()=>Kd,interpolateArray:()=>Id,interpolateBasis:()=>Sd,interpolateBasisClosed:()=>Cd,interpolateCubehelix:()=>yf,interpolateCubehelixLong:()=>bf,interpolateDate:()=>Rd,interpolateDiscrete:()=>qd,interpolateHcl:()=>gf,interpolateHclLong:()=>_f,interpolateHsl:()=>ff,interpolateHslLong:()=>pf,interpolateHue:()=>Jd,interpolateLab:()=>mf,interpolateNumber:()=>zd,interpolateNumberArray:()=>Pd,interpolateObject:()=>Bd,interpolateRgb:()=>Ad,interpolateRgbBasis:()=>Md,interpolateRgbBasisClosed:()=>Nd,interpolateRound:()=>Yd,interpolateString:()=>Gd,interpolateTransformCss:()=>rf,interpolateTransformSvg:()=>af,interpolateZoom:()=>uf,piecewise:()=>xf,quantize:()=>Sf});function wf(e){return function(){return e}}function Tf(e){return+e}var Ef=[0,1];function Df(e){return e}function Of(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:wf(isNaN(t)?NaN:.5)}function kf(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function Af(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Of(i,r),a=n(o,a)):(r=Of(r,i),a=n(a,o)),function(e){return a(r(e))}}function jf(e,t,n){var r=Math.min(e.length,t.length)-1,i=Array(r),a=Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Of(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=fn(e,t,1,r)-1;return a[n](i[n](t))}}function Mf(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Nf(){var e=Ef,t=Ef,n=Kd,r,i,a,o=Df,s,c,l;function u(){var n=Math.min(e.length,t.length);return o!==Df&&(o=kf(e[0],e[n-1])),s=n>2?jf:Af,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),zd))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,Tf),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=Yd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:Df,u()):o!==Df},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function Pf(){return Nf()(Df,Df)}function Ff(e,t,n,r){var i=Nn(e,t,n),a;switch(r=Xn(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=fr(i,o))&&(r.precision=a),lr(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=pr(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=dr(i))&&(r.precision=a-(r.type===`%`)*2);break}return cr(r)}function If(e){var t=e.domain;return e.ticks=function(e){var n=t();return jn(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Ff(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s<o&&(l=o,o=s,s=l,l=i,i=a,a=l);u-- >0;){if(l=Mn(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function Lf(){var e=Pf();return e.copy=function(){return Mf(e,Lf())},eu.apply(e,arguments),If(e)}function Rf(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,Tf),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Rf(e).unknown(t)},e=arguments.length?Array.from(e,Tf):[0,1],If(n)}function zf(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return a<i&&(o=n,n=r,r=o,o=i,i=a,a=o),e[n]=t.floor(i),e[r]=t.ceil(a),e}function Bf(e){return Math.log(e)}function Vf(e){return Math.exp(e)}function Hf(e){return-Math.log(-e)}function Uf(e){return-Math.exp(-e)}function Wf(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Gf(e){return e===10?Wf:e===Math.E?Math.exp:t=>e**+t}function Kf(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function qf(e){return(t,n)=>-e(-t,n)}function Jf(e){let t=e(Bf,Vf),n=t.domain,r=10,i,a;function o(){return i=Kf(r),a=Gf(r),n()[0]<0?(i=qf(i),a=qf(a),e(Hf,Uf)):e(Bf,Vf),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s<o;c&&([o,s]=[s,o]);let l=i(o),u=i(s),d,f,p=e==null?10:+e,m=[];if(!(r%1)&&u-l<p){if(l=Math.floor(l),u=Math.ceil(u),o>0){for(;l<=u;++l)for(d=1;d<r;++d)if(f=l<0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}m.length*2<p&&(m=jn(o,s,p))}else m=jn(l,u,Math.min(u-l,p)).map(a);return c?m.reverse():m},t.tickFormat=(e,n)=>{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=Xn(n)).precision==null&&(n.trim=!0),n=cr(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*r<r-.5&&(t*=r),t<=o?n(e):``}},t.nice=()=>n(zf(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function Yf(){let e=Jf(Nf()).domain([1,10]);return e.copy=()=>Mf(e,Yf()).base(e.base()),eu.apply(e,arguments),e}function Xf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Zf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Qf(e){var t=1,n=e(Xf(t),Zf(t));return n.constant=function(n){return arguments.length?e(Xf(t=+n),Zf(t)):t},If(n)}function $f(){var e=Qf(Nf());return e.copy=function(){return Mf(e,$f()).constant(e.constant())},eu.apply(e,arguments)}function ep(e){return function(t){return t<0?-((-t)**+e):t**+e}}function tp(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function np(e){return e<0?-e*e:e*e}function rp(e){var t=e(Df,Df),n=1;function r(){return n===1?e(Df,Df):n===.5?e(tp,np):e(ep(n),ep(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},If(t)}function ip(){var e=rp(Nf());return e.copy=function(){return Mf(e,ip()).exponent(e.exponent())},eu.apply(e,arguments),e}function ap(){return ip.apply(null,arguments).exponent(.5)}function op(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r<i;)n[r-1]=zn(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[fn(n,e)]}return a.invertExtent=function(r){var i=t.indexOf(r);return i<0?[NaN,NaN]:[i>0?n[i-1]:e[0],i<n.length?n[i]:e[e.length-1]]},a.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)n!=null&&!isNaN(n=+n)&&e.push(n);return e.sort(an),i()},a.range=function(e){return arguments.length?(t=Array.from(e),i()):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.quantiles=function(){return n.slice()},a.copy=function(){return op().domain(e).range(t).unknown(r)},eu.apply(a,arguments)}function sp(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[fn(r,e,0,n)]:a}function s(){var i=-1;for(r=Array(n);++i<n;)r[i]=((i+1)*t-(i-n)*e)/(n+1);return o}return o.domain=function(n){return arguments.length?([e,t]=n,e=+e,t=+t,s()):[e,t]},o.range=function(e){return arguments.length?(n=(i=Array.from(e)).length-1,s()):i.slice()},o.invertExtent=function(a){var o=i.indexOf(a);return o<0?[NaN,NaN]:o<1?[e,r[0]]:o>=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return sp().domain([e,t]).range(i).unknown(a)},eu.apply(If(o),arguments)}function cp(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[fn(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return cp().domain(e).range(t).unknown(n)},eu.apply(i,arguments)}function lp(e){return new Date(e)}function up(e){return e instanceof Date?+e:+new Date(+e)}function dp(e,t,n,r,i,a,o,s,c,l){var u=Pf(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)<e?p:s(e)<e?m:o(e)<e?h:a(e)<e?g:r(e)<e?i(e)<e?_:v:n(e)<e?y:b)(e)}return u.invert=function(e){return new Date(d(e))},u.domain=function(e){return arguments.length?f(Array.from(e,up)):f().map(lp)},u.ticks=function(t){var n=f();return e(n[0],n[n.length-1],t??10)},u.tickFormat=function(e,t){return t==null?x:l(t)},u.nice=function(e){var n=f();return(!e||typeof e.range!=`function`)&&(e=t(n[0],n[n.length-1],e??10)),e?f(zf(n,e)):u},u.copy=function(){return Mf(u,dp(e,t,n,r,i,a,o,s,c,l))},u}function fp(){return eu.apply(dp(ni,ri,Zr,Yr,Pr,Ar,Or,Er,Tr,Wa).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function pp(){return eu.apply(dp(ei,ti,Qr,Xr,Hr,jr,kr,Dr,Tr,Ka).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function mp(){var e=0,t=1,n,r,i,a,o=Df,s=!1,c;function l(e){return e==null||isNaN(e=+e)?c:o(i===0?.5:(e=(a(e)-n)*i,s?Math.max(0,Math.min(1,e)):e))}l.domain=function(o){return arguments.length?([e,t]=o,n=a(e=+e),r=a(t=+t),i=n===r?0:1/(r-n),l):[e,t]},l.clamp=function(e){return arguments.length?(s=!!e,l):s},l.interpolator=function(e){return arguments.length?(o=e,l):o};function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,o=e(n,r),l):[o(0),o(1)]}}return l.range=u(Kd),l.rangeRound=u(Yd),l.unknown=function(e){return arguments.length?(c=e,l):c},function(o){return a=o,n=o(e),r=o(t),i=n===r?0:1/(r-n),l}}function hp(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function gp(){var e=If(mp()(Df));return e.copy=function(){return hp(e,gp())},tu.apply(e,arguments)}function _p(){var e=Jf(mp()).domain([1,10]);return e.copy=function(){return hp(e,_p()).base(e.base())},tu.apply(e,arguments)}function vp(){var e=Qf(mp());return e.copy=function(){return hp(e,vp()).constant(e.constant())},tu.apply(e,arguments)}function yp(){var e=rp(mp());return e.copy=function(){return hp(e,yp()).exponent(e.exponent())},tu.apply(e,arguments)}function bp(){return yp.apply(null,arguments).exponent(.5)}function xp(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=Df,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*e<r*a?s:c),l(d?Math.max(0,Math.min(1,e)):e))}p.domain=function(l){return arguments.length?([e,t,n]=l,i=u(e=+e),a=u(t=+t),o=u(n=+n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p):[e,t,n]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(l=e,p):l};function m(e){return function(t){var n,r,i;return arguments.length?([n,r,i]=t,l=xf(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Kd),p.rangeRound=m(Yd),p.unknown=function(e){return arguments.length?(f=e,p):f},function(l){return u=l,i=l(e),a=l(t),o=l(n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p}}function Sp(){var e=If(xp()(Df));return e.copy=function(){return hp(e,Sp())},tu.apply(e,arguments)}function Cp(){var e=Jf(xp()).domain([.1,1,10]);return e.copy=function(){return hp(e,Cp()).base(e.base())},tu.apply(e,arguments)}function wp(){var e=Qf(xp());return e.copy=function(){return hp(e,wp()).constant(e.constant())},tu.apply(e,arguments)}function Tp(){var e=rp(xp());return e.copy=function(){return hp(e,Tp()).exponent(e.exponent())},tu.apply(e,arguments)}function Ep(){return Tp.apply(null,arguments).exponent(.5)}function Dp(e){for(var t=e.length/6|0,n=Array(t),r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}var Op=Dp(`1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf`),kp=Dp(`7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666`),Ap=Dp(`1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666`),jp=Dp(`4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0`),Mp=Dp(`a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928`),Np=Dp(`fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2`),Pp=Dp(`b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc`),Fp=Dp(`e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999`),Ip=Dp(`66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3`),Lp=Dp(`8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f`);function Rp(e,t,n){let r=e-t+n*2;return e?r>0?r:1:0}var zp=`identity`,Bp=`linear`,Vp=`sqrt`,Hp=`symlog`,Up=`time`,Wp=`sequential`,Gp=`diverging`,Kp=`quantile`,qp=`quantize`,Jp=`threshold`,Yp=`ordinal`,Xp=`point`,Zp=`band`,Qp=`bin-ordinal`,$p=`continuous`,em=`discrete`,tm=`discretizing`,nm=`interpolating`,rm=`temporal`;function im(e){return function(t){let n=t[0],r=t[1],i;return r<n&&(i=n,n=r,r=i),[e.invert(n),e.invert(r)]}}function am(e){return function(t){let n=e.range(),r=t[0],i=t[1],a=-1,o,s,c,l;for(i<r&&(s=r,r=i,i=s),c=0,l=n.length;c<l;++c)n[c]>=r&&n[c]<=i&&(a<0&&(a=c),o=c);if(!(a<0))return r=e.invertExtent(n[a]),i=e.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function om(){let e=ru().unknown(void 0),t=e.domain,n=e.range,r=[0,1],i,a,o=!1,s=0,c=0,l=.5;delete e.unknown;function u(){let e=t().length,u=r[1]<r[0],d=r[1-u],f=Rp(e,s,c),p=r[u-0];i=(d-p)/(f||1),o&&(i=Math.floor(i)),p+=(d-p-i*(e-s))*l,a=i*(1-s),o&&(p=Math.round(p),a=Math.round(a));let m=Hn(e).map(e=>p+i*e);return n(u?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),u()):t()},e.range=function(e){return arguments.length?(r=[+e[0],+e[1]],u()):r.slice()},e.rangeRound=function(e){return r=[+e[0],+e[1]],o=!0,u()},e.bandwidth=function(){return a},e.step=function(){return i},e.round=function(e){return arguments.length?(o=!!e,u()):o},e.padding=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),s=c,u()):s},e.paddingInner=function(e){return arguments.length?(s=Math.max(0,Math.min(1,e)),u()):s},e.paddingOuter=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),u()):c},e.align=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),u()):l},e.invertRange=function(e){if(e[0]==null||e[1]==null)return;let i=r[1]<r[0],o=i?n().reverse():n(),s=o.length-1,c=+e[0],l=+e[1],u,d,f;if(!(c!==c||l!==l)&&(l<c&&(f=c,c=l,l=f),!(l<o[0]||c>r[1-i])))return u=Math.max(0,fn(o,c)-1),d=c===l?u:fn(o,l)-1,c-o[u]>a+1e-10&&++u,i&&(f=u,u=s-d,d=s-f),u>d?void 0:t().slice(u,d+1)},e.invert=function(t){let n=e.invertRange([t,t]);return n&&n[0]},e.copy=function(){return om().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(c).align(l)},u()}function sm(e){let t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return sm(t())},e}function cm(){return sm(om().paddingInner(1))}var lm=Array.prototype.map;function um(e){return lm.call(e,tt)}var dm=Array.prototype.slice;function fm(){let e=[],t=[];function n(n){return n==null||n!==n?void 0:t[(fn(e,n)-1)%t.length]}return n.domain=function(t){return arguments.length?(e=um(t),n):e.slice()},n.range=function(e){return arguments.length?(t=dm.call(e),n):t.slice()},n.tickFormat=function(t,n){return Ff(e[0],et(e),t??10,n)},n.copy=function(){return fm().domain(n.domain()).range(n.range())},n}var pm=new Map,mm=Symbol(`vega_scale`);function hm(e){return e[mm]=!0,e}function gm(e,t,n){let r=function(){let n=t();return n.invertRange||=n.invert?im(n):n.invertExtent?am(n):void 0,n.type=e,hm(n)};return r.metadata=Nt(j(n)),r}function I(e,t,n){return arguments.length>1?(pm.set(e,gm(e,t,n)),this):_m(e)?pm.get(e):void 0}I(zp,Rf),I(Bp,Lf,$p),I(`log`,Yf,[$p,`log`]),I(`pow`,ip,$p),I(Vp,ap,$p),I(Hp,$f,$p),I(Up,fp,[$p,rm]),I(`utc`,pp,[$p,rm]),I(Wp,gp,[$p,nm]),I(`${Wp}-${Bp}`,gp,[$p,nm]),I(`${Wp}-log`,_p,[$p,nm,`log`]),I(`${Wp}-pow`,yp,[$p,nm]),I(`${Wp}-${Vp}`,bp,[$p,nm]),I(`${Wp}-${Hp}`,vp,[$p,nm]),I(`${Gp}-${Bp}`,Sp,[$p,nm]),I(`${Gp}-log`,Cp,[$p,nm,`log`]),I(`${Gp}-pow`,Tp,[$p,nm]),I(`${Gp}-${Vp}`,Ep,[$p,nm]),I(`${Gp}-${Hp}`,wp,[$p,nm]),I(Kp,op,[tm,Kp]),I(qp,sp,tm),I(Jp,cp,tm),I(Qp,fm,[em,tm]),I(Yp,ru,em),I(Zp,om,em),I(Xp,cm,em);function _m(e){return pm.has(e)}function vm(e,t){let n=pm.get(e);return n&&n.metadata[t]}function ym(e){return vm(e,$p)}function bm(e){return vm(e,em)}function xm(e){return vm(e,tm)}function Sm(e){return vm(e,`log`)}function Cm(e){return vm(e,nm)}function wm(e,t){let n=t[0],r=et(t)-n;return function(t){return e(n+t*r)}}function Tm(e,t,n){return xf(Dm(t||`rgb`,n),e)}function Em(e,t){let n=Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function Dm(e,t){let n=Cf[Om(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function Om(e){return`interpolate`+e.toLowerCase().split(`-`).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}var km={blues:`cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90`,greens:`d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429`,greys:`e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e`,oranges:`fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303`,purples:`e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c`,reds:`fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13`,blueGreen:`d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429`,bluePurple:`ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71`,greenBlue:`d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1`,orangeRed:`fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403`,purpleBlue:`dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281`,purpleBlueGreen:`dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353`,purpleRed:`dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a`,redPurple:`fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174`,yellowGreen:`e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034`,yellowOrangeBrown:`feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204`,yellowOrangeRed:`fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225`,blueOrange:`134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07`,brownBlueGreen:`704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147`,purpleGreen:`5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29`,purpleOrange:`4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07`,redBlue:`8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85`,redGrey:`8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434`,yellowGreenBlue:`eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185`,redYellowBlue:`a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695`,redYellowGreen:`a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837`,pinkYellowGreen:`8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419`,spectral:`9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2`,viridis:`440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725`,magma:`0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf`,inferno:`0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4`,plasma:`0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921`,cividis:`00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647`,rainbow:`6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa`,sinebow:`ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040`,turbo:`23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00`,browns:`eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632`,tealBlues:`bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985`,teals:`bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667`,warmGreys:`dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e`,goldGreen:`f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36`,goldOrange:`f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26`,goldRed:`f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e`,lightGreyRed:`efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b`,lightGreyTeal:`e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc`,lightMulti:`e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c`,lightOrange:`f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b`,lightTealBlue:`e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988`,darkBlue:`3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff`,darkGold:`3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff`,darkGreen:`3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa`,darkMulti:`3737371f5287197d8c29a86995ce3fffe800ffffff`,darkRed:`3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c`},Am={accent:kp,category10:Op,category20:`1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5`,category20b:`393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6`,category20c:`3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9`,dark2:Ap,observable10:jp,paired:Mp,pastel1:Np,pastel2:Pp,set1:Fp,set2:Ip,set3:Lp,tableau10:`4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac`,tableau20:`4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5`};function jm(e){if(Qe(e))return e;let t=e.length/6|0,n=Array(t);for(let r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}function Mm(e,t){for(let n in e)Pm(n,t(e[n]))}var Nm={};Mm(Am,jm),Mm(km,e=>Tm(jm(e)));function Pm(e,t){return e&&=e.toLowerCase(),arguments.length>1?(Nm[e]=t,this):Nm[e]}function Fm(e,t,n){return M(t)&&n!=null&&(t=Math.min(t,~~(Dt(e.domain())/n)||1)),$e(t)&&(t.step,t=t.interval),t}function Im(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil(et(r));if(i>a&&(r=a,a=i,i=r),t=t.filter(function(t){return t=e(t),i<=t&&t<=a}),n>0&&t.length>1){for(var o=[t[0],et(t)];t.length>n&&t.length>=3;)t=t.filter(function(e,t){return!(t%2)});t.length<3&&(t=o)}return t}function Lm(e,t){return e.bins?Im(e,Rm(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function Rm(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(e,t){return!(t%r)})}function zm(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?cr(n):String;if(Sm(e.type)){var i=Vm(n);r=e.bins?i:Bm(r,i)}return r}function Bm(e,t){return function(n){return e(n)?t(n):``}}function Vm(e){var t=Xn(e||`,`);if(t.precision==null){switch(t.precision=12,t.type){case`%`:t.precision-=2;break;case`e`:--t.precision;break}return Hm(cr(t),cr(`.1f`)(1)[1])}else return cr(t)}function Hm(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=Um(r,i),o=a<r.length?r.slice(a):``;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Um(e,t){var n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}var Wm=[],Gm=[];function Km(e,t){Gm.push({guard:e,Source:t})}function qm(e,t){for(let n of Wm)if(n.guard(e))return new n.Source(e,t);for(let n of Gm)if(n.guard(e))return new n.Source(e,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}var Jm=class{stats={count:0,first:null};#e=!1;#t=!1;#n=[];paramRuntimeProvider=null;get behavior(){return 0}get domainSensitiveScaleChannels(){return[]}get label(){return`(${this.constructor.name})`}constructor(e){this.paramRuntimeProvider=e,this.children=[],this.parent=void 0,this.completed=!1}get disposed(){return this.#t}reset(){this.completed=!1;for(let e of this.children)e.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){this.#e||=(this.initialize(),!0)}#r(){this._propagate=Function(`children`,`stats`,Hn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
|
175
|
+
)`})),Sl,Cl=n((()=>{xl(),ll(),Sl=Object.fromEntries(Object.entries(ul).map(([e,t])=>[e,cl.parse(t.trim())]))}));function wl(e){let t=new Set([`uint`,`int`,`float`,`long`]);return{...e,fields:e.fields.map(e=>({...e,isArray:e.size&&e.type!==`char`,arrayIsNumeric:e.size&&t.has(e.type),isNumeric:!e.size&&t.has(e.type)})).filter(e=>!!e.name)}}var Tl=n((()=>{}));function El(e){return e.length>=12&&!Number.isNaN(Number.parseInt(e[9],10))&&e[10]?.split(`,`).filter(e=>!!e).length===Number.parseInt(e[9],10)}var Dl,Ol,kl=n((()=>{ll(),Cl(),Tl(),Dl={".":0,"-":-1,"+":1},Ol=class{autoSql;attemptDefaultBed;constructor(e={}){if(e.autoSql)this.autoSql=wl(cl.parse(e.autoSql));else if(e.type){if(!Sl[e.type])throw Error(`Type not found`);this.autoSql=wl(Sl[e.type])}else this.autoSql=wl(Sl.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(e,t={}){let{autoSql:n}=this,{uniqueId:r}=t,i=Array.isArray(e)?e:e.split(` `),a={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&El(i))for(let e=0;e<n.fields.length;e++){let t=n.fields[e],r=i[e],{isNumeric:o,isArray:s,arrayIsNumeric:c,name:l}=t;if(r==null)break;if(r!==`.`){if(o){let e=Number(r);r=Number.isNaN(e)?r:e}else s&&(r=r.split(`,`),r.at(-1)===``&&r.pop(),c&&(r=r.map(Number)));a[l]=r}}else{let e=[`chrom`,`chromStart`,`chromEnd`,`name`];a=Object.fromEntries(i.map((t,n)=>[e[n]||`field`+n,t])),a.chromStart=+a.chromStart,a.chromEnd=+a.chromEnd,Number.isNaN(Number.parseFloat(a.field4))||(a.score=+a.field4,delete a.field4),(a.field5===`+`||a.field5===`-`)&&(a.strand=a.field5,delete a.field5)}return r&&(a.uniqueId=r),a.strand=Dl[a.strand]||0,a.chrom=decodeURIComponent(a.chrom),a}}})),Al=r({default:()=>Ol}),jl=n((()=>{kl()})),Ml=/^\s*$/,Nl=/^\s*(?:browser\b|track\b|#)/,Pl;async function Fl(){return Pl??=Promise.resolve().then(()=>(jl(),Al)).then(e=>e.default),Pl}async function Il(e){let t=new(await(Fl())),n=!1,r=[],i=e.split(/\r?\n/);for(let e=0;e<i.length;e++){let a=i[e];if(a.length!=0){if(!n){if(Ml.test(a)||Nl.test(a))continue;n=!0}try{r.push(t.parseLine(a))}catch(t){throw Error(`Cannot parse BED line ${e+1}: ${t.message}`,{cause:t})}}}return r}wo(`bed`,Il);var Ll=/^\s*$/,Rl=/^\s*(?:browser\b|track\b|#)/,zl=[`chrom1`,`start1`,`end1`,`chrom2`,`start2`,`end2`,`name`,`score`,`strand1`,`strand2`],Bl=zl.slice(0,6),Vl=e=>e,Hl=e=>e==`.`?null:e,Ul=e=>e==`+`?1:e==`-`?-1:0,Wl=e=>{if(e==`.`||e==`-1`||e==``)return null;let t=Number(e);return Number.isInteger(t)?t:null},Gl={chrom1:Hl,chrom2:Hl,name:Hl,strand1:Ul,strand2:Ul,start1:Wl,end1:Wl,start2:Wl,end2:Wl,score:e=>{if(e==`.`||e==``)return null;let t=Number(e);return Number.isNaN(t)?e:t}};function Kl(e){if(e.length<Bl.length)return!1;for(let t=0;t<Bl.length;t++)if(e[t]!=Bl[t])return!1;return!0}function ql(e,t={}){let n=e.split(/\r?\n/),r=t.columns,i=!1,a=!1,o=0,s=[],c=[],l=[];for(let e of n){if(o++,e.length==0)continue;if(!i){if(Ll.test(e)||Rl.test(e))continue;i=!0}if(Ll.test(e))continue;let t=e.split(` `);if(!a){let e=r||(Kl(t)?t:zl);for(let t of e)s.push(t),c.push(Gl[t]??Vl);if(a=!0,!r&&e==t)continue}for(;s.length<t.length;)s.push(`field`+(s.length+1)),c.push(Vl);if(t.length<Bl.length)throw Error(`BEDPE line ${o} has ${t.length} columns, expected at least ${Bl.length}.`);let n={};for(let e=0;e<t.length;e++){let r=s[e];n[r]=c[e](t[e])}l.push(n)}return l}wo(`bedpe`,ql);function Jl(e,t){let n=[],r;for(let t of e.split(`
|
|
176
|
+
`))if(t.startsWith(`>`))r={identifier:t.match(/>(\S+)/)[1],sequence:``},n.push(r);else if(r)r.sequence+=t.trim();else throw Error(`Invalid fasta file!`);return n}wo(`fasta`,Jl);function Yl(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Xl(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Zl(e){return e[e.length-1]}function Ql(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}function $l(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function eu(e,t){switch(arguments.length){case 0:break;case 1:typeof e==`function`?this.interpolator(e):this.range(e);break;default:this.domain(e),typeof t==`function`?this.interpolator(t):this.range(t);break}return this}var tu=Symbol(`implicit`);function nu(){var e=new hn,t=[],n=[],r=tu;function i(i){let a=e.get(i);if(a===void 0){if(r!==tu)return r;e.set(i,a=t.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new hn;for(let r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return nu(t,n).unknown(r)},$l.apply(i,arguments),i}function ru(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function iu(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function au(){}var ou=.7,su=1/ou,cu=`\\s*([+-]?\\d+)\\s*`,lu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,uu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,du=/^#([0-9a-f]{3,8})$/,fu=RegExp(`^rgb\\(${cu},${cu},${cu}\\)$`),pu=RegExp(`^rgb\\(${uu},${uu},${uu}\\)$`),mu=RegExp(`^rgba\\(${cu},${cu},${cu},${lu}\\)$`),hu=RegExp(`^rgba\\(${uu},${uu},${uu},${lu}\\)$`),gu=RegExp(`^hsl\\(${lu},${uu},${uu}\\)$`),_u=RegExp(`^hsla\\(${lu},${uu},${uu},${lu}\\)$`),vu={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};ru(au,Cu,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:yu,formatHex:yu,formatHex8:bu,formatHsl:xu,formatRgb:Su,toString:Su});function yu(){return this.rgb().formatHex()}function bu(){return this.rgb().formatHex8()}function xu(){return Iu(this).formatHsl()}function Su(){return this.rgb().formatRgb()}function Cu(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=du.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?wu(t):n===3?new Ou(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Tu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Tu(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=fu.exec(e))?new Ou(t[1],t[2],t[3],1):(t=pu.exec(e))?new Ou(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=mu.exec(e))?Tu(t[1],t[2],t[3],t[4]):(t=hu.exec(e))?Tu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=gu.exec(e))?Fu(t[1],t[2]/100,t[3]/100,1):(t=_u.exec(e))?Fu(t[1],t[2]/100,t[3]/100,t[4]):vu.hasOwnProperty(e)?wu(vu[e]):e===`transparent`?new Ou(NaN,NaN,NaN,0):null}function wu(e){return new Ou(e>>16&255,e>>8&255,e&255,1)}function Tu(e,t,n,r){return r<=0&&(e=t=n=NaN),new Ou(e,t,n,r)}function Eu(e){return e instanceof au||(e=Cu(e)),e?(e=e.rgb(),new Ou(e.r,e.g,e.b,e.opacity)):new Ou}function Du(e,t,n,r){return arguments.length===1?Eu(e):new Ou(e,t,n,r??1)}function Ou(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}ru(Ou,Du,iu(au,{brighter(e){return e=e==null?su:su**+e,new Ou(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new Ou(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ou(Nu(this.r),Nu(this.g),Nu(this.b),Mu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ku,formatHex:ku,formatHex8:Au,formatRgb:ju,toString:ju}));function ku(){return`#${Pu(this.r)}${Pu(this.g)}${Pu(this.b)}`}function Au(){return`#${Pu(this.r)}${Pu(this.g)}${Pu(this.b)}${Pu((isNaN(this.opacity)?1:this.opacity)*255)}`}function ju(){let e=Mu(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Nu(this.r)}, ${Nu(this.g)}, ${Nu(this.b)}${e===1?`)`:`, ${e})`}`}function Mu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Nu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Pu(e){return e=Nu(e),(e<16?`0`:``)+e.toString(16)}function Fu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ru(e,t,n,r)}function Iu(e){if(e instanceof Ru)return new Ru(e.h,e.s,e.l,e.opacity);if(e instanceof au||(e=Cu(e)),!e)return new Ru;if(e instanceof Ru)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Ru(o,s,c,e.opacity)}function Lu(e,t,n,r){return arguments.length===1?Iu(e):new Ru(e,t,n,r??1)}function Ru(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ru(Ru,Lu,iu(au,{brighter(e){return e=e==null?su:su**+e,new Ru(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new Ru(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Ou(Vu(e>=240?e-240:e+120,i,r),Vu(e,i,r),Vu(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ru(zu(this.h),Bu(this.s),Bu(this.l),Mu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Mu(this.opacity);return`${e===1?`hsl(`:`hsla(`}${zu(this.h)}, ${Bu(this.s)*100}%, ${Bu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function zu(e){return e=(e||0)%360,e<0?e+360:e}function Bu(e){return Math.max(0,Math.min(1,e||0))}function Vu(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Hu=Math.PI/180,Uu=180/Math.PI,Wu=18,Gu=.96422,Ku=1,qu=.82521,Ju=4/29,Yu=6/29,Xu=3*Yu*Yu,Zu=Yu*Yu*Yu;function Qu(e){if(e instanceof ed)return new ed(e.l,e.a,e.b,e.opacity);if(e instanceof sd)return cd(e);e instanceof Ou||(e=Eu(e));var t=id(e.r),n=id(e.g),r=id(e.b),i=td((.2225045*t+.7168786*n+.0606169*r)/Ku),a,o;return t===n&&n===r?a=o=i:(a=td((.4360747*t+.3850649*n+.1430804*r)/Gu),o=td((.0139322*t+.0971045*n+.7141733*r)/qu)),new ed(116*i-16,500*(a-i),200*(i-o),e.opacity)}function $u(e,t,n,r){return arguments.length===1?Qu(e):new ed(e,t,n,r??1)}function ed(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}ru(ed,$u,iu(au,{brighter(e){return new ed(this.l+Wu*(e??1),this.a,this.b,this.opacity)},darker(e){return new ed(this.l-Wu*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=Gu*nd(t),e=Ku*nd(e),n=qu*nd(n),new Ou(rd(3.1338561*t-1.6168667*e-.4906146*n),rd(-.9787684*t+1.9161415*e+.033454*n),rd(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function td(e){return e>Zu?e**(1/3):e/Xu+Ju}function nd(e){return e>Yu?e*e*e:Xu*(e-Ju)}function rd(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function id(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function ad(e){if(e instanceof sd)return new sd(e.h,e.c,e.l,e.opacity);if(e instanceof ed||(e=Qu(e)),e.a===0&&e.b===0)return new sd(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Uu;return new sd(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function od(e,t,n,r){return arguments.length===1?ad(e):new sd(e,t,n,r??1)}function sd(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function cd(e){if(isNaN(e.h))return new ed(e.l,0,0,e.opacity);var t=e.h*Hu;return new ed(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}ru(sd,od,iu(au,{brighter(e){return new sd(this.h,this.c,this.l+Wu*(e??1),this.opacity)},darker(e){return new sd(this.h,this.c,this.l-Wu*(e??1),this.opacity)},rgb(){return cd(this).rgb()}}));var ld=-.14861,ud=1.78277,dd=-.29227,fd=-.90649,pd=1.97294,md=pd*fd,hd=pd*ud,gd=ud*dd-fd*ld;function _d(e){if(e instanceof yd)return new yd(e.h,e.s,e.l,e.opacity);e instanceof Ou||(e=Eu(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(gd*r+md*t-hd*n)/(gd+md-hd),a=r-i,o=(pd*(n-i)-dd*a)/fd,s=Math.sqrt(o*o+a*a)/(pd*i*(1-i)),c=s?Math.atan2(o,a)*Uu-120:NaN;return new yd(c<0?c+360:c,s,i,e.opacity)}function vd(e,t,n,r){return arguments.length===1?_d(e):new yd(e,t,n,r??1)}function yd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ru(yd,vd,iu(au,{brighter(e){return e=e==null?su:su**+e,new yd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new yd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Hu,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new Ou(255*(t+n*(ld*r+ud*i)),255*(t+n*(dd*r+fd*i)),255*(t+pd*r*n),this.opacity)}}));function bd(e,t,n,r,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*n+(1+3*e+3*a-3*o)*r+o*i)/6}function xd(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[r],a=e[r+1],o=r>0?e[r-1]:2*i-a,s=r<t-1?e[r+2]:2*a-i;return bd((n-r/t)*t,o,i,a,s)}}function Sd(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),i=e[(r+t-1)%t],a=e[r%t],o=e[(r+1)%t],s=e[(r+2)%t];return bd((n-r/t)*t,i,a,o,s)}}var Cd=e=>()=>e;function wd(e,t){return function(n){return e+n*t}}function Td(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Ed(e,t){var n=t-e;return n?wd(e,n>180||n<-180?n-360*Math.round(n/360):n):Cd(isNaN(e)?t:e)}function Dd(e){return(e=+e)==1?Od:function(t,n){return n-t?Td(t,n,e):Cd(isNaN(t)?n:t)}}function Od(e,t){var n=t-e;return n?wd(e,n):Cd(isNaN(e)?t:e)}var kd=(function e(t){var n=Dd(t);function r(e,t){var r=n((e=Du(e)).r,(t=Du(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Od(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function Ad(e){return function(t){var n=t.length,r=Array(n),i=Array(n),a=Array(n),o,s;for(o=0;o<n;++o)s=Du(t[o]),r[o]=s.r||0,i[o]=s.g||0,a[o]=s.b||0;return r=e(r),i=e(i),a=e(a),s.opacity=1,function(e){return s.r=r(e),s.g=i(e),s.b=a(e),s+``}}}var jd=Ad(xd),Md=Ad(Sd);function Nd(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Pd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Fd(e,t){return(Pd(t)?Nd:Id)(e,t)}function Id(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Gd(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Ld(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Rd(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function zd(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Gd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Bd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Vd=new RegExp(Bd.source,`g`);function Hd(e){return function(){return e}}function Ud(e){return function(t){return e(t)+``}}function Wd(e,t){var n=Bd.lastIndex=Vd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Bd.exec(e))&&(i=Vd.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Rd(r,i)})),n=Vd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Ud(c[0].x):Hd(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function Gd(e,t){var n=typeof t,r;return t==null||n===`boolean`?Cd(t):(n===`number`?Rd:n===`string`?(r=Cu(t))?(t=r,kd):Wd:t instanceof Cu?kd:t instanceof Date?Ld:Pd(t)?Nd:Array.isArray(t)?Id:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?zd:Rd)(e,t)}function Kd(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function qd(e,t){var n=Ed(+e,+t);return function(e){var t=n(e);return t-360*Math.floor(t/360)}}function Jd(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Yd=180/Math.PI,Xd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Zd(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Yd,skewX:Math.atan(c)*Yd,scaleX:o,scaleY:s}}var Qd;function $d(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Xd:Zd(t.a,t.b,t.c,t.d,t.e,t.f)}function ef(e){return e==null||(Qd||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Qd.setAttribute(`transform`,e),!(e=Qd.transform.baseVal.consolidate()))?Xd:(e=e.matrix,Zd(e.a,e.b,e.c,e.d,e.e,e.f))}function tf(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Rd(e,i)},{i:c-2,x:Rd(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Rd(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Rd(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Rd(e,n)},{i:s-2,x:Rd(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var nf=tf($d,`px, `,`px)`,`deg)`),rf=tf(ef,`, `,`)`,`)`),af=1e-12;function of(e){return((e=Math.exp(e))+1/e)/2}function sf(e){return((e=Math.exp(e))-1/e)/2}function cf(e){return((e=Math.exp(2*e))-1)/(e+1)}var lf=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<af)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=of(y),c=s/(n*g)*(i*cf(t*r+y)-sf(y));return[a+c*d,o+c*f,s*i/of(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4);function uf(e){return function(t,n){var r=e((t=Lu(t)).h,(n=Lu(n)).h),i=Od(t.s,n.s),a=Od(t.l,n.l),o=Od(t.opacity,n.opacity);return function(e){return t.h=r(e),t.s=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var df=uf(Ed),ff=uf(Od);function pf(e,t){var n=Od((e=$u(e)).l,(t=$u(t)).l),r=Od(e.a,t.a),i=Od(e.b,t.b),a=Od(e.opacity,t.opacity);return function(t){return e.l=n(t),e.a=r(t),e.b=i(t),e.opacity=a(t),e+``}}function mf(e){return function(t,n){var r=e((t=od(t)).h,(n=od(n)).h),i=Od(t.c,n.c),a=Od(t.l,n.l),o=Od(t.opacity,n.opacity);return function(e){return t.h=r(e),t.c=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var hf=mf(Ed),gf=mf(Od);function _f(e){return(function t(n){n=+n;function r(t,r){var i=e((t=vd(t)).h,(r=vd(r)).h),a=Od(t.s,r.s),o=Od(t.l,r.l),s=Od(t.opacity,r.opacity);return function(e){return t.h=i(e),t.s=a(e),t.l=o(e**+n),t.opacity=s(e),t+``}}return r.gamma=t,r})(1)}var vf=_f(Ed),yf=_f(Od);function bf(e,t){t===void 0&&(t=e,e=Gd);for(var n=0,r=t.length-1,i=t[0],a=Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return function(e){var t=Math.max(0,Math.min(r-1,Math.floor(e*=r)));return a[t](e-t)}}function xf(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var Sf=r({interpolate:()=>Gd,interpolateArray:()=>Fd,interpolateBasis:()=>xd,interpolateBasisClosed:()=>Sd,interpolateCubehelix:()=>vf,interpolateCubehelixLong:()=>yf,interpolateDate:()=>Ld,interpolateDiscrete:()=>Kd,interpolateHcl:()=>hf,interpolateHclLong:()=>gf,interpolateHsl:()=>df,interpolateHslLong:()=>ff,interpolateHue:()=>qd,interpolateLab:()=>pf,interpolateNumber:()=>Rd,interpolateNumberArray:()=>Nd,interpolateObject:()=>zd,interpolateRgb:()=>kd,interpolateRgbBasis:()=>jd,interpolateRgbBasisClosed:()=>Md,interpolateRound:()=>Jd,interpolateString:()=>Wd,interpolateTransformCss:()=>nf,interpolateTransformSvg:()=>rf,interpolateZoom:()=>lf,piecewise:()=>bf,quantize:()=>xf});function Cf(e){return function(){return e}}function wf(e){return+e}var Tf=[0,1];function Ef(e){return e}function Df(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Cf(isNaN(t)?NaN:.5)}function Of(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function kf(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Df(i,r),a=n(o,a)):(r=Df(r,i),a=n(a,o)),function(e){return a(r(e))}}function Af(e,t,n){var r=Math.min(e.length,t.length)-1,i=Array(r),a=Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Df(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=dn(e,t,1,r)-1;return a[n](i[n](t))}}function jf(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Mf(){var e=Tf,t=Tf,n=Gd,r,i,a,o=Ef,s,c,l;function u(){var n=Math.min(e.length,t.length);return o!==Ef&&(o=Of(e[0],e[n-1])),s=n>2?Af:kf,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),Rd))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,wf),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=Jd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:Ef,u()):o!==Ef},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function Nf(){return Mf()(Ef,Ef)}function Pf(e,t,n,r){var i=Mn(e,t,n),a;switch(r=Yn(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=dr(i,o))&&(r.precision=a),cr(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=fr(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=ur(i))&&(r.precision=a-(r.type===`%`)*2);break}return sr(r)}function Ff(e){var t=e.domain;return e.ticks=function(e){var n=t();return An(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Pf(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s<o&&(l=o,o=s,s=l,l=i,i=a,a=l);u-- >0;){if(l=jn(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function If(){var e=Nf();return e.copy=function(){return jf(e,If())},$l.apply(e,arguments),Ff(e)}function Lf(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,wf),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Lf(e).unknown(t)},e=arguments.length?Array.from(e,wf):[0,1],Ff(n)}function Rf(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return a<i&&(o=n,n=r,r=o,o=i,i=a,a=o),e[n]=t.floor(i),e[r]=t.ceil(a),e}function zf(e){return Math.log(e)}function Bf(e){return Math.exp(e)}function Vf(e){return-Math.log(-e)}function Hf(e){return-Math.exp(-e)}function Uf(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Wf(e){return e===10?Uf:e===Math.E?Math.exp:t=>e**+t}function Gf(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function Kf(e){return(t,n)=>-e(-t,n)}function qf(e){let t=e(zf,Bf),n=t.domain,r=10,i,a;function o(){return i=Gf(r),a=Wf(r),n()[0]<0?(i=Kf(i),a=Kf(a),e(Vf,Hf)):e(zf,Bf),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s<o;c&&([o,s]=[s,o]);let l=i(o),u=i(s),d,f,p=e==null?10:+e,m=[];if(!(r%1)&&u-l<p){if(l=Math.floor(l),u=Math.ceil(u),o>0){for(;l<=u;++l)for(d=1;d<r;++d)if(f=l<0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}m.length*2<p&&(m=An(o,s,p))}else m=An(l,u,Math.min(u-l,p)).map(a);return c?m.reverse():m},t.tickFormat=(e,n)=>{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=Yn(n)).precision==null&&(n.trim=!0),n=sr(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*r<r-.5&&(t*=r),t<=o?n(e):``}},t.nice=()=>n(Rf(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function Jf(){let e=qf(Mf()).domain([1,10]);return e.copy=()=>jf(e,Jf()).base(e.base()),$l.apply(e,arguments),e}function Yf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Xf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Zf(e){var t=1,n=e(Yf(t),Xf(t));return n.constant=function(n){return arguments.length?e(Yf(t=+n),Xf(t)):t},Ff(n)}function Qf(){var e=Zf(Mf());return e.copy=function(){return jf(e,Qf()).constant(e.constant())},$l.apply(e,arguments)}function $f(e){return function(t){return t<0?-((-t)**+e):t**+e}}function ep(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function tp(e){return e<0?-e*e:e*e}function np(e){var t=e(Ef,Ef),n=1;function r(){return n===1?e(Ef,Ef):n===.5?e(ep,tp):e($f(n),$f(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Ff(t)}function rp(){var e=np(Mf());return e.copy=function(){return jf(e,rp()).exponent(e.exponent())},$l.apply(e,arguments),e}function ip(){return rp.apply(null,arguments).exponent(.5)}function ap(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r<i;)n[r-1]=Rn(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[dn(n,e)]}return a.invertExtent=function(r){var i=t.indexOf(r);return i<0?[NaN,NaN]:[i>0?n[i-1]:e[0],i<n.length?n[i]:e[e.length-1]]},a.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)n!=null&&!isNaN(n=+n)&&e.push(n);return e.sort(rn),i()},a.range=function(e){return arguments.length?(t=Array.from(e),i()):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.quantiles=function(){return n.slice()},a.copy=function(){return ap().domain(e).range(t).unknown(r)},$l.apply(a,arguments)}function op(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[dn(r,e,0,n)]:a}function s(){var i=-1;for(r=Array(n);++i<n;)r[i]=((i+1)*t-(i-n)*e)/(n+1);return o}return o.domain=function(n){return arguments.length?([e,t]=n,e=+e,t=+t,s()):[e,t]},o.range=function(e){return arguments.length?(n=(i=Array.from(e)).length-1,s()):i.slice()},o.invertExtent=function(a){var o=i.indexOf(a);return o<0?[NaN,NaN]:o<1?[e,r[0]]:o>=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return op().domain([e,t]).range(i).unknown(a)},$l.apply(Ff(o),arguments)}function sp(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[dn(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return sp().domain(e).range(t).unknown(n)},$l.apply(i,arguments)}function cp(e){return new Date(e)}function lp(e){return e instanceof Date?+e:+new Date(+e)}function up(e,t,n,r,i,a,o,s,c,l){var u=Nf(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)<e?p:s(e)<e?m:o(e)<e?h:a(e)<e?g:r(e)<e?i(e)<e?_:v:n(e)<e?y:b)(e)}return u.invert=function(e){return new Date(d(e))},u.domain=function(e){return arguments.length?f(Array.from(e,lp)):f().map(cp)},u.ticks=function(t){var n=f();return e(n[0],n[n.length-1],t??10)},u.tickFormat=function(e,t){return t==null?x:l(t)},u.nice=function(e){var n=f();return(!e||typeof e.range!=`function`)&&(e=t(n[0],n[n.length-1],e??10)),e?f(Rf(n,e)):u},u.copy=function(){return jf(u,up(e,t,n,r,i,a,o,s,c,l))},u}function dp(){return $l.apply(up(ti,ni,Xr,Jr,Nr,kr,Dr,Tr,wr,Ua).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function fp(){return $l.apply(up($r,ei,Zr,Yr,Vr,Ar,Or,Er,wr,Ga).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function pp(){var e=0,t=1,n,r,i,a,o=Ef,s=!1,c;function l(e){return e==null||isNaN(e=+e)?c:o(i===0?.5:(e=(a(e)-n)*i,s?Math.max(0,Math.min(1,e)):e))}l.domain=function(o){return arguments.length?([e,t]=o,n=a(e=+e),r=a(t=+t),i=n===r?0:1/(r-n),l):[e,t]},l.clamp=function(e){return arguments.length?(s=!!e,l):s},l.interpolator=function(e){return arguments.length?(o=e,l):o};function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,o=e(n,r),l):[o(0),o(1)]}}return l.range=u(Gd),l.rangeRound=u(Jd),l.unknown=function(e){return arguments.length?(c=e,l):c},function(o){return a=o,n=o(e),r=o(t),i=n===r?0:1/(r-n),l}}function mp(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function hp(){var e=Ff(pp()(Ef));return e.copy=function(){return mp(e,hp())},eu.apply(e,arguments)}function gp(){var e=qf(pp()).domain([1,10]);return e.copy=function(){return mp(e,gp()).base(e.base())},eu.apply(e,arguments)}function _p(){var e=Zf(pp());return e.copy=function(){return mp(e,_p()).constant(e.constant())},eu.apply(e,arguments)}function vp(){var e=np(pp());return e.copy=function(){return mp(e,vp()).exponent(e.exponent())},eu.apply(e,arguments)}function yp(){return vp.apply(null,arguments).exponent(.5)}function bp(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=Ef,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*e<r*a?s:c),l(d?Math.max(0,Math.min(1,e)):e))}p.domain=function(l){return arguments.length?([e,t,n]=l,i=u(e=+e),a=u(t=+t),o=u(n=+n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p):[e,t,n]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(l=e,p):l};function m(e){return function(t){var n,r,i;return arguments.length?([n,r,i]=t,l=bf(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Gd),p.rangeRound=m(Jd),p.unknown=function(e){return arguments.length?(f=e,p):f},function(l){return u=l,i=l(e),a=l(t),o=l(n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p}}function xp(){var e=Ff(bp()(Ef));return e.copy=function(){return mp(e,xp())},eu.apply(e,arguments)}function Sp(){var e=qf(bp()).domain([.1,1,10]);return e.copy=function(){return mp(e,Sp()).base(e.base())},eu.apply(e,arguments)}function Cp(){var e=Zf(bp());return e.copy=function(){return mp(e,Cp()).constant(e.constant())},eu.apply(e,arguments)}function wp(){var e=np(bp());return e.copy=function(){return mp(e,wp()).exponent(e.exponent())},eu.apply(e,arguments)}function Tp(){return wp.apply(null,arguments).exponent(.5)}function Ep(e){for(var t=e.length/6|0,n=Array(t),r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}var Dp=Ep(`1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf`),Op=Ep(`7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666`),kp=Ep(`1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666`),Ap=Ep(`4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0`),jp=Ep(`a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928`),Mp=Ep(`fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2`),Np=Ep(`b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc`),Pp=Ep(`e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999`),Fp=Ep(`66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3`),Ip=Ep(`8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f`);function Lp(e,t,n){let r=e-t+n*2;return e?r>0?r:1:0}var Rp=`identity`,zp=`linear`,Bp=`sqrt`,Vp=`symlog`,Hp=`time`,Up=`sequential`,Wp=`diverging`,Gp=`quantile`,Kp=`quantize`,qp=`threshold`,Jp=`ordinal`,Yp=`point`,Xp=`band`,Zp=`bin-ordinal`,Qp=`continuous`,$p=`discrete`,em=`discretizing`,tm=`interpolating`,nm=`temporal`;function rm(e){return function(t){let n=t[0],r=t[1],i;return r<n&&(i=n,n=r,r=i),[e.invert(n),e.invert(r)]}}function im(e){return function(t){let n=e.range(),r=t[0],i=t[1],a=-1,o,s,c,l;for(i<r&&(s=r,r=i,i=s),c=0,l=n.length;c<l;++c)n[c]>=r&&n[c]<=i&&(a<0&&(a=c),o=c);if(!(a<0))return r=e.invertExtent(n[a]),i=e.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function am(){let e=nu().unknown(void 0),t=e.domain,n=e.range,r=[0,1],i,a,o=!1,s=0,c=0,l=.5;delete e.unknown;function u(){let e=t().length,u=r[1]<r[0],d=r[1-u],f=Lp(e,s,c),p=r[u-0];i=(d-p)/(f||1),o&&(i=Math.floor(i)),p+=(d-p-i*(e-s))*l,a=i*(1-s),o&&(p=Math.round(p),a=Math.round(a));let m=Vn(e).map(e=>p+i*e);return n(u?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),u()):t()},e.range=function(e){return arguments.length?(r=[+e[0],+e[1]],u()):r.slice()},e.rangeRound=function(e){return r=[+e[0],+e[1]],o=!0,u()},e.bandwidth=function(){return a},e.step=function(){return i},e.round=function(e){return arguments.length?(o=!!e,u()):o},e.padding=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),s=c,u()):s},e.paddingInner=function(e){return arguments.length?(s=Math.max(0,Math.min(1,e)),u()):s},e.paddingOuter=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),u()):c},e.align=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),u()):l},e.invertRange=function(e){if(e[0]==null||e[1]==null)return;let i=r[1]<r[0],o=i?n().reverse():n(),s=o.length-1,c=+e[0],l=+e[1],u,d,f;if(!(c!==c||l!==l)&&(l<c&&(f=c,c=l,l=f),!(l<o[0]||c>r[1-i])))return u=Math.max(0,dn(o,c)-1),d=c===l?u:dn(o,l)-1,c-o[u]>a+1e-10&&++u,i&&(f=u,u=s-d,d=s-f),u>d?void 0:t().slice(u,d+1)},e.invert=function(t){let n=e.invertRange([t,t]);return n&&n[0]},e.copy=function(){return am().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(c).align(l)},u()}function om(e){let t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return om(t())},e}function sm(){return om(am().paddingInner(1))}var cm=Array.prototype.map;function lm(e){return cm.call(e,et)}var um=Array.prototype.slice;function dm(){let e=[],t=[];function n(n){return n==null||n!==n?void 0:t[(dn(e,n)-1)%t.length]}return n.domain=function(t){return arguments.length?(e=lm(t),n):e.slice()},n.range=function(e){return arguments.length?(t=um.call(e),n):t.slice()},n.tickFormat=function(t,n){return Pf(e[0],$e(e),t??10,n)},n.copy=function(){return dm().domain(n.domain()).range(n.range())},n}var fm=new Map,pm=Symbol(`vega_scale`);function mm(e){return e[pm]=!0,e}function hm(e,t,n){let r=function(){let n=t();return n.invertRange||=n.invert?rm(n):n.invertExtent?im(n):void 0,n.type=e,mm(n)};return r.metadata=Mt(M(n)),r}function L(e,t,n){return arguments.length>1?(fm.set(e,hm(e,t,n)),this):gm(e)?fm.get(e):void 0}L(Rp,Lf),L(zp,If,Qp),L(`log`,Jf,[Qp,`log`]),L(`pow`,rp,Qp),L(Bp,ip,Qp),L(Vp,Qf,Qp),L(Hp,dp,[Qp,nm]),L(`utc`,fp,[Qp,nm]),L(Up,hp,[Qp,tm]),L(`${Up}-${zp}`,hp,[Qp,tm]),L(`${Up}-log`,gp,[Qp,tm,`log`]),L(`${Up}-pow`,vp,[Qp,tm]),L(`${Up}-${Bp}`,yp,[Qp,tm]),L(`${Up}-${Vp}`,_p,[Qp,tm]),L(`${Wp}-${zp}`,xp,[Qp,tm]),L(`${Wp}-log`,Sp,[Qp,tm,`log`]),L(`${Wp}-pow`,wp,[Qp,tm]),L(`${Wp}-${Bp}`,Tp,[Qp,tm]),L(`${Wp}-${Vp}`,Cp,[Qp,tm]),L(Gp,ap,[em,Gp]),L(Kp,op,em),L(qp,sp,em),L(Zp,dm,[$p,em]),L(Jp,nu,$p),L(Xp,am,$p),L(Yp,sm,$p);function gm(e){return fm.has(e)}function _m(e,t){let n=fm.get(e);return n&&n.metadata[t]}function vm(e){return _m(e,Qp)}function ym(e){return _m(e,$p)}function bm(e){return _m(e,em)}function xm(e){return _m(e,`log`)}function Sm(e){return _m(e,tm)}function Cm(e,t){let n=t[0],r=$e(t)-n;return function(t){return e(n+t*r)}}function wm(e,t,n){return bf(Em(t||`rgb`,n),e)}function Tm(e,t){let n=Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function Em(e,t){let n=Sf[Dm(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function Dm(e){return`interpolate`+e.toLowerCase().split(`-`).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}var Om={blues:`cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90`,greens:`d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429`,greys:`e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e`,oranges:`fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303`,purples:`e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c`,reds:`fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13`,blueGreen:`d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429`,bluePurple:`ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71`,greenBlue:`d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1`,orangeRed:`fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403`,purpleBlue:`dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281`,purpleBlueGreen:`dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353`,purpleRed:`dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a`,redPurple:`fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174`,yellowGreen:`e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034`,yellowOrangeBrown:`feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204`,yellowOrangeRed:`fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225`,blueOrange:`134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07`,brownBlueGreen:`704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147`,purpleGreen:`5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29`,purpleOrange:`4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07`,redBlue:`8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85`,redGrey:`8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434`,yellowGreenBlue:`eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185`,redYellowBlue:`a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695`,redYellowGreen:`a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837`,pinkYellowGreen:`8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419`,spectral:`9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2`,viridis:`440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725`,magma:`0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf`,inferno:`0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4`,plasma:`0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921`,cividis:`00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647`,rainbow:`6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa`,sinebow:`ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040`,turbo:`23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00`,browns:`eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632`,tealBlues:`bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985`,teals:`bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667`,warmGreys:`dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e`,goldGreen:`f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36`,goldOrange:`f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26`,goldRed:`f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e`,lightGreyRed:`efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b`,lightGreyTeal:`e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc`,lightMulti:`e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c`,lightOrange:`f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b`,lightTealBlue:`e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988`,darkBlue:`3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff`,darkGold:`3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff`,darkGreen:`3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa`,darkMulti:`3737371f5287197d8c29a86995ce3fffe800ffffff`,darkRed:`3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c`},km={accent:Op,category10:Dp,category20:`1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5`,category20b:`393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6`,category20c:`3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9`,dark2:kp,observable10:Ap,paired:jp,pastel1:Mp,pastel2:Np,set1:Pp,set2:Fp,set3:Ip,tableau10:`4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac`,tableau20:`4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5`};function Am(e){if(Ze(e))return e;let t=e.length/6|0,n=Array(t);for(let r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}function jm(e,t){for(let n in e)Nm(n,t(e[n]))}var Mm={};jm(km,Am),jm(Om,e=>wm(Am(e)));function Nm(e,t){return e&&=e.toLowerCase(),arguments.length>1?(Mm[e]=t,this):Mm[e]}function Pm(e,t,n){return N(t)&&n!=null&&(t=Math.min(t,~~(Et(e.domain())/n)||1)),Qe(t)&&(t.step,t=t.interval),t}function Fm(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil($e(r));if(i>a&&(r=a,a=i,i=r),t=t.filter(function(t){return t=e(t),i<=t&&t<=a}),n>0&&t.length>1){for(var o=[t[0],$e(t)];t.length>n&&t.length>=3;)t=t.filter(function(e,t){return!(t%2)});t.length<3&&(t=o)}return t}function Im(e,t){return e.bins?Fm(e,Lm(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function Lm(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(e,t){return!(t%r)})}function Rm(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?sr(n):String;if(xm(e.type)){var i=Bm(n);r=e.bins?i:zm(r,i)}return r}function zm(e,t){return function(n){return e(n)?t(n):``}}function Bm(e){var t=Yn(e||`,`);if(t.precision==null){switch(t.precision=12,t.type){case`%`:t.precision-=2;break;case`e`:--t.precision;break}return Vm(sr(t),sr(`.1f`)(1)[1])}else return sr(t)}function Vm(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=Hm(r,i),o=a<r.length?r.slice(a):``;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Hm(e,t){var n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}var Um=[],Wm=[];function Gm(e,t){Wm.push({guard:e,Source:t})}function Km(e,t){for(let n of Um)if(n.guard(e))return new n.Source(e,t);for(let n of Wm)if(n.guard(e))return new n.Source(e,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}var qm=class{stats={count:0,first:null};#e=!1;#t=!1;#n=[];paramRuntimeProvider=null;get behavior(){return 0}get domainSensitiveScaleChannels(){return[]}get label(){return`(${this.constructor.name})`}constructor(e){this.paramRuntimeProvider=e,this.children=[],this.parent=void 0,this.completed=!1}get disposed(){return this.#t}reset(){this.completed=!1;for(let e of this.children)e.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){this.#e||=(this.initialize(),!0)}#r(){this._propagate=Function(`children`,`stats`,Vn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
|
177
177
|
`)+`return function propagate(datum) {
|
|
178
178
|
if (stats.count === 0) {
|
|
179
179
|
stats.first = structuredClone(datum);
|
|
180
180
|
}
|
|
181
181
|
stats.count++;
|
|
182
|
-
${
|
|
182
|
+
${Vn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
|
|
183
183
|
`)}
|
|
184
|
-
};`)(this.children,this.stats)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw Error(`Cannot add the child! It already has a parent.`);return this.children.push(e),e.setParent(this),this.#r(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(let t of e.children)this.adopt(t)}insertAsParent(e){if(this.isRoot())throw Error(`Cannot insert a new parent for a root node!`);e.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=e,this.parent.#r(),this.parent=void 0,e.addChild(this)}removeChild(e){let t=this.children.indexOf(e);if(t>-1)this.children.splice(t,1),e.parent=void 0,this.#r();else throw Error(`Trying to remove an unknown child node!`)}excise(){if(this.isRoot())throw Error(`Cannot excise root node!`);if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){let e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent.#r(),this.setParent(void 0),this.children.length=0}else throw Error(`Cannot excise a node that has multiple children!`)}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(e){e(this);for(let t of this.children)t.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){let t=this.children.map(t=>t.subtreeToString(e+1)).join(``);return`${` `.repeat(e*2)}* ${this.label}${`identifier`in this&&this.identifier?`: `+this.identifier:``} \n${t}`}handle(e){this._propagate(e)}complete(){this.completed=!0;for(let e of this.children)e.complete()}registerDisposer(e){this.#t?e():this.#n.push(e)}dispose(){if(!this.#t){this.#t=!0;for(let e of this.#n)e();this.#n.length=0}}disposeSubtree(){let e=()=>void 0;e.afterChildren=e=>{e.dispose()},this.visit(e)}beginBatch(e){for(let t of this.children)t.beginBatch(e)}get paramRuntime(){if(this.paramRuntimeProvider&&this.paramRuntimeProvider.paramRuntime)return this.paramRuntimeProvider.paramRuntime;if(!this.parent)throw Error(`Cannot find paramRuntime!`);return this.parent.paramRuntime}repropagate(){if(this.parent)this.parent.repropagate();else throw Error(`Cannot repropagate data, no FlowNode with stored data found!`)}_propagate(e){}};function
|
|
184
|
+
};`)(this.children,this.stats)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw Error(`Cannot add the child! It already has a parent.`);return this.children.push(e),e.setParent(this),this.#r(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(let t of e.children)this.adopt(t)}insertAsParent(e){if(this.isRoot())throw Error(`Cannot insert a new parent for a root node!`);e.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=e,this.parent.#r(),this.parent=void 0,e.addChild(this)}removeChild(e){let t=this.children.indexOf(e);if(t>-1)this.children.splice(t,1),e.parent=void 0,this.#r();else throw Error(`Trying to remove an unknown child node!`)}excise(){if(this.isRoot())throw Error(`Cannot excise root node!`);if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){let e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent.#r(),this.setParent(void 0),this.children.length=0}else throw Error(`Cannot excise a node that has multiple children!`)}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(e){e(this);for(let t of this.children)t.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){let t=this.children.map(t=>t.subtreeToString(e+1)).join(``);return`${` `.repeat(e*2)}* ${this.label}${`identifier`in this&&this.identifier?`: `+this.identifier:``} \n${t}`}handle(e){this._propagate(e)}complete(){this.completed=!0;for(let e of this.children)e.complete()}registerDisposer(e){this.#t?e():this.#n.push(e)}dispose(){if(!this.#t){this.#t=!0;for(let e of this.#n)e();this.#n.length=0}}disposeSubtree(){let e=()=>void 0;e.afterChildren=e=>{e.dispose()},this.visit(e)}beginBatch(e){for(let t of this.children)t.beginBatch(e)}get paramRuntime(){if(this.paramRuntimeProvider&&this.paramRuntimeProvider.paramRuntime)return this.paramRuntimeProvider.paramRuntime;if(!this.parent)throw Error(`Cannot find paramRuntime!`);return this.parent.paramRuntime}repropagate(){if(this.parent)this.parent.repropagate();else throw Error(`Cannot repropagate data, no FlowNode with stored data found!`)}_propagate(e){}};function Jm(e){let t=new Set;for(;e;){for(let n of e.domainSensitiveScaleChannels)t.add(n);e=e.parent}return t}function Ym(e){return e.type==`file`}function Xm(e){return e.type==`facet`}var Zm=class extends qm{view;constructor(e){super(),this.view=e}get identifier(){}setLoadingStatus(e,t){this.view.context.dataFlow.loadingStatusRegistry.set(this.view,e,t)}get paramRuntime(){return this.view.paramRuntime}handle(e){throw Error(`Source does not handle incoming data!`)}async load(){}repropagate(){this.load()}},Qm=class extends Zm{initializedPromise=Promise.resolve();_lastLoadedDomain;constructor(e,t){if(super(e),!t)throw Error(`No channel has been specified for the lazy data source. Must be either "x" or "y".`);if(t!==`x`&&t!==`y`)throw Error(`Invalid channel specified for the lazy data source: ${t}. Must be either "x" or "y"`);if(this.channel=t,this.scaleResolution=this.view.getScaleResolution(t),!this.scaleResolution){let e=[`The lazy data source cannot find a resolved scale for channel "${t}".`];throw $m(this.view)||e.push(`Make sure the view has a "shared" scale resolution as it is not a unit view.`),Error(e.join(` `))}let n=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener(`domain`,n),this.view.context.addBroadcastListener(`layoutComputed`,n)}get genome(){let e=this.scaleResolution.getScale();if(`genome`in e){let t=e.genome();if(t)return t}throw Error(`No genome has been defined!`)}onDomainChanged(e,t){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(e){this._lastLoadedDomain=Array.from(this.scaleResolution.getDomain()),this.reset(),this.beginBatch({type:`file`});for(let t of e)for(let e of t)this._propagate(e);this.complete()}isDataReadyForDomain(e){let t=e[this.channel];if(!t||!this._lastLoadedDomain)return!1;let[n,r]=t[0]<=t[1]?t:[t[1],t[0]],[i,a]=this._lastLoadedDomain[0]<=this._lastLoadedDomain[1]?this._lastLoadedDomain:[this._lastLoadedDomain[1],this._lastLoadedDomain[0]];return n>=i&&r<=a}};function $m(e){return typeof e.getMarkType==`function`}var eh=class extends Qm{ticks=[];constructor(e,t){let n={axis:{},...e};super(t,n.channel),this.params=e}get label(){return`axisTickSource`}async load(){this.ticks=null,await this.onDomainChanged()}async onDomainChanged(){let e=this.scaleResolution.getScale(),t=this.scaleResolution.getAxisLength(),n=this.params.axis,r=e.type==`locus`?()=>85:e=>30+55*Ql(100,700,e),i=N(n.tickCount)?n.tickCount:Math.round(t/r(t)),a=Pm(e,i,n.tickMinStep),o=n.values?Fm(e,n.values,a):Im(e,a);if(this.ticks==null||!Yl(o,this.ticks)){this.ticks=o;let t=Rm(e,i,n.format);this.publishData([o.map(e=>({value:e,label:t(e)}))])}}};function th(e){return e?.type==`axisTicks`}Gm(th,eh);var nh=class extends Qm{constructor(e,t){super(t,e.channel)}get label(){return`axisGenomeSource`}async load(){this.publishData([this.genome.chromosomes])}};function rh(e){return e?.type==`axisGenome`}Gm(rh,nh);function ih(e,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(e)||e.startsWith(`/`)?e:(t.endsWith(`/`)||(t+=`/`),t+e)}function ah(e){if(!e)return e;if(/[?#]/.test(e))throw Error(`Invalid base URL: ${e} - cannot contain query or hash.`);return e.endsWith(`/`)?e:e+`/`}var oh=class extends qm{#e;constructor(e,t){super(t),this.#e=e.type}get label(){return this.#e}},sh=`_uniqueId`,ch=1e4,lh=[null],uh=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e,this.as=e.as??`_uniqueId`,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%1e4==0&&(this._id=this._getBlock()*ch),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){let e=lh.length;return lh[e]=this,this._blocks.push(e),this._usedBlocks++,e}};function R(e,t=e){return/^[A-Za-z0-9_]+$/.test(e)?Be(Function(`validator`,`
|
|
185
185
|
let validated = !validator;
|
|
186
186
|
return function accessField(datum) {
|
|
187
187
|
if (!validated) {
|
|
@@ -189,9 +189,9 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
189
189
|
validated = true;
|
|
190
190
|
}
|
|
191
191
|
return datum[${JSON.stringify(e)}];
|
|
192
|
-
}`)(function(t){e in t||fh(t,e)}),[e],t):Ye(e)}function fh(e,t){throw Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(e).join(`, `)}`)}function ph(e,t,n){if(!e)throw Error(`Cannot create an accessor without a channel.`);function r(n){let r=n;return r.fields??=[],r.constant=r.fields.length===0,r.channelDef=t,r.channel=e,r.sourceKey=gh(t),r.scaleChannel=((Mh(t)&&t.resolutionChannel)??(Zh(e)&&e))||void 0,r.scaleChannel!==void 0&&(r.domainKeyBase=_h({scaleChannel:r.scaleChannel,source:hh(t)}).domainKeyBase),r.equals=e=>e?r===e||r.sourceKey!==void 0&&r.sourceKey===e.sourceKey:!1,r.asNumberAccessor=()=>r,r}function i(e){if(R(e)){let t=r(n.createExpression(e.expr));if(t.fields.length>0)throw Error(`Expression in DatumDef/ValueDef cannot access data fields: `+e.expr);return t}else{let t=e;return r(()=>t)}}if(Ah(t))try{return r(L(t.field))}catch(e){throw Error(`Invalid field definition: ${e.message}`,{cause:e})}else if(Ih(t))return r(n.createExpression(t.expr));else if(jh(t))return i(t.datum);else if(kh(t))return i(t.value);else throw Error(`Invalid channel definition: "${e}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}function mh(e){return e.scaleChannel!==void 0}function hh(e){if(Ah(e))return{kind:`field`,value:e.field};if(Ih(e))return{kind:`expr`,value:e.expr};if(jh(e))return{kind:`datum`,value:e.datum};if(kh(e))return{kind:`value`,value:e.value};throw Error(`Cannot derive a domain key from channel definition: `+JSON.stringify(e))}function gh(e){let t=hh(e);return t.kind===`datum`||t.kind===`value`?`constant|`+bh(t.value):t.kind+`|`+yh(t)}function _h({scaleChannel:e,source:t,type:n}){if(!e)throw Error(`Cannot build a domain key without a scale channel.`);let r=e+`|`+t.kind+`|`+yh(t);return{domainKeyBase:r,domainKey:n?n+`|`+r:void 0}}function vh(e,t){let{domainKey:n,domainKeyBase:r}=_h({scaleChannel:e.scaleChannel,source:hh(e.channelDef),type:t});if(!n)throw Error(`Cannot finalize a domain key without a resolved type.`);return e.domainKeyBase=r,e.domainKey=n,n}function yh(e){switch(e.kind){case`field`:case`expr`:return e.value;case`datum`:case`value`:return bh(e.value);default:throw Error(`Unknown domain key source.`)}}function bh(e){return R(e)?`expr:`+e.expr:e===void 0?`undefined`:JSON.stringify(e)}function xh(e,t,n,r){let i,a=bg(!1),o=()=>{if(i)return i;let o=n.findValue(e);if(!o)return a;let s={};if(ag(o)){let n=Object.keys(o.intervals);for(let r of n){let n=t[r];if(Ah(n)){s[r]=n.field;continue}else if(n&&`condition`in n){let e=n.condition;if(Ah(e)){s[r]=e.field;continue}}throw Error(`Selection "${e}" has an interval for "${r}" channel, but could not find a fieldDef: ${JSON.stringify(t[r])}`)}}let c=ig({type:`filter`,param:e,fields:s,empty:r},o);return i=n.createExpression(c),i};return Object.assign(e=>o()(e),{param:e,empty:r??!0})}function Sh(e,t,n,r){let i=Lh(t)||Rh(t)?Array.isArray(t.condition)?t.condition:[t.condition]:[],a=[...i,t],o=a.map((t,o)=>{let s=i[o];return{accessor:ph(e,t,r),predicate:s?.param?xh(s.param,n,r,s.empty):Object.assign(bg(o===a.length-1),{empty:!1})}});if(o.filter(e=>!e.accessor.constant).length>1)throw Error(`Only one accessor can be non-constant. Channel: `+e);return o}function Ch(e,t){let n={},r=t=>e.getScaleResolution(t)?.getScale();for(let[i,a]of Object.entries(t)){if(!a)continue;let o=i;wh(o)||(n[o]=Dh(Sh(o,a,t,e.paramRuntime),r))}return n}function wh(e){return e===`key`||e===`search`}function Th(e){return e.branches.map(e=>e.accessor)}function Eh(e){return e.branches.find(e=>!e.accessor.constant)?.accessor}function Dh(e,t){if(e.length===1){let n=Oh(e[0].accessor,t);return Object.assign(n,{branches:e})}let n=e.map(e=>e.predicate),r=e.map(e=>Oh(e.accessor,t));return Object.assign(e=>{for(let t=0;t<r.length;t++)if(n[t](e))return r[t](e)},{constant:!1,branches:e,scale:r.map(e=>e.scale).find(e=>e),channelDef:e.at(-1).accessor.channelDef})}function Oh(e,t){let{channel:n,scaleChannel:r,channelDef:i}=e,a=e.scaleChannel?t(r):void 0;if(r&&!a)throw Error(`Missing scale! "${n}": ${JSON.stringify(i)}`);return Object.assign(a?t=>a(e(t)):t=>e(t),{scale:a,constant:e.constant,branches:[{accessor:e,predicate:bg(!0)}],channelDef:i})}function kh(e){return e&&`value`in e}function Ah(e){return e&&`field`in e}function jh(e){return e&&`datum`in e}function Mh(e){return Ah(e)||jh(e)||Ih(e)||Fh(e)}function Nh(e){if(Rh(e)){let t=e.condition;if(!Array.isArray(t)&&Mh(t))return t}else if(Mh(e))return e}function Ph(e,t){let n=e.mark.encoding[t];if(Array.isArray(n))throw Error(`Not a channel def with scale!`);{let e=Nh(n);if(e)return e}throw Error(`Not a channel def with scale!`)}function Fh(e){return e&&`chrom`in e}function Ih(e){return e&&`expr`in e}function Lh(e){return(Ah(e)||jh(e))&&`condition`in e}function Rh(e){return kh(e)&&`condition`in e}var zh=[`x`,`y`],Bh=[`x2`,`y2`],Vh=[...zh,...Bh];function Hh(e){return zh.includes(e)}function Uh(e){return Vh.includes(e)}var Wh={x:`x2`,y:`y2`},Gh=Object.fromEntries(Object.entries(Wh).map(e=>[e[1],e[0]]));function Kh(e){return e in Gh}function qh(e){let t=Wh[e];if(t)return t;throw Error(`${e} has no secondary channel!`)}function Jh(e){return Gh[e]??e}function Yh(e){return[`color`,`fill`,`stroke`].includes(Jh(e))}function Xh(e){return[`shape`].includes(e)}function Zh(e){return[`x`,`y`,`x2`,`y2`,`color`,`fill`,`stroke`,`opacity`,`fillOpacity`,`strokeOpacity`,`strokeWidth`,`size`,`shape`,`angle`,`dx`,`dy`,`sample`].includes(e)}function Qh(e){switch(e){case`shape`:return[`circle`,`square`,`cross`,`diamond`,`triangle-up`,`triangle-right`,`triangle-down`,`triangle-left`,`tick-up`,`tick-right`,`tick-down`,`tick-left`];default:}}function $h(e){if(!Xh(e))throw Error(`Not a discrete channel: `+e);let t=new Map(Qh(e).map((e,t)=>[e,t]));return n=>{let r=t.get(n);if(r!==void 0)return r;throw Error(`Invalid value for "${e}" channel: ${n}`)}}function eg(e){return{type:`single`,datum:e,uniqueId:e?.[ch]}}function tg(e){return e??=[],{type:`multi`,data:new Map(e.map(e=>[e[ch],e]))}}function ng(e){return{type:`interval`,intervals:Object.fromEntries(e.map(e=>[e,null]))}}function rg(e,{add:t,remove:n,toggle:r}){let i=e.data;for(let e of t??[])i.set(e[ch],e);for(let e of n??[])i.delete(e[ch]);for(let e of r??[]){let t=e[ch];i.has(t)?i.delete(t):i.set(t,e)}return{type:`multi`,data:i}}function ig(e,t){let n=!!(e.empty??!0),r=_g(e.param),i=e.fields??{};if(og(t))return`${r}.uniqueId == null ? ${n} : ${r}.uniqueId === datum[${JSON.stringify(ch)}]`;if(sg(t))return`${r}.data.size == 0 ? ${n} : mapHasKey(${r}.data, datum[${JSON.stringify(ch)}])`;if(ag(t)){let a=Object.keys(t.intervals),o=Object.keys(i).filter(Hh);if(o.length===0)throw Error(`Filtering using interval selections requires at least one primary positional channel in the config! `+JSON.stringify(e));if(o.some(e=>!a.includes(e)))throw Error(`Selection channels (${a.join(`, `)}) do not match the fields: ${JSON.stringify(e)}!`);let s=e=>`datum[${JSON.stringify(e)}]`;return a.map(e=>{let t=qh(e),a=i[e];return`(${r}.intervals.${e} ? (${`${r}.intervals.${e}[0] <= ${s(i[t]??i[e])}`} && ${`${s(a)} <= ${r}.intervals.${e}[1]`}) : ${n})`}).join(` && `)}else throw Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function ag(e){return e.type===`interval`}function og(e){return e.type===`single`}function sg(e){return e.type===`multi`}function cg(e){let t=typeof e==`string`?{type:e}:{...e};return t.on=t.on?pg(t.on):lg(t)?{type:`click`}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:`dblclick`}:pg(t.clear),lg(t)&&t.on.type===`click`&&(t.toggle=!0),t}function lg(e){return e&&e.type==`point`}function ug(e){return e&&e.type==`interval`}function dg(e){return Object.values(e.intervals).some(e=>e&&e.length===2)}function fg(e,t){return Object.entries(e.intervals).every(([e,n])=>(e==`x`||e==`y`)&&n&&n[0]<=t[e]&&n[1]>=t[e])}function pg(e){if(typeof e==`string`){let t=e.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw Error(`Invalid event type string: ${e}`);let[,n,r]=t,i={type:n};return r&&(i.filter=r),i}else return e}function R(e){return typeof e==`object`&&!!e&&`expr`in e&&N(e.expr)}function mg(e){if(R(e))throw Error(`ExprRef `+JSON.stringify(e)+` not allowed here. Expected a scalar value.`);return e}function hg(e){return(`expr`in e||`bind`in e)&&!(`select`in e)}function gg(e){return!(`expr`in e||`bind`in e)&&`select`in e}function _g(e){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e))throw Error(`Invalid parameter name: `+e+`. Must be a valid JavaScript identifier.`);return e}function vg(e,t,n){if(`select`in e){let t=cg(e.select);if(lg(t))return t.toggle?tg():eg(null);if(ug(t)){if(!t.encodings)throw Error(`Interval selection "`+e.name+`" must have encodings defined!`);return ng(t.encodings)}throw Error(`Unknown selection config for parameter "`+e.name+`".`)}if(`expr`in e){let r=n??t?.createExpression(e.expr);if(!r)throw Error(`Cannot evaluate expression for parameter "`+e.name+`".`);return r(null)}return`value`in e?e.value:null}function yg(e,t,n,r,i={}){let a={...t},o=new Set,s=!1,c=!1,l=i.batchMode??`microtask`;r?.(()=>{c=!0,o.clear(),s=!1});let u=()=>{if(c)return;if(!n||o.size===0){s=!1;return}let e=new Set(o);o.clear(),s=!1,n(e)},d=t=>{c||(o.add(t),s||(s=!0,queueMicrotask(()=>{c||(l==`whenPropagated`&&e.whenPropagated?e.whenPropagated().then(u).catch(()=>{u()}):u())})))};for(let[i,o]of Object.entries(t))if(R(o))if(n){let t=()=>d(i),n=e.watchExpression?e.watchExpression(o.expr,t,{scopeOwned:!r,registerDisposer:r}):e.createExpression(o.expr);if(!e.watchExpression){let e=n.subscribe(t);r?.(e)}Object.defineProperty(a,i,{enumerable:!0,get(){return n()}})}else{let t=e.createExpression(o.expr);Object.defineProperty(a,i,{enumerable:!0,get(){return t()}})}else a[i]=o;return a}function bg(e){return Object.assign(()=>e,{subscribe:()=>()=>void 0,invalidate:()=>void 0,identifier:()=>`constant`,fields:[],globals:[],code:JSON.stringify(e)})}function xg(e,t,n=!0){let r,i=e=>void 0;return function(...a){return new Promise((o,s)=>{n&&i(`debounced`),clearTimeout(r),i=s,r=window.setTimeout(()=>{clearTimeout(r),i=e=>void 0,o(e(...a))},typeof t==`function`?t():t)})}}var Sg=class extends $m{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){let t=()=>mg(e.debounce),n=e.debounceMode;if(n==`domain`)this.onDomainChanged=xg(this.onDomainChanged.bind(this),t,!1);else if(n==`window`)this.loadInterval=xg(this.loadInterval.bind(this),t,!1);else throw Error(`Invalid debounceMode: `+n)}onDomainChanged(e){this.#n=e;let t=mg(this.params?.windowSize)??-1;e[1]-e[0]>t||this.callIfWindowsChanged(e,t,async e=>{await this.initializedPromise,this.loadInterval(e)})}reloadLastDomain(){let e=this.#n;this.#n=[0,0],this.#t=[0,0],this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){let t=this._lastLoadedDomain;super.publishData(e),t&&(this._lastLoadedDomain=t)}async discretizeAndLoad(e,t){this.#e.abort(),this.setLoadingStatus(`loading`),this.#e=new AbortController;let n=this.#e.signal,r=this.genome.continuousToDiscreteChromosomeIntervals(e);try{let i=await Promise.all(r.map(async e=>t(e,n)));if(!n.aborted)return this.setLoadingStatus(`complete`),this._lastLoadedDomain=Array.from(e),i}catch(e){if(!n.aborted)throw this.setLoadingStatus(`error`,e.message),e}}callIfWindowsChanged(e,t,n){let r=[Math.max(Math.floor(e[0]/t)*t,0),Math.min(Math.ceil(e[1]/t)*t,this.genome.totalSize)],i=this.#t;(t!==this.#r||r[0]<i[0]||r[1]>i[1])&&(this.#t=r,this.#r=t,n(r))}},Cg=n((()=>{})),wg,Tg=n((()=>{wg=class{constructor(e){this.blob=e}async read(e,t=0){if(!e)return new Uint8Array;let n=t,r=n+e,i=this.blob.slice(n,r);return i.bytes?i.bytes():new Uint8Array(await i.arrayBuffer())}async readFile(e){let t=typeof e==`string`?e:e?.encoding;if(t===`utf8`)return this.blob.text();if(t)throw Error(`unsupported encoding: ${t}`);return this.blob.bytes?this.blob.bytes():new Uint8Array(await this.blob.arrayBuffer())}async stat(){return{size:this.blob.size}}async close(){}}}));function Eg(e){return(typeof e==`object`&&e&&`message`in e?e.message:`${e}`).replace(/\.$/,``)}var Dg,Og=n((()=>{Dg=class{constructor(e,t={}){this.baseOverrides={},this.url=e;let n=t.fetch||globalThis.fetch.bind(globalThis);t.overrides&&(this.baseOverrides=t.overrides),this.fetchImplementation=n}async fetch(e,t){let n=t=>Error(`${Eg(t)} fetching ${e}`,{cause:t}),r;try{r=await this.fetchImplementation(e,t)}catch(i){if(`${i}`.includes(`Failed to fetch`)){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...t,cache:`reload`})}catch(e){throw n(e)}}else throw n(i)}return r}async read(e,t,n={}){if(e===0)return new Uint8Array;let{headers:r={},signal:i,overrides:a={}}=n;e<1/0?r.range=`bytes=${t}-${t+e-1}`:e===1/0&&t!==0&&(r.range=`bytes=${t}-`);let o=await this.fetch(this.url,{...this.baseOverrides,...a,headers:{...this.baseOverrides.headers,...a.headers,...r},method:`GET`,redirect:`follow`,mode:`cors`,signal:i});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${this.url}`);if(o.status===200&&t===0||o.status===206){let t=o.headers.get(`content-range`),n=/\/(\d+)$/.exec(t||``);n?.[1]&&(this._stat={size:parseInt(n[1],10)});let r=o.bytes?await o.bytes():new Uint8Array(await o.arrayBuffer());return r.byteLength<=e?r:r.subarray(0,e)}throw Error(o.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${o.status} fetching ${this.url}`)}async readFile(e={}){let t,n;if(typeof e==`string`)t=e,n={};else{t=e.encoding;let{encoding:r,...i}=e;n=i}let{headers:r={},signal:i,overrides:a={}}=n,o=await this.fetch(this.url,{...this.baseOverrides,...a,headers:{...this.baseOverrides.headers,...a.headers,...r},method:`GET`,redirect:`follow`,mode:`cors`,signal:i});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${this.url}`);if(t===`utf8`)return o.text();if(t)throw Error(`unsupported encoding: ${t}`);return o.bytes?o.bytes():new Uint8Array(await o.arrayBuffer())}async stat(){if(!this._stat&&(await this.read(10,0),!this._stat))throw Error(`unable to determine size of file at ${this.url}`);return this._stat}async close(){}}})),kg=r({BlobFile:()=>wg,LocalFile:()=>Ag,RemoteFile:()=>Dg}),Ag,jg=n((()=>{Cg(),Tg(),Og(),Ag=class{readFile(){throw Error(`unimplemented`)}read(){throw Error(`unimplemented`)}close(){throw Error(`unimplemented`)}}}));function Mg(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*Pg+(n>>>0)}var Ng,Pg,Fg=n((()=>{Ng=65536,Pg=Ng*Ng}));function Ig(e,t,n){let r=t[Lg],i=n?n[Lg]:1/0;return r<=e&&i>e?0:r<e?-1:1}var Lg,Rg,zg=n((()=>{Fg(),Lg=1,Rg=class{filehandle;index;constructor({filehandle:e}){this.filehandle=e}_getIndex(){return this.index||=this._readIndex().catch(e=>{throw this.index=void 0,e}),this.index}async _readIndex(){let e=Mg(await this.filehandle.read(8,0));if(!e)return[[0,0]];let t=Array(e+1);t[0]=[0,0];let n=16*e;if(n>2**53-1)throw TypeError(`integer overflow`);let r=await this.filehandle.read(n,8);for(let n=0;n<e;n+=1){let e=Mg(r,n*16),i=Mg(r,n*16+8);t[n+1]=[e,i]}return t}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(e,t){let n=t+e;if(e===0)return[];let r=await this._getIndex(),i=[],a=0,o=r.length-1,s=Math.floor(r.length/2),c=Ig(t,r[s],r[s+1]);for(;c!==0;)c>0?o=s-1:c<0&&(a=s+1),s=Math.ceil((o-a)/2)+a,c=Ig(t,r[s],r[s+1]);i.push(r[s]);let l=s+1;for(;l<r.length&&(i.push(r[l]),!(r[l][Lg]>=n));l+=1);return i[i.length-1][Lg]<n&&i.push([]),i}}})),Bg=n((()=>{}));function Vg(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Hg(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if(typeof n!=`object`)throw TypeError(n+`must be non-object`);for(var r in n)Vg(n,r)&&(e[r]=n[r])}}return e}function Ug(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var Wg,Gg,Kg,qg,Jg,Yg,Xg,Zg,Qg=n((()=>{Wg={arraySet:function(e,t,n,r,i){if(t.subarray&&e.subarray){e.set(t.subarray(n,n+r),i);return}for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){var t,n,r=0,i,a,o;for(t=0,n=e.length;t<n;t++)r+=e[t].length;for(o=new Uint8Array(r),i=0,t=0,n=e.length;t<n;t++)a=e[t],o.set(a,i),i+=a.length;return o},Buf8:function(e){return new Uint8Array(e)},Buf16:function(e){return new Uint16Array(e)},Buf32:function(e){return new Int32Array(e)}},Gg={arraySet:function(e,t,n,r,i){for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){return[].concat.apply([],e)},Buf8:function(e){return Array(e)},Buf16:function(e){return Array(e)},Buf32:function(e){return Array(e)}},Kg=()=>{let e=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;return Kg=()=>e,e},qg=(e,t,n,r,i)=>(qg=Kg()?Wg.arraySet:Gg.arraySet,qg(e,t,n,r,i)),Jg=e=>(Jg=Kg()?Wg.flattenChunks:Gg.flattenChunks,Jg(e)),Yg=e=>(Yg=Kg()?Wg.Buf8:Gg.Buf8,Yg(e)),Xg=e=>(Xg=Kg()?Wg.Buf16:Gg.Buf16,Xg(e)),Zg=e=>(Zg=Kg()?Wg.Buf32:Gg.Buf32,Zg(e))}));function $g(e){var t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t}function e_(e,t){if(t<65534&&(e.subarray&&a_()||!e.subarray&&i_()))return String.fromCharCode.apply(null,Ug(e,t));for(var n=``,r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}function t_(e){for(var t=new Uint8Array(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function n_(e,t){var n,r,i,a,o=t||e.length,s=Array(o*2);for(r=0,n=0;n<o;){if(i=e[n++],i<128){s[r++]=i;continue}if(a=o_(i),a>4){s[r++]=65533,n+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&n<o;)i=i<<6|e[n++]&63,a--;if(a>1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return e_(s,r)}function r_(e,t){var n;for(t||=e.length,t>e.length&&(t=e.length),n=t-1;n>=0&&(e[n]&192)==128;)n--;return n<0||n===0?t:n+o_(e[n])>t?n:t}var i_,a_,o_,s_=n((()=>{Qg(),i_=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return i_=()=>e,e},a_=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return a_=()=>e,e},o_=function(e){for(var t=Yg(256),n=0;n<256;n++)t[n]=n>=252?6:n>=248?5:n>=240?4:n>=224?3:n>=192?2:1;return t[254]=t[254]=1,o_=e=>t[e],t[e]}}));function c_(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=``,this.comment=``,this.hcrc=0,this.done=!1}var l_=n((()=>{}));function u_(e,t,n,r){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}var d_=n((()=>{}));function f_(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t}function p_(e,t,n,r){var i=m_(),a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var m_,h_=n((()=>{m_=function(){let e=f_();return m_=()=>e,e}}));function g_(e,t){var n=e.state,r=e.next_in,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.input,E;i=r+(e.avail_in-5),a=e.next_out,E=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),c=n.dmax,l=n.wsize,u=n.whave,d=n.wnext,f=n.window,p=n.hold,m=n.bits,h=n.lencode,g=n.distcode,_=(1<<n.lenbits)-1,v=(1<<n.distbits)-1;top:do{m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=h[p&_];dolen:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b===0)E[a++]=y&65535;else if(b&16){x=y&65535,b&=15,b&&(m<b&&(p+=T[r++]<<m,m+=8),x+=p&(1<<b)-1,p>>>=b,m-=b),m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=g[p&v];dodist:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b&16){if(S=y&65535,b&=15,m<b&&(p+=T[r++]<<m,m+=8,m<b&&(p+=T[r++]<<m,m+=8)),S+=p&(1<<b)-1,S>c){e.msg=`invalid distance too far back`,n.mode=__;break top}if(p>>>=b,m-=b,b=a-o,S>b){if(b=S-b,b>u&&n.sane){e.msg=`invalid distance too far back`,n.mode=__;break top}if(C=0,w=f,d===0){if(C+=l-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}else if(d<b){if(C+=l+d-b,b-=d,b<x){x-=b;do E[a++]=f[C++];while(--b);if(C=0,d<x){b=d,x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}}else if(C+=d-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}for(;x>2;)E[a++]=w[C++],E[a++]=w[C++],E[a++]=w[C++],x-=3;x&&(E[a++]=w[C++],x>1&&(E[a++]=w[C++]))}else{C=a-S;do E[a++]=E[C++],E[a++]=E[C++],E[a++]=E[C++],x-=3;while(x>2);x&&(E[a++]=E[C++],x>1&&(E[a++]=E[C++]))}}else if(b&64){e.msg=`invalid distance code`,n.mode=__;break top}else{y=g[(y&65535)+(p&(1<<b)-1)];continue dodist}break}}else if(!(b&64)){y=h[(y&65535)+(p&(1<<b)-1)];continue dolen}else if(b&32){n.mode=v_;break top}else{e.msg=`invalid literal/length code`,n.mode=__;break top}break}}while(r<i&&a<s);x=m>>3,r-=x,m-=x<<3,p&=(1<<m)-1,e.next_in=r,e.next_out=a,e.avail_in=r<i?5+(i-r):5-(r-i),e.avail_out=a<s?257+(s-a):257-(a-s),n.hold=p,n.bits=m}var __,v_,y_=n((()=>{__=30,v_=12}));function b_(e,t,n,r,i,a,o,s){var c=s.bits,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y,b,x,S,C,w=null,T=0,E,ee=Xg(x_+1),te=Xg(x_+1),ne=null,re=0,ie,ae,oe;for(l=0;l<=x_;l++)ee[l]=0;for(u=0;u<r;u++)ee[t[n+u]]++;for(p=c,f=x_;f>=1&&ee[f]===0;f--);if(p>f&&(p=f),f===0)return i[a++]=20971520,i[a++]=20971520,s.bits=1,0;for(d=1;d<f&&ee[d]===0;d++);for(p<d&&(p=d),g=1,l=1;l<=x_;l++)if(g<<=1,g-=ee[l],g<0)return-1;if(g>0&&(e===w_||f!==1))return-1;for(te[1]=0,l=1;l<x_;l++)te[l+1]=te[l]+ee[l];for(u=0;u<r;u++)t[n+u]!==0&&(o[te[t[n+u]]++]=u);if(e===w_?(w=ne=o,E=19):e===T_?(w=D_,T-=257,ne=O_,re-=257,E=256):(w=k_,ne=A_,E=-1),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===T_&&_>S_||e===E_&&_>C_)return 1;for(;;){ie=l-h,o[u]<E?(ae=0,oe=o[u]):o[u]>E?(ae=ne[re+o[u]],oe=w[T+o[u]]):(ae=96,oe=0),y=1<<l-h,b=1<<m,d=b;do b-=y,i[C+(v>>h)+b]=ie<<24|ae<<16|oe|0;while(b!==0);for(y=1<<l-1;v&y;)y>>=1;if(y===0?v=0:(v&=y-1,v+=y),u++,--ee[l]===0){if(l===f)break;l=t[n+o[u]]}if(l>p&&(v&S)!==x){for(h===0&&(h=p),C+=d,m=l-h,g=1<<m;m+h<f&&(g-=ee[m+h],!(g<=0));)m++,g<<=1;if(_+=1<<m,e===T_&&_>S_||e===E_&&_>C_)return 1;x=v&S,i[x]=p<<24|m<<16|C-a|0}}return v!==0&&(i[C+v]=l-h<<24|4194304),s.bits=p,0}var x_,S_,C_,w_,T_,E_,D_,O_,k_,A_,j_=n((()=>{Qg(),x_=15,S_=852,C_=592,w_=0,T_=1,E_=2,D_=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],O_=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],k_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A_=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]}));function M_(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function N_(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Xg(320),this.work=Xg(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function P_(e){var t;return!e||!e.state?$_:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=iv,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Zg(Fv),t.distcode=t.distdyn=Zg(Iv),t.sane=1,t.back=-1,X_)}function F_(e){var t;return!e||!e.state?$_:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,P_(e))}function I_(e,t){var n,r;return!e||!e.state||(r=e.state,t<0?(n=0,t=-t):(n=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?$_:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,F_(e))}function L_(e,t){var n,r;return e?(r=new N_,e.state=r,r.window=null,n=I_(e,t),n!==X_&&(e.state=null),n):$_}function R_(e){if(Lv){var t;for(Rv=Zg(512),zv=Zg(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(b_(G_,e.lens,0,288,Rv,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;b_(K_,e.lens,0,32,zv,0,e.work,{bits:5}),Lv=!1}e.lencode=Rv,e.lenbits=9,e.distcode=zv,e.distbits=5}function z_(e,t,n,r){var i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=Yg(a.wsize)),r>=a.wsize?(qg(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),qg(a.window,t,n-r,i,a.wnext),r-=i,r?(qg(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0}function B_(e,t){var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=0,_,v,y,b,x,S,C,w,T=Yg(4),E,ee,te=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return $_;n=e.state,n.mode===hv&&(n.mode=gv),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,d=s,f=c,w=X_;inf_leave:for(;;)switch(n.mode){case iv:if(n.wrap===0){n.mode=gv;break}for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&2&&l===35615){n.check=0,T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0),l=0,u=0,n.mode=av;break}if(n.flags=0,n.head&&(n.head.done=!1),!(n.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg=`incorrect header check`,n.mode=z;break}if((l&15)!==rv){e.msg=`unknown compression method`,n.mode=z;break}if(l>>>=4,u-=4,C=(l&15)+8,n.wbits===0)n.wbits=C;else if(C>n.wbits){e.msg=`invalid window size`,n.mode=z;break}n.dmax=1<<C,e.adler=n.check=1,n.mode=l&512?pv:hv,l=0,u=0;break;case av:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==rv){e.msg=`unknown compression method`,n.mode=z;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=z;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0,n.mode=ov;case ov:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.time=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,T[2]=l>>>16&255,T[3]=l>>>24&255,n.check=p_(n.check,T,4,0)),l=0,u=0,n.mode=sv;case sv:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=l&255,n.head.os=l>>8),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0,n.mode=cv;case cv:if(n.flags&1024){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length=l,n.head&&(n.head.extra_len=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=lv;case lv:if(n.flags&1024&&(p=n.length,p>s&&(p=s),p&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=Array(n.head.extra_len)),qg(n.head.extra,r,a,p,C)),n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=uv;case uv:if(n.flags&2048){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.name=null);n.length=0,n.mode=dv;case dv:if(n.flags&4096){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.comment+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=fv;case fv:if(n.flags&512){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.check&65535)){e.msg=`header crc mismatch`,n.mode=z;break}l=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=hv;break;case pv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=M_(l),l=0,u=0,n.mode=mv;case mv:if(n.havedict===0)return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,Q_;e.adler=n.check=1,n.mode=hv;case hv:if(t===J_||t===Y_)break inf_leave;case gv:if(n.last){l>>>=u&7,u-=u&7,n.mode=Av;break}for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}switch(n.last=l&1,l>>>=1,--u,l&3){case 0:n.mode=_v;break;case 1:if(R_(n),n.mode=Cv,t===Y_){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=bv;break;case 3:e.msg=`invalid block type`,n.mode=z}l>>>=2,u-=2;break;case _v:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if((l&65535)!=(l>>>16^65535)){e.msg=`invalid stored block lengths`,n.mode=z;break}if(n.length=l&65535,l=0,u=0,n.mode=vv,t===Y_)break inf_leave;case vv:n.mode=yv;case yv:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;qg(i,r,a,p,o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=hv;break;case bv:for(;u<14;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.nlen=(l&31)+257,l>>>=5,u-=5,n.ndist=(l&31)+1,l>>>=5,u-=5,n.ncode=(l&15)+4,l>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg=`too many length or distance symbols`,n.mode=z;break}n.have=0,n.mode=xv;case xv:for(;n.have<n.ncode;){for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.lens[te[n.have++]]=l&7,l>>>=3,u-=3}for(;n.have<19;)n.lens[te[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,E={bits:n.lenbits},w=b_(W_,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=z;break}n.have=0,n.mode=Sv;case Sv:for(;n.have<n.nlen+n.ndist;){for(;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(y<16)l>>>=_,u-=_,n.lens[n.have++]=y;else{if(y===16){for(ee=_+2;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l>>>=_,u-=_,n.have===0){e.msg=`invalid bit length repeat`,n.mode=z;break}C=n.lens[n.have-1],p=3+(l&3),l>>>=2,u-=2}else if(y===17){for(ee=_+3;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=3+(l&7),l>>>=3,u-=3}else{for(ee=_+7;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=11+(l&127),l>>>=7,u-=7}if(n.have+p>n.nlen+n.ndist){e.msg=`invalid bit length repeat`,n.mode=z;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===z)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=z;break}if(n.lenbits=9,E={bits:n.lenbits},w=b_(G_,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=z;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=b_(K_,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=z;break}if(n.mode=Cv,t===Y_)break inf_leave;case Cv:n.mode=wv;case wv:if(s>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,g_(e,f),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===hv&&(n.back=-1);break}for(n.back=0;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(v&&!(v&240)){for(b=_,x=v,S=y;g=n.lencode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,n.length=y,v===0){n.mode=kv;break}if(v&32){n.back=-1,n.mode=hv;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=z;break}n.extra=v&15,n.mode=Tv;case Tv:if(n.extra){for(ee=n.extra;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Ev;case Ev:for(;g=n.distcode[l&(1<<n.distbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(!(v&240)){for(b=_,x=v,S=y;g=n.distcode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,v&64){e.msg=`invalid distance code`,n.mode=z;break}n.offset=y,n.extra=v&15,n.mode=Dv;case Dv:if(n.extra){for(ee=n.extra;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg=`invalid distance too far back`,n.mode=z;break}n.mode=Ov;case Ov:if(c===0)break inf_leave;if(p=f-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg=`invalid distance too far back`,n.mode=z;break}p>n.wnext?(p-=n.wnext,m=n.wsize-p):m=n.wnext-p,p>n.length&&(p=n.length),h=n.window}else h=i,m=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do i[o++]=h[m++];while(--p);n.length===0&&(n.mode=wv);break;case kv:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=wv;break;case Av:if(n.wrap){for(;u<32;){if(s===0)break inf_leave;s--,l|=r[a++]<<u,u+=8}if(f-=c,e.total_out+=f,n.total+=f,f&&(e.adler=n.check=n.flags?p_(n.check,i,f,o-f):u_(n.check,i,f,o-f)),f=c,(n.flags?l:M_(l))!==n.check){e.msg=`incorrect data check`,n.mode=z;break}l=0,u=0}n.mode=jv;case jv:if(n.wrap&&n.flags){for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.total&4294967295)){e.msg=`incorrect length check`,n.mode=z;break}l=0,u=0}n.mode=Mv;case Mv:w=Z_;break inf_leave;case z:w=ev;break inf_leave;case Nv:return tv;case Pv:default:return $_}return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,(n.wsize||f!==e.avail_out&&n.mode<z&&(n.mode<Av||t!==q_))&&z_(e,e.output,e.next_out,f-e.avail_out)?(n.mode=Nv,tv):(d-=e.avail_in,f-=e.avail_out,e.total_in+=d,e.total_out+=f,n.total+=f,n.wrap&&f&&(e.adler=n.check=n.flags?p_(n.check,i,f,e.next_out-f):u_(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===hv?128:0)+(n.mode===Cv||n.mode===vv?256:0),(d===0&&f===0||t===q_)&&w===X_&&(w=nv),w)}function V_(e){if(!e||!e.state)return $_;var t=e.state;return t.window&&=null,e.state=null,X_}function H_(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?$_:(n.head=t,t.done=!1,X_)}function U_(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==mv)?$_:r.mode===mv&&(i=1,i=u_(i,t,n,0),i!==r.check)?ev:(a=z_(e,t,n,n),a?(r.mode=Nv,tv):(r.havedict=1,X_))}var W_,G_,K_,q_,J_,Y_,X_,Z_,Q_,$_,ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv,fv,pv,mv,hv,gv,_v,vv,yv,bv,xv,Sv,Cv,wv,Tv,Ev,Dv,Ov,kv,Av,jv,Mv,z,Nv,Pv,Fv,Iv,Lv,Rv,zv,Bv=n((()=>{d_(),h_(),y_(),j_(),Qg(),W_=0,G_=1,K_=2,q_=4,J_=5,Y_=6,X_=0,Z_=1,Q_=2,$_=-2,ev=-3,tv=-4,nv=-5,rv=8,iv=1,av=2,ov=3,sv=4,cv=5,lv=6,uv=7,dv=8,fv=9,pv=10,mv=11,hv=12,gv=13,_v=14,vv=15,yv=16,bv=17,xv=18,Sv=19,Cv=20,wv=21,Tv=22,Ev=23,Dv=24,Ov=25,kv=26,Av=27,jv=28,Mv=29,z=30,Nv=31,Pv=32,Fv=852,Iv=592,Lv=!0})),Vv,Hv=n((()=>{Vv={2:`need dictionary`,1:`stream end`,0:``,"-1":`file error`,"-2":`stream error`,"-3":`data error`,"-4":`insufficient memory`,"-5":`buffer error`,"-6":`incompatible version`}}));function Uv(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=``,this.state=null,this.data_type=2,this.adler=0}var Wv=n((()=>{}));function Gv(e,t){var n=new qv(t);if(n.push(e,!0),n.err)throw n.msg||Vv[n.err];return n.result}var Kv,qv,Jv,Yv=n((()=>{Qg(),s_(),Bg(),l_(),Bv(),Hv(),Wv(),Kv=Object.prototype.toString,qv=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Hg({chunkSize:16384,windowBits:0,to:``},t||{});var n=this.options;n.raw&&n.windowBits>=0&&n.windowBits<16&&(n.windowBits=-n.windowBits,n.windowBits===0&&(n.windowBits=-15)),n.windowBits>=0&&n.windowBits<16&&!(t&&t.windowBits)&&(n.windowBits+=32),n.windowBits>15&&n.windowBits<48&&(n.windowBits&15||(n.windowBits|=15)),this.err=0,this.msg=``,this.ended=!1,this.chunks=[],this.strm=new Uv,this.strm.avail_out=0;var r=L_(this.strm,n.windowBits);if(r!==0||(this.header=new c_,H_(this.strm,this.header),n.dictionary&&(typeof n.dictionary==`string`?n.dictionary=$g(n.dictionary):Kv.call(n.dictionary)===`[object ArrayBuffer]`&&(n.dictionary=new Uint8Array(n.dictionary)),n.raw&&(r=U_(this.strm,n.dictionary),r!==0))))throw Error(Vv[r])}push(e,t){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,o,s,c,l,u,d=!1;if(this.ended)return!1;o=t===~~t?t:t===!0?4:0,typeof e==`string`?n.input=t_(e):Kv.call(e)===`[object ArrayBuffer]`?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=Yg(r),n.next_out=0,n.avail_out=r),a=B_(n,0),a===2&&i&&(u=typeof i==`string`?$g(i):Kv.call(i)===`[object ArrayBuffer]`?new Uint8Array(i):i,a=U_(this.strm,u)),a===-5&&d===!0&&(a=0,d=!1),a!==1&&a!==0)return this.onEnd(a),this.ended=!0,!1;n.next_out&&(n.avail_out===0||a===1||n.avail_in===0&&(o===4||o===2))&&(this.options.to===`string`?(s=r_(n.output,n.next_out),c=n.next_out-s,l=n_(n.output,s),n.next_out=c,n.avail_out=r-c,c&&qg(n.output,n.output,s,c,0),this.onData(l)):this.onData(Ug(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(d=!0)}while((n.avail_in>0||n.avail_out===0)&&a!==1);return a===1&&(o=4),o===4?(a=V_(this.strm),this.onEnd(a),this.ended=!0,a===0):o===2?(this.onEnd(0),n.avail_out=0,!0):!0}onData(e){this.chunks.push(e)}onEnd(e){e===0&&(this.options.to===`string`?this.result=this.chunks.join(``):this.result=Jg(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}},Jv=Gv})),Xv=n((()=>{})),Zv=n((()=>{Bg(),Yv(),Xv()}));function Qv(e){try{let a=B.__wbindgen_add_to_stack_pointer(-16),o=fy(e,B.__wbindgen_export2),s=Py;B.decompress_all(a,o,s);var t=sy().getInt32(a+0,!0),n=sy().getInt32(a+4,!0),r=sy().getInt32(a+8,!0);if(sy().getInt32(a+12,!0))throw py(r);var i=oy(t,n).slice();return B.__wbindgen_export(t,n*1,1),i}finally{B.__wbindgen_add_to_stack_pointer(16)}}function $v(e){try{let r=B.__wbindgen_add_to_stack_pointer(-16),i=fy(e,B.__wbindgen_export2),a=Py;B.decompress_block(r,i,a);var t=sy().getInt32(r+0,!0),n=sy().getInt32(r+4,!0);if(sy().getInt32(r+8,!0))throw py(n);return Cy.__wrap(t)}finally{B.__wbindgen_add_to_stack_pointer(16)}}function ey(e,t,n,r,i){try{let s=B.__wbindgen_add_to_stack_pointer(-16),c=fy(e,B.__wbindgen_export2),l=Py;B.decompress_chunk_slice(s,c,l,t,n,r,i);var a=sy().getInt32(s+0,!0),o=sy().getInt32(s+4,!0);if(sy().getInt32(s+8,!0))throw py(o);return Sy.__wrap(a)}finally{B.__wbindgen_add_to_stack_pointer(16)}}function ty(e,t){return ry(Error(ly(e,t)))}function ny(e,t){throw Error(ly(e,t))}function ry(e){Ay===ky.length&&ky.push(ky.length+1);let t=Ay;return Ay=ky[t],ky[t]=e,t}function iy(e){e<132||(ky[e]=Ay,Ay=e)}function ay(e,t){return e>>>=0,cy().subarray(e/8,e/8+t)}function oy(e,t){return e>>>=0,uy().subarray(e/1,e/1+t)}function sy(){return(Ey===null||Ey.buffer.detached===!0||Ey.buffer.detached===void 0&&Ey.buffer!==B.memory.buffer)&&(Ey=new DataView(B.memory.buffer)),Ey}function cy(){return(Dy===null||Dy.byteLength===0)&&(Dy=new Float64Array(B.memory.buffer)),Dy}function ly(e,t){return e>>>=0,my(e,t)}function uy(){return(Oy===null||Oy.byteLength===0)&&(Oy=new Uint8Array(B.memory.buffer)),Oy}function dy(e){return ky[e]}function fy(e,t){let n=t(e.length*1,1)>>>0;return uy().set(e,n/1),Py=e.length,n}function py(e){let t=dy(e);return iy(e),t}function my(e,t){return Ny+=t,Ny>=My&&(jy=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),jy.decode(),Ny=t),jy.decode(uy().subarray(e,e+t))}function hy(e){B=e}async function gy(){return Fy||(Iy||=(async()=>{let e=await(await fetch(xy)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":by});return Fy=t.exports,hy(Fy),Fy})(),Iy)}async function _y(e){return await gy(),Qv(e)}async function vy(e,t,n,r,i){await gy();let a=ey(e,t,n,r,i),o=a.buffer,s=[...a.cpositions],c=[...a.dpositions];return a.free(),{buffer:o,cpositions:s,dpositions:c}}var yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,Ny,Py,B,Fy,Iy,Ly=n((()=>{yy={},yy.d=(e,t)=>{for(var n in t)yy.o(t,n)&&!yy.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},yy.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),yy.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},by={},yy.r(by),yy.d(by,{ChunkSliceResult:()=>Sy,DecompressResult:()=>Cy,__wbg_Error_8c4e43fe74559d73:()=>ty,__wbg___wbindgen_throw_be289d5034ed271b:()=>ny,__wbg_set_wasm:()=>hy,decompress_all:()=>Qv,decompress_block:()=>$v,decompress_chunk_slice:()=>ey}),xy=`data:application/wasm;base64,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AAsgASADNgIEIAEgAjYCACABQfiSwAAgACgCBCAAKAIIIgAtAAggAC0ACRAeAAuLAQEBfyMAQRBrIgMkAAJAIAIgAWoiASACTw0AQQBBABBNAAsgA0EEaiAAKAIAIgIgACgCBCABIAJBAXQiAiABIAJLGyICQQggAkEISxsiAkEBQQEQIAJAIAMoAgRBAUcNACADKAIIIAMoAgwQTQALIAMoAgghASAAIAI2AgAgACABNgIEIANBEGokAAuHAQEBfyMAQSBrIgIkAAJAAkAgACgCAEGAgICAeEYNACABIAAoAgQgACgCCBBSIQAMAQsgAkEIakEIaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEIakEQaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIAIAEoAgQgAkEIahALIQALIAJBIGokACAAC3wBAX8CQCAAKAIAIgAoAgwiAUUNACAAKAIQIAFBARBWCwJAIAAoAhgiAUUNACAAKAIcIAFBA3RBCBBWCwJAIAAoAiQiAUUNACAAKAIoIAFBA3RBCBBWCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEwQQQQVgsLhAEBAn8jAEEQayIGJABBACEHIAZBADYCDAJAAkACQAJAAkAgASgCACACIAMgBCAFIAZBDGoQUA4EAQIAAwALQZCFwABB7ABB/IXAABA/AAsgACAGKAIMNgIEDAILIABBADoAAUEBIQcMAQtBASEHIABBAToAAQsgACAHOgAAIAZBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgQgAkEBdCICQQQgAkEESxsiAkEIQQgQIAJAIAEoAgRBAUcNACABKAIIIAEoAgwQTQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtoAQF/IwBBMGsiAiQAAkAQaEH/AXENACACQTBqJAAPCyACIAE2AiQgAkECNgIQIAJBpJLAADYCDCACQgE3AhggAkEErUIghiACQSRqrYQ3AyggAiACQShqNgIUIAJBDGpBtJLAABBAAAtoAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0GcmMAANgIIIANCAjcCFCADQQStQiCGIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBA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ABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgF8/YsyV+ZX+QLfRL/jSOevbV3L1ixQ62N4QaZXcRuLuW1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAAAJEAAVAAAAFQkQAA0AAAAGARAAGAAAAGQBAAAJAAAAAAAAAAgAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAMAAAABAAAAAoAAAALAAAADAAAAAAAAAAIAAAABAAAAA0AAAAOAAAADwAAABAAAAARAAAAEAAAAAQAAAASAAAAEwAAABQAAAAIAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAANsAEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADbABAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAUAoQABEAAAC6ABAAIAAAABwAAAAFAAAAAQAAAAAAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OXJhbmdlIGVuZCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABMCxAAEAAAAFwLEAAiAAAAc2xpY2UgaW5kZXggc3RhcnRzIGF0ICBidXQgZW5kcyBhdCAAkAsQABYAAACmCxAADQAAAHJhbmdlIHN0YXJ0IGluZGV4IAAAxAsQABIAAABcCxAAIgAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAADoCxAAIAAAAAgMEAASAAAAUmVmQ2VsbCBhbHJlYWR5IGJvcnJvd2VkAEHEmMAACwQEAAAAACkEbmFtZQEiAVgfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgA8CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yNC40DHdhc20tYmluZGdlbgcwLjIuMTA4`,Sy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,wy.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,wy.unregister(this),e}free(){let e=this.__destroy_into_raw();B.__wbg_chunksliceresult_free(e,0)}get buffer(){try{let r=B.__wbindgen_add_to_stack_pointer(-16);B.chunksliceresult_buffer(r,this.__wbg_ptr);var e=sy().getInt32(r+0,!0),t=sy().getInt32(r+4,!0),n=oy(e,t).slice();return B.__wbindgen_export(e,t*1,1),n}finally{B.__wbindgen_add_to_stack_pointer(16)}}get cpositions(){try{let r=B.__wbindgen_add_to_stack_pointer(-16);B.chunksliceresult_cpositions(r,this.__wbg_ptr);var e=sy().getInt32(r+0,!0),t=sy().getInt32(r+4,!0),n=ay(e,t).slice();return B.__wbindgen_export(e,t*8,8),n}finally{B.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{let r=B.__wbindgen_add_to_stack_pointer(-16);B.chunksliceresult_dpositions(r,this.__wbg_ptr);var e=sy().getInt32(r+0,!0),t=sy().getInt32(r+4,!0),n=ay(e,t).slice();return B.__wbindgen_export(e,t*8,8),n}finally{B.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(Sy.prototype[Symbol.dispose]=Sy.prototype.free),Cy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ty.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ty.unregister(this),e}free(){let e=this.__destroy_into_raw();B.__wbg_decompressresult_free(e,0)}get bytes_read(){return B.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{let r=B.__wbindgen_add_to_stack_pointer(-16);B.decompressresult_data(r,this.__wbg_ptr);var e=sy().getInt32(r+0,!0),t=sy().getInt32(r+4,!0),n=oy(e,t).slice();return B.__wbindgen_export(e,t*1,1),n}finally{B.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(Cy.prototype[Symbol.dispose]=Cy.prototype.free),wy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>B.__wbg_chunksliceresult_free(e>>>0,1)),Ty=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>B.__wbg_decompressresult_free(e>>>0,1)),Ey=null,Dy=null,Oy=null,ky=Array(128).fill(void 0),ky.push(void 0,null,!0,!1),Ay=ky.length,jy=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),jy.decode(),My=2146435072,Ny=0,Py=0,Fy=null,Iy=null}));function Ry(e){return e.length>=2&&e[0]===31&&e[1]===139}async function zy(e){if(typeof DecompressionStream<`u`){let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=n.write(e).then(()=>n.close()),i=[],a=t.readable.getReader();for(;;){let{done:e,value:t}=await a.read();if(e)break;i.push(t)}await r;let o=i.reduce((e,t)=>e+t.length,0),s=new Uint8Array(o),c=0;for(let e of i)s.set(e,c),c+=e.length;return s}else return Jv(e,void 0)}async function By(e){try{return await _y(e)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(Ry(e))return zy(e);throw Error(`problem decompressing block: not a valid bgzf or gzip block`)}throw/invalid gzip header/.exec(`${t}`)?Error(`problem decompressing block: incorrect gzip header check`):t}}async function Vy(e,t,n){try{let{minv:n,maxv:r}=t,i=await vy(e,n.blockPosition,n.dataPosition,r.blockPosition,r.dataPosition);return{buffer:i.buffer,cpositions:i.cpositions,dpositions:i.dpositions}}catch(e){throw/invalid gzip header/.exec(`${e}`)?Error(`problem decompressing block: incorrect gzip header check`):e}}var Hy=n((()=>{Zv(),Ly()}));function Uy(e){let t=0;for(let n of e)t+=n.length;return t}function Wy(e,t){let n=new Uint8Array(t??Uy(e)),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Gy=n((()=>{})),Ky,qy=n((()=>{zg(),Hy(),Gy(),Ky=class{filehandle;gzi;constructor({filehandle:e,gziFilehandle:t}){this.filehandle=e,this.gzi=new Rg({filehandle:t})}async _readAndUncompressBlock(e,t){let n=t;n||=(await this.filehandle.stat()).size;let r=n-e;return By(await this.filehandle.read(r,e))}async read(e,t){let n=await this.gzi.getRelevantBlocksForRead(e,t),r=[];for(let i=0;i<n.length-1;i+=1){let a=await this._readAndUncompressBlock(n[i][0],n[i+1][0]),[,o]=n[i],s=o>=t?0:t-o,c=Math.min(t+e,o+a.length)-o;s>=0&&s<a.length&&r.push(a.subarray(s,c))}return Wy(r)}}})),Jy=n((()=>{qy(),Hy()}));function Yy(e,t,n,r){return e+t*Math.floor(r/n)+r%n}async function Xy(e,t={}){let n=new TextDecoder(`utf8`).decode(await e.readFile(t)),r=[],i=[],a=[],o=[],s=[],c={},l=0,u=n.length,d=0;for(;l<u;){let e=n.indexOf(`
|
|
193
|
-
`,l);e===-1&&(e=u);let t=n.slice(l,e);if(t.endsWith(`\r`)&&(t=t.slice(0,-1)),t=t.trim(),l=e+1,t.length===0)continue;let f=t.indexOf(` `),p=t.indexOf(` `,f+1),m=t.indexOf(` `,p+1),h=t.indexOf(` `,m+1),g=t.slice(0,f);if(g.startsWith(`>`))throw Error(`found > in sequence name, might have supplied FASTA file for the FASTA index`);r.push(g),a.push(+t.slice(f+1,p)),i.push(+t.slice(p+1,m)),o.push(+t.slice(m+1,h)),s.push(+t.slice(h+1)),c[g]=d,d++}return{names:r,nameToIndex:c,offsets:i,lengths:a,lineLengths:o,lineBytes:s}}var
|
|
194
|
-
`),[r,...i]=t.split(` `),a=n.join(``).replace(/\s/g,``);return{id:r,description:i.join(` `),sequence:a}})}var rb,ib=n((()=>{jg(),eb(),Qy(),rb=class{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new Ag(t);else throw Error(`Need to pass fasta or path`);this.data=this.fasta.readFile().then(e=>nb(new TextDecoder(`utf8`).decode(e)))}async fetch(e,t,n){let r=(await this.data).find(t=>t.id===e),i=n-t;if(!r)throw Error(`no sequence with id ${e} exists`);return r.sequence.slice(t,i)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}})),ab=class extends Sg{constructor(e,t){let n={channel:`x`,windowSize:7e3,debounce:200,debounceMode:`window`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for IndexedFastaSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(ib(),tb)),Promise.resolve().then(()=>(jg(),kg))]).then(([{IndexedFasta:t},{RemoteFile:n}])=>{let r=e=>new n(ah(e,this.view.getBaseUrl()));this.fasta=new t({fasta:r(this.params.url),fai:r(this.params.indexUrl??this.params.url+`.fai`)}),e()})})}get label(){return`bigWigSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.fasta.getSequence(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>{if(t!=null)return{chrom:e.chrom,start:e.startPos,sequence:t};console.log(`No sequence found for interval ${e.chrom}:${e.startPos}-${e.endPos}`)}));this.publishData([t.filter(e=>e!==void 0)])}};function ob(e){return e?.type==`indexedFasta`}Km(ob,ab);function sb(e,t,n){let r=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<lb|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function cb(e,t,n){let r=e.getUint32(t,n),i=e.getUint32(t+4,n),a=Number(!!n),o=Number(!n);return BigInt(r*o+i*a)<<lb|BigInt(r*a+i*o)}var lb,ub=n((()=>{lb=BigInt(32)})),db=n((()=>{ub(),`getBigInt64`in DataView||(DataView.prototype.getBigInt64=function(e,t){return sb(this,e,t)}),`getBigUint64`in DataView||(DataView.prototype.getBigUint64=function(e,t){return cb(this,e,t)})})),fb,pb,mb=n((()=>{fb=class{},pb=class{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new fb){if(this.signal.aborted)throw Error(`cannot add a signal, already aborted!`);this.signals.add(e),e.aborted?this.handleAborted(e):typeof e.addEventListener==`function`&&e.addEventListener(`abort`,()=>{this.handleAborted(e)})}handleAborted(e){this.signals.delete(e),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}})),hb,gb=n((()=>{hb=class{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),this.currentMessage&&e(this.currentMessage)}callback(e){this.currentMessage=e;for(let t of this.callbacks)t(e)}}})),_b,vb=n((()=>{mb(),gb(),_b=class e{constructor({fill:e,cache:t}){if(typeof e!=`function`)throw TypeError(`must pass a fill function`);if(typeof t!=`object`)throw TypeError(`must pass a cache object`);if(typeof t.get!=`function`||typeof t.set!=`function`||typeof t.delete!=`function`)throw TypeError(`cache must implement get(key), set(key, val), and and delete(key)`);this.cache=t,this.fillCallback=e}static isAbortException(e){return e.name===`AbortError`||e.code===`ERR_ABORTED`||e.message===`AbortError: aborted`||e.message===`Error: aborted`}evict(e,t){this.cache.get(e)===t&&this.cache.delete(e)}fill(e,t,n,r){let i=new pb,a=new hb;a.addCallback(r);let o={aborter:i,promise:this.fillCallback(t,i.signal,e=>{a.callback(e)}),settled:!1,statusReporter:a,get aborted(){return this.aborter.signal.aborted}};o.aborter.addSignal(n),o.aborter.signal.addEventListener(`abort`,()=>{o.settled||this.evict(e,o)}),o.promise.then(()=>{o.settled=!0},()=>{o.settled=!0,this.evict(e,o)}).catch(e=>{throw console.error(e),e}),this.cache.set(e,o)}static checkSinglePromise(e,t){function n(){if(t?.aborted)throw Object.assign(Error(`aborted`),{code:`ERR_ABORTED`})}return e.then(e=>(n(),e),e=>{throw n(),e})}has(e){return this.cache.has(e)}get(t,n,r,i){if(!r&&n instanceof AbortSignal)throw TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");let a=this.cache.get(t);return a?a.aborted&&!a.settled?(this.evict(t,a),this.get(t,n,r,i)):a.settled?a.promise:(a.aborter.addSignal(r),a.statusReporter.addCallback(i),e.checkSinglePromise(a.promise,r)):(this.fill(t,n,r,i),e.checkSinglePromise(this.cache.get(t).promise,r))}delete(e){let t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){let e=this.cache.keys(),t=0;for(let n=e.next();!n.done;n=e.next())this.delete(n.value),t+=1;return t}}})),yb=n((()=>{vb()})),bb,V,H,xb,U,Sb,Cb,wb,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb,Pb,Fb=n((()=>{bb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},V=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Pb=class extends Map{constructor(e={}){if(super(),H.add(this),xb.set(this,0),U.set(this,new Map),Sb.set(this,new Map),Cb.set(this,void 0),wb.set(this,void 0),Tb.set(this,void 0),!(e.maxSize&&e.maxSize>0))throw TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge==`number`&&e.maxAge===0)throw TypeError("`maxAge` must be a number greater than 0");bb(this,Cb,e.maxSize,`f`),bb(this,wb,e.maxAge||1/0,`f`),bb(this,Tb,e.onEviction,`f`)}get __oldCache(){return V(this,Sb,`f`)}get(e){if(V(this,U,`f`).has(e)){let t=V(this,U,`f`).get(e);return V(this,H,`m`,kb).call(this,e,t)}if(V(this,Sb,`f`).has(e)){let t=V(this,Sb,`f`).get(e);if(!V(this,H,`m`,Db).call(this,e,t))return V(this,H,`m`,Mb).call(this,e,t),t.value}}set(e,t,{maxAge:n=V(this,wb,`f`)}={}){let r=typeof n==`number`&&n!==1/0?Date.now()+n:void 0;return V(this,U,`f`).has(e)?V(this,U,`f`).set(e,{value:t,expiry:r}):V(this,H,`m`,jb).call(this,e,{value:t,expiry:r}),this}has(e){return V(this,U,`f`).has(e)?!V(this,H,`m`,Db).call(this,e,V(this,U,`f`).get(e)):V(this,Sb,`f`).has(e)?!V(this,H,`m`,Db).call(this,e,V(this,Sb,`f`).get(e)):!1}peek(e){if(V(this,U,`f`).has(e))return V(this,H,`m`,Ab).call(this,e,V(this,U,`f`));if(V(this,Sb,`f`).has(e))return V(this,H,`m`,Ab).call(this,e,V(this,Sb,`f`))}expiresIn(e){let t=V(this,U,`f`).get(e)??V(this,Sb,`f`).get(e);if(t)return t.expiry?t.expiry-Date.now():1/0}delete(e){var t;let n=V(this,U,`f`).delete(e);return n&&bb(this,xb,(t=V(this,xb,`f`),t--,t),`f`),V(this,Sb,`f`).delete(e)||n}clear(){V(this,U,`f`).clear(),V(this,Sb,`f`).clear(),bb(this,xb,0,`f`)}resize(e){if(!(e&&e>0))throw TypeError("`maxSize` must be a number greater than 0");let t=[...V(this,H,`m`,Nb).call(this)],n=t.length-e;n<0?(bb(this,U,new Map(t),`f`),bb(this,Sb,new Map,`f`),bb(this,xb,t.length,`f`)):(n>0&&V(this,H,`m`,Eb).call(this,t.slice(0,n)),bb(this,Sb,new Map(t.slice(n)),`f`),bb(this,U,new Map,`f`),bb(this,xb,0,`f`)),bb(this,Cb,e,`f`)}evict(e=1){let t=e;if(!t||t<=0)return;let n=[...V(this,H,`m`,Nb).call(this)],r=Math.trunc(Math.min(t,Math.max(n.length-1,0)));r<=0||(V(this,H,`m`,Eb).call(this,n.slice(0,r)),bb(this,Sb,new Map(n.slice(r)),`f`),bb(this,U,new Map,`f`),bb(this,xb,0,`f`))}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[(xb=new WeakMap,U=new WeakMap,Sb=new WeakMap,Cb=new WeakMap,wb=new WeakMap,Tb=new WeakMap,H=new WeakSet,Eb=function(e){if(typeof V(this,Tb,`f`)==`function`)for(let[t,n]of e)V(this,Tb,`f`).call(this,t,n.value)},Db=function(e,t){return typeof t.expiry==`number`&&t.expiry<=Date.now()?(typeof V(this,Tb,`f`)==`function`&&V(this,Tb,`f`).call(this,e,t.value),this.delete(e)):!1},Ob=function(e,t){if(!V(this,H,`m`,Db).call(this,e,t))return t.value},kb=function(e,t){return t.expiry?V(this,H,`m`,Ob).call(this,e,t):t.value},Ab=function(e,t){let n=t.get(e);return V(this,H,`m`,kb).call(this,e,n)},jb=function(e,t){var n;V(this,U,`f`).set(e,t),bb(this,xb,(n=V(this,xb,`f`),n++,n),`f`),V(this,xb,`f`)>=V(this,Cb,`f`)&&(bb(this,xb,0,`f`),V(this,H,`m`,Eb).call(this,V(this,Sb,`f`)),bb(this,Sb,V(this,U,`f`),`f`),bb(this,U,new Map,`f`))},Mb=function(e,t){V(this,Sb,`f`).delete(e),V(this,H,`m`,jb).call(this,e,t)},Nb=function*(){for(let e of V(this,Sb,`f`)){let[t,n]=e;V(this,U,`f`).has(t)||V(this,H,`m`,Db).call(this,t,n)||(yield e)}for(let e of V(this,U,`f`)){let[t,n]=e;V(this,H,`m`,Db).call(this,t,n)||(yield e)}},Symbol.iterator)](){for(let e of V(this,U,`f`)){let[t,n]=e;V(this,H,`m`,Db).call(this,t,n)||(yield[t,n.value])}for(let e of V(this,Sb,`f`)){let[t,n]=e;V(this,U,`f`).has(t)||V(this,H,`m`,Db).call(this,t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...V(this,U,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];V(this,H,`m`,Db).call(this,n,r)||(yield[n,r.value])}e=[...V(this,Sb,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];V(this,U,`f`).has(n)||V(this,H,`m`,Db).call(this,n,r)||(yield[n,r.value])}}*entriesAscending(){for(let[e,t]of V(this,H,`m`,Nb).call(this))yield[e,t.value]}get size(){if(!V(this,xb,`f`))return V(this,Sb,`f`).size;let e=0;for(let t of V(this,Sb,`f`).keys())V(this,U,`f`).has(t)||e++;return Math.min(V(this,xb,`f`)+e,V(this,Cb,`f`))}get maxSize(){return V(this,Cb,`f`)}get maxAge(){return V(this,wb,`f`)}entries(){return this.entriesAscending()}forEach(e,t=this){for(let[n,r]of this.entriesAscending())e.call(t,r,n,this)}get[Symbol.toStringTag](){return`QuickLRU`}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.toString()}}}));function Ib(e){let t=[...e].sort((e,t)=>e.min===t.min?e.max-t.max:e.min-t.min),n=[],r=t[0];for(let e=1;e<t.length;e++){let i=t[e];i.min>r.max+1?(n.push(r),r=i):i.max>r.max&&(r={min:r.min,max:i.max})}return n.push(r),n}var Lb=n((()=>{}));function Rb(e,t,n,r,i,a){try{let u=G.__wbindgen_add_to_stack_pointer(-16),d=ex(e,G.__wbindgen_export),f=xx,p=$b(t,G.__wbindgen_export),m=xx,h=$b(n,G.__wbindgen_export),g=xx;G.decompress_and_parse_bigwig(u,d,f,p,m,h,g,r,i,a);var o=W().getInt32(u+0,!0),s=W().getInt32(u+4,!0),c=W().getInt32(u+8,!0);if(W().getInt32(u+12,!0))throw tx(c);var l=Jb(o,s).slice();return G.__wbindgen_export2(o,s*1,1),l}finally{G.__wbindgen_add_to_stack_pointer(16)}}function zb(e,t,n,r,i,a,o){try{let d=G.__wbindgen_add_to_stack_pointer(-16),f=ex(e,G.__wbindgen_export),p=xx,m=$b(t,G.__wbindgen_export),h=xx,g=$b(n,G.__wbindgen_export),_=xx;G.decompress_and_parse_summary(d,f,p,m,h,g,_,r,i,a,o);var s=W().getInt32(d+0,!0),c=W().getInt32(d+4,!0),l=W().getInt32(d+8,!0);if(W().getInt32(d+12,!0))throw tx(l);var u=Jb(s,c).slice();return G.__wbindgen_export2(s,c*1,1),u}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Bb(e,t){try{let o=G.__wbindgen_add_to_stack_pointer(-16),s=ex(e,G.__wbindgen_export),c=xx;G.inflate_raw(o,s,c,t);var n=W().getInt32(o+0,!0),r=W().getInt32(o+4,!0),i=W().getInt32(o+8,!0);if(W().getInt32(o+12,!0))throw tx(i);var a=Jb(n,r).slice();return G.__wbindgen_export2(n,r*1,1),a}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Vb(e,t,n,r){try{let c=G.__wbindgen_add_to_stack_pointer(-16),l=ex(e,G.__wbindgen_export),u=xx,d=$b(t,G.__wbindgen_export),f=xx,p=$b(n,G.__wbindgen_export),m=xx;G.inflate_raw_batch(c,l,u,d,f,p,m,r);var i=W().getInt32(c+0,!0),a=W().getInt32(c+4,!0),o=W().getInt32(c+8,!0);if(W().getInt32(c+12,!0))throw tx(o);var s=Jb(i,a).slice();return G.__wbindgen_export2(i,a*1,1),s}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Hb(e){try{let a=G.__wbindgen_add_to_stack_pointer(-16),o=ex(e,G.__wbindgen_export),s=xx;G.inflate_raw_unknown_size(a,o,s);var t=W().getInt32(a+0,!0),n=W().getInt32(a+4,!0),r=W().getInt32(a+8,!0);if(W().getInt32(a+12,!0))throw tx(r);var i=Jb(t,n).slice();return G.__wbindgen_export2(t,n*1,1),i}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Ub(e,t,n){try{let o=G.__wbindgen_add_to_stack_pointer(-16),s=ex(e,G.__wbindgen_export),c=xx;G.parse_bigwig_block(o,s,c,t,n);var r=W().getInt32(o+0,!0),i=W().getInt32(o+4,!0),a=Jb(r,i).slice();return G.__wbindgen_export2(r,i*1,1),a}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Wb(e,t,n,r){try{let s=G.__wbindgen_add_to_stack_pointer(-16),c=ex(e,G.__wbindgen_export),l=xx;G.parse_summary_block(s,c,l,t,n,r);var i=W().getInt32(s+0,!0),a=W().getInt32(s+4,!0),o=Jb(i,a).slice();return G.__wbindgen_export2(i,a*1,1),o}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Gb(e,t){return Kb(Error(Yb(e,t)))}function Kb(e){_x===gx.length&&gx.push(gx.length+1);let t=_x;return _x=gx[t],gx[t]=e,t}function qb(e){e<1028||(gx[e]=_x,_x=e)}function Jb(e,t){return e>>>=0,Zb().subarray(e/1,e/1+t)}function W(){return(px===null||px.buffer.detached===!0||px.buffer.detached===void 0&&px.buffer!==G.memory.buffer)&&(px=new DataView(G.memory.buffer)),px}function Yb(e,t){return e>>>=0,nx(e,t)}function Xb(){return(mx===null||mx.byteLength===0)&&(mx=new Uint32Array(G.memory.buffer)),mx}function Zb(){return(hx===null||hx.byteLength===0)&&(hx=new Uint8Array(G.memory.buffer)),hx}function Qb(e){return gx[e]}function $b(e,t){let n=t(e.length*4,4)>>>0;return Xb().set(e,n/4),xx=e.length,n}function ex(e,t){let n=t(e.length*1,1)>>>0;return Zb().set(e,n/1),xx=e.length,n}function tx(e){let t=Qb(e);return qb(e),t}function nx(e,t){return bx+=t,bx>=yx&&(vx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),vx.decode(),bx=t),vx.decode(Zb().subarray(e,e+t))}function rx(e){G=e}async function ix(){return Sx||(Cx||=(async()=>{let e=await(await fetch(fx)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./inflate_wasm_bg.js":dx});return Sx=t.exports,rx(Sx),Sx})(),Cx)}async function ax(e,t,n,r){await ix();let i=Vb(e,t,n,r),a=new DataView(i.buffer,i.byteOffset,i.byteLength),o=a.getUint32(0,!0),s=4+(o+1)*4,c=Array(o+1);for(let e=0;e<=o;e++)c[e]=a.getUint32(4+e*4,!0);return{data:i.subarray(s),offsets:c}}function ox(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array};let n=4+t*4,r=n+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t)}}function sx(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array};let n=4+t*4,r=n+t*4,i=r+t*4,a=i+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t),minScores:new Float32Array(e.buffer,e.byteOffset+i,t),maxScores:new Float32Array(e.buffer,e.byteOffset+a,t)}}async function cx(e,t,n,r,i,a){return await ix(),ox(Rb(e,t,n,r,i,a))}async function lx(e,t,n,r,i,a,o){return await ix(),sx(zb(e,t,n,r,i,a,o))}var ux,dx,fx,px,mx,hx,gx,_x,vx,yx,bx,xx,G,Sx,Cx,wx=n((()=>{ux={},ux.d=(e,t)=>{for(var n in t)ux.o(t,n)&&!ux.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},ux.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ux.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},dx={},ux.r(dx),ux.d(dx,{__wbg_Error_83742b46f01ce22d:()=>Gb,__wbg_set_wasm:()=>rx,decompress_and_parse_bigwig:()=>Rb,decompress_and_parse_summary:()=>zb,inflate_raw:()=>Bb,inflate_raw_batch:()=>Vb,inflate_raw_unknown_size:()=>Hb,parse_bigwig_block:()=>Ub,parse_summary_block:()=>Wb}),fx=`data:application/wasm;base64,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IGlzIMASIGJ1dCB0aGUgaW5kZXggaXMgwAAScmFuZ2Ugc3RhcnQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAFmRlY29tcHJlc3Npb24gZmFpbGVkOiDAAMACOiDAAC9ydXN0Yy80YTRlZjQ5M2UzYTE0ODhjNmUzMjE1NzAyMzgwODRiMzg5NDhmNmRiL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAvcnVzdGMvNGE0ZWY0OTNlM2ExNDg4YzZlMzIxNTcwMjM4MDg0YjM4OTQ4ZjZkYi9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAL2hvbWUvY2RpZXNoLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTQvc3JjL2V4dGVybnJlZi5ycwAvcnVzdGMvNGE0ZWY0OTNlM2ExNDg4YzZlMzIxNTcwMjM4MDg0YjM4OTQ4ZjZkYi9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAL2hvbWUvY2RpZXNoLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbGliZGVmbGF0ZXItMS4yNS4yL3NyYy9saWIucnMAALwCEAAKAAAAbAAAABkAAAC8AhAACgAAAGwAAAAnAAAAvAIQAAoAAABsAAAAOQAAALwCEAAKAAAAbAAAAEsAAAC8AhAACgAAAGAAAAAZAAAAvAIQAAoAAABgAAAAJwAAALwCEAAKAAAAYAAAADkAAAC8AhAACgAAAGAAAABLAAAAvAIQAAoAAABkAAAAGQAAALwCEAAKAAAAZAAAACcAAAC8AhAACgAAAGQAAAA5AAAAvAIQAAoAAABkAAAASwAAALwCEAAKAAAAQAAAAAsAAAC8AhAACgAAAFgAAAALAAAAvAIQAAoAAABJAAAAEwAAALwCEAAKAAAAUwAAACsAAAC8AhAACgAAAE0AAAAPAAAAvAIQAAoAAABKAAAAHAAAALwCEAAKAAAAOQAAAB0AAABkZWNvbXByZXNzaW9uIG91dHB1dCB0b28gbGFyZ2UAALwCEAAKAAAAJgEAABMAAAC8AhAACgAAAC0BAAAdAAAAvAIQAAoAAAAnAQAAHAAAALwCEAAKAAAAoAEAABMAAAC8AhAACgAAAKcBAAAdAAAAvAIQAAoAAAChAQAAHAAAAEJhZERhdGFJbnN1ZmZpY2llbnRTcGFjZYMBEABnAAAAfwAAABEAAACDARAAZwAAAIwAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkZwIQAF8AAAANAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAGcCEABfAAAAnQAAABEAAAAMAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAAAAAAAABAAAAAgAAAAMAAAAEAAEABQABAAcAAgAJAAIADQADABEAAwAZAAQAIQAEADEABQBBAAUAYQAGAIEABgDBAAcAAQEHAIEBCAABAggAAQMJAAEECQABBgoAAQgKAAEMCwABEAsAARgMAAEgDAABMA0AAUANAAFgDQABYA0AAWAAAACAAAABgAAAAoAAAAOAAAAEgAAABYAAAAaAAAAHgAAACIAAAAmAAAAKgAAAC4AAAAyAAAANgAAADoAAAA+AAAAQgAAAEYAAABKAAAATgAAAFIAAABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgFtXcvWLFDrY3hBpldxG4u5I8o7SqZ3fJNCY0mvl2+yhAAAAAAIAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAADAAAAAQAAAAKAAAACwAAAAwAAAAAAAAACAAAAAQAAAANAAAADgAAAA8AAAAQAAAAEQAAABAAAAAEAAAAEgAAABMAAAAUAAAACAAAAAAAAAAIAAAABAAAABUAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAAA8AhAAKgAAALEEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAPAIQACoAAAC3BAAADQAAAAkAAAAMAAAABAAAABYAAABFcnJvcgAAABcAAAAMAAAABAAAABgAAAAZAAAAGgAAAAAAAAAAAAAAAQAAABsAAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3Igd2hlbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gZGlkIG5vdAAA7gAQAEgAAACKAgAADgAAAGNhcGFjaXR5IG92ZXJmbG93AAAA6wEQAFAAAAAcAAAABQAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5NwEQAEsAAABXAgAABQAAAFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB2JvAAAsEBAAAAAApBG5hbWUBIgFjH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjUuMgx3YXNtLWJpbmRnZW4HMC4yLjExNA==`,px=null,mx=null,hx=null,gx=Array(1024).fill(void 0),gx.push(void 0,null,!0,!1),_x=gx.length,vx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),vx.decode(),yx=2146435072,bx=0,xx=0,Sx=null,Cx=null}));async function Tx(e,t,n){let r=new Uint32Array(t.length),i=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];r[e]=n.offset,i[e]=n.length}return ax(e,r,i,n)}async function Ex(e,t,n,r,i){let a=new Uint32Array(t.length),o=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];a[e]=n.offset,o[e]=n.length}return cx(e,a,o,n,r,i)}async function Dx(e,t,n,r,i,a){let o=new Uint32Array(t.length),s=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];o[e]=n.offset,s[e]=n.length}return lx(e,o,s,n,r,i,a)}var Ox=n((()=>{wx()}));function kx(e){e.sort((e,t)=>e.offset-t.offset);let t=[],n,r;for(let i of e)n&&r&&i.offset-r<=2e3?(n.length=i.offset+i.length-n.offset,n.blocks.push(i),r=i.offset+i.length):(n={blocks:[i],length:i.length,offset:i.offset},t.push(n),r=i.offset+i.length);return t}var Ax=n((()=>{}));function jx(e,t,n,r){return e<r&&t>=n}function Mx(e,t,n){let r=[],i=t,a=new DataView(e.buffer,e.byteOffset,e.length);for(;i<e.byteLength;){let e=a.getUint32(i,!0);i+=4;let t=a.getUint32(i,!0);i+=4;let o=a.getUint32(i,!0);i+=4;let s=a.getUint32(i,!0);i+=4;let c=a.getFloat32(i,!0);i+=4;let l=a.getFloat32(i,!0);i+=4;let u=a.getFloat32(i,!0);i+=8,(!n||e===n.chrId&&jx(t,o,n.start,n.end))&&r.push({start:t,end:o,maxScore:l,minScore:c,summary:!0,score:u/(s||1)})}return r}function Nx(e,t,n,r){let i=[],a=t,o=new DataView(e.buffer,e.byteOffset,e.length);for(;a<e.byteLength;){let t=a,s=o.getUint32(a,!0);a+=4;let c=o.getInt32(a,!0);a+=4;let l=o.getInt32(a,!0);a+=4;let u=a;for(;u<e.length&&e[u]!==0;u++);let d=e.subarray(a,u),f=Ix.decode(d);a=u+1,(!r||s===r.chrId&&jx(c,l,r.start,r.end))&&i.push({start:c,end:l,rest:f,uniqueId:`bb-${n+t}`})}return i}function Px(e,t,n){let r=e.subarray(t),i=new DataView(r.buffer,r.byteOffset,r.length),a=i.getInt32(4,!0),o=i.getUint32(12,!0),s=i.getUint32(16,!0),c=i.getUint8(20),l=i.getUint16(22,!0),u=24,d=[];switch(c){case 1:for(let e=0;e<l;e++){let e=i.getInt32(u,!0);u+=4;let t=i.getInt32(u,!0);u+=4;let r=i.getFloat32(u,!0);u+=4,(!n||jx(e,t,n.start,n.end))&&d.push({start:e,end:t,score:r})}break;case 2:for(let e=0;e<l;e++){let e=i.getInt32(u,!0);u+=4;let t=i.getFloat32(u,!0);u+=4;let r=e+s;(!n||jx(e,r,n.start,n.end))&&d.push({score:t,start:e,end:r})}break;case 3:for(let e=0;e<l;e++){let t=i.getFloat32(u,!0);u+=4;let r=a+e*o,c=r+s;(!n||jx(r,c,n.start,n.end))&&d.push({score:t,start:r,end:c})}break}return d}function Fx(e,t,n){let r=new DataView(e.buffer,e.byteOffset+t,e.length-t),i=r.getInt32(4,!0),a=r.getUint32(12,!0),o=r.getUint32(16,!0),s=r.getUint8(20),c=r.getUint16(22,!0),l=new Int32Array(c),u=new Int32Array(c),d=new Float32Array(c);if(!n){switch(s){case 1:{let e=24;for(let t=0;t<c;t++)l[t]=r.getInt32(e,!0),u[t]=r.getInt32(e+4,!0),d[t]=r.getFloat32(e+8,!0),e+=12;return{starts:l,ends:u,scores:d}}case 2:{let e=24;for(let t=0;t<c;t++){let n=r.getInt32(e,!0);l[t]=n,u[t]=n+o,d[t]=r.getFloat32(e+4,!0),e+=8}return{starts:l,ends:u,scores:d}}case 3:{let e=24;for(let t=0;t<c;t++){let n=i+t*a;l[t]=n,u[t]=n+o,d[t]=r.getFloat32(e,!0),e+=4}return{starts:l,ends:u,scores:d}}}return{starts:l,ends:u,scores:d}}let f=n.start,p=n.end,m=0;switch(s){case 1:{let e=24;for(let t=0;t<c;t++){let t=r.getInt32(e,!0),n=r.getInt32(e+4,!0);t<p&&n>=f&&(l[m]=t,u[m]=n,d[m]=r.getFloat32(e+8,!0),m++),e+=12}break}case 2:{let e=24;for(let t=0;t<c;t++){let t=r.getInt32(e,!0),n=t+o;t<p&&n>=f&&(l[m]=t,u[m]=n,d[m]=r.getFloat32(e+4,!0),m++),e+=8}break}case 3:{let e=24;for(let t=0;t<c;t++){let n=i+t*a,s=n+o;n<p&&s>=f&&(l[m]=n,u[m]=s,d[m]=r.getFloat32(e,!0),m++),e+=4}break}}return m<c?{starts:l.subarray(0,m),ends:u.subarray(0,m),scores:d.subarray(0,m)}:{starts:l,ends:u,scores:d}}var Ix,Lx,Rx,zx=n((()=>{yb(),Fb(),Lb(),Ox(),Ax(),Ix=new TextDecoder(`utf8`),Lx=610839776,Rx=class{bbi;refsByName;rTreeOffset;uncompressBufSize;blockType;rTreePromise;featureCache=new _b({cache:new Pb({maxSize:1e3}),fill:async({length:e,offset:t},n)=>this.bbi.read(e,t,{signal:n})});constructor(e,t,n,r,i){if(this.bbi=e,this.refsByName=t,this.rTreeOffset=n,this.uncompressBufSize=r,this.blockType=i,!(n>=0))throw Error(`invalid rTreeOffset!`)}async _collectBlocks(e,t,n,r){let i=this.refsByName[e];if(i===void 0)return;this.rTreePromise||=this.bbi.read(48,this.rTreeOffset,r);let a=await this.rTreePromise,o=new DataView(a.buffer,a.byteOffset,a.length),s=o.getUint32(0,!0);if(s!==Lx)throw Error(`invalid cirTree magic: 0x${s.toString(16)} (expected 0x${Lx.toString(16)}) at offset ${this.rTreeOffset}, file may be corrupt or unsupported`);let c=4+o.getUint32(4,!0)*32,l=(e,r,a,o)=>(e<i||e===i&&r<=n)&&(a>i||a===i&&o>=t),u=[],d=[this.rTreeOffset+48];for(;d.length>0;){let e=Ib(d.map(e=>({min:e,max:e+c}))),t=[];for(let{min:n,max:i}of e){let e=i-n,a=n,o=await this.featureCache.get(`${e}_${a}`,{length:e,offset:a},r?.signal);for(let e of d)if(n<=e&&e<=i){let n=o.subarray(e-a),r=new DataView(n.buffer,n.byteOffset,n.length),i=r.getUint8(0),s=r.getUint16(2,!0),c=4;if(i===1)for(let e=0;e<s;e++){let e=r.getUint32(c,!0),t=r.getUint32(c+4,!0),n=r.getUint32(c+8,!0),i=r.getUint32(c+12,!0),a=Number(r.getBigUint64(c+16,!0)),o=Number(r.getBigUint64(c+24,!0));c+=32,l(e,t,n,i)&&u.push({offset:a,length:o})}else if(i===0)for(let e=0;e<s;e++){let e=r.getUint32(c,!0),n=r.getUint32(c+4,!0),i=r.getUint32(c+8,!0),a=r.getUint32(c+12,!0),o=Number(r.getBigUint64(c+16,!0));c+=24,l(e,n,i,a)&&t.push(o)}}}d=t}return{blocks:u,chrId:i}}async readWigData(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);if(!i)return[];let{blocks:a,chrId:o}=i;return this.readFeatures(a,{...r,request:{chrId:o,start:t,end:n}})}async readWigDataAsArrays(e,t,n,r){let i=await this._collectBlocks(e,t,n,r),a=i?.blocks??[],o=i?{chrId:i.chrId,start:t,end:n}:void 0,s={...r,request:o};return this.blockType===`summary`?this._readSummaryFeaturesAsArrays(a,s):this._readBigWigFeaturesAsArrays(a,s)}async readFeatures(e,t={}){let{blockType:n,uncompressBufSize:r}=this,{signal:i,request:a}=t,o=kx(e),s=[];for(let e of o){let t=await this.bbi.read(e.length,e.offset,{signal:i}),o=e.offset,c=e.blocks,l,u;if(r>0){let e=[];for(let t of c)e.push({offset:t.offset-o,length:t.length});let n=await Tx(t,e,r);l=n.data,u=n.offsets}else{l=t,u=[];for(let e of c)u.push(e.offset-o);u.push(t.length)}for(let e=0;e<c.length;e++){let t=u[e],r=u[e+1],i=l.subarray(t,r),o;switch(n){case`summary`:o=Mx(i,0,a);break;case`bigwig`:o=Px(i,0,a);break;case`bigbed`:o=Nx(i,0,c[e].offset*256,a);break;default:o=[],console.warn(`Don't know what to do with ${n}`)}for(let e of o)s.push(e)}}return s}async _readBigWigFeaturesAsArrays(e,t={}){let{uncompressBufSize:n}=this,{signal:r,request:i}=t,a=kx(e),o=[],s=[],c=[],l=0;for(let e of a){let{length:t,offset:a}=e,u=await this.bbi.read(t,a,{signal:r}),d=e.blocks.map(t=>({offset:t.offset-e.offset,length:t.length}));if(n>0){let e=await Ex(u,d,n,i?.start??0,i?.end??0);e.starts.length>0&&(o.push(e.starts),s.push(e.ends),c.push(e.scores),l+=e.starts.length)}else for(let e of d){let t=Fx(u.subarray(e.offset,e.offset+e.length),0,i);t.starts.length>0&&(o.push(t.starts),s.push(t.ends),c.push(t.scores),l+=t.starts.length)}}if(o.length===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,isSummary:!1};if(o.length===1)return{starts:o[0],ends:s[0],scores:c[0],isSummary:!1};let u=new Int32Array(l),d=new Int32Array(l),f=new Float32Array(l),p=0;for(let e=0;e<o.length;e++)u.set(o[e],p),d.set(s[e],p),f.set(c[e],p),p+=o[e].length;return{starts:u,ends:d,scores:f,isSummary:!1}}async _readSummaryFeaturesAsArrays(e,t={}){let{uncompressBufSize:n}=this,{signal:r,request:i}=t,a=kx(e),o=[],s=[],c=[],l=[],u=[],d=0;for(let e of a){let{length:t,offset:a}=e,f=await this.bbi.read(t,a,{signal:r}),p=e.blocks.map(t=>({offset:t.offset-e.offset,length:t.length}));if(n>0){let e=await Dx(f,p,n,i?.chrId??0,i?.start??0,i?.end??0);e.starts.length>0&&(o.push(e.starts),s.push(e.ends),c.push(e.scores),l.push(e.minScores),u.push(e.maxScores),d+=e.starts.length)}else for(let e of p){let t=Mx(f.subarray(e.offset,e.offset+e.length),0,i);if(t.length>0){let e=new Int32Array(t.length),n=new Int32Array(t.length),r=new Float32Array(t.length),i=new Float32Array(t.length),a=new Float32Array(t.length);for(let o=0;o<t.length;o++){let s=t[o];e[o]=s.start,n[o]=s.end,r[o]=s.score??0,i[o]=s.minScore??0,a[o]=s.maxScore??0}o.push(e),s.push(n),c.push(r),l.push(i),u.push(a),d+=t.length}}}if(o.length===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array,isSummary:!0};if(o.length===1)return{starts:o[0],ends:s[0],scores:c[0],minScores:l[0],maxScores:u[0],isSummary:!0};let f=new Int32Array(d),p=new Int32Array(d),m=new Float32Array(d),h=new Float32Array(d),g=new Float32Array(d),_=0;for(let e=0;e<o.length;e++)f.set(o[e],_),p.set(s[e],_),m.set(c[e],_),h.set(l[e],_),g.set(u[e],_),_+=o[e].length;return{starts:f,ends:p,scores:m,minScores:h,maxScores:g,isSummary:!0}}}}));function Bx(e){return new DataView(e.buffer,e.byteOffset,e.length)}var Vx,Hx,Ux,Wx,Gx=n((()=>{jg(),zx(),Vx=-2003829722,Hx=-2021002517,Ux=new TextDecoder(`utf8`),Wx=class{bbi;headerP;renameRefSeqs;getHeader(e){return this.headerP||=this._getHeader(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}constructor(e){let{filehandle:t,renameRefSeqs:n=e=>e,path:r,url:i}=e;if(this.renameRefSeqs=n,t)this.bbi=t;else if(i)this.bbi=new Dg(i);else if(r)this.bbi=new Ag(r);else throw Error(`no file given`)}async _getHeader(e){let t=await this._getMainHeader(e),n=await this._readChromosomeTree(t,e);return{...t,...n}}async _getMainHeader(e,t=2e3){let n=await this.bbi.read(t,0,e),r=Bx(n),i=0,a=r.getInt32(i,!0);if(i+=4,a!==Vx&&a!==Hx)throw Error(`not a BigWig/BigBed file`);let o=r.getUint16(i,!0);i+=2;let s=r.getUint16(i,!0);i+=2;let c=Number(r.getBigUint64(i,!0));i+=8;let l=Number(r.getBigUint64(i,!0));i+=8;let u=Number(r.getBigUint64(i,!0));i+=8;let d=r.getUint16(i,!0);i+=2;let f=r.getUint16(i,!0);i+=2;let p=Number(r.getBigUint64(i,!0));i+=8;let m=Number(r.getBigUint64(i,!0));i+=8;let h=r.getUint32(i,!0);i+=4;let g=Number(r.getBigUint64(i,!0));i+=8;let _=[];for(let e=0;e<s;e++){let e=r.getUint32(i,!0);i+=4;let t=r.getUint32(i,!0);i+=4;let n=Number(r.getBigUint64(i,!0));i+=8;let a=Number(r.getBigUint64(i,!0));i+=8,_.push({reductionLevel:e,reserved:t,dataOffset:n,indexOffset:a})}let v=a===Hx?`bigbed`:`bigwig`;if(p>t||m>t-40)return this._getMainHeader(e,t*2);let y;if(m){let e=n.subarray(m),t=0,r=Bx(e),i=Number(r.getBigUint64(t,!0));t+=8;let a=r.getFloat64(t,!0);t+=8;let o=r.getFloat64(t,!0);t+=8;let s=r.getFloat64(t,!0);t+=8,y={scoreMin:a,scoreMax:o,scoreSum:s,scoreSumSquares:r.getFloat64(t,!0),basesCovered:i}}else throw Error(`no stats`);return{zoomLevels:_,magic:a,extHeaderOffset:g,numZoomLevels:s,fieldCount:d,totalSummary:y,definedFieldCount:f,uncompressBufSize:h,asOffset:p,chromosomeTreeOffset:c,totalSummaryOffset:m,unzoomedDataOffset:l,unzoomedIndexOffset:u,fileType:v,version:o,autoSql:p?Ux.decode(n.subarray(p,n.indexOf(0,p))):``}}async _readChromosomeTree(e,t){let n=[],r={},i=e.chromosomeTreeOffset,a=Bx(await this.bbi.read(32,i,t)),o=a.getUint32(8,!0),s=a.getUint32(12,!0),c=async e=>{let t=Bx(await this.bbi.read(4,e)),i=t.getUint8(0),a=t.getUint16(2,!0);if(i){let t=await this.bbi.read(a*(o+s),e+4),i=Bx(t),c=0;for(let e=0;e<a;e++){let e=t.indexOf(0,c),a=e!==-1&&e<c+o?e:c+o,s=Ux.decode(t.subarray(c,a));c+=o;let l=i.getUint32(c,!0);c+=4;let u=i.getUint32(c,!0);c+=4,r[this.renameRefSeqs(s)]=l,n[l]={name:s,id:l,length:u}}}else{let t=Bx(await this.bbi.read(a*(o+8),e+4)),n=[],r=0;for(let e=0;e<a;e++){r+=o;let e=Number(t.getBigUint64(r,!0));r+=8,n.push(c(e))}await Promise.all(n)}};return await c(i+32),{refsByName:r,refsByNumber:n}}viewCache=new Map;getOrCreateBlockView(e,t,n,r){let i=`${t}_${r}`,a=this.viewCache.get(i);return a||(a=new Rx(this.bbi,e,t,n,r),this.viewCache.set(i,a)),a}async getUnzoomedView(e){let{unzoomedIndexOffset:t,refsByName:n,uncompressBufSize:r,fileType:i}=await this.getHeader(e);return this.getOrCreateBlockView(n,t,r,i)}async _getView(e){let{basesPerSpan:t,scale:n}=e||{},r=t?1/t:n??1;return this.getView(r,e)}async getFeatures(e,t,n,r){return(await this._getView(r)).readWigData(this.renameRefSeqs(e),t,n,r)}async getFeaturesAsArrays(e,t,n,r){return(await this._getView(r)).readWigDataAsArrays(this.renameRefSeqs(e),t,n,r)}}})),Kx,qx=n((()=>{Gx(),Kx=class extends Wx{async getView(e,t){let{zoomLevels:n,refsByName:r,uncompressBufSize:i}=await this.getHeader(t),a=1/e,o=n.length-1;for(let e=o;e>=0;--e){let t=n[e];if(t&&t.reductionLevel<=2*a)return this.getOrCreateBlockView(r,t.indexOffset,i,`summary`)}return this.getUnzoomedView(t)}}}));function Jx(e,t){if(t<0)return;let n=0;for(let r=0;r<t;r++){if(n=e.indexOf(` `,n),n===-1)return;n++}let r=e.indexOf(` `,n);return r===-1?e.slice(n):e.slice(n,r)}function Yx(e,t,n){let r=e.indexOf(0,t),i=r!==-1&&r<t+n?r:t+n;return Zx.decode(e.subarray(t,i))}async function Xx(e,t,n,r,i,a,o,s){let c=4+n*(r+i),l=await e.read(c,t,s),u=new DataView(l.buffer,l.byteOffset,l.length),d=u.getInt8(0),f=u.getInt16(2,!0),p=4;if(d===0){let t=[];for(let e=0;e<f;e++){let e=Yx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8,t.push({key:e,offset:n})}let c=0,d=t.length-1,m=t.length-1;for(;c<=d;){let e=Math.floor((c+d)/2);a.localeCompare(t[e].key)<0?(m=e-1,d=e-1):c=e+1}return Xx(e,m>=0?t[m].offset:t[0].offset,n,r,i,a,o,s)}else if(d===1){let e=[];for(let t=0;t<f;t++){let t=Yx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8;let i=u.getUint32(p,!0);p+=4,p+=4,e.push({key:t,offset:n,length:i})}let t=0,n=e.length-1;for(;t<=n;){let r=Math.floor((t+n)/2),i=a.localeCompare(e[r].key);if(i===0)return{...e[r],field:o};i<0?n=r-1:t=r+1}return}}var Zx,Qx,$x=n((()=>{yb(),Fb(),Gx(),Zx=new TextDecoder(`utf8`),Qx=class extends Wx{readIndicesCache=new _b({cache:new Pb({maxSize:1}),fill:(e,t)=>this._readIndices({...e,signal:t})});readIndices(e={}){let{signal:t,...n}=e;return this.readIndicesCache.get(JSON.stringify(n),e,t)}async getView(e,t){return this.getUnzoomedView(t)}async _readIndices(e){let{extHeaderOffset:t}=await this.getHeader(e),n=await this.bbi.read(64,t),r=new DataView(n.buffer,n.byteOffset,n.length),i=r.getUint16(2,!0),a=Number(r.getBigUint64(4,!0));if(i===0)return[];let o=20*i,s=await this.bbi.read(o,a),c=[];for(let e=0;e<i;e+=1){let t=s.subarray(e*20),n=new DataView(t.buffer,t.byteOffset,t.length),r=n.getInt16(0,!0),i=n.getInt16(2,!0),a=Number(n.getBigUint64(4,!0)),o=n.getInt16(16,!0);c.push({type:r,fieldcount:i,offset:a,field:o})}return c}async searchExtraIndexBlocks(e,t={}){let n=await this.readIndices(t);if(n.length===0)return[];let r=n.map(async n=>{let{offset:r,field:i}=n,a=await this.bbi.read(32,r,t),o=new DataView(a.buffer,a.byteOffset,a.length),s=o.getInt32(4,!0),c=o.getInt32(8,!0),l=o.getInt32(12,!0);return Xx(this.bbi,r+32,s,c,l,e,i,t)});return(await Promise.all(r)).filter(e=>e!==void 0)}async searchExtraIndex(e,t={}){let n=await this.searchExtraIndexBlocks(e,t);if(n.length===0)return[];let r=await this.getUnzoomedView(t);return(await Promise.all(n.map(async e=>(await r.readFeatures([e],t)).map(t=>({...t,field:e.field}))))).flat().filter(t=>{if(!t.rest)return!1;let n=(t.field||0)-3;return Jx(t.rest,n)===e})}}}));async function eS(e,t){let n=await e.getHeader(t),r=[];for(let i of Object.values(n.refsByNumber)){let n=await e.getFeaturesAsArrays(i.name,0,i.length,t);!n.isSummary&&n.starts.length>0&&r.push(n)}return r}var tS=n((()=>{})),nS,rS=n((()=>{nS=class{starts;ends;scores;minScores;maxScores;isSummary;_source;_refName;constructor(e,t,n){this.starts=e.starts,this.ends=e.ends,this.scores=e.scores,this.isSummary=e.isSummary,this.minScores=e.isSummary?e.minScores:void 0,this.maxScores=e.isSummary?e.maxScores:void 0,this._source=t,this._refName=n}get length(){return this.starts.length}get source(){return this._source}get refName(){return this._refName}start(e){return this.starts[e]}end(e){return this.ends[e]}score(e){return this.scores[e]}minScore(e){return this.minScores?.[e]}maxScore(e){return this.maxScores?.[e]}id(e){return`${this._source}:${this._refName}:${this.starts[e]}-${this.ends[e]}`}get(e,t){switch(t){case`start`:return this.starts[e];case`end`:return this.ends[e];case`score`:return this.scores[e];case`refName`:return this._refName;case`source`:return this._source;case`minScore`:return this.minScores?.[e];case`maxScore`:return this.maxScores?.[e];case`summary`:return this.isSummary;default:return}}}})),iS=r({ArrayFeatureView:()=>nS,BigBed:()=>Qx,BigWig:()=>Kx,parseBigWig:()=>eS}),aS=n((()=>{db(),qx(),$x(),tS(),rS()})),oS=class extends Sg{#e=[];#t;constructor(e,t){let n={pixelsPerBin:2,channel:`x`,debounce:200,debounceMode:`window`,...e},r=mg(n.channel);if(super(t,r),this.params=yg(t.paramRuntime,n,e=>{e.has(`url`)?this.#n().then(()=>this.reloadLastDomain()):e.has(`pixelsPerBin`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw Error(`No URL provided for BigWigSource`);this.setupDebouncing(this.params),this.#n()}get label(){return`bigWigSource`}#n(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(aS(),iS)),Promise.resolve().then(()=>(jg(),kg))]).then(([{BigWig:n},{RemoteFile:r}])=>{this.#t=new n({filehandle:new r(ah(mg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.#t.getHeader().then(t=>{this.#e=t.zoomLevels.map(e=>e.reductionLevel).reverse(),this.#e.push(1),this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${mg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async onDomainChanged(e){await this.initializedPromise;let t=this.scaleResolution.getAxisLength()||700,n=cS(e,t,this.#e),r=Math.max(n*t,5e3);this.callIfWindowsChanged(e,r,e=>this.loadInterval(e,n))}async loadInterval(e,t){let n=1/2/t/mg(this.params.pixelsPerBin),r=await this.discretizeAndLoad(e,(e,t)=>this.#t.getFeatures(e.chrom,e.startPos,e.endPos,{scale:n,signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,score:t.score}))));r&&this.publishData(r)}};function sS(e){return e?.type==`bigwig`}Km(sS,oS);function cS(e,t,n){let r=(e[1]-e[0])/t;return n.find(e=>e<r)??n.at(-1)}var lS=class extends Sg{parser;bbi;parseLine;constructor(e,t){let n={channel:`x`,windowSize:1e6,debounce:200,debounceMode:`window`,...e},r=mg(n.channel);if(super(t,r),this.params=yg(t.paramRuntime,n,e=>{e.has(`url`)?this.#e().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw Error(`No URL provided for BigBedSource`);this.setupDebouncing(this.params),this.#e()}get label(){return`bigBedSource`}#e(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(Ml(),jl)),Promise.resolve().then(()=>(aS(),iS)),Promise.resolve().then(()=>(jg(),kg))]).then(([n,{BigBed:r},{RemoteFile:i}])=>{let a=n.default;this.bbi=new r({filehandle:new i(ah(mg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.bbi.getHeader().then(async t=>{this.parser=new a({autoSql:t.autoSql});try{let e=uS(this.parser);this.parseLine=(t,n)=>e(t,n.start,n.end,n.rest)}catch{this.parseLine=(e,t)=>this.parser.parseLine(`${e}\t${t.start}\t${t.end}\t${t.rest}`)}this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${mg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.bbi.getFeatures(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>this.parseLine(e.chrom,t))));t&&this.publishData(t)}};function uS(e){let t=e.autoSql.fields.filter(e=>e.type).slice(3),n=0,r=``,i=0,a={};function o(){let e=r.indexOf(` `,n);e<0&&(e=i);let t=r.substring(n,e);return n=e+1,t}function s(){let e=0,t=r.charCodeAt(n),a=1;t===45&&(a=-1,n++,t=r.charCodeAt(n));do{if(t===9){n++;break}e=e*10+t-48,t=r.charCodeAt(++n)}while(n<i);return e*a}let c=t.map(e=>`${JSON.stringify(e.name)}: ${e.isNumeric?`0`:`emptyString`}`),l=Function(`
|
|
192
|
+
}`)(function(t){e in t||dh(t,e)}),[e],t):Je(e)}function dh(e,t){throw Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(e).join(`, `)}`)}function fh(e,t,n){if(!e)throw Error(`Cannot create an accessor without a channel.`);function r(n){let r=n;return r.fields??=[],r.constant=r.fields.length===0,r.channelDef=t,r.channel=e,r.sourceKey=hh(t),r.scaleChannel=((jh(t)&&t.resolutionChannel)??(Xh(e)&&e))||void 0,r.scaleChannel!==void 0&&(r.domainKeyBase=gh({scaleChannel:r.scaleChannel,source:mh(t)}).domainKeyBase),r.equals=e=>e?r===e||r.sourceKey!==void 0&&r.sourceKey===e.sourceKey:!1,r.asNumberAccessor=()=>r,r}function i(e){if(z(e)){let t=r(n.createExpression(e.expr));if(t.fields.length>0)throw Error(`Expression in DatumDef/ValueDef cannot access data fields: `+e.expr);return t}else{let t=e;return r(()=>t)}}if(kh(t))try{return r(R(t.field))}catch(e){throw Error(`Invalid field definition: ${e.message}`,{cause:e})}else if(Fh(t))return r(n.createExpression(t.expr));else if(Ah(t))return i(t.datum);else if(Oh(t))return i(t.value);else throw Error(`Invalid channel definition: "${e}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}function ph(e){return e.scaleChannel!==void 0}function mh(e){if(kh(e))return{kind:`field`,value:e.field};if(Fh(e))return{kind:`expr`,value:e.expr};if(Ah(e))return{kind:`datum`,value:e.datum};if(Oh(e))return{kind:`value`,value:e.value};throw Error(`Cannot derive a domain key from channel definition: `+JSON.stringify(e))}function hh(e){let t=mh(e);return t.kind===`datum`||t.kind===`value`?`constant|`+yh(t.value):t.kind+`|`+vh(t)}function gh({scaleChannel:e,source:t,type:n}){if(!e)throw Error(`Cannot build a domain key without a scale channel.`);let r=e+`|`+t.kind+`|`+vh(t);return{domainKeyBase:r,domainKey:n?n+`|`+r:void 0}}function _h(e,t){let{domainKey:n,domainKeyBase:r}=gh({scaleChannel:e.scaleChannel,source:mh(e.channelDef),type:t});if(!n)throw Error(`Cannot finalize a domain key without a resolved type.`);return e.domainKeyBase=r,e.domainKey=n,n}function vh(e){switch(e.kind){case`field`:case`expr`:return e.value;case`datum`:case`value`:return yh(e.value);default:throw Error(`Unknown domain key source.`)}}function yh(e){return z(e)?`expr:`+e.expr:e===void 0?`undefined`:JSON.stringify(e)}function bh(e,t,n,r){let i,a=yg(!1),o=()=>{if(i)return i;let o=n.findValue(e);if(!o)return a;let s={};if(ig(o)){let n=Object.keys(o.intervals);for(let r of n){let n=t[r];if(kh(n)){s[r]=n.field;continue}else if(n&&`condition`in n){let e=n.condition;if(kh(e)){s[r]=e.field;continue}}throw Error(`Selection "${e}" has an interval for "${r}" channel, but could not find a fieldDef: ${JSON.stringify(t[r])}`)}}let c=rg({type:`filter`,param:e,fields:s,empty:r},o);return i=n.createExpression(c),i};return Object.assign(e=>o()(e),{param:e,empty:r??!0})}function xh(e,t,n,r){let i=Ih(t)||Lh(t)?Array.isArray(t.condition)?t.condition:[t.condition]:[],a=[...i,t],o=a.map((t,o)=>{let s=i[o];return{accessor:fh(e,t,r),predicate:s?.param?bh(s.param,n,r,s.empty):Object.assign(yg(o===a.length-1),{empty:!1})}});if(o.filter(e=>!e.accessor.constant).length>1)throw Error(`Only one accessor can be non-constant. Channel: `+e);return o}function Sh(e,t){let n={},r=t=>e.getScaleResolution(t)?.getScale();for(let[i,a]of Object.entries(t)){if(!a)continue;let o=i;Ch(o)||(n[o]=Eh(xh(o,a,t,e.paramRuntime),r))}return n}function Ch(e){return e===`key`||e===`search`}function wh(e){return e.branches.map(e=>e.accessor)}function Th(e){return e.branches.find(e=>!e.accessor.constant)?.accessor}function Eh(e,t){if(e.length===1){let n=Dh(e[0].accessor,t);return Object.assign(n,{branches:e})}let n=e.map(e=>e.predicate),r=e.map(e=>Dh(e.accessor,t));return Object.assign(e=>{for(let t=0;t<r.length;t++)if(n[t](e))return r[t](e)},{constant:!1,branches:e,scale:r.map(e=>e.scale).find(e=>e),channelDef:e.at(-1).accessor.channelDef})}function Dh(e,t){let{channel:n,scaleChannel:r,channelDef:i}=e,a=e.scaleChannel?t(r):void 0;if(r&&!a)throw Error(`Missing scale! "${n}": ${JSON.stringify(i)}`);return Object.assign(a?t=>a(e(t)):t=>e(t),{scale:a,constant:e.constant,branches:[{accessor:e,predicate:yg(!0)}],channelDef:i})}function Oh(e){return e&&`value`in e}function kh(e){return e&&`field`in e}function Ah(e){return e&&`datum`in e}function jh(e){return kh(e)||Ah(e)||Fh(e)||Ph(e)}function Mh(e){if(Lh(e)){let t=e.condition;if(!Array.isArray(t)&&jh(t))return t}else if(jh(e))return e}function Nh(e,t){let n=e.mark.encoding[t];if(Array.isArray(n))throw Error(`Not a channel def with scale!`);{let e=Mh(n);if(e)return e}throw Error(`Not a channel def with scale!`)}function Ph(e){return e&&`chrom`in e}function Fh(e){return e&&`expr`in e}function Ih(e){return(kh(e)||Ah(e))&&`condition`in e}function Lh(e){return Oh(e)&&`condition`in e}var Rh=[`x`,`y`],zh=[`x2`,`y2`],Bh=[...Rh,...zh];function Vh(e){return Rh.includes(e)}function Hh(e){return Bh.includes(e)}var Uh={x:`x2`,y:`y2`},Wh=Object.fromEntries(Object.entries(Uh).map(e=>[e[1],e[0]]));function Gh(e){return e in Wh}function Kh(e){let t=Uh[e];if(t)return t;throw Error(`${e} has no secondary channel!`)}function qh(e){return Wh[e]??e}function Jh(e){return[`color`,`fill`,`stroke`].includes(qh(e))}function Yh(e){return[`shape`].includes(e)}function Xh(e){return[`x`,`y`,`x2`,`y2`,`color`,`fill`,`stroke`,`opacity`,`fillOpacity`,`strokeOpacity`,`strokeWidth`,`size`,`shape`,`angle`,`dx`,`dy`,`sample`].includes(e)}function Zh(e){switch(e){case`shape`:return[`circle`,`square`,`cross`,`diamond`,`triangle-up`,`triangle-right`,`triangle-down`,`triangle-left`,`tick-up`,`tick-right`,`tick-down`,`tick-left`];default:}}function Qh(e){if(!Yh(e))throw Error(`Not a discrete channel: `+e);let t=new Map(Zh(e).map((e,t)=>[e,t]));return n=>{let r=t.get(n);if(r!==void 0)return r;throw Error(`Invalid value for "${e}" channel: ${n}`)}}function $h(e){return{type:`single`,datum:e,uniqueId:e?.[sh]}}function eg(e){return e??=[],{type:`multi`,data:new Map(e.map(e=>[e[sh],e]))}}function tg(e){return{type:`interval`,intervals:Object.fromEntries(e.map(e=>[e,null]))}}function ng(e,{add:t,remove:n,toggle:r}){let i=e.data;for(let e of t??[])i.set(e[sh],e);for(let e of n??[])i.delete(e[sh]);for(let e of r??[]){let t=e[sh];i.has(t)?i.delete(t):i.set(t,e)}return{type:`multi`,data:i}}function rg(e,t){let n=!!(e.empty??!0),r=gg(e.param),i=e.fields??{};if(ag(t))return`${r}.uniqueId == null ? ${n} : ${r}.uniqueId === datum[${JSON.stringify(sh)}]`;if(og(t))return`${r}.data.size == 0 ? ${n} : mapHasKey(${r}.data, datum[${JSON.stringify(sh)}])`;if(ig(t)){let a=Object.keys(t.intervals),o=Object.keys(i).filter(Vh);if(o.length===0)throw Error(`Filtering using interval selections requires at least one primary positional channel in the config! `+JSON.stringify(e));if(o.some(e=>!a.includes(e)))throw Error(`Selection channels (${a.join(`, `)}) do not match the fields: ${JSON.stringify(e)}!`);let s=e=>`datum[${JSON.stringify(e)}]`;return a.map(e=>{let t=Kh(e),a=i[e];return`(${r}.intervals.${e} ? (${`${r}.intervals.${e}[0] <= ${s(i[t]??i[e])}`} && ${`${s(a)} <= ${r}.intervals.${e}[1]`}) : ${n})`}).join(` && `)}else throw Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function ig(e){return e.type===`interval`}function ag(e){return e.type===`single`}function og(e){return e.type===`multi`}function sg(e){let t=typeof e==`string`?{type:e}:{...e};return t.on=t.on?fg(t.on):cg(t)?{type:`click`}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:`dblclick`}:fg(t.clear),cg(t)&&t.on.type===`click`&&(t.toggle=!0),t}function cg(e){return e&&e.type==`point`}function lg(e){return e&&e.type==`interval`}function ug(e){return Object.values(e.intervals).some(e=>e&&e.length===2)}function dg(e,t){return Object.entries(e.intervals).every(([e,n])=>(e==`x`||e==`y`)&&n&&n[0]<=t[e]&&n[1]>=t[e])}function fg(e){if(typeof e==`string`){let t=e.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw Error(`Invalid event type string: ${e}`);let[,n,r]=t,i={type:n};return r&&(i.filter=r),i}else return e}function z(e){return typeof e==`object`&&!!e&&`expr`in e&&P(e.expr)}function pg(e){if(z(e))throw Error(`ExprRef `+JSON.stringify(e)+` not allowed here. Expected a scalar value.`);return e}function mg(e){return(`expr`in e||`bind`in e)&&!(`select`in e)}function hg(e){return!(`expr`in e||`bind`in e)&&`select`in e}function gg(e){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e))throw Error(`Invalid parameter name: `+e+`. Must be a valid JavaScript identifier.`);return e}function _g(e,t,n){if(`select`in e){let t=sg(e.select);if(cg(t))return t.toggle?eg():$h(null);if(lg(t)){if(!t.encodings)throw Error(`Interval selection "`+e.name+`" must have encodings defined!`);return tg(t.encodings)}throw Error(`Unknown selection config for parameter "`+e.name+`".`)}if(`expr`in e){let r=n??t?.createExpression(e.expr);if(!r)throw Error(`Cannot evaluate expression for parameter "`+e.name+`".`);return r(null)}return`value`in e?e.value:null}function vg(e,t,n,r,i={}){let a={...t},o=new Set,s=!1,c=!1,l=i.batchMode??`microtask`;r?.(()=>{c=!0,o.clear(),s=!1});let u=()=>{if(c)return;if(!n||o.size===0){s=!1;return}let e=new Set(o);o.clear(),s=!1,n(e)},d=t=>{c||(o.add(t),s||(s=!0,queueMicrotask(()=>{c||(l==`whenPropagated`&&e.whenPropagated?e.whenPropagated().then(u).catch(()=>{u()}):u())})))};for(let[i,o]of Object.entries(t))if(z(o))if(n){let t=()=>d(i),n=e.watchExpression?e.watchExpression(o.expr,t,{scopeOwned:!r,registerDisposer:r}):e.createExpression(o.expr);if(!e.watchExpression){let e=n.subscribe(t);r?.(e)}Object.defineProperty(a,i,{enumerable:!0,get(){return n()}})}else{let t=e.createExpression(o.expr);Object.defineProperty(a,i,{enumerable:!0,get(){return t()}})}else a[i]=o;return a}function yg(e){return Object.assign(()=>e,{subscribe:()=>()=>void 0,invalidate:()=>void 0,identifier:()=>`constant`,fields:[],globals:[],code:JSON.stringify(e)})}function bg(e,t,n=!0){let r,i=e=>void 0;return function(...a){return new Promise((o,s)=>{n&&i(`debounced`),clearTimeout(r),i=s,r=window.setTimeout(()=>{clearTimeout(r),i=e=>void 0,o(e(...a))},typeof t==`function`?t():t)})}}var xg=class extends Qm{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){let t=()=>pg(e.debounce),n=e.debounceMode;if(n==`domain`)this.onDomainChanged=bg(this.onDomainChanged.bind(this),t,!1);else if(n==`window`)this.loadInterval=bg(this.loadInterval.bind(this),t,!1);else throw Error(`Invalid debounceMode: `+n)}onDomainChanged(e){this.#n=e;let t=pg(this.params?.windowSize)??-1;e[1]-e[0]>t||this.callIfWindowsChanged(e,t,async e=>{await this.initializedPromise,this.loadInterval(e)})}reloadLastDomain(){let e=this.#n;this.#n=[0,0],this.#t=[0,0],this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){let t=this._lastLoadedDomain;super.publishData(e),t&&(this._lastLoadedDomain=t)}async discretizeAndLoad(e,t){this.#e.abort(),this.setLoadingStatus(`loading`),this.#e=new AbortController;let n=this.#e.signal,r=this.genome.continuousToDiscreteChromosomeIntervals(e),i=typeof t==`function`?{load:t}:t;try{let t=i.loadBatch?await i.loadBatch(r,n):await Promise.all(r.map(async e=>i.load(e,n)));if(t.length!==r.length)throw Error(`Batched lazy loader must return one chunk per interval.`);if(!n.aborted)return this.setLoadingStatus(`complete`),this._lastLoadedDomain=Array.from(e),t}catch(e){if(!n.aborted)throw this.setLoadingStatus(`error`,e.message),e}}callIfWindowsChanged(e,t,n){let r=[Math.max(Math.floor(e[0]/t)*t,0),Math.min(Math.ceil(e[1]/t)*t,this.genome.totalSize)],i=this.#t;(t!==this.#r||r[0]<i[0]||r[1]>i[1])&&(this.#t=r,this.#r=t,n(r))}},Sg=n((()=>{}));async function Cg(e){return e.bytes?e.bytes():new Uint8Array(await e.arrayBuffer())}var wg=n((()=>{})),Tg,Eg=n((()=>{wg(),Tg=class{blob;constructor(e){this.blob=e}async read(e,t=0){return e===0?new Uint8Array:Cg(this.blob.slice(t,t+e))}async readFile(e){let t=typeof e==`string`?e:e?.encoding;if(t===`utf8`)return this.blob.text();if(t)throw Error(`unsupported encoding: ${t}`);return Cg(this.blob)}stat(){return Promise.resolve({size:this.blob.size})}close(){return Promise.resolve()}}}));function Dg(e){return(typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:`${e}`).replace(/\.$/,``)}var Og,kg=n((()=>{wg(),Og=class{url;_stat;fetchImplementation;baseHeaders;baseOverrides;constructor(e,t={}){this.url=e,this.baseHeaders=t.headers??{},this.baseOverrides=t.overrides??{},this.fetchImplementation=t.fetch??globalThis.fetch.bind(globalThis)}buildRequest(e,t){return{...this.baseOverrides,...e.overrides,headers:{...this.baseHeaders,...e.headers,...t},method:`GET`,redirect:`follow`,mode:`cors`,signal:e.signal}}async fetch(e,t){let n=t=>Error(`${Dg(t)} fetching ${e}`,{cause:t}),r;try{r=await this.fetchImplementation(e,t)}catch(i){if(`${i}`.includes(`Failed to fetch`)){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...t,cache:`reload`})}catch(e){throw n(e)}}else throw n(i)}return r}async read(e,t,n={}){if(e===0)return new Uint8Array;if(Number.isNaN(e)||Number.isNaN(t))throw TypeError(`read() called with NaN length or position (length=${e}, position=${t}). The index file may be corrupt.`);let r=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${t}-${t+e-1}`}));if(r.status===416)return new Uint8Array;if(!r.ok)throw Error(`HTTP ${r.status} fetching ${this.url}`);if(r.status===200&&t===0||r.status===206){let t=r.headers.get(`content-range`),n=/\/(\d+)$/.exec(t??``);n?.[1]&&(this._stat={size:parseInt(n[1],10)});let i=await Cg(r);return!this._stat&&r.status===200&&(this._stat={size:i.byteLength}),i.byteLength<=e?i:i.subarray(0,e)}throw Error(r.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${r.status} fetching ${this.url}`)}async readFile(e={}){let t=typeof e==`string`?e:e.encoding,n=typeof e==`string`?{}:e,r=await this.fetch(this.url,this.buildRequest(n));if(!r.ok)throw Error(`HTTP ${r.status} fetching ${this.url}`);if(t===`utf8`)return r.text();if(t)throw Error(`unsupported encoding: ${t}`);return Cg(r)}async stat(){return this._stat||await this.read(10,0),this._stat??{size:0}}close(){return Promise.resolve()}}})),Ag=r({BlobFile:()=>Tg,LocalFile:()=>jg,RemoteFile:()=>Og}),jg,Mg=n((()=>{Sg(),Eg(),kg(),jg=class{readFile(){return Promise.reject(Error(`unimplemented`))}read(){return Promise.reject(Error(`unimplemented`))}stat(){return Promise.reject(Error(`unimplemented`))}close(){return Promise.reject(Error(`unimplemented`))}}}));function Ng(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*Fg+(n>>>0)}var Pg,Fg,Ig=n((()=>{Pg=65536,Fg=Pg*Pg}));function Lg(e,t,n){let r=t[Rg],i=n?n[Rg]:1/0;return r<=e&&i>e?0:r<e?-1:1}var Rg,zg,Bg=n((()=>{Ig(),Rg=1,zg=class{filehandle;index;constructor({filehandle:e}){this.filehandle=e}_getIndex(){return this.index||=this._readIndex().catch(e=>{throw this.index=void 0,e}),this.index}async _readIndex(){let e=Ng(await this.filehandle.read(8,0));if(!e)return[[0,0]];let t=Array(e+1);t[0]=[0,0];let n=16*e;if(n>2**53-1)throw TypeError(`integer overflow`);let r=await this.filehandle.read(n,8);for(let n=0;n<e;n+=1){let e=Ng(r,n*16),i=Ng(r,n*16+8);t[n+1]=[e,i]}return t}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(e,t){let n=t+e;if(e===0)return[];let r=await this._getIndex(),i=[],a=0,o=r.length-1,s=Math.floor(r.length/2),c=Lg(t,r[s],r[s+1]);for(;c!==0;)c>0?o=s-1:c<0&&(a=s+1),s=Math.ceil((o-a)/2)+a,c=Lg(t,r[s],r[s+1]);i.push(r[s]);let l=s+1;for(;l<r.length&&(i.push(r[l]),!(r[l][Rg]>=n));l+=1);return i[i.length-1][Rg]<n&&i.push([]),i}}})),Vg=n((()=>{}));function Hg(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Ug(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if(typeof n!=`object`)throw TypeError(n+`must be non-object`);for(var r in n)Hg(n,r)&&(e[r]=n[r])}}return e}function Wg(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var Gg,Kg,qg,Jg,Yg,Xg,Zg,Qg,$g=n((()=>{Gg={arraySet:function(e,t,n,r,i){if(t.subarray&&e.subarray){e.set(t.subarray(n,n+r),i);return}for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){var t,n,r=0,i,a,o;for(t=0,n=e.length;t<n;t++)r+=e[t].length;for(o=new Uint8Array(r),i=0,t=0,n=e.length;t<n;t++)a=e[t],o.set(a,i),i+=a.length;return o},Buf8:function(e){return new Uint8Array(e)},Buf16:function(e){return new Uint16Array(e)},Buf32:function(e){return new Int32Array(e)}},Kg={arraySet:function(e,t,n,r,i){for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){return[].concat.apply([],e)},Buf8:function(e){return Array(e)},Buf16:function(e){return Array(e)},Buf32:function(e){return Array(e)}},qg=()=>{let e=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;return qg=()=>e,e},Jg=(e,t,n,r,i)=>(Jg=qg()?Gg.arraySet:Kg.arraySet,Jg(e,t,n,r,i)),Yg=e=>(Yg=qg()?Gg.flattenChunks:Kg.flattenChunks,Yg(e)),Xg=e=>(Xg=qg()?Gg.Buf8:Kg.Buf8,Xg(e)),Zg=e=>(Zg=qg()?Gg.Buf16:Kg.Buf16,Zg(e)),Qg=e=>(Qg=qg()?Gg.Buf32:Kg.Buf32,Qg(e))}));function e_(e){var t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t}function t_(e,t){if(t<65534&&(e.subarray&&o_()||!e.subarray&&a_()))return String.fromCharCode.apply(null,Wg(e,t));for(var n=``,r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}function n_(e){for(var t=new Uint8Array(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function r_(e,t){var n,r,i,a,o=t||e.length,s=Array(o*2);for(r=0,n=0;n<o;){if(i=e[n++],i<128){s[r++]=i;continue}if(a=s_(i),a>4){s[r++]=65533,n+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&n<o;)i=i<<6|e[n++]&63,a--;if(a>1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return t_(s,r)}function i_(e,t){var n;for(t||=e.length,t>e.length&&(t=e.length),n=t-1;n>=0&&(e[n]&192)==128;)n--;return n<0||n===0?t:n+s_(e[n])>t?n:t}var a_,o_,s_,c_=n((()=>{$g(),a_=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return a_=()=>e,e},o_=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return o_=()=>e,e},s_=function(e){for(var t=Xg(256),n=0;n<256;n++)t[n]=n>=252?6:n>=248?5:n>=240?4:n>=224?3:n>=192?2:1;return t[254]=t[254]=1,s_=e=>t[e],t[e]}}));function l_(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=``,this.comment=``,this.hcrc=0,this.done=!1}var u_=n((()=>{}));function d_(e,t,n,r){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}var f_=n((()=>{}));function p_(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t}function m_(e,t,n,r){var i=h_(),a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var h_,g_=n((()=>{h_=function(){let e=p_();return h_=()=>e,e}}));function __(e,t){var n=e.state,r=e.next_in,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.input,E;i=r+(e.avail_in-5),a=e.next_out,E=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),c=n.dmax,l=n.wsize,u=n.whave,d=n.wnext,f=n.window,p=n.hold,m=n.bits,h=n.lencode,g=n.distcode,_=(1<<n.lenbits)-1,v=(1<<n.distbits)-1;top:do{m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=h[p&_];dolen:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b===0)E[a++]=y&65535;else if(b&16){x=y&65535,b&=15,b&&(m<b&&(p+=T[r++]<<m,m+=8),x+=p&(1<<b)-1,p>>>=b,m-=b),m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=g[p&v];dodist:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b&16){if(S=y&65535,b&=15,m<b&&(p+=T[r++]<<m,m+=8,m<b&&(p+=T[r++]<<m,m+=8)),S+=p&(1<<b)-1,S>c){e.msg=`invalid distance too far back`,n.mode=v_;break top}if(p>>>=b,m-=b,b=a-o,S>b){if(b=S-b,b>u&&n.sane){e.msg=`invalid distance too far back`,n.mode=v_;break top}if(C=0,w=f,d===0){if(C+=l-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}else if(d<b){if(C+=l+d-b,b-=d,b<x){x-=b;do E[a++]=f[C++];while(--b);if(C=0,d<x){b=d,x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}}else if(C+=d-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}for(;x>2;)E[a++]=w[C++],E[a++]=w[C++],E[a++]=w[C++],x-=3;x&&(E[a++]=w[C++],x>1&&(E[a++]=w[C++]))}else{C=a-S;do E[a++]=E[C++],E[a++]=E[C++],E[a++]=E[C++],x-=3;while(x>2);x&&(E[a++]=E[C++],x>1&&(E[a++]=E[C++]))}}else if(b&64){e.msg=`invalid distance code`,n.mode=v_;break top}else{y=g[(y&65535)+(p&(1<<b)-1)];continue dodist}break}}else if(!(b&64)){y=h[(y&65535)+(p&(1<<b)-1)];continue dolen}else if(b&32){n.mode=y_;break top}else{e.msg=`invalid literal/length code`,n.mode=v_;break top}break}}while(r<i&&a<s);x=m>>3,r-=x,m-=x<<3,p&=(1<<m)-1,e.next_in=r,e.next_out=a,e.avail_in=r<i?5+(i-r):5-(r-i),e.avail_out=a<s?257+(s-a):257-(a-s),n.hold=p,n.bits=m}var v_,y_,b_=n((()=>{v_=30,y_=12}));function x_(e,t,n,r,i,a,o,s){var c=s.bits,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y,b,x,S,C,w=null,T=0,E,D=Zg(S_+1),ee=Zg(S_+1),te=null,ne=0,re,ie,ae;for(l=0;l<=S_;l++)D[l]=0;for(u=0;u<r;u++)D[t[n+u]]++;for(p=c,f=S_;f>=1&&D[f]===0;f--);if(p>f&&(p=f),f===0)return i[a++]=20971520,i[a++]=20971520,s.bits=1,0;for(d=1;d<f&&D[d]===0;d++);for(p<d&&(p=d),g=1,l=1;l<=S_;l++)if(g<<=1,g-=D[l],g<0)return-1;if(g>0&&(e===T_||f!==1))return-1;for(ee[1]=0,l=1;l<S_;l++)ee[l+1]=ee[l]+D[l];for(u=0;u<r;u++)t[n+u]!==0&&(o[ee[t[n+u]]++]=u);if(e===T_?(w=te=o,E=19):e===E_?(w=O_,T-=257,te=k_,ne-=257,E=256):(w=A_,te=j_,E=-1),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===E_&&_>C_||e===D_&&_>w_)return 1;for(;;){re=l-h,o[u]<E?(ie=0,ae=o[u]):o[u]>E?(ie=te[ne+o[u]],ae=w[T+o[u]]):(ie=96,ae=0),y=1<<l-h,b=1<<m,d=b;do b-=y,i[C+(v>>h)+b]=re<<24|ie<<16|ae|0;while(b!==0);for(y=1<<l-1;v&y;)y>>=1;if(y===0?v=0:(v&=y-1,v+=y),u++,--D[l]===0){if(l===f)break;l=t[n+o[u]]}if(l>p&&(v&S)!==x){for(h===0&&(h=p),C+=d,m=l-h,g=1<<m;m+h<f&&(g-=D[m+h],!(g<=0));)m++,g<<=1;if(_+=1<<m,e===E_&&_>C_||e===D_&&_>w_)return 1;x=v&S,i[x]=p<<24|m<<16|C-a|0}}return v!==0&&(i[C+v]=l-h<<24|4194304),s.bits=p,0}var S_,C_,w_,T_,E_,D_,O_,k_,A_,j_,M_=n((()=>{$g(),S_=15,C_=852,w_=592,T_=0,E_=1,D_=2,O_=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k_=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],A_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],j_=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]}));function N_(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function P_(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Zg(320),this.work=Zg(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function F_(e){var t;return!e||!e.state?ev:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=av,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Qg(Iv),t.distcode=t.distdyn=Qg(Lv),t.sane=1,t.back=-1,Z_)}function I_(e){var t;return!e||!e.state?ev:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,F_(e))}function L_(e,t){var n,r;return!e||!e.state||(r=e.state,t<0?(n=0,t=-t):(n=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?ev:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,I_(e))}function R_(e,t){var n,r;return e?(r=new P_,e.state=r,r.window=null,n=L_(e,t),n!==Z_&&(e.state=null),n):ev}function z_(e){if(Rv){var t;for(zv=Qg(512),Bv=Qg(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(x_(K_,e.lens,0,288,zv,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;x_(q_,e.lens,0,32,Bv,0,e.work,{bits:5}),Rv=!1}e.lencode=zv,e.lenbits=9,e.distcode=Bv,e.distbits=5}function B_(e,t,n,r){var i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=Xg(a.wsize)),r>=a.wsize?(Jg(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),Jg(a.window,t,n-r,i,a.wnext),r-=i,r?(Jg(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0}function V_(e,t){var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=0,_,v,y,b,x,S,C,w,T=Xg(4),E,D,ee=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return ev;n=e.state,n.mode===gv&&(n.mode=_v),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,d=s,f=c,w=Z_;inf_leave:for(;;)switch(n.mode){case av:if(n.wrap===0){n.mode=_v;break}for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&2&&l===35615){n.check=0,T[0]=l&255,T[1]=l>>>8&255,n.check=m_(n.check,T,2,0),l=0,u=0,n.mode=ov;break}if(n.flags=0,n.head&&(n.head.done=!1),!(n.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg=`incorrect header check`,n.mode=B;break}if((l&15)!==iv){e.msg=`unknown compression method`,n.mode=B;break}if(l>>>=4,u-=4,C=(l&15)+8,n.wbits===0)n.wbits=C;else if(C>n.wbits){e.msg=`invalid window size`,n.mode=B;break}n.dmax=1<<C,e.adler=n.check=1,n.mode=l&512?mv:gv,l=0,u=0;break;case ov:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==iv){e.msg=`unknown compression method`,n.mode=B;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=B;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=m_(n.check,T,2,0)),l=0,u=0,n.mode=sv;case sv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.time=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,T[2]=l>>>16&255,T[3]=l>>>24&255,n.check=m_(n.check,T,4,0)),l=0,u=0,n.mode=cv;case cv:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=l&255,n.head.os=l>>8),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=m_(n.check,T,2,0)),l=0,u=0,n.mode=lv;case lv:if(n.flags&1024){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length=l,n.head&&(n.head.extra_len=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=m_(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=uv;case uv:if(n.flags&1024&&(p=n.length,p>s&&(p=s),p&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=Array(n.head.extra_len)),Jg(n.head.extra,r,a,p,C)),n.flags&512&&(n.check=m_(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=dv;case dv:if(n.flags&2048){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=m_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.name=null);n.length=0,n.mode=fv;case fv:if(n.flags&4096){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.comment+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=m_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=pv;case pv:if(n.flags&512){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.check&65535)){e.msg=`header crc mismatch`,n.mode=B;break}l=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=gv;break;case mv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=N_(l),l=0,u=0,n.mode=hv;case hv:if(n.havedict===0)return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,$_;e.adler=n.check=1,n.mode=gv;case gv:if(t===Y_||t===X_)break inf_leave;case _v:if(n.last){l>>>=u&7,u-=u&7,n.mode=jv;break}for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}switch(n.last=l&1,l>>>=1,--u,l&3){case 0:n.mode=vv;break;case 1:if(z_(n),n.mode=wv,t===X_){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=xv;break;case 3:e.msg=`invalid block type`,n.mode=B}l>>>=2,u-=2;break;case vv:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if((l&65535)!=(l>>>16^65535)){e.msg=`invalid stored block lengths`,n.mode=B;break}if(n.length=l&65535,l=0,u=0,n.mode=yv,t===X_)break inf_leave;case yv:n.mode=bv;case bv:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;Jg(i,r,a,p,o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=gv;break;case xv:for(;u<14;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.nlen=(l&31)+257,l>>>=5,u-=5,n.ndist=(l&31)+1,l>>>=5,u-=5,n.ncode=(l&15)+4,l>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg=`too many length or distance symbols`,n.mode=B;break}n.have=0,n.mode=Sv;case Sv:for(;n.have<n.ncode;){for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.lens[ee[n.have++]]=l&7,l>>>=3,u-=3}for(;n.have<19;)n.lens[ee[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,E={bits:n.lenbits},w=x_(G_,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=B;break}n.have=0,n.mode=Cv;case Cv:for(;n.have<n.nlen+n.ndist;){for(;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(y<16)l>>>=_,u-=_,n.lens[n.have++]=y;else{if(y===16){for(D=_+2;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l>>>=_,u-=_,n.have===0){e.msg=`invalid bit length repeat`,n.mode=B;break}C=n.lens[n.have-1],p=3+(l&3),l>>>=2,u-=2}else if(y===17){for(D=_+3;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=3+(l&7),l>>>=3,u-=3}else{for(D=_+7;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=11+(l&127),l>>>=7,u-=7}if(n.have+p>n.nlen+n.ndist){e.msg=`invalid bit length repeat`,n.mode=B;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===B)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=B;break}if(n.lenbits=9,E={bits:n.lenbits},w=x_(K_,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=B;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=x_(q_,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=B;break}if(n.mode=wv,t===X_)break inf_leave;case wv:n.mode=Tv;case Tv:if(s>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,__(e,f),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===gv&&(n.back=-1);break}for(n.back=0;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(v&&!(v&240)){for(b=_,x=v,S=y;g=n.lencode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,n.length=y,v===0){n.mode=Av;break}if(v&32){n.back=-1,n.mode=gv;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=B;break}n.extra=v&15,n.mode=Ev;case Ev:if(n.extra){for(D=n.extra;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Dv;case Dv:for(;g=n.distcode[l&(1<<n.distbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(!(v&240)){for(b=_,x=v,S=y;g=n.distcode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,v&64){e.msg=`invalid distance code`,n.mode=B;break}n.offset=y,n.extra=v&15,n.mode=Ov;case Ov:if(n.extra){for(D=n.extra;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg=`invalid distance too far back`,n.mode=B;break}n.mode=kv;case kv:if(c===0)break inf_leave;if(p=f-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg=`invalid distance too far back`,n.mode=B;break}p>n.wnext?(p-=n.wnext,m=n.wsize-p):m=n.wnext-p,p>n.length&&(p=n.length),h=n.window}else h=i,m=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do i[o++]=h[m++];while(--p);n.length===0&&(n.mode=Tv);break;case Av:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=Tv;break;case jv:if(n.wrap){for(;u<32;){if(s===0)break inf_leave;s--,l|=r[a++]<<u,u+=8}if(f-=c,e.total_out+=f,n.total+=f,f&&(e.adler=n.check=n.flags?m_(n.check,i,f,o-f):d_(n.check,i,f,o-f)),f=c,(n.flags?l:N_(l))!==n.check){e.msg=`incorrect data check`,n.mode=B;break}l=0,u=0}n.mode=Mv;case Mv:if(n.wrap&&n.flags){for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.total&4294967295)){e.msg=`incorrect length check`,n.mode=B;break}l=0,u=0}n.mode=Nv;case Nv:w=Q_;break inf_leave;case B:w=tv;break inf_leave;case Pv:return nv;case Fv:default:return ev}return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,(n.wsize||f!==e.avail_out&&n.mode<B&&(n.mode<jv||t!==J_))&&B_(e,e.output,e.next_out,f-e.avail_out)?(n.mode=Pv,nv):(d-=e.avail_in,f-=e.avail_out,e.total_in+=d,e.total_out+=f,n.total+=f,n.wrap&&f&&(e.adler=n.check=n.flags?m_(n.check,i,f,e.next_out-f):d_(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===gv?128:0)+(n.mode===wv||n.mode===yv?256:0),(d===0&&f===0||t===J_)&&w===Z_&&(w=rv),w)}function H_(e){if(!e||!e.state)return ev;var t=e.state;return t.window&&=null,e.state=null,Z_}function U_(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?ev:(n.head=t,t.done=!1,Z_)}function W_(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==hv)?ev:r.mode===hv&&(i=1,i=d_(i,t,n,0),i!==r.check)?tv:(a=B_(e,t,n,n),a?(r.mode=Pv,nv):(r.havedict=1,Z_))}var G_,K_,q_,J_,Y_,X_,Z_,Q_,$_,ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv,fv,pv,mv,hv,gv,_v,vv,yv,bv,xv,Sv,Cv,wv,Tv,Ev,Dv,Ov,kv,Av,jv,Mv,Nv,B,Pv,Fv,Iv,Lv,Rv,zv,Bv,Vv=n((()=>{f_(),g_(),b_(),M_(),$g(),G_=0,K_=1,q_=2,J_=4,Y_=5,X_=6,Z_=0,Q_=1,$_=2,ev=-2,tv=-3,nv=-4,rv=-5,iv=8,av=1,ov=2,sv=3,cv=4,lv=5,uv=6,dv=7,fv=8,pv=9,mv=10,hv=11,gv=12,_v=13,vv=14,yv=15,bv=16,xv=17,Sv=18,Cv=19,wv=20,Tv=21,Ev=22,Dv=23,Ov=24,kv=25,Av=26,jv=27,Mv=28,Nv=29,B=30,Pv=31,Fv=32,Iv=852,Lv=592,Rv=!0})),Hv,Uv=n((()=>{Hv={2:`need dictionary`,1:`stream end`,0:``,"-1":`file error`,"-2":`stream error`,"-3":`data error`,"-4":`insufficient memory`,"-5":`buffer error`,"-6":`incompatible version`}}));function Wv(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=``,this.state=null,this.data_type=2,this.adler=0}var Gv=n((()=>{}));function Kv(e,t){var n=new Jv(t);if(n.push(e,!0),n.err)throw n.msg||Hv[n.err];return n.result}var qv,Jv,Yv,Xv=n((()=>{$g(),c_(),Vg(),u_(),Vv(),Uv(),Gv(),qv=Object.prototype.toString,Jv=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Ug({chunkSize:16384,windowBits:0,to:``},t||{});var n=this.options;n.raw&&n.windowBits>=0&&n.windowBits<16&&(n.windowBits=-n.windowBits,n.windowBits===0&&(n.windowBits=-15)),n.windowBits>=0&&n.windowBits<16&&!(t&&t.windowBits)&&(n.windowBits+=32),n.windowBits>15&&n.windowBits<48&&(n.windowBits&15||(n.windowBits|=15)),this.err=0,this.msg=``,this.ended=!1,this.chunks=[],this.strm=new Wv,this.strm.avail_out=0;var r=R_(this.strm,n.windowBits);if(r!==0||(this.header=new l_,U_(this.strm,this.header),n.dictionary&&(typeof n.dictionary==`string`?n.dictionary=e_(n.dictionary):qv.call(n.dictionary)===`[object ArrayBuffer]`&&(n.dictionary=new Uint8Array(n.dictionary)),n.raw&&(r=W_(this.strm,n.dictionary),r!==0))))throw Error(Hv[r])}push(e,t){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,o,s,c,l,u,d=!1;if(this.ended)return!1;o=t===~~t?t:t===!0?4:0,typeof e==`string`?n.input=n_(e):qv.call(e)===`[object ArrayBuffer]`?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=Xg(r),n.next_out=0,n.avail_out=r),a=V_(n,0),a===2&&i&&(u=typeof i==`string`?e_(i):qv.call(i)===`[object ArrayBuffer]`?new Uint8Array(i):i,a=W_(this.strm,u)),a===-5&&d===!0&&(a=0,d=!1),a!==1&&a!==0)return this.onEnd(a),this.ended=!0,!1;n.next_out&&(n.avail_out===0||a===1||n.avail_in===0&&(o===4||o===2))&&(this.options.to===`string`?(s=i_(n.output,n.next_out),c=n.next_out-s,l=r_(n.output,s),n.next_out=c,n.avail_out=r-c,c&&Jg(n.output,n.output,s,c,0),this.onData(l)):this.onData(Wg(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(d=!0)}while((n.avail_in>0||n.avail_out===0)&&a!==1);return a===1&&(o=4),o===4?(a=H_(this.strm),this.onEnd(a),this.ended=!0,a===0):o===2?(this.onEnd(0),n.avail_out=0,!0):!0}onData(e){this.chunks.push(e)}onEnd(e){e===0&&(this.options.to===`string`?this.result=this.chunks.join(``):this.result=Yg(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}},Yv=Kv})),Zv=n((()=>{})),Qv=n((()=>{Vg(),Xv(),Zv()}));function $v(e){try{let a=V.__wbindgen_add_to_stack_pointer(-16),o=py(e,V.__wbindgen_export2),s=Fy;V.decompress_all(a,o,s);var t=cy().getInt32(a+0,!0),n=cy().getInt32(a+4,!0),r=cy().getInt32(a+8,!0);if(cy().getInt32(a+12,!0))throw my(r);var i=sy(t,n).slice();return V.__wbindgen_export(t,n*1,1),i}finally{V.__wbindgen_add_to_stack_pointer(16)}}function ey(e){try{let r=V.__wbindgen_add_to_stack_pointer(-16),i=py(e,V.__wbindgen_export2),a=Fy;V.decompress_block(r,i,a);var t=cy().getInt32(r+0,!0),n=cy().getInt32(r+4,!0);if(cy().getInt32(r+8,!0))throw my(n);return wy.__wrap(t)}finally{V.__wbindgen_add_to_stack_pointer(16)}}function ty(e,t,n,r,i){try{let s=V.__wbindgen_add_to_stack_pointer(-16),c=py(e,V.__wbindgen_export2),l=Fy;V.decompress_chunk_slice(s,c,l,t,n,r,i);var a=cy().getInt32(s+0,!0),o=cy().getInt32(s+4,!0);if(cy().getInt32(s+8,!0))throw my(o);return Cy.__wrap(a)}finally{V.__wbindgen_add_to_stack_pointer(16)}}function ny(e,t){return iy(Error(uy(e,t)))}function ry(e,t){throw Error(uy(e,t))}function iy(e){jy===Ay.length&&Ay.push(Ay.length+1);let t=jy;return jy=Ay[t],Ay[t]=e,t}function ay(e){e<132||(Ay[e]=jy,jy=e)}function oy(e,t){return e>>>=0,ly().subarray(e/8,e/8+t)}function sy(e,t){return e>>>=0,dy().subarray(e/1,e/1+t)}function cy(){return(Dy===null||Dy.buffer.detached===!0||Dy.buffer.detached===void 0&&Dy.buffer!==V.memory.buffer)&&(Dy=new DataView(V.memory.buffer)),Dy}function ly(){return(Oy===null||Oy.byteLength===0)&&(Oy=new Float64Array(V.memory.buffer)),Oy}function uy(e,t){return e>>>=0,hy(e,t)}function dy(){return(ky===null||ky.byteLength===0)&&(ky=new Uint8Array(V.memory.buffer)),ky}function fy(e){return Ay[e]}function py(e,t){let n=t(e.length*1,1)>>>0;return dy().set(e,n/1),Fy=e.length,n}function my(e){let t=fy(e);return ay(e),t}function hy(e,t){return Py+=t,Py>=Ny&&(My=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),My.decode(),Py=t),My.decode(dy().subarray(e,e+t))}function gy(e){V=e}async function _y(){return Iy||(Ly||=(async()=>{let e=await(await fetch(Sy)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":xy});return Iy=t.exports,gy(Iy),Iy})(),Ly)}async function vy(e){return await _y(),$v(e)}async function yy(e,t,n,r,i){await _y();let a=ty(e,t,n,r,i),o=a.buffer,s=[...a.cpositions],c=[...a.dpositions];return a.free(),{buffer:o,cpositions:s,dpositions:c}}var by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,Ny,Py,Fy,V,Iy,Ly,Ry=n((()=>{by={},by.d=(e,t)=>{for(var n in t)by.o(t,n)&&!by.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},by.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),by.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},xy={},by.r(xy),by.d(xy,{ChunkSliceResult:()=>Cy,DecompressResult:()=>wy,__wbg_Error_8c4e43fe74559d73:()=>ny,__wbg___wbindgen_throw_be289d5034ed271b:()=>ry,__wbg_set_wasm:()=>gy,decompress_all:()=>$v,decompress_block:()=>ey,decompress_chunk_slice:()=>ty}),Sy=`data:application/wasm;base64,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AAsgASADNgIEIAEgAjYCACABQfiSwAAgACgCBCAAKAIIIgAtAAggAC0ACRAeAAuLAQEBfyMAQRBrIgMkAAJAIAIgAWoiASACTw0AQQBBABBNAAsgA0EEaiAAKAIAIgIgACgCBCABIAJBAXQiAiABIAJLGyICQQggAkEISxsiAkEBQQEQIAJAIAMoAgRBAUcNACADKAIIIAMoAgwQTQALIAMoAgghASAAIAI2AgAgACABNgIEIANBEGokAAuHAQEBfyMAQSBrIgIkAAJAAkAgACgCAEGAgICAeEYNACABIAAoAgQgACgCCBBSIQAMAQsgAkEIakEIaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEIakEQaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIAIAEoAgQgAkEIahALIQALIAJBIGokACAAC3wBAX8CQCAAKAIAIgAoAgwiAUUNACAAKAIQIAFBARBWCwJAIAAoAhgiAUUNACAAKAIcIAFBA3RBCBBWCwJAIAAoAiQiAUUNACAAKAIoIAFBA3RBCBBWCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEwQQQQVgsLhAEBAn8jAEEQayIGJABBACEHIAZBADYCDAJAAkACQAJAAkAgASgCACACIAMgBCAFIAZBDGoQUA4EAQIAAwALQZCFwABB7ABB/IXAABA/AAsgACAGKAIMNgIEDAILIABBADoAAUEBIQcMAQtBASEHIABBAToAAQsgACAHOgAAIAZBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgQgAkEBdCICQQQgAkEESxsiAkEIQQgQIAJAIAEoAgRBAUcNACABKAIIIAEoAgwQTQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtoAQF/IwBBMGsiAiQAAkAQaEH/AXENACACQTBqJAAPCyACIAE2AiQgAkECNgIQIAJBpJLAADYCDCACQgE3AhggAkEErUIghiACQSRqrYQ3AyggAiACQShqNgIUIAJBDGpBtJLAABBAAAtoAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0GcmMAANgIIIANCAjcCFCADQQStQiCGIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBA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ABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgF8/YsyV+ZX+QLfRL/jSOevbV3L1ixQ62N4QaZXcRuLuW1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAAAJEAAVAAAAFQkQAA0AAAAGARAAGAAAAGQBAAAJAAAAAAAAAAgAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAMAAAABAAAAAoAAAALAAAADAAAAAAAAAAIAAAABAAAAA0AAAAOAAAADwAAABAAAAARAAAAEAAAAAQAAAASAAAAEwAAABQAAAAIAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAANsAEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADbABAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAUAoQABEAAAC6ABAAIAAAABwAAAAFAAAAAQAAAAAAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OXJhbmdlIGVuZCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABMCxAAEAAAAFwLEAAiAAAAc2xpY2UgaW5kZXggc3RhcnRzIGF0ICBidXQgZW5kcyBhdCAAkAsQABYAAACmCxAADQAAAHJhbmdlIHN0YXJ0IGluZGV4IAAAxAsQABIAAABcCxAAIgAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAADoCxAAIAAAAAgMEAASAAAAUmVmQ2VsbCBhbHJlYWR5IGJvcnJvd2VkAEHEmMAACwQEAAAAACkEbmFtZQEiAVgfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgA8CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yNC40DHdhc20tYmluZGdlbgcwLjIuMTA4`,Cy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ty.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ty.unregister(this),e}free(){let e=this.__destroy_into_raw();V.__wbg_chunksliceresult_free(e,0)}get buffer(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_buffer(r,this.__wbg_ptr);var e=cy().getInt32(r+0,!0),t=cy().getInt32(r+4,!0),n=sy(e,t).slice();return V.__wbindgen_export(e,t*1,1),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}get cpositions(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_cpositions(r,this.__wbg_ptr);var e=cy().getInt32(r+0,!0),t=cy().getInt32(r+4,!0),n=oy(e,t).slice();return V.__wbindgen_export(e,t*8,8),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_dpositions(r,this.__wbg_ptr);var e=cy().getInt32(r+0,!0),t=cy().getInt32(r+4,!0),n=oy(e,t).slice();return V.__wbindgen_export(e,t*8,8),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(Cy.prototype[Symbol.dispose]=Cy.prototype.free),wy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ey.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ey.unregister(this),e}free(){let e=this.__destroy_into_raw();V.__wbg_decompressresult_free(e,0)}get bytes_read(){return V.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.decompressresult_data(r,this.__wbg_ptr);var e=cy().getInt32(r+0,!0),t=cy().getInt32(r+4,!0),n=sy(e,t).slice();return V.__wbindgen_export(e,t*1,1),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(wy.prototype[Symbol.dispose]=wy.prototype.free),Ty=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>V.__wbg_chunksliceresult_free(e>>>0,1)),Ey=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>V.__wbg_decompressresult_free(e>>>0,1)),Dy=null,Oy=null,ky=null,Ay=Array(128).fill(void 0),Ay.push(void 0,null,!0,!1),jy=Ay.length,My=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),My.decode(),Ny=2146435072,Py=0,Fy=0,Iy=null,Ly=null}));function zy(e){return e.length>=2&&e[0]===31&&e[1]===139}async function By(e){if(typeof DecompressionStream<`u`){let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=n.write(e).then(()=>n.close()),i=[],a=t.readable.getReader();for(;;){let{done:e,value:t}=await a.read();if(e)break;i.push(t)}await r;let o=i.reduce((e,t)=>e+t.length,0),s=new Uint8Array(o),c=0;for(let e of i)s.set(e,c),c+=e.length;return s}else return Yv(e,void 0)}async function Vy(e){try{return await vy(e)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(zy(e))return By(e);throw Error(`problem decompressing block: not a valid bgzf or gzip block`)}throw/invalid gzip header/.exec(`${t}`)?Error(`problem decompressing block: incorrect gzip header check`):t}}async function Hy(e,t,n){try{let{minv:n,maxv:r}=t,i=await yy(e,n.blockPosition,n.dataPosition,r.blockPosition,r.dataPosition);return{buffer:i.buffer,cpositions:i.cpositions,dpositions:i.dpositions}}catch(e){throw/invalid gzip header/.exec(`${e}`)?Error(`problem decompressing block: incorrect gzip header check`):e}}var Uy=n((()=>{Qv(),Ry()}));function Wy(e){let t=0;for(let n of e)t+=n.length;return t}function Gy(e,t){let n=new Uint8Array(t??Wy(e)),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Ky=n((()=>{})),qy,Jy=n((()=>{Bg(),Uy(),Ky(),qy=class{filehandle;gzi;constructor({filehandle:e,gziFilehandle:t}){this.filehandle=e,this.gzi=new zg({filehandle:t})}async _readAndUncompressBlock(e,t){let n=t;n||=(await this.filehandle.stat()).size;let r=n-e;return Vy(await this.filehandle.read(r,e))}async read(e,t){let n=await this.gzi.getRelevantBlocksForRead(e,t),r=[];for(let i=0;i<n.length-1;i+=1){let a=await this._readAndUncompressBlock(n[i][0],n[i+1][0]),[,o]=n[i],s=o>=t?0:t-o,c=Math.min(t+e,o+a.length)-o;s>=0&&s<a.length&&r.push(a.subarray(s,c))}return Gy(r)}}})),Yy=n((()=>{Jy(),Uy()}));function Xy(e,t,n,r){return e+t*Math.floor(r/n)+r%n}async function Zy(e,t={}){let n=new TextDecoder(`utf8`).decode(await e.readFile(t)),r=[],i=[],a=[],o=[],s=[],c={},l=0,u=n.length,d=0;for(;l<u;){let e=n.indexOf(`
|
|
193
|
+
`,l);e===-1&&(e=u);let t=n.slice(l,e);if(t.endsWith(`\r`)&&(t=t.slice(0,-1)),t=t.trim(),l=e+1,t.length===0)continue;let f=t.indexOf(` `),p=t.indexOf(` `,f+1),m=t.indexOf(` `,p+1),h=t.indexOf(` `,m+1),g=t.slice(0,f);if(g.startsWith(`>`))throw Error(`found > in sequence name, might have supplied FASTA file for the FASTA index`);r.push(g),a.push(+t.slice(f+1,p)),i.push(+t.slice(p+1,m)),o.push(+t.slice(m+1,h)),s.push(+t.slice(h+1)),c[g]=d,d++}return{names:r,nameToIndex:c,offsets:i,lengths:a,lineLengths:o,lineBytes:s}}var Qy,$y=n((()=>{Mg(),Qy=class{constructor({fasta:e,fai:t,path:n,faiPath:r}){if(e)this.fasta=e;else if(n)this.fasta=new jg(n);else throw Error(`Need to pass filehandle for fasta or path to localfile`);if(t)this.fai=t;else if(r)this.fai=new jg(r);else if(n)this.fai=new jg(`${n}.fai`);else throw Error(`Need to pass filehandle for or path to localfile`)}async _getIndexes(e){return this.indexes||=Zy(this.fai,e).catch(e=>{throw this.indexes=void 0,e}),this.indexes}async getSequenceNames(e){return(await this._getIndexes(e)).names}async getSequenceSizes(e){let t=await this._getIndexes(e);if(!t.sizesCache){let e={};for(let n=0;n<t.names.length;n++)e[t.names[n]]=t.lengths[n];t.sizesCache=e}return t.sizesCache}async getSequenceSize(e,t){let n=await this._getIndexes(t),r=n.nameToIndex[e];return r===void 0?void 0:n.lengths[r]}async hasReferenceSequence(e,t){return(await this._getIndexes(t)).nameToIndex[e]!==void 0}async getResiduesByName(e,t,n,r){let i=await this._getIndexes(r),a=i.nameToIndex[e];if(a!==void 0)return this._fetchFromIndex(i.offsets[a],i.lineBytes[a],i.lineLengths[a],i.lengths[a],t,n,r)}async getSequence(e,t,n,r){return this.getResiduesByName(e,t,n,r)}async _fetchFromIndex(e,t,n,r,i=0,a,o){let s=a;if(i<0)throw TypeError(`regionStart cannot be less than 0`);if((s===void 0||s>r)&&(s=r),i>=s)return``;let c=Xy(e,t,n,i),l=Xy(e,t,n,s)-c,u=new TextDecoder(`utf8`).decode(await this.fasta.read(l,c,o)).replace(/\s+/g,``);if(/[^\x20-\x7e]/.test(u.slice(0,1e3)))throw Error(`Non-ASCII characters detected in sequence. The file may be gzip compressed. Use BgzipIndexedFasta for bgzip files, or decompress the file.`);return u}}})),eb,tb=n((()=>{Yy(),Mg(),$y(),eb=class extends Qy{constructor({fasta:e,path:t,fai:n,faiPath:r,gzi:i,gziPath:a}){super({fasta:e,path:t,fai:n,faiPath:r}),e&&i?this.fasta=new qy({filehandle:e,gziFilehandle:i}):t&&a&&(this.fasta=new qy({filehandle:new jg(t),gziFilehandle:new jg(a)}))}}})),nb=r({BgzipIndexedFasta:()=>eb,FetchableSmallFasta:()=>ib,IndexedFasta:()=>Qy,parseSmallFasta:()=>rb});function rb(e){return e.split(`>`).filter(e=>/\S/.test(e)).map(e=>{let[t,...n]=e.split(`
|
|
194
|
+
`),[r,...i]=t.split(` `),a=n.join(``).replace(/\s/g,``);return{id:r,description:i.join(` `),sequence:a}})}var ib,ab=n((()=>{Mg(),tb(),$y(),ib=class{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new jg(t);else throw Error(`Need to pass fasta or path`);this.data=this.fasta.readFile().then(e=>rb(new TextDecoder(`utf8`).decode(e)))}async fetch(e,t,n){let r=(await this.data).find(t=>t.id===e),i=n-t;if(!r)throw Error(`no sequence with id ${e} exists`);return r.sequence.slice(t,i)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}})),ob=class extends xg{constructor(e,t){let n={channel:`x`,windowSize:7e3,debounce:200,debounceMode:`window`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for IndexedFastaSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(ab(),nb)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{IndexedFasta:t},{RemoteFile:n}])=>{let r=e=>new n(ih(e,this.view.getBaseUrl()));this.fasta=new t({fasta:r(this.params.url),fai:r(this.params.indexUrl??this.params.url+`.fai`)}),e()})})}get label(){return`bigWigSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.fasta.getSequence(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>{if(t!=null)return{chrom:e.chrom,start:e.startPos,sequence:t};console.log(`No sequence found for interval ${e.chrom}:${e.startPos}-${e.endPos}`)}));this.publishData([t.filter(e=>e!==void 0)])}};function sb(e){return e?.type==`indexedFasta`}Gm(sb,ob);function cb(e,t,n){let r=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<ub|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function lb(e,t,n){let r=e.getUint32(t,n),i=e.getUint32(t+4,n),a=Number(!!n),o=Number(!n);return BigInt(r*o+i*a)<<ub|BigInt(r*a+i*o)}var ub,db=n((()=>{ub=BigInt(32)})),fb,pb=n((()=>{db(),fb=(e,t)=>t in e,fb(DataView.prototype,`getBigInt64`)||(DataView.prototype.getBigInt64=function(e,t){return cb(this,e,t)}),fb(DataView.prototype,`getBigUint64`)||(DataView.prototype.getBigUint64=function(e,t){return lb(this,e,t)})})),mb,hb,gb=n((()=>{mb=class{},hb=class{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new mb){if(this.signal.aborted)throw Error(`cannot add a signal, already aborted!`);this.signals.add(e),e.aborted?this.handleAborted(e):typeof e.addEventListener==`function`&&e.addEventListener(`abort`,()=>{this.handleAborted(e)})}handleAborted(e){this.signals.delete(e),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}})),_b,vb=n((()=>{_b=class{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),this.currentMessage&&e(this.currentMessage)}callback(e){this.currentMessage=e;for(let t of this.callbacks)t(e)}}})),yb,bb=n((()=>{gb(),vb(),yb=class e{constructor({fill:e,cache:t}){if(typeof e!=`function`)throw TypeError(`must pass a fill function`);if(typeof t!=`object`)throw TypeError(`must pass a cache object`);if(typeof t.get!=`function`||typeof t.set!=`function`||typeof t.delete!=`function`)throw TypeError(`cache must implement get(key), set(key, val), and and delete(key)`);this.cache=t,this.fillCallback=e}static isAbortException(e){return e.name===`AbortError`||e.code===`ERR_ABORTED`||e.message===`AbortError: aborted`||e.message===`Error: aborted`}evict(e,t){this.cache.get(e)===t&&this.cache.delete(e)}fill(e,t,n,r){let i=new hb,a=new _b;a.addCallback(r);let o={aborter:i,promise:this.fillCallback(t,i.signal,e=>{a.callback(e)}),settled:!1,statusReporter:a,get aborted(){return this.aborter.signal.aborted}};o.aborter.addSignal(n),o.aborter.signal.addEventListener(`abort`,()=>{o.settled||this.evict(e,o)}),o.promise.then(()=>{o.settled=!0},()=>{o.settled=!0,this.evict(e,o)}).catch(e=>{throw console.error(e),e}),this.cache.set(e,o)}static checkSinglePromise(e,t){function n(){if(t?.aborted)throw Object.assign(Error(`aborted`),{code:`ERR_ABORTED`})}return e.then(e=>(n(),e),e=>{throw n(),e})}has(e){return this.cache.has(e)}get(t,n,r,i){if(!r&&n instanceof AbortSignal)throw TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");let a=this.cache.get(t);return a?a.aborted&&!a.settled?(this.evict(t,a),this.get(t,n,r,i)):a.settled?a.promise:(a.aborter.addSignal(r),a.statusReporter.addCallback(i),e.checkSinglePromise(a.promise,r)):(this.fill(t,n,r,i),e.checkSinglePromise(this.cache.get(t).promise,r))}delete(e){let t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){let e=this.cache.keys(),t=0;for(let n=e.next();!n.done;n=e.next())this.delete(n.value),t+=1;return t}}})),xb=n((()=>{bb()})),Sb,H,U,Cb,W,wb,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb,Pb,Fb,Ib,Lb=n((()=>{Sb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},H=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Ib=class extends Map{constructor(e={}){if(super(),U.add(this),Cb.set(this,0),W.set(this,new Map),wb.set(this,new Map),Tb.set(this,void 0),Eb.set(this,void 0),Db.set(this,void 0),!(e.maxSize&&e.maxSize>0))throw TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge==`number`&&e.maxAge===0)throw TypeError("`maxAge` must be a number greater than 0");Sb(this,Tb,e.maxSize,`f`),Sb(this,Eb,e.maxAge||1/0,`f`),Sb(this,Db,e.onEviction,`f`)}get __oldCache(){return H(this,wb,`f`)}get(e){if(H(this,W,`f`).has(e)){let t=H(this,W,`f`).get(e);return H(this,U,`m`,jb).call(this,e,t)}if(H(this,wb,`f`).has(e)){let t=H(this,wb,`f`).get(e);if(!H(this,U,`m`,kb).call(this,e,t))return H(this,U,`m`,Pb).call(this,e,t),t.value}}set(e,t,{maxAge:n=H(this,Eb,`f`)}={}){let r=typeof n==`number`&&n!==1/0?Date.now()+n:void 0;return H(this,W,`f`).has(e)?H(this,W,`f`).set(e,{value:t,expiry:r}):H(this,U,`m`,Nb).call(this,e,{value:t,expiry:r}),this}has(e){return H(this,W,`f`).has(e)?!H(this,U,`m`,kb).call(this,e,H(this,W,`f`).get(e)):H(this,wb,`f`).has(e)?!H(this,U,`m`,kb).call(this,e,H(this,wb,`f`).get(e)):!1}peek(e){if(H(this,W,`f`).has(e))return H(this,U,`m`,Mb).call(this,e,H(this,W,`f`));if(H(this,wb,`f`).has(e))return H(this,U,`m`,Mb).call(this,e,H(this,wb,`f`))}expiresIn(e){let t=H(this,W,`f`).get(e)??H(this,wb,`f`).get(e);if(t)return t.expiry?t.expiry-Date.now():1/0}delete(e){var t;let n=H(this,W,`f`).delete(e);return n&&Sb(this,Cb,(t=H(this,Cb,`f`),t--,t),`f`),H(this,wb,`f`).delete(e)||n}clear(){H(this,W,`f`).clear(),H(this,wb,`f`).clear(),Sb(this,Cb,0,`f`)}resize(e){if(!(e&&e>0))throw TypeError("`maxSize` must be a number greater than 0");let t=[...H(this,U,`m`,Fb).call(this)],n=t.length-e;n<0?(Sb(this,W,new Map(t),`f`),Sb(this,wb,new Map,`f`),Sb(this,Cb,t.length,`f`)):(n>0&&H(this,U,`m`,Ob).call(this,t.slice(0,n)),Sb(this,wb,new Map(t.slice(n)),`f`),Sb(this,W,new Map,`f`),Sb(this,Cb,0,`f`)),Sb(this,Tb,e,`f`)}evict(e=1){let t=e;if(!t||t<=0)return;let n=[...H(this,U,`m`,Fb).call(this)],r=Math.trunc(Math.min(t,Math.max(n.length-1,0)));r<=0||(H(this,U,`m`,Ob).call(this,n.slice(0,r)),Sb(this,wb,new Map(n.slice(r)),`f`),Sb(this,W,new Map,`f`),Sb(this,Cb,0,`f`))}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[(Cb=new WeakMap,W=new WeakMap,wb=new WeakMap,Tb=new WeakMap,Eb=new WeakMap,Db=new WeakMap,U=new WeakSet,Ob=function(e){if(typeof H(this,Db,`f`)==`function`)for(let[t,n]of e)H(this,Db,`f`).call(this,t,n.value)},kb=function(e,t){return typeof t.expiry==`number`&&t.expiry<=Date.now()?(typeof H(this,Db,`f`)==`function`&&H(this,Db,`f`).call(this,e,t.value),this.delete(e)):!1},Ab=function(e,t){if(!H(this,U,`m`,kb).call(this,e,t))return t.value},jb=function(e,t){return t.expiry?H(this,U,`m`,Ab).call(this,e,t):t.value},Mb=function(e,t){let n=t.get(e);return H(this,U,`m`,jb).call(this,e,n)},Nb=function(e,t){var n;H(this,W,`f`).set(e,t),Sb(this,Cb,(n=H(this,Cb,`f`),n++,n),`f`),H(this,Cb,`f`)>=H(this,Tb,`f`)&&(Sb(this,Cb,0,`f`),H(this,U,`m`,Ob).call(this,H(this,wb,`f`)),Sb(this,wb,H(this,W,`f`),`f`),Sb(this,W,new Map,`f`))},Pb=function(e,t){H(this,wb,`f`).delete(e),H(this,U,`m`,Nb).call(this,e,t)},Fb=function*(){for(let e of H(this,wb,`f`)){let[t,n]=e;H(this,W,`f`).has(t)||H(this,U,`m`,kb).call(this,t,n)||(yield e)}for(let e of H(this,W,`f`)){let[t,n]=e;H(this,U,`m`,kb).call(this,t,n)||(yield e)}},Symbol.iterator)](){for(let e of H(this,W,`f`)){let[t,n]=e;H(this,U,`m`,kb).call(this,t,n)||(yield[t,n.value])}for(let e of H(this,wb,`f`)){let[t,n]=e;H(this,W,`f`).has(t)||H(this,U,`m`,kb).call(this,t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...H(this,W,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];H(this,U,`m`,kb).call(this,n,r)||(yield[n,r.value])}e=[...H(this,wb,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];H(this,W,`f`).has(n)||H(this,U,`m`,kb).call(this,n,r)||(yield[n,r.value])}}*entriesAscending(){for(let[e,t]of H(this,U,`m`,Fb).call(this))yield[e,t.value]}get size(){if(!H(this,Cb,`f`))return H(this,wb,`f`).size;let e=0;for(let t of H(this,wb,`f`).keys())H(this,W,`f`).has(t)||e++;return Math.min(H(this,Cb,`f`)+e,H(this,Tb,`f`))}get maxSize(){return H(this,Tb,`f`)}get maxAge(){return H(this,Eb,`f`)}entries(){return this.entriesAscending()}forEach(e,t=this){for(let[n,r]of this.entriesAscending())e.call(t,r,n,this)}get[Symbol.toStringTag](){return`QuickLRU`}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.toString()}}}));function Rb(e){if(e.length===0)return[];let t=e.toSorted((e,t)=>e.min-t.min),n=[],r=t[0];for(let e=1;e<t.length;e++){let i=t[e];i.min>r.max+1?(n.push(r),r=i):i.max>r.max&&(r={min:r.min,max:i.max})}return n.push(r),n}var zb=n((()=>{}));function Bb(e){var t=px[e];if(t!==void 0)return t.exports;var n=px[e]={exports:{}};return fx[e](n,n.exports,Bb),n.exports}function Vb(e,t,n,r,i,a){try{let u=G.__wbindgen_add_to_stack_pointer(-16),d=nx(e,G.__wbindgen_export),f=Tx,p=tx(t,G.__wbindgen_export),m=Tx,h=tx(n,G.__wbindgen_export),g=Tx;G.decompress_and_parse_bigwig(u,d,f,p,m,h,g,r,i,a);var o=Xb().getInt32(u+0,!0),s=Xb().getInt32(u+4,!0),c=Xb().getInt32(u+8,!0);if(Xb().getInt32(u+12,!0))throw rx(c);var l=Yb(o,s).slice();return G.__wbindgen_export2(o,s*1,1),l}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Hb(e,t,n,r,i,a,o){try{let d=G.__wbindgen_add_to_stack_pointer(-16),f=nx(e,G.__wbindgen_export),p=Tx,m=tx(t,G.__wbindgen_export),h=Tx,g=tx(n,G.__wbindgen_export),_=Tx;G.decompress_and_parse_summary(d,f,p,m,h,g,_,r,i,a,o);var s=Xb().getInt32(d+0,!0),c=Xb().getInt32(d+4,!0),l=Xb().getInt32(d+8,!0);if(Xb().getInt32(d+12,!0))throw rx(l);var u=Yb(s,c).slice();return G.__wbindgen_export2(s,c*1,1),u}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Ub(e,t){try{let o=G.__wbindgen_add_to_stack_pointer(-16),s=nx(e,G.__wbindgen_export),c=Tx;G.inflate_raw(o,s,c,t);var n=Xb().getInt32(o+0,!0),r=Xb().getInt32(o+4,!0),i=Xb().getInt32(o+8,!0);if(Xb().getInt32(o+12,!0))throw rx(i);var a=Yb(n,r).slice();return G.__wbindgen_export2(n,r*1,1),a}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Wb(e,t,n,r){try{let c=G.__wbindgen_add_to_stack_pointer(-16),l=nx(e,G.__wbindgen_export),u=Tx,d=tx(t,G.__wbindgen_export),f=Tx,p=tx(n,G.__wbindgen_export),m=Tx;G.inflate_raw_batch(c,l,u,d,f,p,m,r);var i=Xb().getInt32(c+0,!0),a=Xb().getInt32(c+4,!0),o=Xb().getInt32(c+8,!0);if(Xb().getInt32(c+12,!0))throw rx(o);var s=Yb(i,a).slice();return G.__wbindgen_export2(i,a*1,1),s}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Gb(e){try{let a=G.__wbindgen_add_to_stack_pointer(-16),o=nx(e,G.__wbindgen_export),s=Tx;G.inflate_raw_unknown_size(a,o,s);var t=Xb().getInt32(a+0,!0),n=Xb().getInt32(a+4,!0),r=Xb().getInt32(a+8,!0);if(Xb().getInt32(a+12,!0))throw rx(r);var i=Yb(t,n).slice();return G.__wbindgen_export2(t,n*1,1),i}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Kb(e,t){return qb(Error(Zb(e,t)))}function qb(e){xx===bx.length&&bx.push(bx.length+1);let t=xx;return xx=bx[t],bx[t]=e,t}function Jb(e){e<1028||(bx[e]=xx,xx=e)}function Yb(e,t){return e>>>=0,$b().subarray(e/1,e/1+t)}function Xb(){return(_x===null||_x.buffer.detached===!0||_x.buffer.detached===void 0&&_x.buffer!==G.memory.buffer)&&(_x=new DataView(G.memory.buffer)),_x}function Zb(e,t){return ix(e>>>0,t)}function Qb(){return(vx===null||vx.byteLength===0)&&(vx=new Uint32Array(G.memory.buffer)),vx}function $b(){return(yx===null||yx.byteLength===0)&&(yx=new Uint8Array(G.memory.buffer)),yx}function ex(e){return bx[e]}function tx(e,t){let n=t(e.length*4,4)>>>0;return Qb().set(e,n/4),Tx=e.length,n}function nx(e,t){let n=t(e.length*1,1)>>>0;return $b().set(e,n/1),Tx=e.length,n}function rx(e){let t=ex(e);return Jb(e),t}function ix(e,t){return wx+=t,wx>=Cx&&(Sx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Sx.decode(),wx=t),Sx.decode($b().subarray(e,e+t))}function ax(e){G=e}async function ox(){return Ex||(Dx||=(async()=>{let e=await(await fetch(hx)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./inflate_wasm_bg.js":mx});return ax(t.exports),Ex=t.exports,Ex})(),Dx)}async function sx(e,t,n,r){await ox();let i=Wb(e,t,n,r),a=new DataView(i.buffer,i.byteOffset,i.byteLength),o=a.getUint32(0,!0),s=4+(o+1)*4,c=Array(o+1);for(let e=0;e<=o;e++)c[e]=a.getUint32(4+e*4,!0);return{data:i.subarray(s),offsets:c}}function cx(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array};let n=4+t*4,r=n+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t)}}function lx(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array};let n=4+t*4,r=n+t*4,i=r+t*4,a=i+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t),minScores:new Float32Array(e.buffer,e.byteOffset+i,t),maxScores:new Float32Array(e.buffer,e.byteOffset+a,t)}}async function ux(e,t,n,r,i,a){return await ox(),cx(Vb(e,t,n,r,i,a))}async function dx(e,t,n,r,i,a,o){return await ox(),lx(Hb(e,t,n,r,i,a,o))}var fx,px,mx,hx,gx,_x,vx,yx,bx,xx,Sx,Cx,wx,Tx,G,Ex,Dx,Ox=n((()=>{fx={},px={},(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,t;Bb.t=function(n,r){if(r&1&&(n=this(n)),r&8||typeof n==`object`&&n&&(r&4&&n.__esModule||r&16&&typeof n.then==`function`))return n;var i=Object.create(null);Bb.r(i);var a={};t||=[null,e({}),e([]),e(e)];for(var o=r&2&&n;(typeof o==`object`||typeof o==`function`)&&!~t.indexOf(o);o=e(o))Object.getOwnPropertyNames(o).forEach(e=>a[e]=()=>n[e]);return a.default=()=>n,Bb.d(i,a),i}})(),Bb.d=(e,t)=>{for(var n in t)Bb.o(t,n)&&!Bb.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},Bb.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Bb.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},mx={},Bb.r(mx),Bb.d(mx,{__wbg_Error_ef53bc310eb298a0:()=>Kb,__wbg_set_wasm:()=>ax,decompress_and_parse_bigwig:()=>Vb,decompress_and_parse_summary:()=>Hb,inflate_raw:()=>Ub,inflate_raw_batch:()=>Wb,inflate_raw_unknown_size:()=>Gb}),hx=`data:application/wasm;base64,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AkH4AXEiAkHQnMAAaiEGIAJB2JzAAGooAgAhAgsgBiAANgIIIAIgADYCDCAAIAY2AgwgACACNgIIDAELIAggAiADaiIAQQNyNgIEIAggAGoiACAAKAIEQQFyNgIECyAIQQhqIgANAQsCQAJAAkACQAJAAkBBACgC4J5AIgAgA08NAAJAQQAoAuSeQCIAIANLDQAgAUEEakGEn8AAIANBr4AEakGAgHxxECsCQCABKAIEIgYNAEEAIQAMCAsgASgCDCEFQQBBACgC8J5AIAEoAggiCWoiADYC8J5AQQAgAEEAKAL0nkAiAiAAIAJLGzYC9J5AAkACQAJAQQAoAuyeQCICRQ0AQcCcwAAhAANAIAYgACgCACIIIAAoAgQiB2pGDQIgACgCCCIADQAMAwsLAkACQEEAKAL8nkAiAEUNACAGIABPDQELQQAgBjYC/J5AC0EAQf8fNgKAn0BBACAFNgLMnEBBACAJNgLEnEBBACAGNgLAnEBBAEHQnMAANgLcnEBBAEHYnMAANgLknEBBAEHQnMAANgLYnEBBAEHgnMAANgLsnEBBAEHYnMAANgLgnEBBAEHonMAANgL0nEBBAEHgnMAANgLonEBBAEHwnMAANgL8nEBBAEHonMAANgLwnEBBAEH4nMAANgKEnUBBAEHwnMAANgL4nEBBAEGAncAANgKMnUBBAEH4nMAANgKAnUBBAEGIncAANgKUnUBBAEGAncAANgKInUBBAEGQncAANgKcnUBBAEGIncAANgKQnUBBAEGQncAANgKYnUBBAEGYncAANgKknUBBAEGYncAANgKgnUBBAEGgncAANgKsnUBBAEGgncAANgKonUBBAEGoncAANgK0nUBBAEGoncAANgKwnUBBAEGwncAANgK8nUBBAEGwncAANgK4nUBBAEG4ncAANgLEnUBBAEG4ncAANgLAnUBBAEHAncAANgLMnUBBAEHAncAANgLInUBBAEHIncAANgLUnUBBAEHIncAANgLQnUBBAEHQncAANgLcnUBBAEHYncAANgLknUBBAEHQncAANgLYnUBBAEHgncAANgLsnUBBAEHYncAANgLgnUBBAEHoncAANgL0nUBBAEHgncAANgLonUBBAEHwncAANgL8nUBBAEHoncAANgLwnUBBAEH4ncAANgKEnkBBAEHwncAANgL4nUBBAEGAnsAANgKM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EGsiASQAIAEgACkCADcCCCABQQhqQdCUwAAgACgCCEEBQQAQGAALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQawALIwEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGoQagALIAACQCABKAIARQ0AIABBiJfAADYCBCAAIAE2AgAPCwALHgEBfwJAIAAoAgAiAkUNACABIAIgACgCBBBTDwsACx8AIAFB04fAAEHMh8AAIAAtAAAiABtBEUEHIAAbEFMLGwEBfxBvIABBBGpBBBBgIgEgADYCACABQQRqCx4BAX8CQCAAKAIAIgFBAUgNACAAKAIEIAFBARBaCwseACAAKAIAIAAoAgRBACgCrJtAIgBBBCAAGxEEAAALIwEBfwJAQcyJwAAQMSIADQBBgInAAEE6QbyJwAAQPAALIAALHwACQCAAQYCAgIB4ckGAgICAeEYNACABIABBARBaCwscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFoLCxcAAkAgAUEJSQ0AIAEgABAODwsgABABCxwBAX8CQCAAKAIAIgFFDQAgACgCBCABQQEQWgsLFQAgAEF8aiIAIAAoAgBBBGpBBBBaCxQAAkAgAEUNACAAIAEQZAALEF0ACxEAIAAgAUEBdEEBciACEDYACxIAAkAgAUUNACAAIAEgAhBaCwsSACAAIAEgAiADIARBACAFEAILFQACQCAARQ0AIAAgACgCqFoRAgALCxoAIABBACkC1JVANwIIIABBACkCzJVANwIACxoAIABBACkCxJVANwIIIABBACkCvJVANwIACxYAIAAoAgAgASACIAAoAgQoAgwRBwALFAAgACgCACABIAAoAgQoAgwRBQALDQAgACABIAIgAxAIDwsUAEEAIAA2AoSbQEEAQQE2AoCbQAsTACAAQYiXwAA2AgQgACABNgIACxAAIAEgACgCACAAKAIEEFMLEAAgASAAKAIAIAAoAgQQCwsLACAAIAEgAhAsDwsKACAAIAEQbhoACw8AIABB7JTAACABIAIQDAsRAEHgl8AAQSNB9JfAABA2AAsPACAAQYSYwAAgASACEAwLCwAgACMAaiQAIwALCQAgACABEEkPCwkAIAAgARAzDwsJACABIAAQPwALDAAgACABKQIANwMACwkAIAEgABBiAAsNACABQZSZwABBBRBTCw0AIAFB4ZrAAEEYEAsLCAAgACABEAALCQAgACgCABBQCwcAIAAQPQALBwAgABBFAAsHACAAECgACwsAQQBBAToAhJ9ACwkAIABBADYCAAsFABBwAAsDAA8LAwAACwuPGwIAQYCAwAAL+RoWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAWZGVjb21wcmVzc2lvbiBmYWlsZWQ6IMAAwAI6IMAAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEyMi9zcmMvZXh0ZXJucmVmLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjIvc3JjL2xpYi5ycwAAAADOAhAACgAAAEAAAAALAAAAzgIQAAoAAABYAAAACwAAAM4CEAAKAAAASQAAABMA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`,gx=Bb.t(hx),_x=null,vx=null,yx=null,bx=Array(1024).fill(void 0),bx.push(void 0,null,!0,!1),xx=bx.length,Sx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Sx.decode(),Cx=2146435072,wx=0,Tx=0,ax(gx),Ex=null,Dx=null}));function kx(e){let t=new Uint32Array(e.length),n=new Uint32Array(e.length);for(let r=0;r<e.length;r++){let i=e[r];t[r]=i.offset,n[r]=i.length}return{inputOffsets:t,inputLengths:n}}async function Ax(e,t,n){let{inputOffsets:r,inputLengths:i}=kx(t);return sx(e,r,i,n)}async function jx(e,t,n,r,i){let{inputOffsets:a,inputLengths:o}=kx(t);return ux(e,a,o,n,r,i)}async function Mx(e,t,n,r,i,a){let{inputOffsets:o,inputLengths:s}=kx(t);return dx(e,o,s,n,r,i,a)}var Nx=n((()=>{Ox()}));function Px(e,t=0){return new DataView(e.buffer,e.byteOffset+t,e.length-t)}function Fx(e,t,n){let r=e.indexOf(0,t),i=r!==-1&&r<t+n?r:t+n;return Lx.decode(e.subarray(t,i))}function Ix(e){e.sort((e,t)=>e.offset-t.offset);let t=[],n,r;for(let i of e)n&&i.offset-r<=2e3?(n.length=i.offset+i.length-n.offset,n.blocks.push(i),r=i.offset+i.length):(n={blocks:[i],length:i.length,offset:i.offset},t.push(n),r=i.offset+i.length);return t}var Lx,Rx=n((()=>{Lx=new TextDecoder(`utf8`)}));function zx(e,t,n,r){return e<r&&t>n}function Bx(e,t){let n=[],r=0,i=Px(e);for(;r<e.byteLength;){let e=i.getUint32(r,!0);r+=4;let a=i.getUint32(r,!0);r+=4;let o=i.getUint32(r,!0);r+=4;let s=i.getUint32(r,!0);r+=4;let c=i.getFloat32(r,!0);r+=4;let l=i.getFloat32(r,!0);r+=4;let u=i.getFloat32(r,!0);r+=8,(!t||e===t.chrId&&zx(a,o,t.start,t.end))&&n.push({start:a,end:o,maxScore:l,minScore:c,summary:!0,score:s?u/s:0})}return n}function Vx(e,t,n){let r=[],i=0,a=Px(e);for(;i<e.byteLength;){let o=i,s=a.getUint32(i,!0);i+=4;let c=a.getInt32(i,!0);i+=4;let l=a.getInt32(i,!0);i+=4;let u=e.indexOf(0,i),d=u===-1?e.length:u,f=Lx.decode(e.subarray(i,d));i=d+1,(!n||s===n.chrId&&zx(c,l,n.start,n.end))&&r.push({start:c,end:l,rest:f,uniqueId:`bb-${t}-${o}`})}return r}function Hx(e,t){let n=Px(e),r=n.getInt32(4,!0),i=n.getUint32(12,!0),a=n.getUint32(16,!0),o=n.getUint8(20),s=n.getUint16(22,!0),c=24,l=[];switch(o){case 1:for(let e=0;e<s;e++){let e=n.getInt32(c,!0);c+=4;let r=n.getInt32(c,!0);c+=4;let i=n.getFloat32(c,!0);c+=4,(!t||zx(e,r,t.start,t.end))&&l.push({start:e,end:r,score:i})}break;case 2:for(let e=0;e<s;e++){let e=n.getInt32(c,!0);c+=4;let r=n.getFloat32(c,!0);c+=4;let i=e+a;(!t||zx(e,i,t.start,t.end))&&l.push({score:r,start:e,end:i})}break;case 3:for(let e=0;e<s;e++){let o=n.getFloat32(c,!0);c+=4;let s=r+e*i,u=s+a;(!t||zx(s,u,t.start,t.end))&&l.push({score:o,start:s,end:u})}break}return l}function Ux(e,t){let n=Px(e),r=n.getInt32(4,!0),i=n.getUint32(12,!0),a=n.getUint32(16,!0),o=n.getUint8(20),s=n.getUint16(22,!0),c=new Int32Array(s),l=new Int32Array(s),u=new Float32Array(s);if(!t){switch(o){case 1:{let e=24;for(let t=0;t<s;t++)c[t]=n.getInt32(e,!0),l[t]=n.getInt32(e+4,!0),u[t]=n.getFloat32(e+8,!0),e+=12;return{starts:c,ends:l,scores:u}}case 2:{let e=24;for(let t=0;t<s;t++){let r=n.getInt32(e,!0);c[t]=r,l[t]=r+a,u[t]=n.getFloat32(e+4,!0),e+=8}return{starts:c,ends:l,scores:u}}case 3:{let e=24;for(let t=0;t<s;t++){let o=r+t*i;c[t]=o,l[t]=o+a,u[t]=n.getFloat32(e,!0),e+=4}return{starts:c,ends:l,scores:u}}}return{starts:c,ends:l,scores:u}}let d=t.start,f=t.end,p=0;switch(o){case 1:{let e=24;for(let t=0;t<s;t++){let t=n.getInt32(e,!0),r=n.getInt32(e+4,!0);t<f&&r>d&&(c[p]=t,l[p]=r,u[p]=n.getFloat32(e+8,!0),p++),e+=12}break}case 2:{let e=24;for(let t=0;t<s;t++){let t=n.getInt32(e,!0),r=t+a;t<f&&r>d&&(c[p]=t,l[p]=r,u[p]=n.getFloat32(e+4,!0),p++),e+=8}break}case 3:{let e=24;for(let t=0;t<s;t++){let o=r+t*i,s=o+a;o<f&&s>d&&(c[p]=o,l[p]=s,u[p]=n.getFloat32(e,!0),p++),e+=4}break}}return p<s?{starts:c.subarray(0,p),ends:l.subarray(0,p),scores:u.subarray(0,p)}:{starts:c,ends:l,scores:u}}function Wx(e,t){let n=Px(e),r=Math.floor(e.byteLength/32),i=new Int32Array(r),a=new Int32Array(r),o=new Float32Array(r),s=new Float32Array(r),c=new Float32Array(r),l=0,u=0;for(;u<e.byteLength;){let e=n.getUint32(u,!0);u+=4;let r=n.getUint32(u,!0);u+=4;let d=n.getUint32(u,!0);u+=4;let f=n.getUint32(u,!0);u+=4;let p=n.getFloat32(u,!0);u+=4;let m=n.getFloat32(u,!0);u+=4;let h=n.getFloat32(u,!0);u+=8,(!t||e===t.chrId&&zx(r,d,t.start,t.end))&&(i[l]=r,a[l]=d,o[l]=f?h/f:0,s[l]=p,c[l]=m,l++)}return l<r?{starts:i.subarray(0,l),ends:a.subarray(0,l),scores:o.subarray(0,l),minScores:s.subarray(0,l),maxScores:c.subarray(0,l)}:{starts:i,ends:a,scores:o,minScores:s,maxScores:c}}function Gx(e,t,n){if(e.length===1)return e[0];let r=new n(t),i=0;for(let t of e)r.set(t,i),i+=t.length;return r}function Kx(e,t,n,r){switch(e){case`summary`:return Bx(t,r);case`bigwig`:return Hx(t,r);case`bigbed`:return Vx(t,n,r);default:return console.warn(`Don't know what to do with ${e}`),[]}}var qx,Jx,Yx=n((()=>{xb(),Lb(),zb(),Nx(),Rx(),qx=610839776,Jx=class{bbi;refsByName;rTreeOffset;uncompressBufSize;blockType;rTreePromise;rTreeNodeCache=new yb({cache:new Ib({maxSize:1e3}),fill:async({length:e,offset:t},n)=>this.bbi.read(e,t,{signal:n})});constructor(e,t,n,r,i){if(this.bbi=e,this.refsByName=t,this.rTreeOffset=n,this.uncompressBufSize=r,this.blockType=i,!(n>=0))throw Error(`invalid rTreeOffset!`)}async _collectBlocks(e,t,n,r){let i=this.refsByName[e];if(i===void 0)return;this.rTreePromise||=this.bbi.read(48,this.rTreeOffset,r).catch(e=>{throw this.rTreePromise=void 0,e});let a=Px(await this.rTreePromise),o=a.getUint32(0,!0);if(o!==qx)throw Error(`invalid cirTree magic: 0x${o.toString(16)} (expected 0x${qx.toString(16)}) at offset ${this.rTreeOffset}, file may be corrupt or unsupported`);let s=4+a.getUint32(4,!0)*32,c=(e,r,a,o)=>(e<i||e===i&&r<=n)&&(a>i||a===i&&o>=t),l=[],u=[this.rTreeOffset+48];for(;u.length>0;){let e=Rb(u.map(e=>({min:e,max:e+s}))),t=[];for(let{min:n,max:i}of e){let e=i-n,a=n,o=await this.rTreeNodeCache.get(`${e}_${a}`,{length:e,offset:a},r?.signal);for(let e of u)if(n<=e&&e<=i){let n=Px(o.subarray(e-a)),r=n.getUint8(0),i=n.getUint16(2,!0);if(r===1||r===0){let e=r===1?32:24,a=4;for(let o=0;o<i;o++){if(c(n.getUint32(a,!0),n.getUint32(a+4,!0),n.getUint32(a+8,!0),n.getUint32(a+12,!0))){let e=Number(n.getBigUint64(a+16,!0));if(r===1){let t=Number(n.getBigUint64(a+24,!0));l.push({offset:e,length:t})}else t.push(e)}a+=e}}}}u=t}return{blocks:l,chrId:i}}async readWigData(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);if(!i)return[];let{blocks:a,chrId:o}=i;return this.readFeatures(a,{...r,request:{chrId:o,start:t,end:n}})}async readWigDataMulti(e,t={}){let n=e.map(()=>[]),r=new Map,i=new Map;for(let n=0;n<e.length;n++){let{refName:a,start:o,end:s}=e[n],c=await this._collectBlocks(a,o,s,t);if(c){let e={chrId:c.chrId,start:o,end:s};for(let t of c.blocks){let a=i.get(t.offset);a?a.push({regionIndex:n,request:e}):(r.set(t.offset,t),i.set(t.offset,[{regionIndex:n,request:e}]))}}}let{blockType:a,uncompressBufSize:o}=this,{signal:s}=t,c=(e,t)=>{let r=i.get(t);if(r)for(let{regionIndex:i,request:o}of r){let r=Kx(a,e,t,o);for(let e of r)n[i].push(e)}};for(let e of Ix([...r.values()])){let t=await this.bbi.read(e.length,e.offset,{signal:s}),n=e.offset,r=e.blocks;if(o>0){let{data:e,offsets:i}=await Ax(t,r.map(e=>({offset:e.offset-n,length:e.length})),o);for(let t=0;t<r.length;t++)c(e.subarray(i[t],i[t+1]),r[t].offset)}else for(let e of r){let r=e.offset-n;c(t.subarray(r,r+e.length),e.offset)}}return n}async readWigDataAsArrays(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);return this.blockType===`summary`?i?this._readSummaryFeaturesAsArrays(i.blocks,{chrId:i.chrId,start:t,end:n},r):{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array,isSummary:!0}:i?this._readBigWigFeaturesAsArrays(i.blocks,{chrId:i.chrId,start:t,end:n},r):{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,isSummary:!1}}async readFeatures(e,t={}){let{blockType:n,uncompressBufSize:r}=this,{signal:i,request:a}=t,o=Ix(e),s=[];for(let e of o){let t=await this.bbi.read(e.length,e.offset,{signal:i}),o=e.offset,c=e.blocks;if(r>0){let{data:e,offsets:i}=await Ax(t,c.map(e=>({offset:e.offset-o,length:e.length})),r);for(let t=0;t<c.length;t++){let r=Kx(n,e.subarray(i[t],i[t+1]),c[t].offset,a);for(let e of r)s.push(e)}}else for(let e of c){let r=e.offset-o,i=Kx(n,t.subarray(r,r+e.length),e.offset,a);for(let e of i)s.push(e)}}return s}async _readBlocksAsArrays(e,t,n,r,i){let a=[];for(let o of Ix(e)){let e=await this.bbi.read(o.length,o.offset,{signal:t}),s=o.blocks.map(e=>({offset:e.offset-o.offset,length:e.length}));if(this.uncompressBufSize>0){let t=await n(e,s);i(t)>0&&a.push(t)}else for(let t of s){let n=r(e.subarray(t.offset,t.offset+t.length));i(n)>0&&a.push(n)}}return a}async _readBigWigFeaturesAsArrays(e,t,n={}){let r=await this._readBlocksAsArrays(e,n.signal,(e,n)=>jx(e,n,this.uncompressBufSize,t.start,t.end),e=>Ux(e,t),e=>e.starts.length),i=r.reduce((e,t)=>e+t.starts.length,0);return{starts:Gx(r.map(e=>e.starts),i,Int32Array),ends:Gx(r.map(e=>e.ends),i,Int32Array),scores:Gx(r.map(e=>e.scores),i,Float32Array),isSummary:!1}}async _readSummaryFeaturesAsArrays(e,t,n={}){let r=await this._readBlocksAsArrays(e,n.signal,(e,n)=>Mx(e,n,this.uncompressBufSize,t.chrId,t.start,t.end),e=>Wx(e,t),e=>e.starts.length),i=r.reduce((e,t)=>e+t.starts.length,0);return{starts:Gx(r.map(e=>e.starts),i,Int32Array),ends:Gx(r.map(e=>e.ends),i,Int32Array),scores:Gx(r.map(e=>e.scores),i,Float32Array),minScores:Gx(r.map(e=>e.minScores),i,Float32Array),maxScores:Gx(r.map(e=>e.maxScores),i,Float32Array),isSummary:!0}}}})),Xx,Zx,Qx,$x=n((()=>{Mg(),Yx(),Rx(),Xx=-2003829722,Zx=-2021002517,Qx=class{bbi;headerP;renameRefSeqs;getHeader(e){return this.headerP||=this._getHeader(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}constructor(e){let{filehandle:t,renameRefSeqs:n=e=>e,path:r,url:i}=e;if(this.renameRefSeqs=n,t)this.bbi=t;else if(i)this.bbi=new Og(i);else if(r)this.bbi=new jg(r);else throw Error(`no file given`)}async _getHeader(e){let t=await this._getMainHeader(e),n=await this._readChromosomeTree(t,e);return{...t,...n}}async _getMainHeader(e,t=2e3){let n=await this.bbi.read(t,0,e),r=Px(n),i=0,a=r.getInt32(i,!0);if(i+=4,a!==Xx&&a!==Zx)throw Error(`not a BigWig/BigBed file`);let o=r.getUint16(i,!0);i+=2;let s=r.getUint16(i,!0);i+=2;let c=Number(r.getBigUint64(i,!0));i+=8;let l=Number(r.getBigUint64(i,!0));i+=8;let u=Number(r.getBigUint64(i,!0));i+=8;let d=r.getUint16(i,!0);i+=2;let f=r.getUint16(i,!0);i+=2;let p=Number(r.getBigUint64(i,!0));i+=8;let m=Number(r.getBigUint64(i,!0));i+=8;let h=r.getUint32(i,!0);i+=4;let g=Number(r.getBigUint64(i,!0));i+=8;let _=[];for(let e=0;e<s;e++){let e=r.getUint32(i,!0);i+=4,i+=4;let t=Number(r.getBigUint64(i,!0));i+=8;let n=Number(r.getBigUint64(i,!0));i+=8,_.push({reductionLevel:e,dataOffset:t,indexOffset:n})}let v=a===Zx?`bigbed`:`bigwig`,y=n.length<t,b=p!==0&&!n.includes(0,p);if(!y&&(p>t||m>t-40||b))return this._getMainHeader(e,t*2);let x;if(m){let e=Px(n,m);x={basesCovered:Number(e.getBigUint64(0,!0)),scoreMin:e.getFloat64(8,!0),scoreMax:e.getFloat64(16,!0),scoreSum:e.getFloat64(24,!0),scoreSumSquares:e.getFloat64(32,!0)}}else throw Error(`no stats`);let S=``;if(p){let e=n.indexOf(0,p),t=e===-1?n.length:e;S=Lx.decode(n.subarray(p,t))}return{zoomLevels:_,magic:a,extHeaderOffset:g,numZoomLevels:s,fieldCount:d,totalSummary:x,definedFieldCount:f,uncompressBufSize:h,asOffset:p,chromosomeTreeOffset:c,totalSummaryOffset:m,unzoomedDataOffset:l,unzoomedIndexOffset:u,fileType:v,version:o,autoSql:S}}async _readChromosomeTree(e,t){let n=[],r={},i=e.chromosomeTreeOffset,a=Px(await this.bbi.read(32,i,t)),o=a.getUint32(8,!0),s=a.getUint32(12,!0),c=async e=>{let i=Px(await this.bbi.read(4,e,t)),a=i.getUint8(0),l=i.getUint16(2,!0);if(a){let i=await this.bbi.read(l*(o+s),e+4,t),a=Px(i),c=0;for(let e=0;e<l;e++){let e=Fx(i,c,o);c+=o;let t=a.getUint32(c,!0);c+=4;let s=a.getUint32(c,!0);c+=4,r[this.renameRefSeqs(e)]=t,n[t]={name:e,id:t,length:s}}}else{let n=Px(await this.bbi.read(l*(o+8),e+4,t)),r=[],i=0;for(let e=0;e<l;e++){i+=o;let e=Number(n.getBigUint64(i,!0));i+=8,r.push(c(e))}await Promise.all(r)}};return await c(i+32),{refsByName:r,refsByNumber:n}}viewCache=new Map;getOrCreateBlockView(e,t,n,r){let i=`${t}_${r}`,a=this.viewCache.get(i);return a||(a=new Jx(this.bbi,e,t,n,r),this.viewCache.set(i,a)),a}async getUnzoomedView(e){let{unzoomedIndexOffset:t,refsByName:n,uncompressBufSize:r,fileType:i}=await this.getHeader(e);return this.getOrCreateBlockView(n,t,r,i)}async _getView(e){let{basesPerSpan:t,scale:n}=e||{},r=t?1/t:n??1;return this.getView(r,e)}async getFeatures(e,t,n,r){return(await this._getView(r)).readWigData(this.renameRefSeqs(e),t,n,r)}async getFeaturesMulti(e,t){return(await this._getView(t)).readWigDataMulti(e.map(e=>({refName:this.renameRefSeqs(e.refName),start:e.start,end:e.end})),t)}async getFeaturesAsArrays(e,t,n,r){return(await this._getView(r)).readWigDataAsArrays(this.renameRefSeqs(e),t,n,r)}}})),eS,tS=n((()=>{$x(),eS=class extends Qx{async getView(e,t){let{zoomLevels:n,refsByName:r,uncompressBufSize:i}=await this.getHeader(t),a=1/e,o=n.length-1;for(let e=o;e>=0;--e){let t=n[e];if(t.reductionLevel<=2*a)return this.getOrCreateBlockView(r,t.indexOffset,i,`summary`)}return this.getUnzoomedView(t)}}}));function nS(e,t){if(t<0)return;let n=0;for(let r=0;r<t;r++){if(n=e.indexOf(` `,n),n===-1)return;n++}let r=e.indexOf(` `,n);return r===-1?e.slice(n):e.slice(n,r)}async function rS(e,t,n,r,i,a,o,s){let c=4+n*(r+i),l=await e.read(c,t,s),u=Px(l),d=u.getInt8(0),f=u.getInt16(2,!0),p=4;if(d===0){let t=[];for(let e=0;e<f;e++){let e=Fx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8,t.push({key:e,offset:n})}let c=0,d=t.length-1,m=-1;for(;c<=d;){let e=Math.floor((c+d)/2);a.localeCompare(t[e].key)>=0?(m=e,c=e+1):d=e-1}let h=t[Math.max(m,0)].offset;return rS(e,h,n,r,i,a,o,s)}else if(d===1){let e=[];for(let t=0;t<f;t++){let t=Fx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8;let i=u.getUint32(p,!0);p+=4,p+=4,e.push({key:t,offset:n,length:i})}let t=0,n=e.length-1;for(;t<=n;){let r=Math.floor((t+n)/2),i=a.localeCompare(e[r].key);if(i===0)return{...e[r],field:o};i<0?n=r-1:t=r+1}return}}var iS,aS=n((()=>{$x(),Rx(),iS=class extends Qx{indicesP;readIndices(e={}){return this.indicesP||=this._readIndices(e).catch(e=>{throw this.indicesP=void 0,e}),this.indicesP}async getView(e,t){return this.getUnzoomedView(t)}async _readIndices(e){let{extHeaderOffset:t}=await this.getHeader(e),n=Px(await this.bbi.read(64,t,e)),r=n.getUint16(2,!0),i=Number(n.getBigUint64(4,!0));if(r===0)return[];let a=20*r,o=await this.bbi.read(a,i,e),s=[];for(let e=0;e<r;e+=1){let t=Px(o,e*20),n=t.getInt16(0,!0),r=t.getInt16(2,!0),i=Number(t.getBigUint64(4,!0)),a=t.getInt16(16,!0);s.push({type:n,fieldcount:r,offset:i,field:a})}return s}async searchExtraIndexBlocks(e,t={}){let n=await this.readIndices(t);if(n.length===0)return[];let r=n.map(async n=>{let{offset:r,field:i}=n,a=Px(await this.bbi.read(32,r,t)),o=a.getInt32(4,!0),s=a.getInt32(8,!0),c=a.getInt32(12,!0);return rS(this.bbi,r+32,o,s,c,e,i,t)});return(await Promise.all(r)).filter(e=>e!==void 0)}async searchExtraIndex(e,t={}){let n=await this.searchExtraIndexBlocks(e,t);if(n.length===0)return[];let r=await this.getUnzoomedView(t);return(await Promise.all(n.map(async e=>(await r.readFeatures([e],t)).map(t=>({...t,field:e.field}))))).flat().filter(t=>{if(!t.rest)return!1;let n=(t.field??0)-3;return nS(t.rest,n)===e})}}}));async function oS(e,t){let n=await e.getHeader(t),r=[];for(let i of Object.values(n.refsByNumber)){let n=await e.getFeaturesAsArrays(i.name,0,i.length,t);!n.isSummary&&n.starts.length>0&&r.push(n)}return r}var sS=n((()=>{})),cS,lS,uS=n((()=>{cS=class{view;i;constructor(e,t){this.view=e,this.i=t}get(e){return this.view.get(this.i,e)}id(){return this.view.id(this.i)}toJSON(){let{view:e,i:t}=this;return{start:e.start(t),end:e.end(t),score:e.score(t),refName:e.refName,source:e.source,uniqueId:e.id(t),summary:e.isSummary,minScore:e.minScore(t),maxScore:e.maxScore(t)}}},lS=class{starts;ends;scores;minScores;maxScores;isSummary;source;refName;constructor(e,t,n){this.starts=e.starts,this.ends=e.ends,this.scores=e.scores,this.isSummary=e.isSummary,this.minScores=e.isSummary?e.minScores:void 0,this.maxScores=e.isSummary?e.maxScores:void 0,this.source=t,this.refName=n}get length(){return this.starts.length}start(e){return this.starts[e]}end(e){return this.ends[e]}score(e){return this.scores[e]}minScore(e){return this.minScores?.[e]}maxScore(e){return this.maxScores?.[e]}id(e){return`${this.source}:${this.refName}:${this.starts[e]}-${this.ends[e]}`}get(e,t){switch(t){case`start`:return this.starts[e];case`end`:return this.ends[e];case`score`:return this.scores[e];case`refName`:return this.refName;case`source`:return this.source;case`minScore`:return this.minScores?.[e];case`maxScore`:return this.maxScores?.[e];case`summary`:return this.isSummary;default:return}}}})),dS=r({ArrayFeatureView:()=>lS,BigBed:()=>iS,BigWig:()=>eS,BigWigFeature:()=>cS,parseBigWig:()=>oS}),fS=n((()=>{pb(),tS(),aS(),sS(),uS()})),pS=class extends xg{#e=[];#t;constructor(e,t){let n={pixelsPerBin:2,channel:`x`,debounce:200,debounceMode:`window`,...e},r=pg(n.channel);if(super(t,r),this.params=vg(t.paramRuntime,n,e=>{e.has(`url`)?this.#n().then(()=>this.reloadLastDomain()):e.has(`pixelsPerBin`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw Error(`No URL provided for BigWigSource`);this.setupDebouncing(this.params),this.#n()}get label(){return`bigWigSource`}#n(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(fS(),dS)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{BigWig:n},{RemoteFile:r}])=>{this.#t=new n({filehandle:new r(ih(pg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.#t.getHeader().then(t=>{this.#e=t.zoomLevels.map(e=>e.reductionLevel).reverse(),this.#e.push(1),this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${pg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async onDomainChanged(e){await this.initializedPromise;let t=this.scaleResolution.getAxisLength()||700,n=gS(e,t,this.#e),r=Math.max(n*t,5e3);this.callIfWindowsChanged(e,r,e=>this.loadInterval(e,n))}async loadInterval(e,t){let n=1/2/t/pg(this.params.pixelsPerBin),r=await this.discretizeAndLoad(e,{load:(e,t)=>this.#t.getFeatures(e.chrom,e.startPos,e.endPos,{scale:n,signal:t}).then(t=>hS(e.chrom,t)),loadBatch:(e,t)=>this.#t.getFeaturesMulti(e.map(e=>({refName:e.chrom,start:e.startPos,end:e.endPos})),{scale:n,signal:t}).then(t=>t.map((t,n)=>hS(e[n].chrom,t)))});r&&this.publishData(r)}};function mS(e){return e?.type==`bigwig`}Gm(mS,pS);function hS(e,t){return t.map(t=>({chrom:e,start:t.start,end:t.end,score:t.score}))}function gS(e,t,n){let r=(e[1]-e[0])/t;return n.find(e=>e<r)??n.at(-1)}var _S=class extends xg{parser;bbi;parseLine;constructor(e,t){let n={channel:`x`,windowSize:1e6,debounce:200,debounceMode:`window`,...e},r=pg(n.channel);if(super(t,r),this.params=vg(t.paramRuntime,n,e=>{e.has(`url`)?this.#e().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw Error(`No URL provided for BigBedSource`);this.setupDebouncing(this.params),this.#e()}get label(){return`bigBedSource`}#e(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(jl(),Al)),Promise.resolve().then(()=>(fS(),dS)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([n,{BigBed:r},{RemoteFile:i}])=>{let a=n.default;this.bbi=new r({filehandle:new i(ih(pg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.bbi.getHeader().then(async t=>{this.parser=new a({autoSql:t.autoSql});try{let e=vS(this.parser);this.parseLine=(t,n)=>e(t,n.start,n.end,n.rest)}catch{this.parseLine=(e,t)=>this.parser.parseLine(`${e}\t${t.start}\t${t.end}\t${t.rest}`)}this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${pg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.bbi.getFeatures(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>this.parseLine(e.chrom,t))));t&&this.publishData(t)}};function vS(e){let t=e.autoSql.fields.filter(e=>e.type).slice(3),n=0,r=``,i=0,a={};function o(){let e=r.indexOf(` `,n);e<0&&(e=i);let t=r.substring(n,e);return n=e+1,t}function s(){let e=0,t=r.charCodeAt(n),a=1;t===45&&(a=-1,n++,t=r.charCodeAt(n));do{if(t===9){n++;break}e=e*10+t-48,t=r.charCodeAt(++n)}while(n<i);return e*a}let c=t.map(e=>`${JSON.stringify(e.name)}: ${e.isNumeric?`0`:`emptyString`}`),l=Function(`
|
|
195
195
|
const emptyString = "";
|
|
196
196
|
return function makeTemplate(chrom, chromStart, chromEnd) {
|
|
197
197
|
return {
|
|
@@ -201,16 +201,17 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
201
201
|
${c.join(`,
|
|
202
202
|
`)}
|
|
203
203
|
}
|
|
204
|
-
};`)(),u=
|
|
204
|
+
};`)(),u=bS(t.map(e=>{let t=e.type,n=JSON.stringify(e.name);if([`ubyte`,`int`,`uint`].includes(t))return`d[${n}] = parseInt();`;if(e.isNumeric)return`d[${n}] = Number(parseString());`;if([`char`,`string`,`lstring`].includes(t))return`d[${n}] = parseString();`;throw Error(`Unsupported type: `+t)}),50).map((e,t)=>Function(`parseInt`,`parseString`,`return function parseFieldChunk${t}(d) {
|
|
205
205
|
${e.join(`
|
|
206
206
|
`)}
|
|
207
|
-
}`)(s,o));function d(e){r=e,i=e.length,n=0}function f(e,t,n,r){d(r),a=l(e,t,n);for(let e of u)e(a);return a}return f}function dS(e){return e?.type==`bigbed`}Km(dS,lS);function fS(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,r*t+t))}var pS,mS=n((()=>{pS=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize===void 0?this.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}}));function hS(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*_S+(n>>>0)}var gS,_S,vS=n((()=>{gS=65536,_S=gS*gS}));function yS(e={}){return`aborted`in e?{signal:e}:e}function bS(e,t){let n=e.length;if(n===0)return e;let r;if(t){let i=t.blockPosition,a=t.dataPosition;r=[];for(let t=0;t<n;t++){let n=e[t],o=n.maxv;(o.blockPosition-i||o.dataPosition-a)>0&&r.push(n)}if(r.length===0)return r}else r=e;r.sort((e,t)=>{let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});let i=[],a=r[0];i.push(a);let o=a.minv.blockPosition,s=a.maxv.blockPosition;for(let e=1;e<r.length;e++){let t=r[e],n=t.minv.blockPosition,c=t.maxv.blockPosition;if(n-s<65e3&&c-o<5e6){let e=t.maxv,n=a.maxv;(c-s||e.dataPosition-n.dataPosition)>0&&(a.maxv=e,s=c)}else i.push(t),a=t,o=n,s=c}return i}function xS(e,t){return{lineCount:hS(e,t)}}function SS(e,t){return e?e.compareTo(t)>0?t:e:t}function CS(e,t=e=>e){let n=0,r=0,i=[],a={};for(let o=0;o<e.length;o+=1)if(!e[o]){if(r<o){let s=``;for(let t=r;t<o;t++)s+=String.fromCharCode(e[t]);s=t(s),i[n]=s,a[s]=n}r=o+1,n+=1}return{refNameToId:a,refIdToName:i}}function wS(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function TS(e,t,n){return!!((e&t)!==t||e&n)}function ES(e,t){return t===`*`?e===void 0:`${e}`!=`${t}`}function DS(e){if(!e)return``;let{flagInclude:t=0,flagExclude:n=0,tagFilter:r}=e;return`:f${t}x${n}${r?`:${r.tag}=${r.value??`*`}`:``}`}var OS=n((()=>{vS()})),kS,AS=n((()=>{OS(),kS=class{constructor({filehandle:e,renameRefSeq:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async estimatedBytesForRegions(e,t){let n=bS((await Promise.all(e.map(e=>this.blocksForRange(e.refId,e.start,e.end,t)))).flat()),r=0;for(let e of n)r+=e.fetchedSize();return r}}}));function jS(e,t=0,n=!1){if(n)throw Error(`big-endian virtual file offsets not implemented`);return new MS(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var MS,NS=n((()=>{MS=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}}));function PS(e,t){return e-e%t}function FS(e,t){return e-e%t+t}function IS(e,t){return--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var LS,RS,zS=n((()=>{Fb(),mS(),AS(),OS(),NS(),LS=21578050,RS=class extends kS{async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async _parse(e){let t=await this.filehandle.readFile(),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==LS)throw Error(`Not a BAI file`);let r=n.getInt32(4,!0),i=((1<<18)-1)/7,a=8,o,s=[];for(let e=0;e<r;e++){s.push(a);let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t+=1){let e=n.getUint32(a,!0);if(a+=4,e===i+1)a+=4,a+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t++)a+=8,a+=8}}let r=n.getInt32(a,!0);a+=4;let c=Array(r);for(let e=0;e<r;e++){let n=jS(t,a);a+=8,o=SS(o,n),c[e]=n}}let c=new Pb({maxSize:5});function l(e){let r=s[e];if(r===void 0)return;let a=n.getInt32(r,!0),c;r+=4;let l={};for(let e=0;e<a;e+=1){let e=n.getUint32(r,!0);if(r+=4,e===i+1)r+=4,c=xS(t,r+16),r+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n++){let i=jS(t,r);r+=8;let s=jS(t,r);r+=8,o=SS(o,i),a[n]=new pS(i,s,e)}l[e]=a}}let u=n.getInt32(r,!0);r+=4;let d=Array(u);for(let e=0;e<u;e++){let n=jS(t,r);r+=8,o=SS(o,n),d[e]=n}return{binIndex:l,linearIndex:d,stats:c}}return{bai:!0,firstDataLine:o,maxBlockSize:65536,indices:e=>{if(!c.has(e)){let t=l(e);return t&&c.set(e,t),t}return c.get(e)},refCount:r}}async indexCov(e,t,n,r){let i=16384,a=t!==void 0,o=(await this.parse(r)).indices(e);if(!o)return[];let{linearIndex:s,stats:c}=o;if(s.length===0)return[];let l=n===void 0?(s.length-1)*i:FS(n,i),u=t===void 0?0:PS(t,i),d=a?Array((l-u)/i):Array(s.length-1),f=s[s.length-1].blockPosition;if(l>(s.length-1)*i)throw Error(`query outside of range of linear index`);let p=s[u/i].blockPosition;for(let e=u/i,t=0;e<l/i;e++,t++)d[t]={score:s[e+1].blockPosition-p,start:e*i,end:e*i+i},p=s[e+1].blockPosition;return d.map(e=>({...e,score:e.score*(c?.lineCount||0)/f}))}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r);if(!i)return[];let a=i.indices(e);if(!a)return[];let o=IS(t,n),s=[],{binIndex:c}=a;for(let[e,t]of o)for(let n=e;n<=t;n++){let e=c[n];if(e)for(let t=0,n=e.length;t<n;t++)s.push(e[t])}let{linearIndex:l}=a,u=l.length,d=l[Math.min(t>>14,u-1)];return bS(s,d)}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),BS,VS,HS=n((()=>{BS=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],typeof Int32Array<`u`&&(BS=new Int32Array(BS)),VS=(e,t)=>{let n=t===0?0:~~t^-1;for(let t=0;t<e.length;t++)n=BS[(n^e[t])&255]^n>>>8;return n^-1}}));function US(e,t){return e*2**t}function WS(e,t){return Math.floor(e/2**t)}var GS,KS,qS,JS=n((()=>{Jy(),Fb(),mS(),AS(),OS(),NS(),GS=21582659,KS=38359875,qS=class extends kS{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async indexCov(){return[]}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getUint32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a={0:`generic`,1:`SAM`,2:`VCF`}[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):``,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0);return{columnNumbers:o,coordinateType:i,metaValue:s,metaChar:c,skipLines:l,format:a,formatFlags:r,...CS(e.subarray(t+28,t+28+u),this.renameRefSeq)}}async _parse(e){let t=await By(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r,i=n.getUint32(0,!0);if(i===GS)r=1;else if(i===KS)r=2;else throw Error(`Not a CSI file ${i}`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let a=this.maxBinNumber,o=n.getInt32(12,!0),s=o>=30?this.parseAuxData(t,16):void 0,c=n.getInt32(16+o,!0),l=16+o+4,u,d=[];for(let e=0;e<c;e++){d.push(l);let e=n.getInt32(l,!0);l+=4;for(let r=0;r<e;r++){let e=n.getUint32(l,!0);if(l+=4,e>this.maxBinNumber)l+=44;else{l+=8;let e=n.getInt32(l,!0);l+=4;for(let n=0;n<e;n+=1){let e=jS(t,l);l+=8,l+=8,u=SS(u,e)}}}}let f=new Pb({maxSize:5});function p(e){let r=d[e];if(r===void 0)return;let i=n.getInt32(r,!0);r+=4;let o={},s;for(let e=0;e<i;e++){let e=n.getUint32(r,!0);if(r+=4,e>a)s=xS(t,r+28),r+=44;else{u=SS(u,jS(t,r)),r+=8;let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n+=1){let i=jS(t,r);r+=8;let o=jS(t,r);r+=8,a[n]=new pS(i,o,e)}o[e]=a}}return{binIndex:o,stats:s}}return{csiVersion:r,firstDataLine:u,indices:e=>{if(!f.has(e)){let t=p(e);return t&&f.set(e,t),t}return f.get(e)},refCount:c,csi:!0,maxBlockSize:65536,...s}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=(await this.parse(r)).indices(e);if(!i)return[];let a=this.reg2bins(t,n);if(a.length===0)return[];let o=[],{binIndex:s}=i;for(let[e,t]of a)for(let n=e;n<=t;n++){let e=s[n];if(e)for(let t=0,n=e.length;t<n;t++)o.push(e[t])}return bS(o,new MS(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=US(1,n*3),n+=1){let n=r+WS(e,i),o=r+WS(t,i);if(o-n+a.length>this.maxBinNumber)throw Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,o])}return a}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),YS,XS=n((()=>{YS=class{read(){throw Error(`never called`)}stat(){throw Error(`never called`)}readFile(){throw Error(`never called`)}close(){throw Error(`never called`)}}})),ZS=n((()=>{})),QS,$S=n((()=>{QS={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048}})),eC,tC,nC,rC,iC,aC=n((()=>{ZS(),$S(),eC=`=ACMGRSVTWYHKDBN`.split(``),tC=`F F .F R .R F .R R .F2F1.F2R1.R2F1.R2R1.F1F2.F1R2.R1F2.R1R2.F2F1.F2R1.R2F1.R2R1.F F .R F .F R .R R .F1F2.R1F2.F1R2.R1R2.F2F1.R2F1.F2R1.R2R1.F1F2.R1F2.F1R2.R1R2`.split(`.`),nC=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],rC=461,iC=class{constructor(e){this.bytes=e.bytes,this.fileOffset=e.fileOffset,this._dataView=new DataView(this.bytes.byteArray.buffer)}get byteArray(){return this.bytes.byteArray}get flags(){return this._cachedFlags===void 0&&(this._cachedFlags=(this._dataView.getInt32(this.bytes.start+16,!0)&4294901760)>>16),this._cachedFlags}get ref_id(){return this._cachedRefId===void 0&&(this._cachedRefId=this._dataView.getInt32(this.bytes.start+4,!0)),this._cachedRefId}get start(){return this._cachedStart===void 0&&(this._cachedStart=this._dataView.getInt32(this.bytes.start+8,!0)),this._cachedStart}get end(){return this._cachedEnd===void 0&&(this._cachedEnd=this.start+this.length_on_ref),this._cachedEnd}get mq(){let e=(this.bin_mq_nl&65280)>>8;return e===255?void 0:e}get score(){return this.mq}get qual(){if(this.isSegmentUnmapped())return null;{let e=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes;return this.byteArray.subarray(e,e+this.seq_length)}}get strand(){return this.isReverseComplemented()?-1:1}get b0(){return this.bytes.start+36}get tagsStart(){return this._cachedTagsStart===void 0&&(this._cachedTagsStart=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes+this.seq_length),this._cachedTagsStart}get name(){let e=this.read_name_length-1,t=this.b0,n=this.byteArray,r=Array(e);for(let i=0;i<e;i++)r[i]=n[t+i];return String.fromCharCode(...r)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){let e=this.getTagRaw(`MD`);this._cachedNUMERIC_MD=e instanceof Uint8Array?e:null}return this._cachedNUMERIC_MD===null?void 0:this._cachedNUMERIC_MD}get tags(){return this._cachedTags===void 0&&(this._cachedTags=this._computeTags()),this._cachedTags}getTag(e){return this._cachedTags===void 0?this._findTag(e,!1):this._cachedTags[e]}getTagRaw(e){return this._findTag(e,!0)}_findTag(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),i=this.tagsStart,a=this.bytes.end,o=this.byteArray;for(;i<a;){let e=o[i],s=o[i+1],c=o[i+2];i+=3;let l=e===n&&s===r;switch(c){case 65:if(l)return String.fromCharCode(o[i]);i+=1;break;case 105:if(l)return this._dataView.getInt32(i,!0);i+=4;break;case 73:if(l)return this._dataView.getUint32(i,!0);i+=4;break;case 99:if(l)return this._dataView.getInt8(i);i+=1;break;case 67:if(l)return this._dataView.getUint8(i);i+=1;break;case 115:if(l)return this._dataView.getInt16(i,!0);i+=2;break;case 83:if(l)return this._dataView.getUint16(i,!0);i+=2;break;case 102:if(l)return this._dataView.getFloat32(i,!0);i+=4;break;case 90:case 72:if(l){let e=i;for(;i<a&&o[i]!==0;)i++;if(t)return o.subarray(e,i);let n=[];for(let t=e;t<i;t++)n.push(String.fromCharCode(o[t]));return n.join(``)}for(;i<=a&&o[i++]!==0;);break;case 66:{let e=o[i++],t=this._dataView.getInt32(i,!0);i+=4;let n=o.byteOffset+i;if(l){if(e===105){if(n%4==0)return new Int32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt32(i+n*4,!0);return e}else if(e===73){if(n%4==0)return new Uint32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint32(i+n*4,!0);return e}else if(e===115){if(n%2==0)return new Int16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt16(i+n*2,!0);return e}else if(e===83){if(n%2==0)return new Uint16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint16(i+n*2,!0);return e}else if(e===99)return new Int8Array(o.buffer,n,t);else if(e===67)return new Uint8Array(o.buffer,n,t);else if(e===102){if(n%4==0)return new Float32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getFloat32(i+n*4,!0);return e}}e===105||e===73||e===102?i+=t<<2:e===115||e===83?i+=t<<1:(e===99||e===67)&&(i+=t);break}}}}_computeTags(){let e=this.tagsStart,t=this.bytes.end,n=this.byteArray,r={};for(;e<t;){let i=String.fromCharCode(n[e],n[e+1]),a=n[e+2];switch(e+=3,a){case 65:r[i]=String.fromCharCode(n[e]),e+=1;break;case 105:r[i]=this._dataView.getInt32(e,!0),e+=4;break;case 73:r[i]=this._dataView.getUint32(e,!0),e+=4;break;case 99:r[i]=this._dataView.getInt8(e),e+=1;break;case 67:r[i]=this._dataView.getUint8(e),e+=1;break;case 115:r[i]=this._dataView.getInt16(e,!0),e+=2;break;case 83:r[i]=this._dataView.getUint16(e,!0),e+=2;break;case 102:r[i]=this._dataView.getFloat32(e,!0),e+=4;break;case 90:case 72:{let a=[];for(;e<=t;){let t=n[e++];if(t!==0)a.push(String.fromCharCode(t));else break}r[i]=a.join(``);break}case 66:{let t=n[e++],a=this._dataView.getInt32(e,!0);e+=4;let o=n.byteOffset+e;if(t===105){if(o%4==0)r[i]=new Int32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===73){if(o%4==0)r[i]=new Uint32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===115){if(o%2==0)r[i]=new Int16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===83){if(o%2==0)r[i]=new Uint16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===99)r[i]=new Int8Array(n.buffer,o,a),e+=a;else if(t===67)r[i]=new Uint8Array(n.buffer,o,a),e+=a;else if(t===102){if(o%4==0)r[i]=new Float32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getFloat32(e+n*4,!0);r[i]=t}e+=a<<2}break}default:console.error(`Unknown BAM tag type`,a);break}}return r}isPaired(){return!!(this.flags&QS.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&QS.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&QS.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&QS.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&QS.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&QS.BAM_FMREVERSE)}isRead1(){return!!(this.flags&QS.BAM_FREAD1)}isRead2(){return!!(this.flags&QS.BAM_FREAD2)}isSecondary(){return!!(this.flags&QS.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&QS.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&QS.BAM_FDUP)}isSupplementary(){return!!(this.flags&QS.BAM_FSUPPLEMENTARY)}get cigarAndLength(){return this._cachedCigarAndLength===void 0&&(this._cachedCigarAndLength=this._computeCigarAndLength()),this._cachedCigarAndLength}_computeCigarAndLength(){if(this.isSegmentUnmapped())return{length_on_ref:0,NUMERIC_CIGAR:new Uint32Array};let e=this.num_cigar_ops,t=this.b0+this.read_name_length,n=this._dataView.getInt32(t,!0),r=n>>4;if((n&15)==4&&r===this.seq_length){t+=4;let e=this._dataView.getInt32(t,!0),n=e>>4;return(e&15)!=3&&console.warn(`CG tag with no N tag`),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:n}}let i=this.byteArray.byteOffset+t;if(i%4==0&&e>50){let t=new Uint32Array(this.byteArray.buffer,i,e),n=0;for(let r=0;r<e;++r){let e=t[r];n+=(e>>4)*(rC>>(e&15)&1)}return{NUMERIC_CIGAR:t,length_on_ref:n}}let a=Array(e),o=0;for(let n=0;n<e;++n){let e=this._dataView.getInt32(t+n*4,!0)|0;a[n]=e,o+=(e>>4)*(rC>>(e&15)&1)}return{NUMERIC_CIGAR:a,length_on_ref:o}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){let e=this.NUMERIC_CIGAR,t=``;for(let n=0,r=e.length;n<r;n++){let r=e[n],i=r>>4,a=nC[r&15];t+=i+String.fromCharCode(a)}return t}get num_cigar_ops(){return this.flag_nc&65535}get num_cigar_bytes(){return this.num_cigar_ops<<2}get read_name_length(){return this.bin_mq_nl&255}get num_seq_bytes(){return this.seq_length+1>>1}get NUMERIC_SEQ(){let e=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(e,e+this.num_seq_bytes)}get seq(){let e=this.NUMERIC_SEQ,t=this.seq_length,n=Array(t),r=0,i=t>>1;for(let t=0;t<i;++t){let i=e[t];n[r++]=eC[(i&240)>>4],n[r++]=eC[i&15]}return r<t&&(n[r]=eC[(e[i]&240)>>4]),n.join(``)}get pair_orientation(){let e=this.flags;if(!(e&12||this.ref_id!==this.next_refid))return tC[e>>4&15|(this.template_length>0?16:0)]}get bin_mq_nl(){return this._dataView.getInt32(this.bytes.start+12,!0)}get flag_nc(){return this._dataView.getInt32(this.bytes.start+16,!0)}get seq_length(){return this._dataView.getInt32(this.bytes.start+20,!0)}get next_refid(){return this._dataView.getInt32(this.bytes.start+24,!0)}get next_pos(){return this._dataView.getInt32(this.bytes.start+28,!0)}get template_length(){return this._dataView.getInt32(this.bytes.start+32,!0)}seqAt(e){if(e<this.seq_length){let t=e>>1,n=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+t];return e%2==0?eC[(n&240)>>4]:eC[n&15]}else return}toJSON(){let e={};for(let t of Object.keys(this))t.startsWith(`_`)||t===`bytes`||(e[t]=this[t]);return e}}}));function oC(e){let t=e.split(/\r?\n/),n=[];for(let e of t){let[t,...r]=e.split(/\t/);t&&n.push({tag:t.slice(1),data:r.map(e=>{let t=e.indexOf(`:`);return{tag:e.slice(0,t),value:e.slice(t+1)}})})}return n}var sC=n((()=>{})),cC,lC,uC=n((()=>{Jy(),Fb(),HS(),jg(),zS(),JS(),XS(),aC(),sC(),OS(),cC=65536,lC=class{constructor({bamFilehandle:e,bamPath:t,bamUrl:n,baiPath:r,baiFilehandle:i,baiUrl:a,csiPath:o,csiFilehandle:s,csiUrl:c,htsget:l,renameRefSeqs:u=e=>e,recordClass:d}){if(this.htsget=!1,this.chunkFeatureCache=new Pb({maxSize:100}),this.renameRefSeq=u,this.RecordClass=d??iC,e)this.bam=e;else if(t)this.bam=new Ag(t);else if(n)this.bam=new Dg(n);else if(l)this.htsget=!0,this.bam=new YS;else throw Error(`unable to initialize bam`);if(s)this.index=new qS({filehandle:s});else if(o)this.index=new qS({filehandle:new Ag(o)});else if(c)this.index=new qS({filehandle:new Dg(c)});else if(i)this.index=new RS({filehandle:i});else if(r)this.index=new RS({filehandle:new Ag(r)});else if(a)this.index=new RS({filehandle:new Dg(a)});else if(t)this.index=new RS({filehandle:new Ag(`${t}.bai`)});else if(n)this.index=new RS({filehandle:new Dg(`${n}.bai`)});else if(l)this.htsget=!0;else throw Error(`unable to infer index format`)}async getHeaderPre(e){let t=yS(e);if(!this.index)return;let n=await this.index.parse(t),r=n.firstDataLine===void 0?void 0:n.firstDataLine.blockPosition+cC,i=await By(r===void 0?await this.bam.readFile():await this.bam.read(r,0)),a=new DataView(i.buffer);if(a.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let o=a.getInt32(4,!0);this.header=new TextDecoder(`utf8`).decode(i.subarray(8,8+o));let s=o+8;for(let e=0;e<5;e++){if(this._hasEnoughRefSeqData(i,s)){let{chrToIndex:e,indexToChr:t}=this._parseRefSeqs(i,s);return this.chrToIndex=e,this.indexToChr=t,oC(this.header)}if(r===void 0)throw Error(`Insufficient data for reference sequences in ${i.length} bytes`);r*=2,i=await By(await this.bam.read(r,0))}throw Error(`Insufficient data for reference sequences after 5 retries`)}getHeader(e){return this.headerP||=this.getHeaderPre(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}async getHeaderText(e={}){return await this.getHeader(e),this.header}_hasEnoughRefSeqData(e,t){if(t+4>e.length)return!1;let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4;for(let t=0;t<r;t+=1){if(i+8>e.length)return!1;let t=n.getInt32(i,!0);i=i+8+t}return!0}_parseRefSeqs(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4,a={},o=[],s=new TextDecoder(`utf8`);for(let t=0;t<r;t+=1){let r=n.getInt32(i,!0),c=this.renameRefSeq(s.decode(e.subarray(i+4,i+4+r-1))),l=n.getInt32(i+r+4,!0);a[c]=t,o.push({refName:c,length:l}),i=i+8+r}return{chrToIndex:a,indexToChr:o}}async getRecordsForRange(e,t,n,r){await this.getHeader(r);let i=this.chrToIndex?.[e];if(i===void 0||!this.index)return[];let a=await this.index.blocksForRange(i,t-1,n,r);return this._fetchChunkFeaturesDirect(a,i,t,n,r)}chunkCacheKey(e,t){let{minv:n,maxv:r}=e;return`${n.blockPosition}:${n.dataPosition}-${r.blockPosition}:${r.dataPosition}${DS(t)}`}blocksOverlap(e,t,n,r){return e<=r&&t>=n}evictOverlappingChunks(e,t){for(let[n,r]of this.chunkFeatureCache)this.blocksOverlap(e,t,r.minBlock,r.maxBlock)&&this.chunkFeatureCache.delete(n)}async _fetchChunkFeaturesDirect(e,t,n,r,i={}){let{viewAsPairs:a,filterBy:o}=i,{flagInclude:s=0,flagExclude:c=0,tagFilter:l}=o||{},u=[];for(let a=0,d=e.length;a<d;a++){let d=e[a],f=this.chunkCacheKey(d,o),p=d.minv.blockPosition,m=d.maxv.blockPosition,h,g=this.chunkFeatureCache.get(f);if(g)h=g.features;else{this.evictOverlappingChunks(p,m);let{data:e,cpositions:t,dpositions:n}=await this._readChunk({chunk:d,opts:i}),r=await this.readBamFeatures(e,t,n,d);if(o){h=[];for(let e=0,t=r.length;e<t;e++){let t=r[e];TS(t.flags,s,c)||l&&ES(t.tags[l.tag],l.value)||h.push(t)}}else h=r;this.chunkFeatureCache.set(f,{minBlock:p,maxBlock:m,features:h})}let _=!1;for(let e=0,i=h.length;e<i;e++){let i=h[e];if(i.ref_id===t)if(i.start>=r){_=!0;break}else i.end>=n&&u.push(i)}if(_)break}if(a){let e=await this.fetchPairs(t,u,i);for(let t=0,n=e.length;t<n;t++)u.push(e[t])}return u}async fetchPairs(e,t,n){let{pairAcrossChr:r,maxInsertSize:i=2e5}=n,a={},o={};for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.name;a[r]=(a[r]||0)+1,o[n.fileOffset]=1}let s=[];for(let o=0,c=t.length;o<c;o++){let c=t[o],l=c.name;this.index&&a[l]===1&&(r||c.next_refid===e&&Math.abs(c.start-c.next_pos)<i)&&s.push(this.index.blocksForRange(c.next_refid,c.next_pos,c.next_pos+1,n))}let c=new Map,l=await Promise.all(s);for(let e=0,t=l.length;e<t;e++){let t=l[e];for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.toString();c.has(r)||c.set(r,n)}}return(await Promise.all([...c.values()].map(async e=>{let{data:t,cpositions:r,dpositions:i,chunk:s}=await this._readChunk({chunk:e,opts:n}),c=[],l=await this.readBamFeatures(t,r,i,s);for(let e=0,t=l.length;e<t;e++){let t=l[e];a[t.name]===1&&!o[t.fileOffset]&&c.push(t)}return c}))).flat()}async _readChunk({chunk:e,opts:t}){let{buffer:n,cpositions:r,dpositions:i}=await Vy(await this.bam.read(e.fetchedSize(),e.minv.blockPosition,t),e);return{data:n,cpositions:r,dpositions:i,chunk:e}}async readBamFeatures(e,t,n,r){let i=0,a=[],o=0,s=new DataView(e.buffer),c=n.length>0,l=t.length>0;for(;i+4<e.length;){let u=s.getInt32(i,!0),d=i+4+u-1;if(c){for(;i+r.minv.dataPosition>=n[o++];);o--}if(d<e.length){let s=new this.RecordClass({bytes:{byteArray:e,start:i,end:d},fileOffset:l?t[o]*256+(i-n[o])+r.minv.dataPosition+1:VS(e.subarray(i,d))>>>0});a.push(s)}i=d+1}return a}async hasRefSeq(e){let t=this.chrToIndex?.[e];return t===void 0?!1:this.index?.hasRefSeq(t)}async lineCount(e){let t=this.chrToIndex?.[e];return t===void 0||!this.index?0:this.index.lineCount(t)}async indexCov(e,t,n){if(!this.index)return[];await this.index.parse();let r=this.chrToIndex?.[e];return r===void 0?[]:this.index.indexCov(r,t,n)}async blocksForRange(e,t,n,r){if(!this.index)return[];await this.index.parse();let i=this.chrToIndex?.[e];return i===void 0?[]:this.index.blocksForRange(i,t,n,r)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(e,t){if(!this.index)return 0;if(await this.getHeader(t),!this.chrToIndex)throw Error(`Header not yet parsed`);let n=e.flatMap(e=>{let t=this.chrToIndex[e.refName];return t===void 0?[]:[{refId:t,start:e.start,end:e.end}]});return this.index.estimatedBytesForRegions(n,t)}}}));async function dC(e,t){let n=await Promise.all(e.map(async e=>{let{url:n,headers:r}=e;if(n.startsWith(`data:`)){let e=await fetch(n);if(!e.ok)throw Error(`failed to decode base64`);let t=await e.arrayBuffer();return new Uint8Array(t)}else{let{referer:e,...i}=r,a=await fetch(n,{...t,headers:{...t?.headers,...i}});if(!a.ok)throw Error(`HTTP ${a.status} fetching ${n}: ${await a.text()}`);return new Uint8Array(await a.arrayBuffer())}}));return wS(await Promise.all(n.map(e=>By(e))))}var fC,pC=n((()=>{Jy(),uC(),sC(),OS(),fC=class extends lC{constructor(e){super({htsget:!0,recordClass:e.recordClass}),this.baseUrl=e.baseUrl,this.trackId=e.trackId}async getRecordsForRange(e,t,n,r){let i=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${e}&start=${t}&end=${n}&format=BAM`,a=this.chrToIndex?.[e];if(a===void 0)return[];let o=await fetch(i,{...r});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${i}: ${await o.text()}`);let s=await dC((await o.json()).htsget.urls.slice(1),r),c=await this.readBamFeatures(s,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),l=[];for(let e=0,r=c.length;e<r;e++){let r=c[e];if(r.ref_id===a){if(r.start>=n)break;r.end>=t&&l.push(r)}}return l}async getHeader(e={}){let t=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,n=await fetch(t,e);if(!n.ok)throw Error(`HTTP ${n.status} fetching ${t}: ${await n.text()}`);let r=await dC((await n.json()).htsget.urls,e),i=new DataView(r.buffer);if(i.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let a=i.getInt32(4,!0),o=oC(new TextDecoder(`utf8`).decode(r.subarray(8,8+a))),s=[],c={},l=o.filter(e=>e.tag===`SQ`);for(let[e,t]of l.entries()){let n=``,r=0;for(let e of t.data)e.tag===`SN`?n=e.value:e.tag===`LN`&&(r=+e.value);c[n]=e,s[e]={refName:n,length:r}}return this.chrToIndex=c,this.indexToChr=s,o}}})),mC=r({BAI:()=>RS,BamFile:()=>lC,BamRecord:()=>iC,CSI:()=>qS,HtsgetFile:()=>fC}),hC=n((()=>{zS(),uC(),JS(),aC(),pC()})),gC=class extends Sg{#e;chrPrefixFixer=e=>e;constructor(e,t){let n={channel:`x`,windowSize:2e4,debounce:200,debounceMode:`domain`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for BamSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(hC(),mC)),Promise.resolve().then(()=>(jg(),kg))]).then(([{BamFile:t},{RemoteFile:n}])=>{let r=e=>new n(ah(e,this.view.getBaseUrl()));this.#e=new t({bamFilehandle:r(this.params.url),baiFilehandle:r(this.params.indexUrl??this.params.url+`.bai`)}),this.#e.getHeader().then(t=>{let n=this.genome.hasChrPrefix(),r=this.#e.indexToChr?.[0]?.refName.startsWith(`chr`);n&&!r?this.chrPrefixFixer=e=>e.replace(`chr`,``):!n&&r&&(this.chrPrefixFixer=e=>`chr`+e),e()})})})}get label(){return`bamSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.#e.getRecordsForRange(this.chrPrefixFixer(e.chrom),e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,name:t.name,cigar:t.CIGAR,mapq:t.mq,strand:t.strand===1?`+`:`-`}))));t&&this.publishData(t)}};function _C(e){return e?.type==`bam`}Km(_C,gC);var vC,yC=n((()=>{vC=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize===void 0?this.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}})),bC,xC=n((()=>{bC=class{constructor({filehandle:e,renameRefSeqs:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async getMetadata(e={}){let{indices:t,...n}=await this.parse(e);return n}_findFirstData(e,t){return e?e.compareTo(t)>0?t:e:t}async parse(e={}){return this.parseP||=this._parse(e).catch(e=>{throw this.parseP=void 0,e}),this.parseP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices[e]?.binIndex}_parseNameBytes(e){let t=0,n=0,r=[],i={},a=new TextDecoder(`utf8`);for(let o=0;o<e.length;o+=1)if(!e[o]){if(n<o){let s=this.renameRefSeq(a.decode(e.subarray(n,o)));r[t]=s,i[s]=t}n=o+1,t+=1}return{refNameToId:i,refIdToName:r}}}}));function SC(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*wC+(n>>>0)}var CC,wC,TC=n((()=>{CC=65536,wC=CC*CC}));function EC(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function DC(e,t){let n=[],r;if(e.length===0)return e;e.sort(function(e,t){let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});for(let i of e)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(n.push(i),r=i):EC(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}var OC=n((()=>{}));function kC(e,t=0){return new AC(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var AC,jC=n((()=>{AC=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}}));function MC(e,t){return e*2**t}function NC(e,t){return Math.floor(e/2**t)}var PC,FC,IC,LC,RC=n((()=>{Jy(),yC(),xC(),TC(),OC(),jC(),PC=21582659,FC=38359875,IC={0:`generic`,1:`SAM`,2:`VCF`},LC=class extends bC{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];if(r===void 0||!n.indices[r])return-1;let{stats:i}=n.indices[r];return i?i.lineCount:-1}indexCov(){throw Error(`CSI indexes do not support indexcov`)}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a=IC[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):void 0,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0),{refIdToName:d,refNameToId:f}=this._parseNameBytes(e.subarray(t+28,t+28+u));return{refIdToName:d,refNameToId:f,skipLines:l,metaChar:c,columnNumbers:o,format:a,coordinateType:i}}async _parse(e={}){let t=await By(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r;if(n.getUint32(0,!0)===PC)r=1;else if(n.getUint32(0,!0)===FC)r=2;else throw Error(`Not a CSI file`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let i=2**(this.minShift+this.depth*3),a=n.getInt32(12,!0),o=a&&a>=30?this.parseAuxData(t,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:`zero-based-half-open`,format:`generic`},s=n.getInt32(16+a,!0),c,l=16+a+4,u=Array(s).fill(0).map(()=>{let e=n.getInt32(l,!0);l+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(l,!0);if(e>this.maxBinNumber)i=this.parsePseudoBin(t,l+4),l+=48;else{let i=kC(t,l+4);c=this._findFirstData(c,i);let a=n.getInt32(l+12,!0);l+=16;let o=Array(a);for(let n=0;n<a;n+=1){let r=kC(t,l),i=kC(t,l+8);l+=16,o[n]=new vC(r,i,e)}r[e]=o}}return{binIndex:r,stats:i}});return{...o,csi:!0,refCount:s,maxBlockSize:65536,firstDataLine:c,csiVersion:r,indices:u,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:i}}parsePseudoBin(e,t){return{lineCount:SC(e,t+28)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];let s=this.reg2bins(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new vC(e.minv,e.maxv,n));return DC(c,new AC(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=MC(1,n*3),n+=1){let n=r+NC(e,i),o=r+NC(t,i);if(o-n+a.length>this.maxBinNumber)throw Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,o])}return a}}}));function zC(e,t){return e+=1,--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var BC,VC,HC,UC=n((()=>{Jy(),yC(),xC(),TC(),OC(),jC(),BC=21578324,VC=14,HC=class extends bC{async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];return r===void 0||!n.indices[r]?-1:n.indices[r].stats?.lineCount??-1}async _parse(e={}){let t=await By(await this.filehandle.readFile(e)),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==BC)throw Error(`Not a TBI file`);let r=n.getUint32(4,!0),i=n.getUint32(8,!0),a=i&65536?`zero-based-half-open`:`1-based-closed`,o={0:`generic`,1:`SAM`,2:`VCF`}[i&15];if(!o)throw Error(`invalid Tabix preset format flags ${i}`);let s={ref:n.getInt32(12,!0),start:n.getInt32(16,!0),end:n.getInt32(20,!0)},c=n.getInt32(24,!0),l=((1<<18)-1)/7,u=2**29,d=c?String.fromCharCode(c):void 0,f=n.getInt32(28,!0),p=n.getInt32(32,!0),{refNameToId:m,refIdToName:h}=this._parseNameBytes(t.slice(36,36+p)),g=36+p,_;return{indices:Array(r).fill(0).map(()=>{let e=n.getInt32(g,!0);g+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(g,!0);if(g+=4,e>l+1)throw Error(`tabix index contains too many bins, please use a CSI index`);if(e===l+1){let e=n.getInt32(g,!0);g+=4,e===2&&(i=this.parsePseudoBin(t,g)),g+=16*e}else{let i=n.getInt32(g,!0);g+=4;let a=Array(i);for(let n=0;n<i;n+=1){let r=kC(t,g),i=kC(t,g+8);g+=16,_=this._findFirstData(_,r),a[n]=new vC(r,i,e)}r[e]=a}}let a=n.getInt32(g,!0);g+=4;let o=Array(a);for(let e=0;e<a;e+=1)o[e]=kC(t,g),g+=8,_=this._findFirstData(_,o[e]);return{binIndex:r,linearIndex:o,stats:i}}),metaChar:d,maxBinNumber:l,maxRefLength:u,skipLines:f,firstDataLine:_,columnNumbers:s,coordinateType:a,format:o,refIdToName:h,refNameToId:m,maxBlockSize:65536}}parsePseudoBin(e,t){return{lineCount:SC(e,t+16)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];(o.linearIndex.length>0?o.linearIndex[t>>VC>=o.linearIndex.length?o.linearIndex.length-1:t>>VC]:new AC(0,0))||console.warn(`querying outside of possible tabix range`);let s=zC(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new vC(e.minv,e.maxv,n));let l=o.linearIndex.length,u,d=Math.min(t>>14,l-1),f=Math.min(n>>14,l-1);for(let e=d;e<=f;++e){let t=o.linearIndex[e];t&&(!u||t.compareTo(u)<0)&&(u=t)}return DC(c,u)}}})),WC,GC=n((()=>{yb(),Jy(),Fb(),jg(),RC(),UC(),WC=class{constructor({path:e,filehandle:t,url:n,tbiPath:r,tbiUrl:i,tbiFilehandle:a,csiPath:o,csiUrl:s,csiFilehandle:c,renameRefSeqs:l,chunkCacheSize:u=5*2**20}){this.cache=new Pb({maxSize:1e3});let d=l??(e=>e);if(t)this.filehandle=t;else if(e)this.filehandle=new Ag(e);else if(n)this.filehandle=new Dg(n);else throw TypeError(`must provide either filehandle or path`);if(a)this.index=new HC({filehandle:a,renameRefSeqs:d});else if(c)this.index=new LC({filehandle:c,renameRefSeqs:d});else if(r)this.index=new HC({filehandle:new Ag(r),renameRefSeqs:d});else if(o)this.index=new LC({filehandle:new Ag(o),renameRefSeqs:d});else if(e)this.index=new HC({filehandle:new Ag(`${e}.tbi`),renameRefSeqs:d});else if(s)this.index=new LC({filehandle:new Dg(s)});else if(i)this.index=new HC({filehandle:new Dg(i)});else if(n)this.index=new HC({filehandle:new Dg(`${n}.tbi`)});else throw TypeError(`must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl`);this.renameRefSeq=d,this.hasCustomRenameRefSeq=l!==void 0,this.chunkCache=new _b({cache:new Pb({maxSize:Math.floor(u/65536)}),fill:(e,t)=>this.readChunk(e,{signal:t})})}calculateFileOffset(e,t,n,r,i){return e[n]*256+(r-t[n])+i+1}async getLines(e,t,n,r){let i,a={},o;typeof r==`function`?o=r:(a=r,o=r.lineCallback,i=r.signal);let s=await this.index.getMetadata(a),c=t??0,l=n??s.maxRefLength;if(!(c<=l))throw TypeError(`invalid start and end coordinates. start must be less than or equal to end`);if(c===l)return;let u=await this.index.blocksForRange(e,c,l,a),d=new TextDecoder(`utf8`),f=s.format===`VCF`,p={ref:s.columnNumbers.ref||0,start:s.columnNumbers.start||0,end:f?8:s.columnNumbers.end||0},m=Math.max(p.ref,p.start,p.end),h=s.metaChar?.charCodeAt(0),g=s.coordinateType===`1-based-closed`?-1:0,_=!this.hasCustomRenameRefSeq;for(let t of u){let{buffer:n,cpositions:r,dpositions:a}=await this.chunkCache.get(t.toString(),t,i),s=0,u=0,v=d.decode(n);if(n.length==v.length)for(;s<v.length;){let n=v.indexOf(`
|
|
208
|
-
`,s);if(n===-1)break;let i=v.slice(s,n);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let d=this.checkLine(e,c,l,i,p.ref,p.start,p.end,m,h,g,f,_);if(d===null)return;d!==void 0&&o(i,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),d.start,d.end),s=n+1}else for(;s<n.length;){let i=n.indexOf(10,s);if(i===-1)break;let v=n.slice(s,i),y=d.decode(v);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let b=this.checkLine(e,c,l,y,p.ref,p.start,p.end,m,h,g,f,_);if(b===null)return;b!==void 0&&o(y,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),b.start,b.end),s=i+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){let{firstDataLine:t,metaChar:n,maxBlockSize:r}=await this.getMetadata(e),i=(t?.blockPosition||0)+r,a=await
|
|
209
|
-
|
|
210
|
-
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);(t===-1||t>i)&&(t=i),t>s
|
|
211
|
-
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n)
|
|
212
|
-
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();
|
|
213
|
-
`))}};function yw(e){return e?.type==`gff3`}Km(yw,vw);function bw(e,t,n){let r=Object.create(null),i=n.length,a=t.length,o=0;if(e===`GT`){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==9;)o++;r[n[e]]=t.slice(i,o),o++}return r}let s=e.indexOf(`GT`);if(s===-1)return r;if(s===0){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==58&&t.charCodeAt(o)!==9;)o++;for(r[n[e]]=t.slice(i,o);o<a&&t.charCodeAt(o)!==9;)o++;o++}return r}let c=0;for(let t=0;t<s;t++)e.charCodeAt(t)===58&&c++;for(let e=0;e<i;e++){let i=o,s=o;for(;s<a&&t.charCodeAt(s)!==9;)s++;let l=0,u=i;for(let a=i;a<=s;a++)if(a===s||t.charCodeAt(a)===58){if(l===c){r[n[e]]=t.slice(u,a);break}l++,u=a+1}o=s+1}return r}var xw=n((()=>{}));function Sw(e,t,n,r){let i=t.length,a=0;if(e===`GT`){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==9;)a++;r(t,e,a),a++}return}let o=e.indexOf(`GT`);if(o===-1)return;if(o===0){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==58&&t.charCodeAt(a)!==9;)a++;for(r(t,e,a);a<i&&t.charCodeAt(a)!==9;)a++;a++}return}let s=0;for(let t=0;t<o;t++)e.charCodeAt(t)===58&&s++;for(let e=0;e<n;e++){let e=a,n=a;for(;n<i&&t.charCodeAt(n)!==9;)n++;let o=0,c=e;for(let i=e;i<=n;i++)if(i===n||t.charCodeAt(i)===58){if(o===s){r(t,c,i);break}o++,c=i+1}a=n+1}}var Cw=n((()=>{}));function ww(e){try{return decodeURIComponent(e)}catch{return e}}var Tw,Ew=n((()=>{xw(),Cw(),Tw=class{constructor(e,t,n,r,i){let a=0,o=0;for(;a<e.length&&o<9;)e[a]===` `&&(o+=1),a+=1;let s=o===9?a-1:a,c=e.slice(0,s).split(` `),l=e.slice(s+1),[u,d,f,p,m,h,g]=c,_=g===`.`?void 0:g.split(`;`);if(i&&!c[7])throw Error(`no INFO field specified, must contain at least a '.' (turn off strict mode to allow)`);this.CHROM=u,this.POS=+d,this.ID=f===`.`?void 0:f.split(`;`),this.REF=p,this.ALT=m===`.`?void 0:m.split(`,`),this.QUAL=h===`.`?void 0:+h,this.FILTER=_?.length===1&&_[0]===`PASS`?`PASS`:_,this.INFO=c[7]===void 0||c[7]===`.`?{}:this.parseInfo(c[7],t),this.FORMAT=c[8],this.formatMeta=n,this.rest=l,this.sampleNames=r}parseInfo(e,t){let n={},r=e.includes(`%`),i=e.split(`;`),a=i.length;for(let e=0;e<a;e++){let a=i[e],o=a.indexOf(`=`),s=o===-1?a:a.slice(0,o),c=o===-1?void 0:a.slice(o+1),l=t[s]?.Type;if(l===`Flag`)n[s]=!0;else if(!c)n[s]=!0;else{let e=l===`Integer`||l===`Float`,t=c.split(`,`),i=t.length;if(r){let r=[];for(let n=0;n<i;n++){let i=t[n];if(i===`.`)r.push(void 0);else{let t=ww(i);r.push(e?Number(t):t)}}n[s]=r}else{let r=[];for(let n=0;n<i;n++){let i=t[n];i===`.`?r.push(void 0):r.push(e?Number(i):i)}n[s]=r}}}return n}SAMPLES(){let e={},t=this.FORMAT;if(t){let n=this.rest.split(` `),r=t.split(`:`),i=[];for(let e=0;e<r.length;e++){let t=this.formatMeta[r[e]]?.Type;i.push(t===`Integer`||t===`Float`)}let a=r.length,o=this.sampleNames.length;for(let t=0;t<o;t++){let o=this.sampleNames[t],s={},c=n[t],l=c.length,u=0,d=0;for(let e=0;e<=l;e++)if(e===l||c[e]===`:`){let t=c.slice(u,e);if(t===``||t===`.`)s[r[d]]=void 0;else{let e=t.split(`,`),n=[];if(i[d])for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:+r)}else for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:r)}s[r[d]]=n}if(u=e+1,d+=1,d>=a)break}e[o]=s}}return e}GENOTYPES(){return bw(this.FORMAT??``,this.rest,this.sampleNames)}processGenotypes(e){Sw(this.FORMAT??``,this.rest,this.sampleNames.length,e)}toJSON(){return{CHROM:this.CHROM,POS:this.POS,ID:this.ID,REF:this.REF,ALT:this.ALT,QUAL:this.QUAL,FILTER:this.FILTER,INFO:this.INFO,FORMAT:this.FORMAT}}}}));function Dw(e){let t=[],n=[],r=!1,i=!1,a=e.length;for(let o=0;o<a;o++){let a=e[o];a===`"`?(r=!r,n.push(a)):a===`[`?(i=!0,n.push(a)):a===`]`?(i=!1,n.push(a)):a===`,`&&!r&&!i?(t.push(n.join(``).trim()),n.length=0):n.push(a)}return n.length>0&&t.push(n.join(``).trim()),t}function Ow(e,t){let n=e.indexOf(t);return[e.slice(0,n),e.slice(n+1)]}function kw(e){let t=Dw(e.slice(1,-1)),n=[];for(let e=0;e<t.length;e++){let r=t[e],[i,a]=Ow(r,`=`);if(a&&a.startsWith(`[`)&&a.endsWith(`]`)){let e=a.slice(1,-1).split(`,`);for(let t=0;t<e.length;t++)e[t]=e[t].trim();n.push([i,e])}else a&&a.startsWith(`"`)&&a.endsWith(`"`)?n.push([i,a.slice(1,-1)]):n.push([i,a])}return Object.fromEntries(n)}var Aw=n((()=>{})),jw,Mw=n((()=>{jw={InfoFields:{AA:{Number:1,Type:`String`,Description:`Ancestral allele`},AC:{Number:`A`,Type:`Integer`,Description:`Allele count in genotypes, for each ALT allele, in the same order as listed`},AD:{Number:`R`,Type:`Integer`,Description:`Total read depth for each allele`},ADF:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the forward strand`},ADR:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the reverse strand`},AF:{Number:`A`,Type:`Float`,Description:`Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)`},AN:{Number:1,Type:`Integer`,Description:`Total number of alleles in called genotypes`},BQ:{Number:1,Type:`Float`,Description:`RMS base quality`},CIGAR:{Number:1,Type:`Float`,Description:`Cigar string describing how to align an alternate allele to the reference allele`},DB:{Number:0,Type:`Flag`,Description:`dbSNP membership`},DP:{Number:1,Type:`Integer`,Description:`combined depth across samples`},END:{Number:1,Type:`Integer`,Description:`End position (for use with symbolic alleles)`},H2:{Number:0,Type:`Flag`,Description:`HapMap2 membership`},H3:{Number:0,Type:`Flag`,Description:`HapMap3 membership`},MQ:{Number:1,Type:null,Description:`RMS mapping quality`},MQ0:{Number:1,Type:`Integer`,Description:`Number of MAPQ == 0 reads`},NS:{Number:1,Type:`Integer`,Description:`Number of samples with data`},SB:{Number:4,Type:`Integer`,Description:`Strand bias`},SOMATIC:{Number:0,Type:`Flag`,Description:`Somatic mutation (for cancer genomics)`},VALIDATED:{Number:0,Type:`Flag`,Description:`Validated by follow-up experiment`},"1000G":{Number:0,Type:`Flag`,Description:`1000 Genomes membership`},IMPRECISE:{Number:0,Type:`Flag`,Description:`Imprecise structural variation`},NOVEL:{Number:0,Type:`Flag`,Description:`Indicates a novel structural variation`},SVTYPE:{Number:1,Type:`String`,Description:`Type of structural variant`},SVLEN:{Number:null,Type:`Integer`,Description:`Difference in length between REF and ALT alleles`},CIPOS:{Number:2,Type:`Integer`,Description:`Confidence interval around POS for imprecise variants`},CIEND:{Number:2,Type:`Integer`,Description:`Confidence interval around END for imprecise variants`},HOMLEN:{Type:`Integer`,Description:`Length of base pair identical micro-homology at event breakpoints`},HOMSEQ:{Type:`String`,Description:`Sequence of base pair identical micro-homology at event breakpoints`},BKPTID:{Type:`String`,Description:`ID of the assembled alternate allele in the assembly file`},MEINFO:{Number:4,Type:`String`,Description:`Mobile element info of the form NAME,START,END,POLARITY`},METRANS:{Number:4,Type:`String`,Description:`Mobile element transduction info of the form CHR,START,END,POLARITY`},DGVID:{Number:1,Type:`String`,Description:`ID of this element in Database of Genomic Variation`},DBVARID:{Number:1,Type:`String`,Description:`ID of this element in DBVAR`},DBRIPID:{Number:1,Type:`String`,Description:`ID of this element in DBRIP`},MATEID:{Number:null,Type:`String`,Description:`ID of mate breakends`},PARID:{Number:1,Type:`String`,Description:`ID of partner breakend`},EVENT:{Number:1,Type:`String`,Description:`ID of event associated to breakend`},CILEN:{Number:2,Type:`Integer`,Description:`Confidence interval around the inserted material between breakend`},DPADJ:{Type:`Integer`,Description:`Read Depth of adjacency`},CN:{Number:1,Type:`Integer`,Description:`Copy number of segment containing breakend`},CNADJ:{Number:null,Type:`Integer`,Description:`Copy number of adjacency`},CICN:{Number:2,Type:`Integer`,Description:`Confidence interval around copy number for the segment`},CICNADJ:{Number:null,Type:`Integer`,Description:`Confidence interval around copy number for the adjacency`}},GenotypeFields:{AD:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele`},ADF:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the forward strand`},ADR:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the reverse strand`},DP:{Number:1,Type:`Integer`,Description:`Read depth`},EC:{Number:`A`,Type:`Integer`,Description:`Expected alternate allele counts`},FT:{Number:1,Type:`String`,Description:`Filter indicating if this genotype was "called"`},GL:{Number:`G`,Type:`Float`,Description:`Genotype likelihoods`},GP:{Number:`G`,Type:`Float`,Description:`Genotype posterior probabilities`},GQ:{Number:1,Type:`Integer`,Description:`Conditional genotype quality`},GT:{Number:1,Type:`String`,Description:`Genotype`},HQ:{Number:2,Type:`Integer`,Description:`Haplotype quality`},MQ:{Number:1,Type:`Integer`,Description:`RMS mapping quality`},PL:{Number:`G`,Type:`Integer`,Description:`Phred-scaled genotype likelihoods rounded to the closest integer`},PQ:{Number:1,Type:`Integer`,Description:`Phasing quality`},PS:{Number:1,Type:`Integer`,Description:`Phase set`}},AltTypes:{DEL:{Description:`Deletion relative to the reference`},INS:{Description:`Insertion of novel sequence relative to the reference`},DUP:{Description:`Region of elevated copy number relative to the reference`},INV:{Description:`Inversion of reference sequence`},CNV:{Description:`Copy number variable region (may be both deletion and duplication)`},"DUP:TANDEM":{Description:`Tandem duplication`},"DEL:ME":{Description:`Deletion of mobile element relative to the reference`},"INS:ME":{Description:`Insertion of a mobile element relative to the reference`},NON_REF:{Description:`Represents any possible alternative allele at this location`},"*":{Description:`Represents any possible alternative allele at this location`}},FilterTypes:{PASS:{Description:`Passed all filters`}}}})),Nw,Pw=n((()=>{Ew(),Aw(),Mw(),Nw=class{constructor({header:e,strict:t=!0}){if(!e.length)throw Error(`empty header received`);let n=e.split(/[\r\n]+/).filter(Boolean);if(!n.length)throw Error(`no non-empty header lines specified`);this.strict=t,this.metadata={INFO:{...jw.InfoFields},FORMAT:{...jw.GenotypeFields},ALT:{...jw.AltTypes},FILTER:{...jw.FilterTypes}};let r;for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith(`#`))t.startsWith(`##`)?this.parseMetadata(t):r=t;else throw Error(`Bad line in header:\n${t}`)}if(!r)throw Error(`No format line found in header`);let i=r.trim().split(` `),a=i.slice(0,8),o=[`#CHROM`,`POS`,`ID`,`REF`,`ALT`,`QUAL`,`FILTER`,`INFO`];if(i.length<8)throw Error(`VCF header missing columns:\n${r}`);if(a.length!==o.length||!a.every((e,t)=>e===o[t]))throw Error(`VCF column headers not correct:\n${r}`);this.samples=i.slice(9)}parseMetadata(e){let t=/^##(.+?)=(.*)/.exec(e.trim());if(!t)throw Error(`Line is not a valid metadata line: ${e}`);let[n,r]=t.slice(1,3),i=n;if(r?.startsWith(`<`)){i in this.metadata||(this.metadata[i]={});let[e,t]=this.parseStructuredMetaVal(r);e?this.metadata[i][e]=t:this.metadata[i]=t}else this.metadata[i]=r}parseStructuredMetaVal(e){let t=kw(e),n=t.ID;return delete t.ID,`Number`in t&&(Number.isNaN(Number(t.Number))||(t.Number=Number(t.Number))),[n,t]}getMetadata(...e){let t=this.metadata,n=e.length;for(let r=0;r<n;r++)if(t=t[e[r]],!t)return t;return t}parseLine(e){return new Tw(e,this.metadata.INFO,this.metadata.FORMAT,this.samples,this.strict)}}}));function Fw(e){let t=e[0],n=e[e.length-1];if(t===`[`||t===`]`||n===`[`||n===`]`){let t=e.split(/[[\]]/),n=e.includes(`[`)?`right`:`left`,r,i,a,o=t.length;for(let e=0;e<o;e++){let n=t[e];n&&(n.includes(`:`)?(a=n,r=i?`right`:`left`):i=n)}if(!(a&&r&&i))throw Error(`Invalid breakend: ${e}`);return{MatePosition:a,Join:r,Replacement:i,MateDirection:n}}if(t===`.`)return{Join:`left`,SingleBreakend:!0,Replacement:e.slice(1)};if(n===`.`)return{Join:`right`,SingleBreakend:!0,Replacement:e.slice(0,-1)};if(t===`<`){let t=Iw.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[2];return n?{Join:`left`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[1]}>:1`}:void 0}if(e.includes(`<`)){let t=Lw.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[1];return n?{Join:`right`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[2]}>:1`}:void 0}}var Iw,Lw,Rw=n((()=>{Iw=/<(.*)>(.*)/,Lw=/(.*)<(.*)>/})),zw=r({Variant:()=>Tw,default:()=>Nw,parseBreakend:()=>Fw}),Bw=n((()=>{Ew(),Pw(),Rw()})),Vw=class extends JC{#e;get label(){return`vcfSource`}async _handleHeader(e){let t=(await Promise.resolve().then(()=>(Bw(),zw))).default;this.#e=new t({header:e})}_parseFeatures(e){return e.map(e=>{let t=this.#e.parseLine(e);return delete t.GENOTYPES,t.SAMPLES=t.SAMPLES(),t})}};function Hw(e){return e?.type==`vcf`}Km(Hw,Vw);var Uw=`
|
|
207
|
+
}`)(s,o));function d(e){r=e,i=e.length,n=0}function f(e,t,n,r){d(r),a=l(e,t,n);for(let e of u)e(a);return a}return f}function yS(e){return e?.type==`bigbed`}Gm(yS,_S);function bS(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,r*t+t))}var xS,SS=n((()=>{xS=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize===void 0?this.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}}));function CS(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*TS+(n>>>0)}var wS,TS,ES=n((()=>{wS=65536,TS=wS*wS}));function DS(e={}){return`aborted`in e?{signal:e}:e}function OS(e,t){let n=e.length;if(n===0)return e;let r;if(t){let i=t.blockPosition,a=t.dataPosition;r=[];for(let t=0;t<n;t++){let n=e[t],o=n.maxv;(o.blockPosition-i||o.dataPosition-a)>0&&r.push(n)}if(r.length===0)return r}else r=e;r.sort((e,t)=>{let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});let i=[],a=r[0];i.push(a);let o=a.minv.blockPosition,s=a.maxv.blockPosition;for(let e=1;e<r.length;e++){let t=r[e],n=t.minv.blockPosition,c=t.maxv.blockPosition;if(n-s<65e3&&c-o<5e6){let e=t.maxv,n=a.maxv;(c-s||e.dataPosition-n.dataPosition)>0&&(a.maxv=e,s=c)}else i.push(t),a=t,o=n,s=c}return i}function kS(e,t){return{lineCount:CS(e,t)}}function AS(e,t){return e?e.compareTo(t)>0?t:e:t}function jS(e,t=e=>e){let n=0,r=0,i=[],a={};for(let o=0;o<e.length;o+=1)if(!e[o]){if(r<o){let s=``;for(let t=r;t<o;t++)s+=String.fromCharCode(e[t]);s=t(s),i[n]=s,a[s]=n}r=o+1,n+=1}return{refNameToId:a,refIdToName:i}}function MS(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function NS(e,t,n){return!!((e&t)!==t||e&n)}function PS(e,t){return t===`*`?e===void 0:`${e}`!=`${t}`}function FS(e){if(!e)return``;let{flagInclude:t=0,flagExclude:n=0,tagFilter:r}=e;return`:f${t}x${n}${r?`:${r.tag}=${r.value??`*`}`:``}`}var IS=n((()=>{ES()})),LS,RS=n((()=>{IS(),LS=class{constructor({filehandle:e,renameRefSeq:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async estimatedBytesForRegions(e,t){let n=OS((await Promise.all(e.map(e=>this.blocksForRange(e.refId,e.start,e.end,t)))).flat()),r=0;for(let e of n)r+=e.fetchedSize();return r}}}));function zS(e,t=0,n=!1){if(n)throw Error(`big-endian virtual file offsets not implemented`);return new BS(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var BS,VS=n((()=>{BS=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}}));function HS(e,t){return e-e%t}function US(e,t){return e-e%t+t}function WS(e,t){return--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var GS,KS,qS=n((()=>{Lb(),SS(),RS(),IS(),VS(),GS=21578050,KS=class extends LS{async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async _parse(e){let t=await this.filehandle.readFile(),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==GS)throw Error(`Not a BAI file`);let r=n.getInt32(4,!0),i=((1<<18)-1)/7,a=8,o,s=[];for(let e=0;e<r;e++){s.push(a);let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t+=1){let e=n.getUint32(a,!0);if(a+=4,e===i+1)a+=4,a+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t++)a+=8,a+=8}}let r=n.getInt32(a,!0);a+=4;let c=Array(r);for(let e=0;e<r;e++){let n=zS(t,a);a+=8,o=AS(o,n),c[e]=n}}let c=new Ib({maxSize:5});function l(e){let r=s[e];if(r===void 0)return;let a=n.getInt32(r,!0),c;r+=4;let l={};for(let e=0;e<a;e+=1){let e=n.getUint32(r,!0);if(r+=4,e===i+1)r+=4,c=kS(t,r+16),r+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n++){let i=zS(t,r);r+=8;let s=zS(t,r);r+=8,o=AS(o,i),a[n]=new xS(i,s,e)}l[e]=a}}let u=n.getInt32(r,!0);r+=4;let d=Array(u);for(let e=0;e<u;e++){let n=zS(t,r);r+=8,o=AS(o,n),d[e]=n}return{binIndex:l,linearIndex:d,stats:c}}return{bai:!0,firstDataLine:o,maxBlockSize:65536,indices:e=>{if(!c.has(e)){let t=l(e);return t&&c.set(e,t),t}return c.get(e)},refCount:r}}async indexCov(e,t,n,r){let i=16384,a=t!==void 0,o=(await this.parse(r)).indices(e);if(!o)return[];let{linearIndex:s,stats:c}=o;if(s.length===0)return[];let l=n===void 0?(s.length-1)*i:US(n,i),u=t===void 0?0:HS(t,i),d=a?Array((l-u)/i):Array(s.length-1),f=s[s.length-1].blockPosition;if(l>(s.length-1)*i)throw Error(`query outside of range of linear index`);let p=s[u/i].blockPosition;for(let e=u/i,t=0;e<l/i;e++,t++)d[t]={score:s[e+1].blockPosition-p,start:e*i,end:e*i+i},p=s[e+1].blockPosition;return d.map(e=>({...e,score:e.score*(c?.lineCount||0)/f}))}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r);if(!i)return[];let a=i.indices(e);if(!a)return[];let o=WS(t,n),s=[],{binIndex:c}=a;for(let[e,t]of o)for(let n=e;n<=t;n++){let e=c[n];if(e)for(let t=0,n=e.length;t<n;t++)s.push(e[t])}let{linearIndex:l}=a,u=l.length,d=l[Math.min(t>>14,u-1)];return OS(s,d)}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),JS,YS,XS=n((()=>{JS=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],typeof Int32Array<`u`&&(JS=new Int32Array(JS)),YS=(e,t)=>{let n=t===0?0:~~t^-1;for(let t=0;t<e.length;t++)n=JS[(n^e[t])&255]^n>>>8;return n^-1}}));function ZS(e,t){return e*2**t}function QS(e,t){return Math.floor(e/2**t)}var $S,eC,tC,nC=n((()=>{Yy(),Lb(),SS(),RS(),IS(),VS(),$S=21582659,eC=38359875,tC=class extends LS{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async indexCov(){return[]}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getUint32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a={0:`generic`,1:`SAM`,2:`VCF`}[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):``,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0);return{columnNumbers:o,coordinateType:i,metaValue:s,metaChar:c,skipLines:l,format:a,formatFlags:r,...jS(e.subarray(t+28,t+28+u),this.renameRefSeq)}}async _parse(e){let t=await Vy(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r,i=n.getUint32(0,!0);if(i===$S)r=1;else if(i===eC)r=2;else throw Error(`Not a CSI file ${i}`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let a=this.maxBinNumber,o=n.getInt32(12,!0),s=o>=30?this.parseAuxData(t,16):void 0,c=n.getInt32(16+o,!0),l=16+o+4,u,d=[];for(let e=0;e<c;e++){d.push(l);let e=n.getInt32(l,!0);l+=4;for(let r=0;r<e;r++){let e=n.getUint32(l,!0);if(l+=4,e>this.maxBinNumber)l+=44;else{l+=8;let e=n.getInt32(l,!0);l+=4;for(let n=0;n<e;n+=1){let e=zS(t,l);l+=8,l+=8,u=AS(u,e)}}}}let f=new Ib({maxSize:5});function p(e){let r=d[e];if(r===void 0)return;let i=n.getInt32(r,!0);r+=4;let o={},s;for(let e=0;e<i;e++){let e=n.getUint32(r,!0);if(r+=4,e>a)s=kS(t,r+28),r+=44;else{u=AS(u,zS(t,r)),r+=8;let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n+=1){let i=zS(t,r);r+=8;let o=zS(t,r);r+=8,a[n]=new xS(i,o,e)}o[e]=a}}return{binIndex:o,stats:s}}return{csiVersion:r,firstDataLine:u,indices:e=>{if(!f.has(e)){let t=p(e);return t&&f.set(e,t),t}return f.get(e)},refCount:c,csi:!0,maxBlockSize:65536,...s}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=(await this.parse(r)).indices(e);if(!i)return[];let a=this.reg2bins(t,n);if(a.length===0)return[];let o=[],{binIndex:s}=i;for(let[e,t]of a)for(let n=e;n<=t;n++){let e=s[n];if(e)for(let t=0,n=e.length;t<n;t++)o.push(e[t])}return OS(o,new BS(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=ZS(1,n*3),n+=1){let n=r+QS(e,i),o=r+QS(t,i);if(o-n+a.length>this.maxBinNumber)throw Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,o])}return a}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),rC,iC=n((()=>{rC=class{read(){throw Error(`never called`)}stat(){throw Error(`never called`)}readFile(){throw Error(`never called`)}close(){throw Error(`never called`)}}})),aC=n((()=>{})),oC,sC=n((()=>{oC={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048}})),cC,lC,uC,dC,fC,pC=n((()=>{aC(),sC(),cC=`=ACMGRSVTWYHKDBN`.split(``),lC=`F F .F R .R F .R R .F2F1.F2R1.R2F1.R2R1.F1F2.F1R2.R1F2.R1R2.F2F1.F2R1.R2F1.R2R1.F F .R F .F R .R R .F1F2.R1F2.F1R2.R1R2.F2F1.R2F1.F2R1.R2R1.F1F2.R1F2.F1R2.R1R2`.split(`.`),uC=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],dC=461,fC=class{constructor(e){this.bytes=e.bytes,this.fileOffset=e.fileOffset,this._dataView=new DataView(this.bytes.byteArray.buffer)}get byteArray(){return this.bytes.byteArray}get flags(){return this._cachedFlags===void 0&&(this._cachedFlags=(this._dataView.getInt32(this.bytes.start+16,!0)&4294901760)>>16),this._cachedFlags}get ref_id(){return this._cachedRefId===void 0&&(this._cachedRefId=this._dataView.getInt32(this.bytes.start+4,!0)),this._cachedRefId}get start(){return this._cachedStart===void 0&&(this._cachedStart=this._dataView.getInt32(this.bytes.start+8,!0)),this._cachedStart}get end(){return this._cachedEnd===void 0&&(this._cachedEnd=this.start+this.length_on_ref),this._cachedEnd}get mq(){let e=(this.bin_mq_nl&65280)>>8;return e===255?void 0:e}get score(){return this.mq}get qual(){if(this.isSegmentUnmapped())return null;{let e=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes;return this.byteArray.subarray(e,e+this.seq_length)}}get strand(){return this.isReverseComplemented()?-1:1}get b0(){return this.bytes.start+36}get tagsStart(){return this._cachedTagsStart===void 0&&(this._cachedTagsStart=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes+this.seq_length),this._cachedTagsStart}get name(){let e=this.read_name_length-1,t=this.b0,n=this.byteArray,r=Array(e);for(let i=0;i<e;i++)r[i]=n[t+i];return String.fromCharCode(...r)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){let e=this.getTagRaw(`MD`);this._cachedNUMERIC_MD=e instanceof Uint8Array?e:null}return this._cachedNUMERIC_MD===null?void 0:this._cachedNUMERIC_MD}get tags(){return this._cachedTags===void 0&&(this._cachedTags=this._computeTags()),this._cachedTags}getTag(e){return this._cachedTags===void 0?this._findTag(e,!1):this._cachedTags[e]}getTagRaw(e){return this._findTag(e,!0)}_findTag(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),i=this.tagsStart,a=this.bytes.end,o=this.byteArray;for(;i<a;){let e=o[i],s=o[i+1],c=o[i+2];i+=3;let l=e===n&&s===r;switch(c){case 65:if(l)return String.fromCharCode(o[i]);i+=1;break;case 105:if(l)return this._dataView.getInt32(i,!0);i+=4;break;case 73:if(l)return this._dataView.getUint32(i,!0);i+=4;break;case 99:if(l)return this._dataView.getInt8(i);i+=1;break;case 67:if(l)return this._dataView.getUint8(i);i+=1;break;case 115:if(l)return this._dataView.getInt16(i,!0);i+=2;break;case 83:if(l)return this._dataView.getUint16(i,!0);i+=2;break;case 102:if(l)return this._dataView.getFloat32(i,!0);i+=4;break;case 90:case 72:if(l){let e=i;for(;i<a&&o[i]!==0;)i++;if(t)return o.subarray(e,i);let n=[];for(let t=e;t<i;t++)n.push(String.fromCharCode(o[t]));return n.join(``)}for(;i<=a&&o[i++]!==0;);break;case 66:{let e=o[i++],t=this._dataView.getInt32(i,!0);i+=4;let n=o.byteOffset+i;if(l){if(e===105){if(n%4==0)return new Int32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt32(i+n*4,!0);return e}else if(e===73){if(n%4==0)return new Uint32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint32(i+n*4,!0);return e}else if(e===115){if(n%2==0)return new Int16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt16(i+n*2,!0);return e}else if(e===83){if(n%2==0)return new Uint16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint16(i+n*2,!0);return e}else if(e===99)return new Int8Array(o.buffer,n,t);else if(e===67)return new Uint8Array(o.buffer,n,t);else if(e===102){if(n%4==0)return new Float32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getFloat32(i+n*4,!0);return e}}e===105||e===73||e===102?i+=t<<2:e===115||e===83?i+=t<<1:(e===99||e===67)&&(i+=t);break}}}}_computeTags(){let e=this.tagsStart,t=this.bytes.end,n=this.byteArray,r={};for(;e<t;){let i=String.fromCharCode(n[e],n[e+1]),a=n[e+2];switch(e+=3,a){case 65:r[i]=String.fromCharCode(n[e]),e+=1;break;case 105:r[i]=this._dataView.getInt32(e,!0),e+=4;break;case 73:r[i]=this._dataView.getUint32(e,!0),e+=4;break;case 99:r[i]=this._dataView.getInt8(e),e+=1;break;case 67:r[i]=this._dataView.getUint8(e),e+=1;break;case 115:r[i]=this._dataView.getInt16(e,!0),e+=2;break;case 83:r[i]=this._dataView.getUint16(e,!0),e+=2;break;case 102:r[i]=this._dataView.getFloat32(e,!0),e+=4;break;case 90:case 72:{let a=[];for(;e<=t;){let t=n[e++];if(t!==0)a.push(String.fromCharCode(t));else break}r[i]=a.join(``);break}case 66:{let t=n[e++],a=this._dataView.getInt32(e,!0);e+=4;let o=n.byteOffset+e;if(t===105){if(o%4==0)r[i]=new Int32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===73){if(o%4==0)r[i]=new Uint32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===115){if(o%2==0)r[i]=new Int16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===83){if(o%2==0)r[i]=new Uint16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===99)r[i]=new Int8Array(n.buffer,o,a),e+=a;else if(t===67)r[i]=new Uint8Array(n.buffer,o,a),e+=a;else if(t===102){if(o%4==0)r[i]=new Float32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getFloat32(e+n*4,!0);r[i]=t}e+=a<<2}break}default:console.error(`Unknown BAM tag type`,a);break}}return r}isPaired(){return!!(this.flags&oC.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&oC.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&oC.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&oC.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&oC.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&oC.BAM_FMREVERSE)}isRead1(){return!!(this.flags&oC.BAM_FREAD1)}isRead2(){return!!(this.flags&oC.BAM_FREAD2)}isSecondary(){return!!(this.flags&oC.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&oC.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&oC.BAM_FDUP)}isSupplementary(){return!!(this.flags&oC.BAM_FSUPPLEMENTARY)}get cigarAndLength(){return this._cachedCigarAndLength===void 0&&(this._cachedCigarAndLength=this._computeCigarAndLength()),this._cachedCigarAndLength}_computeCigarAndLength(){if(this.isSegmentUnmapped())return{length_on_ref:0,NUMERIC_CIGAR:new Uint32Array};let e=this.num_cigar_ops,t=this.b0+this.read_name_length,n=this._dataView.getInt32(t,!0),r=n>>4;if((n&15)==4&&r===this.seq_length){t+=4;let e=this._dataView.getInt32(t,!0),n=e>>4;return(e&15)!=3&&console.warn(`CG tag with no N tag`),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:n}}let i=this.byteArray.byteOffset+t;if(i%4==0&&e>50){let t=new Uint32Array(this.byteArray.buffer,i,e),n=0;for(let r=0;r<e;++r){let e=t[r];n+=(e>>4)*(dC>>(e&15)&1)}return{NUMERIC_CIGAR:t,length_on_ref:n}}let a=Array(e),o=0;for(let n=0;n<e;++n){let e=this._dataView.getInt32(t+n*4,!0)|0;a[n]=e,o+=(e>>4)*(dC>>(e&15)&1)}return{NUMERIC_CIGAR:a,length_on_ref:o}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){let e=this.NUMERIC_CIGAR,t=``;for(let n=0,r=e.length;n<r;n++){let r=e[n],i=r>>4,a=uC[r&15];t+=i+String.fromCharCode(a)}return t}get num_cigar_ops(){return this.flag_nc&65535}get num_cigar_bytes(){return this.num_cigar_ops<<2}get read_name_length(){return this.bin_mq_nl&255}get num_seq_bytes(){return this.seq_length+1>>1}get NUMERIC_SEQ(){let e=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(e,e+this.num_seq_bytes)}get seq(){let e=this.NUMERIC_SEQ,t=this.seq_length,n=Array(t),r=0,i=t>>1;for(let t=0;t<i;++t){let i=e[t];n[r++]=cC[(i&240)>>4],n[r++]=cC[i&15]}return r<t&&(n[r]=cC[(e[i]&240)>>4]),n.join(``)}get pair_orientation(){let e=this.flags;if(!(e&12||this.ref_id!==this.next_refid))return lC[e>>4&15|(this.template_length>0?16:0)]}get bin_mq_nl(){return this._dataView.getInt32(this.bytes.start+12,!0)}get flag_nc(){return this._dataView.getInt32(this.bytes.start+16,!0)}get seq_length(){return this._dataView.getInt32(this.bytes.start+20,!0)}get next_refid(){return this._dataView.getInt32(this.bytes.start+24,!0)}get next_pos(){return this._dataView.getInt32(this.bytes.start+28,!0)}get template_length(){return this._dataView.getInt32(this.bytes.start+32,!0)}seqAt(e){if(e<this.seq_length){let t=e>>1,n=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+t];return e%2==0?cC[(n&240)>>4]:cC[n&15]}else return}toJSON(){let e={};for(let t of Object.keys(this))t.startsWith(`_`)||t===`bytes`||(e[t]=this[t]);return e}}}));function mC(e){let t=e.split(/\r?\n/),n=[];for(let e of t){let[t,...r]=e.split(/\t/);t&&n.push({tag:t.slice(1),data:r.map(e=>{let t=e.indexOf(`:`);return{tag:e.slice(0,t),value:e.slice(t+1)}})})}return n}var hC=n((()=>{})),gC,_C,vC=n((()=>{Yy(),Lb(),XS(),Mg(),qS(),nC(),iC(),pC(),hC(),IS(),gC=65536,_C=class{constructor({bamFilehandle:e,bamPath:t,bamUrl:n,baiPath:r,baiFilehandle:i,baiUrl:a,csiPath:o,csiFilehandle:s,csiUrl:c,htsget:l,renameRefSeqs:u=e=>e,recordClass:d}){if(this.htsget=!1,this.chunkFeatureCache=new Ib({maxSize:100}),this.renameRefSeq=u,this.RecordClass=d??fC,e)this.bam=e;else if(t)this.bam=new jg(t);else if(n)this.bam=new Og(n);else if(l)this.htsget=!0,this.bam=new rC;else throw Error(`unable to initialize bam`);if(s)this.index=new tC({filehandle:s});else if(o)this.index=new tC({filehandle:new jg(o)});else if(c)this.index=new tC({filehandle:new Og(c)});else if(i)this.index=new KS({filehandle:i});else if(r)this.index=new KS({filehandle:new jg(r)});else if(a)this.index=new KS({filehandle:new Og(a)});else if(t)this.index=new KS({filehandle:new jg(`${t}.bai`)});else if(n)this.index=new KS({filehandle:new Og(`${n}.bai`)});else if(l)this.htsget=!0;else throw Error(`unable to infer index format`)}async getHeaderPre(e){let t=DS(e);if(!this.index)return;let n=await this.index.parse(t),r=n.firstDataLine===void 0?void 0:n.firstDataLine.blockPosition+gC,i=await Vy(r===void 0?await this.bam.readFile():await this.bam.read(r,0)),a=new DataView(i.buffer);if(a.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let o=a.getInt32(4,!0);this.header=new TextDecoder(`utf8`).decode(i.subarray(8,8+o));let s=o+8;for(let e=0;e<5;e++){if(this._hasEnoughRefSeqData(i,s)){let{chrToIndex:e,indexToChr:t}=this._parseRefSeqs(i,s);return this.chrToIndex=e,this.indexToChr=t,mC(this.header)}if(r===void 0)throw Error(`Insufficient data for reference sequences in ${i.length} bytes`);r*=2,i=await Vy(await this.bam.read(r,0))}throw Error(`Insufficient data for reference sequences after 5 retries`)}getHeader(e){return this.headerP||=this.getHeaderPre(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}async getHeaderText(e={}){return await this.getHeader(e),this.header}_hasEnoughRefSeqData(e,t){if(t+4>e.length)return!1;let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4;for(let t=0;t<r;t+=1){if(i+8>e.length)return!1;let t=n.getInt32(i,!0);i=i+8+t}return!0}_parseRefSeqs(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4,a={},o=[],s=new TextDecoder(`utf8`);for(let t=0;t<r;t+=1){let r=n.getInt32(i,!0),c=this.renameRefSeq(s.decode(e.subarray(i+4,i+4+r-1))),l=n.getInt32(i+r+4,!0);a[c]=t,o.push({refName:c,length:l}),i=i+8+r}return{chrToIndex:a,indexToChr:o}}async getRecordsForRange(e,t,n,r){await this.getHeader(r);let i=this.chrToIndex?.[e];if(i===void 0||!this.index)return[];let a=await this.index.blocksForRange(i,t-1,n,r);return this._fetchChunkFeaturesDirect(a,i,t,n,r)}chunkCacheKey(e,t){let{minv:n,maxv:r}=e;return`${n.blockPosition}:${n.dataPosition}-${r.blockPosition}:${r.dataPosition}${FS(t)}`}blocksOverlap(e,t,n,r){return e<=r&&t>=n}evictOverlappingChunks(e,t){for(let[n,r]of this.chunkFeatureCache)this.blocksOverlap(e,t,r.minBlock,r.maxBlock)&&this.chunkFeatureCache.delete(n)}async _fetchChunkFeaturesDirect(e,t,n,r,i={}){let{viewAsPairs:a,filterBy:o}=i,{flagInclude:s=0,flagExclude:c=0,tagFilter:l}=o||{},u=[];for(let a=0,d=e.length;a<d;a++){let d=e[a],f=this.chunkCacheKey(d,o),p=d.minv.blockPosition,m=d.maxv.blockPosition,h,g=this.chunkFeatureCache.get(f);if(g)h=g.features;else{this.evictOverlappingChunks(p,m);let{data:e,cpositions:t,dpositions:n}=await this._readChunk({chunk:d,opts:i}),r=await this.readBamFeatures(e,t,n,d);if(o){h=[];for(let e=0,t=r.length;e<t;e++){let t=r[e];NS(t.flags,s,c)||l&&PS(t.tags[l.tag],l.value)||h.push(t)}}else h=r;this.chunkFeatureCache.set(f,{minBlock:p,maxBlock:m,features:h})}let _=!1;for(let e=0,i=h.length;e<i;e++){let i=h[e];if(i.ref_id===t)if(i.start>=r){_=!0;break}else i.end>=n&&u.push(i)}if(_)break}if(a){let e=await this.fetchPairs(t,u,i);for(let t=0,n=e.length;t<n;t++)u.push(e[t])}return u}async fetchPairs(e,t,n){let{pairAcrossChr:r,maxInsertSize:i=2e5}=n,a={},o={};for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.name;a[r]=(a[r]||0)+1,o[n.fileOffset]=1}let s=[];for(let o=0,c=t.length;o<c;o++){let c=t[o],l=c.name;this.index&&a[l]===1&&(r||c.next_refid===e&&Math.abs(c.start-c.next_pos)<i)&&s.push(this.index.blocksForRange(c.next_refid,c.next_pos,c.next_pos+1,n))}let c=new Map,l=await Promise.all(s);for(let e=0,t=l.length;e<t;e++){let t=l[e];for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.toString();c.has(r)||c.set(r,n)}}return(await Promise.all([...c.values()].map(async e=>{let{data:t,cpositions:r,dpositions:i,chunk:s}=await this._readChunk({chunk:e,opts:n}),c=[],l=await this.readBamFeatures(t,r,i,s);for(let e=0,t=l.length;e<t;e++){let t=l[e];a[t.name]===1&&!o[t.fileOffset]&&c.push(t)}return c}))).flat()}async _readChunk({chunk:e,opts:t}){let{buffer:n,cpositions:r,dpositions:i}=await Hy(await this.bam.read(e.fetchedSize(),e.minv.blockPosition,t),e);return{data:n,cpositions:r,dpositions:i,chunk:e}}async readBamFeatures(e,t,n,r){let i=0,a=[],o=0,s=new DataView(e.buffer),c=n.length>0,l=t.length>0;for(;i+4<e.length;){let u=s.getInt32(i,!0),d=i+4+u-1;if(c){for(;i+r.minv.dataPosition>=n[o++];);o--}if(d<e.length){let s=new this.RecordClass({bytes:{byteArray:e,start:i,end:d},fileOffset:l?t[o]*256+(i-n[o])+r.minv.dataPosition+1:YS(e.subarray(i,d))>>>0});a.push(s)}i=d+1}return a}async hasRefSeq(e){let t=this.chrToIndex?.[e];return t===void 0?!1:this.index?.hasRefSeq(t)}async lineCount(e){let t=this.chrToIndex?.[e];return t===void 0||!this.index?0:this.index.lineCount(t)}async indexCov(e,t,n){if(!this.index)return[];await this.index.parse();let r=this.chrToIndex?.[e];return r===void 0?[]:this.index.indexCov(r,t,n)}async blocksForRange(e,t,n,r){if(!this.index)return[];await this.index.parse();let i=this.chrToIndex?.[e];return i===void 0?[]:this.index.blocksForRange(i,t,n,r)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(e,t){if(!this.index)return 0;if(await this.getHeader(t),!this.chrToIndex)throw Error(`Header not yet parsed`);let n=e.flatMap(e=>{let t=this.chrToIndex[e.refName];return t===void 0?[]:[{refId:t,start:e.start,end:e.end}]});return this.index.estimatedBytesForRegions(n,t)}}}));async function yC(e,t){let n=await Promise.all(e.map(async e=>{let{url:n,headers:r}=e;if(n.startsWith(`data:`)){let e=await fetch(n);if(!e.ok)throw Error(`failed to decode base64`);let t=await e.arrayBuffer();return new Uint8Array(t)}else{let{referer:e,...i}=r,a=await fetch(n,{...t,headers:{...t?.headers,...i}});if(!a.ok)throw Error(`HTTP ${a.status} fetching ${n}: ${await a.text()}`);return new Uint8Array(await a.arrayBuffer())}}));return MS(await Promise.all(n.map(e=>Vy(e))))}var bC,xC=n((()=>{Yy(),vC(),hC(),IS(),bC=class extends _C{constructor(e){super({htsget:!0,recordClass:e.recordClass}),this.baseUrl=e.baseUrl,this.trackId=e.trackId}async getRecordsForRange(e,t,n,r){let i=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${e}&start=${t}&end=${n}&format=BAM`,a=this.chrToIndex?.[e];if(a===void 0)return[];let o=await fetch(i,{...r});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${i}: ${await o.text()}`);let s=await yC((await o.json()).htsget.urls.slice(1),r),c=await this.readBamFeatures(s,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),l=[];for(let e=0,r=c.length;e<r;e++){let r=c[e];if(r.ref_id===a){if(r.start>=n)break;r.end>=t&&l.push(r)}}return l}async getHeader(e={}){let t=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,n=await fetch(t,e);if(!n.ok)throw Error(`HTTP ${n.status} fetching ${t}: ${await n.text()}`);let r=await yC((await n.json()).htsget.urls,e),i=new DataView(r.buffer);if(i.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let a=i.getInt32(4,!0),o=mC(new TextDecoder(`utf8`).decode(r.subarray(8,8+a))),s=[],c={},l=o.filter(e=>e.tag===`SQ`);for(let[e,t]of l.entries()){let n=``,r=0;for(let e of t.data)e.tag===`SN`?n=e.value:e.tag===`LN`&&(r=+e.value);c[n]=e,s[e]={refName:n,length:r}}return this.chrToIndex=c,this.indexToChr=s,o}}})),SC=r({BAI:()=>KS,BamFile:()=>_C,BamRecord:()=>fC,CSI:()=>tC,HtsgetFile:()=>bC}),CC=n((()=>{qS(),vC(),nC(),pC(),xC()})),wC=class extends xg{#e;chrPrefixFixer=e=>e;constructor(e,t){let n={channel:`x`,windowSize:2e4,debounce:200,debounceMode:`domain`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for BamSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(CC(),SC)),Promise.resolve().then(()=>(Mg(),Ag))]).then(([{BamFile:t},{RemoteFile:n}])=>{let r=e=>new n(ih(e,this.view.getBaseUrl()));this.#e=new t({bamFilehandle:r(this.params.url),baiFilehandle:r(this.params.indexUrl??this.params.url+`.bai`)}),this.#e.getHeader().then(t=>{let n=this.genome.hasChrPrefix(),r=this.#e.indexToChr?.[0]?.refName.startsWith(`chr`);n&&!r?this.chrPrefixFixer=e=>e.replace(`chr`,``):!n&&r&&(this.chrPrefixFixer=e=>`chr`+e),e()})})})}get label(){return`bamSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.#e.getRecordsForRange(this.chrPrefixFixer(e.chrom),e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,name:t.name,cigar:t.CIGAR,mapq:t.mq,strand:t.strand===1?`+`:`-`}))));t&&this.publishData(t)}};function TC(e){return e?.type==`bam`}Gm(TC,wC);function EC(e){return`values`in e}var DC=class extends Zm{constructor(e,t){if(super(t),this.params=e,typeof e.values==`string`&&!e?.format?.type)throw Error(`Data format type (csv, dsv, ...) must be specified if a string is provided!`)}get label(){return`inlineSource`}isTrivial(){let e=this.params.values,t=Array.isArray(e)?e[0]:e;return!!(t&&Object.keys(t).length==0&&t.constructor===Object)}updateDynamicData(e){this.#e(e)}loadSynchronously(){this.#e(this.params.values)}#e(e){let t=[],n=e=>e;if(Array.isArray(e))e.length>0&&(t=e,n=IC(e[0]));else if(typeof e==`object`)t=[e];else if(typeof e==`string`)t=To(e,jC(AC(this.params)));else throw Error(`"values" in data configuration is not an array, object, or a string!`);this.reset(),this.beginBatch({type:`file`});for(let e of t)this._propagate(n(e));this.complete()}async load(){this.loadSynchronously()}},OC=new Set([`csv`,`tsv`,`dsv`]),kC=new Set([`gz`,`bgz`,`bgzf`]);function AC(e,t=[]){if(!EC(e)&&!VC(e))return;let n={...e.format};if(n.type??=VC(e)&&NC(t),n.parse===void 0&&HC(n.type)&&(n.parse=`auto`),!n.type)throw Error(`Format for the data source was not defined and it could not be inferred: `+JSON.stringify(e));return n}function jC(e){let t={...e};return(zC(t)||BC(t))&&t.columns&&!(`header`in t)&&(t.header=t.columns),t}function MC(e){return wo(e)?.responseType??`text`}function NC(e){if(Array.isArray(e)&&(e=e[0]),e){let t=FC(e).split(`/`).pop()?.toLowerCase();if(!t)return;let n=t.split(`.`);for(;n.length>1&&kC.has(n.at(-1));)n.pop();let r=n.at(-1);if(r&&wo(r))return r}}function PC(e){let t=FC(e).split(`/`).pop()?.toLowerCase();if(!t)return!1;let n=t.split(`.`).at(-1);return!!n&&kC.has(n)}function FC(e){return e.replace(/[?#].*$/,``)}var IC=e=>typeof e==`object`?RC:LC,LC=e=>({data:e}),RC=e=>e;function zC(e){return e.type==`csv`||e.type==`tsv`}function BC(e){return e.type==`dsv`}function VC(e){return`url`in e}function HC(e){return OC.has(e)}var UC,WC=n((()=>{UC=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize===void 0?this.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}})),GC,KC=n((()=>{GC=class{constructor({filehandle:e,renameRefSeqs:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async getMetadata(e={}){let{indices:t,...n}=await this.parse(e);return n}_findFirstData(e,t){return e?e.compareTo(t)>0?t:e:t}async parse(e={}){return this.parseP||=this._parse(e).catch(e=>{throw this.parseP=void 0,e}),this.parseP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices[e]?.binIndex}_parseNameBytes(e){let t=0,n=0,r=[],i={},a=new TextDecoder(`utf8`);for(let o=0;o<e.length;o+=1)if(!e[o]){if(n<o){let s=this.renameRefSeq(a.decode(e.subarray(n,o)));r[t]=s,i[s]=t}n=o+1,t+=1}return{refNameToId:i,refIdToName:r}}}}));function qC(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*YC+(n>>>0)}var JC,YC,XC=n((()=>{JC=65536,YC=JC*JC}));function ZC(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function QC(e,t){let n=[],r;if(e.length===0)return e;e.sort(function(e,t){let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});for(let i of e)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(n.push(i),r=i):ZC(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}var $C=n((()=>{}));function ew(e,t=0){return new tw(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var tw,nw=n((()=>{tw=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}}));function rw(e,t){return e*2**t}function iw(e,t){return Math.floor(e/2**t)}var aw,ow,sw,cw,lw=n((()=>{Yy(),WC(),KC(),XC(),$C(),nw(),aw=21582659,ow=38359875,sw={0:`generic`,1:`SAM`,2:`VCF`},cw=class extends GC{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];if(r===void 0||!n.indices[r])return-1;let{stats:i}=n.indices[r];return i?i.lineCount:-1}indexCov(){throw Error(`CSI indexes do not support indexcov`)}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a=sw[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):void 0,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0),{refIdToName:d,refNameToId:f}=this._parseNameBytes(e.subarray(t+28,t+28+u));return{refIdToName:d,refNameToId:f,skipLines:l,metaChar:c,columnNumbers:o,format:a,coordinateType:i}}async _parse(e={}){let t=await Vy(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r;if(n.getUint32(0,!0)===aw)r=1;else if(n.getUint32(0,!0)===ow)r=2;else throw Error(`Not a CSI file`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let i=2**(this.minShift+this.depth*3),a=n.getInt32(12,!0),o=a&&a>=30?this.parseAuxData(t,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:`zero-based-half-open`,format:`generic`},s=n.getInt32(16+a,!0),c,l=16+a+4,u=Array(s).fill(0).map(()=>{let e=n.getInt32(l,!0);l+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(l,!0);if(e>this.maxBinNumber)i=this.parsePseudoBin(t,l+4),l+=48;else{let i=ew(t,l+4);c=this._findFirstData(c,i);let a=n.getInt32(l+12,!0);l+=16;let o=Array(a);for(let n=0;n<a;n+=1){let r=ew(t,l),i=ew(t,l+8);l+=16,o[n]=new UC(r,i,e)}r[e]=o}}return{binIndex:r,stats:i}});return{...o,csi:!0,refCount:s,maxBlockSize:65536,firstDataLine:c,csiVersion:r,indices:u,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:i}}parsePseudoBin(e,t){return{lineCount:qC(e,t+28)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];let s=this.reg2bins(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new UC(e.minv,e.maxv,n));return QC(c,new tw(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=rw(1,n*3),n+=1){let n=r+iw(e,i),o=r+iw(t,i);if(o-n+a.length>this.maxBinNumber)throw Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,o])}return a}}}));function uw(e,t){return e+=1,--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var dw,fw,pw,mw=n((()=>{Yy(),WC(),KC(),XC(),$C(),nw(),dw=21578324,fw=14,pw=class extends GC{async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];return r===void 0||!n.indices[r]?-1:n.indices[r].stats?.lineCount??-1}async _parse(e={}){let t=await Vy(await this.filehandle.readFile(e)),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==dw)throw Error(`Not a TBI file`);let r=n.getUint32(4,!0),i=n.getUint32(8,!0),a=i&65536?`zero-based-half-open`:`1-based-closed`,o={0:`generic`,1:`SAM`,2:`VCF`}[i&15];if(!o)throw Error(`invalid Tabix preset format flags ${i}`);let s={ref:n.getInt32(12,!0),start:n.getInt32(16,!0),end:n.getInt32(20,!0)},c=n.getInt32(24,!0),l=((1<<18)-1)/7,u=2**29,d=c?String.fromCharCode(c):void 0,f=n.getInt32(28,!0),p=n.getInt32(32,!0),{refNameToId:m,refIdToName:h}=this._parseNameBytes(t.slice(36,36+p)),g=36+p,_;return{indices:Array(r).fill(0).map(()=>{let e=n.getInt32(g,!0);g+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(g,!0);if(g+=4,e>l+1)throw Error(`tabix index contains too many bins, please use a CSI index`);if(e===l+1){let e=n.getInt32(g,!0);g+=4,e===2&&(i=this.parsePseudoBin(t,g)),g+=16*e}else{let i=n.getInt32(g,!0);g+=4;let a=Array(i);for(let n=0;n<i;n+=1){let r=ew(t,g),i=ew(t,g+8);g+=16,_=this._findFirstData(_,r),a[n]=new UC(r,i,e)}r[e]=a}}let a=n.getInt32(g,!0);g+=4;let o=Array(a);for(let e=0;e<a;e+=1)o[e]=ew(t,g),g+=8,_=this._findFirstData(_,o[e]);return{binIndex:r,linearIndex:o,stats:i}}),metaChar:d,maxBinNumber:l,maxRefLength:u,skipLines:f,firstDataLine:_,columnNumbers:s,coordinateType:a,format:o,refIdToName:h,refNameToId:m,maxBlockSize:65536}}parsePseudoBin(e,t){return{lineCount:qC(e,t+16)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];(o.linearIndex.length>0?o.linearIndex[t>>fw>=o.linearIndex.length?o.linearIndex.length-1:t>>fw]:new tw(0,0))||console.warn(`querying outside of possible tabix range`);let s=uw(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new UC(e.minv,e.maxv,n));let l=o.linearIndex.length,u,d=Math.min(t>>14,l-1),f=Math.min(n>>14,l-1);for(let e=d;e<=f;++e){let t=o.linearIndex[e];t&&(!u||t.compareTo(u)<0)&&(u=t)}return QC(c,u)}}})),hw,gw=n((()=>{xb(),Yy(),Lb(),Mg(),lw(),mw(),hw=class{constructor({path:e,filehandle:t,url:n,tbiPath:r,tbiUrl:i,tbiFilehandle:a,csiPath:o,csiUrl:s,csiFilehandle:c,renameRefSeqs:l,chunkCacheSize:u=5*2**20}){this.cache=new Ib({maxSize:1e3});let d=l??(e=>e);if(t)this.filehandle=t;else if(e)this.filehandle=new jg(e);else if(n)this.filehandle=new Og(n);else throw TypeError(`must provide either filehandle or path`);if(a)this.index=new pw({filehandle:a,renameRefSeqs:d});else if(c)this.index=new cw({filehandle:c,renameRefSeqs:d});else if(r)this.index=new pw({filehandle:new jg(r),renameRefSeqs:d});else if(o)this.index=new cw({filehandle:new jg(o),renameRefSeqs:d});else if(e)this.index=new pw({filehandle:new jg(`${e}.tbi`),renameRefSeqs:d});else if(s)this.index=new cw({filehandle:new Og(s)});else if(i)this.index=new pw({filehandle:new Og(i)});else if(n)this.index=new pw({filehandle:new Og(`${n}.tbi`)});else throw TypeError(`must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl`);this.renameRefSeq=d,this.hasCustomRenameRefSeq=l!==void 0,this.chunkCache=new yb({cache:new Ib({maxSize:Math.floor(u/65536)}),fill:(e,t)=>this.readChunk(e,{signal:t})})}calculateFileOffset(e,t,n,r,i){return e[n]*256+(r-t[n])+i+1}async getLines(e,t,n,r){let i,a={},o;typeof r==`function`?o=r:(a=r,o=r.lineCallback,i=r.signal);let s=await this.index.getMetadata(a),c=t??0,l=n??s.maxRefLength;if(!(c<=l))throw TypeError(`invalid start and end coordinates. start must be less than or equal to end`);if(c===l)return;let u=await this.index.blocksForRange(e,c,l,a),d=new TextDecoder(`utf8`),f=s.format===`VCF`,p={ref:s.columnNumbers.ref||0,start:s.columnNumbers.start||0,end:f?8:s.columnNumbers.end||0},m=Math.max(p.ref,p.start,p.end),h=s.metaChar?.charCodeAt(0),g=s.coordinateType===`1-based-closed`?-1:0,_=!this.hasCustomRenameRefSeq;for(let t of u){let{buffer:n,cpositions:r,dpositions:a}=await this.chunkCache.get(t.toString(),t,i),s=0,u=0,v=d.decode(n);if(n.length==v.length)for(;s<v.length;){let n=v.indexOf(`
|
|
208
|
+
`,s);if(n===-1)break;let i=v.slice(s,n);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let d=this.checkLine(e,c,l,i,p.ref,p.start,p.end,m,h,g,f,_);if(d===null)return;d!==void 0&&o(i,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),d.start,d.end),s=n+1}else for(;s<n.length;){let i=n.indexOf(10,s);if(i===-1)break;let v=n.slice(s,i),y=d.decode(v);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let b=this.checkLine(e,c,l,y,p.ref,p.start,p.end,m,h,g,f,_);if(b===null)return;b!==void 0&&o(y,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),b.start,b.end),s=i+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){let{firstDataLine:t,metaChar:n,maxBlockSize:r}=await this.getMetadata(e),i=(t?.blockPosition||0)+r,a=await Vy(await this.filehandle.read(i,0,e));if(n){let e=-1,t=n.charCodeAt(0);for(let n=0,r=a.length;n<r;n++){let r=a[n];if(n===e+1&&r!==t)break;r===10&&(e=n)}return a.subarray(0,e+1)}return a}async getHeader(e={}){let t=new TextDecoder(`utf8`),n=await this.getHeaderBuffer(e);return t.decode(n)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}checkLine(e,t,n,r,i,a,o,s,c,l,u,d){if(c!==void 0&&r.charCodeAt(0)===c)return;if(r.length<500){let s=r.split(` `),c=s[i-1];if(!(d?c===e:this.renameRefSeq(c)===e))return;let f=+s[a-1]+l;if(f>=n)return null;let p;return p=o===0||o===a?f+1:u?this._getVcfEnd(f,s[3],s[o-1]):+s[o-1],p<=t?void 0:{start:f,end:p}}let f=-1,p=[-1];for(let e=0;e<s;e++){let e=r.indexOf(` `,f+1);if(e===-1){p.push(r.length);break}p.push(e),f=e}let m=r.slice(p[i-1]+1,p[i]);if(!(d?m===e:this.renameRefSeq(m)===e))return;let h=+r.slice(p[a-1]+1,p[a])+l;if(h>=n)return null;let g;if(g=o===0||o===a?h+1:u?this._getVcfEnd(h,r.slice(p[3]+1,p[4]),r.slice(p[o-1]+1,p[o])):+r.slice(p[o-1]+1,p[o]),!(g<=t))return{start:h,end:g}}_getVcfEnd(e,t,n){let r=e+t.length;if(n.includes(`SVTYPE=TRA`))return e+1;if(n[0]!==`.`){let e=n.indexOf(`END=`);if(e!==-1&&(e===0||n[e-1]===`;`)){let t=e+4,i=n.indexOf(`;`,t);i===-1&&(i=n.length),r=Number.parseInt(n.slice(t,i),10)}}return r}async lineCount(e,t={}){return this.index.lineCount(e,t)}async readChunk(e,t={}){return Hy(await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,t),e,this.cache)}}})),_w=r({CSI:()=>cw,TBI:()=>pw,TabixIndexedFile:()=>hw}),vw=n((()=>{gw(),lw(),mw()}));Yy();var yw=class extends xg{#e;constructor(e,t){let n={channel:`x`,windowSize:3e6,debounce:200,debounceMode:`domain`,addChrPrefix:!1,...e},r=pg(n.channel);if(super(t,r),this.params=vg(t.paramRuntime,n,e=>{e.has(`url`)||e.has(`indexUrl`)||e.has(`addChrPrefix`)?this.#t().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!pg(this.params.url))throw Error(`No URL provided for TabixSource`);this.setupDebouncing(this.params),this.#t()}#t(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(vw(),_w)),Promise.resolve().then(()=>(Mg(),Ag))]).then(async([{TabixIndexedFile:n},{RemoteFile:r}])=>{let i=e=>new r(ih(e,this.view.getBaseUrl())),a=pg(this.params.url),o=pg(this.params.indexUrl)??a+`.tbi`,s=pg(this.params.addChrPrefix);this.#e=new n({filehandle:i(a),tbiFilehandle:i(o),renameRefSeqs:s===!0?e=>`chr`+e:s?e=>s+e:void 0});try{this.setLoadingStatus(`loading`);let t=await this.#e.getHeader();await this._handleHeader(t),this.setLoadingStatus(`complete`),e()}catch(e){this.load(),this.setLoadingStatus(`error`,`${pg(this.params.url)}: ${e.message}`),t(e)}})}),this.initializedPromise}async loadInterval(e){await this.initializedPromise;let t=await this.discretizeAndLoad(e,async(e,t)=>{let n=[];return await this.#e.getLines(e.chrom,e.startPos,e.endPos,{lineCallback:e=>{n.push(e)},signal:t}),this._parseFeatures(n)});t&&this.publishData(t)}async _handleHeader(e){}async _readFilePrefix(){let{maxBlockSize:e}=await this.#e.getMetadata(),t=await Vy(await this.#e.filehandle.read(e,0));return new TextDecoder(`utf-8`).decode(t)}_parseFeatures(e){return[]}};function bw(e){let t=e.split(/\r?\n/);for(let e=t.length-1;e>=0;e--){let n=t[e].trimEnd().replace(/\r$/,``);if(!n||n.startsWith(`##`)||!n.startsWith(`#`))continue;let r=n.slice(1).split(` `);if(r.length>1)return r}}function xw(e){let t=e.split(/\r?\n/).find(e=>{let t=e.trimStart();return t!==``&&!t.startsWith(`#`)});if(!t)return;let n=t.trimEnd().replace(/\r$/,``).split(` `);if(n.length>1)return n}function Sw(e,t,n){if(e.length==0)return[];let r={type:`tsv`,columns:t,parse:n??`auto`},i=To(e.join(`
|
|
209
|
+
`),jC(r)),a=t[0],o=null,s=``;for(let e of i){let t=e[a];t!=o&&(o=t,s=String(t)),e[a]=s}return i}var Cw=class extends yw{#e;get label(){return`tabixSource`}async _handleHeader(e){let t=this.params;if(this.#e=pg(t.columns)??bw(e),this.#e?.length||(this.#e=xw(await this._readFilePrefix())),!this.#e?.length)throw Error(`No columns available for Tabix TSV source. Provide data.lazy.columns or a tabix header line such as #chrom\\tstart\\tend, or a plain first row such as chrom\\tstart\\tend.`)}_parseFeatures(e){let t=this.params;return Sw(e,this.#e??[],pg(t.parse))}};function ww(e){return e?.type==`tabix`}Gm(ww,Cw);function Tw(e){let t=e.indexOf(`%`);if(t===-1)return e;let n=``,r=0,i=t;for(;i<e.length;)if(e[i]===`%`&&i+2<e.length){n+=e.slice(r,i);let t=Lw[e.slice(i+1,i+3)];t===void 0?n+=e.slice(i,i+3):n+=t,i+=3,r=i}else i++;return n+e.slice(r)}function Ew(e){if(e.length===0||e===`.`)return{};let t={},n=e.length;e[n-1]===`
|
|
210
|
+
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);if((t===-1||t>i)&&(t=i),t>s){let n=e.slice(s,t);o.push(Tw(n))}s=t+1}}}r=i+1}return t}function Dw(e){if(e.length===0||e===`.`)return{};let t={},n=e.length;e[n-1]===`
|
|
211
|
+
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);(t===-1||t>i)&&(t=i),t>s&&o.push(e.slice(s,t)),s=t+1}}}r=i+1}return t}function Ow(e){return e.length===0||e===`.`?null:Tw(e)}function kw(e){return e.length===0||e===`.`?null:e}function Aw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return{seq_id:Ow(n),source:Ow(r),type:Ow(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:kw(c),phase:kw(l),attributes:u.length===0||u===`.`?null:Ew(u)}}function jw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return{seq_id:kw(n),source:kw(r),type:kw(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:kw(c),phase:kw(l),attributes:u.length===0||u===`.`?null:Dw(u)}}function Mw(e){if(e===`+`)return 1;if(e===`-`)return-1;if(e===`.`)return 0}function Nw(e,t){if(e.length===0||e===`.`)return;let n=e.length;e[n-1]===`
|
|
212
|
+
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();Rw.has(o)&&(o+=`2`);let s=[],c=n+1;for(;c<i;){let t=e.indexOf(`,`,c);if((t===-1||t>i)&&(t=i),t>c){let n=e.slice(c,t);s.push(Tw(n))}c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function Pw(e,t){if(e.length===0||e===`.`)return;let n=e.length;e[n-1]===`
|
|
213
|
+
`&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();Rw.has(o)&&(o+=`2`);let s=[],c=n+1;for(;c<i;){let t=e.indexOf(`,`,c);(t===-1||t>i)&&(t=i),t>c&&s.push(e.slice(c,t)),c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function Fw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d={refName:n.length===0||n===`.`?``:Tw(n),source:r.length===0||r===`.`?null:Tw(r),type:i.length===0||i===`.`?null:Tw(i),start:a.length===0||a===`.`?0:a-1,end:o.length===0||o===`.`?0:+o,score:s.length===0||s===`.`?void 0:+s,strand:Mw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return Nw(u,d),d}function Iw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d={refName:n.length===0||n===`.`?``:n,source:r.length===0||r===`.`?null:r,type:i.length===0||i===`.`?null:i,start:a.length===0||a===`.`?0:a-1,end:o.length===0||o===`.`?0:+o,score:s.length===0||s===`.`?void 0:+s,strand:Mw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return Pw(u,d),d}var Lw,Rw,zw=n((()=>{Lw={};for(let e=0;e<256;e++){let t=e.toString(16).toUpperCase().padStart(2,`0`);Lw[t]=String.fromCharCode(e),Lw[t.toLowerCase()]=String.fromCharCode(e)}Rw=new Set([`start`,`end`,`seq_id`,`score`,`type`,`source`,`phase`,`strand`])}));function Bw(e){return Uw(Hw(e))}function Vw(e){return Ww(Hw(e))}function Hw(e){let t=e.split(/\r?\n/),n=[];for(let e=0;e<t.length;e++){let r=t[e];if(r.length===0||r[0]===`#`){if(r.startsWith(`##FASTA`))break;continue}if(r[0]===`>`)break;n.push({line:r,start:0,end:0,hasEscapes:r.includes(`%`)})}return n}function Uw(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?Aw(a.line):jw(a.line);o.child_features=[],o.derived_features=[],a.lineHash!==void 0&&(o.attributes||={},o.attributes._lineHash=[String(a.lineHash)]);let s=o.attributes,c=s?.ID,l=s?.Parent;if(!c&&!l){t.push([o]);continue}let u;if(c){let e=c[0],i=n.get(e);if(i)i.push(o),u=i;else{u=[o],l||t.push(u),n.set(e,u);let i=r.get(e);if(i){for(let e=0;e<i.length;e++)o.child_features.push(i[e]);r.delete(e)}}}else u=[o];if(l)for(let e=0;e<l.length;e++){let t=l[e],i=n.get(t);if(i)for(let e=0;e<i.length;e++)i[e].child_features.push(u);else{let e=r.get(t);e||(e=[],r.set(t,e)),e.push(u)}}}return t}function Ww(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?Fw(a.line):Iw(a.line);a.lineHash!==void 0&&(o._lineHash=String(a.lineHash));let s=o.id,c=o.parent;if(!s&&!c){t.push(o);continue}if(s&&!n.get(s)){c||t.push(o),n.set(s,o);let e=r.get(s);if(e){for(let t=0;t<e.length;t++)o.subfeatures.push(e[t]);r.delete(s)}}if(c){let e=Array.isArray(c)?c:[c];for(let t=0;t<e.length;t++){let i=e[t],a=n.get(i);if(a)a.subfeatures.push(o);else{let e=r.get(i);e||(e=[],r.set(i,e)),e.push(o)}}}}return t}var Gw=n((()=>{zw()})),Kw=r({parseRecords:()=>Uw,parseRecordsJBrowse:()=>Ww,parseStringSync:()=>Bw,parseStringSyncJBrowse:()=>Vw}),qw=n((()=>{Gw()})),Jw=class extends yw{#e;get label(){return`gff3Source`}async _handleHeader(e){this.#e=await Promise.resolve().then(()=>(qw(),Kw))}_parseFeatures(e){return this.#e?.parseStringSync(e.join(`
|
|
214
|
+
`))}};function Yw(e){return e?.type==`gff3`}Gm(Yw,Jw);function Xw(e,t,n){let r=Object.create(null),i=n.length,a=t.length,o=0;if(e===`GT`){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==9;)o++;r[n[e]]=t.slice(i,o),o++}return r}let s=e.indexOf(`GT`);if(s===-1)return r;if(s===0){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==58&&t.charCodeAt(o)!==9;)o++;for(r[n[e]]=t.slice(i,o);o<a&&t.charCodeAt(o)!==9;)o++;o++}return r}let c=0;for(let t=0;t<s;t++)e.charCodeAt(t)===58&&c++;for(let e=0;e<i;e++){let i=o,s=o;for(;s<a&&t.charCodeAt(s)!==9;)s++;let l=0,u=i;for(let a=i;a<=s;a++)if(a===s||t.charCodeAt(a)===58){if(l===c){r[n[e]]=t.slice(u,a);break}l++,u=a+1}o=s+1}return r}var Zw=n((()=>{}));function Qw(e,t,n,r){let i=t.length,a=0;if(e===`GT`){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==9;)a++;r(t,e,a),a++}return}let o=e.indexOf(`GT`);if(o===-1)return;if(o===0){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==58&&t.charCodeAt(a)!==9;)a++;for(r(t,e,a);a<i&&t.charCodeAt(a)!==9;)a++;a++}return}let s=0;for(let t=0;t<o;t++)e.charCodeAt(t)===58&&s++;for(let e=0;e<n;e++){let e=a,n=a;for(;n<i&&t.charCodeAt(n)!==9;)n++;let o=0,c=e;for(let i=e;i<=n;i++)if(i===n||t.charCodeAt(i)===58){if(o===s){r(t,c,i);break}o++,c=i+1}a=n+1}}var $w=n((()=>{}));function eT(e){try{return decodeURIComponent(e)}catch{return e}}var tT,nT=n((()=>{Zw(),$w(),tT=class{constructor(e,t,n,r,i){let a=0,o=0;for(;a<e.length&&o<9;)e[a]===` `&&(o+=1),a+=1;let s=o===9?a-1:a,c=e.slice(0,s).split(` `),l=e.slice(s+1),[u,d,f,p,m,h,g]=c,_=g===`.`?void 0:g.split(`;`);if(i&&!c[7])throw Error(`no INFO field specified, must contain at least a '.' (turn off strict mode to allow)`);this.CHROM=u,this.POS=+d,this.ID=f===`.`?void 0:f.split(`;`),this.REF=p,this.ALT=m===`.`?void 0:m.split(`,`),this.QUAL=h===`.`?void 0:+h,this.FILTER=_?.length===1&&_[0]===`PASS`?`PASS`:_,this.INFO=c[7]===void 0||c[7]===`.`?{}:this.parseInfo(c[7],t),this.FORMAT=c[8],this.formatMeta=n,this.rest=l,this.sampleNames=r}parseInfo(e,t){let n={},r=e.includes(`%`),i=e.split(`;`),a=i.length;for(let e=0;e<a;e++){let a=i[e],o=a.indexOf(`=`),s=o===-1?a:a.slice(0,o),c=o===-1?void 0:a.slice(o+1),l=t[s]?.Type;if(l===`Flag`)n[s]=!0;else if(!c)n[s]=!0;else{let e=l===`Integer`||l===`Float`,t=c.split(`,`),i=t.length;if(r){let r=[];for(let n=0;n<i;n++){let i=t[n];if(i===`.`)r.push(void 0);else{let t=eT(i);r.push(e?Number(t):t)}}n[s]=r}else{let r=[];for(let n=0;n<i;n++){let i=t[n];i===`.`?r.push(void 0):r.push(e?Number(i):i)}n[s]=r}}}return n}SAMPLES(){let e={},t=this.FORMAT;if(t){let n=this.rest.split(` `),r=t.split(`:`),i=[];for(let e=0;e<r.length;e++){let t=this.formatMeta[r[e]]?.Type;i.push(t===`Integer`||t===`Float`)}let a=r.length,o=this.sampleNames.length;for(let t=0;t<o;t++){let o=this.sampleNames[t],s={},c=n[t],l=c.length,u=0,d=0;for(let e=0;e<=l;e++)if(e===l||c[e]===`:`){let t=c.slice(u,e);if(t===``||t===`.`)s[r[d]]=void 0;else{let e=t.split(`,`),n=[];if(i[d])for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:+r)}else for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:r)}s[r[d]]=n}if(u=e+1,d+=1,d>=a)break}e[o]=s}}return e}GENOTYPES(){return Xw(this.FORMAT??``,this.rest,this.sampleNames)}processGenotypes(e){Qw(this.FORMAT??``,this.rest,this.sampleNames.length,e)}toJSON(){return{CHROM:this.CHROM,POS:this.POS,ID:this.ID,REF:this.REF,ALT:this.ALT,QUAL:this.QUAL,FILTER:this.FILTER,INFO:this.INFO,FORMAT:this.FORMAT}}}}));function rT(e){let t=[],n=[],r=!1,i=!1,a=e.length;for(let o=0;o<a;o++){let a=e[o];a===`"`?(r=!r,n.push(a)):a===`[`?(i=!0,n.push(a)):a===`]`?(i=!1,n.push(a)):a===`,`&&!r&&!i?(t.push(n.join(``).trim()),n.length=0):n.push(a)}return n.length>0&&t.push(n.join(``).trim()),t}function iT(e,t){let n=e.indexOf(t);return[e.slice(0,n),e.slice(n+1)]}function aT(e){let t=rT(e.slice(1,-1)),n=[];for(let e=0;e<t.length;e++){let r=t[e],[i,a]=iT(r,`=`);if(a&&a.startsWith(`[`)&&a.endsWith(`]`)){let e=a.slice(1,-1).split(`,`);for(let t=0;t<e.length;t++)e[t]=e[t].trim();n.push([i,e])}else a&&a.startsWith(`"`)&&a.endsWith(`"`)?n.push([i,a.slice(1,-1)]):n.push([i,a])}return Object.fromEntries(n)}var oT=n((()=>{})),sT,cT=n((()=>{sT={InfoFields:{AA:{Number:1,Type:`String`,Description:`Ancestral allele`},AC:{Number:`A`,Type:`Integer`,Description:`Allele count in genotypes, for each ALT allele, in the same order as listed`},AD:{Number:`R`,Type:`Integer`,Description:`Total read depth for each allele`},ADF:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the forward strand`},ADR:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the reverse strand`},AF:{Number:`A`,Type:`Float`,Description:`Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)`},AN:{Number:1,Type:`Integer`,Description:`Total number of alleles in called genotypes`},BQ:{Number:1,Type:`Float`,Description:`RMS base quality`},CIGAR:{Number:1,Type:`Float`,Description:`Cigar string describing how to align an alternate allele to the reference allele`},DB:{Number:0,Type:`Flag`,Description:`dbSNP membership`},DP:{Number:1,Type:`Integer`,Description:`combined depth across samples`},END:{Number:1,Type:`Integer`,Description:`End position (for use with symbolic alleles)`},H2:{Number:0,Type:`Flag`,Description:`HapMap2 membership`},H3:{Number:0,Type:`Flag`,Description:`HapMap3 membership`},MQ:{Number:1,Type:null,Description:`RMS mapping quality`},MQ0:{Number:1,Type:`Integer`,Description:`Number of MAPQ == 0 reads`},NS:{Number:1,Type:`Integer`,Description:`Number of samples with data`},SB:{Number:4,Type:`Integer`,Description:`Strand bias`},SOMATIC:{Number:0,Type:`Flag`,Description:`Somatic mutation (for cancer genomics)`},VALIDATED:{Number:0,Type:`Flag`,Description:`Validated by follow-up experiment`},"1000G":{Number:0,Type:`Flag`,Description:`1000 Genomes membership`},IMPRECISE:{Number:0,Type:`Flag`,Description:`Imprecise structural variation`},NOVEL:{Number:0,Type:`Flag`,Description:`Indicates a novel structural variation`},SVTYPE:{Number:1,Type:`String`,Description:`Type of structural variant`},SVLEN:{Number:null,Type:`Integer`,Description:`Difference in length between REF and ALT alleles`},CIPOS:{Number:2,Type:`Integer`,Description:`Confidence interval around POS for imprecise variants`},CIEND:{Number:2,Type:`Integer`,Description:`Confidence interval around END for imprecise variants`},HOMLEN:{Type:`Integer`,Description:`Length of base pair identical micro-homology at event breakpoints`},HOMSEQ:{Type:`String`,Description:`Sequence of base pair identical micro-homology at event breakpoints`},BKPTID:{Type:`String`,Description:`ID of the assembled alternate allele in the assembly file`},MEINFO:{Number:4,Type:`String`,Description:`Mobile element info of the form NAME,START,END,POLARITY`},METRANS:{Number:4,Type:`String`,Description:`Mobile element transduction info of the form CHR,START,END,POLARITY`},DGVID:{Number:1,Type:`String`,Description:`ID of this element in Database of Genomic Variation`},DBVARID:{Number:1,Type:`String`,Description:`ID of this element in DBVAR`},DBRIPID:{Number:1,Type:`String`,Description:`ID of this element in DBRIP`},MATEID:{Number:null,Type:`String`,Description:`ID of mate breakends`},PARID:{Number:1,Type:`String`,Description:`ID of partner breakend`},EVENT:{Number:1,Type:`String`,Description:`ID of event associated to breakend`},CILEN:{Number:2,Type:`Integer`,Description:`Confidence interval around the inserted material between breakend`},DPADJ:{Type:`Integer`,Description:`Read Depth of adjacency`},CN:{Number:1,Type:`Integer`,Description:`Copy number of segment containing breakend`},CNADJ:{Number:null,Type:`Integer`,Description:`Copy number of adjacency`},CICN:{Number:2,Type:`Integer`,Description:`Confidence interval around copy number for the segment`},CICNADJ:{Number:null,Type:`Integer`,Description:`Confidence interval around copy number for the adjacency`}},GenotypeFields:{AD:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele`},ADF:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the forward strand`},ADR:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the reverse strand`},DP:{Number:1,Type:`Integer`,Description:`Read depth`},EC:{Number:`A`,Type:`Integer`,Description:`Expected alternate allele counts`},FT:{Number:1,Type:`String`,Description:`Filter indicating if this genotype was "called"`},GL:{Number:`G`,Type:`Float`,Description:`Genotype likelihoods`},GP:{Number:`G`,Type:`Float`,Description:`Genotype posterior probabilities`},GQ:{Number:1,Type:`Integer`,Description:`Conditional genotype quality`},GT:{Number:1,Type:`String`,Description:`Genotype`},HQ:{Number:2,Type:`Integer`,Description:`Haplotype quality`},MQ:{Number:1,Type:`Integer`,Description:`RMS mapping quality`},PL:{Number:`G`,Type:`Integer`,Description:`Phred-scaled genotype likelihoods rounded to the closest integer`},PQ:{Number:1,Type:`Integer`,Description:`Phasing quality`},PS:{Number:1,Type:`Integer`,Description:`Phase set`}},AltTypes:{DEL:{Description:`Deletion relative to the reference`},INS:{Description:`Insertion of novel sequence relative to the reference`},DUP:{Description:`Region of elevated copy number relative to the reference`},INV:{Description:`Inversion of reference sequence`},CNV:{Description:`Copy number variable region (may be both deletion and duplication)`},"DUP:TANDEM":{Description:`Tandem duplication`},"DEL:ME":{Description:`Deletion of mobile element relative to the reference`},"INS:ME":{Description:`Insertion of a mobile element relative to the reference`},NON_REF:{Description:`Represents any possible alternative allele at this location`},"*":{Description:`Represents any possible alternative allele at this location`}},FilterTypes:{PASS:{Description:`Passed all filters`}}}})),lT,uT=n((()=>{nT(),oT(),cT(),lT=class{constructor({header:e,strict:t=!0}){if(!e.length)throw Error(`empty header received`);let n=e.split(/[\r\n]+/).filter(Boolean);if(!n.length)throw Error(`no non-empty header lines specified`);this.strict=t,this.metadata={INFO:{...sT.InfoFields},FORMAT:{...sT.GenotypeFields},ALT:{...sT.AltTypes},FILTER:{...sT.FilterTypes}};let r;for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith(`#`))t.startsWith(`##`)?this.parseMetadata(t):r=t;else throw Error(`Bad line in header:\n${t}`)}if(!r)throw Error(`No format line found in header`);let i=r.trim().split(` `),a=i.slice(0,8),o=[`#CHROM`,`POS`,`ID`,`REF`,`ALT`,`QUAL`,`FILTER`,`INFO`];if(i.length<8)throw Error(`VCF header missing columns:\n${r}`);if(a.length!==o.length||!a.every((e,t)=>e===o[t]))throw Error(`VCF column headers not correct:\n${r}`);this.samples=i.slice(9)}parseMetadata(e){let t=/^##(.+?)=(.*)/.exec(e.trim());if(!t)throw Error(`Line is not a valid metadata line: ${e}`);let[n,r]=t.slice(1,3),i=n;if(r?.startsWith(`<`)){i in this.metadata||(this.metadata[i]={});let[e,t]=this.parseStructuredMetaVal(r);e?this.metadata[i][e]=t:this.metadata[i]=t}else this.metadata[i]=r}parseStructuredMetaVal(e){let t=aT(e),n=t.ID;return delete t.ID,`Number`in t&&(Number.isNaN(Number(t.Number))||(t.Number=Number(t.Number))),[n,t]}getMetadata(...e){let t=this.metadata,n=e.length;for(let r=0;r<n;r++)if(t=t[e[r]],!t)return t;return t}parseLine(e){return new tT(e,this.metadata.INFO,this.metadata.FORMAT,this.samples,this.strict)}}}));function dT(e){let t=e[0],n=e[e.length-1];if(t===`[`||t===`]`||n===`[`||n===`]`){let t=e.split(/[[\]]/),n=e.includes(`[`)?`right`:`left`,r,i,a,o=t.length;for(let e=0;e<o;e++){let n=t[e];n&&(n.includes(`:`)?(a=n,r=i?`right`:`left`):i=n)}if(!(a&&r&&i))throw Error(`Invalid breakend: ${e}`);return{MatePosition:a,Join:r,Replacement:i,MateDirection:n}}if(t===`.`)return{Join:`left`,SingleBreakend:!0,Replacement:e.slice(1)};if(n===`.`)return{Join:`right`,SingleBreakend:!0,Replacement:e.slice(0,-1)};if(t===`<`){let t=fT.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[2];return n?{Join:`left`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[1]}>:1`}:void 0}if(e.includes(`<`)){let t=pT.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[1];return n?{Join:`right`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[2]}>:1`}:void 0}}var fT,pT,mT=n((()=>{fT=/<(.*)>(.*)/,pT=/(.*)<(.*)>/})),hT=r({Variant:()=>tT,default:()=>lT,parseBreakend:()=>dT}),gT=n((()=>{nT(),uT(),mT()})),_T=class extends yw{#e;get label(){return`vcfSource`}async _handleHeader(e){let t=(await Promise.resolve().then(()=>(gT(),hT))).default;this.#e=new t({header:e})}_parseFeatures(e){return e.map(e=>{let t=this.#e.parseLine(e);return delete t.GENOTYPES,t.SAMPLES=t.SAMPLES(),t})}};function vT(e){return e?.type==`vcf`}Gm(vT,_T);var yT=`
|
|
214
215
|
@scope {
|
|
215
216
|
:scope {
|
|
216
217
|
--genome-spy-basic-spacing: 10px;
|
|
@@ -390,6 +391,14 @@ background-color: #e0e0e0;
|
|
|
390
391
|
}
|
|
391
392
|
}
|
|
392
393
|
|
|
394
|
+
.autoscroll-container {
|
|
395
|
+
max-height: min(40em, 50vh);
|
|
396
|
+
overflow-x: hidden;
|
|
397
|
+
overflow-y: auto;
|
|
398
|
+
padding-right: var(--genome-spy-basic-spacing);
|
|
399
|
+
margin-right: calc(-1 * var(--genome-spy-basic-spacing));
|
|
400
|
+
}
|
|
401
|
+
|
|
393
402
|
.na {
|
|
394
403
|
color: #aaa;
|
|
395
404
|
font-style: italic;
|
|
@@ -463,46 +472,46 @@ background: #fff0f0;
|
|
|
463
472
|
}
|
|
464
473
|
}
|
|
465
474
|
}
|
|
466
|
-
`;function
|
|
475
|
+
`;function bT(e,t){var n=e.getBoundingClientRect();return[t.clientX-n.left-e.clientLeft,t.clientY-n.top-e.clientTop]}var xT=class{#e=!1;#t=!0;#n=void 0;#r=0;#i=void 0;#a=0;#o;#s;#c=[!0];constructor(e){this.#s=e,this.#o=document.createElement(`div`),this.#o.className=`tooltip`,this.#s.appendChild(this.#o),this.clear()}set sticky(e){!e&&this.#e&&this.clear(),this.#e=e,this.#o.classList.toggle(`sticky`,this.#e)}get sticky(){return this.#e}set visible(e){e!=this.#t&&(this.#o.style.display=e?null:`none`,this.#t=e)}get visible(){return this.#t}get enabled(){return Zl(this.#c)??!0}pushEnabledState(e){this.#c.push(e),e||(this.visible=!1)}popEnabledState(){this.#c.pop()}handleMouseMove(e){if(this.#e)return;this.mouseCoords=bT(this.#s,e);let t=performance.now();!this.visible&&!this._isPenalty()&&t-this.#a>500&&(this.#r=t+70),this.#i&&CT(this.mouseCoords,this.#i)>20&&(this.#r=t+400),this.#i=this.mouseCoords,this.visible&&this.updatePlacement(),this.#a=t}updatePlacement(){let[e,t]=this.mouseCoords,n=e+20;n>this.#s.clientWidth-this.#o.offsetWidth&&(n=e-20-this.#o.offsetWidth),this.#o.style.left=n+`px`,this.#o.style.top=Math.min(t+20,this.#s.clientHeight-this.#o.offsetHeight)+`px`}setContent(e){if(!this.#e){if(!e||!this.enabled||this._isPenalty()){this.visible&&=(Ie(``,this.#o),!1),this.#n=void 0;return}Ie(e,this.#o),this.#o.querySelectorAll(`.autoscroll-container`).forEach(ST),this.visible=!0,this.updatePlacement()}}clear(){this.#n=void 0,this.setContent(void 0)}updateWithDatum(e,t){if(e!==this.#n){this.#n=e,t||=e=>Promise.resolve(O` ${JSON.stringify(e)} `);let n=e;t(e).then(e=>{this.#n===n&&this.setContent(e)}).catch(e=>{if(e!==`debounced`)throw e})}}_isPenalty(){return this.#r&&this.#r>performance.now()}};function ST(e){e&&queueMicrotask(()=>{e.querySelector(`tr.hovered`)?.scrollIntoView({block:`nearest`,inline:`nearest`})})}function CT(e,t){let n=0;for(let r=0;r<e.length;r++)n+=(e[r]-t[r])**2;return Math.sqrt(n)}function wT(e){e.classList.add(`genome-spy`);let t=document.createElement(`style`);t.innerHTML=yT,e.appendChild(t);let n=ET(`div`,{class:`canvas-wrapper`});return e.appendChild(n),n.classList.add(`loading`),{canvasWrapper:n,loadingIndicatorsElement:ET(`div`,{class:`loading-indicators`}),tooltip:new xT(e),styleElement:t}}function TT(e,t){let n=document.createElement(`div`);n.className=`message-box`;let r=document.createElement(`div`);r.textContent=t,n.appendChild(r),e.appendChild(n)}function ET(e,t){let n=document.createElement(e);for(let[e,r]of Object.entries(t))[`innerHTML`,`innerText`,`className`].includes(e)&&(n[e]=r),n.setAttribute(e,r);return n}var DT={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},OT=e=>(...t)=>({_$litDirective$:e,values:t}),kT=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},AT=`important`,jT=` !`+AT,MT=OT(class extends kT{constructor(e){if(super(e),e.type!==DT.ATTRIBUTE||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`},``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(jT);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?AT:``):n[e]=r}}return be}}),NT=`data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3cstyle%3e.spinner_ajPY{transform-origin:center;animation:spinner_AtaB%20.75s%20infinite%20linear}@keyframes%20spinner_AtaB{100%25{transform:rotate(360deg)}}%3c/style%3e%3cpath%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z'%20opacity='.25'/%3e%3cpath%20d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%20class='spinner_ajPY'/%3e%3c/svg%3e`,PT=class{#e;#t;#n=null;constructor(e,t){this.#e=e,this.#t=t,this.#n=this.#t.subscribe(()=>this.updateLayout()),this.updateLayout()}destroy(){this.#n&&=(this.#n(),null)}updateLayout(){let e=[],t=()=>{for(let[,e]of this.#t.entries())if(e.status==`loading`||e.status==`error`)return!0;return!1},n,r=!1;for(let[t,i]of this.#t.entries()){let a=i.status==`loading`||i.status==`error`,o=t.coords;if(!o&&a&&!n&&(n=i),o){a&&(r=!0);let t={left:`${o.x}px`,top:`${o.y}px`,width:`${o.width}px`,height:`${o.height}px`};e.push(O`<div style=${MT(t)}>
|
|
467
476
|
<div class=${i.status}>
|
|
468
|
-
${i.status==`error`?
|
|
477
|
+
${i.status==`error`?O`<span
|
|
469
478
|
>Loading
|
|
470
|
-
failed${i.detail?
|
|
471
|
-
>`:
|
|
472
|
-
<img src="${
|
|
479
|
+
failed${i.detail?O`: ${i.detail}`:xe}</span
|
|
480
|
+
>`:O`
|
|
481
|
+
<img src="${NT}" alt="" />
|
|
473
482
|
<span>Loading...</span>
|
|
474
483
|
`}
|
|
475
484
|
</div>
|
|
476
|
-
</div>`)}}n&&!r&&e.push(
|
|
485
|
+
</div>`)}}n&&!r&&e.push(O`<div style=${MT({left:`0px`,top:`0px`,width:`100%`,height:`100%`})}>
|
|
477
486
|
<div class=${n.status}>
|
|
478
|
-
${n.status==`error`?
|
|
487
|
+
${n.status==`error`?O`<span
|
|
479
488
|
>Loading
|
|
480
|
-
failed${n.detail?
|
|
481
|
-
>`:
|
|
482
|
-
<img src="${
|
|
489
|
+
failed${n.detail?O`: ${n.detail}`:xe}</span
|
|
490
|
+
>`:O`
|
|
491
|
+
<img src="${NT}" alt="" />
|
|
483
492
|
<span>Loading...</span>
|
|
484
493
|
`}
|
|
485
494
|
</div>
|
|
486
|
-
</div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),
|
|
495
|
+
</div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),Ie(e,this.#e)}},FT=class{#e=new Map;#t=new Set;set(e,t,n){if(!e)throw Error(`LoadingStatusRegistry.set requires a view.`);this.#e.set(e,{status:t,detail:n});let r={view:e,status:t,detail:n};for(let e of this.#t)e(r)}delete(e){let t=this.#e.get(e);if(!t)return;this.#e.delete(e);let n={view:e,status:t.status,detail:t.detail};for(let e of this.#t)e(n)}get(e){return this.#e.get(e)}entries(){return this.#e.entries()}subscribe(e){return this.#t.add(e),()=>{this.#t.delete(e)}}};function IT(e){return t=>{if(e.querySelector(`.view-highlight`)?.remove(),t){if(!t.isVisible())return;let n=t.coords;if(n){let t=document.createElement(`div`);t.className=`view-highlight`,t.style.position=`absolute`,t.style.left=n.x+`px`,t.style.top=n.y+`px`,t.style.width=n.width+`px`,t.style.height=n.height+`px`,t.style.border=`1px solid green`,t.style.backgroundColor=`rgba(0, 255, 0, 0.05)`,t.style.pointerEvents=`none`,e.appendChild(t)}}}}var LT=class{#e;constructor(){this.#e=new Map}add(e,t){document.addEventListener(e,t);let n=this.#e.get(e);n||(n=[],this.#e.set(e,n)),n.push(t)}removeAll(){for(let[e,t]of this.#e)for(let n of t)document.removeEventListener(e,n);this.#e.clear()}},RT=class{#e;constructor(){this.#e=new Map}add(e,t){let n=this.#e.get(e);n||(n=new Set,this.#e.set(e,n)),n.add(t)}remove(e,t){this.#e.get(e)?.delete(t)}emit(e,t){this.#e.get(e)?.forEach(e=>e(t))}};function zT(e){let t=Math.floor(Math.random()*16777215).toString(16),n=[];for(let r of e.paramConfigs.values()){if(!mg(r))continue;let i=r.bind;if(!i||!(`input`in i))continue;let a=r.name,o=t=>{e.setValue(a,t)},s=e.getValue(a),c=i.name??a,l=i.debounce?bg(o,i.debounce,!1):o,u=`${t}-param-${a}`;if(i.input==`range`)n.push(O`<label for=${u}>${c}</label>
|
|
487
496
|
<div>
|
|
488
497
|
<input
|
|
489
498
|
id=${u}
|
|
490
499
|
type="range"
|
|
491
500
|
min=${i.min??0}
|
|
492
501
|
max=${i.max??100}
|
|
493
|
-
step=${i.step??
|
|
502
|
+
step=${i.step??Mn(i.min,i.max,100)}
|
|
494
503
|
.value=${s}
|
|
495
504
|
@input=${e=>{l(e.target.valueAsNumber),e.target.nextElementSibling.textContent=e.target.valueAsNumber}}
|
|
496
505
|
/><span>${s}</span>
|
|
497
|
-
</div>`);else if(i.input==`checkbox`)n.push(
|
|
506
|
+
</div>`);else if(i.input==`checkbox`)n.push(O`<label for=${u}>${c}</label>
|
|
498
507
|
<input
|
|
499
508
|
id=${u}
|
|
500
509
|
type="checkbox"
|
|
501
510
|
?checked=${s}
|
|
502
511
|
@input=${e=>l(e.target.checked)}
|
|
503
|
-
/>`);else if(i.input==`radio`)n.push(
|
|
512
|
+
/>`);else if(i.input==`radio`)n.push(O`<span class="label">${c}</span>
|
|
504
513
|
<div class="radio-group">
|
|
505
|
-
${i.options.map((e,t)=>
|
|
514
|
+
${i.options.map((e,t)=>O`<label>
|
|
506
515
|
<input
|
|
507
516
|
type="radio"
|
|
508
517
|
name=${a}
|
|
@@ -511,18 +520,18 @@ background: #fff0f0;
|
|
|
511
520
|
@input=${e=>l(e.target.value)}
|
|
512
521
|
/>${i.labels?.[t]??e}</label
|
|
513
522
|
>`)}
|
|
514
|
-
</div>`);else if(i.input==`select`)n.push(
|
|
523
|
+
</div>`);else if(i.input==`select`)n.push(O`<label for=${u}>${c}</label>
|
|
515
524
|
<select
|
|
516
525
|
id=${u}
|
|
517
526
|
@input=${e=>l(e.target.value)}
|
|
518
527
|
>
|
|
519
|
-
${i.options.map((e,t)=>
|
|
528
|
+
${i.options.map((e,t)=>O`<option
|
|
520
529
|
value=${e}
|
|
521
530
|
?selected=${s==e}
|
|
522
531
|
>
|
|
523
532
|
${i.labels?.[t]??e}
|
|
524
533
|
</option>`)}
|
|
525
|
-
</select> `);else if(i.input==`text`||i.input==`number`||i.input==`color`)n.push(
|
|
534
|
+
</select> `);else if(i.input==`text`||i.input==`number`||i.input==`color`)n.push(O`<label for=${u}>${c}</label>
|
|
526
535
|
<div>
|
|
527
536
|
<input
|
|
528
537
|
id=${u}
|
|
@@ -533,15 +542,15 @@ background: #fff0f0;
|
|
|
533
542
|
@focus=${e=>e.target.select()}
|
|
534
543
|
@input=${e=>{l(i.input==`number`?e.target.valueAsNumber:e.target.value)}}
|
|
535
544
|
/>
|
|
536
|
-
</div>`);else throw Error(`Unsupported input type: `+i.input);i.description&&n.push(D`<div class="description">${i.description}</div>`)}return n}var lT=class{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=void 0}initialize(e){let t=[];e.visit(e=>{let n=e.paramRuntime;t.push(...cT(n))});let n=this.#t.inputBindingContainer;if(!(!n||n==`none`||!t.length)){if(this.#n=document.createElement(`div`),this.#n.className=`gs-input-bindings`,n==`default`)this.#e.appendChild(this.#n);else if(n instanceof HTMLElement)n.appendChild(this.#n);else throw Error(`Invalid inputBindingContainer`);t.length&&Le(D`<div class="gs-input-binding">${t}</div>`,this.#n)}}remove(){this.#n?.remove()}};Float32Array,Float32Array;var uT=5120,dT=5121,fT=5122,pT=5123,mT=5124,hT=5125,gT=5126,_T=32819,vT=32820,yT=33635,bT=5131,xT=33640,ST=35899,CT=35902,wT=36269,TT=34042,ET={};{let e=ET;e[uT]=Int8Array,e[dT]=Uint8Array,e[fT]=Int16Array,e[pT]=Uint16Array,e[mT]=Int32Array,e[hT]=Uint32Array,e[gT]=Float32Array,e[_T]=Uint16Array,e[vT]=Uint16Array,e[yT]=Uint16Array,e[bT]=Uint16Array,e[xT]=Uint32Array,e[ST]=Uint32Array,e[CT]=Uint32Array,e[wT]=Uint32Array,e[TT]=Uint32Array}function DT(e){if(e instanceof Int8Array)return uT;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return dT;if(e instanceof Int16Array)return fT;if(e instanceof Uint16Array)return pT;if(e instanceof Int32Array)return mT;if(e instanceof Uint32Array)return hT;if(e instanceof Float32Array)return gT;throw Error(`unsupported typed array type`)}function OT(e){if(e===Int8Array)return uT;if(e===Uint8Array||e===Uint8ClampedArray)return dT;if(e===Int16Array)return fT;if(e===Uint16Array)return pT;if(e===Int32Array)return mT;if(e===Uint32Array)return hT;if(e===Float32Array)return gT;throw Error(`unsupported typed array type`)}function kT(e){let t=ET[e];if(!t)throw Error(`unknown gl type`);return t}var AT=typeof SharedArrayBuffer<`u`?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function jT(...e){console.error(...e)}function MT(...e){console.warn(...e)}function NT(e,t){return typeof WebGLBuffer<`u`&&t instanceof WebGLBuffer}function PT(e,t){return typeof WebGLRenderbuffer<`u`&&t instanceof WebGLRenderbuffer}function FT(e,t){return typeof WebGLTexture<`u`&&t instanceof WebGLTexture}function IT(e,t){return typeof WebGLSampler<`u`&&t instanceof WebGLSampler}var LT=35044,RT=34962,zT=34963,BT=34660,VT=5120,HT=5121,UT=5122,WT=5123,GT=5124,KT=5125,qT=5126,JT={attribPrefix:``};function YT(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||LT)}function XT(e,t,n,r){if(NT(e,t))return t;n||=RT;let i=e.createBuffer();return YT(e,n,i,t,r),i}function ZT(e){return e===`indices`}function QT(e){return e instanceof Int8Array||e instanceof Uint8Array}function $T(e){return e===Int8Array||e===Uint8Array}function eE(e){return e.length?e:e.data}var tE=/coord|texture/i,nE=/color|colour/i;function rE(e,t){let n;if(n=tE.test(e)?2:nE.test(e)?4:3,t%n>0)throw Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}function iE(e,t){return e.numComponents||e.size||rE(t,eE(e).length)}function aE(e,t){if(AT(e))return e;if(AT(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||=ZT(t)?Uint16Array:Float32Array,new n(e.data)}function oE(e,t){let n={};return Object.keys(t).forEach(function(r){if(!ZT(r)){let i=t[r],a=i.attrib||i.name||i.attribName||JT.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!AT(i.value))throw Error(`array.value is not array or typedarray`);n[a]={value:i.value}}else{let t,o,s,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)t=i.buffer,c=i.numComponents||i.size,o=i.type,s=i.normalize;else if(typeof i==`number`||typeof i.data==`number`){let n=i.data||i,a=i.type||Float32Array,l=n*a.BYTES_PER_ELEMENT;o=OT(a),s=i.normalize===void 0?$T(a):i.normalize,c=i.numComponents||i.size||rE(r,n),t=e.createBuffer(),e.bindBuffer(RT,t),e.bufferData(RT,l,i.drawType||LT)}else{let n=aE(i,r);t=XT(e,n,void 0,i.drawType),o=DT(n),s=i.normalize===void 0?QT(n):i.normalize,c=iE(i,r)}n[a]={buffer:t,numComponents:c,type:o,normalize:s,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),e.bindBuffer(RT,null),n}function sE(e,t,n,r){n=aE(n),r===void 0?YT(e,RT,t.buffer,n,t.drawType):(e.bindBuffer(RT,t.buffer),e.bufferSubData(RT,r,n))}function cE(e,t){return t===VT||t===HT?1:t===UT||t===WT?2:t===GT||t===KT||t===qT?4:0}var lE=[`position`,`positions`,`a_position`];function uE(e,t){let n,r;for(r=0;r<lE.length&&(n=lE[r],!(n in t||(n=JT.attribPrefix+n,n in t)));++r);r===lE.length&&(n=Object.keys(t)[0]);let i=t[n];if(!i.buffer)return 1;e.bindBuffer(RT,i.buffer);let a=e.getBufferParameter(RT,BT);e.bindBuffer(RT,null);let o=a/cE(e,i.type),s=i.numComponents||i.size,c=o/s;if(c%1!=0)throw Error(`numComponents ${s} not correct for length ${length}`);return c}function dE(e,t,n){let r=oE(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);let a=t.indices;if(a){let t=aE(a,`indices`);i.indices=XT(e,t,zT),i.numElements=t.length,i.elementType=DT(t)}else i.numElements||=uE(e,i.attribs);return i}function fE(e){return!!e.texStorage2D}var pE=function(){let e={},t={};function n(n){let r=n.constructor.name;if(!e[r]){for(let e in n)if(typeof n[e]==`number`){let r=t[n[e]];t[n[e]]=r?`${r} | ${e}`:e}e[r]=!0}}return function(e,r){return n(e),t[r]||(typeof r==`number`?`0x${r.toString(16)}`:r)}}(),mE={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},hE=AT,gE=function(){let e;return function(){return e||=typeof document<`u`&&document.createElement?document.createElement(`canvas`).getContext(`2d`):null,e}}(),_E=6406,vE=6407,K=6408,yE=6409,bE=6410,xE=6402,SE=34041,CE=33071,wE=9728,TE=9729,EE=3553,DE=34067,OE=32879,kE=35866,AE=34069,jE=34070,ME=34071,NE=34072,PE=34073,FE=34074,IE=10241,LE=10240,RE=10242,zE=10243,BE=32882,VE=33082,HE=33083,UE=33084,WE=33085,GE=3317,KE=3314,qE=32878,JE=3316,YE=3315,XE=32877,ZE=37443,QE=37441,$E=37440,eD=33321,tD=36756,nD=33325,rD=33326,iD=33330,aD=33329,oD=33338,sD=33337,cD=33340,lD=33339,uD=33323,dD=36757,fD=33327,pD=33328,mD=33336,hD=33335,gD=33332,_D=33331,vD=33334,yD=33333,bD=32849,xD=35905,SD=36194,CD=36758,wD=35898,TD=35901,ED=34843,DD=34837,OD=36221,kD=36239,AD=36215,jD=36233,MD=36209,ND=36227,PD=32856,FD=35907,ID=36759,LD=32855,RD=32854,zD=32857,BD=34842,VD=34836,HD=36220,UD=36238,WD=36975,GD=36214,KD=36232,qD=36226,JD=36208,YD=33189,XD=33190,ZD=36012,QD=36013,$D=35056,eO=5120,q=5121,tO=5122,nO=5123,rO=5124,iO=5125,aO=5126,oO=32819,sO=32820,cO=33635,lO=5131,uO=36193,dO=33640,fO=35899,pO=35902,mO=36269,hO=34042,gO=33319,_O=33320,vO=6403,yO=36244,bO=36248,xO=36249,SO={};{let e=SO;e[_E]={numColorComponents:1},e[yE]={numColorComponents:1},e[bE]={numColorComponents:2},e[vE]={numColorComponents:3},e[K]={numColorComponents:4},e[vO]={numColorComponents:1},e[yO]={numColorComponents:1},e[gO]={numColorComponents:2},e[_O]={numColorComponents:2},e[vE]={numColorComponents:3},e[bO]={numColorComponents:3},e[K]={numColorComponents:4},e[xO]={numColorComponents:4},e[xE]={numColorComponents:1},e[SE]={numColorComponents:2}}var CO;function wO(e){if(!CO){let e={};e[_E]={textureFormat:_E,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,lO,uO,aO]},e[yE]={textureFormat:yE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,lO,uO,aO]},e[bE]={textureFormat:bE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[q,lO,uO,aO]},e[vE]={textureFormat:vE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[q,lO,uO,aO,cO]},e[K]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[q,lO,uO,aO,oO,sO]},e[xE]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[iO,nO]},e[eD]={textureFormat:vO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[q]},e[tD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[eO]},e[nD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[aO,lO]},e[rD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[aO]},e[iD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[q]},e[aD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[eO]},e[gD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[nO]},e[_D]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[tO]},e[vD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[iO]},e[yD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[rO]},e[uD]={textureFormat:gO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[q]},e[dD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[eO]},e[fD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[aO,lO]},e[pD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[aO]},e[mD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[q]},e[hD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[eO]},e[oD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[nO]},e[sD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[tO]},e[cD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[iO]},e[lD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[rO]},e[bD]={textureFormat:vE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[xD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[SD]={textureFormat:vE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[q,cO]},e[CD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[eO]},e[wD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[aO,lO,fO]},e[TD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[aO,lO,pO]},e[ED]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[aO,lO]},e[DD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[aO]},e[OD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[q]},e[kD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[eO]},e[AD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[nO]},e[jD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[tO]},e[MD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[iO]},e[ND]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[rO]},e[PD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[FD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[ID]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[eO]},e[LD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[q,sO,dO]},e[RD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[q,oO]},e[zD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[dO]},e[BD]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[aO,lO]},e[VD]={textureFormat:K,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[aO]},e[HD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[q]},e[UD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[eO]},e[WD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[dO]},e[GD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[nO]},e[KD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[tO]},e[qD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[rO]},e[JD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[iO]},e[YD]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[nO,iO]},e[XD]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[iO]},e[ZD]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[aO]},e[$D]={textureFormat:SE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[hO]},e[QD]={textureFormat:SE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[mO]},Object.keys(e).forEach(function(t){let n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach(function(e,t){let r=n.type[t];n.bytesPerElementMap[r]=e})}),CO=e}return CO[e]}function TO(e,t){let n=wO(e);if(!n)throw`unknown internal format`;let r=n.bytesPerElementMap[t];if(r===void 0)throw`unknown internal format`;return r}function EO(e){let t=wO(e);if(!t)throw`unknown internal format`;return{format:t.textureFormat,type:t.type[0]}}function DO(e){return(e&e-1)==0}function OO(e,t,n,r){if(!fE(e))return DO(t)&&DO(n);let i=wO(r);if(!i)throw`unknown internal format`;return i.colorRenderable&&i.textureFilterable}function kO(e){let t=wO(e);if(!t)throw`unknown internal format`;return t.textureFilterable}function AO(e,t,n){return hE(t)?DT(t):n||q}function jO(e,t,n,r,i){if(i%1!=0)throw`can't guess dimensions`;if(!n&&!r){let e=Math.sqrt(i/(t===DE?6:1));e%1==0?(n=e,r=e):(n=i,r=1)}else if(!r){if(r=i/n,r%1)throw`can't guess dimensions`}else if(!n&&(n=i/r,n%1))throw`can't guess dimensions`;return{width:n,height:r}}function MO(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(ZE,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(QE,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei($E,t.flipY)}function NO(e){e.pixelStorei(GE,4),fE(e)&&(e.pixelStorei(KE,0),e.pixelStorei(qE,0),e.pixelStorei(JE,0),e.pixelStorei(YE,0),e.pixelStorei(XE,0))}function PO(e,t,n,r){r.minMag&&(n.call(e,t,IE,r.minMag),n.call(e,t,LE,r.minMag)),r.min&&n.call(e,t,IE,r.min),r.mag&&n.call(e,t,LE,r.mag),r.wrap&&(n.call(e,t,RE,r.wrap),n.call(e,t,zE,r.wrap),(t===OE||IT(e,t))&&n.call(e,t,BE,r.wrap)),r.wrapR&&n.call(e,t,BE,r.wrapR),r.wrapS&&n.call(e,t,RE,r.wrapS),r.wrapT&&n.call(e,t,zE,r.wrapT),r.minLod&&n.call(e,t,VE,r.minLod),r.maxLod&&n.call(e,t,HE,r.maxLod),r.baseLevel&&n.call(e,t,UE,r.baseLevel),r.maxLevel&&n.call(e,t,WE,r.maxLevel)}function FO(e,t,n){let r=n.target||EE;e.bindTexture(r,t),PO(e,r,e.texParameteri,n)}function IO(e){return e||=mE.textureColor,hE(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function LO(e,t,n,r,i,a){n||=mE.textureOptions,a||=K;let o=n.target||EE;if(r||=n.width,i||=n.height,e.bindTexture(o,t),OO(e,r,i,a))e.generateMipmap(o);else{let t=kO(a)?TE:wE;e.texParameteri(o,IE,t),e.texParameteri(o,LE,t),e.texParameteri(o,RE,CE),e.texParameteri(o,zE,CE)}}function RO(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function zO(e,t){return t||={},t.cubeFaceOrder||[AE,jE,ME,NE,PE,FE]}function BO(e,t){let n=zO(e,t).map(function(e,t){return{face:e,ndx:t}});return n.sort(function(e,t){return e.face-t.face}),n}function VO(e,t,n,r){r||=mE.textureOptions;let i=r.target||EE,a=r.level||0,o=n.width,s=n.height,c=r.internalFormat||r.format||K,l=EO(c),u=r.format||l.format,d=r.type||l.type;if(MO(e,r),e.bindTexture(i,t),i===DE){let l=n.width,f=n.height,p,m;if(l/6===f)p=f,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(f/6===l)p=l,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(l/3==f/2)p=l/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(l/2==f/3)p=l/2,m=[0,0,1,0,0,1,1,1,0,2,1,2];else throw`can't figure out cube map from element: `+(n.src?n.src:n.nodeName);let h=gE();h?(h.canvas.width=p,h.canvas.height=p,o=p,s=p,BO(e,r).forEach(function(t){let r=m[t.ndx*2+0]*p,i=m[t.ndx*2+1]*p;h.drawImage(n,r,i,p,p,0,0,p,p),e.texImage2D(t.face,a,c,u,d,h.canvas)}),h.canvas.width=1,h.canvas.height=1):typeof createImageBitmap<`u`&&(o=p,s=p,BO(e,r).forEach(function(l){let f=m[l.ndx*2+0]*p,h=m[l.ndx*2+1]*p;e.texImage2D(l.face,a,c,p,p,0,u,d,null),createImageBitmap(n,f,h,p,p,{premultiplyAlpha:`none`,colorSpaceConversion:`none`}).then(function(n){MO(e,r),e.bindTexture(i,t),e.texImage2D(l.face,a,c,u,d,n),RO(r)&&LO(e,t,r,o,s,c)})}))}else if(i===OE||i===kE){let t=Math.min(n.width,n.height),r=Math.max(n.width,n.height),o=r/t;if(o%1!=0)throw`can not compute 3D dimensions of element`;let s=n.width===r?1:0,l=n.height===r?1:0;e.pixelStorei(GE,1),e.pixelStorei(KE,n.width),e.pixelStorei(qE,0),e.pixelStorei(XE,0),e.texImage3D(i,a,c,t,t,t,0,u,d,null);for(let r=0;r<o;++r){let o=r*t*s,c=r*t*l;e.pixelStorei(JE,o),e.pixelStorei(YE,c),e.texSubImage3D(i,a,0,0,r,t,t,1,u,d,n)}NO(e)}else e.texImage2D(i,a,c,u,d,n);RO(r)&&LO(e,t,r,o,s,c),FO(e,t,r)}function HO(){}function UO(e){if(typeof document<`u`){let t=document.createElement(`a`);return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{let t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}function WO(e,t){return t===void 0&&!UO(e)?`anonymous`:t}function GO(e,t,n){n||=HO;let r;if(t=t===void 0?mE.crossOrigin:t,t=WO(e,t),typeof Image<`u`){r=new Image,t!==void 0&&(r.crossOrigin=t);let i=function(){r.removeEventListener(`error`,a),r.removeEventListener(`load`,o),r=null},a=function(){let t=`couldn't load image: `+e;jT(t),n(t,r),i()},o=function(){n(null,r),i()};return r.addEventListener(`error`,a),r.addEventListener(`load`,o),r.src=e,r}else if(typeof ImageBitmap<`u`){let i,a,o=function(){n(i,a)},s={};t&&(s.mode=`cors`),fetch(e,s).then(function(e){if(!e.ok)throw e;return e.blob()}).then(function(e){return createImageBitmap(e,{premultiplyAlpha:`none`,colorSpaceConversion:`none`})}).then(function(e){a=e,setTimeout(o)}).catch(function(e){i=e,setTimeout(o)}),r=null}return r}function KO(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof ImageData<`u`&&e instanceof ImageData||typeof HTMLElement<`u`&&e instanceof HTMLElement}function qO(e,t,n){return KO(e)?(setTimeout(function(){n(null,e)}),e):GO(e,t,n)}function JO(e,t,n){n||=mE.textureOptions;let r=n.target||EE;if(e.bindTexture(r,t),n.color===!1)return;let i=IO(n.color);if(r===DE)for(let t=0;t<6;++t)e.texImage2D(AE+t,0,K,1,1,0,K,q,i);else r===OE||r===kE?e.texImage3D(r,0,K,1,1,1,0,K,q,i):e.texImage2D(r,0,K,1,1,0,K,q,i)}function YO(e,t,n,r){return r||=HO,n||=mE.textureOptions,JO(e,t,n),n=Object.assign({},n),qO(n.src,n.crossOrigin,function(i,a){i?r(i,t,a):(VO(e,t,a,n),r(null,t,a))})}function XO(e,t,n,r){r||=HO;let i=n.src;if(i.length!==6)throw`there must be 6 urls for a cubemap`;let a=n.level||0,o=n.internalFormat||n.format||K,s=EO(o),c=n.format||s.format,l=n.type||q,u=n.target||EE;if(u!==DE)throw`target must be TEXTURE_CUBE_MAP`;JO(e,t,n),n=Object.assign({},n);let d=6,f=[],p=zO(e,n),m;function h(i){return function(s,p){--d,s?f.push(s):p.width===p.height?(MO(e,n),e.bindTexture(u,t),d===5?zO().forEach(function(t){e.texImage2D(t,a,o,c,l,p)}):e.texImage2D(i,a,o,c,l,p),RO(n)&&e.generateMipmap(u)):f.push(`cubemap face img is not a square: `+p.src),d===0&&r(f.length?f:void 0,t,m)}}m=i.map(function(e,t){return qO(e,n.crossOrigin,h(p[t]))})}function ZO(e,t,n,r){r||=HO;let i=n.src,a=n.internalFormat||n.format||K,o=EO(a),s=n.format||o.format,c=n.type||q,l=n.target||kE;if(l!==OE&&l!==kE)throw`target must be TEXTURE_3D or TEXTURE_2D_ARRAY`;JO(e,t,n),n=Object.assign({},n);let u=i.length,d=[],f,p=n.level||0,m=n.width,h=n.height,g=i.length,_=!0;function v(i){return function(o,v){if(--u,o)d.push(o);else{if(MO(e,n),e.bindTexture(l,t),_){_=!1,m=n.width||v.width,h=n.height||v.height,e.texImage3D(l,p,a,m,h,g,0,s,c,null);for(let t=0;t<g;++t)e.texSubImage3D(l,p,0,0,t,m,h,1,s,c,v)}else{let t=v,n;(v.width!==m||v.height!==h)&&(n=gE(),t=n.canvas,n.canvas.width=m,n.canvas.height=h,n.drawImage(v,0,0,m,h)),e.texSubImage3D(l,p,0,0,i,m,h,1,s,c,t),n&&t===n.canvas&&(n.canvas.width=0,n.canvas.height=0)}RO(n)&&e.generateMipmap(l)}u===0&&r(d.length?d:void 0,t,f)}}f=i.map(function(e,t){return qO(e,n.crossOrigin,v(t))})}function QO(e,t,n,r){r||=mE.textureOptions;let i=r.target||EE;e.bindTexture(i,t);let a=r.width,o=r.height,s=r.depth,c=r.level||0,l=r.internalFormat||r.format||K,u=EO(l),d=r.format||u.format,f=r.type||AO(e,n,u.type);hE(n)?n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer)):n=new(kT(f))(n);let p=TO(l,f),m=n.byteLength/p;if(m%1)throw`length wrong size for format: `+pE(e,d);let h;if(i===OE||i===kE)if(!a&&!o&&!s){let e=Math.cbrt(m);if(e%1!=0)throw`can't guess cube size of array of numElements: `+m;a=e,o=e,s=e}else a&&(!o||!s)?(h=jO(e,i,o,s,m/a),o=h.width,s=h.height):o&&(!a||!s)?(h=jO(e,i,a,s,m/o),a=h.width,s=h.height):(h=jO(e,i,a,o,m/s),a=h.width,o=h.height);else h=jO(e,i,a,o,m),a=h.width,o=h.height;if(NO(e),e.pixelStorei(GE,r.unpackAlignment||1),MO(e,r),i===DE){let t=p/n.BYTES_PER_ELEMENT,i=m/6*t;BO(e,r).forEach(t=>{let r=i*t.ndx,s=n.subarray(r,r+i);e.texImage2D(t.face,c,l,a,o,0,d,f,s)})}else i===OE||i===kE?e.texImage3D(i,c,l,a,o,s,0,d,f,n):e.texImage2D(i,c,l,a,o,0,d,f,n);return{width:a,height:o,depth:s,type:f}}function $O(e,t,n){let r=n.target||EE;e.bindTexture(r,t);let i=n.level||0,a=n.internalFormat||n.format||K,o=EO(a),s=n.format||o.format,c=n.type||o.type;if(MO(e,n),r===DE)for(let t=0;t<6;++t)e.texImage2D(AE+t,i,a,n.width,n.height,0,s,c,null);else r===OE||r===kE?e.texImage3D(r,i,a,n.width,n.height,n.depth,0,s,c,null):e.texImage2D(r,i,a,n.width,n.height,0,s,c,null)}function ek(e,t,n){n||=HO,t||=mE.textureOptions;let r=e.createTexture(),i=t.target||EE,a=t.width||1,o=t.height||1,s=t.internalFormat||K;e.bindTexture(i,r),i===DE&&(e.texParameteri(i,RE,CE),e.texParameteri(i,zE,CE));let c=t.src;if(c)if(typeof c==`function`&&(c=c(e,t)),typeof c==`string`)YO(e,r,t,n);else if(hE(c)||Array.isArray(c)&&(typeof c[0]==`number`||Array.isArray(c[0])||hE(c[0]))){let n=QO(e,r,c,t);a=n.width,o=n.height}else Array.isArray(c)&&(typeof c[0]==`string`||KO(c[0]))?i===DE?XO(e,r,t,n):ZO(e,r,t,n):(VO(e,r,c,t),a=c.width,o=c.height);else $O(e,r,t);return RO(t)&&LO(e,r,t,a,o,s),FO(e,r,t),r}function tk(e,t,n,r,i,a){r||=n.width,i||=n.height,a||=n.depth;let o=n.target||EE;e.bindTexture(o,t);let s=n.level||0,c=n.internalFormat||n.format||K,l=EO(c),u=n.format||l.format,d,f=n.src;if(d=f&&(hE(f)||Array.isArray(f)&&typeof f[0]==`number`)?n.type||AO(e,f,l.type):n.type||l.type,o===DE)for(let t=0;t<6;++t)e.texImage2D(AE+t,s,c,r,i,0,u,d,null);else o===OE||o===kE?e.texImage3D(o,s,c,r,i,a,0,u,d,null):e.texImage2D(o,s,c,r,i,0,u,d,null)}var nk=MT,rk=33984,ik=35048,ak=34962,ok=34963,sk=35345,ck=35718,lk=35721,uk=35971,dk=35382,fk=35396,pk=35398,mk=35392,hk=35395,gk=5126,_k=35664,vk=35665,yk=35666,bk=5124,xk=35667,Sk=35668,Ck=35669,wk=35670,Tk=35671,Ek=35672,Dk=35673,Ok=35674,kk=35675,Ak=35676,jk=35678,Mk=35680,Nk=35679,Pk=35682,Fk=35685,Ik=35686,Lk=35687,Rk=35688,zk=35689,Bk=35690,Vk=36289,Hk=36292,Uk=36293,Wk=5125,Gk=36294,Kk=36295,qk=36296,Jk=36298,Yk=36299,Xk=36300,Zk=36303,Qk=36306,$k=36307,eA=36308,tA=36311,nA=3553,rA=34067,iA=32879,aA=35866,J={};function oA(e,t){return J[t].bindPoint}function sA(e,t){return function(n){e.uniform1f(t,n)}}function cA(e,t){return function(n){e.uniform1fv(t,n)}}function lA(e,t){return function(n){e.uniform2fv(t,n)}}function uA(e,t){return function(n){e.uniform3fv(t,n)}}function dA(e,t){return function(n){e.uniform4fv(t,n)}}function fA(e,t){return function(n){e.uniform1i(t,n)}}function pA(e,t){return function(n){e.uniform1iv(t,n)}}function mA(e,t){return function(n){e.uniform2iv(t,n)}}function hA(e,t){return function(n){e.uniform3iv(t,n)}}function gA(e,t){return function(n){e.uniform4iv(t,n)}}function _A(e,t){return function(n){e.uniform1ui(t,n)}}function vA(e,t){return function(n){e.uniform1uiv(t,n)}}function yA(e,t){return function(n){e.uniform2uiv(t,n)}}function bA(e,t){return function(n){e.uniform3uiv(t,n)}}function xA(e,t){return function(n){e.uniform4uiv(t,n)}}function SA(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function CA(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function wA(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function TA(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function EA(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function DA(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function OA(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function kA(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function AA(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function jA(e,t,n,r){let i=oA(e,t);return fE(e)?function(t){let a,o;FT(e,t)?(a=t,o=null):(a=t.texture,o=t.sampler),e.uniform1i(r,n),e.activeTexture(rk+n),e.bindTexture(i,a),e.bindSampler(n,o)}:function(t){e.uniform1i(r,n),e.activeTexture(rk+n),e.bindTexture(i,t)}}function MA(e,t,n,r,i){let a=oA(e,t),o=new Int32Array(i);for(let e=0;e<i;++e)o[e]=n+e;return fE(e)?function(t){e.uniform1iv(r,o),t.forEach(function(t,r){e.activeTexture(rk+o[r]);let i,s;FT(e,t)?(i=t,s=null):(i=t.texture,s=t.sampler),e.bindSampler(n,s),e.bindTexture(a,i)})}:function(t){e.uniform1iv(r,o),t.forEach(function(t,n){e.activeTexture(rk+o[n]),e.bindTexture(a,t)})}}J[gk]={Type:Float32Array,size:4,setter:sA,arraySetter:cA},J[_k]={Type:Float32Array,size:8,setter:lA,cols:2},J[vk]={Type:Float32Array,size:12,setter:uA,cols:3},J[yk]={Type:Float32Array,size:16,setter:dA,cols:4},J[bk]={Type:Int32Array,size:4,setter:fA,arraySetter:pA},J[xk]={Type:Int32Array,size:8,setter:mA,cols:2},J[Sk]={Type:Int32Array,size:12,setter:hA,cols:3},J[Ck]={Type:Int32Array,size:16,setter:gA,cols:4},J[Wk]={Type:Uint32Array,size:4,setter:_A,arraySetter:vA},J[Gk]={Type:Uint32Array,size:8,setter:yA,cols:2},J[Kk]={Type:Uint32Array,size:12,setter:bA,cols:3},J[qk]={Type:Uint32Array,size:16,setter:xA,cols:4},J[wk]={Type:Uint32Array,size:4,setter:fA,arraySetter:pA},J[Tk]={Type:Uint32Array,size:8,setter:mA,cols:2},J[Ek]={Type:Uint32Array,size:12,setter:hA,cols:3},J[Dk]={Type:Uint32Array,size:16,setter:gA,cols:4},J[Ok]={Type:Float32Array,size:32,setter:SA,rows:2,cols:2},J[kk]={Type:Float32Array,size:48,setter:CA,rows:3,cols:3},J[Ak]={Type:Float32Array,size:64,setter:wA,rows:4,cols:4},J[Fk]={Type:Float32Array,size:32,setter:TA,rows:2,cols:3},J[Ik]={Type:Float32Array,size:32,setter:DA,rows:2,cols:4},J[Lk]={Type:Float32Array,size:48,setter:EA,rows:3,cols:2},J[Rk]={Type:Float32Array,size:48,setter:kA,rows:3,cols:4},J[zk]={Type:Float32Array,size:64,setter:OA,rows:4,cols:2},J[Bk]={Type:Float32Array,size:64,setter:AA,rows:4,cols:3},J[jk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:nA},J[Mk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:rA},J[Nk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:iA},J[Pk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:nA},J[Vk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:aA},J[Hk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:aA},J[Uk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:rA},J[Jk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:nA},J[Yk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:iA},J[Xk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:rA},J[Zk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:aA},J[Qk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:nA},J[$k]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:iA},J[eA]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:rA},J[tA]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:aA};function NA(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw Error(`the length of a float constant value must be between 1 and 4!`)}else e.bindBuffer(ak,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||gk,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function PA(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4iv(t,n.value);else throw Error(`The length of an integer constant value must be 4!`);else e.bindBuffer(ak,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||bk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function FA(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4uiv(t,n.value);else throw Error(`The length of an unsigned integer constant value must be 4!`);else e.bindBuffer(ak,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||Wk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function IA(e,t,n){let r=n.size,i=n.count;return function(n){e.bindBuffer(ak,n.buffer);let a=n.size||n.numComponents||r,o=a/i,s=n.type||gk,c=J[s].size*a,l=n.normalize||!1,u=n.offset||0,d=c/i;for(let r=0;r<i;++r)e.enableVertexAttribArray(t+r),e.vertexAttribPointer(t+r,o,s,l,c,u+d*r),n.divisor!==void 0&&e.vertexAttribDivisor(t+r,n.divisor)}}var LA={};LA[gk]={size:4,setter:NA},LA[_k]={size:8,setter:NA},LA[vk]={size:12,setter:NA},LA[yk]={size:16,setter:NA},LA[bk]={size:4,setter:PA},LA[xk]={size:8,setter:PA},LA[Sk]={size:12,setter:PA},LA[Ck]={size:16,setter:PA},LA[Wk]={size:4,setter:FA},LA[Gk]={size:8,setter:FA},LA[Kk]={size:12,setter:FA},LA[qk]={size:16,setter:FA},LA[wk]={size:4,setter:PA},LA[Tk]={size:8,setter:PA},LA[Ek]={size:12,setter:PA},LA[Dk]={size:16,setter:PA},LA[Ok]={size:4,setter:IA,count:2},LA[kk]={size:9,setter:IA,count:3},LA[Ak]={size:16,setter:IA,count:4};function RA(e){let t=e.name;return t.startsWith(`gl_`)||t.startsWith(`webgl_`)}var zA=/(\.|\[|]|\w+)/g,BA=e=>e>=`0`&&e<=`9`;function VA(e,t,n,r){let i=e.split(zA).filter(e=>e!==``),a=0,o=``;for(;;){let e=i[a++];o+=e;let s=BA(e[0]),c=s?parseInt(e):e;if(s&&(o+=i[a++]),a===i.length){n[c]=t;break}else{let e=i[a++],t=e===`[`,s=n[c]||(t?[]:{});n[c]=s,n=s,r[o]=r[o]||function(e){return function(t){$A(e,t)}}(s),o+=e}}}function HA(e,t){let n=0;function r(t,r,i){let a=r.name.endsWith(`[0]`),o=r.type,s=J[o];if(!s)throw Error(`unknown type: 0x${o.toString(16)}`);let c;if(s.bindPoint){let t=n;n+=r.size,c=a?s.arraySetter(e,o,t,i,r.size):s.setter(e,o,t,i,r.size)}else c=s.arraySetter&&a?s.arraySetter(e,i):s.setter(e,i);return c.location=i,c}let i={},a={},o=e.getProgramParameter(t,ck);for(let n=0;n<o;++n){let o=e.getActiveUniform(t,n);if(RA(o))continue;let s=o.name;s.endsWith(`[0]`)&&(s=s.substr(0,s.length-3));let c=e.getUniformLocation(t,o.name);if(c){let e=r(t,o,c);i[s]=e,VA(s,e,a,i)}}return i}function UA(e,t){let n={},r=e.getProgramParameter(t,uk);for(let i=0;i<r;++i){let r=e.getTransformFeedbackVarying(t,i);n[r.name]={index:i,type:r.type,size:r.size}}return n}function WA(e,t){let n=e.getProgramParameter(t,ck),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});let n=e.getActiveUniform(t,a);r[a].name=n.name}[[`UNIFORM_TYPE`,`type`],[`UNIFORM_SIZE`,`size`],[`UNIFORM_BLOCK_INDEX`,`blockNdx`],[`UNIFORM_OFFSET`,`offset`]].forEach(function(n){let a=n[0],o=n[1];e.getActiveUniforms(t,i,e[a]).forEach(function(e,t){r[t][o]=e})});let a={},o=e.getProgramParameter(t,dk);for(let n=0;n<o;++n){let r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,fk),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,pk),size:e.getActiveUniformBlockParameter(t,n,mk),uniformIndices:e.getActiveUniformBlockParameter(t,n,hk)};i.used=i.usedByVertexShader||i.usedByFragmentShader,a[r]=i}return{blockSpecs:a,uniformData:r}}var GA=/\[\d+\]\.$/,KA=(e,t)=>((e+(t-1))/t|0)*t;function qA(e,t,n,r){if(t||n){r||=1;let t=e.length/4;return function(n){let i=0,a=0;for(let o=0;o<t;++o){for(let t=0;t<r;++t)e[i++]=n[a++];i+=4-r}}}else return function(t){t.length?e.set(t):e[0]=t}}function JA(e,t,n,r){let i=n.blockSpecs,a=n.uniformData,o=i[r];if(!o)return nk(`no uniform block object named:`,r),{name:r,uniforms:{}};let s=new ArrayBuffer(o.size),c=e.createBuffer(),l=o.index;e.bindBuffer(sk,c),e.uniformBlockBinding(t,o.index,l);let u=r+`.`;GA.test(u)&&(u=u.replace(GA,`.`));let d={},f={},p={};return o.uniformIndices.forEach(function(e){let t=a[e],n=t.name;n.startsWith(u)&&(n=n.substr(u.length));let r=n.endsWith(`[0]`);r&&(n=n.substr(0,n.length-3));let i=J[t.type],o=i.Type,c=r?KA(i.size,16)*t.size:i.size*t.size,l=new o(s,t.offset,c/o.BYTES_PER_ELEMENT);d[n]=l;let m=qA(l,r,i.rows,i.cols);f[n]=m,VA(n,m,p,f)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:d,setters:f}}function YA(e,t,n){return JA(e,t.program,t.uniformBlockSpec,n)}function XA(e,t,n){let r=(t.uniformBlockSpec||t).blockSpecs[n.name];if(r){let t=r.index;return e.bindBufferRange(sk,t,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function ZA(e,t,n){XA(e,t,n)&&e.bufferData(sk,n.array,ik)}function QA(e,t){let n=e.setters;for(let e in t){let r=n[e];if(r){let n=t[e];r(n)}}}function $A(e,t){for(let n in t){let r=e[n];typeof r==`function`?r(t[n]):$A(e[n],t[n])}}function ej(e,...t){let n=e.uniformSetters||e,r=t.length;for(let e=0;e<r;++e){let r=t[e];if(Array.isArray(r)){let e=r.length;for(let t=0;t<e;++t)ej(n,r[t])}else for(let e in r){let t=n[e];t&&t(r[e])}}}function tj(e,t){let n={},r=e.getProgramParameter(t,lk);for(let i=0;i<r;++i){let r=e.getActiveAttrib(t,i);if(RA(r))continue;let a=e.getAttribLocation(t,r.name),o=LA[r.type],s=o.setter(e,a,o);s.location=a,n[r.name]=s}return n}function nj(e,t){for(let n in t){let r=e[n];r&&r(t[n])}}function rj(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(nj(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(ok,n.indices))}function ij(e,t){let n={program:t,uniformSetters:HA(e,t),attribSetters:tj(e,t)};return fE(e)&&(n.uniformBlockSpec=WA(e,t),n.transformFeedbackInfo=UA(e,t)),n}var aj=4,oj=5123;function sj(e,t,n,r,i,a){n=n===void 0?aj:n;let o=t.indices,s=t.elementType,c=r===void 0?t.numElements:r;i=i===void 0?0:i,s||o?a===void 0?e.drawElements(n,c,s===void 0?oj:t.elementType,i):e.drawElementsInstanced(n,c,s===void 0?oj:t.elementType,i,a):a===void 0?e.drawArrays(n,i,c):e.drawArraysInstanced(n,i,c,a)}var cj=36160,lj=36161,uj=3553,dj=5121,fj=6402,pj=6408,mj=33190,hj=36012,gj=35056,_j=36013,vj=32854,yj=32855,bj=36194,xj=33189,Sj=6401,Cj=36168,wj=34041,Tj=36064,Ej=36096,Dj=36128,Oj=33306,kj=33071,Aj=9729,jj=[{format:pj,type:dj,min:Aj,wrap:kj},{format:wj}],Mj={};Mj[wj]=Oj,Mj[Sj]=Dj,Mj[Cj]=Dj,Mj[fj]=Ej,Mj[xj]=Ej,Mj[mj]=Ej,Mj[hj]=Ej,Mj[gj]=Oj,Mj[_j]=Oj;function Nj(e,t){return Mj[e]||Mj[t]}var Pj={};Pj[vj]=!0,Pj[yj]=!0,Pj[bj]=!0,Pj[wj]=!0,Pj[xj]=!0,Pj[Sj]=!0,Pj[Cj]=!0;function Fj(e){return Pj[e]}var Ij=32;function Lj(e){return e>=Tj&&e<Tj+Ij}function Rj(e,t,n,r){let i=cj,a=e.createFramebuffer();e.bindFramebuffer(i,a),n||=e.drawingBufferWidth,r||=e.drawingBufferHeight,t||=jj;let o=[],s={framebuffer:a,attachments:[],width:n,height:r};return t.forEach(function(t,a){let c=t.attachment,l=t.samples,u=t.format,d=t.attachmentPoint||Nj(u,t.internalFormat);if(d||=Tj+a,Lj(d)&&o.push(d),!c)if(l!==void 0||Fj(u))c=e.createRenderbuffer(),e.bindRenderbuffer(lj,c),l>1?e.renderbufferStorageMultisample(lj,l,u,n,r):e.renderbufferStorage(lj,u,n,r);else{let i=Object.assign({},t);i.width=n,i.height=r,i.auto===void 0&&(i.auto=!1,i.min=i.min||i.minMag||Aj,i.mag=i.mag||i.minMag||Aj,i.wrapS=i.wrapS||i.wrap||kj,i.wrapT=i.wrapT||i.wrap||kj),c=ek(e,i)}if(PT(e,c))e.framebufferRenderbuffer(i,d,lj,c);else if(FT(e,c))t.layer===void 0?e.framebufferTexture2D(i,d,t.target||uj,c,t.level||0):e.framebufferTextureLayer(i,d,c,t.level||0,t.layer);else throw Error(`unknown attachment type`);s.attachments.push(c)}),e.drawBuffers&&e.drawBuffers(o),s}function zj(e,t,n,r,i){r||=e.drawingBufferWidth,i||=e.drawingBufferHeight,t.width=r,t.height=i,n||=jj,n.forEach(function(n,a){let o=t.attachments[a],s=n.format,c=n.samples;if(c!==void 0||PT(e,o))e.bindRenderbuffer(lj,o),c>1?e.renderbufferStorageMultisample(lj,c,s,r,i):e.renderbufferStorage(lj,s,r,i);else if(FT(e,o))tk(e,o,n,r,i);else throw Error(`unknown attachment type`)})}function Bj(e,t,n){let r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(t){rj(e,t,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}var Vj={addExtensionsToContext:!0},Hj=/^(.*?)_/;function Uj(e,t){pE(e,0);let n=e.getExtension(t);if(n){let r={},i=Hj.exec(t)[1],a=`_`+i;for(let t in n){let o=n[t],s=typeof o==`function`,c=s?i:a,l=t;t.endsWith(c)&&(l=t.substring(0,t.length-c.length)),e[l]===void 0?s?e[l]=function(e){return function(){return e.apply(n,arguments)}}(o):(e[l]=o,r[l]=o):!s&&e[l]!==o&&MT(l,e[l],o,t)}r.constructor={name:n.constructor.name},pE(r,0)}return n}var Wj=[`ANGLE_instanced_arrays`,`EXT_blend_minmax`,`EXT_color_buffer_float`,`EXT_color_buffer_half_float`,`EXT_disjoint_timer_query`,`EXT_disjoint_timer_query_webgl2`,`EXT_frag_depth`,`EXT_sRGB`,`EXT_shader_texture_lod`,`EXT_texture_filter_anisotropic`,`OES_element_index_uint`,`OES_standard_derivatives`,`OES_texture_float`,`OES_texture_float_linear`,`OES_texture_half_float`,`OES_texture_half_float_linear`,`OES_vertex_array_object`,`WEBGL_color_buffer_float`,`WEBGL_compressed_texture_atc`,`WEBGL_compressed_texture_etc1`,`WEBGL_compressed_texture_pvrtc`,`WEBGL_compressed_texture_s3tc`,`WEBGL_compressed_texture_s3tc_srgb`,`WEBGL_depth_texture`,`WEBGL_draw_buffers`];function Gj(e){for(let t=0;t<Wj.length;++t)Uj(e,Wj[t])}function Kj(e,t){let n=[`webgl2`,`webgl`,`experimental-webgl`],r=null;for(let i=0;i<n.length;++i)if(r=e.getContext(n[i],t),r){Vj.addExtensionsToContext&&Gj(r);break}return r}function qj(e,t){return Kj(e,t)}var Jj=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
|
|
545
|
+
</div>`);else throw Error(`Unsupported input type: `+i.input);i.description&&n.push(O`<div class="description">${i.description}</div>`)}return n}var BT=class{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=void 0}initialize(e){let t=[];e.visit(e=>{let n=e.paramRuntime;t.push(...zT(n))});let n=this.#t.inputBindingContainer;if(!(!n||n==`none`||!t.length)){if(this.#n=document.createElement(`div`),this.#n.className=`gs-input-bindings`,n==`default`)this.#e.appendChild(this.#n);else if(n instanceof HTMLElement)n.appendChild(this.#n);else throw Error(`Invalid inputBindingContainer`);t.length&&Ie(O`<div class="gs-input-binding">${t}</div>`,this.#n)}}remove(){this.#n?.remove()}};Float32Array,Float32Array;var VT=5120,HT=5121,UT=5122,WT=5123,GT=5124,KT=5125,qT=5126,JT=32819,YT=32820,XT=33635,ZT=5131,QT=33640,$T=35899,eE=35902,tE=36269,nE=34042,rE={};{let e=rE;e[VT]=Int8Array,e[HT]=Uint8Array,e[UT]=Int16Array,e[WT]=Uint16Array,e[GT]=Int32Array,e[KT]=Uint32Array,e[qT]=Float32Array,e[JT]=Uint16Array,e[YT]=Uint16Array,e[XT]=Uint16Array,e[ZT]=Uint16Array,e[QT]=Uint32Array,e[$T]=Uint32Array,e[eE]=Uint32Array,e[tE]=Uint32Array,e[nE]=Uint32Array}function iE(e){if(e instanceof Int8Array)return VT;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return HT;if(e instanceof Int16Array)return UT;if(e instanceof Uint16Array)return WT;if(e instanceof Int32Array)return GT;if(e instanceof Uint32Array)return KT;if(e instanceof Float32Array)return qT;throw Error(`unsupported typed array type`)}function aE(e){if(e===Int8Array)return VT;if(e===Uint8Array||e===Uint8ClampedArray)return HT;if(e===Int16Array)return UT;if(e===Uint16Array)return WT;if(e===Int32Array)return GT;if(e===Uint32Array)return KT;if(e===Float32Array)return qT;throw Error(`unsupported typed array type`)}function oE(e){let t=rE[e];if(!t)throw Error(`unknown gl type`);return t}var sE=typeof SharedArrayBuffer<`u`?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function cE(...e){console.error(...e)}function lE(...e){console.warn(...e)}function uE(e,t){return typeof WebGLBuffer<`u`&&t instanceof WebGLBuffer}function dE(e,t){return typeof WebGLRenderbuffer<`u`&&t instanceof WebGLRenderbuffer}function fE(e,t){return typeof WebGLTexture<`u`&&t instanceof WebGLTexture}function pE(e,t){return typeof WebGLSampler<`u`&&t instanceof WebGLSampler}var mE=35044,hE=34962,gE=34963,_E=34660,vE=5120,yE=5121,bE=5122,xE=5123,SE=5124,CE=5125,wE=5126,TE={attribPrefix:``};function EE(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||mE)}function DE(e,t,n,r){if(uE(e,t))return t;n||=hE;let i=e.createBuffer();return EE(e,n,i,t,r),i}function OE(e){return e===`indices`}function kE(e){return e instanceof Int8Array||e instanceof Uint8Array}function AE(e){return e===Int8Array||e===Uint8Array}function jE(e){return e.length?e:e.data}var ME=/coord|texture/i,NE=/color|colour/i;function PE(e,t){let n;if(n=ME.test(e)?2:NE.test(e)?4:3,t%n>0)throw Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}function FE(e,t){return e.numComponents||e.size||PE(t,jE(e).length)}function IE(e,t){if(sE(e))return e;if(sE(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||=OE(t)?Uint16Array:Float32Array,new n(e.data)}function LE(e,t){let n={};return Object.keys(t).forEach(function(r){if(!OE(r)){let i=t[r],a=i.attrib||i.name||i.attribName||TE.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!sE(i.value))throw Error(`array.value is not array or typedarray`);n[a]={value:i.value}}else{let t,o,s,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)t=i.buffer,c=i.numComponents||i.size,o=i.type,s=i.normalize;else if(typeof i==`number`||typeof i.data==`number`){let n=i.data||i,a=i.type||Float32Array,l=n*a.BYTES_PER_ELEMENT;o=aE(a),s=i.normalize===void 0?AE(a):i.normalize,c=i.numComponents||i.size||PE(r,n),t=e.createBuffer(),e.bindBuffer(hE,t),e.bufferData(hE,l,i.drawType||mE)}else{let n=IE(i,r);t=DE(e,n,void 0,i.drawType),o=iE(n),s=i.normalize===void 0?kE(n):i.normalize,c=FE(i,r)}n[a]={buffer:t,numComponents:c,type:o,normalize:s,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),e.bindBuffer(hE,null),n}function RE(e,t,n,r){n=IE(n),r===void 0?EE(e,hE,t.buffer,n,t.drawType):(e.bindBuffer(hE,t.buffer),e.bufferSubData(hE,r,n))}function zE(e,t){return t===vE||t===yE?1:t===bE||t===xE?2:t===SE||t===CE||t===wE?4:0}var BE=[`position`,`positions`,`a_position`];function VE(e,t){let n,r;for(r=0;r<BE.length&&(n=BE[r],!(n in t||(n=TE.attribPrefix+n,n in t)));++r);r===BE.length&&(n=Object.keys(t)[0]);let i=t[n];if(!i.buffer)return 1;e.bindBuffer(hE,i.buffer);let a=e.getBufferParameter(hE,_E);e.bindBuffer(hE,null);let o=a/zE(e,i.type),s=i.numComponents||i.size,c=o/s;if(c%1!=0)throw Error(`numComponents ${s} not correct for length ${length}`);return c}function HE(e,t,n){let r=LE(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);let a=t.indices;if(a){let t=IE(a,`indices`);i.indices=DE(e,t,gE),i.numElements=t.length,i.elementType=iE(t)}else i.numElements||=VE(e,i.attribs);return i}function UE(e){return!!e.texStorage2D}var WE=function(){let e={},t={};function n(n){let r=n.constructor.name;if(!e[r]){for(let e in n)if(typeof n[e]==`number`){let r=t[n[e]];t[n[e]]=r?`${r} | ${e}`:e}e[r]=!0}}return function(e,r){return n(e),t[r]||(typeof r==`number`?`0x${r.toString(16)}`:r)}}(),GE={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},KE=sE,qE=function(){let e;return function(){return e||=typeof document<`u`&&document.createElement?document.createElement(`canvas`).getContext(`2d`):null,e}}(),JE=6406,YE=6407,K=6408,XE=6409,ZE=6410,QE=6402,$E=34041,eD=33071,tD=9728,nD=9729,rD=3553,iD=34067,aD=32879,oD=35866,sD=34069,cD=34070,lD=34071,uD=34072,dD=34073,fD=34074,pD=10241,mD=10240,hD=10242,gD=10243,_D=32882,vD=33082,yD=33083,bD=33084,xD=33085,SD=3317,CD=3314,wD=32878,TD=3316,ED=3315,DD=32877,OD=37443,kD=37441,AD=37440,jD=33321,MD=36756,ND=33325,PD=33326,FD=33330,ID=33329,LD=33338,RD=33337,zD=33340,BD=33339,VD=33323,HD=36757,UD=33327,WD=33328,GD=33336,KD=33335,qD=33332,JD=33331,YD=33334,XD=33333,ZD=32849,QD=35905,$D=36194,eO=36758,tO=35898,nO=35901,rO=34843,iO=34837,aO=36221,oO=36239,sO=36215,cO=36233,lO=36209,uO=36227,dO=32856,fO=35907,pO=36759,mO=32855,hO=32854,gO=32857,_O=34842,vO=34836,yO=36220,bO=36238,xO=36975,SO=36214,CO=36232,wO=36226,TO=36208,EO=33189,DO=33190,OO=36012,kO=36013,AO=35056,jO=5120,q=5121,MO=5122,NO=5123,PO=5124,FO=5125,IO=5126,LO=32819,RO=32820,zO=33635,BO=5131,VO=36193,HO=33640,UO=35899,WO=35902,GO=36269,KO=34042,qO=33319,JO=33320,YO=6403,XO=36244,ZO=36248,QO=36249,$O={};{let e=$O;e[JE]={numColorComponents:1},e[XE]={numColorComponents:1},e[ZE]={numColorComponents:2},e[YE]={numColorComponents:3},e[K]={numColorComponents:4},e[YO]={numColorComponents:1},e[XO]={numColorComponents:1},e[qO]={numColorComponents:2},e[JO]={numColorComponents:2},e[YE]={numColorComponents:3},e[ZO]={numColorComponents:3},e[K]={numColorComponents:4},e[QO]={numColorComponents:4},e[QE]={numColorComponents:1},e[$E]={numColorComponents:2}}var ek;function tk(e){if(!ek){let e={};e[JE]={textureFormat:JE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,BO,VO,IO]},e[XE]={textureFormat:XE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,BO,VO,IO]},e[ZE]={textureFormat:ZE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[q,BO,VO,IO]},e[YE]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[q,BO,VO,IO,zO]},e[K]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[q,BO,VO,IO,LO,RO]},e[QE]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[FO,NO]},e[jD]={textureFormat:YO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[q]},e[MD]={textureFormat:YO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[jO]},e[ND]={textureFormat:YO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[IO,BO]},e[PD]={textureFormat:YO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[IO]},e[FD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[q]},e[ID]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[jO]},e[qD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[NO]},e[JD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[MO]},e[YD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[FO]},e[XD]={textureFormat:XO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[PO]},e[VD]={textureFormat:qO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[q]},e[HD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[jO]},e[UD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[IO,BO]},e[WD]={textureFormat:qO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[IO]},e[GD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[q]},e[KD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[jO]},e[LD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[NO]},e[RD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[MO]},e[zD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[FO]},e[BD]={textureFormat:JO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[PO]},e[ZD]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[QD]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[$D]={textureFormat:YE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[q,zO]},e[eO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[jO]},e[tO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[IO,BO,UO]},e[nO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[IO,BO,WO]},e[rO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[IO,BO]},e[iO]={textureFormat:YE,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[IO]},e[aO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[q]},e[oO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[jO]},e[sO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[NO]},e[cO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[MO]},e[lO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[FO]},e[uO]={textureFormat:ZO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[PO]},e[dO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[fO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[pO]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[jO]},e[mO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[q,RO,HO]},e[hO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[q,LO]},e[gO]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[HO]},e[_O]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[IO,BO]},e[vO]={textureFormat:K,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[IO]},e[yO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[q]},e[bO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[jO]},e[xO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[HO]},e[SO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[NO]},e[CO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[MO]},e[wO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[PO]},e[TO]={textureFormat:QO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[FO]},e[EO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[NO,FO]},e[DO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[FO]},e[OO]={textureFormat:QE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[IO]},e[AO]={textureFormat:$E,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[KO]},e[kO]={textureFormat:$E,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[GO]},Object.keys(e).forEach(function(t){let n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach(function(e,t){let r=n.type[t];n.bytesPerElementMap[r]=e})}),ek=e}return ek[e]}function nk(e,t){let n=tk(e);if(!n)throw`unknown internal format`;let r=n.bytesPerElementMap[t];if(r===void 0)throw`unknown internal format`;return r}function rk(e){let t=tk(e);if(!t)throw`unknown internal format`;return{format:t.textureFormat,type:t.type[0]}}function ik(e){return(e&e-1)==0}function ak(e,t,n,r){if(!UE(e))return ik(t)&&ik(n);let i=tk(r);if(!i)throw`unknown internal format`;return i.colorRenderable&&i.textureFilterable}function ok(e){let t=tk(e);if(!t)throw`unknown internal format`;return t.textureFilterable}function sk(e,t,n){return KE(t)?iE(t):n||q}function ck(e,t,n,r,i){if(i%1!=0)throw`can't guess dimensions`;if(!n&&!r){let e=Math.sqrt(i/(t===iD?6:1));e%1==0?(n=e,r=e):(n=i,r=1)}else if(!r){if(r=i/n,r%1)throw`can't guess dimensions`}else if(!n&&(n=i/r,n%1))throw`can't guess dimensions`;return{width:n,height:r}}function lk(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(OD,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(kD,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei(AD,t.flipY)}function uk(e){e.pixelStorei(SD,4),UE(e)&&(e.pixelStorei(CD,0),e.pixelStorei(wD,0),e.pixelStorei(TD,0),e.pixelStorei(ED,0),e.pixelStorei(DD,0))}function dk(e,t,n,r){r.minMag&&(n.call(e,t,pD,r.minMag),n.call(e,t,mD,r.minMag)),r.min&&n.call(e,t,pD,r.min),r.mag&&n.call(e,t,mD,r.mag),r.wrap&&(n.call(e,t,hD,r.wrap),n.call(e,t,gD,r.wrap),(t===aD||pE(e,t))&&n.call(e,t,_D,r.wrap)),r.wrapR&&n.call(e,t,_D,r.wrapR),r.wrapS&&n.call(e,t,hD,r.wrapS),r.wrapT&&n.call(e,t,gD,r.wrapT),r.minLod&&n.call(e,t,vD,r.minLod),r.maxLod&&n.call(e,t,yD,r.maxLod),r.baseLevel&&n.call(e,t,bD,r.baseLevel),r.maxLevel&&n.call(e,t,xD,r.maxLevel)}function fk(e,t,n){let r=n.target||rD;e.bindTexture(r,t),dk(e,r,e.texParameteri,n)}function pk(e){return e||=GE.textureColor,KE(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function mk(e,t,n,r,i,a){n||=GE.textureOptions,a||=K;let o=n.target||rD;if(r||=n.width,i||=n.height,e.bindTexture(o,t),ak(e,r,i,a))e.generateMipmap(o);else{let t=ok(a)?nD:tD;e.texParameteri(o,pD,t),e.texParameteri(o,mD,t),e.texParameteri(o,hD,eD),e.texParameteri(o,gD,eD)}}function hk(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function gk(e,t){return t||={},t.cubeFaceOrder||[sD,cD,lD,uD,dD,fD]}function _k(e,t){let n=gk(e,t).map(function(e,t){return{face:e,ndx:t}});return n.sort(function(e,t){return e.face-t.face}),n}function vk(e,t,n,r){r||=GE.textureOptions;let i=r.target||rD,a=r.level||0,o=n.width,s=n.height,c=r.internalFormat||r.format||K,l=rk(c),u=r.format||l.format,d=r.type||l.type;if(lk(e,r),e.bindTexture(i,t),i===iD){let l=n.width,f=n.height,p,m;if(l/6===f)p=f,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(f/6===l)p=l,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(l/3==f/2)p=l/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(l/2==f/3)p=l/2,m=[0,0,1,0,0,1,1,1,0,2,1,2];else throw`can't figure out cube map from element: `+(n.src?n.src:n.nodeName);let h=qE();h?(h.canvas.width=p,h.canvas.height=p,o=p,s=p,_k(e,r).forEach(function(t){let r=m[t.ndx*2+0]*p,i=m[t.ndx*2+1]*p;h.drawImage(n,r,i,p,p,0,0,p,p),e.texImage2D(t.face,a,c,u,d,h.canvas)}),h.canvas.width=1,h.canvas.height=1):typeof createImageBitmap<`u`&&(o=p,s=p,_k(e,r).forEach(function(l){let f=m[l.ndx*2+0]*p,h=m[l.ndx*2+1]*p;e.texImage2D(l.face,a,c,p,p,0,u,d,null),createImageBitmap(n,f,h,p,p,{premultiplyAlpha:`none`,colorSpaceConversion:`none`}).then(function(n){lk(e,r),e.bindTexture(i,t),e.texImage2D(l.face,a,c,u,d,n),hk(r)&&mk(e,t,r,o,s,c)})}))}else if(i===aD||i===oD){let t=Math.min(n.width,n.height),r=Math.max(n.width,n.height),o=r/t;if(o%1!=0)throw`can not compute 3D dimensions of element`;let s=n.width===r?1:0,l=n.height===r?1:0;e.pixelStorei(SD,1),e.pixelStorei(CD,n.width),e.pixelStorei(wD,0),e.pixelStorei(DD,0),e.texImage3D(i,a,c,t,t,t,0,u,d,null);for(let r=0;r<o;++r){let o=r*t*s,c=r*t*l;e.pixelStorei(TD,o),e.pixelStorei(ED,c),e.texSubImage3D(i,a,0,0,r,t,t,1,u,d,n)}uk(e)}else e.texImage2D(i,a,c,u,d,n);hk(r)&&mk(e,t,r,o,s,c),fk(e,t,r)}function yk(){}function bk(e){if(typeof document<`u`){let t=document.createElement(`a`);return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{let t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}function xk(e,t){return t===void 0&&!bk(e)?`anonymous`:t}function Sk(e,t,n){n||=yk;let r;if(t=t===void 0?GE.crossOrigin:t,t=xk(e,t),typeof Image<`u`){r=new Image,t!==void 0&&(r.crossOrigin=t);let i=function(){r.removeEventListener(`error`,a),r.removeEventListener(`load`,o),r=null},a=function(){let t=`couldn't load image: `+e;cE(t),n(t,r),i()},o=function(){n(null,r),i()};return r.addEventListener(`error`,a),r.addEventListener(`load`,o),r.src=e,r}else if(typeof ImageBitmap<`u`){let i,a,o=function(){n(i,a)},s={};t&&(s.mode=`cors`),fetch(e,s).then(function(e){if(!e.ok)throw e;return e.blob()}).then(function(e){return createImageBitmap(e,{premultiplyAlpha:`none`,colorSpaceConversion:`none`})}).then(function(e){a=e,setTimeout(o)}).catch(function(e){i=e,setTimeout(o)}),r=null}return r}function Ck(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof ImageData<`u`&&e instanceof ImageData||typeof HTMLElement<`u`&&e instanceof HTMLElement}function wk(e,t,n){return Ck(e)?(setTimeout(function(){n(null,e)}),e):Sk(e,t,n)}function Tk(e,t,n){n||=GE.textureOptions;let r=n.target||rD;if(e.bindTexture(r,t),n.color===!1)return;let i=pk(n.color);if(r===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,0,K,1,1,0,K,q,i);else r===aD||r===oD?e.texImage3D(r,0,K,1,1,1,0,K,q,i):e.texImage2D(r,0,K,1,1,0,K,q,i)}function Ek(e,t,n,r){return r||=yk,n||=GE.textureOptions,Tk(e,t,n),n=Object.assign({},n),wk(n.src,n.crossOrigin,function(i,a){i?r(i,t,a):(vk(e,t,a,n),r(null,t,a))})}function Dk(e,t,n,r){r||=yk;let i=n.src;if(i.length!==6)throw`there must be 6 urls for a cubemap`;let a=n.level||0,o=n.internalFormat||n.format||K,s=rk(o),c=n.format||s.format,l=n.type||q,u=n.target||rD;if(u!==iD)throw`target must be TEXTURE_CUBE_MAP`;Tk(e,t,n),n=Object.assign({},n);let d=6,f=[],p=gk(e,n),m;function h(i){return function(s,p){--d,s?f.push(s):p.width===p.height?(lk(e,n),e.bindTexture(u,t),d===5?gk().forEach(function(t){e.texImage2D(t,a,o,c,l,p)}):e.texImage2D(i,a,o,c,l,p),hk(n)&&e.generateMipmap(u)):f.push(`cubemap face img is not a square: `+p.src),d===0&&r(f.length?f:void 0,t,m)}}m=i.map(function(e,t){return wk(e,n.crossOrigin,h(p[t]))})}function Ok(e,t,n,r){r||=yk;let i=n.src,a=n.internalFormat||n.format||K,o=rk(a),s=n.format||o.format,c=n.type||q,l=n.target||oD;if(l!==aD&&l!==oD)throw`target must be TEXTURE_3D or TEXTURE_2D_ARRAY`;Tk(e,t,n),n=Object.assign({},n);let u=i.length,d=[],f,p=n.level||0,m=n.width,h=n.height,g=i.length,_=!0;function v(i){return function(o,v){if(--u,o)d.push(o);else{if(lk(e,n),e.bindTexture(l,t),_){_=!1,m=n.width||v.width,h=n.height||v.height,e.texImage3D(l,p,a,m,h,g,0,s,c,null);for(let t=0;t<g;++t)e.texSubImage3D(l,p,0,0,t,m,h,1,s,c,v)}else{let t=v,n;(v.width!==m||v.height!==h)&&(n=qE(),t=n.canvas,n.canvas.width=m,n.canvas.height=h,n.drawImage(v,0,0,m,h)),e.texSubImage3D(l,p,0,0,i,m,h,1,s,c,t),n&&t===n.canvas&&(n.canvas.width=0,n.canvas.height=0)}hk(n)&&e.generateMipmap(l)}u===0&&r(d.length?d:void 0,t,f)}}f=i.map(function(e,t){return wk(e,n.crossOrigin,v(t))})}function kk(e,t,n,r){r||=GE.textureOptions;let i=r.target||rD;e.bindTexture(i,t);let a=r.width,o=r.height,s=r.depth,c=r.level||0,l=r.internalFormat||r.format||K,u=rk(l),d=r.format||u.format,f=r.type||sk(e,n,u.type);KE(n)?n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer)):n=new(oE(f))(n);let p=nk(l,f),m=n.byteLength/p;if(m%1)throw`length wrong size for format: `+WE(e,d);let h;if(i===aD||i===oD)if(!a&&!o&&!s){let e=Math.cbrt(m);if(e%1!=0)throw`can't guess cube size of array of numElements: `+m;a=e,o=e,s=e}else a&&(!o||!s)?(h=ck(e,i,o,s,m/a),o=h.width,s=h.height):o&&(!a||!s)?(h=ck(e,i,a,s,m/o),a=h.width,s=h.height):(h=ck(e,i,a,o,m/s),a=h.width,o=h.height);else h=ck(e,i,a,o,m),a=h.width,o=h.height;if(uk(e),e.pixelStorei(SD,r.unpackAlignment||1),lk(e,r),i===iD){let t=p/n.BYTES_PER_ELEMENT,i=m/6*t;_k(e,r).forEach(t=>{let r=i*t.ndx,s=n.subarray(r,r+i);e.texImage2D(t.face,c,l,a,o,0,d,f,s)})}else i===aD||i===oD?e.texImage3D(i,c,l,a,o,s,0,d,f,n):e.texImage2D(i,c,l,a,o,0,d,f,n);return{width:a,height:o,depth:s,type:f}}function Ak(e,t,n){let r=n.target||rD;e.bindTexture(r,t);let i=n.level||0,a=n.internalFormat||n.format||K,o=rk(a),s=n.format||o.format,c=n.type||o.type;if(lk(e,n),r===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,i,a,n.width,n.height,0,s,c,null);else r===aD||r===oD?e.texImage3D(r,i,a,n.width,n.height,n.depth,0,s,c,null):e.texImage2D(r,i,a,n.width,n.height,0,s,c,null)}function jk(e,t,n){n||=yk,t||=GE.textureOptions;let r=e.createTexture(),i=t.target||rD,a=t.width||1,o=t.height||1,s=t.internalFormat||K;e.bindTexture(i,r),i===iD&&(e.texParameteri(i,hD,eD),e.texParameteri(i,gD,eD));let c=t.src;if(c)if(typeof c==`function`&&(c=c(e,t)),typeof c==`string`)Ek(e,r,t,n);else if(KE(c)||Array.isArray(c)&&(typeof c[0]==`number`||Array.isArray(c[0])||KE(c[0]))){let n=kk(e,r,c,t);a=n.width,o=n.height}else Array.isArray(c)&&(typeof c[0]==`string`||Ck(c[0]))?i===iD?Dk(e,r,t,n):Ok(e,r,t,n):(vk(e,r,c,t),a=c.width,o=c.height);else Ak(e,r,t);return hk(t)&&mk(e,r,t,a,o,s),fk(e,r,t),r}function Mk(e,t,n,r,i,a){r||=n.width,i||=n.height,a||=n.depth;let o=n.target||rD;e.bindTexture(o,t);let s=n.level||0,c=n.internalFormat||n.format||K,l=rk(c),u=n.format||l.format,d,f=n.src;if(d=f&&(KE(f)||Array.isArray(f)&&typeof f[0]==`number`)?n.type||sk(e,f,l.type):n.type||l.type,o===iD)for(let t=0;t<6;++t)e.texImage2D(sD+t,s,c,r,i,0,u,d,null);else o===aD||o===oD?e.texImage3D(o,s,c,r,i,a,0,u,d,null):e.texImage2D(o,s,c,r,i,0,u,d,null)}var Nk=lE,Pk=33984,Fk=35048,Ik=34962,Lk=34963,Rk=35345,zk=35718,Bk=35721,Vk=35971,Hk=35382,Uk=35396,Wk=35398,Gk=35392,Kk=35395,qk=5126,Jk=35664,Yk=35665,Xk=35666,Zk=5124,Qk=35667,$k=35668,eA=35669,tA=35670,nA=35671,rA=35672,iA=35673,aA=35674,oA=35675,sA=35676,cA=35678,lA=35680,uA=35679,dA=35682,fA=35685,pA=35686,mA=35687,hA=35688,gA=35689,_A=35690,vA=36289,yA=36292,bA=36293,xA=5125,SA=36294,CA=36295,wA=36296,TA=36298,EA=36299,DA=36300,OA=36303,kA=36306,AA=36307,jA=36308,MA=36311,NA=3553,PA=34067,FA=32879,IA=35866,J={};function LA(e,t){return J[t].bindPoint}function RA(e,t){return function(n){e.uniform1f(t,n)}}function zA(e,t){return function(n){e.uniform1fv(t,n)}}function BA(e,t){return function(n){e.uniform2fv(t,n)}}function VA(e,t){return function(n){e.uniform3fv(t,n)}}function HA(e,t){return function(n){e.uniform4fv(t,n)}}function UA(e,t){return function(n){e.uniform1i(t,n)}}function WA(e,t){return function(n){e.uniform1iv(t,n)}}function GA(e,t){return function(n){e.uniform2iv(t,n)}}function KA(e,t){return function(n){e.uniform3iv(t,n)}}function qA(e,t){return function(n){e.uniform4iv(t,n)}}function JA(e,t){return function(n){e.uniform1ui(t,n)}}function YA(e,t){return function(n){e.uniform1uiv(t,n)}}function XA(e,t){return function(n){e.uniform2uiv(t,n)}}function ZA(e,t){return function(n){e.uniform3uiv(t,n)}}function QA(e,t){return function(n){e.uniform4uiv(t,n)}}function $A(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function ej(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function tj(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function nj(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function rj(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function ij(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function aj(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function oj(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function sj(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function cj(e,t,n,r){let i=LA(e,t);return UE(e)?function(t){let a,o;fE(e,t)?(a=t,o=null):(a=t.texture,o=t.sampler),e.uniform1i(r,n),e.activeTexture(Pk+n),e.bindTexture(i,a),e.bindSampler(n,o)}:function(t){e.uniform1i(r,n),e.activeTexture(Pk+n),e.bindTexture(i,t)}}function lj(e,t,n,r,i){let a=LA(e,t),o=new Int32Array(i);for(let e=0;e<i;++e)o[e]=n+e;return UE(e)?function(t){e.uniform1iv(r,o),t.forEach(function(t,r){e.activeTexture(Pk+o[r]);let i,s;fE(e,t)?(i=t,s=null):(i=t.texture,s=t.sampler),e.bindSampler(n,s),e.bindTexture(a,i)})}:function(t){e.uniform1iv(r,o),t.forEach(function(t,n){e.activeTexture(Pk+o[n]),e.bindTexture(a,t)})}}J[qk]={Type:Float32Array,size:4,setter:RA,arraySetter:zA},J[Jk]={Type:Float32Array,size:8,setter:BA,cols:2},J[Yk]={Type:Float32Array,size:12,setter:VA,cols:3},J[Xk]={Type:Float32Array,size:16,setter:HA,cols:4},J[Zk]={Type:Int32Array,size:4,setter:UA,arraySetter:WA},J[Qk]={Type:Int32Array,size:8,setter:GA,cols:2},J[$k]={Type:Int32Array,size:12,setter:KA,cols:3},J[eA]={Type:Int32Array,size:16,setter:qA,cols:4},J[xA]={Type:Uint32Array,size:4,setter:JA,arraySetter:YA},J[SA]={Type:Uint32Array,size:8,setter:XA,cols:2},J[CA]={Type:Uint32Array,size:12,setter:ZA,cols:3},J[wA]={Type:Uint32Array,size:16,setter:QA,cols:4},J[tA]={Type:Uint32Array,size:4,setter:UA,arraySetter:WA},J[nA]={Type:Uint32Array,size:8,setter:GA,cols:2},J[rA]={Type:Uint32Array,size:12,setter:KA,cols:3},J[iA]={Type:Uint32Array,size:16,setter:qA,cols:4},J[aA]={Type:Float32Array,size:32,setter:$A,rows:2,cols:2},J[oA]={Type:Float32Array,size:48,setter:ej,rows:3,cols:3},J[sA]={Type:Float32Array,size:64,setter:tj,rows:4,cols:4},J[fA]={Type:Float32Array,size:32,setter:nj,rows:2,cols:3},J[pA]={Type:Float32Array,size:32,setter:ij,rows:2,cols:4},J[mA]={Type:Float32Array,size:48,setter:rj,rows:3,cols:2},J[hA]={Type:Float32Array,size:48,setter:oj,rows:3,cols:4},J[gA]={Type:Float32Array,size:64,setter:aj,rows:4,cols:2},J[_A]={Type:Float32Array,size:64,setter:sj,rows:4,cols:3},J[cA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[lA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[uA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[dA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[vA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[yA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[bA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[TA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[EA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[DA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[OA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA},J[kA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:NA},J[AA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:FA},J[jA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:PA},J[MA]={Type:null,size:0,setter:cj,arraySetter:lj,bindPoint:IA};function uj(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw Error(`the length of a float constant value must be between 1 and 4!`)}else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||qk,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function dj(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4iv(t,n.value);else throw Error(`The length of an integer constant value must be 4!`);else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||Zk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function fj(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4uiv(t,n.value);else throw Error(`The length of an unsigned integer constant value must be 4!`);else e.bindBuffer(Ik,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||xA,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function pj(e,t,n){let r=n.size,i=n.count;return function(n){e.bindBuffer(Ik,n.buffer);let a=n.size||n.numComponents||r,o=a/i,s=n.type||qk,c=J[s].size*a,l=n.normalize||!1,u=n.offset||0,d=c/i;for(let r=0;r<i;++r)e.enableVertexAttribArray(t+r),e.vertexAttribPointer(t+r,o,s,l,c,u+d*r),n.divisor!==void 0&&e.vertexAttribDivisor(t+r,n.divisor)}}var mj={};mj[qk]={size:4,setter:uj},mj[Jk]={size:8,setter:uj},mj[Yk]={size:12,setter:uj},mj[Xk]={size:16,setter:uj},mj[Zk]={size:4,setter:dj},mj[Qk]={size:8,setter:dj},mj[$k]={size:12,setter:dj},mj[eA]={size:16,setter:dj},mj[xA]={size:4,setter:fj},mj[SA]={size:8,setter:fj},mj[CA]={size:12,setter:fj},mj[wA]={size:16,setter:fj},mj[tA]={size:4,setter:dj},mj[nA]={size:8,setter:dj},mj[rA]={size:12,setter:dj},mj[iA]={size:16,setter:dj},mj[aA]={size:4,setter:pj,count:2},mj[oA]={size:9,setter:pj,count:3},mj[sA]={size:16,setter:pj,count:4};function hj(e){let t=e.name;return t.startsWith(`gl_`)||t.startsWith(`webgl_`)}var gj=/(\.|\[|]|\w+)/g,_j=e=>e>=`0`&&e<=`9`;function vj(e,t,n,r){let i=e.split(gj).filter(e=>e!==``),a=0,o=``;for(;;){let e=i[a++];o+=e;let s=_j(e[0]),c=s?parseInt(e):e;if(s&&(o+=i[a++]),a===i.length){n[c]=t;break}else{let e=i[a++],t=e===`[`,s=n[c]||(t?[]:{});n[c]=s,n=s,r[o]=r[o]||function(e){return function(t){Aj(e,t)}}(s),o+=e}}}function yj(e,t){let n=0;function r(t,r,i){let a=r.name.endsWith(`[0]`),o=r.type,s=J[o];if(!s)throw Error(`unknown type: 0x${o.toString(16)}`);let c;if(s.bindPoint){let t=n;n+=r.size,c=a?s.arraySetter(e,o,t,i,r.size):s.setter(e,o,t,i,r.size)}else c=s.arraySetter&&a?s.arraySetter(e,i):s.setter(e,i);return c.location=i,c}let i={},a={},o=e.getProgramParameter(t,zk);for(let n=0;n<o;++n){let o=e.getActiveUniform(t,n);if(hj(o))continue;let s=o.name;s.endsWith(`[0]`)&&(s=s.substr(0,s.length-3));let c=e.getUniformLocation(t,o.name);if(c){let e=r(t,o,c);i[s]=e,vj(s,e,a,i)}}return i}function bj(e,t){let n={},r=e.getProgramParameter(t,Vk);for(let i=0;i<r;++i){let r=e.getTransformFeedbackVarying(t,i);n[r.name]={index:i,type:r.type,size:r.size}}return n}function xj(e,t){let n=e.getProgramParameter(t,zk),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});let n=e.getActiveUniform(t,a);r[a].name=n.name}[[`UNIFORM_TYPE`,`type`],[`UNIFORM_SIZE`,`size`],[`UNIFORM_BLOCK_INDEX`,`blockNdx`],[`UNIFORM_OFFSET`,`offset`]].forEach(function(n){let a=n[0],o=n[1];e.getActiveUniforms(t,i,e[a]).forEach(function(e,t){r[t][o]=e})});let a={},o=e.getProgramParameter(t,Hk);for(let n=0;n<o;++n){let r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,Uk),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,Wk),size:e.getActiveUniformBlockParameter(t,n,Gk),uniformIndices:e.getActiveUniformBlockParameter(t,n,Kk)};i.used=i.usedByVertexShader||i.usedByFragmentShader,a[r]=i}return{blockSpecs:a,uniformData:r}}var Sj=/\[\d+\]\.$/,Cj=(e,t)=>((e+(t-1))/t|0)*t;function wj(e,t,n,r){if(t||n){r||=1;let t=e.length/4;return function(n){let i=0,a=0;for(let o=0;o<t;++o){for(let t=0;t<r;++t)e[i++]=n[a++];i+=4-r}}}else return function(t){t.length?e.set(t):e[0]=t}}function Tj(e,t,n,r){let i=n.blockSpecs,a=n.uniformData,o=i[r];if(!o)return Nk(`no uniform block object named:`,r),{name:r,uniforms:{}};let s=new ArrayBuffer(o.size),c=e.createBuffer(),l=o.index;e.bindBuffer(Rk,c),e.uniformBlockBinding(t,o.index,l);let u=r+`.`;Sj.test(u)&&(u=u.replace(Sj,`.`));let d={},f={},p={};return o.uniformIndices.forEach(function(e){let t=a[e],n=t.name;n.startsWith(u)&&(n=n.substr(u.length));let r=n.endsWith(`[0]`);r&&(n=n.substr(0,n.length-3));let i=J[t.type],o=i.Type,c=r?Cj(i.size,16)*t.size:i.size*t.size,l=new o(s,t.offset,c/o.BYTES_PER_ELEMENT);d[n]=l;let m=wj(l,r,i.rows,i.cols);f[n]=m,vj(n,m,p,f)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:d,setters:f}}function Ej(e,t,n){return Tj(e,t.program,t.uniformBlockSpec,n)}function Dj(e,t,n){let r=(t.uniformBlockSpec||t).blockSpecs[n.name];if(r){let t=r.index;return e.bindBufferRange(Rk,t,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Oj(e,t,n){Dj(e,t,n)&&e.bufferData(Rk,n.array,Fk)}function kj(e,t){let n=e.setters;for(let e in t){let r=n[e];if(r){let n=t[e];r(n)}}}function Aj(e,t){for(let n in t){let r=e[n];typeof r==`function`?r(t[n]):Aj(e[n],t[n])}}function jj(e,...t){let n=e.uniformSetters||e,r=t.length;for(let e=0;e<r;++e){let r=t[e];if(Array.isArray(r)){let e=r.length;for(let t=0;t<e;++t)jj(n,r[t])}else for(let e in r){let t=n[e];t&&t(r[e])}}}function Mj(e,t){let n={},r=e.getProgramParameter(t,Bk);for(let i=0;i<r;++i){let r=e.getActiveAttrib(t,i);if(hj(r))continue;let a=e.getAttribLocation(t,r.name),o=mj[r.type],s=o.setter(e,a,o);s.location=a,n[r.name]=s}return n}function Nj(e,t){for(let n in t){let r=e[n];r&&r(t[n])}}function Pj(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(Nj(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(Lk,n.indices))}function Fj(e,t){let n={program:t,uniformSetters:yj(e,t),attribSetters:Mj(e,t)};return UE(e)&&(n.uniformBlockSpec=xj(e,t),n.transformFeedbackInfo=bj(e,t)),n}var Ij=4,Lj=5123;function Rj(e,t,n,r,i,a){n=n===void 0?Ij:n;let o=t.indices,s=t.elementType,c=r===void 0?t.numElements:r;i=i===void 0?0:i,s||o?a===void 0?e.drawElements(n,c,s===void 0?Lj:t.elementType,i):e.drawElementsInstanced(n,c,s===void 0?Lj:t.elementType,i,a):a===void 0?e.drawArrays(n,i,c):e.drawArraysInstanced(n,i,c,a)}var zj=36160,Bj=36161,Vj=3553,Hj=5121,Uj=6402,Wj=6408,Gj=33190,Kj=36012,qj=35056,Jj=36013,Yj=32854,Xj=32855,Zj=36194,Qj=33189,$j=6401,eM=36168,tM=34041,nM=36064,rM=36096,iM=36128,aM=33306,oM=33071,sM=9729,cM=[{format:Wj,type:Hj,min:sM,wrap:oM},{format:tM}],lM={};lM[tM]=aM,lM[$j]=iM,lM[eM]=iM,lM[Uj]=rM,lM[Qj]=rM,lM[Gj]=rM,lM[Kj]=rM,lM[qj]=aM,lM[Jj]=aM;function uM(e,t){return lM[e]||lM[t]}var dM={};dM[Yj]=!0,dM[Xj]=!0,dM[Zj]=!0,dM[tM]=!0,dM[Qj]=!0,dM[$j]=!0,dM[eM]=!0;function fM(e){return dM[e]}var pM=32;function mM(e){return e>=nM&&e<nM+pM}function hM(e,t,n,r){let i=zj,a=e.createFramebuffer();e.bindFramebuffer(i,a),n||=e.drawingBufferWidth,r||=e.drawingBufferHeight,t||=cM;let o=[],s={framebuffer:a,attachments:[],width:n,height:r};return t.forEach(function(t,a){let c=t.attachment,l=t.samples,u=t.format,d=t.attachmentPoint||uM(u,t.internalFormat);if(d||=nM+a,mM(d)&&o.push(d),!c)if(l!==void 0||fM(u))c=e.createRenderbuffer(),e.bindRenderbuffer(Bj,c),l>1?e.renderbufferStorageMultisample(Bj,l,u,n,r):e.renderbufferStorage(Bj,u,n,r);else{let i=Object.assign({},t);i.width=n,i.height=r,i.auto===void 0&&(i.auto=!1,i.min=i.min||i.minMag||sM,i.mag=i.mag||i.minMag||sM,i.wrapS=i.wrapS||i.wrap||oM,i.wrapT=i.wrapT||i.wrap||oM),c=jk(e,i)}if(dE(e,c))e.framebufferRenderbuffer(i,d,Bj,c);else if(fE(e,c))t.layer===void 0?e.framebufferTexture2D(i,d,t.target||Vj,c,t.level||0):e.framebufferTextureLayer(i,d,c,t.level||0,t.layer);else throw Error(`unknown attachment type`);s.attachments.push(c)}),e.drawBuffers&&e.drawBuffers(o),s}function gM(e,t,n,r,i){r||=e.drawingBufferWidth,i||=e.drawingBufferHeight,t.width=r,t.height=i,n||=cM,n.forEach(function(n,a){let o=t.attachments[a],s=n.format,c=n.samples;if(c!==void 0||dE(e,o))e.bindRenderbuffer(Bj,o),c>1?e.renderbufferStorageMultisample(Bj,c,s,r,i):e.renderbufferStorage(Bj,s,r,i);else if(fE(e,o))Mk(e,o,n,r,i);else throw Error(`unknown attachment type`)})}function _M(e,t,n){let r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(t){Pj(e,t,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}var vM={addExtensionsToContext:!0},yM=/^(.*?)_/;function bM(e,t){WE(e,0);let n=e.getExtension(t);if(n){let r={},i=yM.exec(t)[1],a=`_`+i;for(let t in n){let o=n[t],s=typeof o==`function`,c=s?i:a,l=t;t.endsWith(c)&&(l=t.substring(0,t.length-c.length)),e[l]===void 0?s?e[l]=function(e){return function(){return e.apply(n,arguments)}}(o):(e[l]=o,r[l]=o):!s&&e[l]!==o&&lE(l,e[l],o,t)}r.constructor={name:n.constructor.name},WE(r,0)}return n}var xM=[`ANGLE_instanced_arrays`,`EXT_blend_minmax`,`EXT_color_buffer_float`,`EXT_color_buffer_half_float`,`EXT_disjoint_timer_query`,`EXT_disjoint_timer_query_webgl2`,`EXT_frag_depth`,`EXT_sRGB`,`EXT_shader_texture_lod`,`EXT_texture_filter_anisotropic`,`OES_element_index_uint`,`OES_standard_derivatives`,`OES_texture_float`,`OES_texture_float_linear`,`OES_texture_half_float`,`OES_texture_half_float_linear`,`OES_vertex_array_object`,`WEBGL_color_buffer_float`,`WEBGL_compressed_texture_atc`,`WEBGL_compressed_texture_etc1`,`WEBGL_compressed_texture_pvrtc`,`WEBGL_compressed_texture_s3tc`,`WEBGL_compressed_texture_s3tc_srgb`,`WEBGL_depth_texture`,`WEBGL_draw_buffers`];function SM(e){for(let t=0;t<xM.length;++t)bM(e,xM[t])}function CM(e,t){let n=[`webgl2`,`webgl`,`experimental-webgl`],r=null;for(let i=0;i<n.length;++i)if(r=e.getContext(n[i],t),r){vM.addExtensionsToContext&&SM(r);break}return r}function wM(e,t){return CM(e,t)}var TM=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
|
|
537
546
|
#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
|
|
538
547
|
out vec2 vPosInPixels;
|
|
539
548
|
#endif
|
|
540
|
-
flat out vec2 vHalfSizeInPixels;/***Adjusts the vertex position to ensure that the rectangle is at least \`minSpan\`*wide or high. Returns a value that reflects the amount of clamping and can be*used to adjust the opacity of the rectangle.**pos: vertex position*frac: vertex position within the rectangle,[0,1]*size: width or height of the rectangle*minSize: minimum width or height of the rectangle*/float clampMinSize(inout float pos,float frac,float size,float minSize){if(minSize>0.0&&size<minSize){pos+=(frac-0.5)*(minSize-size);return size/minSize;}return 1.0;}void sort(inout float a,inout float b){if(a>b){float tmp=b;b=a;a=tmp;}}/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/vec2 getVertexPos(){int index=gl_VertexID % 6;return vec2(index==0||index==1||index==3 ? 0.0 : 1.0,index==0||index==1||index==2 ? 0.0 : 1.0);}void main(void){vec2 frac=getVertexPos();vec2 normalizedMinSize=vec2(uMinWidth,uMinHeight)/uViewportSize;vec4 cornerRadii=vec4(uCornerRadiusTopRight,uCornerRadiusBottomRight,uCornerRadiusTopLeft,uCornerRadiusBottomLeft);float x=getScaled_x();float x2=getScaled_x2();float y=getScaled_y();float y2=getScaled_y2();sort(x,x2);sort(y,y2);float clampMargin=1.0;vec2 pos1=vec2(clamp(x,0.0-clampMargin,1.0+clampMargin),y);vec2 pos2=vec2(clamp(x2,0.0-clampMargin,1.0+clampMargin),y2);vec2 size=pos2-pos1;if(size.x
|
|
549
|
+
flat out vec2 vHalfSizeInPixels;/***Adjusts the vertex position to ensure that the rectangle is at least \`minSpan\`*wide or high. Returns a value that reflects the amount of clamping and can be*used to adjust the opacity of the rectangle.**pos: vertex position*frac: vertex position within the rectangle,[0,1]*size: width or height of the rectangle*minSize: minimum width or height of the rectangle*/float clampMinSize(inout float pos,float frac,float size,float minSize){if(minSize>0.0&&size<minSize){pos+=(frac-0.5)*(minSize-size);return size/minSize;}return 1.0;}void sort(inout float a,inout float b){if(a>b){float tmp=b;b=a;a=tmp;}}/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/vec2 getVertexPos(){int index=gl_VertexID % 6;return vec2(index==0||index==1||index==3 ? 0.0 : 1.0,index==0||index==1||index==2 ? 0.0 : 1.0);}void main(void){vec2 frac=getVertexPos();vec2 normalizedMinSize=vec2(uMinWidth,uMinHeight)/uViewportSize;vec4 cornerRadii=vec4(uCornerRadiusTopRight,uCornerRadiusBottomRight,uCornerRadiusTopLeft,uCornerRadiusBottomLeft);float x=getScaled_x();float x2=getScaled_x2();float y=getScaled_y();float y2=getScaled_y2();sort(x,x2);sort(y,y2);float clampMargin=1.0;vec2 pos1=vec2(clamp(x,0.0-clampMargin,1.0+clampMargin),y);vec2 pos2=vec2(clamp(x2,0.0-clampMargin,1.0+clampMargin),y2);vec2 size=pos2-pos1;if(size.x<0.0||size.y<0.0){gl_Position=vec4(0.0,0.0,0.0,1.0);return;}vec2 pos=pos1+frac*size;size.y*=getSampleFacetHeight(pos);float opaFactor=uViewOpacity*max(uMinOpacity,clampMinSize(pos.x,frac.x,size.x,normalizedMinSize.x)*clampMinSize(pos.y,frac.y,size.y,normalizedMinSize.y));size=max(size,normalizedMinSize);pos=applySampleFacet(pos);
|
|
541
550
|
#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
|
|
542
551
|
float aaPadding=1.0/uDevicePixelRatio;float shadowPadding=uShadowBlur+max(abs(uShadowOffsetX),abs(uShadowOffsetY));float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding+shadowPadding*2.0)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(cornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
|
|
543
552
|
#endif
|
|
544
|
-
gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,
|
|
553
|
+
gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,EM=`#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
|
|
545
554
|
in vec2 vPosInPixels;
|
|
546
555
|
#endif
|
|
547
556
|
flat in vec2 vHalfSizeInPixels;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in float vHalfStrokeWidth;flat in vec4 vCornerRadii;out lowp vec4 fragColor;
|
|
@@ -567,54 +576,54 @@ if(vHalfStrokeWidth>0.0&&uHatchPattern>0){d=max(d,-pattern());}fragColor=distanc
|
|
|
567
576
|
#else
|
|
568
577
|
fragColor=vFillColor;if(uPickingEnabled){fragColor=vPickingColor;}
|
|
569
578
|
#endif
|
|
570
|
-
}`,
|
|
579
|
+
}`,DM=`layout(std140)uniform Mark{uniform float uMinWidth;uniform float uMinHeight;uniform float uMinOpacity;uniform float uCornerRadiusTopRight;uniform float uCornerRadiusBottomRight;uniform float uCornerRadiusTopLeft;uniform float uCornerRadiusBottomLeft;uniform int uHatchPattern;uniform vec3 uShadowColor;uniform float uShadowOpacity;uniform float uShadowBlur;uniform float uShadowOffsetX;uniform float uShadowOffsetY;
|
|
571
580
|
#pragma markUniforms
|
|
572
|
-
};`,
|
|
581
|
+
};`,OM=1e4,kM=class{#e=!1;constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}configure(){if(this.#e)throw Error(`Already configured!`);this.#t(),this.#n(),this.#e=!0}addConverter(e,t){let n=this.createUpdater(e,t.numComponents||1,t.targetArrayType??Float32Array,t.arrayReference),r=t.f;this.dataUpdaters.push((t.arrayReference,e=>n(r(e))))}createUpdater(e,t,n=Float32Array,r=void 0){if(!N(this.size))throw Error(`The number of vertices must be defined!`);let i,a,o=0,s=new n(this.size*t);if(this.arrays[e]={data:s,numComponents:t},t==1){let e=0;i=()=>{s[o++]=e},a=t=>{e=+t}}else{let e=r??[0],n=r?e=>{}:t=>{e=t};switch(t){case 1:break;case 2:i=()=>{s[o++]=e[0],s[o++]=e[1]},a=n;break;case 3:i=()=>{s[o++]=e[0],s[o++]=e[1],s[o++]=e[2]},a=n;break;case 4:i=()=>{s[o++]=e[0],s[o++]=e[1],s[o++]=e[2],s[o++]=e[3]},a=n;break;default:throw Error(`Invalid numComponents: `+t)}}return this.pushers.push(i),a}pushAll(){throw Error(`Call configure() first!`)}updateFromDatum(e){throw Error(`Call configure() first!`)}#t(){if(this.size>OM){let e=this.pushers.map((e,t)=>`const p${t} = that.pushers[${t}];`).join(`
|
|
573
582
|
`),t=this.pushers.map((e,t)=>` p${t}();`).join(`
|
|
574
583
|
`);this.pushAll=Function(`that`,`${e}
|
|
575
584
|
return function unrolledPushAll() {
|
|
576
585
|
${t}
|
|
577
586
|
that.vertexCount++;
|
|
578
|
-
};`)(this)}else this.pushAll=()=>{for(let e=0;e<this.pushers.length;e++)this.pushers[e]();this.vertexCount++}}#n(){if(this.size>
|
|
587
|
+
};`)(this)}else this.pushAll=()=>{for(let e=0;e<this.pushers.length;e++)this.pushers[e]();this.vertexCount++}}#n(){if(this.size>OM){let e=this.dataUpdaters.map((e,t)=>`const u${t} = that.dataUpdaters[${t}];`).join(`
|
|
579
588
|
`),t=this.dataUpdaters.map((e,t)=>` u${t}(datum);`).join(`
|
|
580
589
|
`);this.updateFromDatum=Function(`that`,`datum`,`${e}
|
|
581
590
|
return function unrolledUpdateFromDatum(datum) {
|
|
582
591
|
${t}
|
|
583
|
-
};`)(this)}else this.updateFromDatum=e=>{for(let t=0;t<this.dataUpdaters.length;t++)this.dataUpdaters[t](e)}}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}
|
|
592
|
+
};`)(this)}else this.updateFromDatum=e=>{for(let t=0;t<this.dataUpdaters.length;t++)this.dataUpdaters[t](e)}}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}},AM=127;function jM(e){let t=[];for(let e=0;e<=AM;e++)t.push(void 0);let n=new Map;for(let r of e.chars)r.id<=AM?t[r.id]=r:n.set(r.id,r);let r=8722;n.has(r)||n.set(r,t[45]);function i(e){return(e<=AM?t[e]:n.get(e))||t[63]}function a(e){return i(e.charCodeAt(0))}let o=e.common.base,s=a(`x`),c=a(`X`),l=a(`q`),u=s.height-10,d=c.height-10,f=l.height-s.height+l.yoffset-s.yoffset;function p(e,t=1){let n=0;for(let t=0;t<e.length;t++)n+=i(e.charCodeAt(t)).xadvance;return n/o*t}return{measureWidth:p,getCharByCode:i,getChar:a,xHeight:u,capHeight:d,descent:f,common:e.common}}function MM(){let e=e=>e;return e.invert=e=>e,e.copy=MM,e.invertRange=()=>{},e.type=`null`,e}var NM=4294967295,PM=4294967295;function FM(e){let t=e>>>0;return t^=t>>>16,t=Math.imul(t,2146121005),t^=t>>>15,t=Math.imul(t,2221713035),t^=t>>>16,t>>>0}function IM(e,t={}){let n=Array.from(e,e=>RM(e,`key`)),r=n.length,i=t.maxLoadFactor??.6;if(!(i>0&&i<1))throw Error(`maxLoadFactor must be between 0 and 1.`);let a=t.capacity??zM(Math.ceil(r/i));if(!Number.isSafeInteger(a)||a<1)throw Error(`capacity must be a positive power of two.`);if(a&a-1)throw Error(`capacity must be a power of two.`);let o=new Uint32Array(a);o.fill(NM);let s=a-1;for(let e of n){if(e===4294967295)throw Error(`Hash table keys must not equal the empty sentinel (0xffffffff).`);let t=FM(e)&s,n=!1;for(let r=0;r<a;r+=1){let r=o[t];if(r===4294967295||r===e){o[t]=e,n=!0;break}t=t+1&s}if(!n)throw Error(`Hash table insertion failed. Increase capacity or lower load factor.`)}return{table:o,capacity:a,size:r}}function LM(e,t){if(!Number.isSafeInteger(e)||e<1)throw Error(`capacity must be a positive integer.`);if(e&e-1)throw Error(`capacity must be a power of two.`);if(!Number.isSafeInteger(t)||t<1)throw Error(`maxTextureSize must be a positive integer.`);if(e>t*t)throw Error(`Selection hash table exceeds maximum texture capacity.`);let n=1<<Math.floor(Math.log2(t)),r=Math.min(e,n),i=e/r;if(i>t)throw Error(`Selection hash table dimensions exceed maximum texture size.`);return{width:r,height:i}}function RM(e,t){if(!Number.isSafeInteger(e)||e<0||e>PM)throw Error(t+` must be a non-negative u32.`);return e>>>0}function zM(e){let t=Math.max(1,e);return--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t+1}var BM=class{constructor(e,t,n,r){this._container=e,this._canvas=t,this._sizeSource=n,this._onPhysicalSizeChange=r??(()=>{}),this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0,this._devicePixelContentBoxObserver=void 0,this._observeDevicePixelContentBox()}invalidate(){this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0}finalize(){this._devicePixelContentBoxObserver&&this._devicePixelContentBoxObserver.disconnect()}getPhysicalCanvasSize(e){if(this._devicePixelContentBoxSize)return this._devicePixelContentBoxSize;let t=window.devicePixelRatio??1;return e||=this.getLogicalCanvasSize(),{width:Math.round(e.width*t),height:Math.round(e.height*t)}}getDevicePixelRatio(e){e||=this.getLogicalCanvasSize();let t=this.getPhysicalCanvasSize(e),n=e.width>0?t.width/e.width:void 0,r=e.height>0?t.height/e.height:void 0;return n!==void 0&&r!==void 0?(n+r)/2:n===void 0?r===void 0?window.devicePixelRatio??1:r:n}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;let e=this._sizeSource(),t=window.getComputedStyle(this._container,null),n=this._container.getBoundingClientRect(),r=parseFloat(t.paddingLeft),i=parseFloat(t.paddingRight),a=parseFloat(t.paddingTop),o=parseFloat(t.paddingBottom),s=parseFloat(t.borderLeftWidth),c=parseFloat(t.borderRightWidth),l=parseFloat(t.borderTopWidth),u=parseFloat(t.borderBottomWidth);return this._logicalCanvasSize={width:e.width??n.width-r-i-s-c,height:e.height??n.height-a-o-l-u},this._logicalCanvasSize}_observeDevicePixelContentBox(){if(typeof ResizeObserver!=`function`)return;let e=new ResizeObserver(e=>{let t=e.find(e=>e.target==this._canvas);if(!t)return;let n=t.devicePixelContentBoxSize;if(!n)return;let r=Array.isArray(n)?n[0]:n;if(!r)return;let i={width:r.inlineSize,height:r.blockSize};this._devicePixelContentBoxSize&&this._devicePixelContentBoxSize.width==i.width&&this._devicePixelContentBoxSize.height==i.height||(this._devicePixelContentBoxSize=i,this._onPhysicalSizeChange())});try{e.observe(this._canvas,{box:`device-pixel-content-box`}),this._devicePixelContentBoxObserver=e}catch{e.disconnect()}}},VM=class{constructor(e,t,n={},r){let i=t??(()=>({width:void 0,height:void 0}));this._canvasSizeHelper=void 0,this._appliedCanvasSize=void 0,this._onCanvasResize=r??(()=>{}),this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;let a=document.createElement(`canvas`);e.appendChild(a);let o=wM(a,{antialias:!0,depth:!1,premultipliedAlpha:!0,...n});if(!o)throw Error(`Unable to initialize WebGL. Your browser or machine may not support it.`);if(!UE(o))throw Error(`Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.`);SM(o);let s=o.getExtension(`WEBGL_provoking_vertex`);s&&s.provokingVertexWEBGL(s.FIRST_VERTEX_CONVENTION_WEBGL),o.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA),this.canvas=a,this.gl=o,this._pickingAttachmentOptions=[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],this._pickingBufferInfo=hM(o,this._pickingAttachmentOptions),o.bindFramebuffer(o.FRAMEBUFFER,null),this._canvasSizeHelper=new BM(e,a,i,()=>{this.adjustGl()&&this._onCanvasResize()}),this.adjustGl()}invalidateSize(){this._canvasSizeHelper.invalidate(),this.adjustGl()}compileShader(e,t){Ze(t)&&(t=t.join(`
|
|
584
593
|
|
|
585
594
|
`));let n=this.gl,r=t.replaceAll(/ {2,}|^\s*\/\/.*$/gm,``),i=this._shaderCache.get(r);if(!i){let a=[`#version 300 es`,`precision mediump float;`,t].join(`
|
|
586
595
|
|
|
587
|
-
`);i=n.createShader(e),n.shaderSource(i,a),n.compileShader(i),this._shaderCache.set(r,i)}return i}adjustGl(){let e=this.getLogicalCanvasSize(),t=this.getPhysicalCanvasSize(e);this._appliedCanvasSize&&this._appliedCanvasSize.logicalWidth==e.width&&this._appliedCanvasSize.logicalHeight==e.height&&this._appliedCanvasSize.physicalWidth==t.width&&this._appliedCanvasSize.physicalHeight==t.height
|
|
596
|
+
`);i=n.createShader(e),n.shaderSource(i,a),n.compileShader(i),this._shaderCache.set(r,i)}return i}adjustGl(){let e=this.getLogicalCanvasSize(),t=this.getPhysicalCanvasSize(e);return this._appliedCanvasSize&&this._appliedCanvasSize.logicalWidth==e.width&&this._appliedCanvasSize.logicalHeight==e.height&&this._appliedCanvasSize.physicalWidth==t.width&&this._appliedCanvasSize.physicalHeight==t.height?!1:(this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`,this.canvas.width=t.width,this.canvas.height=t.height,gM(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions),this._appliedCanvasSize={logicalWidth:e.width,logicalHeight:e.height,physicalWidth:t.width,physicalHeight:t.height},!0)}finalize(){this._canvasSizeHelper.finalize(),this.canvas.remove()}getPhysicalCanvasSize(e){return this._canvasSizeHelper.getPhysicalCanvasSize(e)}getDevicePixelRatio(e){return this._canvasSizeHelper.getDevicePixelRatio(e)}getLogicalCanvasSize(){return this._canvasSizeHelper.getLogicalCanvasSize()}createRangeTexture(e,t=!1){let n=this.rangeTextures.get(e.getScale());if(!t&&n)return;function r(e,t){return ym(t.type)?t.domain().length:t.type==`threshold`?t.domain().length+1:t.type==`quantize`||t.type==`quantile`?e??4:e}let i=e.channel;if(Jh(i)){let t=e.getScale(),i=t.props,a=t.range(),o;if(i.scheme)if(t.type==`threshold`&&a)o=XM(a,this.gl,t.domain().length,n);else{let e=P(i.scheme)?void 0:i.scheme.count;e=r(e,t),o=qM(i.scheme,this.gl,e,n,!!i.reverse)}else o=Sm(t.type)||vm(t.type)&&a.length>1?JM(a,i.interpolate,this.gl,n):XM(a,this.gl,t.domain().length,n);this.rangeTextures.set(t,o)}else{let t=e.getScale();if(t.type===`ordinal`||bm(t.type)){let e=Yh(i)?Qh(i):e=>e,r=t.range();this.rangeTextures.set(t,YM(r.map(e),this.gl,t.domain().length,n))}}}createSelectionTexture(e,t=!0){if(!og(e))throw Error(`Not a multi-point selection, cannot create texture`);let{table:n,capacity:r}=IM(e.data.keys()),{width:i,height:a}=LM(r,this.gl.getParameter(this.gl.MAX_TEXTURE_SIZE)),o=this.selectionTextures.get(e),s=this.gl,c=WM(this.gl,{auto:!1,level:0,min:s.NEAREST,mag:s.NEAREST,format:s.RED_INTEGER,internalFormat:s.R32UI,width:i,height:a},n,t?o:!1);s.bindTexture(s.TEXTURE_2D,c),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_BASE_LEVEL,0),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAX_LEVEL,0),s.bindTexture(s.TEXTURE_2D,null),this.selectionTextures.set(e,c)}};function HM(e,t=``,n=0){let r=[...t.matchAll(/ERROR:\s*\d+:(\d+)/gi)],i=new Map(r.map((e,n)=>{let i=parseInt(e[1]),a=r[n+1],o=a?a.index:t.length,s=t.substring(e.index,o);return[i-1,s]}));return e.split(`
|
|
588
597
|
`).map((e,t)=>{let r=i.get(t);return`${t+1+n}: ${e}${r?`\n\n^^^ ${r}`:``}`}).join(`
|
|
589
|
-
`)}function
|
|
598
|
+
`)}function UM(e,t,n){let r=e.createProgram();e.attachShader(r,t),e.attachShader(r,n),e.linkProgram(r);function i(){let i,a;if(!e.getProgramParameter(r,e.LINK_STATUS)){i=e.getProgramInfoLog(r);for(let r of[t,n])e.getShaderParameter(r,e.COMPILE_STATUS)||(i=e.getShaderInfoLog(r),a=HM(e.getShaderSource(r),i,0)+`\nError compiling: ${i}`,e.deleteShader(r));e.deleteProgram(r)}if(i)return{message:i,detail:a}}return{program:r,getProgramErrors:i}}function WM(e,t,n,r){return r?kk(e,r,n,t):r=jk(e,{...t,src:n}),r}function GM(e,t,n,r){let{height:i,framebuffer:a}=t,o=new Uint8Array(4);return e.bindFramebuffer(e.FRAMEBUFFER,a),e.readPixels(n,i-r-1,1,1,e.RGBA,e.UNSIGNED_BYTE,o),e.bindFramebuffer(e.FRAMEBUFFER,null),o}function KM(e,t,n=`image/png`){let{width:r,height:i}=t,a=new Uint8Array(r*i*4);e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),e.bindFramebuffer(e.FRAMEBUFFER,null);let o=document.createElement(`canvas`);o.width=r,o.height=i;let s=o.getContext(`2d`),c=s.createImageData(r,i);for(let e=0;e<i;e++){let t=(i-1-e)*r*4,n=e*r*4;c.data.set(a.subarray(t,t+r*4),n)}return s.putImageData(c,0,0),o.toDataURL(n)}function qM(e,t,n,r,i=!1){let a=P(e)?e:e.name,o=!P(e)&&e.extent||[0,1];if(n===void 0&&!P(e)&&(n=e.count),a){let e=Nm(a);if(pt(e)){let a=ZM(e,{extent:o,count:n,reverse:i});return WM(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},a,r)}else if(Ze(e))return XM(i?Array.from(e).reverse():e,t,n,r);else throw Error(`Unknown scheme: `+a)}}function JM(e,t=`rgb`,n,r){let i=ZM(wm(e,P(t)?t:t.type,P(t)?void 0:t.gamma));return WM(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},i,r)}function YM(e,t,n,r){let i=Math.max(e.length,n||0),a=new Float32Array(i);for(let t=0;t<i;t++)a[t]=e[t%e.length];return WM(t,{minMag:t.NEAREST,format:t.RED,internalFormat:t.R32F,height:1},a,r)}function XM(e,t,n,r){let i=QM(e,n);return WM(t,{minMag:t.NEAREST,format:t.RGB,height:1},i,r)}function ZM(e,{extent:t=[0,1],reverse:n=!1,count:r=256}={}){let i=t[0],a=Zl(t)-i,o=Vn(r).map(e=>e/(r-1)).map(e=>i+e/a).map(e);return n&&o.reverse(),QM(o)}function QM(e,t){let n=Math.max(e.length,t||0),r=new Uint8Array(n*3);for(let t=0;t<n;t++){let n=e[t%e.length],i=Cu(n);if(!i)throw Error(`Invalid color "${n}" in the scheme ${JSON.stringify(e)}!`);let a=i.rgb();r[t*3+0]=a.r,r[t*3+1]=a.g,r[t*3+2]=a.b}return r}function $M(e){let t=Cu(e).rgb();return[t.r,t.g,t.b].map(e=>e/255)}var eN=`attr_`,tN=`uDomain_`,nN=`range_`,rN=`accessor_`,iN=`scale_`,aN=`getScaled_`,oN=`uRangeTexture_`,sN=`uParam_`,cN=`checkSelection_`,lN=3402823466e29;function uN(e){let t=e.match(/^(?:(\w+)-)?(\w+)$/);if(!t)throw Error(`Not a scale type: `+e);return{family:t[1]||`continuous`,transform:t[2]}}function dN(e,t){return`${rN}${e}_${t}`}function fN(e,t,n){let r;if(Yh(e))r=yN(Qh(e)(n));else if(P(n))if(Jh(e))r=SN(n);else throw Error(`String values are not supported on the "${e}" channel: ${n}`);else if(St(n))r=yN(n?1:0);else if(n===null)if(Jh(e))r=yN([0,0,0]);else throw Error(`null value is not supported on the "${e}" chanel.`);else r=yN(n);let i=dN(e,t);return{channel:e,accessorGlsl:`
|
|
590
599
|
${r.type} ${i}() {
|
|
591
600
|
// Constant value
|
|
592
601
|
return ${r};
|
|
593
|
-
}`,accessorFunctionName:i}}function
|
|
602
|
+
}`,accessorFunctionName:i}}function pN(e,t){let n=`float`,r=e=>e;Jh(e)&&(n=`vec3`,r=e=>$M(e));let i=`u${PN(e)}_${t}`,a=` // Dynamic value\n uniform ${n} ${i};`,o=dN(e,t);return{channel:e,uniformName:i,uniformGlsl:a,accessorGlsl:`
|
|
594
603
|
${n} ${o}() {
|
|
595
604
|
// Dynamic value
|
|
596
605
|
return ${i};
|
|
597
|
-
}`,accessorFunctionName:o,adjuster:r}}function
|
|
606
|
+
}`,accessorFunctionName:o,adjuster:r}}function mN(e,t,n,r=[e]){let{attributeType:i}=TN(t,e),a=NN(r),o=`in highp ${i} ${a};`,s=dN(e,n);return{channel:e,attributeName:a,attributeGlsl:o,accessorGlsl:`
|
|
598
607
|
${i} ${s}() {
|
|
599
608
|
return ${a};
|
|
600
|
-
}`,accessorFunctionName:s}}function
|
|
609
|
+
}`,accessorFunctionName:s}}function hN(e,t,n){let{attributeType:r}=TN(t,e),i=NN(e),a=` uniform highp ${r} ${i};`,o=dN(e,n);return{channel:e,uniformName:i,uniformGlsl:a,accessorGlsl:`
|
|
601
610
|
${r} ${o}() {
|
|
602
611
|
return ${i};
|
|
603
|
-
}`,accessorFunctionName:o}}function
|
|
604
|
-
${g} ${
|
|
612
|
+
}`,accessorFunctionName:o}}function gN(e,t,n){t??=MM();let r=qh(e),i=tN+r,a=nN+r,{hp:o,attributeType:s}=TN(t,e),c=t.domain?t.domain().length:void 0,l,u=[];u.push(``),u.push(`/`.repeat(70)),u.push(`// Channel: ${e}`),u.push(``);let{transform:d}=uN(t.type),f=(e,...t)=>wN.apply(null,[e,`value`,...t]),p;switch(d){case`linear`:p=f(`scaleLinear`,`domain`,a);break;case`log`:p=f(`scaleLog`,`domain`,a,t.base());break;case`symlog`:p=f(`scaleSymlog`,`domain`,a,t.constant());break;case`pow`:case`sqrt`:p=f(`scalePow`,`domain`,a,t.exponent());break;case`index`:case`locus`:p=f(`scaleBandHp`,`domain`,a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case`point`:case`band`:p=f(`scaleBand`,`domain`,a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case`ordinal`:case`null`:case`identity`:p=f(`scaleIdentity`);break;case`threshold`:break;default:throw Error(`Unsupported scale type: ${t.type}! ${e}: ${JSON.stringify(n)}`)}let m=FN(t,e),h;if(m&&e==r){let e=t.props.range??[];if(z(e)||e.some(z)){if(m.length<1||m.length>4)throw Error(`A range with ExprRefs must have 1-4 elements, not ${m.length}! Range: ${JSON.stringify(m)}`);h=` uniform ${bN(m.length)} ${a};`}else if(m.length&&m.every(N)){let e=CN(m);u.push(`const ${e.type} ${a} = ${e};`)}}let g=xN(e),_;if(Jh(e)){let n=oN+r;if(e==r&&u.push(`uniform sampler2D ${n};`),vm(t.type))_=`getInterpolatedColor(${n}, transformed)`;else if(ym(t.type)||bm(t.type))_=`getDiscreteColor(${n}, int(transformed))`;else throw Error(`Problem with color scale!`)}else if(t.type===`ordinal`||bm(t.type)){let t=oN+r;e==r&&u.push(`uniform sampler2D ${t};`),_=`getDiscreteColor(${t}, int(transformed)).r`}let v=[],y=vm(t.type)&&c>2,b=bm(t.type)||y;if(v.push(`int slot = 0;`),b){let e=i;v.push(y?`while (slot < ${e}.length() - 2 && value >= ${e}[slot + 1]) { slot++; }`:`while (slot < ${e}.length() && value >= ${e}[slot]) { slot++; }`)}let x=vm(t.type)||bm(t.type)||[`band`,`point`].includes(t.type);if(p){let e=i;x&&(o?v.push(`vec3 domain = ${e};`):v.push(`vec2 domain = vec2(${e}[slot], ${e}[slot + 1]);`)),v.push(`float transformed = ${p};`),y&&v.push(`transformed = (float(slot) + transformed) / (float(${e}.length() - 1));`)}else v.push(`float transformed = float(slot);`);`clamp`in t&&t.clamp()&&v.push(`transformed = clampToRange(transformed, ${CN(m)});`),v.push(`return ${_??`transformed`};`),u.push(`
|
|
613
|
+
${g} ${iN}${e}(${s} value) {
|
|
605
614
|
${v.map(e=>` ${e}\n`).join(``)}
|
|
606
615
|
}`);let S=u.join(`
|
|
607
|
-
`);if(x&&e==r){let e=
|
|
608
|
-
${
|
|
616
|
+
`);if(x&&e==r){let e=vm(t.type)||bm(t.type)?c:2;l=o?` highp vec3 ${i};`:` mediump float ${i}[${e}];`}return{glsl:S,domainUniformName:i,domainUniform:l,rangeUniformName:a,rangeUniform:h}}function _N(e,t){let n=xN(e),r=[],i=[];for(let n=0;n<t.length;n++){let{accessor:a,predicate:o}=t[n],s=dN(e,n),{param:c,empty:l}=o;r.push(c?`${cN}${c}(${!!l})`:null),i.push(a.scaleChannel?`return ${iN}${e}(${s}());`:`return ${s}();`)}return`${n} ${aN}${e}() {
|
|
617
|
+
${IN(r,i)}
|
|
609
618
|
}
|
|
610
619
|
|
|
611
|
-
#define ${e}_DEFINED`}function
|
|
620
|
+
#define ${e}_DEFINED`}function vN(e){if(!N(e))throw Error(`Not a number: ${e}`);if(e==1/0)return``+lN;if(e==-1/0)return``+-lN;{let t=`${e}`;return/^(-)?\d+$/.test(t)&&(t+=`.0`),t}}function yN(e){typeof e==`number`&&(e=[e]);let t=e.length;if(t<1||t>4)throw Error(`Invalid number of components: `+t);let n=bN(t),r=`${n}(${e.map(vN).join(`, `)})`;return Object.assign(r,{type:n,numComponents:t})}function bN(e){switch(e){case 1:return`float`;case 2:return`vec2`;case 3:return`vec3`;case 4:return`vec4`;default:throw Error(`Invalid number of components: `+e)}}function xN(e){return Jh(e)?`vec3`:e==`uniqueId`?`uint`:`float`}function SN(e){return yN($M(e))}function CN(e){return yN([e[0],Zl(e)])}function wN(e,...t){let n=[];for(let e of t)N(e)?n.push(vN(e)):Ze(e)?n.push(yN(e)):n.push(e);return`${e}(${n.join(`, `)})`}function TN(e,t){let n=e&&ym(e.type),r=e&&EN(e.type),i=r&&DN(e.domain()),a=i?{attributeType:`uvec2`,arrayConstructor:Uint32Array}:r?{attributeType:`uint`,arrayConstructor:Uint32Array}:n?{attributeType:`uint`,arrayConstructor:Uint16Array}:t==`uniqueId`?{attributeType:`uint`,arrayConstructor:Uint32Array}:{attributeType:`float`,arrayConstructor:Float32Array};return Object.assign(a,{numComponents:+(a.attributeType.match(/^(?:u)?vec([234])$/)?.[1]??1),discrete:n,hp:r,largeHp:i})}function EN(e){return e==`index`||e==`locus`}function DN(e){return e[1]>2**32}var ON=2**12;ON-1;function kN(e,t=[]){let n=e%ON;return t[0]=(e-n)/ON,t[1]=n,t}function AN(e){let t=e%ON;return[e-t,t]}function jN(e){return[...AN(e[0]),e[1]-e[0]]}function MN(e){let t=new hn([],JSON.stringify);for(let[n,r]of Object.entries(e)){let e=r.channelDef;if(kh(e)){let i=[e.field,r.scale?(vm(r.scale.type)||bm(r.scale.type))??!1:!1];t.set(i,[...t.get(i)??[],n])}}return t}function NN(e){return eN+Xl(e).toSorted().join(`_`)}function PN(e){return e[0].toUpperCase()+e.slice(1)}var FN=(e,t)=>Sm(e.type)||vm(e.type)&&Jh(t)?[0,1]:e.range?e.range():void 0;function IN(e,t){if(e.length!=t.length)throw Error(`Unequal array lengths`);let n=e.length;if(n==0)return``;if(n==1&&e[0]==null)return t[0];let r=[];for(let i=0;i<n;i++){let a=e[i],o=i==0?`if (${a})`:a==null&&i==n-1?`else`:`else if (${a})`;r.push(` ${o} {
|
|
612
621
|
${t[i]}
|
|
613
622
|
}`)}return r.join(`
|
|
614
|
-
`)}function
|
|
623
|
+
`)}function LN(){let e=0,t,n=0,r=new Map,i=i=>i===t?n:(n=r.get(i),n===void 0&&(n=e++,r.set(i,n)),t=i,n);return i.addAll=e=>{for(let t of e)i(t)},i.invert=e=>{for(let t of r.entries())if(t[1]==e)return t[0]},i.domain=()=>[...r.keys()],i}function RN(e,t=0,n=1){return Math.max(t,Math.min(n,e))}var zN=2**31-1,BN=-(2**31);function VN(e,t,n,r=n,i=0,a=i){if(a<=i||t[1]<=t[0])return;let o=Array(e);o.fill(zN);let s=Array(e);s.fill(0);let c=t[0],l=(t[1]-t[0])/e,u=(t,n)=>{let r=(t-c)/l,i=Math.floor(r);return RN(n&&i==r?i-1:i,0,e-1)},d=BN,f=-1/0,p=!1,m=(e,t,n=[0,0])=>{let r=u(e,!1),i=u(t,!0),a=o[r],c=Math.max(s[i],a);return n[0]=a,n[1]=c,n};for(let e=i;e<a;){let t=e,i=n(e),c=r(e);for(e+=1;e<a&&n(e)===i&&r(e)===c;)e+=1;if(t>d)d=t;else{p=!0;break}if(i<f||c<i){p=!0;break}f=i;let l=u(i,!1),m=u(c,!0);for(let n=l;n<=m;n++)o[n]>t&&(o[n]=t),s[n]<e&&(s[n]=e)}if(p)return;for(let e=1;e<s.length;e++)s[e]<s[e-1]&&(s[e]=s[e-1]);let h=!0;for(let e=o.length-1;e>0;e--)h&&o[e]==zN?(o[e]=s[e],h=!1):o[e-1]>o[e]&&(o[e-1]=o[e]);return m}var HN=class{constructor({encoders:e,numVertices:t=void 0,attributes:n=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([e,t])=>n.includes(e)&&t&&!t.constant));let r=[...MN(e).entries()].filter(([e,t])=>e[1]&&t.length>1).map(([e,t])=>t);this.allocatedVertices=t,this.variableBuilder=new kM(t),this.attributeNames={};for(let[e,t]of Object.entries(this.variableEncoders)){let n=Th(t);if(!n)continue;let i=r.find(t=>t.find(t=>t==e)),a=n.asNumberAccessor(),o=t.scale,{largeHp:s,arrayConstructor:c,discrete:l,numComponents:u}=TN(o,e),d=[0,0],f;if(o&&l)if(`props`in o&&o.props.domainIndexer)f=o.props.domainIndexer;else if(`domain`in o)f=LN(),f.addAll(o.domain());else throw Error(`Missing domain indexer for discrete scale.`);let p=f?e=>f(n(e)):s?e=>kN(a(e),d):a,m=NN(i??e);for(let t of i??[e])this.attributeNames[t]=m;i&&e!=i[0]||this.variableBuilder.addConverter(m,{f:p,numComponents:u,arrayReference:s?d:void 0,targetArrayType:c})}let i=this.variableEncoders.x,a=this.variableEncoders.x2,o=this.encoders.x?.channelDef,s=i?.scale;if(o?.buildIndex&&i&&s&&vm(s.type)){let e=this.attributeNames.x;if(!e)throw Error(`Missing x attribute for x indexing.`);let t=a?.scale&&vm(a.scale.type)?this.attributeNames.x2??e:e;this.xIndexConfig={domain:[s.domain()[0],s.domain()[1]],xAttributeName:e,x2AttributeName:t}}else this.xIndexConfig=void 0;this.lastOffset=0,this.rangeMap=new hn([],JSON.stringify)}registerBatch(e){let t=this.lastOffset,n=this.variableBuilder.vertexCount,r=n-t;r&&this.rangeMap.set(e,{offset:t,count:r,xIndex:this.createXIndex(t,n)}),this.lastOffset=n}addBatches(e){for(let[t,n]of e)this.addBatch(t,n)}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}createXIndex(e,t){let n=this.xIndexConfig;if(!n)return;let r=e=>{let{data:t,numComponents:n}=this.variableBuilder.arrays[e];return n==2?e=>{let r=e*n;return t[r]*ON+t[r+1]}:e=>t[e*n]},i=r(n.xAttributeName),a=n.x2AttributeName==n.xAttributeName?i:r(n.x2AttributeName);return VN(50,n.domain,i,a,e,t)}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}},UN=class extends HN{constructor({encoders:e,attributes:t,numItems:n}){super({encoders:e,attributes:t,numVertices:n*6}),this.variableBuilder.configure();let r=this.variableBuilder.pushAll;this.pushAllSixTimes=n>500?Function(`pushAll`,`return function unrolledPushAllSixTimes() {
|
|
615
624
|
pushAll(); pushAll(); pushAll(); pushAll(); pushAll(); pushAll();
|
|
616
|
-
};`)(r):function(){r(),r(),r(),r(),r(),r()}}addBatch(e,t,n=0,r=t.length){if(!(r<=n)){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.pushAllSixTimes()}this.registerBatch(e)}}},
|
|
617
|
-
uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}const highp uint HASH_EMPTY_KEY=0xffffffffu;highp uint hash32(highp uint key){highp uint v=key;v ^=v>>16u;v*=0x7feb352du;v ^=v>>15u;v*=0x846ca68bu;v ^=v>>16u;return v;}bool isEmptyHashTexture(highp usampler2D s){ivec2 texSize=textureSize(s,0);return texSize.x==1&&texSize.y==1&&texelFetch(s,ivec2(0,0),0).r==HASH_EMPTY_KEY;}bool hashContainsTexture(highp usampler2D s,highp uint value){ivec2 texSize=textureSize(s,0);highp uint width=uint(texSize.x);highp uint size=width*uint(texSize.y);highp uint mask=size-1u;highp uint index=hash32(value)&mask;for(highp uint probe=0u;probe<size;probe+=1u){ivec2 coord=ivec2(int(index % width),int(index/width));highp uint entry=texelFetch(s,coord,0).r;if(entry==value){return true;}if(entry==HASH_EMPTY_KEY){return false;}index=(index+1u)&mask;}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,
|
|
625
|
+
};`)(r):function(){r(),r(),r(),r(),r(),r()}}addBatch(e,t,n=0,r=t.length){if(!(r<=n)){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.pushAllSixTimes()}this.registerBatch(e)}}},WN=class extends HN{constructor({encoders:e,attributes:t,tessellationThreshold:n=1/0,visibleRange:r=[-1/0,1/0],numItems:i}){super({encoders:e,attributes:t,numVertices:n==1/0?i*6:void 0}),this.visibleRange=r,this.tessellationThreshold=n||1/0,this.updateSide=this.variableBuilder.createUpdater(`side`,1),this.updatePos=this.variableBuilder.createUpdater(`pos`,1),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();for(let e=0;e<=1;e++)this.updatePos(e/1),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll()}this.registerBatch(e)}},GN=class extends HN{constructor({encoders:e,attributes:t,numItems:n=void 0}){super({encoders:e,attributes:t,numVertices:n}),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}},KN=class extends HN{constructor({encoders:e,attributes:t,numItems:n=void 0}){super({encoders:e,attributes:t,numVertices:n}),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}toArrays(){let e=this.variableBuilder.arrays;for(let t of Object.values(e))t.divisor=1;return super.toArrays()}},qN=class extends HN{constructor({encoders:e,attributes:t,fontMetrics:n,properties:r,numCharacters:i=void 0}){super({encoders:e,attributes:t,numVertices:i*6}),this.metadata=n,this.metrics=n,this.properties=r;let a=e.text.channelDef;this.numberFormat=!Oh(a)&&`format`in a&&a.format?sr(a.format):e=>e,this.updateVertexCoord=this.variableBuilder.createUpdater(`vertexCoord`,2),this.updateTextureCoord=this.variableBuilder.createUpdater(`textureCoord`,2),this.updateWidth=this.variableBuilder.createUpdater(`width`,1),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){let i=this.properties.align||`left`,a=this.properties.logoLetters??!1,o=this.metadata.common.base,s=this.metadata.common.scaleH,c=-5;switch(this.properties.baseline){case`top`:c+=this.metrics.capHeight;break;case`middle`:c+=this.metrics.capHeight/2;break;case`bottom`:c-=this.metrics.descent;break;default:}let l=this.encoders.text,u=[0,0];this.updateVertexCoord(u);let d=[0,0];this.updateTextureCoord(d);for(let e=n;e<r;e++){let n=t[e],r=this.numberFormat(l(n)),f=P(r)?r:r===null?``:``+r;if(f.length==0)continue;this.variableBuilder.updateFromDatum(n);let p=a?f.length:this.metrics.measureWidth(f);this.updateWidth(p);let m=i==`right`?-p:i==`center`?-p/2:0;if(!a){let e=this.metrics.getCharByCode(f.charCodeAt(0));m-=(e.width-e.xadvance)/o/2}let h,g,_;for(let e=0;e<f.length;e++){let t=this.metrics.getCharByCode(f.charCodeAt(e)),n=a?1:t.xadvance/o;if(t.id==32){m+=n;continue}a?(_=(t.width+10)/t.width,m=-_/2,g=(t.height+10)/t.height,h=-.5-5/t.height):(g=t.height/o,h=-(t.height+t.yoffset+c)/o,_=t.width/o);let r=t.x,i=t.y;u[0]=m,u[1]=h+g,d[0]=r/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h+g,d[0]=(r+t.width)/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m,u[1]=h,d[0]=r/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h+g,d[0]=(r+t.width)/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m,u[1]=h,d[0]=r/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h,d[0]=(r+t.width)/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),m+=n}}this.registerBatch(e)}},JN=`#define PI 3.141593
|
|
626
|
+
uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}const highp uint HASH_EMPTY_KEY=0xffffffffu;highp uint hash32(highp uint key){highp uint v=key;v ^=v>>16u;v*=0x7feb352du;v ^=v>>15u;v*=0x846ca68bu;v ^=v>>16u;return v;}bool isEmptyHashTexture(highp usampler2D s){ivec2 texSize=textureSize(s,0);return texSize.x==1&&texSize.y==1&&texelFetch(s,ivec2(0,0),0).r==HASH_EMPTY_KEY;}bool hashContainsTexture(highp usampler2D s,highp uint value){ivec2 texSize=textureSize(s,0);highp uint width=uint(texSize.x);highp uint size=width*uint(texSize.y);highp uint mask=size-1u;highp uint index=hash32(value)&mask;for(highp uint probe=0u;probe<size;probe+=1u){ivec2 coord=ivec2(int(index % width),int(index/width));highp uint entry=texelFetch(s,coord,0).r;if(entry==value){return true;}if(entry==HASH_EMPTY_KEY){return false;}index=(index+1u)&mask;}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,YN=`uniform highp float uZero;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleIdentity(uint value){return float(value);}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(uint value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(float(value)-domainExtent[0])*step+bandwidth*band;}const int lowBits=12;const float lowDivisor=pow(2.0,float(lowBits));const uint lowMask=uint(lowDivisor-1.0);vec2 splitUint(uint value){uint valueLo=value&lowMask;uint valueHi=value-valueLo;return vec2(float(valueHi),float(valueLo));}/***High precision variant of scaleBand for index/locus scales*/float scaleBandHp(uint value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=splitUint(value);float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}/***High precision variant of scaleBand for index/locus scales for large*domains where 32bit uints are not sufficient to represent the domain.*/float scaleBandHp(uvec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=vec2(float(value[0])*lowDivisor,float(value[1]));float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}`,XN=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
|
|
618
627
|
#if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
|
|
619
628
|
SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
|
|
620
629
|
#elif defined(SAMPLE_FACET_UNIFORM)
|
|
@@ -622,30 +631,30 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
|
|
|
622
631
|
#elif defined(SAMPLE_FACET_TEXTURE)
|
|
623
632
|
uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
|
|
624
633
|
#endif
|
|
625
|
-
bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,
|
|
634
|
+
bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,ZN=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
|
|
626
635
|
#ifdef uniqueId_DEFINED
|
|
627
636
|
uint id=attr_uniqueId;vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,id>>24)&0xFF)/float(0xFF);
|
|
628
637
|
#else
|
|
629
638
|
vPickingColor=vec4(1.0);
|
|
630
639
|
#endif
|
|
631
|
-
return true;}return false;}`,
|
|
640
|
+
return true;}return false;}`,QN=`in highp vec4 vPickingColor;`,$N=Symbol(`cacheMap`);function eP(e,t,n){let r=iP(e).get(t);return r===void 0&&(r=n(t),iP(e).set(t,r)),r}function tP(e,t){iP(e).delete(t)}function nP(e,t){let n=iP(e);for(let e of n.keys())e.startsWith(t)&&n.delete(e);iP(e).delete(t)}function rP(e){e[$N]=new Map}function iP(e){return e[$N]||rP(e),e[$N]}function aP(...e){return new Proxy({},{get(t,n,r){for(let t of e){let e=t()[n];if(e!==void 0)return e}},has(t,n,r){for(let t of e)if(n in t())return!0;return!1}})}function oP(e){return P(e)||N(e)||St(e)}var sP=class extends Error{constructor(e,t){super(e),this.name=`ViewError`,this.view=t}};function cP(e){return Qe(e)&&!Array.isArray(e)}function lP(e){let t={};for(let[n,r]of Object.entries(e))t[n]=uP(r);return t}function uP(e){return Array.isArray(e)?e.map(uP):cP(e)?lP(e):e}function dP(e,t){for(let[n,r]of Object.entries(t)){if(r===void 0)continue;let t=e[n];cP(r)&&cP(t)?dP(t,r):e[n]=uP(r)}return e}function fP(e){let t={};for(let n of e)n&&dP(t,n);return t}function pP(e){return e?Array.isArray(e)?e:[e]:[]}function mP(e,t,n){let r=[t,...pP(n)],i=e.map(e=>e.mark),a=e.map(e=>e[t]);return fP([...i,...a,...e.flatMap(e=>r.map(t=>e.style?.[t]))])}var hP=`SAMPLE_FACET_UNIFORM`,gP=`SAMPLE_FACET_TEXTURE`,_P=`uSelectionTexture_`,vP=class{#e=[];constructor(e){this.unitView=e;let t=this;this.encoders=void 0,this.bufferInfo=void 0,this.bytesPerElement=new Map,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.viewUniformInfo=void 0,this.markUniformInfo=void 0,this.markUniformsAltered=!0,this.selectionTextureOps=[],this.rangeMap=new yP,this.defaultProperties={get clip(){return eP(t,`defaultClip`,()=>{for(let t of[`x`,`y`])if(e.getScaleResolution(t)?.isZoomable())return!0;return!1})},xOffset:0,yOffset:0,minBufferSize:0,...mP(this.unitView.getConfigScopes(),this.unitView.getMarkType(),typeof this.unitView.spec.mark==`object`?this.unitView.spec.mark.style:void 0)},this.properties=aP(typeof this.unitView.spec.mark==`object`?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}augmentDefaultProperties(e){Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors(e))}getCursorSpec(){return this.properties.cursor}getCursor(){let e=this.getCursorSpec();return z(e)?this.unitView.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();z(n)&&this.unitView.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}get opaque(){return!1}get defaultHitTestMode(){return`intersects`}getAttributes(){throw Error(`Not implemented!`)}getSupportedChannels(){return[`sample`,`facetIndex`,`x`,`y`,`color`,`opacity`,`search`,`uniqueId`]}getDefaultEncoding(){let e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:sh}),e}fixEncoding(e){return e}setupExprRefsNeedingGraphicsUpdate(e){let t=this.getSupportedChannels(),n={};for(let r of e){let e=this.properties[r];if(e&&z(e)){let i=this.unitView.paramRuntime.watchExpression(e.expr,()=>{this.updateGraphicsData(),this.unitView.context.animator.requestRender()});t.includes(r)||Object.defineProperty(n,r,{get(){return i()}})}}let r=this.properties;this.properties=aP(()=>n,()=>r)}get encoding(){return eP(this,`encoding`,()=>{let e=this.getDefaultEncoding(),t=this.unitView.getEncoding(),n=e=>{let t=this.properties[e];return oP(t)||z(t)?{value:t}:void 0},r=Object.fromEntries(this.getSupportedChannels().map(e=>[e,n(e)]).filter(e=>Oh(e[1]))),i=this.fixEncoding({...e,...r,...t});for(let e of Object.keys(i))this.getSupportedChannels().includes(e)||delete i[e];return i.x&&(i.x.buildIndex??=this.properties.buildIndex??!0),i})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=Sh(this.unitView,this.encoding)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return gP;if(this.unitView.getLayoutAncestors().find(e=>`samples`in e.spec))return hP}createAndLinkShaders(e,t,n=[]){let r=this.getAttributes(),i=this.encoders,a=this.getSampleFacetMode();a&&n.push(`#define ${a}`);let o=`// view: `+this.unitView.getPathString(),s=[],c=new Set,l=MN(i),u=[],d=Object.values(i).flatMap(e=>e.branches??[]).map(e=>e.predicate).filter(e=>e.param),f=new Map;for(let e of d){let t=e.param,n=this.unitView.paramRuntime,r=n.findValue(t);if(!r)throw Error(`Cannot infer selection type as the parameter "${t}" has no value. Please ensure that the parameter is properly defined!`);let i=NN(`uniqueId`);if(ag(r)){if(!f.has(t)){f.set(t,`single`);let e=sN+gg(t);u.push(` // Selection parameter`),u.push(` uniform highp uint ${e};`),this.#e.push(()=>{this.registerMarkUniformValue(e,{expr:t},e=>e.uniqueId??0)}),s.push(`bool ${cN}${t}(bool empty) {\n return ${sN}${t} == ${i} || (empty && ${sN}${t} == 0u);\n}`)}}else if(og(r)){if(!f.has(t)){f.set(t,`multi`);let e=_P+gg(t);s.push(`// Selection texture\nuniform highp usampler2D ${e};`);let a=this.getContext().glHelper,o=a.selectionTextures;this.selectionTextureOps.push(()=>{let r=n.getValue(t),i=o.get(r);if(!i)throw Error(`Bug: no selection texture found for "${t}"!`);jj(this.programInfo,{[e]:i})});let c=_P+t;s.push(`bool ${cN}${t}(bool empty) {\n return hashContainsTexture(${c}, ${i}) || (empty && isEmptyHashTexture(${c}));\n}`),a.createSelectionTexture(r),n.watchExpression(t,()=>{let e=n.getValue(t);a.createSelectionTexture(e),this.getContext().animator.requestRender()})}}else if(ig(r)&&!f.has(t)){f.set(t,`interval`);let e=[],n=[];for(let i of Object.keys(r.intervals)){if(![`x`,`y`].includes(i))continue;let r=sN+gg(t)+`_${i}`,{attributeType:a}=TN(this.unitView.getScaleResolution(i).getScale(),i);u.push(` // Selection parameter`),u.push(` uniform highp ${a}[2] ${r};`),this.#e.push(()=>{this.registerMarkUniformValue(r,{expr:t},e=>e.intervals[i]??[1,0])});let o=e=>{for(let[t,n]of l.entries())if(t[1]&&n.includes(e))return NN(n);return NN(e)},s=o(i),c=r+`[0]`,d=r+`[1]`,f=Kh(i);if(this.encoding[f]){let t=o(f),n=this.defaultHitTestMode;if(n==`endpoints`)e.push(`((${c} <= ${s} && ${s} <= ${d}) || (${c} <= ${t} && ${t} <= ${d}))`);else if(n==`encloses`)e.push(`(${c} <= ${s} && ${t} <= ${d})`);else if(n==`intersects`)e.push(`(${c} <= ${t} && ${s} <= ${d})`);else throw new sP(`Unsupported hit test mode "${n}" for interval selection!`,this.unitView)}else e.push(`(${c} <= ${s} && ${s} <= ${d})`);n.push(`${c} > ${d}`)}s.push(`bool ${cN}${t}(bool empty) {\n return ${e.join(` && `)} || (empty && (${n.join(` || `)}));\n}`)}}let p=(e,t,n,r)=>{let i=t.channelDef;if(Oh(i))if(z(i.value)){let{uniformName:t,uniformGlsl:r,accessorGlsl:a,adjuster:o}=pN(e,n);s.push(a),u.push(r),this.#e.push(()=>{this.registerMarkUniformValue(t,i.value,o)})}else s.push(fN(e,n,i.value).accessorGlsl);else if(Ah(i)){let{uniformName:t,uniformGlsl:a,accessorGlsl:o}=hN(e,r,n);u.push(a),s.push(o);let{largeHp:c,discrete:l}=TN(r,e),d=l&&`domain`in r?e=>r.domain().indexOf(e):c?kN:e=>+e;this.#e.push(()=>{this.registerMarkUniformValue(t,i.datum,d)})}else if(kh(i)){let t=l.get([i.field,!0]),{attributeGlsl:a,accessorGlsl:o}=mN(e,r,n,t?.includes(e)?t:void 0);c.add(a),s.push(o)}else if(Fh(i)){let{attributeGlsl:t,accessorGlsl:i}=mN(e,r,n);c.add(t),s.push(i)}else throw new sP(`Unsupported channel definition: ${JSON.stringify(i)}`,this.unitView)};for(let[e,t]of Object.entries(i)){if(!r.includes(e))continue;let{branches:n,channelDef:i,scale:a}=t;for(let t=0;t<n.length;t++)p(e,n[t].accessor,t,a);if(a){let t=Mh(i),n=t&&t.resolutionChannel||e,r=Xh(n)?this.unitView.getScaleResolution(n):null,{glsl:o,domainUniform:c,domainUniformName:l,rangeUniform:d,rangeUniformName:f}=gN(e,a,i);s.push(o),u.push(c),u.push(d),d&&this.#e.push(()=>{let t=this.createMarkUniformSetter(f),n=()=>t(FN(a,e));r.addEventListener(`range`,n),n()}),c&&this.#e.push(()=>{let e=this.createMarkUniformSetter(l),t=()=>{let t=ym(a.type)?[0,a.domain().length]:a.domain();e(EN(a.type)?jN(t):t)};r.addEventListener(`domain`,t),t()})}s.push(_N(e,n))}let m=[...f.keys()].map(e=>`${cN}${e}(false)`);s.push(`bool isPointSelected() {
|
|
632
641
|
`+(this.encoders.uniqueId&&m.length>0?` return ${m.join(` || `)};`:` return false;`)+`
|
|
633
642
|
}`);let h=`precision highp float;
|
|
634
643
|
precision highp int;`,g=e=>e.replace(`#pragma markUniforms`,u.join(`
|
|
635
|
-
`));n=n.map(g),e=g(e),t=g(t);let _=[h,o,...n,
|
|
636
|
-
`),...s,yN,bN,e],v=[h,o,...n,_N,xN,t],y=this.gl;this.programStatus=fM(y,this.glHelper.compileShader(y.VERTEX_SHADER,_),this.glHelper.compileShader(y.FRAGMENT_SHADER,v))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw Error(`No program status found! `+this.unitView.getPathString());let e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);let t=Error(`Cannot create shader program: `+e.message);throw t.view=this.unitView,t}this.programInfo=ij(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=YA(this.gl,this.programInfo,`View`),this.markUniformInfo=YA(this.gl,this.programInfo,`Mark`),this.gl.useProgram(this.programInfo.program),ej(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(let e of this.#e)e();this.#e=void 0}createMarkUniformSetter(e){let t=this.markUniformInfo.setters[e];if(!t)throw Error(`Uniform "${e}" not found int the Mark block!`);return e=>{t(e),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(e,t,n=e=>e){let r=this.createMarkUniformSetter(e),i=n=>{if(n==null)throw Error(`Trying to set null/undefined value for uniform: ${e}${R(t)?`Expr: ${t.expr}`:``}`);r(n)};if(R(t)){let e,r=()=>i(n(e(null)));e=this.unitView.paramRuntime.watchExpression(t.expr,r),r()}else i(n(t))}deleteGraphicsData(){let e=this.glHelper;if(!e){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}let t=e.gl;if(this.vertexArrayInfo&&=(this.gl.bindVertexArray(null),t.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),void 0),this.bufferInfo){for(let e=0;e<8;e++)t.disableVertexAttribArray(e);Object.values(this.bufferInfo.attribs).forEach(e=>this.gl.deleteBuffer(e.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}dispose(){this.deleteGraphicsData()}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(let[t,n]of Object.entries(e.arrays))n.data&&sE(this.gl,this.bufferInfo.attribs[t],n.data,0);else{this.deleteGraphicsData(),this.bufferInfo=dE(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices;for(let[t,n]of Object.entries(e.arrays))this.bytesPerElement.set(t,n.data.BYTES_PER_ELEMENT)}}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null&&!this.unitView.paramRuntime.hasPointSelections())return!1;for(let e of this.unitView.getLayoutAncestors())if(!e.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(ZA(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):XA(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(e){let t=this.glHelper,n=this.gl,r=[];r.push(()=>{this.vertexArrayInfo||=Bj(this.gl,this.programInfo,this.bufferInfo),n.useProgram(this.programInfo.program)});for(let[e,n]of Object.entries(this.encoders)){let i=t.rangeTextures.get(n.scale);i&&r.push(()=>ej(this.programInfo,{[kM+e]:i}))}r.push(...this.selectionTextureOps),this.getSampleFacetMode()==`SAMPLE_FACET_TEXTURE`&&r.push(()=>{let e;for(let t of this.unitView.getLayoutAncestors())if(e=t.getSampleFacetTexture(),e)break;if(!e)throw Error(`No facet texture available. This is bug.`);ej(this.programInfo,{uSampleFacetTexture:e})});let i=(e.picking??!1)&&this.isPickingParticipant();return r.push(()=>QA(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:i})),this.opaque||e.picking?r.push(()=>n.disable(n.BLEND)):r.push(()=>n.enable(n.BLEND)),r}prepareSampleFacetRendering(e){let t=e.sampleFacetRenderingOptions,n=this.programInfo.uniformSetters.uSampleFacet;if(t&&n){let e=t.pixelToUnit,r=t.locSize.location*e,i=t.locSize.size*e;if(r>1||r+i<0)return!1;this.gl.uniform4f(n.location,r,i,r,i)}return!0}render(e){}createRenderCallback(e,t){if(!this.bufferInfo)return()=>void 0;let n=this,r,i=this.unitView.getScaleResolution(`x`)?.getScale(),a=i&&ym(i.type),o=[`index`,`locus`].includes(i?.type)?-1:0,s=[0,0];r=t=>{if(a&&t.xIndex){let n=i.domain(),r=t.xIndex(n[0]+o,n[1],s),a=r[0],c=r[1]-a;c>0&&e(a,c)}else e(t.offset,t.count)};let c=this.rangeMap.get(void 0).count==0?t.facetId:void 0,l=this.rangeMap.get(c);return t.sampleFacetRenderingOptions?function(){l.count&&n.prepareSampleFacetRendering(t)&&r(l)}:function(){l.count&&r(l)}}setViewport(e,t,n,r){n=n.flatten();let i=this.gl,a=this.properties,o=.5,s=(a.xOffset??0)+o,c=(a.yOffset??0)+o,l,u=n;if(a.clip!==`never`&&(a.clip||r)){let a=0,o=0,d;if(r){if(u=n.intersect(r).flatten(),!u.isDefined())return!1;d=[n.width/u.width,n.height/u.height],o=Math.max(0,n.y2-r.y2),a=Math.min(0,n.x-r.x)}else d=[1,1];let f=[u.x,e.height-u.y2,u.width,u.height].map(e=>e*t),p=f.map(e=>Math.floor(e)),m=f[0]-p[0],h=f[1]-p[1];i.viewport(...p),i.scissor(...p),i.enable(i.SCISSOR_TEST),l={uViewOffset:[(s+a+m/t)/u.width,-(c+o-h/t)/u.height],uViewScale:d}}else{if(!n.isDefined())return!1;i.viewport(0,0,Math.round(e.width*t),Math.round(e.height*t)),i.disable(i.SCISSOR_TEST),l={uViewOffset:[(n.x+s)/e.width,(e.height-n.y-c-n.height)/e.height],uViewScale:[n.width/e.width,n.height/e.height]}}return QA(this.viewUniformInfo,{...l,uViewportSize:[n.width,n.height],uDevicePixelRatio:t}),ZA(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(e,t){}},HN=class extends gn{constructor(){super([],JSON.stringify)}get(e){let t=super.get(e);return t===void 0&&(t={offset:0,count:0,xIndex:void 0},super.set(e,t)),t}migrateEntries(e){for(let[t,n]of this.entries())e.has(t)||(n.offset=0,n.count=0,n.xIndex=void 0);for(let[t,n]of e.entries())Object.assign(this.get(t),n)}};function UN(e,t){let n=qh(t),r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(kh(r)||kh(i))){if(r){if(!Mh(e[t]))return;if(!i)if(r.type==`quantitative`)i={datum:0,domainInert:!0};else{i={...r};let e=(1-(r.band??1))/2;r.band=0+e,i.band=1-e}else if(r.type!=`quantitative`){let e=(1-(r.band||1))/2;r.band=e,i.band=-e}}else r={value:0},i={value:1};e[t]=r,e[n]=i}}function WN(e,t){let n=qh(t),r=e[t],i=e[n];if(!r||!i||kh(r)||kh(i)||!Mh(r)||!Mh(i)||![`index`,`locus`].includes(r.type))return;let a=r.band,o=i.band,s=a??o??0;e[t]={...r,band:s},e[n]={...i,band:o??s}}function GN(e,t){let n=Nh(e);n&&(n.resolutionChannel=t)}function KN(e,t){e.stroke||(t?e.stroke={value:null}:(e.stroke=structuredClone(e.color),GN(e.stroke,`color`))),kh(e.stroke)&&e.stroke.value===null&&(e.strokeWidth={value:0}),e.strokeOpacity||(e.strokeOpacity=structuredClone(e.opacity),GN(e.strokeOpacity,`opacity`))}function qN(e,t){kh(e.fill)&&e.fill.value===null?e.fillOpacity={value:0}:e.fill||(e.fill=structuredClone(e.color),GN(e.fill,`color`),!t&&!e.fillOpacity&&(e.fillOpacity={value:0})),e.fillOpacity||(t?(e.fillOpacity=structuredClone(e.opacity),GN(e.fillOpacity,`opacity`)):e.fillOpacity={value:0})}var JN=[`none`,`diagonal`,`antiDiagonal`,`cross`,`vertical`,`horizontal`,`grid`,`dots`,`rings`,`ringsLarge`],YN=class extends VN{constructor(e){super(e)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}get opaque(){return CN(this,`opaque`,()=>!this.#e()&&!this.#t()&&!this.properties.shadowOpacity&&kh(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return UN(e,`x`),UN(e,`y`),KN(e,this.properties.filled),qN(e,this.properties.filled),delete e.color,delete e.opacity,e}#e(){let e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight}#t(){let e=this.encoding.strokeWidth;return!(kh(e)&&!e.value)||`condition`in e}async initializeGraphics(){await super.initializeGraphics();let e=[];this.#e()&&e.push(`ROUNDED_CORNERS`),this.#t()&&e.push(`STROKED`),this.properties.shadowOpacity&&e.push(`SHADOW`),this.createAndLinkShaders(Jj,Yj,[Xj,...e.map(e=>`#define `+e)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinWidth`,e.minWidth),this.registerMarkUniformValue(`uMinHeight`,e.minHeight),this.registerMarkUniformValue(`uMinOpacity`,e.minOpacity),this.registerMarkUniformValue(`uCornerRadiusTopRight`,e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomRight`,e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusTopLeft`,e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomLeft`,e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uHatchPattern`,e.hatch,e=>Math.max(0,JN.indexOf(e??`none`))),this.registerMarkUniformValue(`uShadowBlur`,e.shadowBlur??0),this.registerMarkUniformValue(`uShadowOpacity`,e.shadowOpacity??0),this.registerMarkUniformValue(`uShadowOffsetX`,e.shadowOffsetX??0),this.registerMarkUniformValue(`uShadowOffsetY`,e.shadowOffsetY??0),this.registerMarkUniformValue(`uShadowColor`,e.shadowColor??`black`,SM)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new fN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>rj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>{sj(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,n,e)},e)}findDatumAt(e,t){e=Zl(e);let n=this.unitView.getCollector().facetBatches.get(e);if(!n)return;let r=this.encoders,i=r.x.scale.type;if(bm(i)){let e=Eh(r.x);return e?n.find(n=>t==e(n)):void 0}else{let e=Eh(r.x),i=Eh(r.x2);return!e||!i?void 0:n.find(n=>t>=e(n)&&t<i(n))}}},XN=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
|
|
644
|
+
`));n=n.map(g),e=g(e),t=g(t);let _=[h,o,...n,JN,YN,[...c].join(`
|
|
645
|
+
`),...s,XN,ZN,e],v=[h,o,...n,JN,QN,t],y=this.gl;this.programStatus=UM(y,this.glHelper.compileShader(y.VERTEX_SHADER,_),this.glHelper.compileShader(y.FRAGMENT_SHADER,v))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw Error(`No program status found! `+this.unitView.getPathString());let e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);let t=Error(`Cannot create shader program: `+e.message);throw t.view=this.unitView,t}this.programInfo=Fj(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=Ej(this.gl,this.programInfo,`View`),this.markUniformInfo=Ej(this.gl,this.programInfo,`Mark`),this.gl.useProgram(this.programInfo.program),jj(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(let e of this.#e)e();this.#e=void 0}createMarkUniformSetter(e){let t=this.markUniformInfo.setters[e];if(!t)throw Error(`Uniform "${e}" not found int the Mark block!`);return e=>{t(e),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(e,t,n=e=>e){let r=this.createMarkUniformSetter(e),i=n=>{if(n==null)throw Error(`Trying to set null/undefined value for uniform: ${e}${z(t)?`Expr: ${t.expr}`:``}`);r(n)};if(z(t)){let e,r=()=>i(n(e(null)));e=this.unitView.paramRuntime.watchExpression(t.expr,r),r()}else i(n(t))}deleteGraphicsData(){let e=this.glHelper;if(!e){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}let t=e.gl;this.vertexArrayInfo&&=(this.gl.bindVertexArray(null),t.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),void 0),this.bufferInfo&&=(Object.values(this.bufferInfo.attribs).forEach(e=>this.gl.deleteBuffer(e.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),void 0)}dispose(){this.deleteGraphicsData()}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(let[t,n]of Object.entries(e.arrays))n.data&&RE(this.gl,this.bufferInfo.attribs[t],n.data,0);else{this.deleteGraphicsData(),this.bufferInfo=HE(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices;for(let[t,n]of Object.entries(e.arrays))this.bytesPerElement.set(t,n.data.BYTES_PER_ELEMENT)}}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null&&!this.unitView.paramRuntime.hasPointSelections())return!1;for(let e of this.unitView.getLayoutAncestors())if(!e.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(Oj(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):Dj(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(e){let t=this.glHelper,n=this.gl,r=[];r.push(()=>{this.vertexArrayInfo||=_M(this.gl,this.programInfo,this.bufferInfo),n.useProgram(this.programInfo.program)});for(let[e,n]of Object.entries(this.encoders)){let i=t.rangeTextures.get(n.scale);i&&r.push(()=>jj(this.programInfo,{[oN+e]:i}))}r.push(...this.selectionTextureOps),this.getSampleFacetMode()==`SAMPLE_FACET_TEXTURE`&&r.push(()=>{let e;for(let t of this.unitView.getLayoutAncestors())if(e=t.getSampleFacetTexture(),e)break;if(!e)throw Error(`No facet texture available. This is bug.`);jj(this.programInfo,{uSampleFacetTexture:e})});let i=(e.picking??!1)&&this.isPickingParticipant();return r.push(()=>kj(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:i})),this.opaque||e.picking?r.push(()=>n.disable(n.BLEND)):r.push(()=>n.enable(n.BLEND)),r}prepareSampleFacetRendering(e){let t=e.sampleFacetRenderingOptions,n=this.programInfo.uniformSetters.uSampleFacet;if(t&&n){let e=t.pixelToUnit,r=t.locSize.location*e,i=t.locSize.size*e;if(r>1||r+i<0)return!1;this.gl.uniform4f(n.location,r,i,r,i)}return!0}render(e){}createRenderCallback(e,t){if(!this.bufferInfo)return()=>void 0;let n=this,r,i=this.unitView.getScaleResolution(`x`)?.getScale(),a=i&&vm(i.type),o=[`index`,`locus`].includes(i?.type)?-1:0,s=[0,0];r=t=>{if(a&&t.xIndex){let n=i.domain(),r=t.xIndex(n[0]+o,n[1],s),a=r[0],c=r[1]-a;c>0&&e(a,c)}else e(t.offset,t.count)};let c=this.rangeMap.get(void 0).count==0?t.facetId:void 0,l=this.rangeMap.get(c);return t.sampleFacetRenderingOptions?function(){l.count&&n.prepareSampleFacetRendering(t)&&r(l)}:function(){l.count&&r(l)}}setViewport(e,t,n,r){n=n.flatten();let i=this.gl,a=this.properties,o=.5,s=(a.xOffset??0)+o,c=(a.yOffset??0)+o,l,u=n;if(a.clip!==`never`&&(a.clip||r)){let a=0,o=0,d;if(r){if(u=n.intersect(r).flatten(),!u.isDefined())return!1;d=[n.width/u.width,n.height/u.height],o=Math.max(0,n.y2-r.y2),a=Math.min(0,n.x-r.x)}else d=[1,1];let f=[u.x,e.height-u.y2,u.width,u.height].map(e=>e*t),p=f.map(e=>Math.floor(e)),m=f[0]-p[0],h=f[1]-p[1];i.viewport(...p),i.scissor(...p),i.enable(i.SCISSOR_TEST),l={uViewOffset:[(s+a+m/t)/u.width,-(c+o-h/t)/u.height],uViewScale:d}}else{if(!n.isDefined())return!1;i.viewport(0,0,Math.round(e.width*t),Math.round(e.height*t)),i.disable(i.SCISSOR_TEST),l={uViewOffset:[(n.x+s)/e.width,(e.height-n.y-c-n.height)/e.height],uViewScale:[n.width/e.width,n.height/e.height]}}return kj(this.viewUniformInfo,{...l,uViewportSize:[n.width,n.height],uDevicePixelRatio:t}),Oj(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(e,t){}},yP=class extends hn{constructor(){super([],JSON.stringify)}get(e){let t=super.get(e);return t===void 0&&(t={offset:0,count:0,xIndex:void 0},super.set(e,t)),t}migrateEntries(e){for(let[t,n]of this.entries())e.has(t)||(n.offset=0,n.count=0,n.xIndex=void 0);for(let[t,n]of e.entries())Object.assign(this.get(t),n)}};function bP(e,t){let n=Kh(t),r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(Oh(r)||Oh(i))){if(r){if(!jh(e[t]))return;if(!i)if(r.type==`quantitative`)i={datum:0,domainInert:!0};else{i={...r};let e=(1-(r.band??1))/2;r.band=0+e,i.band=1-e}else if(r.type!=`quantitative`){let e=(1-(r.band||1))/2;r.band=e,i.band=-e}}else r={value:0},i={value:1};e[t]=r,e[n]=i}}function xP(e,t){let n=Kh(t),r=e[t],i=e[n];if(!r||!i||Oh(r)||Oh(i)||!jh(r)||!jh(i)||![`index`,`locus`].includes(r.type))return;let a=r.band,o=i.band,s=a??o??0;e[t]={...r,band:s},e[n]={...i,band:o??s}}function SP(e,t){let n=Mh(e);n&&(n.resolutionChannel=t)}function CP(e,t){e.stroke||(t?e.stroke={value:null}:(e.stroke=structuredClone(e.color),SP(e.stroke,`color`))),Oh(e.stroke)&&e.stroke.value===null&&(e.strokeWidth={value:0}),e.strokeOpacity||(e.strokeOpacity=structuredClone(e.opacity),SP(e.strokeOpacity,`opacity`))}function wP(e,t){Oh(e.fill)&&e.fill.value===null?e.fillOpacity={value:0}:e.fill||(e.fill=structuredClone(e.color),SP(e.fill,`color`),!t&&!e.fillOpacity&&(e.fillOpacity={value:0})),e.fillOpacity||(t?(e.fillOpacity=structuredClone(e.opacity),SP(e.fillOpacity,`opacity`)):e.fillOpacity={value:0})}var TP=[`none`,`diagonal`,`antiDiagonal`,`cross`,`vertical`,`horizontal`,`grid`,`dots`,`rings`,`ringsLarge`],EP=class extends vP{constructor(e){super(e)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}get opaque(){return eP(this,`opaque`,()=>!this.#e()&&!this.#t()&&!this.properties.shadowOpacity&&Oh(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return bP(e,`x`),bP(e,`y`),CP(e,this.properties.filled),wP(e,this.properties.filled),delete e.color,delete e.opacity,e}#e(){let e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight}#t(){let e=this.encoding.strokeWidth;return!(Oh(e)&&!e.value)||`condition`in e}async initializeGraphics(){await super.initializeGraphics();let e=[];this.#e()&&e.push(`ROUNDED_CORNERS`),this.#t()&&e.push(`STROKED`),this.properties.shadowOpacity&&e.push(`SHADOW`),this.createAndLinkShaders(TM,EM,[DM,...e.map(e=>`#define `+e)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinWidth`,e.minWidth),this.registerMarkUniformValue(`uMinHeight`,e.minHeight),this.registerMarkUniformValue(`uMinOpacity`,e.minOpacity),this.registerMarkUniformValue(`uCornerRadiusTopRight`,e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomRight`,e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusTopLeft`,e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomLeft`,e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uHatchPattern`,e.hatch,e=>Math.max(0,TP.indexOf(e??`none`))),this.registerMarkUniformValue(`uShadowBlur`,e.shadowBlur??0),this.registerMarkUniformValue(`uShadowOpacity`,e.shadowOpacity??0),this.registerMarkUniformValue(`uShadowOffsetX`,e.shadowOffsetX??0),this.registerMarkUniformValue(`uShadowOffsetY`,e.shadowOffsetY??0),this.registerMarkUniformValue(`uShadowColor`,e.shadowColor??`black`,$M)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new UN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Pj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>{Rj(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,n,e)},e)}findDatumAt(e,t){e=Xl(e);let n=this.unitView.getCollector().facetBatches.get(e);if(!n)return;let r=this.encoders,i=r.x.scale.type;if(ym(i)){let e=Th(r.x);return e?n.find(n=>t==e(n)):void 0}else{let e=Th(r.x),i=Th(r.x2);return!e||!i?void 0:n.find(n=>t>=e(n)&&t<i(n))}}},DP=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
|
|
637
646
|
#if defined(dx_DEFINED) || defined(dy_DEFINED)
|
|
638
647
|
return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
|
|
639
648
|
#else
|
|
640
649
|
return vec2(0.0,0.0);
|
|
641
650
|
#endif
|
|
642
|
-
}void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,
|
|
651
|
+
}void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,OP=`const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){p.y=-p.y;float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vec4(0.0),vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}`,kP=`layout(std140)uniform Mark{/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform float uMinPickingSize;uniform mediump float uScaleFactor;uniform mediump float uZoomLevel;uniform highp float uSemanticThreshold;uniform mediump float uGradientStrength;
|
|
643
652
|
#pragma markUniforms
|
|
644
|
-
}
|
|
653
|
+
};`,AP=class extends oh{constructor(e){super(e),this.params=e,this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(let e of this.reservoir)this._propagate(e);super.complete()}};function jP(e,t,n){let r=new AP({type:`sample`,size:e});for(let e of t)r.handle(n(e));return r.complete(),r.reservoir}var MP={},NP=class extends vP{#e=()=>0;constructor(e){super(e);let t=this.properties.semanticZoomFraction;t!=null&&(z(t)?this.#e=this.unitView.paramRuntime.watchExpression(t.expr,()=>this.getContext().animator.requestRender()):this.#e=()=>t),`geometricZoomBound`in this.properties&&console.warn(`geometricZoomBound is deprecated. Use something like the following instead: "size": { "expr": "min(0.5 * pow(zoomLevel, 2), 200)" }.`)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`y`,`size`,`semanticScore`,`shape`,`strokeWidth`,`dx`,`dy`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`angle`]}getSupportedChannels(){return[...super.getSupportedChannels(),`size`,`semanticScore`,`shape`,`strokeWidth`,`dx`,`dy`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`angle`]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...MP}}fixEncoding(e){return CP(e,this.properties.filled),wP(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();let e=this.encoders.semanticScore?Th(this.encoders.semanticScore)?.asNumberAccessor():void 0;e&&(this.sampledSemanticScores=Float32Array.from(jP(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((e,t)=>e-t))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(DP,OP,[kP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uInwardStroke`,e.inwardStroke,e=>!!e),this.registerMarkUniformValue(`uGradientStrength`,e.fillGradientStrength),this.registerMarkUniformValue(`uMinPickingSize`,e.minPickingSize)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new GN({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}#t(){let e=2**(this.properties.geometricZoomBound||0);return Math.min(1,this.unitView.getZoomLevel()/e)**(1/3)}getSemanticThreshold(){if(this.sampledSemanticScores){let e=Math.max(0,1-this.#e()*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{let t=this.sampledSemanticScores;return Rn(t,e)}}else return-1}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{kj(this.markUniformInfo,{uScaleFactor:this.#t(),uSemanticThreshold:this.getSemanticThreshold()}),this.markUniformsAltered=!0}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Pj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>{n&&Rj(t,this.vertexArrayInfo,t.POINTS,n,e)},e)}},PP=`const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}`,FP=`const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}`,IP=`layout(std140)uniform Mark{uniform mediump float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;uniform mediump float uStrokeDashOffset;
|
|
645
654
|
#pragma markUniforms
|
|
646
|
-
};`,
|
|
655
|
+
};`,LP=`horizontal`,RP=`vertical`,zP=class extends vP{constructor(e){super(e),this.dashTextureSize=0}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`size`,`color`,`opacity`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`]}fixEncoding(e){if(this.getType()==`tick`)return this.fixTickEncoding(e);if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&jh(e.y)&&e.y.type==`quantitative`)e.x2=e.x,e.y2={datum:0};else if(!e.y2&&jh(e.x)&&e.x.type==`quantitative`)e.y2=e.y,e.x2={datum:0};else throw Error(`A bug!`);else throw Error(`At a minimum, either the x or y channel must be defined in the rule mark's encoding: `+JSON.stringify(e));return e}fixTickEncoding(e){let t=this.properties;e.x??={value:.5},e.y??={value:.5},e.size={value:t.thickness};let n=t.orient??VP(e);if(!n)throw Error(`Cannot infer tick orientation from the encoding. Specify the tick mark's orient explicitly.`);return HP(e,n),e}async initializeGraphics(){await super.initializeGraphics();let e=this.gl,t=BP(this.properties.strokeDash);this.dashTexture=jk(e,{level:0,mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:t,height:1}),this.dashTextureSize=t.length,this.createAndLinkShaders(PP,FP,[IP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinLength`,e.minLength),this.registerMarkUniformValue(`uStrokeCap`,e.strokeCap??`butt`,e=>[`butt`,`square`,`round`].indexOf(e)),kj(this.markUniformInfo,{uDashTextureSize:+this.dashTextureSize}),this.markUniformsAltered=!0}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new WN({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>jj(this.programInfo,{uDashTexture:this.dashTexture})),t.push(()=>Pj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>Rj(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,n,e),e)}};function BP(e){if(!e)return new Uint8Array;if(e.length==0||e.length%2||e.findIndex(e=>Math.round(e)!=e||e<1||e>1e3)>=0)throw Error(`Invalid stroke dash pattern: `+JSON.stringify(e));let t=e.reduce((e,t)=>e+t),n=new Uint8Array(t),r=!0,i=0;for(let t of e){for(;t;)n[i++]=r&&255||0,t--;r=!r}return n}function VP(e){if(!e.y)return RP;if(!e.x)return LP;let t=UP(e.x),n=UP(e.y);if(!t&&n)return RP;if(t&&!n)return LP}function HP(e,t){if(t==RP)if(e.x2=e.x,UP(e.y)){let[t,n]=GP(e.y);e.y=t,e.y2=n}else e.y={value:0},e.y2={value:1};else if(e.y2=e.y,UP(e.x)){let[t,n]=GP(e.x);e.x=t,e.x2=n}else e.x={value:0},e.x2={value:1}}function UP(e){return jh(e)&&(e.type==`ordinal`||e.type==`nominal`)}function WP(e,t){return{...e,band:t}}function GP(e){let t=(1-(e.band??1))/2;return[WP(e,t),WP(e,1-t)]}var KP=`flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}float inverseSmoothstep(float t){t=clamp(t,0.0,1.0);return 0.5-sin(asin(1.0-2.0*t)/3.0);}/***Remaps the parameter t to concentrate vertices to the part that is visible in the viewport.*This keeps the tightly bent endpoints smooth even when zooming in very close.*/float remapVisibleChordParameter(float stripT,float chordStart,float chordEnd,float viewportLength){float chordMin=min(chordStart,chordEnd);float chordMax=max(chordStart,chordEnd);float chordSpan=chordMax-chordMin;if(chordSpan<=0.0){return 0.0;}float visibleChordMin=max(chordMin,0.0);float visibleChordMax=min(chordMax,viewportLength);if(visibleChordMax<=visibleChordMin){return stripT;}float visibleTMin=inverseSmoothstep((visibleChordMin-chordMin)/chordSpan);float visibleTMax=inverseSmoothstep((visibleChordMax-chordMin)/chordSpan);float visibleTSpan=visibleTMax-visibleTMin;float offscreenTSpan=visibleTMin+(1.0-visibleTMax);if(offscreenTSpan<=0.0){return stripT;}float visibleShare=clamp(0.75+(1.0-visibleTSpan)*0.2,0.75,0.95);float offscreenShare=1.0-visibleShare;float leftShare=offscreenShare*visibleTMin/offscreenTSpan;float rightShare=offscreenShare*(1.0-visibleTMax)/offscreenTSpan;if(stripT<=leftShare){return leftShare>0.0 ? mix(0.0,visibleTMin,stripT/leftShare): visibleTMin;}float visibleStart=leftShare;float visibleEnd=visibleStart+visibleShare;if(stripT<=visibleEnd){return visibleShare>0.0? mix(visibleTMin,visibleTMax,(stripT-visibleStart)/visibleShare): visibleTMin;}return rightShare>0.0? mix(visibleTMax,1.0,(stripT-visibleEnd)/rightShare): visibleTMax;}void clampChordToViewport(inout vec2 p1,inout vec2 p4,inout float chordLength){if(chordLength>uMaxChordLength){vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}}void clampDomeApex(inout vec2 p1,inout vec2 p4,int orient){if(orient==ORIENT_VERTICAL){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}else{if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);float chordLength=length(p4-p1);clampChordToViewport(p1,p4,chordLength);if(uClampApex){clampDomeApex(p1,p4,ORIENT_VERTICAL);}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);float chordLength=length(p4-p1);clampChordToViewport(p1,p4,chordLength);if(uClampApex){clampDomeApex(p1,p4,ORIENT_HORIZONTAL);}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);clampChordToViewport(p1,p4,chordLength);float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);float t=strip.x;if(uShape==SHAPE_DOME){if(uOrient==ORIENT_VERTICAL){t=remapVisibleChordParameter(strip.x,p1.x,p4.x,uViewportSize.x);}else{t=remapVisibleChordParameter(strip.x,p1.y,p4.y,uViewportSize.y);}}else if(uShape==SHAPE_ARC){if(a.y==b.y){t=remapVisibleChordParameter(strip.x,p1.x,p4.x,uViewportSize.x);}else if(a.x==b.x){t=remapVisibleChordParameter(strip.x,p1.y,p4.y,uViewportSize.y);}}vec2 p;vec2 tangent;vec2 q1=mix(p1,p2,t);vec2 q2=mix(p2,p3,t);vec2 q3=mix(p3,p4,t);vec2 r1=mix(q1,q2,t);vec2 r2=mix(q2,q3,t);p=mix(r1,r2,t);tangent=3.0*(r2-r1);tangent=normalize(tangent);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}`,qP=`flat in vec4 vColor;flat in float vSize;in float vNormalLengthInPixels;flat in float vGamma;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);opacity=pow(opacity,vGamma);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}`,JP=`layout(std140)uniform Mark{uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;uniform float uMaxChordLength;uniform vec2 uArcFadingDistance;uniform bool uNoFadingOnPointSelection;uniform int uSegmentBreaks;
|
|
647
656
|
#pragma markUniforms
|
|
648
|
-
};`,
|
|
657
|
+
};`,YP=[`arc`,`dome`,`diagonal`,`line`],XP=[`vertical`,`horizontal`],ZP=class extends vP{constructor(e){super(e),this._baseInstanceExt=void 0}get defaultHitTestMode(){return`endpoints`}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`size`,`color`,`opacity`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`]}fixEncoding(e){return e.x2||(jh(e.x)?e.x2={datum:0}:e.x2=e.x),e.y2||(jh(e.y)?e.y2={datum:0}:e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this._baseInstanceExt=this.gl.getExtension(`WEBGL_draw_instanced_base_vertex_base_instance`),this.createAndLinkShaders(KP,qP,[JP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uArcFadingDistance`,e.arcFadingDistance,e=>e||[0,0]),this.registerMarkUniformValue(`uArcHeightFactor`,e.arcHeightFactor),this.registerMarkUniformValue(`uMinArcHeight`,e.minArcHeight),this.registerMarkUniformValue(`uMinPickingSize`,e.minPickingSize),this.registerMarkUniformValue(`uShape`,e.linkShape,e=>YP.indexOf(e)),this.registerMarkUniformValue(`uOrient`,e.orient,e=>XP.indexOf(e)),this.registerMarkUniformValue(`uClampApex`,e.clampApex,e=>!!e),this.registerMarkUniformValue(`uMaxChordLength`,e.maxChordLength),this.registerMarkUniformValue(`uSegmentBreaks`,e.segments,e=>e),this.registerMarkUniformValue(`uNoFadingOnPointSelection`,e.noFadingOnPointSelection,e=>!!e)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new KN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.arrays=Object.fromEntries(Object.entries(r.arrays).map(([e,t])=>[e,{...t,data:void 0}])),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),this._baseInstanceExt?t.push(()=>Pj(this.gl,this.programInfo,this.vertexArrayInfo)):t.push(()=>this.gl.bindVertexArray(null)),t}render(e){let t=this.gl,n=()=>(this.markUniformInfo.uniforms.uSegmentBreaks[0]+1)*2;return this._baseInstanceExt?this.createRenderCallback((e,r)=>{this._baseInstanceExt.drawArraysInstancedBaseInstanceWEBGL(t.TRIANGLE_STRIP,0,n(),r,e)},e):this.createRenderCallback((e,r)=>{for(let t of Object.entries(this.bufferInfo.attribs)){let[n,r]=t;r.buffer&&r.numComponents&&r.divisor&&(r.offset=e*this.arrays[n].numComponents*this.bytesPerElement.get(n))}Pj(t,this.programInfo,this.bufferInfo),t.drawArraysInstanced(t.TRIANGLE_STRIP,0,n(),r)},e)}},QP=`in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);
|
|
649
658
|
#if defined(x2_DEFINED) || defined(y2_DEFINED)
|
|
650
659
|
ivec2 align=fixAlignForAngle(uAlign,angleInDegrees);
|
|
651
660
|
#else
|
|
@@ -658,21 +667,21 @@ vec2 pos=applySampleFacet(vec2(x,y));
|
|
|
658
667
|
#ifdef y2_DEFINED
|
|
659
668
|
float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
|
|
660
669
|
#endif
|
|
661
|
-
if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}
|
|
670
|
+
if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,$P=`uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;flat in float vGamma;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}float getDist(vec2 uv){vec3 c=texture(uTexture,uv).rgb;return 1.0-median(c.r,c.g,c.b);}/***Calculates the super-sampled distance to the edge.*This is used to avoid aliasing when rendering small text,*as mip-mapping cannot be used here.*The distance is averaged over a grid of n x n samples.*/float getSuperDist(vec2 uv){vec2 dx=dFdx(uv);vec2 dy=dFdy(uv);float n=2.0;float sum=0.0;for(float x=0.5;x<n;x++){for(float y=0.5;y<n;y++){sum+=getDist(uv+x/n*dx+y/n*dy);}}return sum/(n*n);}void main(){float sigDist=getSuperDist(vTexCoord);float slope=vSlope;if(uLogoLetter){slope=0.7/length(vec2(dFdy(sigDist),dFdx(sigDist)));}float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=clamp(vEdgeFadeOpacity,0.0,1.0);opa=pow(opa,vGamma);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}`,eF=`layout(std140)uniform Mark{uniform mediump float uSdfNumerator;uniform mediump vec2 uD;uniform mediump vec4 uViewportEdgeFadeWidth;uniform mediump vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;uniform lowp ivec2 uAlign;uniform mediump float uPaddingX;uniform bool uFlushX;uniform mediump float uPaddingY;uniform bool uFlushY;
|
|
662
671
|
#pragma markUniforms
|
|
663
|
-
};`,wP={left:-1,center:0,right:1},TP={top:-1,middle:0,bottom:1,alphabetic:1,baseline:1},EP=class extends VN{constructor(e){super(e),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont(),this.setupExprRefsNeedingGraphicsUpdate([`text`,`fitToBand`,`logoLetters`])}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`color`,`size`,`opacity`,`angle`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`,`text`,`angle`]}fixEncoding(e){for(let t of zh)this.properties.fitToBand?UN(e,t):WN(e,t);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(xP,SP,[CP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties,t=this.font.metrics.common.base*.35*(this.properties.logoLetters?.5:1);this.registerMarkUniformValue(`uPaddingX`,e.paddingX),this.registerMarkUniformValue(`uPaddingY`,e.paddingY),this.registerMarkUniformValue(`uFlushX`,e.flushX,e=>!!e),this.registerMarkUniformValue(`uFlushY`,e.flushY,e=>!!e),this.registerMarkUniformValue(`uSqueeze`,e.squeeze,e=>!!e),QA(this.markUniformInfo,{uAlign:[wP[e.align],TP[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSdfNumerator:t,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getData(),n=this.encoding,r=this.encoders.text,i=0,a=`format`in n.text?cr(n.text.format):e=>e;for(let e of t){let t=a(r(e)),n=N(t)?t:t===null?``:``+t;i+=n&&n.length||0}let o=new gN({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(i,this.properties.minBufferSize||1024)});o.addBatches(e.facetBatches);let s=o.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{ej(this.programInfo,{uTexture:this.font.texture})}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>rj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>sj(t,this.vertexArrayInfo,t.TRIANGLES,n,e),e)}};function DP(e,t,{spacing:n,devicePixelRatio:r,offset:i,reverse:a}={}){n||=0,i||=0;let o=0,s=0;for(let t of e)o+=NP(t.px)+(MP(t)?0:n),s+=NP(t.grow);o-=n;let c=Math.max(0,t-o),l=r===void 0?e=>e:e=>Math.round(e*r)/r,u=[],d=[],f=e=>{let t=u.length;if(!t)return;let r=(e?n:0)*(a?-1:1);p-=r;for(let e=0;e<t;e++)d.push({location:p+(e+1)/(t+1)*r,size:0});p+=r,u.length=0},p=a?Math.max(t,o):0+i;if(e.length==1&&MP(e[0]))return[{location:p,size:0}];for(let t=0;t<e.length;t++){let r=e[t];if(MP(r))u.push(r);else{f(d.length>0);let e=NP(r.px)+(s?NP(r.grow)/s*c:0);a&&(p-=e),d.push({location:l(p),size:l(e)}),a?p-=n:p+=e+n}}return p+=a?n:-n,f(!1),d}function OP(e){let t=0,n=0;for(let r of e)t=Math.max(t,r.px??0),n=Math.max(n,r.grow??0);return{px:t,grow:n}}var kP=class e{constructor(e,t){this.width=e,this.height=t}addPadding(e){return this.#e(e.width,e.height)}subtractPadding(e){return this.#e(-e.width,-e.height)}#e(t,n){return new e({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})}isGrowing(){return!!(this.width.grow||this.height.grow)}},AP=Object.freeze({px:0,grow:0}),jP=new kP(AP,AP);function MP(e){return!e.px&&!e.grow}function NP(e){return e||0}function PP(e){return e&&(M(e.px)||M(e.grow))}function FP(e){if(ML(e))throw Error(`parseSizeDef does not accept step-based sizes.`);if(PP(e))return e;if(M(e))return{px:e,grow:0};if(e===`container`||!e)return{px:0,grow:1};throw Error(`Invalid sizeDef: ${e}`)}var IP=class e{constructor(e,t,n,r){this.top=e||0,this.right=t||0,this.bottom=n||0,this.left=r||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new e(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new e(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new e(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new e(Math.max(this.top,t.top),Math.max(this.right,t.right),Math.max(this.bottom,t.bottom),Math.max(this.left,t.left))}getHorizontal(){return new e(0,this.right,0,this.left)}getVertical(){return new e(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(e){return typeof e==`number`?this.createUniformPadding(e):e?this.createFromRecord(e):LP}static createFromRecord(t){return new e(t.top,t.right,t.bottom,t.left)}static zero(){return LP}static createUniformPadding(t){return new e(t,t,t,t)}},LP=IP.createUniformPadding(0);Object.freeze(LP);var RP=/^([A-Za-z]+:)?\/\//;function zP(e,t){if(t&&RP.test(t))return t;let n=typeof e==`function`?e():e;if(!n)return t;if(!t)return n;if(/[#?]/.test(n))throw Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${n}`);return VP(n)+t}function BP(e,t,n=HP()){let r=typeof e==`function`?e():e;if(!t)return r;try{if(r){let e=n?new URL(r,n).href:new URL(r).href;return new URL(t,e).href}else if(n)return new URL(t,n).href}catch{}return zP(r,t)}function VP(e){let t=e.replace(/[^/]*$/,``);return t===``?void 0:t.endsWith(`://`)?e+`/`:t}function HP(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof window<`u`&&window.location?.href)return window.location.href}var UP=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,t){let n=this.length++;for(;n>0;){let e=n-1>>1,r=this.values[e];if(t>=r)break;this.ids[n]=this.ids[e],this.values[n]=r,n=e}this.ids[n]=e,this.values[n]=t}pop(){if(this.length===0)return;let e=this.ids,t=this.values,n=e[0],r=--this.length;if(r>0){let n=e[r],i=t[r],a=0,o=r>>1;for(;a<o;){let n=(a<<1)+1,o=n+1,s=n+(o<r&+(t[o]<t[n]));if(t[s]>=i)break;e[a]=e[s],t[a]=t[s],a=s}e[a]=n,t[a]=i}return n}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}},WP=Symbol(`runtimeNode`),GP=1e6;function KP(e){return e?(t,n)=>{e.addDisposer(t,n)}:()=>void 0}function qP(e,t){let n={id:e.id,name:e.name,kind:e.kind,get(){return e.value},subscribe(t){return e.listeners.add(t),()=>{e.listeners.delete(t)}}};return Object.defineProperty(n,WP,{enumerable:!1,configurable:!1,writable:!1,value:e}),t?Object.assign(n,{set(e){t(e)}}):n}function JP(e){let t=e[WP];if(!t)throw Error(`ParamRef is not bound to this graph runtime. Expected runtime-created ref.`);return t}function YP(e){return typeof e.rank==`number`?e.rank:JP(e).rank}function XP(e){for(let t of e)t()}var ZP=class{#e=1;#t=1;#n=0;#r=!1;#i=!1;#a=new Set;#o=new Set;#s=new UP;#c=new UP;#l=new Set;#u;constructor(e={}){this.#u=KP(e.lifecycleRegistry)}createWritable(e,t,n,r,i={}){let a=`n`+ this.#e++,o=i.notify??!0,s={id:a,name:t,kind:n,value:r,rank:0,disposed:!1,listeners:new Set,subscribe(e){return s.listeners.add(e),()=>{s.listeners.delete(e)}}};return this.#u(e,()=>{s.disposed=!0,s.listeners.clear()}),qP(s,e=>{if(s.disposed)throw Error(`Cannot set disposed parameter "`+t+`" (`+a+`).`);e!==s.value&&(s.value=e,o&&(XP(s.listeners),this.#m()))})}computed(e,t,n,r){let i=n.reduce((e,t)=>Math.max(e,YP(t)),0),a={id:`n`+ this.#e++,name:t,kind:`derived`,rank:i+1,value:r(),disposed:!1,listeners:new Set,fn:r,subscribe(e){return a.listeners.add(e),()=>{a.listeners.delete(e)}}},o=()=>{a.disposed||this.#d(a)},s=n.map(e=>e.subscribe(o));return this.#u(e,()=>{a.disposed||(a.disposed=!0,s.forEach(e=>e()),a.listeners.clear(),this.#a.delete(a))}),qP(a)}effect(e,t,n){let r=t.reduce((e,t)=>Math.max(e,YP(t)),0),i={id:`n`+ this.#e++,rank:r+1,disposed:!1,fn:n},a=()=>{i.disposed||this.#f(i)},o=t.map(e=>e.subscribe(a)),s=()=>{i.disposed||(i.disposed=!0,o.forEach(e=>e()),this.#o.delete(i))};return this.#u(e,s),s}runInTransaction(e){this.#n+=1;try{return e()}finally{--this.#n,this.#n===0&&this.#m()}}flushNow(){if(!(this.#n>0||this.#i)){this.#r=!1,this.#i=!0;try{let e=!0;for(;e;){for(e=!1;this.#s.length>0;){e=!0;let t=this.#s.pop();if(this.#a.delete(t),t.disposed)continue;let n=t.value,r=t.fn();r!==n&&(t.value=r,XP(t.listeners))}for(;this.#c.length>0;){e=!0;let t=this.#c.pop();this.#o.delete(t),!t.disposed&&t.fn()}}}finally{this.#i=!1,this.#g()}}}whenPropagated(e={}){if(this.#h())return Promise.resolve();let{signal:t,timeoutMs:n}=e;return t?.aborted?Promise.reject(Error(`whenPropagated aborted`)):new Promise((e,r)=>{let i={resolve:e,reject:r};t&&(i.abortHandler=()=>{this.#l.delete(i),r(Error(`whenPropagated aborted`))},t.addEventListener(`abort`,i.abortHandler,{once:!0})),n!=null&&(i.timeoutId=setTimeout(()=>{this.#l.delete(i),i.abortHandler&&t?.removeEventListener(`abort`,i.abortHandler),r(Error(`whenPropagated timeout after `+n+` ms`))},n)),this.#l.add(i)})}#d(e){this.#a.has(e)||(this.#a.add(e),this.#s.push(e,this.#p(e.rank)),this.#m())}#f(e){this.#o.has(e)||(this.#o.add(e),this.#c.push(e,this.#p(e.rank)),this.#m())}#p(e){let t=this.#t%GP;return this.#t+=1,e*GP+t}#m(){this.#n>0||this.#r||this.#i||(this.#r=!0,queueMicrotask(()=>{this.flushNow()}))}#h(){return this.#n===0&&!this.#r&&!this.#i&&this.#s.length===0&&this.#c.length===0&&this.#a.size===0&&this.#o.size===0}#g(){if(this.#h()){for(let e of this.#l)e.timeoutId&&clearTimeout(e.timeoutId),e.resolve();this.#l.clear()}}},QP=class{#e=1;#t=new Map;createOwner(e,t){let n=e+`:`+t+`:`+ this.#e++;return this.#t.set(n,new Set),n}addDisposer(e,t){let n=this.#t.get(e);if(!n)throw Error(`Unknown owner: `+e);n.add(t)}disposeOwner(e){let t=this.#t.get(e);if(t){for(let e of t)e();t.clear(),this.#t.delete(e)}}},$P=class{#e=1;#t=new Map;createRootScope(e){let t=`scope:`+ this.#e++;return this.#t.set(t,{params:new Map,ownerId:e}),t}createChildScope(e,t){if(!this.#t.has(t))throw Error(`Unknown parent scope: `+t);let n=`scope:`+ this.#e++;return this.#t.set(n,{parentScope:t,params:new Map,ownerId:e}),n}getOwnerId(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);return t.ownerId}clearScope(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);t.params.clear()}register(e,t,n){_g(t);let r=this.#t.get(e);if(!r)throw Error(`Unknown scope: `+e);if(r.params.has(t))throw Error(`Parameter "`+t+`" already exists in scope `+e);return r.params.set(t,n),n}resolve(e,t){_g(t);let n=e;for(;n;){let e=this.#t.get(n);if(!e)throw Error(`Unknown scope: `+n);let r=e.params.get(t);if(r)return r;n=e.parentScope}}},eF=`RawCode`,tF=`Literal`,nF=`Property`,rF=`Identifier`,iF=`ArrayExpression`,aF=`BinaryExpression`,oF=`CallExpression`,sF=`ConditionalExpression`,cF=`LogicalExpression`,lF=`MemberExpression`,uF=`ObjectExpression`,dF=`UnaryExpression`;function fF(e){this.type=e}fF.prototype.visit=function(e){let t,n,r;if(e(this))return 1;for(t=pF(this),n=0,r=t.length;n<r;++n)if(t[n].visit(e))return 1};function pF(e){switch(e.type){case iF:return e.elements;case aF:case cF:return[e.left,e.right];case oF:return[e.callee].concat(e.arguments);case sF:return[e.test,e.consequent,e.alternate];case lF:return[e.object,e.property];case uF:return e.properties;case nF:return[e.key,e.value];case dF:return[e.argument];case rF:case tF:case eF:default:return[]}}var mF,Y,X,hF,Z,gF=1,_F=2,vF=3,yF=4,bF=5,xF=6,SF=7,CF=8,wF=9;mF={},mF[gF]=`Boolean`,mF[_F]=`<end>`,mF[vF]=`Identifier`,mF[yF]=`Keyword`,mF[bF]=`Null`,mF[xF]=`Numeric`,mF[SF]=`Punctuator`,mF[CF]=`String`,mF[wF]=`RegularExpression`;var TF=`ArrayExpression`,EF=`BinaryExpression`,DF=`CallExpression`,OF=`ConditionalExpression`,kF=`Identifier`,AF=`Literal`,jF=`LogicalExpression`,MF=`MemberExpression`,NF=`ObjectExpression`,PF=`Property`,FF=`UnaryExpression`,IF=`Unexpected token %0`,LF=`Unexpected number`,RF=`Unexpected string`,zF=`Unexpected identifier`,BF=`Unexpected reserved word`,VF=`Unexpected end of input`,HF=`Invalid regular expression`,UF=`Invalid regular expression: missing /`,WF=`Octal literals are not allowed in strict mode.`,GF=`Duplicate data property in object literal not allowed in strict mode`,KF=`ILLEGAL`,qF=`Disabled.`,JF=RegExp(`[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`),YF=RegExp(`[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`);function XF(e,t){if(!e)throw Error(`ASSERT: `+t)}function ZF(e){return e>=48&&e<=57}function QF(e){return`0123456789abcdefABCDEF`.includes(e)}function $F(e){return`01234567`.includes(e)}function eI(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)}function tI(e){return e===10||e===13||e===8232||e===8233}function nI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&JF.test(String.fromCharCode(e))}function rI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&YF.test(String.fromCharCode(e))}var iI={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function aI(){for(;X<hF;){let e=Y.charCodeAt(X);if(eI(e)||tI(e))++X;else break}}function oI(e){var t,n,r,i=0;for(n=e===`u`?4:2,t=0;t<n;++t)X<hF&&QF(Y[X])?(r=Y[X++],i=i*16+`0123456789abcdef`.indexOf(r.toLowerCase())):Q({},IF,KF);return String.fromCharCode(i)}function sI(){var e=Y[X],t=0,n,r;for(e===`}`&&Q({},IF,KF);X<hF&&(e=Y[X++],QF(e));)t=t*16+`0123456789abcdef`.indexOf(e.toLowerCase());return(t>1114111||e!==`}`)&&Q({},IF,KF),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function cI(){var e=Y.charCodeAt(X++),t=String.fromCharCode(e);for(e===92&&(Y.charCodeAt(X)!==117&&Q({},IF,KF),++X,e=oI(`u`),(!e||e===`\\`||!nI(e.charCodeAt(0)))&&Q({},IF,KF),t=e);X<hF&&(e=Y.charCodeAt(X),rI(e));)++X,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(X)!==117&&Q({},IF,KF),++X,e=oI(`u`),(!e||e===`\\`||!rI(e.charCodeAt(0)))&&Q({},IF,KF),t+=e);return t}function lI(){for(var e=X++,t;X<hF;){if(t=Y.charCodeAt(X),t===92)return X=e,cI();if(rI(t))++X;else break}return Y.slice(e,X)}function uI(){var e=X,t=Y.charCodeAt(X)===92?cI():lI();return{type:t.length===1?vF:iI.hasOwnProperty(t)?yF:t===`null`?bF:t===`true`||t===`false`?gF:vF,value:t,start:e,end:X}}function dI(){var e=X,t=Y.charCodeAt(X),n,r=Y[X],i,a,o;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++X,{type:SF,value:String.fromCharCode(t),start:e,end:X};default:if(n=Y.charCodeAt(X+1),n===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return X+=2,{type:SF,value:String.fromCharCode(t)+String.fromCharCode(n),start:e,end:X};case 33:case 61:return X+=2,Y.charCodeAt(X)===61&&++X,{type:SF,value:Y.slice(e,X),start:e,end:X}}}if(o=Y.substr(X,4),o===`>>>=`)return X+=4,{type:SF,value:o,start:e,end:X};if(a=o.substr(0,3),a===`>>>`||a===`<<=`||a===`>>=`)return X+=3,{type:SF,value:a,start:e,end:X};if(i=a.substr(0,2),r===i[1]&&`+-<>&|`.includes(r)||i===`=>`)return X+=2,{type:SF,value:i,start:e,end:X};if(i===`//`&&Q({},IF,KF),`<>=!+-*%&|^/`.includes(r))return++X,{type:SF,value:r,start:e,end:X};Q({},IF,KF)}function fI(e){let t=``;for(;X<hF&&QF(Y[X]);)t+=Y[X++];return t.length===0&&Q({},IF,KF),nI(Y.charCodeAt(X))&&Q({},IF,KF),{type:xF,value:parseInt(`0x`+t,16),start:e,end:X}}function pI(e){let t=`0`+Y[X++];for(;X<hF&&$F(Y[X]);)t+=Y[X++];return(nI(Y.charCodeAt(X))||ZF(Y.charCodeAt(X)))&&Q({},IF,KF),{type:xF,value:parseInt(t,8),octal:!0,start:e,end:X}}function mI(){var e,t,n=Y[X];if(XF(ZF(n.charCodeAt(0))||n===`.`,`Numeric literal must start with a decimal digit or a decimal point`),t=X,e=``,n!==`.`){if(e=Y[X++],n=Y[X],e===`0`){if(n===`x`||n===`X`)return++X,fI(t);if($F(n))return pI(t);n&&ZF(n.charCodeAt(0))&&Q({},IF,KF)}for(;ZF(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`.`){for(e+=Y[X++];ZF(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`e`||n===`E`)if(e+=Y[X++],n=Y[X],(n===`+`||n===`-`)&&(e+=Y[X++]),ZF(Y.charCodeAt(X)))for(;ZF(Y.charCodeAt(X));)e+=Y[X++];else Q({},IF,KF);return nI(Y.charCodeAt(X))&&Q({},IF,KF),{type:xF,value:parseFloat(e),start:t,end:X}}function hI(){var e=``,t,n,r,i,a=!1;for(t=Y[X],XF(t===`'`||t===`"`,`String literal must starts with a quote`),n=X,++X;X<hF;)if(r=Y[X++],r===t){t=``;break}else if(r===`\\`)if(r=Y[X++],!r||!tI(r.charCodeAt(0)))switch(r){case`u`:case`x`:Y[X]===`{`?(++X,e+=sI()):e+=oI(r);break;case`n`:e+=`
|
|
664
|
-
`;break;case`r`:e+=`\r`;break;case`t`:e+=` `;break;case`b`:e+=`\b`;break;case`f`:e+=`\f`;break;case`v`:e+=`\v`;break;default
|
|
665
|
-
`&&++X;else if(tI(r.charCodeAt(0)))break;else e+=r;return t!==``&&Q({},IF,KF),{type:CF,value:e,octal:a,start:n,end:X}}function gI(e,t){let n=e;t.includes(`u`)&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(e,t)=>{if(parseInt(t,16)<=1114111)return`x`;Q({},HF)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`x`));try{new RegExp(n)}catch{Q({},HF)}try{return new RegExp(e,t)}catch{return null}}function _I(){var e=Y[X],t,n,r,i;for(XF(e===`/`,`Regular expression literal must start with a slash`),t=Y[X++],n=!1,r=!1;X<hF;)if(e=Y[X++],t+=e,e===`\\`)e=Y[X++],tI(e.charCodeAt(0))&&Q({},UF),t+=e;else if(tI(e.charCodeAt(0)))Q({},UF);else if(n)e===`]`&&(n=!1);else if(e===`/`){r=!0;break}else e===`[`&&(n=!0);return r||Q({},UF),i=t.substr(1,t.length-2),{value:i,literal:t}}function vI(){for(var e,t=``,n=``;X<hF&&(e=Y[X],rI(e.charCodeAt(0)));)++X,e===`\\`&&X<hF?Q({},IF,KF):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Q({},HF,n),{value:n,literal:t}}function yI(){var e,t,n,r;return Z=null,aI(),e=X,t=_I(),n=vI(),r=gI(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:X}}function bI(e){return e.type===vF||e.type===yF||e.type===gF||e.type===bF}function xI(){if(aI(),X>=hF)return{type:_F,start:X,end:X};let e=Y.charCodeAt(X);return nI(e)?uI():e===40||e===41||e===59?dI():e===39||e===34?hI():e===46?ZF(Y.charCodeAt(X+1))?mI():dI():ZF(e)?mI():dI()}function SI(){let e=Z;return X=e.end,Z=xI(),X=e.end,e}function CI(){let e=X;Z=xI(),X=e}function wI(e){let t=new fF(TF);return t.elements=e,t}function TI(e,t,n){let r=new fF(e===`||`||e===`&&`?jF:EF);return r.operator=e,r.left=t,r.right=n,r}function EI(e,t){let n=new fF(DF);return n.callee=e,n.arguments=t,n}function DI(e,t,n){let r=new fF(OF);return r.test=e,r.consequent=t,r.alternate=n,r}function OI(e){let t=new fF(kF);return t.name=e,t}function kI(e){let t=new fF(AF);return t.value=e.value,t.raw=Y.slice(e.start,e.end),e.regex&&(t.raw===`//`&&(t.raw=`/(?:)/`),t.regex=e.regex),t}function AI(e,t,n){let r=new fF(MF);return r.computed=e===`[`,r.object=t,r.property=n,r.computed||(n.member=!0),r}function jI(e){let t=new fF(NF);return t.properties=e,t}function MI(e,t,n){let r=new fF(PF);return r.key=t,r.value=n,r.kind=e,r}function NI(e,t){let n=new fF(FF);return n.operator=e,n.argument=t,n.prefix=!0,n}function Q(e,t){var n,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(e,t)=>(XF(t<r.length,`Message reference must be in range`),r[t]));throw n=Error(i),n.index=X,n.description=i,n}function PI(e){e.type===_F&&Q(e,VF),e.type===xF&&Q(e,LF),e.type===CF&&Q(e,RF),e.type===vF&&Q(e,zF),e.type===yF&&Q(e,BF),Q(e,IF,e.value)}function FI(e){let t=SI();(t.type!==SF||t.value!==e)&&PI(t)}function $(e){return Z.type===SF&&Z.value===e}function II(e){return Z.type===yF&&Z.value===e}function LI(){let e=[];for(X=Z.start,FI(`[`);!$(`]`);)$(`,`)?(SI(),e.push(null)):(e.push($I()),$(`]`)||FI(`,`));return SI(),wI(e)}function RI(){X=Z.start;let e=SI();return e.type===CF||e.type===xF?(e.octal&&Q(e,WF),kI(e)):OI(e.value)}function zI(){var e,t,n,r;if(X=Z.start,e=Z,e.type===vF)return n=RI(),FI(`:`),r=$I(),MI(`init`,n,r);if(e.type===_F||e.type===SF)PI(e);else return t=RI(),FI(`:`),r=$I(),MI(`init`,t,r)}function BI(){var e=[],t,n,r,i={},a=String;for(X=Z.start,FI(`{`);!$(`}`);)t=zI(),n=t.key.type===kF?t.key.name:a(t.key.value),r=`$`+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},GF):i[r]=!0,e.push(t),$(`}`)||FI(`,`);return FI(`}`),jI(e)}function VI(){FI(`(`);let e=eL();return FI(`)`),e}var HI={if:1};function UI(){var e,t,n;if($(`(`))return VI();if($(`[`))return LI();if($(`{`))return BI();if(e=Z.type,X=Z.start,e===vF||HI[Z.value])n=OI(SI().value);else if(e===CF||e===xF)Z.octal&&Q(Z,WF),n=kI(SI());else if(e===yF)throw Error(qF);else e===gF?(t=SI(),t.value=t.value===`true`,n=kI(t)):e===bF?(t=SI(),t.value=null,n=kI(t)):$(`/`)||$(`/=`)?(n=kI(yI()),CI()):PI(SI());return n}function WI(){let e=[];if(FI(`(`),!$(`)`))for(;X<hF&&(e.push($I()),!$(`)`));)FI(`,`);return FI(`)`),e}function GI(){X=Z.start;let e=SI();return bI(e)||PI(e),OI(e.value)}function KI(){return FI(`.`),GI()}function qI(){FI(`[`);let e=eL();return FI(`]`),e}function JI(){for(var e=UI(),t,n;;)if($(`.`))n=KI(),e=AI(`.`,e,n);else if($(`(`))t=WI(),e=EI(e,t);else if($(`[`))n=qI(),e=AI(`[`,e,n);else break;return e}function YI(){let e=JI();if(Z.type===SF&&($(`++`)||$(`--`)))throw Error(qF);return e}function XI(){var e,t;if(Z.type!==SF&&Z.type!==yF)t=YI();else if($(`++`)||$(`--`))throw Error(qF);else if($(`+`)||$(`-`)||$(`~`)||$(`!`))e=SI(),t=XI(),t=NI(e.value,t);else if(II(`delete`)||II(`void`)||II(`typeof`))throw Error(qF);else t=YI();return t}function ZI(e){let t=0;if(e.type!==SF&&e.type!==yF)return 0;switch(e.value){case`||`:t=1;break;case`&&`:t=2;break;case`|`:t=3;break;case`^`:t=4;break;case`&`:t=5;break;case`==`:case`!=`:case`===`:case`!==`:t=6;break;case`<`:case`>`:case`<=`:case`>=`:case`instanceof`:case`in`:t=7;break;case`<<`:case`>>`:case`>>>`:t=8;break;case`+`:case`-`:t=9;break;case`*`:case`/`:case`%`:t=11;break}return t}function QI(){var e=Z,t,n,r,i,a,o,s,c=XI(),l;if(r=Z,i=ZI(r),i===0)return c;for(r.prec=i,SI(),t=[e,Z],o=XI(),a=[c,r,o];(i=ZI(Z))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),s=a.pop().value,c=a.pop(),t.pop(),n=TI(s,c,o),a.push(n);r=SI(),r.prec=i,a.push(r),t.push(Z),n=XI(),a.push(n)}for(l=a.length-1,n=a[l],t.pop();l>1;)t.pop(),n=TI(a[l-1].value,a[l-2],n),l-=2;return n}function $I(){var e=QI(),t,n;return $(`?`)&&(SI(),t=$I(),FI(`:`),n=$I(),e=DI(e,t,n)),e}function eL(){let e=$I();if($(`,`))throw Error(qF);return e}function tL(e){Y=e,X=0,hF=Y.length,Z=null,CI();let t=eL();if(Z.type!==_F)throw Error(`Unexpect token after expression.`);return t}var nL={NaN:`NaN`,E:`Math.E`,LN2:`Math.LN2`,LN10:`Math.LN10`,LOG2E:`Math.LOG2E`,LOG10E:`Math.LOG10E`,PI:`Math.PI`,SQRT1_2:`Math.SQRT1_2`,SQRT2:`Math.SQRT2`,MIN_VALUE:`Number.MIN_VALUE`,MAX_VALUE:`Number.MAX_VALUE`};function rL(e){function t(t,n,r,i){let a=e(n[0]);return r&&(a=r+`(`+a+`)`,r.lastIndexOf(`new `,0)===0&&(a=`(`+a+`)`)),a+`.`+t+(i<0?``:i===0?`()`:`(`+n.slice(1).map(e).join(`,`)+`)`)}function n(e,n,r){return i=>t(e,i,n,r)}let r=`new Date`,i=`String`,a=`RegExp`;return{isNaN:`Number.isNaN`,isFinite:`Number.isFinite`,abs:`Math.abs`,acos:`Math.acos`,asin:`Math.asin`,atan:`Math.atan`,atan2:`Math.atan2`,ceil:`Math.ceil`,cos:`Math.cos`,exp:`Math.exp`,floor:`Math.floor`,hypot:`Math.hypot`,log:`Math.log`,max:`Math.max`,min:`Math.min`,pow:`Math.pow`,random:`Math.random`,round:`Math.round`,sin:`Math.sin`,sqrt:`Math.sqrt`,tan:`Math.tan`,clamp:function(t){t.length<3&&qe(`Missing arguments to clamp function.`),t.length>3&&qe(`Too many arguments to clamp function.`);let n=t.map(e);return`Math.max(`+n[1]+`, Math.min(`+n[2]+`,`+n[0]+`))`},now:`Date.now`,utc:`Date.UTC`,datetime:r,date:n(`getDate`,r,0),day:n(`getDay`,r,0),year:n(`getFullYear`,r,0),month:n(`getMonth`,r,0),hours:n(`getHours`,r,0),minutes:n(`getMinutes`,r,0),seconds:n(`getSeconds`,r,0),milliseconds:n(`getMilliseconds`,r,0),time:n(`getTime`,r,0),timezoneoffset:n(`getTimezoneOffset`,r,0),utcdate:n(`getUTCDate`,r,0),utcday:n(`getUTCDay`,r,0),utcyear:n(`getUTCFullYear`,r,0),utcmonth:n(`getUTCMonth`,r,0),utchours:n(`getUTCHours`,r,0),utcminutes:n(`getUTCMinutes`,r,0),utcseconds:n(`getUTCSeconds`,r,0),utcmilliseconds:n(`getUTCMilliseconds`,r,0),length:n(`length`,null,-1),parseFloat:`parseFloat`,parseInt:`parseInt`,upper:n(`toUpperCase`,i,0),lower:n(`toLowerCase`,i,0),substring:n(`substring`,i),split:n(`split`,i),trim:n(`trim`,i,0),btoa:`btoa`,atob:`atob`,regexp:a,test:n(`test`,a),if:function(t){t.length<3&&qe(`Missing arguments to if function.`),t.length>3&&qe(`Too many arguments to if function.`);let n=t.map(e);return`(`+n[0]+`?`+n[1]+`:`+n[2]+`)`}}}function iL(e){let t=e&&e.length-1;return t&&(e[0]===`"`&&e[t]===`"`||e[0]===`'`&&e[t]===`'`)?e.slice(1,-1):e}function aL(e){e||={};let t=e.allowed?Nt(e.allowed):{},n=e.forbidden?Nt(e.forbidden):{},r=e.constants||nL,i=(e.functions||rL)(d),a=e.globalvar,o=e.fieldvar,s=mt(a)?a:e=>`${a}["${e}"]`;new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]);let c={},l={},u=0;function d(e){if(N(e))return e;let t=f[e.type];return t??qe(`Unsupported type: `+e.type),t(e)}let f={Literal:e=>e.raw,Identifier:e=>{let i=e.name;return u>0?i:St(n,i)?qe(`Illegal identifier: `+i):St(r,i)?r[i]:St(t,i)?i:(c[i]=1,s(i))},MemberExpression:e=>{let t=!e.computed,n=d(e.object);t&&(u+=1);let r=d(e.property);return n===o&&(l[iL(r)]=1),t&&--u,n+(t?`.`+r:`[`+r+`]`)},CallExpression:e=>{e.callee.type!==`Identifier`&&qe(`Illegal callee type: `+e.callee.type);let t=e.callee.name,n=e.arguments,r=St(i,t)&&i[t];return r||qe(`Unrecognized function: `+t),mt(r)?r(n):r+`(`+n.map(d).join(`,`)+`)`},ArrayExpression:e=>`[`+e.elements.map(d).join(`,`)+`]`,BinaryExpression:e=>`(`+d(e.left)+` `+e.operator+` `+d(e.right)+`)`,UnaryExpression:e=>`(`+e.operator+d(e.argument)+`)`,ConditionalExpression:e=>`(`+d(e.test)+`?`+d(e.consequent)+`:`+d(e.alternate)+`)`,LogicalExpression:e=>`(`+d(e.left)+e.operator+d(e.right)+`)`,ObjectExpression:e=>{for(let t of e.properties){let e=t.key.name;Ze.has(e)&&qe(`Illegal property: `+e)}return`{`+e.properties.map(d).join(`,`)+`}`},Property:e=>{u+=1;let t=d(e.key);return--u,t+`:`+d(e.value)}};function p(e){let t={code:d(e),globals:Object.keys(c),fields:Object.keys(l)};return c={},l={},t}return p.functions=i,p.constants=r,p}function oL(e,t,n){return sN((n-e)/(t-e),0,1)}function sL(e){return Qe(e)||ArrayBuffer.isView(e)?e:null}function cL(e){return sL(e)||(N(e)?e:null)}var lL={clamp:sN,format(e,t){return cr(t)(e)},join(e,t){return sL(e).join(t)},indexof(e,t,n){return cL(e).indexOf(t,n)},lastindexof(e,t,n){return cL(e).lastIndexOf(t,n)},reverse(e){return sL(e).slice().reverse()},slice(e,t,n){return cL(e).slice(t,n)},mapHasKey(e,t){return e.has(t)},isArray:Qe,isBoolean:Ct,isDefined(e){return e!==void 0},isNumber:M,isObject:$e,isRegExp:Et,isString:N,isValid(e){return e!=null&&e===e},lerp:P,linearstep:oL,replace(e,t,n){return String(e).replace(t,n)},sort(e){return sL(e).slice().sort(_t)},center(e){let t=sL(e);return(t[0]+t[t.length-1])/2},span(e){return Dt(e)},smoothstep:$l};function uL(e,t){let n=rL(e);for(let e in lL)n[e]=`this.${e}`;for(let r of[`scale`,`invert`,`domain`,`range`])n[r]=n=>dL(e,t,r,n);return n}function dL(e,t,n,r){if(r.length===0)throw Error(`Scale helper "${n}" requires a literal channel name.`);if((n===`scale`||n===`invert`)&&r.length<2)throw Error(`Scale helper "${n}" requires a channel name and a value.`);let i=fL(r[0]);if(!i)throw Error(`Scale helper "${n}" requires a literal channel name.`);let a=t.resolveScaleResolution?.(i);if(!a)throw Error(`Unknown scale channel "${i}" in expression helper "${n}".`);let o=t.getScaleHelper(n,i,a),s=r.slice(1).map(t=>e(t)).join(`,`);return`${t.globalvar}["${o.codeName}"](${s})`}function fL(e){return e?.type===`Literal`&&typeof e.value==`string`?e.value:void 0}function pL(e,t){let n=n=>hL(t,e,n);if(e===`domain`)return()=>n(()=>t.getDomain());if(e===`range`)return()=>n(()=>t.getScale().range());if(e===`scale`)return e=>n(()=>t.getScale()(e));if(e===`invert`)return e=>n(()=>t.getScale().invert(e));throw Error(`Unknown scale helper: `+e)}var mL=new WeakSet;function hL(e,t,n){if(mL.has(e))throw Error(`Scale helper cycle detected while evaluating ${t}("${e.channel}").`);mL.add(e);try{return n()}finally{mL.delete(e)}}function gL(e,t,n,r){let i=new Set,a=()=>{for(let e of i)e()},o=()=>{e===`domain`?n.addEventListener(`domain`,a):(e===`range`||n.addEventListener(`domain`,a),n.addEventListener(`range`,a))},s=()=>{e===`domain`?n.removeEventListener(`domain`,a):(e===`range`||n.removeEventListener(`domain`,a),n.removeEventListener(`range`,a))};return{id:`scale:${t}:${r}`,name:`scale(${t})`,kind:`derived`,rank:0,get(){return n.getScale()},subscribe(e){let t=i.size===0;return i.add(e),t&&o(),()=>{i.delete(e)&&i.size===0&&s()}}}}function _L(e,t={},n={}){try{let r=new Map,i=new Map,a=1,o={...n,globalvar:`globalObject`,globalObject:t,getScaleHelper(e,n,o){let s=e+`:`+n,c=i.get(s);if(c)return c;let l=r.get(n);l||(l=gL(e,n,o,`__scale_dependency_`+ a++),r.set(n,l));let u=`__scale_helper_`+ a++,d={codeName:u,dependency:l};return i.set(s,d),t[u]=pL(e,o),d}},s=aL({forbidden:[],allowed:[`datum`,`undefined`],globalvar:`globalObject`,fieldvar:`datum`,functions:e=>uL(e,o)})(tL(e)),c=Function(`datum`,`globalObject`,`"use strict";
|
|
672
|
+
};`,tF={left:-1,center:0,right:1},nF={top:-1,middle:0,bottom:1,alphabetic:1,baseline:1},rF=class extends vP{constructor(e){super(e),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont(),this.setupExprRefsNeedingGraphicsUpdate([`text`,`fitToBand`,`logoLetters`])}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`color`,`size`,`opacity`,`angle`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`,`text`,`angle`]}fixEncoding(e){for(let t of Rh)this.properties.fitToBand?bP(e,t):xP(e,t);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(QP,$P,[eF])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties,t=this.font.metrics.common.base*.35*(this.properties.logoLetters?.5:1);this.registerMarkUniformValue(`uPaddingX`,e.paddingX),this.registerMarkUniformValue(`uPaddingY`,e.paddingY),this.registerMarkUniformValue(`uFlushX`,e.flushX,e=>!!e),this.registerMarkUniformValue(`uFlushY`,e.flushY,e=>!!e),this.registerMarkUniformValue(`uSqueeze`,e.squeeze,e=>!!e),kj(this.markUniformInfo,{uAlign:[tF[e.align],nF[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSdfNumerator:t,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getData(),n=this.encoding,r=this.encoders.text,i=0,a=`format`in n.text?sr(n.text.format):e=>e;for(let e of t){let t=a(r(e)),n=P(t)?t:t===null?``:``+t;i+=n&&n.length||0}let o=new qN({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(i,this.properties.minBufferSize||1024)});o.addBatches(e.facetBatches);let s=o.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{jj(this.programInfo,{uTexture:this.font.texture})}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Pj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>Rj(t,this.vertexArrayInfo,t.TRIANGLES,n,e),e)}};function iF(e,t,{spacing:n,devicePixelRatio:r,offset:i,reverse:a}={}){n||=0,i||=0;let o=0,s=0;for(let t of e)o+=uF(t.px)+(lF(t)?0:n),s+=uF(t.grow);o-=n;let c=Math.max(0,t-o),l=r===void 0?e=>e:e=>Math.round(e*r)/r,u=[],d=[],f=e=>{let t=u.length;if(!t)return;let r=(e?n:0)*(a?-1:1);p-=r;for(let e=0;e<t;e++)d.push({location:p+(e+1)/(t+1)*r,size:0});p+=r,u.length=0},p=a?Math.max(t,o):0+i;if(e.length==1&&lF(e[0]))return[{location:p,size:0}];for(let t=0;t<e.length;t++){let r=e[t];if(lF(r))u.push(r);else{f(d.length>0);let e=uF(r.px)+(s?uF(r.grow)/s*c:0);a&&(p-=e),d.push({location:l(p),size:l(e)}),a?p-=n:p+=e+n}}return p+=a?n:-n,f(!1),d}function aF(e){let t=0,n=0;for(let r of e)t=Math.max(t,r.px??0),n=Math.max(n,r.grow??0);return{px:t,grow:n}}var oF=class e{constructor(e,t){this.width=e,this.height=t}addPadding(e){return this.#e(e.width,e.height)}subtractPadding(e){return this.#e(-e.width,-e.height)}#e(t,n){return new e({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})}isGrowing(){return!!(this.width.grow||this.height.grow)}},sF=Object.freeze({px:0,grow:0}),cF=new oF(sF,sF);function lF(e){return!e.px&&!e.grow}function uF(e){return e||0}function dF(e){return e&&(N(e.px)||N(e.grow))}function fF(e){if(lR(e))throw Error(`parseSizeDef does not accept step-based sizes.`);if(dF(e))return e;if(N(e))return{px:e,grow:0};if(e===`container`||!e)return{px:0,grow:1};throw Error(`Invalid sizeDef: ${e}`)}var pF=class e{constructor(e,t,n,r){this.top=e||0,this.right=t||0,this.bottom=n||0,this.left=r||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new e(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new e(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new e(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new e(Math.max(this.top,t.top),Math.max(this.right,t.right),Math.max(this.bottom,t.bottom),Math.max(this.left,t.left))}getHorizontal(){return new e(0,this.right,0,this.left)}getVertical(){return new e(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(e){return typeof e==`number`?this.createUniformPadding(e):e?this.createFromRecord(e):mF}static createFromRecord(t){return new e(t.top,t.right,t.bottom,t.left)}static zero(){return mF}static createUniformPadding(t){return new e(t,t,t,t)}},mF=pF.createUniformPadding(0);Object.freeze(mF);var hF=/^([A-Za-z]+:)?\/\//;function gF(e,t){if(t&&hF.test(t))return t;let n=typeof e==`function`?e():e;if(!n)return t;if(!t)return n;if(/[#?]/.test(n))throw Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${n}`);return vF(n)+t}function _F(e,t,n=yF()){let r=typeof e==`function`?e():e;if(!t)return r;try{if(r){let e=n?new URL(r,n).href:new URL(r).href;return new URL(t,e).href}else if(n)return new URL(t,n).href}catch{}return gF(r,t)}function vF(e){let t=e.replace(/[^/]*$/,``);return t===``?void 0:t.endsWith(`://`)?e+`/`:t}function yF(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof window<`u`&&window.location?.href)return window.location.href}var bF=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,t){let n=this.length++;for(;n>0;){let e=n-1>>1,r=this.values[e];if(t>=r)break;this.ids[n]=this.ids[e],this.values[n]=r,n=e}this.ids[n]=e,this.values[n]=t}pop(){if(this.length===0)return;let e=this.ids,t=this.values,n=e[0],r=--this.length;if(r>0){let n=e[r],i=t[r],a=0,o=r>>1;for(;a<o;){let n=(a<<1)+1,o=n+1,s=n+(o<r&+(t[o]<t[n]));if(t[s]>=i)break;e[a]=e[s],t[a]=t[s],a=s}e[a]=n,t[a]=i}return n}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}},xF=Symbol(`runtimeNode`),SF=1e6;function CF(e){return e?(t,n)=>{e.addDisposer(t,n)}:()=>void 0}function wF(e,t){let n={id:e.id,name:e.name,kind:e.kind,get(){return e.value},subscribe(t){return e.listeners.add(t),()=>{e.listeners.delete(t)}}};return Object.defineProperty(n,xF,{enumerable:!1,configurable:!1,writable:!1,value:e}),t?Object.assign(n,{set(e){t(e)}}):n}function TF(e){let t=e[xF];if(!t)throw Error(`ParamRef is not bound to this graph runtime. Expected runtime-created ref.`);return t}function EF(e){return typeof e.rank==`number`?e.rank:TF(e).rank}function DF(e){for(let t of e)t()}var OF=class{#e=1;#t=1;#n=0;#r=!1;#i=!1;#a=new Set;#o=new Set;#s=new bF;#c=new bF;#l=new Set;#u;constructor(e={}){this.#u=CF(e.lifecycleRegistry)}createWritable(e,t,n,r,i={}){let a=`n`+ this.#e++,o=i.notify??!0,s={id:a,name:t,kind:n,value:r,rank:0,disposed:!1,listeners:new Set,subscribe(e){return s.listeners.add(e),()=>{s.listeners.delete(e)}}};return this.#u(e,()=>{s.disposed=!0,s.listeners.clear()}),wF(s,e=>{if(s.disposed)throw Error(`Cannot set disposed parameter "`+t+`" (`+a+`).`);e!==s.value&&(s.value=e,o&&(DF(s.listeners),this.#m()))})}computed(e,t,n,r){let i=n.reduce((e,t)=>Math.max(e,EF(t)),0),a={id:`n`+ this.#e++,name:t,kind:`derived`,rank:i+1,value:r(),disposed:!1,listeners:new Set,fn:r,subscribe(e){return a.listeners.add(e),()=>{a.listeners.delete(e)}}},o=()=>{a.disposed||this.#d(a)},s=n.map(e=>e.subscribe(o));return this.#u(e,()=>{a.disposed||(a.disposed=!0,s.forEach(e=>e()),a.listeners.clear(),this.#a.delete(a))}),wF(a)}effect(e,t,n){let r=t.reduce((e,t)=>Math.max(e,EF(t)),0),i={id:`n`+ this.#e++,rank:r+1,disposed:!1,fn:n},a=()=>{i.disposed||this.#f(i)},o=t.map(e=>e.subscribe(a)),s=()=>{i.disposed||(i.disposed=!0,o.forEach(e=>e()),this.#o.delete(i))};return this.#u(e,s),s}runInTransaction(e){this.#n+=1;try{return e()}finally{--this.#n,this.#n===0&&this.#m()}}flushNow(){if(!(this.#n>0||this.#i)){this.#r=!1,this.#i=!0;try{let e=!0;for(;e;){for(e=!1;this.#s.length>0;){e=!0;let t=this.#s.pop();if(this.#a.delete(t),t.disposed)continue;let n=t.value,r=t.fn();r!==n&&(t.value=r,DF(t.listeners))}for(;this.#c.length>0;){e=!0;let t=this.#c.pop();this.#o.delete(t),!t.disposed&&t.fn()}}}finally{this.#i=!1,this.#g()}}}whenPropagated(e={}){if(this.#h())return Promise.resolve();let{signal:t,timeoutMs:n}=e;return t?.aborted?Promise.reject(Error(`whenPropagated aborted`)):new Promise((e,r)=>{let i={resolve:e,reject:r};t&&(i.abortHandler=()=>{this.#l.delete(i),r(Error(`whenPropagated aborted`))},t.addEventListener(`abort`,i.abortHandler,{once:!0})),n!=null&&(i.timeoutId=setTimeout(()=>{this.#l.delete(i),i.abortHandler&&t?.removeEventListener(`abort`,i.abortHandler),r(Error(`whenPropagated timeout after `+n+` ms`))},n)),this.#l.add(i)})}#d(e){this.#a.has(e)||(this.#a.add(e),this.#s.push(e,this.#p(e.rank)),this.#m())}#f(e){this.#o.has(e)||(this.#o.add(e),this.#c.push(e,this.#p(e.rank)),this.#m())}#p(e){let t=this.#t%SF;return this.#t+=1,e*SF+t}#m(){this.#n>0||this.#r||this.#i||(this.#r=!0,queueMicrotask(()=>{this.flushNow()}))}#h(){return this.#n===0&&!this.#r&&!this.#i&&this.#s.length===0&&this.#c.length===0&&this.#a.size===0&&this.#o.size===0}#g(){if(this.#h()){for(let e of this.#l)e.timeoutId&&clearTimeout(e.timeoutId),e.resolve();this.#l.clear()}}},kF=class{#e=1;#t=new Map;createOwner(e,t){let n=e+`:`+t+`:`+ this.#e++;return this.#t.set(n,new Set),n}addDisposer(e,t){let n=this.#t.get(e);if(!n)throw Error(`Unknown owner: `+e);n.add(t)}disposeOwner(e){let t=this.#t.get(e);if(t){for(let e of t)e();t.clear(),this.#t.delete(e)}}},AF=class{#e=1;#t=new Map;createRootScope(e){let t=`scope:`+ this.#e++;return this.#t.set(t,{params:new Map,ownerId:e}),t}createChildScope(e,t){if(!this.#t.has(t))throw Error(`Unknown parent scope: `+t);let n=`scope:`+ this.#e++;return this.#t.set(n,{parentScope:t,params:new Map,ownerId:e}),n}getOwnerId(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);return t.ownerId}clearScope(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);t.params.clear()}register(e,t,n){gg(t);let r=this.#t.get(e);if(!r)throw Error(`Unknown scope: `+e);if(r.params.has(t))throw Error(`Parameter "`+t+`" already exists in scope `+e);return r.params.set(t,n),n}resolve(e,t){gg(t);let n=e;for(;n;){let e=this.#t.get(n);if(!e)throw Error(`Unknown scope: `+n);let r=e.params.get(t);if(r)return r;n=e.parentScope}}},jF=`RawCode`,MF=`Literal`,NF=`Property`,PF=`Identifier`,FF=`ArrayExpression`,IF=`BinaryExpression`,LF=`CallExpression`,RF=`ConditionalExpression`,zF=`LogicalExpression`,BF=`MemberExpression`,VF=`ObjectExpression`,HF=`UnaryExpression`;function UF(e){this.type=e}UF.prototype.visit=function(e){let t,n,r;if(e(this))return 1;for(t=WF(this),n=0,r=t.length;n<r;++n)if(t[n].visit(e))return 1};function WF(e){switch(e.type){case FF:return e.elements;case IF:case zF:return[e.left,e.right];case LF:return[e.callee].concat(e.arguments);case RF:return[e.test,e.consequent,e.alternate];case BF:return[e.object,e.property];case VF:return e.properties;case NF:return[e.key,e.value];case HF:return[e.argument];case PF:case MF:case jF:default:return[]}}var GF,Y,X,KF,Z,qF=1,JF=2,YF=3,XF=4,ZF=5,QF=6,$F=7,eI=8,tI=9;GF={},GF[qF]=`Boolean`,GF[JF]=`<end>`,GF[YF]=`Identifier`,GF[XF]=`Keyword`,GF[ZF]=`Null`,GF[QF]=`Numeric`,GF[$F]=`Punctuator`,GF[eI]=`String`,GF[tI]=`RegularExpression`;var nI=`ArrayExpression`,rI=`BinaryExpression`,iI=`CallExpression`,aI=`ConditionalExpression`,oI=`Identifier`,sI=`Literal`,cI=`LogicalExpression`,lI=`MemberExpression`,uI=`ObjectExpression`,dI=`Property`,fI=`UnaryExpression`,pI=`Unexpected token %0`,mI=`Unexpected number`,hI=`Unexpected string`,gI=`Unexpected identifier`,_I=`Unexpected reserved word`,vI=`Unexpected end of input`,yI=`Invalid regular expression`,bI=`Invalid regular expression: missing /`,xI=`Octal literals are not allowed in strict mode.`,SI=`Duplicate data property in object literal not allowed in strict mode`,CI=`ILLEGAL`,wI=`Disabled.`,TI=RegExp(`[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`),EI=RegExp(`[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`);function DI(e,t){if(!e)throw Error(`ASSERT: `+t)}function OI(e){return e>=48&&e<=57}function kI(e){return`0123456789abcdefABCDEF`.includes(e)}function AI(e){return`01234567`.includes(e)}function jI(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)}function MI(e){return e===10||e===13||e===8232||e===8233}function NI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&TI.test(String.fromCharCode(e))}function PI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&EI.test(String.fromCharCode(e))}var FI={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function II(){for(;X<KF;){let e=Y.charCodeAt(X);if(jI(e)||MI(e))++X;else break}}function LI(e){var t,n,r,i=0;for(n=e===`u`?4:2,t=0;t<n;++t)X<KF&&kI(Y[X])?(r=Y[X++],i=i*16+`0123456789abcdef`.indexOf(r.toLowerCase())):Q({},pI,CI);return String.fromCharCode(i)}function RI(){var e=Y[X],t=0,n,r;for(e===`}`&&Q({},pI,CI);X<KF&&(e=Y[X++],kI(e));)t=t*16+`0123456789abcdef`.indexOf(e.toLowerCase());return(t>1114111||e!==`}`)&&Q({},pI,CI),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function zI(){var e=Y.charCodeAt(X++),t=String.fromCharCode(e);for(e===92&&(Y.charCodeAt(X)!==117&&Q({},pI,CI),++X,e=LI(`u`),(!e||e===`\\`||!NI(e.charCodeAt(0)))&&Q({},pI,CI),t=e);X<KF&&(e=Y.charCodeAt(X),PI(e));)++X,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(X)!==117&&Q({},pI,CI),++X,e=LI(`u`),(!e||e===`\\`||!PI(e.charCodeAt(0)))&&Q({},pI,CI),t+=e);return t}function BI(){for(var e=X++,t;X<KF;){if(t=Y.charCodeAt(X),t===92)return X=e,zI();if(PI(t))++X;else break}return Y.slice(e,X)}function VI(){var e=X,t=Y.charCodeAt(X)===92?zI():BI();return{type:t.length===1?YF:FI.hasOwnProperty(t)?XF:t===`null`?ZF:t===`true`||t===`false`?qF:YF,value:t,start:e,end:X}}function HI(){var e=X,t=Y.charCodeAt(X),n,r=Y[X],i,a,o;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++X,{type:$F,value:String.fromCharCode(t),start:e,end:X};default:if(n=Y.charCodeAt(X+1),n===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return X+=2,{type:$F,value:String.fromCharCode(t)+String.fromCharCode(n),start:e,end:X};case 33:case 61:return X+=2,Y.charCodeAt(X)===61&&++X,{type:$F,value:Y.slice(e,X),start:e,end:X}}}if(o=Y.substr(X,4),o===`>>>=`)return X+=4,{type:$F,value:o,start:e,end:X};if(a=o.substr(0,3),a===`>>>`||a===`<<=`||a===`>>=`)return X+=3,{type:$F,value:a,start:e,end:X};if(i=a.substr(0,2),r===i[1]&&`+-<>&|`.includes(r)||i===`=>`)return X+=2,{type:$F,value:i,start:e,end:X};if(i===`//`&&Q({},pI,CI),`<>=!+-*%&|^/`.includes(r))return++X,{type:$F,value:r,start:e,end:X};Q({},pI,CI)}function UI(e){let t=``;for(;X<KF&&kI(Y[X]);)t+=Y[X++];return t.length===0&&Q({},pI,CI),NI(Y.charCodeAt(X))&&Q({},pI,CI),{type:QF,value:parseInt(`0x`+t,16),start:e,end:X}}function WI(e){let t=`0`+Y[X++];for(;X<KF&&AI(Y[X]);)t+=Y[X++];return(NI(Y.charCodeAt(X))||OI(Y.charCodeAt(X)))&&Q({},pI,CI),{type:QF,value:parseInt(t,8),octal:!0,start:e,end:X}}function GI(){var e,t,n=Y[X];if(DI(OI(n.charCodeAt(0))||n===`.`,`Numeric literal must start with a decimal digit or a decimal point`),t=X,e=``,n!==`.`){if(e=Y[X++],n=Y[X],e===`0`){if(n===`x`||n===`X`)return++X,UI(t);if(AI(n))return WI(t);n&&OI(n.charCodeAt(0))&&Q({},pI,CI)}for(;OI(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`.`){for(e+=Y[X++];OI(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`e`||n===`E`)if(e+=Y[X++],n=Y[X],(n===`+`||n===`-`)&&(e+=Y[X++]),OI(Y.charCodeAt(X)))for(;OI(Y.charCodeAt(X));)e+=Y[X++];else Q({},pI,CI);return NI(Y.charCodeAt(X))&&Q({},pI,CI),{type:QF,value:parseFloat(e),start:t,end:X}}function KI(){var e=``,t,n,r,i,a=!1;for(t=Y[X],DI(t===`'`||t===`"`,`String literal must starts with a quote`),n=X,++X;X<KF;)if(r=Y[X++],r===t){t=``;break}else if(r===`\\`)if(r=Y[X++],!r||!MI(r.charCodeAt(0)))switch(r){case`u`:case`x`:Y[X]===`{`?(++X,e+=RI()):e+=LI(r);break;case`n`:e+=`
|
|
673
|
+
`;break;case`r`:e+=`\r`;break;case`t`:e+=` `;break;case`b`:e+=`\b`;break;case`f`:e+=`\f`;break;case`v`:e+=`\v`;break;default:AI(r)?(i=`01234567`.indexOf(r),i!==0&&(a=!0),X<KF&&AI(Y[X])&&(a=!0,i=i*8+`01234567`.indexOf(Y[X++]),`0123`.includes(r)&&X<KF&&AI(Y[X])&&(i=i*8+`01234567`.indexOf(Y[X++]))),e+=String.fromCharCode(i)):e+=r;break}else r===`\r`&&Y[X]===`
|
|
674
|
+
`&&++X;else if(MI(r.charCodeAt(0)))break;else e+=r;return t!==``&&Q({},pI,CI),{type:eI,value:e,octal:a,start:n,end:X}}function qI(e,t){let n=e;t.includes(`u`)&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(e,t)=>{if(parseInt(t,16)<=1114111)return`x`;Q({},yI)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`x`));try{new RegExp(n)}catch{Q({},yI)}try{return new RegExp(e,t)}catch{return null}}function JI(){var e=Y[X],t,n,r,i;for(DI(e===`/`,`Regular expression literal must start with a slash`),t=Y[X++],n=!1,r=!1;X<KF;)if(e=Y[X++],t+=e,e===`\\`)e=Y[X++],MI(e.charCodeAt(0))&&Q({},bI),t+=e;else if(MI(e.charCodeAt(0)))Q({},bI);else if(n)e===`]`&&(n=!1);else if(e===`/`){r=!0;break}else e===`[`&&(n=!0);return r||Q({},bI),i=t.substr(1,t.length-2),{value:i,literal:t}}function YI(){for(var e,t=``,n=``;X<KF&&(e=Y[X],PI(e.charCodeAt(0)));)++X,e===`\\`&&X<KF?Q({},pI,CI):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Q({},yI,n),{value:n,literal:t}}function XI(){var e,t,n,r;return Z=null,II(),e=X,t=JI(),n=YI(),r=qI(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:X}}function ZI(e){return e.type===YF||e.type===XF||e.type===qF||e.type===ZF}function QI(){if(II(),X>=KF)return{type:JF,start:X,end:X};let e=Y.charCodeAt(X);return NI(e)?VI():e===40||e===41||e===59?HI():e===39||e===34?KI():e===46?OI(Y.charCodeAt(X+1))?GI():HI():OI(e)?GI():HI()}function $I(){let e=Z;return X=e.end,Z=QI(),X=e.end,e}function eL(){let e=X;Z=QI(),X=e}function tL(e){let t=new UF(nI);return t.elements=e,t}function nL(e,t,n){let r=new UF(e===`||`||e===`&&`?cI:rI);return r.operator=e,r.left=t,r.right=n,r}function rL(e,t){let n=new UF(iI);return n.callee=e,n.arguments=t,n}function iL(e,t,n){let r=new UF(aI);return r.test=e,r.consequent=t,r.alternate=n,r}function aL(e){let t=new UF(oI);return t.name=e,t}function oL(e){let t=new UF(sI);return t.value=e.value,t.raw=Y.slice(e.start,e.end),e.regex&&(t.raw===`//`&&(t.raw=`/(?:)/`),t.regex=e.regex),t}function sL(e,t,n){let r=new UF(lI);return r.computed=e===`[`,r.object=t,r.property=n,r.computed||(n.member=!0),r}function cL(e){let t=new UF(uI);return t.properties=e,t}function lL(e,t,n){let r=new UF(dI);return r.key=t,r.value=n,r.kind=e,r}function uL(e,t){let n=new UF(fI);return n.operator=e,n.argument=t,n.prefix=!0,n}function Q(e,t){var n,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(e,t)=>(DI(t<r.length,`Message reference must be in range`),r[t]));throw n=Error(i),n.index=X,n.description=i,n}function dL(e){e.type===JF&&Q(e,vI),e.type===QF&&Q(e,mI),e.type===eI&&Q(e,hI),e.type===YF&&Q(e,gI),e.type===XF&&Q(e,_I),Q(e,pI,e.value)}function fL(e){let t=$I();(t.type!==$F||t.value!==e)&&dL(t)}function $(e){return Z.type===$F&&Z.value===e}function pL(e){return Z.type===XF&&Z.value===e}function mL(){let e=[];for(X=Z.start,fL(`[`);!$(`]`);)$(`,`)?($I(),e.push(null)):(e.push(AL()),$(`]`)||fL(`,`));return $I(),tL(e)}function hL(){X=Z.start;let e=$I();return e.type===eI||e.type===QF?(e.octal&&Q(e,xI),oL(e)):aL(e.value)}function gL(){var e,t,n,r;if(X=Z.start,e=Z,e.type===YF)return n=hL(),fL(`:`),r=AL(),lL(`init`,n,r);if(e.type===JF||e.type===$F)dL(e);else return t=hL(),fL(`:`),r=AL(),lL(`init`,t,r)}function _L(){var e=[],t,n,r,i={},a=String;for(X=Z.start,fL(`{`);!$(`}`);)t=gL(),n=t.key.type===oI?t.key.name:a(t.key.value),r=`$`+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},SI):i[r]=!0,e.push(t),$(`}`)||fL(`,`);return fL(`}`),cL(e)}function vL(){fL(`(`);let e=jL();return fL(`)`),e}var yL={if:1};function bL(){var e,t,n;if($(`(`))return vL();if($(`[`))return mL();if($(`{`))return _L();if(e=Z.type,X=Z.start,e===YF||yL[Z.value])n=aL($I().value);else if(e===eI||e===QF)Z.octal&&Q(Z,xI),n=oL($I());else if(e===XF)throw Error(wI);else e===qF?(t=$I(),t.value=t.value===`true`,n=oL(t)):e===ZF?(t=$I(),t.value=null,n=oL(t)):$(`/`)||$(`/=`)?(n=oL(XI()),eL()):dL($I());return n}function xL(){let e=[];if(fL(`(`),!$(`)`))for(;X<KF&&(e.push(AL()),!$(`)`));)fL(`,`);return fL(`)`),e}function SL(){X=Z.start;let e=$I();return ZI(e)||dL(e),aL(e.value)}function CL(){return fL(`.`),SL()}function wL(){fL(`[`);let e=jL();return fL(`]`),e}function TL(){for(var e=bL(),t,n;;)if($(`.`))n=CL(),e=sL(`.`,e,n);else if($(`(`))t=xL(),e=rL(e,t);else if($(`[`))n=wL(),e=sL(`[`,e,n);else break;return e}function EL(){let e=TL();if(Z.type===$F&&($(`++`)||$(`--`)))throw Error(wI);return e}function DL(){var e,t;if(Z.type!==$F&&Z.type!==XF)t=EL();else if($(`++`)||$(`--`))throw Error(wI);else if($(`+`)||$(`-`)||$(`~`)||$(`!`))e=$I(),t=DL(),t=uL(e.value,t);else if(pL(`delete`)||pL(`void`)||pL(`typeof`))throw Error(wI);else t=EL();return t}function OL(e){let t=0;if(e.type!==$F&&e.type!==XF)return 0;switch(e.value){case`||`:t=1;break;case`&&`:t=2;break;case`|`:t=3;break;case`^`:t=4;break;case`&`:t=5;break;case`==`:case`!=`:case`===`:case`!==`:t=6;break;case`<`:case`>`:case`<=`:case`>=`:case`instanceof`:case`in`:t=7;break;case`<<`:case`>>`:case`>>>`:t=8;break;case`+`:case`-`:t=9;break;case`*`:case`/`:case`%`:t=11;break}return t}function kL(){var e=Z,t,n,r,i,a,o,s,c=DL(),l;if(r=Z,i=OL(r),i===0)return c;for(r.prec=i,$I(),t=[e,Z],o=DL(),a=[c,r,o];(i=OL(Z))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),s=a.pop().value,c=a.pop(),t.pop(),n=nL(s,c,o),a.push(n);r=$I(),r.prec=i,a.push(r),t.push(Z),n=DL(),a.push(n)}for(l=a.length-1,n=a[l],t.pop();l>1;)t.pop(),n=nL(a[l-1].value,a[l-2],n),l-=2;return n}function AL(){var e=kL(),t,n;return $(`?`)&&($I(),t=AL(),fL(`:`),n=AL(),e=iL(e,t,n)),e}function jL(){let e=AL();if($(`,`))throw Error(wI);return e}function ML(e){Y=e,X=0,KF=Y.length,Z=null,eL();let t=jL();if(Z.type!==JF)throw Error(`Unexpect token after expression.`);return t}var NL={NaN:`NaN`,E:`Math.E`,LN2:`Math.LN2`,LN10:`Math.LN10`,LOG2E:`Math.LOG2E`,LOG10E:`Math.LOG10E`,PI:`Math.PI`,SQRT1_2:`Math.SQRT1_2`,SQRT2:`Math.SQRT2`,MIN_VALUE:`Number.MIN_VALUE`,MAX_VALUE:`Number.MAX_VALUE`};function PL(e){function t(t,n,r,i){let a=e(n[0]);return r&&(a=r+`(`+a+`)`,r.lastIndexOf(`new `,0)===0&&(a=`(`+a+`)`)),a+`.`+t+(i<0?``:i===0?`()`:`(`+n.slice(1).map(e).join(`,`)+`)`)}function n(e,n,r){return i=>t(e,i,n,r)}let r=`new Date`,i=`String`,a=`RegExp`;return{isNaN:`Number.isNaN`,isFinite:`Number.isFinite`,abs:`Math.abs`,acos:`Math.acos`,asin:`Math.asin`,atan:`Math.atan`,atan2:`Math.atan2`,ceil:`Math.ceil`,cos:`Math.cos`,exp:`Math.exp`,floor:`Math.floor`,hypot:`Math.hypot`,log:`Math.log`,max:`Math.max`,min:`Math.min`,pow:`Math.pow`,random:`Math.random`,round:`Math.round`,sin:`Math.sin`,sqrt:`Math.sqrt`,tan:`Math.tan`,clamp:function(t){t.length<3&&Ke(`Missing arguments to clamp function.`),t.length>3&&Ke(`Too many arguments to clamp function.`);let n=t.map(e);return`Math.max(`+n[1]+`, Math.min(`+n[2]+`,`+n[0]+`))`},now:`Date.now`,utc:`Date.UTC`,datetime:r,date:n(`getDate`,r,0),day:n(`getDay`,r,0),year:n(`getFullYear`,r,0),month:n(`getMonth`,r,0),hours:n(`getHours`,r,0),minutes:n(`getMinutes`,r,0),seconds:n(`getSeconds`,r,0),milliseconds:n(`getMilliseconds`,r,0),time:n(`getTime`,r,0),timezoneoffset:n(`getTimezoneOffset`,r,0),utcdate:n(`getUTCDate`,r,0),utcday:n(`getUTCDay`,r,0),utcyear:n(`getUTCFullYear`,r,0),utcmonth:n(`getUTCMonth`,r,0),utchours:n(`getUTCHours`,r,0),utcminutes:n(`getUTCMinutes`,r,0),utcseconds:n(`getUTCSeconds`,r,0),utcmilliseconds:n(`getUTCMilliseconds`,r,0),length:n(`length`,null,-1),parseFloat:`parseFloat`,parseInt:`parseInt`,upper:n(`toUpperCase`,i,0),lower:n(`toLowerCase`,i,0),substring:n(`substring`,i),split:n(`split`,i),trim:n(`trim`,i,0),btoa:`btoa`,atob:`atob`,regexp:a,test:n(`test`,a),if:function(t){t.length<3&&Ke(`Missing arguments to if function.`),t.length>3&&Ke(`Too many arguments to if function.`);let n=t.map(e);return`(`+n[0]+`?`+n[1]+`:`+n[2]+`)`}}}function FL(e){let t=e&&e.length-1;return t&&(e[0]===`"`&&e[t]===`"`||e[0]===`'`&&e[t]===`'`)?e.slice(1,-1):e}function IL(e){e||={};let t=e.allowed?Mt(e.allowed):{},n=e.forbidden?Mt(e.forbidden):{},r=e.constants||NL,i=(e.functions||PL)(d),a=e.globalvar,o=e.fieldvar,s=pt(a)?a:e=>`${a}["${e}"]`;new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]);let c={},l={},u=0;function d(e){if(P(e))return e;let t=f[e.type];return t??Ke(`Unsupported type: `+e.type),t(e)}let f={Literal:e=>e.raw,Identifier:e=>{let i=e.name;return u>0?i:xt(n,i)?Ke(`Illegal identifier: `+i):xt(r,i)?r[i]:xt(t,i)?i:(c[i]=1,s(i))},MemberExpression:e=>{let t=!e.computed,n=d(e.object);t&&(u+=1);let r=d(e.property);return n===o&&(l[FL(r)]=1),t&&--u,n+(t?`.`+r:`[`+r+`]`)},CallExpression:e=>{e.callee.type!==`Identifier`&&Ke(`Illegal callee type: `+e.callee.type);let t=e.callee.name,n=e.arguments,r=xt(i,t)&&i[t];return r||Ke(`Unrecognized function: `+t),pt(r)?r(n):r+`(`+n.map(d).join(`,`)+`)`},ArrayExpression:e=>`[`+e.elements.map(d).join(`,`)+`]`,BinaryExpression:e=>`(`+d(e.left)+` `+e.operator+` `+d(e.right)+`)`,UnaryExpression:e=>`(`+e.operator+d(e.argument)+`)`,ConditionalExpression:e=>`(`+d(e.test)+`?`+d(e.consequent)+`:`+d(e.alternate)+`)`,LogicalExpression:e=>`(`+d(e.left)+e.operator+d(e.right)+`)`,ObjectExpression:e=>{for(let t of e.properties){let e=t.key.name;Xe.has(e)&&Ke(`Illegal property: `+e)}return`{`+e.properties.map(d).join(`,`)+`}`},Property:e=>{u+=1;let t=d(e.key);return--u,t+`:`+d(e.value)}};function p(e){let t={code:d(e),globals:Object.keys(c),fields:Object.keys(l)};return c={},l={},t}return p.functions=i,p.constants=r,p}function LL(e,t,n){return RN((n-e)/(t-e),0,1)}function RL(e){return Ze(e)||ArrayBuffer.isView(e)?e:null}function zL(e){return RL(e)||(P(e)?e:null)}var BL={clamp:RN,format(e,t){return sr(t)(e)},join(e,t){return RL(e).join(t)},indexof(e,t,n){return zL(e).indexOf(t,n)},lastindexof(e,t,n){return zL(e).lastIndexOf(t,n)},reverse(e){return RL(e).slice().reverse()},slice(e,t,n){return zL(e).slice(t,n)},mapHasKey(e,t){return e.has(t)},isArray:Ze,isBoolean:St,isDefined(e){return e!==void 0},isNumber:N,isObject:Qe,isRegExp:Tt,isString:P,isValid(e){return e!=null&&e===e},lerp:F,linearstep:LL,replace(e,t,n){return String(e).replace(t,n)},sort(e){return RL(e).slice().sort(gt)},center(e){let t=RL(e);return(t[0]+t[t.length-1])/2},span(e){return Et(e)},smoothstep:Ql};function VL(e,t){let n=PL(e);for(let e in BL)n[e]=`this.${e}`;for(let r of[`scale`,`invert`,`domain`,`range`])n[r]=n=>HL(e,t,r,n);return n}function HL(e,t,n,r){if(r.length===0)throw Error(`Scale helper "${n}" requires a literal channel name.`);if((n===`scale`||n===`invert`)&&r.length<2)throw Error(`Scale helper "${n}" requires a channel name and a value.`);let i=UL(r[0]);if(!i)throw Error(`Scale helper "${n}" requires a literal channel name.`);let a=t.resolveScaleResolution?.(i);if(!a)throw Error(`Unknown scale channel "${i}" in expression helper "${n}".`);let o=t.getScaleHelper(n,i,a),s=r.slice(1).map(t=>e(t)).join(`,`);return`${t.globalvar}["${o.codeName}"](${s})`}function UL(e){return e?.type===`Literal`&&typeof e.value==`string`?e.value:void 0}function WL(e,t){let n=n=>KL(t,e,n);if(e===`domain`)return()=>n(()=>t.getDomain());if(e===`range`)return()=>n(()=>t.getScale().range());if(e===`scale`)return e=>n(()=>t.getScale()(e));if(e===`invert`)return e=>n(()=>t.getScale().invert(e));throw Error(`Unknown scale helper: `+e)}var GL=new WeakSet;function KL(e,t,n){if(GL.has(e))throw Error(`Scale helper cycle detected while evaluating ${t}("${e.channel}").`);GL.add(e);try{return n()}finally{GL.delete(e)}}function qL(e,t,n,r){let i=new Set,a=()=>{for(let e of i)e()},o=()=>{e===`domain`?n.addEventListener(`domain`,a):(e===`range`||n.addEventListener(`domain`,a),n.addEventListener(`range`,a))},s=()=>{e===`domain`?n.removeEventListener(`domain`,a):(e===`range`||n.removeEventListener(`domain`,a),n.removeEventListener(`range`,a))};return{id:`scale:${t}:${r}`,name:`scale(${t})`,kind:`derived`,rank:0,get(){return n.getScale()},subscribe(e){let t=i.size===0;return i.add(e),t&&o(),()=>{i.delete(e)&&i.size===0&&s()}}}}function JL(e,t={},n={}){try{let r=new Map,i=new Map,a=1,o={...n,globalvar:`globalObject`,globalObject:t,getScaleHelper(e,n,o){let s=e+`:`+n,c=i.get(s);if(c)return c;let l=r.get(n);l||(l=qL(e,n,o,`__scale_dependency_`+ a++),r.set(n,l));let u=`__scale_helper_`+ a++,d={codeName:u,dependency:l};return i.set(s,d),t[u]=WL(e,o),d}},s=IL({forbidden:[],allowed:[`datum`,`undefined`],globalvar:`globalObject`,fieldvar:`datum`,functions:e=>VL(e,o)})(ML(e)),c=Function(`datum`,`globalObject`,`"use strict";
|
|
666
675
|
try {
|
|
667
676
|
return (${s.code});
|
|
668
677
|
} catch (e) {
|
|
669
678
|
throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
|
|
670
|
-
}`).bind(
|
|
679
|
+
}`).bind(BL),l=e=>c(e,t);return l.fields=s.fields,l.globals=s.globals,l.code=s.code,l.scaleDependencies=Array.from(r.values()),l}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}var YL=IL({forbidden:[],allowed:[`event`],globalvar:`globalObject`});function XL(e){try{let t=YL(ML(e));return Function(`event`,`globalObject`,`"use strict";
|
|
671
680
|
try {
|
|
672
681
|
return !!(${t.code});
|
|
673
682
|
} catch (e) {
|
|
674
683
|
throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
|
|
675
|
-
}`)}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}function bL(e,t={},n={}){return _L(e,t,n)}function xL(e,t,n={}){let r={},i=bL(e,r,n),a=new Map;for(let n of i.globals){if(a.has(n))continue;let i=t(n);if(!i)throw Error(`Unknown variable "`+n+`" in expression: `+e);a.set(n,i),Object.defineProperty(r,n,{enumerable:!0,get(){return i.get()}})}let o=new Set;return i.subscribe=e=>{let t=[];for(let n of a.values())t.push(n.subscribe(e));for(let n of i.scaleDependencies??[])t.push(n.subscribe(e));let n=!0,r=()=>{n&&(n=!1,o.delete(r),t.forEach(e=>e()))};return o.add(r),r},i.invalidate=()=>{for(let e of o)e();o.clear()},i.identifier=()=>i.code+`|`+Array.from(a.values()).map(e=>e.id).concat((i.scaleDependencies??[]).map(e=>e.id)).join(`,`),{expression:i,dependencies:Array.from(a.values()).concat(i.scaleDependencies??[])}}var SL=class{#e=new QP;#t=new ZP({lifecycleRegistry:this.#e});#n=new $P;createScope(e){let t=this.#e.createOwner(`scope`,e??`root`);return e?this.#n.createChildScope(t,e):this.#n.createRootScope(t)}disposeScope(e){let t=this.#n.getOwnerId(e);this.#e.disposeOwner(t),this.#n.clearScope(e)}addScopeDisposer(e,t){let n=this.#n.getOwnerId(e);this.#e.addDisposer(n,t)}registerBase(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`base`,n,r);return this.#n.register(e,t,a)}registerSelection(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`selection`,n,r);return this.#n.register(e,t,a)}registerDerived(e,t,n,r){let{expression:i,dependencies:a}=xL(n,t=>this.resolve(e,t),r),o=this.#n.getOwnerId(e),s=this.#t.computed(o,t,a,()=>i(null));return this.#n.register(e,t,s)}createExpression(e,t,n){let{expression:r}=xL(t,t=>this.resolve(e,t),n);return r}resolve(e,t){return this.#n.resolve(e,t)}runInTransaction(e){return this.#t.runInTransaction(e)}flushNow(){this.#t.flushNow()}whenPropagated(e){return this.#t.whenPropagated(e)}},CL=class{#e;#t;#n=new Map;#r=new Map;#i=new Map;#a;#o;#s=!1;constructor(e,t){this.#a=e??(()=>void 0),this.#o=t??(()=>void 0);let n=this.#a();n?(this.#e=n.#e,this.#t=this.#e.createScope(n.#t)):(this.#e=new SL,this.#t=this.#e.createScope())}registerParam(e){let t=e.name;if(_g(t),this.#i.has(t))throw Error(`Parameter "`+t+`" already registered in this scope.`);if(`value`in e&&`expr`in e)throw Error(`The parameter "${t}" must not have both value and expr properties!`);let n,r;if(e.push==`outer`){let e=this.findRuntimeForParam(t);if(!e)throw Error(`Parameter "${t}" not found in outer scope!`);let r=e.paramConfigs.get(t);if(!r)throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);if(`expr`in r||`select`in r)throw Error(`The outer parameter "${t}" must not have expr or select properties!`);n=n=>{e.setValue(t,n)},this.#n.set(t,n)}else if(`value`in e)r=vg(e,this),n=this.#c(t,r);else if(`expr`in e){let r=this.#e.registerDerived(this.#t,t,e.expr,{resolveScaleResolution:this.#o});this.#r.set(t,r),n=()=>{throw Error(`Cannot set derived parameter "`+t+`".`)}}else r=vg(e,this),n=this.#c(t,r);if(`select`in e){if(r??=vg(e,this),!this.#n.has(t)){let e=this.#e.registerSelection(this.#t,t,r);this.#r.set(t,e),this.#n.set(t,t=>{e.set(t),this.#e.flushNow()}),n=this.#n.get(t)}n(r)}return this.#i.set(t,e),n}allocateSetter(e,t,n=!1){if(_g(e),this.#n.has(e))throw Error(`Setter already allocated for parameter: `+e);let r=this.#e.registerBase(this.#t,e,t,{notify:!n});this.#r.set(e,r);let i=e=>{r.set(e),this.#e.flushNow()};return this.#n.set(e,i),i}setValue(e,t){_g(e);let n=this.#n.get(e);if(!n)throw Error(`Writable parameter not found in this scope: `+e);n(t)}getValue(e){return this.#r.get(e)?.get()}subscribe(e,t){_g(e);let n=this.findRuntimeForParam(e);if(!n)throw Error(`Parameter not found: `+e);let r=n.#r.get(e);if(!r)throw Error(`Parameter found without local reference: `+e);return r.subscribe(t)}findValue(e){return this.findRuntimeForParam(e)?.getValue(e)}get paramConfigs(){return this.#i}hasLocalParam(e){return _g(e),this.#r.has(e)}hasConfiguredParamInScopeChain(e){return _g(e),this.#i.has(e)?!0:this.#a()?.hasConfiguredParamInScopeChain(e)??!1}findRuntimeForParam(e){return this.#r.has(e)?this:this.#a()?.findRuntimeForParam(e)}createExpression(e){return this.#e.createExpression(this.#t,e,{resolveScaleResolution:this.#o})}watchExpression(e,t,n={}){let r=this.createExpression(e),i=r.subscribe(t);return(n.scopeOwned??!0)&&this.#e.addScopeDisposer(this.#t,i),n.registerDisposer?.(i),r}#c(e,t){let n=this.#e.registerBase(this.#t,e,t);this.#r.set(e,n);let r=e=>{n.set(e),this.#e.flushNow()};return this.#n.set(e,r),r}evaluateAndGet(e){return this.createExpression(e)()}runInTransaction(e){return this.#e.runInTransaction(e)}flushNow(){this.#e.flushNow()}whenPropagated(e){return this.#e.whenPropagated(e)}dispose(){this.#s||(this.#s=!0,this.#e.disposeScope(this.#t),this.#n.clear(),this.#r.clear(),this.#i.clear())}hasPointSelections(){for(let e of this.#i.values())if(gg(e)){let t=e.select;if(N(t)){if(t==`point`)return!0}else if(t.type==`point`)return!0}return!1}},wL=`VISIT_SKIP`,TL=`VISIT_STOP`,EL=e=>e,DL=class{spec;#e;#t;#n={};#r={};#i={};#a;#o;#s=!1;opacityFunction=EL;#c=[];#l=`none`;facetCoords=new gn([],JSON.stringify);constructor(e,t,n,r,i,a={}){if(!e)throw Error(`View spec must be defined!`);if(this.context=t,this.layoutParent=n,this.dataParent=r,this.#t=i,this.spec=e,r&&e.theme!==void 0)throw Error(`"theme" is only supported at the root specification. Use "config" and "style" for subtree customization.`);let o=r?r.getConfigScopes():[t.getBaseConfig()],s=e.config;if(this.#e=[...o,s].filter(e=>!!e),this.resolutions={scale:{},axis:{}},EN(this),this.options={blockEncodingInheritance:!1,layoutSizeParams:`own`,...a},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new CL(()=>this.dataParent?.paramRuntime,e=>this.getScaleResolution(e)),e.params)for(let t of e.params)this.paramRuntime.registerParam(t);this.options.layoutSizeParams!==`inherit`&&(this.#a=this.#u(`width`),this.#o=this.#u(`height`))}#u(e){if(!(this.paramRuntime.hasLocalParam(e)||this.paramRuntime.hasConfiguredParamInScopeChain(e)))return this.paramRuntime.allocateSetter(e,0)}get name(){return this.spec.name??this.#t}get explicitName(){return this.spec.name}get defaultName(){return this.#t}getConfig(){return FN(this.#e)}getCursorSpec(){return this.spec.cursor}getCursor(){let e=this.getCursorSpec();return R(e)?this.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();R(n)&&this.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}getConfigScopes(){return this.#e.slice()}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache(`size/padding`,()=>IP.createFromConfig(this.spec.padding))}getOverhang(){return IP.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache(`size/size`,()=>this.isConfiguredVisible()?new kP(this.#d(`width`),this.#d(`height`)):jP)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return jP;let e=this.getSize();return new kP(this.#d(`viewportWidth`)??e.width,this.#d(`viewportHeight`)??e.height)}#d(e){let t=this.spec[e],n=ML(t),r=e==`viewportWidth`||e==`viewportHeight`;if(n){if(r)throw new AN(`Cannot use step-based size with "${e}"!`,this);let n=t.step,i=this.getScaleResolution(e==`width`?`x`:`y`)?.getScale();if(i){let e;if(bm(i.type))e=i.domain().length;else if([`locus`,`index`].includes(i.type)){let t=i.domain();e=Ql(t)-t[0]}else throw new AN(`Cannot use step-based size with "${i.type}" scale!`,this);let t=i;return e=Rp(e,t.paddingInner(),t.paddingOuter()),{px:e*n,grow:0}}else throw new AN(`Cannot use step-based size with "${e}"!`,this)}else return(t&&FP(t))??(r?void 0:{px:0,grow:1})}registerStepSizeInvalidation(){this.#f(`width`,`x`),this.#f(`height`,`y`)}#f(e,t){let n=this.spec[e];if(!ML(n))return;let r=this.getScaleResolution(t);if(!r)throw new AN(`Cannot use 'step' size without a scale!`,this);let i=()=>this.invalidateSizeCache();r.addEventListener(`domain`,i),this.registerDisposer(()=>r.removeEventListener(`domain`,i))}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(e=>e.isConfiguredVisible())}isDomainInert(){if(this.spec.domainInert)return!0;let e=this.dataParent;return e?e.isDomainInert():!1}getDataInitializationState(){return this.#l}_setDataInitializationState(e){this.#l=e}isDataInitialized(){return this.#l===`ready`}getEffectiveOpacity(){return this.opacityFunction(this.layoutParent?.getEffectiveOpacity()??1)}getPathString(){return this.getLayoutAncestors().map(e=>e.name).reverse().join(`/`)}#p(e){let t=[],n=this;do t.push(n),n=n[e];while(n);return t}getLayoutAncestors(){return this.#p(`layoutParent`)}getDataAncestors(){return this.#p(`dataParent`)}handleBroadcast(e){for(let t of this.#n[e.type]||[])t(e)}_addBroadcastHandler(e,t){let n=this.#n[e];return n||(n=[],this.#n[e]=n),n.push(t),()=>{let n=this.#n[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}}handleInteraction(e,t){let n=t?this.#r:this.#i;for(let t of n[e.type]||[])t(e)}addInteractionListener(e,t,n){let r=n?this.#r:this.#i,i=r[e];i||(i=[],r[e]=i),i.push(t)}removeInteractionListener(e,t,n){let r=(n?this.#r:this.#i)?.[e];if(r){let e=r.indexOf(t);e>=0&&r.splice(e,1)}}visit(e){try{let t=e(this);if(e.postOrder&&e.postOrder(this),t!==`VISIT_STOP`)return t}catch(e){throw e.view=this,e}}getDescendants(){let e=[];return this.visit(t=>{e.push(t)}),e}dispose(){for(let e of this.#c)e();this.#c.length=0;let e=this.flowHandle;e?.collector&&(this.context.dataFlow.pruneCollectorBranch(e.collector),this.context.dataFlow.removeCollector(e.collector)),e?.dataSource&&e.dataSource.view===this&&!e.dataSource.identifier&&this.context.dataFlow.removeDataSource(e.dataSource),this.paramRuntime.dispose(),this.context.dataFlow.loadingStatusRegistry.delete(this),this.flowHandle=void 0}registerDisposer(e){this.#c.push(e)}disposeSubtree(){let e=()=>void 0;e.postOrder=e=>{e.dispose()},this.visit(e)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===EL)&&(this.opacityFunction=kL(this))}onBeforeRender(){this.#s||=!0}hasRendered(){return this.#s}render(e,t,n={}){n.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(n.facetId,n.clipRect?t.intersect(n.clipRect):t),this.#a?.(t.width),this.#o?.(t.height)}getEncoding(){let e=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},t=this.spec.encoding||{},n={...e,...t};for(let[e,t]of Object.entries(n))t===null&&delete n[e];return n}getFacetAccessor(e){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(e){let t=this.getEncoding().sample;return Ah(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){let t=Jh(e);return this.getDataAncestors().map(e=>e.resolutions.scale[t]).find(e=>e)}getAxisResolution(e){let t=Jh(e);return this.getDataAncestors().map(e=>e.resolutions.axis[t]).find(e=>e)}getConfiguredResolution(e,t){return this.spec.resolve?.[t]?.[e]}getConfiguredOrDefaultResolution(e,t){return this.getConfiguredResolution(e,t)??this.getConfiguredResolution(`default`,t)??this.getDefaultResolution(e,t)}getDefaultResolution(e,t){return`independent`}getBaseUrl(){return zP(()=>this.dataParent?.getBaseUrl(),oh(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){let e=this.spec.title;if(e)return N(e)?e:R(e.text)?this.paramRuntime.evaluateAndGet(e.text.expr):e.text}_cache(e,t){return CN(this,e,t)}_invalidateCacheByPrefix(e,t=`self`){switch(t){case`self`:TN(this,e);break;case`ancestors`:for(let t of this.getLayoutAncestors())TN(t,e);break;case`progeny`:this.visit(t=>TN(t,e));break;default:}}invalidateSizeCache(){TN(this,`size`),this._invalidateCacheByPrefix(`size`,`ancestors`)}propagateInteraction(e){}};function OL(e){return`unitsPerPixel`in e}function kL(e){let t=`opacity`in e.spec?e.spec.opacity:void 0;if(t!==void 0){if(M(t))return e=>e*t;if(OL(t)){let n=t=>{let n=e.getScaleResolution(t),r=n?.getScale();if([`linear`,`index`,`locus`].includes(r?.type))return{scale:r,scaleResolution:n}},r=jL(t.values,`opacity.values`,e);if(!Qe(t.unitsPerPixel))throw new AN(`"opacity.unitsPerPixel" must be an array.`,e);let i=()=>1,a=[],o=()=>{let t=AL(jL(a.map(e=>e()),`opacity.unitsPerPixel`,e),r,e),n=Yf().domain(t.unitsPerPixel).range(t.values).clamp(!0);i=e=>n(e)};a=t.unitsPerPixel.map(t=>{if(R(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>{o(),e.context.animator.requestRender()});return()=>n(null)}else return()=>t}),o();let s=e=>{let t=e.scaleResolution.getAxisLength()||1e3;return Dt(e.scale.domain())/t},c;if(t.channel===`auto`){let t=n(`x`),r=n(`y`);if(t&&r)c=()=>(s(t)+s(r))/2;else if(t)c=()=>s(t);else if(r)c=()=>s(r);else throw new AN(`Cannot find a resolved quantitative x or y scale for dynamic opacity!`,e)}else{let r=t.channel?n(t.channel):n(`x`)??n(`y`);if(!r)throw new AN(`Cannot find a resolved quantitative scale for dynamic opacity!`,e);c=()=>s(r)}return e=>i(c())*e}else if(R(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>e.context.animator.requestRender());return e=>n(null)*e}}return e=>e}function AL(e,t,n){if(!e.length)throw new AN(`"opacity.unitsPerPixel" must contain at least one stop.`,n);if(e.length!==t.length)throw new AN(`"opacity.unitsPerPixel" and "opacity.values" must have the same length.`,n);e.forEach((e,t)=>{if(e<=0)throw new AN(`Invalid opacity.unitsPerPixel value at index `+t+`. Stop values must be positive.`,n)});let r=e.map((e,n)=>({stop:e,value:t[n]}));r.sort((e,t)=>t.stop-e.stop);let i=r.map(e=>e.stop),a=r.map(e=>e.value);for(let t=1;t<e.length;t++)if(i[t-1]<=i[t])throw new AN(`"opacity.unitsPerPixel" must be strictly decreasing.`,n);return{unitsPerPixel:i,values:a}}function jL(e,t,n){if(!Qe(e))throw new AN(`"`+t+`" must evaluate to an array.`,n);return e.map((e,r)=>{if(!M(e)||!Number.isFinite(e))throw new AN(`Invalid `+t+` value at index `+r+`. Expected a finite number.`,n);return e})}var ML=e=>!!e?.step;function NL(e){return PL(e?.search,`search`)}function PL(e,t){if(!e)return;let n=Array.isArray(e)?e:[e];if(n.length===0)throw Error(`The `+t+` channel array must not be empty.`);let r=[];for(let e of n){if(!e||typeof e!=`object`||!(`field`in e))throw Error(`The `+t+` channel must be a field definition or an array of field definitions.`);let n=e.field;if(typeof n!=`string`)throw Error(`The `+t+` channel field definition must include a string field name.`);r.push(n)}return r}var FL=1;function IL(){let e=[0,1],t=[0,1],n=1,r=1,i=0,a=0,o=.5,s=0,c=i=>(i+o-e[0])/n*r+t[0];return c.invert=i=>(i-t[0])/r*n+e[0]-o,c.domain=function(t){if(arguments.length){e=hn(t),n=e[1]-e[0];let r=e[0]===0&&e[0]===0;if(n<FL&&!r){n=FL;let t=(e[0]+e[1])/2;e[0]=t-n/2,e[1]=t+n/2}return c}else return e.slice()},c.range=function(e){return arguments.length?(t=[...e],r=t[1]-t[0],c):t},c.numberingOffset=function(e){return arguments.length?(s=e,c):s},c.padding=function(e){return arguments.length?(a=e,i=Math.min(1,e),c):i},c.paddingInner=function(e){return arguments.length?(i=Math.min(1,e),c):i},c.paddingOuter=function(e){return arguments.length?(a=e,c):a},c.align=function(e){return arguments.length?(o=Math.max(0,Math.min(1,e)),c):o},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=t=>{let r=c.align(),i=c.numberingOffset();return jn(e[0]-r+i,e[1]-r+i,Math.min(t,Math.ceil(n))).filter(Number.isInteger).map(e=>e-s)},c.tickFormat=(t,r)=>{if(r)throw Error(`Index scale's tickFormat does not support a specifier!`);let i=Nn(e[0],e[1],Math.min(t,Math.ceil(n)))<1e5?cr(`,`):cr(`.3s`);return e=>i(e+s)},c.copy=()=>IL().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),c}var LL=cr(`,d`);function RL(e){return e.chrom+`:`+LL(Math.floor(e.pos+1))}function zL(e,t){return e.chrom+`:`+LL(Math.floor(e.pos+1))+`-`+(e.chrom==t.chrom?``:t.chrom+`:`)+LL(Math.ceil(t.pos))}var BL={dm6:`chr3R 32079331
|
|
684
|
+
}`)}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}function ZL(e,t={},n={}){return JL(e,t,n)}function QL(e,t,n={}){let r={},i=ZL(e,r,n),a=new Map;for(let n of i.globals){if(a.has(n))continue;let i=t(n);if(!i)throw Error(`Unknown variable "`+n+`" in expression: `+e);a.set(n,i),Object.defineProperty(r,n,{enumerable:!0,get(){return i.get()}})}let o=new Set;return i.subscribe=e=>{let t=[];for(let n of a.values())t.push(n.subscribe(e));for(let n of i.scaleDependencies??[])t.push(n.subscribe(e));let n=!0,r=()=>{n&&(n=!1,o.delete(r),t.forEach(e=>e()))};return o.add(r),r},i.invalidate=()=>{for(let e of o)e();o.clear()},i.identifier=()=>i.code+`|`+Array.from(a.values()).map(e=>e.id).concat((i.scaleDependencies??[]).map(e=>e.id)).join(`,`),{expression:i,dependencies:Array.from(a.values()).concat(i.scaleDependencies??[])}}var $L=class{#e=new kF;#t=new OF({lifecycleRegistry:this.#e});#n=new AF;createScope(e){let t=this.#e.createOwner(`scope`,e??`root`);return e?this.#n.createChildScope(t,e):this.#n.createRootScope(t)}disposeScope(e){let t=this.#n.getOwnerId(e);this.#e.disposeOwner(t),this.#n.clearScope(e)}addScopeDisposer(e,t){let n=this.#n.getOwnerId(e);this.#e.addDisposer(n,t)}registerBase(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`base`,n,r);return this.#n.register(e,t,a)}registerSelection(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`selection`,n,r);return this.#n.register(e,t,a)}registerDerived(e,t,n,r){let{expression:i,dependencies:a}=QL(n,t=>this.resolve(e,t),r),o=this.#n.getOwnerId(e),s=this.#t.computed(o,t,a,()=>i(null));return this.#n.register(e,t,s)}createExpression(e,t,n){let{expression:r}=QL(t,t=>this.resolve(e,t),n);return r}resolve(e,t){return this.#n.resolve(e,t)}runInTransaction(e){return this.#t.runInTransaction(e)}flushNow(){this.#t.flushNow()}whenPropagated(e){return this.#t.whenPropagated(e)}},eR=class{#e;#t;#n=new Map;#r=new Map;#i=new Map;#a;#o;#s=!1;constructor(e,t){this.#a=e??(()=>void 0),this.#o=t??(()=>void 0);let n=this.#a();n?(this.#e=n.#e,this.#t=this.#e.createScope(n.#t)):(this.#e=new $L,this.#t=this.#e.createScope())}registerParam(e){let t=e.name;if(gg(t),this.#i.has(t))throw Error(`Parameter "`+t+`" already registered in this scope.`);if(`value`in e&&`expr`in e)throw Error(`The parameter "${t}" must not have both value and expr properties!`);let n,r;if(e.push==`outer`){let e=this.findRuntimeForParam(t);if(!e)throw Error(`Parameter "${t}" not found in outer scope!`);let r=e.paramConfigs.get(t);if(!r)throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);if(`expr`in r||`select`in r)throw Error(`The outer parameter "${t}" must not have expr or select properties!`);n=n=>{e.setValue(t,n)},this.#n.set(t,n)}else if(`value`in e)r=_g(e,this),n=this.#c(t,r);else if(`expr`in e){let r=this.#e.registerDerived(this.#t,t,e.expr,{resolveScaleResolution:this.#o});this.#r.set(t,r),n=()=>{throw Error(`Cannot set derived parameter "`+t+`".`)}}else r=_g(e,this),n=this.#c(t,r);if(`select`in e){if(r??=_g(e,this),!this.#n.has(t)){let e=this.#e.registerSelection(this.#t,t,r);this.#r.set(t,e),this.#n.set(t,t=>{e.set(t),this.#e.flushNow()}),n=this.#n.get(t)}n(r)}return this.#i.set(t,e),n}allocateSetter(e,t,n=!1){if(gg(e),this.#n.has(e))throw Error(`Setter already allocated for parameter: `+e);let r=this.#e.registerBase(this.#t,e,t,{notify:!n});this.#r.set(e,r);let i=e=>{r.set(e),this.#e.flushNow()};return this.#n.set(e,i),i}setValue(e,t){gg(e);let n=this.#n.get(e);if(!n)throw Error(`Writable parameter not found in this scope: `+e);n(t)}getValue(e){return this.#r.get(e)?.get()}subscribe(e,t){gg(e);let n=this.findRuntimeForParam(e);if(!n)throw Error(`Parameter not found: `+e);let r=n.#r.get(e);if(!r)throw Error(`Parameter found without local reference: `+e);return r.subscribe(t)}findValue(e){return this.findRuntimeForParam(e)?.getValue(e)}get paramConfigs(){return this.#i}hasLocalParam(e){return gg(e),this.#r.has(e)}hasConfiguredParamInScopeChain(e){return gg(e),this.#i.has(e)?!0:this.#a()?.hasConfiguredParamInScopeChain(e)??!1}findRuntimeForParam(e){return this.#r.has(e)?this:this.#a()?.findRuntimeForParam(e)}createExpression(e){return this.#e.createExpression(this.#t,e,{resolveScaleResolution:this.#o})}watchExpression(e,t,n={}){let r=this.createExpression(e),i=r.subscribe(t);return(n.scopeOwned??!0)&&this.#e.addScopeDisposer(this.#t,i),n.registerDisposer?.(i),r}#c(e,t){let n=this.#e.registerBase(this.#t,e,t);this.#r.set(e,n);let r=e=>{n.set(e),this.#e.flushNow()};return this.#n.set(e,r),r}evaluateAndGet(e){return this.createExpression(e)()}runInTransaction(e){return this.#e.runInTransaction(e)}flushNow(){this.#e.flushNow()}whenPropagated(e){return this.#e.whenPropagated(e)}dispose(){this.#s||(this.#s=!0,this.#e.disposeScope(this.#t),this.#n.clear(),this.#r.clear(),this.#i.clear())}hasPointSelections(){for(let e of this.#i.values())if(hg(e)){let t=e.select;if(P(t)){if(t==`point`)return!0}else if(t.type==`point`)return!0}return!1}},tR=`VISIT_SKIP`,nR=`VISIT_STOP`,rR=e=>e,iR=class{spec;#e;#t;#n={};#r={};#i={};#a;#o;#s=!1;opacityFunction=rR;#c=[];#l=`none`;facetCoords=new hn([],JSON.stringify);constructor(e,t,n,r,i,a={}){if(!e)throw Error(`View spec must be defined!`);if(this.context=t,this.layoutParent=n,this.dataParent=r,this.#t=i,this.spec=e,r&&e.theme!==void 0)throw Error(`"theme" is only supported at the root specification. Use "config" and "style" for subtree customization.`);let o=r?r.getConfigScopes():[t.getBaseConfig()],s=e.config;if(this.#e=[...o,s].filter(e=>!!e),this.resolutions={scale:{},axis:{}},rP(this),this.options={blockEncodingInheritance:!1,layoutSizeParams:`own`,...a},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new eR(()=>this.dataParent?.paramRuntime,e=>this.getScaleResolution(e)),e.params)for(let t of e.params)this.paramRuntime.registerParam(t);this.options.layoutSizeParams!==`inherit`&&(this.#a=this.#u(`width`),this.#o=this.#u(`height`))}#u(e){if(!(this.paramRuntime.hasLocalParam(e)||this.paramRuntime.hasConfiguredParamInScopeChain(e)))return this.paramRuntime.allocateSetter(e,0)}get name(){return this.spec.name??this.#t}get explicitName(){return this.spec.name}get defaultName(){return this.#t}getConfig(){return fP(this.#e)}getCursorSpec(){return this.spec.cursor}getCursor(){let e=this.getCursorSpec();return z(e)?this.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();z(n)&&this.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}getConfigScopes(){return this.#e.slice()}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache(`size/padding`,()=>pF.createFromConfig(this.spec.padding))}getOverhang(){return pF.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache(`size/size`,()=>this.isConfiguredVisible()?new oF(this.#d(`width`),this.#d(`height`)):cF)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return cF;let e=this.getSize();return new oF(this.#d(`viewportWidth`)??e.width,this.#d(`viewportHeight`)??e.height)}#d(e){let t=this.spec[e],n=lR(t),r=e==`viewportWidth`||e==`viewportHeight`;if(n){if(r)throw new sP(`Cannot use step-based size with "${e}"!`,this);let n=t.step,i=this.getScaleResolution(e==`width`?`x`:`y`)?.getScale();if(i){let e;if(ym(i.type))e=i.domain().length;else if([`locus`,`index`].includes(i.type)){let t=i.domain();e=Zl(t)-t[0]}else throw new sP(`Cannot use step-based size with "${i.type}" scale!`,this);let t=i;return e=Lp(e,t.paddingInner(),t.paddingOuter()),{px:e*n,grow:0}}else throw new sP(`Cannot use step-based size with "${e}"!`,this)}else return(t&&fF(t))??(r?void 0:{px:0,grow:1})}registerStepSizeInvalidation(){this.#f(`width`,`x`),this.#f(`height`,`y`)}#f(e,t){let n=this.spec[e];if(!lR(n))return;let r=this.getScaleResolution(t);if(!r)throw new sP(`Cannot use 'step' size without a scale!`,this);let i=()=>this.invalidateSizeCache();r.addEventListener(`domain`,i),this.registerDisposer(()=>r.removeEventListener(`domain`,i))}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(e=>e.isConfiguredVisible())}isDomainInert(){if(this.spec.domainInert)return!0;let e=this.dataParent;return e?e.isDomainInert():!1}getDataInitializationState(){return this.#l}_setDataInitializationState(e){this.#l=e}isDataInitialized(){return this.#l===`ready`}getEffectiveOpacity(){return this.opacityFunction(this.layoutParent?.getEffectiveOpacity()??1)}getPathString(){return this.getLayoutAncestors().map(e=>e.name).reverse().join(`/`)}#p(e){let t=[],n=this;do t.push(n),n=n[e];while(n);return t}getLayoutAncestors(){return this.#p(`layoutParent`)}getDataAncestors(){return this.#p(`dataParent`)}handleBroadcast(e){for(let t of this.#n[e.type]||[])t(e)}_addBroadcastHandler(e,t){let n=this.#n[e];return n||(n=[],this.#n[e]=n),n.push(t),()=>{let n=this.#n[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}}handleInteraction(e,t){let n=t?this.#r:this.#i;for(let t of n[e.type]||[])t(e)}addInteractionListener(e,t,n){let r=n?this.#r:this.#i,i=r[e];i||(i=[],r[e]=i),i.push(t)}removeInteractionListener(e,t,n){let r=(n?this.#r:this.#i)?.[e];if(r){let e=r.indexOf(t);e>=0&&r.splice(e,1)}}visit(e){try{let t=e(this);if(e.postOrder&&e.postOrder(this),t!==`VISIT_STOP`)return t}catch(e){throw e.view=this,e}}getDescendants(){let e=[];return this.visit(t=>{e.push(t)}),e}dispose(){for(let e of this.#c)e();this.#c.length=0;let e=this.flowHandle;e?.collector&&(this.context.dataFlow.pruneCollectorBranch(e.collector),this.context.dataFlow.removeCollector(e.collector)),e?.dataSource&&e.dataSource.view===this&&!e.dataSource.identifier&&this.context.dataFlow.removeDataSource(e.dataSource),this.paramRuntime.dispose(),this.context.dataFlow.loadingStatusRegistry.delete(this),this.flowHandle=void 0}registerDisposer(e){this.#c.push(e)}disposeSubtree(){let e=()=>void 0;e.postOrder=e=>{e.dispose()},this.visit(e)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===rR)&&(this.opacityFunction=oR(this))}onBeforeRender(){this.#s||=!0}hasRendered(){return this.#s}render(e,t,n={}){n.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(n.facetId,n.clipRect?t.intersect(n.clipRect):t),this.#a?.(t.width),this.#o?.(t.height)}getEncoding(){let e=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},t=this.spec.encoding||{},n={...e,...t};for(let[e,t]of Object.entries(n))t===null&&delete n[e];return n}getFacetAccessor(e){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(e){let t=this.getEncoding().sample;return kh(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){let t=qh(e);return this.getDataAncestors().map(e=>e.resolutions.scale[t]).find(e=>e)}getAxisResolution(e){let t=qh(e);return this.getDataAncestors().map(e=>e.resolutions.axis[t]).find(e=>e)}getConfiguredResolution(e,t){return this.spec.resolve?.[t]?.[e]}getConfiguredOrDefaultResolution(e,t){return this.getConfiguredResolution(e,t)??this.getConfiguredResolution(`default`,t)??this.getDefaultResolution(e,t)}getDefaultResolution(e,t){return`independent`}getBaseUrl(){return gF(()=>this.dataParent?.getBaseUrl(),ah(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){let e=this.spec.title;if(e)return P(e)?e:z(e.text)?this.paramRuntime.evaluateAndGet(e.text.expr):e.text}_cache(e,t){return eP(this,e,t)}_invalidateCacheByPrefix(e,t=`self`){switch(t){case`self`:nP(this,e);break;case`ancestors`:for(let t of this.getLayoutAncestors())nP(t,e);break;case`progeny`:this.visit(t=>nP(t,e));break;default:}}invalidateSizeCache(){nP(this,`size`),this._invalidateCacheByPrefix(`size`,`ancestors`)}propagateInteraction(e){}};function aR(e){return`unitsPerPixel`in e}function oR(e){let t=`opacity`in e.spec?e.spec.opacity:void 0;if(t!==void 0){if(N(t))return e=>e*t;if(aR(t)){let n=t=>{let n=e.getScaleResolution(t),r=n?.getScale();if([`linear`,`index`,`locus`].includes(r?.type))return{scale:r,scaleResolution:n}},r=cR(t.values,`opacity.values`,e);if(!Ze(t.unitsPerPixel))throw new sP(`"opacity.unitsPerPixel" must be an array.`,e);let i=()=>1,a=[],o=()=>{let t=sR(cR(a.map(e=>e()),`opacity.unitsPerPixel`,e),r,e),n=Jf().domain(t.unitsPerPixel).range(t.values).clamp(!0);i=e=>n(e)};a=t.unitsPerPixel.map(t=>{if(z(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>{o(),e.context.animator.requestRender()});return()=>n(null)}else return()=>t}),o();let s=e=>{let t=e.scaleResolution.getAxisLength()||1e3;return Et(e.scale.domain())/t},c;if(t.channel===`auto`){let t=n(`x`),r=n(`y`);if(t&&r)c=()=>(s(t)+s(r))/2;else if(t)c=()=>s(t);else if(r)c=()=>s(r);else throw new sP(`Cannot find a resolved quantitative x or y scale for dynamic opacity!`,e)}else{let r=t.channel?n(t.channel):n(`x`)??n(`y`);if(!r)throw new sP(`Cannot find a resolved quantitative scale for dynamic opacity!`,e);c=()=>s(r)}return e=>i(c())*e}else if(z(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>e.context.animator.requestRender());return e=>n(null)*e}}return e=>e}function sR(e,t,n){if(!e.length)throw new sP(`"opacity.unitsPerPixel" must contain at least one stop.`,n);if(e.length!==t.length)throw new sP(`"opacity.unitsPerPixel" and "opacity.values" must have the same length.`,n);e.forEach((e,t)=>{if(e<=0)throw new sP(`Invalid opacity.unitsPerPixel value at index `+t+`. Stop values must be positive.`,n)});let r=e.map((e,n)=>({stop:e,value:t[n]}));r.sort((e,t)=>t.stop-e.stop);let i=r.map(e=>e.stop),a=r.map(e=>e.value);for(let t=1;t<e.length;t++)if(i[t-1]<=i[t])throw new sP(`"opacity.unitsPerPixel" must be strictly decreasing.`,n);return{unitsPerPixel:i,values:a}}function cR(e,t,n){if(!Ze(e))throw new sP(`"`+t+`" must evaluate to an array.`,n);return e.map((e,r)=>{if(!N(e)||!Number.isFinite(e))throw new sP(`Invalid `+t+` value at index `+r+`. Expected a finite number.`,n);return e})}var lR=e=>!!e?.step;function uR(e){return dR(e?.search,`search`)}function dR(e,t){if(!e)return;let n=Array.isArray(e)?e:[e];if(n.length===0)throw Error(`The `+t+` channel array must not be empty.`);let r=[];for(let e of n){if(!e||typeof e!=`object`||!(`field`in e))throw Error(`The `+t+` channel must be a field definition or an array of field definitions.`);let n=e.field;if(typeof n!=`string`)throw Error(`The `+t+` channel field definition must include a string field name.`);r.push(n)}return r}var fR=1;function pR(){let e=[0,1],t=[0,1],n=1,r=1,i=0,a=0,o=.5,s=0,c=i=>(i+o-e[0])/n*r+t[0];return c.invert=i=>(i-t[0])/r*n+e[0]-o,c.domain=function(t){if(arguments.length){e=mn(t),n=e[1]-e[0];let r=e[0]===0&&e[0]===0;if(n<fR&&!r){n=fR;let t=(e[0]+e[1])/2;e[0]=t-n/2,e[1]=t+n/2}return c}else return e.slice()},c.range=function(e){return arguments.length?(t=[...e],r=t[1]-t[0],c):t},c.numberingOffset=function(e){return arguments.length?(s=e,c):s},c.padding=function(e){return arguments.length?(a=e,i=Math.min(1,e),c):i},c.paddingInner=function(e){return arguments.length?(i=Math.min(1,e),c):i},c.paddingOuter=function(e){return arguments.length?(a=e,c):a},c.align=function(e){return arguments.length?(o=Math.max(0,Math.min(1,e)),c):o},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=t=>{let r=c.align(),i=c.numberingOffset();return An(e[0]-r+i,e[1]-r+i,Math.min(t,Math.ceil(n))).filter(Number.isInteger).map(e=>e-s)},c.tickFormat=(t,r)=>{if(r)throw Error(`Index scale's tickFormat does not support a specifier!`);let i=Mn(e[0],e[1],Math.min(t,Math.ceil(n)))<1e5?sr(`,`):sr(`.3s`);return e=>i(e+s)},c.copy=()=>pR().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),c}var mR=sr(`,d`);function hR(e){return e.chrom+`:`+mR(Math.floor(e.pos+1))}function gR(e,t){return e.chrom+`:`+mR(Math.floor(e.pos+1))+`-`+(e.chrom==t.chrom?``:t.chrom+`:`)+mR(Math.ceil(t.pos))}var _R={dm6:`chr3R 32079331
|
|
676
685
|
chr3L 28110227
|
|
677
686
|
chr2R 25286936
|
|
678
687
|
chrX 23542271
|
|
@@ -793,40 +802,40 @@ chr18 90702639
|
|
|
793
802
|
chr19 61431566
|
|
794
803
|
chrX 171031299
|
|
795
804
|
chrY 91744698
|
|
796
|
-
chrM 16299`};function
|
|
797
|
-
`).map(e=>{let t=e.split(` `);return{name:t[0],size:parseInt(t[1])}})}var HL=class{constructor(e){if(this.config={name:`custom`,...e},`baseUrl`in e)throw Error("The `baseUrl` property in genome config has been removed in GenomeSpy v0.52.0. Use `url` instead. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.");if(!qL(e))throw Error(`Not a genome configuration: `+JSON.stringify(e));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,YL(this.config))this.setChromSizes(this.config.contigs);else if(!JL(this.config)){let e=VL(this.config.name);if(e)this.setChromSizes(e);else throw Error(`Unknown genome: ${this.config.name}. Please provide contigs or a URL. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.`)}}get name(){return this.config.name}async load(e){if(JL(this.config))try{let t=zP(e,this.config.url),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);this.setChromSizes(UL(await n.text()))}catch(e){throw Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`,{cause:e})}}hasChrPrefix(){return this.chromosomes.some(e=>e.name.startsWith(`chr`))}setChromSizes(e){this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map;let t=0;this.startByIndex=[0];for(let n=0;n<e.length;n++){this.startByIndex.push(t);let r=e[n].size,i={...e[n],continuousStart:t,continuousEnd:t+r,continuousInterval:[t,t+r],index:n,number:n+1,odd:!(n&1)};this.chromosomes.push(i);let a=i.name.replace(/^chr/i,``);for(let e of[`chr`+a,`CHR`+a,`Chr`+a,i.number,``+i.number,a,i.name])this.cumulativeChromPositions.set(e,t),this.chromosomesByName.set(e,i);t+=i.size}this.totalSize=t}getExtent(){return[0,this.totalSize]}toContinuous(e,t){let n=this.cumulativeChromPositions.get(e);if(n===void 0)throw Error(`Unknown chromosome/contig: `+e);return n+ +t}toChromosome(e){if(e>this.totalSize)return;e=Math.floor(e);let t=fn(this.startByIndex,e)-1;if(t>0&&t<=this.chromosomes.length)return this.chromosomes[t-1]}toChromosomal(e){let t=this.toChromosome(e);if(t)return{chrom:t.name,pos:Math.floor(e)-t.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return zL(...this.toChromosomalInterval(e))}formatLocus(e){let t=this.toChromosomal(e);if(t)return RL(t)}toChromosomalInterval(e){let t=this.toChromosomal(e[0]+.5),n=this.toChromosomal(e[1]-.5);return n.pos+=1,[t,n]}toContinuousInterval(e){let[t,n]=e;return n||=t,[this.toContinuous(t.chrom,t.pos??0),this.toContinuous(n.chrom,n.pos??this.chromosomesByName.get(n.chrom)?.size)]}toDiscreteChromosomeIntervals(e){let t=e[0],n=e[1],r=[];if(t.chrom===n.chrom)r.push({chrom:t.chrom,startPos:t.pos,endPos:n.pos});else{let e=this.chromosomes.findIndex(e=>e.name===t.chrom),i=this.chromosomes.findIndex(e=>e.name===n.chrom);r.push({chrom:t.chrom,startPos:t.pos,endPos:this.chromosomes[e].size});for(let t=e+1;t<i;t++)r.push({chrom:this.chromosomes[t].name,startPos:0,endPos:this.chromosomes[t].size});r.push({chrom:n.chrom,startPos:0,endPos:n.pos})}return r}continuousToDiscreteChromosomeIntervals(e){return this.toDiscreteChromosomeIntervals([this.toChromosomal(e[0]),this.toChromosomal(e[1])])}parseInterval(e){let t=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(t){let e=t[1];if(t.slice(2).every(e=>e===void 0)){let t=this.getChromosome(e);return t?[t.continuousStart,t.continuousEnd]:void 0}let n=t[3]||e,r=parseInt(t[2].replace(/,/g,``)),i=t[4]===void 0?r:parseInt(t[4].replace(/,/g,``));return[this.toContinuous(e,r-1),this.toContinuous(n,i)]}}};function UL(e){return qt(e).map(([e,t])=>({name:e,size:parseInt(t)}))}function WL(e){return $e(e)&&`chrom`in e}function GL(e){return e.every(WL)}function KL(e){return GL(e)&&(e[1]??e[0]).pos!==void 0}function qL(e){return $e(e)&&(`name`in e||JL(e)||YL(e))}function JL(e){return qL(e)&&`url`in e}function YL(e){return qL(e)&&`contigs`in e}var XL=1e6,ZL=.65;function QL(){let e=IL().numberingOffset(1),t;e.genome=function(n){return arguments.length?(t=n,e):t},e.ticks=n=>{if(!t)return[];let r=e.domain(),i=r[1]-r[0],a=e.numberingOffset(),o=t.toChromosome(Math.max(r[0],0)),s=t.toChromosome(Math.min(r[1],t.totalSize-1)),c=Math.max(1,Math.min(n??10,Math.floor(i))),l=Nn(r[0],r[1],c);l<XL&&(l=Nn(r[0],r[1],c*ZL)),l=Math.max(1,l);let u=[];for(let e=o.index;e<=s.index;e++){let n=t.chromosomes[e],i=Math.max(n.continuousStart+l,r[0]-(r[0]-n.continuousStart)%l),o=Math.min(n.continuousEnd-l/4,r[1]+1);for(let e=i;e<=o;e+=l){let t=e-a;t>=r[0]&&t<r[1]&&u.push(t)}}return u},e.tickFormat=(n,r)=>{if(!t)return;if(r)throw Error(`Locus scale's tickFormat does not support a specifier!`);let i=e.domain(),a=i[1]-i[0],o=e.numberingOffset(),s=Nn(i[0],i[1],Math.max(1,Math.min(n??10,Math.floor(a))))<XL?cr(`,`):cr(`.3s`),c=e=>e-t.toChromosome(e).continuousStart;return e=>s(c(e)+o)};let n=e.copy;return e.copy=()=>{let e=n(),r=t;return e.genome=function(t){return arguments.length?(r=t,e):r},e.genome(t)},e}function $L(e){return e.type==`locus`}function eR(e,t){let n=aR(e);return n?n.toChromosomal(t):t}function tR(e,t){let n=aR(e);return n&&WL(t)?n.toContinuous(t.chrom,t.pos):t}function nR(e,t){let n=aR(e);return n&&GL(t)?n.toContinuousInterval(t):t}function rR(e,t){let n=aR(e);return n?n.toChromosomalInterval(t):t}function iR(e){let t=aR(e);if(!t)throw Error(`No genome has been defined!`);return t.getExtent()}function aR(e){if(e&&`toChromosomal`in e)return e;if(e&&`genome`in e)return e.genome()}var oR=`locus`,sR=`index`,cR=5;function lR(e){let t=e.type;return!e.bins&&(t===`linear`||t===`pow`||t===`sqrt`)}function uR(e){return ym(e)&&![`sequential`,sR,oR].includes(e)}function dR(e){return e||{warn:(e,...t)=>console.warn(e,...t)}}var fR=Nt(`set.modified.clear.type.scheme.schemeExtent.schemeCount.domain.domainMin.domainMid.domainMax.domainRaw.domainImplicit.domainTransition.nice.zero.bins.range.rangeStep.round.reverse.interpolate.interpolateGamma.zoom.fp64.name`.split(`.`));function pR(e,t,n){n=dR(n);for(let r in e)if(!fR[r]){if(r===`padding`&&uR(t.type))continue;mt(t[r])?t[r](e[r]):n.warn(`Unsupported scale property: `+r)}let r=vR(t,e,n);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),CR(t,e,SR(t,e,r.count))}function mR(e,t){let n=!e.domain&&ym(e.type)?{...e,domain:[0,0]}:e,r=hR(n),i=I(r);if(!i)throw Error(`Unknown scale type: `+r);let a=i();return pR(n,a,t),a}function hR(e){var t=e.type,n=``,r;return t===`sequential`?Wp+`-`+Bp:(gR(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Wp+`-`:r===3?Gp+`-`:``),(n+t||`linear`).toLowerCase())}function gR(e){let t=e.type;return ym(t)&&t!==`time`&&t!==`utc`&&(e.scheme||e.range&&e.range.length&&e.range.every(N))}function _R(e){if(!e.copy)return e;let t=e.copy();return t.type==null&&e.type!=null&&(t.type=e.type),t}function vR(e,t,n){if(!e.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};n=dR(n);let r=_R(e);var i=yR(r,t.domainRaw,n);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===`ordinal`&&t.domainImplicit?nu:void 0,applyOrdinalUnknown:!1};var a=t.domain,o=r.type,s=t.zero||t.zero===void 0&&lR(r),c,l;return a?(uR(o)&&t.padding&&a[0]!==et(a)&&(a=bR(o,a,t.range,t.padding,t.exponent,t.constant)),(s||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(c=(a=a.slice()).length-1||1,s&&(a[0]>0&&(a[0]=0),a[c]<0&&(a[c]=0)),t.domainMin!=null&&(a[0]=t.domainMin),t.domainMax!=null&&(a[c]=t.domainMax),t.domainMid!=null&&(l=t.domainMid,(l<a[0]||l>a[c])&&n.warn(`Scale domainMid exceeds domain min or max.`,l),a.splice(c,0,l))),r.domain(xR(o,a,n)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Fm(r,t.nice)||null),{domain:r.domain(),count:a.length,ordinalUnknown:o===`ordinal`&&t.domainImplicit?nu:void 0,applyOrdinalUnknown:o===Yp}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function yR(e,t,n){return t?(e.domain(xR(e.type,t,n)),t.length):-1}function bR(e,t,n,r,i,a){n??=[0,1];var o=Math.abs(et(n)-n[0]),s=o/(o-2*r),c=e===`log`?ut(t,null,s):e===`sqrt`?dt(t,null,s,.5):e===`pow`?dt(t,null,s,i||1):e===`symlog`?ft(t,null,s,a||1):lt(t,null,s);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}function xR(e,t,n){return Sm(e)&&Math.abs(t.reduce(function(e,t){return e+(t<0?-1:t>0?1:0)},0))!==t.length&&n.warn(`Log scale domain includes zero: `+Ot(t)),t}function SR(e,t,n){let r=t.bins;if(r&&!Qe(r)){let t=(r.start==null||r.stop==null)&&e.domain(),n=r.start==null?t[0]:r.start,i=r.stop==null?et(t):r.stop,a=r.step;a||qe(`Scale bins parameter missing step property.`),r=Hn(n,i+a,a)}return r?e.bins=r:e.bins&&delete e.bins,e.type===`bin-ordinal`&&(r?!t.domain&&!t.domainRaw&&(e.domain(r),n=r.length):e.bins=e.domain()),n}function CR(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=wR(r,t,n);else if(t.scheme&&(a=TR(r,t,n),mt(a))){if(e.interpolator)return e.interpolator(a);qe(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&Cm(r))return e.interpolator(Tm(DR(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate(Dm(t.interpolate,t.interpolateGamma)):mt(e.round)?e.round(i):mt(e.rangeRound)&&e.interpolate(i?Yd:Kd),a&&e.range(DR(a,t.reverse))}function wR(e,t,n){e!==`band`&&e!==`point`&&qe(`Only band and point scales support rangeStep.`);var r=(t.paddingOuter==null?t.padding:t.paddingOuter)||0,i=e===`point`?1:(t.paddingInner==null?t.padding:t.paddingInner)||0;return[0,t.rangeStep*Rp(n,i,r)]}function TR(e,t,n){var r=t.schemeExtent,i,a;return Qe(t.scheme)?a=Tm(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),a=Pm(i),a||qe(`Unrecognized scheme name: ${t.scheme}`)),n=e===`threshold`?n+1:e===`bin-ordinal`?n-1:e===`quantile`||e===`quantize`?+t.schemeCount||cR:n,Cm(e)?ER(a,r,t.reverse):mt(a)?Em(ER(a,r),n):e===`ordinal`?a:a.slice(0,n)}function ER(e,t,n){return mt(e)&&(t||n)?wm(e,DR(t||[0,1],n)):e}function DR(e,t){return t?e.slice().reverse():e}var OR=class{#e;#t=new Set;#n;#r;#i;#a;#o=0;constructor({getParamRuntime:e,onRangeChange:t,onDomainChange:n,getGenomeStore:r}){this.#n=e,this.#r=t,this.#i=n,this.#a=r}get scale(){return this.#e}getLocusGenome(e){let t=this.#a?.();if(!t)throw Error(`No genome has been defined!`);return e?t.getGenome(e):t.getGenome()}createScale(e){let t=mR({...this.#c(e),range:void 0});return t.props=e,`unknown`in t&&t.unknown(null),this.#e=t,this.#s(e),this.#l(),this.#u(),this.#e}#s(e){let t=this.#e;!t||!$L(t)||t.genome(this.getLocusGenome(e.assembly))}reconfigureScale(e){let t=this.#e;!t||t.type==`null`||(pR({...this.#c(e),range:void 0},t),t.props=e,this.#l())}withDomainNotificationsSuppressed(e){this.#o+=1;try{e()}finally{--this.#o}}#c(e){let{assembly:t,domainIndexer:n,__rangeExprScope:r,...i}=e;return i}#l(){let e=this.#e;if(!e)return;let t=e.props;this.#t.forEach(e=>e.invalidate()),this.#t.clear();let n=t.__rangeExprScope?.paramRuntime??this.#n(),r=AR({range:t.range,reverse:t.reverse,createExpression:e=>n.createExpression(e),registerExpr:e=>this.#t.add(e)});if(!r)return;if(`values`in r){e.range(r.values);return}let i=()=>e.range(r.evaluate());r.setup(i),i()}#u(){let e=this.#e;if(!e)return;let t=e.range,n=e.domain,r=()=>this.#r?.();kR(e,{onRangeChange:r,onDomainChange:()=>{this.#o>0||this.#i?.()},range:t,domain:n}),r()}dispose(){this.#t.forEach(e=>e.invalidate()),this.#t.clear()}};function kR(e,{onRangeChange:t,onDomainChange:n,range:r,domain:i}){typeof r==`function`&&(e.range=(function(e){if(arguments.length)r(e),t?.();else return r()})),typeof i==`function`&&(e.domain=(function(e){if(arguments.length)i(e),n?.();else return i()}))}function AR({range:e,reverse:t,createExpression:n,registerExpr:r}){if(!e||!Qe(e))return null;let i=(e,t)=>t?e.slice().reverse():e;if(e.some(R)){let a;return{dynamic:!0,evaluate:()=>i(a.map(e=>e()),t),setup:t=>{a=e.map(e=>{if(R(e)){let i=n(e.expr);return i.subscribe(t),r(i),()=>i(null)}return()=>e})}}}return{dynamic:!1,values:i(e,t)}}function jR(e,t,n){if(n||=[],e.some(e=>e===null)){if(e.every(e=>e===null))return null;throw console.warn(e),Error(`Cannot merge objects with nulls!`)}let r={},i=(e,t)=>e===t||MR(e)&&MR(t)||MR(e)&&t===!0||e===!0&&$e(t)||Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>e===t[n]),a=e=>{for(let a in e){let o=e[a];if(!n.includes(a)&&o!==void 0)if(r[a]!==void 0&&!i(r[a],o))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(e[a])}). Using ${JSON.stringify(r[a])}.`);else{let e=r[a];if(MR(e))MR(o)&&(r[a]=jR([e,o],a));else if(MR(o)){if(!(e===!0||e===void 0))throw Error(`Bug in merge! Target is: `+e);r[a]=jR([{},o],a)}else r[a]=o}}};for(let t of e)a(t);return r}function MR(e){return $e(e)&&!Array.isArray(e)}var NR={nominal:`nominalColorScheme`,ordinal:`ordinalColorScheme`,quantitative:`quantitativeColorScheme`},PR=new Set([`rect`]),FR=new Set([`shape`,`size`,`angle`,`heatmap`,`ramp`,`diverging`]);function IR(e){return typeof e==`string`||typeof e==`object`&&!!e}function LR(e){return FR.has(e)}function RR(e,t){if(LR(t))return HR(e)[t]}function zR(e){if([`nominal`,`ordinal`,`quantitative`,`index`,`locus`].includes(e))return e}function BR(e){if(!e)return{};let t={...e};for(let e of[`nominal`,`ordinal`,`quantitative`,`index`,`locus`,`nominalColorScheme`,`ordinalColorScheme`,`quantitativeColorScheme`,`indexColorScheme`,`locusColorScheme`])delete t[e];return t}function VR(e,t){let n=zR(t);return FN(e.flatMap(e=>{let t=e.scale;return[t,t&&n?t[n]:void 0]}))}function HR(e){return FN(e.map(e=>e.range))}function UR(e,{channel:t,dataType:n,isExplicitDomain:r,markTypes:i,hasDomainMid:a}){let o=VR(e,n),s=HR(e),c={...BR(o)};if(r?c.zero=!1:c.zero===void 0&&o.zero!==void 0&&(c.zero=o.zero),Uh(t)&&c.nice===void 0&&(c.nice=o.nice===void 0?!r:o.nice),Yh(t)&&c.scheme===void 0)if(n==`quantitative`){let e=a||o.domainMid!==void 0?s.diverging:i?.length&&i.every(e=>PR.has(e))?s.heatmap:s.ramp,t=IR(e)?e:o.quantitativeColorScheme;IR(t)&&(c.scheme=t)}else{let e=o[NR[n]??NR.quantitative];IR(e)&&(c.scheme=e)}else Xh(t)&&c.range===void 0?c.range=t==`shape`?s.shape??[]:[]:t==`size`&&c.range===void 0?c.range=s.size:t==`angle`&&c.range===void 0&&(c.range=s.angle);return c}var WR=`quantitative`,GR=`ordinal`,KR=`nominal`;function qR(e,t){if(t==`index`||t==`locus`){if(Hh(e))return t;throw Error(e+` does not support `+t+` data type. Only positional channels do.`)}let n={x:[`band`,`band`,`linear`],y:[`band`,`band`,`linear`],size:[void 0,`point`,`linear`],opacity:[void 0,`point`,`linear`],fillOpacity:[void 0,`point`,`linear`],strokeOpacity:[void 0,`point`,`linear`],color:[`ordinal`,`ordinal`,`linear`],fill:[`ordinal`,`ordinal`,`linear`],stroke:[`ordinal`,`ordinal`,`linear`],strokeWidth:[void 0,void 0,`linear`],shape:[`ordinal`,`ordinal`,void 0],dx:[void 0,void 0,`null`],dy:[void 0,void 0,`null`],angle:[void 0,void 0,`linear`],sample:[`null`,void 0,void 0]},r=[`sample`].includes(e)?`null`:n[e]?n[e][[KR,GR,WR].indexOf(t)]:t==`quantitative`?`linear`:`ordinal`;if(r===void 0)throw Error(`Channel "`+e+`" is not compatible with "`+t+`" data type. Use of a proper scale may be needed.`);return r}function JR(e,t){Uh(t)&&e.type!==`ordinal`&&(e.range=[0,1]),t==`opacity`&&ym(e.type)&&e.clamp===void 0&&(e.clamp=!0)}function YR({channel:e,dataType:t,orderedMembers:n,isExplicitDomain:r,configScopes:i}){let a=n,o=a.map(e=>typeof e.view.getMarkType==`function`?e.view.getMarkType():void 0).filter(e=>!!e),s=jR(a.map(e=>e.channelDef.scale).filter(e=>e!==void 0),`scale`,[`domain`]);if(s===null||s.type==`null`)return{type:`null`};let c={...UR(i,{channel:e,dataType:t,isExplicitDomain:r,markTypes:o,hasDomainMid:s.domainMid!==void 0}),...s};if(c.type||=qR(e,t),typeof c.range==`string`){if(!LR(c.range))throw Error(`Unknown named scale range "`+c.range+`". Supported names: shape, size, angle, heatmap, ramp, diverging.`);let t=RR(i,c.range);if(t===void 0)throw Error(`Named scale range "`+c.range+`" is not configured in config.range.`);Yh(e)&&(typeof t==`string`||typeof t==`object`&&t&&!Array.isArray(t))?(c.scheme=t,delete c.range):c.range=t}if(e==`y`&&bm(c.type)&&c.reverse==null&&(c.reverse=!0),c.range&&c.scheme&&delete c.scheme,c.domainTransition===void 0&&(c.domainTransition=!a.some(e=>R(e.channelDef.scale?.domain))),Array.isArray(c.range)&&c.range.some(R)&&a.length>0){let e=a.find(e=>e.channelDef.scale?.range!==void 0)?.view;e&&(c.__rangeExprScope=e)}if(!(`zoom`in c)){let e=VR(i,t);e.zoom===void 0?[`index`,`locus`].includes(c.type)&&(c.zoom=!0):c.zoom=e.zoom}return JR(c,e),c}function XR(e){return e===`index`||e===`locus`}function ZR(e,t){return XR(e)?ez(t):t}function QR(e,t){return XR(e)?tz(t):t}function $R(e,t){return t&&XR(e)?ez(t):t}function ez(e){return[e[0],e[1]+nz(e)]}function tz(e){return[e[0],e[1]-nz(e)]}function nz(e){return e[1]>=e[0]?1:-1}function rz(e,t){let n=e.findRuntimeForParam(t);if(!n)throw Error(`Selection domain parameter "${t}" was not found.`);return n}function iz(e,t){if(!e)throw Error(`Selection domain parameter "${t}" was not found.`);if(!ag(e))throw Error(`Selection domain parameter "${t}" must be an interval selection.`);return e}function az(e,t,n){let r=e.paramRuntime.findRuntimeForParam?rz(e.paramRuntime,t):e.paramRuntime;return{runtime:r,selection:iz(r.getValue?r.getValue(t):e.paramRuntime.findValue(t),t)}}function oz(e,t,n,r){let i=[];return e.visit(e=>{let a=e.paramRuntime?.paramConfigs?.get(n);if(!a||!gg(a))return;let o=cg(a.select);!ug(o)||!o.encodings?.includes(r)||e.paramRuntime.findRuntimeForParam(n)===t&&i.push({view:e,param:a})}),i}function sz(e,t,n,r){let i=new Set,a=[e.getLayoutAncestors?.(),e.getDataAncestors?.(),[e]];for(let e of a)for(let a of e??[]){if(!a||i.has(a))continue;i.add(a);let e=a.paramRuntime?.paramConfigs?.get(n);if(!e||!gg(e))continue;let o=cg(e.select);if(!(!ug(o)||!o.encodings?.includes(r))&&a.paramRuntime.findRuntimeForParam?.(n)===t)return!0}return!1}function cz(e,t,n={}){if(!e||e.length!==2)return;let r=Number(e[0]),i=Number(e[1]);if(!Number.isFinite(r)||!Number.isFinite(i))return;let a=Math.min(r,i),o=Math.max(r,i);if(a=Math.max(t[0],a),o=Math.min(t[1],o),!(a>o)&&!(n.roundToIntegers&&(a=Math.ceil(a),o=Math.ceil(o),a=Math.max(t[0],a),o=Math.min(t[1],o),a>o)))return[a,o]}var lz=class e extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(t){if(t instanceof e&&t.type!=this.type)throw Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(let e of t)this.extend(e);return this}extendAllWithAccessor(e,t){for(let n of e)this.extend(t(n));return this}},uz=class extends lz{constructor(){super(),this.type=`quantitative`}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}},dz=class extends lz{constructor(){super(),this.type=`ordinal`,this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)||this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this}},fz=class extends dz{constructor(){super(),this.type=`nominal`}},pz=class extends lz{constructor(e){super();let t=0;for(let n=1;n<e.length;n++)t+=Math.sign(e[n]-e[n-1]);if(Math.abs(t)!=e.length-1)throw Error(`Piecewise domain must be strictly increasing or decreasing: `+JSON.stringify(e));e.forEach(e=>this.push(e))}extend(e){if(this.includes(e))return this;throw Error(`Piecewise domains are immutable and cannot be unioned!`)}},mz={quantitative:uz,index:uz,locus:uz,nominal:fz,ordinal:dz};function hz(e,t){if(e==`quantitative`&&gz(t)){let n=new pz(t);return n.type=e,n}else if(mz[e]){let n=new mz[e];return n.type=e,t&&n.extendAll(t),n}throw Error(`Unknown type: `+e)}function gz(e){return e&&e.length>0&&e.length!=2&&e.every(e=>typeof e==`number`)}var _z=class{#e;#t;#n;#r;#i;#a;#o;#s=void 0;#c=!0;#l=new Map;#u=new WeakMap;constructor({getActiveMembers:e,getAllMembers:t,getDataMembers:n,getType:r,getLocusExtent:i,fromComplexInterval:a}){this.#e=e,this.#t=t??e,this.#n=n??e,this.#r=r,this.#i=i,this.#a=a}get initialDomainSnapshot(){return this.#o}hasConfiguredDomain(e={}){return!!this.getConfiguredDomain(e)}hasSelectionConfiguredDomain(){return this.getSelectionConfiguredDomainBindingInfo(),!!this.#s}getSelectionConfiguredDomainBindingInfo(){return this.#s||!this.#c||this.getConfiguredDomain(),this.#s}getSelectionConfiguredDomainInfo(){let e=this.getSelectionConfiguredDomainBindingInfo();if(e)return{param:e.param,encoding:e.encoding}}invalidateConfiguredDomain(){this.#c=!0,this.#s=void 0,this.#l.clear()}getDefaultDomain(e=!1,t){let n=this.#r();return kz(n,this.#i,e&&n!==`locus`?this.getDataDomain():void 0,t)}getConfiguredOrDefaultDomain(e=!1,t,n={}){return this.getConfiguredDomain(n)??this.getDefaultDomain(e,t)}getConfiguredDomain(e={}){let t=e.includeSelectionInitial??!0;if(!this.#c&&this.#l.has(t))return this.#l.get(t);let n=vz(this.#e(),this.#a,t);return Tz(this.#t(),n.selectionRef),this.#s=n.selectionRef,this.#l.set(t,n.domain),this.#c=!1,n.domain}getDataDomain(){return Oz(this.#n(),this.#r,e=>this.#d(e))}captureInitialDomain(e,t,n){if(!this.#o&&ym(e.type)){let t=n??e.domain();Dt(t)>0&&(this.#o=t)}return t?!1:(this.#o=n??e.domain(),!0)}#d(e){let t=this.#u.get(e);if(t)return t;let n=e.view.mark.encoders;if(!n)return[];let r=n[e.channel];if(!r)return[];let i=Th(r);if(i.length===0)return[];let a=i.filter(mh).filter(e=>!e.channelDef.domainInert);return this.#u.set(e,a),a}};function vz(e,t,n){let r=Array.from(e).filter(e=>e.contributesToDomain).filter(e=>e.channelDef.scale?.domain),i={domains:[],selectionRef:void 0,selectionRuntime:void 0,selectionDescription:void 0,hasLiteralDomain:!1};for(let e of r){let r=yz(e,t,n);if(r.kind===`selection`){bz(i,r);continue}xz(i,r)}return Sz(i)}function yz(e,t,n){let r=e.channelDef.scale.domain;return Dz(r)?{kind:`selection`,...Cz(e,r,t,n)}:R(r)?{kind:`literal`,domain:wz(e.channelDef.type,e.view.paramRuntime.createExpression(r.expr)(),t)}:{kind:`literal`,domain:wz(e.channelDef.type,r,t)}}function bz(e,t){if(e.hasLiteralDomain)throw Error(`Cannot mix selection-driven and literal configured domains on a shared scale.`);if(e.selectionRef&&(e.selectionRef.runtime!==t.runtime||e.selectionRef.param!==t.param||e.selectionRef.encoding!==t.encoding))throw Error(`Conflicting selection domain references on a shared scale: `+e.selectionDescription+` vs `+t.description+`.`);e.selectionRuntime=t.runtime,e.selectionDescription=t.description,e.selectionRef={param:t.param,encoding:t.encoding,hasInitial:(e.selectionRef?.hasInitial??!1)||t.hasInitial,runtime:t.runtime},t.domain&&e.domains.push(t.domain)}function xz(e,t){if(e.selectionRuntime)throw Error(`Cannot mix literal configured domains with selection-driven domains on a shared scale.`);e.hasLiteralDomain=!0,e.domains.push(t.domain)}function Sz(e){return e.domains.length>0?{domain:e.domains.reduce((e,t)=>e.extendAll(t)),selectionRef:e.selectionRef}:e.selectionRuntime?{domain:void 0,selectionRef:e.selectionRef}:{domain:void 0,selectionRef:void 0}}function Cz(e,t,n,r){let i=t.param,a=Ez(e.channel,t,i),o=az(e.view,i,a),s=t.initial!==void 0,c=o.selection.intervals[a],l=i+`.`+a;return!c||c.length!==2?{domain:r&&t.initial?wz(e.channelDef.type,t.initial,n):void 0,description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}:{domain:hz(e.channelDef.type,n(c)),description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}}function wz(e,t,n){let r=n(t);return hz(e,e===`locus`&&GL(t)&&!KL(t)?r:ZR(e,r))}function Tz(e,t){if(!t||e.size<2||!Array.from(e).some(e=>sz(e.view,t.runtime,t.param,t.encoding)))return;let n=Array.from(new Set(Array.from(e).filter(e=>e.contributesToDomain).map(e=>e.view.getPathString?.()??e.view.name??`(unknown)`)));throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use a shared ${t.encoding} scale when the same interval selection is defined in that shared view group (${n.join(`, `)}). This creates a feedback loop between brushing and the scale domain. Make the linked ${t.encoding} scale independent, for example with "resolve": { "scale": { "${t.encoding}": "independent" } } on the common ancestor.`)}function Ez(e,t,n){if(t.encoding)return t.encoding;let r=Jh(e);if(r===`x`||r===`y`)return r;throw Error(`Selection domain reference "${n}" on channel "${e}" requires an explicit "encoding" ("x" or "y").`)}function Dz(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.param==`string`}function Oz(e,t,n){let r=t(),i=new Map;for(let t of e){if(!t.contributesToDomain)continue;let e=n(t);if(e.length===0)continue;let a=t.view.getCollector();for(let t of e){let e=vh(t,r),n=a??null,o=i.get(n);if(o||(o=new Map,i.set(n,o)),o.has(e))continue;let s;if(a)s=a.getDomain(e,r,t);else if(t.constant)s=hz(r),s.extend(t({}));else continue;o.set(e,s)}}if(i.size===0)return;let a=hz(r);for(let e of i.values())for(let t of e.values())a.extendAll(t);return a}function kz(e,t,n,r){return e==`locus`?t(r):e==`index`?$R(e,n)??[]:n??[]}function Az(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function jz(e,t,n){return e*(t/e)**+n}var Mz=e=>new Promise(t=>setTimeout(t,e));function Nz(){return{canceled:!1}}function Pz(e){let t=e.requestAnimationFrame||window.requestAnimationFrame,n=e.signal,r=e.cancelToken,i=()=>new Promise((i,a)=>{if(r?.canceled)return i();if(n?.aborted)return a(`aborted`);let o=performance.now(),s=o+(e.duration||1e3),c=typeof e.from==`number`?e.from:0,l=typeof e.to==`number`?e.to:1,u=e.easingFunction||(e=>e),d=e=>(e-o)/(s-o),f=e=>e*(l-c)+c,p=e=>Math.max(0,Math.min(1,e)),m=o=>{if(r?.canceled){i();return}n?.aborted?a(`aborted`):(e.onUpdate(f(u(p(d(o))))),o<s?t(m):(e.onUpdate(f(u(1))),i()))};t(m)});return e.delay?r?.canceled?Promise.resolve():n?.aborted?Promise.reject(`aborted`):Mz(e.delay).then(i):i()}function Fz(e,t,n,r,i={}){let a=i.onUnsupported??`throw`;switch(e.type){case`linear`:case`index`:case`locus`:return lt(t,n,r);case`log`:return ut(t,n,r);case`pow`:case`sqrt`:return dt(t,n,r,e.exponent());case`symlog`:return ft(t,n,r,e.constant());default:if(a===`identity`)return t;throw Error(`Zooming is not implemented for: `+e.type)}}var Iz=class{#e;#t;#n;#r;#i;#a;#o=null;constructor({getScale:e,getAnimator:t,getInitialDomainSnapshot:n,getResetDomain:r,fromComplexInterval:i,getGenomeExtent:a}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a}getZoomExtent(){let e=this.#e(),t=e.props.zoom;return Lz(e,t,this.#i,this.#a,this.#n)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){let e=this.#e().type;return ym(e)&&!bm(e)}getDomainChangeAction(e,t){return Xl(t,e)?`none`:this.isZoomable()?`restore`:this.isZoomingSupported()?`animate`:`notify`}isZoomed(){return this.isZoomingSupported()&&!Xl(this.#r(),this.#e().domain())}zoom(e,t,n){if(!this.isZoomingSupported())return!1;let r=this.#e(),i=r.domain(),a=Rz(r,i,e,t,n),o=this.getZoomExtent();return a=pt(a,o[0],o[1]),[0,1].some(e=>a[e]!=i[e])?(r.domain(a),!0):!1}async zoomTo(e,t=!1){if(Ct(t)&&(t=t?700:0),!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let n=this.#e(),r=zz(n.type,e,this.#i),i=this.#t(),a=n.domain();if(t>0&&a.length==2){let e=a[1]-a[0],o=r[1]-r[0],s=a[0]+e/2,c=r[0]+o/2,l=a[0]==r[0],u=a[1]==r[1];this.#s();let d=Nz();this.#o=d,await i.transition({duration:t,easingFunction:Az,cancelToken:d,onUpdate:t=>{let r=jz(e,o,t),i=e==o?t:(e-r)/(e-o),d=i*c+(1-i)*s,f=[l?a[0]:d-r/2,u?a[1]:d+r/2];n.domain(f)}}),this.#o===d&&(this.#o=null),n.domain(r)}else this.#s(),n.domain(r),i?.requestRender()}#s(){this.#o&&=(this.#o.canceled=!0,null)}resetZoom(){if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let e=this.#e(),t=e.domain(),n=this.#r();return[0,1].some(e=>n[e]!=t[e])?(e.domain(n),!0):!1}getZoomLevel(){return this.isZoomable()?Dt(this.getZoomExtent())/Dt(this.#e().domain()):1}};function Lz(e,t,n,r,i){return Bz(t)&&Qe(t.extent)?zz(e.props.type,t.extent,n):t&&e.props.type==`locus`?r():i()}function Rz(e,t,n,r,i){let a=[...t],o=e.invert(r);switch(e.props.reverse&&(i=-i),`align`in e&&(o+=e.align()),e.type){case`linear`:case`index`:case`locus`:a=ot(a,i||0);break;case`log`:a=st(a,i||0);break;case`pow`:case`sqrt`:a=A(a,i||0,e.exponent());break;case`symlog`:if(i!==0)throw Error(`Panning is not implemented for: `+e.type);break;default:throw Error(`Zooming is not implemented for: `+e.type)}return Fz(e,a,o,n)}function zz(e,t,n){let r=e===`locus`?n(t):t;return e===`locus`&&GL(t)&&!KL(t)?r:ZR(e,r)}function Bz(e){return $e(e)}function Vz(e){let t=e.view.getPathString(),n=e.channel??``;return t+`|`+n}function Hz(e){return Array.from(e).sort((e,t)=>Vz(e).localeCompare(Vz(t)))}I(`index`,IL,[`continuous`]),I(`locus`,QL,[`continuous`]),I(`null`,tM,[]);var Uz=class{#e=new Set;#t=new Set;#n;#r={domain:new Set,range:new Set};#i;#a;#o;#s;#c=!1;#l=[];#u=0;#d=[];#f=!1;#p=void 0;#m;#h=0;#g=0;#_=!1;constructor(e,t){this.channel=e,this.type=null,this.name=void 0,this.#m=t,this.#a=new _z({getActiveMembers:()=>this.#b(),getAllMembers:()=>this.#e,getDataMembers:()=>this.#b(this.#t),getType:()=>this.type,getLocusExtent:e=>this.#S(e),fromComplexInterval:this.fromComplexInterval.bind(this)}),this.#i=new OR({getParamRuntime:()=>this.#y.paramRuntime,onRangeChange:()=>this.#w(`range`),onDomainChange:()=>this.#w(`domain`),getGenomeStore:()=>this.#x.genomeStore}),this.#o=new Iz({getScale:()=>this.getScale(),getAnimator:()=>this.#x.animator,getInitialDomainSnapshot:()=>this.#a.initialDomainSnapshot,getResetDomain:()=>this.#k(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>this.#S()})}get#v(){let e=this.#e.values().next().value;if(!e)throw Error(`ScaleResolution has no members!`);return e.view}get#y(){return this.#m??this.#v}#b(e=this.#e){let t=new Set;for(let n of e){let e=n.view;e.isConfiguredVisible()&&(!e.isDataInitialized()&&!n.channelDef?.scale?.domain||t.add(n))}return t}get#x(){return this.#y.context}get zoomExtent(){return(this.#i.scale&&ym(this.#i.scale.type)&&this.#o.getZoomExtent())??[-1/0,1/0]}#S(e){return iR(this.#C(e))}#C(e){if(this.type===`locus`)return this.#i.scale??this.#i.getLocusGenome(e)}addEventListener(e,t){this.#r[e].add(t)}removeEventListener(e,t){this.#r[e].delete(t)}#w(e){e===`domain`&&this.#u===0&&this.syncLinkedSelectionFromDomain();for(let t of this.#r[e].values())t({type:e,scaleResolution:this})}#T(e){this.#u+=1;try{e()}finally{--this.#u}}syncLinkedSelectionFromDomain(){let e=this.#a.getSelectionConfiguredDomainBindingInfo();if(!e||!this.isZoomable())return;let t=iz(e.runtime.getValue(e.param),e.param),n=this.#E(this.getScale().domain());if(!n)return;let r=this.#E(this.#a.getDefaultDomain(!0)),i=r&&Xl(n,r)?null:n;Wz(t.intervals[e.encoding]??null,i)||e.runtime.setValue(e.param,{...t,type:`interval`,intervals:{...t.intervals,[e.encoding]:i}})}#E(e){return cz(e,this.zoomExtent)}#D(){return this.#a.getSelectionConfiguredDomainBindingInfo()}#O(){return!this.#f}#k(e=!1,t){return this.#a.getConfiguredOrDefaultDomain(e,t,{includeSelectionInitial:this.#O()})}#A(){for(let e of this.#e)if(e.contributesToDomain&&e.channelDef.scale?.domain!==void 0)return!0;return!1}#j(e){let t=iz(e.runtime.getValue(e.param),e.param).intervals[e.encoding];return t&&t.length===2?t:null}#M(e,t){t?this.#f=!1:e&&(this.#f=!0)}#N(e){let t=Gz(e),{channel:n,channelDef:r}=t,i=r.type==null&&this.type;if(n!=`sample`&&!r.type&&!Kh(n)&&!i)throw Error(`The "type" property must be defined in channel definition: "${n}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);let a=n==`sample`?`nominal`:r.type,o=r?.scale?.name,s=r.scale?.type??(a===`index`||a===`locus`?a:void 0);if(s&&[`index`,`locus`].includes(s)&&!Hh(this.channel))throw Error(`Index and locus scales are only supported on positional channels (x/y). Channel "${this.channel}" resolves to scale type "${s}".`);if(o){if(this.name!==void 0&&o!=this.name)throw Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!i){if(!this.type)this.type=a;else if(a!==this.type&&!Kh(n))throw Error(`Can not use shared scale for different data types: ${this.type} vs. ${a}. Use "resolve: independent" for channel ${this.channel}`)}return this.#e.add(t),t.contributesToDomain&&this.#t.add(t),t}#P(){this.#_=!1,this.#U(),this.#G(),this.#R(),this.#z()}#F(){this.#g>0?this.#_=!0:this.#P()}static registerInBatch(e,t){let n=Array.from(e);for(let e of n)e.#g++;try{return t()}finally{for(let e of n)e.#g--,e.#g===0&&e.#_&&e.#P()}}registerMember(e){let t=this.#N(e);return this.#F(),()=>{let e=this.#e.delete(t);return e&&(this.#t.delete(t),this.#F()),e&&this.#e.size===0}}dispose(){this.#I(),this.#L(),this.#r.domain.clear(),this.#r.range.clear(),this.#i.dispose()}#I(){for(let e of this.#l)e();this.#l=[],this.#p=void 0}#L(){for(let e of this.#d)e();this.#d=[]}#R(){if(this.#I(),this.#e.size===0)return;let e=this.#D();e&&(this.#p=this.#j(e),this.#l.push(e.runtime.subscribe(e.param,()=>{let t=this.#p,n=this.#j(e);this.#M(t,n),this.#p=n,this.#G(),this.reconfigureDomain()})))}#z(){if(this.#L(),this.#e.size===0)return;let e=()=>{this.#G(),this.reconfigureDomain()};for(let t of this.#e){if(!t.contributesToDomain)continue;let n=t.channelDef.scale?.domain;if(!R(n))continue;let r=t.view.paramRuntime.createExpression(n.expr).subscribe(e);this.#d.push(r)}}#B(){for(let e of this.#e)if(e.view.hasRendered())return!0;return!1}registerCollectorSubscriptions(e,t){let n=new Set;for(let e of t)e.channelDef.domainInert||n.add(vh(e,this.type));if(n.size===0)return()=>void 0;let r=()=>{this.reconfigureDomain()},i=[];for(let t of n)i.push(e.subscribeDomainChanges(t,r));return()=>{for(let e of i)e()}}isDomainDefinedExplicitly(){return this.#A()}isDomainInitialized(){let e=this.#i.scale;if(!e)return!1;let t=e.domain();return ym(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#V(){return CN(this,`mergedScaleProps`,()=>{let e=YR({channel:this.channel,dataType:this.type,orderedMembers:this.#W(),isExplicitDomain:this.isDomainDefinedExplicitly(),configScopes:this.#y.getConfigScopes()});return this.#K(e),e})}#H(){wN(this,`mergedScaleProps`)}#U(){this.#n=void 0}#W(){return this.#n||=Hz(this.#e),this.#n}#G(){this.#a.invalidateConfiguredDomain(),this.#H()}#K(e){let t=this.#D();if(!t||e===null||e.type===`null`)return;let n=ym(e.type)&&!bm(e.type)&&!!e.zoom;if(t.hasInitial&&!n)throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use "initial" with a non-zoomable ${this.channel} scale. Enable zoom on the linked scale or remove "initial".`)}getAssemblyRequirement(){let e=this.#V();return e===null||e.type===`null`||e.type!==`locus`?{assembly:void 0,needsDefaultAssembly:!1}:{assembly:e.assembly,needsDefaultAssembly:e.assembly===void 0}}getResolvedScaleType(){let e=this.#V();if(!(e===null||e.type===`null`))return e.type}#q(e=!1){let t=this.#V();if(t===null||t.type==`null`)return{type:`null`};let n={...t};this.#h+=1;let r;try{r=this.#k(e,n.type===`locus`?n.assembly:void 0)}finally{--this.#h}if(bm(n.type)){let t=this.isDomainDefinedExplicitly(),i=this.#J(t);if(r!=null){if(t&&i.domain().length>0&&!Xl(i.domain(),r))return this.#s=void 0,this.#q(e);i.addAll(r);let a=new Set(r),o=i.domain().filter(e=>a.has(e));n.domain=o.length>0?o:new fz}else{let e=i.domain();n.domain=e.length>0?e:new fz}n.domainIndexer=i}else r&&r.length>0&&(n.domain=r);return!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),n}#J(e){return(!this.#s||this.#c!==e)&&(this.#s=oN(),this.#c=e),this.#s}reconfigure(){this.#T(()=>{this.#G();let e=this.#Y(!0);e&&(this.#X(e,(e,t)=>this.#i.reconfigureScale(t)),this.#Z(e))})}reconfigureDomain(){this.#T(()=>{let e=this.#Y(!0,!0);if(!e)return;let{domainConfig:t,targetDomain:n}=e,r=n!=null&&Xl(n,e.scale.domain());n!=null&&!r&&this.#X(e,e=>{e.domain(n),t.applyOrdinalUnknown&&e.unknown(t.ordinalUnknown)}),this.#Z(e),this.syncLinkedSelectionFromDomain()})}#Y(e,t=!1){let n=this.#i.scale;if(!n||n.type==`null`)return;let r={scale:n,props:this.#q(e),previousDomain:n.domain(),domainWasInitialized:this.isDomainInitialized(),hasSelectionConfiguredDomain:this.#a.hasSelectionConfiguredDomain()};if(t){let e=vR(n,r.props);return{...r,domainConfig:e,targetDomain:e.domain}}return r}#X(e,t){this.#i.withDomainNotificationsSuppressed(()=>{t(e.scale,e.props)})}#Z(e){let{scale:t,previousDomain:n,domainWasInitialized:r,hasSelectionConfiguredDomain:i}=e,a=i?this.#a.getDefaultDomain(!0):void 0;if(this.#a.captureInitialDomain(t,r,a)){this.#w(`domain`);return}if(t.props.domainTransition===!1){this.#w(`domain`);return}let o=t.domain(),s=this.#o.getDomainChangeAction(n,o);s===`restore`?i?this.#w(`domain`):this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}):s===`animate`?i?this.#w(`domain`):this.#B()?(this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}),this.zoomTo(o,500)):this.#w(`domain`):s===`notify`&&this.#w(`domain`)}get scale(){if(this.#i.scale)return this.#i.scale;throw Error(`ScaleResolution.scale accessed before initialization. Call initializeScale().`)}getScale(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own scale while its domain is being resolved.`);return this.#i.scale??this.initializeScale()}initializeScale(){if(this.#i.scale)return this.#i.scale;let e=this.#q();return this.#i.createScale(e)}getDomain(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own domain while its domain is being resolved.`);return this.getScale().domain()}getDataDomain(){return this.#a.getDataDomain()}getComplexDomain(){return rR(this.#C(),QR(this.type,this.getDomain()))}getLinkedSelectionDomainInfo(){let e=this.#D();if(!e)return;let t=this.#y.getLayoutAncestors().at(-1),n=t?oz(t,e.runtime,e.param,e.encoding).some(e=>e.param.persist!==!1):!1;return{param:e.param,encoding:e.encoding,persist:n}}isZoomed(){return this.#o.isZoomed()}isZoomable(){let e=this.#V();return e===null||e.type===`null`?!1:ym(e.type)&&!bm(e.type)&&!!e.zoom}zoom(e,t,n){return this.#o.zoom(e,t,n)}async zoomTo(e,t=!1){return this.#o.zoomTo(e,t)}resetZoom(){return this.#o.resetZoom()}getZoomLevel(){return this.#o.getZoomLevel()}getAxisLength(){if(this.channel!==`x`&&this.channel!==`y`)throw Error(`Axis length is only defined for x and y channels!`);let e=Array.from(this.#e).map(e=>e.view.coords?.[this.channel===`x`?`width`:`height`]).filter(e=>e>0);return e.length?e.reduce((e,t)=>Math.min(e,t),1e4):0}invertToComplex(e){let t=this.getScale();if(`invert`in t){let n=t.invert(e);return this.toComplex(n)}else throw Error(`The scale does not support inverting!`)}toComplex(e){return eR(this.#C(),e)}fromComplex(e){return tR(this.#C(),e)}fromComplexInterval(e){return this.type==`locus`?nR(this.#C(),e):e}};function Wz(e,t){return e===t?!0:!e||!t?!1:e.length===t.length&&Xl(e,t)}function Gz(e){let t=e.channelDef.scale,n=t?.assembly;if(!t||!n||typeof n!=`object`||!(`url`in n))return e;let r=BP(e.view.getBaseUrl(),n.url);return r===n.url?e:{...e,channelDef:{...e.channelDef,scale:{...t,assembly:{...n,url:r}}}}}function Kz(...e){for(let t of e)if(t!==void 0)return t}var qz=class{#e=new Set;constructor(e){this.channel=e}get scaleResolution(){return this.#e.values().next().value?.view.getScaleResolution(this.channel)}#t(e){let{view:t}=e,n=t.getScaleResolution(this.channel);if(!n)throw Error(`Cannot find a scale resolution!`);if(this.scaleResolution&&n!==this.scaleResolution)throw Error(`Shared axes must have a shared scale! Channel: ${this.channel}, existing views: [${Array.from(this.#e).map(e=>e.view.getPathString()).join(`, `)}], new view: ${t.getPathString()}.`);this.#e.add(e),wN(this,`axisProps`)}registerMember(e){return this.#t(e),()=>this.removeMember(e)&&this.#e.size===0}removeMember(e){let t=this.#e.delete(e);return t&&wN(this,`axisProps`),t}getAxisProps(){return CN(this,`axisProps`,()=>{let e=Hz(this.#e).map(e=>{let t=e.view.mark.encoding[e.channel];return`axis`in t&&t.axis});return e.length>0&&e.some(e=>e===null)?null:jR(e.filter(e=>e!==void 0),`axis`,[`title`])})}getTitle(){let e=Hz(this.#e).map(e=>{let t=Ph(e.view,e.channel);if(!kh(t))return{member:e,axisTitle:`axis`in t?t.axis?.title:void 0,explicitTitle:Kz(`axis`in t?t.axis?.title:void 0,t.title),implicitTitle:Kz(Ah(t)?t.field:void 0,Ih(t)?t.expr:void 0)}}),t=e.map(e=>e.axisTitle).find(e=>e!==void 0);if(t!==void 0)return t;let n=e.filter(t=>{if(Kh(t.member.channel)&&!t.explicitTitle){let n=Jh(t.member.channel);return e.find(e=>e.member.view==t.member.view&&e.member.channel==n)?.explicitTitle===void 0}return!0}),r=new Set(n.map(e=>Kz(e.explicitTitle,e.implicitTitle)).filter(N));return r.size?[...r].join(`, `):null}},Jz=e=>{if(Mh(e))return e;if(Rh(e)){let t=e.condition;if(!Array.isArray(t)&&Mh(t))return t}},Yz=(e,t,n)=>{let r=e;for(;(r.getConfiguredOrDefaultResolution(n,t)==`forced`||r.dataParent&&[`shared`,`excluded`,`forced`].includes(r.dataParent.getConfiguredOrDefaultResolution(n,t)))&&r.getConfiguredOrDefaultResolution(n,t)!=`excluded`;)r=r.dataParent;return r},Xz=(e,t,n)=>{if(!t.resolutions.scale[n]){let r=new Uz(n,t);t.resolutions.scale[n]=r;let i=t=>{e.context.glHelper?.createRangeTexture(t.scaleResolution,!0)};r.addEventListener(`range`,i),r.addEventListener(`domain`,i),e.registerDisposer(()=>{r.removeEventListener(`range`,i),r.removeEventListener(`domain`,i)})}return t.resolutions.scale[n]},Zz=(e,t,n,r)=>{let i=Jz(r);if(!i)return;let a=Jh(i.resolutionChannel??n);if(Zh(a)&&!(t==`axis`&&!Uh(a)))return{view:Yz(e,t,a),channel:n,channelDef:i,targetChannel:a}},Qz=(e,t)=>{for(let[n,r]of Object.entries(e.mark.encoding))!r||Array.isArray(r)||t(n,r)},$z=e=>{let t=[];return Qz(e,(n,r)=>{let i=Zz(e,`axis`,n,r);i&&Uh(i.channel)&&t.push(i)}),t},eB=e=>{let t=new Map;return Qz(e,(n,r)=>{let i=Zz(e,`scale`,n,r);if(!i)return;let a=Xz(e,i.view,i.targetChannel),o=t.get(a);o?o.push(i):t.set(a,[i])}),t},tB=(e,t)=>{for(let{view:n,channel:r,channelDef:i,targetChannel:a}of t){if(!Uh(r)||!Hh(a))continue;n.resolutions.axis[a]||(n.resolutions.axis[a]=new qz(a));let t=n.resolutions.axis[a],o=t.registerMember({view:e,channel:r,channelDef:i});e.registerDisposer(()=>{o()&&n.resolutions.axis[a]===t&&delete n.resolutions.axis[a]})}},nB=(e,t)=>{Uz.registerInBatch(t.keys(),()=>{for(let[n,r]of t)for(let{view:t,channel:i,channelDef:a,targetChannel:o}of r){let r=o,s=!e.isDomainInert(),c=n.registerMember({view:e,channel:i,channelDef:a,contributesToDomain:s});e.registerDisposer(()=>{c()&&t.resolutions.scale[r]===n&&(n.dispose(),delete t.resolutions.scale[r])})}})},rB=(e,t)=>{if(!t){rB(e,`scale`),rB(e,`axis`);return}t==`axis`?tB(e,$z(e)):nB(e,eB(e))},iB={point:nP,rect:YN,rule:cP,tick:cP,link:bP,text:EP},aB=class extends DL{#e;#t=!1;#n=null;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e;let o=iB[this.getMarkType()];if(o)this.mark=new o(this);else throw Error(`No such mark: ${this.getMarkType()}`);this.#e=this.paramRuntime.allocateSetter(`zoomLevel`,1),this.resolve();for(let e of[`x`,`y`]){let t=this.getScaleResolution(e);if(t){let e=()=>{this.#e(Math.sqrt(this.getZoomLevel()))};t.addEventListener(`domain`,e),this.registerDisposer(()=>t.removeEventListener(`domain`,e))}}this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>{for(let e of zh)this.getScaleResolution(e)?.syncLinkedSelectionFromDomain()})),this.needsAxes={x:!0,y:!0},this.#r()}#r(){for(let[e,t]of this.paramRuntime.paramConfigs){if(!(`select`in t))continue;let n=cg(t.select),r=n.on,i=n.clear;if(lg(n)){let t=0,a=t=>{this.paramRuntime.setValue(e,t)},o=()=>{let e=this.context.getCurrentHover();return e?.mark?.unitView===this?e.datum:null},s=r.filter?yL(r.filter):()=>!0;if(this.addInteractionListener([`mouseover`,`pointerover`].includes(r.type)?`mousemove`:r.type,r=>{if(!s(r.proxiedMouseEvent))return;let i=o(),c=i?i[ch]:0,l;n.toggle?r.mouseEvent.shiftKey?i&&(l=rg(this.paramRuntime.getValue(e),{toggle:[i]})):l=tg(i?[i]:null):c!=t&&(t=c,l=eg(i)),l!==void 0&&a(l)}),i){let e=i.filter?yL(i.filter):()=>!0;this.addInteractionListener(i.type,r=>{e(r.proxiedMouseEvent)&&(t=0,a(n.toggle?tg():eg(null)))})}}}}render(e,t,n={}){super.render(e,t,n),this.isConfiguredVisible()&&(e.pushView(this,t),e.renderMark(this.mark,n),e.popView(this))}getMarkType(){return typeof this.spec.mark==`object`?this.spec.mark.type:this.spec.mark}getEncoding(){let e=super.getEncoding(),t=this.mark.getSupportedChannels();for(let n of Object.keys(e))n!==`key`&&(t.includes(n)||delete e[n]);return e}resolve(e){if(!e){this.resolve(`scale`),this.resolve(`axis`);return}rB(this,e)}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){let t=this.mark.encoders;if(t)return t[e]?Eh(t[e]):void 0}getSearchAccessors(){return this.#n||=(NL(this.getEncoding())??[]).map(e=>L(e)),this.#n}getFacetAccessor(e){return this.getDataAccessor(`sample`)||super.getFacetAccessor(this)}getCollector(){return this.flowHandle?.collector}registerDomainSubscriptions(){if(this.#t||this.isDomainInert())return;let e=this.getCollector();if(!e)return;let t=this.mark.encoders;if(!t)throw Error(`Encoders are not initialized!`);this.#t=!0;let n=Ym(e),r=new Map;for(let e of Object.values(t)){if(!e)continue;let t=Th(e);if(t.length!==0)for(let e of t){if(!mh(e))continue;let t=this.getScaleResolution(e.scaleChannel);if(!t)throw Error(`Missing scale resolution for channel: `+e.scaleChannel);if(e.channelDef.domainInert||oB(e,t,n))continue;let i=r.get(t);i||(i=new Set,r.set(t,i)),i.add(e)}}for(let[t,n]of r){if(n.size===0)continue;let r=t.registerCollectorSubscriptions(e,n);this.registerDisposer(r)}}getZoomLevel(){return zh.map(e=>this.getScaleResolution(e)?.getZoomLevel()??1).reduce((e,t)=>e*t,1)}propagateInteraction(e){this.handleInteraction(e,!0),e.target=this,!e.stopped&&this.handleInteraction(e,!1)}getDefaultResolution(e,t){return e==`x`?`shared`:`independent`}};function oB(e,t,n){return!t.isDomainDefinedExplicitly()&&n.has(Jh(e.scaleChannel))}var sB=class extends Error{constructor(e,t){super(t),this.kind=e}};async function cB(e,t={}){let n;try{n=await fetch(e,{signal:t.signal})}catch(e){throw new sB(`network`,String(e))}if(!n.ok)throw new sB(`http`,String(n.status)+` `+n.statusText);try{return await n.json()}catch(e){throw new sB(`json`,String(e))}}function lB(e){let t=new Set;e.visit(e=>{for(let n of Object.values(e.resolutions.scale)){let e=n.name;if(e&&t.has(e))throw Error(`The same scale name "${e}" occurs in multiple scale resolutions!`);t.add(e)}})}function uB(e){for(let t of zh){let n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}function dB(e,t=()=>!0){return Promise.allSettled(e).then(e=>{if(t())for(let t of e)`value`in t?t.value.finalizeGraphicsInitialization():`reason`in t&&console.error(t.reason)})}async function fB(e,t,n){let r=e.import;if(!(`url`in r))throw Error(`Not an url import: `+JSON.stringify(r));let i=zP(t,r.url),a;try{a=await cB(i)}catch(e){throw Error(`Could not load imported view spec: ${i}. Reason: ${e.message}`,{cause:e})}if(n.isViewSpec(a))return a.baseUrl=zP(VP(r.url),a.baseUrl),a;throw Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function pB(e){let t=e.getSize(),n=e.getPadding(),r=(e,t)=>e.grow>0?void 0:e.px+t;return{width:r(t.width,n.horizontalTotal),height:r(t.height,n.verticalTotal)}}function*mB(e,t=[]){for(let[n,r]of e.entries())if(r instanceof Map)for(let e of mB(r,[...t,n]))yield e;else yield[[...t,n],r]}var hB=2147483647,gB=vB([hB]);function _B(e){for(let t=1;t<e.length;t++)if(e[t]<e[t-1])return!1;return!0}function vB(e){let t=0;for(let n=0,r=e.length;n<r;n++)e[n]>t&&(t=e[n]);return Math.floor(Math.log2(t)/4)+1}function yB(e){let t=vB(e),n=Array.from({length:e.length},(e,t)=>t);if(_B(e))return n;let r=Array(e.length),i=Array(16);for(let a=0;a<t;a++){i.fill(0);let t=a*4,o=16**a,s=r=>{let i=e[n[r]];return a>=gB?i>hB?Math.floor(i/o)%16:0:i>>t&15};for(let t=0;t<e.length;t++)i[s(t)]++;for(let e=1;e<16;e++)i[e]+=i[e-1];for(let t=e.length-1;t>=0;t--)r[--i[s(t)]]=n[t];[n,r]=[r,n]}return n}var bB=`|`,xB=`\\`,SB=class{#e=null;#t=null;#n=!1;invalidate(){this.#e=null,this.#t=null,this.#n=!1}findDatum(e,t,n){if(!e||e.length===0)return;let r=e.join(`, `);if(e.length!==t.length)throw Error(`Key tuple length ${t.length} does not match fields [${r}]`);(!this.#e||!this.#i(e))&&this.#r(e,n);let i=this.#t,a;if(this.#n){let e=``;for(let n=0;n<t.length;n++){n>0&&(e+=bB);let r=i[n],a=CB(t[n],r);e+=TB(a)}a=e}else{let e=i[0];a=CB(t[0],e)}return this.#e.get(a)}#r(e,t){let n=e.map(e=>L(e)),r=new Map,i=e.join(`, `),a=e.length!==1;if(a)for(let a of t)for(let t=0,o=a.length;t<o;t++){let o=a[t],s=``;for(let t=0;t<n.length;t++){t>0&&(s+=bB);let r=e[t],i=CB(n[t](o),r);s+=TB(i)}if(r.get(s)!==void 0){let e=n.map(e=>e(o));throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(e)}`)}r.set(s,o)}else{let a=n[0],o=e[0];for(let e of t)for(let t=0,n=e.length;t<n;t++){let n=e[t],s=CB(a(n),o);if(r.get(s)!==void 0)throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(s)}`);r.set(s,n)}}this.#e=r,this.#t=[...e],this.#n=a}#i(e){if(!this.#t||this.#t.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(this.#t[t]!==e[t])return!1;return!0}};function CB(e,t){if(e===void 0)throw Error(`Key field "${t}" is undefined. Ensure all key fields are present in the data.`);if(e===null)throw Error(`Key field "${t}" is null. Ensure all key fields are present in the data.`);if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw Error(`Key field "${t}" must be a scalar value (string, number, or boolean).`);return e}function wB(e){if(!(e.indexOf(xB)!==-1||e.indexOf(bB)!==-1))return e;let t=``;for(let n=0;n<e.length;n++){let r=e[n];(r===xB||r===bB)&&(t+=xB),t+=r}return t}function TB(e){return typeof e==`string`?wB(e):String(e)}var EB=class extends Jm{#e=[];#t=L(ch);#n=[];#r=new SB;#i;#a;#o=new DB;get behavior(){return 4}get label(){return`collect`}constructor(e){super(),this.params=e??{type:`collect`},this.observers=new Set,this.facetBatches=new gn([],JSON.stringify),this.#a=kB(this.params?.sort),this.#s()}#s(){this.#e=[],this.#n=[],this.#r.invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,this.#e)}reset(){super.reset(),this.#s()}handle(e){this.#e.push(e)}beginBatch(e){this.#r.invalidate(),Zm(e)&&(this.#e=[],this.facetBatches.set(Zl(e.facetId),this.#e))}complete(){if(this.#e=[],this.params.groupby?.length){if(this.facetBatches.size>1)throw Error(`TODO: Support faceted data!`);let e=this.facetBatches.get(void 0),t=this.params.groupby.map(e=>L(e)),n=t.length>1?Sn(e,...t):OB(e,t[0]);this.facetBatches.clear();for(let[e,t]of mB(n))this.facetBatches.set(e,t)}if(this.#a)for(let e of this.facetBatches.values())e.sort(this.#a);this.#d(),this.#c(),super.complete(),this.#u();for(let e of this.observers)e(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}#c(){if(this.children.length)for(let[e,t]of this.facetBatches.entries()){if(e){let t={type:`facet`,facetId:e};for(let e of this.children)e.beginBatch(t)}for(let e=0,n=t.length;e<n;e++)this._propagate(t[e])}}repropagate(){for(let e of this.children)e.reset();this.#c();for(let e of this.children)e.complete();this.#u()}getDomain(e,t,n){return this.#o.getDomain(e,()=>{let e=hz(t);if(n.constant)e.extend(n({}));else if(this.completed)for(let t of this.facetBatches.values())for(let r=0,i=t.length;r<i;r++)e.extend(n(t[r]));return e})}subscribeDomainChanges(e,t){return this.#o.subscribe(e,t)}getData(){switch(this.#l(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{let e=this.facetBatches;return{[Symbol.iterator]:function*(){for(let t of e.values())yield*t}}}}}visitData(e){this.#l();for(let t of this.facetBatches.values())for(let n=0;n<t.length;n++)e(t[n])}getItemCount(){let e=0;for(let t of this.facetBatches.values())e+=t.length;return e}#l(){if(!this.completed)throw Error(`Data propagation is not completed! No data are available.`)}#u(){this.#o.hasCachedDomains()&&this.#o.clear(),this.#o.notify()}#d(){this.#i=[];let e=this.facetBatches.values().next().value?.[0];if(e==null||!(`_uniqueId`in e))return;let t=0,n=[],r=this.#t;for(let[e,i]of this.facetBatches){this.#i.push({start:t,stop:t+i.length,facetId:e}),t+=i.length;for(let e=0,t=i.length;e<t;e++)n.push(r(i[e]))}this.#n=yB(n)}findDatumByUniqueId(e){if(!this.#n.length)return;let t=sn(e=>e.start).right,n=this.#t,r=sn(e=>n(i(e))).left,i=e=>{let n=t(this.#i,e),r=this.#i[n-1];if(!(!r||e>=r.stop))return this.facetBatches.get(r.facetId)[e-r.start]},a=r(this.#n,e);if(a>=0){let t=i(this.#n[a]);if(t&&n(t)===e)return t}}findDatumByKey(e,t){return this.#l(),this.#r.findDatum(e,t,this.facetBatches.values())}},DB=class{#e=new Map;#t=new Map;hasCachedDomains(){return this.#e.size>0}clear(){this.#e.clear()}getDomain(e,t){let n=this.#e.get(e);if(n)return n;{let n=t();return this.#e.set(e,n),n}}subscribe(e,t){let n=this.#t.get(e);return n||(n=new Set,this.#t.set(e,n)),n.add(t),()=>{let n=this.#t.get(e);n&&(n.delete(t),n.size===0&&this.#t.delete(e))}}notify(){if(this.#t.size===0)return;let e=new Set;for(let t of this.#t.values())for(let n of t)e.add(n);for(let t of e)t()}};function OB(e,t){let n=new Map;for(let r=0,i=e.length;r<i;r++){let i=e[r],a=t(i),o=n.get(a);o||(o=[],n.set(a,o)),o.push(i)}return n}function kB(e){if(e?.field){let t=Zl(e.field);if(t.length==1&&!t[0].includes(`.`)){let n=Zl(e.order)[0]??`ascending`,r=JSON.stringify(t[0]);return Function(`a`,`b`,`return a[${r}] ${n===`ascending`?`-`:`+`} b[${r}];`)}return gt(e.field,e.order)}}var AB=class extends sh{get behavior(){return 1}constructor(e){super(e),this.params=e,this.startAccessor=L(e.start),this.endAccessor=L(e.end),this.chromAccessor=e.chrom?L(e.chrom):e=>void 0,this.weightAccessor=e.weight?L(e.weight):e=>1,this.as={coverage:e.as??`coverage`,start:e.asStart??e.start,end:e.asEnd??e.end,chrom:e.asChrom??e.chrom},this.createSegment=Function(`start`,`end`,`coverage`,`chrom`,`return {`+Object.entries(this.as).filter(([e,t])=>t).map(([e,t])=>`${JSON.stringify(t)}: ${e}`).join(`, `)+`};`),this.ends=new UP}reset(){super.reset(),this.initialize()}initialize(){let e=this.as.coverage,t=this.as.end,n=this.as.chrom,r=this.startAccessor,i=this.endAccessor,a=this.chromAccessor,o=this.weightAccessor,s,c,l,u=0,d=NaN,f=this.ends;f.clear();let p=e=>{this._propagate(e),s=null},m=(n,r,i)=>{if(n==r)return;let a=!1;s&&(s[e]===i?(s[t]=r,a=!0):s[e]!=0&&p(s)),a||(s=this.createSegment(n,r,i,l))},h=()=>{let e;for(;(e=f.peekValue())!==void 0;)m(d,e,u),d=e,u-=f.pop();d=NaN,s&&p(s)};this.handle=e=>{let t=r(e),s;for(;(s=f.peekValue())!==void 0&&s<t;)m(d,s,u),d=s,u-=f.pop();if(n){let t=a(e);t!==c&&(h(),l=t,c=l)}isNaN(d)||m(d,t,u),d=t;let p=o(e);u+=p,f.push(p,i(e))},this.complete=()=>{h(),super.complete()},this.beginBatch=e=>{h(),c=null,super.beginBatch(e)}}};function jB(e,t,n=e=>+e,r=0,i=e.length){let a=new UP,o=i-r,s;for(s=0;s<t&&s<o;s++)a.push(s,n(e[r+s]));for(;s<o;s++){let t=n(e[r+s]);t>=a.peekValue()&&(a.push(s,t),a.pop())}let c=[],l;for(;(l=a.pop())!==void 0;)c.push(e[r+l]);return c.reverse()}var MB=class{constructor(e,t=-1/0,n=1/0){this.maxSize=e,this.lowerLimit=t,this.upperLimit=n;let r=this.maxSize*2+1;this.lowerLimits=new Float64Array(r),this.upperLimits=new Float64Array(r),this.lowerChildren=new Int32Array(r),this.upperChildren=new Int32Array(r),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,t,n=0){if(e>=this.lowerLimits[n]&&t<=this.upperLimits[n]){let r=this.lowerChildren[n];if(r){let i=this._findSlot(e,t,r);return i>=0?i:this._findSlot(e,t,this.upperChildren[n])}else return n}else return-1}reserve(e,t){if(t-e<=0)throw Error(`Cannot reserve an empty or negative-size slot!`);if(this.n+1>this.lowerLimits.length)return!1;let n=this._findSlot(e,t);if(n<0)return!1;let r=this.n++,i=this.n++;return this.lowerLimits[r]=this.lowerLimits[n],this.upperLimits[r]=e,this.lowerLimits[i]=t,this.upperLimits[i]=this.upperLimits[n],this.lowerChildren[n]=r,this.upperChildren[n]=i,!0}},NB=class extends sh{get behavior(){return 4}get domainSensitiveScaleChannels(){return[this.channel]}constructor(e,t){if(super(e),this.params=e,this._data=[],this.channel=e.channel??`x`,![`x`,`y`].includes(this.channel))throw Error(`Invalid channel: `+this.channel);this.startPosAccessor=L(this.params.pos),this.endPosAccessor=L(this.params.pos2??this.params.pos),this.startPosBisector=sn(this.startPosAccessor),this.endPosBisector=sn(this.endPosAccessor),this.scoreAccessor=L(this.params.score),this.widthAccessor=L(this.params.width),this.laneAccessor=this.params.lane?L(this.params.lane):e=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=t.getScaleResolution(this.channel);let n=()=>this._filterAndPropagate();this.schedule=()=>t.context.animator.requestTransition(n);let r=()=>this.schedule();this.resolution.addEventListener(`domain`,r),this.registerDisposer(()=>this.resolution.removeEventListener(`domain`,r));let i=t._addBroadcastHandler(`layoutComputed`,()=>this.schedule());this.registerDisposer(i)}complete(){let e=this.startPosAccessor;this._data.sort((t,n)=>e(t)-e(n));for(let e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new MB(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();let e=this.resolution.getScale(),t=this.resolution.getAxisLength();if(!t)return;for(let e of this.reservationMaps.values())e.reset();let n=e.domain(),r=jB(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,n[0]),this.startPosBisector.right(this._data,n[1]));for(let n of r){let r=e(this.startPosAccessor(n))*t,i=e(this.endPosAccessor(n))*t,a=i-r,o=this.widthAccessor(n)+this.padding*2,s=(r+i)/2,c=Math.max(0,(a-o)/2);if(c>0){let e=Math.max(0,o/2-s);s+=Math.min(e,c);let n=Math.max(0,o/2+s-t);s-=Math.min(n,c)}if(this.reservationMaps.get(this.laneAccessor(n)).reserve(s-o/2,s+o/2))if(this.params.asMidpoint){let r=Object.assign({},n);r[this.params.asMidpoint]=e.invert(s/t),this._propagate(r)}else this._propagate(n)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}},PB=class extends sh{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e;if(FB(this.params))e=this.params.expr;else if(IB(this.params)){let t=this.paramRuntime.findValue(this.params.param);if(!t)throw Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);e=ig(this.params,t)}else throw Error(`Invalid filter params: `+JSON.stringify(this.params));this.predicate=this.paramRuntime.watchExpression(e,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){this.predicate(e)&&this._propagate(e)}};function FB(e){return`expr`in e}function IB(e){return`param`in e}var LB=class extends sh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=e.index;if(e.fields){let n=Zl(e.fields).map(e=>L(e)),r=Zl(e.as||e.fields);if(n.length!==r.length)throw Error(`Lengths of "fields" (${n.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{let i=n.map((t,n)=>t(e)??[]),a=i[0].length;for(let o=0;o<a;o++){let a=Object.assign({},e);for(let e=0;e<n.length;e++)a[r[e]]=o<i[e].length?i[e][o]:null;t&&(a[t]=o),this._propagate(a)}}}else this.handle=e=>{for(let n=0;n<e.length;n++){let r=Object.assign({},e[n]);t&&(r[t]=n),this._propagate(r)}}}},RB=48;function*zB(e,t=`,`){let n=t.charCodeAt(0),r=0;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);i==n?(yield r,r=0):r=r*10+i-RB}yield r}var BB=class extends sh{get behavior(){return 1}constructor(e){super(e);let t=L(e.exons??`exons`),n=L(e.start??`start`),[r,i]=e.as||[`exonStart`,`exonEnd`];this.handle=e=>{let a=n(e),o=a,s=!0,c=t(e);for(let t of zB(c)){if(s)o=a+t;else{a=o+t;let n=Object.assign({},e);n[r]=o,n[i]=a,this._propagate(n)}s=!s}}}},VB=class extends sh{get behavior(){return 1}constructor(e){super(e);let t=Zl(e.field).map(e=>L(e)),n=Zl(e.separator),r=Zl(e.as||e.field);if(t.length!==n.length||t.length!==r.length)throw Error(`Lengths of "separator" (${n.length}), "fields" (${t.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{if(t.some(t=>!t(e)))return;let i=t.map((t,r)=>t(e).split(n[r]));HB(i,e);let a=i[0].length;for(let n=0;n<a;n++){let a=Object.assign({},e);for(let e=0;e<t.length;e++)a[r[e]]=i[e][n];this._propagate(a)}}}};function HB(e,t){let n=e.map(e=>e.length);if(!n.every(e=>e==n[0]))throw Error(`Mismatching number of elements in the fields to be split: `+JSON.stringify(t))}var UB=class extends sh{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=this.paramRuntime.watchExpression(this.params.expr,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){e[this.as]=this.fn(e),this._propagate(e)}},WB=class extends sh{get behavior(){return 2}constructor(e,t){e={channel:`x`,...e},super(e),this.params=e;let n=e.channel;if(![`x`,`y`].includes(n))throw Error(`Invalid channel: `+n);let r=t.getScaleResolution(n).getScale(),i=`genome`in r?r.genome():void 0;if(!i)throw Error(`LinearizeGenomicCoordinate transform requires a locus scale!`);let a=L(e.chrom),o=Zl(e.pos).map(e=>L(e)),s=Zl(e.as);if(o.length!=s.length)throw Error(`The number of "pos" and "as" elements must be equal!`);let c=Zl(e.offset),l;if(c.length==0)l=Array(o.length).fill(0);else if(c.length==1)l=Array(o.length).fill(c[0]);else if(c.length==o.length)l=c;else throw Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);let u=Function(`datum`,`chromOffset`,`posAccessors`,s.map((e,t)=>`datum[${JSON.stringify(e)}] = chromOffset + +posAccessors[${t}](datum) - ${l[t]};`).join(`
|
|
798
|
-
`)),d,f=0,p=e=>{if(e!==d){if(f=i.cumulativeChromPositions.get(e),f===void 0)return;d=e}return f};this.handle=e=>{let t=a(e),n=p(t);if(n===void 0)throw Error(`Unknown chromosome/contig "${t}" in datum: ${JSON.stringify(e)}`);u(e,n,o),this._propagate(e)}}},
|
|
805
|
+
chrM 16299`};function vR(e){if(!(e in _R))throw Error(`Unknown assembly: ${e}`);return _R[e].split(`
|
|
806
|
+
`).map(e=>{let t=e.split(` `);return{name:t[0],size:parseInt(t[1])}})}var yR=class{constructor(e){if(this.config={name:`custom`,...e},`baseUrl`in e)throw Error("The `baseUrl` property in genome config has been removed in GenomeSpy v0.52.0. Use `url` instead. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.");if(!wR(e))throw Error(`Not a genome configuration: `+JSON.stringify(e));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,ER(this.config))this.setChromSizes(this.config.contigs);else if(!TR(this.config)){let e=vR(this.config.name);if(e)this.setChromSizes(e);else throw Error(`Unknown genome: ${this.config.name}. Please provide contigs or a URL. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.`)}}get name(){return this.config.name}async load(e){if(TR(this.config))try{let t=gF(e,this.config.url),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);this.setChromSizes(bR(await n.text()))}catch(e){throw Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`,{cause:e})}}hasChrPrefix(){return this.chromosomes.some(e=>e.name.startsWith(`chr`))}setChromSizes(e){this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map;let t=0;this.startByIndex=[0];for(let n=0;n<e.length;n++){this.startByIndex.push(t);let r=e[n].size,i={...e[n],continuousStart:t,continuousEnd:t+r,continuousInterval:[t,t+r],index:n,number:n+1,odd:!(n&1)};this.chromosomes.push(i);let a=i.name.replace(/^chr/i,``);for(let e of[`chr`+a,`CHR`+a,`Chr`+a,i.number,``+i.number,a,i.name])this.cumulativeChromPositions.set(e,t),this.chromosomesByName.set(e,i);t+=i.size}this.totalSize=t}getExtent(){return[0,this.totalSize]}toContinuous(e,t){let n=this.cumulativeChromPositions.get(e);if(n===void 0)throw Error(`Unknown chromosome/contig: `+e);return n+ +t}toChromosome(e){if(e>this.totalSize)return;e=Math.floor(e);let t=dn(this.startByIndex,e)-1;if(t>0&&t<=this.chromosomes.length)return this.chromosomes[t-1]}toChromosomal(e){let t=this.toChromosome(e);if(t)return{chrom:t.name,pos:Math.floor(e)-t.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return gR(...this.toChromosomalInterval(e))}formatLocus(e){let t=this.toChromosomal(e);if(t)return hR(t)}toChromosomalInterval(e){let t=this.toChromosomal(e[0]+.5),n=this.toChromosomal(e[1]-.5);return n.pos+=1,[t,n]}toContinuousInterval(e){let[t,n]=e;return n||=t,[this.toContinuous(t.chrom,t.pos??0),this.toContinuous(n.chrom,n.pos??this.chromosomesByName.get(n.chrom)?.size)]}toDiscreteChromosomeIntervals(e){let t=e[0],n=e[1],r=[];if(t.chrom===n.chrom)r.push({chrom:t.chrom,startPos:t.pos,endPos:n.pos});else{let e=this.chromosomes.findIndex(e=>e.name===t.chrom),i=this.chromosomes.findIndex(e=>e.name===n.chrom);r.push({chrom:t.chrom,startPos:t.pos,endPos:this.chromosomes[e].size});for(let t=e+1;t<i;t++)r.push({chrom:this.chromosomes[t].name,startPos:0,endPos:this.chromosomes[t].size});r.push({chrom:n.chrom,startPos:0,endPos:n.pos})}return r}continuousToDiscreteChromosomeIntervals(e){return this.toDiscreteChromosomeIntervals([this.toChromosomal(e[0]),this.toChromosomal(e[1])])}parseInterval(e){let t=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(t){let e=t[1];if(t.slice(2).every(e=>e===void 0)){let t=this.getChromosome(e);return t?[t.continuousStart,t.continuousEnd]:void 0}let n=t[3]||e,r=parseInt(t[2].replace(/,/g,``)),i=t[4]===void 0?r:parseInt(t[4].replace(/,/g,``));return[this.toContinuous(e,r-1),this.toContinuous(n,i)]}}};function bR(e){return Kt(e).map(([e,t])=>({name:e,size:parseInt(t)}))}function xR(e){return Qe(e)&&`chrom`in e}function SR(e){return e.every(xR)}function CR(e){return SR(e)&&(e[1]??e[0]).pos!==void 0}function wR(e){return Qe(e)&&(`name`in e||TR(e)||ER(e))}function TR(e){return wR(e)&&`url`in e}function ER(e){return wR(e)&&`contigs`in e}var DR=1e6,OR=.65;function kR(){let e=pR().numberingOffset(1),t;e.genome=function(n){return arguments.length?(t=n,e):t},e.ticks=n=>{if(!t)return[];let r=e.domain(),i=r[1]-r[0],a=e.numberingOffset(),o=t.toChromosome(Math.max(r[0],0)),s=t.toChromosome(Math.min(r[1],t.totalSize-1)),c=Math.max(1,Math.min(n??10,Math.floor(i))),l=Mn(r[0],r[1],c);l<DR&&(l=Mn(r[0],r[1],c*OR)),l=Math.max(1,l);let u=[];for(let e=o.index;e<=s.index;e++){let n=t.chromosomes[e],i=Math.max(n.continuousStart+l,r[0]-(r[0]-n.continuousStart)%l),o=Math.min(n.continuousEnd-l/4,r[1]+1);for(let e=i;e<=o;e+=l){let t=e-a;t>=r[0]&&t<r[1]&&u.push(t)}}return u},e.tickFormat=(n,r)=>{if(!t)return;if(r)throw Error(`Locus scale's tickFormat does not support a specifier!`);let i=e.domain(),a=i[1]-i[0],o=e.numberingOffset(),s=Mn(i[0],i[1],Math.max(1,Math.min(n??10,Math.floor(a))))<DR?sr(`,`):sr(`.3s`),c=e=>e-t.toChromosome(e).continuousStart;return e=>s(c(e)+o)};let n=e.copy;return e.copy=()=>{let e=n(),r=t;return e.genome=function(t){return arguments.length?(r=t,e):r},e.genome(t)},e}function AR(e){return e.type==`locus`}function jR(e,t){let n=IR(e);return n?n.toChromosomal(t):t}function MR(e,t){let n=IR(e);return n&&xR(t)?n.toContinuous(t.chrom,t.pos):t}function NR(e,t){let n=IR(e);return n&&SR(t)?n.toContinuousInterval(t):t}function PR(e,t){let n=IR(e);return n?n.toChromosomalInterval(t):t}function FR(e){let t=IR(e);if(!t)throw Error(`No genome has been defined!`);return t.getExtent()}function IR(e){if(e&&`toChromosomal`in e)return e;if(e&&`genome`in e)return e.genome()}var LR=`locus`,RR=`index`,zR=5;function BR(e){let t=e.type;return!e.bins&&(t===`linear`||t===`pow`||t===`sqrt`)}function VR(e){return vm(e)&&![`sequential`,RR,LR].includes(e)}function HR(e){return e||{warn:(e,...t)=>console.warn(e,...t)}}var UR=Mt(`set.modified.clear.type.scheme.schemeExtent.schemeCount.domain.domainMin.domainMid.domainMax.domainRaw.domainImplicit.domainTransition.nice.zero.bins.range.rangeStep.round.reverse.interpolate.interpolateGamma.zoom.fp64.name`.split(`.`));function WR(e,t,n){n=HR(n);for(let r in e)if(!UR[r]){if(r===`padding`&&VR(t.type))continue;pt(t[r])?t[r](e[r]):n.warn(`Unsupported scale property: `+r)}let r=YR(t,e,n);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),ez(t,e,$R(t,e,r.count))}function GR(e,t){let n=!e.domain&&vm(e.type)?{...e,domain:[0,0]}:e,r=KR(n),i=L(r);if(!i)throw Error(`Unknown scale type: `+r);let a=i();return WR(n,a,t),a}function KR(e){var t=e.type,n=``,r;return t===`sequential`?Up+`-`+zp:(qR(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Up+`-`:r===3?Wp+`-`:``),(n+t||`linear`).toLowerCase())}function qR(e){let t=e.type;return vm(t)&&t!==`time`&&t!==`utc`&&(e.scheme||e.range&&e.range.length&&e.range.every(P))}function JR(e){if(!e.copy)return e;let t=e.copy();return t.type==null&&e.type!=null&&(t.type=e.type),t}function YR(e,t,n){if(!e.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};n=HR(n);let r=JR(e);var i=XR(r,t.domainRaw,n);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===`ordinal`&&t.domainImplicit?tu:void 0,applyOrdinalUnknown:!1};var a=t.domain,o=r.type,s=t.zero||t.zero===void 0&&BR(r),c,l;return a?(VR(o)&&t.padding&&a[0]!==$e(a)&&(a=ZR(o,a,t.range,t.padding,t.exponent,t.constant)),(s||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(c=(a=a.slice()).length-1||1,s&&(a[0]>0&&(a[0]=0),a[c]<0&&(a[c]=0)),t.domainMin!=null&&(a[0]=t.domainMin),t.domainMax!=null&&(a[c]=t.domainMax),t.domainMid!=null&&(l=t.domainMid,(l<a[0]||l>a[c])&&n.warn(`Scale domainMid exceeds domain min or max.`,l),a.splice(c,0,l))),r.domain(QR(o,a,n)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Pm(r,t.nice)||null),{domain:r.domain(),count:a.length,ordinalUnknown:o===`ordinal`&&t.domainImplicit?tu:void 0,applyOrdinalUnknown:o===Jp}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function XR(e,t,n){return t?(e.domain(QR(e.type,t,n)),t.length):-1}function ZR(e,t,n,r,i,a){n??=[0,1];var o=Math.abs($e(n)-n[0]),s=o/(o-2*r),c=e===`log`?lt(t,null,s):e===`sqrt`?ut(t,null,s,.5):e===`pow`?ut(t,null,s,i||1):e===`symlog`?dt(t,null,s,a||1):ct(t,null,s);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}function QR(e,t,n){return xm(e)&&Math.abs(t.reduce(function(e,t){return e+(t<0?-1:t>0?1:0)},0))!==t.length&&n.warn(`Log scale domain includes zero: `+Dt(t)),t}function $R(e,t,n){let r=t.bins;if(r&&!Ze(r)){let t=(r.start==null||r.stop==null)&&e.domain(),n=r.start==null?t[0]:r.start,i=r.stop==null?$e(t):r.stop,a=r.step;a||Ke(`Scale bins parameter missing step property.`),r=Vn(n,i+a,a)}return r?e.bins=r:e.bins&&delete e.bins,e.type===`bin-ordinal`&&(r?!t.domain&&!t.domainRaw&&(e.domain(r),n=r.length):e.bins=e.domain()),n}function ez(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=tz(r,t,n);else if(t.scheme&&(a=nz(r,t,n),pt(a))){if(e.interpolator)return e.interpolator(a);Ke(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&Sm(r))return e.interpolator(wm(iz(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate(Em(t.interpolate,t.interpolateGamma)):pt(e.round)?e.round(i):pt(e.rangeRound)&&e.interpolate(i?Jd:Gd),a&&e.range(iz(a,t.reverse))}function tz(e,t,n){e!==`band`&&e!==`point`&&Ke(`Only band and point scales support rangeStep.`);var r=(t.paddingOuter==null?t.padding:t.paddingOuter)||0,i=e===`point`?1:(t.paddingInner==null?t.padding:t.paddingInner)||0;return[0,t.rangeStep*Lp(n,i,r)]}function nz(e,t,n){var r=t.schemeExtent,i=t.schemeCount,a,o;return Ze(t.scheme)?o=wm(t.scheme,t.interpolate,t.interpolateGamma):(P(t.scheme)?a=t.scheme.toLowerCase():(a=t.scheme.name.toLowerCase(),r=t.scheme.extent??r,i=t.scheme.count??i),o=Nm(a),o||Ke(`Unrecognized scheme name: ${t.scheme}`)),n=e===`threshold`?n+1:e===`bin-ordinal`?n-1:e===`quantile`||e===`quantize`?+i||zR:n,Sm(e)?rz(o,r,t.reverse):pt(o)?Tm(rz(o,r),n):e===`ordinal`?o:o.slice(0,n)}function rz(e,t,n){return pt(e)&&(t||n)?Cm(e,iz(t||[0,1],n)):e}function iz(e,t){return t?e.slice().reverse():e}var az=class{#e;#t=new Set;#n;#r;#i;#a;#o=0;constructor({getParamRuntime:e,onRangeChange:t,onDomainChange:n,getGenomeStore:r}){this.#n=e,this.#r=t,this.#i=n,this.#a=r}get scale(){return this.#e}getLocusGenome(e){let t=this.#a?.();if(!t)throw Error(`No genome has been defined!`);return e?t.getGenome(e):t.getGenome()}createScale(e){let t=GR({...this.#c(e),range:void 0});return t.props=e,`unknown`in t&&t.unknown(null),this.#e=t,this.#s(e),this.#l(),this.#u(),this.#e}#s(e){let t=this.#e;!t||!AR(t)||t.genome(this.getLocusGenome(e.assembly))}reconfigureScale(e){let t=this.#e;!t||t.type==`null`||(WR({...this.#c(e),range:void 0},t),t.props=e,this.#l())}withDomainNotificationsSuppressed(e){this.#o+=1;try{e()}finally{--this.#o}}#c(e){let{assembly:t,domainIndexer:n,__rangeExprScope:r,...i}=e;return i}#l(){let e=this.#e;if(!e)return;let t=e.props;this.#t.forEach(e=>e.invalidate()),this.#t.clear();let n=t.__rangeExprScope?.paramRuntime??this.#n(),r=sz({range:t.range,reverse:t.reverse,createExpression:e=>n.createExpression(e),registerExpr:e=>this.#t.add(e)});if(!r)return;if(`values`in r){e.range(r.values);return}let i=()=>e.range(r.evaluate());r.setup(i),i()}#u(){let e=this.#e;if(!e)return;let t=e.range,n=e.domain,r=()=>this.#r?.();oz(e,{onRangeChange:r,onDomainChange:()=>{this.#o>0||this.#i?.()},range:t,domain:n}),r()}dispose(){this.#t.forEach(e=>e.invalidate()),this.#t.clear()}};function oz(e,{onRangeChange:t,onDomainChange:n,range:r,domain:i}){typeof r==`function`&&(e.range=(function(e){if(arguments.length)r(e),t?.();else return r()})),typeof i==`function`&&(e.domain=(function(e){if(arguments.length)i(e),n?.();else return i()}))}function sz({range:e,reverse:t,createExpression:n,registerExpr:r}){if(!e||!Ze(e))return null;let i=(e,t)=>t?e.slice().reverse():e;if(e.some(z)){let a;return{dynamic:!0,evaluate:()=>i(a.map(e=>e()),t),setup:t=>{a=e.map(e=>{if(z(e)){let i=n(e.expr);return i.subscribe(t),r(i),()=>i(null)}return()=>e})}}}return{dynamic:!1,values:i(e,t)}}function cz(e,t,n){if(n||=[],e.some(e=>e===null)){if(e.every(e=>e===null))return null;throw console.warn(e),Error(`Cannot merge objects with nulls!`)}let r={},i=(e,t)=>e===t||lz(e)&&lz(t)||lz(e)&&t===!0||e===!0&&Qe(t)||Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>e===t[n]),a=e=>{for(let a in e){let o=e[a];if(!n.includes(a)&&o!==void 0)if(r[a]!==void 0&&!i(r[a],o))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(e[a])}). Using ${JSON.stringify(r[a])}.`);else{let e=r[a];if(lz(e))lz(o)&&(r[a]=cz([e,o],a));else if(lz(o)){if(!(e===!0||e===void 0))throw Error(`Bug in merge! Target is: `+e);r[a]=cz([{},o],a)}else r[a]=o}}};for(let t of e)a(t);return r}function lz(e){return Qe(e)&&!Array.isArray(e)}var uz={nominal:`nominalColorScheme`,ordinal:`ordinalColorScheme`,quantitative:`quantitativeColorScheme`},dz=new Set([`rect`]),fz=new Set([`shape`,`size`,`angle`,`heatmap`,`ramp`,`diverging`]);function pz(e){return typeof e==`string`||typeof e==`object`&&!!e}function mz(e){return fz.has(e)}function hz(e,t){if(mz(t))return yz(e)[t]}function gz(e){if([`nominal`,`ordinal`,`quantitative`,`index`,`locus`].includes(e))return e}function _z(e){if(!e)return{};let t={...e};for(let e of[`nominal`,`ordinal`,`quantitative`,`index`,`locus`,`nominalColorScheme`,`ordinalColorScheme`,`quantitativeColorScheme`,`indexColorScheme`,`locusColorScheme`])delete t[e];return t}function vz(e,t){let n=gz(t);return fP(e.flatMap(e=>{let t=e.scale;return[t,t&&n?t[n]:void 0]}))}function yz(e){return fP(e.map(e=>e.range))}function bz(e,{channel:t,dataType:n,isExplicitDomain:r,markTypes:i,hasDomainMid:a}){let o=vz(e,n),s=yz(e),c={..._z(o)};if(r?c.zero=!1:c.zero===void 0&&o.zero!==void 0&&(c.zero=o.zero),Hh(t)&&c.nice===void 0&&(c.nice=o.nice===void 0?!r:o.nice),Jh(t)&&c.scheme===void 0)if(n==`quantitative`){let e=a||o.domainMid!==void 0?s.diverging:i?.length&&i.every(e=>dz.has(e))?s.heatmap:s.ramp,t=pz(e)?e:o.quantitativeColorScheme;pz(t)&&(c.scheme=t)}else{let e=o[uz[n]??uz.quantitative];pz(e)&&(c.scheme=e)}else Yh(t)&&c.range===void 0?c.range=t==`shape`?s.shape??[]:[]:t==`size`&&c.range===void 0?c.range=s.size:t==`angle`&&c.range===void 0&&(c.range=s.angle);return c}var xz=`quantitative`,Sz=`ordinal`,Cz=`nominal`;function wz(e,t){if(t==`index`||t==`locus`){if(Vh(e))return t;throw Error(e+` does not support `+t+` data type. Only positional channels do.`)}let n={x:[`band`,`band`,`linear`],y:[`band`,`band`,`linear`],size:[void 0,`point`,`linear`],opacity:[void 0,`point`,`linear`],fillOpacity:[void 0,`point`,`linear`],strokeOpacity:[void 0,`point`,`linear`],color:[`ordinal`,`ordinal`,`linear`],fill:[`ordinal`,`ordinal`,`linear`],stroke:[`ordinal`,`ordinal`,`linear`],strokeWidth:[void 0,void 0,`linear`],shape:[`ordinal`,`ordinal`,void 0],dx:[void 0,void 0,`null`],dy:[void 0,void 0,`null`],angle:[void 0,void 0,`linear`],sample:[`null`,void 0,void 0]},r=[`sample`].includes(e)?`null`:n[e]?n[e][[Cz,Sz,xz].indexOf(t)]:t==`quantitative`?`linear`:`ordinal`;if(r===void 0)throw Error(`Channel "`+e+`" is not compatible with "`+t+`" data type. Use of a proper scale may be needed.`);return r}function Tz(e,t){Hh(t)&&e.type!==`ordinal`&&(e.range=[0,1]),t==`opacity`&&vm(e.type)&&e.clamp===void 0&&(e.clamp=!0)}function Ez({channel:e,dataType:t,orderedMembers:n,isExplicitDomain:r,configScopes:i}){let a=n,o=a.map(e=>typeof e.view.getMarkType==`function`?e.view.getMarkType():void 0).filter(e=>!!e),s=cz(a.map(e=>e.channelDef.scale).filter(e=>e!==void 0),`scale`,[`domain`]);if(s===null||s.type==`null`)return{type:`null`};let c={...bz(i,{channel:e,dataType:t,isExplicitDomain:r,markTypes:o,hasDomainMid:s.domainMid!==void 0}),...s};if(c.type||=wz(e,t),typeof c.range==`string`){if(!mz(c.range))throw Error(`Unknown named scale range "`+c.range+`". Supported names: shape, size, angle, heatmap, ramp, diverging.`);let t=hz(i,c.range);if(t===void 0)throw Error(`Named scale range "`+c.range+`" is not configured in config.range.`);Jh(e)&&(typeof t==`string`||typeof t==`object`&&t&&!Array.isArray(t))?(c.scheme=t,delete c.range):c.range=t}if(e==`y`&&ym(c.type)&&c.reverse==null&&(c.reverse=!0),c.range&&c.scheme&&delete c.scheme,c.domainTransition===void 0&&(c.domainTransition=!a.some(e=>z(e.channelDef.scale?.domain))),Array.isArray(c.range)&&c.range.some(z)&&a.length>0){let e=a.find(e=>e.channelDef.scale?.range!==void 0)?.view;e&&(c.__rangeExprScope=e)}if(!(`zoom`in c)){let e=vz(i,t);e.zoom===void 0?[`index`,`locus`].includes(c.type)&&(c.zoom=!0):c.zoom=e.zoom}return Tz(c,e),c}function Dz(e){return e===`index`||e===`locus`}function Oz(e,t){return Dz(e)?jz(t):t}function kz(e,t){return Dz(e)?Mz(t):t}function Az(e,t){return t&&Dz(e)?jz(t):t}function jz(e){return[e[0],e[1]+Nz(e)]}function Mz(e){return[e[0],e[1]-Nz(e)]}function Nz(e){return e[1]>=e[0]?1:-1}function Pz(e,t){let n=e.findRuntimeForParam(t);if(!n)throw Error(`Selection domain parameter "${t}" was not found.`);return n}function Fz(e,t){if(e){if(!ig(e))throw Error(`Selection domain parameter "${t}" must be an interval selection.`);return e}}function Iz(e,t,n){let r=e.paramRuntime.findRuntimeForParam?Pz(e.paramRuntime,t):e.paramRuntime;return{runtime:r,selection:Fz(r.getValue?r.getValue(t):e.paramRuntime.findValue(t),t)}}function Lz(e,t,n,r){let i=[];return e.visit(e=>{let a=e.paramRuntime?.paramConfigs?.get(n);if(!a||!hg(a))return;let o=sg(a.select);!lg(o)||!o.encodings?.includes(r)||e.paramRuntime.findRuntimeForParam(n)===t&&i.push({view:e,param:a})}),i}function Rz(e,t,n,r){let i=new Set,a=[e.getLayoutAncestors?.(),e.getDataAncestors?.(),[e]];for(let e of a)for(let a of e??[]){if(!a||i.has(a))continue;i.add(a);let e=a.paramRuntime?.paramConfigs?.get(n);if(!e||!hg(e))continue;let o=sg(e.select);if(!(!lg(o)||!o.encodings?.includes(r))&&a.paramRuntime.findRuntimeForParam?.(n)===t)return!0}return!1}function zz(e,t,n={}){if(!e||e.length!==2)return;let r=Number(e[0]),i=Number(e[1]);if(!Number.isFinite(r)||!Number.isFinite(i))return;let a=Math.min(r,i),o=Math.max(r,i);if(a=Math.max(t[0],a),o=Math.min(t[1],o),!(a>o)&&!(n.roundToIntegers&&(a=Math.ceil(a),o=Math.ceil(o),a=Math.max(t[0],a),o=Math.min(t[1],o),a>o)))return[a,o]}var Bz=class e extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(t){if(t instanceof e&&t.type!=this.type)throw Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(let e of t)this.extend(e);return this}extendAllWithAccessor(e,t){for(let n of e)this.extend(t(n));return this}},Vz=class extends Bz{constructor(){super(),this.type=`quantitative`}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}},Hz=class extends Bz{constructor(){super(),this.type=`ordinal`,this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)||this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this}},Uz=class extends Hz{constructor(){super(),this.type=`nominal`}},Wz=class extends Bz{constructor(e){super();let t=0;for(let n=1;n<e.length;n++)t+=Math.sign(e[n]-e[n-1]);if(Math.abs(t)!=e.length-1)throw Error(`Piecewise domain must be strictly increasing or decreasing: `+JSON.stringify(e));e.forEach(e=>this.push(e))}extend(e){if(this.includes(e))return this;throw Error(`Piecewise domains are immutable and cannot be unioned!`)}},Gz={quantitative:Vz,index:Vz,locus:Vz,nominal:Uz,ordinal:Hz};function Kz(e,t){if(e==`quantitative`&&qz(t)){let n=new Wz(t);return n.type=e,n}else if(Gz[e]){let n=new Gz[e];return n.type=e,t&&n.extendAll(t),n}throw Error(`Unknown type: `+e)}function qz(e){return e&&e.length>0&&e.length!=2&&e.every(e=>typeof e==`number`)}var Jz=class{#e;#t;#n;#r;#i;#a;#o;#s=void 0;#c=!0;#l=new Map;#u=new WeakMap;constructor({getActiveMembers:e,getAllMembers:t,getDataMembers:n,getType:r,getLocusExtent:i,fromComplexInterval:a}){this.#e=e,this.#t=t??e,this.#n=n??e,this.#r=r,this.#i=i,this.#a=a}get initialDomainSnapshot(){return this.#o}hasConfiguredDomain(e={}){return!!this.getConfiguredDomain(e)}hasSelectionConfiguredDomain(){return this.getSelectionConfiguredDomainBindingInfo(),!!this.#s}getSelectionConfiguredDomainBindingInfo(){return this.#s||!this.#c||this.getConfiguredDomain(),this.#s}getSelectionConfiguredDomainInfo(){let e=this.getSelectionConfiguredDomainBindingInfo();if(e)return{param:e.param,encoding:e.encoding}}invalidateConfiguredDomain(){this.#c=!0,this.#s=void 0,this.#l.clear()}getDefaultDomain(e=!1,t){let n=this.#r();return oB(n,this.#i,e&&n!==`locus`?this.getDataDomain():void 0,t)}getConfiguredOrDefaultDomain(e=!1,t,n={}){return this.getConfiguredDomain(n)??this.getDefaultDomain(e,t)}getConfiguredDomain(e={}){let t=e.includeSelectionInitial??!0;if(!this.#c&&this.#l.has(t))return this.#l.get(t);let n=Yz(this.#e(),this.#a,t);return nB(this.#t(),n.selectionRef),this.#s=n.selectionRef,this.#l.set(t,n.domain),this.#c=!1,n.domain}getDataDomain(){return aB(this.#n(),this.#r,e=>this.#d(e))}captureInitialDomain(e,t,n){if(!this.#o&&vm(e.type)){let t=n??e.domain();Et(t)>0&&(this.#o=t)}return t?!1:(this.#o=n??e.domain(),!0)}#d(e){let t=this.#u.get(e);if(t)return t;let n=e.view.mark.encoders;if(!n)return[];let r=n[e.channel];if(!r)return[];let i=wh(r);if(i.length===0)return[];let a=i.filter(ph).filter(e=>!e.channelDef.domainInert);return this.#u.set(e,a),a}};function Yz(e,t,n){let r=Array.from(e).filter(e=>e.contributesToDomain).filter(e=>e.channelDef.scale?.domain),i={domains:[],selectionRef:void 0,selectionRuntime:void 0,selectionDescription:void 0,hasLiteralDomain:!1};for(let e of r){let r=Xz(e,t,n);if(r.kind===`selection`){Zz(i,r);continue}Qz(i,r)}return $z(i)}function Xz(e,t,n){let r=e.channelDef.scale.domain;return iB(r)?{kind:`selection`,...eB(e,r,t,n)}:z(r)?{kind:`literal`,domain:tB(e.channelDef.type,e.view.paramRuntime.createExpression(r.expr)(),t)}:{kind:`literal`,domain:tB(e.channelDef.type,r,t)}}function Zz(e,t){if(e.hasLiteralDomain)throw Error(`Cannot mix selection-driven and literal configured domains on a shared scale.`);if(e.selectionRef&&(e.selectionRef.runtime!==t.runtime||e.selectionRef.param!==t.param||e.selectionRef.encoding!==t.encoding))throw Error(`Conflicting selection domain references on a shared scale: `+e.selectionDescription+` vs `+t.description+`.`);e.selectionRuntime=t.runtime,e.selectionDescription=t.description,e.selectionRef={param:t.param,encoding:t.encoding,hasInitial:(e.selectionRef?.hasInitial??!1)||t.hasInitial,runtime:t.runtime},t.domain&&e.domains.push(t.domain)}function Qz(e,t){if(e.selectionRuntime)throw Error(`Cannot mix literal configured domains with selection-driven domains on a shared scale.`);e.hasLiteralDomain=!0,e.domains.push(t.domain)}function $z(e){return e.domains.length>0?{domain:e.domains.reduce((e,t)=>e.extendAll(t)),selectionRef:e.selectionRef}:e.selectionRuntime?{domain:void 0,selectionRef:e.selectionRef}:{domain:void 0,selectionRef:void 0}}function eB(e,t,n,r){let i=t.param,a=rB(e.channel,t,i),o=Iz(e.view,i,a),s=t.initial!==void 0,c=o.selection?.intervals[a],l=i+`.`+a;return!c||c.length!==2?{domain:r&&t.initial?tB(e.channelDef.type,t.initial,n):void 0,description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}:{domain:Kz(e.channelDef.type,n(c)),description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}}function tB(e,t,n){let r=n(t);return Kz(e,e===`locus`&&SR(t)&&!CR(t)?r:Oz(e,r))}function nB(e,t){if(!t||e.size<2||!Array.from(e).some(e=>Rz(e.view,t.runtime,t.param,t.encoding)))return;let n=Array.from(new Set(Array.from(e).filter(e=>e.contributesToDomain).map(e=>e.view.getPathString?.()??e.view.name??`(unknown)`)));throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use a shared ${t.encoding} scale when the same interval selection is defined in that shared view group (${n.join(`, `)}). This creates a feedback loop between brushing and the scale domain. Make the linked ${t.encoding} scale independent, for example with "resolve": { "scale": { "${t.encoding}": "independent" } } on the common ancestor.`)}function rB(e,t,n){if(t.encoding)return t.encoding;let r=qh(e);if(r===`x`||r===`y`)return r;throw Error(`Selection domain reference "${n}" on channel "${e}" requires an explicit "encoding" ("x" or "y").`)}function iB(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.param==`string`}function aB(e,t,n){let r=t(),i=new Map;for(let t of e){if(!t.contributesToDomain)continue;let e=n(t);if(e.length===0)continue;let a=t.view.getCollector();for(let t of e){let e=_h(t,r),n=a??null,o=i.get(n);if(o||(o=new Map,i.set(n,o)),o.has(e))continue;let s;if(a)s=a.getDomain(e,r,t);else if(t.constant)s=Kz(r),s.extend(t({}));else continue;o.set(e,s)}}if(i.size===0)return;let a=Kz(r);for(let e of i.values())for(let t of e.values())a.extendAll(t);return a}function oB(e,t,n,r){return e==`locus`?t(r):e==`index`?Az(e,n)??[]:n??[]}function sB(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function cB(e,t,n){return e*(t/e)**+n}var lB=e=>new Promise(t=>setTimeout(t,e));function uB(){return{canceled:!1}}function dB(e){let t=e.requestAnimationFrame||window.requestAnimationFrame,n=e.signal,r=e.cancelToken,i=()=>new Promise((i,a)=>{if(r?.canceled)return i();if(n?.aborted)return a(`aborted`);let o=performance.now(),s=o+(e.duration||1e3),c=typeof e.from==`number`?e.from:0,l=typeof e.to==`number`?e.to:1,u=e.easingFunction||(e=>e),d=e=>(e-o)/(s-o),f=e=>e*(l-c)+c,p=e=>Math.max(0,Math.min(1,e)),m=o=>{if(r?.canceled){i();return}n?.aborted?a(`aborted`):(e.onUpdate(f(u(p(d(o))))),o<s?t(m):(e.onUpdate(f(u(1))),i()))};t(m)});return e.delay?r?.canceled?Promise.resolve():n?.aborted?Promise.reject(`aborted`):lB(e.delay).then(i):i()}function fB(e,t,n,r,i={}){let a=i.onUnsupported??`throw`;switch(e.type){case`linear`:case`index`:case`locus`:return ct(t,n,r);case`log`:return lt(t,n,r);case`pow`:case`sqrt`:return ut(t,n,r,e.exponent());case`symlog`:return dt(t,n,r,e.constant());default:if(a===`identity`)return t;throw Error(`Zooming is not implemented for: `+e.type)}}var pB=class{#e;#t;#n;#r;#i;#a;#o;#s=null;constructor({getScale:e,getAnimator:t,renderImmediately:n,getInitialDomainSnapshot:r,getResetDomain:i,fromComplexInterval:a,getGenomeExtent:o}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o}getZoomExtent(){let e=this.#e(),t=e.props.zoom;return hB(e,t,this.#a,this.#o,this.#r)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){let e=this.#e().type;return vm(e)&&!ym(e)}getDomainChangeAction(e,t){return Yl(t,e)?`none`:this.isZoomable()?`restore`:this.isZoomingSupported()?`animate`:`notify`}isZoomed(){return this.isZoomingSupported()&&!Yl(this.#i(),this.#e().domain())}zoom(e,t,n){if(!this.isZoomingSupported())return!1;let r=this.#e(),i=r.domain(),a=gB(r,i,e,t,n),o=this.getZoomExtent();return a=ft(a,o[0],o[1]),[0,1].some(e=>a[e]!=i[e])?(r.domain(a),!0):!1}async zoomTo(e,t=!1){let{duration:n,renderImmediately:r}=mB(t);if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let i=this.#e(),a=_B(i.type,e,this.#a),o=this.#t(),s=i.domain();if(n>0&&s.length==2){if(r)throw Error(`renderImmediately is not supported for animated zooms.`);let e=s[1]-s[0],t=a[1]-a[0],c=s[0]+e/2,l=a[0]+t/2,u=s[0]==a[0],d=s[1]==a[1];this.#c();let f=uB();this.#s=f,await o.transition({duration:n,easingFunction:sB,cancelToken:f,onUpdate:n=>{let r=cB(e,t,n),a=e==t?n:(e-r)/(e-t),o=a*l+(1-a)*c,f=[u?s[0]:o-r/2,d?s[1]:o+r/2];i.domain(f)}}),this.#s===f&&(this.#s=null),i.domain(a)}else this.#c(),i.domain(a),r?this.#n():o?.requestRender()}#c(){this.#s&&=(this.#s.canceled=!0,null)}resetZoom(){if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let e=this.#e(),t=e.domain(),n=this.#i();return[0,1].some(e=>n[e]!=t[e])?(e.domain(n),!0):!1}getZoomLevel(){return this.isZoomable()?Et(this.getZoomExtent())/Et(this.#e().domain()):1}};function mB(e){if(e===void 0)return{duration:0,renderImmediately:!1};if(St(e))return{duration:e?700:0,renderImmediately:!1};if(typeof e==`number`)return{duration:e,renderImmediately:!1};let t=e.duration??0;return{duration:St(t)?t?700:0:t,renderImmediately:e.renderImmediately===!0}}function hB(e,t,n,r,i){return vB(t)&&Ze(t.extent)?_B(e.props.type,t.extent,n):t&&e.props.type==`locus`?r():i()}function gB(e,t,n,r,i){let a=[...t],o=e.invert(r);switch(e.props.reverse&&(i=-i),`align`in e&&(o+=e.align()),e.type){case`linear`:case`index`:case`locus`:a=at(a,i||0);break;case`log`:a=ot(a,i||0);break;case`pow`:case`sqrt`:a=j(a,i||0,e.exponent());break;case`symlog`:if(i!==0)throw Error(`Panning is not implemented for: `+e.type);break;default:throw Error(`Zooming is not implemented for: `+e.type)}return fB(e,a,o,n)}function _B(e,t,n){let r=e===`locus`?n(t):t;return e===`locus`&&SR(t)&&!CR(t)?r:Oz(e,r)}function vB(e){return Qe(e)}function yB(e){let t=e.view.getPathString(),n=e.channel??``;return t+`|`+n}function bB(e){return Array.from(e).sort((e,t)=>yB(e).localeCompare(yB(t)))}L(`index`,pR,[`continuous`]),L(`locus`,kR,[`continuous`]),L(`null`,MM,[]);var xB=class{#e=new Set;#t=new Set;#n;#r={domain:new Set,range:new Set};#i;#a;#o;#s;#c=!1;#l=[];#u=0;#d=[];#f=!1;#p=void 0;#m;#h=0;#g=0;#_=!1;constructor(e,t){this.channel=e,this.type=null,this.name=void 0,this.#m=t,this.#a=new Jz({getActiveMembers:()=>this.#b(),getAllMembers:()=>this.#e,getDataMembers:()=>this.#b(this.#t),getType:()=>this.type,getLocusExtent:e=>this.#S(e),fromComplexInterval:this.fromComplexInterval.bind(this)}),this.#i=new az({getParamRuntime:()=>this.#y.paramRuntime,onRangeChange:()=>this.#w(`range`),onDomainChange:()=>this.#w(`domain`),getGenomeStore:()=>this.#x.genomeStore}),this.#o=new pB({getScale:()=>this.getScale(),getAnimator:()=>this.#x.animator,renderImmediately:()=>this.#x.renderImmediately(),getInitialDomainSnapshot:()=>this.#a.initialDomainSnapshot,getResetDomain:()=>this.#k(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>this.#S()})}get#v(){let e=this.#e.values().next().value;if(!e)throw Error(`ScaleResolution has no members!`);return e.view}get#y(){return this.#m??this.#v}#b(e=this.#e){let t=new Set;for(let n of e){let e=n.view;e.isConfiguredVisible()&&(!e.isDataInitialized()&&!n.channelDef?.scale?.domain||t.add(n))}return t}get#x(){return this.#y.context}get zoomExtent(){return(this.#i.scale&&vm(this.#i.scale.type)&&this.#o.getZoomExtent())??[-1/0,1/0]}#S(e){return FR(this.#C(e))}#C(e){if(this.type===`locus`)return this.#i.scale??this.#i.getLocusGenome(e)}addEventListener(e,t){this.#r[e].add(t)}removeEventListener(e,t){this.#r[e].delete(t)}#w(e){e===`domain`&&this.#u===0&&this.syncLinkedSelectionFromDomain();for(let t of this.#r[e].values())t({type:e,scaleResolution:this})}#T(e){this.#u+=1;try{e()}finally{--this.#u}}syncLinkedSelectionFromDomain(){let e=this.#a.getSelectionConfiguredDomainBindingInfo();if(!e||!this.isZoomable())return;let t=Fz(e.runtime.getValue(e.param),e.param);if(!t)return;let n=this.#E(this.getScale().domain());if(!n)return;let r=this.#E(this.#a.getDefaultDomain(!0)),i=r&&Yl(n,r)?null:n;SB(t.intervals[e.encoding]??null,i)||e.runtime.setValue(e.param,{...t,type:`interval`,intervals:{...t.intervals,[e.encoding]:i}})}#E(e){return zz(e,this.zoomExtent)}#D(){return this.#a.getSelectionConfiguredDomainBindingInfo()}#O(){return!this.#f}#k(e=!1,t){return this.#a.getConfiguredOrDefaultDomain(e,t,{includeSelectionInitial:this.#O()})}#A(){for(let e of this.#e)if(e.contributesToDomain&&e.channelDef.scale?.domain!==void 0)return!0;return!1}#j(e){let t=Fz(e.runtime.getValue(e.param),e.param);if(!t)return null;let n=t.intervals[e.encoding];return n&&n.length===2?n:null}#M(e,t){t?this.#f=!1:e&&(this.#f=!0)}#N(e){let t=CB(e),{channel:n,channelDef:r}=t,i=r.type==null&&this.type;if(n!=`sample`&&!r.type&&!Gh(n)&&!i)throw Error(`The "type" property must be defined in channel definition: "${n}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);let a=n==`sample`?`nominal`:r.type,o=r?.scale?.name,s=r.scale?.type??(a===`index`||a===`locus`?a:void 0);if(s&&[`index`,`locus`].includes(s)&&!Vh(this.channel))throw Error(`Index and locus scales are only supported on positional channels (x/y). Channel "${this.channel}" resolves to scale type "${s}".`);if(o){if(this.name!==void 0&&o!=this.name)throw Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!i){if(!this.type)this.type=a;else if(a!==this.type&&!Gh(n))throw Error(`Can not use shared scale for different data types: ${this.type} vs. ${a}. Use "resolve: independent" for channel ${this.channel}`)}return this.#e.add(t),t.contributesToDomain&&this.#t.add(t),t}#P(){this.#_=!1,this.#U(),this.#G(),this.#R(),this.#z()}#F(){this.#g>0?this.#_=!0:this.#P()}static registerInBatch(e,t){let n=Array.from(e);for(let e of n)e.#g++;try{return t()}finally{for(let e of n)e.#g--,e.#g===0&&e.#_&&e.#P()}}registerMember(e){let t=this.#N(e);return this.#F(),()=>{let e=this.#e.delete(t);return e&&(this.#t.delete(t),this.#F()),e&&this.#e.size===0}}dispose(){this.#I(),this.#L(),this.#r.domain.clear(),this.#r.range.clear(),this.#i.dispose()}#I(){for(let e of this.#l)e();this.#l=[],this.#p=void 0}#L(){for(let e of this.#d)e();this.#d=[]}#R(){if(this.#I(),this.#e.size===0)return;let e=this.#D();e&&(this.#p=this.#j(e),this.#l.push(e.runtime.subscribe(e.param,()=>{let t=this.#p,n=this.#j(e);this.#M(t,n),this.#p=n,this.#G(),this.reconfigureDomain()})))}#z(){if(this.#L(),this.#e.size===0)return;let e=()=>{this.#G(),this.reconfigureDomain()};for(let t of this.#e){if(!t.contributesToDomain)continue;let n=t.channelDef.scale?.domain;if(!z(n))continue;let r=t.view.paramRuntime.createExpression(n.expr).subscribe(e);this.#d.push(r)}}#B(){for(let e of this.#e)if(e.view.hasRendered())return!0;return!1}registerCollectorSubscriptions(e,t){let n=new Set;for(let e of t)e.channelDef.domainInert||n.add(_h(e,this.type));if(n.size===0)return()=>void 0;let r=()=>{this.reconfigureDomain()},i=[];for(let t of n)i.push(e.subscribeDomainChanges(t,r));return()=>{for(let e of i)e()}}isDomainDefinedExplicitly(){return this.#A()}isDomainInitialized(){let e=this.#i.scale;if(!e)return!1;let t=e.domain();return vm(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#V(){return eP(this,`mergedScaleProps`,()=>{let e=Ez({channel:this.channel,dataType:this.type,orderedMembers:this.#W(),isExplicitDomain:this.isDomainDefinedExplicitly(),configScopes:this.#y.getConfigScopes()});return this.#K(e),e})}#H(){tP(this,`mergedScaleProps`)}#U(){this.#n=void 0}#W(){return this.#n||=bB(this.#e),this.#n}#G(){this.#a.invalidateConfiguredDomain(),this.#H()}#K(e){let t=this.#D();if(!t||e===null||e.type===`null`)return;let n=vm(e.type)&&!ym(e.type)&&!!e.zoom;if(t.hasInitial&&!n)throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use "initial" with a non-zoomable ${this.channel} scale. Enable zoom on the linked scale or remove "initial".`)}getAssemblyRequirement(){let e=this.#V();return e===null||e.type===`null`||e.type!==`locus`?{assembly:void 0,needsDefaultAssembly:!1}:{assembly:e.assembly,needsDefaultAssembly:e.assembly===void 0}}getResolvedScaleType(){let e=this.#V();if(!(e===null||e.type===`null`))return e.type}#q(e=!1){let t=this.#V();if(t===null||t.type==`null`)return{type:`null`};let n={...t};this.#h+=1;let r;try{r=this.#k(e,n.type===`locus`?n.assembly:void 0)}finally{--this.#h}if(ym(n.type)){let t=this.isDomainDefinedExplicitly(),i=this.#J(t);if(r!=null){if(t&&i.domain().length>0&&!Yl(i.domain(),r))return this.#s=void 0,this.#q(e);i.addAll(r);let a=new Set(r),o=i.domain().filter(e=>a.has(e));n.domain=o.length>0?o:new Uz}else{let e=i.domain();n.domain=e.length>0?e:new Uz}n.domainIndexer=i}else r&&r.length>0&&(n.domain=r);return!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),n}#J(e){return(!this.#s||this.#c!==e)&&(this.#s=LN(),this.#c=e),this.#s}reconfigure(){this.#T(()=>{this.#G();let e=this.#Y(!0);e&&(this.#X(e,(e,t)=>this.#i.reconfigureScale(t)),this.#Z(e))})}reconfigureDomain(){this.#T(()=>{let e=this.#Y(!0,!0);if(!e)return;let{domainConfig:t,targetDomain:n}=e,r=n!=null&&Yl(n,e.scale.domain());n!=null&&!r&&this.#X(e,e=>{e.domain(n),t.applyOrdinalUnknown&&e.unknown(t.ordinalUnknown)}),this.#Z(e),this.syncLinkedSelectionFromDomain()})}#Y(e,t=!1){let n=this.#i.scale;if(!n||n.type==`null`)return;let r={scale:n,props:this.#q(e),previousDomain:n.domain(),domainWasInitialized:this.isDomainInitialized(),hasSelectionConfiguredDomain:this.#a.hasSelectionConfiguredDomain()};if(t){let e=YR(n,r.props);return{...r,domainConfig:e,targetDomain:e.domain}}return r}#X(e,t){this.#i.withDomainNotificationsSuppressed(()=>{t(e.scale,e.props)})}#Z(e){let{scale:t,previousDomain:n,domainWasInitialized:r,hasSelectionConfiguredDomain:i}=e,a=i?this.#a.getDefaultDomain(!0):void 0;if(this.#a.captureInitialDomain(t,r,a)){this.#w(`domain`);return}if(t.props.domainTransition===!1){this.#w(`domain`);return}let o=t.domain(),s=this.#o.getDomainChangeAction(n,o);s===`restore`?i?this.#w(`domain`):this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}):s===`animate`?i?this.#w(`domain`):this.#B()?(this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}),this.zoomTo(o,500)):this.#w(`domain`):s===`notify`&&this.#w(`domain`)}get scale(){if(this.#i.scale)return this.#i.scale;throw Error(`ScaleResolution.scale accessed before initialization. Call initializeScale().`)}getScale(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own scale while its domain is being resolved.`);return this.#i.scale??this.initializeScale()}initializeScale(){if(this.#i.scale)return this.#i.scale;let e=this.#q();return this.#i.createScale(e)}getDomain(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own domain while its domain is being resolved.`);return this.getScale().domain()}getDataDomain(){return this.#a.getDataDomain()}getComplexDomain(){return PR(this.#C(),kz(this.type,this.getDomain()))}getLinkedSelectionDomainInfo(){let e=this.#D();if(!e)return;let t=this.#y.getLayoutAncestors().at(-1),n=t?Lz(t,e.runtime,e.param,e.encoding).some(e=>e.param.persist!==!1):!1;return{param:e.param,encoding:e.encoding,persist:n}}isZoomed(){return this.#o.isZoomed()}isZoomable(){let e=this.#V();return e===null||e.type===`null`?!1:vm(e.type)&&!ym(e.type)&&!!e.zoom}zoom(e,t,n){return this.#o.zoom(e,t,n)}async zoomTo(e,t=!1){return this.#o.zoomTo(e,t)}resetZoom(){return this.#o.resetZoom()}getZoomLevel(){return this.#o.getZoomLevel()}getAxisLength(){if(this.channel!==`x`&&this.channel!==`y`)throw Error(`Axis length is only defined for x and y channels!`);let e=Array.from(this.#e).map(e=>e.view.coords?.[this.channel===`x`?`width`:`height`]).filter(e=>e>0);return e.length?e.reduce((e,t)=>Math.min(e,t),1e4):0}invertToComplex(e){let t=this.getScale();if(`invert`in t){let n=t.invert(e);return this.toComplex(n)}else throw Error(`The scale does not support inverting!`)}toComplex(e){return jR(this.#C(),e)}fromComplex(e){return MR(this.#C(),e)}fromComplexInterval(e){return this.type==`locus`?NR(this.#C(),e):e}};function SB(e,t){return e===t?!0:!e||!t?!1:e.length===t.length&&Yl(e,t)}function CB(e){let t=e.channelDef.scale,n=t?.assembly;if(!t||!n||typeof n!=`object`||!(`url`in n))return e;let r=_F(e.view.getBaseUrl(),n.url);return r===n.url?e:{...e,channelDef:{...e.channelDef,scale:{...t,assembly:{...n,url:r}}}}}function wB(...e){for(let t of e)if(t!==void 0)return t}var TB=class{#e=new Set;constructor(e){this.channel=e}get scaleResolution(){return this.#e.values().next().value?.view.getScaleResolution(this.channel)}#t(e){let{view:t}=e,n=t.getScaleResolution(this.channel);if(!n)throw Error(`Cannot find a scale resolution!`);if(this.scaleResolution&&n!==this.scaleResolution)throw Error(`Shared axes must have a shared scale! Channel: ${this.channel}, existing views: [${Array.from(this.#e).map(e=>e.view.getPathString()).join(`, `)}], new view: ${t.getPathString()}.`);this.#e.add(e),tP(this,`axisProps`)}registerMember(e){return this.#t(e),()=>this.removeMember(e)&&this.#e.size===0}removeMember(e){let t=this.#e.delete(e);return t&&tP(this,`axisProps`),t}getAxisProps(){return eP(this,`axisProps`,()=>{let e=bB(this.#e).map(e=>{let t=e.view.mark.encoding[e.channel];return`axis`in t&&t.axis});return e.length>0&&e.some(e=>e===null)?null:cz(e.filter(e=>e!==void 0),`axis`,[`title`])})}getTitle(){let e=bB(this.#e).map(e=>{let t=Nh(e.view,e.channel);if(!Oh(t))return{member:e,axisTitle:`axis`in t?t.axis?.title:void 0,explicitTitle:wB(`axis`in t?t.axis?.title:void 0,t.title),implicitTitle:wB(kh(t)?t.field:void 0,Fh(t)?t.expr:void 0)}}),t=e.map(e=>e.axisTitle).find(e=>e!==void 0);if(t!==void 0)return t;let n=e.filter(t=>{if(Gh(t.member.channel)&&!t.explicitTitle){let n=qh(t.member.channel);return e.find(e=>e.member.view==t.member.view&&e.member.channel==n)?.explicitTitle===void 0}return!0}),r=new Set(n.map(e=>wB(e.explicitTitle,e.implicitTitle)).filter(P));return r.size?[...r].join(`, `):null}},EB=e=>{if(jh(e))return e;if(Lh(e)){let t=e.condition;if(!Array.isArray(t)&&jh(t))return t}},DB=(e,t,n)=>{let r=e;for(;(r.getConfiguredOrDefaultResolution(n,t)==`forced`||r.dataParent&&[`shared`,`excluded`,`forced`].includes(r.dataParent.getConfiguredOrDefaultResolution(n,t)))&&r.getConfiguredOrDefaultResolution(n,t)!=`excluded`;)r=r.dataParent;return r},OB=(e,t,n)=>{if(!t.resolutions.scale[n]){let r=new xB(n,t);t.resolutions.scale[n]=r;let i=t=>{e.context.glHelper?.createRangeTexture(t.scaleResolution,!0)};r.addEventListener(`range`,i),r.addEventListener(`domain`,i),e.registerDisposer(()=>{r.removeEventListener(`range`,i),r.removeEventListener(`domain`,i)})}return t.resolutions.scale[n]},kB=(e,t,n,r)=>{let i=EB(r);if(!i)return;let a=qh(i.resolutionChannel??n);if(Xh(a)&&!(t==`axis`&&!Hh(a)))return{view:DB(e,t,a),channel:n,channelDef:i,targetChannel:a}},AB=(e,t)=>{for(let[n,r]of Object.entries(e.mark.encoding))!r||Array.isArray(r)||t(n,r)},jB=e=>{let t=[];return AB(e,(n,r)=>{let i=kB(e,`axis`,n,r);i&&Hh(i.channel)&&t.push(i)}),t},MB=e=>{let t=new Map;return AB(e,(n,r)=>{let i=kB(e,`scale`,n,r);if(!i)return;let a=OB(e,i.view,i.targetChannel),o=t.get(a);o?o.push(i):t.set(a,[i])}),t},NB=(e,t)=>{for(let{view:n,channel:r,channelDef:i,targetChannel:a}of t){if(!Hh(r)||!Vh(a))continue;n.resolutions.axis[a]||(n.resolutions.axis[a]=new TB(a));let t=n.resolutions.axis[a],o=t.registerMember({view:e,channel:r,channelDef:i});e.registerDisposer(()=>{o()&&n.resolutions.axis[a]===t&&delete n.resolutions.axis[a]})}},PB=(e,t)=>{xB.registerInBatch(t.keys(),()=>{for(let[n,r]of t)for(let{view:t,channel:i,channelDef:a,targetChannel:o}of r){let r=o,s=!e.isDomainInert(),c=n.registerMember({view:e,channel:i,channelDef:a,contributesToDomain:s});e.registerDisposer(()=>{c()&&t.resolutions.scale[r]===n&&(n.dispose(),delete t.resolutions.scale[r])})}})},FB=(e,t)=>{if(!t){FB(e,`scale`),FB(e,`axis`);return}t==`axis`?NB(e,jB(e)):PB(e,MB(e))},IB={point:NP,rect:EP,rule:zP,tick:zP,link:ZP,text:rF},LB=class extends iR{#e;#t=!1;#n=null;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e;let o=IB[this.getMarkType()];if(o)this.mark=new o(this);else throw Error(`No such mark: ${this.getMarkType()}`);this.#e=this.paramRuntime.allocateSetter(`zoomLevel`,1),this.resolve();for(let e of[`x`,`y`]){let t=this.getScaleResolution(e);if(t){let e=()=>{this.#e(Math.sqrt(this.getZoomLevel()))};t.addEventListener(`domain`,e),this.registerDisposer(()=>t.removeEventListener(`domain`,e))}}this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>{for(let e of Rh)this.getScaleResolution(e)?.syncLinkedSelectionFromDomain()})),this.needsAxes={x:!0,y:!0},this.#r()}#r(){for(let[e,t]of this.paramRuntime.paramConfigs){if(!(`select`in t))continue;let n=sg(t.select),r=n.on,i=n.clear;if(cg(n)){let t=0,a=t=>{this.paramRuntime.setValue(e,t)},o=()=>{let e=this.context.getCurrentHover();return e?.mark?.unitView===this?e.datum:null},s=r.filter?XL(r.filter):()=>!0;if(this.addInteractionListener([`mouseover`,`pointerover`].includes(r.type)?`mousemove`:r.type,r=>{if(!s(r.proxiedMouseEvent))return;let i=o(),c=i?i[sh]:0,l;n.toggle?r.mouseEvent.shiftKey?i&&(l=ng(this.paramRuntime.getValue(e),{toggle:[i]})):l=eg(i?[i]:null):c!=t&&(t=c,l=$h(i)),l!==void 0&&a(l)}),i){let e=i.filter?XL(i.filter):()=>!0;this.addInteractionListener(i.type,r=>{e(r.proxiedMouseEvent)&&(t=0,a(n.toggle?eg():$h(null)))})}}}}render(e,t,n={}){super.render(e,t,n),this.isConfiguredVisible()&&(e.pushView(this,t),e.renderMark(this.mark,n),e.popView(this))}getMarkType(){return typeof this.spec.mark==`object`?this.spec.mark.type:this.spec.mark}getEncoding(){let e=super.getEncoding(),t=this.mark.getSupportedChannels();for(let n of Object.keys(e))n!==`key`&&(t.includes(n)||delete e[n]);return e}resolve(e){if(!e){this.resolve(`scale`),this.resolve(`axis`);return}FB(this,e)}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){let t=this.mark.encoders;if(t)return t[e]?Th(t[e]):void 0}getSearchAccessors(){return this.#n||=(uR(this.getEncoding())??[]).map(e=>R(e)),this.#n}getFacetAccessor(e){return this.getDataAccessor(`sample`)||super.getFacetAccessor(this)}getCollector(){return this.flowHandle?.collector}registerDomainSubscriptions(){if(this.#t||this.isDomainInert())return;let e=this.getCollector();if(!e)return;let t=this.mark.encoders;if(!t)throw Error(`Encoders are not initialized!`);this.#t=!0;let n=Jm(e),r=new Map;for(let e of Object.values(t)){if(!e)continue;let t=wh(e);if(t.length!==0)for(let e of t){if(!ph(e))continue;let t=this.getScaleResolution(e.scaleChannel);if(!t)throw Error(`Missing scale resolution for channel: `+e.scaleChannel);if(e.channelDef.domainInert||RB(e,t,n))continue;let i=r.get(t);i||(i=new Set,r.set(t,i)),i.add(e)}}for(let[t,n]of r){if(n.size===0)continue;let r=t.registerCollectorSubscriptions(e,n);this.registerDisposer(r)}}getZoomLevel(){return Rh.map(e=>this.getScaleResolution(e)?.getZoomLevel()??1).reduce((e,t)=>e*t,1)}propagateInteraction(e){this.handleInteraction(e,!0),e.target=this,!e.stopped&&this.handleInteraction(e,!1)}getDefaultResolution(e,t){return e==`x`?`shared`:`independent`}};function RB(e,t,n){return!t.isDomainDefinedExplicitly()&&n.has(qh(e.scaleChannel))}var zB=class extends Error{constructor(e,t){super(t),this.kind=e}};async function BB(e,t={}){let n;try{n=await fetch(e,{signal:t.signal})}catch(e){throw new zB(`network`,String(e))}if(!n.ok)throw new zB(`http`,String(n.status)+` `+n.statusText);try{return await n.json()}catch(e){throw new zB(`json`,String(e))}}function VB(e){let t=new Set;e.visit(e=>{for(let n of Object.values(e.resolutions.scale)){let e=n.name;if(e&&t.has(e))throw Error(`The same scale name "${e}" occurs in multiple scale resolutions!`);t.add(e)}})}function HB(e){for(let t of Rh){let n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}function UB(e,t=()=>!0){return Promise.allSettled(e).then(e=>{if(t())for(let t of e)`value`in t?t.value.finalizeGraphicsInitialization():`reason`in t&&console.error(t.reason)})}async function WB(e,t,n){let r=e.import;if(!(`url`in r))throw Error(`Not an url import: `+JSON.stringify(r));let i=gF(t,r.url),a;try{a=await BB(i)}catch(e){throw Error(`Could not load imported view spec: ${i}. Reason: ${e.message}`,{cause:e})}if(n.isViewSpec(a))return a.baseUrl=gF(vF(r.url),a.baseUrl),a;throw Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function GB(e){let t=e.getSize(),n=e.getPadding(),r=(e,t)=>e.grow>0?void 0:e.px+t;return{width:r(t.width,n.horizontalTotal),height:r(t.height,n.verticalTotal)}}function*KB(e,t=[]){for(let[n,r]of e.entries())if(r instanceof Map)for(let e of KB(r,[...t,n]))yield e;else yield[[...t,n],r]}var qB=2147483647,JB=XB([qB]);function YB(e){for(let t=1;t<e.length;t++)if(e[t]<e[t-1])return!1;return!0}function XB(e){let t=0;for(let n=0,r=e.length;n<r;n++)e[n]>t&&(t=e[n]);return Math.floor(Math.log2(t)/4)+1}function ZB(e){let t=XB(e),n=Array.from({length:e.length},(e,t)=>t);if(YB(e))return n;let r=Array(e.length),i=Array(16);for(let a=0;a<t;a++){i.fill(0);let t=a*4,o=16**a,s=r=>{let i=e[n[r]];return a>=JB?i>qB?Math.floor(i/o)%16:0:i>>t&15};for(let t=0;t<e.length;t++)i[s(t)]++;for(let e=1;e<16;e++)i[e]+=i[e-1];for(let t=e.length-1;t>=0;t--)r[--i[s(t)]]=n[t];[n,r]=[r,n]}return n}var QB=`|`,$B=`\\`,eV=class{#e=null;#t=null;#n=!1;invalidate(){this.#e=null,this.#t=null,this.#n=!1}findDatum(e,t,n){if(!e||e.length===0)return;let r=e.join(`, `);if(e.length!==t.length)throw Error(`Key tuple length ${t.length} does not match fields [${r}]`);(!this.#e||!this.#i(e))&&this.#r(e,n);let i=this.#t,a;if(this.#n){let e=``;for(let n=0;n<t.length;n++){n>0&&(e+=QB);let r=i[n],a=tV(t[n],r);e+=rV(a)}a=e}else{let e=i[0];a=tV(t[0],e)}return this.#e.get(a)}#r(e,t){let n=e.map(e=>R(e)),r=new Map,i=e.join(`, `),a=e.length!==1;if(a)for(let a of t)for(let t=0,o=a.length;t<o;t++){let o=a[t],s=``;for(let t=0;t<n.length;t++){t>0&&(s+=QB);let r=e[t],i=tV(n[t](o),r);s+=rV(i)}if(r.get(s)!==void 0){let e=n.map(e=>e(o));throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(e)}`)}r.set(s,o)}else{let a=n[0],o=e[0];for(let e of t)for(let t=0,n=e.length;t<n;t++){let n=e[t],s=tV(a(n),o);if(r.get(s)!==void 0)throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(s)}`);r.set(s,n)}}this.#e=r,this.#t=[...e],this.#n=a}#i(e){if(!this.#t||this.#t.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(this.#t[t]!==e[t])return!1;return!0}};function tV(e,t){if(e===void 0)throw Error(`Key field "${t}" is undefined. Ensure all key fields are present in the data.`);if(e===null)throw Error(`Key field "${t}" is null. Ensure all key fields are present in the data.`);if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw Error(`Key field "${t}" must be a scalar value (string, number, or boolean).`);return e}function nV(e){if(!(e.indexOf($B)!==-1||e.indexOf(QB)!==-1))return e;let t=``;for(let n=0;n<e.length;n++){let r=e[n];(r===$B||r===QB)&&(t+=$B),t+=r}return t}function rV(e){return typeof e==`string`?nV(e):String(e)}var iV=class extends qm{#e=[];#t=R(sh);#n=[];#r=new eV;#i;#a;#o=new aV;get behavior(){return 4}get label(){return`collect`}constructor(e){super(),this.params=e??{type:`collect`},this.observers=new Set,this.facetBatches=new hn([],JSON.stringify),this.#a=sV(this.params?.sort),this.#s()}#s(){this.#e=[],this.#n=[],this.#r.invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,this.#e)}reset(){super.reset(),this.#s()}handle(e){this.#e.push(e)}beginBatch(e){this.#r.invalidate(),Xm(e)&&(this.#e=[],this.facetBatches.set(Xl(e.facetId),this.#e))}complete(){if(this.#e=[],this.params.groupby?.length){if(this.facetBatches.size>1)throw Error(`TODO: Support faceted data!`);let e=this.facetBatches.get(void 0),t=this.params.groupby.map(e=>R(e)),n=t.length>1?xn(e,...t):oV(e,t[0]);this.facetBatches.clear();for(let[e,t]of KB(n))this.facetBatches.set(e,t)}if(this.#a)for(let e of this.facetBatches.values())e.sort(this.#a);this.#d(),this.#c(),super.complete(),this.#u();for(let e of this.observers)e(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}#c(){if(this.children.length)for(let[e,t]of this.facetBatches.entries()){if(e){let t={type:`facet`,facetId:e};for(let e of this.children)e.beginBatch(t)}for(let e=0,n=t.length;e<n;e++)this._propagate(t[e])}}repropagate(){for(let e of this.children)e.reset();this.#c();for(let e of this.children)e.complete();this.#u()}getDomain(e,t,n){return this.#o.getDomain(e,()=>{let e=Kz(t);if(n.constant)e.extend(n({}));else if(this.completed)for(let t of this.facetBatches.values())for(let r=0,i=t.length;r<i;r++)e.extend(n(t[r]));return e})}subscribeDomainChanges(e,t){return this.#o.subscribe(e,t)}getData(){switch(this.#l(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{let e=this.facetBatches;return{[Symbol.iterator]:function*(){for(let t of e.values())yield*t}}}}}visitData(e){this.#l();for(let t of this.facetBatches.values())for(let n=0;n<t.length;n++)e(t[n])}getItemCount(){let e=0;for(let t of this.facetBatches.values())e+=t.length;return e}#l(){if(!this.completed)throw Error(`Data propagation is not completed! No data are available.`)}#u(){this.#o.hasCachedDomains()&&this.#o.clear(),this.#o.notify()}#d(){this.#i=[];let e=this.facetBatches.values().next().value?.[0];if(e==null||!(`_uniqueId`in e))return;let t=0,n=[],r=this.#t;for(let[e,i]of this.facetBatches){this.#i.push({start:t,stop:t+i.length,facetId:e}),t+=i.length;for(let e=0,t=i.length;e<t;e++)n.push(r(i[e]))}this.#n=ZB(n)}findDatumByUniqueId(e){if(!this.#n.length)return;let t=on(e=>e.start).right,n=this.#t,r=on(e=>n(i(e))).left,i=e=>{let n=t(this.#i,e),r=this.#i[n-1];if(!(!r||e>=r.stop))return this.facetBatches.get(r.facetId)[e-r.start]},a=r(this.#n,e);if(a>=0){let t=i(this.#n[a]);if(t&&n(t)===e)return t}}findDatumByKey(e,t){return this.#l(),this.#r.findDatum(e,t,this.facetBatches.values())}},aV=class{#e=new Map;#t=new Map;hasCachedDomains(){return this.#e.size>0}clear(){this.#e.clear()}getDomain(e,t){let n=this.#e.get(e);if(n)return n;{let n=t();return this.#e.set(e,n),n}}subscribe(e,t){let n=this.#t.get(e);return n||(n=new Set,this.#t.set(e,n)),n.add(t),()=>{let n=this.#t.get(e);n&&(n.delete(t),n.size===0&&this.#t.delete(e))}}notify(){if(this.#t.size===0)return;let e=new Set;for(let t of this.#t.values())for(let n of t)e.add(n);for(let t of e)t()}};function oV(e,t){let n=new Map;for(let r=0,i=e.length;r<i;r++){let i=e[r],a=t(i),o=n.get(a);o||(o=[],n.set(a,o)),o.push(i)}return n}function sV(e){if(e?.field){let t=Xl(e.field);if(t.length==1&&!t[0].includes(`.`)){let n=Xl(e.order)[0]??`ascending`,r=JSON.stringify(t[0]);return Function(`a`,`b`,`return a[${r}] ${n===`ascending`?`-`:`+`} b[${r}];`)}return ht(e.field,e.order)}}var cV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e,this.startAccessor=R(e.start),this.endAccessor=R(e.end),this.chromAccessor=e.chrom?R(e.chrom):e=>void 0,this.weightAccessor=e.weight?R(e.weight):e=>1,this.as={coverage:e.as??`coverage`,start:e.asStart??e.start,end:e.asEnd??e.end,chrom:e.asChrom??e.chrom},this.createSegment=Function(`start`,`end`,`coverage`,`chrom`,`return {`+Object.entries(this.as).filter(([e,t])=>t).map(([e,t])=>`${JSON.stringify(t)}: ${e}`).join(`, `)+`};`),this.ends=new bF}reset(){super.reset(),this.initialize()}initialize(){let e=this.as.coverage,t=this.as.end,n=this.as.chrom,r=this.startAccessor,i=this.endAccessor,a=this.chromAccessor,o=this.weightAccessor,s,c,l,u=0,d=NaN,f=this.ends;f.clear();let p=e=>{this._propagate(e),s=null},m=(n,r,i)=>{if(n==r)return;let a=!1;s&&(s[e]===i?(s[t]=r,a=!0):s[e]!=0&&p(s)),a||(s=this.createSegment(n,r,i,l))},h=()=>{let e;for(;(e=f.peekValue())!==void 0;)m(d,e,u),d=e,u-=f.pop();d=NaN,s&&p(s)};this.handle=e=>{let t=r(e),s;for(;(s=f.peekValue())!==void 0&&s<t;)m(d,s,u),d=s,u-=f.pop();if(n){let t=a(e);t!==c&&(h(),l=t,c=l)}isNaN(d)||m(d,t,u),d=t;let p=o(e);u+=p,f.push(p,i(e))},this.complete=()=>{h(),super.complete()},this.beginBatch=e=>{h(),c=null,super.beginBatch(e)}}};function lV(e,t,n=e=>+e,r=0,i=e.length){let a=new bF,o=i-r,s;for(s=0;s<t&&s<o;s++)a.push(s,n(e[r+s]));for(;s<o;s++){let t=n(e[r+s]);t>=a.peekValue()&&(a.push(s,t),a.pop())}let c=[],l;for(;(l=a.pop())!==void 0;)c.push(e[r+l]);return c.reverse()}var uV=class{constructor(e,t=-1/0,n=1/0){this.maxSize=e,this.lowerLimit=t,this.upperLimit=n;let r=this.maxSize*2+1;this.lowerLimits=new Float64Array(r),this.upperLimits=new Float64Array(r),this.lowerChildren=new Int32Array(r),this.upperChildren=new Int32Array(r),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,t,n=0){if(e>=this.lowerLimits[n]&&t<=this.upperLimits[n]){let r=this.lowerChildren[n];if(r){let i=this._findSlot(e,t,r);return i>=0?i:this._findSlot(e,t,this.upperChildren[n])}else return n}else return-1}reserve(e,t){if(t-e<=0)throw Error(`Cannot reserve an empty or negative-size slot!`);if(this.n+1>this.lowerLimits.length)return!1;let n=this._findSlot(e,t);if(n<0)return!1;let r=this.n++,i=this.n++;return this.lowerLimits[r]=this.lowerLimits[n],this.upperLimits[r]=e,this.lowerLimits[i]=t,this.upperLimits[i]=this.upperLimits[n],this.lowerChildren[n]=r,this.upperChildren[n]=i,!0}},dV=class extends oh{get behavior(){return 4}get domainSensitiveScaleChannels(){return[this.channel]}constructor(e,t){if(super(e),this.params=e,this._data=[],this.channel=e.channel??`x`,![`x`,`y`].includes(this.channel))throw Error(`Invalid channel: `+this.channel);this.startPosAccessor=R(this.params.pos),this.endPosAccessor=R(this.params.pos2??this.params.pos),this.startPosBisector=on(this.startPosAccessor),this.endPosBisector=on(this.endPosAccessor),this.scoreAccessor=R(this.params.score),this.widthAccessor=R(this.params.width),this.laneAccessor=this.params.lane?R(this.params.lane):e=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=t.getScaleResolution(this.channel);let n=()=>this._filterAndPropagate();this.schedule=()=>t.context.animator.requestTransition(n);let r=()=>this._filterAndPropagate();this.resolution.addEventListener(`domain`,r),this.registerDisposer(()=>this.resolution.removeEventListener(`domain`,r));let i=t._addBroadcastHandler(`layoutComputed`,()=>this.schedule());this.registerDisposer(i)}complete(){let e=this.startPosAccessor;this._data.sort((t,n)=>e(t)-e(n));for(let e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new uV(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();let e=this.resolution.getScale(),t=this.resolution.getAxisLength();if(!t)return;for(let e of this.reservationMaps.values())e.reset();let n=e.domain(),r=lV(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,n[0]),this.startPosBisector.right(this._data,n[1]));for(let n of r){let r=e(this.startPosAccessor(n))*t,i=e(this.endPosAccessor(n))*t,a=i-r,o=this.widthAccessor(n)+this.padding*2,s=(r+i)/2,c=Math.max(0,(a-o)/2);if(c>0){let e=Math.max(0,o/2-s);s+=Math.min(e,c);let n=Math.max(0,o/2+s-t);s-=Math.min(n,c)}if(this.reservationMaps.get(this.laneAccessor(n)).reserve(s-o/2,s+o/2))if(this.params.asMidpoint){let r=Object.assign({},n);r[this.params.asMidpoint]=e.invert(s/t),this._propagate(r)}else this._propagate(n)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}},fV=class extends oh{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e;if(pV(this.params))e=this.params.expr;else if(mV(this.params)){let t=this.paramRuntime.findValue(this.params.param);if(!t)throw Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);e=rg(this.params,t)}else throw Error(`Invalid filter params: `+JSON.stringify(this.params));this.predicate=this.paramRuntime.watchExpression(e,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){this.predicate(e)&&this._propagate(e)}};function pV(e){return`expr`in e}function mV(e){return`param`in e}var hV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=e.index;if(e.fields){let n=Xl(e.fields).map(e=>R(e)),r=Xl(e.as||e.fields);if(n.length!==r.length)throw Error(`Lengths of "fields" (${n.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{let i=n.map((t,n)=>t(e)??[]),a=i[0].length;for(let o=0;o<a;o++){let a=Object.assign({},e);for(let e=0;e<n.length;e++)a[r[e]]=o<i[e].length?i[e][o]:null;t&&(a[t]=o),this._propagate(a)}}}else this.handle=e=>{for(let n=0;n<e.length;n++){let r=Object.assign({},e[n]);t&&(r[t]=n),this._propagate(r)}}}},gV=48;function*_V(e,t=`,`){let n=t.charCodeAt(0),r=0;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);i==n?(yield r,r=0):r=r*10+i-gV}yield r}var vV=class extends oh{get behavior(){return 1}constructor(e){super(e);let t=R(e.exons??`exons`),n=R(e.start??`start`),[r,i]=e.as||[`exonStart`,`exonEnd`];this.handle=e=>{let a=n(e),o=a,s=!0,c=t(e);for(let t of _V(c)){if(s)o=a+t;else{a=o+t;let n=Object.assign({},e);n[r]=o,n[i]=a,this._propagate(n)}s=!s}}}},yV=class extends oh{get behavior(){return 1}constructor(e){super(e);let t=Xl(e.field).map(e=>R(e)),n=Xl(e.separator),r=Xl(e.as||e.field);if(t.length!==n.length||t.length!==r.length)throw Error(`Lengths of "separator" (${n.length}), "fields" (${t.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{if(t.some(t=>!t(e)))return;let i=t.map((t,r)=>t(e).split(n[r]));bV(i,e);let a=i[0].length;for(let n=0;n<a;n++){let a=Object.assign({},e);for(let e=0;e<t.length;e++)a[r[e]]=i[e][n];this._propagate(a)}}}};function bV(e,t){let n=e.map(e=>e.length);if(!n.every(e=>e==n[0]))throw Error(`Mismatching number of elements in the fields to be split: `+JSON.stringify(t))}var xV=class extends oh{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=this.paramRuntime.watchExpression(this.params.expr,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){e[this.as]=this.fn(e),this._propagate(e)}},SV=class extends oh{get behavior(){return 2}constructor(e,t){e={channel:`x`,...e},super(e),this.params=e;let n=e.channel;if(![`x`,`y`].includes(n))throw Error(`Invalid channel: `+n);let r=t.getScaleResolution(n).getScale(),i=`genome`in r?r.genome():void 0;if(!i)throw Error(`LinearizeGenomicCoordinate transform requires a locus scale!`);let a=R(e.chrom),o=Xl(e.pos).map(e=>R(e)),s=Xl(e.as);if(o.length!=s.length)throw Error(`The number of "pos" and "as" elements must be equal!`);let c=Xl(e.offset),l;if(c.length==0)l=Array(o.length).fill(0);else if(c.length==1)l=Array(o.length).fill(c[0]);else if(c.length==o.length)l=c;else throw Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);let u=Function(`datum`,`chromOffset`,`posAccessors`,s.map((e,t)=>`datum[${JSON.stringify(e)}] = chromOffset + +posAccessors[${t}](datum) - ${l[t]};`).join(`
|
|
807
|
+
`)),d,f=0,p=e=>{if(e!==d){if(f=i.cumulativeChromPositions.get(e),f===void 0)return;d=e}return f};this.handle=e=>{let t=a(e),n=p(t);if(n===void 0)throw Error(`Unknown chromosome/contig "${t}" in datum: ${JSON.stringify(e)}`);u(e,n,o),this._propagate(e)}}},CV=class extends oh{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e;let n=R(e.field),r=e.as,i=0;if(z(e.fontSize)){let n=t.paramRuntime.watchExpression(e.fontSize.expr,()=>{i=n(),this.repropagate()},{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)});i=n()}else i=e.fontSize;this.handle=e=>{let t=n(e);t===void 0?e[r]=0:e[r]=this.font.metrics.measureWidth(t,i),this._propagate(e)}}initialize(){let e=this.paramRuntimeProvider.context.fontManager;this.font=this.params.font?e.getFont(this.params.font,this.params.fontStyle,this.params.fontWeight):e.getDefaultFont()}},wV=65536,TV=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e}reset(){super.reset(),this.initialize()}initialize(){let e=this.params,t=e.as||`lane`,n=N(e.spacing)?e.spacing:1,r=R(e.start),i=R(e.end);if(!e.preference!=!e.preferredOrder)throw Error(`Must specify both "preference" and "preferredOrder"`);if(e.preference){let a=new Float64Array(wV),o=R(e.preference),s=e.preferredOrder,c=1/0;this.handle=e=>{let l=r(e);l<c&&a.fill(-1/0),c=l;let u=s.indexOf(o(e)),d;if(u>=0&&a[u]<l)d=u;else{let t=r(e);for(d=0;d<a.length&&!(a[d]<t);d++);if(d>=a.length)throw Error(`Out of lanes!`)}a[d]=i(e)+n,e[t]=d,this._propagate(e)}}else{let e=new bF,a=new bF,o=-1/0,s=0;this.handle=c=>{let l=r(c);for(;e.length&&(e.peekValue()<=l||l<o);){let t=e.pop();a.push(t,t)}o=l;let u=a.pop();u===void 0&&(u=s++),c[t]=u,this._propagate(c),e.push(u,i(c)+n)}}}},EV=class extends oh{get behavior(){return 1}constructor(e){if(super(e),this.params=e,e.as&&e.as.length!=e.fields.length)throw Error(`"fields" and "as" have unequal lengths!`);let t=e.fields.map(e=>R(e)),n=e.as?e.as:t.map(Ve);this.handle=e=>{let r={};for(let i=0;i<t.length;i++)r[n[i]]=t[i](e);this._propagate(r)}}},DV=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e;let t=new RegExp(e.regex),n=typeof e.as==`string`?[e.as]:e.as,r=R(e.field);this.handle=i=>{let a=r(i);if(P(a)){let r=a.match(t);if(r){if(r.length-1!=n.length)throw Error(`The number of RegEx groups and the length of "as" do not match!`);for(let e=0;e<n.length;e++)i[n[e]]=r[e+1]}else if(e.skipInvalidInput)for(let e=0;e<n.length;e++)i[n[e]]=void 0;else throw Error(`"${a}" does not match the given regex: ${t.toString()}`)}else if(!e.skipInvalidInput)throw Error(`Trying to match a non-string field. Encountered type: ${typeof a}, field content: "${a}".`);this._propagate(i)}}},OV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=Xl(e.columnRegex).map(e=>new RegExp(e));for(let e of t)if(RegExp(`|`+e.source).exec(``).length-1!=1)throw Error(`Regex ${e.toString()} must have exactly one capturing group!`);let n=Xl(e.asValue);if(t.length!=n.length)throw Error(`Lengths of "columnRegex" and "as" are not equal!`);let r=e.skipRegex?new RegExp(e.skipRegex):void 0,i=e.asKey||`sample`,a,o,s,c=e=>{let c=Object.keys(e);for(let e of t)if(!c.some(t=>e.test(t)))throw Error(`No columns matching the regex ${e.toString()} found in the data!`);let l=new Map;for(let[e,n]of t.entries())for(let t of c){let r=n.exec(t)?.[1];if(r!==void 0){let n=l.get(r);n||(n=[],l.set(r,n)),n[e]=t}}a=[...l.entries()],o=c.filter(e=>!t.some(t=>t.test(e))&&!(r&&r.test(e)));let u=[...o.map(e=>JSON.stringify(e)+`: datum[`+JSON.stringify(e)+`]`),JSON.stringify(i)+`: sampleId`,...n.map((e,t)=>JSON.stringify(e)+`: datum[attrs[${t}]]`)];s=Function(`datum`,`sampleId`,`attrs`,`return {
|
|
799
808
|
`+u.join(`,
|
|
800
809
|
`)+`
|
|
801
|
-
};`)},l=e=>{a||c(e);for(let t=0;t<a.length;t++){let[n,r]=a[t],i=s(e,n,r);this._propagate(i)}},u=e=>{c(e),l(e),this.handle=l};this.handle=u,this.beginBatch=e=>{
|
|
802
|
-
`)+` };`);return n.properties=t,n}function IV(e){let t=[];do t=t.concat(Object.keys(e)),e=Object.getPrototypeOf(e);while(e&&e!==Object.prototype);return Array.from(new Set(t))}var LV=class extends sh{get behavior(){return 1}#e;#t=e=>e;constructor(){super({type:`clone`});let e=e=>{let t=IV(e);(!this.#e||!Xl(t,this.#e))&&(this.#e=t,this.#t=FV(e));let n=this.#t;this.handle=e=>this._propagate(n(e)),this.handle(e)};this.handle=e,this.beginBatch=t=>{Xm(t)&&(this.handle=e),super.beginBatch(t)}}};function RV(e){return`name`in e}var zV=class extends Qm{#e;constructor(e,t,n){super(t),this.provider=n,this.params=e}get identifier(){return this.params.name}get label(){return`namedSource`}updateDynamicData(e){this.#e=e,this.loadSynchronously()}loadSynchronously(){let e=this.#e??this.provider(this.params.name)??[],t=e=>e;if(Array.isArray(e))e.length>0&&(t=uV(e[0]));else throw Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:`file`});for(let n of e)this._propagate(t(n));this.complete()}async load(){this.loadSynchronously()}},BV=class{#e;#t;loadingStatusRegistry;constructor(){this.#e=new Set,this.#t=new Set,this.loadingStatusRegistry=new iT}get dataSources(){return[...this.#e]}get collectors(){return[...this.#t]}replaceDataSources(e){this.#e=new Set(e)}addDataSource(e){this.#e.add(e)}removeDataSource(e){e.disposeSubtree(),this.#e.delete(e)}addCollector(e){this.#t.add(e)}removeCollector(e){e.parent&&e.parent.removeChild(e),e.disposeSubtree(),e.observers.clear(),this.#t.delete(e)}pruneCollectorBranch(e){let t=e.parent;for(t&&t.removeChild(e),e.disposeSubtree();t&&t.children.length===0;){let e=t;t=e.parent,t?(t.removeChild(e),e.dispose()):e instanceof Qm?this.removeDataSource(e):e.dispose()}}findNamedDataSource(e){let t;for(let n of this.#e.values())if(n instanceof zV&&e==n.identifier){if(t&&t!==n)throw Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);t=n}if(t)return{dataSource:t}}};function VV(e,t){let n=new Map,r=[];for(let t of e)n.set(t,{ref:t,children:[]});for(let e of n.values()){let i=n.get(t(e.ref));i?i.children.push(e):r.push(e)}return r}function HV(e,t,n){let r=t.preOrder?.(e);if(r)return r;for(let r of n(e)){let e=HV(r,t,n);if(e===`stop`)return e}return t.postOrder?.(e)}function UV(e,t){return HV(e,t,e=>e.children)}function WV(e,t,n,r){let i=[],a=[],o,s=t??new BV,c=[],l=r??(()=>!0);function u(e,t=()=>void 0){if(!o)throw t()||Error(`Cannot append data flow node, no parent exist!`);return o.addChild(e),o=e,i.push(e),e}function d(e,t){return u(e,()=>Error(`Cannot append a transform because no (inherited) data are available! ${t?JSON.stringify(t):``}`))}function f(e,t){for(let n of e){let e;try{e=tV(n,t)}catch(e){throw console.warn(e),Error(`Cannot initialize "${n.type}" transform: ${e}`,{cause:e})}e.behavior&2&&d(new LV),d(e)}}function p(){return i.findLastIndex(e=>e instanceof dh)>i.findLastIndex(e=>e instanceof Qm)}let m=e=>{if(!l(e)){let t=e.flowHandle?.node;if(t){t!==o&&(o=t,i.push(t));return}if(e.spec.data||e.spec.transform||e instanceof aB)throw Error(`Cannot reuse missing flow nodes for `+e.getPathString());return}if(e.spec.data){let t=e.flowHandle?.dataSource;t&&t.view===e&&!t.identifier&&s.removeDataSource(t);let n=RV(e.spec.data)?new zV(e.spec.data,e,e.context.getNamedDataFromProvider):NV(e.spec.data,e);o=n,i.push(n),s.addDataSource(n),e.flowHandle??={},e.flowHandle.dataSource=n}if(e.spec.transform&&f(e.spec.transform,e),e instanceof aB){if(!o)throw Error(`A unit view (${e.getPathString()}) has no (inherited) data source`);let t=KV(e);if(t){c.push(t.rewrite);for(let e of t.transforms)d(e)}e.mark.isPickingParticipant()&&!p()&&(d(new LV),d(new dh({type:`identifier`})));let n=new EB({type:`collect`,groupby:e.getFacetFields(),sort:qV(e,t?.rewrittenEncoding)});u(n);let r=e.flowHandle?.collector;r&&s.removeCollector(r),s.addCollector(n),e.flowHandle??={},e.flowHandle.collector=n}o&&(e.flowHandle??={},e.flowHandle.node=o)},h=VV(GV(e,n),e=>e.dataParent);for(let e of h)UV(e,{preOrder:e=>{a.push({view:e.ref,nodeStackDepth:i.length}),m(e.ref)},postOrder:()=>{let{nodeStackDepth:e}=a.pop();i.length=e,o=i.at(-1)}});return c.forEach(e=>e()),s}function GV(e,t){if(!t)return e.getDescendants();let n=[];return e.visit(e=>{if(!t(e))return wL;n.push(e)}),n}function KV(e){let t=[],n={},r=e.mark.encoding,i=e.getEncoding(),a=[];for(let[e,t]of Object.entries(r)){let n=e;Jh(n)!==n&&!(n in i)||Uh(n)&&!Array.isArray(t)&&Fh(t)&&a.push({channel:n,chromPosDef:t})}let o=Sn(a,e=>Jh(e.channel),e=>e.chromPosDef.chrom);for(let[a,s]of o.entries())for(let[o,c]of s.entries()){let s=[],l=[],u=[];for(let{channel:t,chromPosDef:a}of c){let o=e=>e.replace(/[^A-Za-z0-9_]/g,``),c=[`_linearized_`,o(a.chrom),`_`,o(a.pos)].join(``),d={...e.spec.encoding?.[t]??i[t]??r[t]??{},field:c};delete d.chrom,delete d.pos,!d.type&&a.type&&(d.type=a.type),n[t]=d,s.push(a.pos),u.push(a.offset??0),l.push(c)}t.push(new LV),t.push(new WB({type:`linearizeGenomicCoordinate`,channel:a,chrom:o,pos:s,offset:u,as:l},e))}return t.length?{transforms:t,rewrittenEncoding:n,rewrite:()=>{e.spec.encoding={...e.spec.encoding,...n},wN(e.mark,`encoding`)}}:void 0}function qV(e,t){let n={...e.getEncoding(),...t}.x;if(Mh(n)&&e.getScaleResolution(`x`)?.isZoomable()){if(Ah(n))return`buildIndex`in n&&n.buildIndex?{field:n.field}:null;if(!jh(n)&&Ih(n))throw Error(`A zoomable x channel must be mapped to a field.`)}}function JV(e,t=void 0){if(e.parent!==t)return!1;for(let t of e.children)if(!JV(t,e))return!1;return!0}function YV(e,t=!1){if(e.behavior&4&&(t=!0),e instanceof LV)if(t)t=!1;else{let n=e.children[0];e.excise(),n&&YV(n,t);return}e.behavior&1&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)YV(e.children[n],t||r>1)}function XV(e){let t=e.dataSources,n=new Map;for(let e of t)e.identifier&&!n.has(e.identifier)&&n.set(e.identifier,e);let r=new Set,i=new Map;for(let e of t)if(e.identifier){let t=n.get(e.identifier);t&&(t!==e&&t.adoptChildrenOf(e),r.add(t),i.set(e,t))}else r.add(e),i.set(e,e);return e.replaceDataSources(r),i}function ZV(e){if(YV(e),!JV(e))throw Error(`Encountered a bug! There's a problem in the data flow structure.`)}function QV(e){let t=XV(e);for(let t of e.dataSources)ZV(t);return t}var $V=new WeakMap,eH=new WeakMap;function tH(e,t){let n=$V.get(e);if(n){if(!t?.queueReload)return n;let r=eH.get(e);if(r)return r;let i=n.catch(()=>{}).then(()=>tH(e)).finally(()=>{eH.delete(e)});return eH.set(e,i),i}let r=Promise.resolve().then(()=>e.load()).finally(()=>{$V.delete(e)});return $V.set(e,r),r}function nH(e,t){for(let n of e.getDescendants()){let e=n.flowHandle;if(!e)continue;let r=e.dataSource;r&&(e.dataSource=t.get(r)??r)}}function rH(e,t,n,r){let i=r??(()=>!0),a=sH(e,n).filter(i);if(a.length===0)return{dataFlow:t,unitViews:[],dataSources:new Set,graphicsPromises:[]};let o=new Set(a);for(let e of a)e._setDataInitializationState(`pending`);let s;try{s=WV(e,t,n,e=>o.has(e)),nH(e,QV(s))}catch(e){for(let e of a)e._setDataInitializationState(`none`);throw e}let c=iH(a);for(let e of c)e.visit(e=>e.initializeOnce());let l=a.filter(e=>e instanceof aB),u=[],d=!!e.context.glHelper;for(let e of l){let t=e.mark;t.initializeEncoders(),e.registerDomainSubscriptions(),d&&u.push(t.initializeGraphics().then(()=>t)),e.registerDisposer(e.flowHandle.collector.observe(n=>{if(t.initializeData(),d)try{t.updateGraphicsData()}catch(t){throw t.view=e,t}e.context.animator.requestRender()}))}for(let e of a)e._setDataInitializationState(`ready`);return{dataFlow:s,unitViews:l,dataSources:c,graphicsPromises:u}}function iH(e,t){let n=Array.isArray(e)?e:sH(e,t),r=new Set;for(let e of n){if(t&&!t(e))continue;let n=e;for(;n&&!n.flowHandle?.dataSource;)n=n.dataParent;n?.flowHandle?.dataSource&&r.add(n.flowHandle.dataSource)}return r}function aH(e,t){let n=new Set;return e.visit(e=>{if(t&&!t(e))return wL;if(e.flowHandle?.dataSource)return n.add(e.flowHandle.dataSource),wL}),n}function oH(e,t,n,r){return t||=aH(e,n),Promise.all(Array.from(t).map(e=>tH(e,r))).then(t=>(cH(e),t))}function sH(e,t){let n=[];return t?(e.visit(e=>{if(!t(e))return wL;n.push(e)}),n):e.getDescendants()}function cH(e){let t={type:`subtreeDataReady`,payload:{subtreeRoot:e}};e.visit(e=>e.handleBroadcast(t))}async function lH(e,t,n,r){let i=e=>e.isConfiguredVisible(),{dataFlow:a,graphicsPromises:o}=rH(e,t,i);return r(a),await n.waitUntilReady(),await oH(e,new Set(a.dataSources),i),await dB(o),a}async function uH(e,t,n){let r=e=>e.isConfiguredVisible(),i=dH(e,r).filter(e=>e.getDataInitializationState()===`none`);if(i.length===0)return t;let a=new Set(i),o=e=>a.has(e),s=new Set,c=[];for(let e of i){if(e.spec.data){c.push(e);continue}let t=pH(e);t?s.add(t):c.push(e)}let{dataFlow:l,graphicsPromises:u}=rH(e,t,r,o);await n.waitUntilReady();for(let e of s)e.repropagate();if(c.length){let e=fH(c);await Promise.all(Array.from(e.entries()).map(([e,t])=>oH(e,t,void 0,{queueReload:!0})))}return await dB(u),l}function dH(e,t){let n=[];return e.visit(e=>{if(!t(e))return wL;n.push(e)}),n}function fH(e){let t=new Map;for(let n of e){let e=n;for(;e&&!e.flowHandle?.dataSource;)e=e.dataParent;if(!e?.flowHandle?.dataSource){if(n.spec.data)throw Error(`No data source found for view `+n.getPathString());continue}let r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(e.flowHandle.dataSource)}return t}function pH(e){let t=e.dataParent;for(;t;){let e=t.flowHandle?.collector;if(e)return e.completed?e:void 0;t=t.dataParent}}var mH=class{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){let t=this.transitions.indexOf(e);t>=0&&this.transitions.splice(t,1)}requestRender(){this._renderRequested?this._warn&&console.warn(`Render already requested!`):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;let t=this.transitions;this.transitions=[];let n;for(;n=t.shift();)n(e);this._renderCallback(e)}))}transition(e){return Pz({requestAnimationFrame:e=>this.requestTransition(e),...e})}};function hH(e,t,n,r,i){let a=0,o=!0,s=structuredClone(i),c=s;function l(e,t,n,r){return t+(e-t)*2**(-n/r)}function u(i){if(o)return;let d=i-a;a=i;for(let e of Object.keys(c))s[e]=l(s[e],c[e],d,n);t(s);let f=-1/0;for(let e of Object.keys(c))f=Math.max(f,Math.abs(c[e]-s[e]));f<r?(s=c,t(s),o=!0,f!=0&&e.requestRender()):e.requestTransition(e=>u(e))}function d(e){c=e,o&&(o=!1,a=+document.timeline.currentTime,u(a))}return d.stop=()=>{o=!0},d}var gH=class{constructor(e){this.genomes=new Map,this.#e=new Map,this.#t=new Map,this.#n=new Map,this.#r=0,this.#i=void 0,this.baseUrl=e}#e;#t;#n;#r;#i;async initialize(e){let{name:t,...n}=e;this.configureGenomes(new Map([[t,n]]),t),await this.ensureAssembly(t)}configureGenomes(e,t){this.genomes.clear(),this.#t.clear(),this.#n.clear(),this.#r=0,this.#e=new Map(e),this.#i=t}getDefaultAssemblyName(){if(this.#i)return this.#i;if(this.#e.size===1)return this.#e.keys().next().value;if(this.#e.size===0&&this.genomes.size===1)return this.genomes.keys().next().value}async ensureAssemblies(e){let t=[],n=new Set;for(let r of e){if(!r)continue;let e=_H(r);n.has(e)||(n.add(e),t.push(this.ensureAssembly(r)))}await Promise.all(t)}async ensureAssembly(e){if(typeof e==`object`)return this.#d(e);let t=this.genomes.get(e);if(t)return t;let n=this.#e.get(e);if(n)return this.#u(e,n);let r=this.#s(e);if(r)return r;throw this.#o(e)}getGenome(e){if(e&&typeof e==`object`)return this.#f(e);if(typeof e==`string`){let t=this.genomes.get(e);if(t)return t;if(this.#e.has(e))throw Error(`Genome ${e} has not been loaded yet. Call ensureAssembly("${e}") before accessing it.`);let n=this.#s(e);if(n)return n;throw this.#o(e)}let t=this.getDefaultAssemblyName();if(t)return this.getGenome(t);if(this.#e.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0&&this.#e.size)throw Error("Default genome is not loaded. Define root `assembly` or call ensureAssembly() first.");if(this.genomes.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0)throw Error(`No genomes have been configured!`);return this.genomes.values().next().value}#a(e){try{return new HL({name:e})}catch{return}}#o(e){return Error(`No genome with the name ${e} has been configured!`)}#s(e){let t=this.#a(e);if(t)return this.genomes.set(e,t),t}async#c(e,t){let n=this.#t.get(e);if(!n)throw Error(`No pending genome load for ${e}.`);await n;let r=this.genomes.get(e);if(!r)throw Error(t);return r}async#l(e,t){let n=t.load(this.baseUrl);this.#t.set(e,n);try{await n}catch(t){throw this.genomes.delete(e),t}finally{this.#t.delete(e)}return t}async#u(e,t){let n=this.genomes.get(e);if(n)return this.#t.has(e)?this.#c(e,`Loading genome ${e} failed before it became available.`):n;if(this.#t.has(e))return this.#c(e,`Loading genome ${e} failed before it became available.`);let r=new HL({name:e,...t});return this.genomes.set(e,r),`url`in t?this.#l(e,r):r}async#d(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n)return this.#t.has(t)?this.#c(t,`Loading inline assembly ${t} failed before it became available.`):n;if(this.#t.has(t))return this.#c(t,`Loading inline assembly ${t} failed before it became available.`);if(`contigs`in e){let n=new HL({name:t,contigs:e.contigs});return this.genomes.set(t,n),n}let r=new HL({name:t,url:e.url});return this.genomes.set(t,r),this.#l(t,r)}#f(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n){if(this.#t.has(t))throw Error(`Inline URL assembly ${t} has not been loaded yet. Call ensureAssembly() before accessing it.`);return n}if(`url`in e)throw Error(`Inline URL assemblies must be loaded first. Call ensureAssembly() before accessing it.`);let r=new HL({name:t,contigs:e.contigs});return this.genomes.set(t,r),r}#p(e){if(`contigs`in e==`url`in e)throw Error("Inline `scale.assembly` objects must define exactly one of `contigs` or `url`.")}#m(e){let t=JSON.stringify(e),n=this.#n.get(t);if(n)return n;let r=`inline_assembly_${this.#r}`;for(this.#r+=1;this.genomes.has(r)||this.#e.has(r)||this.#t.has(r);)r=`inline_assembly_${this.#r}`,this.#r+=1;return this.#n.set(t,r),r}};function _H(e){return typeof e==`string`?`name:${e}`:`inline:${JSON.stringify(e)}`}var vH={pages:[`Lato-Regular.png`],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:`Lato Regular`,size:42,bold:0,italic:0,charset:` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~`.split(``),unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]},yH=`data:image/png;base64,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`,bH={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900},xH=class{constructor(e){this._webGLHelper=e,this.fontRepository=`https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/`,this._fonts=new gn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:eM(vH),texture:e?this._createTextureNow(yH):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t=`normal`,n=`regular`){if(N(n)&&(n=bH[n.toLowerCase()],!n))throw Error(`Unknown font weight: `+n);let r={family:e,style:t,weight:n},i=this._fonts.get(r);return i||(i={metrics:void 0,texture:void 0},this._fonts.set(r,i),this._promises.push(this._loadFontEntry(i,r))),i}async _loadFontEntry(e,t){try{let n=wH(await this._loadMetadata(t.family),t),r=this.fontRepository+SH(t.family)+`/`+n.replace(/\.\w+/,``),i=this._createTexture(r+`.png`),a=this._loadFont(r+`.json`);e.texture=await i,e.metrics=await a}catch{console.warn(`Cannot load font: "${t.family}". Using the embedded default font.`),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let t=this._fontPromises.get(e);return t||(t=fetch(e).then(e=>{if(!e.ok)throw Error(`Could not load font: `+e.status);return e}).then(e=>e.json()).then(e=>eM(e)),this._fontPromises.set(e,t)),t}_loadMetadata(e){let t=SH(e),n=this._metadataPromises.get(t);if(!n){let e=this.fontRepository+t+`/METADATA.pb`;n=fetch(e).then(t=>{if(!t.ok)throw Error(`Could not load font metadata. Response status: `+t.status+`, url: `+e);return t}).then(e=>e.text()).then(e=>CH(e)).catch(e=>{console.warn(e.message)}),this._metadataPromises.set(t,n)}return n}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){let t=this._webGLHelper.gl;return new Promise((n,r)=>{ek(t,{src:e,min:t.LINEAR},(e,t,i)=>{e?r(e):n(t)})})}_createTextureNow(e){let t=this._webGLHelper.gl,n,r=new Promise((r,i)=>{n=ek(t,{src:e,min:t.LINEAR},(e,t,n)=>{e?i(e):r(t)})});return this._promises.push(r),n}};function SH(e){return e.toLowerCase().replaceAll(/[^\w]/g,``)}function CH(e){let t=e.split(`
|
|
803
|
-
`),n=[],r;for(let e of t)if(e.startsWith(`fonts {`)&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),e.startsWith(`}`)&&(n.push(r),r=void 0),r){let t=e.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(t){let e=t[1];r[e]=t[2]}if(t=e.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),t){let e=t[1];r[e]=+t[2]}}return n}function
|
|
810
|
+
};`)},l=e=>{a||c(e);for(let t=0;t<a.length;t++){let[n,r]=a[t],i=s(e,n,r);this._propagate(i)}},u=e=>{c(e),l(e),this.handle=l};this.handle=u,this.beginBatch=e=>{Ym(e)&&(this.handle=u),super.beginBatch(e)}}},kV=class extends oh{get behavior(){return 2}constructor(e){super(e),this.params=e,this.buffer=[]}reset(){super.reset(),this.buffer=[]}handle(e){this.buffer.push(e)}complete(){let e=this.params,t=e.as||[`y0`,`y1`],n=e.sort?ht(e.sort.field,e.sort.order):void 0,r=e.field?R(e.field):()=>1,i=e.groupby.map(e=>R(e)),a=Sn(this.buffer,e=>i.map(t=>t(e)).join()).map(e=>e[1]),o=e=>!0;if(e.baseField){let t=R(e.baseField);o=e=>t(e)!==null}let s,c;switch(e.offset){case`normalize`:s=(e,t)=>e/t,c=(e,t)=>Hn(e,t);break;case`center`:s=(e,t)=>e-t/2,c=(e,t)=>Hn(e,t);break;case`information`:{let t=Math.log2(e.cardinality??4);s=(e,t)=>e/t,c=(e,n)=>{let r=Hn(e,e=>+!o(e)),i=Hn(e,n),a=i-r,s=0;for(let t=0;t<e.length;t++){let r=e[t];if(o(r)){let e=n(r)/a;s-=e*Math.log2(e)}}return a/(t-(s+0))*(a/i)}}break;default:s=(e,t)=>e,c=(e,t)=>1}for(let e of a){n&&e.sort(n);let i=c(e,r),a=0;for(let n of e){let e=a+r(n);o(n)&&(n[t[0]]=s(a,i),n[t[1]]=s(e,i),this._propagate(n),a=e)}}super.complete()}},AV=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=R(e.field??`sequence`),[n,r]=e.as??[`pos`,`sequence`];this.handle=e=>{let i=Object.assign({},e,{[r]:``,[n]:0}),a=t(e);for(let e=0;e<a.length;e++){let t=Object.assign({},i);t[n]=e,t[r]=a.charAt(e),this._propagate(t)}}}},jV={count:e=>e.length,valid:fn,sum:Hn,min:Pn,max:Nn,mean:zn,q1:(e,t)=>Ln(e,.25,t),median:Bn,q3:(e,t)=>Ln(e,.75,t),variance:pn},MV={aggregate:class extends oh{get behavior(){return 1}constructor(e){if(super(e),this.params=e,this.buffer=[],this.ops=[],this.as=[],e.fields){if(e.fields.length!=e.ops.length)throw Error(`Fields and ops must have the same length!`);if(e.as&&e.as.length!=e.ops.length)throw Error(`If "as" is defined, "fields" and "as" must have the same length!`);e.fields.forEach((t,n)=>{let r=R(t),i=jV[e.ops[n]];this.ops.push(e=>i(e,r)),this.as.push(e.as?e.as[n]:`${e.ops[n]}_${e.fields[n]}`)})}else this.ops.push(e=>jV.count(e)),this.as.push(`count`)}reset(){super.reset(),this.buffer=[]}#e(){let e=this.params?.groupby;if(e?.length>0){let t=e.map(e=>R(e)),n=xn(this.buffer,...t);for(let[t,r]of KB(n)){let n={};for(let r=0;r<e.length;r++)n[e[r]]=t[r];this.ops.forEach((e,t)=>{n[this.as[t]]=e(r)}),this._propagate(n)}}else{let e={};this.ops.forEach((t,n)=>{e[this.as[n]]=t(this.buffer)}),this._propagate(e)}}handle(e){this.buffer.push(e)}beginBatch(e){this.buffer.length>0&&(this.#e(),this.buffer=[]),super.beginBatch(e)}complete(){this.buffer.length>0&&this.#e(),super.complete()}},collect:iV,coverage:cV,filterScoredLabels:dV,filter:fV,flatten:hV,flattenCompressedExons:vV,flattenDelimited:yV,flattenSequence:AV,formula:xV,identifier:uh,linearizeGenomicCoordinate:SV,measureText:CV,pileup:TV,project:EV,regexExtract:DV,regexFold:OV,sample:AP,stack:kV};function NV(e,t){let n=MV[e.type];if(n)return new n(e,t);throw Error(`Unknown transform: `+e.type)}var PV=new Set([`application/gzip`,`application/x-gzip`]),FV=new TextDecoder,IV=class extends Zm{constructor(e,t){super(t),this.params=vg(t.paramRuntime,e,()=>this.load(),e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),this.baseUrl=t?.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}get label(){return`urlSource`}async#e(e){let t=gF(this.baseUrl,e.urlsFromFile),n={type:e.type??`tsv`},r=await fetch(t);if(!r.ok)throw Error(`Cannot load "${t}": ${r.status} ${r.statusText}`);return To(await UV(r,t,MC(n.type)),jC(n)).map(e=>typeof e==`string`?e:e.url).map(e=>gF(t,e))}async load(){let e=pg(this.params.url),t=typeof e==`object`&&`urlsFromFile`in e?await this.#e(e):(Array.isArray(e)?e:[e]).map(e=>gF(this.baseUrl,e)),n=AC(this.params,t),r=MC(n.type);if(t.length===0||!t[0]){this.reset(),this.complete();return}let i=async e=>{try{let t=await fetch(e);if(!t.ok)throw Error(`${t.status} ${t.statusText}`);return await UV(t,e,r)}catch(t){throw Error(`Could not load data: ${e}. Reason: ${t.message}`,{cause:t})}},a=async(e,t)=>{try{let r=To(e,jC(n)),i=r instanceof Promise?await r:r;this.beginBatch({type:`file`,url:t});for(let e of i)this._propagate(e)}catch(e){throw console.warn(e),Error(`Cannot parse: ${t}: ${e.message}`,{cause:e})}};this.setLoadingStatus(`loading`),this.reset();try{await Promise.all(t.map(e=>i(e).then(a))),this.setLoadingStatus(`complete`)}catch(e){this.setLoadingStatus(`error`,e.message)}this.complete()}};function LV(e){return`url`in e}function RV(e){return e.length>=10&&e[0]==31&&e[1]==139&&e[2]==8&&(e[3]&224)==0}function zV(e){return e?PV.has(e.split(`;`)[0].trim().toLowerCase()):!1}function BV(e){return e?e.toLowerCase().split(`,`).some(e=>e.trim()==`gzip`):!1}function VV(e){return new Uint8Array(e).buffer}async function HV(e){if(typeof DecompressionStream!=`function`)throw Error(`Gzip-compressed URL data requires DecompressionStream support.`);let t=new Response(VV(e)).body;if(!t)throw Error(`Cannot create a readable stream for gzip decompression.`);let n=t.pipeThrough(new DecompressionStream(`gzip`));return new Uint8Array(await new Response(n).arrayBuffer())}async function UV(e,t,n){if(!(PC(t)||zV(e.headers.get(`content-type`))||BV(e.headers.get(`content-encoding`))))return WV(e,n);let r=new Uint8Array(await e.arrayBuffer());return GV(RV(r)?await HV(r):r,n)}function WV(e,t){return typeof e[t]==`function`?e[t]():e.text()}function GV(e,t){return t==`arrayBuffer`?VV(e):FV.decode(e)}function KV(e){return`sequence`in e}var qV=class extends Zm{constructor(e,t){if(super(t),this.sequence=vg(t.paramRuntime,e.sequence,()=>this.loadSynchronously(),e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!(`start`in this.sequence))throw Error(`'start' is missing from sequence parameters!`);if(!(`stop`in this.sequence))throw Error(`'stop' is missing from sequence parameters!`)}get label(){return`sequenceSource`}loadSynchronously(){let e=pg(this.sequence.as)??`data`,t=pg(this.sequence.start)??0,n=pg(this.sequence.step)??1,r=pg(this.sequence.stop);this.reset(),this.beginBatch({type:`file`});for(let i=t;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}};function JV(e,t){if(EC(e))return new DC(e,t);if(LV(e))return new IV(e,t);if(KV(e))return new qV(e,t);if(YV(e))return Km(e.lazy,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}function YV(e){return`lazy`in e}function XV(e){let t=ZV(e).filter(e=>typeof e==`string`),n=Function(`source`,`return { `+t.map(e=>JSON.stringify(e)).map(e=>`${e}: source[${e}]`).join(`,
|
|
811
|
+
`)+` };`);return n.properties=t,n}function ZV(e){let t=[];do t=t.concat(Object.keys(e)),e=Object.getPrototypeOf(e);while(e&&e!==Object.prototype);return Array.from(new Set(t))}var QV=class extends oh{get behavior(){return 1}#e;#t=e=>e;constructor(){super({type:`clone`});let e=e=>{let t=ZV(e);(!this.#e||!Yl(t,this.#e))&&(this.#e=t,this.#t=XV(e));let n=this.#t;this.handle=e=>this._propagate(n(e)),this.handle(e)};this.handle=e,this.beginBatch=t=>{Ym(t)&&(this.handle=e),super.beginBatch(t)}}};function $V(e){return`name`in e}var eH=class extends Zm{#e;constructor(e,t,n){super(t),this.provider=n,this.params=e}get identifier(){return this.params.name}get label(){return`namedSource`}updateDynamicData(e){this.#e=e,this.loadSynchronously()}loadSynchronously(){let e=this.#e??this.provider(this.params.name)??[],t=e=>e;if(Array.isArray(e))e.length>0&&(t=IC(e[0]));else throw Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:`file`});for(let n of e)this._propagate(t(n));this.complete()}async load(){this.loadSynchronously()}},tH=class{#e;#t;loadingStatusRegistry;constructor(){this.#e=new Set,this.#t=new Set,this.loadingStatusRegistry=new FT}get dataSources(){return[...this.#e]}get collectors(){return[...this.#t]}replaceDataSources(e){this.#e=new Set(e)}addDataSource(e){this.#e.add(e)}removeDataSource(e){e.disposeSubtree(),this.#e.delete(e)}addCollector(e){this.#t.add(e)}removeCollector(e){e.parent&&e.parent.removeChild(e),e.disposeSubtree(),e.observers.clear(),this.#t.delete(e)}pruneCollectorBranch(e){let t=e.parent;for(t&&t.removeChild(e),e.disposeSubtree();t&&t.children.length===0;){let e=t;t=e.parent,t?(t.removeChild(e),e.dispose()):e instanceof Zm?this.removeDataSource(e):e.dispose()}}findNamedDataSource(e){let t;for(let n of this.#e.values())if(n instanceof eH&&e==n.identifier){if(t&&t!==n)throw Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);t=n}if(t)return{dataSource:t}}};function nH(e,t){let n=new Map,r=[];for(let t of e)n.set(t,{ref:t,children:[]});for(let e of n.values()){let i=n.get(t(e.ref));i?i.children.push(e):r.push(e)}return r}function rH(e,t,n){let r=t.preOrder?.(e);if(r)return r;for(let r of n(e)){let e=rH(r,t,n);if(e===`stop`)return e}return t.postOrder?.(e)}function iH(e,t){return rH(e,t,e=>e.children)}function aH(e,t,n,r){let i=[],a=[],o,s=t??new tH,c=[],l=r??(()=>!0);function u(e,t=()=>void 0){if(!o)throw t()||Error(`Cannot append data flow node, no parent exist!`);return o.addChild(e),o=e,i.push(e),e}function d(e,t){return u(e,()=>Error(`Cannot append a transform because no (inherited) data are available! ${t?JSON.stringify(t):``}`))}function f(e,t){for(let n of e){let e;try{e=NV(n,t)}catch(e){throw console.warn(e),Error(`Cannot initialize "${n.type}" transform: ${e}`,{cause:e})}e.behavior&2&&d(new QV),d(e)}}function p(){return i.findLastIndex(e=>e instanceof uh)>i.findLastIndex(e=>e instanceof Zm)}let m=e=>{if(!l(e)){let t=e.flowHandle?.node;if(t){t!==o&&(o=t,i.push(t));return}if(e.spec.data||e.spec.transform||e instanceof LB)throw Error(`Cannot reuse missing flow nodes for `+e.getPathString());return}if(e.spec.data){let t=e.flowHandle?.dataSource;t&&t.view===e&&!t.identifier&&s.removeDataSource(t);let n=$V(e.spec.data)?new eH(e.spec.data,e,e.context.getNamedDataFromProvider):JV(e.spec.data,e);o=n,i.push(n),s.addDataSource(n),e.flowHandle??={},e.flowHandle.dataSource=n}if(e.spec.transform&&f(e.spec.transform,e),e instanceof LB){if(!o)throw Error(`A unit view (${e.getPathString()}) has no (inherited) data source`);let t=sH(e);if(t){c.push(t.rewrite);for(let e of t.transforms)d(e)}e.mark.isPickingParticipant()&&!p()&&(d(new QV),d(new uh({type:`identifier`})));let n=new iV({type:`collect`,groupby:e.getFacetFields(),sort:cH(e,t?.rewrittenEncoding)});u(n);let r=e.flowHandle?.collector;r&&s.removeCollector(r),s.addCollector(n),e.flowHandle??={},e.flowHandle.collector=n}o&&(e.flowHandle??={},e.flowHandle.node=o)},h=nH(oH(e,n),e=>e.dataParent);for(let e of h)iH(e,{preOrder:e=>{a.push({view:e.ref,nodeStackDepth:i.length}),m(e.ref)},postOrder:()=>{let{nodeStackDepth:e}=a.pop();i.length=e,o=i.at(-1)}});return c.forEach(e=>e()),s}function oH(e,t){if(!t)return e.getDescendants();let n=[];return e.visit(e=>{if(!t(e))return tR;n.push(e)}),n}function sH(e){let t=[],n={},r=e.mark.encoding,i=e.getEncoding(),a=[];for(let[e,t]of Object.entries(r)){let n=e;qh(n)!==n&&!(n in i)||Hh(n)&&!Array.isArray(t)&&Ph(t)&&a.push({channel:n,chromPosDef:t})}let o=xn(a,e=>qh(e.channel),e=>e.chromPosDef.chrom);for(let[a,s]of o.entries())for(let[o,c]of s.entries()){let s=[],l=[],u=[];for(let{channel:t,chromPosDef:a}of c){let o=e=>e.replace(/[^A-Za-z0-9_]/g,``),c=[`_linearized_`,o(a.chrom),`_`,o(a.pos)].join(``),d={...e.spec.encoding?.[t]??i[t]??r[t]??{},field:c};delete d.chrom,delete d.pos,!d.type&&a.type&&(d.type=a.type),n[t]=d,s.push(a.pos),u.push(a.offset??0),l.push(c)}t.push(new QV),t.push(new SV({type:`linearizeGenomicCoordinate`,channel:a,chrom:o,pos:s,offset:u,as:l},e))}return t.length?{transforms:t,rewrittenEncoding:n,rewrite:()=>{e.spec.encoding={...e.spec.encoding,...n},tP(e.mark,`encoding`)}}:void 0}function cH(e,t){let n={...e.getEncoding(),...t}.x;if(jh(n)&&e.getScaleResolution(`x`)?.isZoomable()){if(kh(n))return`buildIndex`in n&&n.buildIndex?{field:n.field}:null;if(!Ah(n)&&Fh(n))throw Error(`A zoomable x channel must be mapped to a field.`)}}function lH(e,t=void 0){if(e.parent!==t)return!1;for(let t of e.children)if(!lH(t,e))return!1;return!0}function uH(e,t=!1){if(e.behavior&4&&(t=!0),e instanceof QV)if(t)t=!1;else{let n=e.children[0];e.excise(),n&&uH(n,t);return}e.behavior&1&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)uH(e.children[n],t||r>1)}function dH(e){let t=e.dataSources,n=new Map;for(let e of t)e.identifier&&!n.has(e.identifier)&&n.set(e.identifier,e);let r=new Set,i=new Map;for(let e of t)if(e.identifier){let t=n.get(e.identifier);t&&(t!==e&&t.adoptChildrenOf(e),r.add(t),i.set(e,t))}else r.add(e),i.set(e,e);return e.replaceDataSources(r),i}function fH(e){if(uH(e),!lH(e))throw Error(`Encountered a bug! There's a problem in the data flow structure.`)}function pH(e){let t=dH(e);for(let t of e.dataSources)fH(t);return t}var mH=new WeakMap,hH=new WeakMap;function gH(e,t){let n=mH.get(e);if(n){if(!t?.queueReload)return n;let r=hH.get(e);if(r)return r;let i=n.catch(()=>{}).then(()=>gH(e)).finally(()=>{hH.delete(e)});return hH.set(e,i),i}let r=Promise.resolve().then(()=>e.load()).finally(()=>{mH.delete(e)});return mH.set(e,r),r}function _H(e,t){for(let n of e.getDescendants()){let e=n.flowHandle;if(!e)continue;let r=e.dataSource;r&&(e.dataSource=t.get(r)??r)}}function vH(e,t,n,r){let i=r??(()=>!0),a=SH(e,n).filter(i);if(a.length===0)return{dataFlow:t,unitViews:[],dataSources:new Set,graphicsPromises:[]};let o=new Set(a);for(let e of a)e._setDataInitializationState(`pending`);let s;try{s=aH(e,t,n,e=>o.has(e)),_H(e,pH(s))}catch(e){for(let e of a)e._setDataInitializationState(`none`);throw e}let c=yH(a);for(let e of c)e.visit(e=>e.initializeOnce());let l=a.filter(e=>e instanceof LB),u=[],d=!!e.context.glHelper;for(let e of l){let t=e.mark;t.initializeEncoders(),e.registerDomainSubscriptions(),d&&u.push(t.initializeGraphics().then(()=>t)),e.registerDisposer(e.flowHandle.collector.observe(n=>{if(t.initializeData(),d)try{t.updateGraphicsData()}catch(t){throw t.view=e,t}e.context.animator.requestRender()}))}for(let e of a)e._setDataInitializationState(`ready`);return{dataFlow:s,unitViews:l,dataSources:c,graphicsPromises:u}}function yH(e,t){let n=Array.isArray(e)?e:SH(e,t),r=new Set;for(let e of n){if(t&&!t(e))continue;let n=e;for(;n&&!n.flowHandle?.dataSource;)n=n.dataParent;n?.flowHandle?.dataSource&&r.add(n.flowHandle.dataSource)}return r}function bH(e,t){let n=new Set;return e.visit(e=>{if(t&&!t(e))return tR;if(e.flowHandle?.dataSource)return n.add(e.flowHandle.dataSource),tR}),n}function xH(e,t,n,r){return t||=bH(e,n),Promise.all(Array.from(t).map(e=>gH(e,r))).then(t=>(CH(e),t))}function SH(e,t){let n=[];return t?(e.visit(e=>{if(!t(e))return tR;n.push(e)}),n):e.getDescendants()}function CH(e){let t={type:`subtreeDataReady`,payload:{subtreeRoot:e}};e.visit(e=>e.handleBroadcast(t))}async function wH(e,t,n,r){let i=e=>e.isConfiguredVisible(),{dataFlow:a,graphicsPromises:o}=vH(e,t,i);return r(a),await n.waitUntilReady(),await xH(e,new Set(a.dataSources),i),await UB(o),a}async function TH(e,t,n){let r=e=>e.isConfiguredVisible(),i=EH(e,r).filter(e=>e.getDataInitializationState()===`none`);if(i.length===0)return t;let a=new Set(i),o=e=>a.has(e),s=new Set,c=[];for(let e of i){if(e.spec.data){c.push(e);continue}let t=OH(e);t?s.add(t):c.push(e)}let{dataFlow:l,graphicsPromises:u}=vH(e,t,r,o);await n.waitUntilReady();for(let e of s)e.repropagate();if(c.length){let e=DH(c);await Promise.all(Array.from(e.entries()).map(([e,t])=>xH(e,t,void 0,{queueReload:!0})))}return await UB(u),l}function EH(e,t){let n=[];return e.visit(e=>{if(!t(e))return tR;n.push(e)}),n}function DH(e){let t=new Map;for(let n of e){let e=n;for(;e&&!e.flowHandle?.dataSource;)e=e.dataParent;if(!e?.flowHandle?.dataSource){if(n.spec.data)throw Error(`No data source found for view `+n.getPathString());continue}let r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(e.flowHandle.dataSource)}return t}function OH(e){let t=e.dataParent;for(;t;){let e=t.flowHandle?.collector;if(e)return e.completed?e:void 0;t=t.dataParent}}var kH=class{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){let t=this.transitions.indexOf(e);t>=0&&this.transitions.splice(t,1)}requestRender(){this._renderRequested?this._warn&&console.warn(`Render already requested!`):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;let t=this.transitions;this.transitions=[];let n;for(;n=t.shift();)n(e);this._renderCallback(e)}))}transition(e){return dB({requestAnimationFrame:e=>this.requestTransition(e),...e})}};function AH(e,t,n,r,i){let a=0,o=!0,s=structuredClone(i),c=s;function l(e,t,n,r){return t+(e-t)*2**(-n/r)}function u(i){if(o)return;let d=i-a;a=i;for(let e of Object.keys(c))s[e]=l(s[e],c[e],d,n);t(s);let f=-1/0;for(let e of Object.keys(c))f=Math.max(f,Math.abs(c[e]-s[e]));f<r?(s=c,t(s),o=!0,f!=0&&e.requestRender()):e.requestTransition(e=>u(e))}function d(e){c=e,o&&(o=!1,a=+document.timeline.currentTime,u(a))}return d.stop=()=>{o=!0},d}var jH=class{constructor(e){this.genomes=new Map,this.#e=new Map,this.#t=new Map,this.#n=new Map,this.#r=0,this.#i=void 0,this.baseUrl=e}#e;#t;#n;#r;#i;async initialize(e){let{name:t,...n}=e;this.configureGenomes(new Map([[t,n]]),t),await this.ensureAssembly(t)}configureGenomes(e,t){this.genomes.clear(),this.#t.clear(),this.#n.clear(),this.#r=0,this.#e=new Map(e),this.#i=t}getDefaultAssemblyName(){if(this.#i)return this.#i;if(this.#e.size===1)return this.#e.keys().next().value;if(this.#e.size===0&&this.genomes.size===1)return this.genomes.keys().next().value}async ensureAssemblies(e){let t=[],n=new Set;for(let r of e){if(!r)continue;let e=MH(r);n.has(e)||(n.add(e),t.push(this.ensureAssembly(r)))}await Promise.all(t)}async ensureAssembly(e){if(typeof e==`object`)return this.#d(e);let t=this.genomes.get(e);if(t)return t;let n=this.#e.get(e);if(n)return this.#u(e,n);let r=this.#s(e);if(r)return r;throw this.#o(e)}getGenome(e){if(e&&typeof e==`object`)return this.#f(e);if(typeof e==`string`){let t=this.genomes.get(e);if(t)return t;if(this.#e.has(e))throw Error(`Genome ${e} has not been loaded yet. Call ensureAssembly("${e}") before accessing it.`);let n=this.#s(e);if(n)return n;throw this.#o(e)}let t=this.getDefaultAssemblyName();if(t)return this.getGenome(t);if(this.#e.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0&&this.#e.size)throw Error("Default genome is not loaded. Define root `assembly` or call ensureAssembly() first.");if(this.genomes.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0)throw Error(`No genomes have been configured!`);return this.genomes.values().next().value}#a(e){try{return new yR({name:e})}catch{return}}#o(e){return Error(`No genome with the name ${e} has been configured!`)}#s(e){let t=this.#a(e);if(t)return this.genomes.set(e,t),t}async#c(e,t){let n=this.#t.get(e);if(!n)throw Error(`No pending genome load for ${e}.`);await n;let r=this.genomes.get(e);if(!r)throw Error(t);return r}async#l(e,t){let n=t.load(this.baseUrl);this.#t.set(e,n);try{await n}catch(t){throw this.genomes.delete(e),t}finally{this.#t.delete(e)}return t}async#u(e,t){let n=this.genomes.get(e);if(n)return this.#t.has(e)?this.#c(e,`Loading genome ${e} failed before it became available.`):n;if(this.#t.has(e))return this.#c(e,`Loading genome ${e} failed before it became available.`);let r=new yR({name:e,...t});return this.genomes.set(e,r),`url`in t?this.#l(e,r):r}async#d(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n)return this.#t.has(t)?this.#c(t,`Loading inline assembly ${t} failed before it became available.`):n;if(this.#t.has(t))return this.#c(t,`Loading inline assembly ${t} failed before it became available.`);if(`contigs`in e){let n=new yR({name:t,contigs:e.contigs});return this.genomes.set(t,n),n}let r=new yR({name:t,url:e.url});return this.genomes.set(t,r),this.#l(t,r)}#f(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n){if(this.#t.has(t))throw Error(`Inline URL assembly ${t} has not been loaded yet. Call ensureAssembly() before accessing it.`);return n}if(`url`in e)throw Error(`Inline URL assemblies must be loaded first. Call ensureAssembly() before accessing it.`);let r=new yR({name:t,contigs:e.contigs});return this.genomes.set(t,r),r}#p(e){if(`contigs`in e==`url`in e)throw Error("Inline `scale.assembly` objects must define exactly one of `contigs` or `url`.")}#m(e){let t=JSON.stringify(e),n=this.#n.get(t);if(n)return n;let r=`inline_assembly_${this.#r}`;for(this.#r+=1;this.genomes.has(r)||this.#e.has(r)||this.#t.has(r);)r=`inline_assembly_${this.#r}`,this.#r+=1;return this.#n.set(t,r),r}};function MH(e){return typeof e==`string`?`name:${e}`:`inline:${JSON.stringify(e)}`}var NH={pages:[`Lato-Regular.png`],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:`Lato Regular`,size:42,bold:0,italic:0,charset:` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~`.split(``),unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]},PH=`data:image/png;base64,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`,FH={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900},IH=class{constructor(e){this._webGLHelper=e,this.fontRepository=`https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/`,this._fonts=new hn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:jM(NH),texture:e?this._createTextureNow(PH):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t=`normal`,n=`regular`){if(P(n)&&(n=FH[n.toLowerCase()],!n))throw Error(`Unknown font weight: `+n);let r={family:e,style:t,weight:n},i=this._fonts.get(r);return i||(i={metrics:void 0,texture:void 0},this._fonts.set(r,i),this._promises.push(this._loadFontEntry(i,r))),i}async _loadFontEntry(e,t){try{let n=zH(await this._loadMetadata(t.family),t),r=this.fontRepository+LH(t.family)+`/`+n.replace(/\.\w+/,``),i=this._createTexture(r+`.png`),a=this._loadFont(r+`.json`);e.texture=await i,e.metrics=await a}catch{console.warn(`Cannot load font: "${t.family}". Using the embedded default font.`),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let t=this._fontPromises.get(e);return t||(t=fetch(e).then(e=>{if(!e.ok)throw Error(`Could not load font: `+e.status);return e}).then(e=>e.json()).then(e=>jM(e)),this._fontPromises.set(e,t)),t}_loadMetadata(e){let t=LH(e),n=this._metadataPromises.get(t);if(!n){let e=this.fontRepository+t+`/METADATA.pb`;n=fetch(e).then(t=>{if(!t.ok)throw Error(`Could not load font metadata. Response status: `+t.status+`, url: `+e);return t}).then(e=>e.text()).then(e=>RH(e)).catch(e=>{console.warn(e.message)}),this._metadataPromises.set(t,n)}return n}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){let t=this._webGLHelper.gl;return new Promise((n,r)=>{jk(t,{src:e,min:t.LINEAR},(e,t,i)=>{e?r(e):n(t)})})}_createTextureNow(e){let t=this._webGLHelper.gl,n,r=new Promise((r,i)=>{n=jk(t,{src:e,min:t.LINEAR},(e,t,n)=>{e?i(e):r(t)})});return this._promises.push(r),n}};function LH(e){return e.toLowerCase().replaceAll(/[^\w]/g,``)}function RH(e){let t=e.split(`
|
|
812
|
+
`),n=[],r;for(let e of t)if(e.startsWith(`fonts {`)&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),e.startsWith(`}`)&&(n.push(r),r=void 0),r){let t=e.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(t){let e=t[1];r[e]=t[2]}if(t=e.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),t){let e=t[1];r[e]=+t[2]}}return n}function zH(e,t){let n,r=1/0;for(let i of e)if(t.family.localeCompare(i.name,void 0,{sensitivity:`accent`})==0&&t.style==i.style){let e=Math.abs(t.weight-i.weight);e<r&&(r=e,n=i)}return n?.filename}var BH=new Map,VH={Organism:`Homo sapiens`};async function HH(e,t,n={}){let r=e.symbol,i={...VH,GENE:r};for(let[e,t]of Object.entries(n))typeof t==`string`&&(i[e]=t);let a=BH.get(r)??await GH(i);return a?(BH.set(r,a),O`
|
|
804
813
|
<div class="title">
|
|
805
814
|
<strong>${a.name}</strong>
|
|
806
815
|
${a.description}
|
|
807
816
|
</div>
|
|
808
817
|
<p class="summary">${a.summary}</p>
|
|
809
818
|
<p class="source">Source: NCBI RefSeq Gene</p>
|
|
810
|
-
`):null}async function
|
|
819
|
+
`):null}async function UH(e){let t={mode:`cors`},n=new URL(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`);n.search=new URLSearchParams({db:`gene`,term:KH(e),sort:`relevance`,retmax:`1`,retmode:`json`}).toString();let r=(await fetch(n.toString(),t).then(e=>e.json())).esearchresult.idlist[0];if(r){let e=new URL(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi`);return e.search=new URLSearchParams({db:`gene`,id:r,retmode:`json`}).toString(),(await fetch(e.toString(),t).then(e=>e.json())).result[r]}else return null}var WH=bg(UH,500);function GH(e){return WH(e)}function KH(e){return Object.entries(e).filter(([e,t])=>t&&t.length>0).map(([e,t])=>`("${t}"[${e}])`).join(` AND `)}var qH=sr(`.4~r`),JH=sr(`.4~e`);function YH(e){return e==null?O` <span class="na">NA</span> `:P(e)?e.substring(0,30):Number.isInteger(e)?``+e:N(e)?Math.abs(e)>10**8||Math.abs(e)<10**-8?JH(e):qH(e):St(e)?e?`True`:`False`:Ze(e)?O`${e.map((t,n)=>[YH(t),n<e.length-1?`, `:xe])}`:`?`+typeof e+` `+e}function XH(e){let t=[];return ZH(Object.entries(e),t),t}function ZH(e,t,n){for(let[r,i]of e)r.startsWith(`_`)||(typeof i==`object`&&i&&!Array.isArray(i)?ZH(Object.entries(i),t,(n||``)+r+`.`):t.push({key:(n||``)+r,value:i}))}var QH={x:`x2`,y:`y2`},$H=new Set([`auto`,`locus`,`interval`,`endpoints`,`disabled`]),eU=new WeakMap;function tU(e,t,n){let r=nU(t),i=iU(`x`,e,t,r,gU(n,`x`)),a=iU(`y`,e,t,r,gU(n,`y`)),o=i.rows.length>0&&a.rows.length>0,s=[...o?rU(`x`,i.rows):i.rows,...o?rU(`y`,a.rows):a.rows],c=new Set;for(let n of[i,a])for(let i of n.usedLinearizedFields){let n=r.get(i);!n||n.ambiguous||_U(e,i,n,t)&&(c.add(n.chrom),c.add(n.pos))}return{hiddenRowKeys:[...c],genomicRows:s,flattenDatumRows:()=>XH(e),formatGenomicLocus:(e,n)=>pU(t,e,n),formatGenomicInterval:(e,n)=>mU(t,e,n)}}function nU(e){let t=eU.get(e);if(t)return t;let n=dU(e);return eU.set(e,n),n}function rU(e,t){let n=e.toUpperCase()+` `;return t.map(e=>({key:n+e.key,value:e.value}))}function iU(e,t,n,r,i){let a=new Set;if(i===`disabled`)return{rows:[],usedLinearizedFields:a};let o=uU(n,e,t);if(!o)return{rows:[],usedLinearizedFields:a};o.field&&a.add(o.field);let s=uU(n,QH[e],t);s?.field&&a.add(s.field);let c=i===`auto`?aU(o,s,r):i;if(c===`endpoints`&&s){let[t,i]=sU(o,s,r);return{rows:[{key:`Endpoint 1`,value:pU(n,e,t.value)??String(t.value)},{key:`Endpoint 2`,value:pU(n,e,i.value)??String(i.value)}],usedLinearizedFields:a}}return c===`interval`&&s?{rows:[{key:`Interval`,value:mU(n,e,[o.value,s.value])??o.value+` - `+s.value}],usedLinearizedFields:a}:{rows:[{key:`Coordinate`,value:pU(n,e,o.value)??String(o.value)}],usedLinearizedFields:a}}function aU(e,t,n){if(!t)return`locus`;let r=oU(e.field,n),i=oU(t.field,n);return r&&i&&r!==i?`endpoints`:`interval`}function oU(e,t){let n=e?t.get(e):void 0;return n&&!n.ambiguous?n.groupId:void 0}function sU(e,t,n){let r=cU(e.field,n),i=cU(t.field,n);return r===2&&i!==2||i===1&&r!==1||r===2&&i===1?[t,e]:[e,t]}function cU(e,t){let n=e?t.get(e):void 0,r=[n?.pos,n?.chrom,e],i;for(let e of r){let t=lU(e);if(t!==void 0){if(i===void 0)i=t;else if(i!==t)return}}return i}function lU(e){if(!e)return;let t=e.toLowerCase(),n=t.match(/(?:^|[^0-9])(1|2)$/);if(n)return n[1]===`1`?1:2;let r=t.match(/(?:^|[_-])(first|second)(?:[_-]|$)/);if(r)return r[1]===`first`?1:2}function uU(e,t,n){let r=e.encoders?.[t];if(r?.scale?.type!==`locus`)return;let i=Th(r);if(!i)return;let a=+i(n);if(Number.isFinite(a))return{value:a,field:i.fields?.length===1?i.fields[0]:void 0}}function dU(e){let t=new Map,n=0,r=e.unitView?.getCollector?.()?.parent;for(;r;){let e=r.params;if(e?.type===`linearizeGenomicCoordinate`){let r=Xl(e.as),i=Xl(e.pos),a=fU(e.offset,i.length),o=`g`+ n++,s=e.channel===`y`?`y`:`x`;for(let n=0;n<r.length;n++){if(n>=i.length)continue;let c=t.get(r[n]);c?c.ambiguous=!0:t.set(r[n],{groupId:o,chrom:e.chrom,pos:i[n],offset:a[n],channel:s,ambiguous:!1})}}r=r.parent}return t}function fU(e,t){let n=Xl(e);return n.length===0?Array(t).fill(0):n.length===1?Array(t).fill(n[0]):n.length===t?n:Array(t).fill(0)}function pU(e,t,n){return hU(e,t)?.formatLocus(n)}function mU(e,t,n){return hU(e,t)?.formatInterval(n)}function hU(e,t){let n=e.encoders?.[t]?.scale;return n?.type===`locus`&&`genome`in n?n.genome():void 0}function gU(e,t){let n=e?.genomicCoordinates?.[t],r=typeof n==`string`?n:n?.mode??`auto`;if(!$H.has(r))throw Error(`Unknown genomic coordinate display mode: "`+r+`"`);return r}function _U(e,t,n,r){let i=hU(r,n.channel);if(!i)return!1;let a=e[n.chrom],o=e[n.pos],s=e[t];if(a===void 0||o===void 0||s===void 0)return!1;let c=+o,l=+s;if(!Number.isFinite(c)||!Number.isFinite(l))return!1;let u;try{u=i.toContinuous(a,c-n.offset)}catch{return!1}return Math.abs(u-l)<1e-6}async function vU(e,t,n,r){let i=e=>qe(e).join(`.`),a=e=>e!=null&&!(typeof e==`number`&&Number.isNaN(e)),o=(e,n,r)=>{for(let[o,s]of Object.entries(t.encoders)){let t=s?Th(s)?.fields:void 0;if(t&&t.some(t=>t===e||i(t)===e))switch(o){case`color`:case`fill`:case`stroke`:{let e=s(r);return e==null?a(n)?O`
|
|
811
820
|
<span
|
|
812
821
|
class="color-legend color-legend-unmapped"
|
|
813
822
|
></span>
|
|
814
|
-
`:``:
|
|
823
|
+
`:``:O`
|
|
815
824
|
<span
|
|
816
825
|
class="color-legend"
|
|
817
826
|
style=${`background-color: `+String(e)}
|
|
818
827
|
></span>
|
|
819
|
-
`}default:}}return``},s=r??
|
|
828
|
+
`}default:}}return``},s=r??tU(e,t,n),c=s.flattenDatumRows?s.flattenDatumRows():XH(e),l=s.genomicRows??[],u=new Set(s.hiddenRowKeys??[]),d=c.filter(t=>!u.has(t.key)||o(t.key,t.value,e)),f=[...l,...d];if(!f.length)return;let p=O`
|
|
820
829
|
<table class="attributes">
|
|
821
|
-
${f.map(t=>{let n=
|
|
830
|
+
${f.map(t=>{let n=YH(t.value),r=o(t.key,t.value,e);return O`
|
|
822
831
|
<tr>
|
|
823
832
|
<th>${t.key}</th>
|
|
824
833
|
<td>${n} ${r}</td>
|
|
825
834
|
</tr>
|
|
826
835
|
`})}
|
|
827
836
|
</table>
|
|
828
|
-
`,m=t.unitView.getTitleText();return
|
|
837
|
+
`,m=t.unitView.getTitleText();return O`${m?O`
|
|
829
838
|
<div class="title">
|
|
830
839
|
<strong>${m}</strong>
|
|
831
840
|
</div>
|
|
832
|
-
`:``}${p}`}var iU=class e extends DL{#e=new Map;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e}async initializeChildren(){}getNextAutoName(e){let t=this.#e.get(e)??0;return this.#e.set(e,t+1),e+t}*[Symbol.iterator](){}visit(e){let t;try{t=e(this)}catch(e){throw e.view=this,e}if(t===`VISIT_STOP`)return t;if(t!==`VISIT_SKIP`){e.beforeChildren&&e.beforeChildren(this);for(let t of this){let n=t.visit(e);if(n===`VISIT_STOP`)return n}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(t){let n=this;for(let r=0;r<t.length;r++){if(!(n instanceof e))return;let i=n.#t(t[r]);if(!i)return;if(r===t.length-1)return i;n=i}}#t(e){for(let t of this)if(t.name===e)return t}findDescendantByName(e){let t;return this.visit(n=>{if(n.name==e)return t=n,TL}),t}getDefaultResolution(e,t){return`shared`}};function aU(e){lB(e),uB(e)}function oU(e){e.getDescendants().forEach(e=>e.configureViewOpacity())}var sU=new WeakMap,cU=new WeakMap;function lU(e,t){if(t!==null&&typeof t!=`string`)throw Error(`Import scope name must be a string or null.`);sU.set(e,{name:t})}function uU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;cU.set(e,n)}function dU(e){let t=e.getDataAncestors(),n=[];for(let e=t.length-1;e>=0;--e){let r=sU.get(t[e]);r&&typeof r.name==`string`&&n.push(r.name)}return n}function fU(e,t){e.visit(e=>{let n=cU.get(e);if(n===`excludeSubtree`)return wL;if(n!==`exclude`)return t(e)})}function pU(e){let t=[];for(let n of hU(e)){let r=gU(n);vU(e,r,t),yU(e,r,t)}return t}function mU(e){return e.persist===!1?!1:gg(e)?!0:hg(e)?!!e.bind:!1}function hU(e){let t=new Set([e]);return e.visit(e=>{let n=sU.get(e);n&&typeof n.name==`string`&&t.add(e)}),Array.from(t)}function gU(e){return dU(e)}function _U(e){return e.length?`import scope [`+e.join(` / `)+`]`:`import scope (root)`}function vU(e,t,n){let r=new Map;SU(e,t,e=>{for(let[t,n]of e.paramRuntime.paramConfigs){if(!mU(n))continue;let i=r.get(t);i?i.push(e):r.set(t,[e])}});for(let[e,i]of r){if(i.length<=1)continue;let r=i.map(e=>e.getPathString()).join(`, `);n.push({message:`Bookmarkable parameter "`+e+`" is not unique within `+_U(t)+`. Found in: `+r+`.`,scope:t})}}function yU(e,t,n){let r=bU(e,t);if(!r.length)return;let i=r.filter(e=>xU(e));if(i.length<=1)return;let a=new Map;for(let e of i){let t=sU.get(e),n=t?t.name:void 0;typeof n!=`string`||!n.length||a.set(n,(a.get(n)??0)+1)}for(let[e,r]of a)r>1&&n.push({message:`Import instance name "`+e+`" is used multiple times for addressable instances in `+_U(t)+`.`,scope:t})}function bU(e,t){let n=[];return SU(e,t,e=>{if(dU(e).length!==t.length+1)return;let r=sU.get(e);!r||typeof r.name!=`string`||n.push(e)},{includeNamedImportRoots:!0}),n}function xU(e){let t=!1;return e.visit(e=>{let n=cU.get(e);if(n===`excludeSubtree`)return wL;if(n!==`exclude`){for(let n of e.paramRuntime.paramConfigs.values())if(mU(n))return t=!0,TL}}),t}function SU(e,t,n,r={}){let i=r.includeNamedImportRoots??!1;e.visit(e=>{let r=sU.get(e),a=cU.get(e);if(a===`excludeSubtree`)return wL;if(a!==`exclude`&&CU(e,t,r,i))return n(e)})}function CU(e,t,n,r){let i=dU(e);return wU(i,t)?!0:!r||!n||typeof n.name!=`string`||i.length!==t.length+1?!1:TU(t,i)}function wU(e,t){return e.length===t.length?TU(e,t):!1}function TU(e,t){if(e.length>t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function EU(e){let t=[],n=!1,r=OU(e);for(let e of r){let r=e.getAssemblyRequirement();r.assembly&&t.push(r.assembly),r.needsDefaultAssembly&&(n=!0)}return{assemblies:t,needsDefaultAssembly:n}}async function DU(e,t){let{assemblies:n,needsDefaultAssembly:r}=EU(e);if(r){let e=t.getDefaultAssemblyName();if(!e)throw Error("No default assembly has been configured. Set root `assembly`, define exactly one entry in root `genomes`, or set `scale.assembly` on each locus scale.");n.push(e)}await t.ensureAssemblies(n)}function OU(e){let t=new Set,n=[`x`,`y`],r=e=>{for(let r of n){let n=e.getScaleResolution(r);n&&t.add(n)}};return r(e),fU(e,r),t}var kU=class{constructor(e,t){this.container=e,this.options=t}async addChildSpec(e,t){let{specs:n,insertAt:r}=this.options.getChildSpecs(),i=t??n.length,a=this.options.defaultName?.(i,e)??this.container.getNextAutoName(`child`),o=await this.container.context.createOrImportView(e,this.container,this.container,a,void 0,this.options.createViewOptions);await DU(o,this.container.context.genomeStore),r(i,e);let s=this.options.insertView(o,i);this.options.prepareView&&await this.options.prepareView(o,i,s),oU(o);let{dataSources:c,graphicsPromises:l}=rH(o,this.container.context.dataFlow,e=>e.isConfiguredVisible());return await oH(o,c),await dB(l),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),o}async removeChildAt(e){let{removeAt:t}=this.options.getChildSpecs();this.options.removeView(e),t(e),this.options.afterRemove&&await this.options.afterRemove(e),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}},AU=.5;function jU(e){return`multiscale`in e&&Qe(e.multiscale)}function MU(e){if(!e.multiscale.length)throw Error(`"multiscale" must contain at least one child view.`);let t=NU(e.stops,e.multiscale.length),n=e.multiscale.map((n,r)=>e.multiscale.length===1?n:{opacity:FU(r,e.multiscale.length,t),layer:[n]}),r={...e};return delete r.multiscale,delete r.stops,{...r,layer:n}}function NU(e,t){let n=`unitsPerPixel`,r,i=`auto`,a=AU;if(Qe(e))r=PU(e,t,`stops`);else if($e(e))n=e.metric??`unitsPerPixel`,r=PU(e.values,t,`stops.values`),i=e.channel??`auto`,a=e.fade??AU;else throw Error(`"stops" must be an array or an object with "values".`);if(n!==`unitsPerPixel`)throw Error(`Only "unitsPerPixel" is supported for "stops.metric" in multiscale.`);if(![`x`,`y`,`auto`].includes(i))throw Error(`"stops.channel" must be one of "x", "y", or "auto".`);if(!Number.isFinite(a)||a<0||a>.5)throw Error(`"stops.fade" must be a finite number in range [0, 0.5].`);if(r.forEach((e,t)=>{if(!R(e)&&(!Number.isFinite(e)||e<=0))throw Error(`Invalid stop value at index `+t+`. Stop values must be positive finite numbers.`)}),!r.some(R)){let e=r;for(let t=1;t<e.length;t++)if(e[t-1]<=e[t])throw Error(`"stops.values" must be strictly decreasing for "unitsPerPixel".`);for(let t=0;t<e.length-1;t++)if(e[t]*(1-a)<=e[t+1]*(1+a))throw Error(`Adjacent transitions overlap. Reduce fade or increase stop spacing.`)}return{metric:n,values:r,channel:i,fade:a}}function PU(e,t,n){if(!Qe(e))throw Error(`"`+n+`" must be an array of numbers or ExprRefs.`);let r=t-1;if(e.length!==r)throw Error(`Invalid stop count for multiscale. Expected `+r+`, got `+e.length+`.`);for(let t of e)if(!R(t)&&!Number.isFinite(t))throw Error(`"`+n+`" must contain only numbers or ExprRefs.`);return e}function FU(e,t,n){let r,i,a=n.values.map(e=>({hi:IU(e,1+n.fade),lo:IU(e,1-n.fade)}));if(e===0)r=[a[0].hi,a[0].lo];else if(e===t-1){let e=a.at(-1);r=[e.hi,e.lo]}else{let t=a[e-1],n=a[e];r=[t.hi,t.lo,n.hi,n.lo]}return i=e===0?[1,0]:e===t-1?[0,1]:[0,1,1,0],{channel:n.channel,unitsPerPixel:r,values:i}}function IU(e,t){return R(e)?{expr:`(`+e.expr+`) * `+t}:e*t}function LU(e){return`mark`in e&&(N(e.mark)||$e(e.mark))}function RU(e){return`layer`in e&&$e(e.layer)}function zU(e){return`import`in e}function BU(e){return`vconcat`in e&&Qe(e.vconcat)}function VU(e){return`hconcat`in e&&Qe(e.hconcat)}function HU(e){return`concat`in e&&Qe(e.concat)}var UU=class extends iU{#e=[];constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e,this.needsAxes={x:!0,y:!0}}async initializeChildren(){this.#e=await Promise.all(this.spec.layer.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName(`layer`),e=>{if(!RU(e)&&!LU(e)&&!jU(e))throw new AN(`LayerView accepts only unit, layer, or multiscale specs as children!`,this)},{layoutSizeParams:`inherit`})))}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}#t(){return new kU(this,{getChildSpecs:()=>({specs:this.spec.layer,insertAt:(e,t)=>{this.spec.layer.splice(e,0,t)},removeAt:e=>{this.spec.layer.splice(e,1)}}),insertView:(e,t)=>(e.layoutParent??=this,this.#e.splice(t,0,e),e),removeView:e=>{let t=this.#e[e];if(!t)throw Error(`Child index out of range!`);t.disposeSubtree(),this.#e.splice(e,1)},defaultName:()=>this.getNextAutoName(`layer`),createViewOptions:{layoutSizeParams:`inherit`}})}get children(){return this.#e.slice()}*[Symbol.iterator](){for(let e of this.#e)yield e}render(e,t,n={}){if(super.render(e,t,n),this.isConfiguredVisible()){e.pushView(this,t);for(let r of this.#e)r.render(e,t,n);e.popView(this)}}propagateInteraction(e){this.handleInteraction(e,!0);for(let t=this.#e.length-1;t>=0;t--)if(this.#e[t].propagateInteraction(e),e.stopped)return;this.handleInteraction(e,!1)}},WU=class{constructor(e,t){this.n=e,this.maxCols=t??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<n;r++){let n=[];e.push(n);for(let e=0;e<t;e++){let i=r*t+e;i<this.n&&n.push(i)}}return e}get colIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<t;r++){let i=[];e.push(i);for(let e=0;e<n;e++){let n=e*t+r;n<this.n&&i.push(n)}}return e}getCellIndex(e,t){let n;if(this.maxCols==1/0)n=t==0?e:void 0;else if(e>=this.maxCols)return;else n=t*this.nCols+e;return n<this.n?n:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}};function GU(e){return()=>e}var KU=class e{static create(t,n,r,i){return new e(GU(t),GU(n),GU(r),GU(i))}static ZERO=e.create(0,0,0,0);_offset(e,t){let n=this[`_`+e];if(t===0)return n;switch(typeof t){case`number`:return()=>n()+t;case`function`:return()=>n()+t();default:throw Error(`Not a number of function`)}}_passThrough(e){return this._offset(e,0)}constructor(e,t,n,r){this._x=e,this._y=t,this._width=n,this._height=r}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(t){if(!Object.keys(t).length)return this;let n=e=>{let n=t[e];return typeof n==`number`?GU(n):typeof n==`function`?n:this._passThrough(e)};return new e(n(`x`),n(`y`),n(`width`),n(`height`))}translate(t,n){return t===0&&n===0?this:new e(this._offset(`x`,t),this._offset(`y`,n),this._passThrough(`width`),this._passThrough(`height`))}translateBy(e){return this.translate(e.x,e.y)}expand(t,n=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new e(t.left?this._offset(`x`,-t.left*n):this._passThrough(`x`),t.top?this._offset(`y`,-t.top*n):this._passThrough(`y`),t.width?this._offset(`width`,t.width*n):this._passThrough(`width`),t.height?this._offset(`height`,t.height*n):this._passThrough(`height`))}shrink(e){return this.expand(e,-1)}intersect(t){return this===t||t==null?this:new e(()=>Math.max(this.x,t.x),()=>Math.max(this.y,t.y),()=>Math.min(this.x2,t.x2)-Math.max(this.x,t.x),()=>Math.min(this.y2,t.y2)-Math.max(this.y,t.y))}union(t){return this===t||t==null?this:new e(()=>Math.min(this.x,t.x),()=>Math.min(this.y,t.y),()=>Math.max(this.x2,t.x2)-Math.min(this.x,t.x),()=>Math.max(this.y2,t.y2)-Math.min(this.y,t.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new e(GU(this.x),GU(this.y),GU(this.width),GU(this.height))}containsPoint(e,t){return e>=this.x&&e<this.x2&&t>=this.y&&t<this.y2}normalizePoint(e,t,n=!1){let r={x:(e-this.x)/this.width,y:(t-this.y)/this.height};return n&&(r.y=1-r.y),r}denormalizePoint(e,t,n=!1){return n&&(t=1-t),{x:this.x+e*this.width,y:this.y+t*this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}toRoundedString(){return`Rectangle: x: ${Math.round(this.x)}, y: ${Math.round(this.y)}, width: ${Math.round(this.width)}, height: ${Math.round(this.height)}`}},qU={x:`axisX`,y:`axisY`},JU={top:`axisTop`,bottom:`axisBottom`,left:`axisLeft`,right:`axisRight`},YU={nominal:`axisNominal`,ordinal:`axisOrdinal`,quantitative:`axisQuantitative`,index:`axisIndex`,locus:`axisLocus`};function XU(e,{channel:t,orient:n,type:r,style:i}){let a=IN(i);return FN(e.flatMap(e=>{let i=qU[t],o=n?JU[n]:void 0,s=r?YU[r]:void 0,c=[e.axis,i?e[i]:void 0,o?e[o]:void 0,s?e[s]:void 0];return[...c.flatMap(e=>IN(e?.style)).map(t=>e.style?.[t]),...c,...a.map(t=>e.style?.[t])]}))}var ZU=`chromosome_ticks_and_labels`,QU=`labels_main`,$U=`ticks_and_labels`,eW=`axisExtent`,tW=`_labelWidth`,nW=10,rW=2;function iW(e){return e==`x`?`y`:`x`}var aW={x:[`bottom`,`top`],y:[`left`,`right`]},oW=Object.fromEntries(Object.entries(aW).map(([e,t])=>t.map(t=>[t,e])).flat(1));function sW(e){return oW[e]}var cW=class extends UU{#e;#t;#n;#r=!1;#i=!1;constructor(e,t,n,r,i,a){let o=sW(e.orient),s=XU(i.getConfigScopes(),{channel:o,orient:e.orient,type:t,style:e.style}),c={...s,...e},l={...s,...mW(t,c),...e};super(t==`locus`?gW(l,t):hW(l,t),n,r,i,`axis_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=l,this.#e=lW(l),this.#t=this.paramRuntime.allocateSetter(eW,this.#e),uU(this,{skipSubtree:!0})}async initializeChildren(){await super.initializeChildren();let e=this.getDescendants().find(e=>e instanceof aB&&e.name===QU);e instanceof aB&&(this.#n=e),!(!this.axisProps.labels||!this.#n)&&this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>this.#o()))}getSize(){let e={px:this.getPerpendicularSize()},t={grow:1};return oW[this.axisProps.orient]==`x`?new kP(t,e):new kP(e,t)}getPerpendicularSize(){return this.#e}isPickingSupported(){return!1}#a(){this.#i||(this.#i=!0,queueMicrotask(()=>{this.#i=!1,this.#s()}))}#o(){if(this.#r)return;let e=this.#n?.getCollector();e&&(this.#r=!0,this.registerDisposer(e.observe(()=>this.#a())),e.completed&&this.#a())}#s(){let e=sW(this.axisProps.orient),t=this.dataParent.getScaleResolution(e);if(t&&!t.isDomainDefinedExplicitly()&&!t.isDomainInitialized())return;let n=pW(this.axisProps,this.context,this.#n);if(n===void 0)return;let r=lW(this.axisProps,n);r>=this.#e+rW&&(this.#e=r,this.#t(r),this.invalidateSizeCache(),this.context.requestLayoutReflow())}};function lW(e,t){let n=uW(e);return e.labels&&(n+=t??dW(e)),fW(e,n)}function uW(e){let t=e.ticks&&e.tickSize||0;return e.labels&&(t+=e.labelPadding),e.title&&(t+=e.titlePadding+e.titleFontSize),t}function dW(e){return sW(e.orient)==`x`?e.labelFontSize:nW}function fW(e,t){return Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,t))}function pW(e,t,n){let r=n?.getCollector();if(!r?.completed)return;let i=0;r.visitData(e=>{i=Math.max(i,Number(e[tW])||0)});let a=(e.labelFont?t.fontManager.getFont(e.labelFont,e.labelFontStyle,e.labelFontWeight):t.fontManager.getDefaultFont()).metrics;if(!a)return;let o=(a.capHeight+a.descent)/a.common.base*e.labelFontSize,s=e.labelAngle*Math.PI/180,c=Math.abs(Math.sin(s)),l=Math.abs(Math.cos(s)),u=sW(e.orient)==`x`?i*c+o*l:i*l+o*c;return Math.ceil(u)}function mW(e,t){let n=t.orient,r=e==`nominal`||e==`ordinal`,i=`center`,a=`middle`,o=t.labelAngle??((n==`top`||n==`bottom`)&&r?-90:0);switch(n){case`left`:i=`right`;break;case`right`:i=`left`;break;case`top`:case`bottom`:Math.abs(o)>30?(i=o>0==(n==`bottom`)?`left`:`right`,a=`middle`):a=n==`top`?`alphabetic`:`top`;break;default:}return{labelAlign:i,labelAngle:o,labelBaseline:a}}function hW(e,t){let n=e,r=sW(n.orient),i=iW(r),a=n.orient==`bottom`||n.orient==`right`?1:-1,o=n.orient==`bottom`||n.orient==`left`?1:0,s=()=>({field:`value`,type:t}),c=()=>({name:`domain`,data:{values:[{}]},mark:{type:`rule`,clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:o,size:n.domainWidth}}),l=()=>({name:QU,transform:[{type:`measureText`,field:`label`,as:tW,fontSize:n.labelFontSize,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight}],mark:{type:`text`,clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight,[i+`Offset`]:(n.tickSize+n.labelPadding)*a,[i]:o,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:s(),text:{field:`label`}}}),u=()=>({name:`ticks`,mark:{type:`rule`,clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+`2`]:{value:{expr:`${o} - ${n.tickSize} / ${eW} * ${o?1:-1}`}}}}),d=()=>({name:`title`,data:{values:[{}]},mark:{type:`text`,clip:!1,align:`center`,baseline:n.orient==`bottom`?`bottom`:`top`,angle:[0,90,0,-90][[`top`,`right`,`bottom`,`left`].indexOf(n.orient)],text:n.title,color:n.titleColor,[r]:.5,[i]:1-o}}),f=()=>{let e={name:$U,encoding:{[r]:s()},layer:[]};return n.ticks&&e.layer.push(u()),n.labels&&e.layer.push(l()),e},p={resolve:{scale:{[r]:`forced`}},domainInert:!0,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},layer:[]};return n.domain&&p.layer.push(c()),(n.ticks||n.labels)&&p.layer.push(f()),n.title&&p.layer.push(d()),p}function gW(e,t){let n=e,r=sW(n.orient),i=iW(r),a=n.orient==`bottom`||n.orient==`left`?1:0,o=()=>({name:`chromosome_ticks`,mark:{type:`rule`,strokeDash:e.chromTickDash,strokeDashOffset:e.chromTickDashOffset,[i]:a,[i+`2`]:{expr:`${a} - ${n.chromTickSize} / ${eW} * ${a?1:-1}`},color:e.chromTickColor,size:n.chromTickWidth}}),s=()=>{let i;switch(n.orient){case`top`:i={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`bottom`:i={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`left`:i={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case`right`:i={x:0,angle:90,align:`right`,paddingY:4,dy:-n.chromLabelPadding};break;default:i={}}return{name:`chromosome_labels`,mark:{type:`text`,size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:e.chromLabelAlign,baseline:`alphabetic`,clip:!1,...i},encoding:{[r+`2`]:{field:`continuousEnd`,type:t},text:{field:`name`}}}},c;switch(n.orient){case`bottom`:case`top`:c={};break;case`left`:c={labelAngle:-90,labelAlign:`center`,labelPadding:6};break;case`right`:c={labelAngle:90,labelAlign:`center`,labelPadding:6};break;default:c={}}let l=hW({...e,...c},t);if(e.chromTicks||e.chromLabels){let i={name:ZU,data:{lazy:{type:`axisGenome`,channel:sW(n.orient)}},encoding:{[r]:{field:`continuousStart`,type:t,band:0}},layer:[]};if(e.chromTicks&&i.layer.push(o()),e.chromLabels){i.layer.push(s());let e;l.layer.filter(e=>e.name==$U).forEach(t=>t.layer.filter(e=>e.name==QU).forEach(t=>{e=t.mark})),e&&(n.orient==`top`||n.orient==`bottom`?(e.viewportEdgeFadeWidthLeft=30,e.viewportEdgeFadeDistanceLeft=40):(e.viewportEdgeFadeWidthBottom=30,e.viewportEdgeFadeDistanceBottom=40))}l.layer.push(i)}return l}function _W(e,t,n){e.handleInteraction(t,!0),!t.stopped&&(n(),!t.stopped&&e.handleInteraction(t,!1))}function vW(e,t,n,r){return t()?(n(),e.stopped||r?.(),!0):!1}var yW=class{#e;#t=0;#n=0;constructor(e){this.#e=Array(e)}push(e){this.#e[this.#t]=e,this.#t=(this.#t+1)%this.size,this.#n=Math.min(this.#n+1,this.size)}get(){let e=this.#e;return this.#n<this.size?e.slice(0,this.#n):e.slice(this.#t,this.size).concat(e.slice(0,this.#t))}get size(){return this.#e.length}get length(){return this.#n}};function bW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`touchgesture`&&(t.phase===`move`||t.phase===`end`)&&(t.pointerCount===1||t.pointerCount===2)&&Number.isFinite(t.xDelta)&&Number.isFinite(t.yDelta)&&Number.isFinite(t.zDelta)}function xW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`wheel`&&Number.isFinite(t.deltaX)&&Number.isFinite(t.deltaY)&&Number.isFinite(t.deltaMode)&&typeof t.preventDefault==`function`}function SW(e,t,n){return new Proxy(e,{get(e,r){if(r===`deltaX`)return t;if(r===`deltaY`)return n;let i=Reflect.get(e,r,e);return typeof i==`function`?i.bind(e):i}})}function CW(e){let t=e=>e===null||typeof e!=`object`&&typeof e!=`function`;return new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,e);if(!t(i))throw Error(`Access to non-primitive property "${String(n)}" is not allowed.`);return i},getPrototypeOf(){return null},ownKeys(e){return Reflect.ownKeys(e).filter(n=>t(e[n])).map(e=>typeof e==`symbol`?e:String(e))},getOwnPropertyDescriptor(e,n){let r=Reflect.getOwnPropertyDescriptor(e,n);if(r&&!(`get`in r||`set`in r)&&t(r.value))return{value:r.value,writable:!!r.writable,enumerable:!!r.enumerable,configurable:!!r.configurable}},has(e,n){return n in e?t(e[n]):!1}})}var wW=class e{static fromMouseEvent(t){return new e(t.clientX,t.clientY)}constructor(e,t){this.x=e,this.y=t}subtract(t){return new e(this.x-t.x,this.y-t.y)}add(t){return new e(this.x-t.x,this.y-t.y)}multiply(t){return new e(this.x*t,this.y*t)}get length(){return Math.sqrt(this.x**2+this.y**2)}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}},TW=0,EW=new WeakMap,DW=IW(),OW=6;function kW(){TW=performance.now()}function AW(){return performance.now()-TW<50}function jW(e){return function(...t){return kW(),e(...t)}}function MW(e,t,n,r,i){n=jW(n);let a=LW(i);if(e.type==`wheel`){let i=e.wheelEvent,o=i.deltaMode?120:1;if(!i.deltaX&&!i.deltaY)return;a.smoother?.stop();let{x:s,y:c}=e.point;if(r){let n=NW(e.point,t,r);if(n)n.x!==void 0&&(s=n.x),n.y!==void 0&&(c=n.y);else{let e=r.mark.encoders;e.x&&!e.x2&&!e.x.constant&&(s=PW(e.x,r.datum)*t.width+t.x),e.y&&!e.y2&&!e.y.constant&&(c=(1-PW(e.y,r.datum))*t.height+t.y)}}(Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:c,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300})===!0:n({x:s,y:c,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})===!0)&&i.preventDefault()}else if(e.type==`mousedown`&&e.mouseEvent.button===0){a.smoother&&a.smoother.stop();let t=new yW(30),r=e.mouseEvent;r.preventDefault(),e.target?.context.suspendHoverTracking();let o=wW.fromMouseEvent(r),s=e=>{let r=wW.fromMouseEvent(e);t.push({point:r,timestamp:performance.now()});let i=r.subtract(o);n({x:o.x,y:o.y,xDelta:i.x,yDelta:i.y,zDelta:0}),o=r},c=r=>{document.removeEventListener(`mousemove`,s),document.removeEventListener(`mouseup`,c),e.target?.context.resumeHoverTracking(r),zW(a,t,o,n,i,{minSampleCount:5})};document.addEventListener(`mouseup`,c,!1),document.addEventListener(`mousemove`,s,!1)}else if(e.type==`touchgesture`){if(!bW(e.uiEvent))return;let t=e.uiEvent,{xDelta:r,yDelta:o,zDelta:s}=t;if(t.phase===`end`){t.pointerCount===1&&zW(a,a.touchPanEventBuffer,a.touchPanLastPoint,n,i,{minSampleCount:2,minVelocityPxPerMs:.03}),RW(a);return}a.touchPanPointerCount!==t.pointerCount&&(RW(a),a.touchPanPointerCount=t.pointerCount);let c=new wW(e.point.x+r,e.point.y+o);if(a.touchPanLastPoint=c,t.pointerCount===1&&(r!==0||o!==0)&&a.touchPanEventBuffer.push({point:c,timestamp:performance.now()}),r===0&&o===0&&s===0)return;a.smoother?.stop(),n({x:e.point.x,y:e.point.y,xDelta:r,yDelta:o,zDelta:s})}}function NW(e,t,n){if(n.mark.getType()!==`link`)return;let r=n.mark.encoders;if(!(r.x&&r.y&&r.x2&&r.y2))return;let i=!r.x.constant&&!r.x2.constant,a=!r.y.constant&&!r.y2.constant;if(!i&&!a)return;let o=PW(r.x,n.datum)*t.width+t.x,s=(1-PW(r.y,n.datum))*t.height+t.y,c=PW(r.x2,n.datum)*t.width+t.x,l=(1-PW(r.y2,n.datum))*t.height+t.y,u=0,d=0;i&&(u+=(e.x-o)**2,d+=(e.x-c)**2),a&&(u+=(e.y-s)**2,d+=(e.y-l)**2);let f=r.size?+r.size(n.datum):0,p=Number.isFinite(f)?Math.max(f,OW):OW,m=p*p;if(!(Math.min(u,d)>m))return u<=d?{x:i?o:void 0,y:a?s:void 0}:{x:i?c:void 0,y:a?l:void 0}}function PW(e,t){let n=+e(t),r=e.scale;if(!r)return n;let i=FW(e.channelDef);if(r.type===`band`||r.type===`point`)return Number.isFinite(i)?n+r.bandwidth()*i:n;if(r.type===`index`||r.type===`locus`){if(!Number.isFinite(i))return n;let e=r;return n+e.step()*(i-e.align())}else return n}function FW(e){return e&&`band`in e?e.band??.5:.5}function IW(){return{smoother:void 0,touchPanEventBuffer:new yW(30),touchPanLastPoint:void 0,touchPanPointerCount:0}}function LW(e){if(!e)return DW;let t=EW.get(e);return t||(t=IW(),EW.set(e,t)),t}function RW(e){e.touchPanEventBuffer=new yW(30),e.touchPanLastPoint=void 0,e.touchPanPointerCount=0}function zW(e,t,n,r,i,a={}){if(!i||!n)return;let o=a.minSampleCount??5,s=a.minVelocityPxPerMs??0,c=performance.now(),l=t.get().filter(e=>c-e.timestamp<160);if(l.length<o||l.length>=5&&BW(l))return;let u=l.at(-1),d=l[0],f=u.point.subtract(d.point).multiply(1/(u.timestamp-d.timestamp));if(!Number.isFinite(f.x)||!Number.isFinite(f.y)||f.length<s)return;let p=n.x,m=n.y;e.smoother=hH(i,e=>{r({x:e.x,y:e.y,xDelta:p-e.x,yDelta:m-e.y,zDelta:0}),p=e.x,m=e.y},150,.5,{x:p,y:m}),e.smoother({x:n.x-f.x*250,y:n.y-f.y*250})}function BW(e){let t=e[Math.floor(e.length/2)],n=t.point.subtract(e[0].point).multiply(t.timestamp-e[0].timestamp),r=e.at(-1).point.subtract(t.point).multiply(e.at(-1).timestamp-t.timestamp),i=n.length;return r.length/i<.4}var VW=class extends UU{constructor(e,t,n,r,i,a){super(GW(e,t),n,r,i,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=e,uU(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}};function HW(e,t){let n=e,r=sW(n.orient);return{name:`grid_lines`,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},mark:{type:`rule`,strokeDash:n.gridDash,strokeCap:n.gridCap,color:n.gridColor,size:n.gridWidth,opacity:n.gridOpacity,minBufferSize:300},encoding:{[r]:{field:`value`,type:t}}}}function UW(e,t){let n=e,r=sW(n.orient);return{name:`chromosome_lines`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rule`,strokeDash:n.chromGridDash,strokeCap:n.chromGridCap,color:n.chromGridColor,size:n.chromGridWidth,opacity:n.chromGridOpacity},encoding:{[r]:{field:`continuousStart`,type:t,band:0}}}}function WW(e,t){let n=e,r=sW(n.orient);return{name:`chromosome_fill`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rect`},encoding:{[r]:{field:`continuousStart`,type:t,band:0},[r+`2`]:{field:`continuousEnd`,band:0},fill:{field:`odd`,type:`nominal`,scale:{domain:[!1,!0],range:[n.chromGridFillEven??`white`,n.chromGridFillOdd??`white`]}},opacity:{field:`odd`,type:`nominal`,scale:{type:`ordinal`,domain:[!1,!0],range:[n.chromGridFillEven?1:0,n.chromGridFillOdd?1:0]}}}}}function GW(e,t){let n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(WW(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(UW(n,t)),n.grid&&n.gridOpacity>0&&r.push(HW(n,t)),{name:`grid_layers`,resolve:{scale:{[sW(e.orient)]:`forced`,fill:`independent`,opacity:`independent`}},domainInert:!0,layer:r}}function KW(e){return FN(e.map(e=>e.title))}function qW(e,t){let n=IN(t);return n.length==0?{}:FN(e.flatMap(e=>n.map(t=>e.style?.[t])))}var JW={start:0,middle:.5,end:1},YW={start:`left`,middle:`center`,end:`right`},XW=`group-title`;function ZW(e){let t={},n={x:0,y:0},r=JW[e.anchor??`middle`];switch(e.orient){case`top`:n={x:r,y:1},t={baseline:`alphabetic`,angle:0};break;case`right`:n={x:1,y:1-r},t={baseline:`alphabetic`,angle:90};break;case`bottom`:n={x:r,y:0},t={baseline:`top`,angle:0};break;case`left`:n={x:0,y:r},t={baseline:`alphabetic`,angle:-90};break;default:}return{orientConfig:t,xy:n}}function QW(e,t=[]){if(!e)return;let n=N(e)?{text:e}:e;if(!n.text||n.orient==`none`)return;let r=KW(t),i=qW(t,n.style??XW),{orientConfig:a}=ZW({...r,...i,...n});return{...r,...a,...i,...n}}function $W(e,t=[]){let n=QW(e,t);if(!n)return;let{xy:r}=ZW(n),i={xOffset:0,yOffset:0};switch(n.orient){case`top`:i.yOffset=-n.offset;break;case`right`:i.xOffset=n.offset;break;case`bottom`:i.yOffset=n.offset;break;case`left`:i.xOffset=-n.offset;break;default:}return{data:{values:[{}]},mark:{type:`text`,tooltip:null,clip:!1,...r,...i,text:n.text,align:n.align??YW[n.anchor],angle:n.angle,baseline:n.baseline,dx:n.dx,dy:n.dy,color:n.color,font:n.font,size:n.fontSize,fontStyle:n.fontStyle,fontWeight:n.fontWeight}}}var eG=class extends aB{#e;#t=KU.ZERO;#n=KU.ZERO;#r=KU.ZERO;viewportOffset=0;#i;constructor(e,t,n={}){super({params:[{name:`scrollbarOpacity`,value:1}],opacity:{expr:`scrollbarOpacity`},data:{values:[{}]},mark:{type:`rect`,fill:`#b0b0b0`,fillOpacity:.6,stroke:`white`,strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1}},e.layoutParent.context,e.layoutParent,e.view,`scrollbar-`+t,{blockEncodingInheritance:!0}),uU(this,{skipSubtree:!0}),this.config={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20},this.#e=t,this.#i=n.onViewportOffsetChange;let r=this.config.scrollbarPadding,i=this.config.scrollbarSize;this.#t=this.#e==`vertical`?new KU(()=>this.#n.x+this.#n.width-i-r,()=>this.#n.y+r+this.scrollOffset,()=>i,()=>this.#s()):new KU(()=>this.#n.x+r+this.scrollOffset,()=>this.#n.y+this.#n.height-i-r,()=>this.#s(),()=>i),this.#f(this.viewportOffset),this.addInteractionListener(`mousedown`,e=>{if(e.stopPropagation(),this.#c()<=0)return;let n=e=>t==`vertical`?e.clientY:e.clientX;e.mouseEvent.preventDefault(),this.context.suspendHoverTracking();let r=this.scrollOffset,i=n(e.mouseEvent),a=e=>{let t=this.#c();if(t<=0)return;let a=sN(n(e)-i+r,0,t);this.interpolateViewportOffset({x:this.#u(a)})},o=e=>{document.removeEventListener(`mousemove`,a),document.removeEventListener(`mouseup`,o),this.context.resumeHoverTracking(e)};document.addEventListener(`mouseup`,o,!1),document.addEventListener(`mousemove`,a,!1)})}get scrollOffset(){return this.#l(this.viewportOffset)}setViewportOffset(e,{notify:t=!0,syncSmoother:n=!1}={}){this.viewportOffset=sN(e,0,this.#d()),n&&this.#f(this.viewportOffset),t&&this.#i&&this.#i(this.viewportOffset)}#a(){let e=this.#e==`horizontal`?`width`:`height`,t=this.#n[e],n=this.#r[e];return n>0?Math.min(1,t/n):1}#o(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#n[e]-2*this.config.scrollbarPadding)}#s(){let e=this.#o(),t=this.#a()*e,n=this.config.scrollbarMinLength;return Math.min(e,Math.max(n,t))}#c(){return Math.max(0,this.#o()-this.#s())}#l(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/t*n}#u(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/n*t}#d(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#r[e]-this.#n[e])}render(e,t,n){super.render(e,this.#t,n)}updateScrollbar(e,t){this.#n=e.flatten(),this.#r=t,this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}#f(e){this.interpolateViewportOffset=hH(this.context.animator,e=>{this.setViewportOffset(e.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}},tG=`intervalDragActive`,nG=class extends UU{constructor(e,t,n={}){let r=t(),i=Object.keys(r.intervals),{zindex:a=1,...o}=n;if(zh.every(e=>!i.includes(e)))throw Error(`SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.`);let s={name:`selectionRect`,domainInert:!0,params:[{name:tG,value:!1}],resolve:{scale:{x:`forced`,y:`forced`}},data:{values:rG(t())},encoding:{},layer:[]};i.includes(`x`)&&(s.encoding.x={field:`_x`,type:null,title:null},s.encoding.x2={field:`_x2`}),i.includes(`y`)&&(s.encoding.y={field:`_y`,type:null,title:null},s.encoding.y2={field:`_y2`}),s.layer.push({name:`selectionRectRect`,mark:{type:`rect`,clip:!0,fill:`#808080`,fillOpacity:.05,stroke:`black`,strokeWidth:1,strokeOpacity:.2,cursor:o.cursor??{expr:`intervalDragActive ? 'grabbing' : 'move'`},...o}});let c=t=>{let n=e.view.getScaleResolution(t);return`format(datum._${t}2 - datum._${t}, '.3s')`+(n.type===`locus`?` + 'b'`:``)},l=n.measure==`inside`?9:n.measure==`outside`?-9:0;i.includes(`x`)&&l!=0&&s.layer.push({name:`selectionRectTextX`,mark:{type:`text`,align:`center`,paddingX:5,dy:l,tooltip:null},encoding:{text:{expr:c(`x`)},y:i.includes(`y`)?{field:`_y2`,type:null,title:null}:{value:1},y2:null}}),i.includes(`y`)&&l!=0&&s.layer.push({name:`selectionRectTextY`,mark:{type:`text`,align:`center`,paddingY:5,dy:l,tooltip:null,angle:-90},encoding:{text:{expr:c(`y`)},x2:null}}),super(s,e.layoutParent.context,e.layoutParent,e.view,`selectionRect`,{blockEncodingInheritance:!0}),this._zindex=a,uU(this,{skipSubtree:!0}),this.registerDisposer(t.subscribe(()=>{let e=t(),n=this.flowHandle?.dataSource;if(!n)throw Error(`Cannot find selection rect data source handle!`);n.updateDynamicData(rG(e))}))}getZindex(){return this._zindex}};function rG(e){let t=e.intervals.x,n=e.intervals.y;return!t&&!n?[]:[{_x:t?.[0],_x2:t?.[1],_y:n?.[0],_y2:n?.[1]}]}function iG(e,t){let n=[`cell`,...IN(t?.style)];return FN(e.flatMap(e=>[e.view,...n.map(t=>e.style?.[t])]).concat([t]))}var aG=class{constructor(e,t,n){if(this.layoutParent=t,this.view=e,this.serial=n,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.backgroundZindex=0,this.backgroundStrokeZindex=void 0,this.titleZindex=1,this.coords=KU.ZERO,e.needsAxes.x||e.needsAxes.y){let r=e.spec,i=iG(e.getConfigScopes(),`view`in r?r.view:void 0);this.backgroundZindex=i?.zindex??0,this.backgroundStrokeZindex=i?.strokeZindex;let a=cG(i);a&&(this.background=new aB(a,t.context,t,e,`background`+n,{blockEncodingInheritance:!0}),uU(this.background,{skipSubtree:!0}));let o=lG(i);o&&(this.backgroundStroke=new aB(o,t.context,t,e,`backgroundStroke`+n,{blockEncodingInheritance:!0}),uU(this.backgroundStroke,{skipSubtree:!0}));let s=QW(e.spec.title,e.getConfigScopes());this.titleZindex=s?.zindex??1;let c=$W(s);c&&(this.title=new aB(c,t.context,t,e,`title`+n,{blockEncodingInheritance:!0}),uU(this.title,{skipSubtree:!0}))}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new eG(this,`horizontal`)),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new eG(this,`vertical`)),this.#e()}#e(){let e=this.view;for(let[t,n]of e.paramRuntime.paramConfigs){if(!(`select`in n))continue;let r=cg(n.select);if(!ug(r))continue;let i=r.encodings,a=Object.fromEntries(i.map(e=>{let n=this.view.getScaleResolution(e),r=n?.getResolvedScaleType();if(!n||!r||!ym(r))throw Error(`No continuous scale found for interval selection param "${t}" on channel "${e}"! Scale type is "${r??`none`}".`);return[e,n]})),o=i.some(e=>a[e].isZoomable()),s=r.on??(o?{type:`mousedown`,filter:`event.shiftKey`}:{type:`mousedown`});if(s.type!==`mousedown`)throw Error(`Interval selection param "${t}" currently supports only "mousedown" in "on".`);let c=s.filter?yL(s.filter):()=>!0,l=oG(r.zoom,o,t),u=l?.filter?yL(l.filter):()=>!0;if(this.selectionRect)throw Error(`Only one interval selection per container is currently allowed!`);let d=!1,f=!1,p=!1,m=null,h=(e,t)=>Object.fromEntries(i.map(n=>[n,[Math.min(e[n],t[n]),Math.max(e[n],t[n])]])),g=e.paramRuntime.createExpression(t),_=n=>{e.paramRuntime.setValue(t,n)};n.value&&_({type:`interval`,intervals:n.value});let v=()=>{_(ng(i))};this.selectionRect=new nG(this,g,r.mark);let y=e=>{this.selectionRect.paramRuntime.setValue(tG,e)};this.selectionRect.initializeChildren();let b=t=>{let n={x:0,y:0},r=e.coords.normalizePoint(t.x,t.y,!0);for(let e of i){let t=a[e].getScale();n[e]=t.invert(e==`x`?r.x:r.y)+([`index`,`locus`].includes(t.type)?.5:0)}return n},x=t=>{let{intervals:n}=t,r=(t,n,r)=>{let i=(e,t)=>t==null?null:a[e].getScale()(t),o=i(`x`,t)??r,s=i(`y`,n)??r;return e.coords.denormalizePoint(o,s,!0)},i=r(n.x?.[0],n.y?.[0],0),o=r(n.x?.[1],n.y?.[1],1);return KU.create(i.x,i.y,o.x-i.x,o.y-i.y)};e.addInteractionListener(`mousedown`,t=>{if(t.mouseEvent.button!=0)return;if(m=d?x(g()):null,m)y(!0),f=!0;else{let n=t.point;if(dg(g())&&(f=!0),c(t.proxiedMouseEvent))v(),p=!0;else if(dg(g())){let t=r=>{e.removeInteractionListener(`mouseup`,t);let i=r.point;n.subtract(i).length<2&&v()};e.addInteractionListener(`mouseup`,t);return}else return}t.stopPropagation(),e.context.suspendHoverTracking();let n=t.point,r=wW.fromMouseEvent(t.mouseEvent).subtract(n),o=e=>{let t=wW.fromMouseEvent(e).subtract(r),o;if(m){let e=t.subtract(n),r=m.translate(e.x,e.y);o=h(b(new wW(r.x,r.y)),b(new wW(r.x2,r.y2)))}else o=h(b(n),b(t));for(let e of i){let t=a[e],{zoomExtent:n}=t,r=o[e];if(m){let e=r[1]-r[0],t=n[0],i=n[1];r[0]<t&&(r[0]=t,r[1]=t+e),r[1]>i&&(r[1]=i,r[0]=i-e)}let i=sG(t,r);i?(r[0]=i[0],r[1]=i[1]):(r[0]=n[0],r[1]=n[0])}_({type:`interval`,intervals:o})},s=t=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s),y(!1),p=!1,m&&=null,e.context.resumeHoverTracking(t)};document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s)}),e.addInteractionListener(`click`,e=>{e.mouseEvent.button==0&&(f&&=(e.stopPropagation(),!1))},!0);let S=e=>fg(g(),b(e));e.addInteractionListener(`dblclick`,e=>{S(e.point)&&(v(),e.stopPropagation())},!0),e.addInteractionListener(`wheel`,e=>{let t=e.wheelEvent;if(!l||!u(CW(t))||Math.abs(t.deltaX)>=Math.abs(t.deltaY)||!S(e.point))return;let n=g();if(!dg(n))return;let r=t.deltaMode?120:1,o=2**(t.deltaY*r/300),s=b(e.point),c={...n.intervals},d=!1;for(let e of i){let t=c[e];if(!t||t.length!==2)continue;let n=a[e],r=sG(n,Fz(n.getScale(),[...t],s[e],o,{onUnsupported:`identity`}));r&&(r[0]!==t[0]||r[1]!==t[1])&&(c[e]=r,d=!0)}d&&(_({...n,type:`interval`,intervals:c}),t.preventDefault(),e.stopPropagation())}),e.addInteractionListener(`mousemove`,e=>{S(e.point)?p||(d=!0):d=!1})}}*getChildren(){this.background&&(yield this.background),this.backgroundStroke&&(yield this.backgroundStroke),this.title&&(yield this.title),yield*Object.values(this.axes),yield*Object.values(this.gridLines),yield this.view,yield*Object.values(this.scrollbars),this.selectionRect&&(yield this.selectionRect)}async createAxes(){this.disposeAxisViews();let{view:e,axes:t,gridLines:n}=this,r=(e,n)=>{let r=e.getAxisProps();if(r===null)return;let i=r?{...r}:{};if(!i.orient){for(let e of aW[n])if(!t[e]){i.orient=e;break}if(!i.orient)throw Error(`No slots available for an axis! Perhaps a LayerView has more than two children?`)}if(i.title??=e.getTitle(),!aW[n].includes(i.orient))throw Error(`Invalid axis orientation "${i.orient}" on channel "${n}"!`);return i},i=async(e,n,i)=>{let a=r(e,n);if(a){if(t[a.orient])throw Error(`An axis with the orient "${a.orient}" already exists!`);let n=new cW(a,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);t[a.orient]=n,await n.initializeChildren()}},a=async(e,t,i)=>{let a=r(e,t);if(!a)return;let o={...XU(i.getConfigScopes(),{channel:t,orient:a.orient,type:e.scaleResolution.type,style:a.style}),...a};if(o.grid||o.chromGrid){let t=new VW(o,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);n[a.orient]=t,await t.initializeChildren()}};for(let t of[`x`,`y`])if(e.needsAxes[t]){let n=e.resolutions.axis[t];if(!n)continue;await i(n,t,e)}for(let t of[`x`,`y`])if(e.needsAxes[t]&&e.getConfiguredOrDefaultResolution(t,`axis`)!=`excluded`){let n=e.getAxisResolution(t);if(!n)continue;await a(n,t,e)}if(e instanceof UU){for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&r.orient&&await i(n,e,t)}for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&!r.orient&&await i(n,e,t)}}[...Object.values(t),...Object.values(n)].forEach(e=>e.visit(e=>{e instanceof aB&&e.resolve(`scale`)}))}disposeAxisViews(){for(let e of Object.values(this.axes))e.disposeSubtree();for(let e of Object.values(this.gridLines))e.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){let e=e=>{let t=this.axes[e];return t?Math.max(t.getPerpendicularSize()+(t.axisProps.offset??0),0):0};return new IP(e(`top`),e(`right`),e(`bottom`),e(`left`)).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}};function oG(e,t,n){let r=e===void 0?!t:e;if(r===!1)return;if(r===!0)return{type:`wheel`};let i=pg(r);if(i.type!==`wheel`)throw Error(`Interval selection param "${n}" currently supports only "wheel" in "zoom".`);return i}function sG(e,t){let n=e.getScale();return cz(t,e.zoomExtent,{roundToIntegers:n.type===`index`||n.type===`locus`})}function cG(e){if(e?.fill||e?.fillOpacity||e?.shadowOpacity)return{data:{values:[{}]},mark:{color:e.fill,opacity:e.fillOpacity??(e.fill?1:0),type:`rect`,clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:e.shadowBlur,shadowColor:e.shadowColor,shadowOffsetX:e.shadowOffsetX,shadowOffsetY:e.shadowOffsetY,shadowOpacity:e.shadowOpacity}}}function lG(e){if(!(!e||!e.stroke||e.strokeWidth===0||e.strokeOpacity===0))return{resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},data:{values:[{x:0,y:0,x2:1,y2:0},{x:1,y:0,x2:1,y2:1},{x:1,y:1,x2:0,y2:1},{x:0,y:1,x2:0,y2:0}]},mark:{size:e.strokeWidth??1,color:e.stroke??`lightgray`,strokeCap:`square`,opacity:e.strokeOpacity??1,type:`rule`,clip:!1,tooltip:null},encoding:{x:{field:`x`,type:`quantitative`,scale:null},y:{field:`y`,type:`quantitative`,scale:null},x2:{field:`x2`},y2:{field:`y2`}}}}var uG={pan:{baseSpeed:1,maxExtraSpeed:3,pressHalfLifeMs:30,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:800,stopVelocity:.01},zoom:{baseSpeed:3,maxExtraSpeed:15,pressHalfLifeMs:10,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:600,stopVelocity:.01}},dG=class{#e;#t;#n;#r;#i;constructor(e=uG){this.#r=e.pan,this.#i=e.zoom,this.#e={KeyW:!1,KeyA:!1,KeyS:!1,KeyD:!1},this.#t={velocity:0,holdMs:0,direction:0},this.#n={velocity:0,holdMs:0,direction:0}}isNavigationKey(e){return e===`KeyW`||e===`KeyA`||e===`KeyS`||e===`KeyD`}handleKeyDown(e){return this.#a(e,!0)}handleKeyUp(e){return this.#a(e,!1)}reset(){this.#e.KeyW=!1,this.#e.KeyA=!1,this.#e.KeyS=!1,this.#e.KeyD=!1,this.#t.velocity=0,this.#t.holdMs=0,this.#t.direction=0,this.#n.velocity=0,this.#n.holdMs=0,this.#n.direction=0}step(e){if(e<=0)return{panDelta:0,zoomDelta:0,active:this.isActive()};{let t=fG(this.#e.KeyD,this.#e.KeyA),n=fG(this.#e.KeyW,this.#e.KeyS),r=pG(this.#t,t,e,this.#r),i=pG(this.#n,n,e,this.#i),a=e/1e3;return{panDelta:r*a,zoomDelta:i*a,active:this.isActive()}}}isActive(){return this.#e.KeyW||this.#e.KeyA||this.#e.KeyS||this.#e.KeyD?!0:this.#t.velocity!==0||this.#n.velocity!==0}#a(e,t){if(this.isNavigationKey(e)){let n=e;return this.#e[n]===t?!1:(this.#e[n]=t,!0)}else return!1}};function fG(e,t){return e===t?0:t?1:-1}function pG(e,t,n,r){if(t!==0){e.direction!==t&&(e.holdMs=0),e.holdMs+=n;let i=r.maxExtraSpeed*(1-2**(-e.holdMs/r.holdGrowthHalfLifeMs)),a=t*(r.baseSpeed+i);e.velocity=mG(e.velocity,a,n,r.pressHalfLifeMs)}else e.holdMs=0,e.velocity=mG(e.velocity,0,n,r.releaseHalfLifeMs),Math.abs(e.velocity)<r.stopVelocity&&(e.velocity=0);return e.direction=t,e.velocity}function mG(e,t,n,r){return t+(e-t)*2**(-n/r)}function hG(e){let t={x:new Set,y:new Set};return e.visit(e=>{for(let[n,r]of Object.entries(t)){let t=e.getScaleResolution(n);t&&t.isZoomable()&&r.add(t)}}),t}function gG(e){let t=hG(e).x;if(t.size===1){let n=t.values().next().value,r=e.getScaleResolution(`x`);return!r||r!==n?void 0:n}}var _G=class{#e;#t;#n=.5;#r=new dG;#i=!1;#a=0;#o=e=>{if(!this.#i)return;let t=gG(this.#t);if(!t){this.#r.reset(),this.#i=!1,this.#a=0;return}let n=Math.max(0,e-this.#a);this.#a=e;let r=this.#r.step(n);(r.panDelta!==0||r.zoomDelta!==0)&&t.zoom(2**r.zoomDelta,this.#n,r.panDelta)&&(kW(),this.#e.animator.requestRender()),r.active?this.#e.animator.requestTransition(this.#o):(this.#i=!1,this.#a=0)};constructor({context:e,viewRoot:t}){this.#e=e,this.#t=t,this.#s()}handlePointerEvent(e,t){if(e){let n=e.view;if(typeof n.getKeyboardZoomAnchorX==`function`){let e=n.getKeyboardZoomAnchorX(t.point);Number.isFinite(e)&&(this.#n=Math.max(0,Math.min(1,e)))}else this.#n=e.coords.normalizePoint(t.point.x,t.point.y).x}else return}#s(){let e=this.#e.addKeyboardListener;typeof e==`function`&&(e(`keydown`,e=>{vG(e)||this.#r.isNavigationKey(e.code)&&gG(this.#t)&&this.#r.handleKeyDown(e.code)&&(e.preventDefault(),this.#c())}),e(`keyup`,e=>{this.#r.isNavigationKey(e.code)&&this.#r.handleKeyUp(e.code)&&gG(this.#t)&&(e.preventDefault(),this.#c())}))}#c(){this.#i||(this.#i=!0,this.#a=performance.now(),this.#e.animator.requestTransition(this.#o))}};function vG(e){return!!(e.altKey||e.ctrlKey||e.metaKey||yG(e.target))}function yG(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.isContentEditable)return!0;if(typeof t.nodeName==`string`){let e=t.nodeName.toLowerCase();return e===`input`||e===`textarea`||e===`select`}return!1}var bG=Object.freeze({size:1,color:`#ccc`,opacity:1,strokeDash:[4,4],strokeCap:`butt`}),xG=class{#e;#t;#n;#r;#i=[];#a=[];#o={x:[0,0],y:[0,0]};constructor({direction:e,props:t,context:n,layoutParent:r,dataParent:i,getName:a}){this.#e=e,this.#t=t.includePlotMargin??!0,this.#r=t.zindex??0;let o={...t};delete o.includePlotMargin,delete o.zindex,this.#n=this.#l(o,n,r,i,a)}get view(){return this.#n}getZindex(){return this.#r}update(e,t,n,r,i,a){this.#s(e,t,r,i),this.#c(n,a)}render(e,t,n){this.#n.render(e,t,n)}#s(e,t,n,r){if(this.#a.length=0,t<2)return;let i=this.#e===`vertical`?`column`:`row`,a=r?3:2;for(let r=1;r<t;r++){let t=e[n(i,r)-a],o=t?t.location:0,s=t?t.size:0;this.#a.push(o+s/2)}}#c(e,t){let n=this.#t?0:t.left,r=this.#t?e.width:e.width-t.right,i=this.#t?0:t.bottom,a=this.#t?e.height:e.height-t.top;this.#i.length=this.#a.length;for(let t=0;t<this.#a.length;t++){let o=this.#a[t],s=this.#i[t]??{};if(this.#e===`vertical`)s.x=o,s.x2=o,s.y=i,s.y2=a;else{let t=e.height-o;s.x=n,s.x2=r,s.y=t,s.y2=t}this.#i[t]=s}let o=this.#n.flowHandle?.dataSource;if(!o)return;o.updateDynamicData(this.#i),this.#o.x[1]=e.width,this.#o.y[1]=e.height;let s=this.#n.getScaleResolution(`x`)?.getScale();s&&s.domain(this.#o.x);let c=this.#n.getScaleResolution(`y`)?.getScale();c&&c.domain(this.#o.y)}#l(e,t,n,r,i){let a=new aB(CG(e),t,n,r,this.#e===`horizontal`?i(`separatorHorizontal`):i(`separatorVertical`),{blockEncodingInheritance:!0});return uU(a,{skipSubtree:!0}),a}};function SG(e){if(!e)return null;let t=e===!0?{...bG}:{...bG,...e};return t.strokeDash===bG.strokeDash&&(t.strokeDash=bG.strokeDash.slice()),t}function CG(e){return{domainInert:!0,data:{values:[]},resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},mark:{...e,type:`rule`,clip:e.clip??!1,tooltip:null},encoding:{x:{field:`x`,type:`quantitative`,scale:{nice:!1,zero:!1}},y:{field:`y`,type:`quantitative`,scale:{nice:!1,zero:!1}},x2:{field:`x2`},y2:{field:`y2`}}}}var wG=Object.freeze({background:0,separator:10,grid:20,backgroundStroke:30,axis:40,selectionRect:80,scrollbar:90,title:100}),TG=10,EG=class extends iU{#e=1/0;#t=10;#n=[];#r={};#i=0;#a={};#o=null;constructor(e,t,n,r,i,a,o){super(e,t,n,r,i,o),this.spec=e,this.#t=e.spacing??10,this.#e=a,this.#n=[],this.wrappingFacet=!1;let s=SG(e.separator);if(s)for(let t of AG(e))this.#a[t]=new xG({direction:t,props:s,context:this.context,layoutParent:this,dataParent:this,getName:e=>this.getNextAutoName(e)});this.layoutParent||(this.#o=new _G({context:this.context,viewRoot:this}))}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,this.#n.length)}insertChildViewAt(e,t){e.layoutParent??=this;let n=new aG(e,this,this.#i);return this.#i++,this.#n.splice(t,0,n),this.invalidateSizeCache(),n}removeChildView(e){let t=this.#n.findIndex(t=>t.view===e);if(t<0)throw Error(`Not my child view!`);this.removeChildAt(t)}removeChildAt(e){let t=this.#n[e];if(!t)throw Error(`Child index out of range!`);this.#l(t),this.#n.splice(e,1),this.invalidateSizeCache()}get#s(){return this.#n.filter(e=>e.view.isConfiguredVisible())}get#c(){return new WU(this.#s.length,this.#e??1/0)}setChildren(e){for(let e of this.#n)this.#l(e);this.#n=[];for(let t of e)this.appendChild(t);this.invalidateSizeCache()}#l(e){e.disposeAxisViews();for(let t of e.getChildren())t.disposeSubtree()}get children(){return this.#n.map(e=>e.view)}get childCount(){return this.#n.length}async createAxes(){await this.syncSharedAxes(),await Promise.all(this.#n.map(e=>e.createAxes()))}async syncSharedAxes(){for(let e of Object.values(this.#r))e.disposeSubtree();this.#r={};let e=[];for(let t of zh){let n=this.resolutions.axis[t];if(!n)continue;let r=n.getAxisProps();if(!r)continue;let i=new cW({title:n.getTitle(),orient:aW[t][0],...r},n.scaleResolution.type,this.context,this,this);e.push(i.initializeChildren()),this.#r[t]=i}await Promise.all(e)}*[Symbol.iterator](){for(let e of this.#n)yield*e.getChildren();for(let e of Object.values(this.#a))yield e.view;for(let e of Object.values(this.#r))yield e}#u(e){let t=e==`column`?`width`:`height`,n=(t,n)=>t.map(t=>{let r=this.#s[t].getOverhangAndPadding();return e==`column`?n?r.right:r.left:n?r.bottom:r.top}).reduce((e,t)=>Math.max(e,t),0);return this._cache(`size/directionSizes/${e}`,()=>this.#c[e==`column`?`colIndices`:`rowIndices`].map(e=>({axisBefore:n(e,0),axisAfter:n(e,1),view:OP(e.map(e=>this.#s[e].view.getViewportSize()[t]))})))}#d(e){let t=this.#u(e),n=[];n.push(AP);for(let[e,r]of t.entries())e>0&&n.push({px:this.#t,grow:0}),(e==0||this.wrappingFacet)&&n.push(AP),n.push({px:r.axisBefore,grow:0}),n.push(r.view),n.push({px:r.axisAfter,grow:0}),(e==t.length-1||this.wrappingFacet)&&n.push(AP);return n}#f(e){let t=0,n=0,r=e==`row`?this.spec.height:this.spec.width;if(r||r===0)return FP(r);let i=this.#u(e);for(let[e,r]of i.entries())e>0&&(n+=this.#t),(e==0||this.wrappingFacet)&&(n+=0),n+=r.axisBefore,n+=r.view.px??0,t+=r.view.grow??0,n+=r.axisAfter,(e==i.length-1||this.wrappingFacet)&&(n+=0);return{px:n,grow:t}}#p(e,t){return e==`row`&&this.wrappingFacet?1+6*t+2:2+4*t+1}getOverhang(){return this.#m().union(this.#h())}#m(){let e=this.#u(`column`),t=this.#u(`row`);return!e.length||!t.length?IP.zero():new IP(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#h(){let e=e=>{let t=oW[e],n=this.#r[t];return n?.axisProps.orient===e?Math.max(n.getPerpendicularSize()+(n.axisProps.offset??0),0):0};return new IP(e(`top`),e(`right`),e(`bottom`),e(`left`))}getSize(){return this._cache(`size`,()=>new kP(this.#f(`column`),this.#f(`row`)).addPadding(this.#h()))}render(e,t,n={}){if(super.render(e,t,n),!this.isConfiguredVisible())return;this.layoutParent||(t=t.shrink(this.getPadding())),t=t.shrink(this.#h()),e.pushView(this,t);let r=e.getDevicePixelRatio(),i={devicePixelRatio:r},a=DP(this.#d(`column`),t.width,i),o=DP(this.#d(`row`),t.height,i),s=new WU(this.#s.length,this.#e??1/0),c=e=>Math.round(e*r)/r,l=[];for(let[e,r]of this.#s.entries()){let{view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h}=r,[g,_]=s.getCellCoords(e),v=a[this.#p(`column`,g)],y=o[this.#p(`row`,_)],b=i.getViewportSize(),x=i.getSize(),S=i.getOverhang(),C=v.location-S.left,w=y.location-S.top,T=(e,t)=>(e[t].grow?(t==`width`?v:y).size:e[t].px)+S[t],E=T(b,`width`),ee=T(b,`height`),te=T(x,`width`),ne=T(x,`height`),re=r.scrollbars.horizontal,ie=r.scrollbars.vertical,ae=re?()=>c(re.viewportOffset):()=>0,oe=ie?()=>c(ie.viewportOffset):()=>0,se=new KU(()=>t.x+C,()=>t.y+w,()=>E,()=>ee),ce=i.isScrollable(),le=ce?new KU(()=>t.x+C-ae(),()=>t.y+w-oe(),()=>te,()=>ne):se;r.coords=se;let ue=n.clipRect?se.intersect(n.clipRect):se;l.push({col:g,row:_,view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h,viewportCoords:se,viewCoords:le,clippedChildCoords:ue,viewWidth:te,viewHeight:ne,scrollable:ce,gridChild:r})}let u=this.#m(),d=[],f=[],p=[],m=0,h=(e,t,n)=>{(e>0?f:d).push({zindex:e,order:t,sequence:m++,render:n})},g=e=>{e.sort((e,t)=>e.zindex-t.zindex||e.order-t.order||e.sequence-t.sequence);for(let t of e)t.render()};for(let t of l)t.background&&h(t.gridChild.backgroundZindex,wG.background,()=>t.background?.render(e,t.clippedChildCoords,{...n,clipRect:void 0}));let _=this.#a.vertical;_&&(_.update(a,s.nCols,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(_.getZindex(),wG.separator,()=>_.render(e,t,n)));let v=this.#a.horizontal;v&&(v.update(o,s.nRows,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(v.getZindex(),wG.separator,()=>v.render(e,t,n)));for(let r of l){let{view:i,axes:a,gridLines:o,backgroundStroke:c,title:l,selectionRect:u,viewportCoords:d,viewCoords:f,clippedChildCoords:m,viewWidth:g,viewHeight:_,scrollable:v,gridChild:y,col:b,row:x}=r,S=DG(i)||v;for(let t of Object.values(o))h(t.axisProps.zindex??0,wG.grid,()=>t.render(e,d,n));p.push(()=>i.render(e,f,S?{...n,clipRect:m}:n)),c&&h(MG(y.backgroundStrokeZindex,S),wG.backgroundStroke,()=>c?.render(e,m,{...n,clipRect:void 0}));for(let[t,r]of Object.entries(a)){let i=t==`left`||t==`right`?`vertical`:`horizontal`,a=y.scrollbars[i],o=NG(a?d.modify(i==`vertical`?{y:()=>f.y,height:_}:{x:()=>f.x,width:g}):d,t,r),s=n.clipRect;a&&(s=o.intersect(s).intersect(a?d.modify(i==`vertical`?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),h(jG(r.axisProps.zindex,S),wG.axis,()=>r.render(e,o,{...n,clipRect:s}))}for(let t of Object.values(this.#r)){let r=t.axisProps.orient;(r==`left`&&b==0||r==`right`&&b==s.nCols-1||r==`top`&&x==0||r==`bottom`&&x==s.nRows-1)&&h(jG(t.axisProps.zindex,S),wG.axis,()=>t.render(e,NG(d.shrink(y.view.getOverhang()),r,t),n))}u&&h(u.getZindex(),wG.selectionRect,()=>u?.render(e,f,n));for(let r of Object.values(y.scrollbars))h(1,wG.scrollbar,()=>{r.updateScrollbar(d,f),r.render(e,t,n)});l&&h(y.titleZindex,wG.title,()=>l?.render(e,d,n))}g(d);for(let e of p)e();g(f),e.popView(this)}propagateInteraction(e){_W(this,e,()=>{let t=this.#s.find(t=>t.coords.containsPoint(e.point.x,e.point.y)),n=t?.view;if(e.type===`wheelclaimprobe`){if(!n)return;kG(n)?OG(n)&&e.claimWheel():n.propagateInteraction(e);return}this.#o?.handlePointerEvent(t,e);for(let n of Object.values(t?.scrollbars??{}))if(vW(e,()=>n.coords.containsPoint(e.point.x,e.point.y),()=>n.propagateInteraction(e)),e.stopped)return;n&&vW(e,()=>!0,()=>n.propagateInteraction(e),kG(n)?()=>MW(e,t.coords,e=>this.#g(t.coords,t.view,e),this.context.getCurrentHover(),this.context.animator):void 0)})}#g(e,t,n){let r=!1,i=!1,a=e.normalizePoint(n.x,n.y),o=e.normalizePoint(n.x+n.xDelta,n.y+n.yDelta),s={x:o.x-a.x,y:o.y-a.y};for(let[e,o]of Object.entries(hG(t)))if(!(o.size<=0)){r=!0;for(let t of o)i=t.zoom(2**n.zDelta,e==`y`?1-a[e]:a[e],e==`x`?s.x:-s.y)||i}return i&&this.context.animator.requestRender(),r}getDefaultResolution(e,t){return`independent`}};function DG(e){let t=!0;return e.visit(e=>{e instanceof aB&&(t&&=e.mark.properties.clip===!0)}),t}function OG(e){let t=hG(e);return t.x.size>0||t.y.size>0}function kG(e){return e instanceof aB||e instanceof UU}function AG(e){return`vconcat`in e?[`horizontal`]:`hconcat`in e?[`vertical`]:[`horizontal`,`vertical`]}function jG(e,t){return e??(t?TG:0)}function MG(e,t){return e??(t?TG:0)}function NG(e,t,n){let r=n.axisProps,i=n.getPerpendicularSize();if(t==`bottom`)return e.translate(0,e.height+r.offset).modify({height:i});if(t==`top`)return e.translate(0,-i-r.offset).modify({height:i});if(t==`left`)return e.translate(-i-r.offset,0).modify({width:i});if(t==`right`)return e.translate(e.width+r.offset,0).modify({width:i})}var PG=class extends EG{constructor(e,t,n,r,i,a){super(e,t,n,r,i,HU(e)?e.columns:BU(e)?1:1/0,a),this.spec=e}async initializeChildren(){let e=this.spec,t=HU(e)?e.concat:BU(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(t.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName(`grid`))))),await this.createAxes()}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}getDefaultResolution(e,t){return t==`axis`?`independent`:BU(this.spec)&&e===`x`||VU(this.spec)&&e===`y`?`shared`:`independent`}#e(){let e=this.spec,t;return t=HU(e)?e.concat:BU(e)?e.vconcat:e.hconcat,{specs:t,insertAt:(e,n)=>{t.splice(e,0,n)},removeAt:e=>{t.splice(e,1)}}}#t(){return new kU(this,{getChildSpecs:this.#e.bind(this),insertView:(e,t)=>this.insertChildViewAt(e,t),removeView:e=>super.removeChildAt(e),prepareView:async(e,t,n)=>{await n.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName(`grid`)})}};function FG({defaultConfig:e,builtInTheme:t,theme:n}){return FN([e,t,n])}function IG(e,t){if(!(!e&&!t))return FN([e,t])}var LG=`viewRoot`,RG=class{#e=new Map;constructor(e={}){this.options={allowImport:!0,wrapRoot:!0,...e};let t=e=>(t,n,r,i,a,o)=>new e(t,n,r,i,a,o);this.addViewType(RU,t(UU)),this.addViewType(jU,((e,t,n,r,i,a)=>new UU(MU(e),t,n,r,i,a))),this.addViewType(LU,t(aB)),this.addViewType(BU,t(PG)),this.addViewType(VU,t(PG)),this.addViewType(HU,t(PG))}addViewType(e,t){this.#e.set(e,t)}createView(e,t,n,r,i,a){for(let[o,s]of this.#e)if(o(e))return s(e,t,n,r,i,a);throw VG(e)?Error(`SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!`):Error(`Invalid spec, cannot figure out the view type from the properties: `+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){let t=[...this.#e.keys()].filter(t=>t(e));if(t.length>1)throw Error(`Ambiguous spec. Cannot create a view!`);return t.length==1}async createOrImportView(e,t,n,r,i,a,o){let s,c=zU(e)?e.name??null:void 0;if(zU(e)){let i;if(`url`in e.import)if(this.options.allowImport)i=await fB(e,r.getBaseUrl(),t);else throw new AN(`Importing views is not allowed!`,n);else if(`template`in e.import)i=zG(e.import.template,r);else throw Error(`Invalid import: `+JSON.stringify(e));a?.(i),BG(i,e),s=i}else s=e;let l=e=>e?.params?.some(e=>gg(e)&&cg(e.select).type==`interval`),u=!1;if(!r&&this.options.wrapRoot&&(LU(s)||RU(s)||jU(s)||l(s))&&i===`viewRoot`){let e={...s};delete e.theme,s={name:`implicitRoot`,vconcat:[e]},u=!0}let d=this.createView(s,t,n,r,i,o);return c!==void 0&&lU(d,c),u&&uU(d),d instanceof iU&&await d.initializeChildren(),d.registerStepSizeInvalidation(),d}};function zG(e,t){let n=t.spec?.templates?.[e];if(n)return structuredClone(n);if(t.dataParent)return zG(e,t.dataParent);throw Error(`Cannot find template "${e}" in current view or its ancestors!`)}function BG(e,t){t.name!=null&&(e.name=t.name),t.visible!=null&&(e.visible=t.visible),e.config=IG(t.config,e.config);let n=Qe(t.params)?t.params:$e(t.params)?Object.entries(t.params).map(([e,t])=>({name:e,value:t})):[];if(n.length){e.params??=[];for(let t of n){let n=e.params.findIndex(e=>e.name==t.name);n>=0&&(e.params[n]=t)}for(let t of n)e.params.some(e=>e.name==t.name)||e.params.push(t)}}function VG(e){return`samples`in e&&$e(e.samples)&&`spec`in e&&$e(e.spec)}var HG=class{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=hH(e,e=>{let t=e.x-this.lastValue;this.lastValue=e.x,this.callback?.(t)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=P([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;let n=sN(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+n,this.smoother({x:this.targetValue})}};function UG(e){let t={},n=[`string`,`number`,`boolean`],r=[`wheelDelta`,`wheelDeltaX`,`wheelDeltaY`];for(let i in e){let a=i;!r.includes(i)&&n.includes(typeof e[a])&&(t[a]=e[a])}return t}var WG=class{#e;#t;constructor(e,t,n){this.point=e,this.#n=t,this.stopped=!1,this.wheelClaimed=!1,this.#r=n,this.target=void 0,this.currentTarget=void 0,this.relatedTarget=void 0}#n;#r;#i;get uiEvent(){return this.#n}set uiEvent(e){this.#n=e,this.#e=void 0,this.#t=void 0,this.#i=void 0}stopPropagation(){this.stopped=!0}claimWheel(){if(this.type!==`wheel`&&this.type!==`wheelclaimprobe`)throw Error(`Can claim wheel only for wheel events!`);this.wheelClaimed=!0}setWheelDeltas(e,t){if(!xW(this.uiEvent))throw Error(`Not a WheelEvent!`);this.#i={deltaX:e,deltaY:t},this.#t=void 0}get type(){return this.#r??this.uiEvent.type}set type(e){this.#r=e}get proxiedMouseEvent(){return this.#e||=CW(this.mouseEvent),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw Error(`Not a MouseEvent!`)}get wheelEvent(){if(!xW(this.uiEvent))throw Error(`Not a WheelEvent!`);return this.#i?(this.#t||=SW(this.uiEvent,this.#i.deltaX,this.#i.deltaY),this.#t):this.uiEvent}},GG=class{#e;#t;#n;#r=[];constructor({viewRoot:e}){this.#e=e}dispatch(e,t){this.#t=e;let n=new WG(e,t);return this.#e.propagateInteraction(n),this.#n=n.target,n.type===`mousemove`&&this.#i(n),n}handlePointerLeave(e){if(!this.#t||this.#r.length===0){this.#r=[],this.#n=void 0;return}let t=new WG(this.#t,e,`mouseleave`);this.#a(t,this.#r,void 0),this.#r=[],this.#n=void 0}getCurrentTarget(){return this.#n}#i(e){let t=this.#s(e.target),n=this.#r,r=0;for(;r<n.length&&r<t.length&&n[r]===t[r];)r++;r<n.length&&this.#a(e,n.slice(r),t.at(-1)),r<t.length&&this.#o(e,t.slice(r),n.at(-1)),this.#r=t}#a(e,t,n){for(let r=t.length-1;r>=0;r--){let i=new WG(e.point,e.uiEvent,`mouseleave`),a=t[r];if(i.target=a,i.currentTarget=a,i.relatedTarget=n,this.#c(a,i),i.stopped)return}}#o(e,t,n){for(let r of t){let t=new WG(e.point,e.uiEvent,`mouseenter`);if(t.target=r,t.currentTarget=r,t.relatedTarget=n,this.#c(r,t),t.stopped)return}}#s(e){return e?e.getLayoutAncestors().reverse():[]}#c(e,t){e.handleInteraction(t,!0),!t.stopped&&e.handleInteraction(t,!1)}},KG=class{#e;#t;#n;constructor({canvas:e}){this.#e=e}update({target:e,hover:t}){this.#r(qG(e,t))}clear(){this.#r(void 0)}#r(e){if(JG(this.#t,e)){this.#i();return}this.#n?.(),this.#n=void 0,this.#t=e,e?.watch(e=>{this.#n=e},()=>this.#i()),this.#i()}#i(){let e=this.#t?.evaluate();this.#e.style.cursor=typeof e==`string`?e:``}};function qG(e,t){let n=t?.mark,r=n?.getCursorSpec?.();if(r!==void 0)return{owner:n,raw:r,evaluate:()=>n.getCursor(),watch:(e,t)=>n.watchCursor?.(t,e)};for(let t of e?.getLayoutAncestors()??[]){let e=t.getCursorSpec?.();if(e!==void 0)return{owner:t,raw:e,evaluate:()=>t.getCursor(),watch:(e,n)=>t.watchCursor?.(n,e)}}}function JG(e,t){return!e||!t?e===t:e.owner===t.owner&&e.raw===t.raw}var YG=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=!1;#h=!1;#g=!1;#_=0;#v=!1;constructor({viewRoot:e,glHelper:t,tooltip:n,animator:r,emitEvent:i,tooltipHandlers:a,renderPickingFramebuffer:o,getDevicePixelRatio:s}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o,this.#s=s,this.#c=new GG({viewRoot:e}),this.#l=new KG({canvas:t.canvas}),this.#u=void 0,this.#d=new HG(this.#r),this.#f=void 0,this.#p=void 0}getCurrentHover(){return this.#u}suspendHoverTracking(){this.#_++,!this.#h&&(this.#n.clear(),this.#m=!1)}resumeHoverTracking(e){if(!(this.#_<=0)&&(this.#_--,!(this.#_>0)&&(this.#n.clear(),this.#m=!1,!this.#C()))){if(e){let t=this.#y(e);if(this.#p=t,this.#b(t)){this.#x(t),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#c.handlePointerLeave(e)}else if(this.#p&&this.#b(this.#p)){this.#x(this.#p),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#u=null,this.#l.clear()}}registerInteractionEvents(){let e=this.#t.canvas,t=performance.now(),n=!1,r,i=(e,t)=>{let n=this.#c.dispatch(e,t);return!this.#m&&!this.#h&&this.#n.clear(),t instanceof MouseEvent&&t.type!==`mouseout`&&this.#l.update({target:n.target,hover:this.#u}),n},a=e=>{let r=performance.now(),a=r-t<200;if(e instanceof MouseEvent){if(e.type!==`contextmenu`&&this.#C())return;let o=this.#y(e);this.#p=o,e.type==`mousemove`&&!a&&this.#_===0&&(this.#g=!1,this.#n.handleMouseMove(e),this.#m=!1,e.buttons==0&&!AW()&&(this.#o(),this.#w(o.x,o.y)));let s=e=>{i(o,e)};if(e.type!=`wheel`&&this.#d.cancel(),(e.type==`mousedown`||e.type==`mouseup`)&&!AW())this.#o();else if(e.type==`wheel`){t=r,this.#m=!1;let n=e;if(Math.abs(n.deltaX)>Math.abs(n.deltaY))this.#u=null,this.#d.cancel();else if(i(o,{type:`wheelclaimprobe`}).wheelClaimed){let e=UG(n);this.#d.setMomentum(n.deltaY*(n.deltaMode?80:1),t=>{s(new WheelEvent(`wheel`,{...e,deltaMode:0,deltaX:0,deltaY:t}))}),n.preventDefault();return}else this.#d.cancel()}if(e.type==`click`){if(n)return;let t=this.#u?{type:e.type,viewPath:this.#u.mark.unitView.getLayoutAncestors().map(e=>e.name).reverse(),datum:this.#u.datum}:{type:e.type,viewPath:null,datum:null};this.#i(`click`,t)}if(e.type!=`click`||this.#f?.subtract(wW.fromMouseEvent(e)).length<3){let t=i(o,e);return e.type==`dblclick`&&this.#_===0&&this.#b(o)&&this.#S(),t}}};e.addEventListener(`mousedown`,e=>{this.#f=wW.fromMouseEvent(e),this.#h=!1;let t=e.shiftKey||e.ctrlKey||e.metaKey;this.#n.sticky?(this.#n.sticky=!1,this.#g=!0,this.#n.clear(),n=!0):n=!1;let r=()=>{document.addEventListener(`mouseup`,()=>this.#n.popEnabledState(),{once:!0,capture:!0}),this.#n.pushEnabledState(!1)};if(e.button==2)r();else if(e.button==0&&this.#n.visible){this.#h=!0;let e;t||(e=setTimeout(()=>{n=!0,this.#h=!1,this.#n.sticky=!0},400));let r=t=>{clearTimeout(e),this.#h&&(this.#h=!1,t&&this.#_>0&&(this.#n.clear(),this.#m=!1))};document.addEventListener(`mouseup`,()=>r(!1),{once:!0}),document.addEventListener(`mousemove`,()=>r(!0),{once:!0})}}),[`mousedown`,`mouseup`,`wheel`,`click`,`mousemove`,`contextmenu`,`dblclick`].forEach(t=>e.addEventListener(t,a));let o=(t,n)=>{let r=e.getBoundingClientRect();return new wW(t-r.left-e.clientLeft,n-r.top-e.clientTop)},s=e=>{if(e.length<=0)return;let t=e[0];if(e.length===1)return{pointerCount:1,centerX:t.clientX,centerY:t.clientY,distance:0};let n=e[1];return{pointerCount:2,centerX:(t.clientX+n.clientX)/2,centerY:(t.clientY+n.clientY)/2,distance:XG(t,n)}},c=(e,t,n,r,a,s,c)=>{i(o(e,t),{type:`touchgesture`,phase:n,pointerCount:r,xDelta:a,yDelta:s,zDelta:c})},l=e=>{e.preventDefault(),this.#d.cancel(),this.#m=!1;let t=s(e.touches);if(!t){r=void 0;return}if(!r||r.pointerCount!==t.pointerCount){r=t;return}let n=t.centerX-r.centerX,i=t.centerY-r.centerY,a=t.pointerCount===2?ZG(r.distance,t.distance):0;(n!==0||i!==0||a!==0)&&Number.isFinite(n)&&Number.isFinite(i)&&Number.isFinite(a)&&c(r.centerX,r.centerY,`move`,t.pointerCount,n,i,a),r=t},u=e=>{e.preventDefault(),this.#m=!1,r&&e.touches.length===0&&c(r.centerX,r.centerY,`end`,r.pointerCount,0,0,0),r=s(e.touches)};e.addEventListener(`touchstart`,l,{passive:!1}),e.addEventListener(`touchmove`,l,{passive:!1}),e.addEventListener(`touchend`,u,{passive:!1}),e.addEventListener(`touchcancel`,u,{passive:!1}),e.addEventListener(`dragstart`,e=>e.stopPropagation()),e.addEventListener(`mouseout`,e=>{if(!this.#C()){if(this.#_>0){this.#n.clear(),this.#m=!1;return}this.#c.handlePointerLeave(e),this.#l.clear(),this.#n.clear(),this.#u=null}})}#y(e){let t=this.#t.canvas,n=t.getBoundingClientRect();return new wW(e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop)}#b(e){let t=this.#t.canvas;return e.x>=0&&e.y>=0&&e.x<=t.clientWidth&&e.y<=t.clientHeight}#x(e){AW()||(this.#o(),this.#w(e.x,e.y))}#S(){this.#v||(this.#v=!0,this.#r.requestRender(),window.requestAnimationFrame(()=>{if(this.#v=!1,this.#_>0||this.#C())return;let e=this.#p;if(!e||!this.#b(e)){this.#u=null,this.#l.clear();return}this.#n.clear(),this.#m=!1,this.#x(e),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u})}))}#C(){return typeof document<`u`&&!!document.body&&document.body.classList.contains(`gs-freeze-interaction`)}#w(e,t){let n=this.#s(),r=mM(this.#t.gl,this.#t._pickingBufferInfo,e*n,t*n),i=r[0]|r[1]<<8|r[2]<<16|r[3]<<24;if(i==0){this.#u=null;return}if(i!==this.#u?.uniqueId&&(this.#u=null),this.#u||this.#e.visit(n=>{if(n instanceof aB){if(n.mark.isPickingParticipant()&&[...n.facetCoords.values()].some(n=>n.containsPoint(e,t))){let e=n.getCollector().findDatumByUniqueId(i);e&&(this.#u={mark:n.mark,datum:e,uniqueId:i})}if(this.#u)return TL}}),this.#u){let e=this.#u.mark;this.updateTooltip(this.#u.datum,async t=>{if(!e.isPickingParticipant())return;let n=e.properties.tooltip;if(n!==null&&n!==!1){let r=n?.handler??`default`,i=this.#a[r];if(!i)throw Error(`No such tooltip handler: `+r);let a=BH(t,e,n?.params);return i(t,e,n?.params,a)}})}}updateTooltip(e,t){if(!this.#g)if(!this.#m||!e)this.#n.updateWithDatum(e,t),this.#m=!0;else throw Error(`Tooltip has already been updated! Duplicate event handler?`)}};function XG(e,t){let n=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.hypot(n,r)}function ZG(e,t){return e<=0||t<=0?0:Math.log2(e/t)}var QG=class{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}},$G=class extends QG{#e=[0,0,0,0];#t;#n=[];#r;#i;#a=new Set;#o=void 0;#s=1;#c={width:0,height:0};constructor(e,t){if(super(e),this.#i=t.webGLHelper,this.#r=t.framebufferInfo,this.#s=t.devicePixelRatio,this.#c=t.canvasSize,t.clearColor){let e=wu(t.clearColor).rgb();this.#e=[e.r/255,e.g/255,e.b/255,e.opacity]}}getDevicePixelRatio(){return this.#s}pushView(e,t){this.#a.add(e),this.#o=t}renderMark(e,t){if(this.globalOptions.picking&&!e.isPickingParticipant())return;let n=e.render(t);n&&this.#n.push({mark:e,callback:n,coords:this.#o,clipRect:t.clipRect})}render(){if(this.#t||this.#l(),this.#t.length==0)return;let e=this.#i.gl,t=this.#r;t?(e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.viewport(0,0,t.width,t.height)):e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.disable(e.SCISSOR_TEST),e.clearColor(...this.#e),e.clear(e.COLOR_BUFFER_BIT);for(let e of this.#a)e.onBeforeRender();for(let e of this.#t)e();this.#r&&e.bindFramebuffer(e.FRAMEBUFFER,null)}#l(){this.#t=[];let e=!0,t=!0,n=t=>()=>{e&&t()},r=n=>()=>{e&&t&&n()},i=Sn(this.#n.reverse(),e=>e.mark);for(let[a,o]of[...i.entries()].reverse()){if(!a.isReady())continue;this.#t.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.#t.push(...a.prepareRender(this.globalOptions).map(e=>n(e)));let i;for(let e of o){let o=e.coords;o.equals(i)||this.#t.push(n(()=>{t=a.setViewport(this.#c,this.#s,o,e.clipRect)})),this.#t.push(r(e.callback)),i=e.coords}}}},eK=class extends QG{constructor(...e){super({}),this.contexts=e}pushView(e,t){for(let n of this.contexts)n.pushView(e,t)}popView(e){for(let t of this.contexts)t.popView(e)}renderMark(e,t){for(let n of this.contexts)n.renderMark(e,t)}},tK=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor({viewRoot:e,glHelper:t,getBackground:n,broadcast:r,onLayoutComputed:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=void 0,this.#o=void 0,this.#s=!1}computeLayout(){let e=this.#e;if(!e)return;this.#r(`layout`);let t=this.#t.getLogicalCanvasSize();if(isNaN(t.width)||isNaN(t.height)){console.log(`NaN in canvas size: ${t.width}x${t.height}. Skipping computeLayout().`);return}let n={webGLHelper:this.#t,canvasSize:t,devicePixelRatio:this.#t.getDevicePixelRatio(t)};this.#a=new $G({picking:!1},{...n,clearColor:this.#n()}),this.#o=new $G({picking:!0},{...n,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new eK(this.#a,this.#o),KU.create(0,0,t.width,t.height)),this.#i(),this.#r(`layoutComputed`)}renderAll(){this.#a?.render(),this.#s=!0}renderPickingFramebuffer(){this.#s&&=(this.#o.render(),!1)}};function nK(e){let t=e=>{throw Error(`ViewContext.`+e+` is not configured.`)},n={dataFlow:e.dataFlow??t(`dataFlow`),glHelper:e.allowMissingGlHelper?e.glHelper:e.glHelper??t(`glHelper`),animator:e.animator??t(`animator`),genomeStore:e.genomeStore,fontManager:e.fontManager??t(`fontManager`),createOrImportView:async function(t,r,i,a,o,s){let c=e.createOrImportViewWithContext;return c?c(n,t,r,i,a,o,s):Promise.reject(Error(`ViewContext.createOrImportView is not configured.`))}},r=[`requestLayoutReflow`,`updateTooltip`,`getNamedDataFromProvider`,`getCurrentHover`,`suspendHoverTracking`,`resumeHoverTracking`,`addKeyboardListener`,`addBroadcastListener`,`removeBroadcastListener`,`highlightView`,`isViewConfiguredVisible`,`isViewSpec`,`getBaseConfig`],i=e,a=n;for(let e of r)a[e]=i[e]??(()=>t(e));return n}var rK={view:{},mark:{xOffset:0,yOffset:0,minBufferSize:0},point:{x:.5,y:.5,color:`#4c78a8`,filled:!0,opacity:1,size:100,semanticScore:0,shape:`circle`,strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02,minPickingSize:2},rect:{x2:void 0,y2:void 0,filled:!0,color:`#4c78a8`,opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1},rule:{x2:void 0,y2:void 0,size:1,color:`black`,opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`},tick:{color:`black`,opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`,orient:void 0,thickness:1},text:{x:.5,y:.5,x2:void 0,y2:void 0,text:``,size:11,color:`black`,opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:`center`,baseline:`middle`,dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0},link:{x:0,x2:void 0,y:0,y2:void 0,size:1,color:`black`,opacity:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:`arc`,orient:`vertical`},axis:{values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:`gray`,domainDash:null,domainDashOffset:0,domainCap:`square`,ticks:!0,tickSize:5,tickWidth:1,tickColor:`gray`,tickDash:null,tickDashOffset:0,tickCap:`square`,tickCount:null,tickMinStep:null,labels:!0,labelAlign:`center`,labelBaseline:`middle`,labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:`black`,format:null,titleColor:`black`,titleFont:`sans-serif`,titleFontSize:10,titlePadding:3,grid:!1,gridCap:`butt`,gridColor:`lightgray`,gridDash:null,gridOpacity:1,gridWidth:1},axisLocus:{chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:`#989898`,chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:`normal`,chromLabelFontStyle:`normal`,chromLabelColor:`black`,chromLabelAlign:`left`,chromLabelPadding:7,chromGrid:!1,chromGridCap:`butt`,chromGridColor:`gray`,chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`viridis`},range:{shape:[`circle`,`square`,`triangle-up`,`cross`,`diamond`],size:[0,400],angle:[0,360]},title:{anchor:`middle`,frame:`group`,offset:10,orient:`top`,align:void 0,angle:0,baseline:`alphabetic`,dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:`normal`,fontWeight:`normal`},style:{"track-title":{orient:`left`,anchor:`middle`,align:`right`,baseline:`middle`,angle:0,fontSize:12},overlay:{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12},"overlay-title":{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12}}};function iK(e){aU(e),oU(e)}function aK({glHelper:e,viewRoot:t,logicalWidth:n,logicalHeight:r,devicePixelRatio:i,clearColor:a=`white`}){n??=e.getLogicalCanvasSize().width,r??=e.getLogicalCanvasSize().height,i??=window.devicePixelRatio??1;let o=e.gl,s=Math.floor(n*i),c=Math.floor(r*i),l=Rj(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],s,c),u=new $G({picking:!1},{webGLHelper:e,canvasSize:{width:n,height:r},devicePixelRatio:i,clearColor:a,framebufferInfo:l});return t.render(u,KU.create(0,0,n,r)),u.render(),hM(o,l,`image/png`)}function oK(e){if(e.genome&&e.genomes)throw Error("Do not mix deprecated `genome` with `genomes`. Use only `genomes` and `assembly`.");if(e.genome&&e.assembly)throw Error("Do not mix deprecated `genome` with root `assembly`. Use `genomes` and `assembly`.");if(e.genome){let{name:t,...n}=e.genome;return{genomesByName:!(Object.keys(n).length>0)&&cK(t)?new Map:new Map([[t,n]]),defaultAssembly:t,deprecationWarning:sK()}}let t=new Map;for(let[n,r]of Object.entries(e.genomes??{}))t.set(n,r??{});let n=e.assembly;if(!n&&t.size===1&&(n=t.keys().next().value),n&&!t.has(n)&&!cK(n))throw Error(`Root assembly "${n}" is neither defined in \`genomes\` nor a built-in assembly.`);return{genomesByName:t,defaultAssembly:n,deprecationWarning:void 0}}function sK(){return'Root `genome` is deprecated and will be removed in a future version. Use root `genomes` and `assembly` instead. Built-in migration example: {"genome":{"name":"hg38"}} -> {"assembly":"hg38"}.'}function cK(e){try{return VL(e),!0}catch{return!1}}function lK(e,t,n){let r=dK(e,n);if(!r.size)return!0;for(let e of r)if(!fK(e,t))return!1;return!0}function uK(e,t,n,r,i){let a=i??(e=>e.isConfiguredVisible());return new Promise((i,o)=>{let s=new Set,c=new Set,l=()=>{f(),d()},u=()=>{for(let e of s)e();s.clear(),e.removeBroadcastListener(`subtreeDataReady`,l),r&&r.removeEventListener(`abort`,p)},d=()=>{lK(t,n,a)&&(u(),i())},f=()=>{t.visit(e=>{if(!(e instanceof aB)||!a(e))return;let t=e.flowHandle?.collector;t&&(c.has(t)||(c.add(t),s.add(t.observe(d))))})},p=()=>{u(),o(Error(`Lazy subtree readiness was aborted.`))};if(f(),d(),e.addBroadcastListener(`subtreeDataReady`,l),r){if(r.aborted){p();return}r.addEventListener(`abort`,p,{once:!0})}})}function dK(e,t){let n=t??(e=>e.isConfiguredVisible()),r=new Set;return e.visit(e=>{if(!(e instanceof aB)||!n(e))return;let t=e;for(;t&&!(t.flowHandle&&t.flowHandle.dataSource);)t=t.dataParent;if(!t||!t.flowHandle)return;let i=t.flowHandle.dataSource;i instanceof $m&&r.add(i)}),r}function fK(e,t){let n=t??{[e.channel]:Array.from(e.scaleResolution.getDomain())};return e.isDataReadyForDomain(n)}var pK={mark:{color:`#4c78a8`},point:{filled:!1,size:30},rule:{color:`black`},text:{color:`black`},view:{stroke:`#ddd`,strokeWidth:1},axis:{grid:!1,domain:!0,tickColor:`gray`,domainColor:`gray`,gridColor:`#ddd`,labelColor:`#333`,titleColor:`#333`,titleFontSize:11,titleFontWeight:`normal`},axisQuantitative:{grid:!0},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`blues`},range:{heatmap:`viridis`,ramp:`blues`,diverging:`blueorange`}},mK={genomespy:{},vegalite:pK,quartz:FN([pK,{background:`#f9f9f9`,view:{fill:`#f9f9f9`},mark:{color:`#ab5787`},point:{size:30},axis:{domainColor:`#979797`,domainWidth:.5,gridWidth:.2,labelColor:`#979797`,tickColor:`#979797`,tickWidth:.2,titleColor:`#979797`},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0}}]),dark:FN([pK,{background:`#333`,view:{fill:`#333`,stroke:`#888`},title:{color:`#fff`},axis:{domainColor:`#fff`,gridColor:`#888`,tickColor:`#fff`,labelColor:`#fff`,titleColor:`#fff`},text:{color:`#fff`},rule:{color:`#fff`}}]),fivethirtyeight:FN([pK,{background:`#f0f0f0`,view:{fill:`#f0f0f0`},mark:{color:`#30a2da`},point:{filled:!0,shape:`circle`},axis:{domainColor:`#cbcbcb`,grid:!0,gridColor:`#cbcbcb`,gridWidth:1,labelColor:`#999`,labelFontSize:10,titleColor:`#333`,tickColor:`#cbcbcb`,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisNominal:{grid:!1},axisOrdinal:{grid:!1},title:{anchor:`start`,fontSize:24,fontWeight:600,offset:20}}]),urbaninstitute:FN([pK,{background:`#FFFFFF`,view:{fill:`#FFFFFF`,stroke:`#000000`,strokeOpacity:0},mark:{color:`#1696d2`},point:{filled:!0},text:{font:`Lato`,color:`#1696d2`,size:11,align:`center`,fontWeight:400},title:{anchor:`start`,fontSize:18,font:`Lato`},axisX:{domain:!0,domainColor:`#000000`,domainWidth:1,grid:!1,labelFontSize:12,labelFont:`Lato`,labelAngle:0,tickColor:`#000000`,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:`Lato`},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:`#DEDDDD`,gridWidth:1,labelFontSize:12,labelFont:`Lato`,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:`Lato`}}])},hK=Object.keys(mK);function gK(e){let t={...mK[e]};return delete t.background,t}function _K(e){if(!e)return[];let t=Array.isArray(e)?e:[e],n=t.filter(e=>!(e in mK));if(n.length>0)throw Error(`Unknown theme "`+n[0]+`". Available themes: `+hK.join(`, `));return t}var vK=`genomespy`;function yK(e){return mK[e].background}function bK(e){let t=_K(e);if(t.length!=0)return FN(t.map(e=>gK(e)))}var xK=class{#e=[];#t;#n;#r;#i;#a;#o;#s=new oT;#c=new sT;#l=new sT;constructor(e,t,n={}){this.container=e,this.options=n,n.inputBindingContainer??=`default`,this.spec=t,this.viewFactory=new RG,this.namedDataProviders=[],this.animator=new mH(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=e=>e.isVisibleInSpec(),this.tooltipHandlers={default:rU,refseqgene:DH,...n.tooltipHandlers??{}},this.viewRoot=void 0,this.#i=new lT(e,n),this.dpr=window.devicePixelRatio}get#u(){return this.container.querySelector(`.canvas-wrapper`)}#d(){this.#i.initialize(this.viewRoot)}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(let t of this.namedDataProviders){let n=t(e);if(n)return n}}updateNamedData(e,t){let n=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!n)throw Error(`No such named data source: `+e);n.dataSource.updateDynamicData(t),this.animator.requestRender()}addEventListener(e,t){this.#c.add(e,t)}removeEventListener(e,t){this.#c.remove(e,t)}broadcast(e,t){let n={type:e,payload:t};this.viewRoot.visit(e=>e.handleBroadcast(n)),this.#l.emit(e,n)}#f(){this.dpr=this.#o.getDevicePixelRatio();let e=this.viewRoot.paramRuntime.allocateSetter(`devicePixelRatio`,this.dpr),t=()=>{this.#o.invalidateSize(),this.dpr=this.#o.getDevicePixelRatio(),e(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){let e=new ResizeObserver(t);e.observe(this.container),this.#e.push(()=>e.disconnect())}let n=null,r=()=>{n!=null&&(n(),t());let e=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);e.addEventListener(`change`,r),n=()=>{e.removeEventListener(`change`,r)}};r(),n&&this.#e.push(n)}#p(){let{canvasWrapper:e,loadingIndicatorsElement:t,tooltip:n}=qw(this.container);this.#o=new uM(e,()=>this.viewRoot?pB(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??`default`}),e.appendChild(t),this.tooltip=n,this.#r=new iT,this.#n=new rT(t,this.#r)}destroy(){let e=this.#u;for(this.container.classList.remove(`genome-spy`),e.classList.remove(`loading`),this.#s.removeAll(),this.#e.forEach(e=>e()),this.#o.finalize(),this.#i.remove(),this.#n.destroy();this.container.firstChild;)this.container.firstChild.remove()}async#m(){await this.#h();let e=this.#g();await this.#v(e),await lH(this.viewRoot,e.dataFlow,e.fontManager,e=>this.broadcast(`dataFlowBuilt`,e)),this.#b(e)}async#h(){this.genomeStore=new gH(this.spec.baseUrl);let{genomesByName:e,defaultAssembly:t,deprecationWarning:n}=oK(this.spec);this.genomeStore.configureGenomes(e,t),n&&console.warn(n)}#g(){let e=new BV;e.loadingStatusRegistry=this.#r;let t=FG({defaultConfig:rK,builtInTheme:bK(vK),theme:FN([this.options.theme,bK(this.spec.theme)])});return nK({dataFlow:e,glHelper:this.#o,animator:this.animator,genomeStore:this.genomeStore,fontManager:new xH(this.#o),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this.#a.getCurrentHover(),suspendHoverTracking:()=>this.#a?.suspendHoverTracking(),resumeHoverTracking:e=>this.#a?.resumeHoverTracking(e),addKeyboardListener:(e,t)=>{this.#s.add(e,n=>{this.#_(e,n)&&t(n)})},addBroadcastListener:(e,t)=>this.#l.add(e,t),removeBroadcastListener:(e,t)=>this.#l.remove(e,t),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:e=>this.viewFactory.isViewSpec(e),getBaseConfig:()=>t,createOrImportViewWithContext:(e,t,n,r,i,a,o)=>this.viewFactory.createOrImportView(t,e,n,r,i,a,o),highlightView:aT(this.container)})}#_(e,t){if(e===`keyup`)return!0;let n=document.activeElement;return n&&n!==document.body?this.container.contains(n):this.container.matches(`:hover`)}async#v(e){let t=this.spec;t.datasets&&this.registerNamedDataProvider(e=>t.datasets[e]),this.viewRoot=await e.createOrImportView(t,null,null,LG),await DU(this.viewRoot,this.genomeStore),this.#r.set(this.viewRoot,`loading`),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?`1`:`0`,this.#d(),iK(this.viewRoot),this.#y(),this.#o.invalidateSize();let n=this.spec.theme?Array.isArray(this.spec.theme)?this.spec.theme:[this.spec.theme]:[];this.#t=new tK({viewRoot:this.viewRoot,glHelper:this.#o,getBackground:()=>{if(this.spec.background!==void 0)return this.spec.background;let e;for(let t of n){let n=yK(t);n!==void 0&&(e=n)}return e},broadcast:this.broadcast.bind(this),onLayoutComputed:()=>this.#n.updateLayout()}),e.requestLayoutReflow=this.computeLayout.bind(this),this.#f()}#y(){let e=pU(this.viewRoot);if(e.length)for(let t of e)console.warn(`Selector constraints warning:`,t.message)}#b(e){e.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>TN(e,`size`)),this.#o.invalidateSize(),this.#a=new YG({viewRoot:this.viewRoot,glHelper:this.#o,tooltip:this.tooltip,animator:this.animator,emitEvent:this.#c.emit.bind(this.#c),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr})}async launch(){let e=!1;try{return this.#p(),await this.#m(),this.#a.registerInteractionEvents(),this.computeLayout(),this.animator.requestRender(),e=!0,!0}catch(e){let t=`${e.view?`At "${e.view.getPathString()}": `:``}${e.toString()}`;return console.error(e.stack),this.options.onError?.(e,this.container)||Jw(this.container,t),this.viewRoot&&this.#r.set(this.viewRoot,`error`,t),!1}finally{this.#u.classList.remove(`loading`),e&&this.viewRoot&&this.#r.set(this.viewRoot,`complete`)}}async initializeVisibleViewData(){this.viewRoot&&(await uH(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix(`size`,`progeny`),this.#o.invalidateSize(),this.computeLayout(),this.animator.requestRender())}async awaitVisibleLazyData(e){this.viewRoot&&await uK(this.viewRoot.context,this.viewRoot,void 0,e,e=>e.isConfiguredVisible()&&SK(e))}updateTooltip(e,t){this.#a.updateTooltip(e,t)}exportCanvas(e,t,n,r=`white`){let i=aK({glHelper:this.#o,viewRoot:this.viewRoot,logicalWidth:e,logicalHeight:t,devicePixelRatio:n,clearColor:r});return this.computeLayout(),this.renderAll(),i}getLogicalCanvasSize(){return this.#o.getLogicalCanvasSize()}getRenderedBounds(){let e={width:void 0,height:void 0};return this.viewRoot.visit(t=>{for(let n of t.facetCoords.values())e.width=Math.max(e.width??0,n.x2),e.height=Math.max(e.height??0,n.y2)}),e}computeLayout(){this.#t.computeLayout(),this.#o.invalidateSize()}renderAll(){this.#t.renderAll()}renderPickingFramebuffer(){this.#t.renderPickingFramebuffer()}getSearchableViews(){let e=[];return this.viewRoot.visit(t=>{t instanceof aB&&t.getSearchAccessors().length>0&&e.push(t)}),e}getNamedScaleResolutions(){let e=new Map;return this.viewRoot.visit(t=>{for(let n of Object.values(t.resolutions.scale))n.name&&e.set(n.name,n)}),e}};function SK(e){let t=e;for(;t;){let e=t.flowHandle?.dataSource;if(e)return e instanceof Sg;t=t.dataParent}return!1}var CK=`data:image/svg+xml,%3csvg%20viewBox='0%200%2032%2032'%20xmlns='http://www.w3.org/2000/svg'%20fill-rule='evenodd'%20clip-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='1.5'%3e%3cpath%20d='M4.7%2021.2s.4%202.3%201.3%203.6C7%2026%209.8%2028%209.8%2028s3.4-2.6%206.4-8.5c0%200%201%20.1%201.9-.4.9-.6.8-.4%201-1.2%200%200%202.9.5%206.6%200%202.1-.3%204.3-1%206.2-2.5%200%200-1.1-1.7-2.5-5.1-.5-1.3-2-1.8-4.6-4.6l-8.2%208.6-11.9%206.9z'%20fill-opacity='.1'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='%237fbbdd'/%3e%3cpath%20d='M12.4%2015.5c-.7-.5-2.4-.8-4.4-.4-2%20.4-4%201.3-4.8%201.8-.5.3-1.2%201-1.2%201.4%200%20.7.3%201.8.8%202.4.3.3.7.5%201.4.6.8%200%202.5-1.4%203.5-2%201-.6%201.6-.8%202.7-1.2l-2.9%202.4c-1.3%201.2-2.2%201.5-2.4%202.3%200%20.5%200%201.4.5%201.8.4.5.6.8%201.6.8.6%200%201%200%202.6-1.5.9-.9%202.3-3%202.7-3.7.6-1.1%201-2.2.7-3-.2-1-.4-1.4-.8-1.7zM17.4%2014.2c-.3-.5-.9-1.2-.2-2.5l1.9-3c.5-.8%202-2.3%202.6-2.6.6-.4%201.5-.6%202-.2.6.4%201%201%201.3%201.5.4.6.7%201.3.2%202-.7%201-1.6.9-2.8%201.7-1.2.8-1.9%201.2-2.5%201.9l3.8-1.8c1.3-.6%202.7-1.1%203.4-.7.8.5.8.7%201%201.4.3%201-.2%201.9-.8%202.4-.5.6-1.5.9-2.6%201.2-1.4.4-4.5%201-5.8.5-1.3-.5-1.3-1.4-1.5-1.8z'%20fill='%23fff'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='%237fbbdd'/%3e%3cpath%20d='M13.8%2015.3c.9.8.6%202%201.4%201.8%201-.2%201.4-.8%201.3-1.5%200-.7%200-.8-.4-1.6-.3-.7-1-1.1-2-.5-.7.5-1.4%201.3-1.4%201.3s.2-.3%201.1.5z'%20fill='%23fff'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3c/svg%3e`,wK=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5'%20viewBox='0%200%2064%2064'%3e%3cpath%20d='M208.6%20548.2s11.2%2046.2%2031.2%2071c20%2024.9%2079.3%2061.6%2079.3%2061.6S385.6%20623%20438%20498.3c0%200%2018.1%201%2036-11.9%2017.7-12.7%2016.3-7.9%2021-24.8%200%200%2057%206.3%20131-9.7%2041.7-9.1%2084.3-26.3%20121.5-58.8%200%200-25.4-32.9-58-101.7-12.4-26.1-41.9-34.3-98.7-88L438.1%20391.2%20208.6%20548.2Z'%20style='fill-opacity:.11'%20transform='matrix(.10221%20.00684%20-.00671%20.10035%20-8%20-13.2)'/%3e%3cg%20transform='rotate(-35.4%2034.2%2080.8)%20scale(.10057)'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='a'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M386.9%20397.2c-15.6-13.6-51.8-22.4-96.3-16.7-44.5%205.8-93.8%2021.8-111.8%2031.6-10.6%205.7-27.3%2017.3-28.1%2027.2-1.2%2014.2%202.9%2037.8%2015%2052%206%207.2%2014.2%2012.1%2028.1%2014.1%2017.9%202.6%2059-24.8%2081.6-36.2%2024-12%2038.6-14.6%2063-22.2%200%200-47%2031.6-68.2%2047.4-30.6%2022.9-51.6%2028-57.3%2045.5-3.1%209.4-.7%2027.9%207.5%2037.6%209%2011%2012.8%2017.6%2034.2%2020.1%2012.7%201.5%2022%201.2%2059.8-28.6%2021.7-17.2%2055.9-59.2%2067-74.4%2016.2-22%2023.8-43.1%2021.3-59.6-3.7-23.6-8.4-31.3-15.8-37.8Z'%20style='fill:%23fff'%20transform='scale(.88664)%20rotate(31.2%20485%20792.2)'/%3e%3cpath%20d='M484.7%20379c-5.4-11.1-17.6-28.5-.8-53.8a739%20739%200%200%201%2044.2-60.6c13.2-16.3%2046.7-46.2%2059.6-52%2013-6%2033.3-8.7%2044.2.2%2011%209.1%2016.5%2020.6%2023%2032.7%207.4%2013.8%2012.4%2029.3%201.6%2042.8-15.4%2019.2-34.3%2017-61.6%2031.5-27.7%2014.8-42.3%2023.1-55.7%2035.9%200%200%2052.2-21.6%2082-31.2%2029.8-9.7%2059.8-20%2074.8-8.5s14.6%2015.5%2018.4%2031.2c4.7%2019.4-7.2%2038-20.1%2048.6-13%2010.7-34.3%2016-57.4%2021-30.5%206.8-96.6%2015.1-124%202.6-27.5-12.6-24.4-32.8-28.2-40.5Z'%20style='fill:%23fff'%20transform='scale(.87906)%20rotate(31.2%20487.2%20893.5)'/%3e%3c/g%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3cg%20transform='rotate(-4.2%20-78%20211)%20scale(.10057)'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='b'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20d='M413.3%20402.7c17.5%2018.9%2010%2045.7%2028.4%2043.4%2021.7-2.7%2030.9-15.7%2031.6-32.7.7-17-1-19.5-7.1-38-6.1-18.7-18.2-23.2-43.4-18.2-20.8%204.1-17.8%203-24%2010-6.4%207-14.5%2026-14.5%2026s8.4-12.7%2029%209.5Z'%20style='fill:%23fff'%20transform='matrix(.90907%200%200%20.85852%2037%2052.2)'/%3e%3c/g%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3c/svg%3e`,TK=[[`/docs/examples/`,`/docs/examples/`],[`/examples/core/`,`/examples/`],[`/examples/docs/`,`/examples/`],[`/examples/app/`,`/examples/`]],EK=/^(?:[a-z]+:)?\/\//i,DK=`https://example.invalid`;function OK(e){return EK.test(e)?`external`:e.startsWith(`/`)?`root`:`relative`}function kK(e){let t=new URL(e,DK),n=TK.find(([e])=>t.pathname.startsWith(e));if(n)return jK(n[1],t,OK(e))}function AK(e){let t=kK(e);if(t)return t;let n=new URL(e,DK);return jK(new URL(`./`,n).pathname,n,OK(e))}function jK(e,t,n){return n===`external`?t.origin+e:n===`root`?e:e.slice(1)}function MK(e){return async function(t,n,r={}){let i;if(N(t)){if(i=document.querySelector(t),!i)throw Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)i=t;else throw Error(`Invalid element: ${t}`);let a;try{let t=$e(n)?n:await PK(n);if(t.baseUrl??=``,t.width??=`container`,t.padding??=10,i==document.body){let e=document.createElement(`div`);e.style.position=`fixed`,e.style.inset=`0`,e.style.overflow=`hidden`,i.appendChild(e),i=e}a=new e(i,t,r),NK(a,r),await a.launch()}catch(e){i.innerText=e.toString(),console.error(e)}return{finalize(){for(a.destroy();i.firstChild;)i.firstChild.remove()},addEventListener(e,t){a.addEventListener(e,t)},removeEventListener(e,t){a.removeEventListener(e,t)},getScaleResolutionByName(e){return a.getNamedScaleResolutions().get(e)},awaitVisibleLazyData:a.awaitVisibleLazyData.bind(a),getRenderedBounds:a.getRenderedBounds.bind(a),updateNamedData:a.updateNamedData.bind(a),getLogicalCanvasSize:a.getLogicalCanvasSize.bind(a),exportCanvas:a.exportCanvas.bind(a)}}}function NK(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function PK(e){let t;try{t=await cB(e)}catch(t){throw Error(`Could not load or parse configuration: ${e}, reason: ${t.message}`,{cause:t})}return t.baseUrl||=AK(e),t}var FK=MK(xK);e.GenomeSpy=xK,e.embed=FK,e.favIcon=wK,e.html=D,e.icon=CK,e.loadSpec=PK});
|
|
841
|
+
`:``}${p}`}var yU=class e extends iR{#e=new Map;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e}async initializeChildren(){}getNextAutoName(e){let t=this.#e.get(e)??0;return this.#e.set(e,t+1),e+t}*[Symbol.iterator](){}visit(e){let t;try{t=e(this)}catch(e){throw e.view=this,e}if(t===`VISIT_STOP`)return t;if(t!==`VISIT_SKIP`){e.beforeChildren&&e.beforeChildren(this);for(let t of this){let n=t.visit(e);if(n===`VISIT_STOP`)return n}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(t){let n=this;for(let r=0;r<t.length;r++){if(!(n instanceof e))return;let i=n.#t(t[r]);if(!i)return;if(r===t.length-1)return i;n=i}}#t(e){for(let t of this)if(t.name===e)return t}findDescendantByName(e){let t;return this.visit(n=>{if(n.name==e)return t=n,nR}),t}getDefaultResolution(e,t){return`shared`}};function bU(e){VB(e),HB(e)}function xU(e){e.getDescendants().forEach(e=>e.configureViewOpacity())}var SU=new WeakMap,CU=new WeakMap,wU=new WeakMap;function TU(e,t){if(t!==null&&typeof t!=`string`)throw Error(`Import scope name must be a string or null.`);SU.set(e,{name:t})}function EU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;CU.set(e,n)}function DU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;wU.set(e,n)}function OU(e){let t=e.getDataAncestors(),n=[];for(let e=t.length-1;e>=0;--e){let r=SU.get(t[e]);r&&typeof r.name==`string`&&n.push(r.name)}return n}function kU(e,t){e.visit(e=>{let n=CU.get(e);if(n===`excludeSubtree`)return tR;if(n!==`exclude`)return t(e)})}function AU(e){let t=[];for(let n of MU(e)){let r=NU(n);FU(e,r,t),IU(e,r,t)}return t}function jU(e){return e.persist===!1?!1:hg(e)?!0:mg(e)?!!e.bind:!1}function MU(e){let t=new Set([e]);return e.visit(e=>{let n=SU.get(e);n&&typeof n.name==`string`&&t.add(e)}),Array.from(t)}function NU(e){return OU(e)}function PU(e){return e.length?`import scope [`+e.join(` / `)+`]`:`import scope (root)`}function FU(e,t,n){let r=new Map;zU(e,t,e=>{for(let[t,n]of e.paramRuntime.paramConfigs){if(!jU(n))continue;let i=r.get(t);i?i.push(e):r.set(t,[e])}});for(let[e,i]of r){if(i.length<=1)continue;let r=i.map(e=>e.getPathString()).join(`, `);n.push({message:`Bookmarkable parameter "`+e+`" is not unique within `+PU(t)+`. Found in: `+r+`.`,scope:t})}}function IU(e,t,n){let r=LU(e,t);if(!r.length)return;let i=r.filter(e=>RU(e));if(i.length<=1)return;let a=new Map;for(let e of i){let t=SU.get(e),n=t?t.name:void 0;typeof n!=`string`||!n.length||a.set(n,(a.get(n)??0)+1)}for(let[e,r]of a)r>1&&n.push({message:`Import instance name "`+e+`" is used multiple times for addressable instances in `+PU(t)+`.`,scope:t})}function LU(e,t){let n=[];return zU(e,t,e=>{if(OU(e).length!==t.length+1)return;let r=SU.get(e);!r||typeof r.name!=`string`||n.push(e)},{includeNamedImportRoots:!0}),n}function RU(e){let t=!1;return e.visit(e=>{let n=CU.get(e);if(n===`excludeSubtree`)return tR;if(n!==`exclude`){for(let n of e.paramRuntime.paramConfigs.values())if(jU(n))return t=!0,nR}}),t}function zU(e,t,n,r={}){let i=r.includeNamedImportRoots??!1;e.visit(e=>{let r=SU.get(e),a=CU.get(e);if(a===`excludeSubtree`)return tR;if(a!==`exclude`&&BU(e,t,r,i))return n(e)})}function BU(e,t,n,r){let i=OU(e);return VU(i,t)?!0:!r||!n||typeof n.name!=`string`||i.length!==t.length+1?!1:HU(t,i)}function VU(e,t){return e.length===t.length?HU(e,t):!1}function HU(e,t){if(e.length>t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function UU(e){let t=[],n=!1,r=GU(e);for(let e of r){let r=e.getAssemblyRequirement();r.assembly&&t.push(r.assembly),r.needsDefaultAssembly&&(n=!0)}return{assemblies:t,needsDefaultAssembly:n}}async function WU(e,t){let{assemblies:n,needsDefaultAssembly:r}=UU(e);if(r){let e=t.getDefaultAssemblyName();if(!e)throw Error("No default assembly has been configured. Set root `assembly`, define exactly one entry in root `genomes`, or set `scale.assembly` on each locus scale.");n.push(e)}await t.ensureAssemblies(n)}function GU(e){let t=new Set,n=[`x`,`y`],r=e=>{for(let r of n){let n=e.getScaleResolution(r);n&&t.add(n)}};return r(e),kU(e,r),t}var KU=class{constructor(e,t){this.container=e,this.options=t}async addChildSpec(e,t){let{specs:n,insertAt:r}=this.options.getChildSpecs(),i=t??n.length,a=this.options.defaultName?.(i,e)??this.container.getNextAutoName(`child`),o=await this.container.context.createOrImportView(e,this.container,this.container,a,void 0,this.options.createViewOptions);await WU(o,this.container.context.genomeStore),r(i,e);let s=this.options.insertView(o,i);this.options.prepareView&&await this.options.prepareView(o,i,s),xU(o);let{dataSources:c,graphicsPromises:l}=vH(o,this.container.context.dataFlow,e=>e.isConfiguredVisible());return await xH(o,c),await UB(l),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),o}async removeChildAt(e){let{removeAt:t}=this.options.getChildSpecs();this.options.removeView(e),t(e),this.options.afterRemove&&await this.options.afterRemove(e),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}},qU=.5;function JU(e){return`multiscale`in e&&Ze(e.multiscale)}function YU(e){if(!e.multiscale.length)throw Error(`"multiscale" must contain at least one child view.`);let t=XU(e.stops,e.multiscale.length),n=e.multiscale.map((n,r)=>e.multiscale.length===1?n:{opacity:QU(r,e.multiscale.length,t),layer:[n]}),r={...e};return delete r.multiscale,delete r.stops,{...r,layer:n}}function XU(e,t){let n=`unitsPerPixel`,r,i=`auto`,a=qU;if(Ze(e))r=ZU(e,t,`stops`);else if(Qe(e))n=e.metric??`unitsPerPixel`,r=ZU(e.values,t,`stops.values`),i=e.channel??`auto`,a=e.fade??qU;else throw Error(`"stops" must be an array or an object with "values".`);if(n!==`unitsPerPixel`)throw Error(`Only "unitsPerPixel" is supported for "stops.metric" in multiscale.`);if(![`x`,`y`,`auto`].includes(i))throw Error(`"stops.channel" must be one of "x", "y", or "auto".`);if(!Number.isFinite(a)||a<0||a>.5)throw Error(`"stops.fade" must be a finite number in range [0, 0.5].`);if(r.forEach((e,t)=>{if(!z(e)&&(!Number.isFinite(e)||e<=0))throw Error(`Invalid stop value at index `+t+`. Stop values must be positive finite numbers.`)}),!r.some(z)){let e=r;for(let t=1;t<e.length;t++)if(e[t-1]<=e[t])throw Error(`"stops.values" must be strictly decreasing for "unitsPerPixel".`);for(let t=0;t<e.length-1;t++)if(e[t]*(1-a)<=e[t+1]*(1+a))throw Error(`Adjacent transitions overlap. Reduce fade or increase stop spacing.`)}return{metric:n,values:r,channel:i,fade:a}}function ZU(e,t,n){if(!Ze(e))throw Error(`"`+n+`" must be an array of numbers or ExprRefs.`);let r=t-1;if(e.length!==r)throw Error(`Invalid stop count for multiscale. Expected `+r+`, got `+e.length+`.`);for(let t of e)if(!z(t)&&!Number.isFinite(t))throw Error(`"`+n+`" must contain only numbers or ExprRefs.`);return e}function QU(e,t,n){let r,i,a=n.values.map(e=>({hi:$U(e,1+n.fade),lo:$U(e,1-n.fade)}));if(e===0)r=[a[0].hi,a[0].lo];else if(e===t-1){let e=a.at(-1);r=[e.hi,e.lo]}else{let t=a[e-1],n=a[e];r=[t.hi,t.lo,n.hi,n.lo]}return i=e===0?[1,0]:e===t-1?[0,1]:[0,1,1,0],{channel:n.channel,unitsPerPixel:r,values:i}}function $U(e,t){return z(e)?{expr:`(`+e.expr+`) * `+t}:e*t}function eW(e){return`mark`in e&&(P(e.mark)||Qe(e.mark))}function tW(e){return`layer`in e&&Qe(e.layer)}function nW(e){return`import`in e}function rW(e){return`vconcat`in e&&Ze(e.vconcat)}function iW(e){return`hconcat`in e&&Ze(e.hconcat)}function aW(e){return`concat`in e&&Ze(e.concat)}var oW=class extends yU{#e=[];constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e,this.needsAxes={x:!0,y:!0}}async initializeChildren(){this.#e=await Promise.all(this.spec.layer.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName(`layer`),e=>{if(!tW(e)&&!eW(e)&&!JU(e))throw new sP(`LayerView accepts only unit, layer, or multiscale specs as children!`,this)},{layoutSizeParams:`inherit`})))}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}#t(){return new KU(this,{getChildSpecs:()=>({specs:this.spec.layer,insertAt:(e,t)=>{this.spec.layer.splice(e,0,t)},removeAt:e=>{this.spec.layer.splice(e,1)}}),insertView:(e,t)=>(e.layoutParent??=this,this.#e.splice(t,0,e),e),removeView:e=>{let t=this.#e[e];if(!t)throw Error(`Child index out of range!`);t.disposeSubtree(),this.#e.splice(e,1)},defaultName:()=>this.getNextAutoName(`layer`),createViewOptions:{layoutSizeParams:`inherit`}})}get children(){return this.#e.slice()}*[Symbol.iterator](){for(let e of this.#e)yield e}render(e,t,n={}){if(super.render(e,t,n),this.isConfiguredVisible()){e.pushView(this,t);for(let r of this.#e)r.render(e,t,n);e.popView(this)}}propagateInteraction(e){this.handleInteraction(e,!0);for(let t=this.#e.length-1;t>=0;t--)if(this.#e[t].propagateInteraction(e),e.stopped)return;this.handleInteraction(e,!1)}},sW=class{constructor(e,t){this.n=e,this.maxCols=t??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<n;r++){let n=[];e.push(n);for(let e=0;e<t;e++){let i=r*t+e;i<this.n&&n.push(i)}}return e}get colIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<t;r++){let i=[];e.push(i);for(let e=0;e<n;e++){let n=e*t+r;n<this.n&&i.push(n)}}return e}getCellIndex(e,t){let n;if(this.maxCols==1/0)n=t==0?e:void 0;else if(e>=this.maxCols)return;else n=t*this.nCols+e;return n<this.n?n:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}};function cW(e){return()=>e}var lW=class e{static create(t,n,r,i){return new e(cW(t),cW(n),cW(r),cW(i))}static ZERO=e.create(0,0,0,0);_offset(e,t){let n=this[`_`+e];if(t===0)return n;switch(typeof t){case`number`:return()=>n()+t;case`function`:return()=>n()+t();default:throw Error(`Not a number of function`)}}_passThrough(e){return this._offset(e,0)}constructor(e,t,n,r){this._x=e,this._y=t,this._width=n,this._height=r}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(t){if(!Object.keys(t).length)return this;let n=e=>{let n=t[e];return typeof n==`number`?cW(n):typeof n==`function`?n:this._passThrough(e)};return new e(n(`x`),n(`y`),n(`width`),n(`height`))}translate(t,n){return t===0&&n===0?this:new e(this._offset(`x`,t),this._offset(`y`,n),this._passThrough(`width`),this._passThrough(`height`))}translateBy(e){return this.translate(e.x,e.y)}expand(t,n=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new e(t.left?this._offset(`x`,-t.left*n):this._passThrough(`x`),t.top?this._offset(`y`,-t.top*n):this._passThrough(`y`),t.width?this._offset(`width`,t.width*n):this._passThrough(`width`),t.height?this._offset(`height`,t.height*n):this._passThrough(`height`))}shrink(e){return this.expand(e,-1)}intersect(t){return this===t||t==null?this:new e(()=>Math.max(this.x,t.x),()=>Math.max(this.y,t.y),()=>Math.min(this.x2,t.x2)-Math.max(this.x,t.x),()=>Math.min(this.y2,t.y2)-Math.max(this.y,t.y))}union(t){return this===t||t==null?this:new e(()=>Math.min(this.x,t.x),()=>Math.min(this.y,t.y),()=>Math.max(this.x2,t.x2)-Math.min(this.x,t.x),()=>Math.max(this.y2,t.y2)-Math.min(this.y,t.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new e(cW(this.x),cW(this.y),cW(this.width),cW(this.height))}containsPoint(e,t){return e>=this.x&&e<this.x2&&t>=this.y&&t<this.y2}normalizePoint(e,t,n=!1){let r={x:(e-this.x)/this.width,y:(t-this.y)/this.height};return n&&(r.y=1-r.y),r}denormalizePoint(e,t,n=!1){return n&&(t=1-t),{x:this.x+e*this.width,y:this.y+t*this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}toRoundedString(){return`Rectangle: x: ${Math.round(this.x)}, y: ${Math.round(this.y)}, width: ${Math.round(this.width)}, height: ${Math.round(this.height)}`}},uW={x:`axisX`,y:`axisY`},dW={top:`axisTop`,bottom:`axisBottom`,left:`axisLeft`,right:`axisRight`},fW={nominal:`axisNominal`,ordinal:`axisOrdinal`,quantitative:`axisQuantitative`,index:`axisIndex`,locus:`axisLocus`};function pW(e,{channel:t,orient:n,type:r,style:i}){let a=pP(i);return fP(e.flatMap(e=>{let i=uW[t],o=n?dW[n]:void 0,s=r?fW[r]:void 0,c=[e.axis,i?e[i]:void 0,o?e[o]:void 0,s?e[s]:void 0];return[...c.flatMap(e=>pP(e?.style)).map(t=>e.style?.[t]),...c,...a.map(t=>e.style?.[t])]}))}var mW=`chromosome_ticks_and_labels`,hW=`labels_main`,gW=`ticks_and_labels`,_W=`axisExtent`,vW=`_labelWidth`,yW=10,bW=2;function xW(e){return e==`x`?`y`:`x`}var SW={x:[`bottom`,`top`],y:[`left`,`right`]},CW=Object.fromEntries(Object.entries(SW).map(([e,t])=>t.map(t=>[t,e])).flat(1));function wW(e){return CW[e]}var TW=class extends oW{#e;#t;#n;#r=!1;#i=!1;constructor(e,t,n,r,i,a){let o=wW(e.orient),s=pW(i.getConfigScopes(),{channel:o,orient:e.orient,type:t,style:e.style}),c={...s,...e},l={...s,...jW(t,c),...e};super(t==`locus`?NW(l,t):MW(l,t),n,r,i,`axis_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=l,this.#e=EW(l),this.#t=this.paramRuntime.allocateSetter(_W,this.#e),EU(this,{skipSubtree:!0}),DU(this,{skipSubtree:!0})}async initializeChildren(){await super.initializeChildren();let e=this.getDescendants().find(e=>e instanceof LB&&e.name===hW);e instanceof LB&&(this.#n=e),!(!this.axisProps.labels||!this.#n)&&this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>this.#o()))}getSize(){let e={px:this.getPerpendicularSize()},t={grow:1};return CW[this.axisProps.orient]==`x`?new oF(t,e):new oF(e,t)}getPerpendicularSize(){return this.#e}isPickingSupported(){return!1}#a(){this.#i||(this.#i=!0,queueMicrotask(()=>{this.#i=!1,this.#s()}))}#o(){if(this.#r)return;let e=this.#n?.getCollector();e&&(this.#r=!0,this.registerDisposer(e.observe(()=>this.#a())),e.completed&&this.#a())}#s(){let e=wW(this.axisProps.orient),t=this.dataParent.getScaleResolution(e);if(t&&!t.isDomainDefinedExplicitly()&&!t.isDomainInitialized())return;let n=AW(this.axisProps,this.context,this.#n);if(n===void 0)return;let r=EW(this.axisProps,n);r>=this.#e+bW&&(this.#e=r,this.#t(r),this.invalidateSizeCache(),this.context.requestLayoutReflow())}};function EW(e,t){let n=DW(e);return e.labels&&(n+=t??OW(e)),kW(e,n)}function DW(e){let t=e.ticks&&e.tickSize||0;return e.labels&&(t+=e.labelPadding),e.title&&(t+=e.titlePadding+e.titleFontSize),t}function OW(e){return wW(e.orient)==`x`?e.labelFontSize:yW}function kW(e,t){return Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,t))}function AW(e,t,n){let r=n?.getCollector();if(!r?.completed)return;let i=0;r.visitData(e=>{i=Math.max(i,Number(e[vW])||0)});let a=(e.labelFont?t.fontManager.getFont(e.labelFont,e.labelFontStyle,e.labelFontWeight):t.fontManager.getDefaultFont()).metrics;if(!a)return;let o=(a.capHeight+a.descent)/a.common.base*e.labelFontSize,s=e.labelAngle*Math.PI/180,c=Math.abs(Math.sin(s)),l=Math.abs(Math.cos(s)),u=wW(e.orient)==`x`?i*c+o*l:i*l+o*c;return Math.ceil(u)}function jW(e,t){let n=t.orient,r=e==`nominal`||e==`ordinal`,i=`center`,a=`middle`,o=t.labelAngle??((n==`top`||n==`bottom`)&&r?-90:0);switch(n){case`left`:i=`right`;break;case`right`:i=`left`;break;case`top`:case`bottom`:Math.abs(o)>30?(i=o>0==(n==`bottom`)?`left`:`right`,a=`middle`):a=n==`top`?`alphabetic`:`top`;break;default:}return{labelAlign:i,labelAngle:o,labelBaseline:a}}function MW(e,t){let n=e,r=wW(n.orient),i=xW(r),a=n.orient==`bottom`||n.orient==`right`?1:-1,o=n.orient==`bottom`||n.orient==`left`?1:0,s=()=>({field:`value`,type:t}),c=()=>({name:`domain`,data:{values:[{}]},mark:{type:`rule`,clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:o,size:n.domainWidth}}),l=()=>({name:hW,transform:[{type:`measureText`,field:`label`,as:vW,fontSize:n.labelFontSize,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight}],mark:{type:`text`,clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight,[i+`Offset`]:(n.tickSize+n.labelPadding)*a,[i]:o,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:s(),text:{field:`label`}}}),u=()=>({name:`ticks`,mark:{type:`rule`,clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+`2`]:{value:{expr:`${o} - ${n.tickSize} / ${_W} * ${o?1:-1}`}}}}),d=()=>({name:`title`,data:{values:[{}]},mark:{type:`text`,clip:!1,align:`center`,baseline:n.orient==`bottom`?`bottom`:`top`,angle:[0,90,0,-90][[`top`,`right`,`bottom`,`left`].indexOf(n.orient)],text:n.title,color:n.titleColor,[r]:.5,[i]:1-o}}),f=()=>{let e={name:gW,encoding:{[r]:s()},layer:[]};return n.ticks&&e.layer.push(u()),n.labels&&e.layer.push(l()),e},p={resolve:{scale:{[r]:`forced`}},domainInert:!0,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},layer:[]};return n.domain&&p.layer.push(c()),(n.ticks||n.labels)&&p.layer.push(f()),n.title&&p.layer.push(d()),p}function NW(e,t){let n=e,r=wW(n.orient),i=xW(r),a=n.orient==`bottom`||n.orient==`left`?1:0,o=()=>({name:`chromosome_ticks`,mark:{type:`rule`,strokeDash:e.chromTickDash,strokeDashOffset:e.chromTickDashOffset,[i]:a,[i+`2`]:{expr:`${a} - ${n.chromTickSize} / ${_W} * ${a?1:-1}`},color:e.chromTickColor,size:n.chromTickWidth}}),s=()=>{let i;switch(n.orient){case`top`:i={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`bottom`:i={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`left`:i={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case`right`:i={x:0,angle:90,align:`right`,paddingY:4,dy:-n.chromLabelPadding};break;default:i={}}return{name:`chromosome_labels`,mark:{type:`text`,size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:e.chromLabelAlign,baseline:`alphabetic`,clip:!1,...i},encoding:{[r+`2`]:{field:`continuousEnd`,type:t},text:{field:`name`}}}},c;switch(n.orient){case`bottom`:case`top`:c={};break;case`left`:c={labelAngle:-90,labelAlign:`center`,labelPadding:6};break;case`right`:c={labelAngle:90,labelAlign:`center`,labelPadding:6};break;default:c={}}let l=MW({...e,...c},t);if(e.chromTicks||e.chromLabels){let i={name:mW,data:{lazy:{type:`axisGenome`,channel:wW(n.orient)}},encoding:{[r]:{field:`continuousStart`,type:t,band:0}},layer:[]};if(e.chromTicks&&i.layer.push(o()),e.chromLabels){i.layer.push(s());let e;l.layer.filter(e=>e.name==gW).forEach(t=>t.layer.filter(e=>e.name==hW).forEach(t=>{e=t.mark})),e&&(n.orient==`top`||n.orient==`bottom`?(e.viewportEdgeFadeWidthLeft=30,e.viewportEdgeFadeDistanceLeft=40):(e.viewportEdgeFadeWidthBottom=30,e.viewportEdgeFadeDistanceBottom=40))}l.layer.push(i)}return l}function PW(e,t,n){e.handleInteraction(t,!0),!t.stopped&&(n(),!t.stopped&&e.handleInteraction(t,!1))}function FW(e,t,n,r){return t()?(n(),e.stopped||r?.(),!0):!1}var IW=class{#e;#t=0;#n=0;constructor(e){this.#e=Array(e)}push(e){this.#e[this.#t]=e,this.#t=(this.#t+1)%this.size,this.#n=Math.min(this.#n+1,this.size)}get(){let e=this.#e;return this.#n<this.size?e.slice(0,this.#n):e.slice(this.#t,this.size).concat(e.slice(0,this.#t))}get size(){return this.#e.length}get length(){return this.#n}};function LW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`touchgesture`&&(t.phase===`move`||t.phase===`end`)&&(t.pointerCount===1||t.pointerCount===2)&&Number.isFinite(t.xDelta)&&Number.isFinite(t.yDelta)&&Number.isFinite(t.zDelta)}function RW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`wheel`&&Number.isFinite(t.deltaX)&&Number.isFinite(t.deltaY)&&Number.isFinite(t.deltaMode)&&typeof t.preventDefault==`function`}function zW(e,t,n){return new Proxy(e,{get(e,r){if(r===`deltaX`)return t;if(r===`deltaY`)return n;let i=Reflect.get(e,r,e);return typeof i==`function`?i.bind(e):i}})}function BW(e){let t=e=>e===null||typeof e!=`object`&&typeof e!=`function`;return new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,e);if(!t(i))throw Error(`Access to non-primitive property "${String(n)}" is not allowed.`);return i},getPrototypeOf(){return null},ownKeys(e){return Reflect.ownKeys(e).filter(n=>t(e[n])).map(e=>typeof e==`symbol`?e:String(e))},getOwnPropertyDescriptor(e,n){let r=Reflect.getOwnPropertyDescriptor(e,n);if(r&&!(`get`in r||`set`in r)&&t(r.value))return{value:r.value,writable:!!r.writable,enumerable:!!r.enumerable,configurable:!!r.configurable}},has(e,n){return n in e?t(e[n]):!1}})}var VW=class e{static fromMouseEvent(t){return new e(t.clientX,t.clientY)}constructor(e,t){this.x=e,this.y=t}subtract(t){return new e(this.x-t.x,this.y-t.y)}add(t){return new e(this.x-t.x,this.y-t.y)}multiply(t){return new e(this.x*t,this.y*t)}get length(){return Math.sqrt(this.x**2+this.y**2)}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}},HW=0,UW=new WeakMap,WW=$W(),GW=6;function KW(){HW=performance.now()}function qW(){return performance.now()-HW<50}function JW(e){return function(...t){return KW(),e(...t)}}function YW(e,t,n,r,i){n=JW(n);let a=eG(i);if(e.type==`wheel`){let i=e.wheelEvent,o=i.deltaMode?120:1;if(!i.deltaX&&!i.deltaY)return;a.smoother?.stop();let{x:s,y:c}=e.point;if(r){let n=XW(e.point,t,r);if(n)n.x!==void 0&&(s=n.x),n.y!==void 0&&(c=n.y);else{let e=r.mark.encoders;e.x&&!e.x2&&!e.x.constant&&(s=ZW(e.x,r.datum)*t.width+t.x),e.y&&!e.y2&&!e.y.constant&&(c=(1-ZW(e.y,r.datum))*t.height+t.y)}}(Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:c,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300})===!0:n({x:s,y:c,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})===!0)&&i.preventDefault()}else if(e.type==`mousedown`&&e.mouseEvent.button===0){a.smoother&&a.smoother.stop();let t=new IW(30),r=e.mouseEvent;r.preventDefault(),e.target?.context.suspendHoverTracking();let o=VW.fromMouseEvent(r),s=e=>{let r=VW.fromMouseEvent(e);t.push({point:r,timestamp:performance.now()});let i=r.subtract(o);n({x:o.x,y:o.y,xDelta:i.x,yDelta:i.y,zDelta:0}),o=r},c=r=>{document.removeEventListener(`mousemove`,s),document.removeEventListener(`mouseup`,c),e.target?.context.resumeHoverTracking(r),nG(a,t,o,n,i,{minSampleCount:5})};document.addEventListener(`mouseup`,c,!1),document.addEventListener(`mousemove`,s,!1)}else if(e.type==`touchgesture`){if(!LW(e.uiEvent))return;let t=e.uiEvent,{xDelta:r,yDelta:o,zDelta:s}=t;if(t.phase===`end`){t.pointerCount===1&&nG(a,a.touchPanEventBuffer,a.touchPanLastPoint,n,i,{minSampleCount:2,minVelocityPxPerMs:.03}),tG(a);return}a.touchPanPointerCount!==t.pointerCount&&(tG(a),a.touchPanPointerCount=t.pointerCount);let c=new VW(e.point.x+r,e.point.y+o);if(a.touchPanLastPoint=c,t.pointerCount===1&&(r!==0||o!==0)&&a.touchPanEventBuffer.push({point:c,timestamp:performance.now()}),r===0&&o===0&&s===0)return;a.smoother?.stop(),n({x:e.point.x,y:e.point.y,xDelta:r,yDelta:o,zDelta:s})}}function XW(e,t,n){if(n.mark.getType()!==`link`)return;let r=n.mark.encoders;if(!(r.x&&r.y&&r.x2&&r.y2))return;let i=!r.x.constant&&!r.x2.constant,a=!r.y.constant&&!r.y2.constant;if(!i&&!a)return;let o=ZW(r.x,n.datum)*t.width+t.x,s=(1-ZW(r.y,n.datum))*t.height+t.y,c=ZW(r.x2,n.datum)*t.width+t.x,l=(1-ZW(r.y2,n.datum))*t.height+t.y,u=0,d=0;i&&(u+=(e.x-o)**2,d+=(e.x-c)**2),a&&(u+=(e.y-s)**2,d+=(e.y-l)**2);let f=r.size?+r.size(n.datum):0,p=Number.isFinite(f)?Math.max(f,GW):GW,m=p*p;if(!(Math.min(u,d)>m))return u<=d?{x:i?o:void 0,y:a?s:void 0}:{x:i?c:void 0,y:a?l:void 0}}function ZW(e,t){let n=+e(t),r=e.scale;if(!r)return n;let i=QW(e.channelDef);if(r.type===`band`||r.type===`point`)return Number.isFinite(i)?n+r.bandwidth()*i:n;if(r.type===`index`||r.type===`locus`){if(!Number.isFinite(i))return n;let e=r;return n+e.step()*(i-e.align())}else return n}function QW(e){return e&&`band`in e?e.band??.5:.5}function $W(){return{smoother:void 0,touchPanEventBuffer:new IW(30),touchPanLastPoint:void 0,touchPanPointerCount:0}}function eG(e){if(!e)return WW;let t=UW.get(e);return t||(t=$W(),UW.set(e,t)),t}function tG(e){e.touchPanEventBuffer=new IW(30),e.touchPanLastPoint=void 0,e.touchPanPointerCount=0}function nG(e,t,n,r,i,a={}){if(!i||!n)return;let o=a.minSampleCount??5,s=a.minVelocityPxPerMs??0,c=performance.now(),l=t.get().filter(e=>c-e.timestamp<160);if(l.length<o||l.length>=5&&rG(l))return;let u=l.at(-1),d=l[0],f=u.point.subtract(d.point).multiply(1/(u.timestamp-d.timestamp));if(!Number.isFinite(f.x)||!Number.isFinite(f.y)||f.length<s)return;let p=n.x,m=n.y;e.smoother=AH(i,e=>{r({x:e.x,y:e.y,xDelta:p-e.x,yDelta:m-e.y,zDelta:0}),p=e.x,m=e.y},150,.5,{x:p,y:m}),e.smoother({x:n.x-f.x*250,y:n.y-f.y*250})}function rG(e){let t=e[Math.floor(e.length/2)],n=t.point.subtract(e[0].point).multiply(t.timestamp-e[0].timestamp),r=e.at(-1).point.subtract(t.point).multiply(e.at(-1).timestamp-t.timestamp),i=n.length;return r.length/i<.4}var iG=class extends oW{constructor(e,t,n,r,i,a){super(cG(e,t),n,r,i,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=e,EU(this,{skipSubtree:!0}),DU(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}};function aG(e,t){let n=e,r=wW(n.orient);return{name:`grid_lines`,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},mark:{type:`rule`,strokeDash:n.gridDash,strokeCap:n.gridCap,color:n.gridColor,size:n.gridWidth,opacity:n.gridOpacity,minBufferSize:300},encoding:{[r]:{field:`value`,type:t}}}}function oG(e,t){let n=e,r=wW(n.orient);return{name:`chromosome_lines`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rule`,strokeDash:n.chromGridDash,strokeCap:n.chromGridCap,color:n.chromGridColor,size:n.chromGridWidth,opacity:n.chromGridOpacity},encoding:{[r]:{field:`continuousStart`,type:t,band:0}}}}function sG(e,t){let n=e,r=wW(n.orient);return{name:`chromosome_fill`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rect`},encoding:{[r]:{field:`continuousStart`,type:t,band:0},[r+`2`]:{field:`continuousEnd`,band:0},fill:{field:`odd`,type:`nominal`,scale:{domain:[!1,!0],range:[n.chromGridFillEven??`white`,n.chromGridFillOdd??`white`]}},opacity:{field:`odd`,type:`nominal`,scale:{type:`ordinal`,domain:[!1,!0],range:[n.chromGridFillEven?1:0,n.chromGridFillOdd?1:0]}}}}}function cG(e,t){let n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(sG(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(oG(n,t)),n.grid&&n.gridOpacity>0&&r.push(aG(n,t)),{name:`grid_layers`,resolve:{scale:{[wW(e.orient)]:`forced`,fill:`independent`,opacity:`independent`}},domainInert:!0,layer:r}}function lG(e){return fP(e.map(e=>e.title))}function uG(e,t){let n=pP(t);return n.length==0?{}:fP(e.flatMap(e=>n.map(t=>e.style?.[t])))}var dG={start:0,middle:.5,end:1},fG={start:`left`,middle:`center`,end:`right`},pG=`group-title`;function mG(e){let t={},n={x:0,y:0},r=dG[e.anchor??`middle`];switch(e.orient){case`top`:n={x:r,y:1},t={baseline:`alphabetic`,angle:0};break;case`right`:n={x:1,y:1-r},t={baseline:`alphabetic`,angle:90};break;case`bottom`:n={x:r,y:0},t={baseline:`top`,angle:0};break;case`left`:n={x:0,y:r},t={baseline:`alphabetic`,angle:-90};break;default:}return{orientConfig:t,xy:n}}function hG(e,t=[]){if(!e)return;let n=P(e)?{text:e}:e;if(!n.text||n.orient==`none`)return;let r=lG(t),i=uG(t,n.style??pG),{orientConfig:a}=mG({...r,...i,...n});return{...r,...a,...i,...n}}function gG(e,t=[]){let n=hG(e,t);if(!n)return;let{xy:r}=mG(n),i={xOffset:0,yOffset:0};switch(n.orient){case`top`:i.yOffset=-n.offset;break;case`right`:i.xOffset=n.offset;break;case`bottom`:i.yOffset=n.offset;break;case`left`:i.xOffset=-n.offset;break;default:}return{data:{values:[{}]},mark:{type:`text`,tooltip:null,clip:!1,...r,...i,text:n.text,align:n.align??fG[n.anchor],angle:n.angle,baseline:n.baseline,dx:n.dx,dy:n.dy,color:n.color,font:n.font,size:n.fontSize,fontStyle:n.fontStyle,fontWeight:n.fontWeight}}}var _G=class extends LB{#e;#t=lW.ZERO;#n=lW.ZERO;#r=lW.ZERO;viewportOffset=0;#i;constructor(e,t,n={}){super({params:[{name:`scrollbarOpacity`,value:1}],opacity:{expr:`scrollbarOpacity`},data:{values:[{}]},mark:{type:`rect`,fill:`#b0b0b0`,fillOpacity:.6,stroke:`white`,strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1}},e.layoutParent.context,e.layoutParent,e.view,`scrollbar-`+t,{blockEncodingInheritance:!0}),EU(this,{skipSubtree:!0}),DU(this,{skipSubtree:!0}),this.config={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20},this.#e=t,this.#i=n.onViewportOffsetChange;let r=this.config.scrollbarPadding,i=this.config.scrollbarSize;this.#t=this.#e==`vertical`?new lW(()=>this.#n.x+this.#n.width-i-r,()=>this.#n.y+r+this.scrollOffset,()=>i,()=>this.#s()):new lW(()=>this.#n.x+r+this.scrollOffset,()=>this.#n.y+this.#n.height-i-r,()=>this.#s(),()=>i),this.#f(this.viewportOffset),this.addInteractionListener(`mousedown`,e=>{if(e.stopPropagation(),this.#c()<=0)return;let n=e=>t==`vertical`?e.clientY:e.clientX;e.mouseEvent.preventDefault(),this.context.suspendHoverTracking();let r=this.scrollOffset,i=n(e.mouseEvent),a=e=>{let t=this.#c();if(t<=0)return;let a=RN(n(e)-i+r,0,t);this.interpolateViewportOffset({x:this.#u(a)})},o=e=>{document.removeEventListener(`mousemove`,a),document.removeEventListener(`mouseup`,o),this.context.resumeHoverTracking(e)};document.addEventListener(`mouseup`,o,!1),document.addEventListener(`mousemove`,a,!1)})}get scrollOffset(){return this.#l(this.viewportOffset)}setViewportOffset(e,{notify:t=!0,syncSmoother:n=!1}={}){this.viewportOffset=RN(e,0,this.#d()),n&&this.#f(this.viewportOffset),t&&this.#i&&this.#i(this.viewportOffset)}#a(){let e=this.#e==`horizontal`?`width`:`height`,t=this.#n[e],n=this.#r[e];return n>0?Math.min(1,t/n):1}#o(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#n[e]-2*this.config.scrollbarPadding)}#s(){let e=this.#o(),t=this.#a()*e,n=this.config.scrollbarMinLength;return Math.min(e,Math.max(n,t))}#c(){return Math.max(0,this.#o()-this.#s())}#l(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/t*n}#u(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/n*t}#d(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#r[e]-this.#n[e])}render(e,t,n){super.render(e,this.#t,n)}updateScrollbar(e,t){this.#n=e.flatten(),this.#r=t,this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}#f(e){this.interpolateViewportOffset=AH(this.context.animator,e=>{this.setViewportOffset(e.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}},vG=`intervalDragActive`,yG=class extends oW{constructor(e,t,n={}){let r=t(),i=Object.keys(r.intervals),{zindex:a=1,...o}=n;if(Rh.every(e=>!i.includes(e)))throw Error(`SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.`);let s={name:`selectionRect`,domainInert:!0,params:[{name:vG,value:!1}],resolve:{scale:{x:`forced`,y:`forced`}},data:{values:bG(t())},encoding:{},layer:[]};i.includes(`x`)&&(s.encoding.x={field:`_x`,type:null,title:null},s.encoding.x2={field:`_x2`}),i.includes(`y`)&&(s.encoding.y={field:`_y`,type:null,title:null},s.encoding.y2={field:`_y2`}),s.layer.push({name:`selectionRectRect`,mark:{type:`rect`,clip:!0,fill:`#808080`,fillOpacity:.05,stroke:`black`,strokeWidth:1,strokeOpacity:.2,cursor:o.cursor??{expr:`intervalDragActive ? 'grabbing' : 'move'`},...o}});let c=t=>{let n=e.view.getScaleResolution(t);return`format(datum._${t}2 - datum._${t}, '.3s')`+(n.type===`locus`?` + 'b'`:``)},l=n.measure==`inside`?9:n.measure==`outside`?-9:0;i.includes(`x`)&&l!=0&&s.layer.push({name:`selectionRectTextX`,mark:{type:`text`,align:`center`,paddingX:5,dy:l,tooltip:null},encoding:{text:{expr:c(`x`)},y:i.includes(`y`)?{field:`_y2`,type:null,title:null}:{value:1},y2:null}}),i.includes(`y`)&&l!=0&&s.layer.push({name:`selectionRectTextY`,mark:{type:`text`,align:`center`,paddingY:5,dy:l,tooltip:null,angle:-90},encoding:{text:{expr:c(`y`)},x2:null}}),super(s,e.layoutParent.context,e.layoutParent,e.view,`selectionRect`,{blockEncodingInheritance:!0}),this._zindex=a,EU(this,{skipSubtree:!0}),DU(this,{skipSubtree:!0}),this.registerDisposer(t.subscribe(()=>{let e=t(),n=this.flowHandle?.dataSource;if(!n)throw Error(`Cannot find selection rect data source handle!`);n.updateDynamicData(bG(e))}))}getZindex(){return this._zindex}};function bG(e){let t=e.intervals.x,n=e.intervals.y;return!t&&!n?[]:[{_x:t?.[0],_x2:t?.[1],_y:n?.[0],_y2:n?.[1]}]}function xG(e,t){let n=[`cell`,...pP(t?.style)];return fP(e.flatMap(e=>[e.view,...n.map(t=>e.style?.[t])]).concat([t]))}var SG=class{constructor(e,t,n){if(this.layoutParent=t,this.view=e,this.serial=n,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.backgroundZindex=0,this.backgroundStrokeZindex=void 0,this.titleZindex=1,this.coords=lW.ZERO,e.needsAxes.x||e.needsAxes.y){let r=e.spec,i=xG(e.getConfigScopes(),`view`in r?r.view:void 0);this.backgroundZindex=i?.zindex??0,this.backgroundStrokeZindex=i?.strokeZindex;let a=TG(i);a&&(this.background=new LB(a,t.context,t,e,`background`+n,{blockEncodingInheritance:!0}),EU(this.background,{skipSubtree:!0}),DU(this.background,{skipSubtree:!0}));let o=EG(i);o&&(this.backgroundStroke=new LB(o,t.context,t,e,`backgroundStroke`+n,{blockEncodingInheritance:!0}),EU(this.backgroundStroke,{skipSubtree:!0}),DU(this.backgroundStroke,{skipSubtree:!0}));let s=hG(e.spec.title,e.getConfigScopes());this.titleZindex=s?.zindex??1;let c=gG(s);c&&(this.title=new LB(c,t.context,t,e,`title`+n,{blockEncodingInheritance:!0}),EU(this.title,{skipSubtree:!0}),DU(this.title,{skipSubtree:!0}))}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new _G(this,`horizontal`)),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new _G(this,`vertical`)),this.#e()}#e(){let e=this.view;for(let[t,n]of e.paramRuntime.paramConfigs){if(!(`select`in n))continue;let r=sg(n.select);if(!lg(r))continue;let i=r.encodings,a=Object.fromEntries(i.map(e=>{let n=this.view.getScaleResolution(e),r=n?.getResolvedScaleType();if(!n||!r||!vm(r))throw Error(`No continuous scale found for interval selection param "${t}" on channel "${e}"! Scale type is "${r??`none`}".`);return[e,n]})),o=i.some(e=>a[e].isZoomable()),s=r.on??(o?{type:`mousedown`,filter:`event.shiftKey`}:{type:`mousedown`});if(s.type!==`mousedown`)throw Error(`Interval selection param "${t}" currently supports only "mousedown" in "on".`);let c=s.filter?XL(s.filter):()=>!0,l=CG(r.zoom,o,t),u=l?.filter?XL(l.filter):()=>!0;if(this.selectionRect)throw Error(`Only one interval selection per container is currently allowed!`);let d=!1,f=!1,p=!1,m=null,h=(e,t)=>Object.fromEntries(i.map(n=>[n,[Math.min(e[n],t[n]),Math.max(e[n],t[n])]])),g=e.paramRuntime.createExpression(t),_=n=>{e.paramRuntime.setValue(t,n)};n.value&&_({type:`interval`,intervals:n.value});let v=()=>{_(tg(i))};this.selectionRect=new yG(this,g,r.mark);let y=e=>{this.selectionRect.paramRuntime.setValue(vG,e)};this.selectionRect.initializeChildren();let b=t=>{let n={x:0,y:0},r=e.coords.normalizePoint(t.x,t.y,!0);for(let e of i){let t=a[e].getScale();n[e]=t.invert(e==`x`?r.x:r.y)+([`index`,`locus`].includes(t.type)?.5:0)}return n},x=t=>{let{intervals:n}=t,r=(t,n,r)=>{let i=(e,t)=>t==null?null:a[e].getScale()(t),o=i(`x`,t)??r,s=i(`y`,n)??r;return e.coords.denormalizePoint(o,s,!0)},i=r(n.x?.[0],n.y?.[0],0),o=r(n.x?.[1],n.y?.[1],1);return lW.create(i.x,i.y,o.x-i.x,o.y-i.y)};e.addInteractionListener(`mousedown`,t=>{if(t.mouseEvent.button!=0)return;if(m=d?x(g()):null,m)y(!0),f=!0;else{let n=t.point;if(ug(g())&&(f=!0),c(t.proxiedMouseEvent))v(),p=!0;else if(ug(g())){let t=r=>{e.removeInteractionListener(`mouseup`,t);let i=r.point;n.subtract(i).length<2&&v()};e.addInteractionListener(`mouseup`,t);return}else return}t.stopPropagation(),e.context.suspendHoverTracking();let n=t.point,r=VW.fromMouseEvent(t.mouseEvent).subtract(n),o=e=>{let t=VW.fromMouseEvent(e).subtract(r),o;if(m){let e=t.subtract(n),r=m.translate(e.x,e.y);o=h(b(new VW(r.x,r.y)),b(new VW(r.x2,r.y2)))}else o=h(b(n),b(t));for(let e of i){let t=a[e],{zoomExtent:n}=t,r=o[e];if(m){let e=r[1]-r[0],t=n[0],i=n[1];r[0]<t&&(r[0]=t,r[1]=t+e),r[1]>i&&(r[1]=i,r[0]=i-e)}let i=wG(t,r);i?(r[0]=i[0],r[1]=i[1]):(r[0]=n[0],r[1]=n[0])}_({type:`interval`,intervals:o})},s=t=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s),y(!1),p=!1,m&&=null,e.context.resumeHoverTracking(t)};document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s)}),e.addInteractionListener(`click`,e=>{e.mouseEvent.button==0&&(f&&=(e.stopPropagation(),!1))},!0);let S=e=>dg(g(),b(e));e.addInteractionListener(`dblclick`,e=>{S(e.point)&&(v(),e.stopPropagation())},!0),e.addInteractionListener(`wheel`,e=>{let t=e.wheelEvent;if(!l||!u(BW(t))||Math.abs(t.deltaX)>=Math.abs(t.deltaY)||!S(e.point))return;let n=g();if(!ug(n))return;let r=t.deltaMode?120:1,o=2**(t.deltaY*r/300),s=b(e.point),c={...n.intervals},d=!1;for(let e of i){let t=c[e];if(!t||t.length!==2)continue;let n=a[e],r=wG(n,fB(n.getScale(),[...t],s[e],o,{onUnsupported:`identity`}));r&&(r[0]!==t[0]||r[1]!==t[1])&&(c[e]=r,d=!0)}d&&(_({...n,type:`interval`,intervals:c}),t.preventDefault(),e.stopPropagation())}),e.addInteractionListener(`mousemove`,e=>{S(e.point)?p||(d=!0):d=!1})}}*getChildren(){this.background&&(yield this.background),this.backgroundStroke&&(yield this.backgroundStroke),this.title&&(yield this.title),yield*Object.values(this.axes),yield*Object.values(this.gridLines),yield this.view,yield*Object.values(this.scrollbars),this.selectionRect&&(yield this.selectionRect)}async createAxes(){this.disposeAxisViews();let{view:e,axes:t,gridLines:n}=this,r=(e,n)=>{let r=e.getAxisProps();if(r===null)return;let i=r?{...r}:{};if(!i.orient){for(let e of SW[n])if(!t[e]){i.orient=e;break}if(!i.orient)throw Error(`No slots available for an axis! Perhaps a LayerView has more than two children?`)}if(i.title??=e.getTitle(),!SW[n].includes(i.orient))throw Error(`Invalid axis orientation "${i.orient}" on channel "${n}"!`);return i},i=async(e,n,i)=>{let a=r(e,n);if(a){if(t[a.orient])throw Error(`An axis with the orient "${a.orient}" already exists!`);let n=new TW(a,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);t[a.orient]=n,await n.initializeChildren()}},a=async(e,t,i)=>{let a=r(e,t);if(!a)return;let o={...pW(i.getConfigScopes(),{channel:t,orient:a.orient,type:e.scaleResolution.type,style:a.style}),...a};if(o.grid||o.chromGrid){let t=new iG(o,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);n[a.orient]=t,await t.initializeChildren()}};for(let t of[`x`,`y`])if(e.needsAxes[t]){let n=e.resolutions.axis[t];if(!n)continue;await i(n,t,e)}for(let t of[`x`,`y`])if(e.needsAxes[t]&&e.getConfiguredOrDefaultResolution(t,`axis`)!=`excluded`){let n=e.getAxisResolution(t);if(!n)continue;await a(n,t,e)}if(e instanceof oW){for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&r.orient&&await i(n,e,t)}for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&!r.orient&&await i(n,e,t)}}[...Object.values(t),...Object.values(n)].forEach(e=>e.visit(e=>{e instanceof LB&&e.resolve(`scale`)}))}disposeAxisViews(){for(let e of Object.values(this.axes))e.disposeSubtree();for(let e of Object.values(this.gridLines))e.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){let e=e=>{let t=this.axes[e];return t?Math.max(t.getPerpendicularSize()+(t.axisProps.offset??0),0):0};return new pF(e(`top`),e(`right`),e(`bottom`),e(`left`)).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}};function CG(e,t,n){let r=e===void 0?!t:e;if(r===!1)return;if(r===!0)return{type:`wheel`};let i=fg(r);if(i.type!==`wheel`)throw Error(`Interval selection param "${n}" currently supports only "wheel" in "zoom".`);return i}function wG(e,t){let n=e.getScale();return zz(t,e.zoomExtent,{roundToIntegers:n.type===`index`||n.type===`locus`})}function TG(e){if(e?.fill||e?.fillOpacity||e?.shadowOpacity)return{data:{values:[{}]},mark:{color:e.fill,opacity:e.fillOpacity??(e.fill?1:0),type:`rect`,clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:e.shadowBlur,shadowColor:e.shadowColor,shadowOffsetX:e.shadowOffsetX,shadowOffsetY:e.shadowOffsetY,shadowOpacity:e.shadowOpacity}}}function EG(e){if(!(!e||!e.stroke||e.strokeWidth===0||e.strokeOpacity===0))return{resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},data:{values:[{x:0,y:0,x2:1,y2:0},{x:1,y:0,x2:1,y2:1},{x:1,y:1,x2:0,y2:1},{x:0,y:1,x2:0,y2:0}]},mark:{size:e.strokeWidth??1,color:e.stroke??`lightgray`,strokeCap:`square`,opacity:e.strokeOpacity??1,type:`rule`,clip:!1,tooltip:null},encoding:{x:{field:`x`,type:`quantitative`,scale:null},y:{field:`y`,type:`quantitative`,scale:null},x2:{field:`x2`},y2:{field:`y2`}}}}var DG={pan:{baseSpeed:1,maxExtraSpeed:3,pressHalfLifeMs:30,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:800,stopVelocity:.01},zoom:{baseSpeed:3,maxExtraSpeed:15,pressHalfLifeMs:10,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:600,stopVelocity:.01}},OG=class{#e;#t;#n;#r;#i;constructor(e=DG){this.#r=e.pan,this.#i=e.zoom,this.#e={KeyW:!1,KeyA:!1,KeyS:!1,KeyD:!1},this.#t={velocity:0,holdMs:0,direction:0},this.#n={velocity:0,holdMs:0,direction:0}}isNavigationKey(e){return e===`KeyW`||e===`KeyA`||e===`KeyS`||e===`KeyD`}handleKeyDown(e){return this.#a(e,!0)}handleKeyUp(e){return this.#a(e,!1)}reset(){this.#e.KeyW=!1,this.#e.KeyA=!1,this.#e.KeyS=!1,this.#e.KeyD=!1,this.#t.velocity=0,this.#t.holdMs=0,this.#t.direction=0,this.#n.velocity=0,this.#n.holdMs=0,this.#n.direction=0}step(e){if(e<=0)return{panDelta:0,zoomDelta:0,active:this.isActive()};{let t=kG(this.#e.KeyD,this.#e.KeyA),n=kG(this.#e.KeyW,this.#e.KeyS),r=AG(this.#t,t,e,this.#r),i=AG(this.#n,n,e,this.#i),a=e/1e3;return{panDelta:r*a,zoomDelta:i*a,active:this.isActive()}}}isActive(){return this.#e.KeyW||this.#e.KeyA||this.#e.KeyS||this.#e.KeyD?!0:this.#t.velocity!==0||this.#n.velocity!==0}#a(e,t){if(this.isNavigationKey(e)){let n=e;return this.#e[n]===t?!1:(this.#e[n]=t,!0)}else return!1}};function kG(e,t){return e===t?0:t?1:-1}function AG(e,t,n,r){if(t!==0){e.direction!==t&&(e.holdMs=0),e.holdMs+=n;let i=r.maxExtraSpeed*(1-2**(-e.holdMs/r.holdGrowthHalfLifeMs)),a=t*(r.baseSpeed+i);e.velocity=jG(e.velocity,a,n,r.pressHalfLifeMs)}else e.holdMs=0,e.velocity=jG(e.velocity,0,n,r.releaseHalfLifeMs),Math.abs(e.velocity)<r.stopVelocity&&(e.velocity=0);return e.direction=t,e.velocity}function jG(e,t,n,r){return t+(e-t)*2**(-n/r)}function MG(e){let t={x:new Set,y:new Set};return e.visit(e=>{for(let[n,r]of Object.entries(t)){let t=e.getScaleResolution(n);t&&t.isZoomable()&&r.add(t)}}),t}function NG(e){let t=MG(e).x;if(t.size===1){let n=t.values().next().value,r=e.getScaleResolution(`x`);return!r||r!==n?void 0:n}}var PG=class{#e;#t;#n=.5;#r=new OG;#i=!1;#a=0;#o=e=>{if(!this.#i)return;let t=NG(this.#t);if(!t){this.#r.reset(),this.#i=!1,this.#a=0;return}let n=Math.max(0,e-this.#a);this.#a=e;let r=this.#r.step(n);(r.panDelta!==0||r.zoomDelta!==0)&&t.zoom(2**r.zoomDelta,this.#n,r.panDelta)&&(KW(),this.#e.animator.requestRender()),r.active?this.#e.animator.requestTransition(this.#o):(this.#i=!1,this.#a=0)};constructor({context:e,viewRoot:t}){this.#e=e,this.#t=t,this.#s()}handlePointerEvent(e,t){if(e){let n=e.view;if(typeof n.getKeyboardZoomAnchorX==`function`){let e=n.getKeyboardZoomAnchorX(t.point);Number.isFinite(e)&&(this.#n=Math.max(0,Math.min(1,e)))}else this.#n=e.coords.normalizePoint(t.point.x,t.point.y).x}else return}#s(){let e=this.#e.addKeyboardListener;typeof e==`function`&&(e(`keydown`,e=>{FG(e)||this.#r.isNavigationKey(e.code)&&NG(this.#t)&&this.#r.handleKeyDown(e.code)&&(e.preventDefault(),this.#c())}),e(`keyup`,e=>{this.#r.isNavigationKey(e.code)&&this.#r.handleKeyUp(e.code)&&NG(this.#t)&&(e.preventDefault(),this.#c())}))}#c(){this.#i||(this.#i=!0,this.#a=performance.now(),this.#e.animator.requestTransition(this.#o))}};function FG(e){return!!(e.altKey||e.ctrlKey||e.metaKey||IG(e.target))}function IG(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.isContentEditable)return!0;if(typeof t.nodeName==`string`){let e=t.nodeName.toLowerCase();return e===`input`||e===`textarea`||e===`select`}return!1}var LG=Object.freeze({size:1,color:`#ccc`,opacity:1,strokeDash:[4,4],strokeCap:`butt`}),RG=class{#e;#t;#n;#r;#i=[];#a=[];#o={x:[0,0],y:[0,0]};constructor({direction:e,props:t,context:n,layoutParent:r,dataParent:i,getName:a}){this.#e=e,this.#t=t.includePlotMargin??!0,this.#r=t.zindex??0;let o={...t};delete o.includePlotMargin,delete o.zindex,this.#n=this.#l(o,n,r,i,a)}get view(){return this.#n}getZindex(){return this.#r}update(e,t,n,r,i,a){this.#s(e,t,r,i),this.#c(n,a)}render(e,t,n){this.#n.render(e,t,n)}#s(e,t,n,r){if(this.#a.length=0,t<2)return;let i=this.#e===`vertical`?`column`:`row`,a=r?3:2;for(let r=1;r<t;r++){let t=e[n(i,r)-a],o=t?t.location:0,s=t?t.size:0;this.#a.push(o+s/2)}}#c(e,t){let n=this.#t?0:t.left,r=this.#t?e.width:e.width-t.right,i=this.#t?0:t.bottom,a=this.#t?e.height:e.height-t.top;this.#i.length=this.#a.length;for(let t=0;t<this.#a.length;t++){let o=this.#a[t],s=this.#i[t]??{};if(this.#e===`vertical`)s.x=o,s.x2=o,s.y=i,s.y2=a;else{let t=e.height-o;s.x=n,s.x2=r,s.y=t,s.y2=t}this.#i[t]=s}let o=this.#n.flowHandle?.dataSource;if(!o)return;o.updateDynamicData(this.#i),this.#o.x[1]=e.width,this.#o.y[1]=e.height;let s=this.#n.getScaleResolution(`x`)?.getScale();s&&s.domain(this.#o.x);let c=this.#n.getScaleResolution(`y`)?.getScale();c&&c.domain(this.#o.y)}#l(e,t,n,r,i){let a=new LB(BG(e),t,n,r,this.#e===`horizontal`?i(`separatorHorizontal`):i(`separatorVertical`),{blockEncodingInheritance:!0});return EU(a,{skipSubtree:!0}),DU(a,{skipSubtree:!0}),a}};function zG(e){if(!e)return null;let t=e===!0?{...LG}:{...LG,...e};return t.strokeDash===LG.strokeDash&&(t.strokeDash=LG.strokeDash.slice()),t}function BG(e){return{domainInert:!0,data:{values:[]},resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},mark:{...e,type:`rule`,clip:e.clip??!1,tooltip:null},encoding:{x:{field:`x`,type:`quantitative`,scale:{nice:!1,zero:!1}},y:{field:`y`,type:`quantitative`,scale:{nice:!1,zero:!1}},x2:{field:`x2`},y2:{field:`y2`}}}}var VG=Object.freeze({background:0,separator:10,grid:20,backgroundStroke:30,axis:40,selectionRect:80,scrollbar:90,title:100}),HG=10,UG=class extends yU{#e=1/0;#t=10;#n=[];#r={};#i=0;#a={};#o=null;constructor(e,t,n,r,i,a,o){super(e,t,n,r,i,o),this.spec=e,this.#t=e.spacing??10,this.#e=a,this.#n=[],this.wrappingFacet=!1;let s=zG(e.separator);if(s)for(let t of YG(e))this.#a[t]=new RG({direction:t,props:s,context:this.context,layoutParent:this,dataParent:this,getName:e=>this.getNextAutoName(e)});this.layoutParent||(this.#o=new PG({context:this.context,viewRoot:this}))}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,this.#n.length)}insertChildViewAt(e,t){e.layoutParent??=this;let n=new SG(e,this,this.#i);return this.#i++,this.#n.splice(t,0,n),this.invalidateSizeCache(),n}removeChildView(e){let t=this.#n.findIndex(t=>t.view===e);if(t<0)throw Error(`Not my child view!`);this.removeChildAt(t)}removeChildAt(e){let t=this.#n[e];if(!t)throw Error(`Child index out of range!`);this.#l(t),this.#n.splice(e,1),this.invalidateSizeCache()}get#s(){return this.#n.filter(e=>e.view.isConfiguredVisible())}get#c(){return new sW(this.#s.length,this.#e??1/0)}setChildren(e){for(let e of this.#n)this.#l(e);this.#n=[];for(let t of e)this.appendChild(t);this.invalidateSizeCache()}#l(e){e.disposeAxisViews();for(let t of e.getChildren())t.disposeSubtree()}get children(){return this.#n.map(e=>e.view)}get childCount(){return this.#n.length}async createAxes(){await this.syncSharedAxes(),await Promise.all(this.#n.map(e=>e.createAxes()))}async syncSharedAxes(){for(let e of Object.values(this.#r))e.disposeSubtree();this.#r={};let e=[];for(let t of Rh){let n=this.resolutions.axis[t];if(!n)continue;let r=n.getAxisProps();if(!r)continue;let i=new TW({title:n.getTitle(),orient:SW[t][0],...r},n.scaleResolution.type,this.context,this,this);e.push(i.initializeChildren()),this.#r[t]=i}await Promise.all(e)}*[Symbol.iterator](){for(let e of this.#n)yield*e.getChildren();for(let e of Object.values(this.#a))yield e.view;for(let e of Object.values(this.#r))yield e}#u(e){let t=e==`column`?`width`:`height`,n=(t,n)=>t.map(t=>{let r=this.#s[t].getOverhangAndPadding();return e==`column`?n?r.right:r.left:n?r.bottom:r.top}).reduce((e,t)=>Math.max(e,t),0);return this._cache(`size/directionSizes/${e}`,()=>this.#c[e==`column`?`colIndices`:`rowIndices`].map(e=>({axisBefore:n(e,0),axisAfter:n(e,1),view:aF(e.map(e=>this.#s[e].view.getViewportSize()[t]))})))}#d(e){let t=this.#u(e),n=[];n.push(sF);for(let[e,r]of t.entries())e>0&&n.push({px:this.#t,grow:0}),(e==0||this.wrappingFacet)&&n.push(sF),n.push({px:r.axisBefore,grow:0}),n.push(r.view),n.push({px:r.axisAfter,grow:0}),(e==t.length-1||this.wrappingFacet)&&n.push(sF);return n}#f(e){let t=0,n=0,r=e==`row`?this.spec.height:this.spec.width;if(r||r===0)return fF(r);let i=this.#u(e);for(let[e,r]of i.entries())e>0&&(n+=this.#t),(e==0||this.wrappingFacet)&&(n+=0),n+=r.axisBefore,n+=r.view.px??0,t+=r.view.grow??0,n+=r.axisAfter,(e==i.length-1||this.wrappingFacet)&&(n+=0);return{px:n,grow:t}}#p(e,t){return e==`row`&&this.wrappingFacet?1+6*t+2:2+4*t+1}getOverhang(){return this.#m().union(this.#h())}#m(){let e=this.#u(`column`),t=this.#u(`row`);return!e.length||!t.length?pF.zero():new pF(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#h(){let e=e=>{let t=CW[e],n=this.#r[t];return n?.axisProps.orient===e?Math.max(n.getPerpendicularSize()+(n.axisProps.offset??0),0):0};return new pF(e(`top`),e(`right`),e(`bottom`),e(`left`))}getSize(){return this._cache(`size`,()=>new oF(this.#f(`column`),this.#f(`row`)).addPadding(this.#h()))}render(e,t,n={}){if(super.render(e,t,n),!this.isConfiguredVisible())return;this.layoutParent||(t=t.shrink(this.getPadding())),t=t.shrink(this.#h()),e.pushView(this,t);let r=e.getDevicePixelRatio(),i={devicePixelRatio:r},a=iF(this.#d(`column`),t.width,i),o=iF(this.#d(`row`),t.height,i),s=new sW(this.#s.length,this.#e??1/0),c=e=>Math.round(e*r)/r,l=[];for(let[e,r]of this.#s.entries()){let{view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h}=r,[g,_]=s.getCellCoords(e),v=a[this.#p(`column`,g)],y=o[this.#p(`row`,_)],b=i.getViewportSize(),x=i.getSize(),S=i.getOverhang(),C=v.location-S.left,w=y.location-S.top,T=(e,t)=>(e[t].grow?(t==`width`?v:y).size:e[t].px)+S[t],E=T(b,`width`),D=T(b,`height`),ee=T(x,`width`),te=T(x,`height`),ne=r.scrollbars.horizontal,re=r.scrollbars.vertical,ie=ne?()=>c(ne.viewportOffset):()=>0,ae=re?()=>c(re.viewportOffset):()=>0,oe=new lW(()=>t.x+C,()=>t.y+w,()=>E,()=>D),se=i.isScrollable(),ce=se?new lW(()=>t.x+C-ie(),()=>t.y+w-ae(),()=>ee,()=>te):oe;r.coords=oe;let le=n.clipRect?oe.intersect(n.clipRect):oe;l.push({col:g,row:_,view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h,viewportCoords:oe,viewCoords:ce,clippedChildCoords:le,viewWidth:ee,viewHeight:te,scrollable:se,gridChild:r})}let u=this.#m(),d=[],f=[],p=[],m=0,h=(e,t,n)=>{(e>0?f:d).push({zindex:e,order:t,sequence:m++,render:n})},g=e=>{e.sort((e,t)=>e.zindex-t.zindex||e.order-t.order||e.sequence-t.sequence);for(let t of e)t.render()};for(let t of l)t.background&&h(t.gridChild.backgroundZindex,VG.background,()=>t.background?.render(e,t.clippedChildCoords,{...n,clipRect:void 0}));let _=this.#a.vertical;_&&(_.update(a,s.nCols,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(_.getZindex(),VG.separator,()=>_.render(e,t,n)));let v=this.#a.horizontal;v&&(v.update(o,s.nRows,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(v.getZindex(),VG.separator,()=>v.render(e,t,n)));for(let r of l){let{view:i,axes:a,gridLines:o,backgroundStroke:c,title:l,selectionRect:u,viewportCoords:d,viewCoords:f,clippedChildCoords:m,viewWidth:g,viewHeight:_,scrollable:v,gridChild:y,col:b,row:x}=r,S=KG(i)||v;for(let t of Object.values(o))h(t.axisProps.zindex??0,VG.grid,()=>t.render(e,d,n));p.push(()=>i.render(e,f,S?{...n,clipRect:m}:n)),c&&h(ZG(y.backgroundStrokeZindex,S),VG.backgroundStroke,()=>c?.render(e,m,{...n,clipRect:void 0}));for(let[t,r]of Object.entries(a)){let i=t==`left`||t==`right`?`vertical`:`horizontal`,a=y.scrollbars[i],o=QG(a?d.modify(i==`vertical`?{y:()=>f.y,height:_}:{x:()=>f.x,width:g}):d,t,r),s=n.clipRect;a&&(s=o.intersect(s).intersect(a?d.modify(i==`vertical`?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),h(XG(r.axisProps.zindex,S),VG.axis,()=>r.render(e,o,{...n,clipRect:s}))}for(let t of Object.values(this.#r)){let r=t.axisProps.orient;(r==`left`&&b==0||r==`right`&&b==s.nCols-1||r==`top`&&x==0||r==`bottom`&&x==s.nRows-1)&&h(XG(t.axisProps.zindex,S),VG.axis,()=>t.render(e,QG(d.shrink(y.view.getOverhang()),r,t),n))}u&&h(u.getZindex(),VG.selectionRect,()=>u?.render(e,f,n));for(let r of Object.values(y.scrollbars))h(1,VG.scrollbar,()=>{r.updateScrollbar(d,f),r.render(e,t,n)});l&&h(y.titleZindex,VG.title,()=>l?.render(e,d,n))}g(d);for(let e of p)e();g(f),e.popView(this)}propagateInteraction(e){PW(this,e,()=>{let t=this.#s.find(t=>t.coords.containsPoint(e.point.x,e.point.y)),n=t?.view,r=t?void 0:this.#g(e.point);if(e.type===`wheelclaimprobe`){if(!n){r&&e.claimWheel();return}JG(n)?qG(n)&&e.claimWheel():n.propagateInteraction(e);return}this.#o?.handlePointerEvent(t,e);for(let n of Object.values(t?.scrollbars??{}))if(FW(e,()=>n.coords.containsPoint(e.point.x,e.point.y),()=>n.propagateInteraction(e)),e.stopped)return;if(!n){r&&this.#y(e,r);return}FW(e,()=>!0,()=>n.propagateInteraction(e),JG(n)?()=>YW(e,t.coords,e=>this.#b(t.coords,t.view,e),this.context.getCurrentHover(),this.context.animator):void 0)})}#g(e){let t=this.#_();if(!t)return;let n=this.getScaleResolution(t);if(!n||!n.isZoomable())return;let r=this.#v(t);if(r&&r.containsPoint(e.x,e.y))return{coords:r,zoomableResolutions:WG(t,n)}}#_(){if(rW(this.spec))return`x`;if(iW(this.spec))return`y`}#v(e){let t=this.#s[0];if(!t)return;let n=t.coords,r=t.coords.expand(t.getOverhang()),i=n.x,a=r.y,o=n.x2,s=r.y2;for(let t of this.#s.slice(1)){let n=t.coords,r=t.coords.expand(t.getOverhang());e==`x`?(i=Math.max(i,n.x),o=Math.min(o,n.x2),a=Math.min(a,r.y),s=Math.max(s,r.y2)):(i=Math.min(i,r.x),o=Math.max(o,r.x2),a=Math.max(a,n.y),s=Math.min(s,n.y2))}for(let t of Object.values(this.#r)){let n=t.coords;if(!n)continue;let r=t.axisProps.orient;e==`x`&&(r==`top`||r==`bottom`)?(a=Math.min(a,n.y),s=Math.max(s,n.y2)):e==`y`&&(r==`left`||r==`right`)&&(i=Math.min(i,n.x),o=Math.max(o,n.x2))}if(!(i>=o||a>=s))return lW.create(i,a,o-i,s-a)}#y(e,t){e.target=this,YW(e,t.coords,e=>GG(t.coords,e,t.zoomableResolutions,this.context.animator),this.context.getCurrentHover(),this.context.animator)}#b(e,t,n){return GG(e,n,MG(t),this.context.animator)}getDefaultResolution(e,t){return`independent`}};function WG(e,t){let n={x:new Set,y:new Set};return n[e].add(t),n}function GG(e,t,n,r){let i=!1,a=!1,o=e.normalizePoint(t.x,t.y),s=e.normalizePoint(t.x+t.xDelta,t.y+t.yDelta),c={x:s.x-o.x,y:s.y-o.y};for(let[e,r]of Object.entries(n))if(!(r.size<=0)){i=!0;for(let n of r)a=n.zoom(2**t.zDelta,e==`y`?1-o[e]:o[e],e==`x`?c.x:-c.y)||a}return a&&r.requestRender(),i}function KG(e){let t=!0;return e.visit(e=>{e instanceof LB&&(t&&=e.mark.properties.clip===!0)}),t}function qG(e){let t=MG(e);return t.x.size>0||t.y.size>0}function JG(e){return e instanceof LB||e instanceof oW}function YG(e){return`vconcat`in e?[`horizontal`]:`hconcat`in e?[`vertical`]:[`horizontal`,`vertical`]}function XG(e,t){return e??(t?HG:0)}function ZG(e,t){return e??(t?HG:0)}function QG(e,t,n){let r=n.axisProps,i=n.getPerpendicularSize();if(t==`bottom`)return e.translate(0,e.height+r.offset).modify({height:i});if(t==`top`)return e.translate(0,-i-r.offset).modify({height:i});if(t==`left`)return e.translate(-i-r.offset,0).modify({width:i});if(t==`right`)return e.translate(e.width+r.offset,0).modify({width:i})}var $G=class extends UG{constructor(e,t,n,r,i,a){super(e,t,n,r,i,aW(e)?e.columns:rW(e)?1:1/0,a),this.spec=e}async initializeChildren(){let e=this.spec,t=aW(e)?e.concat:rW(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(t.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName(`grid`))))),await this.createAxes()}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}getDefaultResolution(e,t){return t==`axis`?`independent`:rW(this.spec)&&e===`x`||iW(this.spec)&&e===`y`?`shared`:`independent`}#e(){let e=this.spec,t;return t=aW(e)?e.concat:rW(e)?e.vconcat:e.hconcat,{specs:t,insertAt:(e,n)=>{t.splice(e,0,n)},removeAt:e=>{t.splice(e,1)}}}#t(){return new KU(this,{getChildSpecs:this.#e.bind(this),insertView:(e,t)=>this.insertChildViewAt(e,t),removeView:e=>super.removeChildAt(e),prepareView:async(e,t,n)=>{await n.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName(`grid`)})}};function eK({defaultConfig:e,builtInTheme:t,theme:n}){return fP([e,t,n])}function tK(e,t){if(!(!e&&!t))return fP([e,t])}var nK=`viewRoot`,rK=class{#e=new Map;constructor(e={}){this.options={allowImport:!0,wrapRoot:!0,...e};let t=e=>(t,n,r,i,a,o)=>new e(t,n,r,i,a,o);this.addViewType(tW,t(oW)),this.addViewType(JU,((e,t,n,r,i,a)=>new oW(YU(e),t,n,r,i,a))),this.addViewType(eW,t(LB)),this.addViewType(rW,t($G)),this.addViewType(iW,t($G)),this.addViewType(aW,t($G))}addViewType(e,t){this.#e.set(e,t)}createView(e,t,n,r,i,a){for(let[o,s]of this.#e)if(o(e))return s(e,t,n,r,i,a);throw oK(e)?Error(`SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!`):Error(`Invalid spec, cannot figure out the view type from the properties: `+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){let t=[...this.#e.keys()].filter(t=>t(e));if(t.length>1)throw Error(`Ambiguous spec. Cannot create a view!`);return t.length==1}async createOrImportView(e,t,n,r,i,a,o){let s,c=nW(e)?e.name??null:void 0;if(nW(e)){let i;if(`url`in e.import)if(this.options.allowImport)i=await WB(e,r.getBaseUrl(),t);else throw new sP(`Importing views is not allowed!`,n);else if(`template`in e.import)i=iK(e.import.template,r);else throw Error(`Invalid import: `+JSON.stringify(e));a?.(i),aK(i,e),s=i}else s=e;let l=e=>e?.params?.some(e=>hg(e)&&sg(e.select).type==`interval`),u=!1;if(!r&&this.options.wrapRoot&&(eW(s)||tW(s)||JU(s)||l(s))&&i===`viewRoot`){let e={...s};delete e.theme,s={name:`implicitRoot`,vconcat:[e]},u=!0}let d=this.createView(s,t,n,r,i,o);return c!==void 0&&TU(d,c),u&&EU(d),d instanceof yU&&await d.initializeChildren(),d.registerStepSizeInvalidation(),d}};function iK(e,t){let n=t.spec?.templates?.[e];if(n)return structuredClone(n);if(t.dataParent)return iK(e,t.dataParent);throw Error(`Cannot find template "${e}" in current view or its ancestors!`)}function aK(e,t){t.name!=null&&(e.name=t.name),t.visible!=null&&(e.visible=t.visible),e.config=tK(t.config,e.config);let n=Ze(t.params)?t.params:Qe(t.params)?Object.entries(t.params).map(([e,t])=>({name:e,value:t})):[];if(n.length){e.params??=[];for(let t of n){let n=e.params.findIndex(e=>e.name==t.name);n>=0&&(e.params[n]=t)}for(let t of n)e.params.some(e=>e.name==t.name)||e.params.push(t)}}function oK(e){return`samples`in e&&Qe(e.samples)&&`spec`in e&&Qe(e.spec)}var sK=class{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=AH(e,e=>{let t=e.x-this.lastValue;this.lastValue=e.x,this.callback?.(t)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=F([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;let n=RN(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+n,this.smoother({x:this.targetValue})}};function cK(e){let t={},n=[`string`,`number`,`boolean`],r=[`wheelDelta`,`wheelDeltaX`,`wheelDeltaY`];for(let i in e){let a=i;!r.includes(i)&&n.includes(typeof e[a])&&(t[a]=e[a])}return t}var lK=class{#e;#t;constructor(e,t,n){this.point=e,this.#n=t,this.stopped=!1,this.wheelClaimed=!1,this.#r=n,this.target=void 0,this.currentTarget=void 0,this.relatedTarget=void 0}#n;#r;#i;get uiEvent(){return this.#n}set uiEvent(e){this.#n=e,this.#e=void 0,this.#t=void 0,this.#i=void 0}stopPropagation(){this.stopped=!0}claimWheel(){if(this.type!==`wheel`&&this.type!==`wheelclaimprobe`)throw Error(`Can claim wheel only for wheel events!`);this.wheelClaimed=!0}setWheelDeltas(e,t){if(!RW(this.uiEvent))throw Error(`Not a WheelEvent!`);this.#i={deltaX:e,deltaY:t},this.#t=void 0}get type(){return this.#r??this.uiEvent.type}set type(e){this.#r=e}get proxiedMouseEvent(){return this.#e||=BW(this.mouseEvent),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw Error(`Not a MouseEvent!`)}get wheelEvent(){if(!RW(this.uiEvent))throw Error(`Not a WheelEvent!`);return this.#i?(this.#t||=zW(this.uiEvent,this.#i.deltaX,this.#i.deltaY),this.#t):this.uiEvent}},uK=class{#e;#t;#n;#r=[];constructor({viewRoot:e}){this.#e=e}dispatch(e,t){this.#t=e;let n=new lK(e,t);return this.#e.propagateInteraction(n),this.#n=n.target,n.type===`mousemove`&&this.#i(n),n}handlePointerLeave(e){if(!this.#t||this.#r.length===0){this.#r=[],this.#n=void 0;return}let t=new lK(this.#t,e,`mouseleave`);this.#a(t,this.#r,void 0),this.#r=[],this.#n=void 0}getCurrentTarget(){return this.#n}#i(e){let t=this.#s(e.target),n=this.#r,r=0;for(;r<n.length&&r<t.length&&n[r]===t[r];)r++;r<n.length&&this.#a(e,n.slice(r),t.at(-1)),r<t.length&&this.#o(e,t.slice(r),n.at(-1)),this.#r=t}#a(e,t,n){for(let r=t.length-1;r>=0;r--){let i=new lK(e.point,e.uiEvent,`mouseleave`),a=t[r];if(i.target=a,i.currentTarget=a,i.relatedTarget=n,this.#c(a,i),i.stopped)return}}#o(e,t,n){for(let r of t){let t=new lK(e.point,e.uiEvent,`mouseenter`);if(t.target=r,t.currentTarget=r,t.relatedTarget=n,this.#c(r,t),t.stopped)return}}#s(e){return e?e.getLayoutAncestors().reverse():[]}#c(e,t){e.handleInteraction(t,!0),!t.stopped&&e.handleInteraction(t,!1)}},dK=class{#e;#t;#n;constructor({canvas:e}){this.#e=e}update({target:e,hover:t}){this.#r(fK(e,t))}clear(){this.#r(void 0)}#r(e){if(pK(this.#t,e)){this.#i();return}this.#n?.(),this.#n=void 0,this.#t=e,e?.watch(e=>{this.#n=e},()=>this.#i()),this.#i()}#i(){let e=this.#t?.evaluate();this.#e.style.cursor=typeof e==`string`?e:``}};function fK(e,t){let n=t?.mark,r=n?.getCursorSpec?.();if(r!==void 0)return{owner:n,raw:r,evaluate:()=>n.getCursor(),watch:(e,t)=>n.watchCursor?.(t,e)};for(let t of e?.getLayoutAncestors()??[]){let e=t.getCursorSpec?.();if(e!==void 0)return{owner:t,raw:e,evaluate:()=>t.getCursor(),watch:(e,n)=>t.watchCursor?.(n,e)}}}function pK(e,t){return!e||!t?e===t:e.owner===t.owner&&e.raw===t.raw}var mK=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=!1;#h=!1;#g=!1;#_=0;#v=!1;constructor({viewRoot:e,glHelper:t,tooltip:n,animator:r,emitEvent:i,tooltipHandlers:a,renderPickingFramebuffer:o,getDevicePixelRatio:s}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o,this.#s=s,this.#c=new uK({viewRoot:e}),this.#l=new dK({canvas:t.canvas}),this.#u=void 0,this.#d=new sK(this.#r),this.#f=void 0,this.#p=void 0}getCurrentHover(){return this.#u}suspendHoverTracking(){this.#_++,!this.#h&&(this.#n.clear(),this.#m=!1)}resumeHoverTracking(e){if(!(this.#_<=0)&&(this.#_--,!(this.#_>0)&&(this.#n.clear(),this.#m=!1,!this.#C()))){if(e){let t=this.#y(e);if(this.#p=t,this.#b(t)){this.#x(t),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#c.handlePointerLeave(e)}else if(this.#p&&this.#b(this.#p)){this.#x(this.#p),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#u=null,this.#l.clear()}}registerInteractionEvents(){let e=this.#t.canvas,t=performance.now(),n=!1,r,i=(e,t)=>{let n=this.#c.dispatch(e,t);return!this.#m&&!this.#h&&this.#n.clear(),t instanceof MouseEvent&&t.type!==`mouseout`&&this.#l.update({target:n.target,hover:this.#u}),n},a=e=>{let r=performance.now(),a=r-t<200;if(e instanceof MouseEvent){if(e.type!==`contextmenu`&&this.#C())return;let o=this.#y(e);this.#p=o,e.type==`mousemove`&&!a&&this.#_===0&&(this.#g=!1,this.#n.handleMouseMove(e),this.#m=!1,e.buttons==0&&!qW()&&(this.#o(),this.#w(o.x,o.y)));let s=e=>{i(o,e)};if(e.type!=`wheel`&&this.#d.cancel(),(e.type==`mousedown`||e.type==`mouseup`)&&!qW())this.#o();else if(e.type==`wheel`){t=r,this.#m=!1;let n=e;if(Math.abs(n.deltaX)>Math.abs(n.deltaY))this.#u=null,this.#d.cancel();else if(i(o,{type:`wheelclaimprobe`}).wheelClaimed){let e=cK(n);this.#d.setMomentum(n.deltaY*(n.deltaMode?80:1),t=>{s(new WheelEvent(`wheel`,{...e,deltaMode:0,deltaX:0,deltaY:t}))}),n.preventDefault();return}else this.#d.cancel()}if(e.type==`click`){if(n)return;let t=this.#u?{type:e.type,viewPath:this.#u.mark.unitView.getLayoutAncestors().map(e=>e.name).reverse(),datum:this.#u.datum}:{type:e.type,viewPath:null,datum:null};this.#i(`click`,t)}if(e.type!=`click`||this.#f?.subtract(VW.fromMouseEvent(e)).length<3){let t=i(o,e);return e.type==`dblclick`&&this.#_===0&&this.#b(o)&&this.#S(),t}}};e.addEventListener(`mousedown`,e=>{this.#f=VW.fromMouseEvent(e),this.#h=!1;let t=e.shiftKey||e.ctrlKey||e.metaKey;this.#n.sticky?(this.#n.sticky=!1,this.#g=!0,this.#n.clear(),n=!0):n=!1;let r=()=>{document.addEventListener(`mouseup`,()=>this.#n.popEnabledState(),{once:!0,capture:!0}),this.#n.pushEnabledState(!1)};if(e.button==2)r();else if(e.button==0&&this.#n.visible){this.#h=!0;let e;t||(e=setTimeout(()=>{n=!0,this.#h=!1,this.#n.sticky=!0},400));let r=t=>{clearTimeout(e),this.#h&&(this.#h=!1,t&&this.#_>0&&(this.#n.clear(),this.#m=!1))};document.addEventListener(`mouseup`,()=>r(!1),{once:!0}),document.addEventListener(`mousemove`,()=>r(!0),{once:!0})}}),[`mousedown`,`mouseup`,`wheel`,`click`,`mousemove`,`contextmenu`,`dblclick`].forEach(t=>e.addEventListener(t,a));let o=(t,n)=>{let r=e.getBoundingClientRect();return new VW(t-r.left-e.clientLeft,n-r.top-e.clientTop)},s=e=>{if(e.length<=0)return;let t=e[0];if(e.length===1)return{pointerCount:1,centerX:t.clientX,centerY:t.clientY,distance:0};let n=e[1];return{pointerCount:2,centerX:(t.clientX+n.clientX)/2,centerY:(t.clientY+n.clientY)/2,distance:hK(t,n)}},c=(e,t,n,r,a,s,c)=>{i(o(e,t),{type:`touchgesture`,phase:n,pointerCount:r,xDelta:a,yDelta:s,zDelta:c})},l=e=>{e.preventDefault(),this.#d.cancel(),this.#m=!1;let t=s(e.touches);if(!t){r=void 0;return}if(!r||r.pointerCount!==t.pointerCount){r=t;return}let n=t.centerX-r.centerX,i=t.centerY-r.centerY,a=t.pointerCount===2?gK(r.distance,t.distance):0;(n!==0||i!==0||a!==0)&&Number.isFinite(n)&&Number.isFinite(i)&&Number.isFinite(a)&&c(r.centerX,r.centerY,`move`,t.pointerCount,n,i,a),r=t},u=e=>{e.preventDefault(),this.#m=!1,r&&e.touches.length===0&&c(r.centerX,r.centerY,`end`,r.pointerCount,0,0,0),r=s(e.touches)};e.addEventListener(`touchstart`,l,{passive:!1}),e.addEventListener(`touchmove`,l,{passive:!1}),e.addEventListener(`touchend`,u,{passive:!1}),e.addEventListener(`touchcancel`,u,{passive:!1}),e.addEventListener(`dragstart`,e=>e.stopPropagation()),e.addEventListener(`mouseout`,e=>{if(!this.#C()){if(this.#_>0){this.#n.clear(),this.#m=!1;return}this.#c.handlePointerLeave(e),this.#l.clear(),this.#n.clear(),this.#u=null}})}#y(e){let t=this.#t.canvas,n=t.getBoundingClientRect();return new VW(e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop)}#b(e){let t=this.#t.canvas;return e.x>=0&&e.y>=0&&e.x<=t.clientWidth&&e.y<=t.clientHeight}#x(e){qW()||(this.#o(),this.#w(e.x,e.y))}#S(){this.#v||(this.#v=!0,this.#r.requestRender(),window.requestAnimationFrame(()=>{if(this.#v=!1,this.#_>0||this.#C())return;let e=this.#p;if(!e||!this.#b(e)){this.#u=null,this.#l.clear();return}this.#n.clear(),this.#m=!1,this.#x(e),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u})}))}#C(){return typeof document<`u`&&!!document.body&&document.body.classList.contains(`gs-freeze-interaction`)}#w(e,t){let n=this.#s(),r=GM(this.#t.gl,this.#t._pickingBufferInfo,e*n,t*n),i=r[0]|r[1]<<8|r[2]<<16|r[3]<<24;if(i==0){this.#u=null;return}if(i!==this.#u?.uniqueId&&(this.#u=null),this.#u||this.#e.visit(n=>{if(n instanceof LB){if(n.mark.isPickingParticipant()&&[...n.facetCoords.values()].some(n=>n.containsPoint(e,t))){let e=n.getCollector().findDatumByUniqueId(i);e&&(this.#u={mark:n.mark,datum:e,uniqueId:i})}if(this.#u)return nR}}),this.#u){let e=this.#u.mark;this.updateTooltip(this.#u.datum,async t=>{if(!e.isPickingParticipant())return;let n=e.properties.tooltip;if(n!==null&&n!==!1){let r=n?.handler??`default`,i=this.#a[r];if(!i)throw Error(`No such tooltip handler: `+r);let a=tU(t,e,n?.params);return i(t,e,n?.params,a)}})}}updateTooltip(e,t){if(!this.#g)if(!this.#m||!e)this.#n.updateWithDatum(e,t),this.#m=!0;else throw Error(`Tooltip has already been updated! Duplicate event handler?`)}};function hK(e,t){let n=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.hypot(n,r)}function gK(e,t){return e<=0||t<=0?0:Math.log2(e/t)}var _K=class{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}},vK=class extends _K{#e=[0,0,0,0];#t;#n=[];#r;#i;#a=new Set;#o=void 0;#s=1;#c={width:0,height:0};constructor(e,t){if(super(e),this.#i=t.webGLHelper,this.#r=t.framebufferInfo,this.#s=t.devicePixelRatio,this.#c=t.canvasSize,t.clearColor){let e=Cu(t.clearColor).rgb();this.#e=[e.r/255,e.g/255,e.b/255,e.opacity]}}getDevicePixelRatio(){return this.#s}pushView(e,t){this.#a.add(e),this.#o=t}renderMark(e,t){if(this.globalOptions.picking&&!e.isPickingParticipant())return;let n=e.render(t);n&&this.#n.push({mark:e,callback:n,coords:this.#o,clipRect:t.clipRect})}render(){if(this.#t||this.#l(),this.#t.length==0)return;let e=this.#i.gl,t=this.#r;t?(e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.viewport(0,0,t.width,t.height)):e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.disable(e.SCISSOR_TEST),e.clearColor(...this.#e),e.clear(e.COLOR_BUFFER_BIT);for(let e of this.#a)e.onBeforeRender();for(let e of this.#t)e();this.#r&&e.bindFramebuffer(e.FRAMEBUFFER,null)}#l(){this.#t=[];let e=!0,t=!0,n=t=>()=>{e&&t()},r=n=>()=>{e&&t&&n()},i=xn(this.#n.reverse(),e=>e.mark);for(let[a,o]of[...i.entries()].reverse()){if(!a.isReady())continue;this.#t.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.#t.push(...a.prepareRender(this.globalOptions).map(e=>n(e)));let i;for(let e of o){let o=e.coords;o.equals(i)||this.#t.push(n(()=>{t=a.setViewport(this.#c,this.#s,o,e.clipRect)})),this.#t.push(r(e.callback)),i=e.coords}}}},yK=class extends _K{constructor(...e){super({}),this.contexts=e}pushView(e,t){for(let n of this.contexts)n.pushView(e,t)}popView(e){for(let t of this.contexts)t.popView(e)}renderMark(e,t){for(let n of this.contexts)n.renderMark(e,t)}},bK=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor({viewRoot:e,glHelper:t,getBackground:n,broadcast:r,onLayoutComputed:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=void 0,this.#o=void 0,this.#s=!1}computeLayout(){let e=this.#e;if(!e)return;this.#r(`layout`);let t=this.#t.getLogicalCanvasSize();if(isNaN(t.width)||isNaN(t.height)){console.log(`NaN in canvas size: ${t.width}x${t.height}. Skipping computeLayout().`);return}let n={webGLHelper:this.#t,canvasSize:t,devicePixelRatio:this.#t.getDevicePixelRatio(t)};this.#a=new vK({picking:!1},{...n,clearColor:this.#n()}),this.#o=new vK({picking:!0},{...n,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new yK(this.#a,this.#o),lW.create(0,0,t.width,t.height)),this.#i(),this.#r(`layoutComputed`)}renderAll(){this.#a?.render(),this.#s=!0}renderPickingFramebuffer(){this.#s&&=(this.#o.render(),!1)}};function xK(e){let t=e=>{throw Error(`ViewContext.`+e+` is not configured.`)},n={dataFlow:e.dataFlow??t(`dataFlow`),glHelper:e.allowMissingGlHelper?e.glHelper:e.glHelper??t(`glHelper`),animator:e.animator??t(`animator`),genomeStore:e.genomeStore,fontManager:e.fontManager??t(`fontManager`),createOrImportView:async function(t,r,i,a,o,s){let c=e.createOrImportViewWithContext;return c?c(n,t,r,i,a,o,s):Promise.reject(Error(`ViewContext.createOrImportView is not configured.`))}},r=[`requestLayoutReflow`,`renderImmediately`,`updateTooltip`,`getNamedDataFromProvider`,`getCurrentHover`,`suspendHoverTracking`,`resumeHoverTracking`,`addKeyboardListener`,`addBroadcastListener`,`removeBroadcastListener`,`highlightView`,`isViewConfiguredVisible`,`isViewSpec`,`getBaseConfig`],i=e,a=n;for(let e of r)a[e]=i[e]??(()=>t(e));return n}var SK={view:{},mark:{xOffset:0,yOffset:0,minBufferSize:0,opacity:1},point:{x:.5,y:.5,filled:!0,size:100,semanticScore:0,shape:`circle`,strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02,minPickingSize:2},rect:{x2:void 0,y2:void 0,filled:!0,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1},rule:{x2:void 0,y2:void 0,size:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`},tick:{minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`,orient:void 0,thickness:1},text:{x:.5,y:.5,x2:void 0,y2:void 0,text:``,size:11,font:void 0,fontStyle:void 0,fontWeight:void 0,align:`center`,baseline:`middle`,dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0},link:{x:0,x2:void 0,y:0,y2:void 0,size:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:`arc`,orient:`vertical`},axis:{values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:`gray`,domainDash:null,domainDashOffset:0,domainCap:`square`,ticks:!0,tickSize:5,tickWidth:1,tickColor:`gray`,tickDash:null,tickDashOffset:0,tickCap:`square`,tickCount:null,tickMinStep:null,labels:!0,labelAlign:`center`,labelBaseline:`middle`,labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:`black`,format:null,titleColor:`black`,titleFont:`sans-serif`,titleFontSize:10,titlePadding:3,grid:!1,gridCap:`butt`,gridColor:`lightgray`,gridDash:null,gridOpacity:1,gridWidth:1},axisLocus:{chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:`#989898`,chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:`normal`,chromLabelFontStyle:`normal`,chromLabelColor:`black`,chromLabelAlign:`left`,chromLabelPadding:7,chromGrid:!1,chromGridCap:`butt`,chromGridColor:`gray`,chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`viridis`},range:{shape:[`circle`,`square`,`triangle-up`,`cross`,`diamond`],size:[0,400],angle:[0,360],heatmap:`yellowgreenblue`},title:{anchor:`middle`,frame:`group`,offset:10,orient:`top`,align:void 0,angle:0,baseline:`alphabetic`,dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:`normal`,fontWeight:`normal`},style:{"track-title":{orient:`left`,anchor:`middle`,align:`right`,baseline:`middle`,angle:0,fontSize:12},overlay:{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12},"overlay-title":{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12}}};function CK(e){bU(e),xU(e)}function wK({glHelper:e,viewRoot:t,logicalWidth:n,logicalHeight:r,devicePixelRatio:i,clearColor:a=`white`}){n??=e.getLogicalCanvasSize().width,r??=e.getLogicalCanvasSize().height,i??=window.devicePixelRatio??1;let o=e.gl,s=Math.floor(n*i),c=Math.floor(r*i),l=hM(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],s,c),u=new vK({picking:!1},{webGLHelper:e,canvasSize:{width:n,height:r},devicePixelRatio:i,clearColor:a,framebufferInfo:l});return t.render(u,lW.create(0,0,n,r)),u.render(),KM(o,l,`image/png`)}function TK(e,t){let n=OK(e,t);if(!n.length)throw Error(`Parameter "`+t+`" not found.`);let r=new Map;for(let e of n){let n=e.view.paramRuntime.findRuntimeForParam(t);if(!n)throw Error(`Parameter "`+t+`" has no runtime value.`);r.set(n,{runtime:n,readOnly:EK(r.get(n),e),pointSelection:DK(r.get(n),e)})}if(r.size>1)throw Error(`Parameter "`+t+`" is ambiguous.`);let{runtime:i,readOnly:a,pointSelection:o}=r.values().next().value;return{getValue(){return i.getValue(t)},setValue(n){if(a)throw Error(`Cannot set computed parameter "`+t+`".`);if(o)throw Error(`Cannot set point selection parameter "`+t+`" through the embed API.`);i.setValue(t,n),e.context.animator.requestRender()},subscribe(e){return i.subscribe(t,()=>{e(i.getValue(t))})}}}function EK(e,t){return!!(e?.readOnly||`expr`in t.param)}function DK(e,t){if(e?.pointSelection)return!0;let n=t.param;return`select`in n&&cg(sg(n.select))}function OK(e,t){let n=[];return e.visit(e=>{let r=e.paramRuntime.paramConfigs.get(t);r&&n.push({view:e,param:r})}),n}function kK(e){if(e.genome&&e.genomes)throw Error("Do not mix deprecated `genome` with `genomes`. Use only `genomes` and `assembly`.");if(e.genome&&e.assembly)throw Error("Do not mix deprecated `genome` with root `assembly`. Use `genomes` and `assembly`.");if(e.genome){let{name:t,...n}=e.genome;return{genomesByName:!(Object.keys(n).length>0)&&jK(t)?new Map:new Map([[t,n]]),defaultAssembly:t,deprecationWarning:AK()}}let t=new Map;for(let[n,r]of Object.entries(e.genomes??{}))t.set(n,r??{});let n=e.assembly;if(!n&&t.size===1&&(n=t.keys().next().value),n&&!t.has(n)&&!jK(n))throw Error(`Root assembly "${n}" is neither defined in \`genomes\` nor a built-in assembly.`);return{genomesByName:t,defaultAssembly:n,deprecationWarning:void 0}}function AK(){return'Root `genome` is deprecated and will be removed in a future version. Use root `genomes` and `assembly` instead. Built-in migration example: {"genome":{"name":"hg38"}} -> {"assembly":"hg38"}.'}function jK(e){try{return vR(e),!0}catch{return!1}}function MK(e,t,n){let r=PK(e,n);if(!r.size)return!0;for(let e of r)if(!FK(e,t))return!1;return!0}function NK(e,t,n,r,i){let a=i??(e=>e.isConfiguredVisible());return new Promise((i,o)=>{let s=new Set,c=new Set,l=()=>{f(),d()},u=()=>{for(let e of s)e();s.clear(),e.removeBroadcastListener(`subtreeDataReady`,l),r&&r.removeEventListener(`abort`,p)},d=()=>{MK(t,n,a)&&(u(),i())},f=()=>{t.visit(e=>{if(!(e instanceof LB)||!a(e))return;let t=e.flowHandle?.collector;t&&(c.has(t)||(c.add(t),s.add(t.observe(d))))})},p=()=>{u(),o(Error(`Lazy subtree readiness was aborted.`))};if(f(),d(),e.addBroadcastListener(`subtreeDataReady`,l),r){if(r.aborted){p();return}r.addEventListener(`abort`,p,{once:!0})}})}function PK(e,t){let n=t??(e=>e.isConfiguredVisible()),r=new Set;return e.visit(e=>{if(!(e instanceof LB)||!n(e))return;let t=e;for(;t&&!(t.flowHandle&&t.flowHandle.dataSource);)t=t.dataParent;if(!t||!t.flowHandle)return;let i=t.flowHandle.dataSource;i instanceof Qm&&r.add(i)}),r}function FK(e,t){let n=t??{[e.channel]:Array.from(e.scaleResolution.getDomain())};return e.isDataReadyForDomain(n)}var IK={mark:{color:`#4c78a8`},point:{filled:!1,size:30},rule:{color:`black`},text:{color:`black`},view:{stroke:`#ddd`,strokeWidth:1},axis:{grid:!1,domain:!0,tickColor:`gray`,domainColor:`gray`,gridColor:`#ddd`,labelColor:`#333`,titleColor:`#333`,titleFontSize:11,titleFontWeight:`normal`},axisQuantitative:{grid:!0},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`blues`},range:{heatmap:`yellowgreenblue`,ramp:`blues`,diverging:`blueorange`}},LK={genomespy:{mark:{color:`#4c78a8`},rule:{color:`black`},text:{color:`black`},link:{color:`black`}},vegalite:IK,quartz:fP([IK,{background:`#f9f9f9`,view:{fill:`#f9f9f9`},mark:{color:`#ab5787`},point:{size:30},axis:{domainColor:`#979797`,domainWidth:.5,gridWidth:.2,labelColor:`#979797`,tickColor:`#979797`,tickWidth:.2,titleColor:`#979797`},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0}}]),dark:fP([IK,{background:`#333`,view:{fill:`#333`,stroke:`#888`},title:{color:`#fff`},axis:{domainColor:`#fff`,gridColor:`#888`,tickColor:`#fff`,labelColor:`#fff`,titleColor:`#fff`},text:{color:`#fff`},rule:{color:`#fff`}}]),fivethirtyeight:fP([IK,{background:`#f0f0f0`,view:{fill:`#f0f0f0`},mark:{color:`#30a2da`},point:{filled:!0,shape:`circle`},axis:{domainColor:`#cbcbcb`,grid:!0,gridColor:`#cbcbcb`,gridWidth:1,labelColor:`#999`,labelFontSize:10,titleColor:`#333`,tickColor:`#cbcbcb`,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisNominal:{grid:!1},axisOrdinal:{grid:!1},title:{anchor:`start`,fontSize:24,fontWeight:600,offset:20}}]),urbaninstitute:fP([IK,{background:`#FFFFFF`,view:{fill:`#FFFFFF`,stroke:`#000000`,strokeOpacity:0},mark:{color:`#1696d2`},point:{filled:!0},text:{font:`Lato`,color:`#1696d2`,size:11,align:`center`,fontWeight:400},title:{anchor:`start`,fontSize:18,font:`Lato`},axisX:{domain:!0,domainColor:`#000000`,domainWidth:1,grid:!1,labelFontSize:12,labelFont:`Lato`,labelAngle:0,tickColor:`#000000`,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:`Lato`},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:`#DEDDDD`,gridWidth:1,labelFontSize:12,labelFont:`Lato`,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:`Lato`}}])},RK=Object.keys(LK);function zK(e){let t={...LK[e]};return delete t.background,t}function BK(e){if(!e)return[];let t=Array.isArray(e)?e:[e],n=t.filter(e=>!(e in LK));if(n.length>0)throw Error(`Unknown theme "`+n[0]+`". Available themes: `+RK.join(`, `));return t}var VK=`genomespy`;function HK(e){return LK[e].background}function UK(e){let t=BK(e);if(t.length!=0)return fP(t.map(e=>zK(e)))}var WK=class{#e=[];#t;#n;#r;#i;#a;#o;#s=new LT;#c=new RT;#l=new RT;constructor(e,t,n={}){this.container=e,this.options=n,n.inputBindingContainer??=`default`,this.spec=t,this.viewFactory=new rK,this.namedDataProviders=[],this.animator=new kH(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=e=>e.isVisibleInSpec(),this.tooltipHandlers={default:vU,refseqgene:HH,...n.tooltipHandlers??{}},this.viewRoot=void 0,this.#i=new BT(e,n),this.dpr=window.devicePixelRatio}get#u(){return this.container.querySelector(`.canvas-wrapper`)}#d(){this.#i.initialize(this.viewRoot)}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(let t of this.namedDataProviders){let n=t(e);if(n)return n}}updateNamedData(e,t){let n=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!n)throw Error(`No such named data source: `+e);n.dataSource.updateDynamicData(t),this.animator.requestRender()}getParam(e){return TK(this.viewRoot,e)}addEventListener(e,t){this.#c.add(e,t)}removeEventListener(e,t){this.#c.remove(e,t)}broadcast(e,t){let n={type:e,payload:t};this.viewRoot.visit(e=>e.handleBroadcast(n)),this.#l.emit(e,n)}#f(){this.dpr=this.#o.getDevicePixelRatio();let e=this.viewRoot.paramRuntime.allocateSetter(`devicePixelRatio`,this.dpr),t=()=>{this.#o.invalidateSize(),this.dpr=this.#o.getDevicePixelRatio(),e(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){let e=new ResizeObserver(t);e.observe(this.container),this.#e.push(()=>e.disconnect())}let n=null,r=()=>{n!=null&&(n(),t());let e=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);e.addEventListener(`change`,r),n=()=>{e.removeEventListener(`change`,r)}};r(),n&&this.#e.push(n)}#p(){let{canvasWrapper:e,loadingIndicatorsElement:t,tooltip:n}=wT(this.container);this.#o=new VM(e,()=>this.viewRoot?GB(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??`default`},()=>this.#t?.renderAll()),e.appendChild(t),this.tooltip=n,this.#r=new FT,this.#n=new PT(t,this.#r)}destroy(){let e=this.#u;for(this.container.classList.remove(`genome-spy`),e.classList.remove(`loading`),this.#s.removeAll(),this.#e.forEach(e=>e()),this.#o.finalize(),this.#i.remove(),this.#n.destroy();this.container.firstChild;)this.container.firstChild.remove()}async#m(){await this.#h();let e=this.#g();await this.#v(e),await wH(this.viewRoot,e.dataFlow,e.fontManager,e=>this.broadcast(`dataFlowBuilt`,e)),this.#b(e)}async#h(){this.genomeStore=new jH(this.spec.baseUrl);let{genomesByName:e,defaultAssembly:t,deprecationWarning:n}=kK(this.spec);this.genomeStore.configureGenomes(e,t),n&&console.warn(n)}#g(){let e=new tH;e.loadingStatusRegistry=this.#r;let t=eK({defaultConfig:SK,builtInTheme:UK(VK),theme:fP([this.options.theme,UK(this.spec.theme)])});return xK({dataFlow:e,glHelper:this.#o,animator:this.animator,genomeStore:this.genomeStore,fontManager:new IH(this.#o),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this.#a.getCurrentHover(),suspendHoverTracking:()=>this.#a?.suspendHoverTracking(),resumeHoverTracking:e=>this.#a?.resumeHoverTracking(e),addKeyboardListener:(e,t)=>{this.#s.add(e,n=>{this.#_(e,n)&&t(n)})},addBroadcastListener:(e,t)=>this.#l.add(e,t),removeBroadcastListener:(e,t)=>this.#l.remove(e,t),renderImmediately:this.renderAll.bind(this),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:e=>this.viewFactory.isViewSpec(e),getBaseConfig:()=>t,createOrImportViewWithContext:(e,t,n,r,i,a,o)=>this.viewFactory.createOrImportView(t,e,n,r,i,a,o),highlightView:IT(this.container)})}#_(e,t){if(e===`keyup`)return!0;let n=document.activeElement;return n&&n!==document.body?this.container.contains(n):this.container.matches(`:hover`)}async#v(e){let t=this.spec;t.datasets&&this.registerNamedDataProvider(e=>t.datasets[e]),this.viewRoot=await e.createOrImportView(t,null,null,nK),await WU(this.viewRoot,this.genomeStore),this.#r.set(this.viewRoot,`loading`),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?`1`:`0`,this.#d(),CK(this.viewRoot),this.#y(),this.#o.invalidateSize();let n=this.spec.theme?Array.isArray(this.spec.theme)?this.spec.theme:[this.spec.theme]:[];this.#t=new bK({viewRoot:this.viewRoot,glHelper:this.#o,getBackground:()=>{if(this.spec.background!==void 0)return this.spec.background;let e;for(let t of n){let n=HK(t);n!==void 0&&(e=n)}return e},broadcast:this.broadcast.bind(this),onLayoutComputed:()=>this.#n.updateLayout()}),e.requestLayoutReflow=this.computeLayout.bind(this),this.#f()}#y(){let e=AU(this.viewRoot);if(e.length)for(let t of e)console.warn(`Selector constraints warning:`,t.message)}#b(e){e.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>nP(e,`size`)),this.#o.invalidateSize(),this.#a=new mK({viewRoot:this.viewRoot,glHelper:this.#o,tooltip:this.tooltip,animator:this.animator,emitEvent:this.#c.emit.bind(this.#c),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr})}async launch(){let e=!1;try{return this.#p(),await this.#m(),this.#a.registerInteractionEvents(),this.computeLayout(),this.animator.requestRender(),e=!0,!0}catch(e){let t=`${e.view?`At "${e.view.getPathString()}": `:``}${e.toString()}`;return console.error(e.stack),this.options.onError?.(e,this.container)||TT(this.container,t),this.viewRoot&&this.#r.set(this.viewRoot,`error`,t),!1}finally{this.#u.classList.remove(`loading`),e&&this.viewRoot&&this.#r.set(this.viewRoot,`complete`)}}async initializeVisibleViewData(){this.viewRoot&&(await TH(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix(`size`,`progeny`),this.#o.invalidateSize(),this.computeLayout(),this.animator.requestRender())}async awaitVisibleLazyData(e){this.viewRoot&&await NK(this.viewRoot.context,this.viewRoot,void 0,e,e=>e.isConfiguredVisible()&&GK(e))}updateTooltip(e,t){this.#a.updateTooltip(e,t)}exportCanvas(e,t,n,r=`white`){let i=wK({glHelper:this.#o,viewRoot:this.viewRoot,logicalWidth:e,logicalHeight:t,devicePixelRatio:n,clearColor:r});return this.computeLayout(),this.renderAll(),i}getLogicalCanvasSize(){return this.#o.getLogicalCanvasSize()}getRenderedBounds(){let e={width:void 0,height:void 0};return this.viewRoot.visit(t=>{for(let n of t.facetCoords.values())e.width=Math.max(e.width??0,n.x2),e.height=Math.max(e.height??0,n.y2)}),e}computeLayout(){this.#t.computeLayout(),this.#o.invalidateSize()}renderAll(){this.#t.renderAll()}renderPickingFramebuffer(){this.#t.renderPickingFramebuffer()}getSearchableViews(){let e=[];return this.viewRoot.visit(t=>{t instanceof LB&&t.getSearchAccessors().length>0&&e.push(t)}),e}getNamedScaleResolutions(){let e=new Map;return this.viewRoot.visit(t=>{for(let n of Object.values(t.resolutions.scale))n.name&&e.set(n.name,n)}),e}};function GK(e){let t=e;for(;t;){let e=t.flowHandle?.dataSource;if(e)return e instanceof xg;t=t.dataParent}return!1}var KK=`data:image/svg+xml,%3csvg%20viewBox='0%200%2032%2032'%20xmlns='http://www.w3.org/2000/svg'%20fill-rule='evenodd'%20clip-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='1.5'%3e%3cpath%20d='M4.7%2021.2s.4%202.3%201.3%203.6C7%2026%209.8%2028%209.8%2028s3.4-2.6%206.4-8.5c0%200%201%20.1%201.9-.4.9-.6.8-.4%201-1.2%200%200%202.9.5%206.6%200%202.1-.3%204.3-1%206.2-2.5%200%200-1.1-1.7-2.5-5.1-.5-1.3-2-1.8-4.6-4.6l-8.2%208.6-11.9%206.9z'%20fill-opacity='.1'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='%237fbbdd'/%3e%3cpath%20d='M12.4%2015.5c-.7-.5-2.4-.8-4.4-.4-2%20.4-4%201.3-4.8%201.8-.5.3-1.2%201-1.2%201.4%200%20.7.3%201.8.8%202.4.3.3.7.5%201.4.6.8%200%202.5-1.4%203.5-2%201-.6%201.6-.8%202.7-1.2l-2.9%202.4c-1.3%201.2-2.2%201.5-2.4%202.3%200%20.5%200%201.4.5%201.8.4.5.6.8%201.6.8.6%200%201%200%202.6-1.5.9-.9%202.3-3%202.7-3.7.6-1.1%201-2.2.7-3-.2-1-.4-1.4-.8-1.7zM17.4%2014.2c-.3-.5-.9-1.2-.2-2.5l1.9-3c.5-.8%202-2.3%202.6-2.6.6-.4%201.5-.6%202-.2.6.4%201%201%201.3%201.5.4.6.7%201.3.2%202-.7%201-1.6.9-2.8%201.7-1.2.8-1.9%201.2-2.5%201.9l3.8-1.8c1.3-.6%202.7-1.1%203.4-.7.8.5.8.7%201%201.4.3%201-.2%201.9-.8%202.4-.5.6-1.5.9-2.6%201.2-1.4.4-4.5%201-5.8.5-1.3-.5-1.3-1.4-1.5-1.8z'%20fill='%23fff'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='%237fbbdd'/%3e%3cpath%20d='M13.8%2015.3c.9.8.6%202%201.4%201.8%201-.2%201.4-.8%201.3-1.5%200-.7%200-.8-.4-1.6-.3-.7-1-1.1-2-.5-.7.5-1.4%201.3-1.4%201.3s.2-.3%201.1.5z'%20fill='%23fff'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3c/svg%3e`,qK=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5'%20viewBox='0%200%2064%2064'%3e%3cpath%20d='M208.6%20548.2s11.2%2046.2%2031.2%2071c20%2024.9%2079.3%2061.6%2079.3%2061.6S385.6%20623%20438%20498.3c0%200%2018.1%201%2036-11.9%2017.7-12.7%2016.3-7.9%2021-24.8%200%200%2057%206.3%20131-9.7%2041.7-9.1%2084.3-26.3%20121.5-58.8%200%200-25.4-32.9-58-101.7-12.4-26.1-41.9-34.3-98.7-88L438.1%20391.2%20208.6%20548.2Z'%20style='fill-opacity:.11'%20transform='matrix(.10221%20.00684%20-.00671%20.10035%20-8%20-13.2)'/%3e%3cg%20transform='rotate(-35.4%2034.2%2080.8)%20scale(.10057)'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='a'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M386.9%20397.2c-15.6-13.6-51.8-22.4-96.3-16.7-44.5%205.8-93.8%2021.8-111.8%2031.6-10.6%205.7-27.3%2017.3-28.1%2027.2-1.2%2014.2%202.9%2037.8%2015%2052%206%207.2%2014.2%2012.1%2028.1%2014.1%2017.9%202.6%2059-24.8%2081.6-36.2%2024-12%2038.6-14.6%2063-22.2%200%200-47%2031.6-68.2%2047.4-30.6%2022.9-51.6%2028-57.3%2045.5-3.1%209.4-.7%2027.9%207.5%2037.6%209%2011%2012.8%2017.6%2034.2%2020.1%2012.7%201.5%2022%201.2%2059.8-28.6%2021.7-17.2%2055.9-59.2%2067-74.4%2016.2-22%2023.8-43.1%2021.3-59.6-3.7-23.6-8.4-31.3-15.8-37.8Z'%20style='fill:%23fff'%20transform='scale(.88664)%20rotate(31.2%20485%20792.2)'/%3e%3cpath%20d='M484.7%20379c-5.4-11.1-17.6-28.5-.8-53.8a739%20739%200%200%201%2044.2-60.6c13.2-16.3%2046.7-46.2%2059.6-52%2013-6%2033.3-8.7%2044.2.2%2011%209.1%2016.5%2020.6%2023%2032.7%207.4%2013.8%2012.4%2029.3%201.6%2042.8-15.4%2019.2-34.3%2017-61.6%2031.5-27.7%2014.8-42.3%2023.1-55.7%2035.9%200%200%2052.2-21.6%2082-31.2%2029.8-9.7%2059.8-20%2074.8-8.5s14.6%2015.5%2018.4%2031.2c4.7%2019.4-7.2%2038-20.1%2048.6-13%2010.7-34.3%2016-57.4%2021-30.5%206.8-96.6%2015.1-124%202.6-27.5-12.6-24.4-32.8-28.2-40.5Z'%20style='fill:%23fff'%20transform='scale(.87906)%20rotate(31.2%20487.2%20893.5)'/%3e%3c/g%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3cg%20transform='rotate(-4.2%20-78%20211)%20scale(.10057)'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='b'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20d='M413.3%20402.7c17.5%2018.9%2010%2045.7%2028.4%2043.4%2021.7-2.7%2030.9-15.7%2031.6-32.7.7-17-1-19.5-7.1-38-6.1-18.7-18.2-23.2-43.4-18.2-20.8%204.1-17.8%203-24%2010-6.4%207-14.5%2026-14.5%2026s8.4-12.7%2029%209.5Z'%20style='fill:%23fff'%20transform='matrix(.90907%200%200%20.85852%2037%2052.2)'/%3e%3c/g%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3c/svg%3e`,JK=[[`/docs/examples/`,`/docs/examples/`],[`/examples/core/`,`/examples/`],[`/examples/docs/`,`/examples/`],[`/examples/app/`,`/examples/`]],YK=/^(?:[a-z]+:)?\/\//i,XK=`https://example.invalid`;function ZK(e){return YK.test(e)?`external`:e.startsWith(`/`)?`root`:`relative`}function QK(e){let t=new URL(e,XK),n=JK.find(([e])=>t.pathname.startsWith(e));if(n)return eq(n[1],t,ZK(e))}function $K(e){let t=QK(e);if(t)return t;let n=new URL(e,XK);return eq(new URL(`./`,n).pathname,n,ZK(e))}function eq(e,t,n){return n===`external`?t.origin+e:n===`root`?e:e.slice(1)}function tq(e){return async function(t,n,r={}){let i;if(P(t)){if(i=document.querySelector(t),!i)throw Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)i=t;else throw Error(`Invalid element: ${t}`);let a;try{let t=Qe(n)?n:await rq(n);if(t.baseUrl??=``,t.width??=`container`,t.padding??=10,i==document.body){let e=document.createElement(`div`);e.style.position=`fixed`,e.style.inset=`0`,e.style.overflow=`hidden`,i.appendChild(e),i=e}a=new e(i,t,r),nq(a,r),await a.launch()}catch(e){i.innerText=e.toString(),console.error(e)}return{finalize(){for(a.destroy();i.firstChild;)i.firstChild.remove()},addEventListener(e,t){a.addEventListener(e,t)},removeEventListener(e,t){a.removeEventListener(e,t)},getScaleResolutionByName(e){return a.getNamedScaleResolutions().get(e)},getParam:a.getParam.bind(a),awaitVisibleLazyData:a.awaitVisibleLazyData.bind(a),getRenderedBounds:a.getRenderedBounds.bind(a),updateNamedData:a.updateNamedData.bind(a),getLogicalCanvasSize:a.getLogicalCanvasSize.bind(a),exportCanvas:a.exportCanvas.bind(a)}}}function nq(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function rq(e){let t;try{t=await BB(e)}catch(t){throw Error(`Could not load or parse configuration: ${e}, reason: ${t.message}`,{cause:t})}return t.baseUrl||=$K(e),t}function iq(e){return{type:`interval`,intervals:{...e}}}var aq=tq(WK);e.GenomeSpy=WK,e.embed=aq,e.favIcon=qK,e.html=O,e.icon=KK,e.intervalSelection=iq,e.loadSpec=rq});
|