From 9f2beba338f0d1241b3e6210c4f12dc3f122192b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 12 Dec 2023 19:58:19 +0000 Subject: [PATCH] (docs) genome-spy/genome-spy@e0327134a89961976302c700702be9e0b32ac606 --- docs/404.html | 60 ++- docs/api/index.html | 70 ++- docs/app/index.js | 397 +++++++++++------- .../assets/javascripts/bundle.6c14ae12.min.js | 29 -- .../assets/javascripts/bundle.d7c377c4.min.js | 29 ++ docs/assets/stylesheets/main.50c56a3b.min.css | 1 + docs/assets/stylesheets/main.fad675c6.min.css | 1 - .../stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.356b1318.min.css | 1 - docs/genomic-data/examples/index.html | 70 ++- .../genomic-coordinates/index.html | 70 ++- docs/genomic-data/tracks/index.html | 70 ++- docs/getting-started/index.html | 70 ++- docs/grammar/composition/concat/index.html | 70 ++- docs/grammar/composition/index.html | 70 ++- docs/grammar/composition/layer/index.html | 70 ++- docs/grammar/data/eager/index.html | 70 ++- docs/grammar/data/index.html | 70 ++- docs/grammar/data/lazy/index.html | 70 ++- docs/grammar/expressions/index.html | 70 ++- docs/grammar/import/index.html | 70 ++- docs/grammar/index.html | 70 ++- docs/grammar/mark/index.html | 70 ++- docs/grammar/mark/link/index.html | 276 ++++++++++-- docs/grammar/mark/point/index.html | 73 +++- docs/grammar/mark/rect/index.html | 70 ++- docs/grammar/mark/rule/index.html | 70 ++- docs/grammar/mark/text/index.html | 70 ++- docs/grammar/scale/index.html | 70 ++- docs/grammar/transform/aggregate/index.html | 70 ++- docs/grammar/transform/collect/index.html | 70 ++- docs/grammar/transform/coverage/index.html | 70 ++- .../transform/filter-scored-labels/index.html | 70 ++- docs/grammar/transform/filter/index.html | 70 ++- .../flatten-compressed-exons/index.html | 70 ++- .../transform/flatten-delimited/index.html | 70 ++- .../transform/flatten-sequence/index.html | 70 ++- docs/grammar/transform/flatten/index.html | 70 ++- docs/grammar/transform/formula/index.html | 70 ++- docs/grammar/transform/index.html | 70 ++- .../linearize-genomic-coordinate/index.html | 70 ++- .../grammar/transform/measure-text/index.html | 70 ++- docs/grammar/transform/pileup/index.html | 70 ++- docs/grammar/transform/project/index.html | 70 ++- .../transform/regex-extract/index.html | 70 ++- docs/grammar/transform/regex-fold/index.html | 70 ++- docs/grammar/transform/sample/index.html | 70 ++- docs/grammar/transform/stack/index.html | 70 ++- docs/index.html | 70 ++- docs/license/index.html | 70 ++- docs/sample-collections/analyzing/index.html | 82 +++- docs/sample-collections/index.html | 70 ++- .../sample-collections/visualizing/index.html | 72 +++- docs/schema.json | 46 +- docs/sitemap.xml | 90 ++-- docs/sitemap.xml.gz | Bin 539 -> 537 bytes 56 files changed, 3424 insertions(+), 604 deletions(-) delete mode 100644 docs/assets/javascripts/bundle.6c14ae12.min.js create mode 100644 docs/assets/javascripts/bundle.d7c377c4.min.js create mode 100644 docs/assets/stylesheets/main.50c56a3b.min.css delete mode 100644 docs/assets/stylesheets/main.fad675c6.min.css create mode 100644 docs/assets/stylesheets/palette.06af60db.min.css delete mode 100644 docs/assets/stylesheets/palette.356b1318.min.css diff --git a/docs/404.html b/docs/404.html index 6d37973..dad03ca 100644 --- a/docs/404.html +++ b/docs/404.html @@ -12,7 +12,7 @@ - + @@ -20,10 +20,10 @@ - + - + @@ -64,7 +64,6 @@ - @@ -114,11 +113,12 @@ +
- +
@@ -1474,7 +1520,7 @@

404 - Not found

- + diff --git a/docs/api/index.html b/docs/api/index.html index 1b28685..69385ff 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
GitHub @@ -201,7 +201,7 @@
- +
@@ -1773,7 +1829,7 @@

Examples{"base": "..", "features": ["navigation.indexes"], "search": "../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/app/index.js b/docs/app/index.js index 81e38fa..1e75ae9 100644 --- a/docs/app/index.js +++ b/docs/app/index.js @@ -1,15 +1,15 @@ -(function(we,xe){typeof exports=="object"&&typeof module<"u"?xe(exports):typeof define=="function"&&define.amd?define(["exports"],xe):(we=typeof globalThis<"u"?globalThis:we||self,xe(we.genomeSpyDocEmbed={}))})(this,function(we){"use strict";var qz=Object.defineProperty;var Wz=(we,xe,Ce)=>xe in we?qz(we,xe,{enumerable:!0,configurable:!0,writable:!0,value:Ce}):we[xe]=Ce;var St=(we,xe,Ce)=>(Wz(we,typeof xe!="symbol"?xe+"":xe,Ce),Ce),Pg=(we,xe,Ce)=>{if(!xe.has(we))throw TypeError("Cannot "+Ce)};var X=(we,xe,Ce)=>(Pg(we,xe,"read from private field"),Ce?Ce.call(we):xe.get(we)),ue=(we,xe,Ce)=>{if(xe.has(we))throw TypeError("Cannot add the same private member more than once");xe instanceof WeakSet?xe.add(we):xe.set(we,Ce)},bn=(we,xe,Ce,xo)=>(Pg(we,xe,"write to private field"),xo?xo.call(we,Ce):xe.set(we,Ce),Ce);var uS=(we,xe,Ce,xo)=>({set _(Xl){bn(we,xe,Xl,Ce)},get _(){return X(we,xe,xo)}}),ie=(we,xe,Ce)=>(Pg(we,xe,"access private method"),Ce);var Nl,Mg,Ta,Ll,zl,go,Yl,Ul,Og,mr,ka,yt,Kn,mi,kc,cS,Ia,Oc,br,yo,Gl,Ng,Ic,hS,Dg,$z,Hl,Lg,Vl,jl,yr,Da,Ba,Kt,mo,Fa,wr,wo,Dc,dS,bo,Ql,ql,zg,Wl,Ug,$l,Gg,Bc,pS,Ra,Nc,Fc,gS,Pa,Y_;function xe(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function Ce(e,t,n){return e.fields=t||[],e.fname=n,e}function xo(e){return e==null?null:e.fname}function Xl(e){return e==null?null:e.fields}function mS(e){return e.length===1?bS(e[0]):yS(e)}const bS=e=>function(t){return t[e]},yS=e=>{const t=e.length;return function(n){for(let r=0;ra?l():a=s+1:f==="["?(s>a&&l(),i=a=s+1):f==="]"&&(i||Ze("Access path missing open bracket: "+e),i>0&&l(),i=0,a=s+1)}return i&&Ze("Access path missing closing bracket: "+e),r&&Ze("Access path missing closing quote: "+e),s>a&&(s++,l()),t}function Kl(e,t,n){const r=wS(e);return e=r.length===1?r[0]:e,Ce((n&&n.get||mS)(r),[e],t||e)}Kl("id");const Jl=Ce(e=>e,[],"identity");Ce(()=>0,[],"zero"),Ce(()=>1,[],"one"),Ce(()=>!0,[],"true"),Ce(()=>!1,[],"false");var jt=Array.isArray;function qt(e){return e===Object(e)}function yn(e){return e[e.length-1]}function Ma(e){return e==null||e===""?null:+e}const Hg=e=>t=>e*Math.exp(t),Vg=e=>t=>Math.log(e*t),xS=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),vS=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,ef=e=>t=>t<0?-Math.pow(-t,e):Math.pow(t,e);function Lc(e,t,n,r){const i=n(e[0]),o=n(yn(e)),a=(o-i)*t;return[r(i-a),r(o-a)]}function AS(e,t){return Lc(e,t,Ma,Jl)}function ES(e,t){var n=Math.sign(e[0]);return Lc(e,t,Vg(n),Hg(n))}function _S(e,t,n){return Lc(e,t,ef(n),ef(1/n))}function tf(e,t,n,r,i){const o=r(e[0]),a=r(yn(e)),s=t!=null?r(t):(o+a)/2;return[i(s+(o-s)*n),i(s+(a-s)*n)]}function jg(e,t,n){return tf(e,t,n,Ma,Jl)}function qg(e,t,n){const r=Math.sign(e[0]);return tf(e,t,n,Vg(r),Hg(r))}function zc(e,t,n,r){return tf(e,t,n,ef(r),ef(1/r))}function SS(e,t,n,r){return tf(e,t,n,xS(r),vS(r))}function Uc(e){return e!=null?jt(e)?e:[e]:[]}function CS(e,t,n){let r=e[0],i=e[1],o;return i=n-t?[t,n]:[r=Math.min(Math.max(r,t),n-o),r+o]}function Bt(e){return typeof e=="function"}const TS="descending";function Wg(e,t,n){n=n||{},t=Uc(t)||[];const r=[],i=[],o={},a=n.comparator||kS;return Uc(e).forEach((s,f)=>{s!=null&&(r.push(t[f]===TS?-1:1),i.push(s=Bt(s)?s:Kl(s,null,n)),(Xl(s)||[]).forEach(l=>o[l]=1))}),i.length===0?null:Ce(a(i,r),Object.keys(o))}const $g=(e,t)=>(et||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),kS=(e,t)=>e.length===1?IS(e[0],t[0]):DS(e,t,e.length),IS=(e,t)=>function(n,r){return $g(e(n),e(r))*t},DS=(e,t,n)=>(t.push(0),function(r,i){let o,a=0,s=-1;for(;a===0&&++se}function Gc(e){for(let t,n,r=1,i=arguments.length;rFt(e)||RS(e)?e:Date.parse(e);function LS(e,t){return t=t||NS,e==null||e===""?null:t(e)}function zS(e){return e==null||e===""?null:e+""}function af(e){const t={},n=e.length;for(let r=0;r9999?"+"+Rt(e,6):Rt(e,4)}function HS(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?"Invalid Date":GS(e.getUTCFullYear())+"-"+Rt(e.getUTCMonth()+1,2)+"-"+Rt(e.getUTCDate(),2)+(i?"T"+Rt(t,2)+":"+Rt(n,2)+":"+Rt(r,2)+"."+Rt(i,3)+"Z":r?"T"+Rt(t,2)+":"+Rt(n,2)+":"+Rt(r,2)+"Z":n||t?"T"+Rt(t,2)+":"+Rt(n,2)+"Z":"")}function Xg(e){var t=new RegExp('["'+e+` -\r]`),n=e.charCodeAt(0);function r(c,h){var d,p,b=i(c,function(y,w){if(d)return d(y,w-1);p=y,d=h?US(y,h):Yg(y)});return b.columns=p||[],b}function i(c,h){var d=[],p=c.length,b=0,y=0,w,S=p<=0,C=!1;c.charCodeAt(p-1)===Oa&&--p,c.charCodeAt(p-1)===jc&&--p;function _(){if(S)return Hc;if(C)return C=!1,Zg;var D,k=b,R;if(c.charCodeAt(k)===Vc){for(;b++=p?S=!0:(R=c.charCodeAt(b++))===Oa?C=!0:R===jc&&(C=!0,c.charCodeAt(b)===Oa&&++b),c.slice(k+1,D-1).replace(/""/g,'"')}for(;bxe in we?$z(we,xe,{enumerable:!0,configurable:!0,writable:!0,value:Ce}):we[xe]=Ce;var St=(we,xe,Ce)=>(Zz(we,typeof xe!="symbol"?xe+"":xe,Ce),Ce),Pg=(we,xe,Ce)=>{if(!xe.has(we))throw TypeError("Cannot "+Ce)};var X=(we,xe,Ce)=>(Pg(we,xe,"read from private field"),Ce?Ce.call(we):xe.get(we)),ue=(we,xe,Ce)=>{if(xe.has(we))throw TypeError("Cannot add the same private member more than once");xe instanceof WeakSet?xe.add(we):xe.set(we,Ce)},bn=(we,xe,Ce,xo)=>(Pg(we,xe,"write to private field"),xo?xo.call(we,Ce):xe.set(we,Ce),Ce);var lS=(we,xe,Ce,xo)=>({set _(Kf){bn(we,xe,Kf,Ce)},get _(){return X(we,xe,xo)}}),ie=(we,xe,Ce)=>(Pg(we,xe,"access private method"),Ce);var Lf,Mg,Ta,zf,Uf,go,Qf,Gf,Og,mr,Ia,yt,Kn,mi,Ic,uS,ka,Oc,br,yo,Hf,Ng,kc,cS,Dg,Yz,Vf,Lg,jf,qf,yr,Da,Ba,Jt,mo,Fa,wr,wo,Dc,hS,bo,Xf,Wf,zg,$f,Ug,Zf,Gg,Bc,dS,Ra,Nc,Fc,pS,Pa,Z_;function xe(t,e){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}function Ce(t,e,n){return t.fields=e||[],t.fname=n,t}function xo(t){return t==null?null:t.fname}function Kf(t){return t==null?null:t.fields}function gS(t){return t.length===1?mS(t[0]):bS(t)}const mS=t=>function(e){return e[t]},bS=t=>{const e=t.length;return function(n){for(let r=0;ra?f():a=s+1:l==="["?(s>a&&f(),i=a=s+1):l==="]"&&(i||Ze("Access path missing open bracket: "+t),i>0&&f(),i=0,a=s+1)}return i&&Ze("Access path missing closing bracket: "+t),r&&Ze("Access path missing closing quote: "+t),s>a&&(s++,f()),e}function Jf(t,e,n){const r=yS(t);return t=r.length===1?r[0]:t,Ce((n&&n.get||gS)(r),[t],e||t)}Jf("id");const el=Ce(t=>t,[],"identity");Ce(()=>0,[],"zero"),Ce(()=>1,[],"one"),Ce(()=>!0,[],"true"),Ce(()=>!1,[],"false");var qt=Array.isArray;function Wt(t){return t===Object(t)}function yn(t){return t[t.length-1]}function Ma(t){return t==null||t===""?null:+t}const Hg=t=>e=>t*Math.exp(e),Vg=t=>e=>Math.log(t*e),wS=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),xS=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,tl=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function Lc(t,e,n,r){const i=n(t[0]),o=n(yn(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function vS(t,e){return Lc(t,e,Ma,el)}function AS(t,e){var n=Math.sign(t[0]);return Lc(t,e,Vg(n),Hg(n))}function ES(t,e,n){return Lc(t,e,tl(n),tl(1/n))}function nl(t,e,n,r,i){const o=r(t[0]),a=r(yn(t)),s=e!=null?r(e):(o+a)/2;return[i(s+(o-s)*n),i(s+(a-s)*n)]}function jg(t,e,n){return nl(t,e,n,Ma,el)}function qg(t,e,n){const r=Math.sign(t[0]);return nl(t,e,n,Vg(r),Hg(r))}function zc(t,e,n,r){return nl(t,e,n,tl(r),tl(1/r))}function _S(t,e,n,r){return nl(t,e,n,wS(r),xS(r))}function Uc(t){return t!=null?qt(t)?t:[t]:[]}function SS(t,e,n){let r=t[0],i=t[1],o;return i=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function Bt(t){return typeof t=="function"}const CS="descending";function Wg(t,e,n){n=n||{},e=Uc(e)||[];const r=[],i=[],o={},a=n.comparator||TS;return Uc(t).forEach((s,l)=>{s!=null&&(r.push(e[l]===CS?-1:1),i.push(s=Bt(s)?s:Jf(s,null,n)),(Kf(s)||[]).forEach(f=>o[f]=1))}),i.length===0?null:Ce(a(i,r),Object.keys(o))}const $g=(t,e)=>(te||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),TS=(t,e)=>t.length===1?IS(t[0],e[0]):kS(t,e,t.length),IS=(t,e)=>function(n,r){return $g(t(n),t(r))*e},kS=(t,e,n)=>(e.push(0),function(r,i){let o,a=0,s=-1;for(;a===0&&++st}function Gc(t){for(let e,n,r=1,i=arguments.length;rFt(t)||FS(t)?t:Date.parse(t);function NS(t,e){return e=e||OS,t==null||t===""?null:e(t)}function LS(t){return t==null||t===""?null:t+""}function al(t){const e={},n=t.length;for(let r=0;r9999?"+"+Rt(t,6):Rt(t,4)}function GS(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":US(t.getUTCFullYear())+"-"+Rt(t.getUTCMonth()+1,2)+"-"+Rt(t.getUTCDate(),2)+(i?"T"+Rt(e,2)+":"+Rt(n,2)+":"+Rt(r,2)+"."+Rt(i,3)+"Z":r?"T"+Rt(e,2)+":"+Rt(n,2)+":"+Rt(r,2)+"Z":n||e?"T"+Rt(e,2)+":"+Rt(n,2)+"Z":"")}function Xg(t){var e=new RegExp('["'+t+` +\r]`),n=t.charCodeAt(0);function r(c,h){var d,p,b=i(c,function(y,w){if(d)return d(y,w-1);p=y,d=h?zS(y,h):Yg(y)});return b.columns=p||[],b}function i(c,h){var d=[],p=c.length,b=0,y=0,w,S=p<=0,C=!1;c.charCodeAt(p-1)===Oa&&--p,c.charCodeAt(p-1)===jc&&--p;function _(){if(S)return Hc;if(C)return C=!1,Zg;var D,I=b,R;if(c.charCodeAt(I)===Vc){for(;b++=p?S=!0:(R=c.charCodeAt(b++))===Oa?C=!0:R===jc&&(C=!0,c.charCodeAt(b)===Oa&&++b),c.slice(I+1,D-1).replace(/""/g,'"')}for(;b1)r=KS(e,t,n);else for(i=0,r=new Array(o=e.arcs.length);it?1:e>=t?0:NaN}function JS(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function sf(e){let t,n,r;e.length!==2?(t=Na,n=(s,f)=>Na(e(s),f),r=(s,f)=>e(s)-f):(t=e===Na||e===JS?e:e3,n=e,r=e);function i(s,f,l=0,u=s.length){if(l>>1;n(s[c],f)<0?l=c+1:u=c}while(l>>1;n(s[c],f)<=0?l=c+1:u=c}while(ll&&r(s[c-1],f)>-r(s[c],f)?c-1:c}return{left:i,center:a,right:o}}function e3(){return 0}function em(e){return e===null?NaN:+e}const tm=sf(Na),qc=tm.right;tm.left,sf(em).center;const vo=qc;function t3(e,t){let n,r;if(t===void 0)for(const i of e)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r=o&&(n=r=o):(n>o&&(n=o),r=r.length)return n(o);const s=new yi,f=r[a++];let l=-1;for(const u of o){const c=f(u,++l,o),h=s.get(c);h?h.push(u):s.set(c,[u])}for(const[u,c]of s)s.set(u,i(c,a));return t(s)}(e,0)}var $c=Math.sqrt(50),Zc=Math.sqrt(10),Yc=Math.sqrt(2);function ff(e,t,n){var r,i=-1,o,a,s;if(t=+t,e=+e,n=+n,e===t&&n>0)return[e];if((r=t0){let f=Math.round(e/s),l=Math.round(t/s);for(f*st&&--l,a=new Array(o=l-f+1);++it&&--l,a=new Array(o=l-f+1);++i=0?(o>=$c?10:o>=Zc?5:o>=Yc?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=$c?10:o>=Zc?5:o>=Yc?2:1)}function wi(e,t,n){var r=Math.abs(t-e)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=$c?i*=10:o>=Zc?i*=5:o>=Yc&&(i*=2),t=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,o=Math.floor(i),a=+n(e[o],o,e),s=+n(e[o+1],o+1,e);return a+(s-a)*(i-o)}}function La(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,o=new Array(i);++r=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function cf(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Ao(e){return e=cf(Math.abs(e)),e?e[1]:NaN}function s3(e,t){return function(n,r){for(var i=n.length,o=[],a=0,s=e[0],f=0;i>0&&s>0&&(f+s+1>r&&(s=Math.max(1,r-f)),o.push(n.substring(i-=s,i+s)),!((f+=s+1)>r));)s=e[a=(a+1)%e.length];return o.reverse().join(t)}}function l3(e){return function(t){return t.replace(/[0-9]/g,function(n){return e[+n]})}}var f3=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function _r(e){if(!(t=f3.exec(e)))throw new Error("invalid format: "+e);var t;return new Qc({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]})}_r.prototype=Qc.prototype;function Qc(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+""}Qc.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 u3(e){e:for(var t=e.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var am;function c3(e,t){var n=cf(e,t);if(!n)return e+"";var r=n[0],i=n[1],o=i-(am=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+cf(e,Math.max(0,t+o-1))[0]}function sm(e,t){var n=cf(e,t);if(!n)return e+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const lm={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:a3,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)=>sm(e*100,t),r:sm,s:c3,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function fm(e){return e}var um=Array.prototype.map,cm=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function h3(e){var t=e.grouping===void 0||e.thousands===void 0?fm:s3(um.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+"",o=e.numerals===void 0?fm:l3(um.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"−":e.minus+"",f=e.nan===void 0?"NaN":e.nan+"";function l(c){c=_r(c);var h=c.fill,d=c.align,p=c.sign,b=c.symbol,y=c.zero,w=c.width,S=c.comma,C=c.precision,_=c.trim,I=c.type;I==="n"?(S=!0,I="g"):lm[I]||(C===void 0&&(C=12),_=!0,I="g"),(y||h==="0"&&d==="=")&&(y=!0,h="0",d="=");var D=b==="$"?n:b==="#"&&/[boxX]/.test(I)?"0"+I.toLowerCase():"",k=b==="$"?r:/[%p]/.test(I)?a:"",R=lm[I],M=/[defgprs%]/.test(I);C=C===void 0?6:/[gprs]/.test(I)?Math.max(1,Math.min(21,C)):Math.max(0,Math.min(20,C));function j(L){var ne=D,ae=k,de,Ie,Qe;if(I==="c")ae=R(L)+ae,L="";else{L=+L;var Be=L<0||1/L<0;if(L=isNaN(L)?f:R(Math.abs(L),C),_&&(L=u3(L)),Be&&+L==0&&p!=="+"&&(Be=!1),ne=(Be?p==="("?p:s:p==="-"||p==="("?"":p)+ne,ae=(I==="s"?cm[8+am/3]:"")+ae+(Be&&p==="("?")":""),M){for(de=-1,Ie=L.length;++deQe||Qe>57){ae=(Qe===46?i+L.slice(de+1):L.slice(de))+ae,L=L.slice(0,de);break}}}S&&!y&&(L=t(L,1/0));var Ke=ne.length+L.length+ae.length,qe=Ke>1)+ne+L+ae+qe.slice(Ke);break;default:L=qe+ne+L+ae;break}return o(L)}return j.toString=function(){return c+""},j}function u(c,h){var d=l((c=_r(c),c.type="f",c)),p=Math.max(-8,Math.min(8,Math.floor(Ao(h)/3)))*3,b=Math.pow(10,-p),y=cm[8+p/3];return function(w){return d(b*w)+y}}return{format:l,formatPrefix:u}}var hf,pt,Xc;d3({thousands:",",grouping:[3],currency:["$",""]});function d3(e){return hf=h3(e),pt=hf.format,Xc=hf.formatPrefix,hf}function hm(e){return Math.max(0,-Ao(Math.abs(e)))}function dm(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ao(t)/3)))*3-Ao(Math.abs(e)))}function pm(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Ao(t)-Ao(e))+1}var Kc=new Date,Jc=new Date;function at(e,t,n,r){function i(o){return e(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return e(o=new Date(+o)),o},i.ceil=function(o){return e(o=new Date(o-1)),t(o,1),e(o),o},i.round=function(o){var a=i(o),s=i.ceil(o);return o-a0))return f;do f.push(l=new Date(+o)),t(o,s),e(o);while(l=a)for(;e(a),!o(a);)a.setTime(a-1)},function(a,s){if(a>=a)if(s<0)for(;++s<=0;)for(;t(a,-1),!o(a););else for(;--s>=0;)for(;t(a,1),!o(a););})},n&&(i.count=function(o,a){return Kc.setTime(+o),Jc.setTime(+a),e(Kc),e(Jc),Math.floor(n(Kc,Jc))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(a){return r(a)%o===0}:function(a){return i.count(0,a)%o===0}):i}),i}var df=at(function(){},function(e,t){e.setTime(+e+t)},function(e,t){return t-e});df.every=function(e){return e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?at(function(t){t.setTime(Math.floor(t/e)*e)},function(t,n){t.setTime(+t+n*e)},function(t,n){return(n-t)/e}):df};const eh=df;df.range;const tr=1e3,Jt=tr*60,nr=Jt*60,xi=nr*24,th=xi*7,gm=xi*30,nh=xi*365;var mm=at(function(e){e.setTime(e-e.getMilliseconds())},function(e,t){e.setTime(+e+t*tr)},function(e,t){return(t-e)/tr},function(e){return e.getUTCSeconds()});const Sr=mm;mm.range;var bm=at(function(e){e.setTime(e-e.getMilliseconds()-e.getSeconds()*tr)},function(e,t){e.setTime(+e+t*Jt)},function(e,t){return(t-e)/Jt},function(e){return e.getMinutes()});const rh=bm;bm.range;var ym=at(function(e){e.setTime(e-e.getMilliseconds()-e.getSeconds()*tr-e.getMinutes()*Jt)},function(e,t){e.setTime(+e+t*nr)},function(e,t){return(t-e)/nr},function(e){return e.getHours()});const ih=ym;ym.range;var wm=at(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Jt)/xi,e=>e.getDate()-1);const vi=wm;wm.range;function Ai(e){return at(function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n*7)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Jt)/th})}var za=Ai(0),pf=Ai(1),p3=Ai(2),g3=Ai(3),Eo=Ai(4),m3=Ai(5),b3=Ai(6);za.range,pf.range,p3.range,g3.range,Eo.range,m3.range,b3.range;var xm=at(function(e){e.setDate(1),e.setHours(0,0,0,0)},function(e,t){e.setMonth(e.getMonth()+t)},function(e,t){return t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12},function(e){return e.getMonth()});const gf=xm;xm.range;var oh=at(function(e){e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,t){e.setFullYear(e.getFullYear()+t)},function(e,t){return t.getFullYear()-e.getFullYear()},function(e){return e.getFullYear()});oh.every=function(e){return!isFinite(e=Math.floor(e))||!(e>0)?null:at(function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n*e)})};const Cr=oh;oh.range;var vm=at(function(e){e.setUTCSeconds(0,0)},function(e,t){e.setTime(+e+t*Jt)},function(e,t){return(t-e)/Jt},function(e){return e.getUTCMinutes()});const ah=vm;vm.range;var Am=at(function(e){e.setUTCMinutes(0,0,0)},function(e,t){e.setTime(+e+t*nr)},function(e,t){return(t-e)/nr},function(e){return e.getUTCHours()});const sh=Am;Am.range;var Em=at(function(e){e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCDate(e.getUTCDate()+t)},function(e,t){return(t-e)/xi},function(e){return e.getUTCDate()-1});const Ei=Em;Em.range;function _i(e){return at(function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n*7)},function(t,n){return(n-t)/th})}var Ua=_i(0),mf=_i(1),y3=_i(2),w3=_i(3),_o=_i(4),x3=_i(5),v3=_i(6);Ua.range,mf.range,y3.range,w3.range,_o.range,x3.range,v3.range;var _m=at(function(e){e.setUTCDate(1),e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCMonth(e.getUTCMonth()+t)},function(e,t){return t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12},function(e){return e.getUTCMonth()});const bf=_m;_m.range;var lh=at(function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)},function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()},function(e){return e.getUTCFullYear()});lh.every=function(e){return!isFinite(e=Math.floor(e))||!(e>0)?null:at(function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)})};const Tr=lh;lh.range;function Sm(e,t,n,r,i,o){const a=[[Sr,1,tr],[Sr,5,5*tr],[Sr,15,15*tr],[Sr,30,30*tr],[o,1,Jt],[o,5,5*Jt],[o,15,15*Jt],[o,30,30*Jt],[i,1,nr],[i,3,3*nr],[i,6,6*nr],[i,12,12*nr],[r,1,xi],[r,2,2*xi],[n,1,th],[t,1,gm],[t,3,3*gm],[e,1,nh]];function s(l,u,c){const h=uy).right(a,h);if(d===a.length)return e.every(wi(l/nh,u/nh,c));if(d===0)return eh.every(Math.max(wi(l,u,c),1));const[p,b]=a[h/a[d-1][2](e[t]=1+n,e),{});const C3={[Ga]:Cr,[Ha]:gf.every(3),[Va]:gf,[ja]:za,[qa]:vi,[yf]:vi,[fh]:vi,[Wa]:ih,[$a]:rh,[Za]:Sr,[wf]:eh},T3={[Ga]:Tr,[Ha]:bf.every(3),[Va]:bf,[ja]:Ua,[qa]:Ei,[yf]:Ei,[fh]:Ei,[Wa]:sh,[$a]:ah,[Za]:Sr,[wf]:eh};function k3(e){return C3[e]}function I3(e){return T3[e]}function uh(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 ch(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 Ya(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function Cm(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,o=e.days,a=e.shortDays,s=e.months,f=e.shortMonths,l=Qa(i),u=Xa(i),c=Qa(o),h=Xa(o),d=Qa(a),p=Xa(a),b=Qa(s),y=Xa(s),w=Qa(f),S=Xa(f),C={a:Be,A:Ke,b:qe,B:Je,c:null,d:Fm,e:Fm,f:K3,g:lC,G:uC,H:Y3,I:Q3,j:X3,L:Rm,m:J3,M:eC,p:Ee,q:_e,Q:zm,s:Um,S:tC,u:nC,U:rC,V:iC,w:oC,W:aC,x:null,X:null,y:sC,Y:fC,Z:cC,"%":Lm},_={a:dt,A:Gt,b:Ne,B:O,c:null,d:Mm,e:Mm,f:gC,g:SC,G:TC,H:hC,I:dC,j:pC,L:Om,m:mC,M:bC,p:P,q,Q:zm,s:Um,S:yC,u:wC,U:xC,V:vC,w:AC,W:EC,x:null,X:null,y:_C,Y:CC,Z:kC,"%":Lm},I={a:j,A:L,b:ne,B:ae,c:de,d:Dm,e:Dm,f:q3,g:Im,G:km,H:Bm,I:Bm,j:G3,L:j3,m:U3,M:H3,p:M,q:z3,Q:$3,s:Z3,S:V3,u:P3,U:M3,V:O3,w:R3,W:N3,x:Ie,X:Qe,y:Im,Y:km,Z:L3,"%":W3};C.x=D(n,C),C.X=D(r,C),C.c=D(t,C),_.x=D(n,_),_.X=D(r,_),_.c=D(t,_);function D(H,$){return function(E){var v=[],G=-1,W=0,se=H.length,J,le,Ht;for(E instanceof Date||(E=new Date(+E));++G53)return null;"w"in v||(v.w=1),"Z"in v?(W=ch(Ya(v.y,0,1)),se=W.getUTCDay(),W=se>4||se===0?mf.ceil(W):mf(W),W=Ei.offset(W,(v.V-1)*7),v.y=W.getUTCFullYear(),v.m=W.getUTCMonth(),v.d=W.getUTCDate()+(v.w+6)%7):(W=uh(Ya(v.y,0,1)),se=W.getDay(),W=se>4||se===0?pf.ceil(W):pf(W),W=vi.offset(W,(v.V-1)*7),v.y=W.getFullYear(),v.m=W.getMonth(),v.d=W.getDate()+(v.w+6)%7)}else("W"in v||"U"in v)&&("w"in v||(v.w="u"in v?v.u%7:"W"in v?1:0),se="Z"in v?ch(Ya(v.y,0,1)).getUTCDay():uh(Ya(v.y,0,1)).getDay(),v.m=0,v.d="W"in v?(v.w+6)%7+v.W*7-(se+5)%7:v.w+v.U*7-(se+6)%7);return"Z"in v?(v.H+=v.Z/100|0,v.M+=v.Z%100,ch(v)):uh(v)}}function R(H,$,E,v){for(var G=0,W=$.length,se=E.length,J,le;G=se)return-1;if(J=$.charCodeAt(G++),J===37){if(J=$.charAt(G++),le=I[J in Tm?$.charAt(G++):J],!le||(v=le(H,E,v))<0)return-1}else if(J!=E.charCodeAt(v++))return-1}return v}function M(H,$,E){var v=l.exec($.slice(E));return v?(H.p=u.get(v[0].toLowerCase()),E+v[0].length):-1}function j(H,$,E){var v=d.exec($.slice(E));return v?(H.w=p.get(v[0].toLowerCase()),E+v[0].length):-1}function L(H,$,E){var v=c.exec($.slice(E));return v?(H.w=h.get(v[0].toLowerCase()),E+v[0].length):-1}function ne(H,$,E){var v=w.exec($.slice(E));return v?(H.m=S.get(v[0].toLowerCase()),E+v[0].length):-1}function ae(H,$,E){var v=b.exec($.slice(E));return v?(H.m=y.get(v[0].toLowerCase()),E+v[0].length):-1}function de(H,$,E){return R(H,t,$,E)}function Ie(H,$,E){return R(H,n,$,E)}function Qe(H,$,E){return R(H,r,$,E)}function Be(H){return a[H.getDay()]}function Ke(H){return o[H.getDay()]}function qe(H){return f[H.getMonth()]}function Je(H){return s[H.getMonth()]}function Ee(H){return i[+(H.getHours()>=12)]}function _e(H){return 1+~~(H.getMonth()/3)}function dt(H){return a[H.getUTCDay()]}function Gt(H){return o[H.getUTCDay()]}function Ne(H){return f[H.getUTCMonth()]}function O(H){return s[H.getUTCMonth()]}function P(H){return i[+(H.getUTCHours()>=12)]}function q(H){return 1+~~(H.getUTCMonth()/3)}return{format:function(H){var $=D(H+="",C);return $.toString=function(){return H},$},parse:function(H){var $=k(H+="",!1);return $.toString=function(){return H},$},utcFormat:function(H){var $=D(H+="",_);return $.toString=function(){return H},$},utcParse:function(H){var $=k(H+="",!0);return $.toString=function(){return H},$}}}var Tm={"-":"",_:" ",0:"0"},st=/^\s*\d+/,D3=/^%/,B3=/[\\^$*+?|[\]().{}]/g;function ge(e,t,n){var r=e<0?"-":"",i=(r?-e:e)+"",o=i.length;return r+(o[t.toLowerCase(),n]))}function R3(e,t,n){var r=st.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function P3(e,t,n){var r=st.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function M3(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function O3(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function N3(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function km(e,t,n){var r=st.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Im(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function L3(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 z3(e,t,n){var r=st.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function U3(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Dm(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function G3(e,t,n){var r=st.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Bm(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function H3(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function V3(e,t,n){var r=st.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function j3(e,t,n){var r=st.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function q3(e,t,n){var r=st.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function W3(e,t,n){var r=D3.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function $3(e,t,n){var r=st.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Z3(e,t,n){var r=st.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Fm(e,t){return ge(e.getDate(),t,2)}function Y3(e,t){return ge(e.getHours(),t,2)}function Q3(e,t){return ge(e.getHours()%12||12,t,2)}function X3(e,t){return ge(1+vi.count(Cr(e),e),t,3)}function Rm(e,t){return ge(e.getMilliseconds(),t,3)}function K3(e,t){return Rm(e,t)+"000"}function J3(e,t){return ge(e.getMonth()+1,t,2)}function eC(e,t){return ge(e.getMinutes(),t,2)}function tC(e,t){return ge(e.getSeconds(),t,2)}function nC(e){var t=e.getDay();return t===0?7:t}function rC(e,t){return ge(za.count(Cr(e)-1,e),t,2)}function Pm(e){var t=e.getDay();return t>=4||t===0?Eo(e):Eo.ceil(e)}function iC(e,t){return e=Pm(e),ge(Eo.count(Cr(e),e)+(Cr(e).getDay()===4),t,2)}function oC(e){return e.getDay()}function aC(e,t){return ge(pf.count(Cr(e)-1,e),t,2)}function sC(e,t){return ge(e.getFullYear()%100,t,2)}function lC(e,t){return e=Pm(e),ge(e.getFullYear()%100,t,2)}function fC(e,t){return ge(e.getFullYear()%1e4,t,4)}function uC(e,t){var n=e.getDay();return e=n>=4||n===0?Eo(e):Eo.ceil(e),ge(e.getFullYear()%1e4,t,4)}function cC(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+ge(t/60|0,"0",2)+ge(t%60,"0",2)}function Mm(e,t){return ge(e.getUTCDate(),t,2)}function hC(e,t){return ge(e.getUTCHours(),t,2)}function dC(e,t){return ge(e.getUTCHours()%12||12,t,2)}function pC(e,t){return ge(1+Ei.count(Tr(e),e),t,3)}function Om(e,t){return ge(e.getUTCMilliseconds(),t,3)}function gC(e,t){return Om(e,t)+"000"}function mC(e,t){return ge(e.getUTCMonth()+1,t,2)}function bC(e,t){return ge(e.getUTCMinutes(),t,2)}function yC(e,t){return ge(e.getUTCSeconds(),t,2)}function wC(e){var t=e.getUTCDay();return t===0?7:t}function xC(e,t){return ge(Ua.count(Tr(e)-1,e),t,2)}function Nm(e){var t=e.getUTCDay();return t>=4||t===0?_o(e):_o.ceil(e)}function vC(e,t){return e=Nm(e),ge(_o.count(Tr(e),e)+(Tr(e).getUTCDay()===4),t,2)}function AC(e){return e.getUTCDay()}function EC(e,t){return ge(mf.count(Tr(e)-1,e),t,2)}function _C(e,t){return ge(e.getUTCFullYear()%100,t,2)}function SC(e,t){return e=Nm(e),ge(e.getUTCFullYear()%100,t,2)}function CC(e,t){return ge(e.getUTCFullYear()%1e4,t,4)}function TC(e,t){var n=e.getUTCDay();return e=n>=4||n===0?_o(e):_o.ceil(e),ge(e.getUTCFullYear()%1e4,t,4)}function kC(){return"+0000"}function Lm(){return"%"}function zm(e){return+e}function Um(e){return Math.floor(+e/1e3)}var So,hh,Gm,dh,Hm;IC({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 IC(e){return So=Cm(e),hh=So.format,Gm=So.parse,dh=So.utcFormat,Hm=So.utcParse,So}function Ka(e){const t={};return n=>t[n]||(t[n]=e(n))}function DC(e,t){return n=>{const r=e(n),i=r.indexOf(t);if(i<0)return r;let o=BC(r,i);const a=oi;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function BC(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 FC(e){const t=Ka(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(r){const i=_r(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return DC(t(i),t(".1f")(1)[1])}else return t(i)},formatSpan(r,i,o,a){a=_r(a??",f");const s=wi(r,i,o),f=Math.max(Math.abs(r),Math.abs(i));let l;if(a.precision==null)switch(a.type){case"s":return isNaN(l=dm(s,f))||(a.precision=l),n(a,f);case"":case"e":case"g":case"p":case"r":{isNaN(l=pm(s,f))||(a.precision=l-(a.type==="e"));break}case"f":case"%":{isNaN(l=hm(s))||(a.precision=l-(a.type==="%")*2);break}}return t(a)}}}RC();function RC(){return FC({format:pt,formatPrefix:Xc})}function Vm(e,t,n){n=n||{},qt(n)||Ze("Invalid time multi-format specifier: ".concat(n));const r=t(Za),i=t($a),o=t(Wa),a=t(qa),s=t(ja),f=t(Va),l=t(Ha),u=t(Ga),c=e(n[wf]||".%L"),h=e(n[Za]||":%S"),d=e(n[$a]||"%I:%M"),p=e(n[Wa]||"%I %p"),b=e(n[qa]||n[yf]||"%a %d"),y=e(n[ja]||"%b %d"),w=e(n[Va]||"%B"),S=e(n[Ha]||"%B"),C=e(n[Ga]||"%Y");return _=>(r(_)<_?c:i(_)<_?h:o(_)<_?d:a(_)<_?p:f(_)<_?s(_)<_?b:y:u(_)<_?l(_)<_?w:S:C)(_)}function jm(e){const t=Ka(e.format),n=Ka(e.utcFormat);return{timeFormat:r=>Ye(r)?t(r):Vm(t,k3,r),utcFormat:r=>Ye(r)?n(r):Vm(n,I3,r),timeParse:Ka(e.parse),utcParse:Ka(e.utcParse)}}let ph;PC();function PC(){return ph=jm({format:hh,parse:Gm,utcFormat:dh,utcParse:Hm})}function MC(e){return jm(Cm(e))}function OC(e){return arguments.length?ph=MC(e):ph}const NC=/^(data:|([A-Za-z]+:)?\/\/)/,LC=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,zC=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,qm="file://";function UC(e,t){return n=>({options:n||{},sanitize:HC,load:GC,fileAccess:!!t,file:VC(t),http:qC(e)})}async function GC(e,t){const n=await this.sanitize(e,t),r=n.href;return n.localFile?this.file(r):this.http(r,t)}async function HC(e,t){t=Gc({},this.options,t);const n=this.fileAccess,r={href:null};let i,o,a;const s=LC.test(e.replace(zC,""));(e==null||typeof e!="string"||!s)&&Ze("Sanitize failure, invalid URI: "+of(e));const f=NC.test(e);return(a=t.baseURL)&&!f&&(!e.startsWith("/")&&!a.endsWith("/")&&(e="/"+e),e=a+e),o=(i=e.startsWith(qm))||t.mode==="file"||t.mode!=="http"&&!f&&n,i?e=e.slice(qm.length):e.startsWith("//")&&(t.defaultProtocol==="file"?(e=e.slice(2),o=!0):e=(t.defaultProtocol||"http")+":"+e),Object.defineProperty(r,"localFile",{value:!!o}),r.href=e,t.target&&(r.target=t.target+""),t.rel&&(r.rel=t.rel+""),t.context==="image"&&t.crossOrigin&&(r.crossOrigin=t.crossOrigin+""),r}function VC(e){return e?t=>new Promise((n,r)=>{e.readFile(t,(i,o)=>{i?r(i):n(o)})}):jC}async function jC(){Ze("No file system access.")}function qC(e){return e?async function(t,n){const r=Gc({},this.options.http,n),i=n&&n.response,o=await e(t,r);return o.ok?Bt(o[i])?o[i]():o.text():Ze(o.status+""+o.statusText)}:WC}async function WC(){Ze("No HTTP fetch method available.")}const $C=e=>e!=null&&e===e,ZC=e=>e==="true"||e==="false"||e===!0||e===!1,YC=e=>!Number.isNaN(Date.parse(e)),Wm=e=>!Number.isNaN(+e)&&!(e instanceof Date),QC=e=>Wm(e)&&Number.isInteger(+e),$m={boolean:OS,integer:Ma,number:Ma,date:LS,string:zS,unknown:Jl},xf=[ZC,QC,Wm,YC],XC=["boolean","integer","number","date"];function KC(e,t){if(!e||!e.length)return"unknown";const n=e.length,r=xf.length,i=xf.map((o,a)=>a+1);for(let o=0,a=0,s,f;oo===0?a:o,0)-1]}function JC(e,t){return t.reduce((n,r)=>(n[r]=KC(e,r),n),{})}function Zm(e){const t=function(n,r){const i={delimiter:e};return gh(n,r?Gc(r,i):i)};return t.responseType="text",t}function gh(e,t){return t.header&&(e=t.header.map(of).join(t.delimiter)+` -`+e),Xg(t.delimiter).parse(e+"")}gh.responseType="text";function e8(e){return typeof Buffer=="function"&&Bt(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function mh(e,t){const n=t&&t.property?Kl(t.property):Jl;return qt(e)&&!e8(e)?t8(n(e),t):n(JSON.parse(e))}mh.responseType="json";function t8(e,t){return!jt(e)&&PS(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}const n8={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function Ym(e,t){let n,r,i,o;return e=mh(e,t),t&&t.feature?(n=ZS,i=t.feature):t&&t.mesh?(n=QS,i=t.mesh,o=n8[t.filter]):Ze("Missing TopoJSON feature or mesh parameter."),r=(r=e.objects[i])?n(e,r,o):Ze("Invalid TopoJSON object: "+i),r&&r.features||[r]}Ym.responseType="json";const bh={dsv:gh,csv:Zm(","),tsv:Zm(" "),json:mh,topojson:Ym};function Qm(e,t){return arguments.length>1?(bh[e]=t,this):bi(bh,e)?bh[e]:null}function Xm(e,t,n,r){t=t||{};const i=Qm(t.type||"json");return i||Ze("Unknown data format type: "+t.type),e=i(e,t),t.parse&&r8(e,t.parse,n,r),bi(e,"columns")&&delete e.columns,e}function r8(e,t,n,r){if(!e.length)return;const i=OC();n=n||i.timeParse,r=r||i.utcParse;let o=e.columns||Object.keys(e[0]),a,s,f,l,u,c;t==="auto"&&(t=JC(e,o)),o=Object.keys(t);const h=o.map(d=>{const p=t[d];let b,y;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return b=p.split(/:(.+)?/,2),y=b[1],(y[0]==="'"&&y[y.length-1]==="'"||y[0]==='"'&&y[y.length-1]==='"')&&(y=y.slice(1,-1)),(b[0]==="utc"?r:n)(y);if(!$m[p])throw Error("Illegal format pattern: "+d+":"+p);return $m[p]});for(f=0,u=e.length,c=o.length;f1)r=XS(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);ie?1:t>=e?0:NaN}function KS(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}function sl(t){let e,n,r;t.length!==2?(e=Na,n=(s,l)=>Na(t(s),l),r=(s,l)=>t(s)-l):(e=t===Na||t===KS?t:JS,n=t,r=t);function i(s,l,f=0,u=s.length){if(f>>1;n(s[c],l)<0?f=c+1:u=c}while(f>>1;n(s[c],l)<=0?f=c+1:u=c}while(ff&&r(s[c-1],l)>-r(s[c],l)?c-1:c}return{left:i,center:a,right:o}}function JS(){return 0}function em(t){return t===null?NaN:+t}const tm=sl(Na),qc=tm.right;tm.left,sl(em).center;const vo=qc;function e3(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r=o&&(n=r=o):(n>o&&(n=o),r=r.length)return n(o);const s=new yi,l=r[a++];let f=-1;for(const u of o){const c=l(u,++f,o),h=s.get(c);h?h.push(u):s.set(c,[u])}for(const[u,c]of s)s.set(u,i(c,a));return e(s)}(t,0)}var $c=Math.sqrt(50),Zc=Math.sqrt(10),Yc=Math.sqrt(2);function ll(t,e,n){var r,i=-1,o,a,s;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e0){let l=Math.round(t/s),f=Math.round(e/s);for(l*se&&--f,a=new Array(o=f-l+1);++ie&&--f,a=new Array(o=f-l+1);++i=0?(o>=$c?10:o>=Zc?5:o>=Yc?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=$c?10:o>=Zc?5:o>=Yc?2:1)}function wi(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=$c?i*=10:o>=Zc?i*=5:o>=Yc&&(i*=2),e=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),a=+n(t[o],o,t),s=+n(t[o+1],o+1,t);return a+(s-a)*(i-o)}}function La(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function cl(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Ao(t){return t=cl(Math.abs(t)),t?t[1]:NaN}function a3(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],l=0;i>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),o.push(n.substring(i-=s,i+s)),!((l+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function s3(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var f3=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function _r(t){if(!(e=f3.exec(t)))throw new Error("invalid format: "+t);var e;return new Qc({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}_r.prototype=Qc.prototype;function Qc(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Qc.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 l3(t){e:for(var e=t.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var am;function u3(t,e){var n=cl(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(am=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+cl(t,Math.max(0,e+o-1))[0]}function sm(t,e){var n=cl(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const fm={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:o3,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>sm(t*100,e),r:sm,s:u3,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function lm(t){return t}var um=Array.prototype.map,cm=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function c3(t){var e=t.grouping===void 0||t.thousands===void 0?lm:a3(um.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?lm:s3(um.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"−":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function f(c){c=_r(c);var h=c.fill,d=c.align,p=c.sign,b=c.symbol,y=c.zero,w=c.width,S=c.comma,C=c.precision,_=c.trim,k=c.type;k==="n"?(S=!0,k="g"):fm[k]||(C===void 0&&(C=12),_=!0,k="g"),(y||h==="0"&&d==="=")&&(y=!0,h="0",d="=");var D=b==="$"?n:b==="#"&&/[boxX]/.test(k)?"0"+k.toLowerCase():"",I=b==="$"?r:/[%p]/.test(k)?a:"",R=fm[k],M=/[defgprs%]/.test(k);C=C===void 0?6:/[gprs]/.test(k)?Math.max(1,Math.min(21,C)):Math.max(0,Math.min(20,C));function j(L){var ne=D,ae=I,de,ke,Qe;if(k==="c")ae=R(L)+ae,L="";else{L=+L;var Be=L<0||1/L<0;if(L=isNaN(L)?l:R(Math.abs(L),C),_&&(L=l3(L)),Be&&+L==0&&p!=="+"&&(Be=!1),ne=(Be?p==="("?p:s:p==="-"||p==="("?"":p)+ne,ae=(k==="s"?cm[8+am/3]:"")+ae+(Be&&p==="("?")":""),M){for(de=-1,ke=L.length;++deQe||Qe>57){ae=(Qe===46?i+L.slice(de+1):L.slice(de))+ae,L=L.slice(0,de);break}}}S&&!y&&(L=e(L,1/0));var Ke=ne.length+L.length+ae.length,qe=Ke>1)+ne+L+ae+qe.slice(Ke);break;default:L=qe+ne+L+ae;break}return o(L)}return j.toString=function(){return c+""},j}function u(c,h){var d=f((c=_r(c),c.type="f",c)),p=Math.max(-8,Math.min(8,Math.floor(Ao(h)/3)))*3,b=Math.pow(10,-p),y=cm[8+p/3];return function(w){return d(b*w)+y}}return{format:f,formatPrefix:u}}var hl,pt,Xc;h3({thousands:",",grouping:[3],currency:["$",""]});function h3(t){return hl=c3(t),pt=hl.format,Xc=hl.formatPrefix,hl}function hm(t){return Math.max(0,-Ao(Math.abs(t)))}function dm(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ao(e)/3)))*3-Ao(Math.abs(t)))}function pm(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Ao(e)-Ao(t))+1}var Kc=new Date,Jc=new Date;function at(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var a=i(o),s=i.ceil(o);return o-a0))return l;do l.push(f=new Date(+o)),e(o,s),t(o);while(f=a)for(;t(a),!o(a);)a.setTime(a-1)},function(a,s){if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););})},n&&(i.count=function(o,a){return Kc.setTime(+o),Jc.setTime(+a),t(Kc),t(Jc),Math.floor(n(Kc,Jc))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(a){return r(a)%o===0}:function(a){return i.count(0,a)%o===0}):i}),i}var dl=at(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});dl.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?at(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):dl};const eh=dl;dl.range;const tr=1e3,en=tr*60,nr=en*60,xi=nr*24,th=xi*7,gm=xi*30,nh=xi*365;var mm=at(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*tr)},function(t,e){return(e-t)/tr},function(t){return t.getUTCSeconds()});const Sr=mm;mm.range;var bm=at(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tr)},function(t,e){t.setTime(+t+e*en)},function(t,e){return(e-t)/en},function(t){return t.getMinutes()});const rh=bm;bm.range;var ym=at(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*tr-t.getMinutes()*en)},function(t,e){t.setTime(+t+e*nr)},function(t,e){return(e-t)/nr},function(t){return t.getHours()});const ih=ym;ym.range;var wm=at(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*en)/xi,t=>t.getDate()-1);const vi=wm;wm.range;function Ai(t){return at(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*en)/th})}var za=Ai(0),pl=Ai(1),d3=Ai(2),p3=Ai(3),Eo=Ai(4),g3=Ai(5),m3=Ai(6);za.range,pl.range,d3.range,p3.range,Eo.range,g3.range,m3.range;var xm=at(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const gl=xm;xm.range;var oh=at(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});oh.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:at(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const Cr=oh;oh.range;var vm=at(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*en)},function(t,e){return(e-t)/en},function(t){return t.getUTCMinutes()});const ah=vm;vm.range;var Am=at(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*nr)},function(t,e){return(e-t)/nr},function(t){return t.getUTCHours()});const sh=Am;Am.range;var Em=at(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/xi},function(t){return t.getUTCDate()-1});const Ei=Em;Em.range;function _i(t){return at(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/th})}var Ua=_i(0),ml=_i(1),b3=_i(2),y3=_i(3),_o=_i(4),w3=_i(5),x3=_i(6);Ua.range,ml.range,b3.range,y3.range,_o.range,w3.range,x3.range;var _m=at(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const bl=_m;_m.range;var fh=at(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});fh.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:at(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const Tr=fh;fh.range;function Sm(t,e,n,r,i,o){const a=[[Sr,1,tr],[Sr,5,5*tr],[Sr,15,15*tr],[Sr,30,30*tr],[o,1,en],[o,5,5*en],[o,15,15*en],[o,30,30*en],[i,1,nr],[i,3,3*nr],[i,6,6*nr],[i,12,12*nr],[r,1,xi],[r,2,2*xi],[n,1,th],[e,1,gm],[e,3,3*gm],[t,1,nh]];function s(f,u,c){const h=uy).right(a,h);if(d===a.length)return t.every(wi(f/nh,u/nh,c));if(d===0)return eh.every(Math.max(wi(f,u,c),1));const[p,b]=a[h/a[d-1][2](t[e]=1+n,t),{});const S3={[Ga]:Cr,[Ha]:gl.every(3),[Va]:gl,[ja]:za,[qa]:vi,[yl]:vi,[lh]:vi,[Wa]:ih,[$a]:rh,[Za]:Sr,[wl]:eh},C3={[Ga]:Tr,[Ha]:bl.every(3),[Va]:bl,[ja]:Ua,[qa]:Ei,[yl]:Ei,[lh]:Ei,[Wa]:sh,[$a]:ah,[Za]:Sr,[wl]:eh};function T3(t){return S3[t]}function I3(t){return C3[t]}function uh(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function ch(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Ya(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Cm(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,l=t.shortMonths,f=Qa(i),u=Xa(i),c=Qa(o),h=Xa(o),d=Qa(a),p=Xa(a),b=Qa(s),y=Xa(s),w=Qa(l),S=Xa(l),C={a:Be,A:Ke,b:qe,B:Je,c:null,d:Fm,e:Fm,f:X3,g:sC,G:lC,H:Z3,I:Y3,j:Q3,L:Rm,m:K3,M:J3,p:Ee,q:_e,Q:zm,s:Um,S:eC,u:tC,U:nC,V:rC,w:iC,W:oC,x:null,X:null,y:aC,Y:fC,Z:uC,"%":Lm},_={a:dt,A:Ht,b:Ne,B:O,c:null,d:Mm,e:Mm,f:pC,g:_C,G:CC,H:cC,I:hC,j:dC,L:Om,m:gC,M:mC,p:P,q,Q:zm,s:Um,S:bC,u:yC,U:wC,V:xC,w:vC,W:AC,x:null,X:null,y:EC,Y:SC,Z:TC,"%":Lm},k={a:j,A:L,b:ne,B:ae,c:de,d:Dm,e:Dm,f:j3,g:km,G:Im,H:Bm,I:Bm,j:U3,L:V3,m:z3,M:G3,p:M,q:L3,Q:W3,s:$3,S:H3,u:R3,U:P3,V:M3,w:F3,W:O3,x:ke,X:Qe,y:km,Y:Im,Z:N3,"%":q3};C.x=D(n,C),C.X=D(r,C),C.c=D(e,C),_.x=D(n,_),_.X=D(r,_),_.c=D(e,_);function D(H,$){return function(E){var v=[],G=-1,W=0,se=H.length,J,fe,Vt;for(E instanceof Date||(E=new Date(+E));++G53)return null;"w"in v||(v.w=1),"Z"in v?(W=ch(Ya(v.y,0,1)),se=W.getUTCDay(),W=se>4||se===0?ml.ceil(W):ml(W),W=Ei.offset(W,(v.V-1)*7),v.y=W.getUTCFullYear(),v.m=W.getUTCMonth(),v.d=W.getUTCDate()+(v.w+6)%7):(W=uh(Ya(v.y,0,1)),se=W.getDay(),W=se>4||se===0?pl.ceil(W):pl(W),W=vi.offset(W,(v.V-1)*7),v.y=W.getFullYear(),v.m=W.getMonth(),v.d=W.getDate()+(v.w+6)%7)}else("W"in v||"U"in v)&&("w"in v||(v.w="u"in v?v.u%7:"W"in v?1:0),se="Z"in v?ch(Ya(v.y,0,1)).getUTCDay():uh(Ya(v.y,0,1)).getDay(),v.m=0,v.d="W"in v?(v.w+6)%7+v.W*7-(se+5)%7:v.w+v.U*7-(se+6)%7);return"Z"in v?(v.H+=v.Z/100|0,v.M+=v.Z%100,ch(v)):uh(v)}}function R(H,$,E,v){for(var G=0,W=$.length,se=E.length,J,fe;G=se)return-1;if(J=$.charCodeAt(G++),J===37){if(J=$.charAt(G++),fe=k[J in Tm?$.charAt(G++):J],!fe||(v=fe(H,E,v))<0)return-1}else if(J!=E.charCodeAt(v++))return-1}return v}function M(H,$,E){var v=f.exec($.slice(E));return v?(H.p=u.get(v[0].toLowerCase()),E+v[0].length):-1}function j(H,$,E){var v=d.exec($.slice(E));return v?(H.w=p.get(v[0].toLowerCase()),E+v[0].length):-1}function L(H,$,E){var v=c.exec($.slice(E));return v?(H.w=h.get(v[0].toLowerCase()),E+v[0].length):-1}function ne(H,$,E){var v=w.exec($.slice(E));return v?(H.m=S.get(v[0].toLowerCase()),E+v[0].length):-1}function ae(H,$,E){var v=b.exec($.slice(E));return v?(H.m=y.get(v[0].toLowerCase()),E+v[0].length):-1}function de(H,$,E){return R(H,e,$,E)}function ke(H,$,E){return R(H,n,$,E)}function Qe(H,$,E){return R(H,r,$,E)}function Be(H){return a[H.getDay()]}function Ke(H){return o[H.getDay()]}function qe(H){return l[H.getMonth()]}function Je(H){return s[H.getMonth()]}function Ee(H){return i[+(H.getHours()>=12)]}function _e(H){return 1+~~(H.getMonth()/3)}function dt(H){return a[H.getUTCDay()]}function Ht(H){return o[H.getUTCDay()]}function Ne(H){return l[H.getUTCMonth()]}function O(H){return s[H.getUTCMonth()]}function P(H){return i[+(H.getUTCHours()>=12)]}function q(H){return 1+~~(H.getUTCMonth()/3)}return{format:function(H){var $=D(H+="",C);return $.toString=function(){return H},$},parse:function(H){var $=I(H+="",!1);return $.toString=function(){return H},$},utcFormat:function(H){var $=D(H+="",_);return $.toString=function(){return H},$},utcParse:function(H){var $=I(H+="",!0);return $.toString=function(){return H},$}}}var Tm={"-":"",_:" ",0:"0"},st=/^\s*\d+/,k3=/^%/,D3=/[\\^$*+?|[\]().{}]/g;function ge(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o[e.toLowerCase(),n]))}function F3(t,e,n){var r=st.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function R3(t,e,n){var r=st.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function P3(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function M3(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function O3(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Im(t,e,n){var r=st.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function km(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function N3(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function L3(t,e,n){var r=st.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function z3(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Dm(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function U3(t,e,n){var r=st.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Bm(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function G3(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function H3(t,e,n){var r=st.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function V3(t,e,n){var r=st.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function j3(t,e,n){var r=st.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function q3(t,e,n){var r=k3.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function W3(t,e,n){var r=st.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function $3(t,e,n){var r=st.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Fm(t,e){return ge(t.getDate(),e,2)}function Z3(t,e){return ge(t.getHours(),e,2)}function Y3(t,e){return ge(t.getHours()%12||12,e,2)}function Q3(t,e){return ge(1+vi.count(Cr(t),t),e,3)}function Rm(t,e){return ge(t.getMilliseconds(),e,3)}function X3(t,e){return Rm(t,e)+"000"}function K3(t,e){return ge(t.getMonth()+1,e,2)}function J3(t,e){return ge(t.getMinutes(),e,2)}function eC(t,e){return ge(t.getSeconds(),e,2)}function tC(t){var e=t.getDay();return e===0?7:e}function nC(t,e){return ge(za.count(Cr(t)-1,t),e,2)}function Pm(t){var e=t.getDay();return e>=4||e===0?Eo(t):Eo.ceil(t)}function rC(t,e){return t=Pm(t),ge(Eo.count(Cr(t),t)+(Cr(t).getDay()===4),e,2)}function iC(t){return t.getDay()}function oC(t,e){return ge(pl.count(Cr(t)-1,t),e,2)}function aC(t,e){return ge(t.getFullYear()%100,e,2)}function sC(t,e){return t=Pm(t),ge(t.getFullYear()%100,e,2)}function fC(t,e){return ge(t.getFullYear()%1e4,e,4)}function lC(t,e){var n=t.getDay();return t=n>=4||n===0?Eo(t):Eo.ceil(t),ge(t.getFullYear()%1e4,e,4)}function uC(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+ge(e/60|0,"0",2)+ge(e%60,"0",2)}function Mm(t,e){return ge(t.getUTCDate(),e,2)}function cC(t,e){return ge(t.getUTCHours(),e,2)}function hC(t,e){return ge(t.getUTCHours()%12||12,e,2)}function dC(t,e){return ge(1+Ei.count(Tr(t),t),e,3)}function Om(t,e){return ge(t.getUTCMilliseconds(),e,3)}function pC(t,e){return Om(t,e)+"000"}function gC(t,e){return ge(t.getUTCMonth()+1,e,2)}function mC(t,e){return ge(t.getUTCMinutes(),e,2)}function bC(t,e){return ge(t.getUTCSeconds(),e,2)}function yC(t){var e=t.getUTCDay();return e===0?7:e}function wC(t,e){return ge(Ua.count(Tr(t)-1,t),e,2)}function Nm(t){var e=t.getUTCDay();return e>=4||e===0?_o(t):_o.ceil(t)}function xC(t,e){return t=Nm(t),ge(_o.count(Tr(t),t)+(Tr(t).getUTCDay()===4),e,2)}function vC(t){return t.getUTCDay()}function AC(t,e){return ge(ml.count(Tr(t)-1,t),e,2)}function EC(t,e){return ge(t.getUTCFullYear()%100,e,2)}function _C(t,e){return t=Nm(t),ge(t.getUTCFullYear()%100,e,2)}function SC(t,e){return ge(t.getUTCFullYear()%1e4,e,4)}function CC(t,e){var n=t.getUTCDay();return t=n>=4||n===0?_o(t):_o.ceil(t),ge(t.getUTCFullYear()%1e4,e,4)}function TC(){return"+0000"}function Lm(){return"%"}function zm(t){return+t}function Um(t){return Math.floor(+t/1e3)}var So,hh,Gm,dh,Hm;IC({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 IC(t){return So=Cm(t),hh=So.format,Gm=So.parse,dh=So.utcFormat,Hm=So.utcParse,So}function Ka(t){const e={};return n=>e[n]||(e[n]=t(n))}function kC(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=DC(r,i);const a=oi;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function DC(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function BC(t){const e=Ka(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=_r(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return kC(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=_r(a??",f");const s=wi(r,i,o),l=Math.max(Math.abs(r),Math.abs(i));let f;if(a.precision==null)switch(a.type){case"s":return isNaN(f=dm(s,l))||(a.precision=f),n(a,l);case"":case"e":case"g":case"p":case"r":{isNaN(f=pm(s,l))||(a.precision=f-(a.type==="e"));break}case"f":case"%":{isNaN(f=hm(s))||(a.precision=f-(a.type==="%")*2);break}}return e(a)}}}FC();function FC(){return BC({format:pt,formatPrefix:Xc})}function Vm(t,e,n){n=n||{},Wt(n)||Ze("Invalid time multi-format specifier: ".concat(n));const r=e(Za),i=e($a),o=e(Wa),a=e(qa),s=e(ja),l=e(Va),f=e(Ha),u=e(Ga),c=t(n[wl]||".%L"),h=t(n[Za]||":%S"),d=t(n[$a]||"%I:%M"),p=t(n[Wa]||"%I %p"),b=t(n[qa]||n[yl]||"%a %d"),y=t(n[ja]||"%b %d"),w=t(n[Va]||"%B"),S=t(n[Ha]||"%B"),C=t(n[Ga]||"%Y");return _=>(r(_)<_?c:i(_)<_?h:o(_)<_?d:a(_)<_?p:l(_)<_?s(_)<_?b:y:u(_)<_?f(_)<_?w:S:C)(_)}function jm(t){const e=Ka(t.format),n=Ka(t.utcFormat);return{timeFormat:r=>Ye(r)?e(r):Vm(e,T3,r),utcFormat:r=>Ye(r)?n(r):Vm(n,I3,r),timeParse:Ka(t.parse),utcParse:Ka(t.utcParse)}}let ph;RC();function RC(){return ph=jm({format:hh,parse:Gm,utcFormat:dh,utcParse:Hm})}function PC(t){return jm(Cm(t))}function MC(t){return arguments.length?ph=PC(t):ph}const OC=/^(data:|([A-Za-z]+:)?\/\/)/,NC=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,LC=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,qm="file://";function zC(t,e){return n=>({options:n||{},sanitize:GC,load:UC,fileAccess:!!e,file:HC(e),http:jC(t)})}async function UC(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function GC(t,e){e=Gc({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=NC.test(t.replace(LC,""));(t==null||typeof t!="string"||!s)&&Ze("Sanitize failure, invalid URI: "+ol(t));const l=OC.test(t);return(a=e.baseURL)&&!l&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(qm))||e.mode==="file"||e.mode!=="http"&&!l&&n,i?t=t.slice(qm.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function HC(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):VC}async function VC(){Ze("No file system access.")}function jC(t){return t?async function(e,n){const r=Gc({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Bt(o[i])?o[i]():o.text():Ze(o.status+""+o.statusText)}:qC}async function qC(){Ze("No HTTP fetch method available.")}const WC=t=>t!=null&&t===t,$C=t=>t==="true"||t==="false"||t===!0||t===!1,ZC=t=>!Number.isNaN(Date.parse(t)),Wm=t=>!Number.isNaN(+t)&&!(t instanceof Date),YC=t=>Wm(t)&&Number.isInteger(+t),$m={boolean:MS,integer:Ma,number:Ma,date:NS,string:LS,unknown:el},xl=[$C,YC,Wm,ZC],QC=["boolean","integer","number","date"];function XC(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=xl.length,i=xl.map((o,a)=>a+1);for(let o=0,a=0,s,l;oo===0?a:o,0)-1]}function KC(t,e){return e.reduce((n,r)=>(n[r]=XC(t,r),n),{})}function Zm(t){const e=function(n,r){const i={delimiter:t};return gh(n,r?Gc(r,i):i)};return e.responseType="text",e}function gh(t,e){return e.header&&(t=e.header.map(ol).join(e.delimiter)+` +`+t),Xg(e.delimiter).parse(t+"")}gh.responseType="text";function JC(t){return typeof Buffer=="function"&&Bt(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function mh(t,e){const n=e&&e.property?Jf(e.property):el;return Wt(t)&&!JC(t)?e8(n(t),e):n(JSON.parse(t))}mh.responseType="json";function e8(t,e){return!qt(t)&&RS(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const t8={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function Ym(t,e){let n,r,i,o;return t=mh(t,e),e&&e.feature?(n=$S,i=e.feature):e&&e.mesh?(n=YS,i=e.mesh,o=t8[e.filter]):Ze("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):Ze("Invalid TopoJSON object: "+i),r&&r.features||[r]}Ym.responseType="json";const bh={dsv:gh,csv:Zm(","),tsv:Zm(" "),json:mh,topojson:Ym};function Qm(t,e){return arguments.length>1?(bh[t]=e,this):bi(bh,t)?bh[t]:null}function Xm(t,e,n,r){e=e||{};const i=Qm(e.type||"json");return i||Ze("Unknown data format type: "+e.type),t=i(t,e),e.parse&&n8(t,e.parse,n,r),bi(t,"columns")&&delete t.columns,t}function n8(t,e,n,r){if(!t.length)return;const i=MC();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),a,s,l,f,u,c;e==="auto"&&(e=KC(t,o)),o=Object.keys(e);const h=o.map(d=>{const p=e[d];let b,y;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return b=p.split(/:(.+)?/,2),y=b[1],(y[0]==="'"&&y[y.length-1]==="'"||y[0]==='"'&&y[y.length-1]==='"')&&(y=y.slice(1,-1)),(b[0]==="utc"?r:n)(y);if(!$m[p])throw Error("Illegal format pattern: "+d+":"+p);return $m[p]});for(l=0,u=t.length,c=o.length;le}):void 0,Jm="$lit$",kr=`lit$${(Math.random()+"").slice(9)}$`,e1="?"+kr,i8=`<${e1}>`,Si=document,es=()=>Si.createComment(""),ts=e=>e===null||typeof e!="object"&&typeof e!="function",t1=Array.isArray,o8=e=>t1(e)||typeof(e==null?void 0:e[Symbol.iterator])=="function",yh=`[ + */const Ja=globalThis,Al=Ja.trustedTypes,Km=Al?Al.createPolicy("lit-html",{createHTML:t=>t}):void 0,Jm="$lit$",Ir=`lit$${(Math.random()+"").slice(9)}$`,e1="?"+Ir,r8=`<${e1}>`,Si=document,es=()=>Si.createComment(""),ts=t=>t===null||typeof t!="object"&&typeof t!="function",t1=Array.isArray,i8=t=>t1(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",yh=`[ \f\r]`,ns=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,n1=/-->/g,r1=/>/g,Ci=RegExp(`>|${yh}(?:([^\\s"'>=/]+)(${yh}*=${yh}*(?:[^ -\f\r"'\`<>=]|("|')|))|$)`,"g"),i1=/'/g,o1=/"/g,a1=/^(?:script|style|textarea|title)$/i,a8=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),wn=a8(1),Ti=Symbol.for("lit-noChange"),Xe=Symbol.for("lit-nothing"),s1=new WeakMap,ki=Si.createTreeWalker(Si,129);function l1(e,t){if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return Km!==void 0?Km.createHTML(t):t}const s8=(e,t)=>{const n=e.length-1,r=[];let i,o=t===2?"":"",a=ns;for(let s=0;s"?(a=i??ns,c=-1):u[1]===void 0?c=-2:(c=a.lastIndex-u[2].length,l=u[1],a=u[3]===void 0?Ci:u[3]==='"'?o1:i1):a===o1||a===i1?a=Ci:a===n1||a===r1?a=ns:(a=Ci,i=void 0);const d=a===Ci&&e[s+1].startsWith("/>")?" ":"";o+=a===ns?f+i8:c>=0?(r.push(l),f.slice(0,c)+Jm+f.slice(c)+kr+d):f+kr+(c===-2?s:d)}return[l1(e,o+(e[n]||"")+(t===2?"":"")),r]};class rs{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=t.length-1,f=this.parts,[l,u]=s8(t,n);if(this.el=rs.createElement(l,r),ki.currentNode=this.el.content,n===2){const c=this.el.content.firstChild;c.replaceWith(...c.childNodes)}for(;(i=ki.nextNode())!==null&&f.length0){i.textContent=Af?Af.emptyScript:"";for(let d=0;d2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Xe}_$AI(t,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)t=Co(this,t,n,0),a=!ts(t)||t!==this._$AH&&t!==Ti,a&&(this._$AH=t);else{const s=t;let f,l;for(t=o[0],f=0;f{const r=(n==null?void 0:n.renderBefore)??t;let i=r._$litPart$;if(i===void 0){const o=(n==null?void 0:n.renderBefore)??null;r._$litPart$=i=new is(t.insertBefore(es(),o),o,void 0,n??{})}return i._$AI(e),i},d8=`.genome-spy { +\f\r"'\`<>=]|("|')|))|$)`,"g"),i1=/'/g,o1=/"/g,a1=/^(?:script|style|textarea|title)$/i,o8=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),wn=o8(1),Ti=Symbol.for("lit-noChange"),Xe=Symbol.for("lit-nothing"),s1=new WeakMap,Ii=Si.createTreeWalker(Si,129);function f1(t,e){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return Km!==void 0?Km.createHTML(e):e}const a8=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"":"",a=ns;for(let s=0;s"?(a=i??ns,c=-1):u[1]===void 0?c=-2:(c=a.lastIndex-u[2].length,f=u[1],a=u[3]===void 0?Ci:u[3]==='"'?o1:i1):a===o1||a===i1?a=Ci:a===n1||a===r1?a=ns:(a=Ci,i=void 0);const d=a===Ci&&t[s+1].startsWith("/>")?" ":"";o+=a===ns?l+r8:c>=0?(r.push(f),l.slice(0,c)+Jm+l.slice(c)+Ir+d):l+Ir+(c===-2?s:d)}return[f1(t,o+(t[n]||"")+(e===2?"":"")),r]};class rs{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=e.length-1,l=this.parts,[f,u]=a8(e,n);if(this.el=rs.createElement(f,r),Ii.currentNode=this.el.content,n===2){const c=this.el.content.firstChild;c.replaceWith(...c.childNodes)}for(;(i=Ii.nextNode())!==null&&l.length0){i.textContent=Al?Al.emptyScript:"";for(let d=0;d2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Xe}_$AI(e,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)e=Co(this,e,n,0),a=!ts(e)||e!==this._$AH&&e!==Ti,a&&(this._$AH=e);else{const s=e;let l,f;for(e=o[0],l=0;l{const r=(n==null?void 0:n.renderBefore)??e;let i=r._$litPart$;if(i===void 0){const o=(n==null?void 0:n.renderBefore)??null;r._$litPart$=i=new is(e.insertBefore(es(),o),o,void 0,n??{})}return i._$AI(t),i},h8=`.genome-spy { font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; position: relative; } @@ -120,11 +120,11 @@ border: 1px solid red; padding: 10px; background: #fff0f0; -}`;function p8(e,t){var n=e.getBoundingClientRect();return[t.clientX-n.left-e.clientLeft,t.clientY-n.top-e.clientTop]}function _f(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Wt(e){return Array.isArray(e)?e:typeof e<"u"?[e]:[]}function os(e){return e[e.length-1]}class g8{constructor(t){this.container=t,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(t){t!=this._visible&&(this.element.style.display=t?null:"none",this._visible=t)}get visible(){return this._visible}get enabled(){return os(this.enabledStack)??!0}pushEnabledState(t){this.enabledStack.push(t),t||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(t){this.mouseCoords=p8(this.container,t);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&m8(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(t){if(!t||!this.enabled||this._isPenalty()){this.visible&&(xh("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}xh(t,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(t,n){t!==this._previousTooltipDatum&&(this._previousTooltipDatum=t,n||(n=r=>Promise.resolve(wn` ${JSON.stringify(r)} `)),n(t).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function m8(e,t){let n=0;for(let r=0;r",Pn[Ii]="Identifier",Pn[Ir]="Keyword",Pn[Cf]="Null",Pn[Di]="Numeric",Pn[Pt]="Punctuator",Pn[ss]="String",Pn[D8]="RegularExpression";var B8="ArrayExpression",F8="BinaryExpression",R8="CallExpression",P8="ConditionalExpression",f1="Identifier",M8="Literal",O8="LogicalExpression",N8="MemberExpression",L8="ObjectExpression",z8="Property",U8="UnaryExpression",lt="Unexpected token %0",G8="Unexpected number",H8="Unexpected string",V8="Unexpected identifier",j8="Unexpected reserved word",q8="Unexpected end of input",vh="Invalid regular expression",Ah="Invalid regular expression: missing /",u1="Octal literals are not allowed in strict mode.",W8="Duplicate data property in object literal not allowed in strict mode",gt="ILLEGAL",ls="Disabled.",$8=new 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]"),Z8=new 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 Tf(e,t){if(!e)throw new Error("ASSERT: "+t)}function rr(e){return e>=48&&e<=57}function Eh(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function fs(e){return"01234567".indexOf(e)>=0}function Y8(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].indexOf(e)>=0}function us(e){return e===10||e===13||e===8232||e===8233}function cs(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&$8.test(String.fromCharCode(e))}function kf(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&Z8.test(String.fromCharCode(e))}const Q8={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 c1(){for(;U1114111||e!=="}")&&me({},lt,gt),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function h1(){var e,t;for(e=K.charCodeAt(U++),t=String.fromCharCode(e),e===92&&(K.charCodeAt(U)!==117&&me({},lt,gt),++U,e=_h("u"),(!e||e==="\\"||!cs(e.charCodeAt(0)))&&me({},lt,gt),t=e);U>>=")return U+=4,{type:Pt,value:a,start:e,end:U};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return U+=3,{type:Pt,value:o,start:e,end:U};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return U+=2,{type:Pt,value:i,start:e,end:U};if(i==="//"&&me({},lt,gt),"<>=!+-*%&|^/".indexOf(r)>=0)return++U,{type:Pt,value:r,start:e,end:U};me({},lt,gt)}function e4(e){let t="";for(;U=0&&U=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";me({},vh)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{me({},vh)}try{return new RegExp(e,t)}catch{return null}}function i4(){var e,t,n,r,i;for(e=K[U],Tf(e==="/","Regular expression literal must start with a slash"),t=K[U++],n=!1,r=!1;U=0&&me({},vh,n),{value:n,literal:t}}function a4(){var e,t,n,r;return Te=null,c1(),e=U,t=i4(),n=o4(),r=r4(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:U}}function s4(e){return e.type===Ii||e.type===Ir||e.type===Sf||e.type===Cf}function p1(){if(c1(),U>=wt)return{type:as,start:U,end:U};const e=K.charCodeAt(U);return cs(e)?J8():e===40||e===41||e===59?Sh():e===39||e===34?n4():e===46?rr(K.charCodeAt(U+1))?d1():Sh():rr(e)?d1():Sh()}function Mt(){const e=Te;return U=e.end,Te=p1(),U=e.end,e}function g1(){const e=U;Te=p1(),U=e}function l4(e){const t=new xn(B8);return t.elements=e,t}function m1(e,t,n){const r=new xn(e==="||"||e==="&&"?O8:F8);return r.operator=e,r.left=t,r.right=n,r}function f4(e,t){const n=new xn(R8);return n.callee=e,n.arguments=t,n}function u4(e,t,n){const r=new xn(P8);return r.test=e,r.consequent=t,r.alternate=n,r}function Ch(e){const t=new xn(f1);return t.name=e,t}function hs(e){const t=new xn(M8);return t.value=e.value,t.raw=K.slice(e.start,e.end),e.regex&&(t.raw==="//"&&(t.raw="/(?:)/"),t.regex=e.regex),t}function b1(e,t,n){const r=new xn(N8);return r.computed=e==="[",r.object=t,r.property=n,r.computed||(n.member=!0),r}function c4(e){const t=new xn(L8);return t.properties=e,t}function y1(e,t,n){const r=new xn(z8);return r.key=t,r.value=n,r.kind=e,r}function h4(e,t){const n=new xn(U8);return n.operator=e,n.argument=t,n.prefix=!0,n}function me(e,t){var n,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(o,a)=>(Tf(a":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 _4(){var e,t,n,r,i,o,a,s,f,l;if(e=Te,f=Df(),r=Te,i=v1(r),i===0)return f;for(r.prec=i,Mt(),t=[e,Te],a=Df(),o=[f,r,a];(i=v1(Te))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,f=o.pop(),t.pop(),n=m1(s,f,a),o.push(n);r=Mt(),r.prec=i,o.push(r),t.push(Te),n=Df(),o.push(n)}for(l=o.length-1,n=o[l],t.pop();l>1;)t.pop(),n=m1(o[l-1].value,o[l-2],n),l-=2;return n}function Bi(){var e,t,n;return e=_4(),ze("?")&&(Mt(),t=Bi(),xt(":"),n=Bi(),e=u4(e,t,n)),e}function kh(){const e=Bi();if(ze(","))throw new Error(ls);return e}function S4(e){K=e,U=0,wt=K.length,Te=null,g1();const t=kh();if(Te.type!==as)throw new Error("Unexpect token after expression.");return t}var C4={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 T4(e){function t(a,s,f,l){let u=e(s[0]);return f&&(u=f+"("+u+")",f.lastIndexOf("new ",0)===0&&(u="("+u+")")),u+"."+a+(l<0?"":l===0?"()":"("+s.slice(1).map(e).join(",")+")")}function n(a,s,f){return l=>t(a,l,s,f)}const r="new Date",i="String",o="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",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(a){a.length<3&&Ze("Missing arguments to clamp function."),a.length>3&&Ze("Too many arguments to clamp function.");const s=a.map(e);return"Math.max("+s[1]+", Math.min("+s[2]+","+s[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),regexp:o,test:n("test",o),if:function(a){a.length<3&&Ze("Missing arguments to if function."),a.length>3&&Ze("Too many arguments to if function.");const s=a.map(e);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function k4(e){const t=e&&e.length-1;return t&&(e[0]==='"'&&e[t]==='"'||e[0]==="'"&&e[t]==="'")?e.slice(1,-1):e}function I4(e){e=e||{};const t=e.allowed?af(e.allowed):{},n=e.forbidden?af(e.forbidden):{},r=e.constants||C4,i=(e.functions||T4)(c),o=e.globalvar,a=e.fieldvar,s=Bt(o)?o:p=>`${o}["${p}"]`;let f={},l={},u=0;function c(p){if(Ye(p))return p;const b=h[p.type];return b==null&&Ze("Unsupported type: "+p.type),b(p)}const h={Literal:p=>p.raw,Identifier:p=>{const b=p.name;return u>0?b:bi(n,b)?Ze("Illegal identifier: "+b):bi(r,b)?r[b]:bi(t,b)?b:(f[b]=1,s(b))},MemberExpression:p=>{const b=!p.computed,y=c(p.object);b&&(u+=1);const w=c(p.property);return y===a&&(l[k4(w)]=1),b&&(u-=1),y+(b?"."+w:"["+w+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&Ze("Illegal callee type: "+p.callee.type);const b=p.callee.name,y=p.arguments,w=bi(i,b)&&i[b];return w||Ze("Unrecognized function: "+b),Bt(w)?w(y):w+"("+y.map(c).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(c).join(",")+"]",BinaryExpression:p=>"("+c(p.left)+" "+p.operator+" "+c(p.right)+")",UnaryExpression:p=>"("+p.operator+c(p.argument)+")",ConditionalExpression:p=>"("+c(p.test)+"?"+c(p.consequent)+":"+c(p.alternate)+")",LogicalExpression:p=>"("+c(p.left)+p.operator+c(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(c).join(",")+"}",Property:p=>{u+=1;const b=c(p.key);return u-=1,b+":"+c(p.value)}};function d(p){const b={code:c(p),globals:Object.keys(f),fields:Object.keys(l)};return f={},l={},b}return d.functions=i,d.constants=r,d}function Ih(e,t={}){const n=I4({forbidden:[],allowed:["datum"],globalvar:"globalObject",fieldvar:"datum"});try{const r=S4(e),i=n(r),o=Function("datum","globalObject",`"use strict"; return (${i.code});`),a=s=>o(s,t);return a.fields=i.fields,a}catch(r){throw new Error(`Invalid expression: ${e}, ${r.message}`)}}function Mn(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function Dr(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}const Dh=Symbol("implicit");function Bh(){var e=new yi,t=[],n=[],r=Dh;function i(o){let a=e.get(o);if(a===void 0){if(r!==Dh)return r;e.set(o,a=t.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return t.slice();t=[],e=new yi;for(const a of o)e.has(a)||e.set(a,t.push(a)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return Bh(t,n).unknown(r)},Mn.apply(i,arguments),i}function To(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function ds(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Br(){}var Fi=.7,ko=1/Fi,Io="\\s*([+-]?\\d+)\\s*",ps="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",On="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",D4=/^#([0-9a-f]{3,8})$/,B4=new RegExp(`^rgb\\(${Io},${Io},${Io}\\)$`),F4=new RegExp(`^rgb\\(${On},${On},${On}\\)$`),R4=new RegExp(`^rgba\\(${Io},${Io},${Io},${ps}\\)$`),P4=new RegExp(`^rgba\\(${On},${On},${On},${ps}\\)$`),M4=new RegExp(`^hsl\\(${ps},${On},${On}\\)$`),O4=new RegExp(`^hsla\\(${ps},${On},${On},${ps}\\)$`),A1={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};To(Br,Fr,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:E1,formatHex:E1,formatHex8:N4,formatHsl:L4,formatRgb:_1,toString:_1});function E1(){return this.rgb().formatHex()}function N4(){return this.rgb().formatHex8()}function L4(){return I1(this).formatHsl()}function _1(){return this.rgb().formatRgb()}function Fr(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=D4.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?S1(t):n===3?new ft(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Bf(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Bf(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=B4.exec(e))?new ft(t[1],t[2],t[3],1):(t=F4.exec(e))?new ft(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=R4.exec(e))?Bf(t[1],t[2],t[3],t[4]):(t=P4.exec(e))?Bf(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=M4.exec(e))?k1(t[1],t[2]/100,t[3]/100,1):(t=O4.exec(e))?k1(t[1],t[2]/100,t[3]/100,t[4]):A1.hasOwnProperty(e)?S1(A1[e]):e==="transparent"?new ft(NaN,NaN,NaN,0):null}function S1(e){return new ft(e>>16&255,e>>8&255,e&255,1)}function Bf(e,t,n,r){return r<=0&&(e=t=n=NaN),new ft(e,t,n,r)}function Fh(e){return e instanceof Br||(e=Fr(e)),e?(e=e.rgb(),new ft(e.r,e.g,e.b,e.opacity)):new ft}function Ff(e,t,n,r){return arguments.length===1?Fh(e):new ft(e,t,n,r??1)}function ft(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}To(ft,Ff,ds(Br,{brighter(e){return e=e==null?ko:Math.pow(ko,e),new ft(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Fi:Math.pow(Fi,e),new ft(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ft(Ri(this.r),Ri(this.g),Ri(this.b),Rf(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:C1,formatHex:C1,formatHex8:z4,formatRgb:T1,toString:T1}));function C1(){return`#${Pi(this.r)}${Pi(this.g)}${Pi(this.b)}`}function z4(){return`#${Pi(this.r)}${Pi(this.g)}${Pi(this.b)}${Pi((isNaN(this.opacity)?1:this.opacity)*255)}`}function T1(){const e=Rf(this.opacity);return`${e===1?"rgb(":"rgba("}${Ri(this.r)}, ${Ri(this.g)}, ${Ri(this.b)}${e===1?")":`, ${e})`}`}function Rf(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ri(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Pi(e){return e=Ri(e),(e<16?"0":"")+e.toString(16)}function k1(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new vn(e,t,n,r)}function I1(e){if(e instanceof vn)return new vn(e.h,e.s,e.l,e.opacity);if(e instanceof Br||(e=Fr(e)),!e)return new vn;if(e instanceof vn)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),o=Math.max(t,n,r),a=NaN,s=o-i,f=(o+i)/2;return s?(t===o?a=(n-r)/s+(n0&&f<1?0:a,new vn(a,s,f,e.opacity)}function Rh(e,t,n,r){return arguments.length===1?I1(e):new vn(e,t,n,r??1)}function vn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}To(vn,Rh,ds(Br,{brighter(e){return e=e==null?ko:Math.pow(ko,e),new vn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Fi:Math.pow(Fi,e),new vn(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 ft(Ph(e>=240?e-240:e+120,i,r),Ph(e,i,r),Ph(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new vn(D1(this.h),Pf(this.s),Pf(this.l),Rf(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(){const e=Rf(this.opacity);return`${e===1?"hsl(":"hsla("}${D1(this.h)}, ${Pf(this.s)*100}%, ${Pf(this.l)*100}%${e===1?")":`, ${e})`}`}}));function D1(e){return e=(e||0)%360,e<0?e+360:e}function Pf(e){return Math.max(0,Math.min(1,e||0))}function Ph(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const B1=Math.PI/180,F1=180/Math.PI,Mf=18,R1=.96422,P1=1,M1=.82521,O1=4/29,Do=6/29,N1=3*Do*Do,U4=Do*Do*Do;function L1(e){if(e instanceof Nn)return new Nn(e.l,e.a,e.b,e.opacity);if(e instanceof ir)return z1(e);e instanceof ft||(e=Fh(e));var t=zh(e.r),n=zh(e.g),r=zh(e.b),i=Oh((.2225045*t+.7168786*n+.0606169*r)/P1),o,a;return t===n&&n===r?o=a=i:(o=Oh((.4360747*t+.3850649*n+.1430804*r)/R1),a=Oh((.0139322*t+.0971045*n+.7141733*r)/M1)),new Nn(116*i-16,500*(o-i),200*(i-a),e.opacity)}function Mh(e,t,n,r){return arguments.length===1?L1(e):new Nn(e,t,n,r??1)}function Nn(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}To(Nn,Mh,ds(Br,{brighter(e){return new Nn(this.l+Mf*(e??1),this.a,this.b,this.opacity)},darker(e){return new Nn(this.l-Mf*(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=R1*Nh(t),e=P1*Nh(e),n=M1*Nh(n),new ft(Lh(3.1338561*t-1.6168667*e-.4906146*n),Lh(-.9787684*t+1.9161415*e+.033454*n),Lh(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function Oh(e){return e>U4?Math.pow(e,1/3):e/N1+O1}function Nh(e){return e>Do?e*e*e:N1*(e-O1)}function Lh(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function zh(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function G4(e){if(e instanceof ir)return new ir(e.h,e.c,e.l,e.opacity);if(e instanceof Nn||(e=L1(e)),e.a===0&&e.b===0)return new ir(NaN,0=1?(n=1,t-1):Math.floor(n*t),i=e[r],o=e[r+1],a=r>0?e[r-1]:2*i-o,s=r()=>e;function $1(e,t){return function(n){return e+n*t}}function V4(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function Lf(e,t){var n=t-e;return n?$1(e,n>180||n<-180?n-360*Math.round(n/360):n):Nf(isNaN(e)?t:e)}function j4(e){return(e=+e)==1?ut:function(t,n){return n-t?V4(t,n,e):Nf(isNaN(t)?n:t)}}function ut(e,t){var n=t-e;return n?$1(e,n):Nf(isNaN(e)?t:e)}const jh=function e(t){var n=j4(t);function r(i,o){var a=n((i=Ff(i)).r,(o=Ff(o)).r),s=n(i.g,o.g),f=n(i.b,o.b),l=ut(i.opacity,o.opacity);return function(u){return i.r=a(u),i.g=s(u),i.b=f(u),i.opacity=l(u),i+""}}return r.gamma=e,r}(1);function Z1(e){return function(t){var n=t.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;an&&(o=t.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,f.push({i:a,x:An(r,i)})),n=$h.lastIndex;return n180?u+=360:u-l>180&&(l+=360),h.push({i:c.push(i(c)+"rotate(",null,r)-2,x:An(l,u)})):u&&c.push(i(c)+"rotate("+u+r)}function s(l,u,c,h){l!==u?h.push({i:c.push(i(c)+"skewX(",null,r)-2,x:An(l,u)}):u&&c.push(i(c)+"skewX("+u+r)}function f(l,u,c,h,d,p){if(l!==c||u!==h){var b=d.push(i(d)+"scale(",null,",",null,")");p.push({i:b-4,x:An(l,c)},{i:b-2,x:An(u,h)})}else(c!==1||h!==1)&&d.push(i(d)+"scale("+c+","+h+")")}return function(l,u){var c=[],h=[];return l=e(l),u=e(u),o(l.translateX,l.translateY,u.translateX,u.translateY,c,h),a(l.rotate,u.rotate,c,h),s(l.skewX,u.skewX,c,h),f(l.scaleX,l.scaleY,u.scaleX,u.scaleY,c,h),l=u=null,function(d){for(var p=-1,b=h.length,y;++pt&&(n=e,e=t,t=n),function(r){return Math.max(e,Math.min(t,r))}}function bT(e,t,n){var r=e[0],i=e[1],o=t[0],a=t[1];return i2?yT:bT,f=l=null,c}function c(h){return h==null||isNaN(h=+h)?o:(f||(f=s(e.map(r),t,n)))(r(a(h)))}return c.invert=function(h){return a(i((l||(l=s(t,e.map(r),An)))(h)))},c.domain=function(h){return arguments.length?(e=Array.from(h,Qh),u()):e.slice()},c.range=function(h){return arguments.length?(t=Array.from(h),u()):t.slice()},c.rangeRound=function(h){return t=Array.from(h),n=ms,u()},c.clamp=function(h){return arguments.length?(a=h?!0:Ot,u()):a!==Ot},c.interpolate=function(h){return arguments.length?(n=h,u()):n},c.unknown=function(h){return arguments.length?(o=h,c):o},function(h,d){return r=h,i=d,u()}}function lb(){return Uf()(Ot,Ot)}function fb(e,t,n,r){var i=wi(e,t,n),o;switch(r=_r(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(o=dm(i,a))&&(r.precision=o),Xc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=pm(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=hm(i))&&(r.precision=o-(r.type==="%")*2);break}}return pt(r)}function Oi(e){var t=e.domain;return e.ticks=function(n){var r=t();return ff(r[0],r[r.length-1],n??10)},e.tickFormat=function(n,r){var i=t();return fb(i[0],i[i.length-1],n??10,r)},e.nice=function(n){n==null&&(n=10);var r=t(),i=0,o=r.length-1,a=r[i],s=r[o],f,l,u=10;for(s0;){if(l=im(a,s,n),l===f)return r[i]=a,r[o]=s,t(r);if(l>0)a=Math.floor(a/l)*l,s=Math.ceil(s/l)*l;else if(l<0)a=Math.ceil(a*l)/l,s=Math.floor(s*l)/l;else break;f=l}return e},e}function ub(){var e=lb();return e.copy=function(){return bs(e,ub())},Mn.apply(e,arguments),Oi(e)}function cb(e){var t;function n(r){return r==null||isNaN(r=+r)?t:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(e=Array.from(r,Qh),n):e.slice()},n.unknown=function(r){return arguments.length?(t=r,n):t},n.copy=function(){return cb(e).unknown(t)},e=arguments.length?Array.from(e,Qh):[0,1],Oi(n)}function hb(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],o=e[r],a;return oMath.pow(e,t)}function ET(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 gb(e){return(t,n)=>-e(-t,n)}function Kh(e){const t=e(db,pb),n=t.domain;let r=10,i,o;function a(){return i=ET(r),o=AT(r),n()[0]<0?(i=gb(i),o=gb(o),e(wT,xT)):e(db,pb),t}return t.base=function(s){return arguments.length?(r=+s,a()):r},t.domain=function(s){return arguments.length?(n(s),a()):n()},t.ticks=s=>{const f=n();let l=f[0],u=f[f.length-1];const c=u0){for(;h<=d;++h)for(p=1;pu)break;w.push(b)}}else for(;h<=d;++h)for(p=r-1;p>=1;--p)if(b=h>0?p/o(-h):p*o(h),!(bu)break;w.push(b)}w.length*2{if(s==null&&(s=10),f==null&&(f=r===10?"s":","),typeof f!="function"&&(!(r%1)&&(f=_r(f)).precision==null&&(f.trim=!0),f=pt(f)),s===1/0)return f;const l=Math.max(1,r*s/t.ticks().length);return u=>{let c=u/o(Math.round(i(u)));return c*rn(hb(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),t}function Jh(){const e=Kh(Uf()).domain([1,10]);return e.copy=()=>bs(e,Jh()).base(e.base()),Mn.apply(e,arguments),e}function mb(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function bb(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function ed(e){var t=1,n=e(mb(t),bb(t));return n.constant=function(r){return arguments.length?e(mb(t=+r),bb(t)):t},Oi(n)}function yb(){var e=ed(Uf());return e.copy=function(){return bs(e,yb()).constant(e.constant())},Mn.apply(e,arguments)}function wb(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function _T(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function ST(e){return e<0?-e*e:e*e}function td(e){var t=e(Ot,Ot),n=1;function r(){return n===1?e(Ot,Ot):n===.5?e(_T,ST):e(wb(n),wb(1/n))}return t.exponent=function(i){return arguments.length?(n=+i,r()):n},Oi(t)}function nd(){var e=td(Uf());return e.copy=function(){return bs(e,nd()).exponent(e.exponent())},Mn.apply(e,arguments),e}function CT(){return nd.apply(null,arguments).exponent(.5)}function xb(){var e=[],t=[],n=[],r;function i(){var a=0,s=Math.max(1,t.length);for(n=new Array(s-1);++a0?n[s-1]:e[0],s=n?[r[n-1],t]:[r[l-1],r[l]]},a.unknown=function(f){return arguments.length&&(o=f),a},a.thresholds=function(){return r.slice()},a.copy=function(){return vb().domain([e,t]).range(i).unknown(o)},Mn.apply(Oi(a),arguments)}function Ab(){var e=[.5],t=[0,1],n,r=1;function i(o){return o!=null&&o<=o?t[vo(e,o,0,r)]:n}return i.domain=function(o){return arguments.length?(e=Array.from(o),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(o){return arguments.length?(t=Array.from(o),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(o){var a=t.indexOf(o);return[e[a-1],e[a]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Ab().domain(e).range(t).unknown(n)},Mn.apply(i,arguments)}function TT(e){return new Date(e)}function kT(e){return e instanceof Date?+e:+new Date(+e)}function rd(e,t,n,r,i,o,a,s,f,l){var u=lb(),c=u.invert,h=u.domain,d=l(".%L"),p=l(":%S"),b=l("%I:%M"),y=l("%I %p"),w=l("%a %d"),S=l("%b %d"),C=l("%B"),_=l("%Y");function I(D){return(f(D)0?r:1:0}const RT="identity",Bo="linear",Mr="log",ys="pow",ws="sqrt",Vf="symlog",kb="time",Ib="utc",Ln="sequential",Fo="diverging",ld="quantile",Db="quantize",Bb="threshold",fd="ordinal",ud="point",Fb="band",cd="bin-ordinal",rt="continuous",xs="discrete",vs="discretizing",en="interpolating",Rb="temporal";function PT(e){return function(t){let n=t[0],r=t[1],i;return r=r&&n[f]<=i&&(o<0&&(o=f),a=f);if(!(o<0))return r=e.invertExtent(n[o]),i=e.invertExtent(n[a]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function hd(){const e=Bh().unknown(void 0),t=e.domain,n=e.range;let r=[0,1],i,o,a=!1,s=0,f=0,l=.5;delete e.unknown;function u(){const c=t().length,h=r[1]b+i*w);return n(h?y.reverse():y)}return e.domain=function(c){return arguments.length?(t(c),u()):t()},e.range=function(c){return arguments.length?(r=[+c[0],+c[1]],u()):r.slice()},e.rangeRound=function(c){return r=[+c[0],+c[1]],a=!0,u()},e.bandwidth=function(){return o},e.step=function(){return i},e.round=function(c){return arguments.length?(a=!!c,u()):a},e.padding=function(c){return arguments.length?(f=Math.max(0,Math.min(1,c)),s=f,u()):s},e.paddingInner=function(c){return arguments.length?(s=Math.max(0,Math.min(1,c)),u()):s},e.paddingOuter=function(c){return arguments.length?(f=Math.max(0,Math.min(1,c)),u()):f},e.align=function(c){return arguments.length?(l=Math.max(0,Math.min(1,c)),u()):l},e.invertRange=function(c){if(c[0]==null||c[1]==null)return;const h=r[1]r[1-h])))return w=Math.max(0,qc(d,b)-1),S=b===y?w:qc(d,y)-1,b-d[w]>o+1e-10&&++w,h&&(C=w,w=p-S,S=p-C),w>S?void 0:t().slice(w,S+1)},e.invert=function(c){const h=e.invertRange([c,c]);return h&&h[0]},e.copy=function(){return hd().domain(t()).range(r).round(a).paddingInner(s).paddingOuter(f).align(l)},u()}function Pb(e){const t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return Pb(t())},e}function OT(){return Pb(hd().paddingInner(1))}var NT=Array.prototype.map;function LT(e){return NT.call(e,Ma)}const zT=Array.prototype.slice;function Mb(){let e=[],t=[];function n(r){return r==null||r!==r?void 0:t[(vo(e,r)-1)%t.length]}return n.domain=function(r){return arguments.length?(e=LT(r),n):e.slice()},n.range=function(r){return arguments.length?(t=zT.call(r),n):t.slice()},n.tickFormat=function(r,i){return fb(e[0],yn(e),r??10,i)},n.copy=function(){return Mb().domain(n.domain()).range(n.range())},n}const jf={};function UT(e,t,n){const r=function(){const o=t();return o.invertRange||(o.invertRange=o.invert?PT(o):o.invertExtent?MT(o):void 0),o.type=e,o};return r.metadata=af(Uc(n)),r}function Ae(e,t,n){return arguments.length>1?(jf[e]=UT(e,t,n),this):GT(e)?jf[e]:void 0}Ae(RT,cb),Ae(Bo,ub,rt),Ae(Mr,Jh,[rt,Mr]),Ae(ys,nd,rt),Ae(ws,CT,rt),Ae(Vf,yb,rt),Ae(kb,IT,[rt,Rb]),Ae(Ib,DT,[rt,Rb]),Ae(Ln,id,[rt,en]),Ae("".concat(Ln,"-").concat(Bo),id,[rt,en]),Ae("".concat(Ln,"-").concat(Mr),Eb,[rt,en,Mr]),Ae("".concat(Ln,"-").concat(ys),od,[rt,en]),Ae("".concat(Ln,"-").concat(ws),BT,[rt,en]),Ae("".concat(Ln,"-").concat(Vf),_b,[rt,en]),Ae("".concat(Fo,"-").concat(Bo),Sb,[rt,en]),Ae("".concat(Fo,"-").concat(Mr),Cb,[rt,en,Mr]),Ae("".concat(Fo,"-").concat(ys),ad,[rt,en]),Ae("".concat(Fo,"-").concat(ws),FT,[rt,en]),Ae("".concat(Fo,"-").concat(Vf),Tb,[rt,en]),Ae(ld,xb,[vs,ld]),Ae(Db,vb,vs),Ae(Bb,Ab,vs),Ae(cd,Mb,[xs,vs]),Ae(fd,Bh,xs),Ae(Fb,hd,xs),Ae(ud,OT,xs);function GT(e){return bi(jf,e)}function As(e,t){const n=jf[e];return n&&n.metadata[t]}function vt(e){return As(e,rt)}function Or(e){return As(e,xs)}function Ro(e){return As(e,vs)}function Ob(e){return As(e,Mr)}function qf(e){return As(e,en)}function HT(e,t){const n=t[0],r=yn(t)-n;return function(i){return e(n+i*r)}}function Wf(e,t,n){return Yh(Nb(t||"rgb",n),e)}function VT(e,t){const n=new Array(t),r=t+1;for(let i=0;it[0].toUpperCase()+t.slice(1)).join("")}const qT={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"},WT={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function Lb(e){const t=e.length/6|0,n=new Array(t);for(let r=0;rWf(Lb(e)));function dd(e,t){return e=e&&e.toLowerCase(),arguments.length>1?(Ub[e]=t,this):Ub[e]}function $T(){let e=0;const t=new Map,n=r=>{let i=t.get(r);return i===void 0&&(i=e++,t.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of t.entries())if(i[1]==r)return i[0]},n.domain=()=>[...t.keys()],n}function $f(){const e=t=>t;return e.invert=t=>t,e.copy=$f,e.invertRange=()=>{},e.type="null",e}function ZT(e,t){const n={};t||(t=e.encoding);for(const[r,i]of Object.entries(t)){if(!i)continue;const o=((tn(i)&&i.resolutionChannel)??(zi(r)&&r))||void 0,a=e.unitView.getScaleResolution(o);n[r]=YT(t[r],a==null?void 0:a.getScale(),e.unitView.getAccessor(r),r)}return n}function YT(e,t,n,r){let i;if(En(e)){const o=e.value;i=a=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!t)if(!zi(r))t=$f();else throw new Error(`Missing scale! "${r}": ${JSON.stringify(e)}`);if(i=o=>t(n(o)),Or(t.type)){const o=$T();o.addAll(t.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=t}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(e)}`);return i.invert=t?o=>t.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(e))},i.channelDef=e,i.applyMetadata=o=>{for(const a in i)a in i&&(o[a]=i[a]);return o},i}function En(e){return e&&"value"in e}function Es(e){return e&&"field"in e}function _s(e){return e&&"datum"in e}function tn(e){return Es(e)||_s(e)||gd(e)||Gb(e)}function pd(e,t){const n=e.mark.encoding[t];if(tn(n))return n;throw new Error("Not a channel def with scale!")}function Gb(e){return e&&"chrom"in e}function gd(e){return e&&"expr"in e}const Po=["x","y"],QT=["x2","y2"],XT=[...Po,...QT];function Hb(e){return Po.includes(e)}function Ss(e){return XT.includes(e)}const md={x:"x2",y:"y2"},Vb=Object.fromEntries(Object.entries(md).map(e=>[e[1],e[0]]));function Cs(e){return e in Vb}function KT(e){const t=md[e];if(t)return t;throw new Error(`${e} has no secondary channel!`)}function Ni(e){return Vb[e]??e}function Li(e){return["color","fill","stroke"].includes(Ni(e))}function Zf(e){return["shape","squeeze"].includes(e)}function zi(e){return["x","y","x2","y2","color","fill","stroke","opacity","fillOpacity","strokeOpacity","strokeWidth","size","shape","angle","dx","dy","sample"].includes(e)}function jb(e){switch(e){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function qb(e){if(!Zf(e))throw new Error("Not a discrete channel: "+e);const t=new Map(jb(e).map((n,r)=>[n,r]));return n=>{const r=t.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${e}" channel: ${n}`)}}function Re(e,t=e){if(/^[A-Za-z0-9_]+$/.test(e)){const n=new Function("datum",`return datum[${JSON.stringify(e)}]`);return Ce(n,[e],t)}else return Kl(e)}class JT{constructor(){this.accessorCreators=[],this.register(t=>{if(Es(t))try{const n=Re(t.field);return n.constant=!1,n.fields=Xl(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(t=>gd(t)?e6(t.expr):void 0),this.register(t=>{if(_s(t)){const r=BS(t.datum);return r.constant=!0,r.fields=[],r}})}register(t){this.accessorCreators.push(t)}createAccessor(t){for(const n of this.accessorCreators){const r=n(t);if(r)return r}}}function e6(e){const t=Ih(e);return t.constant=t.fields.length==0,t}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved. +}`;function d8(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function _l(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function $t(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function os(t){return t[t.length-1]}class p8{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){return os(this.enabledStack)??!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=d8(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&g8(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(xh("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}xh(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(wn` ${JSON.stringify(r)} `)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function g8(t,e){let n=0;for(let r=0;r",Pn[ki]="Identifier",Pn[kr]="Keyword",Pn[Cl]="Null",Pn[Di]="Numeric",Pn[Pt]="Punctuator",Pn[ss]="String",Pn[k8]="RegularExpression";var D8="ArrayExpression",B8="BinaryExpression",F8="CallExpression",R8="ConditionalExpression",l1="Identifier",P8="Literal",M8="LogicalExpression",O8="MemberExpression",N8="ObjectExpression",L8="Property",z8="UnaryExpression",ft="Unexpected token %0",U8="Unexpected number",G8="Unexpected string",H8="Unexpected identifier",V8="Unexpected reserved word",j8="Unexpected end of input",vh="Invalid regular expression",Ah="Invalid regular expression: missing /",u1="Octal literals are not allowed in strict mode.",q8="Duplicate data property in object literal not allowed in strict mode",gt="ILLEGAL",fs="Disabled.",W8=new 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]"),$8=new 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 Tl(t,e){if(!t)throw new Error("ASSERT: "+e)}function rr(t){return t>=48&&t<=57}function Eh(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function ls(t){return"01234567".indexOf(t)>=0}function Z8(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function us(t){return t===10||t===13||t===8232||t===8233}function cs(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&W8.test(String.fromCharCode(t))}function Il(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&$8.test(String.fromCharCode(t))}const Y8={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 c1(){for(;U1114111||t!=="}")&&me({},ft,gt),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function h1(){var t,e;for(t=K.charCodeAt(U++),e=String.fromCharCode(t),t===92&&(K.charCodeAt(U)!==117&&me({},ft,gt),++U,t=_h("u"),(!t||t==="\\"||!cs(t.charCodeAt(0)))&&me({},ft,gt),e=t);U>>=")return U+=4,{type:Pt,value:a,start:t,end:U};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return U+=3,{type:Pt,value:o,start:t,end:U};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return U+=2,{type:Pt,value:i,start:t,end:U};if(i==="//"&&me({},ft,gt),"<>=!+-*%&|^/".indexOf(r)>=0)return++U,{type:Pt,value:r,start:t,end:U};me({},ft,gt)}function J8(t){let e="";for(;U=0&&U=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";me({},vh)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{me({},vh)}try{return new RegExp(t,e)}catch{return null}}function r4(){var t,e,n,r,i;for(t=K[U],Tl(t==="/","Regular expression literal must start with a slash"),e=K[U++],n=!1,r=!1;U=0&&me({},vh,n),{value:n,literal:e}}function o4(){var t,e,n,r;return Te=null,c1(),t=U,e=r4(),n=i4(),r=n4(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:U}}function a4(t){return t.type===ki||t.type===kr||t.type===Sl||t.type===Cl}function p1(){if(c1(),U>=wt)return{type:as,start:U,end:U};const t=K.charCodeAt(U);return cs(t)?K8():t===40||t===41||t===59?Sh():t===39||t===34?t4():t===46?rr(K.charCodeAt(U+1))?d1():Sh():rr(t)?d1():Sh()}function Mt(){const t=Te;return U=t.end,Te=p1(),U=t.end,t}function g1(){const t=U;Te=p1(),U=t}function s4(t){const e=new xn(D8);return e.elements=t,e}function m1(t,e,n){const r=new xn(t==="||"||t==="&&"?M8:B8);return r.operator=t,r.left=e,r.right=n,r}function f4(t,e){const n=new xn(F8);return n.callee=t,n.arguments=e,n}function l4(t,e,n){const r=new xn(R8);return r.test=t,r.consequent=e,r.alternate=n,r}function Ch(t){const e=new xn(l1);return e.name=t,e}function hs(t){const e=new xn(P8);return e.value=t.value,e.raw=K.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function b1(t,e,n){const r=new xn(O8);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function u4(t){const e=new xn(N8);return e.properties=t,e}function y1(t,e,n){const r=new xn(L8);return r.key=e,r.value=n,r.kind=t,r}function c4(t,e){const n=new xn(z8);return n.operator=t,n.argument=e,n.prefix=!0,n}function me(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(Tl(a":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function E4(){var t,e,n,r,i,o,a,s,l,f;if(t=Te,l=Dl(),r=Te,i=v1(r),i===0)return l;for(r.prec=i,Mt(),e=[t,Te],a=Dl(),o=[l,r,a];(i=v1(Te))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,l=o.pop(),e.pop(),n=m1(s,l,a),o.push(n);r=Mt(),r.prec=i,o.push(r),e.push(Te),n=Dl(),o.push(n)}for(f=o.length-1,n=o[f],e.pop();f>1;)e.pop(),n=m1(o[f-1].value,o[f-2],n),f-=2;return n}function Bi(){var t,e,n;return t=E4(),ze("?")&&(Mt(),e=Bi(),xt(":"),n=Bi(),t=l4(t,e,n)),t}function Ih(){const t=Bi();if(ze(","))throw new Error(fs);return t}function _4(t){K=t,U=0,wt=K.length,Te=null,g1();const e=Ih();if(Te.type!==as)throw new Error("Unexpect token after expression.");return e}var S4={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 C4(t){function e(a,s,l,f){let u=t(s[0]);return l&&(u=l+"("+u+")",l.lastIndexOf("new ",0)===0&&(u="("+u+")")),u+"."+a+(f<0?"":f===0?"()":"("+s.slice(1).map(t).join(",")+")")}function n(a,s,l){return f=>e(a,f,s,l)}const r="new Date",i="String",o="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",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(a){a.length<3&&Ze("Missing arguments to clamp function."),a.length>3&&Ze("Too many arguments to clamp function.");const s=a.map(t);return"Math.max("+s[1]+", Math.min("+s[2]+","+s[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),regexp:o,test:n("test",o),if:function(a){a.length<3&&Ze("Missing arguments to if function."),a.length>3&&Ze("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function T4(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function I4(t){t=t||{};const e=t.allowed?al(t.allowed):{},n=t.forbidden?al(t.forbidden):{},r=t.constants||S4,i=(t.functions||C4)(c),o=t.globalvar,a=t.fieldvar,s=Bt(o)?o:p=>`${o}["${p}"]`;let l={},f={},u=0;function c(p){if(Ye(p))return p;const b=h[p.type];return b==null&&Ze("Unsupported type: "+p.type),b(p)}const h={Literal:p=>p.raw,Identifier:p=>{const b=p.name;return u>0?b:bi(n,b)?Ze("Illegal identifier: "+b):bi(r,b)?r[b]:bi(e,b)?b:(l[b]=1,s(b))},MemberExpression:p=>{const b=!p.computed,y=c(p.object);b&&(u+=1);const w=c(p.property);return y===a&&(f[T4(w)]=1),b&&(u-=1),y+(b?"."+w:"["+w+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&Ze("Illegal callee type: "+p.callee.type);const b=p.callee.name,y=p.arguments,w=bi(i,b)&&i[b];return w||Ze("Unrecognized function: "+b),Bt(w)?w(y):w+"("+y.map(c).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(c).join(",")+"]",BinaryExpression:p=>"("+c(p.left)+" "+p.operator+" "+c(p.right)+")",UnaryExpression:p=>"("+p.operator+c(p.argument)+")",ConditionalExpression:p=>"("+c(p.test)+"?"+c(p.consequent)+":"+c(p.alternate)+")",LogicalExpression:p=>"("+c(p.left)+p.operator+c(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(c).join(",")+"}",Property:p=>{u+=1;const b=c(p.key);return u-=1,b+":"+c(p.value)}};function d(p){const b={code:c(p),globals:Object.keys(l),fields:Object.keys(f)};return l={},f={},b}return d.functions=i,d.constants=r,d}function kh(t,e={}){const n=I4({forbidden:[],allowed:["datum"],globalvar:"globalObject",fieldvar:"datum"});try{const r=_4(t),i=n(r),o=Function("datum","globalObject",`"use strict"; return (${i.code});`),a=s=>o(s,e);return a.fields=i.fields,a}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function Mn(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Dr(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const Dh=Symbol("implicit");function Bh(){var t=new yi,e=[],n=[],r=Dh;function i(o){let a=t.get(o);if(a===void 0){if(r!==Dh)return r;t.set(o,a=e.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new yi;for(const a of o)t.has(a)||t.set(a,e.push(a)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return Bh(e,n).unknown(r)},Mn.apply(i,arguments),i}function To(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function ds(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Br(){}var Fi=.7,Io=1/Fi,ko="\\s*([+-]?\\d+)\\s*",ps="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",On="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",k4=/^#([0-9a-f]{3,8})$/,D4=new RegExp(`^rgb\\(${ko},${ko},${ko}\\)$`),B4=new RegExp(`^rgb\\(${On},${On},${On}\\)$`),F4=new RegExp(`^rgba\\(${ko},${ko},${ko},${ps}\\)$`),R4=new RegExp(`^rgba\\(${On},${On},${On},${ps}\\)$`),P4=new RegExp(`^hsl\\(${ps},${On},${On}\\)$`),M4=new RegExp(`^hsla\\(${ps},${On},${On},${ps}\\)$`),A1={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};To(Br,Fr,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:E1,formatHex:E1,formatHex8:O4,formatHsl:N4,formatRgb:_1,toString:_1});function E1(){return this.rgb().formatHex()}function O4(){return this.rgb().formatHex8()}function N4(){return k1(this).formatHsl()}function _1(){return this.rgb().formatRgb()}function Fr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=k4.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?S1(e):n===3?new lt(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Bl(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Bl(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=D4.exec(t))?new lt(e[1],e[2],e[3],1):(e=B4.exec(t))?new lt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=F4.exec(t))?Bl(e[1],e[2],e[3],e[4]):(e=R4.exec(t))?Bl(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=P4.exec(t))?I1(e[1],e[2]/100,e[3]/100,1):(e=M4.exec(t))?I1(e[1],e[2]/100,e[3]/100,e[4]):A1.hasOwnProperty(t)?S1(A1[t]):t==="transparent"?new lt(NaN,NaN,NaN,0):null}function S1(t){return new lt(t>>16&255,t>>8&255,t&255,1)}function Bl(t,e,n,r){return r<=0&&(t=e=n=NaN),new lt(t,e,n,r)}function Fh(t){return t instanceof Br||(t=Fr(t)),t?(t=t.rgb(),new lt(t.r,t.g,t.b,t.opacity)):new lt}function Fl(t,e,n,r){return arguments.length===1?Fh(t):new lt(t,e,n,r??1)}function lt(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}To(lt,Fl,ds(Br,{brighter(t){return t=t==null?Io:Math.pow(Io,t),new lt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Fi:Math.pow(Fi,t),new lt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new lt(Ri(this.r),Ri(this.g),Ri(this.b),Rl(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:C1,formatHex:C1,formatHex8:L4,formatRgb:T1,toString:T1}));function C1(){return`#${Pi(this.r)}${Pi(this.g)}${Pi(this.b)}`}function L4(){return`#${Pi(this.r)}${Pi(this.g)}${Pi(this.b)}${Pi((isNaN(this.opacity)?1:this.opacity)*255)}`}function T1(){const t=Rl(this.opacity);return`${t===1?"rgb(":"rgba("}${Ri(this.r)}, ${Ri(this.g)}, ${Ri(this.b)}${t===1?")":`, ${t})`}`}function Rl(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ri(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Pi(t){return t=Ri(t),(t<16?"0":"")+t.toString(16)}function I1(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new vn(t,e,n,r)}function k1(t){if(t instanceof vn)return new vn(t.h,t.s,t.l,t.opacity);if(t instanceof Br||(t=Fr(t)),!t)return new vn;if(t instanceof vn)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,l=(o+i)/2;return s?(e===o?a=(n-r)/s+(n0&&l<1?0:a,new vn(a,s,l,t.opacity)}function Rh(t,e,n,r){return arguments.length===1?k1(t):new vn(t,e,n,r??1)}function vn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}To(vn,Rh,ds(Br,{brighter(t){return t=t==null?Io:Math.pow(Io,t),new vn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fi:Math.pow(Fi,t),new vn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new lt(Ph(t>=240?t-240:t+120,i,r),Ph(t,i,r),Ph(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new vn(D1(this.h),Pl(this.s),Pl(this.l),Rl(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(){const t=Rl(this.opacity);return`${t===1?"hsl(":"hsla("}${D1(this.h)}, ${Pl(this.s)*100}%, ${Pl(this.l)*100}%${t===1?")":`, ${t})`}`}}));function D1(t){return t=(t||0)%360,t<0?t+360:t}function Pl(t){return Math.max(0,Math.min(1,t||0))}function Ph(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const B1=Math.PI/180,F1=180/Math.PI,Ml=18,R1=.96422,P1=1,M1=.82521,O1=4/29,Do=6/29,N1=3*Do*Do,z4=Do*Do*Do;function L1(t){if(t instanceof Nn)return new Nn(t.l,t.a,t.b,t.opacity);if(t instanceof ir)return z1(t);t instanceof lt||(t=Fh(t));var e=zh(t.r),n=zh(t.g),r=zh(t.b),i=Oh((.2225045*e+.7168786*n+.0606169*r)/P1),o,a;return e===n&&n===r?o=a=i:(o=Oh((.4360747*e+.3850649*n+.1430804*r)/R1),a=Oh((.0139322*e+.0971045*n+.7141733*r)/M1)),new Nn(116*i-16,500*(o-i),200*(i-a),t.opacity)}function Mh(t,e,n,r){return arguments.length===1?L1(t):new Nn(t,e,n,r??1)}function Nn(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}To(Nn,Mh,ds(Br,{brighter(t){return new Nn(this.l+Ml*(t??1),this.a,this.b,this.opacity)},darker(t){return new Nn(this.l-Ml*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=R1*Nh(e),t=P1*Nh(t),n=M1*Nh(n),new lt(Lh(3.1338561*e-1.6168667*t-.4906146*n),Lh(-.9787684*e+1.9161415*t+.033454*n),Lh(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function Oh(t){return t>z4?Math.pow(t,1/3):t/N1+O1}function Nh(t){return t>Do?t*t*t:N1*(t-O1)}function Lh(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function zh(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function U4(t){if(t instanceof ir)return new ir(t.h,t.c,t.l,t.opacity);if(t instanceof Nn||(t=L1(t)),t.a===0&&t.b===0)return new ir(NaN,0=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,s=r()=>t;function $1(t,e){return function(n){return t+n*e}}function H4(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Ll(t,e){var n=e-t;return n?$1(t,n>180||n<-180?n-360*Math.round(n/360):n):Nl(isNaN(t)?e:t)}function V4(t){return(t=+t)==1?ut:function(e,n){return n-e?H4(e,n,t):Nl(isNaN(e)?n:e)}}function ut(t,e){var n=e-t;return n?$1(t,n):Nl(isNaN(t)?e:t)}const jh=function t(e){var n=V4(e);function r(i,o){var a=n((i=Fl(i)).r,(o=Fl(o)).r),s=n(i.g,o.g),l=n(i.b,o.b),f=ut(i.opacity,o.opacity);return function(u){return i.r=a(u),i.g=s(u),i.b=l(u),i.opacity=f(u),i+""}}return r.gamma=t,r}(1);function Z1(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;an&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,l.push({i:a,x:An(r,i)})),n=$h.lastIndex;return n180?u+=360:u-f>180&&(f+=360),h.push({i:c.push(i(c)+"rotate(",null,r)-2,x:An(f,u)})):u&&c.push(i(c)+"rotate("+u+r)}function s(f,u,c,h){f!==u?h.push({i:c.push(i(c)+"skewX(",null,r)-2,x:An(f,u)}):u&&c.push(i(c)+"skewX("+u+r)}function l(f,u,c,h,d,p){if(f!==c||u!==h){var b=d.push(i(d)+"scale(",null,",",null,")");p.push({i:b-4,x:An(f,c)},{i:b-2,x:An(u,h)})}else(c!==1||h!==1)&&d.push(i(d)+"scale("+c+","+h+")")}return function(f,u){var c=[],h=[];return f=t(f),u=t(u),o(f.translateX,f.translateY,u.translateX,u.translateY,c,h),a(f.rotate,u.rotate,c,h),s(f.skewX,u.skewX,c,h),l(f.scaleX,f.scaleY,u.scaleX,u.scaleY,c,h),f=u=null,function(d){for(var p=-1,b=h.length,y;++pe&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function mT(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i2?bT:mT,l=f=null,c}function c(h){return h==null||isNaN(h=+h)?o:(l||(l=s(t.map(r),e,n)))(r(a(h)))}return c.invert=function(h){return a(i((f||(f=s(e,t.map(r),An)))(h)))},c.domain=function(h){return arguments.length?(t=Array.from(h,Qh),u()):t.slice()},c.range=function(h){return arguments.length?(e=Array.from(h),u()):e.slice()},c.rangeRound=function(h){return e=Array.from(h),n=ms,u()},c.clamp=function(h){return arguments.length?(a=h?!0:Ot,u()):a!==Ot},c.interpolate=function(h){return arguments.length?(n=h,u()):n},c.unknown=function(h){return arguments.length?(o=h,c):o},function(h,d){return r=h,i=d,u()}}function fb(){return Ul()(Ot,Ot)}function lb(t,e,n,r){var i=wi(t,e,n),o;switch(r=_r(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=dm(i,a))&&(r.precision=o),Xc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=pm(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=hm(i))&&(r.precision=o-(r.type==="%")*2);break}}return pt(r)}function Oi(t){var e=t.domain;return t.ticks=function(n){var r=e();return ll(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return lb(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,a=r[i],s=r[o],l,f,u=10;for(s0;){if(f=im(a,s,n),f===l)return r[i]=a,r[o]=s,e(r);if(f>0)a=Math.floor(a/f)*f,s=Math.ceil(s/f)*f;else if(f<0)a=Math.ceil(a*f)/f,s=Math.floor(s*f)/f;else break;l=f}return t},t}function ub(){var t=fb();return t.copy=function(){return bs(t,ub())},Mn.apply(t,arguments),Oi(t)}function cb(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,Qh),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return cb(t).unknown(e)},t=arguments.length?Array.from(t,Qh):[0,1],Oi(n)}function hb(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return oMath.pow(t,e)}function AT(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function gb(t){return(e,n)=>-t(-e,n)}function Kh(t){const e=t(db,pb),n=e.domain;let r=10,i,o;function a(){return i=AT(r),o=vT(r),n()[0]<0?(i=gb(i),o=gb(o),t(yT,wT)):t(db,pb),e}return e.base=function(s){return arguments.length?(r=+s,a()):r},e.domain=function(s){return arguments.length?(n(s),a()):n()},e.ticks=s=>{const l=n();let f=l[0],u=l[l.length-1];const c=u0){for(;h<=d;++h)for(p=1;pu)break;w.push(b)}}else for(;h<=d;++h)for(p=r-1;p>=1;--p)if(b=h>0?p/o(-h):p*o(h),!(bu)break;w.push(b)}w.length*2{if(s==null&&(s=10),l==null&&(l=r===10?"s":","),typeof l!="function"&&(!(r%1)&&(l=_r(l)).precision==null&&(l.trim=!0),l=pt(l)),s===1/0)return l;const f=Math.max(1,r*s/e.ticks().length);return u=>{let c=u/o(Math.round(i(u)));return c*rn(hb(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function Jh(){const t=Kh(Ul()).domain([1,10]);return t.copy=()=>bs(t,Jh()).base(t.base()),Mn.apply(t,arguments),t}function mb(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function bb(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function ed(t){var e=1,n=t(mb(e),bb(e));return n.constant=function(r){return arguments.length?t(mb(e=+r),bb(e)):e},Oi(n)}function yb(){var t=ed(Ul());return t.copy=function(){return bs(t,yb()).constant(t.constant())},Mn.apply(t,arguments)}function wb(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function ET(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function _T(t){return t<0?-t*t:t*t}function td(t){var e=t(Ot,Ot),n=1;function r(){return n===1?t(Ot,Ot):n===.5?t(ET,_T):t(wb(n),wb(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Oi(e)}function nd(){var t=td(Ul());return t.copy=function(){return bs(t,nd()).exponent(t.exponent())},Mn.apply(t,arguments),t}function ST(){return nd.apply(null,arguments).exponent(.5)}function xb(){var t=[],e=[],n=[],r;function i(){var a=0,s=Math.max(1,e.length);for(n=new Array(s-1);++a0?n[s-1]:t[0],s=n?[r[n-1],e]:[r[f-1],r[f]]},a.unknown=function(l){return arguments.length&&(o=l),a},a.thresholds=function(){return r.slice()},a.copy=function(){return vb().domain([t,e]).range(i).unknown(o)},Mn.apply(Oi(a),arguments)}function Ab(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[vo(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var a=e.indexOf(o);return[t[a-1],t[a]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Ab().domain(t).range(e).unknown(n)},Mn.apply(i,arguments)}function CT(t){return new Date(t)}function TT(t){return t instanceof Date?+t:+new Date(+t)}function rd(t,e,n,r,i,o,a,s,l,f){var u=fb(),c=u.invert,h=u.domain,d=f(".%L"),p=f(":%S"),b=f("%I:%M"),y=f("%I %p"),w=f("%a %d"),S=f("%b %d"),C=f("%B"),_=f("%Y");function k(D){return(l(D)0?r:1:0}const FT="identity",Bo="linear",Mr="log",ys="pow",ws="sqrt",Vl="symlog",Ib="time",kb="utc",Ln="sequential",Fo="diverging",fd="quantile",Db="quantize",Bb="threshold",ld="ordinal",ud="point",Fb="band",cd="bin-ordinal",rt="continuous",xs="discrete",vs="discretizing",tn="interpolating",Rb="temporal";function RT(t){return function(e){let n=e[0],r=e[1],i;return r=r&&n[l]<=i&&(o<0&&(o=l),a=l);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[a]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function hd(){const t=Bh().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,a=!1,s=0,l=0,f=.5;delete t.unknown;function u(){const c=e().length,h=r[1]b+i*w);return n(h?y.reverse():y)}return t.domain=function(c){return arguments.length?(e(c),u()):e()},t.range=function(c){return arguments.length?(r=[+c[0],+c[1]],u()):r.slice()},t.rangeRound=function(c){return r=[+c[0],+c[1]],a=!0,u()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(c){return arguments.length?(a=!!c,u()):a},t.padding=function(c){return arguments.length?(l=Math.max(0,Math.min(1,c)),s=l,u()):s},t.paddingInner=function(c){return arguments.length?(s=Math.max(0,Math.min(1,c)),u()):s},t.paddingOuter=function(c){return arguments.length?(l=Math.max(0,Math.min(1,c)),u()):l},t.align=function(c){return arguments.length?(f=Math.max(0,Math.min(1,c)),u()):f},t.invertRange=function(c){if(c[0]==null||c[1]==null)return;const h=r[1]r[1-h])))return w=Math.max(0,qc(d,b)-1),S=b===y?w:qc(d,y)-1,b-d[w]>o+1e-10&&++w,h&&(C=w,w=p-S,S=p-C),w>S?void 0:e().slice(w,S+1)},t.invert=function(c){const h=t.invertRange([c,c]);return h&&h[0]},t.copy=function(){return hd().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(l).align(f)},u()}function Pb(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Pb(e())},t}function MT(){return Pb(hd().paddingInner(1))}var OT=Array.prototype.map;function NT(t){return OT.call(t,Ma)}const LT=Array.prototype.slice;function Mb(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(vo(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=NT(r),n):t.slice()},n.range=function(r){return arguments.length?(e=LT.call(r),n):e.slice()},n.tickFormat=function(r,i){return lb(t[0],yn(t),r??10,i)},n.copy=function(){return Mb().domain(n.domain()).range(n.range())},n}const jl={};function zT(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?RT(o):o.invertExtent?PT(o):void 0),o.type=t,o};return r.metadata=al(Uc(n)),r}function Ae(t,e,n){return arguments.length>1?(jl[t]=zT(t,e,n),this):UT(t)?jl[t]:void 0}Ae(FT,cb),Ae(Bo,ub,rt),Ae(Mr,Jh,[rt,Mr]),Ae(ys,nd,rt),Ae(ws,ST,rt),Ae(Vl,yb,rt),Ae(Ib,IT,[rt,Rb]),Ae(kb,kT,[rt,Rb]),Ae(Ln,id,[rt,tn]),Ae("".concat(Ln,"-").concat(Bo),id,[rt,tn]),Ae("".concat(Ln,"-").concat(Mr),Eb,[rt,tn,Mr]),Ae("".concat(Ln,"-").concat(ys),od,[rt,tn]),Ae("".concat(Ln,"-").concat(ws),DT,[rt,tn]),Ae("".concat(Ln,"-").concat(Vl),_b,[rt,tn]),Ae("".concat(Fo,"-").concat(Bo),Sb,[rt,tn]),Ae("".concat(Fo,"-").concat(Mr),Cb,[rt,tn,Mr]),Ae("".concat(Fo,"-").concat(ys),ad,[rt,tn]),Ae("".concat(Fo,"-").concat(ws),BT,[rt,tn]),Ae("".concat(Fo,"-").concat(Vl),Tb,[rt,tn]),Ae(fd,xb,[vs,fd]),Ae(Db,vb,vs),Ae(Bb,Ab,vs),Ae(cd,Mb,[xs,vs]),Ae(ld,Bh,xs),Ae(Fb,hd,xs),Ae(ud,MT,xs);function UT(t){return bi(jl,t)}function As(t,e){const n=jl[t];return n&&n.metadata[e]}function vt(t){return As(t,rt)}function Or(t){return As(t,xs)}function Ro(t){return As(t,vs)}function Ob(t){return As(t,Mr)}function ql(t){return As(t,tn)}function GT(t,e){const n=e[0],r=yn(e)-n;return function(i){return t(n+i*r)}}function Wl(t,e,n){return Yh(Nb(e||"rgb",n),t)}function HT(t,e){const n=new Array(e),r=e+1;for(let i=0;ie[0].toUpperCase()+e.slice(1)).join("")}const jT={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"},qT={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function Lb(t){const e=t.length/6|0,n=new Array(e);for(let r=0;rWl(Lb(t)));function dd(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(Ub[t]=e,this):Ub[t]}function WT(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function $l(){const t=e=>e;return t.invert=e=>e,t.copy=$l,t.invertRange=()=>{},t.type="null",t}function $T(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=((Nt(i)&&i.resolutionChannel)??(zi(r)&&r))||void 0,a=t.unitView.getScaleResolution(o);n[r]=ZT(e[r],a==null?void 0:a.getScale(),t.unitView.getAccessor(r),r)}return n}function ZT(t,e,n,r){let i;if(En(t)){const o=t.value;i=a=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)if(!zi(r))e=$l();else throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Or(e.type)){const o=WT();o.addAll(e.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const a in i)a in i&&(o[a]=i[a]);return o},i}function En(t){return t&&"value"in t}function Es(t){return t&&"field"in t}function _s(t){return t&&"datum"in t}function Nt(t){return Es(t)||_s(t)||gd(t)||Gb(t)}function pd(t,e){const n=t.mark.encoding[e];if(Nt(n))return n;throw new Error("Not a channel def with scale!")}function Gb(t){return t&&"chrom"in t}function gd(t){return t&&"expr"in t}const Po=["x","y"],YT=["x2","y2"],QT=[...Po,...YT];function Hb(t){return Po.includes(t)}function Ss(t){return QT.includes(t)}const md={x:"x2",y:"y2"},Vb=Object.fromEntries(Object.entries(md).map(t=>[t[1],t[0]]));function Cs(t){return t in Vb}function XT(t){const e=md[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Ni(t){return Vb[t]??t}function Li(t){return["color","fill","stroke"].includes(Ni(t))}function Zl(t){return["shape","squeeze"].includes(t)}function zi(t){return["x","y","x2","y2","color","fill","stroke","opacity","fillOpacity","strokeOpacity","strokeWidth","size","shape","angle","dx","dy","sample"].includes(t)}function KT(t){switch(t){case"shape":return["circle","square","cross","diamond","triangle-up","triangle-right","triangle-down","triangle-left","tick-up","tick-right","tick-down","tick-left"]}}function jb(t){if(!Zl(t))throw new Error("Not a discrete channel: "+t);const e=new Map(KT(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function Re(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return Ce(n,[t],e)}else return Jf(t)}class JT{constructor(){this.accessorCreators=[],this.register(e=>{if(Es(e))try{const n=Re(e.field);return n.constant=!1,n.fields=Kf(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>gd(e)?e6(e.expr):void 0),this.register(e=>{if(_s(e)){const r=DS(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function e6(t){const e=kh(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved. Available via the MIT license. -see: http://github.com/greggman/twgl.js for details */const bd=5120,Ts=5121,yd=5122,wd=5123,xd=5124,vd=5125,Ad=5126,t6=32819,n6=32820,r6=33635,i6=5131,o6=33640,a6=35899,s6=35902,l6=36269,f6=34042,Wb={};{const e=Wb;e[bd]=Int8Array,e[Ts]=Uint8Array,e[yd]=Int16Array,e[wd]=Uint16Array,e[xd]=Int32Array,e[vd]=Uint32Array,e[Ad]=Float32Array,e[t6]=Uint16Array,e[n6]=Uint16Array,e[r6]=Uint16Array,e[i6]=Uint16Array,e[o6]=Uint32Array,e[a6]=Uint32Array,e[s6]=Uint32Array,e[l6]=Uint32Array,e[f6]=Uint32Array}function Ed(e){if(e instanceof Int8Array)return bd;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return Ts;if(e instanceof Int16Array)return yd;if(e instanceof Uint16Array)return wd;if(e instanceof Int32Array)return xd;if(e instanceof Uint32Array)return vd;if(e instanceof Float32Array)return Ad;throw new Error("unsupported typed array type")}function u6(e){if(e===Int8Array)return bd;if(e===Uint8Array||e===Uint8ClampedArray)return Ts;if(e===Int16Array)return yd;if(e===Uint16Array)return wd;if(e===Int32Array)return xd;if(e===Uint32Array)return vd;if(e===Float32Array)return Ad;throw new Error("unsupported typed array type")}function c6(e){const t=Wb[e];if(!t)throw new Error("unknown gl type");return t}const Yf=typeof SharedArrayBuffer<"u"?function(t){return t&&t.buffer&&(t.buffer instanceof ArrayBuffer||t.buffer instanceof SharedArrayBuffer)}:function(t){return t&&t.buffer&&t.buffer instanceof ArrayBuffer};function h6(...e){console.error(...e)}function $b(...e){console.warn(...e)}function d6(e,t){return typeof WebGLBuffer<"u"&&t instanceof WebGLBuffer}function Zb(e,t){return typeof WebGLRenderbuffer<"u"&&t instanceof WebGLRenderbuffer}function Qf(e,t){return typeof WebGLTexture<"u"&&t instanceof WebGLTexture}function p6(e,t){return typeof WebGLSampler<"u"&&t instanceof WebGLSampler}const Yb=35044,zn=34962,g6=34963,m6=34660,b6=5120,y6=5121,w6=5122,x6=5123,v6=5124,A6=5125,E6=5126,Qb={attribPrefix:""};function Xb(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||Yb)}function Kb(e,t,n,r){if(d6(e,t))return t;n=n||zn;const i=e.createBuffer();return Xb(e,n,i,t,r),i}function Jb(e){return e==="indices"}function _6(e){return e instanceof Int8Array||e instanceof Uint8Array}function S6(e){return e===Int8Array||e===Uint8Array}function C6(e){return e.length?e:e.data}const T6=/coord|texture/i,k6=/color|colour/i;function ey(e,t){let n;if(T6.test(e)?n=2:k6.test(e)?n=4:n=3,t%n>0)throw new 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 I6(e,t){return e.numComponents||e.size||ey(t,C6(e).length)}function _d(e,t){if(Yf(e))return e;if(Yf(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||(Jb(t)?n=Uint16Array:n=Float32Array),new n(e.data)}function D6(e,t){const n={};return Object.keys(t).forEach(function(r){if(!Jb(r)){const i=t[r],o=i.attrib||i.name||i.attribName||Qb.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Yf(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,f,l;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,l=i.numComponents||i.size,s=i.type,f=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const u=i.data||i,c=i.type||Float32Array,h=u*c.BYTES_PER_ELEMENT;s=u6(c),f=i.normalize!==void 0?i.normalize:S6(c),l=i.numComponents||i.size||ey(r,u),a=e.createBuffer(),e.bindBuffer(zn,a),e.bufferData(zn,h,i.drawType||Yb)}else{const u=_d(i,r);a=Kb(e,u,void 0,i.drawType),s=Ed(u),f=i.normalize!==void 0?i.normalize:_6(u),l=I6(i,r)}n[o]={buffer:a,numComponents:l,type:s,normalize:f,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),e.bindBuffer(zn,null),n}function B6(e,t,n,r){n=_d(n),r!==void 0?(e.bindBuffer(zn,t.buffer),e.bufferSubData(zn,r,n)):Xb(e,zn,t.buffer,n,t.drawType)}function F6(e,t){return t===b6||t===y6?1:t===w6||t===x6?2:t===v6||t===A6||t===E6?4:0}const Sd=["position","positions","a_position"];function R6(e,t){let n,r;for(r=0;r{const C=w*S.ndx,_=n.subarray(C,C+w);e.texImage2D(S.face,f,l,o,a,0,c,h,_)})}else i===Lr||i===zr?e.texImage3D(i,f,l,o,a,s,0,c,h,n):e.texImage2D(i,f,l,o,a,0,c,h,n);return{width:o,height:a,depth:s,type:h}}function uI(e,t,n){const r=n.target||or;e.bindTexture(r,t);const i=n.level||0,o=n.internalFormat||n.format||Ge,a=Go(o),s=n.format||a.format,f=n.type||a.type;if(Ho(e,n),r===ar)for(let l=0;l<6;++l)e.texImage2D(Kf+l,i,o,n.width,n.height,0,s,f,null);else r===Lr||r===zr?e.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,f,null):e.texImage2D(r,i,o,n.width,n.height,0,s,f,null)}function Fs(e,t,n){n=n||Bs,t=t||Nr.textureOptions;const r=e.createTexture(),i=t.target||or;let o=t.width||1,a=t.height||1;const s=t.internalFormat||Ge;e.bindTexture(i,r),i===ar&&(e.texParameteri(i,Jf,Xf),e.texParameteri(i,eu,Xf));let f=t.src;if(f)if(typeof f=="function"&&(f=f(e,t)),typeof f=="string")sI(e,r,t,n);else if(Oo(f)||Array.isArray(f)&&(typeof f[0]=="number"||Array.isArray(f[0])||Oo(f[0]))){const l=vy(e,r,f,t);o=l.width,a=l.height}else Array.isArray(f)&&(typeof f[0]=="string"||xy(f[0]))?i===ar?lI(e,r,t,n):fI(e,r,t,n):(wy(e,r,f,t),o=f.width,a=f.height);else uI(e,r,t);return Ds(t)&&Fd(e,r,t,o,a,s),yy(e,r,t),r}function cI(e,t,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||or;e.bindTexture(a,t);const s=n.level||0,f=n.internalFormat||n.format||Ge,l=Go(f),u=n.format||l.format;let c;const h=n.src;if(h&&(Oo(h)||Array.isArray(h)&&typeof h[0]=="number")?c=n.type||my(e,h,l.type):c=n.type||l.type,a===ar)for(let d=0;d<6;++d)e.texImage2D(Kf+d,s,f,r,i,0,u,c,null);else a===Lr||a===zr?e.texImage3D(a,s,f,r,i,o,0,u,c,null):e.texImage2D(a,s,f,r,i,0,u,c,null)}const hI=$b,su=33984,dI=35048,lu=34962,pI=34963,Nd=35345,Ay=35718,gI=35721,mI=35971,bI=35382,yI=35396,wI=35398,xI=35392,vI=35395,fu=5126,Ey=35664,_y=35665,Sy=35666,Ld=5124,Cy=35667,Ty=35668,ky=35669,Iy=35670,Dy=35671,By=35672,Fy=35673,Ry=35674,Py=35675,My=35676,AI=35678,EI=35680,_I=35679,SI=35682,CI=35685,TI=35686,kI=35687,II=35688,DI=35689,BI=35690,FI=36289,RI=36292,PI=36293,zd=5125,Oy=36294,Ny=36295,Ly=36296,MI=36298,OI=36299,NI=36300,LI=36303,zI=36306,UI=36307,GI=36308,HI=36311,uu=3553,cu=34067,Ud=32879,hu=35866,oe={};function zy(e,t){return oe[t].bindPoint}function VI(e,t){return function(n){e.uniform1f(t,n)}}function jI(e,t){return function(n){e.uniform1fv(t,n)}}function qI(e,t){return function(n){e.uniform2fv(t,n)}}function WI(e,t){return function(n){e.uniform3fv(t,n)}}function $I(e,t){return function(n){e.uniform4fv(t,n)}}function Uy(e,t){return function(n){e.uniform1i(t,n)}}function Gy(e,t){return function(n){e.uniform1iv(t,n)}}function Hy(e,t){return function(n){e.uniform2iv(t,n)}}function Vy(e,t){return function(n){e.uniform3iv(t,n)}}function jy(e,t){return function(n){e.uniform4iv(t,n)}}function ZI(e,t){return function(n){e.uniform1ui(t,n)}}function YI(e,t){return function(n){e.uniform1uiv(t,n)}}function QI(e,t){return function(n){e.uniform2uiv(t,n)}}function XI(e,t){return function(n){e.uniform3uiv(t,n)}}function KI(e,t){return function(n){e.uniform4uiv(t,n)}}function JI(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function eD(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function tD(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function nD(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function rD(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function iD(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function oD(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function aD(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function sD(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function Ct(e,t,n,r){const i=zy(e,t);return Mo(e)?function(o){let a,s;Qf(e,o)?(a=o,s=null):(a=o.texture,s=o.sampler),e.uniform1i(r,n),e.activeTexture(su+n),e.bindTexture(i,a),e.bindSampler(n,s)}:function(o){e.uniform1i(r,n),e.activeTexture(su+n),e.bindTexture(i,o)}}function Tt(e,t,n,r,i){const o=zy(e,t),a=new Int32Array(i);for(let s=0;se>="0"&&e<="9";function Wy(e,t,n,r){const i=e.split(lD).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const f=fD(s[0]),l=f?parseInt(s):s;if(f&&(a+=i[o++]),o===i.length){n[l]=t;break}else{const c=i[o++],h=c==="[",d=n[l]||(h?[]:{});n[l]=d,n=d,r[a]=r[a]||function(p){return function(b){Xy(p,b)}}(d),a+=c}}}function uD(e,t){let n=0;function r(s,f,l){const u=f.name.endsWith("[0]"),c=f.type,h=oe[c];if(!h)throw new Error(`unknown type: 0x${c.toString(16)}`);let d;if(h.bindPoint){const p=n;n+=f.size,u?d=h.arraySetter(e,c,p,l,f.size):d=h.setter(e,c,p,l,f.size)}else h.arraySetter&&u?d=h.arraySetter(e,l):d=h.setter(e,l);return d.location=l,d}const i={},o={},a=e.getProgramParameter(t,Ay);for(let s=0;s((e+(t-1))/t|0)*t;function pD(e,t,n,r){if(t||n){r=r||1;const o=e.length/4;return function(a){let s=0,f=0;for(let l=0;l1?e.renderbufferStorageMultisample(Hi,u,c,n,r):e.renderbufferStorage(Hi,c,n,r);else{const d=Object.assign({},f);d.width=n,d.height=r,d.auto===void 0&&(d.auto=!1,d.min=d.min||d.minMag||qd,d.mag=d.mag||d.minMag||qd,d.wrapS=d.wrapS||d.wrap||jd,d.wrapT=d.wrapT||d.wrap||jd),l=Fs(e,d)}if(Zb(e,l))e.framebufferRenderbuffer(i,h,Hi,l);else if(Qf(e,l))f.layer!==void 0?e.framebufferTextureLayer(i,h,l,f.level||0,f.layer):e.framebufferTexture2D(i,h,f.target||AD,l,f.level||0);else throw new Error("unknown attachment type");s.attachments.push(l)}),s}function ND(e,t,n,r,i){r=r||e.drawingBufferWidth,i=i||e.drawingBufferHeight,t.width=r,t.height=i,n=n||rw,n.forEach(function(o,a){const s=t.attachments[a],f=o.format,l=o.samples;if(l!==void 0||Zb(e,s))e.bindRenderbuffer(Hi,s),l>1?e.renderbufferStorageMultisample(Hi,l,f,r,i):e.renderbufferStorage(Hi,f,r,i);else if(Qf(e,s))cI(e,s,o,r,i);else throw new Error("unknown attachment type")})}function LD(e,t,n){const r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(i){Vo(e,i,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const zD=/^(.*?)_/;function UD(e,t){Cd(e,0);const n=e.getExtension(t);if(n){const r={},i=zD.exec(t)[1],o="_"+i;for(const a in n){const s=n[a],f=typeof s=="function",l=f?i:o;let u=a;a.endsWith(l)&&(u=a.substring(0,a.length-l.length)),e[u]!==void 0?!f&&e[u]!==s&&$b(u,e[u],s,a):f?e[u]=function(c){return function(){return c.apply(n,arguments)}}(s):(e[u]=s,r[u]=s)}r.constructor={name:n.constructor.name},Cd(r,0)}return n}const iw=["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 ow(e){for(let t=0;t0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function k6(t,e){return t.numComponents||t.size||Jb(e,C6(t).length)}function _d(t,e){if(Yl(t))return t;if(Yl(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(Kb(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function D6(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Kb(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Yb.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Yl(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,l,f;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,f=i.numComponents||i.size,s=i.type,l=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const u=i.data||i,c=i.type||Float32Array,h=u*c.BYTES_PER_ELEMENT;s=u6(c),l=i.normalize!==void 0?i.normalize:S6(c),f=i.numComponents||i.size||Jb(r,u),a=t.createBuffer(),t.bindBuffer(zn,a),t.bufferData(zn,h,i.drawType||Zb)}else{const u=_d(i,r);a=Xb(t,u,void 0,i.drawType),s=Ed(u),l=i.normalize!==void 0?i.normalize:_6(u),f=k6(i,r)}n[o]={buffer:a,numComponents:f,type:s,normalize:l,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(zn,null),n}function B6(t,e,n,r){n=_d(n),r!==void 0?(t.bindBuffer(zn,e.buffer),t.bufferSubData(zn,r,n)):Qb(t,zn,e.buffer,n,e.drawType)}function F6(t,e){return e===b6||e===y6?1:e===w6||e===x6?2:e===v6||e===A6||e===E6?4:0}const Sd=["position","positions","a_position"];function R6(t,e){let n,r;for(r=0;r{const C=w*S.ndx,_=n.subarray(C,C+w);t.texImage2D(S.face,l,f,o,a,0,c,h,_)})}else i===Lr||i===zr?t.texImage3D(i,l,f,o,a,s,0,c,h,n):t.texImage2D(i,l,f,o,a,0,c,h,n);return{width:o,height:a,depth:s,type:h}}function uk(t,e,n){const r=n.target||or;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||Ge,a=Go(o),s=n.format||a.format,l=n.type||a.type;if(Ho(t,n),r===ar)for(let f=0;f<6;++f)t.texImage2D(Kl+f,i,o,n.width,n.height,0,s,l,null);else r===Lr||r===zr?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,l,null):t.texImage2D(r,i,o,n.width,n.height,0,s,l,null)}function Fs(t,e,n){n=n||Bs,e=e||Nr.textureOptions;const r=t.createTexture(),i=e.target||or;let o=e.width||1,a=e.height||1;const s=e.internalFormat||Ge;t.bindTexture(i,r),i===ar&&(t.texParameteri(i,Jl,Xl),t.texParameteri(i,eu,Xl));let l=e.src;if(l)if(typeof l=="function"&&(l=l(t,e)),typeof l=="string")sk(t,r,e,n);else if(Oo(l)||Array.isArray(l)&&(typeof l[0]=="number"||Array.isArray(l[0])||Oo(l[0]))){const f=xy(t,r,l,e);o=f.width,a=f.height}else Array.isArray(l)&&(typeof l[0]=="string"||wy(l[0]))?i===ar?fk(t,r,e,n):lk(t,r,e,n):(yy(t,r,l,e),o=l.width,a=l.height);else uk(t,r,e);return Ds(e)&&Fd(t,r,e,o,a,s),by(t,r,e),r}function ck(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||or;t.bindTexture(a,e);const s=n.level||0,l=n.internalFormat||n.format||Ge,f=Go(l),u=n.format||f.format;let c;const h=n.src;if(h&&(Oo(h)||Array.isArray(h)&&typeof h[0]=="number")?c=n.type||gy(t,h,f.type):c=n.type||f.type,a===ar)for(let d=0;d<6;++d)t.texImage2D(Kl+d,s,l,r,i,0,u,c,null);else a===Lr||a===zr?t.texImage3D(a,s,l,r,i,o,0,u,c,null):t.texImage2D(a,s,l,r,i,0,u,c,null)}const hk=Wb,su=33984,dk=35048,fu=34962,pk=34963,Nd=35345,vy=35718,gk=35721,mk=35971,bk=35382,yk=35396,wk=35398,xk=35392,vk=35395,lu=5126,Ay=35664,Ey=35665,_y=35666,Ld=5124,Sy=35667,Cy=35668,Ty=35669,Iy=35670,ky=35671,Dy=35672,By=35673,Fy=35674,Ry=35675,Py=35676,Ak=35678,Ek=35680,_k=35679,Sk=35682,Ck=35685,Tk=35686,Ik=35687,kk=35688,Dk=35689,Bk=35690,Fk=36289,Rk=36292,Pk=36293,zd=5125,My=36294,Oy=36295,Ny=36296,Mk=36298,Ok=36299,Nk=36300,Lk=36303,zk=36306,Uk=36307,Gk=36308,Hk=36311,uu=3553,cu=34067,Ud=32879,hu=35866,oe={};function Ly(t,e){return oe[e].bindPoint}function Vk(t,e){return function(n){t.uniform1f(e,n)}}function jk(t,e){return function(n){t.uniform1fv(e,n)}}function qk(t,e){return function(n){t.uniform2fv(e,n)}}function Wk(t,e){return function(n){t.uniform3fv(e,n)}}function $k(t,e){return function(n){t.uniform4fv(e,n)}}function zy(t,e){return function(n){t.uniform1i(e,n)}}function Uy(t,e){return function(n){t.uniform1iv(e,n)}}function Gy(t,e){return function(n){t.uniform2iv(e,n)}}function Hy(t,e){return function(n){t.uniform3iv(e,n)}}function Vy(t,e){return function(n){t.uniform4iv(e,n)}}function Zk(t,e){return function(n){t.uniform1ui(e,n)}}function Yk(t,e){return function(n){t.uniform1uiv(e,n)}}function Qk(t,e){return function(n){t.uniform2uiv(e,n)}}function Xk(t,e){return function(n){t.uniform3uiv(e,n)}}function Kk(t,e){return function(n){t.uniform4uiv(e,n)}}function Jk(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function eD(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function tD(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function nD(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function rD(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function iD(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function oD(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function aD(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function sD(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Ct(t,e,n,r){const i=Ly(t,e);return Mo(t)?function(o){let a,s;Ql(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(su+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(su+n),t.bindTexture(i,o)}}function Tt(t,e,n,r,i){const o=Ly(t,e),a=new Int32Array(i);for(let s=0;st>="0"&&t<="9";function qy(t,e,n,r){const i=t.split(fD).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const l=lD(s[0]),f=l?parseInt(s):s;if(l&&(a+=i[o++]),o===i.length){n[f]=e;break}else{const c=i[o++],h=c==="[",d=n[f]||(h?[]:{});n[f]=d,n=d,r[a]=r[a]||function(p){return function(b){Qy(p,b)}}(d),a+=c}}}function uD(t,e){let n=0;function r(s,l,f){const u=l.name.endsWith("[0]"),c=l.type,h=oe[c];if(!h)throw new Error(`unknown type: 0x${c.toString(16)}`);let d;if(h.bindPoint){const p=n;n+=l.size,u?d=h.arraySetter(t,c,p,f,l.size):d=h.setter(t,c,p,f,l.size)}else h.arraySetter&&u?d=h.arraySetter(t,f):d=h.setter(t,f);return d.location=f,d}const i={},o={},a=t.getProgramParameter(e,vy);for(let s=0;s((t+(e-1))/e|0)*e;function pD(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(a){let s=0,l=0;for(let f=0;f1?t.renderbufferStorageMultisample(Hi,u,c,n,r):t.renderbufferStorage(Hi,c,n,r);else{const d=Object.assign({},l);d.width=n,d.height=r,d.auto===void 0&&(d.auto=!1,d.min=d.min||d.minMag||qd,d.mag=d.mag||d.minMag||qd,d.wrapS=d.wrapS||d.wrap||jd,d.wrapT=d.wrapT||d.wrap||jd),f=Fs(t,d)}if($b(t,f))t.framebufferRenderbuffer(i,h,Hi,f);else if(Ql(t,f))l.layer!==void 0?t.framebufferTextureLayer(i,h,f,l.level||0,l.layer):t.framebufferTexture2D(i,h,l.target||AD,f,l.level||0);else throw new Error("unknown attachment type");s.attachments.push(f)}),s}function ND(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||nw,n.forEach(function(o,a){const s=e.attachments[a],l=o.format,f=o.samples;if(f!==void 0||$b(t,s))t.bindRenderbuffer(Hi,s),f>1?t.renderbufferStorageMultisample(Hi,f,l,r,i):t.renderbufferStorage(Hi,l,r,i);else if(Ql(t,s))ck(t,s,o,r,i);else throw new Error("unknown attachment type")})}function LD(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Vo(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const zD=/^(.*?)_/;function UD(t,e){Cd(t,0);const n=t.getExtension(e);if(n){const r={},i=zD.exec(e)[1],o="_"+i;for(const a in n){const s=n[a],l=typeof s=="function",f=l?i:o;let u=a;a.endsWith(f)&&(u=a.substring(0,a.length-f.length)),t[u]!==void 0?!l&&t[u]!==s&&Wb(u,t[u],s,a):l?t[u]=function(c){return function(){return c.apply(n,arguments)}}(s):(t[u]=s,r[u]=s)}r.constructor={name:n.constructor.name},Cd(r,0)}return n}const rw=["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 iw(t){for(let e=0;eQD.apply(null,[k,"value",...R]);let p;switch(h){case"linear":p=d("scaleLinear","domain",a);break;case"log":p=d("scaleLog","domain",a,t.base());break;case"symlog":p=d("scaleSymlog","domain",a,t.constant());break;case"pow":case"sqrt":p=d("scalePow","domain",a,t.exponent());break;case"index":case"locus":p=d("scaleBandHp","domain",a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case"point":case"band":p=d("scaleBand","domain",a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case"ordinal":case"null":case"identity":p=d("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${t.type}! ${e}: ${JSON.stringify(n)}`)}const b=qf(t.type)||vt(t.type)&&Li(e)?[0,1]:t.range?t.range():void 0;if(b&&e==r&&b.length&&b.every(Ft)){const k=uw(b);c.push(`const ${k.type} ${a} = ${k};`)}const y=Li(e)?"vec3":"float";let w;if(Li(e)){const k=$d+r;if(e==r&&c.push(`uniform sampler2D ${k};`),vt(t.type))w=`getInterpolatedColor(${k}, transformed)`;else if(Or(t.type)||Ro(t.type))w=`getDiscreteColor(${k}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(t.type==="ordinal"||Ro(t.type)){const k=$d+r;e==r&&c.push(`uniform sampler2D ${k};`),w=`getDiscreteColor(${k}, int(transformed)).r`}_s(n)?c.push(`uniform highp ${f} ${i};`):c.push(`in highp ${f} ${i};`);const S=[],C=vt(t.type)&&l>2,_=Ro(t.type)||C;if(S.push("int slot = 0;"),_){const k=o;S.push(C?`while (slot < ${k}.length() - 2 && value >= ${k}[slot + 1]) { slot++; }`:`while (slot < ${k}.length() && value >= ${k}[slot]) { slot++; }`)}const I=vt(t.type)||Ro(t.type)||["band","point"].includes(t.type);if(p){const k=o;I&&(s?S.push(`vec3 domain = ${k};`):S.push(`vec2 domain = vec2(${k}[slot], ${k}[slot + 1]);`)),S.push(`float transformed = ${p};`),C&&S.push(`transformed = (float(slot) + transformed) / (float(${k}.length() - 1));`)}else S.push("float transformed = float(slot);");"clamp"in t&&t.clamp()&&S.push(`transformed = clampToRange(transformed, ${uw(b)});`),S.push(`return ${w??"transformed"};`),c.push(` -${y} ${sw}${e}(${f} value) { -${S.map(k=>` ${k} +}`}function ZD(t,e,n){if(En(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);if(!e)throw new Error("Scale is undefined");const r=Ni(t),i=Wd+t,o=ow+r,a=qD+r,s=mu(e.type),l=s?"vec2":"float",f=e.domain?e.domain().length:void 0;let u;const c=[];c.push(""),c.push("/".repeat(70)),c.push(`// Channel: ${t}`),c.push(""),c.push(`#define ${t}_DEFINED`);const{transform:h}=WD(e.type),d=(I,...R)=>QD.apply(null,[I,"value",...R]);let p;switch(h){case"linear":p=d("scaleLinear","domain",a);break;case"log":p=d("scaleLog","domain",a,e.base());break;case"symlog":p=d("scaleSymlog","domain",a,e.constant());break;case"pow":case"sqrt":p=d("scalePow","domain",a,e.exponent());break;case"index":case"locus":p=d("scaleBandHp","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),n.band??.5);break;case"point":case"band":p=d("scaleBand","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),n.band??.5);break;case"ordinal":case"null":case"identity":p=d("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const b=ql(e.type)||vt(e.type)&&Li(t)?[0,1]:e.range?e.range():void 0;if(b&&t==r&&b.length&&b.every(Ft)){const I=lw(b);c.push(`const ${I.type} ${a} = ${I};`)}const y=Li(t)?"vec3":"float";let w;if(Li(t)){const I=$d+r;if(t==r&&c.push(`uniform sampler2D ${I};`),vt(e.type))w=`getInterpolatedColor(${I}, transformed)`;else if(Or(e.type)||Ro(e.type))w=`getDiscreteColor(${I}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Ro(e.type)){const I=$d+r;t==r&&c.push(`uniform sampler2D ${I};`),w=`getDiscreteColor(${I}, int(transformed)).r`}_s(n)?c.push(`uniform highp ${l} ${i};`):c.push(`in highp ${l} ${i};`);const S=[],C=vt(e.type)&&f>2,_=Ro(e.type)||C;if(S.push("int slot = 0;"),_){const I=o;S.push(C?`while (slot < ${I}.length() - 2 && value >= ${I}[slot + 1]) { slot++; }`:`while (slot < ${I}.length() && value >= ${I}[slot]) { slot++; }`)}const k=vt(e.type)||Ro(e.type)||["band","point"].includes(e.type);if(p){const I=o;k&&(s?S.push(`vec3 domain = ${I};`):S.push(`vec2 domain = vec2(${I}[slot], ${I}[slot + 1]);`)),S.push(`float transformed = ${p};`),C&&S.push(`transformed = (float(slot) + transformed) / (float(${I}.length() - 1));`)}else S.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&S.push(`transformed = clampToRange(transformed, ${lw(b)});`),S.push(`return ${w??"transformed"};`),c.push(` +${y} ${aw}${t}(${l} value) { +${S.map(I=>` ${I} `).join("")} }`),c.push(` -${y} ${lw}${e}() { - return ${sw}${e}(${i}); +${y} ${sw}${t}() { + return ${aw}${t}(${i}); }`);const D=c.join(` -`);if(I&&e==r){const k=vt(t.type)||Ro(t.type)?l:2;u=s?`highp vec3 ${o};`:`mediump float ${o}[${k}];`}return{glsl:D,domainUniform:u}}function Zd(e){if(!Ft(e))throw new Error(`Not a number: ${e}`);if(e==1/0)return""+fw;if(e==-1/0)return""+-fw;{let t=`${e}`;return/^(-)?\d+$/.test(t)&&(t+=".0"),t}}function Vi(e){typeof e=="number"&&(e=[e]);const t=e.length;if(t<1||t>4)throw new Error("Invalid number of components: "+t);let n,r;return t>1?(n=`vec${t}`,r=`${n}(${e.map(Zd).join(", ")})`):(n="float",r=Zd(e[0])),Object.assign(r,{type:n,numComponents:t})}function YD(e){const t=Fr(e).rgb();return Vi([t.r,t.g,t.b].map(n=>n/255))}function uw(e){return Vi([e[0],os(e)])}function QD(e,...t){const n=[];for(const r of t)Ft(r)?n.push(Zd(r)):jt(r)?n.push(Vi(r)):n.push(r);return`${e}(${n.join(", ")})`}function mu(e){return e=="index"||e=="locus"}const cw=2**11,XD=cw-1;function hw(e,t=[]){const n=e&XD,r=e-n;return t[0]=r,t[1]=n,t}function KD(e){const t=e%cw;return[e-t,t]}function JD(e){return[...KD(e[0]),e[1]-e[0]]}class eB{constructor(t){this.size=t,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(t,n){const r=this.createUpdater(Wd+t,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(t,n,r){if(!Ft(this.size))throw new Error("The number of vertices must be defined!");let i,o,a=0;const s=new Float32Array(this.size*n);if(this.arrays[t]={data:s,numComponents:n},n==1){let f=0;const l=u=>{f=+u};i=()=>{s[a++]=f},o=l}else{let f=r??[0];const l=r?u=>{}:u=>{f=u};switch(n){case 1:break;case 2:i=()=>{s[a++]=f[0],s[a++]=f[1]},o=l;break;case 3:i=()=>{s[a++]=f[0],s[a++]=f[1],s[a++]=f[2]},o=l;break;case 4:i=()=>{s[a++]=f[0],s[a++]=f[1],s[a++]=f[2],s[a++]=f[3]},o=l;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let t="",n="";for(let i=0;i4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Zd).join(", ")})`):(n="float",r=Zd(t[0])),Object.assign(r,{type:n,numComponents:e})}function YD(t){const e=Fr(t).rgb();return Vi([e.r,e.g,e.b].map(n=>n/255))}function lw(t){return Vi([t[0],os(t)])}function QD(t,...e){const n=[];for(const r of e)Ft(r)?n.push(Zd(r)):qt(r)?n.push(Vi(r)):n.push(r);return`${t}(${n.join(", ")})`}function mu(t){return t=="index"||t=="locus"}const uw=2**11,XD=uw-1;function cw(t,e=[]){const n=t&XD,r=t-n;return e[0]=r,e[1]=n,e}function KD(t){const e=t%uw;return[t-e,e]}function JD(t){return[...KD(t[0]),t[1]-t[0]]}class eB{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Wd+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(e,n,r){if(!Ft(this.size))throw new Error("The number of vertices must be defined!");let i,o,a=0;const s=new Float32Array(this.size*n);if(this.arrays[e]={data:s,numComponents:n},n==1){let l=0;const f=u=>{l=+u};i=()=>{s[a++]=l},o=f}else{let l=r??[0];const f=r?u=>{}:u=>{l=u};switch(n){case 1:break;case 2:i=()=>{s[a++]=l[0],s[a++]=l[1]},o=f;break;case 3:i=()=>{s[a++]=l[0],s[a++]=l[1],s[a++]=l[2]},o=f;break;case 4:i=()=>{s[a++]=l[0],s[a++]=l[1],s[a++]=l[2],s[a++]=l[3]},o=f;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n{const S=(y-f)/u,C=Math.floor(S);return Xd(w&&C==S?C-1:C,0,e-1)};function h(y,w,S){w>o?o=w:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const C=n(y),_=c(C,!1);i[_]>w&&(i[_]=w),s[_]o?o=w:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const C=n(y),_=r(y),I=c(C,!1),D=c(_,!0);for(let k=I;k<=D;k++)i[k]>w&&(i[k]=w),s[k]{const C=c(y,!1),_=c(w,!0),I=i[C],D=Math.max(s[_],I);return S[0]=I,S[1]=D,S},b=()=>{for(let w=1;w0;w--)y&&i[w]==dw?(i[w]=s[w],y=!1):i[w-1]>i[w]&&(i[w-1]=i[w]);return p};if(h.getIndex=b,d.getIndex=b,!a)return n==r?h:d}class Ps{constructor({encoders:t,numVertices:n=void 0,attributes:r=[]}){this.encoders=t,this.variableEncoders=Object.fromEntries(Object.entries(t).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new eB(n);for(const[i,o]of Object.entries(this.variableEncoders)){const a=o.accessor,s=[0,0],f=mu(o.scale.type),l=o.indexer,u=l?c=>l(a(c)):f?c=>hw(a(c),s):a;this.variableBuilder.addConverter(i,{f:u,numComponents:f?2:1,arrayReference:f?s:void 0})}this.lastOffset=0,this.rangeMap=new yi([],JSON.stringify)}registerBatch(t){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(t,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(t){for(const[n,r]of t)this.addBatch(n,r)}addBatch(t,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o{this.addToXIndex=f=>{},this.xIndexer=void 0};if(!t.length||r-n<0){i();return}const o=f=>{var l;return f&&vt((l=f.scale)==null?void 0:l.type)&&f},a=o(this.variableEncoders.x),s=o(this.variableEncoders.x2);if(a){const f=a.accessor,l=s?s.accessor:f,u=[f(t[n]),l(t[r-1])];if(u[1]>u[0]){this.xIndexer=nB(50,u,f,l);let c=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let d=this.variableBuilder.vertexCount;this.xIndexer(h,c,d),c=d}}else i()}else i()}addToXIndex(t){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class rB extends Ps{constructor({encoders:t,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:t,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(t,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[a,s]=this.visibleRange,f=h=>h.accessor||(d=>0),l=f(o.x),u=f(o.x2);this.prepareXIndexer(n,r,i);const c=[0,0];this.updateFrac(c);for(let h=r;hb&&([p,b]=[b,p]),bs)continue;ps&&(b=s),this.variableBuilder.updateFromDatum(d),c[0]=0,c[1]=0;const y=1;this.variableBuilder.pushAll();for(let w=0;w<=y;w++)c[0]=w/y,c[1]=0,this.variableBuilder.pushAll(),c[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(d)}this.registerBatch(t)}}class iB extends Ps{constructor({encoders:t,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:t,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(t,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;of,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(t,n,r=0,i=n.length){const o=this.properties.align||"left",a=this.properties.logoLetters??!1,s=this.metadata.common.base,f=this.metadata.common.scaleH;let l=-jo;switch(this.properties.baseline){case"top":l+=this.metrics.capHeight;break;case"middle":l+=this.metrics.capHeight/2;break;case"bottom":l-=this.metrics.descent;break}const u=this.encoders.text.accessor||this.encoders.text,c=[0,0];this.updateVertexCoord(c);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n,r,i);for(let d=r;d1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n{const S=(y-l)/u,C=Math.floor(S);return Xd(w&&C==S?C-1:C,0,t-1)};function h(y,w,S){w>o?o=w:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const C=n(y),_=c(C,!1);i[_]>w&&(i[_]=w),s[_]o?o=w:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const C=n(y),_=r(y),k=c(C,!1),D=c(_,!0);for(let I=k;I<=D;I++)i[I]>w&&(i[I]=w),s[I]{const C=c(y,!1),_=c(w,!0),k=i[C],D=Math.max(s[_],k);return S[0]=k,S[1]=D,S},b=()=>{for(let w=1;w0;w--)y&&i[w]==hw?(i[w]=s[w],y=!1):i[w-1]>i[w]&&(i[w-1]=i[w]);return p};if(h.getIndex=b,d.getIndex=b,!a)return n==r?h:d}class Ps{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new eB(n);for(const[i,o]of Object.entries(this.variableEncoders)){const a=o.accessor,s=[0,0],l=mu(o.scale.type),f=o.indexer,u=f?c=>f(a(c)):l?c=>cw(a(c),s):a;this.variableBuilder.addConverter(i,{f:u,numComponents:l?2:1,arrayReference:l?s:void 0})}this.lastOffset=0,this.rangeMap=new yi([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o{this.addToXIndex=l=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=l=>{var f;return l&&vt((f=l.scale)==null?void 0:f.type)&&l},a=o(this.variableEncoders.x),s=o(this.variableEncoders.x2);if(a){const l=a.accessor,f=s?s.accessor:l,u=[l(e[n]),f(e[r-1])];if(u[1]>u[0]){this.xIndexer=nB(50,u,l,f);let c=this.variableBuilder.vertexCount;this.addToXIndex=h=>{let d=this.variableBuilder.vertexCount;this.xIndexer(h,c,d),c=d}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class rB extends Ps{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[a,s]=this.visibleRange,l=h=>h.accessor||(d=>0),f=l(o.x),u=l(o.x2);this.prepareXIndexer(n,r,i);const c=[0,0];this.updateFrac(c);for(let h=r;hb&&([p,b]=[b,p]),bs)continue;ps&&(b=s),this.variableBuilder.updateFromDatum(d),c[0]=0,c[1]=0;const y=1;this.variableBuilder.pushAll();for(let w=0;w<=y;w++)c[0]=w/y,c[1]=0,this.variableBuilder.pushAll(),c[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(d)}this.registerBatch(e)}}class iB extends Ps{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;ol,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){const o=this.properties.align||"left",a=this.properties.logoLetters??!1,s=this.metadata.common.base,l=this.metadata.common.scaleH;let f=-jo;switch(this.properties.baseline){case"top":f+=this.metrics.capHeight;break;case"middle":f+=this.metrics.capHeight/2;break;case"bottom":f-=this.metrics.descent;break}const u=this.encoders.text.accessor||this.encoders.text,c=[0,0];this.updateVertexCoord(c);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n,r,i);for(let d=r;ds/(r-1)).map(s=>i+s/o).map(e);return n&&a.reverse(),yw(a)}function yw(e,t){const n=Math.max(e.length,t||0),r=new Uint8Array(n*3);for(let i=0;i{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr(),this._clearColor=[0,0,0,0],r){const a=Fr(r).rgb();this._clearColor=[a.r/255,a.g/255,a.b/255,a.opacity]}}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(t,n){const r="#version 300 es",i="precision mediump float;";jt(n)&&(n=n.join(` +`,bu=Symbol("cacheMap");function qo(t,e,n){let r=Ms(t).get(e);return r===void 0&&(r=n(e),Ms(t).set(e,r)),r}function pw(t,e){Ms(t).delete(e)}function yu(t,e){const n=Ms(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Ms(t).delete(e)}function gw(t){t[bu]=new Map}function Ms(t){return t[bu]||gw(t),t[bu]}function hB(t,e,n,r){const i=Ye(t)?t:t.name,o=!Ye(t)&&t.extent||[0,1];if(n===void 0&&!Ye(t)&&(n=t.count),i){const a=dd(i);if(Bt(a)){const s=mw(a,{extent:o,count:n});return wu(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}else{if(qt(a))return Kd(a,e);throw new Error("Unknown scheme: "+i)}}}function dB(t,e="rgb",n,r){const i=Wl(t,Ye(e)?e:e.type,Ye(e)?void 0:e.gamma),o=mw(i);return wu(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function pB(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let a=0;as/(r-1)).map(s=>i+s/o).map(t);return n&&a.reverse(),bw(a)}function bw(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr(),this._clearColor=[0,0,0,0],r){const a=Fr(r).rgb();this._clearColor=[a.r/255,a.g/255,a.b/255,a.opacity]}}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(e,n){const r="#version 300 es",i="precision mediump float;";qt(n)&&(n=n.join(` -`));const o=this.gl,a=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(a);if(!s){const f=[r,i,n].join(` +`));const o=this.gl,a=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(a);if(!s){const l=[r,i,n].join(` -`);s=o.createShader(t),o.shaderSource(s,f),o.compileShader(s),this._shaderCache.set(a,s)}return s}adjustGl(){const t=this.getLogicalCanvasSize();this.canvas.style.width=`${t.width}px`,this.canvas.style.height=`${t.height}px`;const n=this.getPhysicalCanvasSize(t);this.canvas.width=n.width,this.canvas.height=n.height,ND(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(t){return t=t||this.getLogicalCanvasSize(),{width:t.width*this.dpr,height:t.height*this.dpr}}getLogicalCanvasSize(){var o;if(this._logicalCanvasSize)return this._logicalCanvasSize;const t=((o=this._sizeSource)==null?void 0:o.call(this))??{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=t.width??this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=t.height??this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(t,n){this._listeners.push({type:t,listener:n})}_emit(t){for(const n of this._listeners)n.type===t&&n.listener()}readPickingPixel(t,n){const r=this.gl;t*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(t,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const t=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();t.viewport(0,0,n,r),t.disable(t.SCISSOR_TEST),t.clearColor(...this._clearColor),t.clear(t.COLOR_BUFFER_BIT)}createRangeTexture(t,n=!1){const r=this.rangeTextures.get(t);if(!n&&r)return;function i(a,s){return Or(s.type)?s.domain().length:s.type=="threshold"?s.domain().length+1:s.type=="quantize"||s.type=="quantile"?a??4:a}const o=t.channel;if(Li(o)){const a=t.getScaleProps(),s=t.getScale(),f=s.range();let l;if(a.scheme)if(s.type=="threshold"&&f)l=Kd(f,this.gl,s.domain().length,r);else{let u=Ye(a.scheme)?void 0:a.scheme.count;u=i(u,s),l=hB(a.scheme,this.gl,u,r)}else qf(s.type)||vt(s.type)&&f.length>2?l=dB(f,a.interpolate,this.gl,r):l=Kd(f,this.gl,s.domain().length,r);this.rangeTextures.set(t,l)}else{const a=t.getScale();if(a.type==="ordinal"||Ro(a.type)){const s=Zf(o)?qb(o):l=>l,f=t.getScale().range();this.rangeTextures.set(t,pB(f.map(s),this.gl,a.domain().length,r))}}}}function mB(e,t="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...t.matchAll(r)],o=new Map(i.map((a,s)=>{const f=parseInt(a[1]),l=i[s+1],u=l?l.index:t.length,c=t.substring(a.index,u);return[f-1,c]}));return e.split(` -`).map((a,s)=>{const f=o.get(s);return`${s+1+n}: ${a}${f?` +`);s=o.createShader(e),o.shaderSource(s,l),o.compileShader(s),this._shaderCache.set(a,s)}return s}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,ND(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var o;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=((o=this._sizeSource)==null?void 0:o.call(this))??{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=e.width??this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=e.height??this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(...this._clearColor),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(a,s){return Or(s.type)?s.domain().length:s.type=="threshold"?s.domain().length+1:s.type=="quantize"||s.type=="quantile"?a??4:a}const o=e.channel;if(Li(o)){const a=e.getScaleProps(),s=e.getScale(),l=s.range();let f;if(a.scheme)if(s.type=="threshold"&&l)f=Kd(l,this.gl,s.domain().length,r);else{let u=Ye(a.scheme)?void 0:a.scheme.count;u=i(u,s),f=hB(a.scheme,this.gl,u,r)}else ql(s.type)||vt(s.type)&&l.length>2?f=dB(l,a.interpolate,this.gl,r):f=Kd(l,this.gl,s.domain().length,r);this.rangeTextures.set(e,f)}else{const a=e.getScale();if(a.type==="ordinal"||Ro(a.type)){const s=Zl(o)?jb(o):f=>f,l=e.getScale().range();this.rangeTextures.set(e,pB(l.map(s),this.gl,a.domain().length,r))}}}}function mB(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((a,s)=>{const l=parseInt(a[1]),f=i[s+1],u=f?f.index:e.length,c=e.substring(a.index,u);return[l-1,c]}));return t.split(` +`).map((a,s)=>{const l=o.get(s);return`${s+1+n}: ${a}${l?` -^^^ ${f}`:""}`}).join(` -`)}function bB(e,t,n){const r=e.createProgram();e.attachShader(r,t),e.attachShader(r,n),e.linkProgram(r);function i(){let o,a;if(!e.getProgramParameter(r,e.LINK_STATUS)){o=e.getProgramInfoLog(r);for(const f of[t,n])e.getShaderParameter(f,e.COMPILE_STATUS)||(o=e.getShaderInfoLog(f),a=mB(e.getShaderSource(f),o,0)+` -Error compiling: ${o}`,e.deleteShader(f));e.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function wu(e,t,n,r){return r?vy(e,r,n,t):r=Fs(e,{...t,src:n}),r}function yB(...e){const t={get(n,r,i){for(const o of e){const s=o()[r];if(s!==void 0)return s}},has(n,r,i){for(const o of e){const a=o();if(r in a)return!0}return!1}};return new Proxy({},t)}function wB(e){return Ye(e)||Ft(e)||nf(e)}class ji extends Error{constructor(t,n){super(t),this.name="ViewError",this.view=n}}const xB="SAMPLE_FACET_UNIFORM",ww="SAMPLE_FACET_TEXTURE";class Os{constructor(t){this.unitView=t,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new vB,this.defaultProperties={get clip(){return["x","y"].map(n=>t.getScaleResolution(n)).some(n=>(n==null?void 0:n.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=yB(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const t={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(t.uniqueId={field:"_uniqueId"}),t}fixEncoding(t){return t}get encoding(){return qo(this,"encoding",()=>{const t=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=a=>{const s=this.properties[a];return wB(s)&&{value:s}},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>a[1].value!==void 0)),o=this.fixEncoding({...t,...i,...n});for(const a of Object.keys(o))this.getSupportedChannels().includes(a)||delete o[a];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=ZT(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return ww;if(this.unitView.getLayoutAncestors().find(t=>"samples"in t.spec))return xB}createAndLinkShaders(t,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const a=this.getSampleFacetMode();a&&r.push(`#define ${a}`);for(const h of i){let d;if(h in this.encoding)d=h;else continue;const p=this.encoding[d];if(p)if(En(p))o.push($D(d,p.value));else{const b=tn(p)&&p.resolutionChannel||d,y=zi(b)?this.unitView.getScaleResolution(b).getScale():$f(),w=ZD(d,y,p);o.push(w.glsl),w.domainUniform&&this.domainUniforms.push(w.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains { +^^^ ${l}`:""}`}).join(` +`)}function bB(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,a;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const l of[e,n])t.getShaderParameter(l,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(l),a=mB(t.getShaderSource(l),o,0)+` +Error compiling: ${o}`,t.deleteShader(l));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function wu(t,e,n,r){return r?xy(t,r,n,e):r=Fs(t,{...e,src:n}),r}function yB(...t){const e={get(n,r,i){for(const o of t){const s=o()[r];if(s!==void 0)return s}},has(n,r,i){for(const o of t){const a=o();if(r in a)return!0}return!1}};return new Proxy({},e)}function wB(t){return Ye(t)||Ft(t)||rl(t)}class ji extends Error{constructor(e,n){super(e),this.name="ViewError",this.view=n}}const xB="SAMPLE_FACET_UNIFORM",yw="SAMPLE_FACET_TEXTURE";class Os{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new vB,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>(n==null?void 0:n.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=yB(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return qo(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=a=>{const s=this.properties[a];return wB(s)&&{value:s}},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>a[1].value!==void 0)),o=this.fixEncoding({...e,...i,...n});for(const a of Object.keys(o))this.getSupportedChannels().includes(a)||delete o[a];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=$T(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return yw;if(this.unitView.getLayoutAncestors().find(e=>"samples"in e.spec))return xB}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const a=this.getSampleFacetMode();a&&r.push(`#define ${a}`);for(const h of i){let d;if(h in this.encoding)d=h;else continue;const p=this.encoding[d];if(p)if(En(p))o.push($D(d,p.value));else{const b=Nt(p)&&p.resolutionChannel||d,y=zi(b)?this.unitView.getScaleResolution(b).getScale():$l(),w=ZD(d,y,p);o.push(w.glsl),w.domainUniform&&this.domainUniforms.push(w.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains { `+this.domainUniforms.map(h=>` ${h} `).join("")+`}; -`:"",l=[`precision highp float; -`,...r,pw,lB,s,...o,fB,uB,t],u=[...r,pw,cB,n],c=this.gl;this.programStatus=bB(c,this.glHelper.compileShader(c.VERTEX_SHADER,l),this.glHelper.compileShader(c.FRAGMENT_SHADER,u))}finalizeGraphicsInitialization(){const t=this.programStatus.getProgramErrors();if(t){t.detail&&console.warn(t.detail);const n=new Error("Cannot create shader program: "+t.message);throw n.view=this.unitView,n}this.programInfo=wD(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=Zy(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=Zy(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),$t(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[t,n]of Object.entries(this.encoding))if(_s(n)){const r=this.encoders[t],i=r.indexer?r.indexer(n.datum):mu(r.scale.type)?hw(+n.datum):+n.datum;$t(this.programInfo,{[Wd+t]:i})}}deleteGraphicsData(){if(this.bufferInfo){const t=this.gl;for(let n=0;n<8;n++)t.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(t){if(this.gl.bindVertexArray(null),this.bufferInfo&&t.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(t.arrays))r.data&&B6(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=P6(this.gl,t.arrays,{numElements:t.vertexCount}),this.bufferInfo.allocatedVertices=t.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const t of this.unitView.getLayoutAncestors())if(!t.isPickingSupported())return!1;return!0}prepareRender(t){const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=LD(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[a,s]of Object.entries(this.domainUniformInfo.setters)){const f=a.substring(aw.length),l=this.encoding[f],u=tn(l)&&l.resolutionChannel||f;if(zi(u)){const c=this.unitView.getScaleResolution(u).getScale();i.push(()=>{const h=Or(c.type)?[0,c.domain().length]:c.domain();s(mu(c.type)?JD(h):h)})}}i.push(()=>Yy(r,this.programInfo,this.domainUniformInfo))}for(const[a,s]of Object.entries(this.encoding))if(tn(s)){const f=tn(s)&&s.resolutionChannel||a;if(zi(f)){const l=this.unitView.getScaleResolution(f),u=n.rangeTextures.get(l);u&&i.push(()=>$t(this.programInfo,{[$d+a]:u}))}}this.getSampleFacetMode()==ww&&i.push(()=>{let a;for(const s of this.unitView.getLayoutAncestors())if(a=s.getSampleFacetTexture(),a)break;if(!a)throw new Error("No facet texture available. This is bug.");$t(this.programInfo,{uSampleFacetTexture:a})});const o=(t.picking??!1)&&this.isPickingParticipant();return i.push(()=>Qy(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||t.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(t){const n=t.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const a=n.targetLocSize?n.targetLocSize.location:i,s=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,a,s)}return!0}render(t){}createRenderCallback(t,n){var c;if(!this.bufferInfo)throw new ji(`${this.getType()} mark has no data. This is bug.`,this.unitView);const r=this;let i;const o=(c=this.unitView.getScaleResolution("x"))==null?void 0:c.getScale(),a=o&&vt(o.type),s=["index","locus"].includes(o==null?void 0:o.type)?-1:0,f=[0,0];i=h=>{if(a&&h.xIndex){const d=o.domain(),p=h.xIndex(d[0]+s,d[1],f),b=p[0],y=p[1]-b;y>0&&t(b,y)}else t(h.offset,h.count)};const l=this.rangeMap.get(void 0).count==0?n.facetId:void 0,u=this.rangeMap.get(l);return n.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(n)&&i(u)}:function(){u.count&&i(u)}}setViewport(t,n){t=t.flatten();const r=this.unitView.context.devicePixelRatio,i=this.gl,o=this.properties,a=this.glHelper.getLogicalCanvasSize(),s=.5,f=(o.xOffset??0)+s,l=(o.yOffset??0)+s;let u,c=t;if(o.clip!=="never"&&(o.clip||n)){let h=0,d=0,p;if(n){if(c=t.intersect(n).flatten(),!c.isDefined())return!1;p=[t.width/c.width,t.height/c.height],d=Math.max(0,t.y2-n.y2),h=Math.min(0,t.x-n.x)}else p=[1,1];const b=[c.x,a.height-c.y2,c.width,c.height].map(C=>C*r),y=b.map(C=>Math.round(C)),[w,S]=b.map((C,_)=>C-y[_]);i.viewport(...y),i.scissor(...y),i.enable(i.SCISSOR_TEST),u={uViewOffset:[(f+h+w/r)/c.width,-(l+d-S/r)/c.height],uViewScale:p}}else{if(!t.isDefined())return!1;i.viewport(0,0,a.width*r,a.height*r),i.disable(i.SCISSOR_TEST),u={uViewOffset:[(t.x+f)/a.width,(a.height-t.y-l-t.height)/a.height],uViewScale:[t.width/a.width,t.height/a.height]}}return Qy(this.viewUniformInfo,{...u,uViewportSize:[t.width,t.height],uDevicePixelRatio:r}),Yy(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(t,n){}}class vB extends yi{constructor(){super([],JSON.stringify)}get(t){let n=super.get(t);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(t,n)),n}migrateEntries(t){for(const[n,r]of t.entries())Object.assign(this.get(n),r)}}function Jd(e,t){const n=KT(t);let r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(En(r)||En(i))){if(r){if(!tn(e[t]))return;if(i){if(r.type!="quantitative"){const o=(1-(r.band||1))/2;r.band=o,i.band=-o}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const o=(1-(r.band??1))/2;r.band=0+o,i.band=1-o}}else r={value:0},i={value:1};e[t]=r,e[n]=i}}function xw(e,t){e.stroke||(t?e.stroke={value:null}:e.stroke={resolutionChannel:"color",...e.color}),En(e.stroke)&&e.stroke.value===null&&(e.strokeWidth={value:0}),e.strokeOpacity||(e.strokeOpacity={resolutionChannel:"opacity",...e.opacity})}function vw(e,t){En(e.fill)&&e.fill.value===null?e.fillOpacity={value:0}:e.fill||(e.fill={resolutionChannel:"color",...e.color},!t&&!e.fillOpacity&&(e.fillOpacity={value:0})),e.fillOpacity||(t?e.fillOpacity={resolutionChannel:"opacity",...e.opacity}:e.fillOpacity={value:0})}class AB extends Os{constructor(t){super(t),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}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 qo(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&En(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(t){return Jd(t,"x"),Jd(t,"y"),xw(t,this.properties.filled),vw(t,this.properties.filled),delete t.color,delete t.opacity,t}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){const t=this.properties;return t.cornerRadius||t.cornerRadiusBottomLeft||t.cornerRadiusBottomRight||t.cornerRadiusTopLeft||t.cornerRadiusTopRight}_isStroked(){const t=this.encoding.strokeWidth;return!(En(t)&&!t.value)}async initializeGraphics(){await super.initializeGraphics();const t=[];this._isRoundedCorners()&&t.push("ROUNDED_CORNERS"),this._isStroked()&&t.push("STROKED"),this.createAndLinkShaders(VD,jD,t.map(n=>"#define "+n))}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;$t(this.programInfo,{uMinSize:[t.minWidth,t.minHeight],uMinOpacity:t.minOpacity,uCornerRadii:[t.cornerRadiusTopRight??t.cornerRadius,t.cornerRadiusBottomRight??t.cornerRadius,t.cornerRadiusTopLeft??t.cornerRadius,t.cornerRadiusBottomLeft??t.cornerRadius]})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getItemCount(),r=new rB({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(t){const n=super.prepareRender(t);return n.push(()=>Vo(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>{Rs(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},t)}findDatumAt(t,n){t=Wt(t);const r=this.unitView.getCollector().facetBatches.get(t);if(!r)return;const i=this.encoders,o=i.x.scale.type;if(Or(o)){const a=i.x.accessor;return r.find(s=>n==a(s))}else{const a=i.x.accessor,s=i.x2.accessor;return r.find(f=>n>=a(f)&&nthis.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&B6(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=P6(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const e of this.unitView.getLayoutAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=LD(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[a,s]of Object.entries(this.domainUniformInfo.setters)){const l=a.substring(ow.length),f=this.encoding[l],u=Nt(f)&&f.resolutionChannel||l;if(zi(u)){const c=this.unitView.getScaleResolution(u).getScale();i.push(()=>{const h=Or(c.type)?[0,c.domain().length]:c.domain();s(mu(c.type)?JD(h):h)})}}i.push(()=>Zy(r,this.programInfo,this.domainUniformInfo))}for(const[a,s]of Object.entries(this.encoding))if(Nt(s)){const l=Nt(s)&&s.resolutionChannel||a;if(zi(l)){const f=this.unitView.getScaleResolution(l),u=n.rangeTextures.get(f);u&&i.push(()=>Zt(this.programInfo,{[$d+a]:u}))}}this.getSampleFacetMode()==yw&&i.push(()=>{let a;for(const s of this.unitView.getLayoutAncestors())if(a=s.getSampleFacetTexture(),a)break;if(!a)throw new Error("No facet texture available. This is bug.");Zt(this.programInfo,{uSampleFacetTexture:a})});const o=(e.picking??!1)&&this.isPickingParticipant();return i.push(()=>Yy(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const a=n.targetLocSize?n.targetLocSize.location:i,s=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,a,s)}return!0}render(e){}createRenderCallback(e,n){var c;if(!this.bufferInfo)throw new ji(`${this.getType()} mark has no data. This is bug.`,this.unitView);const r=this;let i;const o=(c=this.unitView.getScaleResolution("x"))==null?void 0:c.getScale(),a=o&&vt(o.type),s=["index","locus"].includes(o==null?void 0:o.type)?-1:0,l=[0,0];i=h=>{if(a&&h.xIndex){const d=o.domain(),p=h.xIndex(d[0]+s,d[1],l),b=p[0],y=p[1]-b;y>0&&e(b,y)}else e(h.offset,h.count)};const f=this.rangeMap.get(void 0).count==0?n.facetId:void 0,u=this.rangeMap.get(f);return n.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(n)&&i(u)}:function(){u.count&&i(u)}}setViewport(e,n){e=e.flatten();const r=this.unitView.context.devicePixelRatio,i=this.gl,o=this.properties,a=this.glHelper.getLogicalCanvasSize(),s=.5,l=(o.xOffset??0)+s,f=(o.yOffset??0)+s;let u,c=e;if(o.clip!=="never"&&(o.clip||n)){let h=0,d=0,p;if(n){if(c=e.intersect(n).flatten(),!c.isDefined())return!1;p=[e.width/c.width,e.height/c.height],d=Math.max(0,e.y2-n.y2),h=Math.min(0,e.x-n.x)}else p=[1,1];const b=[c.x,a.height-c.y2,c.width,c.height].map(C=>C*r),y=b.map(C=>Math.round(C)),[w,S]=b.map((C,_)=>C-y[_]);i.viewport(...y),i.scissor(...y),i.enable(i.SCISSOR_TEST),u={uViewOffset:[(l+h+w/r)/c.width,-(f+d-S/r)/c.height],uViewScale:p}}else{if(!e.isDefined())return!1;i.viewport(0,0,a.width*r,a.height*r),i.disable(i.SCISSOR_TEST),u={uViewOffset:[(e.x+l)/a.width,(a.height-e.y-f-e.height)/a.height],uViewScale:[e.width/a.width,e.height/a.height]}}return Yy(this.viewUniformInfo,{...u,uViewportSize:[e.width,e.height],uDevicePixelRatio:r}),Zy(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(e,n){}}class vB extends yi{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function Jd(t,e){const n=XT(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(En(r)||En(i))){if(r){if(!Nt(t[e]))return;if(i){if(r.type!="quantitative"){const o=(1-(r.band||1))/2;r.band=o,i.band=-o}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const o=(1-(r.band??1))/2;r.band=0+o,i.band=1-o}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function ww(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),En(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function xw(t,e){En(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill={resolutionChannel:"color",...t.color},!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity={resolutionChannel:"opacity",...t.opacity}:t.fillOpacity={value:0})}class AB extends Os{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}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 qo(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&En(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Jd(e,"x"),Jd(e,"y"),ww(e,this.properties.filled),xw(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){const e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight}_isStroked(){const e=this.encoding.strokeWidth;return!(En(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(VD,jD,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Zt(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[e.cornerRadiusTopRight??e.cornerRadius,e.cornerRadiusBottomRight??e.cornerRadius,e.cornerRadiusTopLeft??e.cornerRadius,e.cornerRadiusBottomLeft??e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new rB({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Vo(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Rs(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=$t(e);const r=this.unitView.getCollector().facetBatches.get(e);if(!r)return;const i=this.encoders,o=i.x.scale.type;if(Or(o)){const a=i.x.accessor;return r.find(s=>n==a(s))}else{const a=i.x.accessor,s=i.x2.accessor;return r.find(l=>n>=a(l)&&n 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 = -angleInDegrees * PI / 180.0; + float angle = -(shapeAngle + angleInDegrees) * PI / 180.0; float sinTheta = sin(angle); float cosTheta = cos(angle); vRotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta); + + // Not needed if we would draw rotated quads instead of gl.POINTS float roomForRotation = circle ? 1.0 : sin(mod(angle, PI / 2.0) + PI / 4.0) / sin(PI / 4.0); float aaPadding = 1.0 / uDevicePixelRatio; @@ -781,15 +805,13 @@ in mat2 vRotationMatrix; out lowp vec4 fragColor; +// Copypaste from vertex shader const float CIRCLE = 0.0; const float SQUARE = 1.0; -const float TRIANGLE_UP = 2.0; -const float CROSS = 3.0; -const float DIAMOND = 4.0; -const float TRIANGLE_DOWN = 5.0; -const float TRIANGLE_RIGHT = 6.0; -const float TRIANGLE_LEFT = 7.0; - +const float CROSS = 2.0; +const float DIAMOND = 3.0; +const float TRIANGLE_UP = 4.0; +const float TICK_UP = 8.0; // The distance functions are inspired by: // http://www.iquilezles.org/www/articles/distfunctions2d/distfunctions2d.htm @@ -804,17 +826,17 @@ float square(vec2 p, float r) { return max(p.x, p.y) - r; } -float equilateralTriangle(vec2 p, float r, bool flip, bool swap) { - if (swap) { - p.xy = p.yx; - } - if (flip) { - p.y = -p.y; - } +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 / 3.0; p.y -= kr / 2.0; return max((abs(p.x) * k + p.y) / 2.0, -p.y - kr); } @@ -847,23 +869,17 @@ void main() { } else if (vShape == SQUARE) { d = square(p, r); - } else if (vShape == TRIANGLE_UP) { - d = equilateralTriangle(p, r, true, false); - } else if (vShape == CROSS) { d = crossShape(p, r); } else if (vShape == DIAMOND) { d = diamond(p, r); - } else if (vShape == TRIANGLE_DOWN) { - d = equilateralTriangle(p, r, false, false); - - } else if (vShape == TRIANGLE_RIGHT) { - d = equilateralTriangle(p, r, false, true); + } else if (vShape == TRIANGLE_UP) { + d = equilateralTriangle(p, r); - } else if (vShape == TRIANGLE_LEFT) { - d = equilateralTriangle(p, r, true, true); + } else if (vShape == TICK_UP) { + d = tickUp(p, r); } else { d = 0.0; @@ -886,10 +902,10 @@ void main() { } } -`,Gn=1,Vr=2,e0=4,SB={};class et{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const t of this.children)t.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",La(this.children.length).map(t=>`const child${t} = children[${t}];`).join(` -`)+`return function propagate(datum) {${La(this.children.length).map(t=>`child${t}.handle(datum);`).join(` -`)}}`)(this.children)}setParent(t){this.parent=t}addChild(t){if(t.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(t),t.setParent(this),this._updatePropagator(),this}adopt(t){t.parent&&t.parent.removeChild(t),this.addChild(t)}adoptChildrenOf(t){for(const n of t.children)this.adopt(n)}insertAsParent(t){if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");t.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=t,this.parent._updatePropagator(),this.parent=void 0,t.addChild(this)}removeChild(t){const n=this.children.indexOf(t);if(n>-1)this.children.splice(n,1),t.parent=void 0,this._updatePropagator();else throw new Error("Trying to remove an unknown child node!")}excise(){if(this.isRoot())throw new Error("Cannot excise root node!");if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){const t=this.children[0];t.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=t,this.parent._updatePropagator(),this.setParent(void 0),this.children.length=0}else throw new 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(t){t(this);for(const n of this.children)n.visit(t);t.afterChildren&&t.afterChildren(this)}subtreeToString(t=0){const n=this.children.map(r=>r.subtreeToString(t+1)).join("");return`${" ".repeat(t*2)}* ${this.constructor.name}${("identifier"in this&&this.identifier?": "+this.identifier:"")??""} -${n}`}getGlobalObject(){return this.parent?this.parent.getGlobalObject():SB}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of this.children)t.complete()}beginBatch(t){for(const n of this.children)n.beginBatch(t)}_propagate(t){}}function Aw(e){return e.type=="file"}function CB(e){return e.type=="facet"}class Ew extends et{constructor(t){super(),this.k=t.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(t){this.reservoir.push(t),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(t){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=t,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(t){this.ingester(t)}complete(){for(const t of this.reservoir)this._propagate(t);super.complete()}}function TB(e,t,n){const r=new Ew({type:"sample",size:e});for(const i of t)r.handle(n(i));return r.complete(),r.reservoir}const kB={};class IB extends Os{constructor(t){super(t),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({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}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","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(),...kB}}fixEncoding(t){return xw(t,this.properties.filled),vw(t,this.properties.filled),delete t.color,delete t.opacity,t}initializeData(){super.initializeData();const t=this.unitView.getAccessor("semanticScore");t&&(this.sampledSemanticScores=Float32Array.from(TB(1e4,this.unitView.getCollector().getData(),t)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(EB,_B)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;$t(this.programInfo,{uInwardStroke:t.inwardStroke,uGradientStrength:t.fillGradientStrength,uMaxRelativePointDiameter:1-2*t.sampleFacetPadding})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getItemCount(),r=new oB({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const t=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/t),1/3)}_getMaxPointSize(){const t=this.encoders.size;return t.constant?t(null):t.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const t=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(t<=0)return-1/0;if(t>=1)return 1/0;{const n=this.sampledSemanticScores;return om(n,t)}}else return-1}prepareRender(t){const n=super.prepareRender(t);return n.push(()=>$t(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Vo(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&Rs(n,this.vertexArrayInfo,n.POINTS,i,r)},t)}}const DB=`// Line caps +`,Gn=1,Vr=2,e0=4,SB={};class et{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",La(this.children.length).map(e=>`const child${e} = children[${e}];`).join(` +`)+`return function propagate(datum) {${La(this.children.length).map(e=>`child${e}.handle(datum);`).join(` +`)}}`)(this.children)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(e),e.setParent(this),this._updatePropagator(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(const n of e.children)this.adopt(n)}insertAsParent(e){if(this.isRoot())throw new 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._updatePropagator(),this.parent=void 0,e.addChild(this)}removeChild(e){const n=this.children.indexOf(e);if(n>-1)this.children.splice(n,1),e.parent=void 0,this._updatePropagator();else throw new Error("Trying to remove an unknown child node!")}excise(){if(this.isRoot())throw new Error("Cannot excise root node!");if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){const e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.setParent(void 0),this.children.length=0}else throw new 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(const n of this.children)n.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){const n=this.children.map(r=>r.subtreeToString(e+1)).join("");return`${" ".repeat(e*2)}* ${this.constructor.name}${("identifier"in this&&this.identifier?": "+this.identifier:"")??""} +${n}`}getGlobalObject(){return this.parent?this.parent.getGlobalObject():SB}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function vw(t){return t.type=="file"}function CB(t){return t.type=="facet"}class Aw extends et{constructor(e){super(),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(const e of this.reservoir)this._propagate(e);super.complete()}}function TB(t,e,n){const r=new Aw({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const IB={};class kB extends Os{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({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}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","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(),...IB}}fixEncoding(e){return ww(e,this.properties.filled),xw(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(TB(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(EB,_B)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Zt(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new oB({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return om(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Zt(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Vo(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&Rs(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const DB=`// Line caps const int BUTT = 0; const int SQUARE = 1; const int ROUND = 2; @@ -1030,10 +1046,17 @@ void main(void) { fragColor = vPickingColor; } } -`;class FB extends Os{constructor(t){super(t),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){if(!(t.x&&t.y&&t.x2&&t.y2))if(t.x&&t.x2&&!t.y)t.y={value:.5},t.y2=t.y;else if(t.y&&t.y2&&!t.x)t.x={value:.5},t.x2=t.x;else if(t.x&&!t.y)t.y={value:0},t.y2={value:1},t.x2=t.x;else if(t.y&&!t.x)t.x={value:0},t.x2={value:1},t.y2=t.y;else if(t.x&&t.y&&t.y2)t.x2=t.x;else if(t.y&&t.x&&t.x2)t.y2=t.y;else if(t.y&&t.x)if(!t.x2&&tn(t.y)&&t.y.type=="quantitative")t.x2=t.x,t.y2={datum:0};else if(!t.y2&&tn(t.x)&&t.x.type=="quantitative")t.y2=t.y,t.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(t));return t}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const t=this.gl,n=RB(this.properties.strokeDash);this.dashTexture=Fs(t,{mag:t.NEAREST,min:t.NEAREST,internalFormat:t.R8,format:t.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(DB,BB)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;$t(this.programInfo,{uMinLength:t.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(t.strokeCap)})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getItemCount(),r=new iB({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(t){const n=super.prepareRender(t);return this.dashTexture&&n.push(()=>$t(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Vo(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>Rs(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),t)}}function RB(e){if(e.length==0||e.length%2||e.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(e));const t=e.reduce((o,a)=>o+a),n=new Uint8Array(t);let r=!0,i=0;for(let o of e){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}const PB=`uniform float uSagittaScaleFactor; +`;class FB extends Os{constructor(e){super(e),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(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&&Nt(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Nt(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=RB(this.properties.strokeDash);this.dashTexture=Fs(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(DB,BB)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Zt(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new iB({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>Zt(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Vo(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Rs(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function RB(t){if(t.length==0||t.length%2||t.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((o,a)=>o+a),n=new Uint8Array(e);let r=!0,i=0;for(let o of t){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}const PB=`uniform float uArcHeightFactor; /** Make very small arcs visible */ -uniform float uMinSagittaLength; +uniform float uMinArcHeight; + +/** The minimum stroke width in pixels when rendering into the picking buffer */ +uniform float uMinPickingSize; + +uniform int uShape; +uniform int uOrient; +uniform bool uClampApex; in vec2 strip; @@ -1045,41 +1068,99 @@ out float vSize; /** The distance from the line center to the direction of normal in pixels */ out float vNormalLengthInPixels; +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; + void main(void) { float pixelSize = 1.0 / uDevicePixelRatio; float opacity = getScaled_opacity() * uViewOpacity; - vec2 a = vec2(getScaled_x(), getScaled_y()) * uViewportSize; - vec2 b = vec2(getScaled_x2(), getScaled_y2()) * uViewportSize; - - vec2 chordVector = b - a; - vec2 unitChordVector = normalize(chordVector); - vec2 chordNormal = vec2(-unitChordVector.y, unitChordVector.x); + // The bezier's control points + 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); + + if (uClampApex) { + 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 { + 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); + + if (uClampApex) { + 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); + } + } + } - float sagitta = max( - length(chordVector) / 2.0 * uSagittaScaleFactor, - uMinSagittaLength - ); + vec2 controlOffset = height / 0.75; - bool compress = false; - if (compress) { - // Work in progres... - float maxSagittaLen = length(chordNormal * uViewportSize); - float maxChordLen = length(unitChordVector * uViewportSize); + p2 = p1 + controlOffset; + p3 = p4 + controlOffset; - float threshold = maxSagittaLen * 0.5; - if (sagitta > threshold) { - float m = (maxSagittaLen - threshold) / (maxChordLen - threshold); - sagitta = (sagitta - threshold) * m + threshold; - } - } + } if (uShape == SHAPE_ARC) { + p1 = a; + p4 = b; - vec2 controlOffset = chordNormal * sagitta / 0.75; + vec2 chordVector = p4 - p1; + vec2 unitChordVector = normalize(chordVector); + vec2 chordNormal = vec2(-unitChordVector.y, unitChordVector.x); - vec2 p1 = a; - vec2 p2 = a + controlOffset; - vec2 p3 = b + controlOffset; - vec2 p4 = b; + float height = max( + length(chordVector) / 2.0 * uArcHeightFactor, + uMinArcHeight + ); + + // This is a bit poor approximation of a circular arc, but it's probably enough for most purposes. + // TODO: Consider a more sophisticated approach: https://stackoverflow.com/a/44829356/1547896 + 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; + } // Make segments shorter near the endpoints to make the tightly bent attachment points smoother float t = smoothstep(0.0, 1.0, strip.x); @@ -1103,22 +1184,18 @@ void main(void) { vec2 tangent = normalize(3.0*C1*t*t + 2.0*C2*t + C3); vec2 normal = vec2(-tangent.y, tangent.x); - //p = applySampleFacet(p); - -#ifdef size2_DEFINED - float mixedSize = mix(getScaled_size(), getScaled_size2(), t); -#else - float mixedSize = getScaled_size(); -#endif + float size = getScaled_size(); // Avoid artifacts in very thin lines by clamping the size and adjusting opacity respectively - if (mixedSize < pixelSize) { - opacity *= mixedSize / pixelSize; - mixedSize = pixelSize; + if (size < pixelSize) { + opacity *= size / pixelSize; + size = pixelSize; } - // Add an extra pixel to stroke width to accommodate edge antialiasing - float paddedSize = mixedSize + pixelSize; + // Handle minimum picking size or add an extra pixel to the stroke width to accommodate edge antialiasing + float paddedSize = uPickingEnabled + ? max(size, uMinPickingSize) + : size + pixelSize; vNormalLengthInPixels = strip.y * paddedSize; @@ -1127,13 +1204,7 @@ void main(void) { gl_Position = pixelsToNdc(p); -#ifdef color2_DEFINED - // Yuck, RGB interpolation in gamma space! - // TODO: linear space: https://unlimited3d.wordpress.com/2020/01/08/srgb-color-space-in-opengl/ - vec3 color = mix(getScaled_color(), getScaled_color2(), t); -#else vec3 color = getScaled_color(); -#endif vColor = vec4(color * opacity, opacity); @@ -1159,7 +1230,7 @@ void main(void) { fragColor = vPickingColor; } } -`;class OB extends Os{constructor(t){super(t),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){return t.x||(t.x2=t.x),t.y2||(t.y2=t.y),t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(PB,MB)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;$t(this.programInfo,{uSagittaScaleFactor:t.sagittaScaleFactor,uMinSagittaLength:t.minSagittaLength})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getItemCount(),r=new aB({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(t.facetBatches);const i=r.toArrays();i.arrays.strip={data:NB(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,a])=>[o,{...a,data:void 0}])),this.updateBufferInfo(i)}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[a,s]=o;s.buffer&&s.numComponents&&s.divisor&&(s.offset=r*this.arrays[a].numComponents*4)}Vo(n,this.programInfo,this.bufferInfo),Rs(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},t)}}function NB(e){let t=0;const n=[];for(;t<=e;t++)n.push(t/e,.5),n.push(t/e,-.5);return n}const LB=`uniform float uSdfNumerator; +`,OB=["arc","dome","diagonal","line"],NB=["vertical","horizontal"];class LB extends Os{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({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,linkShape:"arc",orient:"vertical"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x2||(Nt(e.x)?e.x2={datum:0}:e.x2=e.x),e.y2||(Nt(e.y)?e.y2={datum:0}:e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(PB,MB)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Zt(this.programInfo,{uArcHeightFactor:e.arcHeightFactor,uMinArcHeight:e.minArcHeight,uMinPickingSize:e.minPickingSize,uShape:OB.indexOf(e.linkShape),uOrient:NB.indexOf(e.orient),uClampApex:!!e.clampApex})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new aB({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:zB(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,a])=>[o,{...a,data:void 0}])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[a,s]=o;s.buffer&&s.numComponents&&s.divisor&&(s.offset=r*this.arrays[a].numComponents*4)}Vo(n,this.programInfo,this.bufferInfo),Rs(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function zB(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const UB=`uniform float uSdfNumerator; uniform vec2 uD; // dx & dy @@ -1405,7 +1476,7 @@ void main(void) { setupPicking(); } -`,zB=`uniform sampler2D uTexture; +`,GB=`uniform sampler2D uTexture; uniform bool uLogoLetter; in vec2 vTexCoord; @@ -1445,7 +1516,7 @@ void main() { fragColor = vPickingColor; } } -`,UB={left:-1,center:0,right:1},GB={top:-1,middle:0,bottom:1,alphabetic:1};class HB extends Os{constructor(t){super(t),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({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})),this.font=this.properties.font?t.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):t.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(t){for(const n of Po)this.properties.fitToBand&&Jd(t,n);return t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(LB,zB)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;$t(this.programInfo,{uPaddingX:t.paddingX,uPaddingY:t.paddingY,uFlushX:!!t.flushX,uFlushY:!!t.flushY,uAlign:[UB[t.align],GB[t.baseline]],uD:[t.dx,-t.dy],uLogoLetter:!!t.logoLetters,uSqueeze:!!t.squeeze,uViewportEdgeFadeWidth:[t.viewportEdgeFadeWidthTop,t.viewportEdgeFadeWidthRight,t.viewportEdgeFadeWidthBottom,t.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[t.viewportEdgeFadeDistanceTop,t.viewportEdgeFadeDistanceRight,t.viewportEdgeFadeDistanceBottom,t.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const t=this.unitView.getCollector(),n=t.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const a="format"in r.text?pt(r.text.format):l=>l;for(const l of n){const u=a(i(l)),c=Ye(u)?u:u===null?"":""+u;o+=c&&c.length||0}const s=new sB({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});s.addBatches(t.facetBatches);const f=s.toArrays();this.rangeMap.migrateEntries(f.rangeMap),this.updateBufferInfo(f)}prepareRender(t){const n=super.prepareRender(t);let r=.35;this.properties.logoLetters&&(r/=2);const i=this.font.metrics.common.base/(this.unitView.context.devicePixelRatio/r);return n.push(()=>$t(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:i})),n.push(()=>Vo(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(t){const n=this.gl;return this.createRenderCallback((r,i)=>Rs(n,this.vertexArrayInfo,n.TRIANGLES,i,r),t)}}function _w(e,t,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let a=0,s=0;for(const p of e)a+=xu(p.px)+(t0(p)?0:n),s+=xu(p.grow);a-=n;const f=Math.max(0,t-a),l=r!==void 0?p=>Math.round(p*r)/r:p=>p,u=[],c=[],h=p=>{const b=u.length;if(!b)return;const y=(p?n:0)*(o?-1:1);d-=y;for(let w=0;w0);const y=xu(b.px)+(s?xu(b.grow)/s*f:0);o&&(d-=y),c.push({location:l(d),size:l(y)}),o?d-=n:d+=y+n}}return d+=o?n:-n,h(!1),c}function VB(e){let t=0,n=0;for(const r of e)t=Math.max(t,r.px??0),n=Math.max(n,r.grow??0);return{px:t,grow:n}}const Ig=class Ig{constructor(t,n){ue(this,Nl);this.width=t,this.height=n}addPadding(t){return ie(this,Nl,Mg).call(this,t.width,t.height)}subtractPadding(t){return ie(this,Nl,Mg).call(this,-t.width,-t.height)}};Nl=new WeakSet,Mg=function(t,n){return new Ig({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};let jr=Ig;const Ns=Object.freeze({px:0,grow:0}),Sw=new jr(Ns,Ns);function t0(e){return!e.px&&!e.grow}function xu(e){return e||0}function jB(e){return e&&(Ft(e.px)||Ft(e.grow))}function Cw(e){if(kw(e))throw new Error("parseSizeDef does not accept step-based sizes.");if(jB(e))return e;if(Ft(e))return{px:e,grow:0};if(e==="container")return{px:0,grow:1};if(!e)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${e}`)}class Et{constructor(t,n,r,i){this.top=t||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new Et(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new Et(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new Et(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new Et(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 Et(0,this.right,0,this.left)}getVertical(){return new Et(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(t){return typeof t=="number"?this.createUniformPadding(t):t?this.createFromRecord(t):n0}static createFromRecord(t){return new Et(t.top,t.right,t.bottom,t.left)}static zero(){return n0}static createUniformPadding(t){return new Et(t,t,t,t)}}const n0=Et.createUniformPadding(0);Object.freeze(n0);const qB=/^([A-Za-z]+:)?\/\//;function WB(e,t){if(t&&qB.test(t))return t;const n=e();return n&&t?n.endsWith("/")?n+t:n+"/"+t:n??t}const $B="VISIT_SKIP",Ls="VISIT_STOP",Tw=e=>e;class ZB{constructor(t,n,r,i,o,a={}){ue(this,go);ue(this,Ul);ue(this,Ta,{});ue(this,Ll,{});ue(this,zl,{});St(this,"opacityFunction",Tw);if(!t)throw new Error("View spec must be defined!");this.context=n,this.layoutParent=r,this.dataParent=i,this.name=t.name||o,this.spec=t,this.resolutions={scale:{},axis:{}},mw(this),this.options={blockEncodingInheritance:!1,contributesToScaleDomain:!0,...a},this.needsAxes={x:!1,y:!1}}getPadding(){return this._cache("size/padding",()=>Et.createFromConfig(this.spec.padding))}getOverhang(){return Et.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache("size/size",()=>this.isConfiguredVisible()?new jr(ie(this,go,Yl).call(this,"width"),ie(this,go,Yl).call(this,"height")):Sw)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return Sw;const t=this.getSize();return new jr(ie(this,go,Yl).call(this,"viewportWidth")??t.width,ie(this,go,Yl).call(this,"viewportHeight")??t.height)}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(t=>t.isConfiguredVisible())}getEffectiveOpacity(){var t;return this.opacityFunction(((t=this.layoutParent)==null?void 0:t.getEffectiveOpacity())??1)}getPathString(){return this.getLayoutAncestors().map(t=>t.name).reverse().join("/")}getLayoutAncestors(){return ie(this,Ul,Og).call(this,"layoutParent")}getDataAncestors(){return ie(this,Ul,Og).call(this,"dataParent")}handleBroadcast(t){for(const n of X(this,Ta)[t.type]||[])n(t)}_addBroadcastHandler(t,n){let r=X(this,Ta)[t];r||(r=[],X(this,Ta)[t]=r),r.push(n)}handleInteractionEvent(t,n,r){const i=r?X(this,Ll):X(this,zl);for(const o of i[n.type]||[])o(t,n)}addInteractionEventListener(t,n,r){const i=r?X(this,Ll):X(this,zl);let o=i[t];o||(o=[],i[t]=o),o.push(n)}visit(t){try{const n=t(this);if(t.postOrder&&t.postOrder(this),n!==Ls)return n}catch(n){throw n.view=this,n}}getDescendants(){const t=[];return this.visit(n=>{t.push(n)}),t}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===Tw)&&(this.opacityFunction=QB(this))}onBeforeRender(){}render(t,n,r={}){}getEncoding(){const t=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},n=this.spec.encoding||{},r={...t,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(t){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(t){var r;const n=this.getEncoding().sample;return Es(n)?[n.field]:(r=this.layoutParent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(t){const n=Ni(t);return this.getDataAncestors().map(r=>r.resolutions.scale[n]).find(r=>r)}getAxisResolution(t){const n=Ni(t);return this.getDataAncestors().map(r=>r.resolutions.axis[n]).find(r=>r)}getConfiguredResolution(t,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[t]}getConfiguredOrDefaultResolution(t,n){return this.getConfiguredResolution(t,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(t,n)}getDefaultResolution(t,n){return"independent"}getBaseUrl(){return WB(()=>{var t;return(t=this.dataParent)==null?void 0:t.getBaseUrl()},this.spec.baseUrl)}isPickingSupported(){return!0}getTitleText(){const t=this.spec.title;if(t)return Ye(t)?t:t.text}_cache(t,n){return qo(this,t,n)}_invalidateCacheByPrefix(t,n="self"){switch(n){case"self":yu(this,t);break;case"ancestors":for(const r of this.getLayoutAncestors())yu(r,t);break;case"progeny":this.visit(r=>yu(r,t));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(t){}}Ta=new WeakMap,Ll=new WeakMap,zl=new WeakMap,go=new WeakSet,Yl=function(t){var i;let n=this.spec[t];const r=t=="viewportWidth"||t=="viewportHeight";if(kw(n)){if(r)throw new ji(`Cannot use step-based size with "${t}"!`,this);const o=n.step,a=(i=this.getScaleResolution(t=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let s=0;if(Or(a.type))s=a.domain().length;else if(["locus","index"].includes(a.type)){const l=a.domain();s=os(l)-l[0]}else throw new ji(`Cannot use step-based size with "${a.type}" scale!`,this);const f=a;return s=sd(s,f.paddingInner(),f.paddingOuter()),{px:s*o,grow:0}}else throw new ji("Cannot use 'step' size with missing scale!",this)}else return(n&&Cw(n))??(r?void 0:{px:0,grow:1})},Ul=new WeakSet,Og=function(t){const n=[];let r=this;do n.push(r),r=r[t];while(r);return n};function YB(e){return"unitsPerPixel"in e}function QB(e){const t=e.spec.opacity;if(t!==void 0){if(Ft(t))return n=>n*t;if(YB(t)){const n=o=>{var s;const a=(s=e.getScaleResolution(o))==null?void 0:s.getScale();if(["linear","index","locus"].includes(a==null?void 0:a.type))return a},r=t.channel?n(t.channel):n("x")??n("y");if(!r)throw new ji("Cannot find a resolved quantitative scale for dynamic opacity!",e);const i=Jh().domain(t.unitsPerPixel).range(t.values).clamp(!0);return o=>{const s=rf(r.domain())/1e3;return i(s)*o}}}return n=>n}const kw=e=>!!(e!=null&&e.step);class qi extends ZB{constructor(t,n,r,i,o,a){super(t,n,r,i,o,a),this.spec=t}async initializeChildren(){}*[Symbol.iterator](){}replaceChild(t,n){throw new Error("Not implemented")}visit(t){let n;try{n=t(this)}catch(r){throw r.view=this,r}if(n===Ls)return n;if(n!==$B){t.beforeChildren&&t.beforeChildren(this);for(const r of this){const i=r.visit(t);if(i===Ls)return i}t.afterChildren&&t.afterChildren(this),t.postOrder&&t.postOrder(this)}}findDescendantByPath(t){for(const n of this)if(n.name===t[0]){if(t.length==1)return n;if(n instanceof qi)return n.findDescendantByPath(t.slice(1))}}findChildByName(t){for(const n of this)if(n.name===t)return n}findDescendantByName(t){let n;return this.visit(r=>{if(r.name==t)return n=r,Ls}),n}getDefaultResolution(t,n){return"shared"}}const Iw=1;function r0(){let e=[0,1],t=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const l=u=>(u+a-e[0])/n*r+t[0];return l.invert=u=>(u-t[0])/r*n+e[0]-a,l.domain=function(u){if(arguments.length){e=t3(u),n=e[1]-e[0];const c=e[0]===0&&e[0]===0;if(nr/n,l.bandwidth=()=>l.step(),l.ticks=u=>{const c=l.align(),h=l.numberingOffset();return ff(e[0]-c+h,e[1]-c+h,Math.min(u,Math.ceil(n))).filter(Number.isInteger).map(d=>d-s)},l.tickFormat=(u,c)=>{if(c)throw new Error("Index scale's tickFormat does not support a specifier!");const d=wi(e[0],e[1],Math.min(u,Math.ceil(n)))<1e5?pt(","):pt(".3s");return p=>d(p+s)},l.copy=()=>r0().domain(e).range(t).paddingInner(i).paddingOuter(o).numberingOffset(s),l}function XB(){const e=r0().numberingOffset(1);let t;e.genome=function(r){return arguments.length?(t=r,e):t},e.ticks=r=>{if(!t)return[];const i=e.domain(),o=e.numberingOffset(),[a,s]=[Math.max(i[0],0),Math.min(i[1],t.totalSize-1)].map(u=>t.toChromosome(u)),f=Math.max(1,wi(i[0],i[1],r)),l=[];for(let u=a.index;u<=s.index;u++){const c=t.chromosomes[u],h=Math.max(c.continuousStart+f,i[0]-(i[0]-c.continuousStart)%f),d=Math.min(c.continuousEnd-f/4,i[1]+1);for(let p=h;p<=d;p+=f){const b=p-o;b>=i[0]&&b{if(!t)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=e.domain(),a=o[1]-o[0],s=e.numberingOffset(),l=wi(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?pt(","):pt(".3s"),u=c=>c-t.toChromosome(c).continuousStart;return c=>l(u(c)+s)};const n=e.copy;return e.copy=()=>n().genome(t),e}function KB(e){return e.type=="locus"}function vu(e,t,n){if(n=n||[],e.some(a=>a===null)){if(e.every(a=>a===null))return null;throw console.warn(e),new Error("Cannot merge objects with nulls!")}const r={},i=(a,s)=>a===s||Wo(a)&&Wo(s)||Wo(a)&&s===!0||a===!0&&qt(s),o=a=>{for(let s in a){const f=a[s];if(!n.includes(s)&&f!==void 0)if(r[s]!==void 0&&!i(r[s],f))console.warn(`Conflicting property ${s} of ${t}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const l=r[s];if(Wo(l))Wo(f)&&(r[s]=vu([l,f],s));else if(Wo(f)){if(!(l===!0||l===void 0))throw new Error("Bug in merge! Target is: "+l);r[s]=vu([{},f],s)}else r[s]=f}}};for(const a of e)o(a);return r}function Wo(e){return qt(e)&&!Array.isArray(e)}/*! +`,HB={left:-1,center:0,right:1},VB={top:-1,middle:0,bottom:1,alphabetic:1};class jB extends Os{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({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})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of Po)this.properties.fitToBand&&Jd(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(UB,GB)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Zt(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[HB[e.align],VB[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const a="format"in r.text?pt(r.text.format):f=>f;for(const f of n){const u=a(i(f)),c=Ye(u)?u:u===null?"":""+u;o+=c&&c.length||0}const s=new sB({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});s.addBatches(e.facetBatches);const l=s.toArrays();this.rangeMap.migrateEntries(l.rangeMap),this.updateBufferInfo(l)}prepareRender(e){const n=super.prepareRender(e);let r=.35;this.properties.logoLetters&&(r/=2);const i=this.font.metrics.common.base/(this.unitView.context.devicePixelRatio/r);return n.push(()=>Zt(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:i})),n.push(()=>Vo(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Rs(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function Ew(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let a=0,s=0;for(const p of t)a+=xu(p.px)+(t0(p)?0:n),s+=xu(p.grow);a-=n;const l=Math.max(0,e-a),f=r!==void 0?p=>Math.round(p*r)/r:p=>p,u=[],c=[],h=p=>{const b=u.length;if(!b)return;const y=(p?n:0)*(o?-1:1);d-=y;for(let w=0;w0);const y=xu(b.px)+(s?xu(b.grow)/s*l:0);o&&(d-=y),c.push({location:f(d),size:f(y)}),o?d-=n:d+=y+n}}return d+=o?n:-n,h(!1),c}function qB(t){let e=0,n=0;for(const r of t)e=Math.max(e,r.px??0),n=Math.max(n,r.grow??0);return{px:e,grow:n}}const kg=class kg{constructor(e,n){ue(this,Lf);this.width=e,this.height=n}addPadding(e){return ie(this,Lf,Mg).call(this,e.width,e.height)}subtractPadding(e){return ie(this,Lf,Mg).call(this,-e.width,-e.height)}};Lf=new WeakSet,Mg=function(e,n){return new kg({px:(this.width.px??0)+e,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};let jr=kg;const Ns=Object.freeze({px:0,grow:0}),_w=new jr(Ns,Ns);function t0(t){return!t.px&&!t.grow}function xu(t){return t||0}function WB(t){return t&&(Ft(t.px)||Ft(t.grow))}function Sw(t){if(Tw(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(WB(t))return t;if(Ft(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class Et{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new Et(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Et(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Et(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}union(e){return new Et(Math.max(this.top,e.top),Math.max(this.right,e.right),Math.max(this.bottom,e.bottom),Math.max(this.left,e.left))}getHorizontal(){return new Et(0,this.right,0,this.left)}getVertical(){return new Et(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):n0}static createFromRecord(e){return new Et(e.top,e.right,e.bottom,e.left)}static zero(){return n0}static createUniformPadding(e){return new Et(e,e,e,e)}}const n0=Et.createUniformPadding(0);Object.freeze(n0);const $B=/^([A-Za-z]+:)?\/\//;function ZB(t,e){if(e&&$B.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n??e}const YB="VISIT_SKIP",Ls="VISIT_STOP",Cw=t=>t;class QB{constructor(e,n,r,i,o,a={}){ue(this,go);ue(this,Gf);ue(this,Ta,{});ue(this,zf,{});ue(this,Uf,{});St(this,"opacityFunction",Cw);if(!e)throw new Error("View spec must be defined!");this.context=n,this.layoutParent=r,this.dataParent=i,this.name=e.name||o,this.spec=e,this.resolutions={scale:{},axis:{}},gw(this),this.options={blockEncodingInheritance:!1,contributesToScaleDomain:!0,...a},this.needsAxes={x:!1,y:!1}}getPadding(){return this._cache("size/padding",()=>Et.createFromConfig(this.spec.padding))}getOverhang(){return Et.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache("size/size",()=>this.isConfiguredVisible()?new jr(ie(this,go,Qf).call(this,"width"),ie(this,go,Qf).call(this,"height")):_w)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return _w;const e=this.getSize();return new jr(ie(this,go,Qf).call(this,"viewportWidth")??e.width,ie(this,go,Qf).call(this,"viewportHeight")??e.height)}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(e=>e.isConfiguredVisible())}getEffectiveOpacity(){var e;return this.opacityFunction(((e=this.layoutParent)==null?void 0:e.getEffectiveOpacity())??1)}getPathString(){return this.getLayoutAncestors().map(e=>e.name).reverse().join("/")}getLayoutAncestors(){return ie(this,Gf,Og).call(this,"layoutParent")}getDataAncestors(){return ie(this,Gf,Og).call(this,"dataParent")}handleBroadcast(e){for(const n of X(this,Ta)[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=X(this,Ta)[e];r||(r=[],X(this,Ta)[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?X(this,zf):X(this,Uf);for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?X(this,zf):X(this,Uf);let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Ls)return n}catch(n){throw n.view=this,n}}getDescendants(){const e=[];return this.visit(n=>{e.push(n)}),e}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===Cw)&&(this.opacityFunction=KB(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Es(n)?[n.field]:(r=this.layoutParent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){const n=Ni(e);return this.getDataAncestors().map(r=>r.resolutions.scale[n]).find(r=>r)}getAxisResolution(e){const n=Ni(e);return this.getDataAncestors().map(r=>r.resolutions.axis[n]).find(r=>r)}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getConfiguredOrDefaultResolution(e,n){return this.getConfiguredResolution(e,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(e,n)}getDefaultResolution(e,n){return"independent"}getBaseUrl(){return ZB(()=>{var e;return(e=this.dataParent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return Ye(e)?e:e.text}_cache(e,n){return qo(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":yu(this,e);break;case"ancestors":for(const r of this.getLayoutAncestors())yu(r,e);break;case"progeny":this.visit(r=>yu(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}Ta=new WeakMap,zf=new WeakMap,Uf=new WeakMap,go=new WeakSet,Qf=function(e){var i;let n=this.spec[e];const r=e=="viewportWidth"||e=="viewportHeight";if(Tw(n)){if(r)throw new ji(`Cannot use step-based size with "${e}"!`,this);const o=n.step,a=(i=this.getScaleResolution(e=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let s=0;if(Or(a.type))s=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();s=os(f)-f[0]}else throw new ji(`Cannot use step-based size with "${a.type}" scale!`,this);const l=a;return s=sd(s,l.paddingInner(),l.paddingOuter()),{px:s*o,grow:0}}else throw new ji("Cannot use 'step' size with missing scale!",this)}else return(n&&Sw(n))??(r?void 0:{px:0,grow:1})},Gf=new WeakSet,Og=function(e){const n=[];let r=this;do n.push(r),r=r[e];while(r);return n};function XB(t){return"unitsPerPixel"in t}function KB(t){const e=t.spec.opacity;if(e!==void 0){if(Ft(e))return n=>n*e;if(XB(e)){const n=o=>{var s;const a=(s=t.getScaleResolution(o))==null?void 0:s.getScale();if(["linear","index","locus"].includes(a==null?void 0:a.type))return a},r=e.channel?n(e.channel):n("x")??n("y");if(!r)throw new ji("Cannot find a resolved quantitative scale for dynamic opacity!",t);const i=Jh().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=il(r.domain())/1e3;return i(s)*o}}}return n=>n}const Tw=t=>!!(t!=null&&t.step);class qi extends QB{constructor(e,n,r,i,o,a){super(e,n,r,i,o,a),this.spec=e}async initializeChildren(){}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===Ls)return n;if(n!==YB){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Ls)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof qi)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,Ls}),n}getDefaultResolution(e,n){return"shared"}}const Iw=1;function r0(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const f=u=>(u+a-t[0])/n*r+e[0];return f.invert=u=>(u-e[0])/r*n+t[0]-a,f.domain=function(u){if(arguments.length){t=e3(u),n=t[1]-t[0];const c=t[0]===0&&t[0]===0;if(nr/n,f.bandwidth=()=>f.step(),f.ticks=u=>{const c=f.align(),h=f.numberingOffset();return ll(t[0]-c+h,t[1]-c+h,Math.min(u,Math.ceil(n))).filter(Number.isInteger).map(d=>d-s)},f.tickFormat=(u,c)=>{if(c)throw new Error("Index scale's tickFormat does not support a specifier!");const d=wi(t[0],t[1],Math.min(u,Math.ceil(n)))<1e5?pt(","):pt(".3s");return p=>d(p+s)},f.copy=()=>r0().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),f}function JB(){const t=r0().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[a,s]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(u=>e.toChromosome(u)),l=Math.max(1,wi(i[0],i[1],r)),f=[];for(let u=a.index;u<=s.index;u++){const c=e.chromosomes[u],h=Math.max(c.continuousStart+l,i[0]-(i[0]-c.continuousStart)%l),d=Math.min(c.continuousEnd-l/4,i[1]+1);for(let p=h;p<=d;p+=l){const b=p-o;b>=i[0]&&b{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),a=o[1]-o[0],s=t.numberingOffset(),f=wi(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?pt(","):pt(".3s"),u=c=>c-e.toChromosome(c).continuousStart;return c=>f(u(c)+s)};const n=t.copy;return t.copy=()=>n().genome(e),t}function eF(t){return t.type=="locus"}function vu(t,e,n){if(n=n||[],t.some(a=>a===null)){if(t.every(a=>a===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(a,s)=>a===s||Wo(a)&&Wo(s)||Wo(a)&&s===!0||a===!0&&Wt(s),o=a=>{for(let s in a){const l=a[s];if(!n.includes(s)&&l!==void 0)if(r[s]!==void 0&&!i(r[s],l))console.warn(`Conflicting property ${s} of ${e}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const f=r[s];if(Wo(f))Wo(l)&&(r[s]=vu([f,l],s));else if(Wo(l)){if(!(f===!0||f===void 0))throw new Error("Bug in merge! Target is: "+f);r[s]=vu([{},l],s)}else r[s]=l}}};for(const a of t)o(a);return r}function Wo(t){return Wt(t)&&!Array.isArray(t)}/*! * Adapted from vega-encode: * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js * @@ -1453,7 +1524,7 @@ void main() { * All rights reserved. * * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE - */function Dw(e,t,n){return Ft(t)&&n!=null&&(t=Math.min(t,~~(rf(e.domain())/n)||1)),qt(t)&&(t.step,t=t.interval),t}function Bw(e,t,n){var r=e.range(),i=Math.floor(r[0]),o=Math.ceil(yn(r));if(i>o&&(r=o,o=i,i=r),t=t.filter(function(s){return s=e(s),i<=s&&s<=o}),n>0&&t.length>1){for(var a=[t[0],yn(t)];t.length>n&&t.length>=3;)t=t.filter(function(s,f){return!(f%2)});t.length<3&&(t=a)}return t}function JB(e,t){return e.bins?Bw(e,eF(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function eF(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(i,o){return!(o%r)})}function tF(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?pt(n):String;if(Ob(e.type)){var i=rF(n);r=e.bins?i:nF(r,i)}return r}function nF(e,t){return function(n){return e(n)?t(n):""}}function rF(e){var t=_r(e||",");if(t.precision==null){switch(t.precision=12,t.type){case"%":t.precision-=2;break;case"e":t.precision-=1;break}return iF(pt(t),pt(".1f")(1)[1])}else return pt(t)}function iF(e,t){return function(n){var r=e(n),i=r.indexOf(t),o,a;if(i<0)return r;for(o=oF(r,i),a=oi;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function oF(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}/*! + */function kw(t,e,n){return Ft(e)&&n!=null&&(e=Math.min(e,~~(il(t.domain())/n)||1)),Wt(e)&&(e.step,e=e.interval),e}function Dw(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(yn(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(s){return s=t(s),i<=s&&s<=o}),n>0&&e.length>1){for(var a=[e[0],yn(e)];e.length>n&&e.length>=3;)e=e.filter(function(s,l){return!(l%2)});e.length<3&&(e=a)}return e}function tF(t,e){return t.bins?Dw(t,nF(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function nF(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function rF(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?pt(n):String;if(Ob(t.type)){var i=oF(n);r=t.bins?i:iF(r,i)}return r}function iF(t,e){return function(n){return t(n)?e(n):""}}function oF(t){var e=_r(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return aF(pt(e),pt(".1f")(1)[1])}else return pt(e)}function aF(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,a;if(i<0)return r;for(o=sF(r,i),a=oi;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function sF(t,e){var n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}/*! * Adapted from vega-encode: * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js * @@ -1461,73 +1532,73 @@ void main() { * All rights reserved. * * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE - */const aF="locus",sF="index";var lF=5;function fF(e){const t=e.type;return!e.bins&&(t===Bo||t===ys||t===ws)}function Fw(e){return vt(e)&&![Ln,sF,aF].includes(e)}function Rw(e){return e||{warn:(t,...n)=>console.warn(t,...n)}}var uF=af(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function Pw(e,t,n){n=Rw(n);for(const r in e)if(!uF[r]){if(r==="padding"&&Fw(t.type))continue;Bt(t[r])?t[r](e[r]):n.warn("Unsupported scale property: "+r)}yF(t,e,bF(t,e,pF(t,e,n)))}function cF(e,t){const n=hF(e),r=Ae(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return!e.domain&&vt(i.type)&&(e.domain=[0,0]),Pw(e,i,t),i}function hF(e){var t=e.type,n="",r;return t===Ln?Ln+"-"+Bo:(dF(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Ln+"-":r===3?Fo+"-":""),(n+t||Bo).toLowerCase())}function dF(e){const t=e.type;return vt(t)&&t!==kb&&t!==Ib&&(e.scheme||e.range&&e.range.length&&e.range.every(Ye))}function pF(e,t,n){if(!e.domain)return 0;n=Rw(n);var r=gF(e,t.domainRaw,n);if(r>-1)return r;var i=t.domain,o=e.type,a=t.zero||t.zero===void 0&&fF(e),s,f;return i?(Fw(o)&&t.padding&&i[0]!==yn(i)&&(i=mF(o,i,t.range,t.padding,t.exponent,t.constant)),(a||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(s=(i=i.slice()).length-1||1,a&&(i[0]>0&&(i[0]=0),i[s]<0&&(i[s]=0)),t.domainMin!=null&&(i[0]=t.domainMin),t.domainMax!=null&&(i[s]=t.domainMax),t.domainMid!=null&&(f=t.domainMid,(fi[s])&&n.warn("Scale domainMid exceeds domain min or max.",f),i.splice(s,0,f))),e.domain(Mw(o,i,n)),o===fd&&e.unknown(t.domainImplicit?Dh:void 0),t.nice&&e.nice&&e.nice(t.nice!==!0&&Dw(e,t.nice)||null),i.length):0}function gF(e,t,n){return t?(e.domain(Mw(e.type,t,n)),t.length):-1}function mF(e,t,n,r,i,o){var a=Math.abs(yn(n)-n[0]),s=a/(a-2*r),f=e===Mr?qg(t,null,s):e===ws?zc(t,null,s,.5):e===ys?zc(t,null,s,i||1):e===Vf?SS(t,null,s,o||1):jg(t,null,s);return t=t.slice(),t[0]=f[0],t[t.length-1]=f[1],t}function Mw(e,t,n){if(Ob(e)){var r=Math.abs(t.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==t.length&&n.warn("Log scale domain includes zero: "+of(t))}return t}function bF(e,t,n){let r=t.bins;if(r&&!jt(r)){const i=(r.start==null||r.stop==null)&&e.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?yn(i):r.stop,s=r.step;s||Ze("Scale bins parameter missing step property."),r=La(o,a+s,s)}return r?e.bins=r:e.bins&&delete e.bins,e.type===cd&&(r?!t.domain&&!t.domainRaw&&(e.domain(r),n=r.length):e.bins=e.domain()),n}function yF(e,t,n){var r=e.type,i=t.round||!1,o=t.range;if(t.rangeStep!=null)o=wF(r,t,n);else if(t.scheme&&(o=xF(r,t,n),Bt(o))){if(e.interpolator)return e.interpolator(o);Ze(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&qf(r))return e.interpolator(Wf(i0(o,t.reverse),t.interpolate,t.interpolateGamma));o&&t.interpolate&&e.interpolate?e.interpolate(Nb(t.interpolate,t.interpolateGamma)):Bt(e.round)?e.round(i):Bt(e.rangeRound)&&e.interpolate(i?ms:Rr),o&&e.range(i0(o,t.reverse))}function wF(e,t,n){e!==Fb&&e!==ud&&Ze("Only band and point scales support rangeStep.");var r=(t.paddingOuter!=null?t.paddingOuter:t.padding)||0,i=e===ud?1:(t.paddingInner!=null?t.paddingInner:t.padding)||0;return[0,t.rangeStep*sd(n,i,r)]}function xF(e,t,n){var r=t.schemeExtent,i,o;return jt(t.scheme)?o=Wf(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),o=dd(i),o||Ze(`Unrecognized scheme name: ${t.scheme}`)),n=e===Bb?n+1:e===cd?n-1:e===ld||e===Db?+t.schemeCount||lF:n,qf(e)?Ow(o,r,t.reverse):Bt(o)?VT(Ow(o,r),n):e===fd?o:o.slice(0,n)}function Ow(e,t,n){return Bt(e)&&(t||n)?HT(e,i0(t||[0,1],n)):e}function i0(e,t){return t?e.slice().reverse():e}const Nw=pt(",d");function vF(e,t){return e.chrom+":"+Nw(Math.floor(e.pos+1))+"-"+(e.chrom!=t.chrom?t.chrom+":":"")+Nw(Math.ceil(t.pos))}const AF="https://genomespy.app/data/genomes/";class EF{constructor(t){if(this.config=t,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(t){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:t+"/"+this.config.baseUrl:this.baseUrl=AF;try{this.setChromSizes(_F(await vf({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}hasChrPrefix(){return this.chromosomes.some(t=>t.name.startsWith("chr"))}setChromSizes(t){let n=0;this.startByIndex=[0];for(let r=0;rthis.totalSize)return;t=Math.floor(t);const n=vo(this.startByIndex,t)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(t){const n=this.toChromosome(t);if(n)return{chrom:n.name,pos:Math.floor(t)-n.continuousStart}}getChromosome(t){return this.chromosomesByName.get(t)}formatInterval(t){return vF(...this.toChromosomalInterval(t))}toChromosomalInterval(t){const n=this.toChromosomal(t[0]+.5),r=this.toChromosomal(t[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(t){var i;let[n,r]=t;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}toDiscreteChromosomeIntervals(t){const n=t[0],r=t[1],i=[];if(n.chrom===r.chrom)i.push({chrom:n.chrom,startPos:n.pos,endPos:r.pos});else{const o=this.chromosomes.findIndex(s=>s.name===n.chrom),a=this.chromosomes.findIndex(s=>s.name===r.chrom);i.push({chrom:n.chrom,startPos:n.pos,endPos:this.chromosomes[o].size});for(let s=o+1;ss===void 0)){const s=this.getChromosome(r);return s?[s.continuousStart,s.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),a=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,a)]}}}function _F(e){return jS(e).filter(t=>/^chr[0-9A-Z]+$/.test(t[0])).map(([t,n])=>({name:t,size:parseInt(n)}))}function Lw(e){return qt(e)&&"chrom"in e}function SF(e){return e.every(Lw)}class zs extends Array{constructor(){super(),this.type=void 0}extend(t){return this}extendAll(t){if(t instanceof zs&&t.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(const n of t)this.extend(n);return this}extendAllWithAccessor(t,n){for(const r of t)this.extend(n(r));return this}}class o0 extends zs{constructor(){super(),this.type="quantitative"}extend(t){return t==null||Number.isNaN(t)?this:(t=+t,this.length?tthis[1]&&(this[1]=t):(this.push(t),this.push(t)),this)}}class zw extends zs{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(t){return t==null||Number.isNaN(t)?this:(this.uniqueValues.has(t)||(this.uniqueValues.add(t),this.push(t)),this)}}class Uw extends zw{constructor(){super(),this.type="nominal"}}class CF extends zs{constructor(t){super();let n=0;for(let r=1;rthis.push(r))}extend(t){if(this.includes(t))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const Gw={quantitative:o0,index:o0,locus:o0,nominal:Uw,ordinal:zw};function Hw(e,t){if(e=="quantitative"&&TF(t)){const n=new CF(t);return n.type=e,n}else if(Gw[e]){const n=new Gw[e];return n.type=e,t&&n.extendAll(t),n}throw new Error("Unknown type: "+e)}function TF(e){return e&&e.length>0&&e.length!=2&&e.every(t=>typeof t=="number")}function kF(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function IF(e,t,n){return e*Math.pow(t/e,n)}Ae("index",r0,["continuous"]),Ae("locus",XB,["continuous"]),Ae("null",$f,[]);const Vw="quantitative",jw="ordinal",qw="nominal",Ww="locus",DF="index";class BF{constructor(t){ue(this,Kn);ue(this,kc);ue(this,Ia);ue(this,br);ue(this,Gl);ue(this,Ic);ue(this,Dg);ue(this,Hl);ue(this,mr,void 0);ue(this,ka,new Set);ue(this,yt,void 0);this.channel=t,this.members=[],this.type=null,this.name=void 0}addEventListener(t,n){if(t!="domain")throw new Error("Unsupported event type: "+t);X(this,ka).add(n)}removeEventListener(t,n){if(t!="domain")throw new Error("Unsupported event type: "+t);X(this,ka).delete(n)}pushUnitView(t,n){var a;const r=pd(t,n),i=r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!Cs(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:t,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}isDomainInitialized(){const t=X(this,yt);if(!t)return!1;const n=t.domain();return vt(t.type)?n.length>2||n.length==2&&(n[0]!==0||n[1]!==0):n.length>0}getScaleProps(){return qo(this,"scaleProps",()=>{const t=ie(this,kc,cS).call(this);if(t===null||t.type=="null")return{type:"null"};const n={...ie(this,Ic,hS).call(this,this.type),...t};n.type||(n.type=FF(this.channel,this.type));const r=ie(this,Ia,Oc).call(this);return r&&r.length>0?n.domain=r:Or(n.type)&&(n.domain=new Uw),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&Or(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),RF(n,this.channel),n})}getConfiguredDomain(){return ie(this,Hl,Lg).call(this,t=>Cs(t.channel)?void 0:t.view.getConfiguredDomain(t.channel))}getDataDomain(){return ie(this,Hl,Lg).call(this,t=>Cs(t.channel)?void 0:t.view.extractDataDomain(t.channel))}reconfigure(){if(X(this,yt)&&X(this,yt).type!="null"){const t=this.isDomainInitialized(),n=X(this,yt).domain();gw(this,"scaleProps");const r=this.getScaleProps();if(Pw(r,X(this,yt)),vt(X(this,yt).type)&&bn(this,mr,ie(this,Gl,Ng).call(this)),!t){ie(this,Kn,mi).call(this);return}const i=X(this,yt).domain();_f(i,n)||(this.isZoomable()?X(this,yt).domain(n):ie(this,br,yo).call(this)?(X(this,yt).domain(n),this.zoomTo(i,500)):ie(this,Kn,mi).call(this))}}getScale(){if(X(this,yt))return X(this,yt);const t=this.getScaleProps(),n=cF(t);return bn(this,yt,n),KB(n)&&n.genome(this.getGenome()),vt(n.type)&&bn(this,mr,ie(this,Gl,Ng).call(this)),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var t;return((t=this.getGenome())==null?void 0:t.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return ie(this,br,yo).call(this)&&_f(ie(this,Ia,Oc).call(this),this.getDomain())}isZoomable(){return ie(this,br,yo).call(this)&&!!this.getScaleProps().zoom}zoom(t,n,r){if(!ie(this,br,yo).call(this))return!1;const i=this.getScale(),o=i.domain();let a=[...o],s=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(s+=i.align()),i.type){case"linear":case"index":case"locus":a=AS(a,r||0),a=jg(a,s,t);break;case"log":a=ES(a,r||0),a=qg(a,s,t);break;case"pow":case"sqrt":{const f=i;a=_S(a,r||0,f.exponent()),a=zc(a,s,t,f.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return X(this,mr)&&(a=CS(a,X(this,mr)[0],X(this,mr)[1])),[0,1].some(f=>a[f]!=o[f])?(i.domain(a),ie(this,Kn,mi).call(this),!0):!1}async zoomTo(t,n=!1){var s;if(nf(n)&&(n=n?700:0),!ie(this,br,yo).call(this))throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(t),i=(s=this.members[0])==null?void 0:s.view.context.animator,o=this.getScale(),a=o.domain();if(n>0&&a.length==2){const f=a[1]-a[0],l=a[0]+f/2,u=r[1]-r[0],c=r[0]+u/2;await i.transition({duration:n,easingFunction:kF,onUpdate:h=>{const d=IF(f,u,h),p=(f-d)/(f-u),b=p*c+(1-p)*l;o.domain([b-d/2,b+d/2]),ie(this,Kn,mi).call(this)}}),o.domain(r),ie(this,Kn,mi).call(this)}else o.domain(r),i==null||i.requestRender(),ie(this,Kn,mi).call(this)}resetZoom(){if(!ie(this,br,yo).call(this))throw new Error("Not a zoomable scale!");const t=this.getDomain(),n=ie(this,Ia,Oc).call(this);return[0,1].some(r=>n[r]!=t[r])?(X(this,yt).domain(n),ie(this,Kn,mi).call(this),!0):!1}getZoomLevel(){return this.isZoomable()?rf(X(this,mr))/rf(this.getScale().domain()):1}getGenome(){var n;if(this.type!=="locus")return;const t=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!t)throw new Error("No genome has been defined!");return t}invertToComplex(t){const n=this.getScale();if("invert"in n){const r=n.invert(t);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(t){const n=this.getGenome();return n?n.toChromosomal(t):t}fromComplex(t){return Lw(t)?this.getGenome().toContinuous(t.chrom,t.pos):t}fromComplexInterval(t){return this.type==="locus"&&SF(t)?this.getGenome().toContinuousInterval(t):t}}mr=new WeakMap,ka=new WeakMap,yt=new WeakMap,Kn=new WeakSet,mi=function(){for(const t of X(this,ka).values())t({type:"domain",scaleResolution:this})},kc=new WeakSet,cS=function(){return qo(this,"mergedScaleProps",()=>{const t=this.members.map(n=>pd(n.view,n.channel).scale).filter(n=>n!==void 0);return vu(t,"scale",["domain"])})},Ia=new WeakSet,Oc=function(){return this.getConfiguredDomain()??(this.type==Ww?this.getGenome().getExtent():this.getDataDomain())},br=new WeakSet,yo=function(){const t=this.getScale().type;return vt(t)},Gl=new WeakSet,Ng=function(){const t=this.getScaleProps(),n=t.zoom;if(PF(n)&&jt(n.extent))return this.fromComplexInterval(n.extent);if(n)return t.type=="locus"?this.getGenome().getExtent():X(this,yt).domain()},Ic=new WeakSet,hS=function(t){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),Ss(n)?r.nice=!this.isExplicitDomain():Li(n)?r.scheme=t==qw?"tableau10":t==jw?"blues":"viridis":Zf(n)?r.range=jb(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r},Dg=new WeakSet,$z=function(){return this.members.map(t=>t.view.getPathString()).join(", ")},Hl=new WeakSet,Lg=function(t){const n=this.members.filter(r=>!r.view.getLayoutAncestors().some(i=>!i.options.contributesToScaleDomain)).map(t).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))};function FF(e,t){if(t==DF||t==Ww){if(Hb(e))return t;throw new Error(`${e} does not support ${t} data type. Only positional channels do.`)}const 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"]},i=["sample"].includes(e)?"null":n[e]?n[e][[qw,jw,Vw].indexOf(t)]:t==Vw?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${e}" is not compatible with "${t}" data type. Use of a proper scale may be needed.`);return i}function RF(e,t){Ss(t)&&e.type!=="ordinal"&&(e.range=[0,1]),t=="opacity"&&vt(e.type)&&(e.clamp=!0)}function PF(e){return qt(e)}function a0(e){const t=new Set;function n(r){for(const i of Object.values(r.resolutions.scale))t.add(i)}for(const r of Wt(e)){r.visit(n);for(const i of r.getDataAncestors()){if(!i.options.contributesToScaleDomain)break;n(i)}}t.forEach(r=>r.reconfigure())}function s0(...e){for(const t of e)if(t!==void 0)return t}class MF{constructor(t){this.channel=t,this.members=[]}get scaleResolution(){var t;return(t=os(this.members))==null?void 0:t.view.getScaleResolution(this.channel)}pushUnitView(t,n){const r=t.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:t,channel:n})}getAxisProps(){return qo(this,"axisProps",()=>{const t=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return t.length>0&&t.some(n=>n===null)?null:vu(t.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const t=o=>{var s;const a=pd(o.view,o.channel);if(!En(a))return{member:o,explicitTitle:s0("axis"in a?(s=a.axis)==null?void 0:s.title:void 0,a.title),implicitTitle:s0(Es(a)?a.field:void 0,gd(a)?a.expr:void 0)}},n=this.members.map(t),r=n.filter(o=>{var a;if(Cs(o.member.channel)&&!o.explicitTitle){const s=Ni(o.member.channel);return((a=n.find(f=>f.member.view==o.member.view&&f.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>s0(o.explicitTitle,o.implicitTitle)).filter(Ye));return i.size?[...i].join(", "):null}}const OF={point:IB,rect:AB,rule:FB,link:OB,text:HB};class Zt extends qi{constructor(t,n,r,i,o,a){super(t,n,r,i,o,a),this.spec=t;const s=OF[this.getMarkType()];if(s)this.mark=new s(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.resolve(),this.coords=void 0,this.needsAxes={x:!0,y:!0}}render(t,n,r={}){this.isConfiguredVisible()&&(this.coords=n,t.pushView(this,n),t.renderMark(this.mark,r),t.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(t){t||(this.resolve("scale"),this.resolve("axis"));const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!tn(i))continue;const o=Ni(i.resolutionChannel??r);if(!zi(o)||t=="axis"&&!Ss(o))continue;let a=this;for(;(a.getConfiguredOrDefaultResolution(o,t)=="forced"||a.dataParent instanceof qi&&["shared","excluded","forced"].includes(a.dataParent.getConfiguredOrDefaultResolution(o,t)))&&a.getConfiguredOrDefaultResolution(o,t)!="excluded";)a=a.dataParent;t=="axis"&&Ss(r)&&Hb(o)?(a.resolutions[t][o]||(a.resolutions[t][o]=new MF(o)),a.resolutions[t][o].pushUnitView(this,r)):t=="scale"&&zi(r)&&(a.resolutions[t][o]||(a.resolutions[t][o]=new BF(o)),a.resolutions[t][o].pushUnitView(this,r))}}getAccessor(t){return this._cache("accessor/"+t,()=>{const n=this.mark.encoding;if(n&&n[t])return this.context.accessorFactory.createAccessor(n[t])})}getFacetAccessor(t){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(t){if(Cs(t))throw new Error(`getDomain(${t}), must only be called for primary channels!`);const n=this.mark.encoding[t];if(!tn(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(t){const n=this._validateDomainQuery(t),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??t);return Hw(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(t){const r=this._validateDomainQuery(t).type??"nominal",i=s=>{let f;const l=this.mark.encoding[s];if(l){const u=this.context.accessorFactory.createAccessor(l);if(u)if(f=Hw(r),u.constant)f.extend(u({}));else{const c=this.getCollector();c!=null&&c.completed&&c.visitData(h=>f.extend(u(h)))}}return f};let o=i(t);const a=md[t];if(a){const s=i(a);s&&o.extendAll(s)}return o}getZoomLevel(){const t=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return Po.map(t).reduce((n,r)=>n*r,1)}propagateInteractionEvent(t){this.handleInteractionEvent(void 0,t,!0),t.target=this,!t.stopped&&this.handleInteractionEvent(void 0,t,!1)}getDefaultResolution(t,n){return t=="x"?"shared":"independent"}}function*l0(e,t=[]){for(const[n,r]of e.entries())if(r instanceof Map)for(const i of l0(r,[...t,n]))yield i;else yield[[...t,n],r]}class $w extends et{get behavior(){return e0}constructor(t){super(),this.params=t??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new yi([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(t){this._data.push(t)}beginBatch(t){CB(t)&&(this._data=[],this.facetBatches.set(Wt(t.facetId),this._data))}complete(){var i,o;const t=(i=this.params)==null?void 0:i.sort,n=t?Wg(t.field,t.order):void 0,r=a=>{n&&a.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const a=this.params.groupby.map(f=>Re(f)),s=lf(this._data,...a);this.facetBatches.clear();for(const[f,l]of l0(s))this.facetBatches.set(f,l)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const f={type:"facet",facetId:a};for(const l of this.children)l.beginBatch(f)}for(const f of s)this._propagate(f)}super.complete();for(const a of this.observers)a(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const t=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of t.values())for(let i=0;i0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=t,this.values[r]=n}pop(){if(this.length===0)return;const t=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o=r)break;this.ids[o]=f,this.values[o]=l,o=a}this.ids[o]=n,this.values[o]=r}return t}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class NF extends et{get behavior(){return Gn}constructor(t){super(),this.params=t,this.startAccessor=Re(t.start),this.endAccessor=Re(t.end),this.chromAccessor=t.chrom?Re(t.chrom):n=>{},this.weightAccessor=t.weight?Re(t.weight):n=>1,this.as={coverage:t.as||"coverage",start:t.asStart||t.start,end:t.asEnd||t.end,chrom:t.asChrom||t.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Au}reset(){super.reset(),this.initialize()}initialize(){const t=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,a=this.chromAccessor,s=this.weightAccessor;let f,l,u,c=0,h;const d=this.ends;d.clear();const p=(y,w,S)=>{if(y==w)return;let C=!1;f&&(f[t]===S?(f[n]=w,C=!0):f[t]!=0&&this._propagate(f)),C||(f=this.createSegment(y,w,S,u))},b=()=>{let y;for(;(y=d.peekValue())!==void 0;)p(h,y,c),h=y,c-=d.pop();h=void 0,f&&(this._propagate(f),f=void 0)};this.handle=y=>{const w=i(y);let S;for(;(S=d.peekValue())!==void 0&&S{b(),super.complete()}}}function LF(e,t,n=0,r=e.length){const i=new Au,o=r-n;let a;for(a=0;a=i.peekValue()&&(i.push(a,l),i.pop())}const s=[];let f;for(;(f=i.pop())!==void 0;)s.push(n+f);return s.reverse()}class zF{constructor(t,n=-1/0,r=1/0){this.maxSize=t,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),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(t,n,r=0){if(t>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(t,n,i);return o>=0?o:this._findSlot(t,n,this.upperChildren[r])}else return r}else return-1}reserve(t,n){if(n-t<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(t,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=t,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class UF extends et{get behavior(){return e0}constructor(t,n){if(super(),this.params=t,this._data=[],this.channel=t.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=Re(this.params.pos),this.posBisector=sf(this.posAccessor),this.scoreAccessor=Re(this.params.score),this.widthAccessor=Re(this.params.width),this.laneAccessor=this.params.lane?Re(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const t=this.posAccessor;this._data.sort((n,r)=>t(n)-t(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new zF(200));this.schedule(),super.complete()}_filterAndPropagate(){var a;super.reset();const t=this.resolution.getScale(),n=(a=this.resolution.members[0].view.coords)==null?void 0:a[this.channel=="x"?"width":"height"];if(!n)return;for(const s of this.reservationMaps.values())s.reset();const r=t.domain(),i=70,o=LF(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const f=this._data[s],l=t(this.posAccessor(f))*n,u=this.widthAccessor(f)/2+this.padding;this.reservationMaps.get(this.laneAccessor(f)).reserve(l-u,l+u)&&this._propagate(f)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(t){this._data.push(t)}}class GF extends et{constructor(t){super(),this.params=t,this.predicate=void 0}initialize(){this.predicate=Ih(this.params.expr,this.getGlobalObject())}handle(t){this.predicate(t)&&this._propagate(t)}}class HF extends et{get behavior(){return Gn}constructor(t){super();const n=t.index;if(t.fields){const r=Wt(t.fields).map(o=>Re(o)),i=Wt(t.as||t.fields);if(r.length!==i.length)throw new Error(`Lengths of "fields" (${r.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{const a=r.map((f,l)=>f(o)??[]),s=a[0].length;for(let f=0;f{for(let i=0;i{let s=r(a),f=s,l=!0;const u=n(a);for(const c of jF(u)){if(l)f=s+c;else{s=f+c;const h=Object.assign({},a);h[i]=f,h[o]=s,this._propagate(h)}l=!l}}}}class WF extends et{get behavior(){return Gn}constructor(t){super();const n=Wt(t.field).map(o=>Re(o)),r=Wt(t.separator),i=Wt(t.as||t.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(f=>!f(o)))return;const a=n.map((f,l)=>f(o).split(r[l]));$F(a,o);const s=a[0].length;for(let f=0;fr.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(t))}class ZF extends et{get behavior(){return Vr}constructor(t){super(),this.params=t,this.as=t.as,this.fn=void 0}initialize(){this.fn=Ih(this.params.expr,this.getGlobalObject())}handle(t){t[this.as]=this.fn(t),this._propagate(t)}}class Zw extends et{get behavior(){return Vr}constructor(t,n){super();const r=t.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=Re(t.chrom),a=Wt(t.pos).map(p=>Re(p)),s=Wt(t.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const f=Wt(t.offset);let l;if(f.length==0)l=new Array(a.length).fill(0);else if(f.length==1)l=new Array(a.length).fill(f[0]);else if(f.length==a.length)l=f;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(t.offset)}!`);const u=new Function("datum","chromOffset","posAccessors",s.map((p,b)=>`datum[${JSON.stringify(p)}] = chromOffset + +posAccessors[${b}](datum) - ${l[b]};`).join(` -`));let c,h=0;const d=p=>{if(p!==c){if(h=i.cumulativeChromPositions.get(p),h===void 0)throw new Error("Unknown chromosome/contig: "+p);c=p}return h};this.handle=p=>{u(p,d(o(p)),a),this._propagate(p)}}}const Yw={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.642000000000001,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.642000000000001,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.429000000000002,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.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,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.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,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.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,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.429000000000002,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.429000000000002,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.153000000000002,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.313000000000002,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.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,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.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,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.429000000000002,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.182000000000002,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.176000000000002,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.874000000000002,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.089000000000002,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.278000000000002,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:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],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:[]};class YF extends et{get behavior(){return Vr}constructor(t){super();const n=Qd(Yw),r=Re(t.field),i=t.as,o=t.fontSize;this.handle=a=>{const s=r(a);s!==void 0?a[i]=n.measureWidth(s,o):a[i]=0,this._propagate(a)}}}const QF=65536;class XF extends et{get behavior(){return Vr}constructor(t){super(),this.params=t}reset(){super.reset(),this.initialize()}initialize(){const t=this.params,n=t.as||"lane",r=Ft(t.spacing)?t.spacing:1,i=Re(t.start),o=Re(t.end);if(!t.preference!=!t.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(t.preference){const a=new Float64Array(QF),s=Re(t.preference),f=t.preferredOrder;let l=1/0;this.handle=u=>{const c=i(u);c=0&&a[h]=a.length)throw new Error("Out of lanes!")}a[d]=o(u)+r,u[n]=d,this._propagate(u)}}else{const a=new Au,s=new Au;let f=-1/0,l=0;this.handle=u=>{const c=i(u);for(;a.length&&(a.peekValue()<=c||cRe(i)),r=t.as?t.as:n.map(xo);this.handle=i=>{const o={};for(let a=0;a{const a=i(o);if(Ye(a)){const s=a.match(n);if(s){if(s.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let f=0;fnew RegExp(h)),r=Wt(t.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=t.skipRegex?new RegExp(t.skipRegex):void 0,o=t.asKey||"sample";let a,s,f;const l=h=>{var y;const d=Object.keys(h),p=new Map;for(const[w,S]of n.entries())for(const C of d){const _=(y=S.exec(C))==null?void 0:y[1];if(_!==void 0){let I=p.get(_);I||(I=[],p.set(_,I)),I[w]=C}}a=[...p.entries()],s=d.filter(w=>!n.some(S=>S.test(w))&&!(i&&i.test(w)));const b=[...s.map(w=>JSON.stringify(w)+": datum["+JSON.stringify(w)+"]"),JSON.stringify(o)+": sampleId",...r.map(w=>JSON.stringify(w)+": null")];f=new Function("datum","sampleId",`return { + */const fF="locus",lF="index";var uF=5;function cF(t){const e=t.type;return!t.bins&&(e===Bo||e===ys||e===ws)}function Bw(t){return vt(t)&&![Ln,lF,fF].includes(t)}function Fw(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var hF=al(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function Rw(t,e,n){n=Fw(n);for(const r in t)if(!hF[r]){if(r==="padding"&&Bw(e.type))continue;Bt(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}xF(e,t,wF(e,t,mF(e,t,n)))}function dF(t,e){const n=pF(t),r=Ae(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return!t.domain&&vt(i.type)&&(t.domain=[0,0]),Rw(t,i,e),i}function pF(t){var e=t.type,n="",r;return e===Ln?Ln+"-"+Bo:(gF(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ln+"-":r===3?Fo+"-":""),(n+e||Bo).toLowerCase())}function gF(t){const e=t.type;return vt(e)&&e!==Ib&&e!==kb&&(t.scheme||t.range&&t.range.length&&t.range.every(Ye))}function mF(t,e,n){if(!t.domain)return 0;n=Fw(n);var r=bF(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&cF(t),s,l;return i?(Bw(o)&&e.padding&&i[0]!==yn(i)&&(i=yF(o,i,e.range,e.padding,e.exponent,e.constant)),(a||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(s=(i=i.slice()).length-1||1,a&&(i[0]>0&&(i[0]=0),i[s]<0&&(i[s]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[s]=e.domainMax),e.domainMid!=null&&(l=e.domainMid,(li[s])&&n.warn("Scale domainMid exceeds domain min or max.",l),i.splice(s,0,l))),t.domain(Pw(o,i,n)),o===ld&&t.unknown(e.domainImplicit?Dh:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&kw(t,e.nice)||null),i.length):0}function bF(t,e,n){return e?(t.domain(Pw(t.type,e,n)),e.length):-1}function yF(t,e,n,r,i,o){var a=Math.abs(yn(n)-n[0]),s=a/(a-2*r),l=t===Mr?qg(e,null,s):t===ws?zc(e,null,s,.5):t===ys?zc(e,null,s,i||1):t===Vl?_S(e,null,s,o||1):jg(e,null,s);return e=e.slice(),e[0]=l[0],e[e.length-1]=l[1],e}function Pw(t,e,n){if(Ob(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+ol(e))}return e}function wF(t,e,n){let r=e.bins;if(r&&!qt(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?yn(i):r.stop,s=r.step;s||Ze("Scale bins parameter missing step property."),r=La(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===cd&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function xF(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=vF(r,e,n);else if(e.scheme&&(o=AF(r,e,n),Bt(o))){if(t.interpolator)return t.interpolator(o);Ze(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&ql(r))return t.interpolator(Wl(i0(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(Nb(e.interpolate,e.interpolateGamma)):Bt(t.round)?t.round(i):Bt(t.rangeRound)&&t.interpolate(i?ms:Rr),o&&t.range(i0(o,e.reverse))}function vF(t,e,n){t!==Fb&&t!==ud&&Ze("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===ud?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*sd(n,i,r)]}function AF(t,e,n){var r=e.schemeExtent,i,o;return qt(e.scheme)?o=Wl(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=dd(i),o||Ze(`Unrecognized scheme name: ${e.scheme}`)),n=t===Bb?n+1:t===cd?n-1:t===fd||t===Db?+e.schemeCount||uF:n,ql(t)?Mw(o,r,e.reverse):Bt(o)?HT(Mw(o,r),n):t===ld?o:o.slice(0,n)}function Mw(t,e,n){return Bt(t)&&(e||n)?GT(t,i0(e||[0,1],n)):t}function i0(t,e){return e?t.slice().reverse():t}const Ow=pt(",d");function EF(t,e){return t.chrom+":"+Ow(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+Ow(Math.ceil(e.pos))}const _F="https://genomespy.app/data/genomes/";class SF{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=_F;try{this.setChromSizes(CF(await vl({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}hasChrPrefix(){return this.chromosomes.some(e=>e.name.startsWith("chr"))}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;rthis.totalSize)return;e=Math.floor(e);const n=vo(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return EF(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}toDiscreteChromosomeIntervals(e){const n=e[0],r=e[1],i=[];if(n.chrom===r.chrom)i.push({chrom:n.chrom,startPos:n.pos,endPos:r.pos});else{const o=this.chromosomes.findIndex(s=>s.name===n.chrom),a=this.chromosomes.findIndex(s=>s.name===r.chrom);i.push({chrom:n.chrom,startPos:n.pos,endPos:this.chromosomes[o].size});for(let s=o+1;ss===void 0)){const s=this.getChromosome(r);return s?[s.continuousStart,s.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),a=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,a)]}}}function CF(t){return VS(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Nw(t){return Wt(t)&&"chrom"in t}function TF(t){return t.every(Nw)}class zs extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof zs&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class o0 extends zs{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?ethis[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class Lw extends zs{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class zw extends Lw{constructor(){super(),this.type="nominal"}}class IF extends zs{constructor(e){super();let n=0;for(let r=1;rthis.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const Uw={quantitative:o0,index:o0,locus:o0,nominal:zw,ordinal:Lw};function Gw(t,e){if(t=="quantitative"&&kF(e)){const n=new IF(e);return n.type=t,n}else if(Uw[t]){const n=new Uw[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function kF(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function DF(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function BF(t,e,n){return t*Math.pow(e/t,n)}Ae("index",r0,["continuous"]),Ae("locus",JB,["continuous"]),Ae("null",$l,[]);const Hw="quantitative",Vw="ordinal",jw="nominal",qw="locus",FF="index";class RF{constructor(e){ue(this,Kn);ue(this,Ic);ue(this,ka);ue(this,br);ue(this,Hf);ue(this,kc);ue(this,Dg);ue(this,Vf);ue(this,mr,void 0);ue(this,Ia,new Set);ue(this,yt,void 0);this.channel=e,this.members=[],this.type=null,this.name=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);X(this,Ia).add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);X(this,Ia).delete(n)}pushUnitView(e,n){var a;const r=pd(e,n),i=r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!Cs(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}isDomainInitialized(){const e=X(this,yt);if(!e)return!1;const n=e.domain();return vt(e.type)?n.length>2||n.length==2&&(n[0]!==0||n[1]!==0):n.length>0}getScaleProps(){return qo(this,"scaleProps",()=>{const e=ie(this,Ic,uS).call(this);if(e===null||e.type=="null")return{type:"null"};const n={...ie(this,kc,cS).call(this,this.type),...e};n.type||(n.type=PF(this.channel,this.type));const r=ie(this,ka,Oc).call(this);return r&&r.length>0?n.domain=r:Or(n.type)&&(n.domain=new zw),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&Or(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),MF(n,this.channel),n})}getConfiguredDomain(){return ie(this,Vf,Lg).call(this,e=>Cs(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return ie(this,Vf,Lg).call(this,e=>Cs(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(X(this,yt)&&X(this,yt).type!="null"){const e=this.isDomainInitialized(),n=X(this,yt).domain();pw(this,"scaleProps");const r=this.getScaleProps();if(Rw(r,X(this,yt)),vt(X(this,yt).type)&&bn(this,mr,ie(this,Hf,Ng).call(this)),!e){ie(this,Kn,mi).call(this);return}const i=X(this,yt).domain();_l(i,n)||(this.isZoomable()?X(this,yt).domain(n):ie(this,br,yo).call(this)?(X(this,yt).domain(n),this.zoomTo(i,500)):ie(this,Kn,mi).call(this))}}getScale(){if(X(this,yt))return X(this,yt);const e=this.getScaleProps(),n=dF(e);return bn(this,yt,n),eF(n)&&n.genome(this.getGenome()),vt(n.type)&&bn(this,mr,ie(this,Hf,Ng).call(this)),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e;return((e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return ie(this,br,yo).call(this)&&_l(ie(this,ka,Oc).call(this),this.getDomain())}isZoomable(){return ie(this,br,yo).call(this)&&!!this.getScaleProps().zoom}zoom(e,n,r){if(!ie(this,br,yo).call(this))return!1;const i=this.getScale(),o=i.domain();let a=[...o],s=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(s+=i.align()),i.type){case"linear":case"index":case"locus":a=vS(a,r||0),a=jg(a,s,e);break;case"log":a=AS(a,r||0),a=qg(a,s,e);break;case"pow":case"sqrt":{const l=i;a=ES(a,r||0,l.exponent()),a=zc(a,s,e,l.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return X(this,mr)&&(a=SS(a,X(this,mr)[0],X(this,mr)[1])),[0,1].some(l=>a[l]!=o[l])?(i.domain(a),ie(this,Kn,mi).call(this),!0):!1}async zoomTo(e,n=!1){var s;if(rl(n)&&(n=n?700:0),!ie(this,br,yo).call(this))throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(s=this.members[0])==null?void 0:s.view.context.animator,o=this.getScale(),a=o.domain();if(n>0&&a.length==2){const l=a[1]-a[0],f=a[0]+l/2,u=r[1]-r[0],c=r[0]+u/2;await i.transition({duration:n,easingFunction:DF,onUpdate:h=>{const d=BF(l,u,h),p=(l-d)/(l-u),b=p*c+(1-p)*f;o.domain([b-d/2,b+d/2]),ie(this,Kn,mi).call(this)}}),o.domain(r),ie(this,Kn,mi).call(this)}else o.domain(r),i==null||i.requestRender(),ie(this,Kn,mi).call(this)}resetZoom(){if(!ie(this,br,yo).call(this))throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=ie(this,ka,Oc).call(this);return[0,1].some(r=>n[r]!=e[r])?(X(this,yt).domain(n),ie(this,Kn,mi).call(this),!0):!1}getZoomLevel(){return this.isZoomable()?il(X(this,mr))/il(this.getScale().domain()):1}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return Nw(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&TF(e)?this.getGenome().toContinuousInterval(e):e}}mr=new WeakMap,Ia=new WeakMap,yt=new WeakMap,Kn=new WeakSet,mi=function(){for(const e of X(this,Ia).values())e({type:"domain",scaleResolution:this})},Ic=new WeakSet,uS=function(){return qo(this,"mergedScaleProps",()=>{const e=this.members.map(n=>pd(n.view,n.channel).scale).filter(n=>n!==void 0);return vu(e,"scale",["domain"])})},ka=new WeakSet,Oc=function(){return this.getConfiguredDomain()??(this.type==qw?this.getGenome().getExtent():this.getDataDomain())},br=new WeakSet,yo=function(){const e=this.getScale().type;return vt(e)},Hf=new WeakSet,Ng=function(){const e=this.getScaleProps(),n=e.zoom;if(OF(n)&&qt(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():X(this,yt).domain()},kc=new WeakSet,cS=function(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),Ss(n)?r.nice=!this.isExplicitDomain():Li(n)?r.scheme=e==jw?"tableau10":e==Vw?"blues":"viridis":Zl(n)?r.range=n=="shape"?["circle","square","triangle-up","cross","diamond"]:[]:n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r},Dg=new WeakSet,Yz=function(){return this.members.map(e=>e.view.getPathString()).join(", ")},Vf=new WeakSet,Lg=function(e){const n=this.members.filter(r=>!r.view.getLayoutAncestors().some(i=>!i.options.contributesToScaleDomain)).map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))};function PF(t,e){if(e==FF||e==qw){if(Hb(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const 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"]},i=["sample"].includes(t)?"null":n[t]?n[t][[jw,Vw,Hw].indexOf(e)]:e==Hw?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function MF(t,e){Ss(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&vt(t.type)&&(t.clamp=!0)}function OF(t){return Wt(t)}function a0(t){const e=new Set;function n(r){for(const i of Object.values(r.resolutions.scale))e.add(i)}for(const r of $t(t)){r.visit(n);for(const i of r.getDataAncestors()){if(!i.options.contributesToScaleDomain)break;n(i)}}e.forEach(r=>r.reconfigure())}function s0(...t){for(const e of t)if(e!==void 0)return e}class NF{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=os(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return qo(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:vu(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=pd(o.view,o.channel);if(!En(a))return{member:o,explicitTitle:s0("axis"in a?(s=a.axis)==null?void 0:s.title:void 0,a.title),implicitTitle:s0(Es(a)?a.field:void 0,gd(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(Cs(o.member.channel)&&!o.explicitTitle){const s=Ni(o.member.channel);return((a=n.find(l=>l.member.view==o.member.view&&l.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>s0(o.explicitTitle,o.implicitTitle)).filter(Ye));return i.size?[...i].join(", "):null}}const LF={point:kB,rect:AB,rule:FB,link:LB,text:jB};class Yt extends qi{constructor(e,n,r,i,o,a){super(e,n,r,i,o,a),this.spec=e;const s=LF[this.getMarkType()];if(s)this.mark=new s(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.resolve(),this.coords=void 0,this.needsAxes={x:!0,y:!0}}render(e,n,r={}){this.isConfiguredVisible()&&(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){e||(this.resolve("scale"),this.resolve("axis"));const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!Nt(i))continue;const o=Ni(i.resolutionChannel??r);if(!zi(o)||e=="axis"&&!Ss(o))continue;let a=this;for(;(a.getConfiguredOrDefaultResolution(o,e)=="forced"||a.dataParent instanceof qi&&["shared","excluded","forced"].includes(a.dataParent.getConfiguredOrDefaultResolution(o,e)))&&a.getConfiguredOrDefaultResolution(o,e)!="excluded";)a=a.dataParent;e=="axis"&&Ss(r)&&Hb(o)?(a.resolutions[e][o]||(a.resolutions[e][o]=new NF(o)),a.resolutions[e][o].pushUnitView(this,r)):e=="scale"&&zi(r)&&(a.resolutions[e][o]||(a.resolutions[e][o]=new RF(o)),a.resolutions[e][o].pushUnitView(this,r))}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(Cs(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Nt(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??e);return Gw(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type??"nominal",i=s=>{let l;const f=this.mark.encoding[s];if(f){const u=this.context.accessorFactory.createAccessor(f);if(u)if(l=Gw(r),u.constant)l.extend(u({}));else{const c=this.getCollector();c!=null&&c.completed&&c.visitData(h=>l.extend(u(h)))}}return l};let o=i(e);const a=md[e];if(a){const s=i(a);s&&o.extendAll(s)}return o}getZoomLevel(){const e=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return Po.map(e).reduce((n,r)=>n*r,1)}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),e.target=this,!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*f0(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of f0(r,[...e,n]))yield i;else yield[[...e,n],r]}class Ww extends et{get behavior(){return e0}constructor(e){super(),this.params=e??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new yi([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){CB(e)&&(this._data=[],this.facetBatches.set($t(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Wg(e.field,e.order):void 0,r=a=>{n&&a.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const a=this.params.groupby.map(l=>Re(l)),s=fl(this._data,...a);this.facetBatches.clear();for(const[l,f]of f0(s))this.facetBatches.set(l,f)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const l={type:"facet",facetId:a};for(const f of this.children)f.beginBatch(l)}for(const l of s)this._propagate(l)}super.complete();for(const a of this.observers)a(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o=r)break;this.ids[o]=l,this.values[o]=f,o=a}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class zF extends et{get behavior(){return Gn}constructor(e){super(),this.params=e,this.startAccessor=Re(e.start),this.endAccessor=Re(e.end),this.chromAccessor=e.chrom?Re(e.chrom):n=>{},this.weightAccessor=e.weight?Re(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Au}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,a=this.chromAccessor,s=this.weightAccessor;let l,f,u,c=0,h;const d=this.ends;d.clear();const p=(y,w,S)=>{if(y==w)return;let C=!1;l&&(l[e]===S?(l[n]=w,C=!0):l[e]!=0&&this._propagate(l)),C||(l=this.createSegment(y,w,S,u))},b=()=>{let y;for(;(y=d.peekValue())!==void 0;)p(h,y,c),h=y,c-=d.pop();h=void 0,l&&(this._propagate(l),l=void 0)};this.handle=y=>{const w=i(y);let S;for(;(S=d.peekValue())!==void 0&&S{b(),super.complete()}}}function UF(t,e,n=0,r=t.length){const i=new Au,o=r-n;let a;for(a=0;a=i.peekValue()&&(i.push(a,f),i.pop())}const s=[];let l;for(;(l=i.pop())!==void 0;)s.push(n+l);return s.reverse()}class GF{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),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,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(e,n,i);return o>=0?o:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class HF extends et{get behavior(){return e0}constructor(e,n){if(super(),this.params=e,this._data=[],this.channel=e.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=Re(this.params.pos),this.posBisector=sl(this.posAccessor),this.scoreAccessor=Re(this.params.score),this.widthAccessor=Re(this.params.width),this.laneAccessor=this.params.lane?Re(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new GF(200));this.schedule(),super.complete()}_filterAndPropagate(){var a;super.reset();const e=this.resolution.getScale(),n=(a=this.resolution.members[0].view.coords)==null?void 0:a[this.channel=="x"?"width":"height"];if(!n)return;for(const s of this.reservationMaps.values())s.reset();const r=e.domain(),i=70,o=UF(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const l=this._data[s],f=e(this.posAccessor(l))*n,u=this.widthAccessor(l)/2+this.padding;this.reservationMaps.get(this.laneAccessor(l)).reserve(f-u,f+u)&&this._propagate(l)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class VF extends et{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=kh(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}class jF extends et{get behavior(){return Gn}constructor(e){super();const n=e.index;if(e.fields){const r=$t(e.fields).map(o=>Re(o)),i=$t(e.as||e.fields);if(r.length!==i.length)throw new Error(`Lengths of "fields" (${r.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{const a=r.map((l,f)=>l(o)??[]),s=a[0].length;for(let l=0;l{for(let i=0;i{let s=r(a),l=s,f=!0;const u=n(a);for(const c of WF(u)){if(f)l=s+c;else{s=l+c;const h=Object.assign({},a);h[i]=l,h[o]=s,this._propagate(h)}f=!f}}}}class ZF extends et{get behavior(){return Gn}constructor(e){super();const n=$t(e.field).map(o=>Re(o)),r=$t(e.separator),i=$t(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(l=>!l(o)))return;const a=n.map((l,f)=>l(o).split(r[f]));YF(a,o);const s=a[0].length;for(let l=0;lr.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class QF extends et{get behavior(){return Vr}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=kh(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class $w extends et{get behavior(){return Vr}constructor(e,n){super();const r=e.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=Re(e.chrom),a=$t(e.pos).map(p=>Re(p)),s=$t(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const l=$t(e.offset);let f;if(l.length==0)f=new Array(a.length).fill(0);else if(l.length==1)f=new Array(a.length).fill(l[0]);else if(l.length==a.length)f=l;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const u=new Function("datum","chromOffset","posAccessors",s.map((p,b)=>`datum[${JSON.stringify(p)}] = chromOffset + +posAccessors[${b}](datum) - ${f[b]};`).join(` +`));let c,h=0;const d=p=>{if(p!==c){if(h=i.cumulativeChromPositions.get(p),h===void 0)throw new Error("Unknown chromosome/contig: "+p);c=p}return h};this.handle=p=>{u(p,d(o(p)),a),this._propagate(p)}}}const Zw={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.642000000000001,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.642000000000001,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.429000000000002,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.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,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.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,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.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,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.429000000000002,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.429000000000002,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.153000000000002,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.313000000000002,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.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,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.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,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.429000000000002,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.182000000000002,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.176000000000002,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.874000000000002,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.089000000000002,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.278000000000002,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:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],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:[]};class XF extends et{get behavior(){return Vr}constructor(e){super();const n=Qd(Zw),r=Re(e.field),i=e.as,o=e.fontSize;this.handle=a=>{const s=r(a);s!==void 0?a[i]=n.measureWidth(s,o):a[i]=0,this._propagate(a)}}}const KF=65536;class JF extends et{get behavior(){return Vr}constructor(e){super(),this.params=e}reset(){super.reset(),this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=Ft(e.spacing)?e.spacing:1,i=Re(e.start),o=Re(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(KF),s=Re(e.preference),l=e.preferredOrder;let f=1/0;this.handle=u=>{const c=i(u);c=0&&a[h]=a.length)throw new Error("Out of lanes!")}a[d]=o(u)+r,u[n]=d,this._propagate(u)}}else{const a=new Au,s=new Au;let l=-1/0,f=0;this.handle=u=>{const c=i(u);for(;a.length&&(a.peekValue()<=c||cRe(i)),r=e.as?e.as:n.map(xo);this.handle=i=>{const o={};for(let a=0;a{const a=i(o);if(Ye(a)){const s=a.match(n);if(s){if(s.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let l=0;lnew RegExp(h)),r=$t(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let a,s,l;const f=h=>{var y;const d=Object.keys(h),p=new Map;for(const[w,S]of n.entries())for(const C of d){const _=(y=S.exec(C))==null?void 0:y[1];if(_!==void 0){let k=p.get(_);k||(k=[],p.set(_,k)),k[w]=C}}a=[...p.entries()],s=d.filter(w=>!n.some(S=>S.test(w))&&!(i&&i.test(w)));const b=[...s.map(w=>JSON.stringify(w)+": datum["+JSON.stringify(w)+"]"),JSON.stringify(o)+": sampleId",...r.map(w=>JSON.stringify(w)+": null")];l=new Function("datum","sampleId",`return { `+b.join(`, `)+` -};`)},u=h=>{a||l(h);for(const[d,p]of a){const b=f(h,d);for(let y=0;y{l(h),u(h),this.handle=u};this.handle=c,this.beginBatch=h=>{Aw(h)&&(this.handle=c),super.beginBatch(h)}}}class tR extends et{get behavior(){return Vr}constructor(t){super(),this.params=t,this.buffer=[]}reset(){this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const t=this.params,n=t.as||["y0","y1"],r=t.sort?Wg(t.sort.field,t.sort.order):void 0,i=t.field?Re(t.field):()=>1,o=t.groupby.map(u=>Re(u)),a=o3(this.buffer,u=>o.map(c=>c(u)).join()).map(u=>u[1]);let s=u=>!0;if(t.baseField){const u=Re(t.baseField);s=c=>u(c)!==null}let f,l;switch(t.offset){case"normalize":f=(u,c)=>u/c,l=(u,c)=>uf(u,c);break;case"center":f=(u,c)=>u-c/2,l=(u,c)=>uf(u,c);break;case"information":{const u=Math.log2(t.cardinality??4);f=(c,h)=>c/h,l=(c,h)=>{const p=uf(c,S=>+!s(S)),b=uf(c,h),y=b-p;let w=0;for(let S=0;Su,l=(u,c)=>1}for(const u of a){r&&u.sort(r);const c=l(u,i);let h=0;for(const d of u){const p=h+i(d);s(d)&&(d[n[0]]=f(h,c),d[n[1]]=f(p,c),this._propagate(d),h=p)}}super.complete()}}class nR extends et{get behavior(){return Gn}constructor(t){super();const n=Re(t.field??"sequence"),[r,i]=t.as??["pos","sequence"];this.handle=o=>{const a=Object.assign({},o,{[i]:"",[r]:0}),s=n(o);for(let f=0;fRe(o)),i=lf(this.buffer,...r);for(const[o,a]of l0(i)){const s={count:a.length};for(let f=0;ftypeof e!="object"?lR:fR,lR=e=>({data:e}),fR=e=>e;function tx(e){return"url"in e}class Us extends et{get identifier(){}handle(t){throw new Error("Source does not handle incoming data!")}async load(){}}function nx(e){return"values"in e}class uR extends Us{constructor(t,n){var r;if(super(),this.params=t,typeof t.values=="string"&&!((r=t==null?void 0:t.format)!=null&&r.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const t=this.params.values;let n=[],r=i=>i;if(Array.isArray(t))t.length>0&&(n=t,r=ex(t[0]));else if(typeof t=="object")n=[t];else if(typeof t=="string")n=Xm(t,Jw(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function cR(e){return"url"in e}class hR extends Us{constructor(t,n){super(),this.params=t,this.baseUrl=n==null?void 0:n.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const t=this.params.url,n=Array.isArray(t)?t:[t],r=async o=>vf({baseURL:this.baseUrl}).load(o).catch(a=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${a.message}`)}),i=(o,a)=>{try{const s=Xm(o,Jw(this.params));this.beginBatch({type:"file",url:a});for(const f of s)this._propagate(f)}catch(s){throw new Error(`Cannot parse: ${a}: ${s.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function dR(e){return"sequence"in e}class pR extends Us{constructor(t,n){if(super(),this.sequence=t.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const t=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener("domain",r),this.view.context.addBroadcastListener("layoutComputed",r)}getAxisLength(){const t=this.scaleResolution.members.map(n=>{var r;return(r=n.view.coords)==null?void 0:r[this.channel==="x"?"width":"height"]}).filter(n=>n>0);return t.length?t.reduce((n,r)=>Math.min(n,r),1e4):0}get genome(){return this.scaleResolution.getGenome()}async onDomainChanged(t,n){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(t){this.reset(),this.beginBatch({type:"file"});for(const n of t)this._propagate(n);this.complete(),a0(this.view),this.requestRender()}}class mR extends Wi{constructor(n,r){const i={axis:{},...n};super(r,i.channel);St(this,"ticks",[]);this.params=n}async onDomainChanged(){const n=this.scaleResolution.getScale(),r=this.params.axis,i=this.getAxisLength(),o=l=>25+60*gR(100,700,l),a=Ft(r.tickCount)?r.tickCount:Math.round(i/o(i)),s=Dw(n,a,r.tickMinStep),f=r.values?Bw(n,r.values,s):JB(n,s);if(!_f(f,this.ticks)){this.ticks=f;const l=tF(n,a,r.format);this.publishData(f.map(u=>({value:u,label:l(u)})))}}}class bR extends Wi{constructor(t,n){super(n,t.channel)}async load(){this.publishData(this.genome.chromosomes)}}function Gs(e){return class extends e{constructor(){super(...arguments);St(this,"lastQuantizedInterval",[0,0])}quantizeInterval(r,i){return[Math.max(Math.floor(r[0]/i-1)*i,0),Math.min(Math.ceil(r[1]/i+1)*i,this.genome.totalSize)]}checkAndUpdateLastInterval(r){return _f(this.lastQuantizedInterval,r)?!1:(this.lastQuantizedInterval=r,!0)}}}function Hs(e,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(e)||e.startsWith("/")?e:(t.endsWith("/")||(t+="/"),t+e)}class yR extends Gs(Wi){constructor(t,n){const r={channel:"x",windowSize:7e3,...t};if(super(n,r.channel),this.params=r,!this.params.url)throw new Error("No URL provided for IndexedFastaSource");this.initializedPromise=new Promise(i=>{Promise.all([Promise.resolve().then(()=>Lx),Promise.resolve().then(()=>E9),Promise.resolve().then(()=>Zs)]).then(([{Buffer:o},{IndexedFasta:a},{RemoteFile:s}])=>{typeof window<"u"&&(window.Buffer??(window.Buffer=o));const f=l=>new s(Hs(l,this.view.getBaseUrl()));this.fasta=new a({fasta:f(this.params.url),fai:f(this.params.indexUrl??this.params.url+".fai")}),i()})})}async onDomainChanged(t){const n=this.params.windowSize;if(t[1]-t[0]>n)return;await this.initializedPromise;const r=this.quantizeInterval(t,n);if(this.checkAndUpdateLastInterval(r)){const i=this.genome.continuousToDiscreteChromosomeIntervals(r),o=await Promise.all(i.map(a=>this.fasta.getSequence(a.chrom,a.startPos,a.endPos).then(s=>({chrom:a.chrom,start:a.startPos,sequence:s}))));this.publishData(o)}}}function Eu(e,t,n=!0){let r,i=a=>{};return function(...s){return new Promise((f,l)=>{const u=()=>{clearTimeout(r),i=c=>{},f(e(...s))};n&&i("debounced"),clearTimeout(r),i=l,r=window.setTimeout(u,t)})}}class wR extends Gs(Wi){constructor(n,r){const i={pixelsPerBin:2,channel:"x",...n};super(r,i.channel);St(this,"reductionLevels",[]);St(this,"lastRequestId",0);St(this,"bbi");if(this.params=i,!this.params.url)throw new Error("No URL provided for BigWigSource");this.doDebouncedRequest=Eu(this.doRequest.bind(this),200,!1),this.initializedPromise=new Promise(o=>{Promise.all([Promise.resolve().then(()=>ME),Promise.resolve().then(()=>Zs)]).then(([{BigWig:a},{RemoteFile:s}])=>{this.bbi=new a({filehandle:new s(Hs(this.params.url,this.view.getBaseUrl()))}),this.bbi.getHeader().then(f=>{this.reductionLevels=f.zoomLevels.map(l=>l.reductionLevel).reverse(),this.reductionLevels.push(1),o()})})})}async onDomainChanged(n){await this.initializedPromise;const r=this.getAxisLength()||700,i=xR(n,r,this.reductionLevels),o=Math.max(i*r,5e3),a=this.quantizeInterval(n,o);this.checkAndUpdateLastInterval(a)&&this.doDebouncedRequest(a,i)}async doRequest(n,r){const i=await this.getFeatures(n,.5/r/this.params.pixelsPerBin);i.requestIdthis.bbi.getFeatures(f.chrom,f.startPos,f.endPos,{scale:r,signal:o.signal}).then(l=>l.map(u=>({chrom:f.chrom,start:u.start,end:u.end,score:u.score})))));return{requestId:i,abort:()=>o.abort(),features:s.flat()}}}function xR(e,t,n){const r=(e[1]-e[0])/t;return n.find(i=>i{Promise.all([Promise.resolve().then(()=>y7),Promise.resolve().then(()=>ME),Promise.resolve().then(()=>Zs)]).then(([a,{BigBed:s},{RemoteFile:f}])=>{const l=a.default;this.bbi=new s({filehandle:new f(Hs(this.params.url,this.view.getBaseUrl()))}),this.headerPromise=this.bbi.getHeader(),this.headerPromise.then(async u=>{this.parser=new l({autoSql:u.autoSql}),o()})})})}async onDomainChanged(n){await this.initializedPromise;const r=this.params.windowSize;if(n[1]-n[0]>r)return;const i=this.quantizeInterval(n,r);this.checkAndUpdateLastInterval(i)&&this.doDebouncedRequest(i)}async doRequest(n){const r=await this.getFeatures(n);r.requestIdthis.bbi.getFeatures(s.chrom,s.startPos,s.endPos,{signal:i.signal}).then(f=>f.map(l=>this.parser.parseLine(`${s.chrom} ${l.start} ${l.end} ${l.rest}`,{uniqueId:l.uniqueId})))));return{requestId:r,abort:()=>i.abort(),features:a.flat()}}}class AR extends Gs(Wi){constructor(n,r){const i={channel:"x",windowSize:2e4,...n};super(r,i.channel);St(this,"lastRequestId",0);St(this,"bam");St(this,"chrPrefixFixer",n=>n);if(this.params=i,!this.params.url)throw new Error("No URL provided for BamSource");this.initializedPromise=new Promise(o=>{Promise.all([Promise.resolve().then(()=>L7),Promise.resolve().then(()=>Zs)]).then(([{BamFile:a},{RemoteFile:s}])=>{const f=l=>new s(Hs(l,this.view.getBaseUrl()));this.bam=new a({bamFilehandle:f(this.params.url),baiFilehandle:f(this.params.indexUrl??this.params.url+".bai")}),this.bam.getHeader().then(l=>{var h,d;const u=this.genome.hasChrPrefix(),c=(d=(h=this.bam.indexToChr)==null?void 0:h[0])==null?void 0:d.refName.startsWith("chr");u&&!c?this.chrPrefixFixer=p=>p.replace("chr",""):!u&&c&&(this.chrPrefixFixer=p=>"chr"+p),o()})})})}async onDomainChanged(n){const r=this.params.windowSize;if(n[1]-n[0]>r)return;await this.initializedPromise;const i=this.quantizeInterval(n,r);if(this.checkAndUpdateLastInterval(i)){const o=this.genome.continuousToDiscreteChromosomeIntervals(i),a=await Promise.all(o.map(s=>this.bam.getRecordsForRange(this.chrPrefixFixer(s.chrom),s.startPos,s.endPos).then(f=>f.map(l=>({chrom:s.chrom,start:l.get("start"),end:l.get("end"),name:l.get("name"),MD:l.get("MD"),cigar:l.get("cigar"),mapq:l.get("mq"),strand:l.get("strand")===1?"+":"-"})))));this.publishData(a.flat())}}}class ER extends Gs(Wi){constructor(n,r){const i={channel:"x",windowSize:3e6,debounceDomainChange:200,...n};super(r,i.channel);St(this,"lastRequestId",0);St(this,"tbiIndex");if(this.params=i,!this.params.url)throw new Error("No URL provided for TabixSource");this.params.debounceDomainChange>0&&(this.onDomainChanged=Eu(this.onDomainChanged.bind(this),this.params.debounceDomainChange,!1)),this.initializedPromise=new Promise(o=>{Promise.all([Promise.resolve().then(()=>Lx),Promise.resolve().then(()=>Z7),Promise.resolve().then(()=>Zs)]).then(([{Buffer:a},{TabixIndexedFile:s},{RemoteFile:f}])=>{typeof window<"u"&&(window.Buffer??(window.Buffer=a));const l=u=>new f(Hs(u,this.view.getBaseUrl()));this.tbiIndex=new s({filehandle:l(this.params.url),tbiFilehandle:l(this.params.indexUrl??this.params.url+".tbi")}),o()})})}async onDomainChanged(n){const r=this.params.windowSize;if(n[1]-n[0]>r)return;const i=this.quantizeInterval(n,r);this.checkAndUpdateLastInterval(i)&&this.doRequest(i)}async doRequest(n){const r=await this.getFeatures(n);r.requestId{const f=[];return await this.tbiIndex.getLines(s.chrom,s.startPos,s.endPos,{lineCallback:l=>{f.push(l)},signal:i.signal}),this._parseFeatures(f)}));return{requestId:r,abort:()=>i.abort(),features:a.flat()}}_parseFeatures(n){return[]}}class _R extends ER{constructor(n,r){super(n,r);ue(this,Vl,void 0);Promise.resolve().then(()=>Fz).then(i=>{bn(this,Vl,i.default)})}_parseFeatures(n){var i;return(i=X(this,Vl))==null?void 0:i.parseStringSync(n.join(` -`),{parseSequences:!1})}}Vl=new WeakMap;function SR(e,t){if(nx(e))return new uR(e,t);if(cR(e))return new hR(e,t);if(dR(e))return new pR(e,t);if(CR(e))return PR(e.lazy,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(e))}function CR(e){return"lazy"in e}function TR(e){return(e==null?void 0:e.type)=="axisTicks"}function kR(e){return(e==null?void 0:e.type)=="axisGenome"}function IR(e){return(e==null?void 0:e.type)=="indexedFasta"}function DR(e){return(e==null?void 0:e.type)=="bigwig"}function BR(e){return(e==null?void 0:e.type)=="bigbed"}function FR(e){return(e==null?void 0:e.type)=="bam"}function RR(e){return(e==null?void 0:e.type)=="gff3"}function PR(e,t){if(TR(e))return new mR(e,t);if(kR(e))return new bR(e,t);if(IR(e))return new yR(e,t);if(DR(e))return new wR(e,t);if(BR(e))return new vR(e,t);if(FR(e))return new AR(e,t);if(RR(e))return new _R(e,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(e))}function MR(e){const t=Object.keys(e).filter(r=>typeof r=="string"),n=new Function("source","return { "+t.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`, -`)+" };");return n.properties=t,n}class _u extends et{get behavior(){return Gn}constructor(){super();const t=n=>{const r=MR(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=t,this.beginBatch=n=>{Aw(n)&&(this.handle=t),super.beginBatch(n)}}}function OR(e){return"name"in e}class rx extends Us{constructor(n,r,i){super();ue(this,jl,void 0);this.provider=i,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){bn(this,jl,n),this.loadSynchronously()}loadSynchronously(){const n=X(this,jl)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(n))n.length>0&&(r=ex(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}jl=new WeakMap;class ix{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(t,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(t)}_relayObserverCallback(t,n){const r=this._observers.get(n);if(r)for(const i of r)i(t)}addDataSource(t,n){this._dataSourcesByHost.set(n,t)}findDataSourceByKey(t){return this._dataSourcesByHost.get(t)}findNamedDataSource(t){let n,r=[];for(const[i,o]of this._dataSourcesByHost.entries())if(o instanceof rx&&t==o.identifier){if(n&&n!==o)throw new Error(`Found multiple instances of named data: ${t}. Data flow optimization is broken (it's a bug).`);n=o,r.push(i)}if(n)return{dataSource:n,hosts:r}}addCollector(t,n){this._collectorsByHost.set(n,t),t.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(t){return this._collectorsByHost.get(t)}initialize(){for(const t of this.dataSources)t.visit(n=>n.initialize())}}function NR(e,t){const n=new Map,r=[];for(const i of e)n.set(i,{ref:i,children:[]});for(const i of n.values()){const o=n.get(t(i.ref));o?o.children.push(i):r.push(i)}return r}function ox(e,t,n){var i,o;const r=(i=t.preOrder)==null?void 0:i.call(t,e);if(r)return r;for(const a of n(e)){const s=ox(a,t,n);if(s==="stop")return s}return(o=t.postOrder)==null?void 0:o.call(t,e)}function LR(e,t){return ox(e,t,n=>n.children)}function zR(e,t){const n=[];let r;const i=t??new ix,o=[];function a(c,h=()=>{}){if(!r)throw h()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(c),r=c,c}function s(c,h){return a(c,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${h?JSON.stringify(h):""}`))}function f(c,h){for(const d of c){let p;try{p=aR(d,h)}catch(b){throw console.warn(b),new Error(`Cannot initialize "${d.type}" transform: ${b}`)}p.behavior&Vr&&s(new _u),s(p)}}const l=c=>{if(n.push(r),c.spec.data){const h=OR(c.spec.data)?new rx(c.spec.data,c,c.context.getNamedDataFromProvider):SR(c.spec.data,c);r=h,i.addDataSource(h,c)}if(c.spec.transform&&f(c.spec.transform,c),c instanceof Zt){if(!r)throw new Error(`A unit view (${c.getPathString()}) has no (inherited) data source`);const h=UR(c);if(h){o.push(h.rewrite);for(const p of h.transforms)s(p)}c.mark.isPickingParticipant()&&(s(new _u),s(new Kw({type:"identifier"})));const d=new $w({type:"collect",groupby:c.getFacetFields(),sort:GR(c,h==null?void 0:h.rewrittenEncoding)});a(d),i.addCollector(d,c)}},u=NR(e.getDescendants(),c=>c.dataParent);for(const c of u)LR(c,{preOrder:h=>l(h.ref),postOrder:()=>{r=n.pop()}});return o.forEach(c=>c()),i}function UR(e){var o;const t=[],n={},r=[];for(const[a,s]of Object.entries(e.getEncoding())){const f=a;Ss(f)&&Gb(s)&&r.push({channel:f,chromPosDef:s})}const i=lf(r,a=>Ni(a.channel),a=>a.chromPosDef.chrom);for(const[a,s]of i.entries())for(const[f,l]of s.entries()){const u=[],c=[],h=[];for(const{channel:d,chromPosDef:p}of l){const b=S=>S.replace(/[^A-Za-z0-9_]/g,""),y=["_linearized_",b(p.chrom),"_",b(p.pos)].join(""),w={...((o=e.spec.encoding)==null?void 0:o[d])??e.getEncoding()[d]??{},field:y};delete w.chrom,delete w.pos,!w.type&&p.type&&(w.type=p.type),n[d]=w,u.push(p.pos),h.push(p.offset??0),c.push(y)}t.push(new _u),t.push(new Zw({type:"linearizeGenomicCoordinate",channel:a,chrom:f,pos:u,offset:h,as:c},e))}return t.length?{transforms:t,rewrittenEncoding:n,rewrite:()=>{e.spec.encoding={...e.spec.encoding,...n},gw(e.mark,"encoding")}}:void 0}function GR(e,t){var r;const n={...e.getEncoding(),...t}.x;if(tn(n)&&(r=e.getScaleResolution("x"))!=null&&r.isZoomable()){if(Es(n))return{field:n.field};if(!_s(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function ax(e,t=void 0){if(e.parent!==t)return!1;for(const n of e.children)if(!ax(n,e))return!1;return!0}function f0(e,t=!1){if(e.behavior&e0&&(t=!0),e instanceof _u)if(t)t=!1;else{const n=e.children[0];e.excise(),n&&f0(n,t);return}e.behavior&Gn&&(t=!1);for(let n=0,r=e.children.length;n1)}function HR(e){const t=[...e._dataSourcesByHost.entries()],n=new Map;for(const r of t){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}e._dataSourcesByHost.clear();for(let[r,i]of t){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),e.addDataSource(i,r)}}function VR(e){if(f0(e),!ax(e))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function jR(e){for(const t of e.dataSources)VR(t);HR(e)}function qR(e){const t=new Set;e.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&t.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);t.add(i)}})}function WR(e){for(const t of Po){const n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}async function $R(e,t,n){var a;if(!e.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(e));const r=vf({baseURL:t}),i=e.import.url,o=JSON.parse(await r.load(i).catch(s=>{throw new Error(`Could not load imported view spec: ${i} -Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]*\//))==null?void 0:a[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function ZR(e){const t=e.getSize().addPadding(e.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(t.width),height:n(t.height)}}function sr(e){return()=>e}const Bn=class Bn{static create(t,n,r,i){return new Bn(sr(t),sr(n),sr(r),sr(i))}_offset(t,n){const r=this["_"+t];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(t){return this._offset(t,0)}constructor(t,n,r,i){this._x=t,this._y=n,this._width=r,this._height=i}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(t){return t?this===t||this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height:!1}modify(t){if(!Object.keys(t).length)return this;const n=r=>{const i=t[r];return typeof i=="number"?sr(i):typeof i=="function"?i:this._passThrough(r)};return new Bn(n("x"),n("y"),n("width"),n("height"))}translate(t,n){return t===0&&n===0?this:new Bn(this._offset("x",t),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(t){return this.translate(t.x,t.y)}expand(t,n=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new Bn(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(t){return this.expand(t,-1)}intersect(t){return this===t||t==null?this:new Bn(()=>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 Bn(()=>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 Bn(sr(this.x),sr(this.y),sr(this.width),sr(this.height))}containsPoint(t,n){return t>=this.x&&t=this.y&&n()=>{t&&a()},i=a=>()=>{t&&n&&a()},o=lf(this.buffer.reverse(),a=>a.mark);for(const[a,s]of[...o.entries()].reverse()){if(!a.isReady())continue;this.batch.push(()=>{t=a.unitView.getEffectiveOpacity()>0}),this.batch.push(...a.prepareRender(this.globalOptions).map(l=>r(l)));let f;for(const l of s){const u=l.coords;u.equals(f)||this.batch.push(r(()=>{n=a.setViewport(u,l.clipRect)})),this.batch.push(i(l.callback)),f=l.coords}}}}class YR extends sx{constructor(...t){super({}),this.contexts=t}pushView(t,n){for(const r of this.contexts)r.pushView(t,n)}popView(t){for(const n of this.contexts)n.popView(t)}renderMark(t,n){for(const r of this.contexts)r.renderMark(t,n)}}class QR{constructor(t,n){this.point=t,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class XR{constructor(t,n){this.x=t,this.y=n}equals(t){return t?t===this||t.x===this.x&&t.y===this.y:!1}}const KR=e=>new Promise(t=>setTimeout(t,e));function JR(e){const t=e.requestAnimationFrame||window.requestAnimationFrame,n=e.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const a=performance.now(),s=a+(e.duration||1e3),f=typeof e.from=="number"?e.from:0,l=typeof e.to=="number"?e.to:1,u=e.easingFunction||(b=>b),c=b=>(b-a)/(s-a),h=b=>b*(l-f)+f,d=b=>Math.max(0,Math.min(1,b)),p=b=>{n!=null&&n.aborted?o("aborted"):(e.onUpdate(h(u(d(c(b))))),b=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(t=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(t);this._renderCallback(t)}))}transition(t){return JR({requestAnimationFrame:n=>this.requestTransition(n),...t})}}class t5{constructor(t){this.genomes=new Map,this.baseUrl=t}async initialize(t){const n=new EF(t);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.baseUrl)))}getGenome(t){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(t){const n=this.genomes.get(t);if(!n)throw new Error(`No genome with the name ${t} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const n5="data:image/png;base64,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",r5={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class i5{constructor(t){this._webGLHelper=t,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new yi([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Qd(Yw),texture:t?this._createTextureNow(n5):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(t,n="normal",r="regular"){if(Ye(r)&&(r=r5[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:t,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(t,n){try{const r=await this._loadMetadata(n.family),i=a5(r,n),o=this.fontRepository+fx(n.family)+"/"+i.replace(/\.\w+/,""),a=this._createTexture(o+".png"),s=this._loadFont(o+".json");t.texture=await a,t.metrics=await s}catch(r){console.log("Cannot load font. Using default.",r),t.metrics=this._defaultFontEntry.metrics,t.texture=this._defaultFontEntry.texture}}_loadFont(t){let n=this._fontPromises.get(t);return n||(n=fetch(t).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Qd(r)),this._fontPromises.set(t,n)),n}_loadMetadata(t){const n=fx(t);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>o5(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(t){const n=this._webGLHelper.gl;return new Promise((r,i)=>{Fs(n,{src:t,min:n.LINEAR},(o,a,s)=>{o?i(o):r(a)})})}_createTextureNow(t){const n=this._webGLHelper.gl;let r;const i=new Promise((o,a)=>{r=Fs(n,{src:t,min:n.LINEAR},(s,f,l)=>{s?a(s):o(f)})});return this._promises.push(i),r}}function fx(e){return e.toLowerCase().replaceAll(/[^\w]/g,"")}function o5(e){const t=e.split(` -`),n=[];let r;for(const i of t)if(i.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}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const a=o[1];r[a]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const a=o[1];r[a]=+o[2]}}return n}function a5(e,t){let n,r=Number.POSITIVE_INFINITY;for(const i of e)if(t.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&t.style==i.style){const o=Math.abs(t.weight-i.weight);o"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class l5{constructor(t,n){this.animator=t,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(t,n){if(this.disabled){n(t);return}t*this.momentum<0?this.momentum=0:Math.abs(t)>this.accelerationThreshold?this.momentum=MS([this.momentum,t],this.acceleration):this.momentum=t,this.callback=n,this.loop||this.animate()}animate(t){this.callback(this.momentum);const n=t-this.timestamp||0;this.timestamp=t;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function f5(e){const t={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in e){const o=i;!r.includes(i)&&n.includes(typeof e[o])&&(t[o]=e[o])}return t}const ux=new Map;async function u5(e,t,n){const r=e.symbol;let i=ux.get(r)??await d5(e.symbol);return i?(ux.set(r,i),wn` +};`)},u=h=>{a||f(h);for(const[d,p]of a){const b=l(h,d);for(let y=0;y{f(h),u(h),this.handle=u};this.handle=c,this.beginBatch=h=>{vw(h)&&(this.handle=c),super.beginBatch(h)}}}class rR extends et{get behavior(){return Vr}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const e=this.params,n=e.as||["y0","y1"],r=e.sort?Wg(e.sort.field,e.sort.order):void 0,i=e.field?Re(e.field):()=>1,o=e.groupby.map(u=>Re(u)),a=i3(this.buffer,u=>o.map(c=>c(u)).join()).map(u=>u[1]);let s=u=>!0;if(e.baseField){const u=Re(e.baseField);s=c=>u(c)!==null}let l,f;switch(e.offset){case"normalize":l=(u,c)=>u/c,f=(u,c)=>ul(u,c);break;case"center":l=(u,c)=>u-c/2,f=(u,c)=>ul(u,c);break;case"information":{const u=Math.log2(e.cardinality??4);l=(c,h)=>c/h,f=(c,h)=>{const p=ul(c,S=>+!s(S)),b=ul(c,h),y=b-p;let w=0;for(let S=0;Su,f=(u,c)=>1}for(const u of a){r&&u.sort(r);const c=f(u,i);let h=0;for(const d of u){const p=h+i(d);s(d)&&(d[n[0]]=l(h,c),d[n[1]]=l(p,c),this._propagate(d),h=p)}}super.complete()}}class iR extends et{get behavior(){return Gn}constructor(e){super();const n=Re(e.field??"sequence"),[r,i]=e.as??["pos","sequence"];this.handle=o=>{const a=Object.assign({},o,{[i]:"",[r]:0}),s=n(o);for(let l=0;lRe(o)),i=fl(this.buffer,...r);for(const[o,a]of f0(i)){const s={count:a.length};for(let l=0;ltypeof t!="object"?uR:cR,uR=t=>({data:t}),cR=t=>t;function ex(t){return"url"in t}class Us extends et{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function tx(t){return"values"in t}class hR extends Us{constructor(e,n){var r;if(super(),this.params=e,typeof e.values=="string"&&!((r=e==null?void 0:e.format)!=null&&r.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=Jw(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Xm(e,Kw(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function dR(t){return"url"in t}class pR extends Us{constructor(e,n){super(),this.params=e,this.baseUrl=n==null?void 0:n.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async o=>vl({baseURL:this.baseUrl}).load(o).catch(a=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${a.message}`)}),i=(o,a)=>{try{const s=Xm(o,Kw(this.params));this.beginBatch({type:"file",url:a});for(const l of s)this._propagate(l)}catch(s){throw new Error(`Cannot parse: ${a}: ${s.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function gR(t){return"sequence"in t}class mR extends Us{constructor(e,n){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener("domain",r),this.view.context.addBroadcastListener("layoutComputed",r)}getAxisLength(){const e=this.scaleResolution.members.map(n=>{var r;return(r=n.view.coords)==null?void 0:r[this.channel==="x"?"width":"height"]}).filter(n=>n>0);return e.length?e.reduce((n,r)=>Math.min(n,r),1e4):0}get genome(){return this.scaleResolution.getGenome()}async onDomainChanged(e,n){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(e){this.reset(),this.beginBatch({type:"file"});for(const n of e)this._propagate(n);this.complete(),a0(this.view),this.requestRender()}}class yR extends Wi{constructor(n,r){const i={axis:{},...n};super(r,i.channel);St(this,"ticks",[]);this.params=n}async onDomainChanged(){const n=this.scaleResolution.getScale(),r=this.params.axis,i=this.getAxisLength(),o=f=>25+60*bR(100,700,f),a=Ft(r.tickCount)?r.tickCount:Math.round(i/o(i)),s=kw(n,a,r.tickMinStep),l=r.values?Dw(n,r.values,s):tF(n,s);if(!_l(l,this.ticks)){this.ticks=l;const f=rF(n,a,r.format);this.publishData(l.map(u=>({value:u,label:f(u)})))}}}class wR extends Wi{constructor(e,n){super(n,e.channel)}async load(){this.publishData(this.genome.chromosomes)}}function Gs(t){return class extends t{constructor(){super(...arguments);St(this,"lastQuantizedInterval",[0,0])}quantizeInterval(r,i){return[Math.max(Math.floor(r[0]/i-1)*i,0),Math.min(Math.ceil(r[1]/i+1)*i,this.genome.totalSize)]}checkAndUpdateLastInterval(r){return _l(this.lastQuantizedInterval,r)?!1:(this.lastQuantizedInterval=r,!0)}}}function Hs(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}class xR extends Gs(Wi){constructor(e,n){const r={channel:"x",windowSize:7e3,...e};if(super(n,r.channel),this.params=r,!this.params.url)throw new Error("No URL provided for IndexedFastaSource");this.initializedPromise=new Promise(i=>{Promise.all([Promise.resolve().then(()=>Nx),Promise.resolve().then(()=>SO),Promise.resolve().then(()=>Zs)]).then(([{Buffer:o},{IndexedFasta:a},{RemoteFile:s}])=>{typeof window<"u"&&(window.Buffer??(window.Buffer=o));const l=f=>new s(Hs(f,this.view.getBaseUrl()));this.fasta=new a({fasta:l(this.params.url),fai:l(this.params.indexUrl??this.params.url+".fai")}),i()})})}async onDomainChanged(e){const n=this.params.windowSize;if(e[1]-e[0]>n)return;await this.initializedPromise;const r=this.quantizeInterval(e,n);if(this.checkAndUpdateLastInterval(r)){const i=this.genome.continuousToDiscreteChromosomeIntervals(r),o=await Promise.all(i.map(a=>this.fasta.getSequence(a.chrom,a.startPos,a.endPos).then(s=>({chrom:a.chrom,start:a.startPos,sequence:s}))));this.publishData(o)}}}function Eu(t,e,n=!0){let r,i=a=>{};return function(...s){return new Promise((l,f)=>{const u=()=>{clearTimeout(r),i=c=>{},l(t(...s))};n&&i("debounced"),clearTimeout(r),i=f,r=window.setTimeout(u,e)})}}class vR extends Gs(Wi){constructor(n,r){const i={pixelsPerBin:2,channel:"x",...n};super(r,i.channel);St(this,"reductionLevels",[]);St(this,"lastRequestId",0);St(this,"bbi");if(this.params=i,!this.params.url)throw new Error("No URL provided for BigWigSource");this.doDebouncedRequest=Eu(this.doRequest.bind(this),200,!1),this.initializedPromise=new Promise(o=>{Promise.all([Promise.resolve().then(()=>PE),Promise.resolve().then(()=>Zs)]).then(([{BigWig:a},{RemoteFile:s}])=>{this.bbi=new a({filehandle:new s(Hs(this.params.url,this.view.getBaseUrl()))}),this.bbi.getHeader().then(l=>{this.reductionLevels=l.zoomLevels.map(f=>f.reductionLevel).reverse(),this.reductionLevels.push(1),o()})})})}async onDomainChanged(n){await this.initializedPromise;const r=this.getAxisLength()||700,i=AR(n,r,this.reductionLevels),o=Math.max(i*r,5e3),a=this.quantizeInterval(n,o);this.checkAndUpdateLastInterval(a)&&this.doDebouncedRequest(a,i)}async doRequest(n,r){const i=await this.getFeatures(n,.5/r/this.params.pixelsPerBin);i.requestIdthis.bbi.getFeatures(l.chrom,l.startPos,l.endPos,{scale:r,signal:o.signal}).then(f=>f.map(u=>({chrom:l.chrom,start:u.start,end:u.end,score:u.score})))));return{requestId:i,abort:()=>o.abort(),features:s.flat()}}}function AR(t,e,n){const r=(t[1]-t[0])/e;return n.find(i=>i{Promise.all([Promise.resolve().then(()=>x7),Promise.resolve().then(()=>PE),Promise.resolve().then(()=>Zs)]).then(([a,{BigBed:s},{RemoteFile:l}])=>{const f=a.default;this.bbi=new s({filehandle:new l(Hs(this.params.url,this.view.getBaseUrl()))}),this.headerPromise=this.bbi.getHeader(),this.headerPromise.then(async u=>{this.parser=new f({autoSql:u.autoSql}),o()})})})}async onDomainChanged(n){await this.initializedPromise;const r=this.params.windowSize;if(n[1]-n[0]>r)return;const i=this.quantizeInterval(n,r);this.checkAndUpdateLastInterval(i)&&this.doDebouncedRequest(i)}async doRequest(n){const r=await this.getFeatures(n);r.requestIdthis.bbi.getFeatures(s.chrom,s.startPos,s.endPos,{signal:i.signal}).then(l=>l.map(f=>this.parser.parseLine(`${s.chrom} ${f.start} ${f.end} ${f.rest}`,{uniqueId:f.uniqueId})))));return{requestId:r,abort:()=>i.abort(),features:a.flat()}}}class _R extends Gs(Wi){constructor(n,r){const i={channel:"x",windowSize:2e4,...n};super(r,i.channel);St(this,"lastRequestId",0);St(this,"bam");St(this,"chrPrefixFixer",n=>n);if(this.params=i,!this.params.url)throw new Error("No URL provided for BamSource");this.initializedPromise=new Promise(o=>{Promise.all([Promise.resolve().then(()=>U7),Promise.resolve().then(()=>Zs)]).then(([{BamFile:a},{RemoteFile:s}])=>{const l=f=>new s(Hs(f,this.view.getBaseUrl()));this.bam=new a({bamFilehandle:l(this.params.url),baiFilehandle:l(this.params.indexUrl??this.params.url+".bai")}),this.bam.getHeader().then(f=>{var h,d;const u=this.genome.hasChrPrefix(),c=(d=(h=this.bam.indexToChr)==null?void 0:h[0])==null?void 0:d.refName.startsWith("chr");u&&!c?this.chrPrefixFixer=p=>p.replace("chr",""):!u&&c&&(this.chrPrefixFixer=p=>"chr"+p),o()})})})}async onDomainChanged(n){const r=this.params.windowSize;if(n[1]-n[0]>r)return;await this.initializedPromise;const i=this.quantizeInterval(n,r);if(this.checkAndUpdateLastInterval(i)){const o=this.genome.continuousToDiscreteChromosomeIntervals(i),a=await Promise.all(o.map(s=>this.bam.getRecordsForRange(this.chrPrefixFixer(s.chrom),s.startPos,s.endPos).then(l=>l.map(f=>({chrom:s.chrom,start:f.get("start"),end:f.get("end"),name:f.get("name"),MD:f.get("MD"),cigar:f.get("cigar"),mapq:f.get("mq"),strand:f.get("strand")===1?"+":"-"})))));this.publishData(a.flat())}}}class SR extends Gs(Wi){constructor(n,r){const i={channel:"x",windowSize:3e6,debounceDomainChange:200,...n};super(r,i.channel);St(this,"lastRequestId",0);St(this,"tbiIndex");if(this.params=i,!this.params.url)throw new Error("No URL provided for TabixSource");this.params.debounceDomainChange>0&&(this.onDomainChanged=Eu(this.onDomainChanged.bind(this),this.params.debounceDomainChange,!1)),this.initializedPromise=new Promise(o=>{Promise.all([Promise.resolve().then(()=>Nx),Promise.resolve().then(()=>Q7),Promise.resolve().then(()=>Zs)]).then(([{Buffer:a},{TabixIndexedFile:s},{RemoteFile:l}])=>{typeof window<"u"&&(window.Buffer??(window.Buffer=a));const f=u=>new l(Hs(u,this.view.getBaseUrl()));this.tbiIndex=new s({filehandle:f(this.params.url),tbiFilehandle:f(this.params.indexUrl??this.params.url+".tbi")}),o()})})}async onDomainChanged(n){const r=this.params.windowSize;if(n[1]-n[0]>r)return;const i=this.quantizeInterval(n,r);this.checkAndUpdateLastInterval(i)&&this.doRequest(i)}async doRequest(n){const r=await this.getFeatures(n);r.requestId{const l=[];return await this.tbiIndex.getLines(s.chrom,s.startPos,s.endPos,{lineCallback:f=>{l.push(f)},signal:i.signal}),this._parseFeatures(l)}));return{requestId:r,abort:()=>i.abort(),features:a.flat()}}_parseFeatures(n){return[]}}class CR extends SR{constructor(n,r){super(n,r);ue(this,jf,void 0);Promise.resolve().then(()=>Pz).then(i=>{bn(this,jf,i.default)})}_parseFeatures(n){var i;return(i=X(this,jf))==null?void 0:i.parseStringSync(n.join(` +`),{parseSequences:!1})}}jf=new WeakMap;function TR(t,e){if(tx(t))return new hR(t,e);if(dR(t))return new pR(t,e);if(gR(t))return new mR(t,e);if(IR(t))return OR(t.lazy,e);throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function IR(t){return"lazy"in t}function kR(t){return(t==null?void 0:t.type)=="axisTicks"}function DR(t){return(t==null?void 0:t.type)=="axisGenome"}function BR(t){return(t==null?void 0:t.type)=="indexedFasta"}function FR(t){return(t==null?void 0:t.type)=="bigwig"}function RR(t){return(t==null?void 0:t.type)=="bigbed"}function PR(t){return(t==null?void 0:t.type)=="bam"}function MR(t){return(t==null?void 0:t.type)=="gff3"}function OR(t,e){if(kR(t))return new yR(t,e);if(DR(t))return new wR(t,e);if(BR(t))return new xR(t,e);if(FR(t))return new vR(t,e);if(RR(t))return new ER(t,e);if(PR(t))return new _R(t,e);if(MR(t))return new CR(t,e);throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function NR(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`, +`)+" };");return n.properties=e,n}class _u extends et{get behavior(){return Gn}constructor(){super();const e=n=>{const r=NR(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{vw(n)&&(this.handle=e),super.beginBatch(n)}}}function LR(t){return"name"in t}class nx extends Us{constructor(n,r,i){super();ue(this,qf,void 0);this.provider=i,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){bn(this,qf,n),this.loadSynchronously()}loadSynchronously(){const n=X(this,qf)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(n))n.length>0&&(r=Jw(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}qf=new WeakMap;class rx{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}findNamedDataSource(e){let n,r=[];for(const[i,o]of this._dataSourcesByHost.entries())if(o instanceof nx&&e==o.identifier){if(n&&n!==o)throw new Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);n=o,r.push(i)}if(n)return{dataSource:n,hosts:r}}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function zR(t,e){const n=new Map,r=[];for(const i of t)n.set(i,{ref:i,children:[]});for(const i of n.values()){const o=n.get(e(i.ref));o?o.children.push(i):r.push(i)}return r}function ix(t,e,n){var i,o;const r=(i=e.preOrder)==null?void 0:i.call(e,t);if(r)return r;for(const a of n(t)){const s=ix(a,e,n);if(s==="stop")return s}return(o=e.postOrder)==null?void 0:o.call(e,t)}function UR(t,e){return ix(t,e,n=>n.children)}function GR(t,e){const n=[];let r;const i=e??new rx,o=[];function a(c,h=()=>{}){if(!r)throw h()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(c),r=c,c}function s(c,h){return a(c,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${h?JSON.stringify(h):""}`))}function l(c,h){for(const d of c){let p;try{p=fR(d,h)}catch(b){throw console.warn(b),new Error(`Cannot initialize "${d.type}" transform: ${b}`)}p.behavior&Vr&&s(new _u),s(p)}}const f=c=>{if(n.push(r),c.spec.data){const h=LR(c.spec.data)?new nx(c.spec.data,c,c.context.getNamedDataFromProvider):TR(c.spec.data,c);r=h,i.addDataSource(h,c)}if(c.spec.transform&&l(c.spec.transform,c),c instanceof Yt){if(!r)throw new Error(`A unit view (${c.getPathString()}) has no (inherited) data source`);const h=HR(c);if(h){o.push(h.rewrite);for(const p of h.transforms)s(p)}c.mark.isPickingParticipant()&&(s(new _u),s(new Xw({type:"identifier"})));const d=new Ww({type:"collect",groupby:c.getFacetFields(),sort:VR(c,h==null?void 0:h.rewrittenEncoding)});a(d),i.addCollector(d,c)}},u=zR(t.getDescendants(),c=>c.dataParent);for(const c of u)UR(c,{preOrder:h=>f(h.ref),postOrder:()=>{r=n.pop()}});return o.forEach(c=>c()),i}function HR(t){var o;const e=[],n={},r=[];for(const[a,s]of Object.entries(t.getEncoding())){const l=a;Ss(l)&&Gb(s)&&r.push({channel:l,chromPosDef:s})}const i=fl(r,a=>Ni(a.channel),a=>a.chromPosDef.chrom);for(const[a,s]of i.entries())for(const[l,f]of s.entries()){const u=[],c=[],h=[];for(const{channel:d,chromPosDef:p}of f){const b=S=>S.replace(/[^A-Za-z0-9_]/g,""),y=["_linearized_",b(p.chrom),"_",b(p.pos)].join(""),w={...((o=t.spec.encoding)==null?void 0:o[d])??t.getEncoding()[d]??{},field:y};delete w.chrom,delete w.pos,!w.type&&p.type&&(w.type=p.type),n[d]=w,u.push(p.pos),h.push(p.offset??0),c.push(y)}e.push(new _u),e.push(new $w({type:"linearizeGenomicCoordinate",channel:a,chrom:l,pos:u,offset:h,as:c},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},pw(t.mark,"encoding")}}:void 0}function VR(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Nt(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Es(n))return{field:n.field};if(!_s(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function ox(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!ox(n,t))return!1;return!0}function l0(t,e=!1){if(t.behavior&e0&&(e=!0),t instanceof _u)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&l0(n,e);return}t.behavior&Gn&&(e=!1);for(let n=0,r=t.children.length;n1)}function jR(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),t.addDataSource(i,r)}}function qR(t){if(l0(t),!ox(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function WR(t){for(const e of t.dataSources)qR(e);jR(t)}function $R(t){const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}})}function ZR(t){for(const e of Po){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}async function YR(t,e,n){var a;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=vl({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(s=>{throw new Error(`Could not load imported view spec: ${i} +Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]*\//))==null?void 0:a[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}function QR(t){const e=t.getSize().addPadding(t.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}function sr(t){return()=>t}const Bn=class Bn{static create(e,n,r,i){return new Bn(sr(e),sr(n),sr(r),sr(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}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(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?sr(i):typeof i=="function"?i:this._passThrough(r)};return new Bn(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new Bn(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new Bn(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e||e==null?this:new Bn(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}union(e){return this===e||e==null?this:new Bn(()=>Math.min(this.x,e.x),()=>Math.min(this.y,e.y),()=>Math.max(this.x2,e.x2)-Math.min(this.x,e.x),()=>Math.max(this.y2,e.y2)-Math.min(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new Bn(sr(this.x),sr(this.y),sr(this.width),sr(this.height))}containsPoint(e,n){return e>=this.x&&e=this.y&&n()=>{e&&a()},i=a=>()=>{e&&n&&a()},o=fl(this.buffer.reverse(),a=>a.mark);for(const[a,s]of[...o.entries()].reverse()){if(!a.isReady())continue;this.batch.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.batch.push(...a.prepareRender(this.globalOptions).map(f=>r(f)));let l;for(const f of s){const u=f.coords;u.equals(l)||this.batch.push(r(()=>{n=a.setViewport(u,f.clipRect)})),this.batch.push(i(f.callback)),l=f.coords}}}}class XR extends ax{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class KR{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class JR{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const eP=t=>new Promise(e=>setTimeout(e,t));function tP(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const a=performance.now(),s=a+(t.duration||1e3),l=typeof t.from=="number"?t.from:0,f=typeof t.to=="number"?t.to:1,u=t.easingFunction||(b=>b),c=b=>(b-a)/(s-a),h=b=>b*(f-l)+l,d=b=>Math.max(0,Math.min(1,b)),p=b=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(h(u(d(c(b))))),b=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return tP({requestAnimationFrame:n=>this.requestTransition(n),...e})}}class rP{constructor(e){this.genomes=new Map,this.baseUrl=e}async initialize(e){const n=new SF(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const iP="data:image/png;base64,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",oP={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class aP{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new yi([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Qd(Zw),texture:e?this._createTextureNow(iP):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(Ye(r)&&(r=oP[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=fP(r,n),o=this.fontRepository+fx(n.family)+"/"+i.replace(/\.\w+/,""),a=this._createTexture(o+".png"),s=this._loadFont(o+".json");e.texture=await a,e.metrics=await s}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Qd(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=fx(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>sP(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{Fs(n,{src:e,min:n.LINEAR},(o,a,s)=>{o?i(o):r(a)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,a)=>{r=Fs(n,{src:e,min:n.LINEAR},(s,l,f)=>{s?a(s):o(l)})});return this._promises.push(i),r}}function fx(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function sP(t){const e=t.split(` +`),n=[];let r;for(const i of e)if(i.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}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const a=o[1];r[a]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const a=o[1];r[a]=+o[2]}}return n}function fP(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const o=Math.abs(e.weight-i.weight);o"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class uP{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=PS([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function cP(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}const lx=new Map;async function hP(t,e,n){const r=t.symbol;let i=lx.get(r)??await gP(t.symbol);return i?(lx.set(r,i),wn`
${i.name} ${i.description}

${i.summary}

Source: NCBI RefSeq Gene

- `):null}async function c5(e){console.log("Searching: "+e);const t={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${e}[GENE]&sort=relevance&retmode=json`,t).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,t).then(a=>a.json())).result[r]:null}const h5=Eu(c5,500);function d5(e){return h5(e)}const p5=pt(".4~r"),g5=pt(".4~e");function cx(e){return e==null?wn` NA `:Ye(e)?e.substring(0,30):Number.isInteger(e)?""+e:Ft(e)?Math.abs(e)>Math.pow(10,8)||Math.abs(e)[cx(t),n{var u;for(const[c,h]of Object.entries(t.encoders))if((u=h==null?void 0:h.accessor)!=null&&u.fields.includes(f))switch(c){case"color":case"fill":case"stroke":return wn` + `):null}async function dP(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(a=>a.json())).result[r]:null}const pP=Eu(dP,500);function gP(t){return pP(t)}const mP=pt(".4~r"),bP=pt(".4~e");function ux(t){return t==null?wn` NA `:Ye(t)?t.substring(0,30):Number.isInteger(t)?""+t:Ft(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)[ux(e),n{var u;for(const[c,h]of Object.entries(e.encoders))if((u=h==null?void 0:h.accessor)!=null&&u.fields.includes(l))switch(c){case"color":case"fill":case"stroke":return wn` - `}return""},i=Object.entries(e).filter(([f,l])=>!f.startsWith("_"));if(i.length===0)return;const o=wn` + `}return""},i=Object.entries(t).filter(([l,f])=>!l.startsWith("_"));if(i.length===0)return;const o=wn` - ${i.map(([f,l])=>wn` + ${i.map(([l,f])=>wn` - - + + `)}
${f}${cx(l)} ${r(f,e)}${l}${ux(f)} ${r(l,t)}
- `,a=t.unitView.getTitleText(),s=a?wn` + `,a=e.unitView.getTitleText(),s=a?wn`
${a}
- `:"";return wn`${s}${o}`}class Vs extends qi{constructor(n,r,i,o,a,s){super(n,r,i,o,a,s);ue(this,yr,[]);this.spec=n,this.needsAxes={x:!0,y:!0}}async initializeChildren(){bn(this,yr,await Promise.all(this.spec.layer.map((n,r)=>this.context.createOrImportView(n,this,this,"grid"+r,i=>{if(!g0(i)&&!p0(i))throw new ji("LayerView accepts only unit or layer specs as children!",this)}))))}get children(){return X(this,yr).slice()}*[Symbol.iterator](){for(const n of X(this,yr))yield n}render(n,r,i={}){if(this.isConfiguredVisible()){n.pushView(this,r);for(const o of X(this,yr))o.render(n,r,i);n.popView(this)}}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0);for(let r=X(this,yr).length-1;r>=0;r--)if(X(this,yr)[r].propagateInteractionEvent(n),n.stopped)return;this.handleInteractionEvent(void 0,n,!1)}}yr=new WeakMap;class hx{constructor(t,n){this.n=t,this.maxCols=n??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(){const t=[],n=this.nCols,r=this.nRows;for(let i=0;i=this.maxCols)return;r=n*this.nCols+t}return r=this.n))return[t%this.nCols,Math.floor(t/this.nCols)]}}const b5="chromosome_ticks_and_labels",y5={x:"width",y:"height"};function u0(e){return e=="x"?"y":"x"}const Su={x:["bottom","top"],y:["left","right"]},c0=Object.fromEntries(Object.entries(Su).map(([e,t])=>t.map(n=>[n,e])).flat(1));function qr(e){return c0[e]}class dx extends Vs{constructor(t,n,r,i,o,a){const s=n=="locus",f={...s?x5:px,...w5(n,t),...t};super(s?v5(f,n):gx(f,n),r,i,o,`axis_${t.orient}`,{blockEncodingInheritance:!0,contributesToScaleDomain:!1,...a}),this.axisProps=f}getSize(){const t={px:this.getPerpendicularSize()},n={grow:1};return c0[this.axisProps.orient]=="x"?new jr(n,t):new jr(t,n)}getPerpendicularSize(){return h0(this.axisProps)}isPickingSupported(){return!1}}function h0(e){const t=qr(e.orient);let n=e.ticks&&e.tickSize||0;return e.labels&&(n+=e.labelPadding,t=="x"?n+=e.labelFontSize:n+=30),e.title&&(n+=e.titlePadding+e.titleFontSize),n=Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,n)),n}const px={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};function w5(e,t){const n=t.orient,r=e=="nominal"||e=="ordinal";let i="center",o="middle",a=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(a)>30?(i=a>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:a,labelBaseline:o}}function gx(e,t){const n={...e,extent:h0(e)},r=qr(n.orient),i=u0(r),o=n.orient=="bottom"||n.orient=="right"?1:-1,a=n.orient=="bottom"||n.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:a,size:n.domainWidth}}),f=()=>({name:"labels",mark:{type:"text",clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,[i+"Offset"]:(n.tickSize+n.labelPadding)*o,[i]:a,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:{field:"value",type:t},text:{field:"label"}}}),l=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:a},[i+"2"]:{value:a-n.tickSize/n.extent*(a?1:-1)}}}),u=()=>({name:"title",data:{values:[0]},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-a}}),c=()=>{const d={name:"ticks_and_labels",encoding:{[r]:{field:"value",type:t}},layer:[]};return n.ticks&&d.layer.push(l()),n.labels&&d.layer.push(f()),d},h={resolve:{scale:{[r]:"forced"}},[y5[u0(r)]]:n.extent,data:{lazy:{type:"axisTicks",channel:r,axis:e}},layer:[]};return n.domain&&h.layer.push(s()),(n.ticks||n.labels)&&h.layer.push(c()),n.title&&h.layer.push(u()),h}const x5={...px,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};function v5(e,t){const n={...e,extent:h0(e)},r=qr(n.orient),i=u0(r),o=n.orient=="bottom"||n.orient=="left"?1:0,a=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:e.chromTickDash,strokeDashOffset:e.chromTickDashOffset,[i]:o,[i+"2"]:o-n.chromTickSize/n.extent*(o?1:-1),color:e.chromTickColor,size:n.chromTickWidth}}),s=()=>{let u;switch(n.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-n.chromLabelPadding};break;default:u={}}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,...u},encoding:{[r+"2"]:{field:"continuousEnd",type:t},text:{field:"name"}}}};let f;switch(n.orient){case"bottom":case"top":f={};break;case"left":f={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":f={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:f={}}const l=gx({...e,...f},t);if(e.chromTicks||e.chromLabels){const u={name:b5,data:{lazy:{type:"axisGenome",channel:qr(n.orient)}},encoding:{[r]:{field:"continuousStart",type:t,band:0}},layer:[]};if(e.chromTicks&&u.layer.push(a()),e.chromLabels){u.layer.push(s());let c;l.layer.filter(h=>h.name=="ticks_and_labels").forEach(h=>h.layer.filter(d=>d.name=="labels").forEach(d=>{c=d.mark})),c&&(n.orient=="top"||n.orient=="bottom"?(c.viewportEdgeFadeWidthLeft=30,c.viewportEdgeFadeDistanceLeft=40):(c.viewportEdgeFadeWidthBottom=30,c.viewportEdgeFadeDistanceBottom=40))}l.layer.push(u)}return l}class A5 extends Vs{constructor(t,n,r,i,o,a){const f={...n=="locus"?E5:mx,...t};super(T5(f,n),r,i,o,`axisGrid_${t.orient}`,{blockEncodingInheritance:!0,contributesToScaleDomain:!1,...a}),this.axisProps=f}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}}const mx={values:null,grid:!1,gridCap:"butt",gridColor:"lightgray",gridDash:null,gridOpacity:1,gridWidth:1,tickCount:null,tickMinStep:null},E5={...mx,chromGrid:!1,chromGridCap:"butt",chromGridColor:"gray",chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1};function _5(e,t){const n=e,r=qr(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 S5(e,t){const n=e,r=qr(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 C5(e,t){const n=e,r=qr(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 T5(e,t){const n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(C5(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(S5(n,t)),n.grid&&n.gridOpacity>0&&r.push(_5(n,t)),{name:"grid_layers",configurableVisibility:!1,resolve:{scale:{[qr(e.orient)]:"forced",fill:"independent",opacity:"independent"}},layer:r}}const bx={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"},k5={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},I5={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},D5={start:0,middle:.5,end:1},B5={start:"left",middle:"center",end:"right"};function F5(e){if(!e)return;const t=Ye(e)?{text:e}:e;if(!t.text||t.orient=="none")return;const n={"track-title":k5,overlay:I5}[t.style]??{},r={...bx,...n,...t};let i={},o={x:0,y:0};const a=D5[r.anchor??"middle"];switch(r.orient){case"top":o={x:a,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-a},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:a,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:a},i={baseline:"alphabetic",angle:-90};break}const s={...bx,...i,...n,...t},f={xOffset:0,yOffset:0};switch(r.orient){case"top":f.yOffset=-s.offset;break;case"right":f.xOffset=s.offset;break;case"bottom":f.yOffset=s.offset;break;case"left":f.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...f,text:s.text,align:s.align??B5[s.anchor],angle:s.angle,baseline:s.baseline,dx:s.dx,dy:s.dy,color:s.color,font:s.font,size:s.fontSize,fontStyle:s.fontStyle,fontWeight:s.fontWeight}}}function R5(e,t,n,r){if(e.type=="wheel"){e.uiEvent.preventDefault();const i=e.uiEvent,o=i.deltaMode?120:1;let{x:a,y:s}=e.point;if(r){const f=r.mark.encoders;f.x&&!f.x2&&!f.x.constantValue&&(a=+f.x(r.datum)*t.width+t.x),f.y&&!f.y2&&!f.y.constantValue&&(s=(1-+f.y(r.datum))*t.height+t.y)}Math.abs(i.deltaX){n({x:o.clientX,y:o.clientY,xDelta:f.clientX-o.clientX,yDelta:f.clientY-o.clientY,zDelta:0}),o=f},s=f=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class P5 extends qi{constructor(n,r,i,o,a,s,f){super(n,r,i,o,a,f);ue(this,wr);ue(this,Dc);ue(this,bo);ue(this,ql);ue(this,Wl);ue(this,$l);ue(this,Bc);ue(this,Ra);ue(this,Fc);ue(this,Da,1/0);ue(this,Ba,10);ue(this,Kt,[]);ue(this,mo,{});ue(this,Fa,0);this.spec=n,bn(this,Ba,n.spacing??10),bn(this,Da,s),bn(this,Kt,[]),this.wrappingFacet=!1}appendChild(n){n.layoutParent??(n.layoutParent=this),X(this,Kt).push(new wx(n,this,X(this,Fa))),uS(this,Fa)._++}setChildren(n){bn(this,Kt,[]);for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=X(this,Kt).findIndex(o=>o.view==n);if(i>=0)X(this,Kt)[i]=new wx(r,this,X(this,Fa));else throw new Error("Not my child view!")}get children(){return X(this,Kt).map(n=>n.view)}get childCount(){return X(this,Kt).length}async createAxes(){const n=[];for(const r of Po){const i=this.resolutions.axis[r];if(i){const o=i.getAxisProps();if(o){const a={title:i.getTitle(),orient:Su[r][0],...o},s=new dx(a,i.scaleResolution.type,this.context,this,this);n.push(s.initializeChildren()),X(this,mo)[r]=s}}}return Promise.all([...n,...X(this,Kt).map(r=>r.createAxes())])}*[Symbol.iterator](){for(const n of X(this,Kt))yield*n.getChildren();for(const n of Object.values(X(this,mo)))yield n}getOverhang(){return ie(this,Bc,pS).call(this).union(ie(this,Ra,Nc).call(this))}getSize(){return this._cache("size",()=>new jr(ie(this,Wl,Ug).call(this,"column"),ie(this,Wl,Ug).call(this,"row")).addPadding(ie(this,Ra,Nc).call(this)))}render(n,r,i={}){if(!this.isConfiguredVisible())return;this.layoutParent||(r=r.shrink(this.getPadding())),r=r.shrink(ie(this,Ra,Nc).call(this)),n.pushView(this,r);const o={devicePixelRatio:this.context.devicePixelRatio},a=_w(ie(this,ql,zg).call(this,"column"),r.width,o),s=_w(ie(this,ql,zg).call(this,"row"),r.height,o),f=new hx(X(this,wr,wo).length,X(this,Da)??1/0),l=u=>Math.round(u*devicePixelRatio)/devicePixelRatio;for(const[u,c]of X(this,wr,wo).entries()){const{view:h,axes:d,gridLines:p,background:b,backgroundStroke:y,title:w}=c,[S,C]=f.getCellCoords(u),_=a[ie(this,$l,Gg).call(this,"column",S)],I=s[ie(this,$l,Gg).call(this,"row",C)],D=h.getViewportSize(),k=h.getSize(),R=h.getOverhang(),M=_.location-R.left,j=I.location-R.top,L=(Ne,O)=>(Ne[O].grow?(O=="width"?_:I).size:Ne[O].px)+R[O],ne=L(D,"width"),ae=L(D,"height"),de=L(k,"width"),Ie=L(k,"height"),Qe=c.scrollbars.horizontal,Be=c.scrollbars.vertical,Ke=Qe?()=>l(Qe.viewportOffset):()=>0,qe=Be?()=>l(Be.viewportOffset):()=>0,Je=new lr(()=>r.x+M,()=>r.y+j,()=>ne,()=>ae),Ee=h.isScrollable(),_e=Ee?new lr(()=>r.x+M-Ke(),()=>r.y+j-qe(),()=>de,()=>Ie):Je;c.coords=Je;const dt=i.clipRect?Je.intersect(i.clipRect):Je;b==null||b.render(n,dt,{...i,clipRect:void 0});for(const Ne of Object.values(p))Ne.render(n,Je,i);const Gt=L5(h)||Ee;Gt&&h.render(n,_e,{...i,clipRect:dt}),y==null||y.render(n,dt,{...i,clipRect:void 0});for(const[Ne,O]of Object.entries(d)){const P=Ne=="left"||Ne=="right"?"vertical":"horizontal",q=c.scrollbars[P],H=q?Je.modify(P=="vertical"?{y:()=>_e.y,height:Ie}:{x:()=>_e.x,width:de}):Je,$=yx(H,Ne,O);let E=i.clipRect;q&&(E=$.intersect(E).intersect(q?Je.modify(P=="vertical"?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),O.render(n,$,{...i,clipRect:E})}for(const Ne of Object.values(X(this,mo))){const P=Ne.axisProps.orient;(P=="left"&&S==0||P=="right"&&S==f.nCols-1||P=="top"&&C==0||P=="bottom"&&C==f.nRows-1)&&Ne.render(n,yx(Je.shrink(c.view.getOverhang()),P,Ne),i)}Gt||h.render(n,_e,i);for(const Ne of Object.values(c.scrollbars))Ne.updateScrollbar(Je,_e),Ne.render(n,r,i);w==null||w.render(n,Je,i)}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=X(this,wr,wo).find(o=>o.coords.containsPoint(n.point.x,n.point.y));for(const o of Object.values((r==null?void 0:r.scrollbars)??{}))if(o.coords.containsPoint(n.point.x,n.point.y)&&(o.propagateInteractionEvent(n),n.stopped))return;const i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof Zt||i instanceof Vs)&&R5(n,r.coords,o=>ie(this,Fc,gS).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Da=new WeakMap,Ba=new WeakMap,Kt=new WeakMap,mo=new WeakMap,Fa=new WeakMap,wr=new WeakSet,wo=function(){return X(this,Kt).filter(n=>n.view.isConfiguredVisible())},Dc=new WeakSet,dS=function(){return new hx(X(this,wr,wo).length,X(this,Da)??1/0)},bo=new WeakSet,Ql=function(n){const r=n=="column"?"width":"height",i=(o,a)=>o.map(s=>{const l=X(this,wr,wo)[s].getOverhangAndPadding();return n=="column"?a?l.right:l.left:a?l.bottom:l.top}).reduce((s,f)=>Math.max(s,f),0);return this._cache(`size/directionSizes/${n}`,()=>X(this,Dc,dS)[n=="column"?"colIndices":"rowIndices"].map(o=>({axisBefore:i(o,0),axisAfter:i(o,1),view:VB(o.map(a=>X(this,wr,wo)[a].view.getViewportSize()[r]))})))},ql=new WeakSet,zg=function(n){const r=ie(this,bo,Ql).call(this,n),i=[];i.push(Ns);for(const[o,a]of r.entries())o>0&&i.push({px:X(this,Ba),grow:0}),(o==0||this.wrappingFacet)&&i.push(Ns),i.push({px:a.axisBefore,grow:0}),i.push(a.view),i.push({px:a.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Ns);return i},Wl=new WeakSet,Ug=function(n){let r=0,i=0;const o=n=="row"?this.spec.height:this.spec.width;if(o||o===0)return Cw(o);const a=ie(this,bo,Ql).call(this,n);for(const[s,f]of a.entries())s>0&&(i+=X(this,Ba)),(s==0||this.wrappingFacet)&&(i+=0),i+=f.axisBefore,i+=f.view.px??0,r+=f.view.grow??0,i+=f.axisAfter,(s==a.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},$l=new WeakSet,Gg=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Bc=new WeakSet,pS=function(){const n=ie(this,bo,Ql).call(this,"column"),r=ie(this,bo,Ql).call(this,"row");return!n.length||!r.length?Et.zero():new Et(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)},Ra=new WeakSet,Nc=function(){const n=r=>{const i=c0[r],o=X(this,mo)[i];return(o==null?void 0:o.axisProps.orient)!==r?0:Math.max(o.getPerpendicularSize()+o.axisProps.offset,0)};return new Et(n("top"),n("right"),n("bottom"),n("left"))},Fc=new WeakSet,gS=function(n,r,i){for(const[o,a]of Object.entries(N5(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),f=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),l={x:f.x-s.x,y:f.y-s.y};for(const u of a)u.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?l.x:-l.y)}this.context.animator.requestRender()};function M5(e){if(!(!e||!e.fill||e.fillOpacity===0))return{configurableVisibility:!1,data:{values:[{}]},mark:{color:e.fill,opacity:e.fillOpacity??1,type:"rect",clip:!1,tooltip:null,minHeight:1,minOpacity:0}}}function O5(e){if(!(!e||!e.stroke||e.strokeWidth===0||e.strokeOpacity===0))return{configurableVisibility:!1,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",strokeOpacity: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"}}}}function N5(e){const t={x:new Set,y:new Set};return e.visit(n=>{for(const[r,i]of Object.entries(t)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),t}function L5(e){let t=!0;return e.visit(n=>{n instanceof Zt&&t&&(t=n.mark.properties.clip===!0)}),t}function yx(e,t,n){const 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})}class wx{constructor(t,n,r){if(this.layoutParent=n,this.view=t,this.serial=r,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.title=void 0,this.coords=lr.ZERO,t.needsAxes.x||t.needsAxes.y){const i=t.spec,o="view"in i?i==null?void 0:i.view:void 0,a=M5(o);a&&(this.background=new Zt(a,n.context,n,t,"background"+r,{blockEncodingInheritance:!0}));const s=O5(o);s&&(this.backgroundStroke=new Zt(s,n.context,n,t,"backgroundStroke"+r,{blockEncodingInheritance:!0}));const f=F5(t.spec.title);if(f){const l=new Zt(f,n.context,n,t,"title"+r,{blockEncodingInheritance:!0});this.title=l}}t.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new xx(this,"horizontal")),t.spec.viewportHeight!=null&&(this.scrollbars.vertical=new xx(this,"vertical"))}*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)}async createAxes(){const{view:t,axes:n,gridLines:r}=this,i=(s,f)=>{const l=s.getAxisProps();if(l===null)return;const u=l?{...l}:{};if(!u.orient){for(const c of Su[f])if(!n[c]){u.orient=c;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(u.title??(u.title=s.getTitle()),!Su[f].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${f}"!`);return u},o=async(s,f,l)=>{const u=i(s,f);if(u){if(n[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);const c=new dx(u,s.scaleResolution.type,this.layoutParent.context,this.layoutParent,l);n[u.orient]=c,await c.initializeChildren()}},a=async(s,f,l)=>{const u=i(s,f);if(u&&(u.grid||u.chromGrid)){const c=new A5(u,s.scaleResolution.type,this.layoutParent.context,this.layoutParent,l);r[u.orient]=c,await c.initializeChildren()}};for(const s of["x","y"])if(t.needsAxes[s]){const f=t.resolutions.axis[s];if(!f)continue;await o(f,s,t)}for(const s of["x","y"])if(t.needsAxes[s]){const f=t.getAxisResolution(s);if(!f)continue;await a(f,s,t)}if(t instanceof Vs){for(const s of t)for(const[f,l]of Object.entries(s.resolutions.axis)){const u=l.getAxisProps();u&&u.orient&&await o(l,f,s)}for(const s of t)for(const[f,l]of Object.entries(s.resolutions.axis)){const u=l.getAxisProps();u&&!u.orient&&await o(l,f,s)}}[...Object.values(n),...Object.values(r)].forEach(s=>s.visit(f=>{f instanceof Zt&&f.resolve("scale")}))}getOverhang(){const t=n=>{const r=this.axes[n];return r?Math.max(r.getPerpendicularSize()+r.axisProps.offset,0):0};return new Et(t("top"),t("right"),t("bottom"),t("left")).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}}class xx extends Zt{constructor(t,n){const r={scrollbarSize:8,scrollbarPadding:2};super({data:{values:[{}]},mark:{type:"rect",fill:"#b0b0b0",fillOpacity:.6,stroke:"white",strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1},configurableVisibility:!1},t.layoutParent.context,t.layoutParent,t.view,"scrollbar-"+n,{blockEncodingInheritance:!0}),this.config=r,this.scrollDirection=n,this.viewportOffset=0,this.maxScrollOffset=0,this.scrollbarCoords=lr.ZERO,this.addInteractionEventListener("mousedown",(i,o)=>{if(o.stopPropagation(),this.maxScrollOffset<=0)return;const a=h=>n=="vertical"?h.clientY:h.clientX,s=o.uiEvent;s.preventDefault();const f=this.getScrollOffset(),l=a(s),u=h=>{const d=Xd(a(h)-l+f,0,this.maxScrollOffset);this.viewportOffset=d/this.maxScrollOffset*this.maxViewportOffset,this.context.animator.requestRender()},c=()=>{document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",c)};document.addEventListener("mouseup",c,!1),document.addEventListener("mousemove",u,!1)})}getScrollOffset(){return this.viewportOffset/this.maxViewportOffset*this.maxScrollOffset}render(t,n,r){super.render(t,this.scrollbarCoords,r)}updateScrollbar(t,n){const r=this.config.scrollbarPadding,i=this.config.scrollbarSize,o=this.scrollDirection=="horizontal"?"width":"height",a=Math.min(1,t[o]/n[o]),s=t[o]-2*r,f=a*s;this.maxScrollOffset=s-f,this.maxViewportOffset=n[o]-t[o],this.viewportOffset=Xd(this.viewportOffset,0,this.maxViewportOffset),this.scrollbarCoords=this.scrollDirection=="vertical"?new lr(()=>t.x+t.width-i-r,()=>t.y+r+this.getScrollOffset(),()=>i,()=>f):new lr(()=>t.x+r+this.getScrollOffset(),()=>t.y+t.height-i-r,()=>f,()=>i)}}class d0 extends P5{constructor(t,n,r,i,o){super(t,n,r,i,o,m0(t)?t.columns:Cu(t)?1:1/0),this.spec=t}async initializeChildren(){const t=this.spec,n=m0(t)?t.concat:Cu(t)?t.vconcat:t.hconcat;this.setChildren(await Promise.all(n.map((r,i)=>this.context.createOrImportView(r,this,this,"grid"+i)))),await this.createAxes()}getDefaultResolution(t,n){return n=="axis"?"independent":Cu(this.spec)&&t==="x"||Ax(this.spec)&&t==="y"?"shared":"independent"}}const vx="viewRoot";class z5{constructor(t={}){ue(this,Pa,new Map);this.options={allowImport:!0,wrapRoot:!0,...t};const n=r=>(i,o,a,s,f)=>new r(i,o,a,s,i.name??f);this.addViewType(g0,n(Vs)),this.addViewType(p0,n(Zt)),this.addViewType(Cu,n(d0)),this.addViewType(Ax,n(d0)),this.addViewType(m0,n(d0)),this.addViewType(G5,()=>{throw new Error("SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!")})}addViewType(t,n){X(this,Pa).set(t,n)}createView(t,n,r,i,o){for(const[a,s]of X(this,Pa))if(a(t))return s(t,n,r,i,o);throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(t)]))}isViewSpec(t){const n=[...X(this,Pa).keys()].filter(r=>r(t));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}async createOrImportView(t,n,r,i,o,a){let s;if(U5(t))if(this.options.allowImport)s=await $R(t,i.getBaseUrl(),n),a&&a(s);else throw new ji("Importing views is not allowed!",r);else s=t;!i&&this.options.wrapRoot&&(p0(s)||g0(s))&&o===vx&&(s={name:"implicitRoot",vconcat:[s]});const f=this.createView(s,n,r,i,o);return f instanceof qi&&await f.initializeChildren(),f}}Pa=new WeakMap;function p0(e){return"mark"in e&&(Ye(e.mark)||qt(e.mark))}function g0(e){return"layer"in e&&qt(e.layer)}function U5(e){return"import"in e}function Cu(e){return"vconcat"in e&&jt(e.vconcat)}function Ax(e){return"hconcat"in e&&jt(e.hconcat)}function m0(e){return"concat"in e&&jt(e.concat)}function G5(e){return"samples"in e&&qt(e.samples)&&"spec"in e&&qt(e.spec)}Qm("fasta",s5);class H5{constructor(t,n,r={}){this.container=t;const i=document.createElement("style");i.innerHTML=d8,t.appendChild(i),this.spec=n,this.accessorFactory=new JT,this.viewFactory=new z5,this.namedDataProviders=[],this.animator=new e5(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new l5(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this._extraBroadcastListeners=new Map,this.tooltipHandlers={default:m5,refseqgene:u5,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(t){this.namedDataProviders.unshift(t)}getNamedDataFromProvider(t){for(const n of this.namedDataProviders){const r=n(t);if(r)return r}}updateNamedData(t,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(t);if(!r)throw new Error("No such named data source: "+t);r.dataSource.updateDynamicData(n),a0(r.hosts),this.animator.requestRender()}broadcast(t,n){var i;const r={type:t,payload:n};this.viewRoot.visit(o=>o.handleBroadcast(r)),(i=this._extraBroadcastListeners.get(t))==null||i.forEach(o=>o(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new gB(this.container,()=>this.viewRoot?ZR(this.viewRoot):{width:void 0,height:void 0},this.spec.background),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='
Loading...
',this.container.appendChild(this.loadingMessageElement),this.tooltip=new g8(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[t,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(t,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new t5(this.spec.baseUrl),await this.genomeStore.initialize(this.spec.genome));const t=this,n={dataFlow:new ix,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new i5(this._glHelper),get devicePixelRatio(){return t._glHelper.dpr},requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(f,l)=>{document.addEventListener(f,l);let u=this._keyboardListeners.get(f);u||(u=[],this._keyboardListeners.set(f,u)),u.push(l)},addBroadcastListener(f,l){const u=t._extraBroadcastListeners;let c=u.get(f);c||(c=new Set,u.set(f,c)),c.add(l)},removeBroadcastListener(f,l){var c;(c=t._extraBroadcastListeners.get(f))==null||c.delete(l)},isViewConfiguredVisible:t.viewVisibilityPredicate,isViewSpec:f=>t.viewFactory.isViewSpec(f),createView:function(f,l,u,c){return t.viewFactory.createView(f,n,l,u,c)},createOrImportView:async function(f,l,u,c,h){return t.viewFactory.createOrImportView(f,n,l,u,c,h)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(f=>r.datasets[f]),this.viewRoot=await n.createOrImportView(r,null,null,vx),qR(this.viewRoot),WR(this.viewRoot);const i=this.viewRoot.getDescendants();i.forEach(f=>f.configureViewOpacity()),this._glHelper.invalidateSize();const o=i.filter(f=>f instanceof Zt),a=zR(this.viewRoot,n.dataFlow);jR(a),this.broadcast("dataFlowBuilt",a),o.forEach(f=>f.mark.initializeEncoders());const s=Promise.all(o.map(f=>f.mark.initializeGraphics()));for(const f of o)a.addObserver(l=>{f.mark.initializeData(),f.mark.updateGraphicsData()},f);await n.fontManager.waitUntilReady(),a.initialize(),await Promise.all(a.dataSources.map(f=>f.load())),a0(this.viewRoot),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(f=>{for(const l of Object.values(f.resolutions.scale))this._glHelper.createRangeTexture(l)});for(const f of o)f.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(f=>yu(f,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(t){const n=`${t.view?`At "${t.view.getPathString()}": `:""}${t.toString()}`;return console.error(t.stack),V5(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const t=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=t.getBoundingClientRect(),a=new XR(r.clientX-o.left-t.clientLeft,r.clientY-o.top-t.clientTop),s=f=>{this.viewRoot.propagateInteractionEvent(new QR(a,f)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(a.x,a.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const f=r;if(Math.abs(f.deltaX)>Math.abs(f.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const l=f5(f);this._wheelInertia.setMomentum(f.deltaY*(f.deltaMode?80:1),u=>{const c=new WheelEvent("wheel",{...l,deltaMode:0,deltaX:0,deltaY:u});s(c)}),f.preventDefault();return}}if(r.type=="click"){const f=this._currentHover?{type:r.type,viewPath:this._currentHover.mark.unitView.getLayoutAncestors().map(l=>l.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(l=>l(f))}s(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>t.addEventListener(r,n)),t.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),t.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(t,n){var o;const r=this._glHelper.readPickingPixel(t,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(a=>{if(a instanceof Zt){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(f=>{s(f)==i&&(this._currentHover={mark:a.mark,datum:f,uniqueId:i})})}if(this._currentHover)return Ls}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{if(!a.isPickingParticipant())return;const f=a.properties.tooltip;if(f!==null){const l=(f==null?void 0:f.handler)??"default",u=this.tooltipHandlers[l];if(!u)throw new Error("No such tooltip handler: "+l);return u(s,a,f==null?void 0:f.params)}})}}updateTooltip(t,n){if(!this._tooltipUpdateRequested||!t)this.tooltip.updateWithDatum(t,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const t=this.viewRoot;if(!t)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new lx({picking:!1},this._glHelper),this._pickingContext=new lx({picking:!0},this._glHelper),t.render(new YR(this._renderingContext,this._pickingContext),lr.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var t;(t=this._renderingContext)==null||t.render(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.render(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const t=[];return this.viewRoot.visit(n=>{n instanceof Zt&&n.getAccessor("search")&&t.push(n)}),t}getNamedScaleResolutions(){const t=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&t.set(r.name,r)}),t}}function V5(e,t){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=t,n.appendChild(r),e.appendChild(n)}async function j5(e,t,n={}){let r;if(Ye(e)){if(r=document.querySelector(e),!r)throw new Error(`No such element: ${e}`)}else if(e instanceof HTMLElement)r=e;else throw new Error(`Invalid element: ${e}`);let i;try{const o=qt(t)?t:await W5(t);if(o.baseUrl??(o.baseUrl=""),o.width??(o.width="container"),o.padding??(o.padding=10),r==document.body){const a=document.createElement("div");a.style.position="fixed",a.style.inset="0",a.style.overflow="hidden",r.appendChild(a),r=a}i=new H5(r,o,n),q5(i,n),await i.launch()}catch(o){r.innerText=o.toString(),console.error(o)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(o,a){const s=i._eventListeners;let f=s.get(o);f||(f=new Set,s.set(o,f)),f.add(a)},removeEventListener(o,a){var f;(f=i._eventListeners.get(o))==null||f.delete(a)},getScaleResolutionByName(o){return i.getNamedScaleResolutions().get(o)},updateNamedData:i.updateNamedData.bind(i)}}function q5(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function W5(e){let t;try{t=JSON.parse(await vf().load(e))}catch(n){throw new Error(`Could not load or parse configuration: ${e}, reason: ${n.message}`)}if(!t.baseUrl){const n=e.match(/^[^?#]*\//);t.baseUrl=n&&n[0]||"./"}return t}/** + `:"";return wn`${s}${o}`}class Vs extends qi{constructor(n,r,i,o,a,s){super(n,r,i,o,a,s);ue(this,yr,[]);this.spec=n,this.needsAxes={x:!0,y:!0}}async initializeChildren(){bn(this,yr,await Promise.all(this.spec.layer.map((n,r)=>this.context.createOrImportView(n,this,this,"grid"+r,i=>{if(!g0(i)&&!p0(i))throw new ji("LayerView accepts only unit or layer specs as children!",this)}))))}get children(){return X(this,yr).slice()}*[Symbol.iterator](){for(const n of X(this,yr))yield n}render(n,r,i={}){if(this.isConfiguredVisible()){n.pushView(this,r);for(const o of X(this,yr))o.render(n,r,i);n.popView(this)}}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0);for(let r=X(this,yr).length-1;r>=0;r--)if(X(this,yr)[r].propagateInteractionEvent(n),n.stopped)return;this.handleInteractionEvent(void 0,n,!1)}}yr=new WeakMap;class cx{constructor(e,n){this.n=e,this.maxCols=n??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(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i=this.maxCols)return;r=n*this.nCols+e}return r=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}const wP="chromosome_ticks_and_labels",xP={x:"width",y:"height"};function u0(t){return t=="x"?"y":"x"}const Su={x:["bottom","top"],y:["left","right"]},c0=Object.fromEntries(Object.entries(Su).map(([t,e])=>e.map(n=>[n,t])).flat(1));function qr(t){return c0[t]}class hx extends Vs{constructor(e,n,r,i,o,a){const s=n=="locus",l={...s?AP:dx,...vP(n,e),...e};super(s?EP(l,n):px(l,n),r,i,o,`axis_${e.orient}`,{blockEncodingInheritance:!0,contributesToScaleDomain:!1,...a}),this.axisProps=l}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return c0[this.axisProps.orient]=="x"?new jr(n,e):new jr(e,n)}getPerpendicularSize(){return h0(this.axisProps)}isPickingSupported(){return!1}}function h0(t){const e=qr(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}const dx={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};function vP(t,e){const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=e.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(a)>30?(i=a>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:a,labelBaseline:o}}function px(t,e){const n={...t,extent:h0(t)},r=qr(n.orient),i=u0(r),o=n.orient=="bottom"||n.orient=="right"?1:-1,a=n.orient=="bottom"||n.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:a,size:n.domainWidth}}),l=()=>({name:"labels",mark:{type:"text",clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,[i+"Offset"]:(n.tickSize+n.labelPadding)*o,[i]:a,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:{field:"value",type:e},text:{field:"label"}}}),f=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:a},[i+"2"]:{value:a-n.tickSize/n.extent*(a?1:-1)}}}),u=()=>({name:"title",data:{values:[0]},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-a}}),c=()=>{const d={name:"ticks_and_labels",encoding:{[r]:{field:"value",type:e}},layer:[]};return n.ticks&&d.layer.push(f()),n.labels&&d.layer.push(l()),d},h={resolve:{scale:{[r]:"forced"}},[xP[u0(r)]]:n.extent,data:{lazy:{type:"axisTicks",channel:r,axis:t}},layer:[]};return n.domain&&h.layer.push(s()),(n.ticks||n.labels)&&h.layer.push(c()),n.title&&h.layer.push(u()),h}const AP={...dx,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};function EP(t,e){const n={...t,extent:h0(t)},r=qr(n.orient),i=u0(r),o=n.orient=="bottom"||n.orient=="left"?1:0,a=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[i]:o,[i+"2"]:o-n.chromTickSize/n.extent*(o?1:-1),color:t.chromTickColor,size:n.chromTickWidth}}),s=()=>{let u;switch(n.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-n.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:{type:"text",size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[r+"2"]:{field:"continuousEnd",type:e},text:{field:"name"}}}};let l;switch(n.orient){case"bottom":case"top":l={};break;case"left":l={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":l={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:l={}}const f=px({...t,...l},e);if(t.chromTicks||t.chromLabels){const u={name:wP,data:{lazy:{type:"axisGenome",channel:qr(n.orient)}},encoding:{[r]:{field:"continuousStart",type:e,band:0}},layer:[]};if(t.chromTicks&&u.layer.push(a()),t.chromLabels){u.layer.push(s());let c;f.layer.filter(h=>h.name=="ticks_and_labels").forEach(h=>h.layer.filter(d=>d.name=="labels").forEach(d=>{c=d.mark})),c&&(n.orient=="top"||n.orient=="bottom"?(c.viewportEdgeFadeWidthLeft=30,c.viewportEdgeFadeDistanceLeft=40):(c.viewportEdgeFadeWidthBottom=30,c.viewportEdgeFadeDistanceBottom=40))}f.layer.push(u)}return f}class _P extends Vs{constructor(e,n,r,i,o,a){const l={...n=="locus"?SP:gx,...e};super(kP(l,n),r,i,o,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,contributesToScaleDomain:!1,...a}),this.axisProps=l}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}}const gx={values:null,grid:!1,gridCap:"butt",gridColor:"lightgray",gridDash:null,gridOpacity:1,gridWidth:1,tickCount:null,tickMinStep:null},SP={...gx,chromGrid:!1,chromGridCap:"butt",chromGridColor:"gray",chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1};function CP(t,e){const n=t,r=qr(n.orient);return{name:"grid_lines",data:{lazy:{type:"axisTicks",channel:r,axis:t}},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:e}}}}function TP(t,e){const n=t,r=qr(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:e,band:0}}}}function IP(t,e){const n=t,r=qr(n.orient);return{name:"chromosome_fill",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rect"},encoding:{[r]:{field:"continuousStart",type:e,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 kP(t,e){const n={...t},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(IP(n,e)),n.chromGrid&&n.chromGridOpacity>0&&r.push(TP(n,e)),n.grid&&n.gridOpacity>0&&r.push(CP(n,e)),{name:"grid_layers",configurableVisibility:!1,resolve:{scale:{[qr(t.orient)]:"forced",fill:"independent",opacity:"independent"}},layer:r}}const mx={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"},DP={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},BP={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},FP={start:0,middle:.5,end:1},RP={start:"left",middle:"center",end:"right"};function PP(t){if(!t)return;const e=Ye(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n={"track-title":DP,overlay:BP}[e.style]??{},r={...mx,...n,...e};let i={},o={x:0,y:0};const a=FP[r.anchor??"middle"];switch(r.orient){case"top":o={x:a,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-a},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:a,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:a},i={baseline:"alphabetic",angle:-90};break}const s={...mx,...i,...n,...e},l={xOffset:0,yOffset:0};switch(r.orient){case"top":l.yOffset=-s.offset;break;case"right":l.xOffset=s.offset;break;case"bottom":l.yOffset=s.offset;break;case"left":l.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...l,text:s.text,align:s.align??RP[s.anchor],angle:s.angle,baseline:s.baseline,dx:s.dx,dy:s.dy,color:s.color,font:s.font,size:s.fontSize,fontStyle:s.fontStyle,fontWeight:s.fontWeight}}}function MP(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:a,y:s}=t.point;if(r){const l=r.mark.encoders;l.x&&!l.x2&&!l.x.constantValue&&(a=+l.x(r.datum)*e.width+e.x),l.y&&!l.y2&&!l.y.constantValue&&(s=(1-+l.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX){n({x:o.clientX,y:o.clientY,xDelta:l.clientX-o.clientX,yDelta:l.clientY-o.clientY,zDelta:0}),o=l},s=l=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class OP extends qi{constructor(n,r,i,o,a,s,l){super(n,r,i,o,a,l);ue(this,wr);ue(this,Dc);ue(this,bo);ue(this,Wf);ue(this,$f);ue(this,Zf);ue(this,Bc);ue(this,Ra);ue(this,Fc);ue(this,Da,1/0);ue(this,Ba,10);ue(this,Jt,[]);ue(this,mo,{});ue(this,Fa,0);this.spec=n,bn(this,Ba,n.spacing??10),bn(this,Da,s),bn(this,Jt,[]),this.wrappingFacet=!1}appendChild(n){n.layoutParent??(n.layoutParent=this),X(this,Jt).push(new yx(n,this,X(this,Fa))),lS(this,Fa)._++}setChildren(n){bn(this,Jt,[]);for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=X(this,Jt).findIndex(o=>o.view==n);if(i>=0)X(this,Jt)[i]=new yx(r,this,X(this,Fa));else throw new Error("Not my child view!")}get children(){return X(this,Jt).map(n=>n.view)}get childCount(){return X(this,Jt).length}async createAxes(){const n=[];for(const r of Po){const i=this.resolutions.axis[r];if(i){const o=i.getAxisProps();if(o){const a={title:i.getTitle(),orient:Su[r][0],...o},s=new hx(a,i.scaleResolution.type,this.context,this,this);n.push(s.initializeChildren()),X(this,mo)[r]=s}}}return Promise.all([...n,...X(this,Jt).map(r=>r.createAxes())])}*[Symbol.iterator](){for(const n of X(this,Jt))yield*n.getChildren();for(const n of Object.values(X(this,mo)))yield n}getOverhang(){return ie(this,Bc,dS).call(this).union(ie(this,Ra,Nc).call(this))}getSize(){return this._cache("size",()=>new jr(ie(this,$f,Ug).call(this,"column"),ie(this,$f,Ug).call(this,"row")).addPadding(ie(this,Ra,Nc).call(this)))}render(n,r,i={}){if(!this.isConfiguredVisible())return;this.layoutParent||(r=r.shrink(this.getPadding())),r=r.shrink(ie(this,Ra,Nc).call(this)),n.pushView(this,r);const o={devicePixelRatio:this.context.devicePixelRatio},a=Ew(ie(this,Wf,zg).call(this,"column"),r.width,o),s=Ew(ie(this,Wf,zg).call(this,"row"),r.height,o),l=new cx(X(this,wr,wo).length,X(this,Da)??1/0),f=u=>Math.round(u*devicePixelRatio)/devicePixelRatio;for(const[u,c]of X(this,wr,wo).entries()){const{view:h,axes:d,gridLines:p,background:b,backgroundStroke:y,title:w}=c,[S,C]=l.getCellCoords(u),_=a[ie(this,Zf,Gg).call(this,"column",S)],k=s[ie(this,Zf,Gg).call(this,"row",C)],D=h.getViewportSize(),I=h.getSize(),R=h.getOverhang(),M=_.location-R.left,j=k.location-R.top,L=(Ne,O)=>(Ne[O].grow?(O=="width"?_:k).size:Ne[O].px)+R[O],ne=L(D,"width"),ae=L(D,"height"),de=L(I,"width"),ke=L(I,"height"),Qe=c.scrollbars.horizontal,Be=c.scrollbars.vertical,Ke=Qe?()=>f(Qe.viewportOffset):()=>0,qe=Be?()=>f(Be.viewportOffset):()=>0,Je=new fr(()=>r.x+M,()=>r.y+j,()=>ne,()=>ae),Ee=h.isScrollable(),_e=Ee?new fr(()=>r.x+M-Ke(),()=>r.y+j-qe(),()=>de,()=>ke):Je;c.coords=Je;const dt=i.clipRect?Je.intersect(i.clipRect):Je;b==null||b.render(n,dt,{...i,clipRect:void 0});for(const Ne of Object.values(p))Ne.render(n,Je,i);const Ht=UP(h)||Ee;Ht&&h.render(n,_e,{...i,clipRect:dt}),y==null||y.render(n,dt,{...i,clipRect:void 0});for(const[Ne,O]of Object.entries(d)){const P=Ne=="left"||Ne=="right"?"vertical":"horizontal",q=c.scrollbars[P],H=q?Je.modify(P=="vertical"?{y:()=>_e.y,height:ke}:{x:()=>_e.x,width:de}):Je,$=bx(H,Ne,O);let E=i.clipRect;q&&(E=$.intersect(E).intersect(q?Je.modify(P=="vertical"?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),O.render(n,$,{...i,clipRect:E})}for(const Ne of Object.values(X(this,mo))){const P=Ne.axisProps.orient;(P=="left"&&S==0||P=="right"&&S==l.nCols-1||P=="top"&&C==0||P=="bottom"&&C==l.nRows-1)&&Ne.render(n,bx(Je.shrink(c.view.getOverhang()),P,Ne),i)}Ht||h.render(n,_e,i);for(const Ne of Object.values(c.scrollbars))Ne.updateScrollbar(Je,_e),Ne.render(n,r,i);w==null||w.render(n,Je,i)}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=X(this,wr,wo).find(o=>o.coords.containsPoint(n.point.x,n.point.y));for(const o of Object.values((r==null?void 0:r.scrollbars)??{}))if(o.coords.containsPoint(n.point.x,n.point.y)&&(o.propagateInteractionEvent(n),n.stopped))return;const i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof Yt||i instanceof Vs)&&MP(n,r.coords,o=>ie(this,Fc,pS).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Da=new WeakMap,Ba=new WeakMap,Jt=new WeakMap,mo=new WeakMap,Fa=new WeakMap,wr=new WeakSet,wo=function(){return X(this,Jt).filter(n=>n.view.isConfiguredVisible())},Dc=new WeakSet,hS=function(){return new cx(X(this,wr,wo).length,X(this,Da)??1/0)},bo=new WeakSet,Xf=function(n){const r=n=="column"?"width":"height",i=(o,a)=>o.map(s=>{const f=X(this,wr,wo)[s].getOverhangAndPadding();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((s,l)=>Math.max(s,l),0);return this._cache(`size/directionSizes/${n}`,()=>X(this,Dc,hS)[n=="column"?"colIndices":"rowIndices"].map(o=>({axisBefore:i(o,0),axisAfter:i(o,1),view:qB(o.map(a=>X(this,wr,wo)[a].view.getViewportSize()[r]))})))},Wf=new WeakSet,zg=function(n){const r=ie(this,bo,Xf).call(this,n),i=[];i.push(Ns);for(const[o,a]of r.entries())o>0&&i.push({px:X(this,Ba),grow:0}),(o==0||this.wrappingFacet)&&i.push(Ns),i.push({px:a.axisBefore,grow:0}),i.push(a.view),i.push({px:a.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Ns);return i},$f=new WeakSet,Ug=function(n){let r=0,i=0;const o=n=="row"?this.spec.height:this.spec.width;if(o||o===0)return Sw(o);const a=ie(this,bo,Xf).call(this,n);for(const[s,l]of a.entries())s>0&&(i+=X(this,Ba)),(s==0||this.wrappingFacet)&&(i+=0),i+=l.axisBefore,i+=l.view.px??0,r+=l.view.grow??0,i+=l.axisAfter,(s==a.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},Zf=new WeakSet,Gg=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Bc=new WeakSet,dS=function(){const n=ie(this,bo,Xf).call(this,"column"),r=ie(this,bo,Xf).call(this,"row");return!n.length||!r.length?Et.zero():new Et(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)},Ra=new WeakSet,Nc=function(){const n=r=>{const i=c0[r],o=X(this,mo)[i];return(o==null?void 0:o.axisProps.orient)!==r?0:Math.max(o.getPerpendicularSize()+o.axisProps.offset,0)};return new Et(n("top"),n("right"),n("bottom"),n("left"))},Fc=new WeakSet,pS=function(n,r,i){for(const[o,a]of Object.entries(zP(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),l=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),f={x:l.x-s.x,y:l.y-s.y};for(const u of a)u.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?f.x:-f.y)}this.context.animator.requestRender()};function NP(t){if(!(!t||!t.fill||t.fillOpacity===0))return{configurableVisibility:!1,data:{values:[{}]},mark:{color:t.fill,opacity:t.fillOpacity??1,type:"rect",clip:!1,tooltip:null,minHeight:1,minOpacity:0}}}function LP(t){if(!(!t||!t.stroke||t.strokeWidth===0||t.strokeOpacity===0))return{configurableVisibility:!1,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:t.strokeWidth??1,color:t.stroke??"lightgray",strokeCap:"square",strokeOpacity:t.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"}}}}function zP(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function UP(t){let e=!0;return t.visit(n=>{n instanceof Yt&&e&&(e=n.mark.properties.clip===!0)}),e}function bx(t,e,n){const r=n.axisProps,i=n.getPerpendicularSize();if(e=="bottom")return t.translate(0,t.height+r.offset).modify({height:i});if(e=="top")return t.translate(0,-i-r.offset).modify({height:i});if(e=="left")return t.translate(-i-r.offset,0).modify({width:i});if(e=="right")return t.translate(t.width+r.offset,0).modify({width:i})}class yx{constructor(e,n,r){if(this.layoutParent=n,this.view=e,this.serial=r,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.title=void 0,this.coords=fr.ZERO,e.needsAxes.x||e.needsAxes.y){const i=e.spec,o="view"in i?i==null?void 0:i.view:void 0,a=NP(o);a&&(this.background=new Yt(a,n.context,n,e,"background"+r,{blockEncodingInheritance:!0}));const s=LP(o);s&&(this.backgroundStroke=new Yt(s,n.context,n,e,"backgroundStroke"+r,{blockEncodingInheritance:!0}));const l=PP(e.spec.title);if(l){const f=new Yt(l,n.context,n,e,"title"+r,{blockEncodingInheritance:!0});this.title=f}}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new wx(this,"horizontal")),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new wx(this,"vertical"))}*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)}async createAxes(){const{view:e,axes:n,gridLines:r}=this,i=(s,l)=>{const f=s.getAxisProps();if(f===null)return;const u=f?{...f}:{};if(!u.orient){for(const c of Su[l])if(!n[c]){u.orient=c;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(u.title??(u.title=s.getTitle()),!Su[l].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${l}"!`);return u},o=async(s,l,f)=>{const u=i(s,l);if(u){if(n[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);const c=new hx(u,s.scaleResolution.type,this.layoutParent.context,this.layoutParent,f);n[u.orient]=c,await c.initializeChildren()}},a=async(s,l,f)=>{const u=i(s,l);if(u&&(u.grid||u.chromGrid)){const c=new _P(u,s.scaleResolution.type,this.layoutParent.context,this.layoutParent,f);r[u.orient]=c,await c.initializeChildren()}};for(const s of["x","y"])if(e.needsAxes[s]){const l=e.resolutions.axis[s];if(!l)continue;await o(l,s,e)}for(const s of["x","y"])if(e.needsAxes[s]){const l=e.getAxisResolution(s);if(!l)continue;await a(l,s,e)}if(e instanceof Vs){for(const s of e)for(const[l,f]of Object.entries(s.resolutions.axis)){const u=f.getAxisProps();u&&u.orient&&await o(f,l,s)}for(const s of e)for(const[l,f]of Object.entries(s.resolutions.axis)){const u=f.getAxisProps();u&&!u.orient&&await o(f,l,s)}}[...Object.values(n),...Object.values(r)].forEach(s=>s.visit(l=>{l instanceof Yt&&l.resolve("scale")}))}getOverhang(){const e=n=>{const r=this.axes[n];return r?Math.max(r.getPerpendicularSize()+r.axisProps.offset,0):0};return new Et(e("top"),e("right"),e("bottom"),e("left")).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}}class wx extends Yt{constructor(e,n){const r={scrollbarSize:8,scrollbarPadding:2};super({data:{values:[{}]},mark:{type:"rect",fill:"#b0b0b0",fillOpacity:.6,stroke:"white",strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1},configurableVisibility:!1},e.layoutParent.context,e.layoutParent,e.view,"scrollbar-"+n,{blockEncodingInheritance:!0}),this.config=r,this.scrollDirection=n,this.viewportOffset=0,this.maxScrollOffset=0,this.scrollbarCoords=fr.ZERO,this.addInteractionEventListener("mousedown",(i,o)=>{if(o.stopPropagation(),this.maxScrollOffset<=0)return;const a=h=>n=="vertical"?h.clientY:h.clientX,s=o.uiEvent;s.preventDefault();const l=this.getScrollOffset(),f=a(s),u=h=>{const d=Xd(a(h)-f+l,0,this.maxScrollOffset);this.viewportOffset=d/this.maxScrollOffset*this.maxViewportOffset,this.context.animator.requestRender()},c=()=>{document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",c)};document.addEventListener("mouseup",c,!1),document.addEventListener("mousemove",u,!1)})}getScrollOffset(){return this.viewportOffset/this.maxViewportOffset*this.maxScrollOffset}render(e,n,r){super.render(e,this.scrollbarCoords,r)}updateScrollbar(e,n){const r=this.config.scrollbarPadding,i=this.config.scrollbarSize,o=this.scrollDirection=="horizontal"?"width":"height",a=Math.min(1,e[o]/n[o]),s=e[o]-2*r,l=a*s;this.maxScrollOffset=s-l,this.maxViewportOffset=n[o]-e[o],this.viewportOffset=Xd(this.viewportOffset,0,this.maxViewportOffset),this.scrollbarCoords=this.scrollDirection=="vertical"?new fr(()=>e.x+e.width-i-r,()=>e.y+r+this.getScrollOffset(),()=>i,()=>l):new fr(()=>e.x+r+this.getScrollOffset(),()=>e.y+e.height-i-r,()=>l,()=>i)}}class d0 extends OP{constructor(e,n,r,i,o){super(e,n,r,i,o,m0(e)?e.columns:Cu(e)?1:1/0),this.spec=e}async initializeChildren(){const e=this.spec,n=m0(e)?e.concat:Cu(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(n.map((r,i)=>this.context.createOrImportView(r,this,this,"grid"+i)))),await this.createAxes()}getDefaultResolution(e,n){return n=="axis"?"independent":Cu(this.spec)&&e==="x"||vx(this.spec)&&e==="y"?"shared":"independent"}}const xx="viewRoot";class GP{constructor(e={}){ue(this,Pa,new Map);this.options={allowImport:!0,wrapRoot:!0,...e};const n=r=>(i,o,a,s,l)=>new r(i,o,a,s,i.name??l);this.addViewType(g0,n(Vs)),this.addViewType(p0,n(Yt)),this.addViewType(Cu,n(d0)),this.addViewType(vx,n(d0)),this.addViewType(m0,n(d0)),this.addViewType(VP,()=>{throw new Error("SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!")})}addViewType(e,n){X(this,Pa).set(e,n)}createView(e,n,r,i,o){for(const[a,s]of X(this,Pa))if(a(e))return s(e,n,r,i,o);throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=[...X(this,Pa).keys()].filter(r=>r(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}async createOrImportView(e,n,r,i,o,a){let s;if(HP(e))if(this.options.allowImport)s=await YR(e,i.getBaseUrl(),n),a&&a(s);else throw new ji("Importing views is not allowed!",r);else s=e;!i&&this.options.wrapRoot&&(p0(s)||g0(s))&&o===xx&&(s={name:"implicitRoot",vconcat:[s]});const l=this.createView(s,n,r,i,o);return l instanceof qi&&await l.initializeChildren(),l}}Pa=new WeakMap;function p0(t){return"mark"in t&&(Ye(t.mark)||Wt(t.mark))}function g0(t){return"layer"in t&&Wt(t.layer)}function HP(t){return"import"in t}function Cu(t){return"vconcat"in t&&qt(t.vconcat)}function vx(t){return"hconcat"in t&&qt(t.hconcat)}function m0(t){return"concat"in t&&qt(t.concat)}function VP(t){return"samples"in t&&Wt(t.samples)&&"spec"in t&&Wt(t.spec)}Qm("fasta",lP);class jP{constructor(e,n,r={}){this.container=e;const i=document.createElement("style");i.innerHTML=h8,e.appendChild(i),this.spec=n,this.accessorFactory=new JT,this.viewFactory=new GP,this.namedDataProviders=[],this.animator=new nP(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new uP(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this._extraBroadcastListeners=new Map,this.tooltipHandlers={default:yP,refseqgene:hP,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n),a0(r.hosts),this.animator.requestRender()}broadcast(e,n){var i;const r={type:e,payload:n};this.viewRoot.visit(o=>o.handleBroadcast(r)),(i=this._extraBroadcastListeners.get(e))==null||i.forEach(o=>o(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new gB(this.container,()=>this.viewRoot?QR(this.viewRoot):{width:void 0,height:void 0},this.spec.background),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='
Loading...
',this.container.appendChild(this.loadingMessageElement),this.tooltip=new p8(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new rP(this.spec.baseUrl),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new rx,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new aP(this._glHelper),get devicePixelRatio(){return e._glHelper.dpr},requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(l,f)=>{document.addEventListener(l,f);let u=this._keyboardListeners.get(l);u||(u=[],this._keyboardListeners.set(l,u)),u.push(f)},addBroadcastListener(l,f){const u=e._extraBroadcastListeners;let c=u.get(l);c||(c=new Set,u.set(l,c)),c.add(f)},removeBroadcastListener(l,f){var c;(c=e._extraBroadcastListeners.get(l))==null||c.delete(f)},isViewConfiguredVisible:e.viewVisibilityPredicate,isViewSpec:l=>e.viewFactory.isViewSpec(l),createView:function(l,f,u,c){return e.viewFactory.createView(l,n,f,u,c)},createOrImportView:async function(l,f,u,c,h){return e.viewFactory.createOrImportView(l,n,f,u,c,h)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(l=>r.datasets[l]),this.viewRoot=await n.createOrImportView(r,null,null,xx),$R(this.viewRoot),ZR(this.viewRoot);const i=this.viewRoot.getDescendants();i.forEach(l=>l.configureViewOpacity()),this._glHelper.invalidateSize();const o=i.filter(l=>l instanceof Yt),a=GR(this.viewRoot,n.dataFlow);WR(a),this.broadcast("dataFlowBuilt",a),o.forEach(l=>l.mark.initializeEncoders());const s=Promise.all(o.map(l=>l.mark.initializeGraphics()));for(const l of o)a.addObserver(f=>{l.mark.initializeData(),l.mark.updateGraphicsData()},l);await n.fontManager.waitUntilReady(),a.initialize(),await Promise.all(a.dataSources.map(l=>l.load())),a0(this.viewRoot),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(l=>{for(const f of Object.values(l.resolutions.scale))this._glHelper.createRangeTexture(f)});for(const l of o)l.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(l=>yu(l,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),qP(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),a=new JR(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=l=>{this.viewRoot.propagateInteractionEvent(new KR(a,l)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(a.x,a.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const l=r;if(Math.abs(l.deltaX)>Math.abs(l.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const f=cP(l);this._wheelInertia.setMomentum(l.deltaY*(l.deltaMode?80:1),u=>{const c=new WheelEvent("wheel",{...f,deltaMode:0,deltaX:0,deltaY:u});s(c)}),l.preventDefault();return}}if(r.type=="click"){const l=this._currentHover?{type:r.type,viewPath:this._currentHover.mark.unitView.getLayoutAncestors().map(f=>f.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(f=>f(l))}s(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(a=>{if(a instanceof Yt){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(l=>{s(l)==i&&(this._currentHover={mark:a.mark,datum:l,uniqueId:i})})}if(this._currentHover)return Ls}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{if(!a.isPickingParticipant())return;const l=a.properties.tooltip;if(l!==null){const f=(l==null?void 0:l.handler)??"default",u=this.tooltipHandlers[f];if(!u)throw new Error("No such tooltip handler: "+f);return u(s,a,l==null?void 0:l.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new sx({picking:!1},this._glHelper),this._pickingContext=new sx({picking:!0},this._glHelper),e.render(new XR(this._renderingContext,this._pickingContext),fr.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.render(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.render(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof Yt&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function qP(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}async function WP(t,e,n={}){let r;if(Ye(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const o=Wt(e)?e:await ZP(e);if(o.baseUrl??(o.baseUrl=""),o.width??(o.width="container"),o.padding??(o.padding=10),r==document.body){const a=document.createElement("div");a.style.position="fixed",a.style.inset="0",a.style.overflow="hidden",r.appendChild(a),r=a}i=new jP(r,o,n),$P(i,n),await i.launch()}catch(o){r.innerText=o.toString(),console.error(o)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(o,a){const s=i._eventListeners;let l=s.get(o);l||(l=new Set,s.set(o,l)),l.add(a)},removeEventListener(o,a){var l;(l=i._eventListeners.get(o))==null||l.delete(a)},getScaleResolutionByName(o){return i.getNamedScaleResolutions().get(o)},updateNamedData:i.updateNamedData.bind(i)}}function $P(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function ZP(t){let e;try{e=JSON.parse(await vl().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}/** * @license * Copyright 2019 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const Tu=globalThis,b0=Tu.ShadowRoot&&(Tu.ShadyCSS===void 0||Tu.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,y0=Symbol(),Ex=new WeakMap;let _x=class{constructor(t,n,r){if(this._$cssResult$=!0,r!==y0)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=n}get styleSheet(){let t=this.o;const n=this.t;if(b0&&t===void 0){const r=n!==void 0&&n.length===1;r&&(t=Ex.get(n)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&Ex.set(n,t))}return t}toString(){return this.cssText}};const $5=e=>new _x(typeof e=="string"?e:e+"",void 0,y0),Z5=(e,...t)=>{const n=e.length===1?e[0]:t.reduce((r,i,o)=>r+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+e[o+1],e[0]);return new _x(n,e,y0)},Y5=(e,t)=>{if(b0)e.adoptedStyleSheets=t.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of t){const r=document.createElement("style"),i=Tu.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,e.appendChild(r)}},Sx=b0?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let n="";for(const r of t.cssRules)n+=r.cssText;return $5(n)})(e):e;/** + */const Tu=globalThis,b0=Tu.ShadowRoot&&(Tu.ShadyCSS===void 0||Tu.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,y0=Symbol(),Ax=new WeakMap;let Ex=class{constructor(e,n,r){if(this._$cssResult$=!0,r!==y0)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=n}get styleSheet(){let e=this.o;const n=this.t;if(b0&&e===void 0){const r=n!==void 0&&n.length===1;r&&(e=Ax.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&Ax.set(n,e))}return e}toString(){return this.cssText}};const YP=t=>new Ex(typeof t=="string"?t:t+"",void 0,y0),QP=(t,...e)=>{const n=t.length===1?t[0]:e.reduce((r,i,o)=>r+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[o+1],t[0]);return new Ex(n,t,y0)},XP=(t,e)=>{if(b0)t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of e){const r=document.createElement("style"),i=Tu.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)}},_x=b0?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return YP(n)})(t):t;/** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const{is:Q5,defineProperty:X5,getOwnPropertyDescriptor:K5,getOwnPropertyNames:J5,getOwnPropertySymbols:eP,getPrototypeOf:tP}=Object,Wr=globalThis,Cx=Wr.trustedTypes,nP=Cx?Cx.emptyScript:"",w0=Wr.reactiveElementPolyfillSupport,js=(e,t)=>e,x0={toAttribute(e,t){switch(t){case Boolean:e=e?nP: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}},Tx=(e,t)=>!Q5(e,t),kx={attribute:!0,type:String,converter:x0,reflect:!1,hasChanged:Tx};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Wr.litPropertyMetadata??(Wr.litPropertyMetadata=new WeakMap);class $o extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,n=kx){if(n.state&&(n.attribute=!1),this._$Ei(),this.elementProperties.set(t,n),!n.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(t,r,n);i!==void 0&&X5(this.prototype,t,i)}}static getPropertyDescriptor(t,n,r){const{get:i,set:o}=K5(this.prototype,t)??{get(){return this[n]},set(a){this[n]=a}};return{get(){return i==null?void 0:i.call(this)},set(a){const s=i==null?void 0:i.call(this);o.call(this,a),this.requestUpdate(t,s,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??kx}static _$Ei(){if(this.hasOwnProperty(js("elementProperties")))return;const t=tP(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(js("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(js("properties"))){const n=this.properties,r=[...J5(n),...eP(n)];for(const i of r)this.createProperty(i,n[i])}const t=this[Symbol.metadata];if(t!==null){const n=litPropertyMetadata.get(t);if(n!==void 0)for(const[r,i]of n)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[n,r]of this.elementProperties){const i=this._$Eu(n,r);i!==void 0&&this._$Eh.set(i,n)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const n=[];if(Array.isArray(t)){const r=new Set(t.flat(1/0).reverse());for(const i of r)n.unshift(Sx(i))}else t!==void 0&&n.push(Sx(t));return n}static _$Eu(t,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$Eg=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$ES(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(n=>n(this))}addController(t){var n;(this._$E_??(this._$E_=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((n=t.hostConnected)==null||n.call(t))}removeController(t){var n;(n=this._$E_)==null||n.delete(t)}_$ES(){const t=new Map,n=this.constructor.elementProperties;for(const r of n.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Y5(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$E_)==null||t.forEach(n=>{var r;return(r=n.hostConnected)==null?void 0:r.call(n)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$E_)==null||t.forEach(n=>{var r;return(r=n.hostDisconnected)==null?void 0:r.call(n)})}attributeChangedCallback(t,n,r){this._$AK(t,r)}_$EO(t,n){var o;const r=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,r);if(i!==void 0&&r.reflect===!0){const a=(((o=r.converter)==null?void 0:o.toAttribute)!==void 0?r.converter:x0).toAttribute(n,r.type);this._$Em=t,a==null?this.removeAttribute(i):this.setAttribute(i,a),this._$Em=null}}_$AK(t,n){var o;const r=this.constructor,i=r._$Eh.get(t);if(i!==void 0&&this._$Em!==i){const a=r.getPropertyOptions(i),s=typeof a.converter=="function"?{fromAttribute:a.converter}:((o=a.converter)==null?void 0:o.fromAttribute)!==void 0?a.converter:x0;this._$Em=i,this[i]=s.fromAttribute(n,a.type),this._$Em=null}}requestUpdate(t,n,r,i=!1,o){if(t!==void 0){if(r??(r=this.constructor.getPropertyOptions(t)),!(r.hasChanged??Tx)(i?o:this[t],n))return;this.C(t,n,r)}this.isUpdatePending===!1&&(this._$Eg=this._$EP())}C(t,n,r){this._$AL.has(t)||this._$AL.set(t,n),r.reflect===!0&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$EP(){this.isUpdatePending=!0;try{await this._$Eg}catch(n){Promise.reject(n)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[o,a]of this._$Ep)this[o]=a;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[o,a]of i)a.wrapped!==!0||this._$AL.has(o)||this[o]===void 0||this.C(o,this[o],a)}let t=!1;const n=this._$AL;try{t=this.shouldUpdate(n),t?(this.willUpdate(n),(r=this._$E_)==null||r.forEach(i=>{var o;return(o=i.hostUpdate)==null?void 0:o.call(i)}),this.update(n)):this._$ET()}catch(i){throw t=!1,this._$ET(),i}t&&this._$AE(n)}willUpdate(t){}_$AE(t){var n;(n=this._$E_)==null||n.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$ET(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Eg}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(n=>this._$EO(n,this[n]))),this._$ET()}updated(t){}firstUpdated(t){}}$o.elementStyles=[],$o.shadowRootOptions={mode:"open"},$o[js("elementProperties")]=new Map,$o[js("finalized")]=new Map,w0==null||w0({ReactiveElement:$o}),(Wr.reactiveElementVersions??(Wr.reactiveElementVersions=[])).push("2.0.2");/** + */const{is:KP,defineProperty:JP,getOwnPropertyDescriptor:e5,getOwnPropertyNames:t5,getOwnPropertySymbols:n5,getPrototypeOf:r5}=Object,Wr=globalThis,Sx=Wr.trustedTypes,i5=Sx?Sx.emptyScript:"",w0=Wr.reactiveElementPolyfillSupport,js=(t,e)=>t,x0={toAttribute(t,e){switch(e){case Boolean:t=t?i5:null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let n=t;switch(e){case Boolean:n=t!==null;break;case Number:n=t===null?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch{n=null}}return n}},Cx=(t,e)=>!KP(t,e),Tx={attribute:!0,type:String,converter:x0,reflect:!1,hasChanged:Cx};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Wr.litPropertyMetadata??(Wr.litPropertyMetadata=new WeakMap);class $o extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??(this.l=[])).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,n=Tx){if(n.state&&(n.attribute=!1),this._$Ei(),this.elementProperties.set(e,n),!n.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(e,r,n);i!==void 0&&JP(this.prototype,e,i)}}static getPropertyDescriptor(e,n,r){const{get:i,set:o}=e5(this.prototype,e)??{get(){return this[n]},set(a){this[n]=a}};return{get(){return i==null?void 0:i.call(this)},set(a){const s=i==null?void 0:i.call(this);o.call(this,a),this.requestUpdate(e,s,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Tx}static _$Ei(){if(this.hasOwnProperty(js("elementProperties")))return;const e=r5(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(js("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(js("properties"))){const n=this.properties,r=[...t5(n),...n5(n)];for(const i of r)this.createProperty(i,n[i])}const e=this[Symbol.metadata];if(e!==null){const n=litPropertyMetadata.get(e);if(n!==void 0)for(const[r,i]of n)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[n,r]of this.elementProperties){const i=this._$Eu(n,r);i!==void 0&&this._$Eh.set(i,n)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const n=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)n.unshift(_x(i))}else e!==void 0&&n.push(_x(e));return n}static _$Eu(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r: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(){var e;this._$Eg=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$ES(),this.requestUpdate(),(e=this.constructor.l)==null||e.forEach(n=>n(this))}addController(e){var n;(this._$E_??(this._$E_=new Set)).add(e),this.renderRoot!==void 0&&this.isConnected&&((n=e.hostConnected)==null||n.call(e))}removeController(e){var n;(n=this._$E_)==null||n.delete(e)}_$ES(){const e=new Map,n=this.constructor.elementProperties;for(const r of n.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return XP(e,this.constructor.elementStyles),e}connectedCallback(){var e;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$E_)==null||e.forEach(n=>{var r;return(r=n.hostConnected)==null?void 0:r.call(n)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$E_)==null||e.forEach(n=>{var r;return(r=n.hostDisconnected)==null?void 0:r.call(n)})}attributeChangedCallback(e,n,r){this._$AK(e,r)}_$EO(e,n){var o;const r=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,r);if(i!==void 0&&r.reflect===!0){const a=(((o=r.converter)==null?void 0:o.toAttribute)!==void 0?r.converter:x0).toAttribute(n,r.type);this._$Em=e,a==null?this.removeAttribute(i):this.setAttribute(i,a),this._$Em=null}}_$AK(e,n){var o;const r=this.constructor,i=r._$Eh.get(e);if(i!==void 0&&this._$Em!==i){const a=r.getPropertyOptions(i),s=typeof a.converter=="function"?{fromAttribute:a.converter}:((o=a.converter)==null?void 0:o.fromAttribute)!==void 0?a.converter:x0;this._$Em=i,this[i]=s.fromAttribute(n,a.type),this._$Em=null}}requestUpdate(e,n,r,i=!1,o){if(e!==void 0){if(r??(r=this.constructor.getPropertyOptions(e)),!(r.hasChanged??Cx)(i?o:this[e],n))return;this.C(e,n,r)}this.isUpdatePending===!1&&(this._$Eg=this._$EP())}C(e,n,r){this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$Em!==e&&(this._$Ej??(this._$Ej=new Set)).add(e)}async _$EP(){this.isUpdatePending=!0;try{await this._$Eg}catch(n){Promise.reject(n)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[o,a]of this._$Ep)this[o]=a;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[o,a]of i)a.wrapped!==!0||this._$AL.has(o)||this[o]===void 0||this.C(o,this[o],a)}let e=!1;const n=this._$AL;try{e=this.shouldUpdate(n),e?(this.willUpdate(n),(r=this._$E_)==null||r.forEach(i=>{var o;return(o=i.hostUpdate)==null?void 0:o.call(i)}),this.update(n)):this._$ET()}catch(i){throw e=!1,this._$ET(),i}e&&this._$AE(n)}willUpdate(e){}_$AE(e){var n;(n=this._$E_)==null||n.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$ET(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Eg}shouldUpdate(e){return!0}update(e){this._$Ej&&(this._$Ej=this._$Ej.forEach(n=>this._$EO(n,this[n]))),this._$ET()}updated(e){}firstUpdated(e){}}$o.elementStyles=[],$o.shadowRootOptions={mode:"open"},$o[js("elementProperties")]=new Map,$o[js("finalized")]=new Map,w0==null||w0({ReactiveElement:$o}),(Wr.reactiveElementVersions??(Wr.reactiveElementVersions=[])).push("2.0.2");/** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */let qs=class extends $o{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var n;const t=super.createRenderRoot();return(n=this.renderOptions).renderBefore??(n.renderBefore=t.firstChild),t}update(t){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=xh(n,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return Ti}};qs._$litElement$=!0,qs.finalized=!0,(Y_=globalThis.litElementHydrateSupport)==null||Y_.call(globalThis,{LitElement:qs});const v0=globalThis.litElementPolyfillSupport;v0==null||v0({LitElement:qs}),(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.0.2");/** + */let qs=class extends $o{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var n;const e=super.createRenderRoot();return(n=this.renderOptions).renderBefore??(n.renderBefore=e.firstChild),e}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=xh(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Do)==null||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Do)==null||e.setConnected(!1)}render(){return Ti}};qs._$litElement$=!0,qs.finalized=!0,(Z_=globalThis.litElementHydrateSupport)==null||Z_.call(globalThis,{LitElement:qs});const v0=globalThis.litElementPolyfillSupport;v0==null||v0({LitElement:qs}),(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.0.2");/** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const Ix={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Dx=e=>(...t)=>({_$litDirective$:e,values:t});let Bx=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,n,r){this._$Ct=t,this._$AM=n,this._$Ci=r}_$AS(t,n){return this.update(t,n)}update(t,n){return this.render(...n)}};/** + */const Ix={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},kx=t=>(...e)=>({_$litDirective$:t,values:e});let Dx=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,n,r){this._$Ct=e,this._$AM=n,this._$Ci=r}_$AS(e,n){return this.update(e,n)}update(e,n){return this.render(...n)}};/** * @license * Copyright 2018 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const Fx="important",rP=" !"+Fx,Rx=Dx(class extends Bx{constructor(e){var t;if(super(e),e.type!==Ix.ATTRIBUTE||e.name!=="style"||((t=e.strings)==null?void 0:t.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)=>{const 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]){const{style:n}=e.element;if(this.ut===void 0)return this.ut=new Set(Object.keys(t)),this.render(t);for(const r of this.ut)t[r]==null&&(this.ut.delete(r),r.includes("-")?n.removeProperty(r):n[r]=null);for(const r in t){const i=t[r];if(i!=null){this.ut.add(r);const o=typeof i=="string"&&i.endsWith(rP);r.includes("-")||o?n.setProperty(r,o?i.slice(0,-11):i,o?Fx:""):n[r]=i}}return Ti}});/** + */const Bx="important",o5=" !"+Bx,Fx=kx(class extends Dx{constructor(t){var e;if(super(t),t.type!==Ix.ATTRIBUTE||t.name!=="style"||((e=t.strings)==null?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.includes("-")?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.ut===void 0)return this.ut=new Set(Object.keys(e)),this.render(e);for(const r of this.ut)e[r]==null&&(this.ut.delete(r),r.includes("-")?n.removeProperty(r):n[r]=null);for(const r in e){const i=e[r];if(i!=null){this.ut.add(r);const o=typeof i=="string"&&i.endsWith(o5);r.includes("-")||o?n.setProperty(r,o?i.slice(0,-11):i,o?Bx:""):n[r]=i}}return Ti}});/** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const iP=e=>e.strings===void 0;/** + */const a5=t=>t.strings===void 0;/** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const Ws=(e,t)=>{var r;const n=e._$AN;if(n===void 0)return!1;for(const i of n)(r=i._$AO)==null||r.call(i,t,!1),Ws(i,t);return!0},ku=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while((n==null?void 0:n.size)===0)},Px=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),sP(t)}};function oP(e){this._$AN!==void 0?(ku(this),this._$AM=e,Px(this)):this._$AM=e}function aP(e,t=!1,n=0){const r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let o=n;o{e.type==Ix.CHILD&&(e._$AP??(e._$AP=aP),e._$AQ??(e._$AQ=oP))};class lP extends Bx{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,n,r){super._$AT(t,n,r),Px(this),this.isConnected=t._$AU}_$AO(t,n=!0){var r,i;t!==this.isConnected&&(this.isConnected=t,t?(r=this.reconnected)==null||r.call(this):(i=this.disconnected)==null||i.call(this)),n&&(Ws(this,t),ku(this))}setValue(t){if(iP(this._$Ct))this._$Ct._$AI(t,this);else{const n=[...this._$Ct._$AH];n[this._$Ci]=t,this._$Ct._$AI(n,this,0)}}disconnected(){}reconnected(){}}/** + */const Ws=(t,e)=>{var r;const n=t._$AN;if(n===void 0)return!1;for(const i of n)(r=i._$AO)==null||r.call(i,e,!1),Ws(i,e);return!0},Iu=t=>{let e,n;do{if((e=t._$AM)===void 0)break;n=e._$AN,n.delete(t),t=e}while((n==null?void 0:n.size)===0)},Rx=t=>{for(let e;e=t._$AM;t=e){let n=e._$AN;if(n===void 0)e._$AN=n=new Set;else if(n.has(t))break;n.add(t),l5(e)}};function s5(t){this._$AN!==void 0?(Iu(this),this._$AM=t,Rx(this)):this._$AM=t}function f5(t,e=!1,n=0){const r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(e)if(Array.isArray(r))for(let o=n;o{t.type==Ix.CHILD&&(t._$AP??(t._$AP=f5),t._$AQ??(t._$AQ=s5))};class u5 extends Dx{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),Rx(this),this.isConnected=e._$AU}_$AO(e,n=!0){var r,i;e!==this.isConnected&&(this.isConnected=e,e?(r=this.reconnected)==null||r.call(this):(i=this.disconnected)==null||i.call(this)),n&&(Ws(this,e),Iu(this))}setValue(e){if(a5(this._$Ct))this._$Ct._$AI(e,this);else{const n=[...this._$Ct._$AH];n[this._$Ci]=e,this._$Ct._$AI(n,this,0)}}disconnected(){}reconnected(){}}/** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const fP=()=>new uP;class uP{}const A0=new WeakMap,cP=Dx(class extends lP{render(e){return Xe}update(e,[t]){var r;const n=t!==this.G;return n&&this.G!==void 0&&this.ot(void 0),(n||this.rt!==this.lt)&&(this.G=t,this.ct=(r=e.options)==null?void 0:r.host,this.ot(this.lt=e.element)),Xe}ot(e){if(typeof this.G=="function"){const t=this.ct??globalThis;let n=A0.get(t);n===void 0&&(n=new WeakMap,A0.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ct,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ct,e)}else this.G.value=e}get rt(){var e,t;return typeof this.G=="function"?(e=A0.get(this.ct??globalThis))==null?void 0:e.get(this.G):(t=this.G)==null?void 0:t.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});function Mx(){const e=document.querySelector("meta[name='base_url']").getAttribute("content");return e||console.error('No found!'),e}async function hP(e,t){const r=`${Mx()}/data/`;try{t.baseUrl=t.baseUrl||r,await j5(e,t,{bare:!0})}catch(i){const o=document.createElement("pre");o.innerText=i.toString(),e.appendChild(o)}}class Ox extends qs{static get styles(){return Z5` + */const c5=()=>new h5;class h5{}const A0=new WeakMap,d5=kx(class extends u5{render(t){return Xe}update(t,[e]){var r;const n=e!==this.G;return n&&this.G!==void 0&&this.ot(void 0),(n||this.rt!==this.lt)&&(this.G=e,this.ct=(r=t.options)==null?void 0:r.host,this.ot(this.lt=t.element)),Xe}ot(t){if(typeof this.G=="function"){const e=this.ct??globalThis;let n=A0.get(e);n===void 0&&(n=new WeakMap,A0.set(e,n)),n.get(this.G)!==void 0&&this.G.call(this.ct,void 0),n.set(this.G,t),t!==void 0&&this.G.call(this.ct,t)}else this.G.value=t}get rt(){var t,e;return typeof this.G=="function"?(t=A0.get(this.ct??globalThis))==null?void 0:t.get(this.G):(e=this.G)==null?void 0:e.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});function Px(){const t=document.querySelector("meta[name='base_url']").getAttribute("content");return t||console.error('No found!'),t}async function p5(t,e){const r=`${Px()}/data/`;try{e.baseUrl=e.baseUrl||r,await WP(t,e,{bare:!0})}catch(i){const o=document.createElement("pre");o.innerText=i.toString(),t.appendChild(o)}}class Mx extends qs{static get styles(){return QP` .show-spec { font-size: 70%; text-align: center; @@ -1537,18 +1608,18 @@ Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#] color: #3f51b5; text-decoration: none; } - `}static get properties(){return{height:{type:String},specHidden:{type:Boolean}}}constructor(){super(),this.height=300,this.specHidden=!1,this.embedRef=fP()}render(){return wn` - + `}static get properties(){return{height:{type:String},specHidden:{type:Boolean}}}constructor(){super(),this.height=300,this.specHidden=!1,this.embedRef=c5()}render(){return wn` +
${this.specHidden?wn`
@@ -1556,22 +1627,22 @@ Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]
- `}firstUpdated(){var n;const t=(n=this.shadowRoot.querySelector("slot").assignedNodes().filter(r=>r instanceof HTMLElement)[0])==null?void 0:n.textContent;if(t){const r=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const a=o.target;hP(a,JSON.parse(t)),r.unobserve(a)}})});setTimeout(()=>r.observe(this.embedRef.value),80)}}}customElements.define("genome-spy-doc-embed",Ox);var nn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function $s(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function dP(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}),n}var be={},Iu={};Iu.byteLength=mP,Iu.toByteArray=yP,Iu.fromByteArray=vP;for(var Hn=[],rn=[],pP=typeof Uint8Array<"u"?Uint8Array:Array,E0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Zo=0,gP=E0.length;Zo0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");n===-1&&(n=t);var r=n===t?0:4-n%4;return[n,r]}function mP(e){var t=Nx(e),n=t[0],r=t[1];return(n+r)*3/4-r}function bP(e,t,n){return(t+n)*3/4-n}function yP(e){var t,n=Nx(e),r=n[0],i=n[1],o=new pP(bP(e,r,i)),a=0,s=i>0?r-4:r,f;for(f=0;f>16&255,o[a++]=t>>8&255,o[a++]=t&255;return i===2&&(t=rn[e.charCodeAt(f)]<<2|rn[e.charCodeAt(f+1)]>>4,o[a++]=t&255),i===1&&(t=rn[e.charCodeAt(f)]<<10|rn[e.charCodeAt(f+1)]<<4|rn[e.charCodeAt(f+2)]>>2,o[a++]=t>>8&255,o[a++]=t&255),o}function wP(e){return Hn[e>>18&63]+Hn[e>>12&63]+Hn[e>>6&63]+Hn[e&63]}function xP(e,t,n){for(var r,i=[],o=t;os?s:a+o));return r===1?(t=e[n-1],i.push(Hn[t>>2]+Hn[t<<4&63]+"==")):r===2&&(t=(e[n-2]<<8)+e[n-1],i.push(Hn[t>>10]+Hn[t>>4&63]+Hn[t<<2&63]+"=")),i.join("")}var _0={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */_0.read=function(e,t,n,r,i){var o,a,s=i*8-r-1,f=(1<>1,u=-7,c=n?i-1:0,h=n?-1:1,d=e[t+c];for(c+=h,o=d&(1<<-u)-1,d>>=-u,u+=s;u>0;o=o*256+e[t+c],c+=h,u-=8);for(a=o&(1<<-u)-1,o>>=-u,u+=r;u>0;a=a*256+e[t+c],c+=h,u-=8);if(o===0)o=1-l;else{if(o===f)return a?NaN:(d?-1:1)*(1/0);a=a+Math.pow(2,r),o=o-l}return(d?-1:1)*a*Math.pow(2,o-r)},_0.write=function(e,t,n,r,i,o){var a,s,f,l=o*8-i-1,u=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-a))<1&&(a--,f*=2),a+c>=1?t+=h/f:t+=h*Math.pow(2,1-c),t*f>=2&&(a++,f/=2),a+c>=u?(s=0,a=u):a+c>=1?(s=(t*f-1)*Math.pow(2,i),a=a+c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;e[n+d]=s&255,d+=p,s/=256,i-=8);for(a=a<0;e[n+d]=a&255,d+=p,a/=256,l-=8);e[n+d-p]|=b*128};/*! + `}firstUpdated(){var n;const e=(n=this.shadowRoot.querySelector("slot").assignedNodes().filter(r=>r instanceof HTMLElement)[0])==null?void 0:n.textContent;if(e){const r=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const a=o.target;p5(a,JSON.parse(e)),r.unobserve(a)}})});setTimeout(()=>r.observe(this.embedRef.value),80)}}}customElements.define("genome-spy-doc-embed",Mx);var nn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function $s(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function g5(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var be={},ku={};ku.byteLength=y5,ku.toByteArray=x5,ku.fromByteArray=E5;for(var Hn=[],rn=[],m5=typeof Uint8Array<"u"?Uint8Array:Array,E0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Zo=0,b5=E0.length;Zo0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");n===-1&&(n=e);var r=n===e?0:4-n%4;return[n,r]}function y5(t){var e=Ox(t),n=e[0],r=e[1];return(n+r)*3/4-r}function w5(t,e,n){return(e+n)*3/4-n}function x5(t){var e,n=Ox(t),r=n[0],i=n[1],o=new m5(w5(t,r,i)),a=0,s=i>0?r-4:r,l;for(l=0;l>16&255,o[a++]=e>>8&255,o[a++]=e&255;return i===2&&(e=rn[t.charCodeAt(l)]<<2|rn[t.charCodeAt(l+1)]>>4,o[a++]=e&255),i===1&&(e=rn[t.charCodeAt(l)]<<10|rn[t.charCodeAt(l+1)]<<4|rn[t.charCodeAt(l+2)]>>2,o[a++]=e>>8&255,o[a++]=e&255),o}function v5(t){return Hn[t>>18&63]+Hn[t>>12&63]+Hn[t>>6&63]+Hn[t&63]}function A5(t,e,n){for(var r,i=[],o=e;os?s:a+o));return r===1?(e=t[n-1],i.push(Hn[e>>2]+Hn[e<<4&63]+"==")):r===2&&(e=(t[n-2]<<8)+t[n-1],i.push(Hn[e>>10]+Hn[e>>4&63]+Hn[e<<2&63]+"=")),i.join("")}var _0={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */_0.read=function(t,e,n,r,i){var o,a,s=i*8-r-1,l=(1<>1,u=-7,c=n?i-1:0,h=n?-1:1,d=t[e+c];for(c+=h,o=d&(1<<-u)-1,d>>=-u,u+=s;u>0;o=o*256+t[e+c],c+=h,u-=8);for(a=o&(1<<-u)-1,o>>=-u,u+=r;u>0;a=a*256+t[e+c],c+=h,u-=8);if(o===0)o=1-f;else{if(o===l)return a?NaN:(d?-1:1)*(1/0);a=a+Math.pow(2,r),o=o-f}return(d?-1:1)*a*Math.pow(2,o-r)},_0.write=function(t,e,n,r,i,o){var a,s,l,f=o*8-i-1,u=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,b=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=u):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),a+c>=1?e+=h/l:e+=h*Math.pow(2,1-c),e*l>=2&&(a++,l/=2),a+c>=u?(s=0,a=u):a+c>=1?(s=(e*l-1)*Math.pow(2,i),a=a+c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;t[n+d]=s&255,d+=p,s/=256,i-=8);for(a=a<0;t[n+d]=a&255,d+=p,a/=256,f-=8);t[n+d-p]|=b*128};/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT - */(function(e){const t=Iu,n=_0,r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=s,e.SlowBuffer=S,e.INSPECT_MAX_BYTES=50;const i=2147483647;e.kMaxLength=i,s.TYPED_ARRAY_SUPPORT=o(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{const x=new Uint8Array(1),g={foo:function(){return 42}};return Object.setPrototypeOf(g,Uint8Array.prototype),Object.setPrototypeOf(x,g),x.foo()===42}catch{return!1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function a(x){if(x>i)throw new RangeError('The value "'+x+'" is invalid for option "size"');const g=new Uint8Array(x);return Object.setPrototypeOf(g,s.prototype),g}function s(x,g,m){if(typeof x=="number"){if(typeof g=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(x)}return f(x,g,m)}s.poolSize=8192;function f(x,g,m){if(typeof x=="string")return h(x,g);if(ArrayBuffer.isView(x))return p(x);if(x==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof x);if(_t(x,ArrayBuffer)||x&&_t(x.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(_t(x,SharedArrayBuffer)||x&&_t(x.buffer,SharedArrayBuffer)))return b(x,g,m);if(typeof x=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const T=x.valueOf&&x.valueOf();if(T!=null&&T!==x)return s.from(T,g,m);const F=y(x);if(F)return F;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof x[Symbol.toPrimitive]=="function")return s.from(x[Symbol.toPrimitive]("string"),g,m);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof x)}s.from=function(x,g,m){return f(x,g,m)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function l(x){if(typeof x!="number")throw new TypeError('"size" argument must be of type number');if(x<0)throw new RangeError('The value "'+x+'" is invalid for option "size"')}function u(x,g,m){return l(x),x<=0?a(x):g!==void 0?typeof m=="string"?a(x).fill(g,m):a(x).fill(g):a(x)}s.alloc=function(x,g,m){return u(x,g,m)};function c(x){return l(x),a(x<0?0:w(x)|0)}s.allocUnsafe=function(x){return c(x)},s.allocUnsafeSlow=function(x){return c(x)};function h(x,g){if((typeof g!="string"||g==="")&&(g="utf8"),!s.isEncoding(g))throw new TypeError("Unknown encoding: "+g);const m=C(x,g)|0;let T=a(m);const F=T.write(x,g);return F!==m&&(T=T.slice(0,F)),T}function d(x){const g=x.length<0?0:w(x.length)|0,m=a(g);for(let T=0;T=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return x|0}function S(x){return+x!=x&&(x=0),s.alloc(+x)}s.isBuffer=function(g){return g!=null&&g._isBuffer===!0&&g!==s.prototype},s.compare=function(g,m){if(_t(g,Uint8Array)&&(g=s.from(g,g.offset,g.byteLength)),_t(m,Uint8Array)&&(m=s.from(m,m.offset,m.byteLength)),!s.isBuffer(g)||!s.isBuffer(m))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(g===m)return 0;let T=g.length,F=m.length;for(let N=0,V=Math.min(T,F);NF.length?(s.isBuffer(V)||(V=s.from(V)),V.copy(F,N)):Uint8Array.prototype.set.call(F,V,N);else if(s.isBuffer(V))V.copy(F,N);else throw new TypeError('"list" argument must be an Array of Buffers');N+=V.length}return F};function C(x,g){if(s.isBuffer(x))return x.length;if(ArrayBuffer.isView(x)||_t(x,ArrayBuffer))return x.byteLength;if(typeof x!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof x);const m=x.length,T=arguments.length>2&&arguments[2]===!0;if(!T&&m===0)return 0;let F=!1;for(;;)switch(g){case"ascii":case"latin1":case"binary":return m;case"utf8":case"utf-8":return le(x).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return m*2;case"hex":return m>>>1;case"base64":return ui(x).length;default:if(F)return T?-1:le(x).length;g=(""+g).toLowerCase(),F=!0}}s.byteLength=C;function _(x,g,m){let T=!1;if((g===void 0||g<0)&&(g=0),g>this.length||((m===void 0||m>this.length)&&(m=this.length),m<=0)||(m>>>=0,g>>>=0,m<=g))return"";for(x||(x="utf8");;)switch(x){case"hex":return qe(this,g,m);case"utf8":case"utf-8":return de(this,g,m);case"ascii":return Be(this,g,m);case"latin1":case"binary":return Ke(this,g,m);case"base64":return ae(this,g,m);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Je(this,g,m);default:if(T)throw new TypeError("Unknown encoding: "+x);x=(x+"").toLowerCase(),T=!0}}s.prototype._isBuffer=!0;function I(x,g,m){const T=x[g];x[g]=x[m],x[m]=T}s.prototype.swap16=function(){const g=this.length;if(g%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let m=0;mm&&(g+=" ... "),""},r&&(s.prototype[r]=s.prototype.inspect),s.prototype.compare=function(g,m,T,F,N){if(_t(g,Uint8Array)&&(g=s.from(g,g.offset,g.byteLength)),!s.isBuffer(g))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof g);if(m===void 0&&(m=0),T===void 0&&(T=g?g.length:0),F===void 0&&(F=0),N===void 0&&(N=this.length),m<0||T>g.length||F<0||N>this.length)throw new RangeError("out of range index");if(F>=N&&m>=T)return 0;if(F>=N)return-1;if(m>=T)return 1;if(m>>>=0,T>>>=0,F>>>=0,N>>>=0,this===g)return 0;let V=N-F,fe=T-m;const Ue=Math.min(V,fe),Pe=this.slice(F,N),We=g.slice(m,T);for(let Se=0;Se2147483647?m=2147483647:m<-2147483648&&(m=-2147483648),m=+m,xr(m)&&(m=F?0:x.length-1),m<0&&(m=x.length+m),m>=x.length){if(F)return-1;m=x.length-1}else if(m<0)if(F)m=0;else return-1;if(typeof g=="string"&&(g=s.from(g,T)),s.isBuffer(g))return g.length===0?-1:k(x,g,m,T,F);if(typeof g=="number")return g=g&255,typeof Uint8Array.prototype.indexOf=="function"?F?Uint8Array.prototype.indexOf.call(x,g,m):Uint8Array.prototype.lastIndexOf.call(x,g,m):k(x,[g],m,T,F);throw new TypeError("val must be string, number or Buffer")}function k(x,g,m,T,F){let N=1,V=x.length,fe=g.length;if(T!==void 0&&(T=String(T).toLowerCase(),T==="ucs2"||T==="ucs-2"||T==="utf16le"||T==="utf-16le")){if(x.length<2||g.length<2)return-1;N=2,V/=2,fe/=2,m/=2}function Ue(We,Se){return N===1?We[Se]:We.readUInt16BE(Se*N)}let Pe;if(F){let We=-1;for(Pe=m;PeV&&(m=V-fe),Pe=m;Pe>=0;Pe--){let We=!0;for(let Se=0;SeF&&(T=F)):T=F;const N=g.length;T>N/2&&(T=N/2);let V;for(V=0;V>>0,isFinite(T)?(T=T>>>0,F===void 0&&(F="utf8")):(F=T,T=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const N=this.length-m;if((T===void 0||T>N)&&(T=N),g.length>0&&(T<0||m<0)||m>this.length)throw new RangeError("Attempt to write outside buffer bounds");F||(F="utf8");let V=!1;for(;;)switch(F){case"hex":return R(this,g,m,T);case"utf8":case"utf-8":return M(this,g,m,T);case"ascii":case"latin1":case"binary":return j(this,g,m,T);case"base64":return L(this,g,m,T);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ne(this,g,m,T);default:if(V)throw new TypeError("Unknown encoding: "+F);F=(""+F).toLowerCase(),V=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function ae(x,g,m){return g===0&&m===x.length?t.fromByteArray(x):t.fromByteArray(x.slice(g,m))}function de(x,g,m){m=Math.min(x.length,m);const T=[];let F=g;for(;F239?4:N>223?3:N>191?2:1;if(F+fe<=m){let Ue,Pe,We,Se;switch(fe){case 1:N<128&&(V=N);break;case 2:Ue=x[F+1],(Ue&192)===128&&(Se=(N&31)<<6|Ue&63,Se>127&&(V=Se));break;case 3:Ue=x[F+1],Pe=x[F+2],(Ue&192)===128&&(Pe&192)===128&&(Se=(N&15)<<12|(Ue&63)<<6|Pe&63,Se>2047&&(Se<55296||Se>57343)&&(V=Se));break;case 4:Ue=x[F+1],Pe=x[F+2],We=x[F+3],(Ue&192)===128&&(Pe&192)===128&&(We&192)===128&&(Se=(N&15)<<18|(Ue&63)<<12|(Pe&63)<<6|We&63,Se>65535&&Se<1114112&&(V=Se))}}V===null?(V=65533,fe=1):V>65535&&(V-=65536,T.push(V>>>10&1023|55296),V=56320|V&1023),T.push(V),F+=fe}return Qe(T)}const Ie=4096;function Qe(x){const g=x.length;if(g<=Ie)return String.fromCharCode.apply(String,x);let m="",T=0;for(;TT)&&(m=T);let F="";for(let N=g;NT&&(g=T),m<0?(m+=T,m<0&&(m=0)):m>T&&(m=T),mm)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(g,m,T){g=g>>>0,m=m>>>0,T||Ee(g,m,this.length);let F=this[g],N=1,V=0;for(;++V>>0,m=m>>>0,T||Ee(g,m,this.length);let F=this[g+--m],N=1;for(;m>0&&(N*=256);)F+=this[g+--m]*N;return F},s.prototype.readUint8=s.prototype.readUInt8=function(g,m){return g=g>>>0,m||Ee(g,1,this.length),this[g]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(g,m){return g=g>>>0,m||Ee(g,2,this.length),this[g]|this[g+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(g,m){return g=g>>>0,m||Ee(g,2,this.length),this[g]<<8|this[g+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+this[g+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),this[g]*16777216+(this[g+1]<<16|this[g+2]<<8|this[g+3])},s.prototype.readBigUInt64LE=Vt(function(g){g=g>>>0,G(g,"offset");const m=this[g],T=this[g+7];(m===void 0||T===void 0)&&W(g,this.length-8);const F=m+this[++g]*2**8+this[++g]*2**16+this[++g]*2**24,N=this[++g]+this[++g]*2**8+this[++g]*2**16+T*2**24;return BigInt(F)+(BigInt(N)<>>0,G(g,"offset");const m=this[g],T=this[g+7];(m===void 0||T===void 0)&&W(g,this.length-8);const F=m*2**24+this[++g]*2**16+this[++g]*2**8+this[++g],N=this[++g]*2**24+this[++g]*2**16+this[++g]*2**8+T;return(BigInt(F)<>>0,m=m>>>0,T||Ee(g,m,this.length);let F=this[g],N=1,V=0;for(;++V=N&&(F-=Math.pow(2,8*m)),F},s.prototype.readIntBE=function(g,m,T){g=g>>>0,m=m>>>0,T||Ee(g,m,this.length);let F=m,N=1,V=this[g+--F];for(;F>0&&(N*=256);)V+=this[g+--F]*N;return N*=128,V>=N&&(V-=Math.pow(2,8*m)),V},s.prototype.readInt8=function(g,m){return g=g>>>0,m||Ee(g,1,this.length),this[g]&128?(255-this[g]+1)*-1:this[g]},s.prototype.readInt16LE=function(g,m){g=g>>>0,m||Ee(g,2,this.length);const T=this[g]|this[g+1]<<8;return T&32768?T|4294901760:T},s.prototype.readInt16BE=function(g,m){g=g>>>0,m||Ee(g,2,this.length);const T=this[g+1]|this[g]<<8;return T&32768?T|4294901760:T},s.prototype.readInt32LE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},s.prototype.readInt32BE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},s.prototype.readBigInt64LE=Vt(function(g){g=g>>>0,G(g,"offset");const m=this[g],T=this[g+7];(m===void 0||T===void 0)&&W(g,this.length-8);const F=this[g+4]+this[g+5]*2**8+this[g+6]*2**16+(T<<24);return(BigInt(F)<>>0,G(g,"offset");const m=this[g],T=this[g+7];(m===void 0||T===void 0)&&W(g,this.length-8);const F=(m<<24)+this[++g]*2**16+this[++g]*2**8+this[++g];return(BigInt(F)<>>0,m||Ee(g,4,this.length),n.read(this,g,!0,23,4)},s.prototype.readFloatBE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),n.read(this,g,!1,23,4)},s.prototype.readDoubleLE=function(g,m){return g=g>>>0,m||Ee(g,8,this.length),n.read(this,g,!0,52,8)},s.prototype.readDoubleBE=function(g,m){return g=g>>>0,m||Ee(g,8,this.length),n.read(this,g,!1,52,8)};function _e(x,g,m,T,F,N){if(!s.isBuffer(x))throw new TypeError('"buffer" argument must be a Buffer instance');if(g>F||gx.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(g,m,T,F){if(g=+g,m=m>>>0,T=T>>>0,!F){const fe=Math.pow(2,8*T)-1;_e(this,g,m,T,fe,0)}let N=1,V=0;for(this[m]=g&255;++V>>0,T=T>>>0,!F){const fe=Math.pow(2,8*T)-1;_e(this,g,m,T,fe,0)}let N=T-1,V=1;for(this[m+N]=g&255;--N>=0&&(V*=256);)this[m+N]=g/V&255;return m+T},s.prototype.writeUint8=s.prototype.writeUInt8=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,1,255,0),this[m]=g&255,m+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,2,65535,0),this[m]=g&255,this[m+1]=g>>>8,m+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,2,65535,0),this[m]=g>>>8,this[m+1]=g&255,m+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,4,4294967295,0),this[m+3]=g>>>24,this[m+2]=g>>>16,this[m+1]=g>>>8,this[m]=g&255,m+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,4,4294967295,0),this[m]=g>>>24,this[m+1]=g>>>16,this[m+2]=g>>>8,this[m+3]=g&255,m+4};function dt(x,g,m,T,F){v(g,T,F,x,m,7);let N=Number(g&BigInt(4294967295));x[m++]=N,N=N>>8,x[m++]=N,N=N>>8,x[m++]=N,N=N>>8,x[m++]=N;let V=Number(g>>BigInt(32)&BigInt(4294967295));return x[m++]=V,V=V>>8,x[m++]=V,V=V>>8,x[m++]=V,V=V>>8,x[m++]=V,m}function Gt(x,g,m,T,F){v(g,T,F,x,m,7);let N=Number(g&BigInt(4294967295));x[m+7]=N,N=N>>8,x[m+6]=N,N=N>>8,x[m+5]=N,N=N>>8,x[m+4]=N;let V=Number(g>>BigInt(32)&BigInt(4294967295));return x[m+3]=V,V=V>>8,x[m+2]=V,V=V>>8,x[m+1]=V,V=V>>8,x[m]=V,m+8}s.prototype.writeBigUInt64LE=Vt(function(g,m=0){return dt(this,g,m,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=Vt(function(g,m=0){return Gt(this,g,m,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(g,m,T,F){if(g=+g,m=m>>>0,!F){const Ue=Math.pow(2,8*T-1);_e(this,g,m,T,Ue-1,-Ue)}let N=0,V=1,fe=0;for(this[m]=g&255;++N>0)-fe&255;return m+T},s.prototype.writeIntBE=function(g,m,T,F){if(g=+g,m=m>>>0,!F){const Ue=Math.pow(2,8*T-1);_e(this,g,m,T,Ue-1,-Ue)}let N=T-1,V=1,fe=0;for(this[m+N]=g&255;--N>=0&&(V*=256);)g<0&&fe===0&&this[m+N+1]!==0&&(fe=1),this[m+N]=(g/V>>0)-fe&255;return m+T},s.prototype.writeInt8=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,1,127,-128),g<0&&(g=255+g+1),this[m]=g&255,m+1},s.prototype.writeInt16LE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,2,32767,-32768),this[m]=g&255,this[m+1]=g>>>8,m+2},s.prototype.writeInt16BE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,2,32767,-32768),this[m]=g>>>8,this[m+1]=g&255,m+2},s.prototype.writeInt32LE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,4,2147483647,-2147483648),this[m]=g&255,this[m+1]=g>>>8,this[m+2]=g>>>16,this[m+3]=g>>>24,m+4},s.prototype.writeInt32BE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),this[m]=g>>>24,this[m+1]=g>>>16,this[m+2]=g>>>8,this[m+3]=g&255,m+4},s.prototype.writeBigInt64LE=Vt(function(g,m=0){return dt(this,g,m,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=Vt(function(g,m=0){return Gt(this,g,m,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Ne(x,g,m,T,F,N){if(m+T>x.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("Index out of range")}function O(x,g,m,T,F){return g=+g,m=m>>>0,F||Ne(x,g,m,4),n.write(x,g,m,T,23,4),m+4}s.prototype.writeFloatLE=function(g,m,T){return O(this,g,m,!0,T)},s.prototype.writeFloatBE=function(g,m,T){return O(this,g,m,!1,T)};function P(x,g,m,T,F){return g=+g,m=m>>>0,F||Ne(x,g,m,8),n.write(x,g,m,T,52,8),m+8}s.prototype.writeDoubleLE=function(g,m,T){return P(this,g,m,!0,T)},s.prototype.writeDoubleBE=function(g,m,T){return P(this,g,m,!1,T)},s.prototype.copy=function(g,m,T,F){if(!s.isBuffer(g))throw new TypeError("argument should be a Buffer");if(T||(T=0),!F&&F!==0&&(F=this.length),m>=g.length&&(m=g.length),m||(m=0),F>0&&F=this.length)throw new RangeError("Index out of range");if(F<0)throw new RangeError("sourceEnd out of bounds");F>this.length&&(F=this.length),g.length-m>>0,T=T===void 0?this.length:T>>>0,g||(g=0);let N;if(typeof g=="number")for(N=m;N2**32?F=$(String(m)):typeof m=="bigint"&&(F=String(m),(m>BigInt(2)**BigInt(32)||m<-(BigInt(2)**BigInt(32)))&&(F=$(F)),F+="n"),T+=` It must be ${g}. Received ${F}`,T},RangeError);function $(x){let g="",m=x.length;const T=x[0]==="-"?1:0;for(;m>=T+4;m-=3)g=`_${x.slice(m-3,m)}${g}`;return`${x.slice(0,m)}${g}`}function E(x,g,m){G(g,"offset"),(x[g]===void 0||x[g+m]===void 0)&&W(g,x.length-(m+1))}function v(x,g,m,T,F,N){if(x>m||x3?g===0||g===BigInt(0)?fe=`>= 0${V} and < 2${V} ** ${(N+1)*8}${V}`:fe=`>= -(2${V} ** ${(N+1)*8-1}${V}) and < 2 ** ${(N+1)*8-1}${V}`:fe=`>= ${g}${V} and <= ${m}${V}`,new q.ERR_OUT_OF_RANGE("value",fe,x)}E(T,F,N)}function G(x,g){if(typeof x!="number")throw new q.ERR_INVALID_ARG_TYPE(g,"number",x)}function W(x,g,m){throw Math.floor(x)!==x?(G(x,m),new q.ERR_OUT_OF_RANGE(m||"offset","an integer",x)):g<0?new q.ERR_BUFFER_OUT_OF_BOUNDS:new q.ERR_OUT_OF_RANGE(m||"offset",`>= ${m?1:0} and <= ${g}`,x)}const se=/[^+/0-9A-Za-z-_]/g;function J(x){if(x=x.split("=")[0],x=x.trim().replace(se,""),x.length<2)return"";for(;x.length%4!==0;)x=x+"=";return x}function le(x,g){g=g||1/0;let m;const T=x.length;let F=null;const N=[];for(let V=0;V55295&&m<57344){if(!F){if(m>56319){(g-=3)>-1&&N.push(239,191,189);continue}else if(V+1===T){(g-=3)>-1&&N.push(239,191,189);continue}F=m;continue}if(m<56320){(g-=3)>-1&&N.push(239,191,189),F=m;continue}m=(F-55296<<10|m-56320)+65536}else F&&(g-=3)>-1&&N.push(239,191,189);if(F=null,m<128){if((g-=1)<0)break;N.push(m)}else if(m<2048){if((g-=2)<0)break;N.push(m>>6|192,m&63|128)}else if(m<65536){if((g-=3)<0)break;N.push(m>>12|224,m>>6&63|128,m&63|128)}else if(m<1114112){if((g-=4)<0)break;N.push(m>>18|240,m>>12&63|128,m>>6&63|128,m&63|128)}else throw new Error("Invalid code point")}return N}function Ht(x){const g=[];for(let m=0;m>8,F=m%256,N.push(F),N.push(T);return N}function ui(x){return t.toByteArray(J(x))}function ci(x,g,m,T){let F;for(F=0;F=g.length||F>=x.length);++F)g[F+m]=x[F];return F}function _t(x,g){return x instanceof g||x!=null&&x.constructor!=null&&x.constructor.name!=null&&x.constructor.name===g.name}function xr(x){return x!==x}const hi=function(){const x="0123456789abcdef",g=new Array(256);for(let m=0;m<16;++m){const T=m*16;for(let F=0;F<16;++F)g[T+F]=x[m]+x[F]}return g}();function Vt(x){return typeof BigInt>"u"?Jn:x}function Jn(){throw new Error("BigInt not supported")}})(be);const Lx=xe({__proto__:null,default:$s(be)},[be]),ct={},AP=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"})),S0=typeof window<"u"?window:typeof self<"u"?self:{fetch:void 0};class $i{async getBufferFromResponse(t){if(typeof t.buffer=="function")return t.buffer();if(typeof t.arrayBuffer=="function"){const n=await t.arrayBuffer();return be.Buffer.from(n)}else throw new TypeError("invalid HTTP response object, has no buffer method, and no arrayBuffer method")}constructor(t,n={}){this.baseOverrides={},this.url=t;const r=n.fetch||S0.fetch&&S0.fetch.bind(S0);if(!r)throw new TypeError("no fetch function supplied, and none found in global environment");n.overrides&&(this.baseOverrides=n.overrides),this.fetchImplementation=r}async fetch(t,n){let r;try{r=await this.fetchImplementation(t,n)}catch(i){if(`${i}`.includes("Failed to fetch"))console.warn(`generic-filehandle: refetching ${t} to attempt to work around chrome CORS header caching bug`),r=await this.fetchImplementation(t,{...n,cache:"reload"});else throw i}return r}async read(t,n=0,r,i=0,o={}){const{headers:a={},signal:s,overrides:f={}}=o;r<1/0?a.range=`bytes=${i}-${i+r}`:r===1/0&&i!==0&&(a.range=`bytes=${i}-`);const l={...this.baseOverrides,...f,headers:{...a,...f.headers,...this.baseOverrides.headers},method:"GET",redirect:"follow",mode:"cors",signal:s},u=await this.fetch(this.url,l);if(!u.ok)throw new Error(`HTTP ${u.status} ${u.statusText} ${this.url}`);if(u.status===200&&i===0||u.status===206){const c=await this.getBufferFromResponse(u),h=c.copy(t,n,0,Math.min(r,c.length)),d=u.headers.get("content-range"),p=/\/(\d+)$/.exec(d||"");return p&&p[1]&&(this._stat={size:parseInt(p[1],10)}),{bytesRead:h,buffer:t}}throw u.status===200?new Error("${this.url} fetch returned status 200, expected 206"):new Error(`HTTP ${u.status} fetching ${this.url}`)}async readFile(t={}){let n,r;typeof t=="string"?(n=t,r={}):(n=t.encoding,r=t,delete r.encoding);const{headers:i={},signal:o,overrides:a={}}=r,s={headers:i,method:"GET",redirect:"follow",mode:"cors",signal:o,...this.baseOverrides,...a},f=await this.fetch(this.url,s);if(!f)throw new Error("generic-filehandle failed to fetch");if(f.status!==200)throw Object.assign(new Error(`HTTP ${f.status} fetching ${this.url}`),{status:f.status});if(n==="utf8")return f.text();if(n)throw new Error(`unsupported encoding: ${n}`);return this.getBufferFromResponse(f)}async stat(){if(!this._stat){const t=be.Buffer.allocUnsafe(10);if(await this.read(t,0,10,0),!this._stat)throw new Error(`unable to determine size of file at ${this.url}`)}return this._stat}async close(){}}function zx(e){const t=new FileReader;return new Promise((n,r)=>{t.onerror=()=>{t.abort(),r(new Error("problem reading blob"))},t.onabort=()=>{r(new Error("blob reading was aborted"))},t.onload=()=>{t.result&&typeof t.result!="string"?n(t.result):r(new Error("unknown error reading blob"))},t.readAsArrayBuffer(e)})}function EP(e){const t=new FileReader;return new Promise((n,r)=>{t.onerror=()=>{t.abort(),r(new Error("problem reading blob"))},t.onabort=()=>{r(new Error("blob reading was aborted"))},t.onload=()=>{t.result&&typeof t.result=="string"?n(t.result):r(new Error("unknown error reading blob"))},t.readAsText(e)})}class _P{constructor(t){this.blob=t,this.size=t.size}async read(t,n=0,r,i=0){if(!r)return{bytesRead:0,buffer:t};const o=i,a=o+r,s=await zx(this.blob.slice(o,a)),f=be.Buffer.from(s);return{bytesRead:f.copy(t,n),buffer:f}}async readFile(t){let n;if(typeof t=="string"?n=t:n=t&&t.encoding,n==="utf8")return EP(this.blob);if(n)throw new Error(`unsupported encoding: ${n}`);const r=await zx(this.blob);return be.Buffer.from(r)}async stat(){return{size:this.size}}async close(){}}function Ux(e,t={}){return new $i(e,t)}function SP(e,t,n,r={}){if(n!==void 0)return n;if(e!==void 0)return Ux(e,r);if(t!==void 0)return new ct(t,r);throw new Error("no url, path, or filehandle provided, cannot open")}const Zs=Object.freeze(Object.defineProperty({__proto__:null,BlobFile:_P,LocalFile:ct,RemoteFile:$i,fromUrl:Ux,open:SP},Symbol.toStringTag,{value:"Module"}));var fr={};(function(e){var t=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function n(o,a){return Object.prototype.hasOwnProperty.call(o,a)}e.assign=function(o){for(var a=Array.prototype.slice.call(arguments,1);a.length;){var s=a.shift();if(s){if(typeof s!="object")throw new TypeError(s+"must be non-object");for(var f in s)n(s,f)&&(o[f]=s[f])}}return o},e.shrinkBuf=function(o,a){return o.length===a?o:o.subarray?o.subarray(0,a):(o.length=a,o)};var r={arraySet:function(o,a,s,f,l){if(a.subarray&&o.subarray){o.set(a.subarray(s,s+f),l);return}for(var u=0;u=0;)e[t]=0}var IP=0,Vx=1,DP=2,BP=3,FP=258,C0=29,Qs=256,Xs=Qs+1+C0,Xo=30,T0=19,jx=2*Xs+1,Zi=15,k0=16,RP=7,I0=256,qx=16,Wx=17,$x=18,D0=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Du=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],PP=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Zx=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],MP=512,ur=new Array((Xs+2)*2);Qo(ur);var Ks=new Array(Xo*2);Qo(Ks);var Js=new Array(MP);Qo(Js);var el=new Array(FP-BP+1);Qo(el);var B0=new Array(C0);Qo(B0);var Bu=new Array(Xo);Qo(Bu);function F0(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}var Yx,Qx,Xx;function R0(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Kx(e){return e<256?Js[e]:Js[256+(e>>>7)]}function tl(e,t){e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255}function Nt(e,t,n){e.bi_valid>k0-n?(e.bi_buf|=t<>k0-e.bi_valid,e.bi_valid+=n-k0):(e.bi_buf|=t<>>=1,n<<=1;while(--t>0);return n>>>1}function OP(e){e.bi_valid===16?(tl(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)}function NP(e,t){var n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,o=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,f=t.stat_desc.max_length,l,u,c,h,d,p,b=0;for(h=0;h<=Zi;h++)e.bl_count[h]=0;for(n[e.heap[e.heap_max]*2+1]=0,l=e.heap_max+1;lf&&(h=f,b++),n[u*2+1]=h,!(u>r)&&(e.bl_count[h]++,d=0,u>=s&&(d=a[u-s]),p=n[u*2],e.opt_len+=p*(h+d),o&&(e.static_len+=p*(i[u*2+1]+d)));if(b!==0){do{for(h=f-1;e.bl_count[h]===0;)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[f]--,b-=2}while(b>0);for(h=f;h!==0;h--)for(u=e.bl_count[h];u!==0;)c=e.heap[--l],!(c>r)&&(n[c*2+1]!==h&&(e.opt_len+=(h-n[c*2+1])*n[c*2],n[c*2+1]=h),u--)}}function ev(e,t,n){var r=new Array(Zi+1),i=0,o,a;for(o=1;o<=Zi;o++)r[o]=i=i+n[o-1]<<1;for(a=0;a<=t;a++){var s=e[a*2+1];s!==0&&(e[a*2]=Jx(r[s]++,s))}}function LP(){var e,t,n,r,i,o=new Array(Zi+1);for(n=0,r=0;r>=7;r8?tl(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function zP(e,t,n,r){nv(e),r&&(tl(e,n),tl(e,~n)),CP.arraySet(e.pending_buf,e.window,t,n,e.pending),e.pending+=n}function rv(e,t,n,r){var i=t*2,o=n*2;return e[i]>1;a>=1;a--)P0(e,n,a);l=o;do a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],P0(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=s,n[l*2]=n[a*2]+n[s*2],e.depth[l]=(e.depth[a]>=e.depth[s]?e.depth[a]:e.depth[s])+1,n[a*2+1]=n[s*2+1]=l,e.heap[1]=l++,P0(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],NP(e,t),ev(n,f,e.bl_count)}function ov(e,t,n){var r,i=-1,o,a=t[0*2+1],s=0,f=7,l=4;for(a===0&&(f=138,l=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)o=a,a=t[(r+1)*2+1],!(++s=3&&e.bl_tree[Zx[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t}function GP(e,t,n,r){var i;for(Nt(e,t-257,5),Nt(e,n-1,5),Nt(e,r-4,4),i=0;i>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return Gx;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return Hx;for(n=32;n0?(e.strm.data_type===kP&&(e.strm.data_type=HP(e)),M0(e,e.l_desc),M0(e,e.d_desc),a=UP(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&t!==-1?lv(e,t,n,r):e.strategy===TP||o===i?(Nt(e,(Vx<<1)+(r?1:0),3),iv(e,ur,Ks)):(Nt(e,(DP<<1)+(r?1:0),3),GP(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),iv(e,e.dyn_ltree,e.dyn_dtree)),tv(e),r&&nv(e)}function WP(e,t,n){return e.pending_buf[e.d_buf+e.last_lit*2]=t>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=t&255,e.pending_buf[e.l_buf+e.last_lit]=n&255,e.last_lit++,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(el[n]+Qs+1)*2]++,e.dyn_dtree[Kx(t)*2]++),e.last_lit===e.lit_bufsize-1}Yo._tr_init=VP,Yo._tr_stored_block=lv,Yo._tr_flush_block=qP,Yo._tr_tally=WP,Yo._tr_align=jP;function $P(e,t,n,r){for(var i=e&65535|0,o=e>>>16&65535|0,a=0;n!==0;){a=n>2e3?2e3:n,n-=a;do i=i+t[r++]|0,o=o+i|0;while(--a);i%=65521,o%=65521}return i|o<<16|0}var fv=$P;function ZP(){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}var YP=ZP();function QP(e,t,n,r){var i=YP,o=r+n;e^=-1;for(var a=r;a>>8^i[(e^t[a])&255];return e^-1}var uv=QP,O0={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"},kt=fr,on=Yo,cv=fv,$r=uv,XP=O0,Yi=0,KP=1,JP=3,Zr=4,hv=5,qn=0,dv=1,an=-2,eM=-3,N0=-5,tM=-1,nM=1,Fu=2,rM=3,iM=4,oM=0,aM=2,Ru=8,sM=9,lM=15,fM=8,uM=29,cM=256,L0=cM+1+uM,hM=30,dM=19,pM=2*L0+1,gM=15,ce=3,Yr=258,Cn=Yr+ce+1,mM=32,Pu=42,z0=69,Mu=73,Ou=91,Nu=103,Qi=113,nl=666,it=1,rl=2,Xi=3,Ko=4,bM=3;function Qr(e,t){return e.msg=XP[t],t}function pv(e){return(e<<1)-(e>4?9:0)}function Xr(e){for(var t=e.length;--t>=0;)e[t]=0}function Kr(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(kt.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))}function mt(e,t){on._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Kr(e.strm)}function ye(e,t){e.pending_buf[e.pending++]=t}function il(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255}function yM(e,t,n,r){var i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,kt.arraySet(t,e.input,e.next_in,i,n),e.state.wrap===1?e.adler=cv(e.adler,t,i,n):e.state.wrap===2&&(e.adler=$r(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)}function gv(e,t){var n=e.max_chain_length,r=e.strstart,i,o,a=e.prev_length,s=e.nice_match,f=e.strstart>e.w_size-Cn?e.strstart-(e.w_size-Cn):0,l=e.window,u=e.w_mask,c=e.prev,h=e.strstart+Yr,d=l[r+a-1],p=l[r+a];e.prev_length>=e.good_match&&(n>>=2),s>e.lookahead&&(s=e.lookahead);do if(i=t,!(l[i+a]!==p||l[i+a-1]!==d||l[i]!==l[r]||l[++i]!==l[r+1])){r+=2,i++;do;while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&ra){if(e.match_start=t,a=o,o>=s)break;d=l[r+a-1],p=l[r+a]}}while((t=c[t&u])>f&&--n!==0);return a<=e.lookahead?a:e.lookahead}function Ki(e){var t=e.w_size,n,r,i,o,a;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Cn)){kt.arraySet(e.window,e.window,t,t,0),e.match_start-=t,e.strstart-=t,e.block_start-=t,r=e.hash_size,n=r;do i=e.head[--n],e.head[n]=i>=t?i-t:0;while(--r);r=t,n=r;do i=e.prev[--n],e.prev[n]=i>=t?i-t:0;while(--r);o+=t}if(e.strm.avail_in===0)break;if(r=yM(e.strm,e.window,e.strstart+e.lookahead,o),e.lookahead+=r,e.lookahead+e.insert>=ce)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=(e.ins_h<e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Ki(e),e.lookahead===0&&t===Yi)return it;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((e.strstart===0||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,mt(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-Cn&&(mt(e,!1),e.strm.avail_out===0))return it}return e.insert=0,t===Zr?(mt(e,!0),e.strm.avail_out===0?Xi:Ko):(e.strstart>e.block_start&&(mt(e,!1),e.strm.avail_out===0),it)}function U0(e,t){for(var n,r;;){if(e.lookahead=ce&&(e.ins_h=(e.ins_h<=ce)if(r=on._tr_tally(e,e.strstart-e.match_start,e.match_length-ce),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=ce){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<=ce&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=ce-1)),e.prev_length>=ce&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-ce,r=on._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-ce),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=(e.ins_h<=ce&&e.strstart>0&&(i=e.strstart-1,r=a[i],r===a[++i]&&r===a[++i]&&r===a[++i])){o=e.strstart+Yr;do;while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ce?(n=on._tr_tally(e,1,e.match_length-ce),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=on._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(mt(e,!1),e.strm.avail_out===0))return it}return e.insert=0,t===Zr?(mt(e,!0),e.strm.avail_out===0?Xi:Ko):e.last_lit&&(mt(e,!1),e.strm.avail_out===0)?it:rl}function vM(e,t){for(var n;;){if(e.lookahead===0&&(Ki(e),e.lookahead===0)){if(t===Yi)return it;break}if(e.match_length=0,n=on._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(mt(e,!1),e.strm.avail_out===0))return it}return e.insert=0,t===Zr?(mt(e,!0),e.strm.avail_out===0?Xi:Ko):e.last_lit&&(mt(e,!1),e.strm.avail_out===0)?it:rl}function Wn(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}var ea;ea=[new Wn(0,0,0,0,wM),new Wn(4,4,8,4,U0),new Wn(4,5,16,8,U0),new Wn(4,6,32,32,U0),new Wn(4,4,16,16,Jo),new Wn(8,16,32,32,Jo),new Wn(8,16,128,128,Jo),new Wn(8,32,128,256,Jo),new Wn(32,128,258,1024,Jo),new Wn(32,258,258,4096,Jo)];function AM(e){e.window_size=2*e.w_size,Xr(e.head),e.max_lazy_match=ea[e.level].max_lazy,e.good_match=ea[e.level].good_length,e.nice_match=ea[e.level].nice_length,e.max_chain_length=ea[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=ce-1,e.match_available=0,e.ins_h=0}function EM(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ru,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new kt.Buf16(pM*2),this.dyn_dtree=new kt.Buf16((2*hM+1)*2),this.bl_tree=new kt.Buf16((2*dM+1)*2),Xr(this.dyn_ltree),Xr(this.dyn_dtree),Xr(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new kt.Buf16(gM+1),this.heap=new kt.Buf16(2*L0+1),Xr(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new kt.Buf16(2*L0+1),Xr(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function mv(e){var t;return!e||!e.state?Qr(e,an):(e.total_in=e.total_out=0,e.data_type=aM,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?Pu:Qi,e.adler=t.wrap===2?0:1,t.last_flush=Yi,on._tr_init(t),qn)}function bv(e){var t=mv(e);return t===qn&&AM(e.state),t}function _M(e,t){return!e||!e.state||e.state.wrap!==2?an:(e.state.gzhead=t,qn)}function yv(e,t,n,r,i,o){if(!e)return an;var a=1;if(t===tM&&(t=6),r<0?(a=0,r=-r):r>15&&(a=2,r-=16),i<1||i>sM||n!==Ru||r<8||r>15||t<0||t>9||o<0||o>iM)return Qr(e,an);r===8&&(r=9);var s=new EM;return e.state=s,s.strm=e,s.wrap=a,s.gzhead=null,s.w_bits=r,s.w_size=1<hv||t<0)return e?Qr(e,an):an;if(r=e.state,!e.output||!e.input&&e.avail_in!==0||r.status===nl&&t!==Zr)return Qr(e,e.avail_out===0?N0:an);if(r.strm=e,n=r.last_flush,r.last_flush=t,r.status===Pu)if(r.wrap===2)e.adler=0,ye(r,31),ye(r,139),ye(r,8),r.gzhead?(ye(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),ye(r,r.gzhead.time&255),ye(r,r.gzhead.time>>8&255),ye(r,r.gzhead.time>>16&255),ye(r,r.gzhead.time>>24&255),ye(r,r.level===9?2:r.strategy>=Fu||r.level<2?4:0),ye(r,r.gzhead.os&255),r.gzhead.extra&&r.gzhead.extra.length&&(ye(r,r.gzhead.extra.length&255),ye(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=$r(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=z0):(ye(r,0),ye(r,0),ye(r,0),ye(r,0),ye(r,0),ye(r,r.level===9?2:r.strategy>=Fu||r.level<2?4:0),ye(r,bM),r.status=Qi);else{var a=Ru+(r.w_bits-8<<4)<<8,s=-1;r.strategy>=Fu||r.level<2?s=0:r.level<6?s=1:r.level===6?s=2:s=3,a|=s<<6,r.strstart!==0&&(a|=mM),a+=31-a%31,r.status=Qi,il(r,a),r.strstart!==0&&(il(r,e.adler>>>16),il(r,e.adler&65535)),e.adler=1}if(r.status===z0)if(r.gzhead.extra){for(i=r.pending;r.gzindex<(r.gzhead.extra.length&65535)&&!(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(e.adler=$r(e.adler,r.pending_buf,r.pending-i,i)),Kr(e),i=r.pending,r.pending===r.pending_buf_size));)ye(r,r.gzhead.extra[r.gzindex]&255),r.gzindex++;r.gzhead.hcrc&&r.pending>i&&(e.adler=$r(e.adler,r.pending_buf,r.pending-i,i)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=Mu)}else r.status=Mu;if(r.status===Mu)if(r.gzhead.name){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(e.adler=$r(e.adler,r.pending_buf,r.pending-i,i)),Kr(e),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}r.gzindexi&&(e.adler=$r(e.adler,r.pending_buf,r.pending-i,i)),o===0&&(r.gzindex=0,r.status=Ou)}else r.status=Ou;if(r.status===Ou)if(r.gzhead.comment){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(e.adler=$r(e.adler,r.pending_buf,r.pending-i,i)),Kr(e),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}r.gzindexi&&(e.adler=$r(e.adler,r.pending_buf,r.pending-i,i)),o===0&&(r.status=Nu)}else r.status=Nu;if(r.status===Nu&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&Kr(e),r.pending+2<=r.pending_buf_size&&(ye(r,e.adler&255),ye(r,e.adler>>8&255),e.adler=0,r.status=Qi)):r.status=Qi),r.pending!==0){if(Kr(e),e.avail_out===0)return r.last_flush=-1,qn}else if(e.avail_in===0&&pv(t)<=pv(n)&&t!==Zr)return Qr(e,N0);if(r.status===nl&&e.avail_in!==0)return Qr(e,N0);if(e.avail_in!==0||r.lookahead!==0||t!==Yi&&r.status!==nl){var f=r.strategy===Fu?vM(r,t):r.strategy===rM?xM(r,t):ea[r.level].func(r,t);if((f===Xi||f===Ko)&&(r.status=nl),f===it||f===Xi)return e.avail_out===0&&(r.last_flush=-1),qn;if(f===rl&&(t===KP?on._tr_align(r):t!==hv&&(on._tr_stored_block(r,0,0,!1),t===JP&&(Xr(r.head),r.lookahead===0&&(r.strstart=0,r.block_start=0,r.insert=0))),Kr(e),e.avail_out===0))return r.last_flush=-1,qn}return t!==Zr?qn:r.wrap<=0?dv:(r.wrap===2?(ye(r,e.adler&255),ye(r,e.adler>>8&255),ye(r,e.adler>>16&255),ye(r,e.adler>>24&255),ye(r,e.total_in&255),ye(r,e.total_in>>8&255),ye(r,e.total_in>>16&255),ye(r,e.total_in>>24&255)):(il(r,e.adler>>>16),il(r,e.adler&65535)),Kr(e),r.wrap>0&&(r.wrap=-r.wrap),r.pending!==0?qn:dv)}function TM(e){var t;return!e||!e.state?an:(t=e.state.status,t!==Pu&&t!==z0&&t!==Mu&&t!==Ou&&t!==Nu&&t!==Qi&&t!==nl?Qr(e,an):(e.state=null,t===Qi?Qr(e,eM):qn))}function kM(e,t){var n=t.length,r,i,o,a,s,f,l,u;if(!e||!e.state||(r=e.state,a=r.wrap,a===2||a===1&&r.status!==Pu||r.lookahead))return an;for(a===1&&(e.adler=cv(e.adler,t,n,0)),r.wrap=0,n>=r.w_size&&(a===0&&(Xr(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new kt.Buf8(r.w_size),kt.arraySet(u,t,n-r.w_size,r.w_size,0),t=u,n=r.w_size),s=e.avail_in,f=e.next_in,l=e.input,e.avail_in=n,e.next_in=0,e.input=t,Ki(r);r.lookahead>=ce;){i=r.strstart,o=r.lookahead-(ce-1);do r.ins_h=(r.ins_h<=252?6:Jr>=248?5:Jr>=240?4:Jr>=224?3:Jr>=192?2:1;ol[254]=ol[254]=1,Ji.string2buf=function(e){var t,n,r,i,o,a=e.length,s=0;for(i=0;i>>6,t[o++]=128|n&63):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|n&63):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|n&63);return t};function vv(e,t){if(t<65534&&(e.subarray&&xv||!e.subarray&&wv))return String.fromCharCode.apply(null,Lu.shrinkBuf(e,t));for(var n="",r=0;r4){s[r++]=65533,n+=o-1;continue}for(i&=o===2?31:o===3?15:7;o>1&&n1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return vv(s,r)},Ji.utf8border=function(e,t){var n;for(t=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+ol[e[n]]>t?n:t};function IM(){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 Av=IM,al=Vn,sl=fr,G0=Ji,H0=O0,DM=Av,Ev=Object.prototype.toString,BM=0,V0=4,ta=0,_v=1,Sv=2,FM=-1,RM=0,PM=8;function eo(e){if(!(this instanceof eo))return new eo(e);this.options=sl.assign({level:FM,method:PM,chunkSize:16384,windowBits:15,memLevel:8,strategy:RM,to:""},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new DM,this.strm.avail_out=0;var n=al.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==ta)throw new Error(H0[n]);if(t.header&&al.deflateSetHeader(this.strm,t.header),t.dictionary){var r;if(typeof t.dictionary=="string"?r=G0.string2buf(t.dictionary):Ev.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=al.deflateSetDictionary(this.strm,r),n!==ta)throw new Error(H0[n]);this._dict_set=!0}}eo.prototype.push=function(e,t){var n=this.strm,r=this.options.chunkSize,i,o;if(this.ended)return!1;o=t===~~t?t:t===!0?V0:BM,typeof e=="string"?n.input=G0.string2buf(e):Ev.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=new sl.Buf8(r),n.next_out=0,n.avail_out=r),i=al.deflate(n,o),i!==_v&&i!==ta)return this.onEnd(i),this.ended=!0,!1;(n.avail_out===0||n.avail_in===0&&(o===V0||o===Sv))&&(this.options.to==="string"?this.onData(G0.buf2binstring(sl.shrinkBuf(n.output,n.next_out))):this.onData(sl.shrinkBuf(n.output,n.next_out)))}while((n.avail_in>0||n.avail_out===0)&&i!==_v);return o===V0?(i=al.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===ta):(o===Sv&&(this.onEnd(ta),n.avail_out=0),!0)},eo.prototype.onData=function(e){this.chunks.push(e)},eo.prototype.onEnd=function(e){e===ta&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=sl.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function j0(e,t){var n=new eo(t);if(n.push(e,!0),n.err)throw n.msg||H0[n.err];return n.result}function MM(e,t){return t=t||{},t.raw=!0,j0(e,t)}function OM(e,t){return t=t||{},t.gzip=!0,j0(e,t)}Ys.Deflate=eo,Ys.deflate=j0,Ys.deflateRaw=MM,Ys.gzip=OM;var ll={},Tn={},zu=30,NM=12,LM=function(t,n){var r,i,o,a,s,f,l,u,c,h,d,p,b,y,w,S,C,_,I,D,k,R,M,j,L;r=t.state,i=t.next_in,j=t.input,o=i+(t.avail_in-5),a=t.next_out,L=t.output,s=a-(n-t.avail_out),f=a+(t.avail_out-257),l=r.dmax,u=r.wsize,c=r.whave,h=r.wnext,d=r.window,p=r.hold,b=r.bits,y=r.lencode,w=r.distcode,S=(1<>>24,p>>>=I,b-=I,I=_>>>16&255,I===0)L[a++]=_&65535;else if(I&16){D=_&65535,I&=15,I&&(b>>=I,b-=I),b<15&&(p+=j[i++]<>>24,p>>>=I,b-=I,I=_>>>16&255,I&16){if(k=_&65535,I&=15,bl){t.msg="invalid distance too far back",r.mode=zu;break e}if(p>>>=I,b-=I,I=a-s,k>I){if(I=k-I,I>c&&r.sane){t.msg="invalid distance too far back",r.mode=zu;break e}if(R=0,M=d,h===0){if(R+=u-I,I2;)L[a++]=M[R++],L[a++]=M[R++],L[a++]=M[R++],D-=3;D&&(L[a++]=M[R++],D>1&&(L[a++]=M[R++]))}else{R=a-k;do L[a++]=L[R++],L[a++]=L[R++],L[a++]=L[R++],D-=3;while(D>2);D&&(L[a++]=L[R++],D>1&&(L[a++]=L[R++]))}}else if(I&64){t.msg="invalid distance code",r.mode=zu;break e}else{_=w[(_&65535)+(p&(1<>3,i-=D,b-=D<<3,p&=(1<=1&&ne[d]===0;d--);if(p>d&&(p=d),d===0)return o[a++]=1<<24|64<<16|0,o[a++]=1<<24|64<<16|0,f.bits=1,0;for(h=1;h0&&(t===Iv||d!==1))return-1;for(ae[1]=0,u=1;uTv||t===Dv&&S>kv)return 1;for(;;){Qe=u-y,s[c]L?(Be=de[Ie+s[c]],Ke=M[j+s[c]]):(Be=32+64,Ke=0),_=1<>y)+I]=Qe<<24|Be<<16|Ke|0;while(I!==0);for(_=1<>=1;if(_!==0?(C&=_-1,C+=_):C=0,c++,--ne[u]===0){if(u===d)break;u=n[r+s[c]]}if(u>p&&(C&k)!==D){for(y===0&&(y=p),R+=h,b=u-y,w=1<Tv||t===Dv&&S>kv)return 1;D=C&k,o[D]=p<<24|b<<16|R-a|0}}return C!==0&&(o[R+C]=u-y<<24|64<<16|0),f.bits=p,0},Yt=fr,W0=fv,$n=uv,jM=LM,fl=VM,qM=0,Bv=1,Fv=2,Rv=4,WM=5,Uu=6,to=0,$M=1,ZM=2,sn=-2,Pv=-3,Mv=-4,YM=-5,Ov=8,Nv=1,Lv=2,zv=3,Uv=4,Gv=5,Hv=6,Vv=7,jv=8,qv=9,Wv=10,Gu=11,cr=12,$0=13,$v=14,Z0=15,Zv=16,Yv=17,Qv=18,Xv=19,Hu=20,Vu=21,Kv=22,Jv=23,eA=24,tA=25,nA=26,Y0=27,rA=28,iA=29,Ve=30,oA=31,QM=32,XM=852,KM=592,JM=15,e9=JM;function aA(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function t9(){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=new Yt.Buf16(320),this.work=new Yt.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function sA(e){var t;return!e||!e.state?sn:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=Nv,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Yt.Buf32(XM),t.distcode=t.distdyn=new Yt.Buf32(KM),t.sane=1,t.back=-1,to)}function lA(e){var t;return!e||!e.state?sn:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,sA(e))}function fA(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))?sn:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,lA(e))}function uA(e,t){var n,r;return e?(r=new t9,e.state=r,r.window=null,n=fA(e,t),n!==to&&(e.state=null),n):sn}function n9(e){return uA(e,e9)}var cA=!0,Q0,X0;function r9(e){if(cA){var t;for(Q0=new Yt.Buf32(512),X0=new Yt.Buf32(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(fl(Bv,e.lens,0,288,Q0,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;fl(Fv,e.lens,0,32,X0,0,e.work,{bits:5}),cA=!1}e.lencode=Q0,e.lenbits=9,e.distcode=X0,e.distbits=5}function hA(e,t,n,r){var i,o=e.state;return o.window===null&&(o.wsize=1<=o.wsize?(Yt.arraySet(o.window,t,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),Yt.arraySet(o.window,t,n-r,i,o.wnext),r-=i,r?(Yt.arraySet(o.window,t,n-r,r,0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=$n(n.check,M,2,0),l=0,u=0,n.mode=Lv;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=Ve;break}if((l&15)!==Ov){e.msg="unknown compression method",n.mode=Ve;break}if(l>>>=4,u-=4,k=(l&15)+8,n.wbits===0)n.wbits=k;else if(k>n.wbits){e.msg="invalid window size",n.mode=Ve;break}n.dmax=1<>8&1),n.flags&512&&(M[0]=l&255,M[1]=l>>>8&255,n.check=$n(n.check,M,2,0)),l=0,u=0,n.mode=zv;case zv:for(;u<32;){if(s===0)break e;s--,l+=r[o++]<>>8&255,M[2]=l>>>16&255,M[3]=l>>>24&255,n.check=$n(n.check,M,4,0)),l=0,u=0,n.mode=Uv;case Uv:for(;u<16;){if(s===0)break e;s--,l+=r[o++]<>8),n.flags&512&&(M[0]=l&255,M[1]=l>>>8&255,n.check=$n(n.check,M,2,0)),l=0,u=0,n.mode=Gv;case Gv:if(n.flags&1024){for(;u<16;){if(s===0)break e;s--,l+=r[o++]<>>8&255,n.check=$n(n.check,M,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=Hv;case Hv:if(n.flags&1024&&(d=n.length,d>s&&(d=s),d&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),Yt.arraySet(n.head.extra,r,o,d,k)),n.flags&512&&(n.check=$n(n.check,r,d,o)),s-=d,o+=d,n.length-=d),n.length))break e;n.length=0,n.mode=Vv;case Vv:if(n.flags&2048){if(s===0)break e;d=0;do k=r[o+d++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k));while(k&&d>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=cr;break;case Wv:for(;u<32;){if(s===0)break e;s--,l+=r[o++]<>>=u&7,u-=u&7,n.mode=Y0;break}for(;u<3;){if(s===0)break e;s--,l+=r[o++]<>>=1,u-=1,l&3){case 0:n.mode=$v;break;case 1:if(r9(n),n.mode=Hu,t===Uu){l>>>=2,u-=2;break e}break;case 2:n.mode=Yv;break;case 3:e.msg="invalid block type",n.mode=Ve}l>>>=2,u-=2;break;case $v:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break e;s--,l+=r[o++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Ve;break}if(n.length=l&65535,l=0,u=0,n.mode=Z0,t===Uu)break e;case Z0:n.mode=Zv;case Zv:if(d=n.length,d){if(d>s&&(d=s),d>f&&(d=f),d===0)break e;Yt.arraySet(i,r,o,d,a),s-=d,o+=d,f-=d,a+=d,n.length-=d;break}n.mode=cr;break;case Yv:for(;u<14;){if(s===0)break e;s--,l+=r[o++]<>>=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=Ve;break}n.have=0,n.mode=Qv;case Qv:for(;n.have>>=3,u-=3}for(;n.have<19;)n.lens[ne[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,j={bits:n.lenbits},R=fl(qM,n.lens,0,19,n.lencode,0,n.work,j),n.lenbits=j.bits,R){e.msg="invalid code lengths set",n.mode=Ve;break}n.have=0,n.mode=Xv;case Xv:for(;n.have>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,l+=r[o++]<>>=w,u-=w,n.lens[n.have++]=C;else{if(C===16){for(L=w+2;u>>=w,u-=w,n.have===0){e.msg="invalid bit length repeat",n.mode=Ve;break}k=n.lens[n.have-1],d=3+(l&3),l>>>=2,u-=2}else if(C===17){for(L=w+3;u>>=w,u-=w,k=0,d=3+(l&7),l>>>=3,u-=3}else{for(L=w+7;u>>=w,u-=w,k=0,d=11+(l&127),l>>>=7,u-=7}if(n.have+d>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Ve;break}for(;d--;)n.lens[n.have++]=k}}if(n.mode===Ve)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=Ve;break}if(n.lenbits=9,j={bits:n.lenbits},R=fl(Bv,n.lens,0,n.nlen,n.lencode,0,n.work,j),n.lenbits=j.bits,R){e.msg="invalid literal/lengths set",n.mode=Ve;break}if(n.distbits=6,n.distcode=n.distdyn,j={bits:n.distbits},R=fl(Fv,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,j),n.distbits=j.bits,R){e.msg="invalid distances set",n.mode=Ve;break}if(n.mode=Hu,t===Uu)break e;case Hu:n.mode=Vu;case Vu:if(s>=6&&f>=258){e.next_out=a,e.avail_out=f,e.next_in=o,e.avail_in=s,n.hold=l,n.bits=u,jM(e,h),a=e.next_out,i=e.output,f=e.avail_out,o=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===cr&&(n.back=-1);break}for(n.back=0;y=n.lencode[l&(1<>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,l+=r[o++]<>_)],w=y>>>24,S=y>>>16&255,C=y&65535,!(_+w<=u);){if(s===0)break e;s--,l+=r[o++]<>>=_,u-=_,n.back+=_}if(l>>>=w,u-=w,n.back+=w,n.length=C,S===0){n.mode=nA;break}if(S&32){n.back=-1,n.mode=cr;break}if(S&64){e.msg="invalid literal/length code",n.mode=Ve;break}n.extra=S&15,n.mode=Kv;case Kv:if(n.extra){for(L=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Jv;case Jv:for(;y=n.distcode[l&(1<>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,l+=r[o++]<>_)],w=y>>>24,S=y>>>16&255,C=y&65535,!(_+w<=u);){if(s===0)break e;s--,l+=r[o++]<>>=_,u-=_,n.back+=_}if(l>>>=w,u-=w,n.back+=w,S&64){e.msg="invalid distance code",n.mode=Ve;break}n.offset=C,n.extra=S&15,n.mode=eA;case eA:if(n.extra){for(L=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Ve;break}n.mode=tA;case tA:if(f===0)break e;if(d=h-f,n.offset>d){if(d=n.offset-d,d>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Ve;break}d>n.wnext?(d-=n.wnext,p=n.wsize-d):p=n.wnext-d,d>n.length&&(d=n.length),b=n.window}else b=i,p=a-n.offset,d=n.length;d>f&&(d=f),f-=d,n.length-=d;do i[a++]=b[p++];while(--d);n.length===0&&(n.mode=Vu);break;case nA:if(f===0)break e;i[a++]=n.length,f--,n.mode=Vu;break;case Y0:if(n.wrap){for(;u<32;){if(s===0)break e;s--,l|=r[o++]<=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new u9,this.strm.avail_out=0;var n=ra.inflateInit2(this.strm,t.windowBits);if(n!==tt.Z_OK)throw new Error(K0[n]);if(this.header=new c9,ra.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=ju.string2buf(t.dictionary):pA.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=ra.inflateSetDictionary(this.strm,t.dictionary),n!==tt.Z_OK)))throw new Error(K0[n])}no.prototype.push=function(e,t){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,o,a,s,f,l,u=!1;if(this.ended)return!1;a=t===~~t?t:t===!0?tt.Z_FINISH:tt.Z_NO_FLUSH,typeof e=="string"?n.input=ju.binstring2buf(e):pA.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=new ul.Buf8(r),n.next_out=0,n.avail_out=r),o=ra.inflate(n,tt.Z_NO_FLUSH),o===tt.Z_NEED_DICT&&i&&(o=ra.inflateSetDictionary(this.strm,i)),o===tt.Z_BUF_ERROR&&u===!0&&(o=tt.Z_OK,u=!1),o!==tt.Z_STREAM_END&&o!==tt.Z_OK)return this.onEnd(o),this.ended=!0,!1;n.next_out&&(n.avail_out===0||o===tt.Z_STREAM_END||n.avail_in===0&&(a===tt.Z_FINISH||a===tt.Z_SYNC_FLUSH))&&(this.options.to==="string"?(s=ju.utf8border(n.output,n.next_out),f=n.next_out-s,l=ju.buf2string(n.output,s),n.next_out=f,n.avail_out=r-f,f&&ul.arraySet(n.output,n.output,s,f,0),this.onData(l)):this.onData(ul.shrinkBuf(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(u=!0)}while((n.avail_in>0||n.avail_out===0)&&o!==tt.Z_STREAM_END);return o===tt.Z_STREAM_END&&(a=tt.Z_FINISH),a===tt.Z_FINISH?(o=ra.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===tt.Z_OK):(a===tt.Z_SYNC_FLUSH&&(this.onEnd(tt.Z_OK),n.avail_out=0),!0)},no.prototype.onData=function(e){this.chunks.push(e)},no.prototype.onEnd=function(e){e===tt.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ul.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function J0(e,t){var n=new no(t);if(n.push(e,!0),n.err)throw n.msg||K0[n.err];return n.result}function h9(e,t){return t=t||{},t.raw=!0,J0(e,t)}ll.Inflate=no,ll.inflate=J0,ll.inflateRaw=h9,ll.ungzip=J0;var d9=fr.assign,p9=Ys,g9=ll,m9=dA,gA={};d9(gA,p9,g9,m9);var qu=gA;async function ei(e){try{let t,n=0,r=0;const i=[];let o=0,a;do{const f=e.subarray(n);if(a=new qu.Inflate,{strm:t}=a,a.push(f,qu.Z_SYNC_FLUSH),a.err)throw new Error(a.msg);n+=t.next_in,i[r]=a.result,o+=i[r].length,r+=1}while(t.avail_in);const s=new Uint8Array(o);for(let f=0,l=0;f=i.blockPosition){s[c]=s[c].subarray(0,i.blockPosition===r.blockPosition?i.dataPosition-r.dataPosition+1:i.dataPosition+1),f.push(o),l.push(a),u+=s[c].length;break}u+=s[c].length,c++}while(n.avail_in);const h=new Uint8Array(u);for(let p=0,b=0;p>>=0,(i=0<=e&&e<256)&&(r=yA[e],r)?r:(n=Oe(e,(e|0)<0?-1:0,!0),i&&(yA[e]=n),n)):(e|=0,(i=-128<=e&&e<128)&&(r=bA[e],r)?r:(n=Oe(e,e<0?-1:0,!1),i&&(bA[e]=n),n))}Me.fromInt=ro;function fn(e,t){if(isNaN(e))return t?io:un;if(t){if(e<0)return io;if(e>=xA)return SA}else{if(e<=-vA)return zt;if(e+1>=vA)return _A}return e<0?fn(-e,t).neg():Oe(e%ia|0,e/ia|0,t)}Me.fromNumber=fn;function Oe(e,t,n){return new Me(e,t,n)}Me.fromBits=Oe;var Wu=Math.pow;function ep(e,t,n){if(e.length===0)throw Error("empty string");if(e==="NaN"||e==="Infinity"||e==="+Infinity"||e==="-Infinity")return un;if(typeof t=="number"?(n=t,t=!1):t=!!t,n=n||10,n<2||360)throw Error("interior hyphen");if(r===0)return ep(e.substring(1),t,n).neg();for(var i=fn(Wu(n,8)),o=un,a=0;a>>0:this.low},Z.toNumber=function(){return this.unsigned?(this.high>>>0)*ia+(this.low>>>0):this.high*ia+(this.low>>>0)},Z.toString=function(t){if(t=t||10,t<2||36>>0,u=l.toString(t);if(a=f,a.isZero())return u+s;for(;u.length<6;)u="0"+u;s=""+u+s}},Z.getHighBits=function(){return this.high},Z.getHighBitsUnsigned=function(){return this.high>>>0},Z.getLowBits=function(){return this.low},Z.getLowBitsUnsigned=function(){return this.low>>>0},Z.getNumBitsAbs=function(){if(this.isNegative())return this.eq(zt)?64:this.neg().getNumBitsAbs();for(var t=this.high!=0?this.high:this.low,n=31;n>0&&!(t&1<=0},Z.isOdd=function(){return(this.low&1)===1},Z.isEven=function(){return(this.low&1)===0},Z.equals=function(t){return Lt(t)||(t=kn(t)),this.unsigned!==t.unsigned&&this.high>>>31===1&&t.high>>>31===1?!1:this.high===t.high&&this.low===t.low},Z.eq=Z.equals,Z.notEquals=function(t){return!this.eq(t)},Z.neq=Z.notEquals,Z.ne=Z.notEquals,Z.lessThan=function(t){return this.comp(t)<0},Z.lt=Z.lessThan,Z.lessThanOrEqual=function(t){return this.comp(t)<=0},Z.lte=Z.lessThanOrEqual,Z.le=Z.lessThanOrEqual,Z.greaterThan=function(t){return this.comp(t)>0},Z.gt=Z.greaterThan,Z.greaterThanOrEqual=function(t){return this.comp(t)>=0},Z.gte=Z.greaterThanOrEqual,Z.ge=Z.greaterThanOrEqual,Z.compare=function(t){if(Lt(t)||(t=kn(t)),this.eq(t))return 0;var n=this.isNegative(),r=t.isNegative();return n&&!r?-1:!n&&r?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},Z.comp=Z.compare,Z.negate=function(){return!this.unsigned&&this.eq(zt)?zt:this.not().add(oa)},Z.neg=Z.negate,Z.add=function(t){Lt(t)||(t=kn(t));var n=this.high>>>16,r=this.high&65535,i=this.low>>>16,o=this.low&65535,a=t.high>>>16,s=t.high&65535,f=t.low>>>16,l=t.low&65535,u=0,c=0,h=0,d=0;return d+=o+l,h+=d>>>16,d&=65535,h+=i+f,c+=h>>>16,h&=65535,c+=r+s,u+=c>>>16,c&=65535,u+=n+a,u&=65535,Oe(h<<16|d,u<<16|c,this.unsigned)},Z.subtract=function(t){return Lt(t)||(t=kn(t)),this.add(t.neg())},Z.sub=Z.subtract,Z.multiply=function(t){if(this.isZero())return un;if(Lt(t)||(t=kn(t)),ln){var n=ln.mul(this.low,this.high,t.low,t.high);return Oe(n,ln.get_high(),this.unsigned)}if(t.isZero())return un;if(this.eq(zt))return t.isOdd()?zt:un;if(t.eq(zt))return this.isOdd()?zt:un;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(AA)&&t.lt(AA))return fn(this.toNumber()*t.toNumber(),this.unsigned);var r=this.high>>>16,i=this.high&65535,o=this.low>>>16,a=this.low&65535,s=t.high>>>16,f=t.high&65535,l=t.low>>>16,u=t.low&65535,c=0,h=0,d=0,p=0;return p+=a*u,d+=p>>>16,p&=65535,d+=o*u,h+=d>>>16,d&=65535,d+=a*l,h+=d>>>16,d&=65535,h+=i*u,c+=h>>>16,h&=65535,h+=o*l,c+=h>>>16,h&=65535,h+=a*f,c+=h>>>16,h&=65535,c+=r*u+i*l+o*f+a*s,c&=65535,Oe(d<<16|p,c<<16|h,this.unsigned)},Z.mul=Z.multiply,Z.divide=function(t){if(Lt(t)||(t=kn(t)),t.isZero())throw Error("division by zero");if(ln){if(!this.unsigned&&this.high===-2147483648&&t.low===-1&&t.high===-1)return this;var n=(this.unsigned?ln.div_u:ln.div_s)(this.low,this.high,t.low,t.high);return Oe(n,ln.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?io:un;var r,i,o;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return io;if(t.gt(this.shru(1)))return EA;o=io}else{if(this.eq(zt)){if(t.eq(oa)||t.eq(tp))return zt;if(t.eq(zt))return oa;var a=this.shr(1);return r=a.div(t).shl(1),r.eq(un)?t.isNegative()?oa:tp:(i=this.sub(t.mul(r)),o=r.add(i.div(t)),o)}else if(t.eq(zt))return this.unsigned?io:un;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();o=un}for(i=this;i.gte(t);){r=Math.max(1,Math.floor(i.toNumber()/t.toNumber()));for(var s=Math.ceil(Math.log(r)/Math.LN2),f=s<=48?1:Wu(2,s-48),l=fn(r),u=l.mul(t);u.isNegative()||u.gt(i);)r-=f,l=fn(r,this.unsigned),u=l.mul(t);l.isZero()&&(l=oa),o=o.add(l),i=i.sub(u)}return o},Z.div=Z.divide,Z.modulo=function(t){if(Lt(t)||(t=kn(t)),ln){var n=(this.unsigned?ln.rem_u:ln.rem_s)(this.low,this.high,t.low,t.high);return Oe(n,ln.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))},Z.mod=Z.modulo,Z.rem=Z.modulo,Z.not=function(){return Oe(~this.low,~this.high,this.unsigned)},Z.and=function(t){return Lt(t)||(t=kn(t)),Oe(this.low&t.low,this.high&t.high,this.unsigned)},Z.or=function(t){return Lt(t)||(t=kn(t)),Oe(this.low|t.low,this.high|t.high,this.unsigned)},Z.xor=function(t){return Lt(t)||(t=kn(t)),Oe(this.low^t.low,this.high^t.high,this.unsigned)},Z.shiftLeft=function(t){return Lt(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?Oe(this.low<>>32-t,this.unsigned):Oe(0,this.low<>>t|this.high<<32-t,this.high>>t,this.unsigned):Oe(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},Z.shr=Z.shiftRight,Z.shiftRightUnsigned=function(t){if(Lt(t)&&(t=t.toInt()),t&=63,t===0)return this;var n=this.high;if(t<32){var r=this.low;return Oe(r>>>t|n<<32-t,n>>>t,this.unsigned)}else return t===32?Oe(n,0,this.unsigned):Oe(n>>>t-32,0,this.unsigned)},Z.shru=Z.shiftRightUnsigned,Z.shr_u=Z.shiftRightUnsigned,Z.toSigned=function(){return this.unsigned?Oe(this.low,this.high,!1):this},Z.toUnsigned=function(){return this.unsigned?this:Oe(this.low,this.high,!0)},Z.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()},Z.toBytesLE=function(){var t=this.high,n=this.low;return[n&255,n>>>8&255,n>>>16&255,n>>>24,t&255,t>>>8&255,t>>>16&255,t>>>24]},Z.toBytesBE=function(){var t=this.high,n=this.low;return[t>>>24,t>>>16&255,t>>>8&255,t&255,n>>>24,n>>>16&255,n>>>8&255,n&255]},Me.fromBytes=function(t,n,r){return r?Me.fromBytesLE(t,n):Me.fromBytesBE(t,n)},Me.fromBytesLE=function(t,n){return new Me(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,n)},Me.fromBytesBE=function(t,n){return new Me(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],n)};const $u=$s(b9),Zu=1;class w9{constructor({filehandle:t,path:n}){if(t)this.filehandle=t;else if(n)this.filehandle=new ct(n);else throw new TypeError("either filehandle or path must be defined")}_readLongWithOverflow(t,n=0,r=!0){const i=$u.fromBytesLE(t.slice(n,n+8),r);if(i.greaterThan(Number.MAX_SAFE_INTEGER)||i.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return i.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let t=be.Buffer.allocUnsafe(8);await this.filehandle.read(t,0,8,0);const n=this._readLongWithOverflow(t,0,!0);if(!n)return[[0,0]];const r=new Array(n+1);r[0]=[0,0];const i=8*2*n;if(i>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");t=be.Buffer.allocUnsafe(i),await this.filehandle.read(t,0,i,8);for(let o=0;o{const p=h[Zu],b=d?d[Zu]:1/0;return p<=n&&b>n?0:p0?f=l-1:u<0&&(s=l+1),l=Math.ceil((f-s)/2)+s,u=a(i[l],i[l+1]);o.push(i[l]);let c=l+1;for(;c=r));c+=1);return o[o.length-1][Zu]=i?0:i-c,d=Math.min(i+r,c+u.length)-c;h>=0&&h/\S/.test(a)).map(a=>a.split(" ")).filter(a=>a[0]!=="").map(a=>((!i||i.name!==a[0])&&(i={name:a[0],id:r},r+=1),{id:i.id,name:a[0],length:+a[1],start:0,end:+a[1],offset:+a[2],lineLength:+a[3],lineBytes:+a[4]}));return{name:Object.fromEntries(o.map(a=>[a.name,a])),id:Object.fromEntries(o.map(a=>[a.id,a]))}}class kA{constructor({fasta:t,fai:n,path:r,faiPath:i,chunkSizeLimit:o=1e6}){if(t)this.fasta=t;else if(r)this.fasta=new ct(r);else throw new Error("Need to pass filehandle for fasta or path to localfile");if(n)this.fai=n;else if(i)this.fai=new ct(i);else if(r)this.fai=new ct(`${r}.fai`);else throw new Error("Need to pass filehandle for or path to localfile");this.chunkSizeLimit=o}async _getIndexes(t){return this.indexes||(this.indexes=x9(this.fai,t)),this.indexes}async getSequenceNames(t){return Object.keys((await this._getIndexes(t)).name)}async getSequenceSizes(t){const n={},r=await this._getIndexes(t),i=Object.values(r.id);for(let o=0;ot.length)&&(o=t.length),n>=o)return"";const a=TA(t,n),s=TA(t,o)-a;if(s>this.chunkSizeLimit)throw new Error(`data size of ${s.toLocaleString()} bytes exceeded chunk size limit of ${this.chunkSizeLimit.toLocaleString()} bytes`);const f=Buffer.allocUnsafe(s);return await this.fasta.read(f,0,s,a,i),f.toString("utf8").replace(/\s+/g,"")}}class v9 extends kA{constructor({fasta:t,path:n,fai:r,faiPath:i,gzi:o,gziPath:a,chunkSizeLimit:s}){super({fasta:t,path:n,fai:r,faiPath:i,chunkSizeLimit:s}),t&&o?this.fasta=new CA({filehandle:t,gziFilehandle:o}):n&&a&&(this.fasta=new CA({path:n,gziPath:a}))}}function IA(e){return e.split(">").filter(t=>/\S/.test(t)).map(t=>{const[n,...r]=t.split(` -`),[i,...o]=n.split(" "),a=r.join("").replace(/\s/g,"");return{id:i,description:o.join(" "),sequence:a}})}class A9{constructor({fasta:t,path:n}){if(t)this.fasta=t;else if(n)this.fasta=new ct(n);else throw new Error("Need to pass fasta or path");this.data=this.fasta.readFile().then(r=>{const i=r.toString("utf8");return IA(i)})}async fetch(t,n,r){const o=(await this.data).find(s=>s.id===t),a=r-n;if(!o)throw new Error(`no sequence with id ${t} exists`);return o.sequence.substr(n,a)}async getSequenceNames(){return(await this.data).map(n=>n.id)}}const E9=Object.freeze(Object.defineProperty({__proto__:null,BgzipIndexedFasta:v9,FetchableSmallFasta:A9,IndexedFasta:kA,parseSmallFasta:IA},Symbol.toStringTag,{value:"Module"})),Yu=BigInt(32);function _9(e,t,n){const r=+!!n,i=+!n;return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<>Yu),o=Number(n&BigInt(4294967295));r?(e.setInt32(t+4,i,r),e.setUint32(t,o,r)):(e.setInt32(t,i,r),e.setUint32(t+4,o,r))}function T9(e,t,n,r){const i=Number(n>>Yu),o=Number(n&BigInt(4294967295));r?(e.setUint32(t+4,i,r),e.setUint32(t,o,r)):(e.setUint32(t,i,r),e.setUint32(t+4,o,r))}"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(e,t){return _9(this,e,t)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(e,t){return S9(this,e,t)}),"setBigInt64"in DataView||(DataView.prototype.setBigInt64=function(e,t,n){C9(this,e,t,n)}),"setBigUint64"in DataView||(DataView.prototype.setBigUint64=function(e,t,n){T9(this,e,t,n)});class k9{constructor(t,n){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references=new Map,this.imports=[],this.reverseImports=new Map,this.useContextVariables=!1,this.importPath=t,this.useContextVariables=n}generateVariable(t){const n=[...this.scopes[this.scopes.length-1]];return t&&n.push(t),n.join(".")}generateOption(t){switch(typeof t){case"number":return t.toString();case"string":return this.generateVariable(t);case"function":return`${this.addImport(t)}.call(${this.generateVariable()}, vars)`}}generateError(t){this.pushCode(`throw new Error(${t});`)}generateTmpVariable(){return"$tmp"+this.tmpVariableCount++}pushCode(t){this.code+=t+` -`}pushPath(t){t&&this.scopes[this.scopes.length-1].push(t)}popPath(t){t&&this.scopes[this.scopes.length-1].pop()}pushScope(t){this.scopes.push([t])}popScope(){this.scopes.pop()}addImport(t){if(!this.importPath)return`(${t})`;let n=this.reverseImports.get(t);return n||(n=this.imports.push(t)-1,this.reverseImports.set(t,n)),`${this.importPath}[${n}]`}addReference(t){this.references.has(t)||this.references.set(t,{resolved:!1,requested:!1})}markResolved(t){const n=this.references.get(t);n&&(n.resolved=!0)}markRequested(t){t.forEach(n=>{const r=this.references.get(n);r&&(r.requested=!0)})}getUnresolvedReferences(){return Array.from(this.references).filter(([t,n])=>!n.resolved&&!n.requested).map(([t,n])=>t)}}const In=new Map,oo="___parser_",Dn={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},Qu={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},Xu={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1};let ke=class Rn{constructor(){this.varName="",this.type="",this.options={},this.endian="be",this.useContextVariables=!1}static start(){return new Rn}primitiveGenerateN(t,n){const r=Qu[t],i=Xu[t];n.pushCode(`${n.generateVariable(this.varName)} = dataView.get${r}(offset, ${i});`),n.pushCode(`offset += ${Dn[t]};`)}primitiveN(t,n,r){return this.setNextParser(t,n,r)}useThisEndian(t){return t+this.endian.toLowerCase()}uint8(t,n={}){return this.primitiveN("uint8",t,n)}uint16(t,n={}){return this.primitiveN(this.useThisEndian("uint16"),t,n)}uint16le(t,n={}){return this.primitiveN("uint16le",t,n)}uint16be(t,n={}){return this.primitiveN("uint16be",t,n)}uint32(t,n={}){return this.primitiveN(this.useThisEndian("uint32"),t,n)}uint32le(t,n={}){return this.primitiveN("uint32le",t,n)}uint32be(t,n={}){return this.primitiveN("uint32be",t,n)}int8(t,n={}){return this.primitiveN("int8",t,n)}int16(t,n={}){return this.primitiveN(this.useThisEndian("int16"),t,n)}int16le(t,n={}){return this.primitiveN("int16le",t,n)}int16be(t,n={}){return this.primitiveN("int16be",t,n)}int32(t,n={}){return this.primitiveN(this.useThisEndian("int32"),t,n)}int32le(t,n={}){return this.primitiveN("int32le",t,n)}int32be(t,n={}){return this.primitiveN("int32be",t,n)}bigIntVersionCheck(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported on this runtime")}int64(t,n={}){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),t,n)}int64be(t,n={}){return this.bigIntVersionCheck(),this.primitiveN("int64be",t,n)}int64le(t,n={}){return this.bigIntVersionCheck(),this.primitiveN("int64le",t,n)}uint64(t,n={}){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),t,n)}uint64be(t,n={}){return this.bigIntVersionCheck(),this.primitiveN("uint64be",t,n)}uint64le(t,n={}){return this.bigIntVersionCheck(),this.primitiveN("uint64le",t,n)}floatle(t,n={}){return this.primitiveN("floatle",t,n)}floatbe(t,n={}){return this.primitiveN("floatbe",t,n)}doublele(t,n={}){return this.primitiveN("doublele",t,n)}doublebe(t,n={}){return this.primitiveN("doublebe",t,n)}bitN(t,n,r){return r.length=t,this.setNextParser("bit",n,r)}bit1(t,n={}){return this.bitN(1,t,n)}bit2(t,n={}){return this.bitN(2,t,n)}bit3(t,n={}){return this.bitN(3,t,n)}bit4(t,n={}){return this.bitN(4,t,n)}bit5(t,n={}){return this.bitN(5,t,n)}bit6(t,n={}){return this.bitN(6,t,n)}bit7(t,n={}){return this.bitN(7,t,n)}bit8(t,n={}){return this.bitN(8,t,n)}bit9(t,n={}){return this.bitN(9,t,n)}bit10(t,n={}){return this.bitN(10,t,n)}bit11(t,n={}){return this.bitN(11,t,n)}bit12(t,n={}){return this.bitN(12,t,n)}bit13(t,n={}){return this.bitN(13,t,n)}bit14(t,n={}){return this.bitN(14,t,n)}bit15(t,n={}){return this.bitN(15,t,n)}bit16(t,n={}){return this.bitN(16,t,n)}bit17(t,n={}){return this.bitN(17,t,n)}bit18(t,n={}){return this.bitN(18,t,n)}bit19(t,n={}){return this.bitN(19,t,n)}bit20(t,n={}){return this.bitN(20,t,n)}bit21(t,n={}){return this.bitN(21,t,n)}bit22(t,n={}){return this.bitN(22,t,n)}bit23(t,n={}){return this.bitN(23,t,n)}bit24(t,n={}){return this.bitN(24,t,n)}bit25(t,n={}){return this.bitN(25,t,n)}bit26(t,n={}){return this.bitN(26,t,n)}bit27(t,n={}){return this.bitN(27,t,n)}bit28(t,n={}){return this.bitN(28,t,n)}bit29(t,n={}){return this.bitN(29,t,n)}bit30(t,n={}){return this.bitN(30,t,n)}bit31(t,n={}){return this.bitN(31,t,n)}bit32(t,n={}){return this.bitN(32,t,n)}namely(t){return In.set(t,this),this.alias=t,this}skip(t,n={}){return this.seek(t,n)}seek(t,n={}){if(n.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:t})}string(t,n){if(!n.zeroTerminated&&!n.length&&!n.greedy)throw new Error("One of length, zeroTerminated, or greedy must be defined for string.");if((n.zeroTerminated||n.length)&&n.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(n.stripNull&&!(n.length||n.greedy))throw new Error("length or greedy must be defined if stripNull is enabled.");return n.encoding=n.encoding||"utf8",this.setNextParser("string",t,n)}buffer(t,n){if(!n.length&&!n.readUntil)throw new Error("length or readUntil must be defined for buffer.");return this.setNextParser("buffer",t,n)}wrapped(t,n){if(typeof n!="object"&&typeof t=="object"&&(n=t,t=""),!n||!n.wrapper||!n.type)throw new Error("Both wrapper and type must be defined for wrapped.");if(!n.length&&!n.readUntil)throw new Error("length or readUntil must be defined for wrapped.");return this.setNextParser("wrapper",t,n)}array(t,n){if(!n.readUntil&&!n.length&&!n.lengthInBytes)throw new Error("One of readUntil, length and lengthInBytes must be defined for array.");if(!n.type)throw new Error("type is required for array.");if(typeof n.type=="string"&&!In.has(n.type)&&!(n.type in Dn))throw new Error(`Array element type "${n.type}" is unkown.`);return this.setNextParser("array",t,n)}choice(t,n){if(typeof n!="object"&&typeof t=="object"&&(n=t,t=""),!n)throw new Error("tag and choices are are required for choice.");if(!n.tag)throw new Error("tag is requird for choice.");if(!n.choices)throw new Error("choices is required for choice.");for(const r in n.choices){const i=parseInt(r,10),o=n.choices[i];if(isNaN(i))throw new Error(`Choice key "${r}" is not a number.`);if(typeof o=="string"&&!In.has(o)&&!(o in Dn))throw new Error(`Choice type "${o}" is unkown.`)}return this.setNextParser("choice",t,n)}nest(t,n){if(typeof n!="object"&&typeof t=="object"&&(n=t,t=""),!n||!n.type)throw new Error("type is required for nest.");if(!(n.type instanceof Rn)&&!In.has(n.type))throw new Error("type must be a known parser name or a Parser object.");if(!(n.type instanceof Rn)&&!t)throw new Error("type must be a Parser object if the variable name is omitted.");return this.setNextParser("nest",t,n)}pointer(t,n){if(!n.offset)throw new Error("offset is required for pointer.");if(!n.type)throw new Error("type is required for pointer.");if(typeof n.type=="string"&&!(n.type in Dn)&&!In.has(n.type))throw new Error(`Pointer type "${n.type}" is unkown.`);return this.setNextParser("pointer",t,n)}saveOffset(t,n={}){return this.setNextParser("saveOffset",t,n)}endianness(t){switch(t.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error('endianness must be one of "little" or "big"')}return this}endianess(t){return this.endianness(t)}useContextVars(t=!0){return this.useContextVariables=t,this}create(t){if(!(t instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=t,this}getContext(t){const n=new k9(t,this.useContextVariables);return n.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(n),n.pushCode(`return ${oo+this.alias}(0).result;`)):this.addRawCode(n),n}getCode(){const t="imports";return this.getContext(t).code}addRawCode(t){t.pushCode("var offset = 0;"),t.pushCode(`var vars = ${this.constructorFn?"new constructorFn()":"{}"};`),t.pushCode("vars.$parent = null;"),t.pushCode("vars.$root = vars;"),this.generate(t),this.resolveReferences(t),t.pushCode("delete vars.$parent;"),t.pushCode("delete vars.$root;"),t.pushCode("return vars;")}addAliasedCode(t){return t.pushCode(`function ${oo+this.alias}(offset, context) {`),t.pushCode(`var vars = ${this.constructorFn?"new constructorFn()":"{}"};`),t.pushCode("var ctx = Object.assign({$parent: null, $root: vars}, context || {});"),t.pushCode("vars = Object.assign(vars, ctx);"),this.generate(t),t.markResolved(this.alias),this.resolveReferences(t),t.pushCode("Object.keys(ctx).forEach(function (item) { delete vars[item]; });"),t.pushCode("return { offset: offset, result: vars };"),t.pushCode("}"),t}resolveReferences(t){const n=t.getUnresolvedReferences();t.markRequested(n),n.forEach(r=>{var i;(i=In.get(r))===null||i===void 0||i.addAliasedCode(t)})}compile(){const t="imports",n=this.getContext(t);this.compiled=new Function(t,"TextDecoder",`return function (buffer, constructorFn) { ${n.code} };`)(n.imports,TextDecoder)}sizeOf(){let t=NaN;if(Object.keys(Dn).indexOf(this.type)>=0)t=Dn[this.type];else if(this.type==="string"&&typeof this.options.length=="number")t=this.options.length;else if(this.type==="buffer"&&typeof this.options.length=="number")t=this.options.length;else if(this.type==="array"&&typeof this.options.length=="number"){let n=NaN;typeof this.options.type=="string"?n=Dn[this.options.type]:this.options.type instanceof Rn&&(n=this.options.type.sizeOf()),t=this.options.length*n}else this.type==="seek"?t=this.options.length:this.type==="nest"?t=this.options.type.sizeOf():this.type||(t=0);return this.next&&(t+=this.next.sizeOf()),t}parse(t){return this.compiled||this.compile(),this.compiled(t,this.constructorFn)}setNextParser(t,n,r){const i=new Rn;return i.type=t,i.varName=n,i.options=r,i.endian=this.endian,this.head?this.head.next=i:this.next=i,this.head=i,this}generate(t){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,t);break;case"bit":this.generateBit(t);break;case"string":this.generateString(t);break;case"buffer":this.generateBuffer(t);break;case"seek":this.generateSeek(t);break;case"nest":this.generateNest(t);break;case"array":this.generateArray(t);break;case"choice":this.generateChoice(t);break;case"pointer":this.generatePointer(t);break;case"saveOffset":this.generateSaveOffset(t);break;case"wrapper":this.generateWrapper(t);break}this.type!=="bit"&&this.generateAssert(t)}const n=t.generateVariable(this.varName);return this.options.formatter&&this.type!=="bit"&&this.generateFormatter(t,n,this.options.formatter),this.generateNext(t)}generateAssert(t){if(!this.options.assert)return;const n=t.generateVariable(this.varName);switch(typeof this.options.assert){case"function":{const r=t.addImport(this.options.assert);t.pushCode(`if (!${r}.call(vars, ${n})) {`)}break;case"number":t.pushCode(`if (${this.options.assert} !== ${n}) {`);break;case"string":t.pushCode(`if (${JSON.stringify(this.options.assert)} !== ${n}) {`);break;default:throw new Error("assert option must be a string, number or a function.")}t.generateError(`"Assertion error: ${n} is " + ${JSON.stringify(this.options.assert.toString())}`),t.pushCode("}")}generateNext(t){return this.next&&(t=this.next.generate(t)),t}generateBit(t){const n=JSON.parse(JSON.stringify(this));if(n.options=this.options,n.generateAssert=this.generateAssert.bind(this),n.generateFormatter=this.generateFormatter.bind(this),n.varName=t.generateVariable(n.varName),t.bitFields.push(n),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){const r=t.generateTmpVariable();t.pushCode(`var ${r} = 0;`);const i=(u=0)=>{let c=0;for(let h=u;h32)break;c+=d}return c},o=u=>(u<=8?(t.pushCode(`${r} = dataView.getUint8(offset);`),u=8):u<=16?(t.pushCode(`${r} = dataView.getUint16(offset);`),u=16):u<=24?(t.pushCode(`${r} = (dataView.getUint16(offset) << 8) | dataView.getUint8(offset + 2);`),u=24):(t.pushCode(`${r} = dataView.getUint32(offset);`),u=32),t.pushCode(`offset += ${u/8};`),u);let a=0;const s=this.endian==="be";let f=0,l=0;t.bitFields.forEach((u,c)=>{let h=u.options.length;if(h>l){if(l){const b=-1>>>32-l;t.pushCode(`${u.varName} = (${r} & 0x${b.toString(16)}) << ${h-l};`),h-=l}a=0,l=f=o(i(c)-l)}const d=s?f-a-h:a,p=-1>>>32-h;t.pushCode(`${u.varName} ${h> ${d} & 0x${p.toString(16)};`),u.options.length===32&&t.pushCode(`${u.varName} >>>= 0`),u.options.assert&&u.generateAssert(t),u.options.formatter&&u.generateFormatter(t,u.varName,u.options.formatter),a+=h,l-=h}),t.bitFields=[]}}generateSeek(t){const n=t.generateOption(this.options.length);t.pushCode(`offset += ${n};`)}generateString(t){const n=t.generateVariable(this.varName),r=t.generateTmpVariable(),i=this.options.encoding,o=i.toLowerCase()==="hex",a='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){const s=this.options.length;t.pushCode(`var ${r} = offset;`),t.pushCode(`while(dataView.getUint8(offset++) !== 0 && offset - ${r} < ${s});`);const f=`offset - ${r} < ${s} ? offset - 1 : offset`;t.pushCode(o?`${n} = Array.from(buffer.subarray(${r}, ${f}), ${a}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, ${f}));`)}else if(this.options.length){const s=t.generateOption(this.options.length);t.pushCode(o?`${n} = Array.from(buffer.subarray(offset, offset + ${s}), ${a}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(offset, offset + ${s}));`),t.pushCode(`offset += ${s};`)}else this.options.zeroTerminated?(t.pushCode(`var ${r} = offset;`),t.pushCode("while(dataView.getUint8(offset++) !== 0);"),t.pushCode(o?`${n} = Array.from(buffer.subarray(${r}, offset - 1), ${a}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, offset - 1));`)):this.options.greedy&&(t.pushCode(`var ${r} = offset;`),t.pushCode("while(buffer.length > offset++);"),t.pushCode(o?`${n} = Array.from(buffer.subarray(${r}, offset), ${a}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, offset));`));this.options.stripNull&&t.pushCode(`${n} = ${n}.replace(/\\x00+$/g, '')`)}generateBuffer(t){const n=t.generateVariable(this.varName);if(typeof this.options.readUntil=="function"){const r=this.options.readUntil,i=t.generateTmpVariable(),o=t.generateTmpVariable();t.pushCode(`var ${i} = offset;`),t.pushCode(`var ${o} = 0;`),t.pushCode("while (offset < buffer.length) {"),t.pushCode(`${o} = dataView.getUint8(offset);`);const a=t.addImport(r);t.pushCode(`if (${a}.call(${t.generateVariable()}, ${o}, buffer.subarray(offset))) break;`),t.pushCode("offset += 1;"),t.pushCode("}"),t.pushCode(`${n} = buffer.subarray(${i}, offset);`)}else if(this.options.readUntil==="eof")t.pushCode(`${n} = buffer.subarray(offset);`);else{const r=t.generateOption(this.options.length);t.pushCode(`${n} = buffer.subarray(offset, offset + ${r});`),t.pushCode(`offset += ${r};`)}this.options.clone&&t.pushCode(`${n} = buffer.constructor.from(${n});`)}generateArray(t){const n=t.generateOption(this.options.length),r=t.generateOption(this.options.lengthInBytes),i=this.options.type,o=t.generateTmpVariable(),a=t.generateVariable(this.varName),s=t.generateTmpVariable(),f=this.options.key,l=typeof f=="string";if(l?t.pushCode(`${a} = {};`):t.pushCode(`${a} = [];`),typeof this.options.readUntil=="function"?t.pushCode("do {"):this.options.readUntil==="eof"?t.pushCode(`for (var ${o} = 0; offset < buffer.length; ${o}++) {`):r!==void 0?t.pushCode(`for (var ${o} = offset + ${r}; offset < ${o}; ) {`):t.pushCode(`for (var ${o} = ${n}; ${o} > 0; ${o}--) {`),typeof i=="string")if(In.get(i)){const u=t.generateTmpVariable();if(t.pushCode(`var ${u} = ${oo+i}(offset, {`),t.useContextVariables){const c=t.generateVariable();t.pushCode(`$parent: ${c},`),t.pushCode(`$root: ${c}.$root,`),!this.options.readUntil&&r===void 0&&t.pushCode(`$index: ${n} - ${o},`)}t.pushCode("});"),t.pushCode(`var ${s} = ${u}.result; offset = ${u}.offset;`),i!==this.alias&&t.addReference(i)}else{const u=Qu[i],c=Xu[i];t.pushCode(`var ${s} = dataView.get${u}(offset, ${c});`),t.pushCode(`offset += ${Dn[i]};`)}else if(i instanceof Rn){t.pushCode(`var ${s} = {};`);const u=t.generateVariable();t.pushScope(s),t.useContextVariables&&(t.pushCode(`${s}.$parent = ${u};`),t.pushCode(`${s}.$root = ${u}.$root;`),!this.options.readUntil&&r===void 0&&t.pushCode(`${s}.$index = ${n} - ${o};`)),i.generate(t),t.useContextVariables&&(t.pushCode(`delete ${s}.$parent;`),t.pushCode(`delete ${s}.$root;`),t.pushCode(`delete ${s}.$index;`)),t.popScope()}if(l?t.pushCode(`${a}[${s}.${f}] = ${s};`):t.pushCode(`${a}.push(${s});`),t.pushCode("}"),typeof this.options.readUntil=="function"){const u=this.options.readUntil,c=t.addImport(u);t.pushCode(`while (!${c}.call(${t.generateVariable()}, ${s}, buffer.subarray(offset)));`)}}generateChoiceCase(t,n,r){if(typeof r=="string"){const i=t.generateVariable(this.varName);if(In.has(r)){const o=t.generateTmpVariable();t.pushCode(`var ${o} = ${oo+r}(offset, {`),t.useContextVariables&&(t.pushCode(`$parent: ${i}.$parent,`),t.pushCode(`$root: ${i}.$root,`)),t.pushCode("});"),t.pushCode(`${i} = ${o}.result; offset = ${o}.offset;`),r!==this.alias&&t.addReference(r)}else{const o=Qu[r],a=Xu[r];t.pushCode(`${i} = dataView.get${o}(offset, ${a});`),t.pushCode(`offset += ${Dn[r]}`)}}else r instanceof Rn&&(t.pushPath(n),r.generate(t),t.popPath(n))}generateChoice(t){const n=t.generateOption(this.options.tag),r=t.generateVariable(this.varName);if(this.varName&&(t.pushCode(`${r} = {};`),t.useContextVariables)){const i=t.generateVariable();t.pushCode(`${r}.$parent = ${i};`),t.pushCode(`${r}.$root = ${i}.$root;`)}t.pushCode(`switch(${n}) {`);for(const i in this.options.choices){const o=parseInt(i,10),a=this.options.choices[o];t.pushCode(`case ${o}:`),this.generateChoiceCase(t,this.varName,a),t.pushCode("break;")}t.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(t,this.varName,this.options.defaultChoice):t.generateError(`"Met undefined tag value " + ${n} + " at choice"`),t.pushCode("}"),this.varName&&t.useContextVariables&&(t.pushCode(`delete ${r}.$parent;`),t.pushCode(`delete ${r}.$root;`))}generateNest(t){const n=t.generateVariable(this.varName);if(this.options.type instanceof Rn){if(this.varName&&(t.pushCode(`${n} = {};`),t.useContextVariables)){const r=t.generateVariable();t.pushCode(`${n}.$parent = ${r};`),t.pushCode(`${n}.$root = ${r}.$root;`)}t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName),this.varName&&t.useContextVariables&&t.useContextVariables&&(t.pushCode(`delete ${n}.$parent;`),t.pushCode(`delete ${n}.$root;`))}else if(In.has(this.options.type)){const r=t.generateTmpVariable();if(t.pushCode(`var ${r} = ${oo+this.options.type}(offset, {`),t.useContextVariables){const i=t.generateVariable();t.pushCode(`$parent: ${i},`),t.pushCode(`$root: ${i}.$root,`)}t.pushCode("});"),t.pushCode(`${n} = ${r}.result; offset = ${r}.offset;`),this.options.type!==this.alias&&t.addReference(this.options.type)}}generateWrapper(t){const n=t.generateVariable(this.varName),r=t.generateTmpVariable();if(typeof this.options.readUntil=="function"){const f=this.options.readUntil,l=t.generateTmpVariable(),u=t.generateTmpVariable();t.pushCode(`var ${l} = offset;`),t.pushCode(`var ${u} = 0;`),t.pushCode("while (offset < buffer.length) {"),t.pushCode(`${u} = dataView.getUint8(offset);`);const c=t.addImport(f);t.pushCode(`if (${c}.call(${t.generateVariable()}, ${u}, buffer.subarray(offset))) break;`),t.pushCode("offset += 1;"),t.pushCode("}"),t.pushCode(`${r} = buffer.subarray(${l}, offset);`)}else if(this.options.readUntil==="eof")t.pushCode(`${r} = buffer.subarray(offset);`);else{const f=t.generateOption(this.options.length);t.pushCode(`${r} = buffer.subarray(offset, offset + ${f});`),t.pushCode(`offset += ${f};`)}this.options.clone&&t.pushCode(`${r} = buffer.constructor.from(${r});`);const i=t.generateTmpVariable(),o=t.generateTmpVariable(),a=t.generateTmpVariable(),s=t.addImport(this.options.wrapper);if(t.pushCode(`${r} = ${s}.call(this, ${r}).subarray(0);`),t.pushCode(`var ${i} = buffer;`),t.pushCode(`var ${o} = offset;`),t.pushCode(`var ${a} = dataView;`),t.pushCode(`buffer = ${r};`),t.pushCode("offset = 0;"),t.pushCode("dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.options.type instanceof Rn)this.varName&&t.pushCode(`${n} = {};`),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(In.has(this.options.type)){const f=t.generateTmpVariable();t.pushCode(`var ${f} = ${oo+this.options.type}(0);`),t.pushCode(`${n} = ${f}.result;`),this.options.type!==this.alias&&t.addReference(this.options.type)}t.pushCode(`buffer = ${i};`),t.pushCode(`dataView = ${a};`),t.pushCode(`offset = ${o};`)}generateFormatter(t,n,r){if(typeof r=="function"){const i=t.addImport(r);t.pushCode(`${n} = ${i}.call(${t.generateVariable()}, ${n});`)}}generatePointer(t){const n=this.options.type,r=t.generateOption(this.options.offset),i=t.generateTmpVariable(),o=t.generateVariable(this.varName);if(t.pushCode(`var ${i} = offset;`),t.pushCode(`offset = ${r};`),this.options.type instanceof Rn){if(t.pushCode(`${o} = {};`),t.useContextVariables){const a=t.generateVariable();t.pushCode(`${o}.$parent = ${a};`),t.pushCode(`${o}.$root = ${a}.$root;`)}t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName),t.useContextVariables&&(t.pushCode(`delete ${o}.$parent;`),t.pushCode(`delete ${o}.$root;`))}else if(In.has(this.options.type)){const a=t.generateTmpVariable();if(t.pushCode(`var ${a} = ${oo+this.options.type}(offset, {`),t.useContextVariables){const s=t.generateVariable();t.pushCode(`$parent: ${s},`),t.pushCode(`$root: ${s}.$root,`)}t.pushCode("});"),t.pushCode(`${o} = ${a}.result; offset = ${a}.offset;`),this.options.type!==this.alias&&t.addReference(this.options.type)}else if(Object.keys(Dn).indexOf(this.options.type)>=0){const a=Qu[n],s=Xu[n];t.pushCode(`${o} = dataView.get${a}(offset, ${s});`),t.pushCode(`offset += ${Dn[n]};`)}t.pushCode(`offset = ${i};`)}generateSaveOffset(t){const n=t.generateVariable(this.varName);t.pushCode(`${n} = offset`)}};var DA={},np={},ao={},cl={};Object.defineProperty(cl,"__esModule",{value:!0});function rp(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function BA(e,t){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function hl(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function B9(e,t){if(t&&(typeof t=="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return hl(e)}function F9(e){var t=D9();return function(){var r=aa(e),i;if(t){var o=aa(this).constructor;i=Reflect.construct(r,arguments,o)}else i=r.apply(this,arguments);return B9(this,i)}}function R9(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&(e=aa(e),e!==null););return e}function Ku(){return typeof Reflect<"u"&&Reflect.get?Ku=Reflect.get.bind():Ku=function(t,n,r){var i=R9(t,n);if(i){var o=Object.getOwnPropertyDescriptor(i,n);return o.get?o.get.call(arguments.length<3?t:r):o.value}},Ku.apply(this,arguments)}var FA=function(){function e(){rp(this,e),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return ip(e,[{key:"addEventListener",value:function(n,r,i){n in this.listeners||(this.listeners[n]=[]),this.listeners[n].push({callback:r,options:i})}},{key:"removeEventListener",value:function(n,r){if(n in this.listeners){for(var i=this.listeners[n],o=0,a=i.length;o"u")i=new Error("This operation was aborted"),i.name="AbortError";else try{i=new DOMException("signal is aborted without reason")}catch{i=new Error("This operation was aborted"),i.name="AbortError"}this.signal.reason=i,this.signal.dispatchEvent(r)}},{key:"toString",value:function(){return"[object AbortController]"}}]),e}();typeof Symbol<"u"&&Symbol.toStringTag&&(RA.prototype[Symbol.toStringTag]="AbortController",ap.prototype[Symbol.toStringTag]="AbortSignal");function P9(e){return e.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):typeof e.Request=="function"&&!e.Request.prototype.hasOwnProperty("signal")||!e.AbortController}function M9(e){typeof e=="function"&&(e={fetch:e});var t=e,n=t.fetch,r=t.Request,i=r===void 0?n.Request:r,o=t.AbortController,a=t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL,s=a===void 0?!1:a;if(!P9({fetch:n,Request:i,AbortController:o,__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL:s}))return{fetch:n,Request:f};var f=i;(f&&!f.prototype.hasOwnProperty("signal")||s)&&(f=function(h,d){var p;d&&d.signal&&(p=d.signal,delete d.signal);var b=new i(h,d);return p&&Object.defineProperty(b,"signal",{writable:!1,enumerable:!1,configurable:!0,value:p}),b},f.prototype=i.prototype);var l=n,u=function(h,d){var p=f&&f.prototype.isPrototypeOf(h)?h.signal:d?d.signal:void 0;if(p){var b;try{b=new DOMException("Aborted","AbortError")}catch{b=new Error("Aborted"),b.name="AbortError"}if(p.aborted)return Promise.reject(b);var y=new Promise(function(w,S){p.addEventListener("abort",function(){return S(b)},{once:!0})});return d&&d.signal&&delete d.signal,Promise.race([y,l(h,d)])}return l(h,d)};return{fetch:u,Request:f}}cl.AbortController=RA,cl.AbortSignal=ap,cl.abortableFetch=M9,Object.defineProperty(ao,"__esModule",{value:!0}),ao.AbortSignal=ao.AbortController=void 0;const PA=cl;var Ju=function(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof nn<"u")return nn;throw new Error("unable to locate global object")};let O9=typeof Ju().AbortController>"u"?PA.AbortController:Ju().AbortController;ao.AbortController=O9;let N9=typeof Ju().AbortController>"u"?PA.AbortSignal:Ju().AbortSignal;ao.AbortSignal=N9;var sp={};Object.defineProperty(sp,"__esModule",{value:!0});const L9=ao;class z9{}class U9{constructor(){this.signals=new Set,this.abortController=new L9.AbortController}addSignal(t=new z9){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(t),t.aborted?this.handleAborted(t):typeof t.addEventListener=="function"&&t.addEventListener("abort",()=>{this.handleAborted(t)})}handleAborted(t){this.signals.delete(t),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}sp.default=U9;var lp={};Object.defineProperty(lp,"__esModule",{value:!0});class G9{constructor(){this.callbacks=new Set}addCallback(t=()=>{}){this.callbacks.add(t),t(this.currentMessage)}callback(t){this.currentMessage=t,this.callbacks.forEach(n=>{n(t)})}}lp.default=G9;var MA=nn&&nn.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(np,"__esModule",{value:!0});const H9=ao,V9=MA(sp),j9=MA(lp);class ec{constructor({fill:t,cache:n}){if(typeof t!="function")throw new TypeError("must pass a fill function");if(typeof n!="object")throw new TypeError("must pass a cache object");if(typeof n.get!="function"||typeof n.set!="function"||typeof n.delete!="function")throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=n,this.fillCallback=t}static isAbortException(t){return t.name==="AbortError"||t.code==="ERR_ABORTED"||t.message==="AbortError: aborted"||t.message==="Error: aborted"}evict(t,n){this.cache.get(t)===n&&this.cache.delete(t)}fill(t,n,r,i){const o=new V9.default,a=new j9.default;a.addCallback(i);const s={aborter:o,promise:this.fillCallback(n,o.signal,f=>{a.callback(f)}),settled:!1,statusReporter:a,get aborted(){return this.aborter.signal.aborted}};s.aborter.addSignal(r),s.aborter.signal.addEventListener("abort",()=>{s.settled||this.evict(t,s)}),s.promise.then(()=>{s.settled=!0},()=>{s.settled=!0,this.evict(t,s)}).catch(f=>{throw console.error(f),f}),this.cache.set(t,s)}static checkSinglePromise(t,n){function r(){if(n&&n.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return t.then(i=>(r(),i),i=>{throw r(),i})}has(t){return this.cache.has(t)}get(t,n,r,i){if(!r&&n instanceof H9.AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const o=this.cache.get(t);return o?o.aborted&&!o.settled?(this.evict(t,o),this.get(t,n,r,i)):o.settled?o.promise:(o.aborter.addSignal(r),o.statusReporter.addCallback(i),ec.checkSinglePromise(o.promise,r)):(this.fill(t,n,r,i),ec.checkSinglePromise(this.cache.get(t).promise,r))}delete(t){const n=this.cache.get(t);n&&(n.settled||n.aborter.abort(),this.cache.delete(t))}clear(){const t=this.cache.keys();let n=0;for(let r=t.next();!r.done;r=t.next())this.delete(r.value),n+=1;return n}}np.default=ec;var q9=nn&&nn.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(DA,"__esModule",{value:!0});const W9=q9(np);var tc=DA.default=W9.default;class $9{constructor(t={}){if(!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=t.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(t,n){this.cache.set(t,n),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t)){const n=this.oldCache.get(t);return this.oldCache.delete(t),this._set(t,n),n}}set(t,n){return this.cache.has(t)?this.cache.set(t,n):this._set(t,n),this}has(t){return this.cache.has(t)||this.oldCache.has(t)}peek(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t))return this.oldCache.get(t)}delete(t){const n=this.cache.delete(t);return n&&this._size--,this.oldCache.delete(t)||n}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[t]of this)yield t}*values(){for(const[,t]of this)yield t}*[Symbol.iterator](){for(const t of this.cache)yield t;for(const t of this.oldCache){const[n]=t;this.cache.has(n)||(yield t)}}get size(){let t=0;for(const n of this.oldCache.keys())this.cache.has(n)||t++;return this._size+t}}var Z9=$9;const nc=$s(Z9);class ti{constructor(t,n){this.ranges=arguments.length===2?[{min:t,max:n}]:0 in t?Object.assign({},t):[t]}min(){return this.ranges[0].min}max(){return this.ranges[this.ranges.length-1].max}contains(t){for(let n=0;n=t)return!0}return!1}isContiguous(){return this.ranges.length>1}getRanges(){return this.ranges.map(t=>new ti(t.min,t.max))}toString(){return this.ranges.map(t=>`[${t.min}-${t.max}]`).join(",")}union(t){const n=this.getRanges().concat(t.getRanges()).sort(this.rangeOrder),r=[];let i=n[0];for(let o=1;oi.max()+1?(r.push(i),i=a):a.max()>i.max()&&(i=new ti(i.min(),a.max()))}return r.push(i),r.length===1?r[0]:new ti(r)}intersection(t){let n=this,r=t;const i=this.ranges(),o=r.ranges(),a=i.length,s=o.length;let f=0,l=0;const u=[];for(;f=c&&u.push(new ti(c,h)),n.max()>r.max()?l+=1:f+=1}if(u.length===0)throw new Error("found range of length 0");return u.length===1?u[0]:new ti(u)}coverage(){let t=0;const n=this.ranges();for(const r of n)t+=r.max()-r.min()+1;return t}rangeOrder(t,n){let r=t,i=n;return arguments.length<2&&(i=r,r=this),r.min()i.min()?1:r.max()r.max()?1:0}}/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */const Y9=4,OA=0,NA=1,Q9=2;function sa(e){let t=e.length;for(;--t>=0;)e[t]=0}const X9=0,LA=1,K9=2,J9=3,eO=258,fp=29,dl=256,pl=dl+1+fp,la=30,up=19,zA=2*pl+1,so=15,cp=16,tO=7,hp=256,UA=16,GA=17,HA=18,dp=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),rc=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),nO=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),VA=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),rO=512,hr=new Array((pl+2)*2);sa(hr);const gl=new Array(la*2);sa(gl);const ml=new Array(rO);sa(ml);const bl=new Array(eO-J9+1);sa(bl);const pp=new Array(fp);sa(pp);const ic=new Array(la);sa(ic);function gp(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let jA,qA,WA;function mp(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}const $A=e=>e<256?ml[e]:ml[256+(e>>>7)],yl=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ut=(e,t,n)=>{e.bi_valid>cp-n?(e.bi_buf|=t<>cp-e.bi_valid,e.bi_valid+=n-cp):(e.bi_buf|=t<{Ut(e,n[t*2],n[t*2+1])},ZA=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},iO=e=>{e.bi_valid===16?(yl(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},oO=(e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,o=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,f=t.stat_desc.max_length;let l,u,c,h,d,p,b=0;for(h=0;h<=so;h++)e.bl_count[h]=0;for(n[e.heap[e.heap_max]*2+1]=0,l=e.heap_max+1;lf&&(h=f,b++),n[u*2+1]=h,!(u>r)&&(e.bl_count[h]++,d=0,u>=s&&(d=a[u-s]),p=n[u*2],e.opt_len+=p*(h+d),o&&(e.static_len+=p*(i[u*2+1]+d)));if(b!==0){do{for(h=f-1;e.bl_count[h]===0;)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[f]--,b-=2}while(b>0);for(h=f;h!==0;h--)for(u=e.bl_count[h];u!==0;)c=e.heap[--l],!(c>r)&&(n[c*2+1]!==h&&(e.opt_len+=(h-n[c*2+1])*n[c*2],n[c*2+1]=h),u--)}},YA=(e,t,n)=>{const r=new Array(so+1);let i=0,o,a;for(o=1;o<=so;o++)i=i+n[o-1]<<1,r[o]=i;for(a=0;a<=t;a++){let s=e[a*2+1];s!==0&&(e[a*2]=ZA(r[s]++,s))}},aO=()=>{let e,t,n,r,i;const o=new Array(so+1);for(n=0,r=0;r>=7;r{let t;for(t=0;t{e.bi_valid>8?yl(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},KA=(e,t,n,r)=>{const i=t*2,o=n*2;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,o=0,a,s;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+o++]&255,r+=(e.pending_buf[e.sym_buf+o++]&255)<<8,i=e.pending_buf[e.sym_buf+o++],r===0?Zn(e,i,t):(a=bl[i],Zn(e,a+dl+1,t),s=dp[a],s!==0&&(i-=pp[a],Ut(e,i,s)),r--,a=$A(r),Zn(e,a,n),s=rc[a],s!==0&&(r-=ic[a],Ut(e,r,s)));while(o{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,o=t.stat_desc.elems;let a,s,f=-1,l;for(e.heap_len=0,e.heap_max=zA,a=0;a>1;a>=1;a--)bp(e,n,a);l=o;do a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],bp(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=s,n[l*2]=n[a*2]+n[s*2],e.depth[l]=(e.depth[a]>=e.depth[s]?e.depth[a]:e.depth[s])+1,n[a*2+1]=n[s*2+1]=l,e.heap[1]=l++,bp(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],oO(e,t),YA(n,f,e.bl_count)},e2=(e,t,n)=>{let r,i=-1,o,a=t[0*2+1],s=0,f=7,l=4;for(a===0&&(f=138,l=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)o=a,a=t[(r+1)*2+1],!(++s{let r,i=-1,o,a=t[0*2+1],s=0,f=7,l=4;for(a===0&&(f=138,l=3),r=0;r<=n;r++)if(o=a,a=t[(r+1)*2+1],!(++s{let t;for(e2(e,e.dyn_ltree,e.l_desc.max_code),e2(e,e.dyn_dtree,e.d_desc.max_code),yp(e,e.bl_desc),t=up-1;t>=3&&e.bl_tree[VA[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},lO=(e,t,n,r)=>{let i;for(Ut(e,t-257,5),Ut(e,n-1,5),Ut(e,r-4,4),i=0;i{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return OA;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return NA;for(n=32;n{n2||(aO(),n2=!0),e.l_desc=new mp(e.dyn_ltree,jA),e.d_desc=new mp(e.dyn_dtree,qA),e.bl_desc=new mp(e.bl_tree,WA),e.bi_buf=0,e.bi_valid=0,QA(e)},r2=(e,t,n,r)=>{Ut(e,(X9<<1)+(r?1:0),3),XA(e),yl(e,n),yl(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},cO=e=>{Ut(e,LA<<1,3),Zn(e,hp,hr),iO(e)},hO=(e,t,n,r)=>{let i,o,a=0;e.level>0?(e.strm.data_type===Q9&&(e.strm.data_type=fO(e)),yp(e,e.l_desc),yp(e,e.d_desc),a=sO(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&t!==-1?r2(e,t,n,r):e.strategy===Y9||o===i?(Ut(e,(LA<<1)+(r?1:0),3),JA(e,hr,gl)):(Ut(e,(K9<<1)+(r?1:0),3),lO(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),JA(e,e.dyn_ltree,e.dyn_dtree)),QA(e),r&&XA(e)},dO=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(bl[n]+dl+1)*2]++,e.dyn_dtree[$A(t)*2]++),e.sym_next===e.sym_end);var pO=uO,gO=r2,mO=hO,bO=dO,yO=cO,wO={_tr_init:pO,_tr_stored_block:gO,_tr_flush_block:mO,_tr_tally:bO,_tr_align:yO},wl=(e,t,n,r)=>{let i=e&65535|0,o=e>>>16&65535|0,a=0;for(;n!==0;){a=n>2e3?2e3:n,n-=a;do i=i+t[r++]|0,o=o+i|0;while(--a);i%=65521,o%=65521}return i|o<<16|0};const xO=()=>{let e,t=[];for(var 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},vO=new Uint32Array(xO());var ht=(e,t,n,r)=>{const i=vO,o=r+n;e^=-1;for(let a=r;a>>8^i[(e^t[a])&255];return e^-1},fa={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"},xl={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:AO,_tr_stored_block:wp,_tr_flush_block:EO,_tr_tally:ni,_tr_align:_O}=wO,{Z_NO_FLUSH:ri,Z_PARTIAL_FLUSH:SO,Z_FULL_FLUSH:CO,Z_FINISH:cn,Z_BLOCK:i2,Z_OK:bt,Z_STREAM_END:o2,Z_STREAM_ERROR:Yn,Z_DATA_ERROR:TO,Z_BUF_ERROR:xp,Z_DEFAULT_COMPRESSION:kO,Z_FILTERED:IO,Z_HUFFMAN_ONLY:oc,Z_RLE:DO,Z_FIXED:BO,Z_DEFAULT_STRATEGY:FO,Z_UNKNOWN:RO,Z_DEFLATED:ac}=xl,PO=9,MO=15,OO=8,NO=29,vp=256+1+NO,LO=30,zO=19,UO=2*vp+1,GO=15,he=3,ii=258,Qn=ii+he+1,HO=32,ua=42,Ap=57,Ep=69,_p=73,Sp=91,Cp=103,lo=113,vl=666,It=1,ca=2,fo=3,ha=4,VO=3,uo=(e,t)=>(e.msg=fa[t],t),a2=e=>e*2-(e>4?9:0),oi=e=>{let t=e.length;for(;--t>=0;)e[t]=0},jO=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)};let ai=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Xt=(e,t)=>{EO(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Qt(e.strm)},ve=(e,t)=>{e.pending_buf[e.pending++]=t},Al=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},Tp=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=wl(e.adler,t,i,n):e.state.wrap===2&&(e.adler=ht(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},s2=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,o,a=e.prev_length,s=e.nice_match;const f=e.strstart>e.w_size-Qn?e.strstart-(e.w_size-Qn):0,l=e.window,u=e.w_mask,c=e.prev,h=e.strstart+ii;let d=l[r+a-1],p=l[r+a];e.prev_length>=e.good_match&&(n>>=2),s>e.lookahead&&(s=e.lookahead);do if(i=t,!(l[i+a]!==p||l[i+a-1]!==d||l[i]!==l[r]||l[++i]!==l[r+1])){r+=2,i++;do;while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&ra){if(e.match_start=t,a=o,o>=s)break;d=l[r+a-1],p=l[r+a]}}while((t=c[t&u])>f&&--n!==0);return a<=e.lookahead?a:e.lookahead},da=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Qn)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),jO(e),r+=t),e.strm.avail_in===0)break;if(n=Tp(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=he)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=ai(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=ai(e,e.ins_h,e.window[i+he-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,o,a=0,s=e.strm.avail_in;do{if(r=65535,o=e.bi_valid+42>>3,e.strm.avail_outi+e.strm.avail_in&&(r=i+e.strm.avail_in),r>o&&(r=o),r>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,Qt(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(Tp(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(a===0);return s-=e.strm.avail_in,s&&(s>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=s&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-s,e.strm.next_in),e.strstart),e.strstart+=s,e.insert+=s>e.w_size-e.insert?e.w_size-e.insert:s),e.block_start=e.strstart),e.high_watero&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(Tp(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,n=o>e.w_size?e.w_size:o,i=e.strstart-e.block_start,(i>=n||(i||t===cn)&&t!==ri&&e.strm.avail_in===0&&i<=o)&&(r=i>o?o:i,a=t===cn&&e.strm.avail_in===0&&r===i?1:0,wp(e,e.block_start,r,a),e.block_start+=r,Qt(e.strm)),a?fo:It)},kp=(e,t)=>{let n,r;for(;;){if(e.lookahead=he&&(e.ins_h=ai(e,e.ins_h,e.window[e.strstart+he-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-Qn&&(e.match_length=s2(e,n)),e.match_length>=he)if(r=ni(e,e.strstart-e.match_start,e.match_length-he),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=he){e.match_length--;do e.strstart++,e.ins_h=ai(e,e.ins_h,e.window[e.strstart+he-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=ai(e,e.ins_h,e.window[e.strstart+1]);else r=ni(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Xt(e,!1),e.strm.avail_out===0))return It}return e.insert=e.strstart{let n,r,i;for(;;){if(e.lookahead=he&&(e.ins_h=ai(e,e.ins_h,e.window[e.strstart+he-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=he-1,n!==0&&e.prev_length4096)&&(e.match_length=he-1)),e.prev_length>=he&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-he,r=ni(e,e.strstart-1-e.prev_match,e.prev_length-he),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=ai(e,e.ins_h,e.window[e.strstart+he-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=he-1,e.strstart++,r&&(Xt(e,!1),e.strm.avail_out===0))return It}else if(e.match_available){if(r=ni(e,0,e.window[e.strstart-1]),r&&Xt(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return It}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=ni(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let n,r,i,o;const a=e.window;for(;;){if(e.lookahead<=ii){if(da(e),e.lookahead<=ii&&t===ri)return It;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=he&&e.strstart>0&&(i=e.strstart-1,r=a[i],r===a[++i]&&r===a[++i]&&r===a[++i])){o=e.strstart+ii;do;while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=he?(n=ni(e,1,e.match_length-he),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=ni(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Xt(e,!1),e.strm.avail_out===0))return It}return e.insert=0,t===cn?(Xt(e,!0),e.strm.avail_out===0?fo:ha):e.sym_next&&(Xt(e,!1),e.strm.avail_out===0)?It:ca},WO=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(da(e),e.lookahead===0)){if(t===ri)return It;break}if(e.match_length=0,n=ni(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Xt(e,!1),e.strm.avail_out===0))return It}return e.insert=0,t===cn?(Xt(e,!0),e.strm.avail_out===0?fo:ha):e.sym_next&&(Xt(e,!1),e.strm.avail_out===0)?It:ca};function Xn(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const El=[new Xn(0,0,0,0,l2),new Xn(4,4,8,4,kp),new Xn(4,5,16,8,kp),new Xn(4,6,32,32,kp),new Xn(4,4,16,16,pa),new Xn(8,16,32,32,pa),new Xn(8,16,128,128,pa),new Xn(8,32,128,256,pa),new Xn(32,128,258,1024,pa),new Xn(32,258,258,4096,pa)],$O=e=>{e.window_size=2*e.w_size,oi(e.head),e.max_lazy_match=El[e.level].max_lazy,e.good_match=El[e.level].good_length,e.nice_match=El[e.level].nice_length,e.max_chain_length=El[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=he-1,e.match_available=0,e.ins_h=0};function ZO(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ac,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(UO*2),this.dyn_dtree=new Uint16Array((2*LO+1)*2),this.bl_tree=new Uint16Array((2*zO+1)*2),oi(this.dyn_ltree),oi(this.dyn_dtree),oi(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(GO+1),this.heap=new Uint16Array(2*vp+1),oi(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*vp+1),oi(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const _l=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==ua&&t.status!==Ap&&t.status!==Ep&&t.status!==_p&&t.status!==Sp&&t.status!==Cp&&t.status!==lo&&t.status!==vl?1:0},f2=e=>{if(_l(e))return uo(e,Yn);e.total_in=e.total_out=0,e.data_type=RO;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Ap:t.wrap?ua:lo,e.adler=t.wrap===2?0:1,t.last_flush=-2,AO(t),bt},u2=e=>{const t=f2(e);return t===bt&&$O(e.state),t},YO=(e,t)=>_l(e)||e.state.wrap!==2?Yn:(e.state.gzhead=t,bt),c2=(e,t,n,r,i,o)=>{if(!e)return Yn;let a=1;if(t===kO&&(t=6),r<0?(a=0,r=-r):r>15&&(a=2,r-=16),i<1||i>PO||n!==ac||r<8||r>15||t<0||t>9||o<0||o>BO||r===8&&a!==1)return uo(e,Yn);r===8&&(r=9);const s=new ZO;return e.state=s,s.strm=e,s.status=ua,s.wrap=a,s.gzhead=null,s.w_bits=r,s.w_size=1<c2(e,t,ac,MO,OO,FO),XO=(e,t)=>{if(_l(e)||t>i2||t<0)return e?uo(e,Yn):Yn;const n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===vl&&t!==cn)return uo(e,e.avail_out===0?xp:Yn);const r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Qt(e),e.avail_out===0)return n.last_flush=-1,bt}else if(e.avail_in===0&&a2(t)<=a2(r)&&t!==cn)return uo(e,xp);if(n.status===vl&&e.avail_in!==0)return uo(e,xp);if(n.status===ua&&n.wrap===0&&(n.status=lo),n.status===ua){let i=ac+(n.w_bits-8<<4)<<8,o=-1;if(n.strategy>=oc||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,i|=o<<6,n.strstart!==0&&(i|=HO),i+=31-i%31,Al(n,i),n.strstart!==0&&(Al(n,e.adler>>>16),Al(n,e.adler&65535)),e.adler=1,n.status=lo,Qt(e),n.pending!==0)return n.last_flush=-1,bt}if(n.status===Ap){if(e.adler=0,ve(n,31),ve(n,139),ve(n,8),n.gzhead)ve(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),ve(n,n.gzhead.time&255),ve(n,n.gzhead.time>>8&255),ve(n,n.gzhead.time>>16&255),ve(n,n.gzhead.time>>24&255),ve(n,n.level===9?2:n.strategy>=oc||n.level<2?4:0),ve(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(ve(n,n.gzhead.extra.length&255),ve(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=ht(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Ep;else if(ve(n,0),ve(n,0),ve(n,0),ve(n,0),ve(n,0),ve(n,n.level===9?2:n.strategy>=oc||n.level<2?4:0),ve(n,VO),n.status=lo,Qt(e),n.pending!==0)return n.last_flush=-1,bt}if(n.status===Ep){if(n.gzhead.extra){let i=n.pending,o=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+o>n.pending_buf_size;){let s=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+s),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=ht(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=s,Qt(e),n.pending!==0)return n.last_flush=-1,bt;i=0,o-=s}let a=new Uint8Array(n.gzhead.extra);n.pending_buf.set(a.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending+=o,n.gzhead.hcrc&&n.pending>i&&(e.adler=ht(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=_p}if(n.status===_p){if(n.gzhead.name){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=ht(e.adler,n.pending_buf,n.pending-i,i)),Qt(e),n.pending!==0)return n.last_flush=-1,bt;i=0}n.gzindexi&&(e.adler=ht(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Sp}if(n.status===Sp){if(n.gzhead.comment){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=ht(e.adler,n.pending_buf,n.pending-i,i)),Qt(e),n.pending!==0)return n.last_flush=-1,bt;i=0}n.gzindexi&&(e.adler=ht(e.adler,n.pending_buf,n.pending-i,i))}n.status=Cp}if(n.status===Cp){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Qt(e),n.pending!==0))return n.last_flush=-1,bt;ve(n,e.adler&255),ve(n,e.adler>>8&255),e.adler=0}if(n.status=lo,Qt(e),n.pending!==0)return n.last_flush=-1,bt}if(e.avail_in!==0||n.lookahead!==0||t!==ri&&n.status!==vl){let i=n.level===0?l2(n,t):n.strategy===oc?WO(n,t):n.strategy===DO?qO(n,t):El[n.level].func(n,t);if((i===fo||i===ha)&&(n.status=vl),i===It||i===fo)return e.avail_out===0&&(n.last_flush=-1),bt;if(i===ca&&(t===SO?_O(n):t!==i2&&(wp(n,0,0,!1),t===CO&&(oi(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Qt(e),e.avail_out===0))return n.last_flush=-1,bt}return t!==cn?bt:n.wrap<=0?o2:(n.wrap===2?(ve(n,e.adler&255),ve(n,e.adler>>8&255),ve(n,e.adler>>16&255),ve(n,e.adler>>24&255),ve(n,e.total_in&255),ve(n,e.total_in>>8&255),ve(n,e.total_in>>16&255),ve(n,e.total_in>>24&255)):(Al(n,e.adler>>>16),Al(n,e.adler&65535)),Qt(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?bt:o2)},KO=e=>{if(_l(e))return Yn;const t=e.state.status;return e.state=null,t===lo?uo(e,TO):bt},JO=(e,t)=>{let n=t.length;if(_l(e))return Yn;const r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==ua||r.lookahead)return Yn;if(i===1&&(e.adler=wl(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(oi(r.head),r.strstart=0,r.block_start=0,r.insert=0);let f=new Uint8Array(r.w_size);f.set(t.subarray(n-r.w_size,n),0),t=f,n=r.w_size}const o=e.avail_in,a=e.next_in,s=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,da(r);r.lookahead>=he;){let f=r.strstart,l=r.lookahead-(he-1);do r.ins_h=ai(r,r.ins_h,r.window[f+he-1]),r.prev[f&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=f,f++;while(--l);r.strstart=f,r.lookahead=he-1,da(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=he-1,r.match_available=0,e.next_in=a,e.input=s,e.avail_in=o,r.wrap=i,bt};var eN=QO,tN=c2,nN=u2,rN=f2,iN=YO,oN=XO,aN=KO,sN=JO,lN="pako deflate (from Nodeca project)",Sl={deflateInit:eN,deflateInit2:tN,deflateReset:nN,deflateResetKeep:rN,deflateSetHeader:iN,deflate:oN,deflateEnd:aN,deflateSetDictionary:sN,deflateInfo:lN};const fN=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var uN=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(const r in n)fN(n,r)&&(e[r]=n[r])}}return e},cN=e=>{let t=0;for(let r=0,i=e.length;r=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Cl[254]=Cl[254]=1;var hN=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,o,a=e.length,s=0;for(i=0;i>>6,t[o++]=128|n&63):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|n&63):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|n&63);return t};const dN=(e,t)=>{if(t<65534&&e.subarray&&h2)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{const n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i;const o=new Array(n*2);for(i=0,r=0;r4){o[i++]=65533,r+=s-1;continue}for(a&=s===2?31:s===3?15:7;s>1&&r1){o[i++]=65533;continue}a<65536?o[i++]=a:(a-=65536,o[i++]=55296|a>>10&1023,o[i++]=56320|a&1023)}return dN(o,i)},gN=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+Cl[e[n]]>t?n:t},Tl={string2buf:hN,buf2string:pN,utf8border:gN};function mN(){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 d2=mN;const p2=Object.prototype.toString,{Z_NO_FLUSH:bN,Z_SYNC_FLUSH:yN,Z_FULL_FLUSH:wN,Z_FINISH:xN,Z_OK:lc,Z_STREAM_END:vN,Z_DEFAULT_COMPRESSION:AN,Z_DEFAULT_STRATEGY:EN,Z_DEFLATED:_N}=xl;function Ip(e){this.options=sc.assign({level:AN,method:_N,chunkSize:16384,windowBits:15,memLevel:8,strategy:EN},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d2,this.strm.avail_out=0;let n=Sl.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==lc)throw new Error(fa[n]);if(t.header&&Sl.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=Tl.string2buf(t.dictionary):p2.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=Sl.deflateSetDictionary(this.strm,r),n!==lc)throw new Error(fa[n]);this._dict_set=!0}}Ip.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,o;if(this.ended)return!1;for(t===~~t?o=t:o=t===!0?xN:bN,typeof e=="string"?n.input=Tl.string2buf(e):p2.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(o===yN||o===wN)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Sl.deflate(n,o),i===vN)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Sl.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===lc;if(n.avail_out===0){this.onData(n.output);continue}if(o>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0},Ip.prototype.onData=function(e){this.chunks.push(e)},Ip.prototype.onEnd=function(e){e===lc&&(this.result=sc.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};const fc=16209,SN=16191;var CN=function(t,n){let r,i,o,a,s,f,l,u,c,h,d,p,b,y,w,S,C,_,I,D,k,R,M,j;const L=t.state;r=t.next_in,M=t.input,i=r+(t.avail_in-5),o=t.next_out,j=t.output,a=o-(n-t.avail_out),s=o+(t.avail_out-257),f=L.dmax,l=L.wsize,u=L.whave,c=L.wnext,h=L.window,d=L.hold,p=L.bits,b=L.lencode,y=L.distcode,w=(1<>>24,d>>>=_,p-=_,_=C>>>16&255,_===0)j[o++]=C&65535;else if(_&16){I=C&65535,_&=15,_&&(p<_&&(d+=M[r++]<>>=_,p-=_),p<15&&(d+=M[r++]<>>24,d>>>=_,p-=_,_=C>>>16&255,_&16){if(D=C&65535,_&=15,p<_&&(d+=M[r++]<f){t.msg="invalid distance too far back",L.mode=fc;break e}if(d>>>=_,p-=_,_=o-a,D>_){if(_=D-_,_>u&&L.sane){t.msg="invalid distance too far back",L.mode=fc;break e}if(k=0,R=h,c===0){if(k+=l-_,_2;)j[o++]=R[k++],j[o++]=R[k++],j[o++]=R[k++],I-=3;I&&(j[o++]=R[k++],I>1&&(j[o++]=R[k++]))}else{k=o-D;do j[o++]=j[k++],j[o++]=j[k++],j[o++]=j[k++],I-=3;while(I>2);I&&(j[o++]=j[k++],I>1&&(j[o++]=j[k++]))}}else if(_&64){t.msg="invalid distance code",L.mode=fc;break e}else{C=y[(C&65535)+(d&(1<<_)-1)];continue n}break}}else if(_&64)if(_&32){L.mode=SN;break e}else{t.msg="invalid literal/length code",L.mode=fc;break e}else{C=b[(C&65535)+(d&(1<<_)-1)];continue t}break}}while(r>3,r-=I,p-=I<<3,d&=(1<{const f=s.bits;let l=0,u=0,c=0,h=0,d=0,p=0,b=0,y=0,w=0,S=0,C,_,I,D,k,R=null,M;const j=new Uint16Array(ga+1),L=new Uint16Array(ga+1);let ne=null,ae,de,Ie;for(l=0;l<=ga;l++)j[l]=0;for(u=0;u=1&&j[h]===0;h--);if(d>h&&(d=h),h===0)return i[o++]=1<<24|64<<16|0,i[o++]=1<<24|64<<16|0,s.bits=1,0;for(c=1;c0&&(e===b2||h!==1))return-1;for(L[1]=0,l=1;lg2||e===y2&&w>m2)return 1;for(;;){ae=l-b,a[u]+1=M?(de=ne[a[u]-M],Ie=R[a[u]-M]):(de=32+64,Ie=0),C=1<>b)+_]=ae<<24|de<<16|Ie|0;while(_!==0);for(C=1<>=1;if(C!==0?(S&=C-1,S+=C):S=0,u++,--j[l]===0){if(l===h)break;l=t[n+a[u]]}if(l>d&&(S&D)!==I){for(b===0&&(b=d),k+=c,p=l-b,y=1<g2||e===y2&&w>m2)return 1;I=S&D,i[I]=d<<24|p<<16|k-o|0}}return S!==0&&(i[k+S]=l-b<<24|64<<16|0),s.bits=d,0};const BN=0,w2=1,x2=2,{Z_FINISH:v2,Z_BLOCK:FN,Z_TREES:uc,Z_OK:co,Z_STREAM_END:RN,Z_NEED_DICT:PN,Z_STREAM_ERROR:hn,Z_DATA_ERROR:A2,Z_MEM_ERROR:E2,Z_BUF_ERROR:MN,Z_DEFLATED:_2}=xl,cc=16180,S2=16181,C2=16182,T2=16183,k2=16184,I2=16185,D2=16186,B2=16187,F2=16188,R2=16189,hc=16190,dr=16191,Bp=16192,P2=16193,Fp=16194,M2=16195,O2=16196,N2=16197,L2=16198,dc=16199,pc=16200,z2=16201,U2=16202,G2=16203,H2=16204,V2=16205,Rp=16206,j2=16207,q2=16208,je=16209,W2=16210,$2=16211,ON=852,NN=592,LN=15,Z2=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function zN(){this.strm=null,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=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const ho=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode$2?1:0},Y2=e=>{if(ho(e))return hn;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=cc,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(ON),t.distcode=t.distdyn=new Int32Array(NN),t.sane=1,t.back=-1,co},Q2=e=>{if(ho(e))return hn;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Y2(e)},X2=(e,t)=>{let n;if(ho(e))return hn;const r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?hn:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,Q2(e))},K2=(e,t)=>{if(!e)return hn;const n=new zN;e.state=n,n.strm=e,n.window=null,n.mode=cc;const r=X2(e,t);return r!==co&&(e.state=null),r},UN=e=>K2(e,LN);let J2=!0,Pp,Mp;const GN=e=>{if(J2){Pp=new Int32Array(512),Mp=new Int32Array(32);let t=0;for(;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(kl(w2,e.lens,0,288,Pp,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;kl(x2,e.lens,0,32,Mp,0,e.work,{bits:5}),J2=!1}e.lencode=Pp,e.lenbits=9,e.distcode=Mp,e.distbits=5},eE=(e,t,n,r)=>{let i;const o=e.state;return o.window===null&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(n-o.wsize,n),0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),o.window.set(t.subarray(n-r,n-r+i),o.wnext),r-=i,r?(o.window.set(t.subarray(n-r,n),0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave{let n,r,i,o,a,s,f,l,u,c,h,d,p,b,y=0,w,S,C,_,I,D,k,R;const M=new Uint8Array(4);let j,L;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(ho(e)||!e.output||!e.input&&e.avail_in!==0)return hn;n=e.state,n.mode===dr&&(n.mode=Bp),a=e.next_out,i=e.output,f=e.avail_out,o=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,c=s,h=f,R=co;e:for(;;)switch(n.mode){case cc:if(n.wrap===0){n.mode=Bp;break}for(;u<16;){if(s===0)break e;s--,l+=r[o++]<>>8&255,n.check=ht(n.check,M,2,0),l=0,u=0,n.mode=S2;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg="incorrect header check",n.mode=je;break}if((l&15)!==_2){e.msg="unknown compression method",n.mode=je;break}if(l>>>=4,u-=4,k=(l&15)+8,n.wbits===0&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=je;break}n.dmax=1<>8&1),n.flags&512&&n.wrap&4&&(M[0]=l&255,M[1]=l>>>8&255,n.check=ht(n.check,M,2,0)),l=0,u=0,n.mode=C2;case C2:for(;u<32;){if(s===0)break e;s--,l+=r[o++]<>>8&255,M[2]=l>>>16&255,M[3]=l>>>24&255,n.check=ht(n.check,M,4,0)),l=0,u=0,n.mode=T2;case T2:for(;u<16;){if(s===0)break e;s--,l+=r[o++]<>8),n.flags&512&&n.wrap&4&&(M[0]=l&255,M[1]=l>>>8&255,n.check=ht(n.check,M,2,0)),l=0,u=0,n.mode=k2;case k2:if(n.flags&1024){for(;u<16;){if(s===0)break e;s--,l+=r[o++]<>>8&255,n.check=ht(n.check,M,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=I2;case I2:if(n.flags&1024&&(d=n.length,d>s&&(d=s),d&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(o,o+d),k)),n.flags&512&&n.wrap&4&&(n.check=ht(n.check,r,d,o)),s-=d,o+=d,n.length-=d),n.length))break e;n.length=0,n.mode=D2;case D2:if(n.flags&2048){if(s===0)break e;d=0;do k=r[o+d++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k));while(k&&d>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=dr;break;case R2:for(;u<32;){if(s===0)break e;s--,l+=r[o++]<>>=u&7,u-=u&7,n.mode=Rp;break}for(;u<3;){if(s===0)break e;s--,l+=r[o++]<>>=1,u-=1,l&3){case 0:n.mode=P2;break;case 1:if(GN(n),n.mode=dc,t===uc){l>>>=2,u-=2;break e}break;case 2:n.mode=O2;break;case 3:e.msg="invalid block type",n.mode=je}l>>>=2,u-=2;break;case P2:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break e;s--,l+=r[o++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=je;break}if(n.length=l&65535,l=0,u=0,n.mode=Fp,t===uc)break e;case Fp:n.mode=M2;case M2:if(d=n.length,d){if(d>s&&(d=s),d>f&&(d=f),d===0)break e;i.set(r.subarray(o,o+d),a),s-=d,o+=d,f-=d,a+=d,n.length-=d;break}n.mode=dr;break;case O2:for(;u<14;){if(s===0)break e;s--,l+=r[o++]<>>=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=je;break}n.have=0,n.mode=N2;case N2:for(;n.have>>=3,u-=3}for(;n.have<19;)n.lens[ne[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,j={bits:n.lenbits},R=kl(BN,n.lens,0,19,n.lencode,0,n.work,j),n.lenbits=j.bits,R){e.msg="invalid code lengths set",n.mode=je;break}n.have=0,n.mode=L2;case L2:for(;n.have>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,l+=r[o++]<>>=w,u-=w,n.lens[n.have++]=C;else{if(C===16){for(L=w+2;u>>=w,u-=w,n.have===0){e.msg="invalid bit length repeat",n.mode=je;break}k=n.lens[n.have-1],d=3+(l&3),l>>>=2,u-=2}else if(C===17){for(L=w+3;u>>=w,u-=w,k=0,d=3+(l&7),l>>>=3,u-=3}else{for(L=w+7;u>>=w,u-=w,k=0,d=11+(l&127),l>>>=7,u-=7}if(n.have+d>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=je;break}for(;d--;)n.lens[n.have++]=k}}if(n.mode===je)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=je;break}if(n.lenbits=9,j={bits:n.lenbits},R=kl(w2,n.lens,0,n.nlen,n.lencode,0,n.work,j),n.lenbits=j.bits,R){e.msg="invalid literal/lengths set",n.mode=je;break}if(n.distbits=6,n.distcode=n.distdyn,j={bits:n.distbits},R=kl(x2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,j),n.distbits=j.bits,R){e.msg="invalid distances set",n.mode=je;break}if(n.mode=dc,t===uc)break e;case dc:n.mode=pc;case pc:if(s>=6&&f>=258){e.next_out=a,e.avail_out=f,e.next_in=o,e.avail_in=s,n.hold=l,n.bits=u,CN(e,h),a=e.next_out,i=e.output,f=e.avail_out,o=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===dr&&(n.back=-1);break}for(n.back=0;y=n.lencode[l&(1<>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,l+=r[o++]<>_)],w=y>>>24,S=y>>>16&255,C=y&65535,!(_+w<=u);){if(s===0)break e;s--,l+=r[o++]<>>=_,u-=_,n.back+=_}if(l>>>=w,u-=w,n.back+=w,n.length=C,S===0){n.mode=V2;break}if(S&32){n.back=-1,n.mode=dr;break}if(S&64){e.msg="invalid literal/length code",n.mode=je;break}n.extra=S&15,n.mode=z2;case z2:if(n.extra){for(L=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=U2;case U2:for(;y=n.distcode[l&(1<>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,l+=r[o++]<>_)],w=y>>>24,S=y>>>16&255,C=y&65535,!(_+w<=u);){if(s===0)break e;s--,l+=r[o++]<>>=_,u-=_,n.back+=_}if(l>>>=w,u-=w,n.back+=w,S&64){e.msg="invalid distance code",n.mode=je;break}n.offset=C,n.extra=S&15,n.mode=G2;case G2:if(n.extra){for(L=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=je;break}n.mode=H2;case H2:if(f===0)break e;if(d=h-f,n.offset>d){if(d=n.offset-d,d>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=je;break}d>n.wnext?(d-=n.wnext,p=n.wsize-d):p=n.wnext-d,d>n.length&&(d=n.length),b=n.window}else b=i,p=a-n.offset,d=n.length;d>f&&(d=f),f-=d,n.length-=d;do i[a++]=b[p++];while(--d);n.length===0&&(n.mode=pc);break;case V2:if(f===0)break e;i[a++]=n.length,f--,n.mode=pc;break;case Rp:if(n.wrap){for(;u<32;){if(s===0)break e;s--,l|=r[o++]<{if(ho(e))return hn;let t=e.state;return t.window&&(t.window=null),e.state=null,co},jN=(e,t)=>{if(ho(e))return hn;const n=e.state;return n.wrap&2?(n.head=t,t.done=!1,co):hn},qN=(e,t)=>{const n=t.length;let r,i,o;return ho(e)||(r=e.state,r.wrap!==0&&r.mode!==hc)?hn:r.mode===hc&&(i=1,i=wl(i,t,n,0),i!==r.check)?A2:(o=eE(e,t,n,n),o?(r.mode=W2,E2):(r.havedict=1,co))};var WN=Q2,$N=X2,ZN=Y2,YN=UN,QN=K2,XN=HN,KN=VN,JN=jN,eL=qN,tL="pako inflate (from Nodeca project)",pr={inflateReset:WN,inflateReset2:$N,inflateResetKeep:ZN,inflateInit:YN,inflateInit2:QN,inflate:XN,inflateEnd:KN,inflateGetHeader:JN,inflateSetDictionary:eL,inflateInfo:tL};function nL(){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 rL=nL;const tE=Object.prototype.toString,{Z_NO_FLUSH:iL,Z_FINISH:oL,Z_OK:Il,Z_STREAM_END:Op,Z_NEED_DICT:Np,Z_STREAM_ERROR:aL,Z_DATA_ERROR:nE,Z_MEM_ERROR:sL}=xl;function Dl(e){this.options=sc.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d2,this.strm.avail_out=0;let n=pr.inflateInit2(this.strm,t.windowBits);if(n!==Il)throw new Error(fa[n]);if(this.header=new rL,pr.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Tl.string2buf(t.dictionary):tE.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=pr.inflateSetDictionary(this.strm,t.dictionary),n!==Il)))throw new Error(fa[n])}Dl.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let o,a,s;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?oL:iL,tE.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),o=pr.inflate(n,a),o===Np&&i&&(o=pr.inflateSetDictionary(n,i),o===Il?o=pr.inflate(n,a):o===nE&&(o=Np));n.avail_in>0&&o===Op&&n.state.wrap>0&&e[n.next_in]!==0;)pr.inflateReset(n),o=pr.inflate(n,a);switch(o){case aL:case nE:case Np:case sL:return this.onEnd(o),this.ended=!0,!1}if(s=n.avail_out,n.next_out&&(n.avail_out===0||o===Op))if(this.options.to==="string"){let f=Tl.utf8border(n.output,n.next_out),l=n.next_out-f,u=Tl.buf2string(n.output,f);n.next_out=l,n.avail_out=r-l,l&&n.output.set(n.output.subarray(f,f+l),0),this.onData(u)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(o===Il&&s===0)){if(o===Op)return o=pr.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,!0;if(n.avail_in===0)break}}return!0},Dl.prototype.onData=function(e){this.chunks.push(e)},Dl.prototype.onEnd=function(e){e===Il&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=sc.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Lp(e,t){const n=new Dl(t);if(n.push(e),n.err)throw n.msg||fa[n.err];return n.result}function lL(e,t){return t=t||{},t.raw=!0,Lp(e,t)}var fL=Dl,uL=Lp,cL=lL,hL=Lp,dL=xl,pL={Inflate:fL,inflate:uL,inflateRaw:cL,ungzip:hL,constants:dL};const{Inflate:sU,inflate:lU,inflateRaw:gL,ungzip:fU}=pL;var mL=gL;function bL(e){return mL(e.subarray(2))}let yL=class extends Error{constructor(t){super(t),this.code="ERR_ABORTED"}};function wL(e){e.sort((i,o)=>Number(i.offset)-Number(o.offset));const t=[];let n,r;for(const i of e)n&&r&&Number(i.offset)-r<=2e3?(n.length=BigInt(Number(n.length)+Number(i.length)-r+Number(i.offset)),n.blocks.push(i)):t.push(n={blocks:[i],length:i.length,offset:i.offset}),r=Number(n.offset)+Number(n.length);return t}function gc(e){if(e&&e.aborted)if(typeof DOMException>"u"){const t=new yL("aborted");throw t.code="ERR_ABORTED",t}else throw new DOMException("aborted","AbortError")}const xL=1,vL=2,AL=3;function zp(e,t,n,r){return e=n}function EL(e){const t=e?"big":"little",n=new ke().endianess(t).uint32("chromId").uint32("start").uint32("end").uint32("validCnt").floatle("minScore").floatle("maxScore").floatle("sumData").floatle("sumSqData").saveOffset("offset"),r=new ke().endianess(t).uint8("isLeaf").skip(1).uint16("cnt").choice({tag:"isLeaf",choices:{1:new ke().endianess(t).array("blocksToFetch",{length:"cnt",type:new ke().endianess(t).uint32("startChrom").uint32("startBase").uint32("endChrom").uint32("endBase").uint64("blockOffset").uint64("blockSize").saveOffset("offset")}),0:new ke().array("recurOffsets",{length:"cnt",type:new ke().endianess(t).uint32("startChrom").uint32("startBase").uint32("endChrom").uint32("endBase").uint64("blockOffset").saveOffset("offset")})}}),i=new ke().endianess(t).uint32("chromId").int32("start").int32("end").string("rest",{zeroTerminated:!0}).saveOffset("offset");return{bigWigParser:new ke().endianess(t).skip(4).int32("blockStart").skip(4).uint32("itemStep").uint32("itemSpan").uint8("blockType").skip(1).uint16("itemCount").choice({tag:"blockType",choices:{[AL]:new ke().array("items",{length:"itemCount",type:new ke().floatle("score")}),[vL]:new ke().array("items",{length:"itemCount",type:new ke().endianess(t).int32("start").floatle("score")}),[xL]:new ke().array("items",{length:"itemCount",type:new ke().endianess(t).int32("start").int32("end").floatle("score")})}}),bigBedParser:i,summaryParser:n,leafParser:r}}class rE{constructor(t,n,r,i,o,a){if(this.bbi=t,this.refsByName=n,this.cirTreeOffset=r,this.isBigEndian=i,this.isCompressed=o,this.blockType=a,this.featureCache=new tc({cache:new nc({maxSize:1e3}),fill:async(f,l)=>{const u=Number(f.length),c=Number(f.offset),{buffer:h}=await this.bbi.read(be.Buffer.alloc(u),0,u,c,{signal:l});return h}}),!(r>=0))throw new Error("invalid cirTreeOffset!");const s=EL(i);this.leafParser=s.leafParser,this.bigBedParser=s.bigBedParser}async readWigData(t,n,r,i,o){try{const{refsByName:a,bbi:s,cirTreeOffset:f,isBigEndian:l}=this,u=a[t];u===void 0&&i.complete();const c={chrId:u,start:n,end:r};this.cirTreePromise||(this.cirTreePromise=s.read(be.Buffer.alloc(48),0,48,Number(f),o));const{buffer:h}=await this.cirTreePromise,d=l?h.readUInt32BE(4):h.readUInt32LE(4);let p=[],b=0;const y=(_,I,D)=>{try{const k=_.subarray(I),R=this.leafParser.parse(k);if(R.blocksToFetch&&(p=p.concat(R.blocksToFetch.filter(M=>w(M)).map(M=>({offset:M.blockOffset,length:M.blockSize})))),R.recurOffsets){const M=R.recurOffsets.filter(j=>w(j)).map(j=>Number(j.blockOffset));M.length>0&&C(M,D+1)}}catch(k){i.error(k)}},w=_=>{const{startChrom:I,startBase:D,endChrom:k,endBase:R}=_;return(Iu||k===u&&R>=n)},S=async(_,I,D)=>{try{const k=I.max()-I.min(),R=I.min(),M=await this.featureCache.get(`${k}_${R}`,{length:k,offset:R},o==null?void 0:o.signal);for(const j of _)I.contains(j)&&(y(M,j-R,D),b-=1,b===0&&this.readFeatures(i,p,{...o,request:c}))}catch(k){i.error(k)}},C=(_,I)=>{try{b+=_.length;const D=4+Number(d)*32;let k=new ti(_[0],_[0]+D);for(let R=1;R<_.length;R+=1){const M=new ti(_[R],_[R]+D);k=k.union(M)}k.getRanges().map(R=>S(_,R,I))}catch(D){i.error(D)}};return C([Number(f)+48],1)}catch(a){i.error(a)}}parseSummaryBlock(t,n,r){const i=[];let o=n;const a=new DataView(t.buffer,t.byteOffset,t.length);for(;ozp(s.start,s.end,i.start,i.end)):o}parseBigWigBlock(t,n,r){const i=t.subarray(n),o=new DataView(i.buffer,i.byteOffset,i.length);let a=0;a+=4;const s=o.getInt32(a,!0);a+=8;const f=o.getUint32(a,!0);a+=4;const l=o.getUint32(a,!0);a+=4;const u=o.getUint8(a);a+=2;const c=o.getUint16(a,!0);a+=2;const h=new Array(c);switch(u){case 1:{for(let d=0;dzp(d.start,d.end,r.start,r.end)):h}async readFeatures(t,n,r={}){try{const{blockType:i,isCompressed:o}=this,{signal:a,request:s}=r,f=wL(n);gc(a),await Promise.all(f.map(async l=>{gc(a);const{length:u,offset:c}=l,h=await this.featureCache.get(`${u}_${c}`,l,a);for(const d of l.blocks){gc(a);let p=Number(d.offset)-Number(l.offset),b=h;switch(o&&(b=bL(h.subarray(p)),p=0),gc(a),i){case"summary":{t.next(this.parseSummaryBlock(b,p,s));break}case"bigwig":{t.next(this.parseBigWigBlock(b,p,s));break}case"bigbed":{t.next(this.parseBigBedBlock(b,p,Number(d.offset)*256,s));break}default:console.warn(`Don't know what to do with ${i}`)}}})),t.complete()}catch(i){t.error(i)}}}var Up=function(e,t){return Up=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},Up(e,t)};function Gp(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Up(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function _L(e,t,n,r){function i(o){return o instanceof n?o:new n(function(a){a(o)})}return new(n||(n=Promise))(function(o,a){function s(u){try{l(r.next(u))}catch(c){a(c)}}function f(u){try{l(r.throw(u))}catch(c){a(c)}}function l(u){u.done?o(u.value):i(u.value).then(s,f)}l((r=r.apply(e,t||[])).next())})}function iE(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,a;return a={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function s(l){return function(u){return f([l,u])}}function f(l){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(n=0)),n;)try{if(r=1,i&&(o=l[0]&2?i.return:l[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,l[1])).done)return o;switch(i=0,o&&(l=[l[0]&2,o.value]),l[0]){case 0:case 1:o=l;break;case 4:return n.label++,{value:l[1],done:!1};case 5:n.label++,i=l[1],l=[0];continue;case 7:l=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(l[0]===6||l[0]===2)){n=0;continue}if(l[0]===3&&(!o||l[1]>o[0]&&l[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function mc(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,o=[],a;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)o.push(i.value)}catch(s){a={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return o}function bc(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,o;r1||s(h,d)})})}function s(h,d){try{f(r[h](d))}catch(p){c(o[0][3],p)}}function f(h){h.value instanceof ma?Promise.resolve(h.value.v).then(l,u):c(o[0][2],h)}function l(h){s("next",h)}function u(h){s("throw",h)}function c(h,d){h(d),o.shift(),o.length&&s(o[0][0],o[0][1])}}function CL(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Bl=="function"?Bl(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(o){n[o]=e[o]&&function(a){return new Promise(function(s,f){a=e[o](a),i(s,f,a.done,a.value)})}}function i(o,a,s,f){Promise.resolve(f).then(function(l){o({value:l,done:s})},a)}}typeof SuppressedError=="function"&&SuppressedError;function ot(e){return typeof e=="function"}function oE(e){var t=function(r){Error.call(r),r.stack=new Error().stack},n=e(t);return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var Hp=oE(function(e){return function(n){e(this),this.message=n?n.length+` errors occurred during unsubscription: + */(function(t){const e=ku,n=_0,r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=s,t.SlowBuffer=S,t.INSPECT_MAX_BYTES=50;const i=2147483647;t.kMaxLength=i,s.TYPED_ARRAY_SUPPORT=o(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{const x=new Uint8Array(1),g={foo:function(){return 42}};return Object.setPrototypeOf(g,Uint8Array.prototype),Object.setPrototypeOf(x,g),x.foo()===42}catch{return!1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function a(x){if(x>i)throw new RangeError('The value "'+x+'" is invalid for option "size"');const g=new Uint8Array(x);return Object.setPrototypeOf(g,s.prototype),g}function s(x,g,m){if(typeof x=="number"){if(typeof g=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(x)}return l(x,g,m)}s.poolSize=8192;function l(x,g,m){if(typeof x=="string")return h(x,g);if(ArrayBuffer.isView(x))return p(x);if(x==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof x);if(_t(x,ArrayBuffer)||x&&_t(x.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(_t(x,SharedArrayBuffer)||x&&_t(x.buffer,SharedArrayBuffer)))return b(x,g,m);if(typeof x=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const T=x.valueOf&&x.valueOf();if(T!=null&&T!==x)return s.from(T,g,m);const F=y(x);if(F)return F;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof x[Symbol.toPrimitive]=="function")return s.from(x[Symbol.toPrimitive]("string"),g,m);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof x)}s.from=function(x,g,m){return l(x,g,m)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function f(x){if(typeof x!="number")throw new TypeError('"size" argument must be of type number');if(x<0)throw new RangeError('The value "'+x+'" is invalid for option "size"')}function u(x,g,m){return f(x),x<=0?a(x):g!==void 0?typeof m=="string"?a(x).fill(g,m):a(x).fill(g):a(x)}s.alloc=function(x,g,m){return u(x,g,m)};function c(x){return f(x),a(x<0?0:w(x)|0)}s.allocUnsafe=function(x){return c(x)},s.allocUnsafeSlow=function(x){return c(x)};function h(x,g){if((typeof g!="string"||g==="")&&(g="utf8"),!s.isEncoding(g))throw new TypeError("Unknown encoding: "+g);const m=C(x,g)|0;let T=a(m);const F=T.write(x,g);return F!==m&&(T=T.slice(0,F)),T}function d(x){const g=x.length<0?0:w(x.length)|0,m=a(g);for(let T=0;T=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return x|0}function S(x){return+x!=x&&(x=0),s.alloc(+x)}s.isBuffer=function(g){return g!=null&&g._isBuffer===!0&&g!==s.prototype},s.compare=function(g,m){if(_t(g,Uint8Array)&&(g=s.from(g,g.offset,g.byteLength)),_t(m,Uint8Array)&&(m=s.from(m,m.offset,m.byteLength)),!s.isBuffer(g)||!s.isBuffer(m))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(g===m)return 0;let T=g.length,F=m.length;for(let N=0,V=Math.min(T,F);NF.length?(s.isBuffer(V)||(V=s.from(V)),V.copy(F,N)):Uint8Array.prototype.set.call(F,V,N);else if(s.isBuffer(V))V.copy(F,N);else throw new TypeError('"list" argument must be an Array of Buffers');N+=V.length}return F};function C(x,g){if(s.isBuffer(x))return x.length;if(ArrayBuffer.isView(x)||_t(x,ArrayBuffer))return x.byteLength;if(typeof x!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof x);const m=x.length,T=arguments.length>2&&arguments[2]===!0;if(!T&&m===0)return 0;let F=!1;for(;;)switch(g){case"ascii":case"latin1":case"binary":return m;case"utf8":case"utf-8":return fe(x).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return m*2;case"hex":return m>>>1;case"base64":return ui(x).length;default:if(F)return T?-1:fe(x).length;g=(""+g).toLowerCase(),F=!0}}s.byteLength=C;function _(x,g,m){let T=!1;if((g===void 0||g<0)&&(g=0),g>this.length||((m===void 0||m>this.length)&&(m=this.length),m<=0)||(m>>>=0,g>>>=0,m<=g))return"";for(x||(x="utf8");;)switch(x){case"hex":return qe(this,g,m);case"utf8":case"utf-8":return de(this,g,m);case"ascii":return Be(this,g,m);case"latin1":case"binary":return Ke(this,g,m);case"base64":return ae(this,g,m);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Je(this,g,m);default:if(T)throw new TypeError("Unknown encoding: "+x);x=(x+"").toLowerCase(),T=!0}}s.prototype._isBuffer=!0;function k(x,g,m){const T=x[g];x[g]=x[m],x[m]=T}s.prototype.swap16=function(){const g=this.length;if(g%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let m=0;mm&&(g+=" ... "),""},r&&(s.prototype[r]=s.prototype.inspect),s.prototype.compare=function(g,m,T,F,N){if(_t(g,Uint8Array)&&(g=s.from(g,g.offset,g.byteLength)),!s.isBuffer(g))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof g);if(m===void 0&&(m=0),T===void 0&&(T=g?g.length:0),F===void 0&&(F=0),N===void 0&&(N=this.length),m<0||T>g.length||F<0||N>this.length)throw new RangeError("out of range index");if(F>=N&&m>=T)return 0;if(F>=N)return-1;if(m>=T)return 1;if(m>>>=0,T>>>=0,F>>>=0,N>>>=0,this===g)return 0;let V=N-F,le=T-m;const Ue=Math.min(V,le),Pe=this.slice(F,N),We=g.slice(m,T);for(let Se=0;Se2147483647?m=2147483647:m<-2147483648&&(m=-2147483648),m=+m,xr(m)&&(m=F?0:x.length-1),m<0&&(m=x.length+m),m>=x.length){if(F)return-1;m=x.length-1}else if(m<0)if(F)m=0;else return-1;if(typeof g=="string"&&(g=s.from(g,T)),s.isBuffer(g))return g.length===0?-1:I(x,g,m,T,F);if(typeof g=="number")return g=g&255,typeof Uint8Array.prototype.indexOf=="function"?F?Uint8Array.prototype.indexOf.call(x,g,m):Uint8Array.prototype.lastIndexOf.call(x,g,m):I(x,[g],m,T,F);throw new TypeError("val must be string, number or Buffer")}function I(x,g,m,T,F){let N=1,V=x.length,le=g.length;if(T!==void 0&&(T=String(T).toLowerCase(),T==="ucs2"||T==="ucs-2"||T==="utf16le"||T==="utf-16le")){if(x.length<2||g.length<2)return-1;N=2,V/=2,le/=2,m/=2}function Ue(We,Se){return N===1?We[Se]:We.readUInt16BE(Se*N)}let Pe;if(F){let We=-1;for(Pe=m;PeV&&(m=V-le),Pe=m;Pe>=0;Pe--){let We=!0;for(let Se=0;SeF&&(T=F)):T=F;const N=g.length;T>N/2&&(T=N/2);let V;for(V=0;V>>0,isFinite(T)?(T=T>>>0,F===void 0&&(F="utf8")):(F=T,T=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const N=this.length-m;if((T===void 0||T>N)&&(T=N),g.length>0&&(T<0||m<0)||m>this.length)throw new RangeError("Attempt to write outside buffer bounds");F||(F="utf8");let V=!1;for(;;)switch(F){case"hex":return R(this,g,m,T);case"utf8":case"utf-8":return M(this,g,m,T);case"ascii":case"latin1":case"binary":return j(this,g,m,T);case"base64":return L(this,g,m,T);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ne(this,g,m,T);default:if(V)throw new TypeError("Unknown encoding: "+F);F=(""+F).toLowerCase(),V=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function ae(x,g,m){return g===0&&m===x.length?e.fromByteArray(x):e.fromByteArray(x.slice(g,m))}function de(x,g,m){m=Math.min(x.length,m);const T=[];let F=g;for(;F239?4:N>223?3:N>191?2:1;if(F+le<=m){let Ue,Pe,We,Se;switch(le){case 1:N<128&&(V=N);break;case 2:Ue=x[F+1],(Ue&192)===128&&(Se=(N&31)<<6|Ue&63,Se>127&&(V=Se));break;case 3:Ue=x[F+1],Pe=x[F+2],(Ue&192)===128&&(Pe&192)===128&&(Se=(N&15)<<12|(Ue&63)<<6|Pe&63,Se>2047&&(Se<55296||Se>57343)&&(V=Se));break;case 4:Ue=x[F+1],Pe=x[F+2],We=x[F+3],(Ue&192)===128&&(Pe&192)===128&&(We&192)===128&&(Se=(N&15)<<18|(Ue&63)<<12|(Pe&63)<<6|We&63,Se>65535&&Se<1114112&&(V=Se))}}V===null?(V=65533,le=1):V>65535&&(V-=65536,T.push(V>>>10&1023|55296),V=56320|V&1023),T.push(V),F+=le}return Qe(T)}const ke=4096;function Qe(x){const g=x.length;if(g<=ke)return String.fromCharCode.apply(String,x);let m="",T=0;for(;TT)&&(m=T);let F="";for(let N=g;NT&&(g=T),m<0?(m+=T,m<0&&(m=0)):m>T&&(m=T),mm)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(g,m,T){g=g>>>0,m=m>>>0,T||Ee(g,m,this.length);let F=this[g],N=1,V=0;for(;++V>>0,m=m>>>0,T||Ee(g,m,this.length);let F=this[g+--m],N=1;for(;m>0&&(N*=256);)F+=this[g+--m]*N;return F},s.prototype.readUint8=s.prototype.readUInt8=function(g,m){return g=g>>>0,m||Ee(g,1,this.length),this[g]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(g,m){return g=g>>>0,m||Ee(g,2,this.length),this[g]|this[g+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(g,m){return g=g>>>0,m||Ee(g,2,this.length),this[g]<<8|this[g+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+this[g+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),this[g]*16777216+(this[g+1]<<16|this[g+2]<<8|this[g+3])},s.prototype.readBigUInt64LE=jt(function(g){g=g>>>0,G(g,"offset");const m=this[g],T=this[g+7];(m===void 0||T===void 0)&&W(g,this.length-8);const F=m+this[++g]*2**8+this[++g]*2**16+this[++g]*2**24,N=this[++g]+this[++g]*2**8+this[++g]*2**16+T*2**24;return BigInt(F)+(BigInt(N)<>>0,G(g,"offset");const m=this[g],T=this[g+7];(m===void 0||T===void 0)&&W(g,this.length-8);const F=m*2**24+this[++g]*2**16+this[++g]*2**8+this[++g],N=this[++g]*2**24+this[++g]*2**16+this[++g]*2**8+T;return(BigInt(F)<>>0,m=m>>>0,T||Ee(g,m,this.length);let F=this[g],N=1,V=0;for(;++V=N&&(F-=Math.pow(2,8*m)),F},s.prototype.readIntBE=function(g,m,T){g=g>>>0,m=m>>>0,T||Ee(g,m,this.length);let F=m,N=1,V=this[g+--F];for(;F>0&&(N*=256);)V+=this[g+--F]*N;return N*=128,V>=N&&(V-=Math.pow(2,8*m)),V},s.prototype.readInt8=function(g,m){return g=g>>>0,m||Ee(g,1,this.length),this[g]&128?(255-this[g]+1)*-1:this[g]},s.prototype.readInt16LE=function(g,m){g=g>>>0,m||Ee(g,2,this.length);const T=this[g]|this[g+1]<<8;return T&32768?T|4294901760:T},s.prototype.readInt16BE=function(g,m){g=g>>>0,m||Ee(g,2,this.length);const T=this[g+1]|this[g]<<8;return T&32768?T|4294901760:T},s.prototype.readInt32LE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},s.prototype.readInt32BE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},s.prototype.readBigInt64LE=jt(function(g){g=g>>>0,G(g,"offset");const m=this[g],T=this[g+7];(m===void 0||T===void 0)&&W(g,this.length-8);const F=this[g+4]+this[g+5]*2**8+this[g+6]*2**16+(T<<24);return(BigInt(F)<>>0,G(g,"offset");const m=this[g],T=this[g+7];(m===void 0||T===void 0)&&W(g,this.length-8);const F=(m<<24)+this[++g]*2**16+this[++g]*2**8+this[++g];return(BigInt(F)<>>0,m||Ee(g,4,this.length),n.read(this,g,!0,23,4)},s.prototype.readFloatBE=function(g,m){return g=g>>>0,m||Ee(g,4,this.length),n.read(this,g,!1,23,4)},s.prototype.readDoubleLE=function(g,m){return g=g>>>0,m||Ee(g,8,this.length),n.read(this,g,!0,52,8)},s.prototype.readDoubleBE=function(g,m){return g=g>>>0,m||Ee(g,8,this.length),n.read(this,g,!1,52,8)};function _e(x,g,m,T,F,N){if(!s.isBuffer(x))throw new TypeError('"buffer" argument must be a Buffer instance');if(g>F||gx.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(g,m,T,F){if(g=+g,m=m>>>0,T=T>>>0,!F){const le=Math.pow(2,8*T)-1;_e(this,g,m,T,le,0)}let N=1,V=0;for(this[m]=g&255;++V>>0,T=T>>>0,!F){const le=Math.pow(2,8*T)-1;_e(this,g,m,T,le,0)}let N=T-1,V=1;for(this[m+N]=g&255;--N>=0&&(V*=256);)this[m+N]=g/V&255;return m+T},s.prototype.writeUint8=s.prototype.writeUInt8=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,1,255,0),this[m]=g&255,m+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,2,65535,0),this[m]=g&255,this[m+1]=g>>>8,m+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,2,65535,0),this[m]=g>>>8,this[m+1]=g&255,m+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,4,4294967295,0),this[m+3]=g>>>24,this[m+2]=g>>>16,this[m+1]=g>>>8,this[m]=g&255,m+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,4,4294967295,0),this[m]=g>>>24,this[m+1]=g>>>16,this[m+2]=g>>>8,this[m+3]=g&255,m+4};function dt(x,g,m,T,F){v(g,T,F,x,m,7);let N=Number(g&BigInt(4294967295));x[m++]=N,N=N>>8,x[m++]=N,N=N>>8,x[m++]=N,N=N>>8,x[m++]=N;let V=Number(g>>BigInt(32)&BigInt(4294967295));return x[m++]=V,V=V>>8,x[m++]=V,V=V>>8,x[m++]=V,V=V>>8,x[m++]=V,m}function Ht(x,g,m,T,F){v(g,T,F,x,m,7);let N=Number(g&BigInt(4294967295));x[m+7]=N,N=N>>8,x[m+6]=N,N=N>>8,x[m+5]=N,N=N>>8,x[m+4]=N;let V=Number(g>>BigInt(32)&BigInt(4294967295));return x[m+3]=V,V=V>>8,x[m+2]=V,V=V>>8,x[m+1]=V,V=V>>8,x[m]=V,m+8}s.prototype.writeBigUInt64LE=jt(function(g,m=0){return dt(this,g,m,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=jt(function(g,m=0){return Ht(this,g,m,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(g,m,T,F){if(g=+g,m=m>>>0,!F){const Ue=Math.pow(2,8*T-1);_e(this,g,m,T,Ue-1,-Ue)}let N=0,V=1,le=0;for(this[m]=g&255;++N>0)-le&255;return m+T},s.prototype.writeIntBE=function(g,m,T,F){if(g=+g,m=m>>>0,!F){const Ue=Math.pow(2,8*T-1);_e(this,g,m,T,Ue-1,-Ue)}let N=T-1,V=1,le=0;for(this[m+N]=g&255;--N>=0&&(V*=256);)g<0&&le===0&&this[m+N+1]!==0&&(le=1),this[m+N]=(g/V>>0)-le&255;return m+T},s.prototype.writeInt8=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,1,127,-128),g<0&&(g=255+g+1),this[m]=g&255,m+1},s.prototype.writeInt16LE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,2,32767,-32768),this[m]=g&255,this[m+1]=g>>>8,m+2},s.prototype.writeInt16BE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,2,32767,-32768),this[m]=g>>>8,this[m+1]=g&255,m+2},s.prototype.writeInt32LE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,4,2147483647,-2147483648),this[m]=g&255,this[m+1]=g>>>8,this[m+2]=g>>>16,this[m+3]=g>>>24,m+4},s.prototype.writeInt32BE=function(g,m,T){return g=+g,m=m>>>0,T||_e(this,g,m,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),this[m]=g>>>24,this[m+1]=g>>>16,this[m+2]=g>>>8,this[m+3]=g&255,m+4},s.prototype.writeBigInt64LE=jt(function(g,m=0){return dt(this,g,m,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=jt(function(g,m=0){return Ht(this,g,m,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Ne(x,g,m,T,F,N){if(m+T>x.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("Index out of range")}function O(x,g,m,T,F){return g=+g,m=m>>>0,F||Ne(x,g,m,4),n.write(x,g,m,T,23,4),m+4}s.prototype.writeFloatLE=function(g,m,T){return O(this,g,m,!0,T)},s.prototype.writeFloatBE=function(g,m,T){return O(this,g,m,!1,T)};function P(x,g,m,T,F){return g=+g,m=m>>>0,F||Ne(x,g,m,8),n.write(x,g,m,T,52,8),m+8}s.prototype.writeDoubleLE=function(g,m,T){return P(this,g,m,!0,T)},s.prototype.writeDoubleBE=function(g,m,T){return P(this,g,m,!1,T)},s.prototype.copy=function(g,m,T,F){if(!s.isBuffer(g))throw new TypeError("argument should be a Buffer");if(T||(T=0),!F&&F!==0&&(F=this.length),m>=g.length&&(m=g.length),m||(m=0),F>0&&F=this.length)throw new RangeError("Index out of range");if(F<0)throw new RangeError("sourceEnd out of bounds");F>this.length&&(F=this.length),g.length-m>>0,T=T===void 0?this.length:T>>>0,g||(g=0);let N;if(typeof g=="number")for(N=m;N2**32?F=$(String(m)):typeof m=="bigint"&&(F=String(m),(m>BigInt(2)**BigInt(32)||m<-(BigInt(2)**BigInt(32)))&&(F=$(F)),F+="n"),T+=` It must be ${g}. Received ${F}`,T},RangeError);function $(x){let g="",m=x.length;const T=x[0]==="-"?1:0;for(;m>=T+4;m-=3)g=`_${x.slice(m-3,m)}${g}`;return`${x.slice(0,m)}${g}`}function E(x,g,m){G(g,"offset"),(x[g]===void 0||x[g+m]===void 0)&&W(g,x.length-(m+1))}function v(x,g,m,T,F,N){if(x>m||x3?g===0||g===BigInt(0)?le=`>= 0${V} and < 2${V} ** ${(N+1)*8}${V}`:le=`>= -(2${V} ** ${(N+1)*8-1}${V}) and < 2 ** ${(N+1)*8-1}${V}`:le=`>= ${g}${V} and <= ${m}${V}`,new q.ERR_OUT_OF_RANGE("value",le,x)}E(T,F,N)}function G(x,g){if(typeof x!="number")throw new q.ERR_INVALID_ARG_TYPE(g,"number",x)}function W(x,g,m){throw Math.floor(x)!==x?(G(x,m),new q.ERR_OUT_OF_RANGE(m||"offset","an integer",x)):g<0?new q.ERR_BUFFER_OUT_OF_BOUNDS:new q.ERR_OUT_OF_RANGE(m||"offset",`>= ${m?1:0} and <= ${g}`,x)}const se=/[^+/0-9A-Za-z-_]/g;function J(x){if(x=x.split("=")[0],x=x.trim().replace(se,""),x.length<2)return"";for(;x.length%4!==0;)x=x+"=";return x}function fe(x,g){g=g||1/0;let m;const T=x.length;let F=null;const N=[];for(let V=0;V55295&&m<57344){if(!F){if(m>56319){(g-=3)>-1&&N.push(239,191,189);continue}else if(V+1===T){(g-=3)>-1&&N.push(239,191,189);continue}F=m;continue}if(m<56320){(g-=3)>-1&&N.push(239,191,189),F=m;continue}m=(F-55296<<10|m-56320)+65536}else F&&(g-=3)>-1&&N.push(239,191,189);if(F=null,m<128){if((g-=1)<0)break;N.push(m)}else if(m<2048){if((g-=2)<0)break;N.push(m>>6|192,m&63|128)}else if(m<65536){if((g-=3)<0)break;N.push(m>>12|224,m>>6&63|128,m&63|128)}else if(m<1114112){if((g-=4)<0)break;N.push(m>>18|240,m>>12&63|128,m>>6&63|128,m&63|128)}else throw new Error("Invalid code point")}return N}function Vt(x){const g=[];for(let m=0;m>8,F=m%256,N.push(F),N.push(T);return N}function ui(x){return e.toByteArray(J(x))}function ci(x,g,m,T){let F;for(F=0;F=g.length||F>=x.length);++F)g[F+m]=x[F];return F}function _t(x,g){return x instanceof g||x!=null&&x.constructor!=null&&x.constructor.name!=null&&x.constructor.name===g.name}function xr(x){return x!==x}const hi=function(){const x="0123456789abcdef",g=new Array(256);for(let m=0;m<16;++m){const T=m*16;for(let F=0;F<16;++F)g[T+F]=x[m]+x[F]}return g}();function jt(x){return typeof BigInt>"u"?Jn:x}function Jn(){throw new Error("BigInt not supported")}})(be);const Nx=xe({__proto__:null,default:$s(be)},[be]),ct={},_5=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"})),S0=typeof window<"u"?window:typeof self<"u"?self:{fetch:void 0};class $i{async getBufferFromResponse(e){if(typeof e.buffer=="function")return e.buffer();if(typeof e.arrayBuffer=="function"){const n=await e.arrayBuffer();return be.Buffer.from(n)}else throw new TypeError("invalid HTTP response object, has no buffer method, and no arrayBuffer method")}constructor(e,n={}){this.baseOverrides={},this.url=e;const r=n.fetch||S0.fetch&&S0.fetch.bind(S0);if(!r)throw new TypeError("no fetch function supplied, and none found in global environment");n.overrides&&(this.baseOverrides=n.overrides),this.fetchImplementation=r}async fetch(e,n){let r;try{r=await this.fetchImplementation(e,n)}catch(i){if(`${i}`.includes("Failed to fetch"))console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`),r=await this.fetchImplementation(e,{...n,cache:"reload"});else throw i}return r}async read(e,n=0,r,i=0,o={}){const{headers:a={},signal:s,overrides:l={}}=o;r<1/0?a.range=`bytes=${i}-${i+r}`:r===1/0&&i!==0&&(a.range=`bytes=${i}-`);const f={...this.baseOverrides,...l,headers:{...a,...l.headers,...this.baseOverrides.headers},method:"GET",redirect:"follow",mode:"cors",signal:s},u=await this.fetch(this.url,f);if(!u.ok)throw new Error(`HTTP ${u.status} ${u.statusText} ${this.url}`);if(u.status===200&&i===0||u.status===206){const c=await this.getBufferFromResponse(u),h=c.copy(e,n,0,Math.min(r,c.length)),d=u.headers.get("content-range"),p=/\/(\d+)$/.exec(d||"");return p&&p[1]&&(this._stat={size:parseInt(p[1],10)}),{bytesRead:h,buffer:e}}throw u.status===200?new Error("${this.url} fetch returned status 200, expected 206"):new Error(`HTTP ${u.status} fetching ${this.url}`)}async readFile(e={}){let n,r;typeof e=="string"?(n=e,r={}):(n=e.encoding,r=e,delete r.encoding);const{headers:i={},signal:o,overrides:a={}}=r,s={headers:i,method:"GET",redirect:"follow",mode:"cors",signal:o,...this.baseOverrides,...a},l=await this.fetch(this.url,s);if(!l)throw new Error("generic-filehandle failed to fetch");if(l.status!==200)throw Object.assign(new Error(`HTTP ${l.status} fetching ${this.url}`),{status:l.status});if(n==="utf8")return l.text();if(n)throw new Error(`unsupported encoding: ${n}`);return this.getBufferFromResponse(l)}async stat(){if(!this._stat){const e=be.Buffer.allocUnsafe(10);if(await this.read(e,0,10,0),!this._stat)throw new Error(`unable to determine size of file at ${this.url}`)}return this._stat}async close(){}}function Lx(t){const e=new FileReader;return new Promise((n,r)=>{e.onerror=()=>{e.abort(),r(new Error("problem reading blob"))},e.onabort=()=>{r(new Error("blob reading was aborted"))},e.onload=()=>{e.result&&typeof e.result!="string"?n(e.result):r(new Error("unknown error reading blob"))},e.readAsArrayBuffer(t)})}function S5(t){const e=new FileReader;return new Promise((n,r)=>{e.onerror=()=>{e.abort(),r(new Error("problem reading blob"))},e.onabort=()=>{r(new Error("blob reading was aborted"))},e.onload=()=>{e.result&&typeof e.result=="string"?n(e.result):r(new Error("unknown error reading blob"))},e.readAsText(t)})}class C5{constructor(e){this.blob=e,this.size=e.size}async read(e,n=0,r,i=0){if(!r)return{bytesRead:0,buffer:e};const o=i,a=o+r,s=await Lx(this.blob.slice(o,a)),l=be.Buffer.from(s);return{bytesRead:l.copy(e,n),buffer:l}}async readFile(e){let n;if(typeof e=="string"?n=e:n=e&&e.encoding,n==="utf8")return S5(this.blob);if(n)throw new Error(`unsupported encoding: ${n}`);const r=await Lx(this.blob);return be.Buffer.from(r)}async stat(){return{size:this.size}}async close(){}}function zx(t,e={}){return new $i(t,e)}function T5(t,e,n,r={}){if(n!==void 0)return n;if(t!==void 0)return zx(t,r);if(e!==void 0)return new ct(e,r);throw new Error("no url, path, or filehandle provided, cannot open")}const Zs=Object.freeze(Object.defineProperty({__proto__:null,BlobFile:C5,LocalFile:ct,RemoteFile:$i,fromUrl:zx,open:T5},Symbol.toStringTag,{value:"Module"}));var lr={};(function(t){var e=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function n(o,a){return Object.prototype.hasOwnProperty.call(o,a)}t.assign=function(o){for(var a=Array.prototype.slice.call(arguments,1);a.length;){var s=a.shift();if(s){if(typeof s!="object")throw new TypeError(s+"must be non-object");for(var l in s)n(s,l)&&(o[l]=s[l])}}return o},t.shrinkBuf=function(o,a){return o.length===a?o:o.subarray?o.subarray(0,a):(o.length=a,o)};var r={arraySet:function(o,a,s,l,f){if(a.subarray&&o.subarray){o.set(a.subarray(s,s+l),f);return}for(var u=0;u=0;)t[e]=0}var B5=0,Hx=1,F5=2,R5=3,P5=258,C0=29,Qs=256,Xs=Qs+1+C0,Xo=30,T0=19,Vx=2*Xs+1,Zi=15,I0=16,M5=7,k0=256,jx=16,qx=17,Wx=18,D0=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Du=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],O5=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],$x=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],N5=512,ur=new Array((Xs+2)*2);Qo(ur);var Ks=new Array(Xo*2);Qo(Ks);var Js=new Array(N5);Qo(Js);var ef=new Array(P5-R5+1);Qo(ef);var B0=new Array(C0);Qo(B0);var Bu=new Array(Xo);Qo(Bu);function F0(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}var Zx,Yx,Qx;function R0(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function Xx(t){return t<256?Js[t]:Js[256+(t>>>7)]}function tf(t,e){t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255}function Lt(t,e,n){t.bi_valid>I0-n?(t.bi_buf|=e<>I0-t.bi_valid,t.bi_valid+=n-I0):(t.bi_buf|=e<>>=1,n<<=1;while(--e>0);return n>>>1}function L5(t){t.bi_valid===16?(tf(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)}function z5(t,e){var n=e.dyn_tree,r=e.max_code,i=e.stat_desc.static_tree,o=e.stat_desc.has_stree,a=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,l=e.stat_desc.max_length,f,u,c,h,d,p,b=0;for(h=0;h<=Zi;h++)t.bl_count[h]=0;for(n[t.heap[t.heap_max]*2+1]=0,f=t.heap_max+1;fl&&(h=l,b++),n[u*2+1]=h,!(u>r)&&(t.bl_count[h]++,d=0,u>=s&&(d=a[u-s]),p=n[u*2],t.opt_len+=p*(h+d),o&&(t.static_len+=p*(i[u*2+1]+d)));if(b!==0){do{for(h=l-1;t.bl_count[h]===0;)h--;t.bl_count[h]--,t.bl_count[h+1]+=2,t.bl_count[l]--,b-=2}while(b>0);for(h=l;h!==0;h--)for(u=t.bl_count[h];u!==0;)c=t.heap[--f],!(c>r)&&(n[c*2+1]!==h&&(t.opt_len+=(h-n[c*2+1])*n[c*2],n[c*2+1]=h),u--)}}function Jx(t,e,n){var r=new Array(Zi+1),i=0,o,a;for(o=1;o<=Zi;o++)r[o]=i=i+n[o-1]<<1;for(a=0;a<=e;a++){var s=t[a*2+1];s!==0&&(t[a*2]=Kx(r[s]++,s))}}function U5(){var t,e,n,r,i,o=new Array(Zi+1);for(n=0,r=0;r>=7;r8?tf(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function G5(t,e,n,r){tv(t),r&&(tf(t,n),tf(t,~n)),I5.arraySet(t.pending_buf,t.window,e,n,t.pending),t.pending+=n}function nv(t,e,n,r){var i=e*2,o=n*2;return t[i]>1;a>=1;a--)P0(t,n,a);f=o;do a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],P0(t,n,1),s=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=s,n[f*2]=n[a*2]+n[s*2],t.depth[f]=(t.depth[a]>=t.depth[s]?t.depth[a]:t.depth[s])+1,n[a*2+1]=n[s*2+1]=f,t.heap[1]=f++,P0(t,n,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],z5(t,e),Jx(n,l,t.bl_count)}function iv(t,e,n){var r,i=-1,o,a=e[0*2+1],s=0,l=7,f=4;for(a===0&&(l=138,f=3),e[(n+1)*2+1]=65535,r=0;r<=n;r++)o=a,a=e[(r+1)*2+1],!(++s=3&&t.bl_tree[$x[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e}function V5(t,e,n,r){var i;for(Lt(t,e-257,5),Lt(t,n-1,5),Lt(t,r-4,4),i=0;i>>=1)if(e&1&&t.dyn_ltree[n*2]!==0)return Ux;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return Gx;for(n=32;n0?(t.strm.data_type===D5&&(t.strm.data_type=j5(t)),M0(t,t.l_desc),M0(t,t.d_desc),a=H5(t),i=t.opt_len+3+7>>>3,o=t.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&e!==-1?sv(t,e,n,r):t.strategy===k5||o===i?(Lt(t,(Hx<<1)+(r?1:0),3),rv(t,ur,Ks)):(Lt(t,(F5<<1)+(r?1:0),3),V5(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),rv(t,t.dyn_ltree,t.dyn_dtree)),ev(t),r&&tv(t)}function Z5(t,e,n){return t.pending_buf[t.d_buf+t.last_lit*2]=e>>>8&255,t.pending_buf[t.d_buf+t.last_lit*2+1]=e&255,t.pending_buf[t.l_buf+t.last_lit]=n&255,t.last_lit++,e===0?t.dyn_ltree[n*2]++:(t.matches++,e--,t.dyn_ltree[(ef[n]+Qs+1)*2]++,t.dyn_dtree[Xx(e)*2]++),t.last_lit===t.lit_bufsize-1}Yo._tr_init=q5,Yo._tr_stored_block=sv,Yo._tr_flush_block=$5,Yo._tr_tally=Z5,Yo._tr_align=W5;function Y5(t,e,n,r){for(var i=t&65535|0,o=t>>>16&65535|0,a=0;n!==0;){a=n>2e3?2e3:n,n-=a;do i=i+e[r++]|0,o=o+i|0;while(--a);i%=65521,o%=65521}return i|o<<16|0}var fv=Y5;function Q5(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}var X5=Q5();function K5(t,e,n,r){var i=X5,o=r+n;t^=-1;for(var a=r;a>>8^i[(t^e[a])&255];return t^-1}var lv=K5,O0={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"},It=lr,on=Yo,uv=fv,$r=lv,J5=O0,Yi=0,eM=1,tM=3,Zr=4,cv=5,qn=0,hv=1,an=-2,nM=-3,N0=-5,rM=-1,iM=1,Fu=2,oM=3,aM=4,sM=0,fM=2,Ru=8,lM=9,uM=15,cM=8,hM=29,dM=256,L0=dM+1+hM,pM=30,gM=19,mM=2*L0+1,bM=15,ce=3,Yr=258,Cn=Yr+ce+1,yM=32,Pu=42,z0=69,Mu=73,Ou=91,Nu=103,Qi=113,nf=666,it=1,rf=2,Xi=3,Ko=4,wM=3;function Qr(t,e){return t.msg=J5[e],e}function dv(t){return(t<<1)-(t>4?9:0)}function Xr(t){for(var e=t.length;--e>=0;)t[e]=0}function Kr(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),n!==0&&(It.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,e.pending===0&&(e.pending_out=0))}function mt(t,e){on._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Kr(t.strm)}function ye(t,e){t.pending_buf[t.pending++]=e}function of(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255}function xM(t,e,n,r){var i=t.avail_in;return i>r&&(i=r),i===0?0:(t.avail_in-=i,It.arraySet(e,t.input,t.next_in,i,n),t.state.wrap===1?t.adler=uv(t.adler,e,i,n):t.state.wrap===2&&(t.adler=$r(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)}function pv(t,e){var n=t.max_chain_length,r=t.strstart,i,o,a=t.prev_length,s=t.nice_match,l=t.strstart>t.w_size-Cn?t.strstart-(t.w_size-Cn):0,f=t.window,u=t.w_mask,c=t.prev,h=t.strstart+Yr,d=f[r+a-1],p=f[r+a];t.prev_length>=t.good_match&&(n>>=2),s>t.lookahead&&(s=t.lookahead);do if(i=e,!(f[i+a]!==p||f[i+a-1]!==d||f[i]!==f[r]||f[++i]!==f[r+1])){r+=2,i++;do;while(f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&ra){if(t.match_start=e,a=o,o>=s)break;d=f[r+a-1],p=f[r+a]}}while((e=c[e&u])>l&&--n!==0);return a<=t.lookahead?a:t.lookahead}function Ki(t){var e=t.w_size,n,r,i,o,a;do{if(o=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Cn)){It.arraySet(t.window,t.window,e,e,0),t.match_start-=e,t.strstart-=e,t.block_start-=e,r=t.hash_size,n=r;do i=t.head[--n],t.head[n]=i>=e?i-e:0;while(--r);r=e,n=r;do i=t.prev[--n],t.prev[n]=i>=e?i-e:0;while(--r);o+=e}if(t.strm.avail_in===0)break;if(r=xM(t.strm,t.window,t.strstart+t.lookahead,o),t.lookahead+=r,t.lookahead+t.insert>=ce)for(a=t.strstart-t.insert,t.ins_h=t.window[a],t.ins_h=(t.ins_h<t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Ki(t),t.lookahead===0&&e===Yi)return it;if(t.lookahead===0)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((t.strstart===0||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,mt(t,!1),t.strm.avail_out===0)||t.strstart-t.block_start>=t.w_size-Cn&&(mt(t,!1),t.strm.avail_out===0))return it}return t.insert=0,e===Zr?(mt(t,!0),t.strm.avail_out===0?Xi:Ko):(t.strstart>t.block_start&&(mt(t,!1),t.strm.avail_out===0),it)}function U0(t,e){for(var n,r;;){if(t.lookahead=ce&&(t.ins_h=(t.ins_h<=ce)if(r=on._tr_tally(t,t.strstart-t.match_start,t.match_length-ce),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=ce){t.match_length--;do t.strstart++,t.ins_h=(t.ins_h<=ce&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=ce-1)),t.prev_length>=ce&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-ce,r=on._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-ce),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=(t.ins_h<=ce&&t.strstart>0&&(i=t.strstart-1,r=a[i],r===a[++i]&&r===a[++i]&&r===a[++i])){o=t.strstart+Yr;do;while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=ce?(n=on._tr_tally(t,1,t.match_length-ce),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=on._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(mt(t,!1),t.strm.avail_out===0))return it}return t.insert=0,e===Zr?(mt(t,!0),t.strm.avail_out===0?Xi:Ko):t.last_lit&&(mt(t,!1),t.strm.avail_out===0)?it:rf}function EM(t,e){for(var n;;){if(t.lookahead===0&&(Ki(t),t.lookahead===0)){if(e===Yi)return it;break}if(t.match_length=0,n=on._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(mt(t,!1),t.strm.avail_out===0))return it}return t.insert=0,e===Zr?(mt(t,!0),t.strm.avail_out===0?Xi:Ko):t.last_lit&&(mt(t,!1),t.strm.avail_out===0)?it:rf}function Wn(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i}var ea;ea=[new Wn(0,0,0,0,vM),new Wn(4,4,8,4,U0),new Wn(4,5,16,8,U0),new Wn(4,6,32,32,U0),new Wn(4,4,16,16,Jo),new Wn(8,16,32,32,Jo),new Wn(8,16,128,128,Jo),new Wn(8,32,128,256,Jo),new Wn(32,128,258,1024,Jo),new Wn(32,258,258,4096,Jo)];function _M(t){t.window_size=2*t.w_size,Xr(t.head),t.max_lazy_match=ea[t.level].max_lazy,t.good_match=ea[t.level].good_length,t.nice_match=ea[t.level].nice_length,t.max_chain_length=ea[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=ce-1,t.match_available=0,t.ins_h=0}function SM(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ru,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new It.Buf16(mM*2),this.dyn_dtree=new It.Buf16((2*pM+1)*2),this.bl_tree=new It.Buf16((2*gM+1)*2),Xr(this.dyn_ltree),Xr(this.dyn_dtree),Xr(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new It.Buf16(bM+1),this.heap=new It.Buf16(2*L0+1),Xr(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new It.Buf16(2*L0+1),Xr(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function gv(t){var e;return!t||!t.state?Qr(t,an):(t.total_in=t.total_out=0,t.data_type=fM,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?Pu:Qi,t.adler=e.wrap===2?0:1,e.last_flush=Yi,on._tr_init(e),qn)}function mv(t){var e=gv(t);return e===qn&&_M(t.state),e}function CM(t,e){return!t||!t.state||t.state.wrap!==2?an:(t.state.gzhead=e,qn)}function bv(t,e,n,r,i,o){if(!t)return an;var a=1;if(e===rM&&(e=6),r<0?(a=0,r=-r):r>15&&(a=2,r-=16),i<1||i>lM||n!==Ru||r<8||r>15||e<0||e>9||o<0||o>aM)return Qr(t,an);r===8&&(r=9);var s=new SM;return t.state=s,s.strm=t,s.wrap=a,s.gzhead=null,s.w_bits=r,s.w_size=1<cv||e<0)return t?Qr(t,an):an;if(r=t.state,!t.output||!t.input&&t.avail_in!==0||r.status===nf&&e!==Zr)return Qr(t,t.avail_out===0?N0:an);if(r.strm=t,n=r.last_flush,r.last_flush=e,r.status===Pu)if(r.wrap===2)t.adler=0,ye(r,31),ye(r,139),ye(r,8),r.gzhead?(ye(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),ye(r,r.gzhead.time&255),ye(r,r.gzhead.time>>8&255),ye(r,r.gzhead.time>>16&255),ye(r,r.gzhead.time>>24&255),ye(r,r.level===9?2:r.strategy>=Fu||r.level<2?4:0),ye(r,r.gzhead.os&255),r.gzhead.extra&&r.gzhead.extra.length&&(ye(r,r.gzhead.extra.length&255),ye(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=$r(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=z0):(ye(r,0),ye(r,0),ye(r,0),ye(r,0),ye(r,0),ye(r,r.level===9?2:r.strategy>=Fu||r.level<2?4:0),ye(r,wM),r.status=Qi);else{var a=Ru+(r.w_bits-8<<4)<<8,s=-1;r.strategy>=Fu||r.level<2?s=0:r.level<6?s=1:r.level===6?s=2:s=3,a|=s<<6,r.strstart!==0&&(a|=yM),a+=31-a%31,r.status=Qi,of(r,a),r.strstart!==0&&(of(r,t.adler>>>16),of(r,t.adler&65535)),t.adler=1}if(r.status===z0)if(r.gzhead.extra){for(i=r.pending;r.gzindex<(r.gzhead.extra.length&65535)&&!(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=$r(t.adler,r.pending_buf,r.pending-i,i)),Kr(t),i=r.pending,r.pending===r.pending_buf_size));)ye(r,r.gzhead.extra[r.gzindex]&255),r.gzindex++;r.gzhead.hcrc&&r.pending>i&&(t.adler=$r(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=Mu)}else r.status=Mu;if(r.status===Mu)if(r.gzhead.name){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=$r(t.adler,r.pending_buf,r.pending-i,i)),Kr(t),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}r.gzindexi&&(t.adler=$r(t.adler,r.pending_buf,r.pending-i,i)),o===0&&(r.gzindex=0,r.status=Ou)}else r.status=Ou;if(r.status===Ou)if(r.gzhead.comment){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=$r(t.adler,r.pending_buf,r.pending-i,i)),Kr(t),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}r.gzindexi&&(t.adler=$r(t.adler,r.pending_buf,r.pending-i,i)),o===0&&(r.status=Nu)}else r.status=Nu;if(r.status===Nu&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&Kr(t),r.pending+2<=r.pending_buf_size&&(ye(r,t.adler&255),ye(r,t.adler>>8&255),t.adler=0,r.status=Qi)):r.status=Qi),r.pending!==0){if(Kr(t),t.avail_out===0)return r.last_flush=-1,qn}else if(t.avail_in===0&&dv(e)<=dv(n)&&e!==Zr)return Qr(t,N0);if(r.status===nf&&t.avail_in!==0)return Qr(t,N0);if(t.avail_in!==0||r.lookahead!==0||e!==Yi&&r.status!==nf){var l=r.strategy===Fu?EM(r,e):r.strategy===oM?AM(r,e):ea[r.level].func(r,e);if((l===Xi||l===Ko)&&(r.status=nf),l===it||l===Xi)return t.avail_out===0&&(r.last_flush=-1),qn;if(l===rf&&(e===eM?on._tr_align(r):e!==cv&&(on._tr_stored_block(r,0,0,!1),e===tM&&(Xr(r.head),r.lookahead===0&&(r.strstart=0,r.block_start=0,r.insert=0))),Kr(t),t.avail_out===0))return r.last_flush=-1,qn}return e!==Zr?qn:r.wrap<=0?hv:(r.wrap===2?(ye(r,t.adler&255),ye(r,t.adler>>8&255),ye(r,t.adler>>16&255),ye(r,t.adler>>24&255),ye(r,t.total_in&255),ye(r,t.total_in>>8&255),ye(r,t.total_in>>16&255),ye(r,t.total_in>>24&255)):(of(r,t.adler>>>16),of(r,t.adler&65535)),Kr(t),r.wrap>0&&(r.wrap=-r.wrap),r.pending!==0?qn:hv)}function kM(t){var e;return!t||!t.state?an:(e=t.state.status,e!==Pu&&e!==z0&&e!==Mu&&e!==Ou&&e!==Nu&&e!==Qi&&e!==nf?Qr(t,an):(t.state=null,e===Qi?Qr(t,nM):qn))}function DM(t,e){var n=e.length,r,i,o,a,s,l,f,u;if(!t||!t.state||(r=t.state,a=r.wrap,a===2||a===1&&r.status!==Pu||r.lookahead))return an;for(a===1&&(t.adler=uv(t.adler,e,n,0)),r.wrap=0,n>=r.w_size&&(a===0&&(Xr(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new It.Buf8(r.w_size),It.arraySet(u,e,n-r.w_size,r.w_size,0),e=u,n=r.w_size),s=t.avail_in,l=t.next_in,f=t.input,t.avail_in=n,t.next_in=0,t.input=e,Ki(r);r.lookahead>=ce;){i=r.strstart,o=r.lookahead-(ce-1);do r.ins_h=(r.ins_h<=252?6:Jr>=248?5:Jr>=240?4:Jr>=224?3:Jr>=192?2:1;af[254]=af[254]=1,Ji.string2buf=function(t){var e,n,r,i,o,a=t.length,s=0;for(i=0;i>>6,e[o++]=128|n&63):n<65536?(e[o++]=224|n>>>12,e[o++]=128|n>>>6&63,e[o++]=128|n&63):(e[o++]=240|n>>>18,e[o++]=128|n>>>12&63,e[o++]=128|n>>>6&63,e[o++]=128|n&63);return e};function xv(t,e){if(e<65534&&(t.subarray&&wv||!t.subarray&&yv))return String.fromCharCode.apply(null,Lu.shrinkBuf(t,e));for(var n="",r=0;r4){s[r++]=65533,n+=o-1;continue}for(i&=o===2?31:o===3?15:7;o>1&&n1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return xv(s,r)},Ji.utf8border=function(t,e){var n;for(e=e||t.length,e>t.length&&(e=t.length),n=e-1;n>=0&&(t[n]&192)===128;)n--;return n<0||n===0?e:n+af[t[n]]>e?n:e};function BM(){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 vv=BM,sf=Vn,ff=lr,G0=Ji,H0=O0,FM=vv,Av=Object.prototype.toString,RM=0,V0=4,ta=0,Ev=1,_v=2,PM=-1,MM=0,OM=8;function eo(t){if(!(this instanceof eo))return new eo(t);this.options=ff.assign({level:PM,method:OM,chunkSize:16384,windowBits:15,memLevel:8,strategy:MM,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new FM,this.strm.avail_out=0;var n=sf.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(n!==ta)throw new Error(H0[n]);if(e.header&&sf.deflateSetHeader(this.strm,e.header),e.dictionary){var r;if(typeof e.dictionary=="string"?r=G0.string2buf(e.dictionary):Av.call(e.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(e.dictionary):r=e.dictionary,n=sf.deflateSetDictionary(this.strm,r),n!==ta)throw new Error(H0[n]);this._dict_set=!0}}eo.prototype.push=function(t,e){var n=this.strm,r=this.options.chunkSize,i,o;if(this.ended)return!1;o=e===~~e?e:e===!0?V0:RM,typeof t=="string"?n.input=G0.string2buf(t):Av.call(t)==="[object ArrayBuffer]"?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=new ff.Buf8(r),n.next_out=0,n.avail_out=r),i=sf.deflate(n,o),i!==Ev&&i!==ta)return this.onEnd(i),this.ended=!0,!1;(n.avail_out===0||n.avail_in===0&&(o===V0||o===_v))&&(this.options.to==="string"?this.onData(G0.buf2binstring(ff.shrinkBuf(n.output,n.next_out))):this.onData(ff.shrinkBuf(n.output,n.next_out)))}while((n.avail_in>0||n.avail_out===0)&&i!==Ev);return o===V0?(i=sf.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===ta):(o===_v&&(this.onEnd(ta),n.avail_out=0),!0)},eo.prototype.onData=function(t){this.chunks.push(t)},eo.prototype.onEnd=function(t){t===ta&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ff.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function j0(t,e){var n=new eo(e);if(n.push(t,!0),n.err)throw n.msg||H0[n.err];return n.result}function NM(t,e){return e=e||{},e.raw=!0,j0(t,e)}function LM(t,e){return e=e||{},e.gzip=!0,j0(t,e)}Ys.Deflate=eo,Ys.deflate=j0,Ys.deflateRaw=NM,Ys.gzip=LM;var lf={},Tn={},zu=30,zM=12,UM=function(e,n){var r,i,o,a,s,l,f,u,c,h,d,p,b,y,w,S,C,_,k,D,I,R,M,j,L;r=e.state,i=e.next_in,j=e.input,o=i+(e.avail_in-5),a=e.next_out,L=e.output,s=a-(n-e.avail_out),l=a+(e.avail_out-257),f=r.dmax,u=r.wsize,c=r.whave,h=r.wnext,d=r.window,p=r.hold,b=r.bits,y=r.lencode,w=r.distcode,S=(1<>>24,p>>>=k,b-=k,k=_>>>16&255,k===0)L[a++]=_&65535;else if(k&16){D=_&65535,k&=15,k&&(b>>=k,b-=k),b<15&&(p+=j[i++]<>>24,p>>>=k,b-=k,k=_>>>16&255,k&16){if(I=_&65535,k&=15,bf){e.msg="invalid distance too far back",r.mode=zu;break e}if(p>>>=k,b-=k,k=a-s,I>k){if(k=I-k,k>c&&r.sane){e.msg="invalid distance too far back",r.mode=zu;break e}if(R=0,M=d,h===0){if(R+=u-k,k2;)L[a++]=M[R++],L[a++]=M[R++],L[a++]=M[R++],D-=3;D&&(L[a++]=M[R++],D>1&&(L[a++]=M[R++]))}else{R=a-I;do L[a++]=L[R++],L[a++]=L[R++],L[a++]=L[R++],D-=3;while(D>2);D&&(L[a++]=L[R++],D>1&&(L[a++]=L[R++]))}}else if(k&64){e.msg="invalid distance code",r.mode=zu;break e}else{_=w[(_&65535)+(p&(1<>3,i-=D,b-=D<<3,p&=(1<=1&&ne[d]===0;d--);if(p>d&&(p=d),d===0)return o[a++]=1<<24|64<<16|0,o[a++]=1<<24|64<<16|0,l.bits=1,0;for(h=1;h0&&(e===Iv||d!==1))return-1;for(ae[1]=0,u=1;uCv||e===kv&&S>Tv)return 1;for(;;){Qe=u-y,s[c]L?(Be=de[ke+s[c]],Ke=M[j+s[c]]):(Be=32+64,Ke=0),_=1<>y)+k]=Qe<<24|Be<<16|Ke|0;while(k!==0);for(_=1<>=1;if(_!==0?(C&=_-1,C+=_):C=0,c++,--ne[u]===0){if(u===d)break;u=n[r+s[c]]}if(u>p&&(C&I)!==D){for(y===0&&(y=p),R+=h,b=u-y,w=1<Cv||e===kv&&S>Tv)return 1;D=C&I,o[D]=p<<24|b<<16|R-a|0}}return C!==0&&(o[R+C]=u-y<<24|64<<16|0),l.bits=p,0},Qt=lr,W0=fv,$n=lv,WM=UM,uf=qM,$M=0,Dv=1,Bv=2,Fv=4,ZM=5,Uu=6,to=0,YM=1,QM=2,sn=-2,Rv=-3,Pv=-4,XM=-5,Mv=8,Ov=1,Nv=2,Lv=3,zv=4,Uv=5,Gv=6,Hv=7,Vv=8,jv=9,qv=10,Gu=11,cr=12,$0=13,Wv=14,Z0=15,$v=16,Zv=17,Yv=18,Qv=19,Hu=20,Vu=21,Xv=22,Kv=23,Jv=24,eA=25,tA=26,Y0=27,nA=28,rA=29,Ve=30,iA=31,KM=32,JM=852,eO=592,tO=15,nO=tO;function oA(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function rO(){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=new Qt.Buf16(320),this.work=new Qt.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function aA(t){var e;return!t||!t.state?sn:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=Ov,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Qt.Buf32(JM),e.distcode=e.distdyn=new Qt.Buf32(eO),e.sane=1,e.back=-1,to)}function sA(t){var e;return!t||!t.state?sn:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,aA(t))}function fA(t,e){var n,r;return!t||!t.state||(r=t.state,e<0?(n=0,e=-e):(n=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?sn:(r.window!==null&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,sA(t))}function lA(t,e){var n,r;return t?(r=new rO,t.state=r,r.window=null,n=fA(t,e),n!==to&&(t.state=null),n):sn}function iO(t){return lA(t,nO)}var uA=!0,Q0,X0;function oO(t){if(uA){var e;for(Q0=new Qt.Buf32(512),X0=new Qt.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(uf(Dv,t.lens,0,288,Q0,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;uf(Bv,t.lens,0,32,X0,0,t.work,{bits:5}),uA=!1}t.lencode=Q0,t.lenbits=9,t.distcode=X0,t.distbits=5}function cA(t,e,n,r){var i,o=t.state;return o.window===null&&(o.wsize=1<=o.wsize?(Qt.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),Qt.arraySet(o.window,e,n-r,i,o.wnext),r-=i,r?(Qt.arraySet(o.window,e,n-r,r,0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=$n(n.check,M,2,0),f=0,u=0,n.mode=Nv;break}if(n.flags=0,n.head&&(n.head.done=!1),!(n.wrap&1)||(((f&255)<<8)+(f>>8))%31){t.msg="incorrect header check",n.mode=Ve;break}if((f&15)!==Mv){t.msg="unknown compression method",n.mode=Ve;break}if(f>>>=4,u-=4,I=(f&15)+8,n.wbits===0)n.wbits=I;else if(I>n.wbits){t.msg="invalid window size",n.mode=Ve;break}n.dmax=1<>8&1),n.flags&512&&(M[0]=f&255,M[1]=f>>>8&255,n.check=$n(n.check,M,2,0)),f=0,u=0,n.mode=Lv;case Lv:for(;u<32;){if(s===0)break e;s--,f+=r[o++]<>>8&255,M[2]=f>>>16&255,M[3]=f>>>24&255,n.check=$n(n.check,M,4,0)),f=0,u=0,n.mode=zv;case zv:for(;u<16;){if(s===0)break e;s--,f+=r[o++]<>8),n.flags&512&&(M[0]=f&255,M[1]=f>>>8&255,n.check=$n(n.check,M,2,0)),f=0,u=0,n.mode=Uv;case Uv:if(n.flags&1024){for(;u<16;){if(s===0)break e;s--,f+=r[o++]<>>8&255,n.check=$n(n.check,M,2,0)),f=0,u=0}else n.head&&(n.head.extra=null);n.mode=Gv;case Gv:if(n.flags&1024&&(d=n.length,d>s&&(d=s),d&&(n.head&&(I=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),Qt.arraySet(n.head.extra,r,o,d,I)),n.flags&512&&(n.check=$n(n.check,r,d,o)),s-=d,o+=d,n.length-=d),n.length))break e;n.length=0,n.mode=Hv;case Hv:if(n.flags&2048){if(s===0)break e;d=0;do I=r[o+d++],n.head&&I&&n.length<65536&&(n.head.name+=String.fromCharCode(I));while(I&&d>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=cr;break;case qv:for(;u<32;){if(s===0)break e;s--,f+=r[o++]<>>=u&7,u-=u&7,n.mode=Y0;break}for(;u<3;){if(s===0)break e;s--,f+=r[o++]<>>=1,u-=1,f&3){case 0:n.mode=Wv;break;case 1:if(oO(n),n.mode=Hu,e===Uu){f>>>=2,u-=2;break e}break;case 2:n.mode=Zv;break;case 3:t.msg="invalid block type",n.mode=Ve}f>>>=2,u-=2;break;case Wv:for(f>>>=u&7,u-=u&7;u<32;){if(s===0)break e;s--,f+=r[o++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=Ve;break}if(n.length=f&65535,f=0,u=0,n.mode=Z0,e===Uu)break e;case Z0:n.mode=$v;case $v:if(d=n.length,d){if(d>s&&(d=s),d>l&&(d=l),d===0)break e;Qt.arraySet(i,r,o,d,a),s-=d,o+=d,l-=d,a+=d,n.length-=d;break}n.mode=cr;break;case Zv:for(;u<14;){if(s===0)break e;s--,f+=r[o++]<>>=5,u-=5,n.ndist=(f&31)+1,f>>>=5,u-=5,n.ncode=(f&15)+4,f>>>=4,u-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=Ve;break}n.have=0,n.mode=Yv;case Yv:for(;n.have>>=3,u-=3}for(;n.have<19;)n.lens[ne[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,j={bits:n.lenbits},R=uf($M,n.lens,0,19,n.lencode,0,n.work,j),n.lenbits=j.bits,R){t.msg="invalid code lengths set",n.mode=Ve;break}n.have=0,n.mode=Qv;case Qv:for(;n.have>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,f+=r[o++]<>>=w,u-=w,n.lens[n.have++]=C;else{if(C===16){for(L=w+2;u>>=w,u-=w,n.have===0){t.msg="invalid bit length repeat",n.mode=Ve;break}I=n.lens[n.have-1],d=3+(f&3),f>>>=2,u-=2}else if(C===17){for(L=w+3;u>>=w,u-=w,I=0,d=3+(f&7),f>>>=3,u-=3}else{for(L=w+7;u>>=w,u-=w,I=0,d=11+(f&127),f>>>=7,u-=7}if(n.have+d>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=Ve;break}for(;d--;)n.lens[n.have++]=I}}if(n.mode===Ve)break;if(n.lens[256]===0){t.msg="invalid code -- missing end-of-block",n.mode=Ve;break}if(n.lenbits=9,j={bits:n.lenbits},R=uf(Dv,n.lens,0,n.nlen,n.lencode,0,n.work,j),n.lenbits=j.bits,R){t.msg="invalid literal/lengths set",n.mode=Ve;break}if(n.distbits=6,n.distcode=n.distdyn,j={bits:n.distbits},R=uf(Bv,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,j),n.distbits=j.bits,R){t.msg="invalid distances set",n.mode=Ve;break}if(n.mode=Hu,e===Uu)break e;case Hu:n.mode=Vu;case Vu:if(s>=6&&l>=258){t.next_out=a,t.avail_out=l,t.next_in=o,t.avail_in=s,n.hold=f,n.bits=u,WM(t,h),a=t.next_out,i=t.output,l=t.avail_out,o=t.next_in,r=t.input,s=t.avail_in,f=n.hold,u=n.bits,n.mode===cr&&(n.back=-1);break}for(n.back=0;y=n.lencode[f&(1<>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,f+=r[o++]<>_)],w=y>>>24,S=y>>>16&255,C=y&65535,!(_+w<=u);){if(s===0)break e;s--,f+=r[o++]<>>=_,u-=_,n.back+=_}if(f>>>=w,u-=w,n.back+=w,n.length=C,S===0){n.mode=tA;break}if(S&32){n.back=-1,n.mode=cr;break}if(S&64){t.msg="invalid literal/length code",n.mode=Ve;break}n.extra=S&15,n.mode=Xv;case Xv:if(n.extra){for(L=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Kv;case Kv:for(;y=n.distcode[f&(1<>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,f+=r[o++]<>_)],w=y>>>24,S=y>>>16&255,C=y&65535,!(_+w<=u);){if(s===0)break e;s--,f+=r[o++]<>>=_,u-=_,n.back+=_}if(f>>>=w,u-=w,n.back+=w,S&64){t.msg="invalid distance code",n.mode=Ve;break}n.offset=C,n.extra=S&15,n.mode=Jv;case Jv:if(n.extra){for(L=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=Ve;break}n.mode=eA;case eA:if(l===0)break e;if(d=h-l,n.offset>d){if(d=n.offset-d,d>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=Ve;break}d>n.wnext?(d-=n.wnext,p=n.wsize-d):p=n.wnext-d,d>n.length&&(d=n.length),b=n.window}else b=i,p=a-n.offset,d=n.length;d>l&&(d=l),l-=d,n.length-=d;do i[a++]=b[p++];while(--d);n.length===0&&(n.mode=Vu);break;case tA:if(l===0)break e;i[a++]=n.length,l--,n.mode=Vu;break;case Y0:if(n.wrap){for(;u<32;){if(s===0)break e;s--,f|=r[o++]<=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new hO,this.strm.avail_out=0;var n=ra.inflateInit2(this.strm,e.windowBits);if(n!==tt.Z_OK)throw new Error(K0[n]);if(this.header=new dO,ra.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=ju.string2buf(e.dictionary):dA.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=ra.inflateSetDictionary(this.strm,e.dictionary),n!==tt.Z_OK)))throw new Error(K0[n])}no.prototype.push=function(t,e){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,o,a,s,l,f,u=!1;if(this.ended)return!1;a=e===~~e?e:e===!0?tt.Z_FINISH:tt.Z_NO_FLUSH,typeof t=="string"?n.input=ju.binstring2buf(t):dA.call(t)==="[object ArrayBuffer]"?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=new cf.Buf8(r),n.next_out=0,n.avail_out=r),o=ra.inflate(n,tt.Z_NO_FLUSH),o===tt.Z_NEED_DICT&&i&&(o=ra.inflateSetDictionary(this.strm,i)),o===tt.Z_BUF_ERROR&&u===!0&&(o=tt.Z_OK,u=!1),o!==tt.Z_STREAM_END&&o!==tt.Z_OK)return this.onEnd(o),this.ended=!0,!1;n.next_out&&(n.avail_out===0||o===tt.Z_STREAM_END||n.avail_in===0&&(a===tt.Z_FINISH||a===tt.Z_SYNC_FLUSH))&&(this.options.to==="string"?(s=ju.utf8border(n.output,n.next_out),l=n.next_out-s,f=ju.buf2string(n.output,s),n.next_out=l,n.avail_out=r-l,l&&cf.arraySet(n.output,n.output,s,l,0),this.onData(f)):this.onData(cf.shrinkBuf(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(u=!0)}while((n.avail_in>0||n.avail_out===0)&&o!==tt.Z_STREAM_END);return o===tt.Z_STREAM_END&&(a=tt.Z_FINISH),a===tt.Z_FINISH?(o=ra.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===tt.Z_OK):(a===tt.Z_SYNC_FLUSH&&(this.onEnd(tt.Z_OK),n.avail_out=0),!0)},no.prototype.onData=function(t){this.chunks.push(t)},no.prototype.onEnd=function(t){t===tt.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=cf.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function J0(t,e){var n=new no(e);if(n.push(t,!0),n.err)throw n.msg||K0[n.err];return n.result}function pO(t,e){return e=e||{},e.raw=!0,J0(t,e)}lf.Inflate=no,lf.inflate=J0,lf.inflateRaw=pO,lf.ungzip=J0;var gO=lr.assign,mO=Ys,bO=lf,yO=hA,pA={};gO(pA,mO,bO,yO);var qu=pA;async function ei(t){try{let e,n=0,r=0;const i=[];let o=0,a;do{const l=t.subarray(n);if(a=new qu.Inflate,{strm:e}=a,a.push(l,qu.Z_SYNC_FLUSH),a.err)throw new Error(a.msg);n+=e.next_in,i[r]=a.result,o+=i[r].length,r+=1}while(e.avail_in);const s=new Uint8Array(o);for(let l=0,f=0;l=i.blockPosition){s[c]=s[c].subarray(0,i.blockPosition===r.blockPosition?i.dataPosition-r.dataPosition+1:i.dataPosition+1),l.push(o),f.push(a),u+=s[c].length;break}u+=s[c].length,c++}while(n.avail_in);const h=new Uint8Array(u);for(let p=0,b=0;p>>=0,(i=0<=t&&t<256)&&(r=bA[t],r)?r:(n=Oe(t,(t|0)<0?-1:0,!0),i&&(bA[t]=n),n)):(t|=0,(i=-128<=t&&t<128)&&(r=mA[t],r)?r:(n=Oe(t,t<0?-1:0,!1),i&&(mA[t]=n),n))}Me.fromInt=ro;function ln(t,e){if(isNaN(t))return e?io:un;if(e){if(t<0)return io;if(t>=wA)return _A}else{if(t<=-xA)return Ut;if(t+1>=xA)return EA}return t<0?ln(-t,e).neg():Oe(t%ia|0,t/ia|0,e)}Me.fromNumber=ln;function Oe(t,e,n){return new Me(t,e,n)}Me.fromBits=Oe;var Wu=Math.pow;function ep(t,e,n){if(t.length===0)throw Error("empty string");if(t==="NaN"||t==="Infinity"||t==="+Infinity"||t==="-Infinity")return un;if(typeof e=="number"?(n=e,e=!1):e=!!e,n=n||10,n<2||360)throw Error("interior hyphen");if(r===0)return ep(t.substring(1),e,n).neg();for(var i=ln(Wu(n,8)),o=un,a=0;a>>0:this.low},Z.toNumber=function(){return this.unsigned?(this.high>>>0)*ia+(this.low>>>0):this.high*ia+(this.low>>>0)},Z.toString=function(e){if(e=e||10,e<2||36>>0,u=f.toString(e);if(a=l,a.isZero())return u+s;for(;u.length<6;)u="0"+u;s=""+u+s}},Z.getHighBits=function(){return this.high},Z.getHighBitsUnsigned=function(){return this.high>>>0},Z.getLowBits=function(){return this.low},Z.getLowBitsUnsigned=function(){return this.low>>>0},Z.getNumBitsAbs=function(){if(this.isNegative())return this.eq(Ut)?64:this.neg().getNumBitsAbs();for(var e=this.high!=0?this.high:this.low,n=31;n>0&&!(e&1<=0},Z.isOdd=function(){return(this.low&1)===1},Z.isEven=function(){return(this.low&1)===0},Z.equals=function(e){return zt(e)||(e=In(e)),this.unsigned!==e.unsigned&&this.high>>>31===1&&e.high>>>31===1?!1:this.high===e.high&&this.low===e.low},Z.eq=Z.equals,Z.notEquals=function(e){return!this.eq(e)},Z.neq=Z.notEquals,Z.ne=Z.notEquals,Z.lessThan=function(e){return this.comp(e)<0},Z.lt=Z.lessThan,Z.lessThanOrEqual=function(e){return this.comp(e)<=0},Z.lte=Z.lessThanOrEqual,Z.le=Z.lessThanOrEqual,Z.greaterThan=function(e){return this.comp(e)>0},Z.gt=Z.greaterThan,Z.greaterThanOrEqual=function(e){return this.comp(e)>=0},Z.gte=Z.greaterThanOrEqual,Z.ge=Z.greaterThanOrEqual,Z.compare=function(e){if(zt(e)||(e=In(e)),this.eq(e))return 0;var n=this.isNegative(),r=e.isNegative();return n&&!r?-1:!n&&r?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},Z.comp=Z.compare,Z.negate=function(){return!this.unsigned&&this.eq(Ut)?Ut:this.not().add(oa)},Z.neg=Z.negate,Z.add=function(e){zt(e)||(e=In(e));var n=this.high>>>16,r=this.high&65535,i=this.low>>>16,o=this.low&65535,a=e.high>>>16,s=e.high&65535,l=e.low>>>16,f=e.low&65535,u=0,c=0,h=0,d=0;return d+=o+f,h+=d>>>16,d&=65535,h+=i+l,c+=h>>>16,h&=65535,c+=r+s,u+=c>>>16,c&=65535,u+=n+a,u&=65535,Oe(h<<16|d,u<<16|c,this.unsigned)},Z.subtract=function(e){return zt(e)||(e=In(e)),this.add(e.neg())},Z.sub=Z.subtract,Z.multiply=function(e){if(this.isZero())return un;if(zt(e)||(e=In(e)),fn){var n=fn.mul(this.low,this.high,e.low,e.high);return Oe(n,fn.get_high(),this.unsigned)}if(e.isZero())return un;if(this.eq(Ut))return e.isOdd()?Ut:un;if(e.eq(Ut))return this.isOdd()?Ut:un;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(vA)&&e.lt(vA))return ln(this.toNumber()*e.toNumber(),this.unsigned);var r=this.high>>>16,i=this.high&65535,o=this.low>>>16,a=this.low&65535,s=e.high>>>16,l=e.high&65535,f=e.low>>>16,u=e.low&65535,c=0,h=0,d=0,p=0;return p+=a*u,d+=p>>>16,p&=65535,d+=o*u,h+=d>>>16,d&=65535,d+=a*f,h+=d>>>16,d&=65535,h+=i*u,c+=h>>>16,h&=65535,h+=o*f,c+=h>>>16,h&=65535,h+=a*l,c+=h>>>16,h&=65535,c+=r*u+i*f+o*l+a*s,c&=65535,Oe(d<<16|p,c<<16|h,this.unsigned)},Z.mul=Z.multiply,Z.divide=function(e){if(zt(e)||(e=In(e)),e.isZero())throw Error("division by zero");if(fn){if(!this.unsigned&&this.high===-2147483648&&e.low===-1&&e.high===-1)return this;var n=(this.unsigned?fn.div_u:fn.div_s)(this.low,this.high,e.low,e.high);return Oe(n,fn.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?io:un;var r,i,o;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return io;if(e.gt(this.shru(1)))return AA;o=io}else{if(this.eq(Ut)){if(e.eq(oa)||e.eq(tp))return Ut;if(e.eq(Ut))return oa;var a=this.shr(1);return r=a.div(e).shl(1),r.eq(un)?e.isNegative()?oa:tp:(i=this.sub(e.mul(r)),o=r.add(i.div(e)),o)}else if(e.eq(Ut))return this.unsigned?io:un;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();o=un}for(i=this;i.gte(e);){r=Math.max(1,Math.floor(i.toNumber()/e.toNumber()));for(var s=Math.ceil(Math.log(r)/Math.LN2),l=s<=48?1:Wu(2,s-48),f=ln(r),u=f.mul(e);u.isNegative()||u.gt(i);)r-=l,f=ln(r,this.unsigned),u=f.mul(e);f.isZero()&&(f=oa),o=o.add(f),i=i.sub(u)}return o},Z.div=Z.divide,Z.modulo=function(e){if(zt(e)||(e=In(e)),fn){var n=(this.unsigned?fn.rem_u:fn.rem_s)(this.low,this.high,e.low,e.high);return Oe(n,fn.get_high(),this.unsigned)}return this.sub(this.div(e).mul(e))},Z.mod=Z.modulo,Z.rem=Z.modulo,Z.not=function(){return Oe(~this.low,~this.high,this.unsigned)},Z.and=function(e){return zt(e)||(e=In(e)),Oe(this.low&e.low,this.high&e.high,this.unsigned)},Z.or=function(e){return zt(e)||(e=In(e)),Oe(this.low|e.low,this.high|e.high,this.unsigned)},Z.xor=function(e){return zt(e)||(e=In(e)),Oe(this.low^e.low,this.high^e.high,this.unsigned)},Z.shiftLeft=function(e){return zt(e)&&(e=e.toInt()),(e&=63)===0?this:e<32?Oe(this.low<>>32-e,this.unsigned):Oe(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):Oe(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},Z.shr=Z.shiftRight,Z.shiftRightUnsigned=function(e){if(zt(e)&&(e=e.toInt()),e&=63,e===0)return this;var n=this.high;if(e<32){var r=this.low;return Oe(r>>>e|n<<32-e,n>>>e,this.unsigned)}else return e===32?Oe(n,0,this.unsigned):Oe(n>>>e-32,0,this.unsigned)},Z.shru=Z.shiftRightUnsigned,Z.shr_u=Z.shiftRightUnsigned,Z.toSigned=function(){return this.unsigned?Oe(this.low,this.high,!1):this},Z.toUnsigned=function(){return this.unsigned?this:Oe(this.low,this.high,!0)},Z.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},Z.toBytesLE=function(){var e=this.high,n=this.low;return[n&255,n>>>8&255,n>>>16&255,n>>>24,e&255,e>>>8&255,e>>>16&255,e>>>24]},Z.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,e&255,n>>>24,n>>>16&255,n>>>8&255,n&255]},Me.fromBytes=function(e,n,r){return r?Me.fromBytesLE(e,n):Me.fromBytesBE(e,n)},Me.fromBytesLE=function(e,n){return new Me(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},Me.fromBytesBE=function(e,n){return new Me(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)};const $u=$s(wO),Zu=1;class vO{constructor({filehandle:e,path:n}){if(e)this.filehandle=e;else if(n)this.filehandle=new ct(n);else throw new TypeError("either filehandle or path must be defined")}_readLongWithOverflow(e,n=0,r=!0){const i=$u.fromBytesLE(e.slice(n,n+8),r);if(i.greaterThan(Number.MAX_SAFE_INTEGER)||i.lessThan(Number.MIN_SAFE_INTEGER))throw new TypeError("integer overflow");return i.toNumber()}_getIndex(){return this.index||(this.index=this._readIndex()),this.index}async _readIndex(){let e=be.Buffer.allocUnsafe(8);await this.filehandle.read(e,0,8,0);const n=this._readLongWithOverflow(e,0,!0);if(!n)return[[0,0]];const r=new Array(n+1);r[0]=[0,0];const i=8*2*n;if(i>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");e=be.Buffer.allocUnsafe(i),await this.filehandle.read(e,0,i,8);for(let o=0;o{const p=h[Zu],b=d?d[Zu]:1/0;return p<=n&&b>n?0:p0?l=f-1:u<0&&(s=f+1),f=Math.ceil((l-s)/2)+s,u=a(i[f],i[f+1]);o.push(i[f]);let c=f+1;for(;c=r));c+=1);return o[o.length-1][Zu]=i?0:i-c,d=Math.min(i+r,c+u.length)-c;h>=0&&h/\S/.test(a)).map(a=>a.split(" ")).filter(a=>a[0]!=="").map(a=>((!i||i.name!==a[0])&&(i={name:a[0],id:r},r+=1),{id:i.id,name:a[0],length:+a[1],start:0,end:+a[1],offset:+a[2],lineLength:+a[3],lineBytes:+a[4]}));return{name:Object.fromEntries(o.map(a=>[a.name,a])),id:Object.fromEntries(o.map(a=>[a.id,a]))}}class TA{constructor({fasta:e,fai:n,path:r,faiPath:i,chunkSizeLimit:o=1e6}){if(e)this.fasta=e;else if(r)this.fasta=new ct(r);else throw new Error("Need to pass filehandle for fasta or path to localfile");if(n)this.fai=n;else if(i)this.fai=new ct(i);else if(r)this.fai=new ct(`${r}.fai`);else throw new Error("Need to pass filehandle for or path to localfile");this.chunkSizeLimit=o}async _getIndexes(e){return this.indexes||(this.indexes=AO(this.fai,e)),this.indexes}async getSequenceNames(e){return Object.keys((await this._getIndexes(e)).name)}async getSequenceSizes(e){const n={},r=await this._getIndexes(e),i=Object.values(r.id);for(let o=0;oe.length)&&(o=e.length),n>=o)return"";const a=CA(e,n),s=CA(e,o)-a;if(s>this.chunkSizeLimit)throw new Error(`data size of ${s.toLocaleString()} bytes exceeded chunk size limit of ${this.chunkSizeLimit.toLocaleString()} bytes`);const l=Buffer.allocUnsafe(s);return await this.fasta.read(l,0,s,a,i),l.toString("utf8").replace(/\s+/g,"")}}class EO extends TA{constructor({fasta:e,path:n,fai:r,faiPath:i,gzi:o,gziPath:a,chunkSizeLimit:s}){super({fasta:e,path:n,fai:r,faiPath:i,chunkSizeLimit:s}),e&&o?this.fasta=new SA({filehandle:e,gziFilehandle:o}):n&&a&&(this.fasta=new SA({path:n,gziPath:a}))}}function IA(t){return t.split(">").filter(e=>/\S/.test(e)).map(e=>{const[n,...r]=e.split(` +`),[i,...o]=n.split(" "),a=r.join("").replace(/\s/g,"");return{id:i,description:o.join(" "),sequence:a}})}class _O{constructor({fasta:e,path:n}){if(e)this.fasta=e;else if(n)this.fasta=new ct(n);else throw new Error("Need to pass fasta or path");this.data=this.fasta.readFile().then(r=>{const i=r.toString("utf8");return IA(i)})}async fetch(e,n,r){const o=(await this.data).find(s=>s.id===e),a=r-n;if(!o)throw new Error(`no sequence with id ${e} exists`);return o.sequence.substr(n,a)}async getSequenceNames(){return(await this.data).map(n=>n.id)}}const SO=Object.freeze(Object.defineProperty({__proto__:null,BgzipIndexedFasta:EO,FetchableSmallFasta:_O,IndexedFasta:TA,parseSmallFasta:IA},Symbol.toStringTag,{value:"Module"})),Yu=BigInt(32);function CO(t,e,n){const r=+!!n,i=+!n;return BigInt(t.getInt32(e,n)*i+t.getInt32(e+4,n)*r)<>Yu),o=Number(n&BigInt(4294967295));r?(t.setInt32(e+4,i,r),t.setUint32(e,o,r)):(t.setInt32(e,i,r),t.setUint32(e+4,o,r))}function kO(t,e,n,r){const i=Number(n>>Yu),o=Number(n&BigInt(4294967295));r?(t.setUint32(e+4,i,r),t.setUint32(e,o,r)):(t.setUint32(e,i,r),t.setUint32(e+4,o,r))}"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(t,e){return CO(this,t,e)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(t,e){return TO(this,t,e)}),"setBigInt64"in DataView||(DataView.prototype.setBigInt64=function(t,e,n){IO(this,t,e,n)}),"setBigUint64"in DataView||(DataView.prototype.setBigUint64=function(t,e,n){kO(this,t,e,n)});class DO{constructor(e,n){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references=new Map,this.imports=[],this.reverseImports=new Map,this.useContextVariables=!1,this.importPath=e,this.useContextVariables=n}generateVariable(e){const n=[...this.scopes[this.scopes.length-1]];return e&&n.push(e),n.join(".")}generateOption(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return`${this.addImport(e)}.call(${this.generateVariable()}, vars)`}}generateError(e){this.pushCode(`throw new Error(${e});`)}generateTmpVariable(){return"$tmp"+this.tmpVariableCount++}pushCode(e){this.code+=e+` +`}pushPath(e){e&&this.scopes[this.scopes.length-1].push(e)}popPath(e){e&&this.scopes[this.scopes.length-1].pop()}pushScope(e){this.scopes.push([e])}popScope(){this.scopes.pop()}addImport(e){if(!this.importPath)return`(${e})`;let n=this.reverseImports.get(e);return n||(n=this.imports.push(e)-1,this.reverseImports.set(e,n)),`${this.importPath}[${n}]`}addReference(e){this.references.has(e)||this.references.set(e,{resolved:!1,requested:!1})}markResolved(e){const n=this.references.get(e);n&&(n.resolved=!0)}markRequested(e){e.forEach(n=>{const r=this.references.get(n);r&&(r.requested=!0)})}getUnresolvedReferences(){return Array.from(this.references).filter(([e,n])=>!n.resolved&&!n.requested).map(([e,n])=>e)}}const kn=new Map,oo="___parser_",Dn={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},Qu={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},Xu={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1};let Ie=class Rn{constructor(){this.varName="",this.type="",this.options={},this.endian="be",this.useContextVariables=!1}static start(){return new Rn}primitiveGenerateN(e,n){const r=Qu[e],i=Xu[e];n.pushCode(`${n.generateVariable(this.varName)} = dataView.get${r}(offset, ${i});`),n.pushCode(`offset += ${Dn[e]};`)}primitiveN(e,n,r){return this.setNextParser(e,n,r)}useThisEndian(e){return e+this.endian.toLowerCase()}uint8(e,n={}){return this.primitiveN("uint8",e,n)}uint16(e,n={}){return this.primitiveN(this.useThisEndian("uint16"),e,n)}uint16le(e,n={}){return this.primitiveN("uint16le",e,n)}uint16be(e,n={}){return this.primitiveN("uint16be",e,n)}uint32(e,n={}){return this.primitiveN(this.useThisEndian("uint32"),e,n)}uint32le(e,n={}){return this.primitiveN("uint32le",e,n)}uint32be(e,n={}){return this.primitiveN("uint32be",e,n)}int8(e,n={}){return this.primitiveN("int8",e,n)}int16(e,n={}){return this.primitiveN(this.useThisEndian("int16"),e,n)}int16le(e,n={}){return this.primitiveN("int16le",e,n)}int16be(e,n={}){return this.primitiveN("int16be",e,n)}int32(e,n={}){return this.primitiveN(this.useThisEndian("int32"),e,n)}int32le(e,n={}){return this.primitiveN("int32le",e,n)}int32be(e,n={}){return this.primitiveN("int32be",e,n)}bigIntVersionCheck(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported on this runtime")}int64(e,n={}){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),e,n)}int64be(e,n={}){return this.bigIntVersionCheck(),this.primitiveN("int64be",e,n)}int64le(e,n={}){return this.bigIntVersionCheck(),this.primitiveN("int64le",e,n)}uint64(e,n={}){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),e,n)}uint64be(e,n={}){return this.bigIntVersionCheck(),this.primitiveN("uint64be",e,n)}uint64le(e,n={}){return this.bigIntVersionCheck(),this.primitiveN("uint64le",e,n)}floatle(e,n={}){return this.primitiveN("floatle",e,n)}floatbe(e,n={}){return this.primitiveN("floatbe",e,n)}doublele(e,n={}){return this.primitiveN("doublele",e,n)}doublebe(e,n={}){return this.primitiveN("doublebe",e,n)}bitN(e,n,r){return r.length=e,this.setNextParser("bit",n,r)}bit1(e,n={}){return this.bitN(1,e,n)}bit2(e,n={}){return this.bitN(2,e,n)}bit3(e,n={}){return this.bitN(3,e,n)}bit4(e,n={}){return this.bitN(4,e,n)}bit5(e,n={}){return this.bitN(5,e,n)}bit6(e,n={}){return this.bitN(6,e,n)}bit7(e,n={}){return this.bitN(7,e,n)}bit8(e,n={}){return this.bitN(8,e,n)}bit9(e,n={}){return this.bitN(9,e,n)}bit10(e,n={}){return this.bitN(10,e,n)}bit11(e,n={}){return this.bitN(11,e,n)}bit12(e,n={}){return this.bitN(12,e,n)}bit13(e,n={}){return this.bitN(13,e,n)}bit14(e,n={}){return this.bitN(14,e,n)}bit15(e,n={}){return this.bitN(15,e,n)}bit16(e,n={}){return this.bitN(16,e,n)}bit17(e,n={}){return this.bitN(17,e,n)}bit18(e,n={}){return this.bitN(18,e,n)}bit19(e,n={}){return this.bitN(19,e,n)}bit20(e,n={}){return this.bitN(20,e,n)}bit21(e,n={}){return this.bitN(21,e,n)}bit22(e,n={}){return this.bitN(22,e,n)}bit23(e,n={}){return this.bitN(23,e,n)}bit24(e,n={}){return this.bitN(24,e,n)}bit25(e,n={}){return this.bitN(25,e,n)}bit26(e,n={}){return this.bitN(26,e,n)}bit27(e,n={}){return this.bitN(27,e,n)}bit28(e,n={}){return this.bitN(28,e,n)}bit29(e,n={}){return this.bitN(29,e,n)}bit30(e,n={}){return this.bitN(30,e,n)}bit31(e,n={}){return this.bitN(31,e,n)}bit32(e,n={}){return this.bitN(32,e,n)}namely(e){return kn.set(e,this),this.alias=e,this}skip(e,n={}){return this.seek(e,n)}seek(e,n={}){if(n.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:e})}string(e,n){if(!n.zeroTerminated&&!n.length&&!n.greedy)throw new Error("One of length, zeroTerminated, or greedy must be defined for string.");if((n.zeroTerminated||n.length)&&n.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(n.stripNull&&!(n.length||n.greedy))throw new Error("length or greedy must be defined if stripNull is enabled.");return n.encoding=n.encoding||"utf8",this.setNextParser("string",e,n)}buffer(e,n){if(!n.length&&!n.readUntil)throw new Error("length or readUntil must be defined for buffer.");return this.setNextParser("buffer",e,n)}wrapped(e,n){if(typeof n!="object"&&typeof e=="object"&&(n=e,e=""),!n||!n.wrapper||!n.type)throw new Error("Both wrapper and type must be defined for wrapped.");if(!n.length&&!n.readUntil)throw new Error("length or readUntil must be defined for wrapped.");return this.setNextParser("wrapper",e,n)}array(e,n){if(!n.readUntil&&!n.length&&!n.lengthInBytes)throw new Error("One of readUntil, length and lengthInBytes must be defined for array.");if(!n.type)throw new Error("type is required for array.");if(typeof n.type=="string"&&!kn.has(n.type)&&!(n.type in Dn))throw new Error(`Array element type "${n.type}" is unkown.`);return this.setNextParser("array",e,n)}choice(e,n){if(typeof n!="object"&&typeof e=="object"&&(n=e,e=""),!n)throw new Error("tag and choices are are required for choice.");if(!n.tag)throw new Error("tag is requird for choice.");if(!n.choices)throw new Error("choices is required for choice.");for(const r in n.choices){const i=parseInt(r,10),o=n.choices[i];if(isNaN(i))throw new Error(`Choice key "${r}" is not a number.`);if(typeof o=="string"&&!kn.has(o)&&!(o in Dn))throw new Error(`Choice type "${o}" is unkown.`)}return this.setNextParser("choice",e,n)}nest(e,n){if(typeof n!="object"&&typeof e=="object"&&(n=e,e=""),!n||!n.type)throw new Error("type is required for nest.");if(!(n.type instanceof Rn)&&!kn.has(n.type))throw new Error("type must be a known parser name or a Parser object.");if(!(n.type instanceof Rn)&&!e)throw new Error("type must be a Parser object if the variable name is omitted.");return this.setNextParser("nest",e,n)}pointer(e,n){if(!n.offset)throw new Error("offset is required for pointer.");if(!n.type)throw new Error("type is required for pointer.");if(typeof n.type=="string"&&!(n.type in Dn)&&!kn.has(n.type))throw new Error(`Pointer type "${n.type}" is unkown.`);return this.setNextParser("pointer",e,n)}saveOffset(e,n={}){return this.setNextParser("saveOffset",e,n)}endianness(e){switch(e.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error('endianness must be one of "little" or "big"')}return this}endianess(e){return this.endianness(e)}useContextVars(e=!0){return this.useContextVariables=e,this}create(e){if(!(e instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=e,this}getContext(e){const n=new DO(e,this.useContextVariables);return n.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(n),n.pushCode(`return ${oo+this.alias}(0).result;`)):this.addRawCode(n),n}getCode(){const e="imports";return this.getContext(e).code}addRawCode(e){e.pushCode("var offset = 0;"),e.pushCode(`var vars = ${this.constructorFn?"new constructorFn()":"{}"};`),e.pushCode("vars.$parent = null;"),e.pushCode("vars.$root = vars;"),this.generate(e),this.resolveReferences(e),e.pushCode("delete vars.$parent;"),e.pushCode("delete vars.$root;"),e.pushCode("return vars;")}addAliasedCode(e){return e.pushCode(`function ${oo+this.alias}(offset, context) {`),e.pushCode(`var vars = ${this.constructorFn?"new constructorFn()":"{}"};`),e.pushCode("var ctx = Object.assign({$parent: null, $root: vars}, context || {});"),e.pushCode("vars = Object.assign(vars, ctx);"),this.generate(e),e.markResolved(this.alias),this.resolveReferences(e),e.pushCode("Object.keys(ctx).forEach(function (item) { delete vars[item]; });"),e.pushCode("return { offset: offset, result: vars };"),e.pushCode("}"),e}resolveReferences(e){const n=e.getUnresolvedReferences();e.markRequested(n),n.forEach(r=>{var i;(i=kn.get(r))===null||i===void 0||i.addAliasedCode(e)})}compile(){const e="imports",n=this.getContext(e);this.compiled=new Function(e,"TextDecoder",`return function (buffer, constructorFn) { ${n.code} };`)(n.imports,TextDecoder)}sizeOf(){let e=NaN;if(Object.keys(Dn).indexOf(this.type)>=0)e=Dn[this.type];else if(this.type==="string"&&typeof this.options.length=="number")e=this.options.length;else if(this.type==="buffer"&&typeof this.options.length=="number")e=this.options.length;else if(this.type==="array"&&typeof this.options.length=="number"){let n=NaN;typeof this.options.type=="string"?n=Dn[this.options.type]:this.options.type instanceof Rn&&(n=this.options.type.sizeOf()),e=this.options.length*n}else this.type==="seek"?e=this.options.length:this.type==="nest"?e=this.options.type.sizeOf():this.type||(e=0);return this.next&&(e+=this.next.sizeOf()),e}parse(e){return this.compiled||this.compile(),this.compiled(e,this.constructorFn)}setNextParser(e,n,r){const i=new Rn;return i.type=e,i.varName=n,i.options=r,i.endian=this.endian,this.head?this.head.next=i:this.next=i,this.head=i,this}generate(e){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,e);break;case"bit":this.generateBit(e);break;case"string":this.generateString(e);break;case"buffer":this.generateBuffer(e);break;case"seek":this.generateSeek(e);break;case"nest":this.generateNest(e);break;case"array":this.generateArray(e);break;case"choice":this.generateChoice(e);break;case"pointer":this.generatePointer(e);break;case"saveOffset":this.generateSaveOffset(e);break;case"wrapper":this.generateWrapper(e);break}this.type!=="bit"&&this.generateAssert(e)}const n=e.generateVariable(this.varName);return this.options.formatter&&this.type!=="bit"&&this.generateFormatter(e,n,this.options.formatter),this.generateNext(e)}generateAssert(e){if(!this.options.assert)return;const n=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":{const r=e.addImport(this.options.assert);e.pushCode(`if (!${r}.call(vars, ${n})) {`)}break;case"number":e.pushCode(`if (${this.options.assert} !== ${n}) {`);break;case"string":e.pushCode(`if (${JSON.stringify(this.options.assert)} !== ${n}) {`);break;default:throw new Error("assert option must be a string, number or a function.")}e.generateError(`"Assertion error: ${n} is " + ${JSON.stringify(this.options.assert.toString())}`),e.pushCode("}")}generateNext(e){return this.next&&(e=this.next.generate(e)),e}generateBit(e){const n=JSON.parse(JSON.stringify(this));if(n.options=this.options,n.generateAssert=this.generateAssert.bind(this),n.generateFormatter=this.generateFormatter.bind(this),n.varName=e.generateVariable(n.varName),e.bitFields.push(n),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){const r=e.generateTmpVariable();e.pushCode(`var ${r} = 0;`);const i=(u=0)=>{let c=0;for(let h=u;h32)break;c+=d}return c},o=u=>(u<=8?(e.pushCode(`${r} = dataView.getUint8(offset);`),u=8):u<=16?(e.pushCode(`${r} = dataView.getUint16(offset);`),u=16):u<=24?(e.pushCode(`${r} = (dataView.getUint16(offset) << 8) | dataView.getUint8(offset + 2);`),u=24):(e.pushCode(`${r} = dataView.getUint32(offset);`),u=32),e.pushCode(`offset += ${u/8};`),u);let a=0;const s=this.endian==="be";let l=0,f=0;e.bitFields.forEach((u,c)=>{let h=u.options.length;if(h>f){if(f){const b=-1>>>32-f;e.pushCode(`${u.varName} = (${r} & 0x${b.toString(16)}) << ${h-f};`),h-=f}a=0,f=l=o(i(c)-f)}const d=s?l-a-h:a,p=-1>>>32-h;e.pushCode(`${u.varName} ${h> ${d} & 0x${p.toString(16)};`),u.options.length===32&&e.pushCode(`${u.varName} >>>= 0`),u.options.assert&&u.generateAssert(e),u.options.formatter&&u.generateFormatter(e,u.varName,u.options.formatter),a+=h,f-=h}),e.bitFields=[]}}generateSeek(e){const n=e.generateOption(this.options.length);e.pushCode(`offset += ${n};`)}generateString(e){const n=e.generateVariable(this.varName),r=e.generateTmpVariable(),i=this.options.encoding,o=i.toLowerCase()==="hex",a='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){const s=this.options.length;e.pushCode(`var ${r} = offset;`),e.pushCode(`while(dataView.getUint8(offset++) !== 0 && offset - ${r} < ${s});`);const l=`offset - ${r} < ${s} ? offset - 1 : offset`;e.pushCode(o?`${n} = Array.from(buffer.subarray(${r}, ${l}), ${a}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, ${l}));`)}else if(this.options.length){const s=e.generateOption(this.options.length);e.pushCode(o?`${n} = Array.from(buffer.subarray(offset, offset + ${s}), ${a}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(offset, offset + ${s}));`),e.pushCode(`offset += ${s};`)}else this.options.zeroTerminated?(e.pushCode(`var ${r} = offset;`),e.pushCode("while(dataView.getUint8(offset++) !== 0);"),e.pushCode(o?`${n} = Array.from(buffer.subarray(${r}, offset - 1), ${a}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, offset - 1));`)):this.options.greedy&&(e.pushCode(`var ${r} = offset;`),e.pushCode("while(buffer.length > offset++);"),e.pushCode(o?`${n} = Array.from(buffer.subarray(${r}, offset), ${a}).join('');`:`${n} = new TextDecoder('${i}').decode(buffer.subarray(${r}, offset));`));this.options.stripNull&&e.pushCode(`${n} = ${n}.replace(/\\x00+$/g, '')`)}generateBuffer(e){const n=e.generateVariable(this.varName);if(typeof this.options.readUntil=="function"){const r=this.options.readUntil,i=e.generateTmpVariable(),o=e.generateTmpVariable();e.pushCode(`var ${i} = offset;`),e.pushCode(`var ${o} = 0;`),e.pushCode("while (offset < buffer.length) {"),e.pushCode(`${o} = dataView.getUint8(offset);`);const a=e.addImport(r);e.pushCode(`if (${a}.call(${e.generateVariable()}, ${o}, buffer.subarray(offset))) break;`),e.pushCode("offset += 1;"),e.pushCode("}"),e.pushCode(`${n} = buffer.subarray(${i}, offset);`)}else if(this.options.readUntil==="eof")e.pushCode(`${n} = buffer.subarray(offset);`);else{const r=e.generateOption(this.options.length);e.pushCode(`${n} = buffer.subarray(offset, offset + ${r});`),e.pushCode(`offset += ${r};`)}this.options.clone&&e.pushCode(`${n} = buffer.constructor.from(${n});`)}generateArray(e){const n=e.generateOption(this.options.length),r=e.generateOption(this.options.lengthInBytes),i=this.options.type,o=e.generateTmpVariable(),a=e.generateVariable(this.varName),s=e.generateTmpVariable(),l=this.options.key,f=typeof l=="string";if(f?e.pushCode(`${a} = {};`):e.pushCode(`${a} = [];`),typeof this.options.readUntil=="function"?e.pushCode("do {"):this.options.readUntil==="eof"?e.pushCode(`for (var ${o} = 0; offset < buffer.length; ${o}++) {`):r!==void 0?e.pushCode(`for (var ${o} = offset + ${r}; offset < ${o}; ) {`):e.pushCode(`for (var ${o} = ${n}; ${o} > 0; ${o}--) {`),typeof i=="string")if(kn.get(i)){const u=e.generateTmpVariable();if(e.pushCode(`var ${u} = ${oo+i}(offset, {`),e.useContextVariables){const c=e.generateVariable();e.pushCode(`$parent: ${c},`),e.pushCode(`$root: ${c}.$root,`),!this.options.readUntil&&r===void 0&&e.pushCode(`$index: ${n} - ${o},`)}e.pushCode("});"),e.pushCode(`var ${s} = ${u}.result; offset = ${u}.offset;`),i!==this.alias&&e.addReference(i)}else{const u=Qu[i],c=Xu[i];e.pushCode(`var ${s} = dataView.get${u}(offset, ${c});`),e.pushCode(`offset += ${Dn[i]};`)}else if(i instanceof Rn){e.pushCode(`var ${s} = {};`);const u=e.generateVariable();e.pushScope(s),e.useContextVariables&&(e.pushCode(`${s}.$parent = ${u};`),e.pushCode(`${s}.$root = ${u}.$root;`),!this.options.readUntil&&r===void 0&&e.pushCode(`${s}.$index = ${n} - ${o};`)),i.generate(e),e.useContextVariables&&(e.pushCode(`delete ${s}.$parent;`),e.pushCode(`delete ${s}.$root;`),e.pushCode(`delete ${s}.$index;`)),e.popScope()}if(f?e.pushCode(`${a}[${s}.${l}] = ${s};`):e.pushCode(`${a}.push(${s});`),e.pushCode("}"),typeof this.options.readUntil=="function"){const u=this.options.readUntil,c=e.addImport(u);e.pushCode(`while (!${c}.call(${e.generateVariable()}, ${s}, buffer.subarray(offset)));`)}}generateChoiceCase(e,n,r){if(typeof r=="string"){const i=e.generateVariable(this.varName);if(kn.has(r)){const o=e.generateTmpVariable();e.pushCode(`var ${o} = ${oo+r}(offset, {`),e.useContextVariables&&(e.pushCode(`$parent: ${i}.$parent,`),e.pushCode(`$root: ${i}.$root,`)),e.pushCode("});"),e.pushCode(`${i} = ${o}.result; offset = ${o}.offset;`),r!==this.alias&&e.addReference(r)}else{const o=Qu[r],a=Xu[r];e.pushCode(`${i} = dataView.get${o}(offset, ${a});`),e.pushCode(`offset += ${Dn[r]}`)}}else r instanceof Rn&&(e.pushPath(n),r.generate(e),e.popPath(n))}generateChoice(e){const n=e.generateOption(this.options.tag),r=e.generateVariable(this.varName);if(this.varName&&(e.pushCode(`${r} = {};`),e.useContextVariables)){const i=e.generateVariable();e.pushCode(`${r}.$parent = ${i};`),e.pushCode(`${r}.$root = ${i}.$root;`)}e.pushCode(`switch(${n}) {`);for(const i in this.options.choices){const o=parseInt(i,10),a=this.options.choices[o];e.pushCode(`case ${o}:`),this.generateChoiceCase(e,this.varName,a),e.pushCode("break;")}e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError(`"Met undefined tag value " + ${n} + " at choice"`),e.pushCode("}"),this.varName&&e.useContextVariables&&(e.pushCode(`delete ${r}.$parent;`),e.pushCode(`delete ${r}.$root;`))}generateNest(e){const n=e.generateVariable(this.varName);if(this.options.type instanceof Rn){if(this.varName&&(e.pushCode(`${n} = {};`),e.useContextVariables)){const r=e.generateVariable();e.pushCode(`${n}.$parent = ${r};`),e.pushCode(`${n}.$root = ${r}.$root;`)}e.pushPath(this.varName),this.options.type.generate(e),e.popPath(this.varName),this.varName&&e.useContextVariables&&e.useContextVariables&&(e.pushCode(`delete ${n}.$parent;`),e.pushCode(`delete ${n}.$root;`))}else if(kn.has(this.options.type)){const r=e.generateTmpVariable();if(e.pushCode(`var ${r} = ${oo+this.options.type}(offset, {`),e.useContextVariables){const i=e.generateVariable();e.pushCode(`$parent: ${i},`),e.pushCode(`$root: ${i}.$root,`)}e.pushCode("});"),e.pushCode(`${n} = ${r}.result; offset = ${r}.offset;`),this.options.type!==this.alias&&e.addReference(this.options.type)}}generateWrapper(e){const n=e.generateVariable(this.varName),r=e.generateTmpVariable();if(typeof this.options.readUntil=="function"){const l=this.options.readUntil,f=e.generateTmpVariable(),u=e.generateTmpVariable();e.pushCode(`var ${f} = offset;`),e.pushCode(`var ${u} = 0;`),e.pushCode("while (offset < buffer.length) {"),e.pushCode(`${u} = dataView.getUint8(offset);`);const c=e.addImport(l);e.pushCode(`if (${c}.call(${e.generateVariable()}, ${u}, buffer.subarray(offset))) break;`),e.pushCode("offset += 1;"),e.pushCode("}"),e.pushCode(`${r} = buffer.subarray(${f}, offset);`)}else if(this.options.readUntil==="eof")e.pushCode(`${r} = buffer.subarray(offset);`);else{const l=e.generateOption(this.options.length);e.pushCode(`${r} = buffer.subarray(offset, offset + ${l});`),e.pushCode(`offset += ${l};`)}this.options.clone&&e.pushCode(`${r} = buffer.constructor.from(${r});`);const i=e.generateTmpVariable(),o=e.generateTmpVariable(),a=e.generateTmpVariable(),s=e.addImport(this.options.wrapper);if(e.pushCode(`${r} = ${s}.call(this, ${r}).subarray(0);`),e.pushCode(`var ${i} = buffer;`),e.pushCode(`var ${o} = offset;`),e.pushCode(`var ${a} = dataView;`),e.pushCode(`buffer = ${r};`),e.pushCode("offset = 0;"),e.pushCode("dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.options.type instanceof Rn)this.varName&&e.pushCode(`${n} = {};`),e.pushPath(this.varName),this.options.type.generate(e),e.popPath(this.varName);else if(kn.has(this.options.type)){const l=e.generateTmpVariable();e.pushCode(`var ${l} = ${oo+this.options.type}(0);`),e.pushCode(`${n} = ${l}.result;`),this.options.type!==this.alias&&e.addReference(this.options.type)}e.pushCode(`buffer = ${i};`),e.pushCode(`dataView = ${a};`),e.pushCode(`offset = ${o};`)}generateFormatter(e,n,r){if(typeof r=="function"){const i=e.addImport(r);e.pushCode(`${n} = ${i}.call(${e.generateVariable()}, ${n});`)}}generatePointer(e){const n=this.options.type,r=e.generateOption(this.options.offset),i=e.generateTmpVariable(),o=e.generateVariable(this.varName);if(e.pushCode(`var ${i} = offset;`),e.pushCode(`offset = ${r};`),this.options.type instanceof Rn){if(e.pushCode(`${o} = {};`),e.useContextVariables){const a=e.generateVariable();e.pushCode(`${o}.$parent = ${a};`),e.pushCode(`${o}.$root = ${a}.$root;`)}e.pushPath(this.varName),this.options.type.generate(e),e.popPath(this.varName),e.useContextVariables&&(e.pushCode(`delete ${o}.$parent;`),e.pushCode(`delete ${o}.$root;`))}else if(kn.has(this.options.type)){const a=e.generateTmpVariable();if(e.pushCode(`var ${a} = ${oo+this.options.type}(offset, {`),e.useContextVariables){const s=e.generateVariable();e.pushCode(`$parent: ${s},`),e.pushCode(`$root: ${s}.$root,`)}e.pushCode("});"),e.pushCode(`${o} = ${a}.result; offset = ${a}.offset;`),this.options.type!==this.alias&&e.addReference(this.options.type)}else if(Object.keys(Dn).indexOf(this.options.type)>=0){const a=Qu[n],s=Xu[n];e.pushCode(`${o} = dataView.get${a}(offset, ${s});`),e.pushCode(`offset += ${Dn[n]};`)}e.pushCode(`offset = ${i};`)}generateSaveOffset(e){const n=e.generateVariable(this.varName);e.pushCode(`${n} = offset`)}};var kA={},np={},ao={},hf={};Object.defineProperty(hf,"__esModule",{value:!0});function rp(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function DA(t,e){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function df(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function RO(t,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return df(t)}function PO(t){var e=FO();return function(){var r=aa(t),i;if(e){var o=aa(this).constructor;i=Reflect.construct(r,arguments,o)}else i=r.apply(this,arguments);return RO(this,i)}}function MO(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&(t=aa(t),t!==null););return t}function Ku(){return typeof Reflect<"u"&&Reflect.get?Ku=Reflect.get.bind():Ku=function(e,n,r){var i=MO(e,n);if(i){var o=Object.getOwnPropertyDescriptor(i,n);return o.get?o.get.call(arguments.length<3?e:r):o.value}},Ku.apply(this,arguments)}var BA=function(){function t(){rp(this,t),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return ip(t,[{key:"addEventListener",value:function(n,r,i){n in this.listeners||(this.listeners[n]=[]),this.listeners[n].push({callback:r,options:i})}},{key:"removeEventListener",value:function(n,r){if(n in this.listeners){for(var i=this.listeners[n],o=0,a=i.length;o"u")i=new Error("This operation was aborted"),i.name="AbortError";else try{i=new DOMException("signal is aborted without reason")}catch{i=new Error("This operation was aborted"),i.name="AbortError"}this.signal.reason=i,this.signal.dispatchEvent(r)}},{key:"toString",value:function(){return"[object AbortController]"}}]),t}();typeof Symbol<"u"&&Symbol.toStringTag&&(FA.prototype[Symbol.toStringTag]="AbortController",ap.prototype[Symbol.toStringTag]="AbortSignal");function OO(t){return t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):typeof t.Request=="function"&&!t.Request.prototype.hasOwnProperty("signal")||!t.AbortController}function NO(t){typeof t=="function"&&(t={fetch:t});var e=t,n=e.fetch,r=e.Request,i=r===void 0?n.Request:r,o=e.AbortController,a=e.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL,s=a===void 0?!1:a;if(!OO({fetch:n,Request:i,AbortController:o,__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL:s}))return{fetch:n,Request:l};var l=i;(l&&!l.prototype.hasOwnProperty("signal")||s)&&(l=function(h,d){var p;d&&d.signal&&(p=d.signal,delete d.signal);var b=new i(h,d);return p&&Object.defineProperty(b,"signal",{writable:!1,enumerable:!1,configurable:!0,value:p}),b},l.prototype=i.prototype);var f=n,u=function(h,d){var p=l&&l.prototype.isPrototypeOf(h)?h.signal:d?d.signal:void 0;if(p){var b;try{b=new DOMException("Aborted","AbortError")}catch{b=new Error("Aborted"),b.name="AbortError"}if(p.aborted)return Promise.reject(b);var y=new Promise(function(w,S){p.addEventListener("abort",function(){return S(b)},{once:!0})});return d&&d.signal&&delete d.signal,Promise.race([y,f(h,d)])}return f(h,d)};return{fetch:u,Request:l}}hf.AbortController=FA,hf.AbortSignal=ap,hf.abortableFetch=NO,Object.defineProperty(ao,"__esModule",{value:!0}),ao.AbortSignal=ao.AbortController=void 0;const RA=hf;var Ju=function(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof nn<"u")return nn;throw new Error("unable to locate global object")};let LO=typeof Ju().AbortController>"u"?RA.AbortController:Ju().AbortController;ao.AbortController=LO;let zO=typeof Ju().AbortController>"u"?RA.AbortSignal:Ju().AbortSignal;ao.AbortSignal=zO;var sp={};Object.defineProperty(sp,"__esModule",{value:!0});const UO=ao;class GO{}class HO{constructor(){this.signals=new Set,this.abortController=new UO.AbortController}addSignal(e=new GO){if(this.signal.aborted)throw new 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()}}sp.default=HO;var fp={};Object.defineProperty(fp,"__esModule",{value:!0});class VO{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),e(this.currentMessage)}callback(e){this.currentMessage=e,this.callbacks.forEach(n=>{n(e)})}}fp.default=VO;var PA=nn&&nn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(np,"__esModule",{value:!0});const jO=ao,qO=PA(sp),WO=PA(fp);class ec{constructor({fill:e,cache:n}){if(typeof e!="function")throw new TypeError("must pass a fill function");if(typeof n!="object")throw new TypeError("must pass a cache object");if(typeof n.get!="function"||typeof n.set!="function"||typeof n.delete!="function")throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=n,this.fillCallback=e}static isAbortException(e){return e.name==="AbortError"||e.code==="ERR_ABORTED"||e.message==="AbortError: aborted"||e.message==="Error: aborted"}evict(e,n){this.cache.get(e)===n&&this.cache.delete(e)}fill(e,n,r,i){const o=new qO.default,a=new WO.default;a.addCallback(i);const s={aborter:o,promise:this.fillCallback(n,o.signal,l=>{a.callback(l)}),settled:!1,statusReporter:a,get aborted(){return this.aborter.signal.aborted}};s.aborter.addSignal(r),s.aborter.signal.addEventListener("abort",()=>{s.settled||this.evict(e,s)}),s.promise.then(()=>{s.settled=!0},()=>{s.settled=!0,this.evict(e,s)}).catch(l=>{throw console.error(l),l}),this.cache.set(e,s)}static checkSinglePromise(e,n){function r(){if(n&&n.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return e.then(i=>(r(),i),i=>{throw r(),i})}has(e){return this.cache.has(e)}get(e,n,r,i){if(!r&&n instanceof jO.AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const o=this.cache.get(e);return o?o.aborted&&!o.settled?(this.evict(e,o),this.get(e,n,r,i)):o.settled?o.promise:(o.aborter.addSignal(r),o.statusReporter.addCallback(i),ec.checkSinglePromise(o.promise,r)):(this.fill(e,n,r,i),ec.checkSinglePromise(this.cache.get(e).promise,r))}delete(e){const n=this.cache.get(e);n&&(n.settled||n.aborter.abort(),this.cache.delete(e))}clear(){const e=this.cache.keys();let n=0;for(let r=e.next();!r.done;r=e.next())this.delete(r.value),n+=1;return n}}np.default=ec;var $O=nn&&nn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kA,"__esModule",{value:!0});const ZO=$O(np);var tc=kA.default=ZO.default;class YO{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,n){this.cache.set(e,n),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){const n=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,n),n}}set(e,n){return this.cache.has(e)?this.cache.set(e,n):this._set(e,n),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){const n=this.cache.delete(e);return n&&this._size--,this.oldCache.delete(e)||n}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache)yield e;for(const e of this.oldCache){const[n]=e;this.cache.has(n)||(yield e)}}get size(){let e=0;for(const n of this.oldCache.keys())this.cache.has(n)||e++;return this._size+e}}var QO=YO;const nc=$s(QO);class ti{constructor(e,n){this.ranges=arguments.length===2?[{min:e,max:n}]:0 in e?Object.assign({},e):[e]}min(){return this.ranges[0].min}max(){return this.ranges[this.ranges.length-1].max}contains(e){for(let n=0;n=e)return!0}return!1}isContiguous(){return this.ranges.length>1}getRanges(){return this.ranges.map(e=>new ti(e.min,e.max))}toString(){return this.ranges.map(e=>`[${e.min}-${e.max}]`).join(",")}union(e){const n=this.getRanges().concat(e.getRanges()).sort(this.rangeOrder),r=[];let i=n[0];for(let o=1;oi.max()+1?(r.push(i),i=a):a.max()>i.max()&&(i=new ti(i.min(),a.max()))}return r.push(i),r.length===1?r[0]:new ti(r)}intersection(e){let n=this,r=e;const i=this.ranges(),o=r.ranges(),a=i.length,s=o.length;let l=0,f=0;const u=[];for(;l=c&&u.push(new ti(c,h)),n.max()>r.max()?f+=1:l+=1}if(u.length===0)throw new Error("found range of length 0");return u.length===1?u[0]:new ti(u)}coverage(){let e=0;const n=this.ranges();for(const r of n)e+=r.max()-r.min()+1;return e}rangeOrder(e,n){let r=e,i=n;return arguments.length<2&&(i=r,r=this),r.min()i.min()?1:r.max()r.max()?1:0}}/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */const XO=4,MA=0,OA=1,KO=2;function sa(t){let e=t.length;for(;--e>=0;)t[e]=0}const JO=0,NA=1,e9=2,t9=3,n9=258,lp=29,pf=256,gf=pf+1+lp,fa=30,up=19,LA=2*gf+1,so=15,cp=16,r9=7,hp=256,zA=16,UA=17,GA=18,dp=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),rc=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i9=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),HA=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o9=512,hr=new Array((gf+2)*2);sa(hr);const mf=new Array(fa*2);sa(mf);const bf=new Array(o9);sa(bf);const yf=new Array(n9-t9+1);sa(yf);const pp=new Array(lp);sa(pp);const ic=new Array(fa);sa(ic);function gp(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}let VA,jA,qA;function mp(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}const WA=t=>t<256?bf[t]:bf[256+(t>>>7)],wf=(t,e)=>{t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255},Gt=(t,e,n)=>{t.bi_valid>cp-n?(t.bi_buf|=e<>cp-t.bi_valid,t.bi_valid+=n-cp):(t.bi_buf|=e<{Gt(t,n[e*2],n[e*2+1])},$A=(t,e)=>{let n=0;do n|=t&1,t>>>=1,n<<=1;while(--e>0);return n>>>1},a9=t=>{t.bi_valid===16?(wf(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)},s9=(t,e)=>{const n=e.dyn_tree,r=e.max_code,i=e.stat_desc.static_tree,o=e.stat_desc.has_stree,a=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,l=e.stat_desc.max_length;let f,u,c,h,d,p,b=0;for(h=0;h<=so;h++)t.bl_count[h]=0;for(n[t.heap[t.heap_max]*2+1]=0,f=t.heap_max+1;fl&&(h=l,b++),n[u*2+1]=h,!(u>r)&&(t.bl_count[h]++,d=0,u>=s&&(d=a[u-s]),p=n[u*2],t.opt_len+=p*(h+d),o&&(t.static_len+=p*(i[u*2+1]+d)));if(b!==0){do{for(h=l-1;t.bl_count[h]===0;)h--;t.bl_count[h]--,t.bl_count[h+1]+=2,t.bl_count[l]--,b-=2}while(b>0);for(h=l;h!==0;h--)for(u=t.bl_count[h];u!==0;)c=t.heap[--f],!(c>r)&&(n[c*2+1]!==h&&(t.opt_len+=(h-n[c*2+1])*n[c*2],n[c*2+1]=h),u--)}},ZA=(t,e,n)=>{const r=new Array(so+1);let i=0,o,a;for(o=1;o<=so;o++)i=i+n[o-1]<<1,r[o]=i;for(a=0;a<=e;a++){let s=t[a*2+1];s!==0&&(t[a*2]=$A(r[s]++,s))}},f9=()=>{let t,e,n,r,i;const o=new Array(so+1);for(n=0,r=0;r>=7;r{let e;for(e=0;e{t.bi_valid>8?wf(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},XA=(t,e,n,r)=>{const i=e*2,o=n*2;return t[i]{const r=t.heap[n];let i=n<<1;for(;i<=t.heap_len&&(i{let r,i,o=0,a,s;if(t.sym_next!==0)do r=t.pending_buf[t.sym_buf+o++]&255,r+=(t.pending_buf[t.sym_buf+o++]&255)<<8,i=t.pending_buf[t.sym_buf+o++],r===0?Zn(t,i,e):(a=yf[i],Zn(t,a+pf+1,e),s=dp[a],s!==0&&(i-=pp[a],Gt(t,i,s)),r--,a=WA(r),Zn(t,a,n),s=rc[a],s!==0&&(r-=ic[a],Gt(t,r,s)));while(o{const n=e.dyn_tree,r=e.stat_desc.static_tree,i=e.stat_desc.has_stree,o=e.stat_desc.elems;let a,s,l=-1,f;for(t.heap_len=0,t.heap_max=LA,a=0;a>1;a>=1;a--)bp(t,n,a);f=o;do a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],bp(t,n,1),s=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=s,n[f*2]=n[a*2]+n[s*2],t.depth[f]=(t.depth[a]>=t.depth[s]?t.depth[a]:t.depth[s])+1,n[a*2+1]=n[s*2+1]=f,t.heap[1]=f++,bp(t,n,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],s9(t,e),ZA(n,l,t.bl_count)},JA=(t,e,n)=>{let r,i=-1,o,a=e[0*2+1],s=0,l=7,f=4;for(a===0&&(l=138,f=3),e[(n+1)*2+1]=65535,r=0;r<=n;r++)o=a,a=e[(r+1)*2+1],!(++s{let r,i=-1,o,a=e[0*2+1],s=0,l=7,f=4;for(a===0&&(l=138,f=3),r=0;r<=n;r++)if(o=a,a=e[(r+1)*2+1],!(++s{let e;for(JA(t,t.dyn_ltree,t.l_desc.max_code),JA(t,t.dyn_dtree,t.d_desc.max_code),yp(t,t.bl_desc),e=up-1;e>=3&&t.bl_tree[HA[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e},u9=(t,e,n,r)=>{let i;for(Gt(t,e-257,5),Gt(t,n-1,5),Gt(t,r-4,4),i=0;i{let e=4093624447,n;for(n=0;n<=31;n++,e>>>=1)if(e&1&&t.dyn_ltree[n*2]!==0)return MA;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return OA;for(n=32;n{t2||(f9(),t2=!0),t.l_desc=new mp(t.dyn_ltree,VA),t.d_desc=new mp(t.dyn_dtree,jA),t.bl_desc=new mp(t.bl_tree,qA),t.bi_buf=0,t.bi_valid=0,YA(t)},n2=(t,e,n,r)=>{Gt(t,(JO<<1)+(r?1:0),3),QA(t),wf(t,n),wf(t,~n),n&&t.pending_buf.set(t.window.subarray(e,e+n),t.pending),t.pending+=n},d9=t=>{Gt(t,NA<<1,3),Zn(t,hp,hr),a9(t)},p9=(t,e,n,r)=>{let i,o,a=0;t.level>0?(t.strm.data_type===KO&&(t.strm.data_type=c9(t)),yp(t,t.l_desc),yp(t,t.d_desc),a=l9(t),i=t.opt_len+3+7>>>3,o=t.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&e!==-1?n2(t,e,n,r):t.strategy===XO||o===i?(Gt(t,(NA<<1)+(r?1:0),3),KA(t,hr,mf)):(Gt(t,(e9<<1)+(r?1:0),3),u9(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),KA(t,t.dyn_ltree,t.dyn_dtree)),YA(t),r&&QA(t)},g9=(t,e,n)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=n,e===0?t.dyn_ltree[n*2]++:(t.matches++,e--,t.dyn_ltree[(yf[n]+pf+1)*2]++,t.dyn_dtree[WA(e)*2]++),t.sym_next===t.sym_end);var m9=h9,b9=n2,y9=p9,w9=g9,x9=d9,v9={_tr_init:m9,_tr_stored_block:b9,_tr_flush_block:y9,_tr_tally:w9,_tr_align:x9},xf=(t,e,n,r)=>{let i=t&65535|0,o=t>>>16&65535|0,a=0;for(;n!==0;){a=n>2e3?2e3:n,n-=a;do i=i+e[r++]|0,o=o+i|0;while(--a);i%=65521,o%=65521}return i|o<<16|0};const A9=()=>{let t,e=[];for(var n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e},E9=new Uint32Array(A9());var ht=(t,e,n,r)=>{const i=E9,o=r+n;t^=-1;for(let a=r;a>>8^i[(t^e[a])&255];return t^-1},la={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"},vf={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:_9,_tr_stored_block:wp,_tr_flush_block:S9,_tr_tally:ni,_tr_align:C9}=v9,{Z_NO_FLUSH:ri,Z_PARTIAL_FLUSH:T9,Z_FULL_FLUSH:I9,Z_FINISH:cn,Z_BLOCK:r2,Z_OK:bt,Z_STREAM_END:i2,Z_STREAM_ERROR:Yn,Z_DATA_ERROR:k9,Z_BUF_ERROR:xp,Z_DEFAULT_COMPRESSION:D9,Z_FILTERED:B9,Z_HUFFMAN_ONLY:oc,Z_RLE:F9,Z_FIXED:R9,Z_DEFAULT_STRATEGY:P9,Z_UNKNOWN:M9,Z_DEFLATED:ac}=vf,O9=9,N9=15,L9=8,z9=29,vp=256+1+z9,U9=30,G9=19,H9=2*vp+1,V9=15,he=3,ii=258,Qn=ii+he+1,j9=32,ua=42,Ap=57,Ep=69,_p=73,Sp=91,Cp=103,fo=113,Af=666,kt=1,ca=2,lo=3,ha=4,q9=3,uo=(t,e)=>(t.msg=la[e],e),o2=t=>t*2-(t>4?9:0),oi=t=>{let e=t.length;for(;--e>=0;)t[e]=0},W9=t=>{let e,n,r,i=t.w_size;e=t.hash_size,r=e;do n=t.head[--r],t.head[r]=n>=i?n-i:0;while(--e);e=i,r=e;do n=t.prev[--r],t.prev[r]=n>=i?n-i:0;while(--e)};let ai=(t,e,n)=>(e<{const e=t.state;let n=e.pending;n>t.avail_out&&(n=t.avail_out),n!==0&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+n),t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,e.pending===0&&(e.pending_out=0))},Kt=(t,e)=>{S9(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Xt(t.strm)},ve=(t,e)=>{t.pending_buf[t.pending++]=e},Ef=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255},Tp=(t,e,n,r)=>{let i=t.avail_in;return i>r&&(i=r),i===0?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),n),t.state.wrap===1?t.adler=xf(t.adler,e,i,n):t.state.wrap===2&&(t.adler=ht(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)},a2=(t,e)=>{let n=t.max_chain_length,r=t.strstart,i,o,a=t.prev_length,s=t.nice_match;const l=t.strstart>t.w_size-Qn?t.strstart-(t.w_size-Qn):0,f=t.window,u=t.w_mask,c=t.prev,h=t.strstart+ii;let d=f[r+a-1],p=f[r+a];t.prev_length>=t.good_match&&(n>>=2),s>t.lookahead&&(s=t.lookahead);do if(i=e,!(f[i+a]!==p||f[i+a-1]!==d||f[i]!==f[r]||f[++i]!==f[r+1])){r+=2,i++;do;while(f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&f[++r]===f[++i]&&ra){if(t.match_start=e,a=o,o>=s)break;d=f[r+a-1],p=f[r+a]}}while((e=c[e&u])>l&&--n!==0);return a<=t.lookahead?a:t.lookahead},da=t=>{const e=t.w_size;let n,r,i;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Qn)&&(t.window.set(t.window.subarray(e,e+e-r),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),W9(t),r+=e),t.strm.avail_in===0)break;if(n=Tp(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=n,t.lookahead+t.insert>=he)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=ai(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=ai(t,t.ins_h,t.window[i+he-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert{let n=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r,i,o,a=0,s=t.strm.avail_in;do{if(r=65535,o=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(r=i+t.strm.avail_in),r>o&&(r=o),r>8,t.pending_buf[t.pending-2]=~r,t.pending_buf[t.pending-1]=~r>>8,Xt(t.strm),i&&(i>r&&(i=r),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,r-=i),r&&(Tp(t.strm,t.strm.output,t.strm.next_out,r),t.strm.next_out+=r,t.strm.avail_out-=r,t.strm.total_out+=r)}while(a===0);return s-=t.strm.avail_in,s&&(s>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=s&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-s,t.strm.next_in),t.strstart),t.strstart+=s,t.insert+=s>t.w_size-t.insert?t.w_size-t.insert:s),t.block_start=t.strstart),t.high_watero&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,o+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),o>t.strm.avail_in&&(o=t.strm.avail_in),o&&(Tp(t.strm,t.window,t.strstart,o),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.high_water>3,o=t.pending_buf_size-o>65535?65535:t.pending_buf_size-o,n=o>t.w_size?t.w_size:o,i=t.strstart-t.block_start,(i>=n||(i||e===cn)&&e!==ri&&t.strm.avail_in===0&&i<=o)&&(r=i>o?o:i,a=e===cn&&t.strm.avail_in===0&&r===i?1:0,wp(t,t.block_start,r,a),t.block_start+=r,Xt(t.strm)),a?lo:kt)},Ip=(t,e)=>{let n,r;for(;;){if(t.lookahead=he&&(t.ins_h=ai(t,t.ins_h,t.window[t.strstart+he-1]),n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),n!==0&&t.strstart-n<=t.w_size-Qn&&(t.match_length=a2(t,n)),t.match_length>=he)if(r=ni(t,t.strstart-t.match_start,t.match_length-he),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=he){t.match_length--;do t.strstart++,t.ins_h=ai(t,t.ins_h,t.window[t.strstart+he-1]),n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ai(t,t.ins_h,t.window[t.strstart+1]);else r=ni(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&(Kt(t,!1),t.strm.avail_out===0))return kt}return t.insert=t.strstart{let n,r,i;for(;;){if(t.lookahead=he&&(t.ins_h=ai(t,t.ins_h,t.window[t.strstart+he-1]),n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=he-1,n!==0&&t.prev_length4096)&&(t.match_length=he-1)),t.prev_length>=he&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-he,r=ni(t,t.strstart-1-t.prev_match,t.prev_length-he),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=ai(t,t.ins_h,t.window[t.strstart+he-1]),n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(--t.prev_length!==0);if(t.match_available=0,t.match_length=he-1,t.strstart++,r&&(Kt(t,!1),t.strm.avail_out===0))return kt}else if(t.match_available){if(r=ni(t,0,t.window[t.strstart-1]),r&&Kt(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return kt}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=ni(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart{let n,r,i,o;const a=t.window;for(;;){if(t.lookahead<=ii){if(da(t),t.lookahead<=ii&&e===ri)return kt;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=he&&t.strstart>0&&(i=t.strstart-1,r=a[i],r===a[++i]&&r===a[++i]&&r===a[++i])){o=t.strstart+ii;do;while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=he?(n=ni(t,1,t.match_length-he),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=ni(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(Kt(t,!1),t.strm.avail_out===0))return kt}return t.insert=0,e===cn?(Kt(t,!0),t.strm.avail_out===0?lo:ha):t.sym_next&&(Kt(t,!1),t.strm.avail_out===0)?kt:ca},Z9=(t,e)=>{let n;for(;;){if(t.lookahead===0&&(da(t),t.lookahead===0)){if(e===ri)return kt;break}if(t.match_length=0,n=ni(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(Kt(t,!1),t.strm.avail_out===0))return kt}return t.insert=0,e===cn?(Kt(t,!0),t.strm.avail_out===0?lo:ha):t.sym_next&&(Kt(t,!1),t.strm.avail_out===0)?kt:ca};function Xn(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i}const _f=[new Xn(0,0,0,0,s2),new Xn(4,4,8,4,Ip),new Xn(4,5,16,8,Ip),new Xn(4,6,32,32,Ip),new Xn(4,4,16,16,pa),new Xn(8,16,32,32,pa),new Xn(8,16,128,128,pa),new Xn(8,32,128,256,pa),new Xn(32,128,258,1024,pa),new Xn(32,258,258,4096,pa)],Y9=t=>{t.window_size=2*t.w_size,oi(t.head),t.max_lazy_match=_f[t.level].max_lazy,t.good_match=_f[t.level].good_length,t.nice_match=_f[t.level].nice_length,t.max_chain_length=_f[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=he-1,t.match_available=0,t.ins_h=0};function Q9(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ac,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(H9*2),this.dyn_dtree=new Uint16Array((2*U9+1)*2),this.bl_tree=new Uint16Array((2*G9+1)*2),oi(this.dyn_ltree),oi(this.dyn_dtree),oi(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(V9+1),this.heap=new Uint16Array(2*vp+1),oi(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*vp+1),oi(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Sf=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==ua&&e.status!==Ap&&e.status!==Ep&&e.status!==_p&&e.status!==Sp&&e.status!==Cp&&e.status!==fo&&e.status!==Af?1:0},f2=t=>{if(Sf(t))return uo(t,Yn);t.total_in=t.total_out=0,t.data_type=M9;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap===2?Ap:e.wrap?ua:fo,t.adler=e.wrap===2?0:1,e.last_flush=-2,_9(e),bt},l2=t=>{const e=f2(t);return e===bt&&Y9(t.state),e},X9=(t,e)=>Sf(t)||t.state.wrap!==2?Yn:(t.state.gzhead=e,bt),u2=(t,e,n,r,i,o)=>{if(!t)return Yn;let a=1;if(e===D9&&(e=6),r<0?(a=0,r=-r):r>15&&(a=2,r-=16),i<1||i>O9||n!==ac||r<8||r>15||e<0||e>9||o<0||o>R9||r===8&&a!==1)return uo(t,Yn);r===8&&(r=9);const s=new Q9;return t.state=s,s.strm=t,s.status=ua,s.wrap=a,s.gzhead=null,s.w_bits=r,s.w_size=1<u2(t,e,ac,N9,L9,P9),J9=(t,e)=>{if(Sf(t)||e>r2||e<0)return t?uo(t,Yn):Yn;const n=t.state;if(!t.output||t.avail_in!==0&&!t.input||n.status===Af&&e!==cn)return uo(t,t.avail_out===0?xp:Yn);const r=n.last_flush;if(n.last_flush=e,n.pending!==0){if(Xt(t),t.avail_out===0)return n.last_flush=-1,bt}else if(t.avail_in===0&&o2(e)<=o2(r)&&e!==cn)return uo(t,xp);if(n.status===Af&&t.avail_in!==0)return uo(t,xp);if(n.status===ua&&n.wrap===0&&(n.status=fo),n.status===ua){let i=ac+(n.w_bits-8<<4)<<8,o=-1;if(n.strategy>=oc||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,i|=o<<6,n.strstart!==0&&(i|=j9),i+=31-i%31,Ef(n,i),n.strstart!==0&&(Ef(n,t.adler>>>16),Ef(n,t.adler&65535)),t.adler=1,n.status=fo,Xt(t),n.pending!==0)return n.last_flush=-1,bt}if(n.status===Ap){if(t.adler=0,ve(n,31),ve(n,139),ve(n,8),n.gzhead)ve(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),ve(n,n.gzhead.time&255),ve(n,n.gzhead.time>>8&255),ve(n,n.gzhead.time>>16&255),ve(n,n.gzhead.time>>24&255),ve(n,n.level===9?2:n.strategy>=oc||n.level<2?4:0),ve(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(ve(n,n.gzhead.extra.length&255),ve(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=ht(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Ep;else if(ve(n,0),ve(n,0),ve(n,0),ve(n,0),ve(n,0),ve(n,n.level===9?2:n.strategy>=oc||n.level<2?4:0),ve(n,q9),n.status=fo,Xt(t),n.pending!==0)return n.last_flush=-1,bt}if(n.status===Ep){if(n.gzhead.extra){let i=n.pending,o=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+o>n.pending_buf_size;){let s=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+s),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(t.adler=ht(t.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=s,Xt(t),n.pending!==0)return n.last_flush=-1,bt;i=0,o-=s}let a=new Uint8Array(n.gzhead.extra);n.pending_buf.set(a.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending+=o,n.gzhead.hcrc&&n.pending>i&&(t.adler=ht(t.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=_p}if(n.status===_p){if(n.gzhead.name){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(t.adler=ht(t.adler,n.pending_buf,n.pending-i,i)),Xt(t),n.pending!==0)return n.last_flush=-1,bt;i=0}n.gzindexi&&(t.adler=ht(t.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Sp}if(n.status===Sp){if(n.gzhead.comment){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(t.adler=ht(t.adler,n.pending_buf,n.pending-i,i)),Xt(t),n.pending!==0)return n.last_flush=-1,bt;i=0}n.gzindexi&&(t.adler=ht(t.adler,n.pending_buf,n.pending-i,i))}n.status=Cp}if(n.status===Cp){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Xt(t),n.pending!==0))return n.last_flush=-1,bt;ve(n,t.adler&255),ve(n,t.adler>>8&255),t.adler=0}if(n.status=fo,Xt(t),n.pending!==0)return n.last_flush=-1,bt}if(t.avail_in!==0||n.lookahead!==0||e!==ri&&n.status!==Af){let i=n.level===0?s2(n,e):n.strategy===oc?Z9(n,e):n.strategy===F9?$9(n,e):_f[n.level].func(n,e);if((i===lo||i===ha)&&(n.status=Af),i===kt||i===lo)return t.avail_out===0&&(n.last_flush=-1),bt;if(i===ca&&(e===T9?C9(n):e!==r2&&(wp(n,0,0,!1),e===I9&&(oi(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Xt(t),t.avail_out===0))return n.last_flush=-1,bt}return e!==cn?bt:n.wrap<=0?i2:(n.wrap===2?(ve(n,t.adler&255),ve(n,t.adler>>8&255),ve(n,t.adler>>16&255),ve(n,t.adler>>24&255),ve(n,t.total_in&255),ve(n,t.total_in>>8&255),ve(n,t.total_in>>16&255),ve(n,t.total_in>>24&255)):(Ef(n,t.adler>>>16),Ef(n,t.adler&65535)),Xt(t),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?bt:i2)},eN=t=>{if(Sf(t))return Yn;const e=t.state.status;return t.state=null,e===fo?uo(t,k9):bt},tN=(t,e)=>{let n=e.length;if(Sf(t))return Yn;const r=t.state,i=r.wrap;if(i===2||i===1&&r.status!==ua||r.lookahead)return Yn;if(i===1&&(t.adler=xf(t.adler,e,n,0)),r.wrap=0,n>=r.w_size){i===0&&(oi(r.head),r.strstart=0,r.block_start=0,r.insert=0);let l=new Uint8Array(r.w_size);l.set(e.subarray(n-r.w_size,n),0),e=l,n=r.w_size}const o=t.avail_in,a=t.next_in,s=t.input;for(t.avail_in=n,t.next_in=0,t.input=e,da(r);r.lookahead>=he;){let l=r.strstart,f=r.lookahead-(he-1);do r.ins_h=ai(r,r.ins_h,r.window[l+he-1]),r.prev[l&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=l,l++;while(--f);r.strstart=l,r.lookahead=he-1,da(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=he-1,r.match_available=0,t.next_in=a,t.input=s,t.avail_in=o,r.wrap=i,bt};var nN=K9,rN=u2,iN=l2,oN=f2,aN=X9,sN=J9,fN=eN,lN=tN,uN="pako deflate (from Nodeca project)",Cf={deflateInit:nN,deflateInit2:rN,deflateReset:iN,deflateResetKeep:oN,deflateSetHeader:aN,deflate:sN,deflateEnd:fN,deflateSetDictionary:lN,deflateInfo:uN};const cN=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var hN=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const n=e.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(const r in n)cN(n,r)&&(t[r]=n[r])}}return t},dN=t=>{let e=0;for(let r=0,i=t.length;r=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Tf[254]=Tf[254]=1;var pN=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let e,n,r,i,o,a=t.length,s=0;for(i=0;i>>6,e[o++]=128|n&63):n<65536?(e[o++]=224|n>>>12,e[o++]=128|n>>>6&63,e[o++]=128|n&63):(e[o++]=240|n>>>18,e[o++]=128|n>>>12&63,e[o++]=128|n>>>6&63,e[o++]=128|n&63);return e};const gN=(t,e)=>{if(e<65534&&t.subarray&&c2)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let n="";for(let r=0;r{const n=e||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,e));let r,i;const o=new Array(n*2);for(i=0,r=0;r4){o[i++]=65533,r+=s-1;continue}for(a&=s===2?31:s===3?15:7;s>1&&r1){o[i++]=65533;continue}a<65536?o[i++]=a:(a-=65536,o[i++]=55296|a>>10&1023,o[i++]=56320|a&1023)}return gN(o,i)},bN=(t,e)=>{e=e||t.length,e>t.length&&(e=t.length);let n=e-1;for(;n>=0&&(t[n]&192)===128;)n--;return n<0||n===0?e:n+Tf[t[n]]>e?n:e},If={string2buf:pN,buf2string:mN,utf8border:bN};function yN(){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 h2=yN;const d2=Object.prototype.toString,{Z_NO_FLUSH:wN,Z_SYNC_FLUSH:xN,Z_FULL_FLUSH:vN,Z_FINISH:AN,Z_OK:fc,Z_STREAM_END:EN,Z_DEFAULT_COMPRESSION:_N,Z_DEFAULT_STRATEGY:SN,Z_DEFLATED:CN}=vf;function kp(t){this.options=sc.assign({level:_N,method:CN,chunkSize:16384,windowBits:15,memLevel:8,strategy:SN},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h2,this.strm.avail_out=0;let n=Cf.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(n!==fc)throw new Error(la[n]);if(e.header&&Cf.deflateSetHeader(this.strm,e.header),e.dictionary){let r;if(typeof e.dictionary=="string"?r=If.string2buf(e.dictionary):d2.call(e.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(e.dictionary):r=e.dictionary,n=Cf.deflateSetDictionary(this.strm,r),n!==fc)throw new Error(la[n]);this._dict_set=!0}}kp.prototype.push=function(t,e){const n=this.strm,r=this.options.chunkSize;let i,o;if(this.ended)return!1;for(e===~~e?o=e:o=e===!0?AN:wN,typeof t=="string"?n.input=If.string2buf(t):d2.call(t)==="[object ArrayBuffer]"?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(o===xN||o===vN)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Cf.deflate(n,o),i===EN)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Cf.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===fc;if(n.avail_out===0){this.onData(n.output);continue}if(o>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0},kp.prototype.onData=function(t){this.chunks.push(t)},kp.prototype.onEnd=function(t){t===fc&&(this.result=sc.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const lc=16209,TN=16191;var IN=function(e,n){let r,i,o,a,s,l,f,u,c,h,d,p,b,y,w,S,C,_,k,D,I,R,M,j;const L=e.state;r=e.next_in,M=e.input,i=r+(e.avail_in-5),o=e.next_out,j=e.output,a=o-(n-e.avail_out),s=o+(e.avail_out-257),l=L.dmax,f=L.wsize,u=L.whave,c=L.wnext,h=L.window,d=L.hold,p=L.bits,b=L.lencode,y=L.distcode,w=(1<>>24,d>>>=_,p-=_,_=C>>>16&255,_===0)j[o++]=C&65535;else if(_&16){k=C&65535,_&=15,_&&(p<_&&(d+=M[r++]<>>=_,p-=_),p<15&&(d+=M[r++]<>>24,d>>>=_,p-=_,_=C>>>16&255,_&16){if(D=C&65535,_&=15,p<_&&(d+=M[r++]<l){e.msg="invalid distance too far back",L.mode=lc;break e}if(d>>>=_,p-=_,_=o-a,D>_){if(_=D-_,_>u&&L.sane){e.msg="invalid distance too far back",L.mode=lc;break e}if(I=0,R=h,c===0){if(I+=f-_,_2;)j[o++]=R[I++],j[o++]=R[I++],j[o++]=R[I++],k-=3;k&&(j[o++]=R[I++],k>1&&(j[o++]=R[I++]))}else{I=o-D;do j[o++]=j[I++],j[o++]=j[I++],j[o++]=j[I++],k-=3;while(k>2);k&&(j[o++]=j[I++],k>1&&(j[o++]=j[I++]))}}else if(_&64){e.msg="invalid distance code",L.mode=lc;break e}else{C=y[(C&65535)+(d&(1<<_)-1)];continue n}break}}else if(_&64)if(_&32){L.mode=TN;break e}else{e.msg="invalid literal/length code",L.mode=lc;break e}else{C=b[(C&65535)+(d&(1<<_)-1)];continue t}break}}while(r>3,r-=k,p-=k<<3,d&=(1<{const l=s.bits;let f=0,u=0,c=0,h=0,d=0,p=0,b=0,y=0,w=0,S=0,C,_,k,D,I,R=null,M;const j=new Uint16Array(ga+1),L=new Uint16Array(ga+1);let ne=null,ae,de,ke;for(f=0;f<=ga;f++)j[f]=0;for(u=0;u=1&&j[h]===0;h--);if(d>h&&(d=h),h===0)return i[o++]=1<<24|64<<16|0,i[o++]=1<<24|64<<16|0,s.bits=1,0;for(c=1;c0&&(t===m2||h!==1))return-1;for(L[1]=0,f=1;fp2||t===b2&&w>g2)return 1;for(;;){ae=f-b,a[u]+1=M?(de=ne[a[u]-M],ke=R[a[u]-M]):(de=32+64,ke=0),C=1<>b)+_]=ae<<24|de<<16|ke|0;while(_!==0);for(C=1<>=1;if(C!==0?(S&=C-1,S+=C):S=0,u++,--j[f]===0){if(f===h)break;f=e[n+a[u]]}if(f>d&&(S&D)!==k){for(b===0&&(b=d),I+=c,p=f-b,y=1<p2||t===b2&&w>g2)return 1;k=S&D,i[k]=d<<24|p<<16|I-o|0}}return S!==0&&(i[I+S]=f-b<<24|64<<16|0),s.bits=d,0};const RN=0,y2=1,w2=2,{Z_FINISH:x2,Z_BLOCK:PN,Z_TREES:uc,Z_OK:co,Z_STREAM_END:MN,Z_NEED_DICT:ON,Z_STREAM_ERROR:hn,Z_DATA_ERROR:v2,Z_MEM_ERROR:A2,Z_BUF_ERROR:NN,Z_DEFLATED:E2}=vf,cc=16180,_2=16181,S2=16182,C2=16183,T2=16184,I2=16185,k2=16186,D2=16187,B2=16188,F2=16189,hc=16190,dr=16191,Bp=16192,R2=16193,Fp=16194,P2=16195,M2=16196,O2=16197,N2=16198,dc=16199,pc=16200,L2=16201,z2=16202,U2=16203,G2=16204,H2=16205,Rp=16206,V2=16207,j2=16208,je=16209,q2=16210,W2=16211,LN=852,zN=592,UN=15,$2=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function GN(){this.strm=null,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=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const ho=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.modeW2?1:0},Z2=t=>{if(ho(t))return hn;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=cc,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(LN),e.distcode=e.distdyn=new Int32Array(zN),e.sane=1,e.back=-1,co},Y2=t=>{if(ho(t))return hn;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Z2(t)},Q2=(t,e)=>{let n;if(ho(t))return hn;const r=t.state;return e<0?(n=0,e=-e):(n=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?hn:(r.window!==null&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,Y2(t))},X2=(t,e)=>{if(!t)return hn;const n=new GN;t.state=n,n.strm=t,n.window=null,n.mode=cc;const r=Q2(t,e);return r!==co&&(t.state=null),r},HN=t=>X2(t,UN);let K2=!0,Pp,Mp;const VN=t=>{if(K2){Pp=new Int32Array(512),Mp=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(kf(y2,t.lens,0,288,Pp,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;kf(w2,t.lens,0,32,Mp,0,t.work,{bits:5}),K2=!1}t.lencode=Pp,t.lenbits=9,t.distcode=Mp,t.distbits=5},J2=(t,e,n,r)=>{let i;const o=t.state;return o.window===null&&(o.wsize=1<=o.wsize?(o.window.set(e.subarray(n-o.wsize,n),0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),o.window.set(e.subarray(n-r,n-r+i),o.wnext),r-=i,r?(o.window.set(e.subarray(n-r,n),0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave{let n,r,i,o,a,s,l,f,u,c,h,d,p,b,y=0,w,S,C,_,k,D,I,R;const M=new Uint8Array(4);let j,L;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(ho(t)||!t.output||!t.input&&t.avail_in!==0)return hn;n=t.state,n.mode===dr&&(n.mode=Bp),a=t.next_out,i=t.output,l=t.avail_out,o=t.next_in,r=t.input,s=t.avail_in,f=n.hold,u=n.bits,c=s,h=l,R=co;e:for(;;)switch(n.mode){case cc:if(n.wrap===0){n.mode=Bp;break}for(;u<16;){if(s===0)break e;s--,f+=r[o++]<>>8&255,n.check=ht(n.check,M,2,0),f=0,u=0,n.mode=_2;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((f&255)<<8)+(f>>8))%31){t.msg="incorrect header check",n.mode=je;break}if((f&15)!==E2){t.msg="unknown compression method",n.mode=je;break}if(f>>>=4,u-=4,I=(f&15)+8,n.wbits===0&&(n.wbits=I),I>15||I>n.wbits){t.msg="invalid window size",n.mode=je;break}n.dmax=1<>8&1),n.flags&512&&n.wrap&4&&(M[0]=f&255,M[1]=f>>>8&255,n.check=ht(n.check,M,2,0)),f=0,u=0,n.mode=S2;case S2:for(;u<32;){if(s===0)break e;s--,f+=r[o++]<>>8&255,M[2]=f>>>16&255,M[3]=f>>>24&255,n.check=ht(n.check,M,4,0)),f=0,u=0,n.mode=C2;case C2:for(;u<16;){if(s===0)break e;s--,f+=r[o++]<>8),n.flags&512&&n.wrap&4&&(M[0]=f&255,M[1]=f>>>8&255,n.check=ht(n.check,M,2,0)),f=0,u=0,n.mode=T2;case T2:if(n.flags&1024){for(;u<16;){if(s===0)break e;s--,f+=r[o++]<>>8&255,n.check=ht(n.check,M,2,0)),f=0,u=0}else n.head&&(n.head.extra=null);n.mode=I2;case I2:if(n.flags&1024&&(d=n.length,d>s&&(d=s),d&&(n.head&&(I=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(o,o+d),I)),n.flags&512&&n.wrap&4&&(n.check=ht(n.check,r,d,o)),s-=d,o+=d,n.length-=d),n.length))break e;n.length=0,n.mode=k2;case k2:if(n.flags&2048){if(s===0)break e;d=0;do I=r[o+d++],n.head&&I&&n.length<65536&&(n.head.name+=String.fromCharCode(I));while(I&&d>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=dr;break;case F2:for(;u<32;){if(s===0)break e;s--,f+=r[o++]<>>=u&7,u-=u&7,n.mode=Rp;break}for(;u<3;){if(s===0)break e;s--,f+=r[o++]<>>=1,u-=1,f&3){case 0:n.mode=R2;break;case 1:if(VN(n),n.mode=dc,e===uc){f>>>=2,u-=2;break e}break;case 2:n.mode=M2;break;case 3:t.msg="invalid block type",n.mode=je}f>>>=2,u-=2;break;case R2:for(f>>>=u&7,u-=u&7;u<32;){if(s===0)break e;s--,f+=r[o++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=je;break}if(n.length=f&65535,f=0,u=0,n.mode=Fp,e===uc)break e;case Fp:n.mode=P2;case P2:if(d=n.length,d){if(d>s&&(d=s),d>l&&(d=l),d===0)break e;i.set(r.subarray(o,o+d),a),s-=d,o+=d,l-=d,a+=d,n.length-=d;break}n.mode=dr;break;case M2:for(;u<14;){if(s===0)break e;s--,f+=r[o++]<>>=5,u-=5,n.ndist=(f&31)+1,f>>>=5,u-=5,n.ncode=(f&15)+4,f>>>=4,u-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=je;break}n.have=0,n.mode=O2;case O2:for(;n.have>>=3,u-=3}for(;n.have<19;)n.lens[ne[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,j={bits:n.lenbits},R=kf(RN,n.lens,0,19,n.lencode,0,n.work,j),n.lenbits=j.bits,R){t.msg="invalid code lengths set",n.mode=je;break}n.have=0,n.mode=N2;case N2:for(;n.have>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,f+=r[o++]<>>=w,u-=w,n.lens[n.have++]=C;else{if(C===16){for(L=w+2;u>>=w,u-=w,n.have===0){t.msg="invalid bit length repeat",n.mode=je;break}I=n.lens[n.have-1],d=3+(f&3),f>>>=2,u-=2}else if(C===17){for(L=w+3;u>>=w,u-=w,I=0,d=3+(f&7),f>>>=3,u-=3}else{for(L=w+7;u>>=w,u-=w,I=0,d=11+(f&127),f>>>=7,u-=7}if(n.have+d>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=je;break}for(;d--;)n.lens[n.have++]=I}}if(n.mode===je)break;if(n.lens[256]===0){t.msg="invalid code -- missing end-of-block",n.mode=je;break}if(n.lenbits=9,j={bits:n.lenbits},R=kf(y2,n.lens,0,n.nlen,n.lencode,0,n.work,j),n.lenbits=j.bits,R){t.msg="invalid literal/lengths set",n.mode=je;break}if(n.distbits=6,n.distcode=n.distdyn,j={bits:n.distbits},R=kf(w2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,j),n.distbits=j.bits,R){t.msg="invalid distances set",n.mode=je;break}if(n.mode=dc,e===uc)break e;case dc:n.mode=pc;case pc:if(s>=6&&l>=258){t.next_out=a,t.avail_out=l,t.next_in=o,t.avail_in=s,n.hold=f,n.bits=u,IN(t,h),a=t.next_out,i=t.output,l=t.avail_out,o=t.next_in,r=t.input,s=t.avail_in,f=n.hold,u=n.bits,n.mode===dr&&(n.back=-1);break}for(n.back=0;y=n.lencode[f&(1<>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,f+=r[o++]<>_)],w=y>>>24,S=y>>>16&255,C=y&65535,!(_+w<=u);){if(s===0)break e;s--,f+=r[o++]<>>=_,u-=_,n.back+=_}if(f>>>=w,u-=w,n.back+=w,n.length=C,S===0){n.mode=H2;break}if(S&32){n.back=-1,n.mode=dr;break}if(S&64){t.msg="invalid literal/length code",n.mode=je;break}n.extra=S&15,n.mode=L2;case L2:if(n.extra){for(L=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=z2;case z2:for(;y=n.distcode[f&(1<>>24,S=y>>>16&255,C=y&65535,!(w<=u);){if(s===0)break e;s--,f+=r[o++]<>_)],w=y>>>24,S=y>>>16&255,C=y&65535,!(_+w<=u);){if(s===0)break e;s--,f+=r[o++]<>>=_,u-=_,n.back+=_}if(f>>>=w,u-=w,n.back+=w,S&64){t.msg="invalid distance code",n.mode=je;break}n.offset=C,n.extra=S&15,n.mode=U2;case U2:if(n.extra){for(L=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=je;break}n.mode=G2;case G2:if(l===0)break e;if(d=h-l,n.offset>d){if(d=n.offset-d,d>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=je;break}d>n.wnext?(d-=n.wnext,p=n.wsize-d):p=n.wnext-d,d>n.length&&(d=n.length),b=n.window}else b=i,p=a-n.offset,d=n.length;d>l&&(d=l),l-=d,n.length-=d;do i[a++]=b[p++];while(--d);n.length===0&&(n.mode=pc);break;case H2:if(l===0)break e;i[a++]=n.length,l--,n.mode=pc;break;case Rp:if(n.wrap){for(;u<32;){if(s===0)break e;s--,f|=r[o++]<{if(ho(t))return hn;let e=t.state;return e.window&&(e.window=null),t.state=null,co},WN=(t,e)=>{if(ho(t))return hn;const n=t.state;return n.wrap&2?(n.head=e,e.done=!1,co):hn},$N=(t,e)=>{const n=e.length;let r,i,o;return ho(t)||(r=t.state,r.wrap!==0&&r.mode!==hc)?hn:r.mode===hc&&(i=1,i=xf(i,e,n,0),i!==r.check)?v2:(o=J2(t,e,n,n),o?(r.mode=q2,A2):(r.havedict=1,co))};var ZN=Y2,YN=Q2,QN=Z2,XN=HN,KN=X2,JN=jN,eL=qN,tL=WN,nL=$N,rL="pako inflate (from Nodeca project)",pr={inflateReset:ZN,inflateReset2:YN,inflateResetKeep:QN,inflateInit:XN,inflateInit2:KN,inflate:JN,inflateEnd:eL,inflateGetHeader:tL,inflateSetDictionary:nL,inflateInfo:rL};function iL(){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 oL=iL;const eE=Object.prototype.toString,{Z_NO_FLUSH:aL,Z_FINISH:sL,Z_OK:Df,Z_STREAM_END:Op,Z_NEED_DICT:Np,Z_STREAM_ERROR:fL,Z_DATA_ERROR:tE,Z_MEM_ERROR:lL}=vf;function Bf(t){this.options=sc.assign({chunkSize:1024*64,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h2,this.strm.avail_out=0;let n=pr.inflateInit2(this.strm,e.windowBits);if(n!==Df)throw new Error(la[n]);if(this.header=new oL,pr.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=If.string2buf(e.dictionary):eE.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=pr.inflateSetDictionary(this.strm,e.dictionary),n!==Df)))throw new Error(la[n])}Bf.prototype.push=function(t,e){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let o,a,s;if(this.ended)return!1;for(e===~~e?a=e:a=e===!0?sL:aL,eE.call(t)==="[object ArrayBuffer]"?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),o=pr.inflate(n,a),o===Np&&i&&(o=pr.inflateSetDictionary(n,i),o===Df?o=pr.inflate(n,a):o===tE&&(o=Np));n.avail_in>0&&o===Op&&n.state.wrap>0&&t[n.next_in]!==0;)pr.inflateReset(n),o=pr.inflate(n,a);switch(o){case fL:case tE:case Np:case lL:return this.onEnd(o),this.ended=!0,!1}if(s=n.avail_out,n.next_out&&(n.avail_out===0||o===Op))if(this.options.to==="string"){let l=If.utf8border(n.output,n.next_out),f=n.next_out-l,u=If.buf2string(n.output,l);n.next_out=f,n.avail_out=r-f,f&&n.output.set(n.output.subarray(l,l+f),0),this.onData(u)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(o===Df&&s===0)){if(o===Op)return o=pr.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,!0;if(n.avail_in===0)break}}return!0},Bf.prototype.onData=function(t){this.chunks.push(t)},Bf.prototype.onEnd=function(t){t===Df&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=sc.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Lp(t,e){const n=new Bf(e);if(n.push(t),n.err)throw n.msg||la[n.err];return n.result}function uL(t,e){return e=e||{},e.raw=!0,Lp(t,e)}var cL=Bf,hL=Lp,dL=uL,pL=Lp,gL=vf,mL={Inflate:cL,inflate:hL,inflateRaw:dL,ungzip:pL,constants:gL};const{Inflate:lU,inflate:uU,inflateRaw:bL,ungzip:cU}=mL;var yL=bL;function wL(t){return yL(t.subarray(2))}let xL=class extends Error{constructor(e){super(e),this.code="ERR_ABORTED"}};function vL(t){t.sort((i,o)=>Number(i.offset)-Number(o.offset));const e=[];let n,r;for(const i of t)n&&r&&Number(i.offset)-r<=2e3?(n.length=BigInt(Number(n.length)+Number(i.length)-r+Number(i.offset)),n.blocks.push(i)):e.push(n={blocks:[i],length:i.length,offset:i.offset}),r=Number(n.offset)+Number(n.length);return e}function gc(t){if(t&&t.aborted)if(typeof DOMException>"u"){const e=new xL("aborted");throw e.code="ERR_ABORTED",e}else throw new DOMException("aborted","AbortError")}const AL=1,EL=2,_L=3;function zp(t,e,n,r){return t=n}function SL(t){const e=t?"big":"little",n=new Ie().endianess(e).uint32("chromId").uint32("start").uint32("end").uint32("validCnt").floatle("minScore").floatle("maxScore").floatle("sumData").floatle("sumSqData").saveOffset("offset"),r=new Ie().endianess(e).uint8("isLeaf").skip(1).uint16("cnt").choice({tag:"isLeaf",choices:{1:new Ie().endianess(e).array("blocksToFetch",{length:"cnt",type:new Ie().endianess(e).uint32("startChrom").uint32("startBase").uint32("endChrom").uint32("endBase").uint64("blockOffset").uint64("blockSize").saveOffset("offset")}),0:new Ie().array("recurOffsets",{length:"cnt",type:new Ie().endianess(e).uint32("startChrom").uint32("startBase").uint32("endChrom").uint32("endBase").uint64("blockOffset").saveOffset("offset")})}}),i=new Ie().endianess(e).uint32("chromId").int32("start").int32("end").string("rest",{zeroTerminated:!0}).saveOffset("offset");return{bigWigParser:new Ie().endianess(e).skip(4).int32("blockStart").skip(4).uint32("itemStep").uint32("itemSpan").uint8("blockType").skip(1).uint16("itemCount").choice({tag:"blockType",choices:{[_L]:new Ie().array("items",{length:"itemCount",type:new Ie().floatle("score")}),[EL]:new Ie().array("items",{length:"itemCount",type:new Ie().endianess(e).int32("start").floatle("score")}),[AL]:new Ie().array("items",{length:"itemCount",type:new Ie().endianess(e).int32("start").int32("end").floatle("score")})}}),bigBedParser:i,summaryParser:n,leafParser:r}}class nE{constructor(e,n,r,i,o,a){if(this.bbi=e,this.refsByName=n,this.cirTreeOffset=r,this.isBigEndian=i,this.isCompressed=o,this.blockType=a,this.featureCache=new tc({cache:new nc({maxSize:1e3}),fill:async(l,f)=>{const u=Number(l.length),c=Number(l.offset),{buffer:h}=await this.bbi.read(be.Buffer.alloc(u),0,u,c,{signal:f});return h}}),!(r>=0))throw new Error("invalid cirTreeOffset!");const s=SL(i);this.leafParser=s.leafParser,this.bigBedParser=s.bigBedParser}async readWigData(e,n,r,i,o){try{const{refsByName:a,bbi:s,cirTreeOffset:l,isBigEndian:f}=this,u=a[e];u===void 0&&i.complete();const c={chrId:u,start:n,end:r};this.cirTreePromise||(this.cirTreePromise=s.read(be.Buffer.alloc(48),0,48,Number(l),o));const{buffer:h}=await this.cirTreePromise,d=f?h.readUInt32BE(4):h.readUInt32LE(4);let p=[],b=0;const y=(_,k,D)=>{try{const I=_.subarray(k),R=this.leafParser.parse(I);if(R.blocksToFetch&&(p=p.concat(R.blocksToFetch.filter(M=>w(M)).map(M=>({offset:M.blockOffset,length:M.blockSize})))),R.recurOffsets){const M=R.recurOffsets.filter(j=>w(j)).map(j=>Number(j.blockOffset));M.length>0&&C(M,D+1)}}catch(I){i.error(I)}},w=_=>{const{startChrom:k,startBase:D,endChrom:I,endBase:R}=_;return(ku||I===u&&R>=n)},S=async(_,k,D)=>{try{const I=k.max()-k.min(),R=k.min(),M=await this.featureCache.get(`${I}_${R}`,{length:I,offset:R},o==null?void 0:o.signal);for(const j of _)k.contains(j)&&(y(M,j-R,D),b-=1,b===0&&this.readFeatures(i,p,{...o,request:c}))}catch(I){i.error(I)}},C=(_,k)=>{try{b+=_.length;const D=4+Number(d)*32;let I=new ti(_[0],_[0]+D);for(let R=1;R<_.length;R+=1){const M=new ti(_[R],_[R]+D);I=I.union(M)}I.getRanges().map(R=>S(_,R,k))}catch(D){i.error(D)}};return C([Number(l)+48],1)}catch(a){i.error(a)}}parseSummaryBlock(e,n,r){const i=[];let o=n;const a=new DataView(e.buffer,e.byteOffset,e.length);for(;ozp(s.start,s.end,i.start,i.end)):o}parseBigWigBlock(e,n,r){const i=e.subarray(n),o=new DataView(i.buffer,i.byteOffset,i.length);let a=0;a+=4;const s=o.getInt32(a,!0);a+=8;const l=o.getUint32(a,!0);a+=4;const f=o.getUint32(a,!0);a+=4;const u=o.getUint8(a);a+=2;const c=o.getUint16(a,!0);a+=2;const h=new Array(c);switch(u){case 1:{for(let d=0;dzp(d.start,d.end,r.start,r.end)):h}async readFeatures(e,n,r={}){try{const{blockType:i,isCompressed:o}=this,{signal:a,request:s}=r,l=vL(n);gc(a),await Promise.all(l.map(async f=>{gc(a);const{length:u,offset:c}=f,h=await this.featureCache.get(`${u}_${c}`,f,a);for(const d of f.blocks){gc(a);let p=Number(d.offset)-Number(f.offset),b=h;switch(o&&(b=wL(h.subarray(p)),p=0),gc(a),i){case"summary":{e.next(this.parseSummaryBlock(b,p,s));break}case"bigwig":{e.next(this.parseBigWigBlock(b,p,s));break}case"bigbed":{e.next(this.parseBigBedBlock(b,p,Number(d.offset)*256,s));break}default:console.warn(`Don't know what to do with ${i}`)}}})),e.complete()}catch(i){e.error(i)}}}var Up=function(t,e){return Up=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},Up(t,e)};function Gp(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");Up(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}function CL(t,e,n,r){function i(o){return o instanceof n?o:new n(function(a){a(o)})}return new(n||(n=Promise))(function(o,a){function s(u){try{f(r.next(u))}catch(c){a(c)}}function l(u){try{f(r.throw(u))}catch(c){a(c)}}function f(u){u.done?o(u.value):i(u.value).then(s,l)}f((r=r.apply(t,e||[])).next())})}function rE(t,e){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,a;return a={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function s(f){return function(u){return l([f,u])}}function l(f){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,f[0]&&(n=0)),n;)try{if(r=1,i&&(o=f[0]&2?i.return:f[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,f[1])).done)return o;switch(i=0,o&&(f=[f[0]&2,o.value]),f[0]){case 0:case 1:o=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,i=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!o||f[1]>o[0]&&f[1]=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function mc(t,e){var n=typeof Symbol=="function"&&t[Symbol.iterator];if(!n)return t;var r=n.call(t),i,o=[],a;try{for(;(e===void 0||e-- >0)&&!(i=r.next()).done;)o.push(i.value)}catch(s){a={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return o}function bc(t,e,n){if(n||arguments.length===2)for(var r=0,i=e.length,o;r1||s(h,d)})})}function s(h,d){try{l(r[h](d))}catch(p){c(o[0][3],p)}}function l(h){h.value instanceof ma?Promise.resolve(h.value.v).then(f,u):c(o[0][2],h)}function f(h){s("next",h)}function u(h){s("throw",h)}function c(h,d){h(d),o.shift(),o.length&&s(o[0][0],o[0][1])}}function IL(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof Ff=="function"?Ff(t):t[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(o){n[o]=t[o]&&function(a){return new Promise(function(s,l){a=t[o](a),i(s,l,a.done,a.value)})}}function i(o,a,s,l){Promise.resolve(l).then(function(f){o({value:f,done:s})},a)}}typeof SuppressedError=="function"&&SuppressedError;function ot(t){return typeof t=="function"}function iE(t){var e=function(r){Error.call(r),r.stack=new Error().stack},n=t(e);return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var Hp=iE(function(t){return function(n){t(this),this.message=n?n.length+` errors occurred during unsubscription: `+n.map(function(r,i){return i+1+") "+r.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=n}});function aE(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var Vp=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,n,r,i,o;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=Bl(a),f=s.next();!f.done;f=s.next()){var l=f.value;l.remove(this)}}catch(b){t={error:b}}finally{try{f&&!f.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(ot(u))try{u()}catch(b){o=b instanceof Hp?b.errors:[b]}var c=this._finalizers;if(c){this._finalizers=null;try{for(var h=Bl(c),d=h.next();!d.done;d=h.next()){var p=d.value;try{lE(p)}catch(b){o=o??[],b instanceof Hp?o=bc(bc([],mc(o)),mc(b.errors)):o.push(b)}}}catch(b){r={error:b}}finally{try{d&&!d.done&&(i=h.return)&&i.call(h)}finally{if(r)throw r.error}}}if(o)throw new Hp(o)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)lE(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}},e.prototype._hasParent=function(t){var n=this._parentage;return n===t||Array.isArray(n)&&n.includes(t)},e.prototype._addParent=function(t){var n=this._parentage;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t},e.prototype._removeParent=function(t){var n=this._parentage;n===t?this._parentage=null:Array.isArray(n)&&aE(n,t)},e.prototype.remove=function(t){var n=this._finalizers;n&&aE(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();Vp.EMPTY;function sE(e){return e instanceof Vp||e&&"closed"in e&&ot(e.remove)&&ot(e.add)&&ot(e.unsubscribe)}function lE(e){ot(e)?e():e.unsubscribe()}var fE={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},jp={setTimeout:function(e,t){for(var n=[],r=2;r=2,!1,!0))}var a7=function(e,t){return e.push(t),e};function s7(){return ba(function(e,t){BE(a7,[])(e).subscribe(t)})}const FE=-2003829722,Zp=-2021002517;function l7(e){return new TextDecoder().decode(e)}function RE(e){const t=e?"big":"little",n=new ke().endianess(t).int32("magic").uint16("version").uint16("numZoomLevels").uint64("chromTreeOffset").uint64("unzoomedDataOffset").uint64("unzoomedIndexOffset").uint16("fieldCount").uint16("definedFieldCount").uint64("asOffset").uint64("totalSummaryOffset").uint32("uncompressBufSize").uint64("extHeaderOffset").array("zoomLevels",{length:"numZoomLevels",type:new ke().endianess(t).uint32("reductionLevel").uint32("reserved").uint64("dataOffset").uint64("indexOffset")}),r=new ke().endianess(t).uint64("basesCovered").doublele("scoreMin").doublele("scoreMax").doublele("scoreSum").doublele("scoreSumSquares"),i=new ke().endianess(t).uint32("magic").uint32("blockSize").uint32("keySize").uint32("valSize").uint64("itemCount"),o=new ke().endianess(t).uint8("isLeafNode").skip(1).uint16("cnt").saveOffset("offset");return{chromTreeParser:i,totalSummaryParser:r,headerParser:n,isLeafNode:o}}class PE{getHeader(t){return this.headerP||(this.headerP=this._getHeader(t).catch(n=>{throw this.headerP=void 0,n})),this.headerP}constructor(t){const{filehandle:n,renameRefSeqs:r=a=>a,path:i,url:o}=t;if(this.renameRefSeqs=r,n)this.bbi=n;else if(o)this.bbi=new $i(o);else if(i)this.bbi=new ct(i);else throw new Error("no file given")}async _getHeader(t){const n=await this._getMainHeader(t),r=await this._readChromTree(n,t);return{...n,...r}}async _getMainHeader(t,n=2e3){const{buffer:r}=await this.bbi.read(be.Buffer.alloc(n),0,n,0,t),i=this._isBigEndian(r),o=RE(i),a=o.headerParser.parse(r),{magic:s,asOffset:f,totalSummaryOffset:l}=a;if(a.fileType=s===Zp?"bigbed":"bigwig",f>n||l>n)return this._getMainHeader(t,n*2);if(f){const u=Number(a.asOffset);a.autoSql=l7(r.subarray(u,r.indexOf(0,u)))}if(a.totalSummaryOffset>n)return this._getMainHeader(t,n*2);if(a.totalSummaryOffset){const u=r.subarray(Number(a.totalSummaryOffset)),c=o.totalSummaryParser.parse(u);a.totalSummary={...c,basesCovered:Number(c.basesCovered)}}return{...a,isBigEndian:i}}_isBigEndian(t){let n=t.readInt32LE(0);if(n===FE||n===Zp)return!1;if(n=t.readInt32BE(0),n===FE||n===Zp)return!0;throw new Error("not a BigWig/BigBed file")}async _readChromTree(t,n){const r=t.isBigEndian,i=r?"big":"little",o=[],a={};let s=Number(t.unzoomedDataOffset);const f=Number(t.chromTreeOffset);for(;s%4!==0;)s+=1;const l=s-f,{buffer:u}=await this.bbi.read(be.Buffer.alloc(l),0,l,Number(f),n),c=RE(r),{keySize:h}=c.chromTreeParser.parse(u),d=new ke().endianess(i).string("key",{stripNull:!0,length:h}).uint32("refId").uint32("refSize").saveOffset("offset"),p=new ke().endianess(i).skip(h).uint64("childOffset").saveOffset("offset"),b=32,y=async w=>{let S=w;if(S>=u.length)throw new Error("reading beyond end of buffer");const C=c.isLeafNode.parse(u.subarray(S)),{isLeafNode:_,cnt:I}=C;if(S+=C.offset,_)for(let D=0;D0,a)}async getFeatureStream(t,n,r,i){await this.getHeader(i);const o=this.renameRefSeqs(t);let a;const{basesPerSpan:s,scale:f}=i||{};return s?a=await this.getView(1/s,i):f?a=await this.getView(f,i):a=await this.getView(1,i),new dn(l=>{a.readWigData(o,n,r,l,i)})}async getFeatures(t,n,r,i){const o=await this.getFeatureStream(t,n,r,i);return(await kE(o.pipe(s7()))).flat()}}class f7 extends PE{async getView(t,n){const{zoomLevels:r,refsByName:i,fileSize:o,isBigEndian:a,uncompressBufSize:s}=await this.getHeader(n),f=1/t;let l=r.length;o||(l-=1);for(let u=l;u>=0;u-=1){const c=r[u];if(c&&c.reductionLevel<=2*f){const h=Number(c.indexOffset);return new rE(this.bbi,i,h,a,s>0,"summary")}}return this.getUnzoomedView(n)}}function u7(e){return e.filter(t=>!!t)}class c7 extends PE{constructor(){super(...arguments),this.readIndicesCache=new tc({cache:new nc({maxSize:1}),fill:(t,n)=>this._readIndices({...t,signal:n})})}readIndices(t={}){const{signal:n,...r}=t;return this.readIndicesCache.get(JSON.stringify(r),t,n)}async getView(t,n){return this.getUnzoomedView(n)}async _readIndices(t){const{extHeaderOffset:n,isBigEndian:r}=await this.getHeader(t),{buffer:i}=await this.bbi.read(be.Buffer.alloc(64),0,64,Number(n)),o=r?"big":"little",a=new ke().endianess(o).uint16("size").uint16("count").uint64("offset").parse(i),{count:s,offset:f}=a;if(s===0)return[];const l=20,u=l*s,{buffer:c}=await this.bbi.read(be.Buffer.alloc(u),0,u,Number(f)),h=new ke().endianess(o).int16("type").int16("fieldcount").uint64("offset").skip(4).int16("field"),d=[];for(let p=0;p{const{offset:s,field:f}=a,{buffer:l}=await this.bbi.read(be.Buffer.alloc(32),0,32,Number(s),n),u=r?"big":"little",c=new ke().endianess(u).int32("magic").int32("blockSize").int32("keySize").int32("valSize").uint64("itemCount"),{blockSize:h,keySize:d,valSize:p}=c.parse(l),b=new ke().endianess(u).int8("nodeType").skip(1).int16("cnt").choice({tag:"nodeType",choices:{0:new ke().array("leafkeys",{length:"cnt",type:new ke().endianess(u).string("key",{length:d,stripNull:!0}).uint64("offset")}),1:new ke().array("keys",{length:"cnt",type:new ke().endianess(u).string("key",{length:d,stripNull:!0}).uint64("offset").uint32("length").uint32("reserved")})}}),y=async S=>{const C=Number(S),_=4+h*(d+p),{buffer:I}=await this.bbi.read(be.Buffer.alloc(_),0,_,C,n),D=b.parse(I);if(D.leafkeys){let k;for(let R=0;Rnew dn(f=>{i.readFeatures(f,[s],n)}).pipe(BE((f,l)=>f.concat(l)),IE(f=>{for(const l of f)l.field=s.field;return f})));return(await kE(i7(...o))).filter(s=>{var f;return((f=s.rest)===null||f===void 0?void 0:f.split(" ")[(s.field||0)-3])===t})}}const ME=Object.freeze(Object.defineProperty({__proto__:null,BigBed:c7,BigWig:f7},Symbol.toStringTag,{value:"Module"}));function h7(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}function wa(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,wa)}h7(wa,Error),wa.buildMessage=function(e,t){var n={literal:function(l){return'"'+i(l.text)+'"'},class:function(l){var u="",c;for(c=0;c0){for(c=1,h=1;cer&&(er=B,Bg=[]),Bg.push(A))}function Lz(A,z,Y){return new wa(wa.buildMessage(A,z),A,z,Y)}function oS(){var A,z,Y,Q,ee,Le,$e,mn,di,vr,pi,Ar,gi,Er;return A=B,z=pe(),z!==n?(Y=aS(),Y!==n?(Q=pe(),Q!==n?(ee=sS(),ee!==n?(Le=pe(),Le!==n?($e=Mc(),$e!==n?(mn=pe(),mn!==n?(e.charCodeAt(B)===40?(di=o,B++):(di=n,te===0&&re(a)),di!==n?(vr=pe(),vr!==n?(pi=zz(),pi!==n?(Ar=pe(),Ar!==n?(e.charCodeAt(B)===41?(gi=s,B++):(gi=n,te===0&&re(f)),gi!==n?(Er=pe(),Er!==n?(Dt=A,z=l(Y,ee,$e,pi),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A}function aS(){var A;return e.substr(B,6)===u?(A=u,B+=6):(A=n,te===0&&re(c)),A===n&&(e.substr(B,6)===h?(A=h,B+=6):(A=n,te===0&&re(d)),A===n&&(e.substr(B,5)===p?(A=p,B+=5):(A=n,te===0&&re(b)))),A}function sS(){var A,z,Y,Q;return A=Fn(),A===n&&(A=B,z=Fn(),z!==n?(Y=lS(),Y!==n?(z=[z,Y],A=z):(B=A,A=n)):(B=A,A=n),A===n&&(A=B,z=Fn(),z!==n?(e.substr(B,4)===y?(Y=y,B+=4):(Y=n,te===0&&re(w)),Y!==n?(z=[z,Y],A=z):(B=A,A=n)):(B=A,A=n),A===n&&(A=B,z=Fn(),z!==n?(Y=lS(),Y!==n?(e.substr(B,4)===y?(Q=y,B+=4):(Q=n,te===0&&re(w)),Q!==n?(z=[z,Y,Q],A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)))),A}function lS(){var A;return e.substr(B,7)===S?(A=S,B+=7):(A=n,te===0&&re(C)),A===n&&(e.substr(B,5)===_?(A=_,B+=5):(A=n,te===0&&re(I)),A===n&&(e.substr(B,6)===D?(A=D,B+=6):(A=n,te===0&&re(k)))),A}function Mc(){var A;return A=fS(),A===n&&(A=pe()),A}function zz(){var A,z,Y,Q,ee,Le,$e;if(A=B,z=Fg(),z!==n)if(Y=pe(),Y!==n){for(Q=[],ee=B,Le=pe(),Le!==n?($e=Fg(),$e!==n?(Dt=ee,Le=R(z,$e),ee=Le):(B=ee,ee=n)):(B=ee,ee=n);ee!==n;)Q.push(ee),ee=B,Le=pe(),Le!==n?($e=Fg(),$e!==n?(Dt=ee,Le=R(z,$e),ee=Le):(B=ee,ee=n)):(B=ee,ee=n);Q!==n?(ee=pe(),ee!==n?(Dt=A,z=M(z,Q),A=z):(B=A,A=n)):(B=A,A=n)}else B=A,A=n;else B=A,A=n;return A}function Uz(){var A;return e.charCodeAt(B)===35?(A=j,B++):(A=n,te===0&&re(L)),A}function Gz(){var A,z,Y,Q,ee;return A=B,z=pe(),z!==n?(Y=Uz(),Y!==n?(Q=fS(),Q!==n?(ee=pe(),ee!==n?(z=[z,Y,Q,ee],A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A}function Fg(){var A,z,Y,Q,ee,Le,$e,mn,di,vr,pi,Ar,gi,Er;return A=B,z=Rg(),z!==n?(Y=pe(),Y!==n?(Q=Fn(),Q!==n?(ee=pe(),ee!==n?(e.charCodeAt(B)===59?(Le=ne,B++):(Le=n,te===0&&re(ae)),Le!==n?($e=pe(),$e!==n?(mn=Mc(),mn!==n?(Dt=A,z=de(z,Q,mn),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A===n&&(A=B,z=Rg(),z!==n?(Y=pe(),Y!==n?(e.charCodeAt(B)===91?(Q=Ie,B++):(Q=n,te===0&&re(Qe)),Q!==n?(ee=pe(),ee!==n?(Le=Vz(),Le!==n?($e=pe(),$e!==n?(e.charCodeAt(B)===93?(mn=Be,B++):(mn=n,te===0&&re(Ke)),mn!==n?(di=pe(),di!==n?(vr=Fn(),vr!==n?(pi=pe(),pi!==n?(e.charCodeAt(B)===59?(Ar=ne,B++):(Ar=n,te===0&&re(ae)),Ar!==n?(gi=pe(),gi!==n?(Er=Mc(),Er!==n?(Dt=A,z=qe(z,Le,vr,Er),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A===n&&(A=B,z=Rg(),z!==n?(Y=pe(),Y!==n?(e.charCodeAt(B)===40?(Q=o,B++):(Q=n,te===0&&re(a)),Q!==n?(ee=pe(),ee!==n?(Le=Hz(),Le!==n?($e=pe(),$e!==n?(e.charCodeAt(B)===41?(mn=s,B++):(mn=n,te===0&&re(f)),mn!==n?(di=pe(),di!==n?(vr=Fn(),vr!==n?(pi=pe(),pi!==n?(e.charCodeAt(B)===59?(Ar=ne,B++):(Ar=n,te===0&&re(ae)),Ar!==n?(gi=pe(),gi!==n?(Er=Mc(),Er!==n?(Dt=A,z=Je(z,Le,vr,Er),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A===n&&(A=Gz()))),A}function Hz(){var A,z,Y,Q,ee,Le,$e;if(A=B,z=Fn(),z!==n){for(Y=[],Q=B,e.charCodeAt(B)===44?(ee=Ee,B++):(ee=n,te===0&&re(_e)),ee!==n?(Le=pe(),Le!==n?($e=Fn(),$e!==n?(Dt=Q,ee=R(z,$e),Q=ee):(B=Q,Q=n)):(B=Q,Q=n)):(B=Q,Q=n);Q!==n;)Y.push(Q),Q=B,e.charCodeAt(B)===44?(ee=Ee,B++):(ee=n,te===0&&re(_e)),ee!==n?(Le=pe(),Le!==n?($e=Fn(),$e!==n?(Dt=Q,ee=R(z,$e),Q=ee):(B=Q,Q=n)):(B=Q,Q=n)):(B=Q,Q=n);Y!==n?(Dt=A,z=dt(z,Y),A=z):(B=A,A=n)}else B=A,A=n;return A}function Rg(){var A,z,Y,Q;return e.substr(B,3)===Gt?(A=Gt,B+=3):(A=n,te===0&&re(Ne)),A===n&&(e.substr(B,4)===O?(A=O,B+=4):(A=n,te===0&&re(P)),A===n&&(e.substr(B,5)===q?(A=q,B+=5):(A=n,te===0&&re(H)),A===n&&(e.substr(B,6)===$?(A=$,B+=6):(A=n,te===0&&re(E)),A===n&&(e.substr(B,4)===v?(A=v,B+=4):(A=n,te===0&&re(G)),A===n&&(e.substr(B,5)===W?(A=W,B+=5):(A=n,te===0&&re(se)),A===n&&(e.substr(B,5)===J?(A=J,B+=5):(A=n,te===0&&re(le)),A===n&&(e.substr(B,4)===Ht?(A=Ht,B+=4):(A=n,te===0&&re(fi)),A===n&&(e.substr(B,6)===ui?(A=ui,B+=6):(A=n,te===0&&re(ci)),A===n&&(e.substr(B,7)===_t?(A=_t,B+=7):(A=n,te===0&&re(xr)),A===n&&(e.substr(B,4)===hi?(A=hi,B+=4):(A=n,te===0&&re(Vt)),A===n&&(e.substr(B,6)===Jn?(A=Jn,B+=6):(A=n,te===0&&re(x)),A===n&&(e.substr(B,6)===g?(A=g,B+=6):(A=n,te===0&&re(m)),A===n&&(e.substr(B,3)===T?(A=T,B+=3):(A=n,te===0&&re(F)),A===n&&(A=B,z=aS(),z!==n?(Y=pe(),Y!==n?(Q=sS(),Q!==n?(Dt=A,z=N(z,Q),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n))))))))))))))),A}function Vz(){var A;return A=jz(),A===n&&(A=Fn()),A}function Fn(){var A,z,Y,Q,ee;if(A=B,z=B,V.test(e.charAt(B))?(Y=e.charAt(B),B++):(Y=n,te===0&&re(fe)),Y!==n){for(Q=[],Ue.test(e.charAt(B))?(ee=e.charAt(B),B++):(ee=n,te===0&&re(Pe));ee!==n;)Q.push(ee),Ue.test(e.charAt(B))?(ee=e.charAt(B),B++):(ee=n,te===0&&re(Pe));Q!==n?(Y=[Y,Q],z=Y):(B=z,z=n)}else B=z,z=n;return z!==n&&(Dt=A,z=We()),A=z,A}function fS(){var A,z,Y;for(A=B,z=[],Se.test(e.charAt(B))?(Y=e.charAt(B),B++):(Y=n,te===0&&re(Q_));Y!==n;)z.push(Y),Se.test(e.charAt(B))?(Y=e.charAt(B),B++):(Y=n,te===0&&re(Q_));return z!==n&&(Dt=A,z=Rz(z)),A=z,A}function jz(){var A,z,Y,Q;if(te++,A=B,z=pe(),z!==n){if(Y=[],X_.test(e.charAt(B))?(Q=e.charAt(B),B++):(Q=n,te===0&&re(K_)),Q!==n)for(;Q!==n;)Y.push(Q),X_.test(e.charAt(B))?(Q=e.charAt(B),B++):(Q=n,te===0&&re(K_));else Y=n;Y!==n?(Dt=A,z=Mz(),A=z):(B=A,A=n)}else B=A,A=n;return te--,A===n&&(z=n,te===0&&re(Pz)),A}function pe(){var A,z;for(te++,A=[],J_.test(e.charAt(B))?(z=e.charAt(B),B++):(z=n,te===0&&re(eS));z!==n;)A.push(z),J_.test(e.charAt(B))?(z=e.charAt(B),B++):(z=n,te===0&&re(eS));return te--,A===n&&(z=n,te===0&&re(Oz)),A}if(Pc=i(),Pc!==n&&B===e.length)return Pc;throw Pc!==n&&B=2,!1,!0))}var f7=function(t,e){return t.push(e),t};function l7(){return ba(function(t,e){DE(f7,[])(t).subscribe(e)})}const BE=-2003829722,Zp=-2021002517;function u7(t){return new TextDecoder().decode(t)}function FE(t){const e=t?"big":"little",n=new Ie().endianess(e).int32("magic").uint16("version").uint16("numZoomLevels").uint64("chromTreeOffset").uint64("unzoomedDataOffset").uint64("unzoomedIndexOffset").uint16("fieldCount").uint16("definedFieldCount").uint64("asOffset").uint64("totalSummaryOffset").uint32("uncompressBufSize").uint64("extHeaderOffset").array("zoomLevels",{length:"numZoomLevels",type:new Ie().endianess(e).uint32("reductionLevel").uint32("reserved").uint64("dataOffset").uint64("indexOffset")}),r=new Ie().endianess(e).uint64("basesCovered").doublele("scoreMin").doublele("scoreMax").doublele("scoreSum").doublele("scoreSumSquares"),i=new Ie().endianess(e).uint32("magic").uint32("blockSize").uint32("keySize").uint32("valSize").uint64("itemCount"),o=new Ie().endianess(e).uint8("isLeafNode").skip(1).uint16("cnt").saveOffset("offset");return{chromTreeParser:i,totalSummaryParser:r,headerParser:n,isLeafNode:o}}class RE{getHeader(e){return this.headerP||(this.headerP=this._getHeader(e).catch(n=>{throw this.headerP=void 0,n})),this.headerP}constructor(e){const{filehandle:n,renameRefSeqs:r=a=>a,path:i,url:o}=e;if(this.renameRefSeqs=r,n)this.bbi=n;else if(o)this.bbi=new $i(o);else if(i)this.bbi=new ct(i);else throw new Error("no file given")}async _getHeader(e){const n=await this._getMainHeader(e),r=await this._readChromTree(n,e);return{...n,...r}}async _getMainHeader(e,n=2e3){const{buffer:r}=await this.bbi.read(be.Buffer.alloc(n),0,n,0,e),i=this._isBigEndian(r),o=FE(i),a=o.headerParser.parse(r),{magic:s,asOffset:l,totalSummaryOffset:f}=a;if(a.fileType=s===Zp?"bigbed":"bigwig",l>n||f>n)return this._getMainHeader(e,n*2);if(l){const u=Number(a.asOffset);a.autoSql=u7(r.subarray(u,r.indexOf(0,u)))}if(a.totalSummaryOffset>n)return this._getMainHeader(e,n*2);if(a.totalSummaryOffset){const u=r.subarray(Number(a.totalSummaryOffset)),c=o.totalSummaryParser.parse(u);a.totalSummary={...c,basesCovered:Number(c.basesCovered)}}return{...a,isBigEndian:i}}_isBigEndian(e){let n=e.readInt32LE(0);if(n===BE||n===Zp)return!1;if(n=e.readInt32BE(0),n===BE||n===Zp)return!0;throw new Error("not a BigWig/BigBed file")}async _readChromTree(e,n){const r=e.isBigEndian,i=r?"big":"little",o=[],a={};let s=Number(e.unzoomedDataOffset);const l=Number(e.chromTreeOffset);for(;s%4!==0;)s+=1;const f=s-l,{buffer:u}=await this.bbi.read(be.Buffer.alloc(f),0,f,Number(l),n),c=FE(r),{keySize:h}=c.chromTreeParser.parse(u),d=new Ie().endianess(i).string("key",{stripNull:!0,length:h}).uint32("refId").uint32("refSize").saveOffset("offset"),p=new Ie().endianess(i).skip(h).uint64("childOffset").saveOffset("offset"),b=32,y=async w=>{let S=w;if(S>=u.length)throw new Error("reading beyond end of buffer");const C=c.isLeafNode.parse(u.subarray(S)),{isLeafNode:_,cnt:k}=C;if(S+=C.offset,_)for(let D=0;D0,a)}async getFeatureStream(e,n,r,i){await this.getHeader(i);const o=this.renameRefSeqs(e);let a;const{basesPerSpan:s,scale:l}=i||{};return s?a=await this.getView(1/s,i):l?a=await this.getView(l,i):a=await this.getView(1,i),new dn(f=>{a.readWigData(o,n,r,f,i)})}async getFeatures(e,n,r,i){const o=await this.getFeatureStream(e,n,r,i);return(await TE(o.pipe(l7()))).flat()}}class c7 extends RE{async getView(e,n){const{zoomLevels:r,refsByName:i,fileSize:o,isBigEndian:a,uncompressBufSize:s}=await this.getHeader(n),l=1/e;let f=r.length;o||(f-=1);for(let u=f;u>=0;u-=1){const c=r[u];if(c&&c.reductionLevel<=2*l){const h=Number(c.indexOffset);return new nE(this.bbi,i,h,a,s>0,"summary")}}return this.getUnzoomedView(n)}}function h7(t){return t.filter(e=>!!e)}class d7 extends RE{constructor(){super(...arguments),this.readIndicesCache=new tc({cache:new nc({maxSize:1}),fill:(e,n)=>this._readIndices({...e,signal:n})})}readIndices(e={}){const{signal:n,...r}=e;return this.readIndicesCache.get(JSON.stringify(r),e,n)}async getView(e,n){return this.getUnzoomedView(n)}async _readIndices(e){const{extHeaderOffset:n,isBigEndian:r}=await this.getHeader(e),{buffer:i}=await this.bbi.read(be.Buffer.alloc(64),0,64,Number(n)),o=r?"big":"little",a=new Ie().endianess(o).uint16("size").uint16("count").uint64("offset").parse(i),{count:s,offset:l}=a;if(s===0)return[];const f=20,u=f*s,{buffer:c}=await this.bbi.read(be.Buffer.alloc(u),0,u,Number(l)),h=new Ie().endianess(o).int16("type").int16("fieldcount").uint64("offset").skip(4).int16("field"),d=[];for(let p=0;p{const{offset:s,field:l}=a,{buffer:f}=await this.bbi.read(be.Buffer.alloc(32),0,32,Number(s),n),u=r?"big":"little",c=new Ie().endianess(u).int32("magic").int32("blockSize").int32("keySize").int32("valSize").uint64("itemCount"),{blockSize:h,keySize:d,valSize:p}=c.parse(f),b=new Ie().endianess(u).int8("nodeType").skip(1).int16("cnt").choice({tag:"nodeType",choices:{0:new Ie().array("leafkeys",{length:"cnt",type:new Ie().endianess(u).string("key",{length:d,stripNull:!0}).uint64("offset")}),1:new Ie().array("keys",{length:"cnt",type:new Ie().endianess(u).string("key",{length:d,stripNull:!0}).uint64("offset").uint32("length").uint32("reserved")})}}),y=async S=>{const C=Number(S),_=4+h*(d+p),{buffer:k}=await this.bbi.read(be.Buffer.alloc(_),0,_,C,n),D=b.parse(k);if(D.leafkeys){let I;for(let R=0;Rnew dn(l=>{i.readFeatures(l,[s],n)}).pipe(DE((l,f)=>l.concat(f)),IE(l=>{for(const f of l)f.field=s.field;return l})));return(await TE(a7(...o))).filter(s=>{var l;return((l=s.rest)===null||l===void 0?void 0:l.split(" ")[(s.field||0)-3])===e})}}const PE=Object.freeze(Object.defineProperty({__proto__:null,BigBed:d7,BigWig:c7},Symbol.toStringTag,{value:"Module"}));function p7(t,e){function n(){this.constructor=t}n.prototype=e.prototype,t.prototype=new n}function wa(t,e,n,r){this.message=t,this.expected=e,this.found=n,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,wa)}p7(wa,Error),wa.buildMessage=function(t,e){var n={literal:function(f){return'"'+i(f.text)+'"'},class:function(f){var u="",c;for(c=0;c0){for(c=1,h=1;cer&&(er=B,Bg=[]),Bg.push(A))}function Uz(A,z,Y){return new wa(wa.buildMessage(A,z),A,z,Y)}function iS(){var A,z,Y,Q,ee,Le,$e,mn,di,vr,pi,Ar,gi,Er;return A=B,z=pe(),z!==n?(Y=oS(),Y!==n?(Q=pe(),Q!==n?(ee=aS(),ee!==n?(Le=pe(),Le!==n?($e=Mc(),$e!==n?(mn=pe(),mn!==n?(t.charCodeAt(B)===40?(di=o,B++):(di=n,te===0&&re(a)),di!==n?(vr=pe(),vr!==n?(pi=Gz(),pi!==n?(Ar=pe(),Ar!==n?(t.charCodeAt(B)===41?(gi=s,B++):(gi=n,te===0&&re(l)),gi!==n?(Er=pe(),Er!==n?(Dt=A,z=f(Y,ee,$e,pi),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A}function oS(){var A;return t.substr(B,6)===u?(A=u,B+=6):(A=n,te===0&&re(c)),A===n&&(t.substr(B,6)===h?(A=h,B+=6):(A=n,te===0&&re(d)),A===n&&(t.substr(B,5)===p?(A=p,B+=5):(A=n,te===0&&re(b)))),A}function aS(){var A,z,Y,Q;return A=Fn(),A===n&&(A=B,z=Fn(),z!==n?(Y=sS(),Y!==n?(z=[z,Y],A=z):(B=A,A=n)):(B=A,A=n),A===n&&(A=B,z=Fn(),z!==n?(t.substr(B,4)===y?(Y=y,B+=4):(Y=n,te===0&&re(w)),Y!==n?(z=[z,Y],A=z):(B=A,A=n)):(B=A,A=n),A===n&&(A=B,z=Fn(),z!==n?(Y=sS(),Y!==n?(t.substr(B,4)===y?(Q=y,B+=4):(Q=n,te===0&&re(w)),Q!==n?(z=[z,Y,Q],A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)))),A}function sS(){var A;return t.substr(B,7)===S?(A=S,B+=7):(A=n,te===0&&re(C)),A===n&&(t.substr(B,5)===_?(A=_,B+=5):(A=n,te===0&&re(k)),A===n&&(t.substr(B,6)===D?(A=D,B+=6):(A=n,te===0&&re(I)))),A}function Mc(){var A;return A=fS(),A===n&&(A=pe()),A}function Gz(){var A,z,Y,Q,ee,Le,$e;if(A=B,z=Fg(),z!==n)if(Y=pe(),Y!==n){for(Q=[],ee=B,Le=pe(),Le!==n?($e=Fg(),$e!==n?(Dt=ee,Le=R(z,$e),ee=Le):(B=ee,ee=n)):(B=ee,ee=n);ee!==n;)Q.push(ee),ee=B,Le=pe(),Le!==n?($e=Fg(),$e!==n?(Dt=ee,Le=R(z,$e),ee=Le):(B=ee,ee=n)):(B=ee,ee=n);Q!==n?(ee=pe(),ee!==n?(Dt=A,z=M(z,Q),A=z):(B=A,A=n)):(B=A,A=n)}else B=A,A=n;else B=A,A=n;return A}function Hz(){var A;return t.charCodeAt(B)===35?(A=j,B++):(A=n,te===0&&re(L)),A}function Vz(){var A,z,Y,Q,ee;return A=B,z=pe(),z!==n?(Y=Hz(),Y!==n?(Q=fS(),Q!==n?(ee=pe(),ee!==n?(z=[z,Y,Q,ee],A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A}function Fg(){var A,z,Y,Q,ee,Le,$e,mn,di,vr,pi,Ar,gi,Er;return A=B,z=Rg(),z!==n?(Y=pe(),Y!==n?(Q=Fn(),Q!==n?(ee=pe(),ee!==n?(t.charCodeAt(B)===59?(Le=ne,B++):(Le=n,te===0&&re(ae)),Le!==n?($e=pe(),$e!==n?(mn=Mc(),mn!==n?(Dt=A,z=de(z,Q,mn),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A===n&&(A=B,z=Rg(),z!==n?(Y=pe(),Y!==n?(t.charCodeAt(B)===91?(Q=ke,B++):(Q=n,te===0&&re(Qe)),Q!==n?(ee=pe(),ee!==n?(Le=qz(),Le!==n?($e=pe(),$e!==n?(t.charCodeAt(B)===93?(mn=Be,B++):(mn=n,te===0&&re(Ke)),mn!==n?(di=pe(),di!==n?(vr=Fn(),vr!==n?(pi=pe(),pi!==n?(t.charCodeAt(B)===59?(Ar=ne,B++):(Ar=n,te===0&&re(ae)),Ar!==n?(gi=pe(),gi!==n?(Er=Mc(),Er!==n?(Dt=A,z=qe(z,Le,vr,Er),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A===n&&(A=B,z=Rg(),z!==n?(Y=pe(),Y!==n?(t.charCodeAt(B)===40?(Q=o,B++):(Q=n,te===0&&re(a)),Q!==n?(ee=pe(),ee!==n?(Le=jz(),Le!==n?($e=pe(),$e!==n?(t.charCodeAt(B)===41?(mn=s,B++):(mn=n,te===0&&re(l)),mn!==n?(di=pe(),di!==n?(vr=Fn(),vr!==n?(pi=pe(),pi!==n?(t.charCodeAt(B)===59?(Ar=ne,B++):(Ar=n,te===0&&re(ae)),Ar!==n?(gi=pe(),gi!==n?(Er=Mc(),Er!==n?(Dt=A,z=Je(z,Le,vr,Er),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n)):(B=A,A=n),A===n&&(A=Vz()))),A}function jz(){var A,z,Y,Q,ee,Le,$e;if(A=B,z=Fn(),z!==n){for(Y=[],Q=B,t.charCodeAt(B)===44?(ee=Ee,B++):(ee=n,te===0&&re(_e)),ee!==n?(Le=pe(),Le!==n?($e=Fn(),$e!==n?(Dt=Q,ee=R(z,$e),Q=ee):(B=Q,Q=n)):(B=Q,Q=n)):(B=Q,Q=n);Q!==n;)Y.push(Q),Q=B,t.charCodeAt(B)===44?(ee=Ee,B++):(ee=n,te===0&&re(_e)),ee!==n?(Le=pe(),Le!==n?($e=Fn(),$e!==n?(Dt=Q,ee=R(z,$e),Q=ee):(B=Q,Q=n)):(B=Q,Q=n)):(B=Q,Q=n);Y!==n?(Dt=A,z=dt(z,Y),A=z):(B=A,A=n)}else B=A,A=n;return A}function Rg(){var A,z,Y,Q;return t.substr(B,3)===Ht?(A=Ht,B+=3):(A=n,te===0&&re(Ne)),A===n&&(t.substr(B,4)===O?(A=O,B+=4):(A=n,te===0&&re(P)),A===n&&(t.substr(B,5)===q?(A=q,B+=5):(A=n,te===0&&re(H)),A===n&&(t.substr(B,6)===$?(A=$,B+=6):(A=n,te===0&&re(E)),A===n&&(t.substr(B,4)===v?(A=v,B+=4):(A=n,te===0&&re(G)),A===n&&(t.substr(B,5)===W?(A=W,B+=5):(A=n,te===0&&re(se)),A===n&&(t.substr(B,5)===J?(A=J,B+=5):(A=n,te===0&&re(fe)),A===n&&(t.substr(B,4)===Vt?(A=Vt,B+=4):(A=n,te===0&&re(li)),A===n&&(t.substr(B,6)===ui?(A=ui,B+=6):(A=n,te===0&&re(ci)),A===n&&(t.substr(B,7)===_t?(A=_t,B+=7):(A=n,te===0&&re(xr)),A===n&&(t.substr(B,4)===hi?(A=hi,B+=4):(A=n,te===0&&re(jt)),A===n&&(t.substr(B,6)===Jn?(A=Jn,B+=6):(A=n,te===0&&re(x)),A===n&&(t.substr(B,6)===g?(A=g,B+=6):(A=n,te===0&&re(m)),A===n&&(t.substr(B,3)===T?(A=T,B+=3):(A=n,te===0&&re(F)),A===n&&(A=B,z=oS(),z!==n?(Y=pe(),Y!==n?(Q=aS(),Q!==n?(Dt=A,z=N(z,Q),A=z):(B=A,A=n)):(B=A,A=n)):(B=A,A=n))))))))))))))),A}function qz(){var A;return A=Wz(),A===n&&(A=Fn()),A}function Fn(){var A,z,Y,Q,ee;if(A=B,z=B,V.test(t.charAt(B))?(Y=t.charAt(B),B++):(Y=n,te===0&&re(le)),Y!==n){for(Q=[],Ue.test(t.charAt(B))?(ee=t.charAt(B),B++):(ee=n,te===0&&re(Pe));ee!==n;)Q.push(ee),Ue.test(t.charAt(B))?(ee=t.charAt(B),B++):(ee=n,te===0&&re(Pe));Q!==n?(Y=[Y,Q],z=Y):(B=z,z=n)}else B=z,z=n;return z!==n&&(Dt=A,z=We()),A=z,A}function fS(){var A,z,Y;for(A=B,z=[],Se.test(t.charAt(B))?(Y=t.charAt(B),B++):(Y=n,te===0&&re(Y_));Y!==n;)z.push(Y),Se.test(t.charAt(B))?(Y=t.charAt(B),B++):(Y=n,te===0&&re(Y_));return z!==n&&(Dt=A,z=Mz(z)),A=z,A}function Wz(){var A,z,Y,Q;if(te++,A=B,z=pe(),z!==n){if(Y=[],Q_.test(t.charAt(B))?(Q=t.charAt(B),B++):(Q=n,te===0&&re(X_)),Q!==n)for(;Q!==n;)Y.push(Q),Q_.test(t.charAt(B))?(Q=t.charAt(B),B++):(Q=n,te===0&&re(X_));else Y=n;Y!==n?(Dt=A,z=Nz(),A=z):(B=A,A=n)}else B=A,A=n;return te--,A===n&&(z=n,te===0&&re(Oz)),A}function pe(){var A,z;for(te++,A=[],K_.test(t.charAt(B))?(z=t.charAt(B),B++):(z=n,te===0&&re(J_));z!==n;)A.push(z),K_.test(t.charAt(B))?(z=t.charAt(B),B++):(z=n,te===0&&re(J_));return te--,A===n&&(z=n,te===0&&re(Lz)),A}if(Pc=i(),Pc!==n&&B===t.length)return Pc;throw Pc!==n&&B[e,OE.parse(t.trim())]));function Qp(e){const t=["uint","int","float","long"];return{...e,fields:e.fields.map(n=>({...n,isArray:n.size&&n.type!=="char",arrayIsNumeric:n.size&&t.includes(n.type),isNumeric:!n.size&&t.includes(n.type)}))}}const g7={".":0,"-":-1,"+":1};function m7(e){var t;return e.length>=12&&!Number.isNaN(parseInt(e[9],10))&&((t=e[10])===null||t===void 0?void 0:t.split(",").filter(n=>!!n).length)===parseInt(e[9],10)}class b7{constructor(t={}){if(t.autoSql)this.autoSql=Qp(p7.parse(t.autoSql));else if(t.type){if(!Yp[t.type])throw new Error("Type not found");this.autoSql=Qp(Yp[t.type])}else this.autoSql=Qp(Yp.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(t,n={}){const{autoSql:r}=this,{uniqueId:i}=n,o=Array.isArray(t)?t:t.split(" ");let a={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&m7(o))for(let s=0;sNumber(p))));a[d]=l}}else{const s=["chrom","chromStart","chromEnd","name"];a=Object.fromEntries(o.map((f,l)=>[s[l]||"field"+l,f])),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 i&&(a.uniqueId=i),a.strand=g7[a.strand]||0,a.chrom=decodeURIComponent(a.chrom),a}}const y7=Object.freeze(Object.defineProperty({__proto__:null,default:b7},Symbol.toStringTag,{value:"Module"}));let NE=class{constructor(t,n){this.blockPosition=t,this.dataPosition=n}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}static min(...t){let n,r=0;for(;!n;r+=1)n=t[r];for(;r0&&(n=t[r]);return n}};function xa(e,t=0,n=!1){if(n)throw new Error("big-endian virtual file offsets not implemented");return new NE(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])}let LE=class{constructor(t,n,r,i){this.minv=t,this.maxv=n,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}};function w7(e){return new Promise(t=>setTimeout(t,e))}function x7(e){if(e.greaterThan(Number.MAX_SAFE_INTEGER)||e.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");return e.toNumber()}function v7(e){if(e&&e.aborted)if(typeof DOMException>"u"){const t=new Error("aborted");throw t.code="ERR_ABORTED",t}else throw new DOMException("aborted","AbortError")}function A7(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function E7(e={}){return"aborted"in e?{signal:e}:e}function zE(e,t){const n=[];let r;if(e.length===0)return e;e.sort((i,o)=>{const a=i.minv.blockPosition-o.minv.blockPosition;return a===0?i.minv.dataPosition-o.minv.dataPosition:a});for(const i of e)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(n.push(i),r=i):A7(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}function UE(e,t){return{lineCount:x7($u.fromBytesLE(Array.prototype.slice.call(e,t,t+8),!0))}}function xc(e,t){return e?e.compareTo(t)>0?t:e:t}function _7(e,t=n=>n){let n=0,r=0;const i=[],o={};for(let a=0;ar}){this.filehandle=t,this.renameRefSeq=n}};const S7=21578050;function C7(e,t){return e-e%t}function T7(e,t){return e-e%t+t}function k7(e,t){return t-=1,[[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)]]}class va extends GE{async lineCount(t,n){var r,i;return((i=(r=(await this.parse(n)).indices[t])===null||r===void 0?void 0:r.stats)===null||i===void 0?void 0:i.lineCount)||0}async _parse(t){const n=await this.filehandle.readFile(t);if(n.readUInt32LE(0)!==S7)throw new Error("Not a BAI file");const r=n.readInt32LE(4),o=((1<<(5+1)*3)-1)/7;let a=8,s;const f=new Array(r);for(let l=0;lo+1)throw new Error("bai index contains too many bins, please use CSI");{const w=n.readInt32LE(a);a+=4;const S=new Array(w);for(let C=0;C(l.length-1)*16384)throw new Error("query outside of range of linear index");let b=l[h/16384].blockPosition;for(let y=h/16384,w=0;y({...y,score:y.score*((u==null?void 0:u.lineCount)||0)/p}))}async blocksForRange(t,n,r,i={}){n<0&&(n=0);const o=await this.parse(i);if(!o)return[];const a=o.indices[t];if(!a)return[];const s=k7(n,r),f=[];for(const[d,p]of s)for(let b=d;b<=p;b++)if(a.binIndex[b]){const y=a.binIndex[b];for(const w of y)f.push(w)}const l=a.linearIndex.length;let u;const c=Math.min(n>>14,l-1),h=Math.min(r>>14,l-1);for(let d=c;d<=h;++d){const p=a.linearIndex[d];p&&(!u||p.compareTo(u)<0)&&(u=p)}return zE(f,u)}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(n=>{throw this.setupP=void 0,n})),this.setupP}async hasRefSeq(t,n={}){var r;return!!(!((r=(await this.parse(n)).indices[t])===null||r===void 0)&&r.binIndex)}}var li=be.Buffer,Xp=[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"&&(Xp=new Int32Array(Xp));function HE(e){if(li.isBuffer(e))return e;var t=typeof li.alloc=="function"&&typeof li.from=="function";if(typeof e=="number")return t?li.alloc(e):new li(e);if(typeof e=="string")return t?li.from(e):new li(e);throw new Error("input must be buffer, number, or string, received "+typeof e)}function I7(e){var t=HE(4);return t.writeInt32BE(e,0),t}function Kp(e,t){e=HE(e),li.isBuffer(t)&&(t=t.readUInt32BE(0));for(var n=~~t^-1,r=0;r>>8;return n^-1}function Jp(){return I7(Kp.apply(null,arguments))}Jp.signed=function(){return Kp.apply(null,arguments)},Jp.unsigned=function(){return Kp.apply(null,arguments)>>>0};var D7=Jp;const B7=$s(D7),F7=21582659,R7=38359875;function P7(e,t){return e*2**t}function VE(e,t){return Math.floor(e/2**t)}let vc=class extends GE{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,n){var r,i;return((i=(r=(await this.parse(n)).indices[t])===null||r===void 0?void 0:r.stats)===null||i===void 0?void 0:i.lineCount)||0}async indexCov(){return[]}parseAuxData(t,n){const r=t.readInt32LE(n),i=r&65536?"zero-based-half-open":"1-based-closed",o={0:"generic",1:"SAM",2:"VCF"}[r&15];if(!o)throw new Error(`invalid Tabix preset format flags ${r}`);const a={ref:t.readInt32LE(n+4),start:t.readInt32LE(n+8),end:t.readInt32LE(n+12)},s=t.readInt32LE(n+16),f=s?String.fromCharCode(s):"",l=t.readInt32LE(n+20),u=t.readInt32LE(n+24);return{columnNumbers:a,coordinateType:i,metaValue:s,metaChar:f,skipLines:l,format:o,formatFlags:r,..._7(t.subarray(n+28,n+28+u),this.renameRefSeq)}}async _parse(t){const n=await this.filehandle.readFile(t),r=await ei(n);let i;if(r.readUInt32LE(0)===F7)i=1;else if(r.readUInt32LE(0)===R7)i=2;else throw new Error("Not a CSI file");this.minShift=r.readInt32LE(4),this.depth=r.readInt32LE(8),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const o=r.readInt32LE(12),a=o>=30?this.parseAuxData(r,16):void 0,s=r.readInt32LE(16+o);let f=16+o+4,l;const u=new Array(s);for(let c=0;cthis.maxBinNumber)p=UE(r,f+28),f+=28+16;else{l=xc(l,xa(r,f)),f+=8;const w=r.readInt32LE(f);f+=4;const S=new Array(w);for(let C=0;C2**50&&(n=2**34),n-=1;let r=0,i=0,o=this.minShift+this.depth*3;const a=[];for(;r<=this.depth;o-=3,i+=P7(1,r*3),r+=1){const s=i+VE(t,o),f=i+VE(n,o);if(f-s+a.length>this.maxBinNumber)throw new Error(`query ${t}-${n} 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([s,f])}return a}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(n=>{throw this.setupP=void 0,n})),this.setupP}async hasRefSeq(t,n={}){var r;return!!(!((r=(await this.parse(n)).indices[t])===null||r===void 0)&&r.binIndex)}};const pn={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},jE="=ACMGRSVTWYHKDBN".split(""),Rl="MIDNSHP=X???????".split("");class qE{constructor(t){this.data={},this._tagList=[],this._allTagsParsed=!1;const{bytes:n,fileOffset:r}=t,{byteArray:i,start:o}=n;this.data={},this.bytes=n,this._id=r,this._refID=i.readInt32LE(o+4),this.data.start=i.readInt32LE(o+8),this.flags=(i.readInt32LE(o+16)&4294901760)>>16}get(t){return this[t]?this.data[t]?this.data[t]:(this.data[t]=this[t](),this.data[t]):this._get(t.toLowerCase())}end(){return this.get("start")+this.get("length_on_ref")}seq_id(){return this._refID}_get(t){return t in this.data?this.data[t]:(this.data[t]=this._parseTag(t),this.data[t])}_tags(){this._parseAllTags();let t=["seq"];this.isSegmentUnmapped()||t.push("start","end","strand","score","qual","MQ","CIGAR","length_on_ref","template_length"),this.isPaired()&&t.push("next_segment_position","pair_orientation"),t=t.concat(this._tagList||[]);for(const r of Object.keys(this.data))r[0]!=="_"&&r!=="next_seq_id"&&t.push(r);const n={};return t.filter(r=>{if(r in this.data&&this.data[r]===void 0||r==="CG"||r==="cg")return!1;const i=r.toLowerCase(),o=n[i];return n[i]=!0,!o})}parent(){}children(){return this.get("subfeatures")}id(){return this._id}mq(){const t=(this.get("_bin_mq_nl")&65280)>>8;return t===255?void 0:t}score(){return this.get("mq")}qual(){var t;return(t=this.qualRaw())===null||t===void 0?void 0:t.join(" ")}qualRaw(){if(this.isSegmentUnmapped())return;const{start:t,byteArray:n}=this.bytes,r=t+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4+this.get("_seq_bytes"),i=this.get("seq_length");return n.subarray(r,r+i)}strand(){return this.isReverseComplemented()?-1:1}multi_segment_next_segment_strand(){if(!this.isMateUnmapped())return this.isMateReverseComplemented()?-1:1}name(){return this.get("_read_name")}_read_name(){const t=this.get("_l_read_name"),{byteArray:n,start:r}=this.bytes;return n.toString("ascii",r+36,r+36+t-1)}_parseTag(t){if(this._allTagsParsed)return;const{byteArray:n,start:r}=this.bytes;let i=this._tagOffset||r+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4+this.get("_seq_bytes")+this.get("seq_length");const o=this.bytes.end;let a;for(;i>4,y=Rl[p&15];l+=b+y,i+=4}else for(let d=0;d>4,y=Rl[p&15];l+=b+y,i+=4}else for(let d=0;d[n.match(/\D/)[0].toUpperCase(),Number.parseInt(n,10)])}isPaired(){return!!(this.flags&pn.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&pn.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&pn.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&pn.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&pn.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&pn.BAM_FMREVERSE)}isRead1(){return!!(this.flags&pn.BAM_FREAD1)}isRead2(){return!!(this.flags&pn.BAM_FREAD2)}isSecondary(){return!!(this.flags&pn.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&pn.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&pn.BAM_FDUP)}isSupplementary(){return!!(this.flags&pn.BAM_FSUPPLEMENTARY)}cigar(){if(this.isSegmentUnmapped())return;const{byteArray:t,start:n}=this.bytes,r=this.get("_n_cigar_op");let i=n+36+this.get("_l_read_name");const o=this.get("seq_length");let a="",s=0,f=t.readInt32LE(i),l=f>>4,u=Rl[f&15];if(u==="S"&&l===o)return i+=4,f=t.readInt32LE(i),l=f>>4,u=Rl[f&15],u!=="N"&&console.warn("CG tag with no N tag"),this.data.length_on_ref=l,this.get("CG");for(let c=0;c>4,u=Rl[f&15],a+=l+u,u!=="H"&&u!=="S"&&u!=="I"&&(s+=l),i+=4;return this.data.length_on_ref=s,a}_flags(){}length_on_ref(){return this.data.length_on_ref?this.data.length_on_ref:(this.get("cigar"),this.data.length_on_ref)}_n_cigar_op(){return this.get("_flag_nc")&65535}_l_read_name(){return this.get("_bin_mq_nl")&255}_seq_bytes(){return this.get("seq_length")+1>>1}getReadBases(){return this.seq()}seq(){const{byteArray:t,start:n}=this.bytes,r=n+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4,i=this.get("_seq_bytes"),o=this.get("seq_length");let a="",s=0;for(let f=0;f>4],s++,s0?(o[0]=t,o[1]=r,o[2]=n,o[3]=i):(o[2]=t,o[3]=r,o[0]=n,o[1]=i),o.join("")}return""}_bin_mq_nl(){return this.bytes.byteArray.readInt32LE(this.bytes.start+12)}_flag_nc(){return this.bytes.byteArray.readInt32LE(this.bytes.start+16)}seq_length(){return this.bytes.byteArray.readInt32LE(this.bytes.start+20)}_next_refid(){return this.bytes.byteArray.readInt32LE(this.bytes.start+24)}_next_pos(){return this.bytes.byteArray.readInt32LE(this.bytes.start+28)}template_length(){return this.bytes.byteArray.readInt32LE(this.bytes.start+32)}toJSON(){const t={};for(const n of Object.keys(this))n.charAt(0)==="_"||n==="bytes"||(t[n]=this[n]);return t}}function WE(e){const t=e.split(/\r?\n/),n=[];for(const r of t){const[i,...o]=r.split(/\t/);i&&n.push({tag:i.slice(1),data:o.map(a=>{const[s,f]=a.split(":",2);return{tag:s,value:f}})})}return n}const $E=21840194,ZE=65536;async function M7(e){let t=[];for await(const n of e)t=t.concat(n);return t}class O7{read(){throw new Error("never called")}stat(){throw new Error("never called")}readFile(){throw new Error("never called")}close(){throw new Error("never called")}}class YE{constructor({bamFilehandle:t,bamPath:n,bamUrl:r,baiPath:i,baiFilehandle:o,baiUrl:a,csiPath:s,csiFilehandle:f,csiUrl:l,htsget:u,yieldThreadTime:c=100,renameRefSeqs:h=d=>d}){if(this.htsget=!1,this.featureCache=new tc({cache:new nc({maxSize:50}),fill:async(d,p)=>{const{chunk:b,opts:y}=d,{data:w,cpositions:S,dpositions:C}=await this._readChunk({chunk:b,opts:{...y,signal:p}});return this.readBamFeatures(w,S,C,b)}}),this.renameRefSeq=h,t)this.bam=t;else if(n)this.bam=new ct(n);else if(r)this.bam=new $i(r);else if(u)this.htsget=!0,this.bam=new O7;else throw new Error("unable to initialize bam");if(f)this.index=new vc({filehandle:f});else if(s)this.index=new vc({filehandle:new ct(s)});else if(l)this.index=new vc({filehandle:new $i(l)});else if(o)this.index=new va({filehandle:o});else if(i)this.index=new va({filehandle:new ct(i)});else if(a)this.index=new va({filehandle:new $i(a)});else if(n)this.index=new va({filehandle:new ct(`${n}.bai`)});else if(r)this.index=new va({filehandle:new $i(`${r}.bai`)});else if(u)this.htsget=!0;else throw new Error("unable to infer index format");this.yieldThreadTime=c}async getHeaderPre(t){const n=E7(t);if(!this.index)return;const r=await this.index.parse(n),i=r.firstDataLine?r.firstDataLine.blockPosition+65535:void 0;let o;if(i){const u=i+ZE,c=await this.bam.read(be.Buffer.alloc(u),0,u,0,n);if(!c.bytesRead)throw new Error("Error reading header");o=c.buffer.subarray(0,Math.min(c.bytesRead,i))}else o=await this.bam.readFile(n);const a=await ei(o);if(a.readInt32LE(0)!==$E)throw new Error("Not a BAM file");const s=a.readInt32LE(4);this.header=a.toString("utf8",8,8+s);const{chrToIndex:f,indexToChr:l}=await this._readRefSeqs(s+8,65535,n);return this.chrToIndex=f,this.indexToChr=l,WE(this.header)}getHeader(t){return this.headerP||(this.headerP=this.getHeaderPre(t).catch(n=>{throw this.headerP=void 0,n})),this.headerP}async getHeaderText(t={}){return await this.getHeader(t),this.header}async _readRefSeqs(t,n,r){if(t>n)return this._readRefSeqs(t,n*2,r);const i=n+ZE,{bytesRead:o,buffer:a}=await this.bam.read(be.Buffer.alloc(i),0,n,0,r);if(!o)throw new Error("Error reading refseqs from header");const s=await ei(a.subarray(0,Math.min(o,n))),f=s.readInt32LE(t);let l=t+4;const u={},c=[];for(let h=0;hs.length)return console.warn(`BAM header is very big. Re-fetching ${n} bytes.`),this._readRefSeqs(t,n*2,r)}return{chrToIndex:u,indexToChr:c}}async getRecordsForRange(t,n,r,i){return M7(this.streamRecordsForRange(t,n,r,i))}async*streamRecordsForRange(t,n,r,i){var o;await this.getHeader(i);const a=(o=this.chrToIndex)===null||o===void 0?void 0:o[t];if(a===void 0||!this.index)yield[];else{const s=await this.index.blocksForRange(a,n-1,r,i);yield*this._fetchChunkFeatures(s,a,n,r,i)}}async*_fetchChunkFeatures(t,n,r,i,o={}){const{viewAsPairs:a}=o,s=[];let f=!1;for(const l of t){const u=await this.featureCache.get(l.toString(),{chunk:l,opts:o},o.signal),c=[];for(const h of u)if(h.seq_id()===n)if(h.get("start")>=i){f=!0;break}else h.get("end")>=r&&c.push(h);if(s.push(c),yield c,f)break}v7(o.signal),a&&(yield this.fetchPairs(n,s,o))}async fetchPairs(t,n,r){const{pairAcrossChr:i,maxInsertSize:o=2e5}=r,a={},s={};n.map(h=>{const d={};for(const p of h){const b=p.name(),y=p.id();d[b]||(d[b]=0),d[b]++,s[y]=1}for(const[p,b]of Object.entries(d))b===1&&(a[p]=!0)});const f=[];n.map(h=>{for(const d of h){const p=d.name(),b=d.get("start"),y=d._next_pos(),w=d._next_refid();this.index&&a[p]&&(i||w===t&&Math.abs(b-y){const{data:d,cpositions:p,dpositions:b,chunk:y}=await this._readChunk({chunk:h,opts:r}),w=[];for(const S of await this.readBamFeatures(d,p,b,y))a[S.get("name")]&&!s[S.id()]&&w.push(S);return w}))).flat()}async _readRegion(t,n,r={}){const{bytesRead:i,buffer:o}=await this.bam.read(be.Buffer.alloc(n),0,n,t,r);return o.subarray(0,Math.min(i,n))}async _readChunk({chunk:t,opts:n}){const r=await this._readRegion(t.minv.blockPosition,t.fetchedSize(),n),{buffer:i,cpositions:o,dpositions:a}=await mA(r,t);return{data:i,cpositions:o,dpositions:a,chunk:t}}async readBamFeatures(t,n,r,i){let o=0;const a=[];let s=0,f=+Date.now();for(;o+4=r[s++];);s--}if(u0?n[s]*256+(o-r[s])+i.minv.dataPosition+1:B7.signed(t.slice(o,u))});a.push(c),this.yieldThreadTime&&+Date.now()-f>this.yieldThreadTime&&(await w7(1),f=+Date.now())}o=u+1}return a}async hasRefSeq(t){var n,r;const i=(n=this.chrToIndex)===null||n===void 0?void 0:n[t];return i===void 0?!1:(r=this.index)===null||r===void 0?void 0:r.hasRefSeq(i)}async lineCount(t){var n;const r=(n=this.chrToIndex)===null||n===void 0?void 0:n[t];return r===void 0||!this.index?0:this.index.lineCount(r)}async indexCov(t,n,r){var i;if(!this.index)return[];await this.index.parse();const o=(i=this.chrToIndex)===null||i===void 0?void 0:i[t];return o===void 0?[]:this.index.indexCov(o,n,r)}async blocksForRange(t,n,r,i){var o;if(!this.index)return[];await this.index.parse();const a=(o=this.chrToIndex)===null||o===void 0?void 0:o[t];return a===void 0?[]:this.index.blocksForRange(a,n,r,i)}}async function QE(e,t){const n=await Promise.all(e.map(async r=>{const{url:i,headers:o}=r;if(i.startsWith("data:"))return be.Buffer.from(i.split(",")[1],"base64");{const{referer:a,...s}=o,f=await fetch(i,{...t,headers:{...t==null?void 0:t.headers,...s}});if(!f.ok)throw new Error(`HTTP ${f.status} fetching ${i}: ${await f.text()}`);return be.Buffer.from(await f.arrayBuffer())}}));return be.Buffer.concat(await Promise.all(n.map(r=>ei(r))))}class N7 extends YE{constructor(t){super({htsget:!0}),this.baseUrl=t.baseUrl,this.trackId=t.trackId}async*streamRecordsForRange(t,n,r,i){var o;const s=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${t}&start=${n}&end=${r}&format=BAM`,f=(o=this.chrToIndex)===null||o===void 0?void 0:o[t];if(f===void 0)yield[];else{const l=await fetch(s,{...i});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${s}: ${await l.text()}`);const u=await l.json(),c=await QE(u.htsget.urls.slice(1),i);yield*this._fetchChunkFeatures([{buffer:c,_fetchedSize:void 0,bin:0,compareTo(){return 0},toUniqueString(){return`${t}_${n}_${r}`},fetchedSize(){return 0},minv:{dataPosition:0,blockPosition:0,compareTo:()=>0},maxv:{dataPosition:Number.MAX_SAFE_INTEGER,blockPosition:0,compareTo:()=>0},toString(){return`${t}_${n}_${r}`}}],f,n,r,i)}}async _readChunk({chunk:t}){if(!t.buffer)throw new Error("expected chunk.buffer in htsget");return{data:t.buffer,cpositions:[],dpositions:[],chunk:t}}async getHeader(t={}){const n=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,r=await fetch(n,t);if(!r.ok)throw new Error(`HTTP ${r.status} fetching ${n}: ${await r.text()}`);const i=await r.json(),o=await QE(i.htsget.urls,t);if(o.readInt32LE(0)!==$E)throw new Error("Not a BAM file");const a=o.readInt32LE(4),s=o.toString("utf8",8,8+a),f=WE(s),l=[],u={},c=f.filter(h=>h.tag==="SQ");for(const[h,d]of c.entries()){let p="",b=0;for(const y of d.data)y.tag==="SN"?p=y.value:y.tag==="LN"&&(b=+y.value);u[p]=h,l[h]={refName:p,length:b}}return this.chrToIndex=u,this.indexToChr=l,f}}const L7=Object.freeze(Object.defineProperty({__proto__:null,BAI:va,BamFile:YE,BamRecord:qE,CSI:vc,HtsgetFile:N7},Symbol.toStringTag,{value:"Module"}));function XE(e){if(e.greaterThan(Number.MAX_SAFE_INTEGER)||e.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");return e.toNumber()}class z7 extends Error{}function po(e){if(e&&e.aborted){if(typeof DOMException<"u")throw new DOMException("aborted","AbortError");{const t=new z7("aborted");throw t.code="ERR_ABORTED",t}}}function U7(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function KE(e,t){const n=[];let r=null;return e.length===0?e:(e.sort(function(i,o){const a=i.minv.blockPosition-o.minv.blockPosition;return a!==0?a:i.minv.dataPosition-o.minv.dataPosition}),e.forEach(i=>{(!t||i.maxv.compareTo(t)>0)&&(r===null?(n.push(i),r=i):U7(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i))}),n)}class eg{constructor(t,n){this.blockPosition=t,this.dataPosition=n}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}static min(...t){let n,r=0;for(;!n;r+=1)n=t[r];for(;r0&&(n=t[r]);return n}}function Aa(e,t=0,n=!1){if(n)throw new Error("big-endian virtual file offsets not implemented");return new eg(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])}class Ac{constructor(t,n,r,i=void 0){this.minv=t,this.maxv=n,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}}class JE{constructor({filehandle:t,renameRefSeqs:n=r=>r}){this.filehandle=t,this.renameRefSeq=n}async getMetadata(t={}){const{indices:n,...r}=await this.parse(t);return r}_findFirstData(t,n){return t?t.compareTo(n)>0?n:t:n}async parse(t={}){return this.parseP||(this.parseP=this._parse(t).catch(n=>{throw this.parseP=void 0,n})),this.parseP}async hasRefSeq(t,n={}){return!!((await this.parse(n)).indices[t]||{}).binIndex}}const G7=21578324,e_=14;function H7(e,t){return e+=1,t-=1,[[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)]]}class Ec extends JE{async lineCount(t,n={}){const r=await this.parse(n);if(!r)return-1;const i=r.refNameToId[t];if(!r.indices[i])return-1;const{stats:a}=r.indices[i];return a?a.lineCount:-1}async _parse(t={}){const n=await this.filehandle.readFile(t),r=await ei(n);if(po(t.signal),r.readUInt32LE(0)!==G7)throw new Error("Not a TBI file");const i=r.readInt32LE(4),o=r.readInt32LE(8),a=o&65536?"zero-based-half-open":"1-based-closed",f={0:"generic",1:"SAM",2:"VCF"}[o&15];if(!f)throw new Error(`invalid Tabix preset format flags ${o}`);const l={ref:r.readInt32LE(12),start:r.readInt32LE(16),end:r.readInt32LE(20)},u=r.readInt32LE(24),c=5,h=((1<<(c+1)*3)-1)/7,d=2**(14+c*3),p=u?String.fromCharCode(u):null,b=r.readInt32LE(28),y=r.readInt32LE(32),{refNameToId:w,refIdToName:S}=this._parseNameBytes(r.slice(36,36+y));let C=36+y,_;return{indices:new Array(i).fill(0).map(()=>{const D=r.readInt32LE(C);C+=4;const k={};let R;for(let L=0;Lh+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(ne===h+1){const ae=r.readInt32LE(C);C+=4,ae===2&&(R=this.parsePseudoBin(r,C)),C+=16*ae}else{const ae=r.readInt32LE(C);C+=4;const de=new Array(ae);for(let Ie=0;Ie>e_>=s.linearIndex.length?s.linearIndex.length-1:n>>e_]:new eg(0,0))||console.warn("querying outside of possible tabix range");const l=H7(n,r),u=[];for(const[b,y]of l)for(let w=b;w<=y;w++)if(s.binIndex[w]){const S=s.binIndex[w];for(let C=0;C>14,c-1),p=Math.min(r>>14,c-1);for(let b=d;b<=p;++b){const y=s.linearIndex[b];y&&(!h||y.compareTo(h)<0)&&(h=y)}return KE(u,h)}}const V7=21582659,j7=38359875;function q7(e,t){return e*2**t}function t_(e,t){return Math.floor(e/2**t)}class tg extends JE{constructor(t){super(t),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,n={}){const r=await this.parse(n);if(!r)return-1;const i=r.refNameToId[t];if(!r.indices[i])return-1;const{stats:a}=r.indices[i];return a?a.lineCount:-1}async indexCov(){throw new Error("CSI indexes do not support indexcov")}parseAuxData(t,n){const r=t.readInt32LE(n),i=r&65536?"zero-based-half-open":"1-based-closed",o={0:"generic",1:"SAM",2:"VCF"}[r&15];if(!o)throw new Error(`invalid Tabix preset format flags ${r}`);const a={ref:t.readInt32LE(n+4),start:t.readInt32LE(n+8),end:t.readInt32LE(n+12)},s=t.readInt32LE(n+16),f=s?String.fromCharCode(s):null,l=t.readInt32LE(n+20),u=t.readInt32LE(n+24),{refIdToName:c,refNameToId:h}=this._parseNameBytes(t.slice(n+28,n+28+u));return{refIdToName:c,refNameToId:h,skipLines:l,metaChar:f,columnNumbers:a,format:o,coordinateType:i}}_parseNameBytes(t){let n=0,r=0;const i=[],o={};for(let a=0;a=30?this.parseAuxData(n,16):{refIdToName:[],refNameToId:{},metaChar:null,columnNumbers:{ref:0,start:1,end:2},coordinateType:"zero-based-half-open",format:"generic"},s=n.readInt32LE(16+o);let f,l=16+o+4;const u=new Array(s).fill(0).map(()=>{const c=n.readInt32LE(l);l+=4;const h={};let d;for(let p=0;pthis.maxBinNumber)d=this.parsePseudoBin(n,l+4),l+=4+8+4+16+16;else{const y=Aa(n,l+4);f=this._findFirstData(f,y);const w=n.readInt32LE(l+12);l+=16;const S=new Array(w);for(let C=0;C2**50&&(n=2**34),n-=1;let r=0,i=0,o=this.minShift+this.depth*3;const a=[];for(;r<=this.depth;o-=3,i+=q7(1,r*3),r+=1){const s=i+t_(t,o),f=i+t_(n,o);if(f-s+a.length>this.maxBinNumber)throw new Error(`query ${t}-${n} 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([s,f])}return a}}const ng=typeof TextDecoder<"u"?new TextDecoder("utf-8"):void 0;function W7(e){return new Promise(t=>setTimeout(t,e))}class $7{constructor({path:t,filehandle:n,tbiPath:r,tbiFilehandle:i,csiPath:o,csiFilehandle:a,yieldTime:s=500,chunkSizeLimit:f=5e7,renameRefSeqs:l=c=>c,chunkCacheSize:u=5*2**20}){if(n)this.filehandle=n;else if(t)this.filehandle=new ct(t);else throw new TypeError("must provide either filehandle or path");if(i)this.index=new Ec({filehandle:i,renameRefSeqs:l});else if(a)this.index=new tg({filehandle:a,renameRefSeqs:l});else if(r)this.index=new Ec({filehandle:new ct(r),renameRefSeqs:l});else if(o)this.index=new tg({filehandle:new ct(o),renameRefSeqs:l});else if(t)this.index=new Ec({filehandle:new ct(`${t}.tbi`),renameRefSeqs:l});else throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, or csiPath");this.chunkSizeLimit=f,this.renameRefSeq=l,this.yieldTime=s,this.chunkCache=new tc({cache:new nc({maxSize:Math.floor(u/65536)}),fill:(c,h)=>this.readChunk(c,{signal:h})})}async getLines(t,n,r,i){let o,a={},s;if(typeof i>"u")throw new TypeError("line callback must be provided");if(typeof i=="function"?s=i:(a=i,s=i.lineCallback),t===void 0)throw new TypeError("must provide a reference sequence name");if(!s)throw new TypeError("line callback must be provided");const f=await this.index.getMetadata(a);if(po(o),n||(n=0),r||(r=f.maxRefLength),!(n<=r))throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(n===r)return;const l=await this.index.blocksForRange(t,n,r,a);po(o);for(let c=0;cthis.chunkSizeLimit)throw new Error(`Too much data. Chunk size ${h.toLocaleString()} bytes exceeds chunkSizeLimit of ${this.chunkSizeLimit.toLocaleString()}.`)}let u=Date.now();for(let c=0;c=y[S++];);S--}const{startCoordinate:D,overlaps:k}=this.checkLine(f,t,n,r,I);if(h!==void 0&&D!==void 0&&h>D)throw new Error(`Lines not sorted by start coordinate (${h} > ${D}), this file is not usable with Tabix.`);if(h=D,k)s(I.trim(),b[S]*256+(w-y[S])+d.minv.dataPosition+1);else if(D!==void 0&&D>=r)return;this.yieldTime&&u-Date.now()>this.yieldTime&&(u=Date.now(),po(o),await W7(1)),w=C+1}}}async getMetadata(t={}){return this.index.getMetadata(t)}async getHeaderBuffer(t={}){const{firstDataLine:n,metaChar:r,maxBlockSize:i}=await this.getMetadata(t);po(t.signal);const o=((n==null?void 0:n.blockPosition)||0)+i;let a=await this._readRegion(0,o,t);po(t.signal);try{a=await ei(a)}catch(s){throw console.error(s),new Error(`error decompressing block ${s.code} at 0 (length ${o}) ${s}`)}if(r){let s=-1;const f=` -`.charCodeAt(0),l=r.charCodeAt(0);for(let u=0;u=i)return{startCoordinate:w,overlaps:!1};if((h===0||h===c)&&w+1<=r)return{startCoordinate:w,overlaps:!1}}else if(l==="VCF"&&p===4)y=o.slice(b,S);else if(p===h){let C;if(l==="VCF"?C=this._getVcfEnd(w,y,o.slice(b,S)):C=parseInt(o.slice(b,S),10),C<=r)return{overlaps:!1}}if(b=S+1,p+=1,p>d)break}return{startCoordinate:w,overlaps:!0}}_getVcfEnd(t,n,r){let i=t+n.length;const o=r.indexOf("SVTYPE=TRA")!==-1;if(r[0]!=="."&&!o){let a=";";for(let s=0;s0&&(a=n[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var f=o[t];if(f===void 0)return!1;if(typeof f=="function")n_(f,this,n);else for(var l=f.length,u=u_(f,l),r=0;r0&&a.length>i&&!a.warned){a.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=a.length,Y7(s)}return e}De.prototype.addListener=function(t,n){return a_(this,t,n,!1)},De.prototype.on=De.prototype.addListener,De.prototype.prependListener=function(t,n){return a_(this,t,n,!0)};function Q7(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function s_(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=Q7.bind(r);return i.listener=n,r.wrapFn=i,i}De.prototype.once=function(t,n){return Sc(n),this.on(t,s_(this,t,n)),this},De.prototype.prependOnceListener=function(t,n){return Sc(n),this.prependListener(t,s_(this,t,n)),this},De.prototype.removeListener=function(t,n){var r,i,o,a,s;if(Sc(n),i=this._events,i===void 0)return this;if(r=i[t],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,r.listener||n));else if(typeof r!="function"){for(o=-1,a=r.length-1;a>=0;a--)if(r[a]===n||r[a].listener===n){s=r[a].listener,o=a;break}if(o<0)return this;o===0?r.shift():X7(r,o),r.length===1&&(i[t]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",t,s||n)}return this},De.prototype.off=De.prototype.removeListener,De.prototype.removeAllListeners=function(t){var n,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[t]),this;if(arguments.length===0){var o=Object.keys(r),a;for(i=0;i=0;i--)this.removeListener(t,n[i]);return this};function l_(e,t,n){var r=e._events;if(r===void 0)return[];var i=r[t];return i===void 0?[]:typeof i=="function"?n?[i.listener||i]:[i]:n?K7(i):u_(i,i.length)}De.prototype.listeners=function(t){return l_(this,t,!0)},De.prototype.rawListeners=function(t){return l_(this,t,!1)},De.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):f_.call(e,t)},De.prototype.listenerCount=f_;function f_(e){var t=this._events;if(t!==void 0){var n=t[e];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}De.prototype.eventNames=function(){return this._eventsCount>0?_c(this._events):[]};function u_(e,t){for(var n=new Array(t),r=0;r0?this.tail.next=w:this.head=w,this.tail=w,++this.length}},{key:"unshift",value:function(y){var w={data:y,next:this.head};this.length===0&&(this.tail=w),this.head=w,++this.length}},{key:"shift",value:function(){if(this.length!==0){var y=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,y}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(y){if(this.length===0)return"";for(var w=this.head,S=""+w.data;w=w.next;)S+=y+w.data;return S}},{key:"concat",value:function(y){if(this.length===0)return l.alloc(0);for(var w=l.allocUnsafe(y>>>0),S=this.head,C=0;S;)d(S.data,w,C),C+=S.data.length,S=S.next;return w}},{key:"consume",value:function(y,w){var S;return y_.length?_.length:y;if(I===_.length?C+=_:C+=_.slice(0,y),y-=I,y===0){I===_.length?(++S,w.next?this.head=w.next:this.head=this.tail=null):(this.head=w,w.data=_.slice(I));break}++S}return this.length-=S,C}},{key:"_getBuffer",value:function(y){var w=l.allocUnsafe(y),S=this.head,C=1;for(S.data.copy(w),y-=S.data.length;S=S.next;){var _=S.data,I=y>_.length?_.length:y;if(_.copy(w,w.length-y,0,I),y-=I,y===0){I===_.length?(++C,S.next?this.head=S.next:this.head=this.tail=null):(this.head=S,S.data=_.slice(I));break}++C}return this.length-=C,w}},{key:h,value:function(y,w){return c(this,t(t({},w),{},{depth:0,customInspect:!1}))}}]),p}(),sg}var lg,m_;function b_(){if(m_)return lg;m_=1;function e(a,s){var f=this,l=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return l||u?(s?s(a):a&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(i,this,a)):process.nextTick(i,this,a)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(a||null,function(c){!s&&c?f._writableState?f._writableState.errorEmitted?process.nextTick(n,f):(f._writableState.errorEmitted=!0,process.nextTick(t,f,c)):process.nextTick(t,f,c):s?(process.nextTick(n,f),s(c)):process.nextTick(n,f)}),this)}function t(a,s){i(a,s),n(a)}function n(a){a._writableState&&!a._writableState.emitClose||a._readableState&&!a._readableState.emitClose||a.emit("close")}function r(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function i(a,s){a.emit("error",s)}function o(a,s){var f=a._readableState,l=a._writableState;f&&f.autoDestroy||l&&l.autoDestroy?a.destroy(s):a.emit("error",s)}return lg={destroy:e,undestroy:r,errorOrDestroy:o},lg}var fg={},y_;function Sa(){if(y_)return fg;y_=1;function e(s,f){s.prototype=Object.create(f.prototype),s.prototype.constructor=s,s.__proto__=f}var t={};function n(s,f,l){l||(l=Error);function u(h,d,p){return typeof f=="string"?f:f(h,d,p)}var c=function(h){e(d,h);function d(p,b,y){return h.call(this,u(p,b,y))||this}return d}(l);c.prototype.name=l.name,c.prototype.code=s,t[s]=c}function r(s,f){if(Array.isArray(s)){var l=s.length;return s=s.map(function(u){return String(u)}),l>2?"one of ".concat(f," ").concat(s.slice(0,l-1).join(", "),", or ")+s[l-1]:l===2?"one of ".concat(f," ").concat(s[0]," or ").concat(s[1]):"of ".concat(f," ").concat(s[0])}else return"of ".concat(f," ").concat(String(s))}function i(s,f,l){return s.substr(!l||l<0?0:+l,f.length)===f}function o(s,f,l){return(l===void 0||l>s.length)&&(l=s.length),s.substring(l-f.length,l)===f}function a(s,f,l){return typeof l!="number"&&(l=0),l+f.length>s.length?!1:s.indexOf(f,l)!==-1}return n("ERR_INVALID_OPT_VALUE",function(s,f){return'The value "'+f+'" is invalid for option "'+s+'"'},TypeError),n("ERR_INVALID_ARG_TYPE",function(s,f,l){var u;typeof f=="string"&&i(f,"not ")?(u="must not be",f=f.replace(/^not /,"")):u="must be";var c;if(o(s," argument"))c="The ".concat(s," ").concat(u," ").concat(r(f,"type"));else{var h=a(s,".")?"property":"argument";c='The "'.concat(s,'" ').concat(h," ").concat(u," ").concat(r(f,"type"))}return c+=". Received type ".concat(typeof l),c},TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",function(s){return"The "+s+" method is not implemented"}),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",function(s){return"Cannot call "+s+" after a stream was destroyed"}),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",function(s){return"Unknown encoding: "+s},TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),fg.codes=t,fg}var ug,w_;function x_(){if(w_)return ug;w_=1;var e=Sa().codes.ERR_INVALID_OPT_VALUE;function t(r,i,o){return r.highWaterMark!=null?r.highWaterMark:i?r[o]:null}function n(r,i,o,a){var s=t(i,a,o);if(s!=null){if(!(isFinite(s)&&Math.floor(s)===s)||s<0){var f=a?o:"highWaterMark";throw new e(f,s)}return Math.floor(s)}return r.objectMode?16:16*1024}return ug={getHighWaterMark:n},ug}var cg,v_;function nz(){if(v_)return cg;v_=1,cg=e;function e(n,r){if(t("noDeprecation"))return n;var i=!1;function o(){if(!i){if(t("throwDeprecation"))throw new Error(r);t("traceDeprecation")?console.trace(r):console.warn(r),i=!0}return n.apply(this,arguments)}return o}function t(n){try{if(!nn.localStorage)return!1}catch{return!1}var r=nn.localStorage[n];return r==null?!1:String(r).toLowerCase()==="true"}return cg}var hg,A_;function E_(){if(A_)return hg;A_=1,hg=R;function e(O){var P=this;this.next=null,this.entry=null,this.finish=function(){Ne(P,O)}}var t;R.WritableState=D;var n={deprecate:nz()},r=d_(),i=be.Buffer,o=(typeof nn<"u"?nn:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function a(O){return i.from(O)}function s(O){return i.isBuffer(O)||O instanceof o}var f=b_(),l=x_(),u=l.getHighWaterMark,c=Sa().codes,h=c.ERR_INVALID_ARG_TYPE,d=c.ERR_METHOD_NOT_IMPLEMENTED,p=c.ERR_MULTIPLE_CALLBACK,b=c.ERR_STREAM_CANNOT_PIPE,y=c.ERR_STREAM_DESTROYED,w=c.ERR_STREAM_NULL_VALUES,S=c.ERR_STREAM_WRITE_AFTER_END,C=c.ERR_UNKNOWN_ENCODING,_=f.errorOrDestroy;_a(R,r);function I(){}function D(O,P,q){t=t||Ca(),O=O||{},typeof q!="boolean"&&(q=P instanceof t),this.objectMode=!!O.objectMode,q&&(this.objectMode=this.objectMode||!!O.writableObjectMode),this.highWaterMark=u(this,O,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var H=O.decodeStrings===!1;this.decodeStrings=!H,this.defaultEncoding=O.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function($){Qe(P,$)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=O.emitClose!==!1,this.autoDestroy=!!O.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}D.prototype.getBuffer=function(){for(var P=this.bufferedRequest,q=[];P;)q.push(P),P=P.next;return q},function(){try{Object.defineProperty(D.prototype,"buffer",{get:n.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var k;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(k=Function.prototype[Symbol.hasInstance],Object.defineProperty(R,Symbol.hasInstance,{value:function(P){return k.call(this,P)?!0:this!==R?!1:P&&P._writableState instanceof D}})):k=function(P){return P instanceof this};function R(O){t=t||Ca();var P=this instanceof t;if(!P&&!k.call(R,this))return new R(O);this._writableState=new D(O,this,P),this.writable=!0,O&&(typeof O.write=="function"&&(this._write=O.write),typeof O.writev=="function"&&(this._writev=O.writev),typeof O.destroy=="function"&&(this._destroy=O.destroy),typeof O.final=="function"&&(this._final=O.final)),r.call(this)}R.prototype.pipe=function(){_(this,new b)};function M(O,P){var q=new S;_(O,q),process.nextTick(P,q)}function j(O,P,q,H){var $;return q===null?$=new w:typeof q!="string"&&!P.objectMode&&($=new h("chunk",["string","Buffer"],q)),$?(_(O,$),process.nextTick(H,$),!1):!0}R.prototype.write=function(O,P,q){var H=this._writableState,$=!1,E=!H.objectMode&&s(O);return E&&!i.isBuffer(O)&&(O=a(O)),typeof P=="function"&&(q=P,P=null),E?P="buffer":P||(P=H.defaultEncoding),typeof q!="function"&&(q=I),H.ending?M(this,q):(E||j(this,H,O,q))&&(H.pendingcb++,$=ne(this,H,E,O,P,q)),$},R.prototype.cork=function(){this._writableState.corked++},R.prototype.uncork=function(){var O=this._writableState;O.corked&&(O.corked--,!O.writing&&!O.corked&&!O.bufferProcessing&&O.bufferedRequest&&qe(this,O))},R.prototype.setDefaultEncoding=function(P){if(typeof P=="string"&&(P=P.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((P+"").toLowerCase())>-1))throw new C(P);return this._writableState.defaultEncoding=P,this},Object.defineProperty(R.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function L(O,P,q){return!O.objectMode&&O.decodeStrings!==!1&&typeof P=="string"&&(P=i.from(P,q)),P}Object.defineProperty(R.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function ne(O,P,q,H,$,E){if(!q){var v=L(P,H,$);H!==v&&(q=!0,$="buffer",H=v)}var G=P.objectMode?1:H.length;P.length+=G;var W=P.length>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function sz(e,t,n){var r=t.length-1;if(r=0?(i>0&&(e.lastNeed=i-1),i):--r=0?(i>0&&(e.lastNeed=i-2),i):--r=0?(i>0&&(i===2?i=0:e.lastNeed=i-3),i):0))}function lz(e,t,n){if((t[0]&192)!==128)return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"�"}}function fz(e){var t=this.lastTotal-this.lastNeed,n=lz(this,e);if(n!==void 0)return n;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function uz(e,t){var n=sz(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)}function cz(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t}function hz(e,t){if((e.length-t)%2===0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function dz(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function pz(e,t){var n=(e.length-t)%3;return n===0?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,n===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function gz(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function mz(e){return e.toString(this.encoding)}function bz(e){return e&&e.length?this.write(e):""}var yg,C_;function wg(){if(C_)return yg;C_=1;var e=Sa().codes.ERR_STREAM_PREMATURE_CLOSE;function t(o){var a=!1;return function(){if(!a){a=!0;for(var s=arguments.length,f=new Array(s),l=0;l0)if(typeof v!="string"&&!J.objectMode&&Object.getPrototypeOf(v)!==r.prototype&&(v=o(v)),W)J.endEmitted?I(E,new w):L(E,J,v,!0);else if(J.ended)I(E,new b);else{if(J.destroyed)return!1;J.reading=!1,J.decoder&&!G?(v=J.decoder.write(v),J.objectMode||v.length!==0?L(E,J,v,!1):qe(E,J)):L(E,J,v,!1)}else W||(J.reading=!1,qe(E,J))}return!J.ended&&(J.length=ae?E=ae:(E--,E|=E>>>1,E|=E>>>2,E|=E>>>4,E|=E>>>8,E|=E>>>16,E++),E}function Ie(E,v){return E<=0||v.length===0&&v.ended?0:v.objectMode?1:E!==E?v.flowing&&v.length?v.buffer.head.data.length:v.length:(E>v.highWaterMark&&(v.highWaterMark=de(E)),E<=v.length?E:v.ended?v.length:(v.needReadable=!0,0))}M.prototype.read=function(E){f("read",E),E=parseInt(E,10);var v=this._readableState,G=E;if(E!==0&&(v.emittedReadable=!1),E===0&&v.needReadable&&((v.highWaterMark!==0?v.length>=v.highWaterMark:v.length>0)||v.ended))return f("read: emitReadable",v.length,v.ended),v.length===0&&v.ended?q(this):Be(this),null;if(E=Ie(E,v),E===0&&v.ended)return v.length===0&&q(this),null;var W=v.needReadable;f("need readable",W),(v.length===0||v.length-E0?se=P(E,v):se=null,se===null?(v.needReadable=v.length<=v.highWaterMark,E=0):(v.length-=E,v.awaitDrain=0),v.length===0&&(v.ended||(v.needReadable=!0),G!==E&&v.ended&&q(this)),se!==null&&this.emit("data",se),se};function Qe(E,v){if(f("onEofChunk"),!v.ended){if(v.decoder){var G=v.decoder.end();G&&G.length&&(v.buffer.push(G),v.length+=v.objectMode?1:G.length)}v.ended=!0,v.sync?Be(E):(v.needReadable=!1,v.emittedReadable||(v.emittedReadable=!0,Ke(E)))}}function Be(E){var v=E._readableState;f("emitReadable",v.needReadable,v.emittedReadable),v.needReadable=!1,v.emittedReadable||(f("emitReadable",v.flowing),v.emittedReadable=!0,process.nextTick(Ke,E))}function Ke(E){var v=E._readableState;f("emitReadable_",v.destroyed,v.length,v.ended),!v.destroyed&&(v.length||v.ended)&&(E.emit("readable"),v.emittedReadable=!1),v.needReadable=!v.flowing&&!v.ended&&v.length<=v.highWaterMark,O(E)}function qe(E,v){v.readingMore||(v.readingMore=!0,process.nextTick(Je,E,v))}function Je(E,v){for(;!v.reading&&!v.ended&&(v.length1&&$(W.pipes,E)!==-1)&&!ui&&(f("false write response, pause",W.awaitDrain),W.awaitDrain++),G.pause())}function xr(x){f("onerror",x),Jn(),E.removeListener("error",xr),t(E,"error")===0&&I(E,x)}k(E,"error",xr);function hi(){E.removeListener("finish",Vt),Jn()}E.once("close",hi);function Vt(){f("onfinish"),E.removeListener("close",hi),Jn()}E.once("finish",Vt);function Jn(){f("unpipe"),G.unpipe(E)}return E.emit("pipe",G),W.flowing||(f("pipe resume"),G.resume()),E};function Ee(E){return function(){var G=E._readableState;f("pipeOnDrain",G.awaitDrain),G.awaitDrain&&G.awaitDrain--,G.awaitDrain===0&&t(E,"data")&&(G.flowing=!0,O(E))}}M.prototype.unpipe=function(E){var v=this._readableState,G={hasUnpiped:!1};if(v.pipesCount===0)return this;if(v.pipesCount===1)return E&&E!==v.pipes?this:(E||(E=v.pipes),v.pipes=null,v.pipesCount=0,v.flowing=!1,E&&E.emit("unpipe",this,G),this);if(!E){var W=v.pipes,se=v.pipesCount;v.pipes=null,v.pipesCount=0,v.flowing=!1;for(var J=0;J0,W.flowing!==!1&&this.resume()):E==="readable"&&!W.endEmitted&&!W.readableListening&&(W.readableListening=W.needReadable=!0,W.flowing=!1,W.emittedReadable=!1,f("on readable",W.length,W.reading),W.length?Be(this):W.reading||process.nextTick(dt,this)),G},M.prototype.addListener=M.prototype.on,M.prototype.removeListener=function(E,v){var G=n.prototype.removeListener.call(this,E,v);return E==="readable"&&process.nextTick(_e,this),G},M.prototype.removeAllListeners=function(E){var v=n.prototype.removeAllListeners.apply(this,arguments);return(E==="readable"||E===void 0)&&process.nextTick(_e,this),v};function _e(E){var v=E._readableState;v.readableListening=E.listenerCount("readable")>0,v.resumeScheduled&&!v.paused?v.flowing=!0:E.listenerCount("data")>0&&E.resume()}function dt(E){f("readable nexttick read 0"),E.read(0)}M.prototype.resume=function(){var E=this._readableState;return E.flowing||(f("resume"),E.flowing=!E.readableListening,Gt(this,E)),E.paused=!1,this};function Gt(E,v){v.resumeScheduled||(v.resumeScheduled=!0,process.nextTick(Ne,E,v))}function Ne(E,v){f("resume",v.reading),v.reading||E.read(0),v.resumeScheduled=!1,E.emit("resume"),O(E),v.flowing&&!v.reading&&E.read(0)}M.prototype.pause=function(){return f("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(f("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function O(E){var v=E._readableState;for(f("flow",v.flowing);v.flowing&&E.read()!==null;);}M.prototype.wrap=function(E){var v=this,G=this._readableState,W=!1;E.on("end",function(){if(f("wrapped end"),G.decoder&&!G.ended){var le=G.decoder.end();le&&le.length&&v.push(le)}v.push(null)}),E.on("data",function(le){if(f("wrapped data"),G.decoder&&(le=G.decoder.write(le)),!(G.objectMode&&le==null)&&!(!G.objectMode&&(!le||!le.length))){var Ht=v.push(le);Ht||(W=!0,E.pause())}});for(var se in E)this[se]===void 0&&typeof E[se]=="function"&&(this[se]=function(Ht){return function(){return E[Ht].apply(E,arguments)}}(se));for(var J=0;J=v.length?(v.decoder?G=v.buffer.join(""):v.buffer.length===1?G=v.buffer.first():G=v.buffer.concat(v.length),v.buffer.clear()):G=v.buffer.consume(E,v.decoder),G}function q(E){var v=E._readableState;f("endReadable",v.endEmitted),v.endEmitted||(v.ended=!0,process.nextTick(H,v,E))}function H(E,v){if(f("endReadableNT",E.endEmitted,E.length),!E.endEmitted&&E.length===0&&(E.endEmitted=!0,v.readable=!1,v.emit("end"),E.autoDestroy)){var G=v._writableState;(!G||G.autoDestroy&&G.finished)&&v.destroy()}}typeof Symbol=="function"&&(M.from=function(E,v){return _===void 0&&(_=wz()),_(M,E,v)});function $(E,v){for(var G=0,W=E.length;G0;return s(S,_,I,function(D){y||(y=D),D&&w.forEach(f),!_&&(w.forEach(f),b(y))})});return d.reduce(l)}return Sg=c,Sg}var M_=gn,Cg=ig.EventEmitter,Az=_a;Az(gn,Cg),gn.Readable=D_(),gn.Writable=E_(),gn.Duplex=Ca(),gn.Transform=F_(),gn.PassThrough=xz(),gn.finished=wg(),gn.pipeline=vz(),gn.Stream=gn;function gn(){Cg.call(this)}gn.prototype.pipe=function(e,t){var n=this;function r(u){e.writable&&e.write(u)===!1&&n.pause&&n.pause()}n.on("data",r);function i(){n.readable&&n.resume&&n.resume()}e.on("drain",i),!e._isStdio&&(!t||t.end!==!1)&&(n.on("end",a),n.on("close",s));var o=!1;function a(){o||(o=!0,e.end())}function s(){o||(o=!0,typeof e.destroy=="function"&&e.destroy())}function f(u){if(l(),Cg.listenerCount(this,"error")===0)throw u}n.on("error",f),e.on("error",f);function l(){n.removeListener("data",r),e.removeListener("drain",i),n.removeListener("end",a),n.removeListener("close",s),n.removeListener("error",f),e.removeListener("error",f),n.removeListener("end",l),n.removeListener("close",l),e.removeListener("close",l)}return n.on("end",l),n.on("close",l),e.on("close",l),e.emit("pipe",n),e};function Ml(e){return e.replace(/%([0-9A-Fa-f]{2})/g,(t,n)=>String.fromCharCode(parseInt(n,16)))}function O_(e,t){return String(t).replace(e,n=>`%${n.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`)}function Ol(e){return O_(/[\n;\r\t=%&,\x00-\x1f\x7f-\xff]/g,e)}function gr(e){return O_(/[\n\r\t%\x00-\x1f\x7f-\xff]/g,e)}function N_(e){if(!(e&&e.length)||e===".")return{};const t={};return e.replace(/\r?\n$/,"").split(";").forEach(n=>{const r=n.split("=",2);if(!(r[1]&&r[1].length))return;r[0]=r[0].trim();let i=t[r[0].trim()];i||(i=[],t[r[0]]=i),i.push(...r[1].split(",").map(o=>o.trim()).map(Ml))}),t}function L_(e){const t=e.split(" ").map(r=>r==="."||r===""?null:r);return{seq_id:t[0]&&Ml(t[0]),source:t[1]&&Ml(t[1]),type:t[2]&&Ml(t[2]),start:t[3]===null?null:parseInt(t[3],10),end:t[4]===null?null:parseInt(t[4],10),score:t[5]===null?null:parseFloat(t[5]),strand:t[6],phase:t[7],attributes:t[8]===null?null:N_(t[8])}}function z_(e){const t=/^\s*##\s*(\S+)\s*(.*)/.exec(e);if(!t)return null;const[,n]=t;let[,,r]=t;const i={directive:n};if(r.length&&(r=r.replace(/\r?\n$/,""),i.value=r),n==="sequence-region"){const o=r.split(/\s+/,3);return{...i,seq_id:o[0],start:o[1]&&o[1].replace(/\D/g,""),end:o[2]&&o[2].replace(/\D/g,"")}}else if(n==="genome-build"){const[o,a]=r.split(/\s+/,2);return{...i,source:o,buildName:a}}return i}function U_(e){const t=[];return Object.entries(e).forEach(([n,r])=>{if(!r)return;let i;r.hasOwnProperty("toString")?i=Ol(r.toString()):Array.isArray(r)?i=r.map(Ol).join(","):i=Ol(r),t.push(`${Ol(n)}=${i}`)}),t.length?t.join(";"):"."}function Ez(e,t){const n=e.attributes===null||e.attributes===void 0?".":U_(e.attributes),i=`${[e.seq_id===null?".":gr(e.seq_id),e.source===null?".":gr(e.source),e.type===null?".":gr(e.type),e.start===null?".":gr(e.start),e.end===null?".":gr(e.end),e.score===null?".":gr(e.score),e.strand===null?".":gr(e.strand),e.phase===null?".":gr(e.phase),n].join(" ")} -`;return t[i]?"":(t[i]=!0,i)}function Cc(e,t){if(Array.isArray(e))return e.map(r=>Cc(r,t)).join("");const n=[Ez(e,t)];return _z(e)&&n.push(...e.child_features.map(r=>Cc(r,t)),...e.derived_features.map(r=>Cc(r,t))),n.join("")}function G_(e){return Cc(e,{})}function H_(e){let t=`##${e.directive}`;return e.value&&(t+=` ${e.value}`),t+=` -`,t}function V_(e){return`# ${e.comment} -`}function Tg(e){return`>${e.id}${e.description?` ${e.description}`:""} -${e.sequence} -`}function Tc(e){function t(n){return"attributes"in n?G_(n):"directive"in n?H_(n):"sequence"in n?Tg(n):"comment"in n?V_(n):`# (invalid item found during format) -`}return Array.isArray(e)?e.map(t):t(e)}function _z(e){return e.child_features!==void 0&&e.derived_features!==void 0}const Sz=Object.freeze(Object.defineProperty({__proto__:null,escape:Ol,escapeColumn:gr,formatAttributes:U_,formatComment:V_,formatDirective:H_,formatFeature:G_,formatItem:Tc,formatSequence:Tg,parseAttributes:N_,parseDirective:z_,parseFeature:L_,unescape:Ml},Symbol.toStringTag,{value:"Module"})),j_={Parent:"child_features",Derives_from:"derived_features"};class q_{constructor(t){this.seqCallback=t,this.currentSequence=void 0}addLine(t){const n=/^>\s*(\S+)\s*(.*)/.exec(t);n?(this._flush(),this.currentSequence={id:n[1],sequence:""},n[2]&&(this.currentSequence.description=n[2].trim())):this.currentSequence&&/\S/.test(t)&&(this.currentSequence.sequence+=t.replace(/\s/g,""))}_flush(){this.currentSequence&&this.seqCallback(this.currentSequence)}finish(){this._flush()}}class W_{constructor(t){this.fastaParser=void 0,this.eof=!1,this.lineNumber=0,this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},this._underConstructionOrphans={};const n=()=>{};this.featureCallback=t.featureCallback||n,this.endCallback=t.endCallback||n,this.commentCallback=t.commentCallback||n,this.errorCallback=t.errorCallback||n,this.directiveCallback=t.directiveCallback||n,this.sequenceCallback=t.sequenceCallback||n,this.disableDerivesFromReferences=t.disableDerivesFromReferences||!1,this.bufferSize=t.bufferSize===void 0?1e3:t.bufferSize}addLine(t){if(this.fastaParser){this.fastaParser.addLine(t);return}if(this.eof)return;if(this.lineNumber+=1,/^\s*[^#\s>]/.test(t)){this._bufferLine(t);return}const n=/^\s*(#+)(.*)/.exec(t);if(n){const[,r]=n;let[,,i]=n;if(r.length===3)this._emitAllUnderConstructionFeatures();else if(r.length===2){const o=z_(t);o&&(o.directive==="FASTA"?(this._emitAllUnderConstructionFeatures(),this.eof=!0,this.fastaParser=new q_(this.sequenceCallback)):this._emitItem(o))}else i=i.replace(/\s*/,""),this._emitItem({comment:i})}else if(!/^\s*$/.test(t))if(/^\s*>/.test(t))this._emitAllUnderConstructionFeatures(),this.eof=!0,this.fastaParser=new q_(this.sequenceCallback),this.fastaParser.addLine(t);else{const r=t.replace(/\r?\n?$/g,"");throw new Error(`GFF3 parse error. Cannot parse '${r}'.`)}}finish(){this._emitAllUnderConstructionFeatures(),this.fastaParser&&this.fastaParser.finish(),this.endCallback()}_emitItem(t){Array.isArray(t)?this.featureCallback(t):"directive"in t?this.directiveCallback(t):"comment"in t&&this.commentCallback(t)}_enforceBufferSizeLimit(t=0){const n=r=>{r&&Array.isArray(r)&&r[0].attributes&&r[0].attributes.ID&&r[0].attributes.ID[0]&&(r[0].attributes.ID.forEach(o=>{delete this._underConstructionById[o],delete this._completedReferences[o]}),r.forEach(o=>{o.child_features&&o.child_features.forEach(a=>n(a)),o.derived_features&&o.derived_features.forEach(a=>n(a))}))};for(;this._underConstructionTopLevel.length+t>this.bufferSize;){const r=this._underConstructionTopLevel.shift();r&&(this._emitItem(r),n(r))}}_emitAllUnderConstructionFeatures(){if(this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},Array.from(Object.values(this._underConstructionOrphans)).length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${Object.keys(this._underConstructionOrphans)}`)}_bufferLine(t){var n,r,i;const a={...L_(t),child_features:[],derived_features:[]},s=((n=a.attributes)===null||n===void 0?void 0:n.ID)||[],f=((r=a.attributes)===null||r===void 0?void 0:r.Parent)||[],l=this.disableDerivesFromReferences?[]:((i=a.attributes)===null||i===void 0?void 0:i.Derives_from)||[];if(!s.length&&!f.length&&!l.length){this._emitItem([a]);return}let u;s.forEach(c=>{const h=this._underConstructionById[c];h?(h[h.length-1].type!==a.type&&this._parseError(`multi-line feature "${c}" has inconsistent types: "${a.type}", "${h[h.length-1].type}"`),h.push(a),u=h):(u=[a],this._enforceBufferSizeLimit(1),!f.length&&!l.length&&this._underConstructionTopLevel.push(u),this._underConstructionById[c]=u,this._resolveReferencesTo(u,c))}),this._resolveReferencesFrom(u||[a],{Parent:f,Derives_from:l},s)}_resolveReferencesTo(t,n){const r=this._underConstructionOrphans[n];r&&(t.forEach(i=>{i.child_features.push(...r.Parent)}),t.forEach(i=>{i.derived_features.push(...r.Derives_from)}),delete this._underConstructionOrphans[n])}_parseError(t){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${t}`)}_resolveReferencesFrom(t,n,r){function i(o,a,s){let f=o[a];f||(f={},o[a]=f);const l=f[s]||!1;return f[s]=!0,l}n.Parent.forEach(o=>{const a=this._underConstructionById[o];if(a){const s=j_.Parent;r.filter(f=>i(this._completedReferences,f,`Parent,${o}`)).length||a.forEach(f=>{f[s].push(t)})}else{let s=this._underConstructionOrphans[o];s||(s={Parent:[],Derives_from:[]},this._underConstructionOrphans[o]=s),s.Parent.push(t)}}),n.Derives_from.forEach(o=>{const a=this._underConstructionById[o];if(a){const s=j_.Derives_from;r.filter(f=>i(this._completedReferences,f,`Derives_from,${o}`)).length||a.forEach(f=>{f[s].push(t)})}else{let s=this._underConstructionOrphans[o];s||(s={Parent:[],Derives_from:[]},this._underConstructionOrphans[o]=s),s.Derives_from.push(t)}})}}function kg(e){process&&process.nextTick?process.nextTick(e):e()}function $_(e){const t={encoding:"utf8",parseFeatures:!0,parseDirectives:!1,parseSequences:!0,parseComments:!1,bufferSize:1e3,disableDerivesFromReferences:!1,...e};return e.parseAll&&(t.parseFeatures=!0,t.parseDirectives=!0,t.parseComments=!0,t.parseSequences=!0),t}class Cz extends M_.Transform{constructor(t={}){super({objectMode:!0}),this.textBuffer="";const n=$_(t);this.encoding=t.encoding||"utf8",this.decoder=new az;const r=this.push.bind(this);this.parser=new W_({featureCallback:n.parseFeatures?r:void 0,directiveCallback:n.parseDirectives?r:void 0,commentCallback:n.parseComments?r:void 0,sequenceCallback:n.parseSequences?r:void 0,errorCallback:i=>this.emit("error",i),bufferSize:n.bufferSize,disableDerivesFromReferences:n.disableDerivesFromReferences})}_addLine(t){t&&this.parser.addLine(t)}_nextText(t){const n=(this.textBuffer+t).split(/\r?\n/);this.textBuffer=n.pop()||"",n.forEach(r=>this._addLine(r))}_transform(t,n,r){this._nextText(this.decoder.write(t)),kg(r)}_flush(t){this.decoder.end&&this._nextText(this.decoder.end()),this.textBuffer!=null&&this._addLine(this.textBuffer),this.parser.finish(),kg(t)}}function Tz(e={}){return new Cz(e)}function kz(e,t={}){if(!e)return[];const n=$_(t),r=[],i=r.push.bind(r),o=new W_({featureCallback:n.parseFeatures?i:void 0,directiveCallback:n.parseDirectives?i:void 0,commentCallback:n.parseComments?i:void 0,sequenceCallback:n.parseSequences?i:void 0,disableDerivesFromReferences:n.disableDerivesFromReferences||!1,bufferSize:1/0,errorCallback:a=>{throw a}});return e.split(/\r?\n/).forEach(o.addLine.bind(o)),o.finish(),r}function Iz(e){const t=[],n=[];e.forEach(i=>{"sequence"in i?n.push(i):t.push(i)});let r=t.map(Tc).join("");return n.length&&(r+=`##FASTA -`,r+=n.map(Tg).join("")),r}class Z_ extends M_.Transform{constructor(t={}){super(Object.assign(t,{objectMode:!0})),this.linesSinceLastSyncMark=0,this.haveWeEmittedData=!1,this.fastaMode=!1,this.minLinesBetweenSyncMarks=t.minSyncLines||100,this.insertVersionDirective=t.insertVersionDirective||!1}_transform(t,n,r){let i;if(!this.haveWeEmittedData&&this.insertVersionDirective){const o=Array.isArray(t)?t[0]:t;"directive"in o&&o.directive!=="gff-version"&&this.push(`##gff-version 3 -`)}if("sequence"in t&&!this.fastaMode&&(this.push(`##FASTA -`),this.fastaMode=!0),Array.isArray(t)?i=t.map(Tc).join(""):i=Tc(t),this.push(i),this.linesSinceLastSyncMark>=this.minLinesBetweenSyncMarks)this.push(`### + )`},Symbol.toStringTag,{value:"Module"}))).map(([t,e])=>[t,ME.parse(e.trim())]));function Qp(t){const e=["uint","int","float","long"];return{...t,fields:t.fields.map(n=>({...n,isArray:n.size&&n.type!=="char",arrayIsNumeric:n.size&&e.includes(n.type),isNumeric:!n.size&&e.includes(n.type)}))}}const b7={".":0,"-":-1,"+":1};function y7(t){var e;return t.length>=12&&!Number.isNaN(parseInt(t[9],10))&&((e=t[10])===null||e===void 0?void 0:e.split(",").filter(n=>!!n).length)===parseInt(t[9],10)}class w7{constructor(e={}){if(e.autoSql)this.autoSql=Qp(m7.parse(e.autoSql));else if(e.type){if(!Yp[e.type])throw new Error("Type not found");this.autoSql=Qp(Yp[e.type])}else this.autoSql=Qp(Yp.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(e,n={}){const{autoSql:r}=this,{uniqueId:i}=n,o=Array.isArray(e)?e:e.split(" ");let a={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&y7(o))for(let s=0;sNumber(p))));a[d]=f}}else{const s=["chrom","chromStart","chromEnd","name"];a=Object.fromEntries(o.map((l,f)=>[s[f]||"field"+f,l])),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 i&&(a.uniqueId=i),a.strand=b7[a.strand]||0,a.chrom=decodeURIComponent(a.chrom),a}}const x7=Object.freeze(Object.defineProperty({__proto__:null,default:w7},Symbol.toStringTag,{value:"Module"}));let OE=class{constructor(e,n){this.blockPosition=e,this.dataPosition=n}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}static min(...e){let n,r=0;for(;!n;r+=1)n=e[r];for(;r0&&(n=e[r]);return n}};function xa(t,e=0,n=!1){if(n)throw new Error("big-endian virtual file offsets not implemented");return new OE(t[e+7]*1099511627776+t[e+6]*4294967296+t[e+5]*16777216+t[e+4]*65536+t[e+3]*256+t[e+2],t[e+1]<<8|t[e])}let NE=class{constructor(e,n,r,i){this.minv=e,this.maxv=n,this.bin=r,this._fetchedSize=i}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._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}};function v7(t){return new Promise(e=>setTimeout(e,t))}function A7(t){if(t.greaterThan(Number.MAX_SAFE_INTEGER)||t.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");return t.toNumber()}function E7(t){if(t&&t.aborted)if(typeof DOMException>"u"){const e=new Error("aborted");throw e.code="ERR_ABORTED",e}else throw new DOMException("aborted","AbortError")}function _7(t,e){return e.minv.blockPosition-t.maxv.blockPosition<65e3&&e.maxv.blockPosition-t.minv.blockPosition<5e6}function S7(t={}){return"aborted"in t?{signal:t}:t}function LE(t,e){const n=[];let r;if(t.length===0)return t;t.sort((i,o)=>{const a=i.minv.blockPosition-o.minv.blockPosition;return a===0?i.minv.dataPosition-o.minv.dataPosition:a});for(const i of t)(!e||i.maxv.compareTo(e)>0)&&(r===void 0?(n.push(i),r=i):_7(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}function zE(t,e){return{lineCount:A7($u.fromBytesLE(Array.prototype.slice.call(t,e,e+8),!0))}}function xc(t,e){return t?t.compareTo(e)>0?e:t:e}function C7(t,e=n=>n){let n=0,r=0;const i=[],o={};for(let a=0;ar}){this.filehandle=e,this.renameRefSeq=n}};const T7=21578050;function I7(t,e){return t-t%e}function k7(t,e){return t-t%e+e}function D7(t,e){return e-=1,[[0,0],[1+(t>>26),1+(e>>26)],[9+(t>>23),9+(e>>23)],[73+(t>>20),73+(e>>20)],[585+(t>>17),585+(e>>17)],[4681+(t>>14),4681+(e>>14)]]}class va extends UE{async lineCount(e,n){var r,i;return((i=(r=(await this.parse(n)).indices[e])===null||r===void 0?void 0:r.stats)===null||i===void 0?void 0:i.lineCount)||0}async _parse(e){const n=await this.filehandle.readFile(e);if(n.readUInt32LE(0)!==T7)throw new Error("Not a BAI file");const r=n.readInt32LE(4),o=((1<<(5+1)*3)-1)/7;let a=8,s;const l=new Array(r);for(let f=0;fo+1)throw new Error("bai index contains too many bins, please use CSI");{const w=n.readInt32LE(a);a+=4;const S=new Array(w);for(let C=0;C(f.length-1)*16384)throw new Error("query outside of range of linear index");let b=f[h/16384].blockPosition;for(let y=h/16384,w=0;y({...y,score:y.score*((u==null?void 0:u.lineCount)||0)/p}))}async blocksForRange(e,n,r,i={}){n<0&&(n=0);const o=await this.parse(i);if(!o)return[];const a=o.indices[e];if(!a)return[];const s=D7(n,r),l=[];for(const[d,p]of s)for(let b=d;b<=p;b++)if(a.binIndex[b]){const y=a.binIndex[b];for(const w of y)l.push(w)}const f=a.linearIndex.length;let u;const c=Math.min(n>>14,f-1),h=Math.min(r>>14,f-1);for(let d=c;d<=h;++d){const p=a.linearIndex[d];p&&(!u||p.compareTo(u)<0)&&(u=p)}return LE(l,u)}async parse(e={}){return this.setupP||(this.setupP=this._parse(e).catch(n=>{throw this.setupP=void 0,n})),this.setupP}async hasRefSeq(e,n={}){var r;return!!(!((r=(await this.parse(n)).indices[e])===null||r===void 0)&&r.binIndex)}}var fi=be.Buffer,Xp=[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"&&(Xp=new Int32Array(Xp));function GE(t){if(fi.isBuffer(t))return t;var e=typeof fi.alloc=="function"&&typeof fi.from=="function";if(typeof t=="number")return e?fi.alloc(t):new fi(t);if(typeof t=="string")return e?fi.from(t):new fi(t);throw new Error("input must be buffer, number, or string, received "+typeof t)}function B7(t){var e=GE(4);return e.writeInt32BE(t,0),e}function Kp(t,e){t=GE(t),fi.isBuffer(e)&&(e=e.readUInt32BE(0));for(var n=~~e^-1,r=0;r>>8;return n^-1}function Jp(){return B7(Kp.apply(null,arguments))}Jp.signed=function(){return Kp.apply(null,arguments)},Jp.unsigned=function(){return Kp.apply(null,arguments)>>>0};var F7=Jp;const R7=$s(F7),P7=21582659,M7=38359875;function O7(t,e){return t*2**e}function HE(t,e){return Math.floor(t/2**e)}let vc=class extends UE{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,n){var r,i;return((i=(r=(await this.parse(n)).indices[e])===null||r===void 0?void 0:r.stats)===null||i===void 0?void 0:i.lineCount)||0}async indexCov(){return[]}parseAuxData(e,n){const r=e.readInt32LE(n),i=r&65536?"zero-based-half-open":"1-based-closed",o={0:"generic",1:"SAM",2:"VCF"}[r&15];if(!o)throw new Error(`invalid Tabix preset format flags ${r}`);const a={ref:e.readInt32LE(n+4),start:e.readInt32LE(n+8),end:e.readInt32LE(n+12)},s=e.readInt32LE(n+16),l=s?String.fromCharCode(s):"",f=e.readInt32LE(n+20),u=e.readInt32LE(n+24);return{columnNumbers:a,coordinateType:i,metaValue:s,metaChar:l,skipLines:f,format:o,formatFlags:r,...C7(e.subarray(n+28,n+28+u),this.renameRefSeq)}}async _parse(e){const n=await this.filehandle.readFile(e),r=await ei(n);let i;if(r.readUInt32LE(0)===P7)i=1;else if(r.readUInt32LE(0)===M7)i=2;else throw new Error("Not a CSI file");this.minShift=r.readInt32LE(4),this.depth=r.readInt32LE(8),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const o=r.readInt32LE(12),a=o>=30?this.parseAuxData(r,16):void 0,s=r.readInt32LE(16+o);let l=16+o+4,f;const u=new Array(s);for(let c=0;cthis.maxBinNumber)p=zE(r,l+28),l+=28+16;else{f=xc(f,xa(r,l)),l+=8;const w=r.readInt32LE(l);l+=4;const S=new Array(w);for(let C=0;C2**50&&(n=2**34),n-=1;let r=0,i=0,o=this.minShift+this.depth*3;const a=[];for(;r<=this.depth;o-=3,i+=O7(1,r*3),r+=1){const s=i+HE(e,o),l=i+HE(n,o);if(l-s+a.length>this.maxBinNumber)throw new Error(`query ${e}-${n} 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([s,l])}return a}async parse(e={}){return this.setupP||(this.setupP=this._parse(e).catch(n=>{throw this.setupP=void 0,n})),this.setupP}async hasRefSeq(e,n={}){var r;return!!(!((r=(await this.parse(n)).indices[e])===null||r===void 0)&&r.binIndex)}};const pn={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},VE="=ACMGRSVTWYHKDBN".split(""),Pf="MIDNSHP=X???????".split("");class jE{constructor(e){this.data={},this._tagList=[],this._allTagsParsed=!1;const{bytes:n,fileOffset:r}=e,{byteArray:i,start:o}=n;this.data={},this.bytes=n,this._id=r,this._refID=i.readInt32LE(o+4),this.data.start=i.readInt32LE(o+8),this.flags=(i.readInt32LE(o+16)&4294901760)>>16}get(e){return this[e]?this.data[e]?this.data[e]:(this.data[e]=this[e](),this.data[e]):this._get(e.toLowerCase())}end(){return this.get("start")+this.get("length_on_ref")}seq_id(){return this._refID}_get(e){return e in this.data?this.data[e]:(this.data[e]=this._parseTag(e),this.data[e])}_tags(){this._parseAllTags();let e=["seq"];this.isSegmentUnmapped()||e.push("start","end","strand","score","qual","MQ","CIGAR","length_on_ref","template_length"),this.isPaired()&&e.push("next_segment_position","pair_orientation"),e=e.concat(this._tagList||[]);for(const r of Object.keys(this.data))r[0]!=="_"&&r!=="next_seq_id"&&e.push(r);const n={};return e.filter(r=>{if(r in this.data&&this.data[r]===void 0||r==="CG"||r==="cg")return!1;const i=r.toLowerCase(),o=n[i];return n[i]=!0,!o})}parent(){}children(){return this.get("subfeatures")}id(){return this._id}mq(){const e=(this.get("_bin_mq_nl")&65280)>>8;return e===255?void 0:e}score(){return this.get("mq")}qual(){var e;return(e=this.qualRaw())===null||e===void 0?void 0:e.join(" ")}qualRaw(){if(this.isSegmentUnmapped())return;const{start:e,byteArray:n}=this.bytes,r=e+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4+this.get("_seq_bytes"),i=this.get("seq_length");return n.subarray(r,r+i)}strand(){return this.isReverseComplemented()?-1:1}multi_segment_next_segment_strand(){if(!this.isMateUnmapped())return this.isMateReverseComplemented()?-1:1}name(){return this.get("_read_name")}_read_name(){const e=this.get("_l_read_name"),{byteArray:n,start:r}=this.bytes;return n.toString("ascii",r+36,r+36+e-1)}_parseTag(e){if(this._allTagsParsed)return;const{byteArray:n,start:r}=this.bytes;let i=this._tagOffset||r+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4+this.get("_seq_bytes")+this.get("seq_length");const o=this.bytes.end;let a;for(;i>4,y=Pf[p&15];f+=b+y,i+=4}else for(let d=0;d>4,y=Pf[p&15];f+=b+y,i+=4}else for(let d=0;d[n.match(/\D/)[0].toUpperCase(),Number.parseInt(n,10)])}isPaired(){return!!(this.flags&pn.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&pn.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&pn.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&pn.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&pn.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&pn.BAM_FMREVERSE)}isRead1(){return!!(this.flags&pn.BAM_FREAD1)}isRead2(){return!!(this.flags&pn.BAM_FREAD2)}isSecondary(){return!!(this.flags&pn.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&pn.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&pn.BAM_FDUP)}isSupplementary(){return!!(this.flags&pn.BAM_FSUPPLEMENTARY)}cigar(){if(this.isSegmentUnmapped())return;const{byteArray:e,start:n}=this.bytes,r=this.get("_n_cigar_op");let i=n+36+this.get("_l_read_name");const o=this.get("seq_length");let a="",s=0,l=e.readInt32LE(i),f=l>>4,u=Pf[l&15];if(u==="S"&&f===o)return i+=4,l=e.readInt32LE(i),f=l>>4,u=Pf[l&15],u!=="N"&&console.warn("CG tag with no N tag"),this.data.length_on_ref=f,this.get("CG");for(let c=0;c>4,u=Pf[l&15],a+=f+u,u!=="H"&&u!=="S"&&u!=="I"&&(s+=f),i+=4;return this.data.length_on_ref=s,a}_flags(){}length_on_ref(){return this.data.length_on_ref?this.data.length_on_ref:(this.get("cigar"),this.data.length_on_ref)}_n_cigar_op(){return this.get("_flag_nc")&65535}_l_read_name(){return this.get("_bin_mq_nl")&255}_seq_bytes(){return this.get("seq_length")+1>>1}getReadBases(){return this.seq()}seq(){const{byteArray:e,start:n}=this.bytes,r=n+36+this.get("_l_read_name")+this.get("_n_cigar_op")*4,i=this.get("_seq_bytes"),o=this.get("seq_length");let a="",s=0;for(let l=0;l>4],s++,s0?(o[0]=e,o[1]=r,o[2]=n,o[3]=i):(o[2]=e,o[3]=r,o[0]=n,o[1]=i),o.join("")}return""}_bin_mq_nl(){return this.bytes.byteArray.readInt32LE(this.bytes.start+12)}_flag_nc(){return this.bytes.byteArray.readInt32LE(this.bytes.start+16)}seq_length(){return this.bytes.byteArray.readInt32LE(this.bytes.start+20)}_next_refid(){return this.bytes.byteArray.readInt32LE(this.bytes.start+24)}_next_pos(){return this.bytes.byteArray.readInt32LE(this.bytes.start+28)}template_length(){return this.bytes.byteArray.readInt32LE(this.bytes.start+32)}toJSON(){const e={};for(const n of Object.keys(this))n.charAt(0)==="_"||n==="bytes"||(e[n]=this[n]);return e}}function qE(t){const e=t.split(/\r?\n/),n=[];for(const r of e){const[i,...o]=r.split(/\t/);i&&n.push({tag:i.slice(1),data:o.map(a=>{const[s,l]=a.split(":",2);return{tag:s,value:l}})})}return n}const WE=21840194,$E=65536;async function N7(t){let e=[];for await(const n of t)e=e.concat(n);return e}class L7{read(){throw new Error("never called")}stat(){throw new Error("never called")}readFile(){throw new Error("never called")}close(){throw new Error("never called")}}class ZE{constructor({bamFilehandle:e,bamPath:n,bamUrl:r,baiPath:i,baiFilehandle:o,baiUrl:a,csiPath:s,csiFilehandle:l,csiUrl:f,htsget:u,yieldThreadTime:c=100,renameRefSeqs:h=d=>d}){if(this.htsget=!1,this.featureCache=new tc({cache:new nc({maxSize:50}),fill:async(d,p)=>{const{chunk:b,opts:y}=d,{data:w,cpositions:S,dpositions:C}=await this._readChunk({chunk:b,opts:{...y,signal:p}});return this.readBamFeatures(w,S,C,b)}}),this.renameRefSeq=h,e)this.bam=e;else if(n)this.bam=new ct(n);else if(r)this.bam=new $i(r);else if(u)this.htsget=!0,this.bam=new L7;else throw new Error("unable to initialize bam");if(l)this.index=new vc({filehandle:l});else if(s)this.index=new vc({filehandle:new ct(s)});else if(f)this.index=new vc({filehandle:new $i(f)});else if(o)this.index=new va({filehandle:o});else if(i)this.index=new va({filehandle:new ct(i)});else if(a)this.index=new va({filehandle:new $i(a)});else if(n)this.index=new va({filehandle:new ct(`${n}.bai`)});else if(r)this.index=new va({filehandle:new $i(`${r}.bai`)});else if(u)this.htsget=!0;else throw new Error("unable to infer index format");this.yieldThreadTime=c}async getHeaderPre(e){const n=S7(e);if(!this.index)return;const r=await this.index.parse(n),i=r.firstDataLine?r.firstDataLine.blockPosition+65535:void 0;let o;if(i){const u=i+$E,c=await this.bam.read(be.Buffer.alloc(u),0,u,0,n);if(!c.bytesRead)throw new Error("Error reading header");o=c.buffer.subarray(0,Math.min(c.bytesRead,i))}else o=await this.bam.readFile(n);const a=await ei(o);if(a.readInt32LE(0)!==WE)throw new Error("Not a BAM file");const s=a.readInt32LE(4);this.header=a.toString("utf8",8,8+s);const{chrToIndex:l,indexToChr:f}=await this._readRefSeqs(s+8,65535,n);return this.chrToIndex=l,this.indexToChr=f,qE(this.header)}getHeader(e){return this.headerP||(this.headerP=this.getHeaderPre(e).catch(n=>{throw this.headerP=void 0,n})),this.headerP}async getHeaderText(e={}){return await this.getHeader(e),this.header}async _readRefSeqs(e,n,r){if(e>n)return this._readRefSeqs(e,n*2,r);const i=n+$E,{bytesRead:o,buffer:a}=await this.bam.read(be.Buffer.alloc(i),0,n,0,r);if(!o)throw new Error("Error reading refseqs from header");const s=await ei(a.subarray(0,Math.min(o,n))),l=s.readInt32LE(e);let f=e+4;const u={},c=[];for(let h=0;hs.length)return console.warn(`BAM header is very big. Re-fetching ${n} bytes.`),this._readRefSeqs(e,n*2,r)}return{chrToIndex:u,indexToChr:c}}async getRecordsForRange(e,n,r,i){return N7(this.streamRecordsForRange(e,n,r,i))}async*streamRecordsForRange(e,n,r,i){var o;await this.getHeader(i);const a=(o=this.chrToIndex)===null||o===void 0?void 0:o[e];if(a===void 0||!this.index)yield[];else{const s=await this.index.blocksForRange(a,n-1,r,i);yield*this._fetchChunkFeatures(s,a,n,r,i)}}async*_fetchChunkFeatures(e,n,r,i,o={}){const{viewAsPairs:a}=o,s=[];let l=!1;for(const f of e){const u=await this.featureCache.get(f.toString(),{chunk:f,opts:o},o.signal),c=[];for(const h of u)if(h.seq_id()===n)if(h.get("start")>=i){l=!0;break}else h.get("end")>=r&&c.push(h);if(s.push(c),yield c,l)break}E7(o.signal),a&&(yield this.fetchPairs(n,s,o))}async fetchPairs(e,n,r){const{pairAcrossChr:i,maxInsertSize:o=2e5}=r,a={},s={};n.map(h=>{const d={};for(const p of h){const b=p.name(),y=p.id();d[b]||(d[b]=0),d[b]++,s[y]=1}for(const[p,b]of Object.entries(d))b===1&&(a[p]=!0)});const l=[];n.map(h=>{for(const d of h){const p=d.name(),b=d.get("start"),y=d._next_pos(),w=d._next_refid();this.index&&a[p]&&(i||w===e&&Math.abs(b-y){const{data:d,cpositions:p,dpositions:b,chunk:y}=await this._readChunk({chunk:h,opts:r}),w=[];for(const S of await this.readBamFeatures(d,p,b,y))a[S.get("name")]&&!s[S.id()]&&w.push(S);return w}))).flat()}async _readRegion(e,n,r={}){const{bytesRead:i,buffer:o}=await this.bam.read(be.Buffer.alloc(n),0,n,e,r);return o.subarray(0,Math.min(i,n))}async _readChunk({chunk:e,opts:n}){const r=await this._readRegion(e.minv.blockPosition,e.fetchedSize(),n),{buffer:i,cpositions:o,dpositions:a}=await gA(r,e);return{data:i,cpositions:o,dpositions:a,chunk:e}}async readBamFeatures(e,n,r,i){let o=0;const a=[];let s=0,l=+Date.now();for(;o+4=r[s++];);s--}if(u0?n[s]*256+(o-r[s])+i.minv.dataPosition+1:R7.signed(e.slice(o,u))});a.push(c),this.yieldThreadTime&&+Date.now()-l>this.yieldThreadTime&&(await v7(1),l=+Date.now())}o=u+1}return a}async hasRefSeq(e){var n,r;const i=(n=this.chrToIndex)===null||n===void 0?void 0:n[e];return i===void 0?!1:(r=this.index)===null||r===void 0?void 0:r.hasRefSeq(i)}async lineCount(e){var n;const r=(n=this.chrToIndex)===null||n===void 0?void 0:n[e];return r===void 0||!this.index?0:this.index.lineCount(r)}async indexCov(e,n,r){var i;if(!this.index)return[];await this.index.parse();const o=(i=this.chrToIndex)===null||i===void 0?void 0:i[e];return o===void 0?[]:this.index.indexCov(o,n,r)}async blocksForRange(e,n,r,i){var o;if(!this.index)return[];await this.index.parse();const a=(o=this.chrToIndex)===null||o===void 0?void 0:o[e];return a===void 0?[]:this.index.blocksForRange(a,n,r,i)}}async function YE(t,e){const n=await Promise.all(t.map(async r=>{const{url:i,headers:o}=r;if(i.startsWith("data:"))return be.Buffer.from(i.split(",")[1],"base64");{const{referer:a,...s}=o,l=await fetch(i,{...e,headers:{...e==null?void 0:e.headers,...s}});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${i}: ${await l.text()}`);return be.Buffer.from(await l.arrayBuffer())}}));return be.Buffer.concat(await Promise.all(n.map(r=>ei(r))))}class z7 extends ZE{constructor(e){super({htsget:!0}),this.baseUrl=e.baseUrl,this.trackId=e.trackId}async*streamRecordsForRange(e,n,r,i){var o;const s=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${e}&start=${n}&end=${r}&format=BAM`,l=(o=this.chrToIndex)===null||o===void 0?void 0:o[e];if(l===void 0)yield[];else{const f=await fetch(s,{...i});if(!f.ok)throw new Error(`HTTP ${f.status} fetching ${s}: ${await f.text()}`);const u=await f.json(),c=await YE(u.htsget.urls.slice(1),i);yield*this._fetchChunkFeatures([{buffer:c,_fetchedSize:void 0,bin:0,compareTo(){return 0},toUniqueString(){return`${e}_${n}_${r}`},fetchedSize(){return 0},minv:{dataPosition:0,blockPosition:0,compareTo:()=>0},maxv:{dataPosition:Number.MAX_SAFE_INTEGER,blockPosition:0,compareTo:()=>0},toString(){return`${e}_${n}_${r}`}}],l,n,r,i)}}async _readChunk({chunk:e}){if(!e.buffer)throw new Error("expected chunk.buffer in htsget");return{data:e.buffer,cpositions:[],dpositions:[],chunk:e}}async getHeader(e={}){const n=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,r=await fetch(n,e);if(!r.ok)throw new Error(`HTTP ${r.status} fetching ${n}: ${await r.text()}`);const i=await r.json(),o=await YE(i.htsget.urls,e);if(o.readInt32LE(0)!==WE)throw new Error("Not a BAM file");const a=o.readInt32LE(4),s=o.toString("utf8",8,8+a),l=qE(s),f=[],u={},c=l.filter(h=>h.tag==="SQ");for(const[h,d]of c.entries()){let p="",b=0;for(const y of d.data)y.tag==="SN"?p=y.value:y.tag==="LN"&&(b=+y.value);u[p]=h,f[h]={refName:p,length:b}}return this.chrToIndex=u,this.indexToChr=f,l}}const U7=Object.freeze(Object.defineProperty({__proto__:null,BAI:va,BamFile:ZE,BamRecord:jE,CSI:vc,HtsgetFile:z7},Symbol.toStringTag,{value:"Module"}));function QE(t){if(t.greaterThan(Number.MAX_SAFE_INTEGER)||t.lessThan(Number.MIN_SAFE_INTEGER))throw new Error("integer overflow");return t.toNumber()}class G7 extends Error{}function po(t){if(t&&t.aborted){if(typeof DOMException<"u")throw new DOMException("aborted","AbortError");{const e=new G7("aborted");throw e.code="ERR_ABORTED",e}}}function H7(t,e){return e.minv.blockPosition-t.maxv.blockPosition<65e3&&e.maxv.blockPosition-t.minv.blockPosition<5e6}function XE(t,e){const n=[];let r=null;return t.length===0?t:(t.sort(function(i,o){const a=i.minv.blockPosition-o.minv.blockPosition;return a!==0?a:i.minv.dataPosition-o.minv.dataPosition}),t.forEach(i=>{(!e||i.maxv.compareTo(e)>0)&&(r===null?(n.push(i),r=i):H7(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i))}),n)}class eg{constructor(e,n){this.blockPosition=e,this.dataPosition=n}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}static min(...e){let n,r=0;for(;!n;r+=1)n=e[r];for(;r0&&(n=e[r]);return n}}function Aa(t,e=0,n=!1){if(n)throw new Error("big-endian virtual file offsets not implemented");return new eg(t[e+7]*1099511627776+t[e+6]*4294967296+t[e+5]*16777216+t[e+4]*65536+t[e+3]*256+t[e+2],t[e+1]<<8|t[e])}class Ac{constructor(e,n,r,i=void 0){this.minv=e,this.maxv=n,this.bin=r,this._fetchedSize=i}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._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}}class KE{constructor({filehandle:e,renameRefSeqs:n=r=>r}){this.filehandle=e,this.renameRefSeq=n}async getMetadata(e={}){const{indices:n,...r}=await this.parse(e);return r}_findFirstData(e,n){return e?e.compareTo(n)>0?n:e:n}async parse(e={}){return this.parseP||(this.parseP=this._parse(e).catch(n=>{throw this.parseP=void 0,n})),this.parseP}async hasRefSeq(e,n={}){return!!((await this.parse(n)).indices[e]||{}).binIndex}}const V7=21578324,JE=14;function j7(t,e){return t+=1,e-=1,[[0,0],[1+(t>>26),1+(e>>26)],[9+(t>>23),9+(e>>23)],[73+(t>>20),73+(e>>20)],[585+(t>>17),585+(e>>17)],[4681+(t>>14),4681+(e>>14)]]}class Ec extends KE{async lineCount(e,n={}){const r=await this.parse(n);if(!r)return-1;const i=r.refNameToId[e];if(!r.indices[i])return-1;const{stats:a}=r.indices[i];return a?a.lineCount:-1}async _parse(e={}){const n=await this.filehandle.readFile(e),r=await ei(n);if(po(e.signal),r.readUInt32LE(0)!==V7)throw new Error("Not a TBI file");const i=r.readInt32LE(4),o=r.readInt32LE(8),a=o&65536?"zero-based-half-open":"1-based-closed",l={0:"generic",1:"SAM",2:"VCF"}[o&15];if(!l)throw new Error(`invalid Tabix preset format flags ${o}`);const f={ref:r.readInt32LE(12),start:r.readInt32LE(16),end:r.readInt32LE(20)},u=r.readInt32LE(24),c=5,h=((1<<(c+1)*3)-1)/7,d=2**(14+c*3),p=u?String.fromCharCode(u):null,b=r.readInt32LE(28),y=r.readInt32LE(32),{refNameToId:w,refIdToName:S}=this._parseNameBytes(r.slice(36,36+y));let C=36+y,_;return{indices:new Array(i).fill(0).map(()=>{const D=r.readInt32LE(C);C+=4;const I={};let R;for(let L=0;Lh+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(ne===h+1){const ae=r.readInt32LE(C);C+=4,ae===2&&(R=this.parsePseudoBin(r,C)),C+=16*ae}else{const ae=r.readInt32LE(C);C+=4;const de=new Array(ae);for(let ke=0;ke>JE>=s.linearIndex.length?s.linearIndex.length-1:n>>JE]:new eg(0,0))||console.warn("querying outside of possible tabix range");const f=j7(n,r),u=[];for(const[b,y]of f)for(let w=b;w<=y;w++)if(s.binIndex[w]){const S=s.binIndex[w];for(let C=0;C>14,c-1),p=Math.min(r>>14,c-1);for(let b=d;b<=p;++b){const y=s.linearIndex[b];y&&(!h||y.compareTo(h)<0)&&(h=y)}return XE(u,h)}}const q7=21582659,W7=38359875;function $7(t,e){return t*2**e}function e_(t,e){return Math.floor(t/2**e)}class tg extends KE{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,n={}){const r=await this.parse(n);if(!r)return-1;const i=r.refNameToId[e];if(!r.indices[i])return-1;const{stats:a}=r.indices[i];return a?a.lineCount:-1}async indexCov(){throw new Error("CSI indexes do not support indexcov")}parseAuxData(e,n){const r=e.readInt32LE(n),i=r&65536?"zero-based-half-open":"1-based-closed",o={0:"generic",1:"SAM",2:"VCF"}[r&15];if(!o)throw new Error(`invalid Tabix preset format flags ${r}`);const a={ref:e.readInt32LE(n+4),start:e.readInt32LE(n+8),end:e.readInt32LE(n+12)},s=e.readInt32LE(n+16),l=s?String.fromCharCode(s):null,f=e.readInt32LE(n+20),u=e.readInt32LE(n+24),{refIdToName:c,refNameToId:h}=this._parseNameBytes(e.slice(n+28,n+28+u));return{refIdToName:c,refNameToId:h,skipLines:f,metaChar:l,columnNumbers:a,format:o,coordinateType:i}}_parseNameBytes(e){let n=0,r=0;const i=[],o={};for(let a=0;a=30?this.parseAuxData(n,16):{refIdToName:[],refNameToId:{},metaChar:null,columnNumbers:{ref:0,start:1,end:2},coordinateType:"zero-based-half-open",format:"generic"},s=n.readInt32LE(16+o);let l,f=16+o+4;const u=new Array(s).fill(0).map(()=>{const c=n.readInt32LE(f);f+=4;const h={};let d;for(let p=0;pthis.maxBinNumber)d=this.parsePseudoBin(n,f+4),f+=4+8+4+16+16;else{const y=Aa(n,f+4);l=this._findFirstData(l,y);const w=n.readInt32LE(f+12);f+=16;const S=new Array(w);for(let C=0;C2**50&&(n=2**34),n-=1;let r=0,i=0,o=this.minShift+this.depth*3;const a=[];for(;r<=this.depth;o-=3,i+=$7(1,r*3),r+=1){const s=i+e_(e,o),l=i+e_(n,o);if(l-s+a.length>this.maxBinNumber)throw new Error(`query ${e}-${n} 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([s,l])}return a}}const ng=typeof TextDecoder<"u"?new TextDecoder("utf-8"):void 0;function Z7(t){return new Promise(e=>setTimeout(e,t))}class Y7{constructor({path:e,filehandle:n,tbiPath:r,tbiFilehandle:i,csiPath:o,csiFilehandle:a,yieldTime:s=500,chunkSizeLimit:l=5e7,renameRefSeqs:f=c=>c,chunkCacheSize:u=5*2**20}){if(n)this.filehandle=n;else if(e)this.filehandle=new ct(e);else throw new TypeError("must provide either filehandle or path");if(i)this.index=new Ec({filehandle:i,renameRefSeqs:f});else if(a)this.index=new tg({filehandle:a,renameRefSeqs:f});else if(r)this.index=new Ec({filehandle:new ct(r),renameRefSeqs:f});else if(o)this.index=new tg({filehandle:new ct(o),renameRefSeqs:f});else if(e)this.index=new Ec({filehandle:new ct(`${e}.tbi`),renameRefSeqs:f});else throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, or csiPath");this.chunkSizeLimit=l,this.renameRefSeq=f,this.yieldTime=s,this.chunkCache=new tc({cache:new nc({maxSize:Math.floor(u/65536)}),fill:(c,h)=>this.readChunk(c,{signal:h})})}async getLines(e,n,r,i){let o,a={},s;if(typeof i>"u")throw new TypeError("line callback must be provided");if(typeof i=="function"?s=i:(a=i,s=i.lineCallback),e===void 0)throw new TypeError("must provide a reference sequence name");if(!s)throw new TypeError("line callback must be provided");const l=await this.index.getMetadata(a);if(po(o),n||(n=0),r||(r=l.maxRefLength),!(n<=r))throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(n===r)return;const f=await this.index.blocksForRange(e,n,r,a);po(o);for(let c=0;cthis.chunkSizeLimit)throw new Error(`Too much data. Chunk size ${h.toLocaleString()} bytes exceeds chunkSizeLimit of ${this.chunkSizeLimit.toLocaleString()}.`)}let u=Date.now();for(let c=0;c=y[S++];);S--}const{startCoordinate:D,overlaps:I}=this.checkLine(l,e,n,r,k);if(h!==void 0&&D!==void 0&&h>D)throw new Error(`Lines not sorted by start coordinate (${h} > ${D}), this file is not usable with Tabix.`);if(h=D,I)s(k.trim(),b[S]*256+(w-y[S])+d.minv.dataPosition+1);else if(D!==void 0&&D>=r)return;this.yieldTime&&u-Date.now()>this.yieldTime&&(u=Date.now(),po(o),await Z7(1)),w=C+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){const{firstDataLine:n,metaChar:r,maxBlockSize:i}=await this.getMetadata(e);po(e.signal);const o=((n==null?void 0:n.blockPosition)||0)+i;let a=await this._readRegion(0,o,e);po(e.signal);try{a=await ei(a)}catch(s){throw console.error(s),new Error(`error decompressing block ${s.code} at 0 (length ${o}) ${s}`)}if(r){let s=-1;const l=` +`.charCodeAt(0),f=r.charCodeAt(0);for(let u=0;u=i)return{startCoordinate:w,overlaps:!1};if((h===0||h===c)&&w+1<=r)return{startCoordinate:w,overlaps:!1}}else if(f==="VCF"&&p===4)y=o.slice(b,S);else if(p===h){let C;if(f==="VCF"?C=this._getVcfEnd(w,y,o.slice(b,S)):C=parseInt(o.slice(b,S),10),C<=r)return{overlaps:!1}}if(b=S+1,p+=1,p>d)break}return{startCoordinate:w,overlaps:!0}}_getVcfEnd(e,n,r){let i=e+n.length;const o=r.indexOf("SVTYPE=TRA")!==-1;if(r[0]!=="."&&!o){let a=";";for(let s=0;s0&&(a=n[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var l=o[e];if(l===void 0)return!1;if(typeof l=="function")t_(l,this,n);else for(var f=l.length,u=l_(l,f),r=0;r0&&a.length>i&&!a.warned){a.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=t,s.type=e,s.count=a.length,X7(s)}return t}De.prototype.addListener=function(e,n){return o_(this,e,n,!1)},De.prototype.on=De.prototype.addListener,De.prototype.prependListener=function(e,n){return o_(this,e,n,!0)};function K7(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function a_(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=K7.bind(r);return i.listener=n,r.wrapFn=i,i}De.prototype.once=function(e,n){return Sc(n),this.on(e,a_(this,e,n)),this},De.prototype.prependOnceListener=function(e,n){return Sc(n),this.prependListener(e,a_(this,e,n)),this},De.prototype.removeListener=function(e,n){var r,i,o,a,s;if(Sc(n),i=this._events,i===void 0)return this;if(r=i[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(o=-1,a=r.length-1;a>=0;a--)if(r[a]===n||r[a].listener===n){s=r[a].listener,o=a;break}if(o<0)return this;o===0?r.shift():J7(r,o),r.length===1&&(i[e]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",e,s||n)}return this},De.prototype.off=De.prototype.removeListener,De.prototype.removeAllListeners=function(e){var n,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var o=Object.keys(r),a;for(i=0;i=0;i--)this.removeListener(e,n[i]);return this};function s_(t,e,n){var r=t._events;if(r===void 0)return[];var i=r[e];return i===void 0?[]:typeof i=="function"?n?[i.listener||i]:[i]:n?ez(i):l_(i,i.length)}De.prototype.listeners=function(e){return s_(this,e,!0)},De.prototype.rawListeners=function(e){return s_(this,e,!1)},De.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):f_.call(t,e)},De.prototype.listenerCount=f_;function f_(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}De.prototype.eventNames=function(){return this._eventsCount>0?_c(this._events):[]};function l_(t,e){for(var n=new Array(e),r=0;r0?this.tail.next=w:this.head=w,this.tail=w,++this.length}},{key:"unshift",value:function(y){var w={data:y,next:this.head};this.length===0&&(this.tail=w),this.head=w,++this.length}},{key:"shift",value:function(){if(this.length!==0){var y=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,y}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(y){if(this.length===0)return"";for(var w=this.head,S=""+w.data;w=w.next;)S+=y+w.data;return S}},{key:"concat",value:function(y){if(this.length===0)return f.alloc(0);for(var w=f.allocUnsafe(y>>>0),S=this.head,C=0;S;)d(S.data,w,C),C+=S.data.length,S=S.next;return w}},{key:"consume",value:function(y,w){var S;return y_.length?_.length:y;if(k===_.length?C+=_:C+=_.slice(0,y),y-=k,y===0){k===_.length?(++S,w.next?this.head=w.next:this.head=this.tail=null):(this.head=w,w.data=_.slice(k));break}++S}return this.length-=S,C}},{key:"_getBuffer",value:function(y){var w=f.allocUnsafe(y),S=this.head,C=1;for(S.data.copy(w),y-=S.data.length;S=S.next;){var _=S.data,k=y>_.length?_.length:y;if(_.copy(w,w.length-y,0,k),y-=k,y===0){k===_.length?(++C,S.next?this.head=S.next:this.head=this.tail=null):(this.head=S,S.data=_.slice(k));break}++C}return this.length-=C,w}},{key:h,value:function(y,w){return c(this,e(e({},w),{},{depth:0,customInspect:!1}))}}]),p}(),sg}var fg,g_;function m_(){if(g_)return fg;g_=1;function t(a,s){var l=this,f=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return f||u?(s?s(a):a&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(i,this,a)):process.nextTick(i,this,a)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(a||null,function(c){!s&&c?l._writableState?l._writableState.errorEmitted?process.nextTick(n,l):(l._writableState.errorEmitted=!0,process.nextTick(e,l,c)):process.nextTick(e,l,c):s?(process.nextTick(n,l),s(c)):process.nextTick(n,l)}),this)}function e(a,s){i(a,s),n(a)}function n(a){a._writableState&&!a._writableState.emitClose||a._readableState&&!a._readableState.emitClose||a.emit("close")}function r(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function i(a,s){a.emit("error",s)}function o(a,s){var l=a._readableState,f=a._writableState;l&&l.autoDestroy||f&&f.autoDestroy?a.destroy(s):a.emit("error",s)}return fg={destroy:t,undestroy:r,errorOrDestroy:o},fg}var lg={},b_;function Sa(){if(b_)return lg;b_=1;function t(s,l){s.prototype=Object.create(l.prototype),s.prototype.constructor=s,s.__proto__=l}var e={};function n(s,l,f){f||(f=Error);function u(h,d,p){return typeof l=="string"?l:l(h,d,p)}var c=function(h){t(d,h);function d(p,b,y){return h.call(this,u(p,b,y))||this}return d}(f);c.prototype.name=f.name,c.prototype.code=s,e[s]=c}function r(s,l){if(Array.isArray(s)){var f=s.length;return s=s.map(function(u){return String(u)}),f>2?"one of ".concat(l," ").concat(s.slice(0,f-1).join(", "),", or ")+s[f-1]:f===2?"one of ".concat(l," ").concat(s[0]," or ").concat(s[1]):"of ".concat(l," ").concat(s[0])}else return"of ".concat(l," ").concat(String(s))}function i(s,l,f){return s.substr(!f||f<0?0:+f,l.length)===l}function o(s,l,f){return(f===void 0||f>s.length)&&(f=s.length),s.substring(f-l.length,f)===l}function a(s,l,f){return typeof f!="number"&&(f=0),f+l.length>s.length?!1:s.indexOf(l,f)!==-1}return n("ERR_INVALID_OPT_VALUE",function(s,l){return'The value "'+l+'" is invalid for option "'+s+'"'},TypeError),n("ERR_INVALID_ARG_TYPE",function(s,l,f){var u;typeof l=="string"&&i(l,"not ")?(u="must not be",l=l.replace(/^not /,"")):u="must be";var c;if(o(s," argument"))c="The ".concat(s," ").concat(u," ").concat(r(l,"type"));else{var h=a(s,".")?"property":"argument";c='The "'.concat(s,'" ').concat(h," ").concat(u," ").concat(r(l,"type"))}return c+=". Received type ".concat(typeof f),c},TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",function(s){return"The "+s+" method is not implemented"}),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",function(s){return"Cannot call "+s+" after a stream was destroyed"}),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",function(s){return"Unknown encoding: "+s},TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),lg.codes=e,lg}var ug,y_;function w_(){if(y_)return ug;y_=1;var t=Sa().codes.ERR_INVALID_OPT_VALUE;function e(r,i,o){return r.highWaterMark!=null?r.highWaterMark:i?r[o]:null}function n(r,i,o,a){var s=e(i,a,o);if(s!=null){if(!(isFinite(s)&&Math.floor(s)===s)||s<0){var l=a?o:"highWaterMark";throw new t(l,s)}return Math.floor(s)}return r.objectMode?16:16*1024}return ug={getHighWaterMark:n},ug}var cg,x_;function iz(){if(x_)return cg;x_=1,cg=t;function t(n,r){if(e("noDeprecation"))return n;var i=!1;function o(){if(!i){if(e("throwDeprecation"))throw new Error(r);e("traceDeprecation")?console.trace(r):console.warn(r),i=!0}return n.apply(this,arguments)}return o}function e(n){try{if(!nn.localStorage)return!1}catch{return!1}var r=nn.localStorage[n];return r==null?!1:String(r).toLowerCase()==="true"}return cg}var hg,v_;function A_(){if(v_)return hg;v_=1,hg=R;function t(O){var P=this;this.next=null,this.entry=null,this.finish=function(){Ne(P,O)}}var e;R.WritableState=D;var n={deprecate:iz()},r=h_(),i=be.Buffer,o=(typeof nn<"u"?nn:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function a(O){return i.from(O)}function s(O){return i.isBuffer(O)||O instanceof o}var l=m_(),f=w_(),u=f.getHighWaterMark,c=Sa().codes,h=c.ERR_INVALID_ARG_TYPE,d=c.ERR_METHOD_NOT_IMPLEMENTED,p=c.ERR_MULTIPLE_CALLBACK,b=c.ERR_STREAM_CANNOT_PIPE,y=c.ERR_STREAM_DESTROYED,w=c.ERR_STREAM_NULL_VALUES,S=c.ERR_STREAM_WRITE_AFTER_END,C=c.ERR_UNKNOWN_ENCODING,_=l.errorOrDestroy;_a(R,r);function k(){}function D(O,P,q){e=e||Ca(),O=O||{},typeof q!="boolean"&&(q=P instanceof e),this.objectMode=!!O.objectMode,q&&(this.objectMode=this.objectMode||!!O.writableObjectMode),this.highWaterMark=u(this,O,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var H=O.decodeStrings===!1;this.decodeStrings=!H,this.defaultEncoding=O.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function($){Qe(P,$)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=O.emitClose!==!1,this.autoDestroy=!!O.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new t(this)}D.prototype.getBuffer=function(){for(var P=this.bufferedRequest,q=[];P;)q.push(P),P=P.next;return q},function(){try{Object.defineProperty(D.prototype,"buffer",{get:n.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var I;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(I=Function.prototype[Symbol.hasInstance],Object.defineProperty(R,Symbol.hasInstance,{value:function(P){return I.call(this,P)?!0:this!==R?!1:P&&P._writableState instanceof D}})):I=function(P){return P instanceof this};function R(O){e=e||Ca();var P=this instanceof e;if(!P&&!I.call(R,this))return new R(O);this._writableState=new D(O,this,P),this.writable=!0,O&&(typeof O.write=="function"&&(this._write=O.write),typeof O.writev=="function"&&(this._writev=O.writev),typeof O.destroy=="function"&&(this._destroy=O.destroy),typeof O.final=="function"&&(this._final=O.final)),r.call(this)}R.prototype.pipe=function(){_(this,new b)};function M(O,P){var q=new S;_(O,q),process.nextTick(P,q)}function j(O,P,q,H){var $;return q===null?$=new w:typeof q!="string"&&!P.objectMode&&($=new h("chunk",["string","Buffer"],q)),$?(_(O,$),process.nextTick(H,$),!1):!0}R.prototype.write=function(O,P,q){var H=this._writableState,$=!1,E=!H.objectMode&&s(O);return E&&!i.isBuffer(O)&&(O=a(O)),typeof P=="function"&&(q=P,P=null),E?P="buffer":P||(P=H.defaultEncoding),typeof q!="function"&&(q=k),H.ending?M(this,q):(E||j(this,H,O,q))&&(H.pendingcb++,$=ne(this,H,E,O,P,q)),$},R.prototype.cork=function(){this._writableState.corked++},R.prototype.uncork=function(){var O=this._writableState;O.corked&&(O.corked--,!O.writing&&!O.corked&&!O.bufferProcessing&&O.bufferedRequest&&qe(this,O))},R.prototype.setDefaultEncoding=function(P){if(typeof P=="string"&&(P=P.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((P+"").toLowerCase())>-1))throw new C(P);return this._writableState.defaultEncoding=P,this},Object.defineProperty(R.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function L(O,P,q){return!O.objectMode&&O.decodeStrings!==!1&&typeof P=="string"&&(P=i.from(P,q)),P}Object.defineProperty(R.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function ne(O,P,q,H,$,E){if(!q){var v=L(P,H,$);H!==v&&(q=!0,$="buffer",H=v)}var G=P.objectMode?1:H.length;P.length+=G;var W=P.length>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function lz(t,e,n){var r=e.length-1;if(r=0?(i>0&&(t.lastNeed=i-1),i):--r=0?(i>0&&(t.lastNeed=i-2),i):--r=0?(i>0&&(i===2?i=0:t.lastNeed=i-3),i):0))}function uz(t,e,n){if((e[0]&192)!==128)return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"�"}}function cz(t){var e=this.lastTotal-this.lastNeed,n=uz(this,t);if(n!==void 0)return n;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function hz(t,e){var n=lz(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var r=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,r),t.toString("utf8",e,r)}function dz(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e}function pz(t,e){if((t.length-e)%2===0){var n=t.toString("utf16le",e);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function gz(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function mz(t,e){var n=(t.length-e)%3;return n===0?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,n===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function bz(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function yz(t){return t.toString(this.encoding)}function wz(t){return t&&t.length?this.write(t):""}var yg,S_;function wg(){if(S_)return yg;S_=1;var t=Sa().codes.ERR_STREAM_PREMATURE_CLOSE;function e(o){var a=!1;return function(){if(!a){a=!0;for(var s=arguments.length,l=new Array(s),f=0;f0)if(typeof v!="string"&&!J.objectMode&&Object.getPrototypeOf(v)!==r.prototype&&(v=o(v)),W)J.endEmitted?k(E,new w):L(E,J,v,!0);else if(J.ended)k(E,new b);else{if(J.destroyed)return!1;J.reading=!1,J.decoder&&!G?(v=J.decoder.write(v),J.objectMode||v.length!==0?L(E,J,v,!1):qe(E,J)):L(E,J,v,!1)}else W||(J.reading=!1,qe(E,J))}return!J.ended&&(J.length=ae?E=ae:(E--,E|=E>>>1,E|=E>>>2,E|=E>>>4,E|=E>>>8,E|=E>>>16,E++),E}function ke(E,v){return E<=0||v.length===0&&v.ended?0:v.objectMode?1:E!==E?v.flowing&&v.length?v.buffer.head.data.length:v.length:(E>v.highWaterMark&&(v.highWaterMark=de(E)),E<=v.length?E:v.ended?v.length:(v.needReadable=!0,0))}M.prototype.read=function(E){l("read",E),E=parseInt(E,10);var v=this._readableState,G=E;if(E!==0&&(v.emittedReadable=!1),E===0&&v.needReadable&&((v.highWaterMark!==0?v.length>=v.highWaterMark:v.length>0)||v.ended))return l("read: emitReadable",v.length,v.ended),v.length===0&&v.ended?q(this):Be(this),null;if(E=ke(E,v),E===0&&v.ended)return v.length===0&&q(this),null;var W=v.needReadable;l("need readable",W),(v.length===0||v.length-E0?se=P(E,v):se=null,se===null?(v.needReadable=v.length<=v.highWaterMark,E=0):(v.length-=E,v.awaitDrain=0),v.length===0&&(v.ended||(v.needReadable=!0),G!==E&&v.ended&&q(this)),se!==null&&this.emit("data",se),se};function Qe(E,v){if(l("onEofChunk"),!v.ended){if(v.decoder){var G=v.decoder.end();G&&G.length&&(v.buffer.push(G),v.length+=v.objectMode?1:G.length)}v.ended=!0,v.sync?Be(E):(v.needReadable=!1,v.emittedReadable||(v.emittedReadable=!0,Ke(E)))}}function Be(E){var v=E._readableState;l("emitReadable",v.needReadable,v.emittedReadable),v.needReadable=!1,v.emittedReadable||(l("emitReadable",v.flowing),v.emittedReadable=!0,process.nextTick(Ke,E))}function Ke(E){var v=E._readableState;l("emitReadable_",v.destroyed,v.length,v.ended),!v.destroyed&&(v.length||v.ended)&&(E.emit("readable"),v.emittedReadable=!1),v.needReadable=!v.flowing&&!v.ended&&v.length<=v.highWaterMark,O(E)}function qe(E,v){v.readingMore||(v.readingMore=!0,process.nextTick(Je,E,v))}function Je(E,v){for(;!v.reading&&!v.ended&&(v.length1&&$(W.pipes,E)!==-1)&&!ui&&(l("false write response, pause",W.awaitDrain),W.awaitDrain++),G.pause())}function xr(x){l("onerror",x),Jn(),E.removeListener("error",xr),e(E,"error")===0&&k(E,x)}I(E,"error",xr);function hi(){E.removeListener("finish",jt),Jn()}E.once("close",hi);function jt(){l("onfinish"),E.removeListener("close",hi),Jn()}E.once("finish",jt);function Jn(){l("unpipe"),G.unpipe(E)}return E.emit("pipe",G),W.flowing||(l("pipe resume"),G.resume()),E};function Ee(E){return function(){var G=E._readableState;l("pipeOnDrain",G.awaitDrain),G.awaitDrain&&G.awaitDrain--,G.awaitDrain===0&&e(E,"data")&&(G.flowing=!0,O(E))}}M.prototype.unpipe=function(E){var v=this._readableState,G={hasUnpiped:!1};if(v.pipesCount===0)return this;if(v.pipesCount===1)return E&&E!==v.pipes?this:(E||(E=v.pipes),v.pipes=null,v.pipesCount=0,v.flowing=!1,E&&E.emit("unpipe",this,G),this);if(!E){var W=v.pipes,se=v.pipesCount;v.pipes=null,v.pipesCount=0,v.flowing=!1;for(var J=0;J0,W.flowing!==!1&&this.resume()):E==="readable"&&!W.endEmitted&&!W.readableListening&&(W.readableListening=W.needReadable=!0,W.flowing=!1,W.emittedReadable=!1,l("on readable",W.length,W.reading),W.length?Be(this):W.reading||process.nextTick(dt,this)),G},M.prototype.addListener=M.prototype.on,M.prototype.removeListener=function(E,v){var G=n.prototype.removeListener.call(this,E,v);return E==="readable"&&process.nextTick(_e,this),G},M.prototype.removeAllListeners=function(E){var v=n.prototype.removeAllListeners.apply(this,arguments);return(E==="readable"||E===void 0)&&process.nextTick(_e,this),v};function _e(E){var v=E._readableState;v.readableListening=E.listenerCount("readable")>0,v.resumeScheduled&&!v.paused?v.flowing=!0:E.listenerCount("data")>0&&E.resume()}function dt(E){l("readable nexttick read 0"),E.read(0)}M.prototype.resume=function(){var E=this._readableState;return E.flowing||(l("resume"),E.flowing=!E.readableListening,Ht(this,E)),E.paused=!1,this};function Ht(E,v){v.resumeScheduled||(v.resumeScheduled=!0,process.nextTick(Ne,E,v))}function Ne(E,v){l("resume",v.reading),v.reading||E.read(0),v.resumeScheduled=!1,E.emit("resume"),O(E),v.flowing&&!v.reading&&E.read(0)}M.prototype.pause=function(){return l("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(l("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function O(E){var v=E._readableState;for(l("flow",v.flowing);v.flowing&&E.read()!==null;);}M.prototype.wrap=function(E){var v=this,G=this._readableState,W=!1;E.on("end",function(){if(l("wrapped end"),G.decoder&&!G.ended){var fe=G.decoder.end();fe&&fe.length&&v.push(fe)}v.push(null)}),E.on("data",function(fe){if(l("wrapped data"),G.decoder&&(fe=G.decoder.write(fe)),!(G.objectMode&&fe==null)&&!(!G.objectMode&&(!fe||!fe.length))){var Vt=v.push(fe);Vt||(W=!0,E.pause())}});for(var se in E)this[se]===void 0&&typeof E[se]=="function"&&(this[se]=function(Vt){return function(){return E[Vt].apply(E,arguments)}}(se));for(var J=0;J=v.length?(v.decoder?G=v.buffer.join(""):v.buffer.length===1?G=v.buffer.first():G=v.buffer.concat(v.length),v.buffer.clear()):G=v.buffer.consume(E,v.decoder),G}function q(E){var v=E._readableState;l("endReadable",v.endEmitted),v.endEmitted||(v.ended=!0,process.nextTick(H,v,E))}function H(E,v){if(l("endReadableNT",E.endEmitted,E.length),!E.endEmitted&&E.length===0&&(E.endEmitted=!0,v.readable=!1,v.emit("end"),E.autoDestroy)){var G=v._writableState;(!G||G.autoDestroy&&G.finished)&&v.destroy()}}typeof Symbol=="function"&&(M.from=function(E,v){return _===void 0&&(_=vz()),_(M,E,v)});function $(E,v){for(var G=0,W=E.length;G0;return s(S,_,k,function(D){y||(y=D),D&&w.forEach(l),!_&&(w.forEach(l),b(y))})});return d.reduce(f)}return Sg=c,Sg}var P_=gn,Cg=ig.EventEmitter,_z=_a;_z(gn,Cg),gn.Readable=k_(),gn.Writable=A_(),gn.Duplex=Ca(),gn.Transform=B_(),gn.PassThrough=Az(),gn.finished=wg(),gn.pipeline=Ez(),gn.Stream=gn;function gn(){Cg.call(this)}gn.prototype.pipe=function(t,e){var n=this;function r(u){t.writable&&t.write(u)===!1&&n.pause&&n.pause()}n.on("data",r);function i(){n.readable&&n.resume&&n.resume()}t.on("drain",i),!t._isStdio&&(!e||e.end!==!1)&&(n.on("end",a),n.on("close",s));var o=!1;function a(){o||(o=!0,t.end())}function s(){o||(o=!0,typeof t.destroy=="function"&&t.destroy())}function l(u){if(f(),Cg.listenerCount(this,"error")===0)throw u}n.on("error",l),t.on("error",l);function f(){n.removeListener("data",r),t.removeListener("drain",i),n.removeListener("end",a),n.removeListener("close",s),n.removeListener("error",l),t.removeListener("error",l),n.removeListener("end",f),n.removeListener("close",f),t.removeListener("close",f)}return n.on("end",f),n.on("close",f),t.on("close",f),t.emit("pipe",n),t};function Of(t){return t.replace(/%([0-9A-Fa-f]{2})/g,(e,n)=>String.fromCharCode(parseInt(n,16)))}function M_(t,e){return String(e).replace(t,n=>`%${n.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`)}function Nf(t){return M_(/[\n;\r\t=%&,\x00-\x1f\x7f-\xff]/g,t)}function gr(t){return M_(/[\n\r\t%\x00-\x1f\x7f-\xff]/g,t)}function O_(t){if(!(t&&t.length)||t===".")return{};const e={};return t.replace(/\r?\n$/,"").split(";").forEach(n=>{const r=n.split("=",2);if(!(r[1]&&r[1].length))return;r[0]=r[0].trim();let i=e[r[0].trim()];i||(i=[],e[r[0]]=i),i.push(...r[1].split(",").map(o=>o.trim()).map(Of))}),e}function N_(t){const e=t.split(" ").map(r=>r==="."||r===""?null:r);return{seq_id:e[0]&&Of(e[0]),source:e[1]&&Of(e[1]),type:e[2]&&Of(e[2]),start:e[3]===null?null:parseInt(e[3],10),end:e[4]===null?null:parseInt(e[4],10),score:e[5]===null?null:parseFloat(e[5]),strand:e[6],phase:e[7],attributes:e[8]===null?null:O_(e[8])}}function L_(t){const e=/^\s*##\s*(\S+)\s*(.*)/.exec(t);if(!e)return null;const[,n]=e;let[,,r]=e;const i={directive:n};if(r.length&&(r=r.replace(/\r?\n$/,""),i.value=r),n==="sequence-region"){const o=r.split(/\s+/,3);return{...i,seq_id:o[0],start:o[1]&&o[1].replace(/\D/g,""),end:o[2]&&o[2].replace(/\D/g,"")}}else if(n==="genome-build"){const[o,a]=r.split(/\s+/,2);return{...i,source:o,buildName:a}}return i}function z_(t){const e=[];return Object.entries(t).forEach(([n,r])=>{if(!r)return;let i;r.hasOwnProperty("toString")?i=Nf(r.toString()):Array.isArray(r)?i=r.map(Nf).join(","):i=Nf(r),e.push(`${Nf(n)}=${i}`)}),e.length?e.join(";"):"."}function Sz(t,e){const n=t.attributes===null||t.attributes===void 0?".":z_(t.attributes),i=`${[t.seq_id===null?".":gr(t.seq_id),t.source===null?".":gr(t.source),t.type===null?".":gr(t.type),t.start===null?".":gr(t.start),t.end===null?".":gr(t.end),t.score===null?".":gr(t.score),t.strand===null?".":gr(t.strand),t.phase===null?".":gr(t.phase),n].join(" ")} +`;return e[i]?"":(e[i]=!0,i)}function Cc(t,e){if(Array.isArray(t))return t.map(r=>Cc(r,e)).join("");const n=[Sz(t,e)];return Cz(t)&&n.push(...t.child_features.map(r=>Cc(r,e)),...t.derived_features.map(r=>Cc(r,e))),n.join("")}function U_(t){return Cc(t,{})}function G_(t){let e=`##${t.directive}`;return t.value&&(e+=` ${t.value}`),e+=` +`,e}function H_(t){return`# ${t.comment} +`}function Tg(t){return`>${t.id}${t.description?` ${t.description}`:""} +${t.sequence} +`}function Tc(t){function e(n){return"attributes"in n?U_(n):"directive"in n?G_(n):"sequence"in n?Tg(n):"comment"in n?H_(n):`# (invalid item found during format) +`}return Array.isArray(t)?t.map(e):e(t)}function Cz(t){return t.child_features!==void 0&&t.derived_features!==void 0}const Tz=Object.freeze(Object.defineProperty({__proto__:null,escape:Nf,escapeColumn:gr,formatAttributes:z_,formatComment:H_,formatDirective:G_,formatFeature:U_,formatItem:Tc,formatSequence:Tg,parseAttributes:O_,parseDirective:L_,parseFeature:N_,unescape:Of},Symbol.toStringTag,{value:"Module"})),V_={Parent:"child_features",Derives_from:"derived_features"};class j_{constructor(e){this.seqCallback=e,this.currentSequence=void 0}addLine(e){const n=/^>\s*(\S+)\s*(.*)/.exec(e);n?(this._flush(),this.currentSequence={id:n[1],sequence:""},n[2]&&(this.currentSequence.description=n[2].trim())):this.currentSequence&&/\S/.test(e)&&(this.currentSequence.sequence+=e.replace(/\s/g,""))}_flush(){this.currentSequence&&this.seqCallback(this.currentSequence)}finish(){this._flush()}}class q_{constructor(e){this.fastaParser=void 0,this.eof=!1,this.lineNumber=0,this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},this._underConstructionOrphans={};const n=()=>{};this.featureCallback=e.featureCallback||n,this.endCallback=e.endCallback||n,this.commentCallback=e.commentCallback||n,this.errorCallback=e.errorCallback||n,this.directiveCallback=e.directiveCallback||n,this.sequenceCallback=e.sequenceCallback||n,this.disableDerivesFromReferences=e.disableDerivesFromReferences||!1,this.bufferSize=e.bufferSize===void 0?1e3:e.bufferSize}addLine(e){if(this.fastaParser){this.fastaParser.addLine(e);return}if(this.eof)return;if(this.lineNumber+=1,/^\s*[^#\s>]/.test(e)){this._bufferLine(e);return}const n=/^\s*(#+)(.*)/.exec(e);if(n){const[,r]=n;let[,,i]=n;if(r.length===3)this._emitAllUnderConstructionFeatures();else if(r.length===2){const o=L_(e);o&&(o.directive==="FASTA"?(this._emitAllUnderConstructionFeatures(),this.eof=!0,this.fastaParser=new j_(this.sequenceCallback)):this._emitItem(o))}else i=i.replace(/\s*/,""),this._emitItem({comment:i})}else if(!/^\s*$/.test(e))if(/^\s*>/.test(e))this._emitAllUnderConstructionFeatures(),this.eof=!0,this.fastaParser=new j_(this.sequenceCallback),this.fastaParser.addLine(e);else{const r=e.replace(/\r?\n?$/g,"");throw new Error(`GFF3 parse error. Cannot parse '${r}'.`)}}finish(){this._emitAllUnderConstructionFeatures(),this.fastaParser&&this.fastaParser.finish(),this.endCallback()}_emitItem(e){Array.isArray(e)?this.featureCallback(e):"directive"in e?this.directiveCallback(e):"comment"in e&&this.commentCallback(e)}_enforceBufferSizeLimit(e=0){const n=r=>{r&&Array.isArray(r)&&r[0].attributes&&r[0].attributes.ID&&r[0].attributes.ID[0]&&(r[0].attributes.ID.forEach(o=>{delete this._underConstructionById[o],delete this._completedReferences[o]}),r.forEach(o=>{o.child_features&&o.child_features.forEach(a=>n(a)),o.derived_features&&o.derived_features.forEach(a=>n(a))}))};for(;this._underConstructionTopLevel.length+e>this.bufferSize;){const r=this._underConstructionTopLevel.shift();r&&(this._emitItem(r),n(r))}}_emitAllUnderConstructionFeatures(){if(this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},Array.from(Object.values(this._underConstructionOrphans)).length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${Object.keys(this._underConstructionOrphans)}`)}_bufferLine(e){var n,r,i;const a={...N_(e),child_features:[],derived_features:[]},s=((n=a.attributes)===null||n===void 0?void 0:n.ID)||[],l=((r=a.attributes)===null||r===void 0?void 0:r.Parent)||[],f=this.disableDerivesFromReferences?[]:((i=a.attributes)===null||i===void 0?void 0:i.Derives_from)||[];if(!s.length&&!l.length&&!f.length){this._emitItem([a]);return}let u;s.forEach(c=>{const h=this._underConstructionById[c];h?(h[h.length-1].type!==a.type&&this._parseError(`multi-line feature "${c}" has inconsistent types: "${a.type}", "${h[h.length-1].type}"`),h.push(a),u=h):(u=[a],this._enforceBufferSizeLimit(1),!l.length&&!f.length&&this._underConstructionTopLevel.push(u),this._underConstructionById[c]=u,this._resolveReferencesTo(u,c))}),this._resolveReferencesFrom(u||[a],{Parent:l,Derives_from:f},s)}_resolveReferencesTo(e,n){const r=this._underConstructionOrphans[n];r&&(e.forEach(i=>{i.child_features.push(...r.Parent)}),e.forEach(i=>{i.derived_features.push(...r.Derives_from)}),delete this._underConstructionOrphans[n])}_parseError(e){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${e}`)}_resolveReferencesFrom(e,n,r){function i(o,a,s){let l=o[a];l||(l={},o[a]=l);const f=l[s]||!1;return l[s]=!0,f}n.Parent.forEach(o=>{const a=this._underConstructionById[o];if(a){const s=V_.Parent;r.filter(l=>i(this._completedReferences,l,`Parent,${o}`)).length||a.forEach(l=>{l[s].push(e)})}else{let s=this._underConstructionOrphans[o];s||(s={Parent:[],Derives_from:[]},this._underConstructionOrphans[o]=s),s.Parent.push(e)}}),n.Derives_from.forEach(o=>{const a=this._underConstructionById[o];if(a){const s=V_.Derives_from;r.filter(l=>i(this._completedReferences,l,`Derives_from,${o}`)).length||a.forEach(l=>{l[s].push(e)})}else{let s=this._underConstructionOrphans[o];s||(s={Parent:[],Derives_from:[]},this._underConstructionOrphans[o]=s),s.Derives_from.push(e)}})}}function Ig(t){process&&process.nextTick?process.nextTick(t):t()}function W_(t){const e={encoding:"utf8",parseFeatures:!0,parseDirectives:!1,parseSequences:!0,parseComments:!1,bufferSize:1e3,disableDerivesFromReferences:!1,...t};return t.parseAll&&(e.parseFeatures=!0,e.parseDirectives=!0,e.parseComments=!0,e.parseSequences=!0),e}class Iz extends P_.Transform{constructor(e={}){super({objectMode:!0}),this.textBuffer="";const n=W_(e);this.encoding=e.encoding||"utf8",this.decoder=new fz;const r=this.push.bind(this);this.parser=new q_({featureCallback:n.parseFeatures?r:void 0,directiveCallback:n.parseDirectives?r:void 0,commentCallback:n.parseComments?r:void 0,sequenceCallback:n.parseSequences?r:void 0,errorCallback:i=>this.emit("error",i),bufferSize:n.bufferSize,disableDerivesFromReferences:n.disableDerivesFromReferences})}_addLine(e){e&&this.parser.addLine(e)}_nextText(e){const n=(this.textBuffer+e).split(/\r?\n/);this.textBuffer=n.pop()||"",n.forEach(r=>this._addLine(r))}_transform(e,n,r){this._nextText(this.decoder.write(e)),Ig(r)}_flush(e){this.decoder.end&&this._nextText(this.decoder.end()),this.textBuffer!=null&&this._addLine(this.textBuffer),this.parser.finish(),Ig(e)}}function kz(t={}){return new Iz(t)}function Dz(t,e={}){if(!t)return[];const n=W_(e),r=[],i=r.push.bind(r),o=new q_({featureCallback:n.parseFeatures?i:void 0,directiveCallback:n.parseDirectives?i:void 0,commentCallback:n.parseComments?i:void 0,sequenceCallback:n.parseSequences?i:void 0,disableDerivesFromReferences:n.disableDerivesFromReferences||!1,bufferSize:1/0,errorCallback:a=>{throw a}});return t.split(/\r?\n/).forEach(o.addLine.bind(o)),o.finish(),r}function Bz(t){const e=[],n=[];t.forEach(i=>{"sequence"in i?n.push(i):e.push(i)});let r=e.map(Tc).join("");return n.length&&(r+=`##FASTA +`,r+=n.map(Tg).join("")),r}class $_ extends P_.Transform{constructor(e={}){super(Object.assign(e,{objectMode:!0})),this.linesSinceLastSyncMark=0,this.haveWeEmittedData=!1,this.fastaMode=!1,this.minLinesBetweenSyncMarks=e.minSyncLines||100,this.insertVersionDirective=e.insertVersionDirective||!1}_transform(e,n,r){let i;if(!this.haveWeEmittedData&&this.insertVersionDirective){const o=Array.isArray(e)?e[0]:e;"directive"in o&&o.directive!=="gff-version"&&this.push(`##gff-version 3 +`)}if("sequence"in e&&!this.fastaMode&&(this.push(`##FASTA +`),this.fastaMode=!0),Array.isArray(e)?i=e.map(Tc).join(""):i=Tc(e),this.push(i),this.linesSinceLastSyncMark>=this.minLinesBetweenSyncMarks)this.push(`### `),this.linesSinceLastSyncMark=0;else{let o=0;for(let a=0;a{e.pipe(new Z_(r)).on("end",()=>i(null)).on("error",o).pipe(t)})}const Fz=Object.freeze(Object.defineProperty({__proto__:null,default:{parseStream:Tz,parseStringSync:kz,formatSync:Iz,formatStream:Dz,formatFile:Bz,util:Sz}},Symbol.toStringTag,{value:"Module"}));we.GenomeSpyDocEmbed=Ox,Object.defineProperty(we,Symbol.toStringTag,{value:"Module"})}); +`&&(o+=1);this.linesSinceLastSyncMark+=o}this.haveWeEmittedData=!0,Ig(r)}}function Fz(t={}){return new $_(t)}function Rz(t,e,n={}){const r={insertVersionDirective:!0,...n};return new Promise((i,o)=>{t.pipe(new $_(r)).on("end",()=>i(null)).on("error",o).pipe(e)})}const Pz=Object.freeze(Object.defineProperty({__proto__:null,default:{parseStream:kz,parseStringSync:Dz,formatSync:Bz,formatStream:Fz,formatFile:Rz,util:Tz}},Symbol.toStringTag,{value:"Module"}));we.GenomeSpyDocEmbed=Mx,Object.defineProperty(we,Symbol.toStringTag,{value:"Module"})}); diff --git a/docs/assets/javascripts/bundle.6c14ae12.min.js b/docs/assets/javascripts/bundle.6c14ae12.min.js deleted file mode 100644 index bbff776..0000000 --- a/docs/assets/javascripts/bundle.6c14ae12.min.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict";(()=>{var wi=Object.create;var ur=Object.defineProperty;var Si=Object.getOwnPropertyDescriptor;var Ti=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,Oi=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty,Zr=Object.prototype.propertyIsEnumerable;var Xr=(e,t,r)=>t in e?ur(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,R=(e,t)=>{for(var r in t||(t={}))dr.call(t,r)&&Xr(e,r,t[r]);if(kt)for(var r of kt(t))Zr.call(t,r)&&Xr(e,r,t[r]);return e};var eo=(e,t)=>{var r={};for(var o in e)dr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&kt)for(var o of kt(e))t.indexOf(o)<0&&Zr.call(e,o)&&(r[o]=e[o]);return r};var hr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Mi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ti(t))!dr.call(e,n)&&n!==r&&ur(e,n,{get:()=>t[n],enumerable:!(o=Si(t,n))||o.enumerable});return e};var Ht=(e,t,r)=>(r=e!=null?wi(Oi(e)):{},Mi(t||!e||!e.__esModule?ur(r,"default",{value:e,enumerable:!0}):r,e));var ro=hr((br,to)=>{(function(e,t){typeof br=="object"&&typeof to!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(br,function(){"use strict";function e(r){var o=!0,n=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(C){return!!(C&&C!==document&&C.nodeName!=="HTML"&&C.nodeName!=="BODY"&&"classList"in C&&"contains"in C.classList)}function c(C){var it=C.type,Ue=C.tagName;return!!(Ue==="INPUT"&&s[it]&&!C.readOnly||Ue==="TEXTAREA"&&!C.readOnly||C.isContentEditable)}function p(C){C.classList.contains("focus-visible")||(C.classList.add("focus-visible"),C.setAttribute("data-focus-visible-added",""))}function l(C){C.hasAttribute("data-focus-visible-added")&&(C.classList.remove("focus-visible"),C.removeAttribute("data-focus-visible-added"))}function f(C){C.metaKey||C.altKey||C.ctrlKey||(a(r.activeElement)&&p(r.activeElement),o=!0)}function u(C){o=!1}function d(C){a(C.target)&&(o||c(C.target))&&p(C.target)}function v(C){a(C.target)&&(C.target.classList.contains("focus-visible")||C.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(C.target))}function b(C){document.visibilityState==="hidden"&&(n&&(o=!0),z())}function z(){document.addEventListener("mousemove",G),document.addEventListener("mousedown",G),document.addEventListener("mouseup",G),document.addEventListener("pointermove",G),document.addEventListener("pointerdown",G),document.addEventListener("pointerup",G),document.addEventListener("touchmove",G),document.addEventListener("touchstart",G),document.addEventListener("touchend",G)}function K(){document.removeEventListener("mousemove",G),document.removeEventListener("mousedown",G),document.removeEventListener("mouseup",G),document.removeEventListener("pointermove",G),document.removeEventListener("pointerdown",G),document.removeEventListener("pointerup",G),document.removeEventListener("touchmove",G),document.removeEventListener("touchstart",G),document.removeEventListener("touchend",G)}function G(C){C.target.nodeName&&C.target.nodeName.toLowerCase()==="html"||(o=!1,K())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",b,!0),z(),r.addEventListener("focus",d,!0),r.addEventListener("blur",v,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var Vr=hr((Ot,Dr)=>{/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(t,r){typeof Ot=="object"&&typeof Dr=="object"?Dr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Ot=="object"?Ot.ClipboardJS=r():t.ClipboardJS=r()})(Ot,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Ei}});var s=i(279),a=i.n(s),c=i(370),p=i.n(c),l=i(817),f=i.n(l);function u(W){try{return document.execCommand(W)}catch(O){return!1}}var d=function(O){var S=f()(O);return u("cut"),S},v=d;function b(W){var O=document.documentElement.getAttribute("dir")==="rtl",S=document.createElement("textarea");S.style.fontSize="12pt",S.style.border="0",S.style.padding="0",S.style.margin="0",S.style.position="absolute",S.style[O?"right":"left"]="-9999px";var $=window.pageYOffset||document.documentElement.scrollTop;return S.style.top="".concat($,"px"),S.setAttribute("readonly",""),S.value=W,S}var z=function(O,S){var $=b(O);S.container.appendChild($);var F=f()($);return u("copy"),$.remove(),F},K=function(O){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},$="";return typeof O=="string"?$=z(O,S):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?$=z(O.value,S):($=f()(O),u("copy")),$},G=K;function C(W){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?C=function(S){return typeof S}:C=function(S){return S&&typeof Symbol=="function"&&S.constructor===Symbol&&S!==Symbol.prototype?"symbol":typeof S},C(W)}var it=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},S=O.action,$=S===void 0?"copy":S,F=O.container,Q=O.target,_e=O.text;if($!=="copy"&&$!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(Q!==void 0)if(Q&&C(Q)==="object"&&Q.nodeType===1){if($==="copy"&&Q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if($==="cut"&&(Q.hasAttribute("readonly")||Q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(_e)return G(_e,{container:F});if(Q)return $==="cut"?v(Q):G(Q,{container:F})},Ue=it;function Pe(W){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Pe=function(S){return typeof S}:Pe=function(S){return S&&typeof Symbol=="function"&&S.constructor===Symbol&&S!==Symbol.prototype?"symbol":typeof S},Pe(W)}function ui(W,O){if(!(W instanceof O))throw new TypeError("Cannot call a class as a function")}function Jr(W,O){for(var S=0;S0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Pe(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var Q=this;this.listener=p()(F,"click",function(_e){return Q.onClick(_e)})}},{key:"onClick",value:function(F){var Q=F.delegateTarget||F.currentTarget,_e=this.action(Q)||"copy",Ct=Ue({action:_e,container:this.container,target:this.target(Q),text:this.text(Q)});this.emit(Ct?"success":"error",{action:_e,text:Ct,trigger:Q,clearSelection:function(){Q&&Q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return fr("action",F)}},{key:"defaultTarget",value:function(F){var Q=fr("target",F);if(Q)return document.querySelector(Q)}},{key:"defaultText",value:function(F){return fr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var Q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return G(F,Q)}},{key:"cut",value:function(F){return v(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],Q=typeof F=="string"?[F]:F,_e=!!document.queryCommandSupported;return Q.forEach(function(Ct){_e=_e&&!!document.queryCommandSupported(Ct)}),_e}}]),S}(a()),Ei=yi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==n;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}o.exports=s},438:function(o,n,i){var s=i(828);function a(l,f,u,d,v){var b=p.apply(this,arguments);return l.addEventListener(u,b,v),{destroy:function(){l.removeEventListener(u,b,v)}}}function c(l,f,u,d,v){return typeof l.addEventListener=="function"?a.apply(null,arguments):typeof u=="function"?a.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(b){return a(b,f,u,d,v)}))}function p(l,f,u,d){return function(v){v.delegateTarget=s(v.target,f),v.delegateTarget&&d.call(l,v)}}o.exports=c},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(o,n,i){var s=i(879),a=i(438);function c(u,d,v){if(!u&&!d&&!v)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(v))throw new TypeError("Third argument must be a Function");if(s.node(u))return p(u,d,v);if(s.nodeList(u))return l(u,d,v);if(s.string(u))return f(u,d,v);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function p(u,d,v){return u.addEventListener(d,v),{destroy:function(){u.removeEventListener(d,v)}}}function l(u,d,v){return Array.prototype.forEach.call(u,function(b){b.addEventListener(d,v)}),{destroy:function(){Array.prototype.forEach.call(u,function(b){b.removeEventListener(d,v)})}}}function f(u,d,v){return a(document.body,u,d,v)}o.exports=c},817:function(o){function n(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),p=document.createRange();p.selectNodeContents(i),c.removeAllRanges(),c.addRange(p),s=c.toString()}return s}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function p(){c.off(i,p),s.apply(a,arguments)}return p._=s,this.on(i,p,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,p=a.length;for(c;c{"use strict";/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */var Ha=/["'&<>]/;Nn.exports=$a;function $a(e){var t=""+e,r=Ha.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(p[0]===6||p[0]===2)){r=0;continue}if(p[0]===3&&(!i||p[1]>i[0]&&p[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function N(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],s;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||a(u,d)})})}function a(u,d){try{c(o[u](d))}catch(v){f(i[0][3],v)}}function c(u){u.value instanceof Ze?Promise.resolve(u.value.v).then(p,l):f(i[0][2],u)}function p(u){a("next",u)}function l(u){a("throw",u)}function f(u,d){u(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function io(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof we=="function"?we(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),n(a,c,s.done,s.value)})}}function n(i,s,a,c){Promise.resolve(c).then(function(p){i({value:p,done:a})},s)}}function k(e){return typeof e=="function"}function at(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Rt=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: -`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=r}});function De(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=we(s),c=a.next();!c.done;c=a.next()){var p=c.value;p.remove(this)}}catch(b){t={error:b}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var l=this.initialTeardown;if(k(l))try{l()}catch(b){i=b instanceof Rt?b.errors:[b]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=we(f),d=u.next();!d.done;d=u.next()){var v=d.value;try{ao(v)}catch(b){i=i!=null?i:[],b instanceof Rt?i=D(D([],N(i)),N(b.errors)):i.push(b)}}}catch(b){o={error:b}}finally{try{d&&!d.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new Rt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ao(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&De(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&De(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var gr=Ie.EMPTY;function Pt(e){return e instanceof Ie||e&&"closed"in e&&k(e.remove)&&k(e.add)&&k(e.unsubscribe)}function ao(e){k(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,s=n.isStopped,a=n.observers;return i||s?gr:(this.currentObservers=null,a.push(r),new Ie(function(){o.currentObservers=null,De(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,s=o.isStopped;n?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new P;return r.source=this,r},t.create=function(r,o){return new ho(r,o)},t}(P);var ho=function(e){ie(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:gr},t}(x);var yt={now:function(){return(yt.delegate||Date).now()},delegate:void 0};var Et=function(e){ie(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=yt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,s=o._infiniteTimeWindow,a=o._timestampProvider,c=o._windowTime;n||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,s=n._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=lt.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var s=r.actions;o!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==o&&(lt.cancelAnimationFrame(o),r._scheduled=void 0)},t}(jt);var go=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(Wt);var Oe=new go(vo);var L=new P(function(e){return e.complete()});function Nt(e){return e&&k(e.schedule)}function Or(e){return e[e.length-1]}function Qe(e){return k(Or(e))?e.pop():void 0}function Me(e){return Nt(Or(e))?e.pop():void 0}function Ut(e,t){return typeof Or(e)=="number"?e.pop():t}var mt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Dt(e){return k(e==null?void 0:e.then)}function Vt(e){return k(e[pt])}function zt(e){return Symbol.asyncIterator&&k(e==null?void 0:e[Symbol.asyncIterator])}function qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Pi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Kt=Pi();function Qt(e){return k(e==null?void 0:e[Kt])}function Yt(e){return no(this,arguments,function(){var r,o,n,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,Ze(r.read())];case 3:return o=s.sent(),n=o.value,i=o.done,i?[4,Ze(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,Ze(n)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Bt(e){return k(e==null?void 0:e.getReader)}function I(e){if(e instanceof P)return e;if(e!=null){if(Vt(e))return Ii(e);if(mt(e))return Fi(e);if(Dt(e))return ji(e);if(zt(e))return xo(e);if(Qt(e))return Wi(e);if(Bt(e))return Ni(e)}throw qt(e)}function Ii(e){return new P(function(t){var r=e[pt]();if(k(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Fi(e){return new P(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?M(function(n,i){return e(n,i,o)}):ue,xe(1),r?He(t):Io(function(){return new Jt}))}}function Fo(){for(var e=[],t=0;t=2,!0))}function le(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(p){var l,f,u,d=0,v=!1,b=!1,z=function(){f==null||f.unsubscribe(),f=void 0},K=function(){z(),l=u=void 0,v=b=!1},G=function(){var C=l;K(),C==null||C.unsubscribe()};return g(function(C,it){d++,!b&&!v&&z();var Ue=u=u!=null?u:r();it.add(function(){d--,d===0&&!b&&!v&&(f=Hr(G,c))}),Ue.subscribe(it),!l&&d>0&&(l=new tt({next:function(Pe){return Ue.next(Pe)},error:function(Pe){b=!0,z(),f=Hr(K,n,Pe),Ue.error(Pe)},complete:function(){v=!0,z(),f=Hr(K,s),Ue.complete()}}),I(C).subscribe(l))})(p)}}function Hr(e,t){for(var r=[],o=2;oe.next(document)),e}function q(e,t=document){return Array.from(t.querySelectorAll(e))}function U(e,t=document){let r=se(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function se(e,t=document){return t.querySelector(e)||void 0}function Re(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}var na=_(h(document.body,"focusin"),h(document.body,"focusout")).pipe(ke(1),V(void 0),m(()=>Re()||document.body),J(1));function Zt(e){return na.pipe(m(t=>e.contains(t)),X())}function Je(e){return{x:e.offsetLeft,y:e.offsetTop}}function Uo(e){return _(h(window,"load"),h(window,"resize")).pipe(Ce(0,Oe),m(()=>Je(e)),V(Je(e)))}function er(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return _(h(e,"scroll"),h(window,"resize")).pipe(Ce(0,Oe),m(()=>er(e)),V(er(e)))}function Do(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Do(e,r)}function T(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)Do(o,n);return o}function tr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function ht(e){let t=T("script",{src:e});return H(()=>(document.head.appendChild(t),_(h(t,"load"),h(t,"error").pipe(E(()=>Mr(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),A(()=>document.head.removeChild(t)),xe(1))))}var Vo=new x,ia=H(()=>typeof ResizeObserver=="undefined"?ht("https://unpkg.com/resize-observer-polyfill"):j(void 0)).pipe(m(()=>new ResizeObserver(e=>{for(let t of e)Vo.next(t)})),E(e=>_(Ve,j(e)).pipe(A(()=>e.disconnect()))),J(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return ia.pipe(w(t=>t.observe(e)),E(t=>Vo.pipe(M(({target:r})=>r===e),A(()=>t.unobserve(e)),m(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function zo(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var qo=new x,aa=H(()=>j(new IntersectionObserver(e=>{for(let t of e)qo.next(t)},{threshold:0}))).pipe(E(e=>_(Ve,j(e)).pipe(A(()=>e.disconnect()))),J(1));function rr(e){return aa.pipe(w(t=>t.observe(e)),E(t=>qo.pipe(M(({target:r})=>r===e),A(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Ko(e,t=16){return dt(e).pipe(m(({y:r})=>{let o=he(e),n=bt(e);return r>=n.height-o.height-t}),X())}var or={drawer:U("[data-md-toggle=drawer]"),search:U("[data-md-toggle=search]")};function Qo(e){return or[e].checked}function Ke(e,t){or[e].checked!==t&&or[e].click()}function We(e){let t=or[e];return h(t,"change").pipe(m(()=>t.checked),V(t.checked))}function sa(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function ca(){return _(h(window,"compositionstart").pipe(m(()=>!0)),h(window,"compositionend").pipe(m(()=>!1))).pipe(V(!1))}function Yo(){let e=h(window,"keydown").pipe(M(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:Qo("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),M(({mode:t,type:r})=>{if(t==="global"){let o=Re();if(typeof o!="undefined")return!sa(o,r)}return!0}),le());return ca().pipe(E(t=>t?L:e))}function pe(){return new URL(location.href)}function ot(e,t=!1){if(te("navigation.instant")&&!t){let r=T("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function Bo(){return new x}function Go(){return location.hash.slice(1)}function nr(e){let t=T("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function pa(e){return _(h(window,"hashchange"),e).pipe(m(Go),V(Go()),M(t=>t.length>0),J(1))}function Jo(e){return pa(e).pipe(m(t=>se(`[id="${t}"]`)),M(t=>typeof t!="undefined"))}function Fr(e){let t=matchMedia(e);return Xt(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function Xo(){let e=matchMedia("print");return _(h(window,"beforeprint").pipe(m(()=>!0)),h(window,"afterprint").pipe(m(()=>!1))).pipe(V(e.matches))}function jr(e,t){return e.pipe(E(r=>r?t():L))}function ir(e,t){return new P(r=>{let o=new XMLHttpRequest;o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network Error"))}),o.addEventListener("abort",()=>{r.error(new Error("Request aborted"))}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let i=Number(o.getResponseHeader("Content-Length"))||0;t.progress$.next(n.loaded/i*100)}}),t.progress$.next(5)),o.send()})}function Ne(e,t){return ir(e,t).pipe(E(r=>r.text()),m(r=>JSON.parse(r)),J(1))}function Zo(e,t){let r=new DOMParser;return ir(e,t).pipe(E(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),J(1))}function en(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function tn(){return _(h(window,"scroll",{passive:!0}),h(window,"resize",{passive:!0})).pipe(m(en),V(en()))}function rn(){return{width:innerWidth,height:innerHeight}}function on(){return h(window,"resize",{passive:!0}).pipe(m(rn),V(rn()))}function nn(){return B([tn(),on()]).pipe(m(([e,t])=>({offset:e,size:t})),J(1))}function ar(e,{viewport$:t,header$:r}){let o=t.pipe(ee("size")),n=B([o,r]).pipe(m(()=>Je(e)));return B([r,t,n]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:p}])=>({offset:{x:s.x-c,y:s.y-p+i},size:a})))}function la(e){return h(e,"message",t=>t.data)}function ma(e){let t=new x;return t.subscribe(r=>e.postMessage(r)),t}function an(e,t=new Worker(e)){let r=la(t),o=ma(t),n=new x;n.subscribe(o);let i=o.pipe(Z(),re(!0));return n.pipe(Z(),qe(r.pipe(Y(i))),le())}var fa=U("#__config"),vt=JSON.parse(fa.textContent);vt.base=`${new URL(vt.base,pe())}`;function me(){return vt}function te(e){return vt.features.includes(e)}function be(e,t){return typeof t!="undefined"?vt.translations[e].replace("#",t.toString()):vt.translations[e]}function Ee(e,t=document){return U(`[data-md-component=${e}]`,t)}function oe(e,t=document){return q(`[data-md-component=${e}]`,t)}function ua(e){let t=U(".md-typeset > :first-child",e);return h(t,"click",{once:!0}).pipe(m(()=>U(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function sn(e){if(!te("announce.dismiss")||!e.childElementCount)return L;if(!e.hidden){let t=U(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return H(()=>{let t=new x;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),ua(e).pipe(w(r=>t.next(r)),A(()=>t.complete()),m(r=>R({ref:e},r)))})}function da(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function cn(e,t){let r=new x;return r.subscribe(({hidden:o})=>{e.hidden=o}),da(e,t).pipe(w(o=>r.next(o)),A(()=>r.complete()),m(o=>R({ref:e},o)))}function ha(e,t){let r=H(()=>B([Uo(e),dt(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:s,height:a}=he(e);return{x:o-i.x+s/2,y:n-i.y+a/2}}));return Zt(e).pipe(E(o=>r.pipe(m(n=>({active:o,offset:n})),xe(+!o||1/0))))}function pn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return H(()=>{let i=new x,s=i.pipe(Z(),re(!0));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),rr(e).pipe(Y(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),_(i.pipe(M(({active:a})=>a)),i.pipe(ke(250),M(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Ce(16,Oe)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(Pr(125,Oe),M(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),h(n,"click").pipe(Y(s),M(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>{a.stopPropagation(),a.preventDefault()}),h(n,"mousedown").pipe(Y(s),ne(i)).subscribe(([a,{active:c}])=>{var p;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(p=Re())==null||p.blur()}}),r.pipe(Y(s),M(a=>a===o),ze(125)).subscribe(()=>e.focus()),ha(e,t).pipe(w(a=>i.next(a)),A(()=>i.complete()),m(a=>R({ref:e},a)))})}function Wr(e){return T("div",{class:"md-tooltip",id:e},T("div",{class:"md-tooltip__inner md-typeset"}))}function ln(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return T("aside",{class:"md-annotation",tabIndex:0},Wr(t),T("a",{href:r,class:"md-annotation__index",tabIndex:-1},T("span",{"data-md-annotation-id":e})))}else return T("aside",{class:"md-annotation",tabIndex:0},Wr(t),T("span",{class:"md-annotation__index",tabIndex:-1},T("span",{"data-md-annotation-id":e})))}function mn(e){return T("button",{class:"md-clipboard md-icon",title:be("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Nr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(c=>!e.terms[c]).reduce((c,p)=>[...c,T("del",null,p)," "],[]).slice(0,-1),i=me(),s=new URL(e.location,i.base);te("search.highlight")&&s.searchParams.set("h",Object.entries(e.terms).filter(([,c])=>c).reduce((c,[p])=>`${c} ${p}`.trim(),""));let{tags:a}=me();return T("a",{href:`${s}`,class:"md-search-result__link",tabIndex:-1},T("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&T("div",{class:"md-search-result__icon md-icon"}),r>0&&T("h1",null,e.title),r<=0&&T("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(c=>{let p=a?c in a?`md-tag-icon md-tag--${a[c]}`:"md-tag-icon":"";return T("span",{class:`md-tag ${p}`},c)}),o>0&&n.length>0&&T("p",{class:"md-search-result__terms"},be("search.result.term.missing"),": ",...n)))}function fn(e){let t=e[0].score,r=[...e],o=me(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),s=r.findIndex(l=>l.scoreNr(l,1)),...c.length?[T("details",{class:"md-search-result__more"},T("summary",{tabIndex:-1},T("div",null,c.length>0&&c.length===1?be("search.result.more.one"):be("search.result.more.other",c.length))),...c.map(l=>Nr(l,1)))]:[]];return T("li",{class:"md-search-result__item"},p)}function un(e){return T("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>T("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?tr(r):r)))}function Ur(e){let t=`tabbed-control tabbed-control--${e}`;return T("div",{class:t,hidden:!0},T("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function dn(e){return T("div",{class:"md-typeset__scrollwrap"},T("div",{class:"md-typeset__table"},e))}function ba(e){let t=me(),r=new URL(`../${e.version}/`,t.base);return T("li",{class:"md-version__item"},T("a",{href:`${r}`,class:"md-version__link"},e.title))}function hn(e,t){return T("div",{class:"md-version"},T("button",{class:"md-version__current","aria-label":be("select.version")},t.title),T("ul",{class:"md-version__list"},e.map(ba)))}function va(e){return e.tagName==="CODE"?q(".c, .c1, .cm",e):[e]}function ga(e){let t=[];for(let r of va(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let p=i.splitText(s.index);i=p.splitText(a.length),t.push(p)}else{i.textContent=a,t.push(i);break}}}}return t}function bn(e,t){t.append(...Array.from(e.childNodes))}function sr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,s=new Map;for(let a of ga(t)){let[,c]=a.textContent.match(/\((\d+)\)/);se(`:scope > li:nth-child(${c})`,e)&&(s.set(c,ln(c,i)),a.replaceWith(s.get(c)))}return s.size===0?L:H(()=>{let a=new x,c=a.pipe(Z(),re(!0)),p=[];for(let[l,f]of s)p.push([U(".md-typeset",f),U(`:scope > li:nth-child(${l})`,e)]);return o.pipe(Y(c)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of p)l?bn(f,u):bn(u,f)}),_(...[...s].map(([,l])=>pn(l,t,{target$:r}))).pipe(A(()=>a.complete()),le())})}function vn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return vn(t)}}function gn(e,t){return H(()=>{let r=vn(e);return typeof r!="undefined"?sr(r,e,t):L})}var yn=Ht(Vr());var xa=0;function En(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return En(t)}}function xn(e){return ye(e).pipe(m(({width:t})=>({scrollable:bt(e).width>t})),ee("scrollable"))}function wn(e,t){let{matches:r}=matchMedia("(hover)"),o=H(()=>{let n=new x;if(n.subscribe(({scrollable:s})=>{s&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),yn.default.isSupported()&&(e.closest(".copy")||te("content.code.copy")&&!e.closest(".no-copy"))){let s=e.closest("pre");s.id=`__code_${xa++}`,s.insertBefore(mn(s.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let s=En(i);if(typeof s!="undefined"&&(i.classList.contains("annotate")||te("content.code.annotate"))){let a=sr(s,e,t);return xn(e).pipe(w(c=>n.next(c)),A(()=>n.complete()),m(c=>R({ref:e},c)),qe(ye(i).pipe(m(({width:c,height:p})=>c&&p),X(),E(c=>c?a:L))))}}return xn(e).pipe(w(s=>n.next(s)),A(()=>n.complete()),m(s=>R({ref:e},s)))});return te("content.lazy")?rr(e).pipe(M(n=>n),xe(1),E(()=>o)):o}function ya(e,{target$:t,print$:r}){let o=!0;return _(t.pipe(m(n=>n.closest("details:not([open])")),M(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(M(n=>n||!o),w(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Sn(e,t){return H(()=>{let r=new x;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),ya(e,t).pipe(w(o=>r.next(o)),A(()=>r.complete()),m(o=>R({ref:e},o)))})}var Tn=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var zr,wa=0;function Sa(){return typeof mermaid=="undefined"||mermaid instanceof Element?ht("https://unpkg.com/mermaid@9.4.3/dist/mermaid.min.js"):j(void 0)}function On(e){return e.classList.remove("mermaid"),zr||(zr=Sa().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Tn,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),J(1))),zr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${wa++}`,r=T("div",{class:"mermaid"}),o=e.textContent;mermaid.mermaidAPI.render(t,o,(n,i)=>{let s=r.attachShadow({mode:"closed"});s.innerHTML=n,e.replaceWith(r),i==null||i(s)})}),zr.pipe(m(()=>({ref:e})))}var Mn=T("table");function Ln(e){return e.replaceWith(Mn),Mn.replaceWith(dn(e)),j({ref:e})}function Ta(e){let t=q(":scope > input",e),r=t.find(o=>o.checked)||t[0];return _(...t.map(o=>h(o,"change").pipe(m(()=>U(`label[for="${o.id}"]`))))).pipe(V(U(`label[for="${r.id}"]`)),m(o=>({active:o})))}function _n(e,{viewport$:t}){let r=Ur("prev");e.append(r);let o=Ur("next");e.append(o);let n=U(".tabbed-labels",e);return H(()=>{let i=new x,s=i.pipe(Z(),re(!0));return B([i,ye(e)]).pipe(Ce(1,Oe),Y(s)).subscribe({next([{active:a},c]){let p=Je(a),{width:l}=he(a);e.style.setProperty("--md-indicator-x",`${p.x}px`),e.style.setProperty("--md-indicator-width",`${l}px`);let f=er(n);(p.xf.x+c.width)&&n.scrollTo({left:Math.max(0,p.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),B([dt(n),ye(n)]).pipe(Y(s)).subscribe(([a,c])=>{let p=bt(n);r.hidden=a.x<16,o.hidden=a.x>p.width-c.width-16}),_(h(r,"click").pipe(m(()=>-1)),h(o,"click").pipe(m(()=>1))).pipe(Y(s)).subscribe(a=>{let{width:c}=he(n);n.scrollBy({left:c*a,behavior:"smooth"})}),te("content.tabs.link")&&i.pipe(je(1),ne(t)).subscribe(([{active:a},{offset:c}])=>{let p=a.innerText.trim();if(a.hasAttribute("data-md-switching"))a.removeAttribute("data-md-switching");else{let l=e.offsetTop-c.y;for(let u of q("[data-tabs]"))for(let d of q(":scope > input",u)){let v=U(`label[for="${d.id}"]`);if(v!==a&&v.innerText.trim()===p){v.setAttribute("data-md-switching",""),d.click();break}}window.scrollTo({top:e.offsetTop-l});let f=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([p,...f])])}}),i.pipe(Y(s)).subscribe(()=>{for(let a of q("audio, video",e))a.pause()}),Ta(e).pipe(w(a=>i.next(a)),A(()=>i.complete()),m(a=>R({ref:e},a)))}).pipe(rt(ae))}function An(e,{viewport$:t,target$:r,print$:o}){return _(...q(".annotate:not(.highlight)",e).map(n=>gn(n,{target$:r,print$:o})),...q("pre:not(.mermaid) > code",e).map(n=>wn(n,{target$:r,print$:o})),...q("pre.mermaid",e).map(n=>On(n)),...q("table:not([class])",e).map(n=>Ln(n)),...q("details",e).map(n=>Sn(n,{target$:r,print$:o})),...q("[data-tabs]",e).map(n=>_n(n,{viewport$:t})))}function Oa(e,{alert$:t}){return t.pipe(E(r=>_(j(!0),j(!1).pipe(ze(2e3))).pipe(m(o=>({message:r,active:o})))))}function Cn(e,t){let r=U(".md-typeset",e);return H(()=>{let o=new x;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),Oa(e,t).pipe(w(n=>o.next(n)),A(()=>o.complete()),m(n=>R({ref:e},n)))})}function Ma({viewport$:e}){if(!te("header.autohide"))return j(!1);let t=e.pipe(m(({offset:{y:n}})=>n),Le(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),X()),o=We("search");return B([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),X(),E(n=>n?r:j(!1)),V(!1))}function kn(e,t){return H(()=>B([ye(e),Ma(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),X((r,o)=>r.height===o.height&&r.hidden===o.hidden),J(1))}function Hn(e,{header$:t,main$:r}){return H(()=>{let o=new x,n=o.pipe(Z(),re(!0));return o.pipe(ee("active"),Ge(t)).subscribe(([{active:i},{hidden:s}])=>{e.classList.toggle("md-header--shadow",i&&!s),e.hidden=s}),r.subscribe(o),t.pipe(Y(n),m(i=>R({ref:e},i)))})}function La(e,{viewport$:t,header$:r}){return ar(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=he(e);return{active:o>=n}}),ee("active"))}function $n(e,t){return H(()=>{let r=new x;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=se(".md-content h1");return typeof o=="undefined"?L:La(o,t).pipe(w(n=>r.next(n)),A(()=>r.complete()),m(n=>R({ref:e},n)))})}function Rn(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),X()),n=o.pipe(E(()=>ye(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),ee("bottom"))));return B([o,n,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:p}}])=>(p=Math.max(0,p-Math.max(0,s-c,i)-Math.max(0,p+c-a)),{offset:s-i,height:p,active:s-i<=c})),X((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function _a(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return j(...e).pipe(ce(r=>h(r,"change").pipe(m(()=>r))),V(e[Math.max(0,t.index)]),m(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),J(1))}function Pn(e){let t=T("meta",{name:"theme-color"});document.head.appendChild(t);let r=T("meta",{name:"color-scheme"});return document.head.appendChild(r),H(()=>{let o=new x;o.subscribe(i=>{document.body.setAttribute("data-md-color-switching","");for(let[s,a]of Object.entries(i.color))document.body.setAttribute(`data-md-color-${s}`,a);for(let s=0;s{let i=Ee("header"),s=window.getComputedStyle(i);return r.content=s.colorScheme,s.backgroundColor.match(/\d+/g).map(a=>(+a).toString(16).padStart(2,"0")).join("")})).subscribe(i=>t.content=`#${i}`),o.pipe(Se(ae)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")});let n=q("input",e);return _a(n).pipe(w(i=>o.next(i)),A(()=>o.complete()),m(i=>R({ref:e},i)))})}function In(e,{progress$:t}){return H(()=>{let r=new x;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(w(o=>r.next({value:o})),A(()=>r.complete()),m(o=>({ref:e,value:o})))})}var qr=Ht(Vr());function Aa(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function Fn({alert$:e}){qr.default.isSupported()&&new P(t=>{new qr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||Aa(U(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),m(()=>be("clipboard.copied"))).subscribe(e)}function Ca(e){if(e.length<2)return[""];let[t,r]=[...e].sort((n,i)=>n.length-i.length).map(n=>n.replace(/[^/]+$/,"")),o=0;if(t===r)o=t.length;else for(;t.charCodeAt(o)===r.charCodeAt(o);)o++;return e.map(n=>n.replace(t.slice(0,o),""))}function cr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return j(t);{let r=me();return Zo(new URL("sitemap.xml",e||r.base)).pipe(m(o=>Ca(q("loc",o).map(n=>n.textContent))),de(()=>L),He([]),w(o=>__md_set("__sitemap",o,sessionStorage,e)))}}function jn(e){let t=se("[rel=canonical]",e);typeof t!="undefined"&&(t.href=t.href.replace("//localhost:","//127.0.0.1:"));let r=new Map;for(let o of q(":scope > *",e)){let n=o.outerHTML;for(let i of["href","src"]){let s=o.getAttribute(i);if(s===null)continue;let a=new URL(s,t==null?void 0:t.href),c=o.cloneNode();c.setAttribute(i,`${a}`),n=c.outerHTML;break}r.set(n,o)}return r}function Wn({location$:e,viewport$:t,progress$:r}){let o=me();if(location.protocol==="file:")return L;let n=cr().pipe(m(l=>l.map(f=>`${new URL(f,o.base)}`))),i=h(document.body,"click").pipe(ne(n),E(([l,f])=>{if(!(l.target instanceof Element))return L;let u=l.target.closest("a");if(u===null)return L;if(u.target||l.metaKey||l.ctrlKey)return L;let d=new URL(u.href);return d.search=d.hash="",f.includes(`${d}`)?(l.preventDefault(),j(new URL(u.href))):L}),le());i.pipe(xe(1)).subscribe(()=>{let l=se("link[rel=icon]");typeof l!="undefined"&&(l.href=l.href)}),h(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),i.pipe(ne(t)).subscribe(([l,{offset:f}])=>{history.scrollRestoration="manual",history.replaceState(f,""),history.pushState(null,"",l)}),i.subscribe(e);let s=e.pipe(V(pe()),ee("pathname"),je(1),E(l=>ir(l,{progress$:r}).pipe(de(()=>(ot(l,!0),L))))),a=new DOMParser,c=s.pipe(E(l=>l.text()),E(l=>{let f=a.parseFromString(l,"text/html");for(let b of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...te("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let z=se(b),K=se(b,f);typeof z!="undefined"&&typeof K!="undefined"&&z.replaceWith(K)}let u=jn(document.head),d=jn(f.head);for(let[b,z]of d)z.getAttribute("rel")==="stylesheet"||z.hasAttribute("src")||(u.has(b)?u.delete(b):document.head.appendChild(z));for(let b of u.values())b.getAttribute("rel")==="stylesheet"||b.hasAttribute("src")||b.remove();let v=Ee("container");return Fe(q("script",v)).pipe(E(b=>{let z=f.createElement("script");if(b.src){for(let K of b.getAttributeNames())z.setAttribute(K,b.getAttribute(K));return b.replaceWith(z),new P(K=>{z.onload=()=>K.complete()})}else return z.textContent=b.textContent,b.replaceWith(z),L}),Z(),re(f))}),le());return h(window,"popstate").pipe(m(pe)).subscribe(e),e.pipe(V(pe()),Le(2,1),M(([l,f])=>l.pathname===f.pathname&&l.hash!==f.hash),m(([,l])=>l)).subscribe(l=>{var f,u;history.state!==null||!l.hash?window.scrollTo(0,(u=(f=history.state)==null?void 0:f.y)!=null?u:0):(history.scrollRestoration="auto",nr(l.hash),history.scrollRestoration="manual")}),e.pipe(Cr(i),V(pe()),Le(2,1),M(([l,f])=>l.pathname===f.pathname&&l.hash===f.hash),m(([,l])=>l)).subscribe(l=>{history.scrollRestoration="auto",nr(l.hash),history.scrollRestoration="manual",history.back()}),c.pipe(ne(e)).subscribe(([,l])=>{var f,u;history.state!==null||!l.hash?window.scrollTo(0,(u=(f=history.state)==null?void 0:f.y)!=null?u:0):nr(l.hash)}),t.pipe(ee("offset"),ke(100)).subscribe(({offset:l})=>{history.replaceState(l,"")}),c}var Dn=Ht(Un());function Vn(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,s)=>`${i}${s}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(0,Dn.default)(s).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function Mt(e){return e.type===1}function pr(e){return e.type===3}function zn(e,t){let r=an(e);return _(j(location.protocol!=="file:"),We("search")).pipe($e(o=>o),E(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:te("search.suggest")}}})),r}function qn({document$:e}){let t=me(),r=Ne(new URL("../versions.json",t.base)).pipe(de(()=>L)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:s,aliases:a})=>s===i||a.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),E(n=>h(document.body,"click").pipe(M(i=>!i.metaKey&&!i.ctrlKey),ne(o),E(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&n.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&n.get(c)===s?L:(i.preventDefault(),j(c))}}return L}),E(i=>{let{version:s}=n.get(i);return cr(new URL(i)).pipe(m(a=>{let p=pe().href.replace(t.base,"");return a.includes(p.split("#")[0])?new URL(`../${s}/${p}`,t.base):new URL(i)}))})))).subscribe(n=>ot(n,!0)),B([r,o]).subscribe(([n,i])=>{U(".md-header__topic").appendChild(hn(n,i))}),e.pipe(E(()=>o)).subscribe(n=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let a=((s=t.version)==null?void 0:s.default)||"latest";Array.isArray(a)||(a=[a]);e:for(let c of a)for(let p of n.aliases.concat(n.version))if(new RegExp(c,"i").test(p)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let a of oe("outdated"))a.hidden=!1})}function Pa(e,{worker$:t}){let{searchParams:r}=pe();r.has("q")&&(Ke("search",!0),e.value=r.get("q"),e.focus(),We("search").pipe($e(i=>!i)).subscribe(()=>{let i=pe();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=Zt(e),n=_(t.pipe($e(Mt)),h(e,"keyup"),o).pipe(m(()=>e.value),X());return B([n,o]).pipe(m(([i,s])=>({value:i,focus:s})),J(1))}function Kn(e,{worker$:t}){let r=new x,o=r.pipe(Z(),re(!0));B([t.pipe($e(Mt)),r],(i,s)=>s).pipe(ee("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(ee("focus")).subscribe(({focus:i})=>{i&&Ke("search",i)}),h(e.form,"reset").pipe(Y(o)).subscribe(()=>e.focus());let n=U("header [for=__search]");return h(n,"click").subscribe(()=>e.focus()),Pa(e,{worker$:t}).pipe(w(i=>r.next(i)),A(()=>r.complete()),m(i=>R({ref:e},i)),J(1))}function Qn(e,{worker$:t,query$:r}){let o=new x,n=Ko(e.parentElement).pipe(M(Boolean)),i=e.parentElement,s=U(":scope > :first-child",e),a=U(":scope > :last-child",e);We("search").subscribe(l=>a.setAttribute("role",l?"list":"presentation")),o.pipe(ne(r),$r(t.pipe($e(Mt)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:s.textContent=f.length?be("search.result.none"):be("search.result.placeholder");break;case 1:s.textContent=be("search.result.one");break;default:let u=tr(l.length);s.textContent=be("search.result.other",u)}});let c=o.pipe(w(()=>a.innerHTML=""),E(({items:l})=>_(j(...l.slice(0,10)),j(...l.slice(10)).pipe(Le(4),Ir(n),E(([f])=>f)))),m(fn),le());return c.subscribe(l=>a.appendChild(l)),c.pipe(ce(l=>{let f=se("details",l);return typeof f=="undefined"?L:h(f,"toggle").pipe(Y(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(M(pr),m(({data:l})=>l)).pipe(w(l=>o.next(l)),A(()=>o.complete()),m(l=>R({ref:e},l)))}function Ia(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=pe();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function Yn(e,t){let r=new x,o=r.pipe(Z(),re(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),h(e,"click").pipe(Y(o)).subscribe(n=>n.preventDefault()),Ia(e,t).pipe(w(n=>r.next(n)),A(()=>r.complete()),m(n=>R({ref:e},n)))}function Bn(e,{worker$:t,keyboard$:r}){let o=new x,n=Ee("search-query"),i=_(h(n,"keydown"),h(n,"focus")).pipe(Se(ae),m(()=>n.value),X());return o.pipe(Ge(i),m(([{suggest:a},c])=>{let p=c.split(/([\s-]+)/);if(a!=null&&a.length&&p[p.length-1]){let l=a[a.length-1];l.startsWith(p[p.length-1])&&(p[p.length-1]=l)}else p.length=0;return p})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(M(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(M(pr),m(({data:a})=>a)).pipe(w(a=>o.next(a)),A(()=>o.complete()),m(()=>({ref:e})))}function Gn(e,{index$:t,keyboard$:r}){let o=me();try{let n=zn(o.search,t),i=Ee("search-query",e),s=Ee("search-result",e);h(e,"click").pipe(M(({target:c})=>c instanceof Element&&!!c.closest("a"))).subscribe(()=>Ke("search",!1)),r.pipe(M(({mode:c})=>c==="search")).subscribe(c=>{let p=Re();switch(c.type){case"Enter":if(p===i){let l=new Map;for(let f of q(":first-child [href]",s)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,d])=>d-u);f.click()}c.claim()}break;case"Escape":case"Tab":Ke("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof p=="undefined")i.focus();else{let l=[i,...q(":not(details) > [href], summary, details[open] [href]",s)],f=Math.max(0,(Math.max(0,l.indexOf(p))+l.length+(c.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}c.claim();break;default:i!==Re()&&i.focus()}}),r.pipe(M(({mode:c})=>c==="global")).subscribe(c=>{switch(c.type){case"f":case"s":case"/":i.focus(),i.select(),c.claim();break}});let a=Kn(i,{worker$:n});return _(a,Qn(s,{worker$:n,query$:a})).pipe(qe(...oe("search-share",e).map(c=>Yn(c,{query$:a})),...oe("search-suggest",e).map(c=>Bn(c,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,Ve}}function Jn(e,{index$:t,location$:r}){return B([t,r.pipe(V(pe()),M(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>Vn(o.config)(n.searchParams.get("h"))),m(o=>{var s;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,p=o(c);p.length>c.length&&n.set(a,p)}for(let[a,c]of n){let{childNodes:p}=T("span",null,c);a.replaceWith(...Array.from(p))}return{ref:e,nodes:n}}))}function Fa(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return B([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(n,Math.max(0,a-i))-n,{height:s,locked:a>=i+n})),X((i,s)=>i.height===s.height&&i.locked===s.locked))}function Kr(e,o){var n=o,{header$:t}=n,r=eo(n,["header$"]);let i=U(".md-sidebar__scrollwrap",e),{y:s}=Je(i);return H(()=>{let a=new x,c=a.pipe(Z(),re(!0)),p=a.pipe(Ce(0,Oe));return p.pipe(ne(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),p.pipe($e()).subscribe(()=>{for(let l of q(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=he(f);f.scrollTo({top:u-d/2})}}}),ge(q("label[tabindex]",e)).pipe(ce(l=>h(l,"click").pipe(Se(ae),m(()=>l),Y(c)))).subscribe(l=>{let f=U(`[id="${l.htmlFor}"]`);U(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),Fa(e,r).pipe(w(l=>a.next(l)),A(()=>a.complete()),m(l=>R({ref:e},l)))})}function Xn(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return St(Ne(`${r}/releases/latest`).pipe(de(()=>L),m(o=>({version:o.tag_name})),He({})),Ne(r).pipe(de(()=>L),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),He({}))).pipe(m(([o,n])=>R(R({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return Ne(r).pipe(m(o=>({repositories:o.public_repos})),He({}))}}function Zn(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return Ne(r).pipe(de(()=>L),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),He({}))}function ei(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return Xn(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return Zn(r,o)}return L}var ja;function Wa(e){return ja||(ja=H(()=>{let t=__md_get("__source",sessionStorage);if(t)return j(t);if(oe("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return L}return ei(e.href).pipe(w(o=>__md_set("__source",o,sessionStorage)))}).pipe(de(()=>L),M(t=>Object.keys(t).length>0),m(t=>({facts:t})),J(1)))}function ti(e){let t=U(":scope > :last-child",e);return H(()=>{let r=new x;return r.subscribe(({facts:o})=>{t.appendChild(un(o)),t.classList.add("md-source__repository--active")}),Wa(e).pipe(w(o=>r.next(o)),A(()=>r.complete()),m(o=>R({ref:e},o)))})}function Na(e,{viewport$:t,header$:r}){return ye(document.body).pipe(E(()=>ar(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),ee("hidden"))}function ri(e,t){return H(()=>{let r=new x;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(te("navigation.tabs.sticky")?j({hidden:!1}):Na(e,t)).pipe(w(o=>r.next(o)),A(()=>r.complete()),m(o=>R({ref:e},o)))})}function Ua(e,{viewport$:t,header$:r}){let o=new Map,n=q("[href^=\\#]",e);for(let a of n){let c=decodeURIComponent(a.hash.substring(1)),p=se(`[id="${c}"]`);typeof p!="undefined"&&o.set(a,p)}let i=r.pipe(ee("height"),m(({height:a})=>{let c=Ee("main"),p=U(":scope > :first-child",c);return a+.8*(p.offsetTop-c.offsetTop)}),le());return ye(document.body).pipe(ee("height"),E(a=>H(()=>{let c=[];return j([...o].reduce((p,[l,f])=>{for(;c.length&&o.get(c[c.length-1]).tagName>=f.tagName;)c.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let d=f.offsetParent;for(;d;d=d.offsetParent)u+=d.offsetTop;return p.set([...c=[...c,l]].reverse(),u)},new Map))}).pipe(m(c=>new Map([...c].sort(([,p],[,l])=>p-l))),Ge(i),E(([c,p])=>t.pipe(kr(([l,f],{offset:{y:u},size:d})=>{let v=u+d.height>=Math.floor(a.height);for(;f.length;){let[,b]=f[0];if(b-p=u&&!v)f=[l.pop(),...f];else break}return[l,f]},[[],[...c]]),X((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([a,c])=>({prev:a.map(([p])=>p),next:c.map(([p])=>p)})),V({prev:[],next:[]}),Le(2,1),m(([a,c])=>a.prev.length{let i=new x,s=i.pipe(Z(),re(!0));if(i.subscribe(({prev:a,next:c})=>{for(let[p]of c)p.classList.remove("md-nav__link--passed"),p.classList.remove("md-nav__link--active");for(let[p,[l]]of a.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",p===a.length-1)}),te("toc.follow")){let a=_(t.pipe(ke(1),m(()=>{})),t.pipe(ke(250),m(()=>"smooth")));i.pipe(M(({prev:c})=>c.length>0),Ge(o.pipe(Se(ae))),ne(a)).subscribe(([[{prev:c}],p])=>{let[l]=c[c.length-1];if(l.offsetHeight){let f=zo(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=he(f);f.scrollTo({top:u-d/2,behavior:p})}}})}return te("navigation.tracking")&&t.pipe(Y(s),ee("offset"),ke(250),je(1),Y(n.pipe(je(1))),Tt({delay:250}),ne(i)).subscribe(([,{prev:a}])=>{let c=pe(),p=a[a.length-1];if(p&&p.length){let[l]=p,{hash:f}=new URL(l.href);c.hash!==f&&(c.hash=f,history.replaceState({},"",`${c}`))}else c.hash="",history.replaceState({},"",`${c}`)}),Ua(e,{viewport$:t,header$:r}).pipe(w(a=>i.next(a)),A(()=>i.complete()),m(a=>R({ref:e},a)))})}function Da(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:s}})=>s),Le(2,1),m(([s,a])=>s>a&&a>0),X()),i=r.pipe(m(({active:s})=>s));return B([i,n]).pipe(m(([s,a])=>!(s&&a)),X(),Y(o.pipe(je(1))),re(!0),Tt({delay:250}),m(s=>({hidden:s})))}function ni(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new x,s=i.pipe(Z(),re(!0));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(Y(s),ee("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),h(e,"click").subscribe(a=>{a.preventDefault(),window.scrollTo({top:0})}),Da(e,{viewport$:t,main$:o,target$:n}).pipe(w(a=>i.next(a)),A(()=>i.complete()),m(a=>R({ref:e},a)))}function ii({document$:e,tablet$:t}){e.pipe(E(()=>q(".md-toggle--indeterminate")),w(r=>{r.indeterminate=!0,r.checked=!1}),ce(r=>h(r,"change").pipe(Rr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ne(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function Va(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function ai({document$:e}){e.pipe(E(()=>q("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),M(Va),ce(t=>h(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function si({viewport$:e,tablet$:t}){B([We("search"),t]).pipe(m(([r,o])=>r&&!o),E(r=>j(r).pipe(ze(r?400:100))),ne(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function za(){return location.protocol==="file:"?ht(`${new URL("search/search_index.js",Qr.base)}`).pipe(m(()=>__index),J(1)):Ne(new URL("search/search_index.json",Qr.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var nt=No(),_t=Bo(),gt=Jo(_t),Yr=Yo(),Te=nn(),lr=Fr("(min-width: 960px)"),pi=Fr("(min-width: 1220px)"),li=Xo(),Qr=me(),mi=document.forms.namedItem("search")?za():Ve,Br=new x;Fn({alert$:Br});var Gr=new x;te("navigation.instant")&&Wn({location$:_t,viewport$:Te,progress$:Gr}).subscribe(nt);var ci;((ci=Qr.version)==null?void 0:ci.provider)==="mike"&&qn({document$:nt});_(_t,gt).pipe(ze(125)).subscribe(()=>{Ke("drawer",!1),Ke("search",!1)});Yr.pipe(M(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=se("link[rel=prev]");typeof t!="undefined"&&ot(t);break;case"n":case".":let r=se("link[rel=next]");typeof r!="undefined"&&ot(r);break;case"Enter":let o=Re();o instanceof HTMLLabelElement&&o.click()}});ii({document$:nt,tablet$:lr});ai({document$:nt});si({viewport$:Te,tablet$:lr});var Xe=kn(Ee("header"),{viewport$:Te}),Lt=nt.pipe(m(()=>Ee("main")),E(e=>Rn(e,{viewport$:Te,header$:Xe})),J(1)),qa=_(...oe("consent").map(e=>cn(e,{target$:gt})),...oe("dialog").map(e=>Cn(e,{alert$:Br})),...oe("header").map(e=>Hn(e,{viewport$:Te,header$:Xe,main$:Lt})),...oe("palette").map(e=>Pn(e)),...oe("progress").map(e=>In(e,{progress$:Gr})),...oe("search").map(e=>Gn(e,{index$:mi,keyboard$:Yr})),...oe("source").map(e=>ti(e))),Ka=H(()=>_(...oe("announce").map(e=>sn(e)),...oe("content").map(e=>An(e,{viewport$:Te,target$:gt,print$:li})),...oe("content").map(e=>te("search.highlight")?Jn(e,{index$:mi,location$:_t}):L),...oe("header-title").map(e=>$n(e,{viewport$:Te,header$:Xe})),...oe("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?jr(pi,()=>Kr(e,{viewport$:Te,header$:Xe,main$:Lt})):jr(lr,()=>Kr(e,{viewport$:Te,header$:Xe,main$:Lt}))),...oe("tabs").map(e=>ri(e,{viewport$:Te,header$:Xe})),...oe("toc").map(e=>oi(e,{viewport$:Te,header$:Xe,main$:Lt,target$:gt})),...oe("top").map(e=>ni(e,{viewport$:Te,header$:Xe,main$:Lt,target$:gt})))),fi=nt.pipe(E(()=>Ka),qe(qa),J(1));fi.subscribe();window.document$=nt;window.location$=_t;window.target$=gt;window.keyboard$=Yr;window.viewport$=Te;window.tablet$=lr;window.screen$=pi;window.print$=li;window.alert$=Br;window.progress$=Gr;window.component$=fi;})(); -//# sourceMappingURL=bundle.6c14ae12.min.js.map - diff --git a/docs/assets/javascripts/bundle.d7c377c4.min.js b/docs/assets/javascripts/bundle.d7c377c4.min.js new file mode 100644 index 0000000..6a0bcf8 --- /dev/null +++ b/docs/assets/javascripts/bundle.d7c377c4.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Mi=Object.create;var gr=Object.defineProperty;var Li=Object.getOwnPropertyDescriptor;var _i=Object.getOwnPropertyNames,Ft=Object.getOwnPropertySymbols,Ai=Object.getPrototypeOf,xr=Object.prototype.hasOwnProperty,ro=Object.prototype.propertyIsEnumerable;var to=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))xr.call(t,r)&&to(e,r,t[r]);if(Ft)for(var r of Ft(t))ro.call(t,r)&&to(e,r,t[r]);return e};var oo=(e,t)=>{var r={};for(var o in e)xr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Ft)for(var o of Ft(e))t.indexOf(o)<0&&ro.call(e,o)&&(r[o]=e[o]);return r};var yr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ci=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of _i(t))!xr.call(e,n)&&n!==r&&gr(e,n,{get:()=>t[n],enumerable:!(o=Li(t,n))||o.enumerable});return e};var jt=(e,t,r)=>(r=e!=null?Mi(Ai(e)):{},Ci(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var no=(e,t,r)=>new Promise((o,n)=>{var i=c=>{try{a(r.next(c))}catch(p){n(p)}},s=c=>{try{a(r.throw(c))}catch(p){n(p)}},a=c=>c.done?o(c.value):Promise.resolve(c.value).then(i,s);a((r=r.apply(e,t)).next())});var ao=yr((Er,io)=>{(function(e,t){typeof Er=="object"&&typeof io!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Er,function(){"use strict";function e(r){var o=!0,n=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(C){return!!(C&&C!==document&&C.nodeName!=="HTML"&&C.nodeName!=="BODY"&&"classList"in C&&"contains"in C.classList)}function c(C){var ct=C.type,Ve=C.tagName;return!!(Ve==="INPUT"&&s[ct]&&!C.readOnly||Ve==="TEXTAREA"&&!C.readOnly||C.isContentEditable)}function p(C){C.classList.contains("focus-visible")||(C.classList.add("focus-visible"),C.setAttribute("data-focus-visible-added",""))}function l(C){C.hasAttribute("data-focus-visible-added")&&(C.classList.remove("focus-visible"),C.removeAttribute("data-focus-visible-added"))}function f(C){C.metaKey||C.altKey||C.ctrlKey||(a(r.activeElement)&&p(r.activeElement),o=!0)}function u(C){o=!1}function d(C){a(C.target)&&(o||c(C.target))&&p(C.target)}function y(C){a(C.target)&&(C.target.classList.contains("focus-visible")||C.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(C.target))}function b(C){document.visibilityState==="hidden"&&(n&&(o=!0),D())}function D(){document.addEventListener("mousemove",J),document.addEventListener("mousedown",J),document.addEventListener("mouseup",J),document.addEventListener("pointermove",J),document.addEventListener("pointerdown",J),document.addEventListener("pointerup",J),document.addEventListener("touchmove",J),document.addEventListener("touchstart",J),document.addEventListener("touchend",J)}function Q(){document.removeEventListener("mousemove",J),document.removeEventListener("mousedown",J),document.removeEventListener("mouseup",J),document.removeEventListener("pointermove",J),document.removeEventListener("pointerdown",J),document.removeEventListener("pointerup",J),document.removeEventListener("touchmove",J),document.removeEventListener("touchstart",J),document.removeEventListener("touchend",J)}function J(C){C.target.nodeName&&C.target.nodeName.toLowerCase()==="html"||(o=!1,Q())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",b,!0),D(),r.addEventListener("focus",d,!0),r.addEventListener("blur",y,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var Kr=yr((kt,qr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof kt=="object"&&typeof qr=="object"?qr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof kt=="object"?kt.ClipboardJS=r():t.ClipboardJS=r()})(kt,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Oi}});var s=i(279),a=i.n(s),c=i(370),p=i.n(c),l=i(817),f=i.n(l);function u(V){try{return document.execCommand(V)}catch(_){return!1}}var d=function(_){var O=f()(_);return u("cut"),O},y=d;function b(V){var _=document.documentElement.getAttribute("dir")==="rtl",O=document.createElement("textarea");O.style.fontSize="12pt",O.style.border="0",O.style.padding="0",O.style.margin="0",O.style.position="absolute",O.style[_?"right":"left"]="-9999px";var $=window.pageYOffset||document.documentElement.scrollTop;return O.style.top="".concat($,"px"),O.setAttribute("readonly",""),O.value=V,O}var D=function(_,O){var $=b(_);O.container.appendChild($);var N=f()($);return u("copy"),$.remove(),N},Q=function(_){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},$="";return typeof _=="string"?$=D(_,O):_ instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(_==null?void 0:_.type)?$=D(_.value,O):($=f()(_),u("copy")),$},J=Q;function C(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?C=function(O){return typeof O}:C=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},C(V)}var ct=function(){var _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=_.action,$=O===void 0?"copy":O,N=_.container,Y=_.target,ke=_.text;if($!=="copy"&&$!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(Y!==void 0)if(Y&&C(Y)==="object"&&Y.nodeType===1){if($==="copy"&&Y.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if($==="cut"&&(Y.hasAttribute("readonly")||Y.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(ke)return J(ke,{container:N});if(Y)return $==="cut"?y(Y):J(Y,{container:N})},Ve=ct;function Fe(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fe=function(O){return typeof O}:Fe=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},Fe(V)}function vi(V,_){if(!(V instanceof _))throw new TypeError("Cannot call a class as a function")}function eo(V,_){for(var O=0;O<_.length;O++){var $=_[O];$.enumerable=$.enumerable||!1,$.configurable=!0,"value"in $&&($.writable=!0),Object.defineProperty(V,$.key,$)}}function gi(V,_,O){return _&&eo(V.prototype,_),O&&eo(V,O),V}function xi(V,_){if(typeof _!="function"&&_!==null)throw new TypeError("Super expression must either be null or a function");V.prototype=Object.create(_&&_.prototype,{constructor:{value:V,writable:!0,configurable:!0}}),_&&br(V,_)}function br(V,_){return br=Object.setPrototypeOf||function($,N){return $.__proto__=N,$},br(V,_)}function yi(V){var _=Ti();return function(){var $=Rt(V),N;if(_){var Y=Rt(this).constructor;N=Reflect.construct($,arguments,Y)}else N=$.apply(this,arguments);return Ei(this,N)}}function Ei(V,_){return _&&(Fe(_)==="object"||typeof _=="function")?_:wi(V)}function wi(V){if(V===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return V}function Ti(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(V){return!1}}function Rt(V){return Rt=Object.setPrototypeOf?Object.getPrototypeOf:function(O){return O.__proto__||Object.getPrototypeOf(O)},Rt(V)}function vr(V,_){var O="data-clipboard-".concat(V);if(_.hasAttribute(O))return _.getAttribute(O)}var Si=function(V){xi(O,V);var _=yi(O);function O($,N){var Y;return vi(this,O),Y=_.call(this),Y.resolveOptions(N),Y.listenClick($),Y}return gi(O,[{key:"resolveOptions",value:function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof N.action=="function"?N.action:this.defaultAction,this.target=typeof N.target=="function"?N.target:this.defaultTarget,this.text=typeof N.text=="function"?N.text:this.defaultText,this.container=Fe(N.container)==="object"?N.container:document.body}},{key:"listenClick",value:function(N){var Y=this;this.listener=p()(N,"click",function(ke){return Y.onClick(ke)})}},{key:"onClick",value:function(N){var Y=N.delegateTarget||N.currentTarget,ke=this.action(Y)||"copy",It=Ve({action:ke,container:this.container,target:this.target(Y),text:this.text(Y)});this.emit(It?"success":"error",{action:ke,text:It,trigger:Y,clearSelection:function(){Y&&Y.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(N){return vr("action",N)}},{key:"defaultTarget",value:function(N){var Y=vr("target",N);if(Y)return document.querySelector(Y)}},{key:"defaultText",value:function(N){return vr("text",N)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(N){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return J(N,Y)}},{key:"cut",value:function(N){return y(N)}},{key:"isSupported",value:function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],Y=typeof N=="string"?[N]:N,ke=!!document.queryCommandSupported;return Y.forEach(function(It){ke=ke&&!!document.queryCommandSupported(It)}),ke}}]),O}(a()),Oi=Si},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==n;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}o.exports=s},438:function(o,n,i){var s=i(828);function a(l,f,u,d,y){var b=p.apply(this,arguments);return l.addEventListener(u,b,y),{destroy:function(){l.removeEventListener(u,b,y)}}}function c(l,f,u,d,y){return typeof l.addEventListener=="function"?a.apply(null,arguments):typeof u=="function"?a.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(b){return a(b,f,u,d,y)}))}function p(l,f,u,d){return function(y){y.delegateTarget=s(y.target,f),y.delegateTarget&&d.call(l,y)}}o.exports=c},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(o,n,i){var s=i(879),a=i(438);function c(u,d,y){if(!u&&!d&&!y)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(y))throw new TypeError("Third argument must be a Function");if(s.node(u))return p(u,d,y);if(s.nodeList(u))return l(u,d,y);if(s.string(u))return f(u,d,y);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function p(u,d,y){return u.addEventListener(d,y),{destroy:function(){u.removeEventListener(d,y)}}}function l(u,d,y){return Array.prototype.forEach.call(u,function(b){b.addEventListener(d,y)}),{destroy:function(){Array.prototype.forEach.call(u,function(b){b.removeEventListener(d,y)})}}}function f(u,d,y){return a(document.body,u,d,y)}o.exports=c},817:function(o){function n(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),p=document.createRange();p.selectNodeContents(i),c.removeAllRanges(),c.addRange(p),s=c.toString()}return s}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function p(){c.off(i,p),s.apply(a,arguments)}return p._=s,this.on(i,p,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,p=a.length;for(c;c{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var Wa=/["'&<>]/;Vn.exports=Ua;function Ua(e){var t=""+e,r=Wa.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(p[0]===6||p[0]===2)){r=0;continue}if(p[0]===3&&(!i||p[1]>i[0]&&p[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function z(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],s;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(s)throw s.error}}return i}function K(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||a(u,d)})})}function a(u,d){try{c(o[u](d))}catch(y){f(i[0][3],y)}}function c(u){u.value instanceof ot?Promise.resolve(u.value.v).then(p,l):f(i[0][2],u)}function p(u){a("next",u)}function l(u){a("throw",u)}function f(u,d){u(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function po(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof be=="function"?be(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),n(a,c,s.done,s.value)})}}function n(i,s,a,c){Promise.resolve(c).then(function(p){i({value:p,done:a})},s)}}function k(e){return typeof e=="function"}function pt(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Ut=pt(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function ze(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var je=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=be(s),c=a.next();!c.done;c=a.next()){var p=c.value;p.remove(this)}}catch(b){t={error:b}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var l=this.initialTeardown;if(k(l))try{l()}catch(b){i=b instanceof Ut?b.errors:[b]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=be(f),d=u.next();!d.done;d=u.next()){var y=d.value;try{lo(y)}catch(b){i=i!=null?i:[],b instanceof Ut?i=K(K([],z(i)),z(b.errors)):i.push(b)}}}catch(b){o={error:b}}finally{try{d&&!d.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new Ut(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)lo(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&ze(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&ze(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Tr=je.EMPTY;function Nt(e){return e instanceof je||e&&"closed"in e&&k(e.remove)&&k(e.add)&&k(e.unsubscribe)}function lo(e){k(e)?e():e.unsubscribe()}var He={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var lt={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,s=n.isStopped,a=n.observers;return i||s?Tr:(this.currentObservers=null,a.push(r),new je(function(){o.currentObservers=null,ze(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,s=o.isStopped;n?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new I;return r.source=this,r},t.create=function(r,o){return new xo(r,o)},t}(I);var xo=function(e){se(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:Tr},t}(x);var St={now:function(){return(St.delegate||Date).now()},delegate:void 0};var Ot=function(e){se(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=St);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,s=o._infiniteTimeWindow,a=o._timestampProvider,c=o._windowTime;n||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,s=n._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var s=r.actions;o!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==o&&(ut.cancelAnimationFrame(o),r._scheduled=void 0)},t}(zt);var wo=function(e){se(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(qt);var ge=new wo(Eo);var M=new I(function(e){return e.complete()});function Kt(e){return e&&k(e.schedule)}function Cr(e){return e[e.length-1]}function Ge(e){return k(Cr(e))?e.pop():void 0}function Ae(e){return Kt(Cr(e))?e.pop():void 0}function Qt(e,t){return typeof Cr(e)=="number"?e.pop():t}var dt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Yt(e){return k(e==null?void 0:e.then)}function Bt(e){return k(e[ft])}function Gt(e){return Symbol.asyncIterator&&k(e==null?void 0:e[Symbol.asyncIterator])}function Jt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Wi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Xt=Wi();function Zt(e){return k(e==null?void 0:e[Xt])}function er(e){return co(this,arguments,function(){var r,o,n,i;return Wt(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,ot(r.read())];case 3:return o=s.sent(),n=o.value,i=o.done,i?[4,ot(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,ot(n)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function tr(e){return k(e==null?void 0:e.getReader)}function F(e){if(e instanceof I)return e;if(e!=null){if(Bt(e))return Ui(e);if(dt(e))return Ni(e);if(Yt(e))return Di(e);if(Gt(e))return To(e);if(Zt(e))return Vi(e);if(tr(e))return zi(e)}throw Jt(e)}function Ui(e){return new I(function(t){var r=e[ft]();if(k(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Ni(e){return new I(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?v(function(n,i){return e(n,i,o)}):pe,ue(1),r?$e(t):Uo(function(){return new or}))}}function Rr(e){return e<=0?function(){return M}:g(function(t,r){var o=[];t.subscribe(E(r,function(n){o.push(n),e=2,!0))}function de(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(p){var l,f,u,d=0,y=!1,b=!1,D=function(){f==null||f.unsubscribe(),f=void 0},Q=function(){D(),l=u=void 0,y=b=!1},J=function(){var C=l;Q(),C==null||C.unsubscribe()};return g(function(C,ct){d++,!b&&!y&&D();var Ve=u=u!=null?u:r();ct.add(function(){d--,d===0&&!b&&!y&&(f=jr(J,c))}),Ve.subscribe(ct),!l&&d>0&&(l=new it({next:function(Fe){return Ve.next(Fe)},error:function(Fe){b=!0,D(),f=jr(Q,n,Fe),Ve.error(Fe)},complete:function(){y=!0,D(),f=jr(Q,s),Ve.complete()}}),F(C).subscribe(l))})(p)}}function jr(e,t){for(var r=[],o=2;oe.next(document)),e}function W(e,t=document){return Array.from(t.querySelectorAll(e))}function U(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function Ie(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}var ca=L(h(document.body,"focusin"),h(document.body,"focusout")).pipe(ye(1),q(void 0),m(()=>Ie()||document.body),Z(1));function vt(e){return ca.pipe(m(t=>e.contains(t)),X())}function qo(e,t){return L(h(e,"mouseenter").pipe(m(()=>!0)),h(e,"mouseleave").pipe(m(()=>!1))).pipe(t?ye(t):pe,q(!1))}function Ue(e){return{x:e.offsetLeft,y:e.offsetTop}}function Ko(e){return L(h(window,"load"),h(window,"resize")).pipe(Le(0,ge),m(()=>Ue(e)),q(Ue(e)))}function ir(e){return{x:e.scrollLeft,y:e.scrollTop}}function et(e){return L(h(e,"scroll"),h(window,"resize")).pipe(Le(0,ge),m(()=>ir(e)),q(ir(e)))}function Qo(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Qo(e,r)}function S(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)Qo(o,n);return o}function ar(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function gt(e){let t=S("script",{src:e});return H(()=>(document.head.appendChild(t),L(h(t,"load"),h(t,"error").pipe(w(()=>kr(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),A(()=>document.head.removeChild(t)),ue(1))))}var Yo=new x,pa=H(()=>typeof ResizeObserver=="undefined"?gt("https://unpkg.com/resize-observer-polyfill"):R(void 0)).pipe(m(()=>new ResizeObserver(e=>{for(let t of e)Yo.next(t)})),w(e=>L(Ke,R(e)).pipe(A(()=>e.disconnect()))),Z(1));function le(e){return{width:e.offsetWidth,height:e.offsetHeight}}function Se(e){return pa.pipe(T(t=>t.observe(e)),w(t=>Yo.pipe(v(({target:r})=>r===e),A(()=>t.unobserve(e)),m(()=>le(e)))),q(le(e)))}function xt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function sr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Bo=new x,la=H(()=>R(new IntersectionObserver(e=>{for(let t of e)Bo.next(t)},{threshold:0}))).pipe(w(e=>L(Ke,R(e)).pipe(A(()=>e.disconnect()))),Z(1));function yt(e){return la.pipe(T(t=>t.observe(e)),w(t=>Bo.pipe(v(({target:r})=>r===e),A(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Go(e,t=16){return et(e).pipe(m(({y:r})=>{let o=le(e),n=xt(e);return r>=n.height-o.height-t}),X())}var cr={drawer:U("[data-md-toggle=drawer]"),search:U("[data-md-toggle=search]")};function Jo(e){return cr[e].checked}function Ye(e,t){cr[e].checked!==t&&cr[e].click()}function Ne(e){let t=cr[e];return h(t,"change").pipe(m(()=>t.checked),q(t.checked))}function ma(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function fa(){return L(h(window,"compositionstart").pipe(m(()=>!0)),h(window,"compositionend").pipe(m(()=>!1))).pipe(q(!1))}function Xo(){let e=h(window,"keydown").pipe(v(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:Jo("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),v(({mode:t,type:r})=>{if(t==="global"){let o=Ie();if(typeof o!="undefined")return!ma(o,r)}return!0}),de());return fa().pipe(w(t=>t?M:e))}function me(){return new URL(location.href)}function st(e,t=!1){if(G("navigation.instant")&&!t){let r=S("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function Zo(){return new x}function en(){return location.hash.slice(1)}function pr(e){let t=S("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function ua(e){return L(h(window,"hashchange"),e).pipe(m(en),q(en()),v(t=>t.length>0),Z(1))}function tn(e){return ua(e).pipe(m(t=>ce(`[id="${t}"]`)),v(t=>typeof t!="undefined"))}function At(e){let t=matchMedia(e);return nr(r=>t.addListener(()=>r(t.matches))).pipe(q(t.matches))}function rn(){let e=matchMedia("print");return L(h(window,"beforeprint").pipe(m(()=>!0)),h(window,"afterprint").pipe(m(()=>!1))).pipe(q(e.matches))}function Dr(e,t){return e.pipe(w(r=>r?t():M))}function lr(e,t){return new I(r=>{let o=new XMLHttpRequest;o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network Error"))}),o.addEventListener("abort",()=>{r.error(new Error("Request aborted"))}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let i=Number(o.getResponseHeader("Content-Length"))||0;t.progress$.next(n.loaded/i*100)}}),t.progress$.next(5)),o.send()})}function De(e,t){return lr(e,t).pipe(w(r=>r.text()),m(r=>JSON.parse(r)),Z(1))}function on(e,t){let r=new DOMParser;return lr(e,t).pipe(w(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),Z(1))}function nn(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function an(){return L(h(window,"scroll",{passive:!0}),h(window,"resize",{passive:!0})).pipe(m(nn),q(nn()))}function sn(){return{width:innerWidth,height:innerHeight}}function cn(){return h(window,"resize",{passive:!0}).pipe(m(sn),q(sn()))}function pn(){return B([an(),cn()]).pipe(m(([e,t])=>({offset:e,size:t})),Z(1))}function mr(e,{viewport$:t,header$:r}){let o=t.pipe(te("size")),n=B([o,r]).pipe(m(()=>Ue(e)));return B([r,t,n]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:p}])=>({offset:{x:s.x-c,y:s.y-p+i},size:a})))}function da(e){return h(e,"message",t=>t.data)}function ha(e){let t=new x;return t.subscribe(r=>e.postMessage(r)),t}function ln(e,t=new Worker(e)){let r=da(t),o=ha(t),n=new x;n.subscribe(o);let i=o.pipe(ee(),oe(!0));return n.pipe(ee(),Re(r.pipe(j(i))),de())}var ba=U("#__config"),Et=JSON.parse(ba.textContent);Et.base=`${new URL(Et.base,me())}`;function he(){return Et}function G(e){return Et.features.includes(e)}function we(e,t){return typeof t!="undefined"?Et.translations[e].replace("#",t.toString()):Et.translations[e]}function Oe(e,t=document){return U(`[data-md-component=${e}]`,t)}function ne(e,t=document){return W(`[data-md-component=${e}]`,t)}function va(e){let t=U(".md-typeset > :first-child",e);return h(t,"click",{once:!0}).pipe(m(()=>U(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function mn(e){if(!G("announce.dismiss")||!e.childElementCount)return M;if(!e.hidden){let t=U(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return H(()=>{let t=new x;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),va(e).pipe(T(r=>t.next(r)),A(()=>t.complete()),m(r=>P({ref:e},r)))})}function ga(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function fn(e,t){let r=new x;return r.subscribe(({hidden:o})=>{e.hidden=o}),ga(e,t).pipe(T(o=>r.next(o)),A(()=>r.complete()),m(o=>P({ref:e},o)))}function Ct(e,t){return t==="inline"?S("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},S("div",{class:"md-tooltip__inner md-typeset"})):S("div",{class:"md-tooltip",id:e,role:"tooltip"},S("div",{class:"md-tooltip__inner md-typeset"}))}function un(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return S("aside",{class:"md-annotation",tabIndex:0},Ct(t),S("a",{href:r,class:"md-annotation__index",tabIndex:-1},S("span",{"data-md-annotation-id":e})))}else return S("aside",{class:"md-annotation",tabIndex:0},Ct(t),S("span",{class:"md-annotation__index",tabIndex:-1},S("span",{"data-md-annotation-id":e})))}function dn(e){return S("button",{class:"md-clipboard md-icon",title:we("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Vr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(c=>!e.terms[c]).reduce((c,p)=>[...c,S("del",null,p)," "],[]).slice(0,-1),i=he(),s=new URL(e.location,i.base);G("search.highlight")&&s.searchParams.set("h",Object.entries(e.terms).filter(([,c])=>c).reduce((c,[p])=>`${c} ${p}`.trim(),""));let{tags:a}=he();return S("a",{href:`${s}`,class:"md-search-result__link",tabIndex:-1},S("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&S("div",{class:"md-search-result__icon md-icon"}),r>0&&S("h1",null,e.title),r<=0&&S("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(c=>{let p=a?c in a?`md-tag-icon md-tag--${a[c]}`:"md-tag-icon":"";return S("span",{class:`md-tag ${p}`},c)}),o>0&&n.length>0&&S("p",{class:"md-search-result__terms"},we("search.result.term.missing"),": ",...n)))}function hn(e){let t=e[0].score,r=[...e],o=he(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),s=r.findIndex(l=>l.scoreVr(l,1)),...c.length?[S("details",{class:"md-search-result__more"},S("summary",{tabIndex:-1},S("div",null,c.length>0&&c.length===1?we("search.result.more.one"):we("search.result.more.other",c.length))),...c.map(l=>Vr(l,1)))]:[]];return S("li",{class:"md-search-result__item"},p)}function bn(e){return S("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>S("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?ar(r):r)))}function zr(e){let t=`tabbed-control tabbed-control--${e}`;return S("div",{class:t,hidden:!0},S("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function vn(e){return S("div",{class:"md-typeset__scrollwrap"},S("div",{class:"md-typeset__table"},e))}function xa(e){let t=he(),r=new URL(`../${e.version}/`,t.base);return S("li",{class:"md-version__item"},S("a",{href:`${r}`,class:"md-version__link"},e.title))}function gn(e,t){return S("div",{class:"md-version"},S("button",{class:"md-version__current","aria-label":we("select.version")},t.title),S("ul",{class:"md-version__list"},e.map(xa)))}var ya=0;function Ea(e,t){document.body.append(e);let{width:r}=le(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=sr(t),n=typeof o!="undefined"?et(o):R({x:0,y:0}),i=L(vt(t),qo(t)).pipe(X());return B([i,n]).pipe(m(([s,a])=>{let{x:c,y:p}=Ue(t),l=le(t),f=t.closest("table");return f&&t.parentElement&&(c+=f.offsetLeft+t.parentElement.offsetLeft,p+=f.offsetTop+t.parentElement.offsetTop),{active:s,offset:{x:c-a.x+l.width/2-r/2,y:p-a.y+l.height+8}}}))}function Be(e){let t=e.title;if(!t.length)return M;let r=`__tooltip_${ya++}`,o=Ct(r,"inline"),n=U(".md-typeset",o);return n.innerHTML=t,H(()=>{let i=new x;return i.subscribe({next({offset:s}){o.style.setProperty("--md-tooltip-x",`${s.x}px`),o.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),L(i.pipe(v(({active:s})=>s)),i.pipe(ye(250),v(({active:s})=>!s))).subscribe({next({active:s}){s?(e.insertAdjacentElement("afterend",o),e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe(Le(16,ge)).subscribe(({active:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(_t(125,ge),v(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?o.style.setProperty("--md-tooltip-0",`${-s}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),Ea(o,e).pipe(T(s=>i.next(s)),A(()=>i.complete()),m(s=>P({ref:e},s)))}).pipe(qe(ie))}function wa(e,t){let r=H(()=>B([Ko(e),et(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:s,height:a}=le(e);return{x:o-i.x+s/2,y:n-i.y+a/2}}));return vt(e).pipe(w(o=>r.pipe(m(n=>({active:o,offset:n})),ue(+!o||1/0))))}function xn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return H(()=>{let i=new x,s=i.pipe(ee(),oe(!0));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),yt(e).pipe(j(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),L(i.pipe(v(({active:a})=>a)),i.pipe(ye(250),v(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Le(16,ge)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(_t(125,ge),v(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),h(n,"click").pipe(j(s),v(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>{a.stopPropagation(),a.preventDefault()}),h(n,"mousedown").pipe(j(s),ae(i)).subscribe(([a,{active:c}])=>{var p;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(p=Ie())==null||p.blur()}}),r.pipe(j(s),v(a=>a===o),Qe(125)).subscribe(()=>e.focus()),wa(e,t).pipe(T(a=>i.next(a)),A(()=>i.complete()),m(a=>P({ref:e},a)))})}function Ta(e){return e.tagName==="CODE"?W(".c, .c1, .cm",e):[e]}function Sa(e){let t=[];for(let r of Ta(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let p=i.splitText(s.index);i=p.splitText(a.length),t.push(p)}else{i.textContent=a,t.push(i);break}}}}return t}function yn(e,t){t.append(...Array.from(e.childNodes))}function fr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,s=new Map;for(let a of Sa(t)){let[,c]=a.textContent.match(/\((\d+)\)/);ce(`:scope > li:nth-child(${c})`,e)&&(s.set(c,un(c,i)),a.replaceWith(s.get(c)))}return s.size===0?M:H(()=>{let a=new x,c=a.pipe(ee(),oe(!0)),p=[];for(let[l,f]of s)p.push([U(".md-typeset",f),U(`:scope > li:nth-child(${l})`,e)]);return o.pipe(j(c)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of p)l?yn(f,u):yn(u,f)}),L(...[...s].map(([,l])=>xn(l,t,{target$:r}))).pipe(A(()=>a.complete()),de())})}function En(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return En(t)}}function wn(e,t){return H(()=>{let r=En(e);return typeof r!="undefined"?fr(r,e,t):M})}var Tn=jt(Kr());var Oa=0;function Sn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return Sn(t)}}function Ma(e){return Se(e).pipe(m(({width:t})=>({scrollable:xt(e).width>t})),te("scrollable"))}function On(e,t){let{matches:r}=matchMedia("(hover)"),o=H(()=>{let n=new x,i=n.pipe(Rr(1));n.subscribe(({scrollable:c})=>{c&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let s=[];if(Tn.default.isSupported()&&(e.closest(".copy")||G("content.code.copy")&&!e.closest(".no-copy"))){let c=e.closest("pre");c.id=`__code_${Oa++}`;let p=dn(c.id);c.insertBefore(p,e),G("content.tooltips")&&s.push(Be(p))}let a=e.closest(".highlight");if(a instanceof HTMLElement){let c=Sn(a);if(typeof c!="undefined"&&(a.classList.contains("annotate")||G("content.code.annotate"))){let p=fr(c,e,t);s.push(Se(a).pipe(j(i),m(({width:l,height:f})=>l&&f),X(),w(l=>l?p:M)))}}return Ma(e).pipe(T(c=>n.next(c)),A(()=>n.complete()),m(c=>P({ref:e},c)),Re(...s))});return G("content.lazy")?yt(e).pipe(v(n=>n),ue(1),w(()=>o)):o}function La(e,{target$:t,print$:r}){let o=!0;return L(t.pipe(m(n=>n.closest("details:not([open])")),v(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(v(n=>n||!o),T(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Mn(e,t){return H(()=>{let r=new x;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),La(e,t).pipe(T(o=>r.next(o)),A(()=>r.complete()),m(o=>P({ref:e},o)))})}var Ln=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var Qr,Aa=0;function Ca(){return typeof mermaid=="undefined"||mermaid instanceof Element?gt("https://unpkg.com/mermaid@10.6.1/dist/mermaid.min.js"):R(void 0)}function _n(e){return e.classList.remove("mermaid"),Qr||(Qr=Ca().pipe(T(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Ln,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),Z(1))),Qr.subscribe(()=>no(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${Aa++}`,r=S("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),s=r.attachShadow({mode:"closed"});s.innerHTML=n,e.replaceWith(r),i==null||i(s)})),Qr.pipe(m(()=>({ref:e})))}var An=S("table");function Cn(e){return e.replaceWith(An),An.replaceWith(vn(e)),R({ref:e})}function ka(e){let t=e.find(r=>r.checked)||e[0];return L(...e.map(r=>h(r,"change").pipe(m(()=>U(`label[for="${r.id}"]`))))).pipe(q(U(`label[for="${t.id}"]`)),m(r=>({active:r})))}function kn(e,{viewport$:t,target$:r}){let o=U(".tabbed-labels",e),n=W(":scope > input",e),i=zr("prev");e.append(i);let s=zr("next");return e.append(s),H(()=>{let a=new x,c=a.pipe(ee(),oe(!0));B([a,Se(e)]).pipe(j(c),Le(1,ge)).subscribe({next([{active:p},l]){let f=Ue(p),{width:u}=le(p);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let d=ir(o);(f.xd.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),B([et(o),Se(o)]).pipe(j(c)).subscribe(([p,l])=>{let f=xt(o);i.hidden=p.x<16,s.hidden=p.x>f.width-l.width-16}),L(h(i,"click").pipe(m(()=>-1)),h(s,"click").pipe(m(()=>1))).pipe(j(c)).subscribe(p=>{let{width:l}=le(o);o.scrollBy({left:l*p,behavior:"smooth"})}),r.pipe(j(c),v(p=>n.includes(p))).subscribe(p=>p.click()),o.classList.add("tabbed-labels--linked");for(let p of n){let l=U(`label[for="${p.id}"]`);l.replaceChildren(S("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),h(l.firstElementChild,"click").pipe(j(c),v(f=>!(f.metaKey||f.ctrlKey)),T(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return G("content.tabs.link")&&a.pipe(Ee(1),ae(t)).subscribe(([{active:p},{offset:l}])=>{let f=p.innerText.trim();if(p.hasAttribute("data-md-switching"))p.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let y of W("[data-tabs]"))for(let b of W(":scope > input",y)){let D=U(`label[for="${b.id}"]`);if(D!==p&&D.innerText.trim()===f){D.setAttribute("data-md-switching",""),b.click();break}}window.scrollTo({top:e.offsetTop-u});let d=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...d])])}}),a.pipe(j(c)).subscribe(()=>{for(let p of W("audio, video",e))p.pause()}),ka(n).pipe(T(p=>a.next(p)),A(()=>a.complete()),m(p=>P({ref:e},p)))}).pipe(qe(ie))}function Hn(e,{viewport$:t,target$:r,print$:o}){return L(...W(".annotate:not(.highlight)",e).map(n=>wn(n,{target$:r,print$:o})),...W("pre:not(.mermaid) > code",e).map(n=>On(n,{target$:r,print$:o})),...W("pre.mermaid",e).map(n=>_n(n)),...W("table:not([class])",e).map(n=>Cn(n)),...W("details",e).map(n=>Mn(n,{target$:r,print$:o})),...W("[data-tabs]",e).map(n=>kn(n,{viewport$:t,target$:r})),...W("[title]",e).filter(()=>G("content.tooltips")).map(n=>Be(n)))}function Ha(e,{alert$:t}){return t.pipe(w(r=>L(R(!0),R(!1).pipe(Qe(2e3))).pipe(m(o=>({message:r,active:o})))))}function $n(e,t){let r=U(".md-typeset",e);return H(()=>{let o=new x;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),Ha(e,t).pipe(T(n=>o.next(n)),A(()=>o.complete()),m(n=>P({ref:e},n)))})}function $a({viewport$:e}){if(!G("header.autohide"))return R(!1);let t=e.pipe(m(({offset:{y:n}})=>n),Ce(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),X()),o=Ne("search");return B([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),X(),w(n=>n?r:R(!1)),q(!1))}function Pn(e,t){return H(()=>B([Se(e),$a(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),X((r,o)=>r.height===o.height&&r.hidden===o.hidden),Z(1))}function Rn(e,{header$:t,main$:r}){return H(()=>{let o=new x,n=o.pipe(ee(),oe(!0));o.pipe(te("active"),Ze(t)).subscribe(([{active:s},{hidden:a}])=>{e.classList.toggle("md-header--shadow",s&&!a),e.hidden=a});let i=fe(W("[title]",e)).pipe(v(()=>G("content.tooltips")),re(s=>Be(s)));return r.subscribe(o),t.pipe(j(n),m(s=>P({ref:e},s)),Re(i.pipe(j(n))))})}function Pa(e,{viewport$:t,header$:r}){return mr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=le(e);return{active:o>=n}}),te("active"))}function In(e,t){return H(()=>{let r=new x;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=ce(".md-content h1");return typeof o=="undefined"?M:Pa(o,t).pipe(T(n=>r.next(n)),A(()=>r.complete()),m(n=>P({ref:e},n)))})}function Fn(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),X()),n=o.pipe(w(()=>Se(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),te("bottom"))));return B([o,n,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:p}}])=>(p=Math.max(0,p-Math.max(0,s-c,i)-Math.max(0,p+c-a)),{offset:s-i,height:p,active:s-i<=c})),X((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function Ra(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return R(...e).pipe(re(r=>h(r,"change").pipe(m(()=>r))),q(e[Math.max(0,t.index)]),m(r=>({index:e.indexOf(r),color:{media:r.getAttribute("data-md-color-media"),scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),Z(1))}function jn(e){let t=W("input",e),r=S("meta",{name:"theme-color"});document.head.appendChild(r);let o=S("meta",{name:"color-scheme"});document.head.appendChild(o);let n=At("(prefers-color-scheme: light)");return H(()=>{let i=new x;return i.subscribe(s=>{if(document.body.setAttribute("data-md-color-switching",""),s.color.media==="(prefers-color-scheme)"){let a=matchMedia("(prefers-color-scheme: light)"),c=document.querySelector(a.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");s.color.scheme=c.getAttribute("data-md-color-scheme"),s.color.primary=c.getAttribute("data-md-color-primary"),s.color.accent=c.getAttribute("data-md-color-accent")}for(let[a,c]of Object.entries(s.color))document.body.setAttribute(`data-md-color-${a}`,c);for(let a=0;a{let s=Oe("header"),a=window.getComputedStyle(s);return o.content=a.colorScheme,a.backgroundColor.match(/\d+/g).map(c=>(+c).toString(16).padStart(2,"0")).join("")})).subscribe(s=>r.content=`#${s}`),i.pipe(Me(ie)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),Ra(t).pipe(j(n.pipe(Ee(1))),at(),T(s=>i.next(s)),A(()=>i.complete()),m(s=>P({ref:e},s)))})}function Wn(e,{progress$:t}){return H(()=>{let r=new x;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(T(o=>r.next({value:o})),A(()=>r.complete()),m(o=>({ref:e,value:o})))})}var Yr=jt(Kr());function Ia(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function Un({alert$:e}){Yr.default.isSupported()&&new I(t=>{new Yr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||Ia(U(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(T(t=>{t.trigger.focus()}),m(()=>we("clipboard.copied"))).subscribe(e)}function Fa(e){if(e.length<2)return[""];let[t,r]=[...e].sort((n,i)=>n.length-i.length).map(n=>n.replace(/[^/]+$/,"")),o=0;if(t===r)o=t.length;else for(;t.charCodeAt(o)===r.charCodeAt(o);)o++;return e.map(n=>n.replace(t.slice(0,o),""))}function ur(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return R(t);{let r=he();return on(new URL("sitemap.xml",e||r.base)).pipe(m(o=>Fa(W("loc",o).map(n=>n.textContent))),xe(()=>M),$e([]),T(o=>__md_set("__sitemap",o,sessionStorage,e)))}}function Nn(e){let t=ce("[rel=canonical]",e);typeof t!="undefined"&&(t.href=t.href.replace("//localhost:","//127.0.0.1:"));let r=new Map;for(let o of W(":scope > *",e)){let n=o.outerHTML;for(let i of["href","src"]){let s=o.getAttribute(i);if(s===null)continue;let a=new URL(s,t==null?void 0:t.href),c=o.cloneNode();c.setAttribute(i,`${a}`),n=c.outerHTML;break}r.set(n,o)}return r}function Dn({location$:e,viewport$:t,progress$:r}){let o=he();if(location.protocol==="file:")return M;let n=ur().pipe(m(l=>l.map(f=>`${new URL(f,o.base)}`))),i=h(document.body,"click").pipe(ae(n),w(([l,f])=>{if(!(l.target instanceof Element))return M;let u=l.target.closest("a");if(u===null)return M;if(u.target||l.metaKey||l.ctrlKey)return M;let d=new URL(u.href);return d.search=d.hash="",f.includes(`${d}`)?(l.preventDefault(),R(new URL(u.href))):M}),de());i.pipe(ue(1)).subscribe(()=>{let l=ce("link[rel=icon]");typeof l!="undefined"&&(l.href=l.href)}),h(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),i.pipe(ae(t)).subscribe(([l,{offset:f}])=>{history.scrollRestoration="manual",history.replaceState(f,""),history.pushState(null,"",l)}),i.subscribe(e);let s=e.pipe(q(me()),te("pathname"),Ee(1),w(l=>lr(l,{progress$:r}).pipe(xe(()=>(st(l,!0),M))))),a=new DOMParser,c=s.pipe(w(l=>l.text()),w(l=>{let f=a.parseFromString(l,"text/html");for(let b of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...G("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let D=ce(b),Q=ce(b,f);typeof D!="undefined"&&typeof Q!="undefined"&&D.replaceWith(Q)}let u=Nn(document.head),d=Nn(f.head);for(let[b,D]of d)D.getAttribute("rel")==="stylesheet"||D.hasAttribute("src")||(u.has(b)?u.delete(b):document.head.appendChild(D));for(let b of u.values())b.getAttribute("rel")==="stylesheet"||b.hasAttribute("src")||b.remove();let y=Oe("container");return We(W("script",y)).pipe(w(b=>{let D=f.createElement("script");if(b.src){for(let Q of b.getAttributeNames())D.setAttribute(Q,b.getAttribute(Q));return b.replaceWith(D),new I(Q=>{D.onload=()=>Q.complete()})}else return D.textContent=b.textContent,b.replaceWith(D),M}),ee(),oe(f))}),de());return h(window,"popstate").pipe(m(me)).subscribe(e),e.pipe(q(me()),Ce(2,1),v(([l,f])=>l.pathname===f.pathname&&l.hash!==f.hash),m(([,l])=>l)).subscribe(l=>{var f,u;history.state!==null||!l.hash?window.scrollTo(0,(u=(f=history.state)==null?void 0:f.y)!=null?u:0):(history.scrollRestoration="auto",pr(l.hash),history.scrollRestoration="manual")}),e.pipe(Ir(i),q(me()),Ce(2,1),v(([l,f])=>l.pathname===f.pathname&&l.hash===f.hash),m(([,l])=>l)).subscribe(l=>{history.scrollRestoration="auto",pr(l.hash),history.scrollRestoration="manual",history.back()}),c.pipe(ae(e)).subscribe(([,l])=>{var f,u;history.state!==null||!l.hash?window.scrollTo(0,(u=(f=history.state)==null?void 0:f.y)!=null?u:0):pr(l.hash)}),t.pipe(te("offset"),ye(100)).subscribe(({offset:l})=>{history.replaceState(l,"")}),c}var qn=jt(zn());function Kn(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,s)=>`${i}${s}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(0,qn.default)(s).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function Ht(e){return e.type===1}function dr(e){return e.type===3}function Qn(e,t){let r=ln(e);return L(R(location.protocol!=="file:"),Ne("search")).pipe(Pe(o=>o),w(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:G("search.suggest")}}})),r}function Yn({document$:e}){let t=he(),r=De(new URL("../versions.json",t.base)).pipe(xe(()=>M)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:s,aliases:a})=>s===i||a.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),w(n=>h(document.body,"click").pipe(v(i=>!i.metaKey&&!i.ctrlKey),ae(o),w(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&n.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&n.get(c)===s?M:(i.preventDefault(),R(c))}}return M}),w(i=>{let{version:s}=n.get(i);return ur(new URL(i)).pipe(m(a=>{let p=me().href.replace(t.base,"");return a.includes(p.split("#")[0])?new URL(`../${s}/${p}`,t.base):new URL(i)}))})))).subscribe(n=>st(n,!0)),B([r,o]).subscribe(([n,i])=>{U(".md-header__topic").appendChild(gn(n,i))}),e.pipe(w(()=>o)).subscribe(n=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let a=((s=t.version)==null?void 0:s.default)||"latest";Array.isArray(a)||(a=[a]);e:for(let c of a)for(let p of n.aliases.concat(n.version))if(new RegExp(c,"i").test(p)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let a of ne("outdated"))a.hidden=!1})}function Da(e,{worker$:t}){let{searchParams:r}=me();r.has("q")&&(Ye("search",!0),e.value=r.get("q"),e.focus(),Ne("search").pipe(Pe(i=>!i)).subscribe(()=>{let i=me();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=vt(e),n=L(t.pipe(Pe(Ht)),h(e,"keyup"),o).pipe(m(()=>e.value),X());return B([n,o]).pipe(m(([i,s])=>({value:i,focus:s})),Z(1))}function Bn(e,{worker$:t}){let r=new x,o=r.pipe(ee(),oe(!0));B([t.pipe(Pe(Ht)),r],(i,s)=>s).pipe(te("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(te("focus")).subscribe(({focus:i})=>{i&&Ye("search",i)}),h(e.form,"reset").pipe(j(o)).subscribe(()=>e.focus());let n=U("header [for=__search]");return h(n,"click").subscribe(()=>e.focus()),Da(e,{worker$:t}).pipe(T(i=>r.next(i)),A(()=>r.complete()),m(i=>P({ref:e},i)),Z(1))}function Gn(e,{worker$:t,query$:r}){let o=new x,n=Go(e.parentElement).pipe(v(Boolean)),i=e.parentElement,s=U(":scope > :first-child",e),a=U(":scope > :last-child",e);Ne("search").subscribe(l=>a.setAttribute("role",l?"list":"presentation")),o.pipe(ae(r),Wr(t.pipe(Pe(Ht)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:s.textContent=f.length?we("search.result.none"):we("search.result.placeholder");break;case 1:s.textContent=we("search.result.one");break;default:let u=ar(l.length);s.textContent=we("search.result.other",u)}});let c=o.pipe(T(()=>a.innerHTML=""),w(({items:l})=>L(R(...l.slice(0,10)),R(...l.slice(10)).pipe(Ce(4),Nr(n),w(([f])=>f)))),m(hn),de());return c.subscribe(l=>a.appendChild(l)),c.pipe(re(l=>{let f=ce("details",l);return typeof f=="undefined"?M:h(f,"toggle").pipe(j(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(v(dr),m(({data:l})=>l)).pipe(T(l=>o.next(l)),A(()=>o.complete()),m(l=>P({ref:e},l)))}function Va(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=me();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function Jn(e,t){let r=new x,o=r.pipe(ee(),oe(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),h(e,"click").pipe(j(o)).subscribe(n=>n.preventDefault()),Va(e,t).pipe(T(n=>r.next(n)),A(()=>r.complete()),m(n=>P({ref:e},n)))}function Xn(e,{worker$:t,keyboard$:r}){let o=new x,n=Oe("search-query"),i=L(h(n,"keydown"),h(n,"focus")).pipe(Me(ie),m(()=>n.value),X());return o.pipe(Ze(i),m(([{suggest:a},c])=>{let p=c.split(/([\s-]+)/);if(a!=null&&a.length&&p[p.length-1]){let l=a[a.length-1];l.startsWith(p[p.length-1])&&(p[p.length-1]=l)}else p.length=0;return p})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(v(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(v(dr),m(({data:a})=>a)).pipe(T(a=>o.next(a)),A(()=>o.complete()),m(()=>({ref:e})))}function Zn(e,{index$:t,keyboard$:r}){let o=he();try{let n=Qn(o.search,t),i=Oe("search-query",e),s=Oe("search-result",e);h(e,"click").pipe(v(({target:c})=>c instanceof Element&&!!c.closest("a"))).subscribe(()=>Ye("search",!1)),r.pipe(v(({mode:c})=>c==="search")).subscribe(c=>{let p=Ie();switch(c.type){case"Enter":if(p===i){let l=new Map;for(let f of W(":first-child [href]",s)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,d])=>d-u);f.click()}c.claim()}break;case"Escape":case"Tab":Ye("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof p=="undefined")i.focus();else{let l=[i,...W(":not(details) > [href], summary, details[open] [href]",s)],f=Math.max(0,(Math.max(0,l.indexOf(p))+l.length+(c.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}c.claim();break;default:i!==Ie()&&i.focus()}}),r.pipe(v(({mode:c})=>c==="global")).subscribe(c=>{switch(c.type){case"f":case"s":case"/":i.focus(),i.select(),c.claim();break}});let a=Bn(i,{worker$:n});return L(a,Gn(s,{worker$:n,query$:a})).pipe(Re(...ne("search-share",e).map(c=>Jn(c,{query$:a})),...ne("search-suggest",e).map(c=>Xn(c,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,Ke}}function ei(e,{index$:t,location$:r}){return B([t,r.pipe(q(me()),v(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>Kn(o.config)(n.searchParams.get("h"))),m(o=>{var s;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,p=o(c);p.length>c.length&&n.set(a,p)}for(let[a,c]of n){let{childNodes:p}=S("span",null,c);a.replaceWith(...Array.from(p))}return{ref:e,nodes:n}}))}function za(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return B([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(n,Math.max(0,a-i))-n,{height:s,locked:a>=i+n})),X((i,s)=>i.height===s.height&&i.locked===s.locked))}function Br(e,o){var n=o,{header$:t}=n,r=oo(n,["header$"]);let i=U(".md-sidebar__scrollwrap",e),{y:s}=Ue(i);return H(()=>{let a=new x,c=a.pipe(ee(),oe(!0)),p=a.pipe(Le(0,ge));return p.pipe(ae(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),p.pipe(Pe()).subscribe(()=>{for(let l of W(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=le(f);f.scrollTo({top:u-d/2})}}}),fe(W("label[tabindex]",e)).pipe(re(l=>h(l,"click").pipe(Me(ie),m(()=>l),j(c)))).subscribe(l=>{let f=U(`[id="${l.htmlFor}"]`);U(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),za(e,r).pipe(T(l=>a.next(l)),A(()=>a.complete()),m(l=>P({ref:e},l)))})}function ti(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return Lt(De(`${r}/releases/latest`).pipe(xe(()=>M),m(o=>({version:o.tag_name})),$e({})),De(r).pipe(xe(()=>M),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),$e({}))).pipe(m(([o,n])=>P(P({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return De(r).pipe(m(o=>({repositories:o.public_repos})),$e({}))}}function ri(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return De(r).pipe(xe(()=>M),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),$e({}))}function oi(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return ti(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return ri(r,o)}return M}var qa;function Ka(e){return qa||(qa=H(()=>{let t=__md_get("__source",sessionStorage);if(t)return R(t);if(ne("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return M}return oi(e.href).pipe(T(o=>__md_set("__source",o,sessionStorage)))}).pipe(xe(()=>M),v(t=>Object.keys(t).length>0),m(t=>({facts:t})),Z(1)))}function ni(e){let t=U(":scope > :last-child",e);return H(()=>{let r=new x;return r.subscribe(({facts:o})=>{t.appendChild(bn(o)),t.classList.add("md-source__repository--active")}),Ka(e).pipe(T(o=>r.next(o)),A(()=>r.complete()),m(o=>P({ref:e},o)))})}function Qa(e,{viewport$:t,header$:r}){return Se(document.body).pipe(w(()=>mr(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),te("hidden"))}function ii(e,t){return H(()=>{let r=new x;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(G("navigation.tabs.sticky")?R({hidden:!1}):Qa(e,t)).pipe(T(o=>r.next(o)),A(()=>r.complete()),m(o=>P({ref:e},o)))})}function Ya(e,{viewport$:t,header$:r}){let o=new Map,n=W("[href^=\\#]",e);for(let a of n){let c=decodeURIComponent(a.hash.substring(1)),p=ce(`[id="${c}"]`);typeof p!="undefined"&&o.set(a,p)}let i=r.pipe(te("height"),m(({height:a})=>{let c=Oe("main"),p=U(":scope > :first-child",c);return a+.8*(p.offsetTop-c.offsetTop)}),de());return Se(document.body).pipe(te("height"),w(a=>H(()=>{let c=[];return R([...o].reduce((p,[l,f])=>{for(;c.length&&o.get(c[c.length-1]).tagName>=f.tagName;)c.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let d=f.offsetParent;for(;d;d=d.offsetParent)u+=d.offsetTop;return p.set([...c=[...c,l]].reverse(),u)},new Map))}).pipe(m(c=>new Map([...c].sort(([,p],[,l])=>p-l))),Ze(i),w(([c,p])=>t.pipe(Fr(([l,f],{offset:{y:u},size:d})=>{let y=u+d.height>=Math.floor(a.height);for(;f.length;){let[,b]=f[0];if(b-p=u&&!y)f=[l.pop(),...f];else break}return[l,f]},[[],[...c]]),X((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([a,c])=>({prev:a.map(([p])=>p),next:c.map(([p])=>p)})),q({prev:[],next:[]}),Ce(2,1),m(([a,c])=>a.prev.length{let i=new x,s=i.pipe(ee(),oe(!0));if(i.subscribe(({prev:a,next:c})=>{for(let[p]of c)p.classList.remove("md-nav__link--passed"),p.classList.remove("md-nav__link--active");for(let[p,[l]]of a.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",p===a.length-1)}),G("toc.follow")){let a=L(t.pipe(ye(1),m(()=>{})),t.pipe(ye(250),m(()=>"smooth")));i.pipe(v(({prev:c})=>c.length>0),Ze(o.pipe(Me(ie))),ae(a)).subscribe(([[{prev:c}],p])=>{let[l]=c[c.length-1];if(l.offsetHeight){let f=sr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=le(f);f.scrollTo({top:u-d/2,behavior:p})}}})}return G("navigation.tracking")&&t.pipe(j(s),te("offset"),ye(250),Ee(1),j(n.pipe(Ee(1))),at({delay:250}),ae(i)).subscribe(([,{prev:a}])=>{let c=me(),p=a[a.length-1];if(p&&p.length){let[l]=p,{hash:f}=new URL(l.href);c.hash!==f&&(c.hash=f,history.replaceState({},"",`${c}`))}else c.hash="",history.replaceState({},"",`${c}`)}),Ya(e,{viewport$:t,header$:r}).pipe(T(a=>i.next(a)),A(()=>i.complete()),m(a=>P({ref:e},a)))})}function Ba(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:s}})=>s),Ce(2,1),m(([s,a])=>s>a&&a>0),X()),i=r.pipe(m(({active:s})=>s));return B([i,n]).pipe(m(([s,a])=>!(s&&a)),X(),j(o.pipe(Ee(1))),oe(!0),at({delay:250}),m(s=>({hidden:s})))}function si(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new x,s=i.pipe(ee(),oe(!0));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(j(s),te("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),h(e,"click").subscribe(a=>{a.preventDefault(),window.scrollTo({top:0})}),Ba(e,{viewport$:t,main$:o,target$:n}).pipe(T(a=>i.next(a)),A(()=>i.complete()),m(a=>P({ref:e},a)))}function ci({document$:e}){e.pipe(w(()=>W(".md-ellipsis")),re(t=>yt(t).pipe(j(e.pipe(Ee(1))),v(r=>r),m(()=>t),ue(1))),v(t=>t.offsetWidth{let r=t.innerText,o=t.closest("a")||t;return o.title=r,Be(o).pipe(j(e.pipe(Ee(1))),A(()=>o.removeAttribute("title")))})).subscribe(),e.pipe(w(()=>W(".md-status")),re(t=>Be(t))).subscribe()}function pi({document$:e,tablet$:t}){e.pipe(w(()=>W(".md-toggle--indeterminate")),T(r=>{r.indeterminate=!0,r.checked=!1}),re(r=>h(r,"change").pipe(Ur(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ae(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function Ga(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function li({document$:e}){e.pipe(w(()=>W("[data-md-scrollfix]")),T(t=>t.removeAttribute("data-md-scrollfix")),v(Ga),re(t=>h(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function mi({viewport$:e,tablet$:t}){B([Ne("search"),t]).pipe(m(([r,o])=>r&&!o),w(r=>R(r).pipe(Qe(r?400:100))),ae(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function Ja(){return location.protocol==="file:"?gt(`${new URL("search/search_index.js",Gr.base)}`).pipe(m(()=>__index),Z(1)):De(new URL("search/search_index.json",Gr.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var rt=zo(),Pt=Zo(),wt=tn(Pt),Jr=Xo(),_e=pn(),hr=At("(min-width: 960px)"),ui=At("(min-width: 1220px)"),di=rn(),Gr=he(),hi=document.forms.namedItem("search")?Ja():Ke,Xr=new x;Un({alert$:Xr});var Zr=new x;G("navigation.instant")&&Dn({location$:Pt,viewport$:_e,progress$:Zr}).subscribe(rt);var fi;((fi=Gr.version)==null?void 0:fi.provider)==="mike"&&Yn({document$:rt});L(Pt,wt).pipe(Qe(125)).subscribe(()=>{Ye("drawer",!1),Ye("search",!1)});Jr.pipe(v(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=ce("link[rel=prev]");typeof t!="undefined"&&st(t);break;case"n":case".":let r=ce("link[rel=next]");typeof r!="undefined"&&st(r);break;case"Enter":let o=Ie();o instanceof HTMLLabelElement&&o.click()}});ci({document$:rt});pi({document$:rt,tablet$:hr});li({document$:rt});mi({viewport$:_e,tablet$:hr});var tt=Pn(Oe("header"),{viewport$:_e}),$t=rt.pipe(m(()=>Oe("main")),w(e=>Fn(e,{viewport$:_e,header$:tt})),Z(1)),Xa=L(...ne("consent").map(e=>fn(e,{target$:wt})),...ne("dialog").map(e=>$n(e,{alert$:Xr})),...ne("header").map(e=>Rn(e,{viewport$:_e,header$:tt,main$:$t})),...ne("palette").map(e=>jn(e)),...ne("progress").map(e=>Wn(e,{progress$:Zr})),...ne("search").map(e=>Zn(e,{index$:hi,keyboard$:Jr})),...ne("source").map(e=>ni(e))),Za=H(()=>L(...ne("announce").map(e=>mn(e)),...ne("content").map(e=>Hn(e,{viewport$:_e,target$:wt,print$:di})),...ne("content").map(e=>G("search.highlight")?ei(e,{index$:hi,location$:Pt}):M),...ne("header-title").map(e=>In(e,{viewport$:_e,header$:tt})),...ne("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Dr(ui,()=>Br(e,{viewport$:_e,header$:tt,main$:$t})):Dr(hr,()=>Br(e,{viewport$:_e,header$:tt,main$:$t}))),...ne("tabs").map(e=>ii(e,{viewport$:_e,header$:tt})),...ne("toc").map(e=>ai(e,{viewport$:_e,header$:tt,main$:$t,target$:wt})),...ne("top").map(e=>si(e,{viewport$:_e,header$:tt,main$:$t,target$:wt})))),bi=rt.pipe(w(()=>Za),Re(Xa),Z(1));bi.subscribe();window.document$=rt;window.location$=Pt;window.target$=wt;window.keyboard$=Jr;window.viewport$=_e;window.tablet$=hr;window.screen$=ui;window.print$=di;window.alert$=Xr;window.progress$=Zr;window.component$=bi;})(); +//# sourceMappingURL=bundle.d7c377c4.min.js.map + diff --git a/docs/assets/stylesheets/main.50c56a3b.min.css b/docs/assets/stylesheets/main.50c56a3b.min.css new file mode 100644 index 0000000..0bf4b9d --- /dev/null +++ b/docs/assets/stylesheets/main.50c56a3b.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-scheme=default]{color-scheme:light}[data-md-color-scheme=default] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=default] img[src$="#only-dark"]{display:none}:root,[data-md-color-scheme=default]{--md-hue:225deg;--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:#4287ff;--md-code-hl-color--light:#4287ff1a;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-mark-color:#ffff0080;--md-typeset-table-color:#0000001f;--md-typeset-table-color--light:rgba(0,0,0,.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-warning-fg-color:#000000de;--md-warning-bg-color:#ff9;--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:var(--md-typeset-table-color--light);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.984375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-typeset .md-author{border-radius:100%;display:block;flex-shrink:0;height:1.6rem;overflow:hidden;position:relative;transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .md-author img{display:block}.md-typeset .md-author--more{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .md-author--long{height:2.4rem;width:2.4rem}.md-typeset a.md-author{transform:scale(1)}.md-typeset a.md-author img{filter:grayscale(100%) opacity(75%);transition:filter 125ms}.md-typeset a.md-author:focus,.md-typeset a.md-author:hover{transform:scale(1.1);z-index:1}.md-typeset a.md-author:focus img,.md-typeset a.md-author:hover img{filter:grayscale(0)}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background-color:var(--md-warning-bg-color);color:var(--md-warning-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.no-js .md-banner__button{display:none}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.984375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.984375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{display:flex;flex-wrap:wrap;place-content:baseline center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{align-items:end;display:flex;flex-grow:0.01;margin-bottom:.4rem;margin-top:1rem;max-width:100%;outline-color:var(--md-accent-fg-color);overflow:hidden;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.984375em){.md-footer__link--prev{flex-shrink:0}.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;margin-bottom:.7rem;max-width:calc(100% - 2.4rem);padding:0 1rem;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;opacity:.7}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{display:inline-flex;gap:.2rem;margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.234375em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-left:1rem;margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem;margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__option>input{bottom:0}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-meta{color:var(--md-default-fg-color--light);font-size:.7rem;line-height:1.3}.md-meta__list{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.md-meta__item:not(:last-child):after{content:"·";margin-left:.2rem;margin-right:.2rem}.md-meta__link{color:var(--md-typeset-a-color)}.md-meta__link:focus,.md-meta__link:hover{color:var(--md-accent-fg-color)}.md-draft{background-color:#ff1744;border-radius:.125em;color:#fff;display:inline-block;font-weight:700;padding-left:.5714285714em;padding-right:.5714285714em}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__link{align-items:flex-start;display:flex;gap:.4rem;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active,.md-nav__item .md-nav__link--active code{color:var(--md-typeset-a-color)}.md-nav__link .md-ellipsis{position:relative}[dir=ltr] .md-nav__link .md-icon:last-child{margin-left:auto}[dir=rtl] .md-nav__link .md-icon:last-child{margin-right:auto}.md-nav__link svg{fill:currentcolor;flex-shrink:0;height:1.3em}.md-nav__link[for]:focus,.md-nav__link[for]:hover,.md-nav__link[href]:focus,.md-nav__link[href]:hover{color:var(--md-accent-fg-color);cursor:pointer}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__container>.md-nav__link{margin-top:0}.md-nav__container>.md-nav__link:first-child{flex-grow:1;min-width:0}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.234375em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest)}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link svg{margin-top:.1em}.md-nav--primary .md-nav__link>.md-nav__link{padding:0}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.984375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav{margin-bottom:-.4rem}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--secondary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--secondary .md-nav__list{padding-right:.6rem}.md-nav--secondary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--secondary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--secondary .md-nav__item>.md-nav__link{margin-left:.4rem}}@media screen and (min-width:76.25em){.md-nav{margin-bottom:-.4rem;transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--primary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--primary .md-nav__list{padding-right:.6rem}.md-nav--primary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--primary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--primary .md-nav__item>.md-nav__link{margin-left:.4rem}.md-nav__toggle~.md-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .25s,visibility 0ms .25s;visibility:collapse}.md-nav__toggle~.md-nav>.md-nav__list{overflow:hidden}.md-nav__toggle.md-toggle--indeterminate~.md-nav,.md-nav__toggle:checked~.md-nav{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .15s .1s,visibility 0ms;visibility:visible}.md-nav__toggle.md-toggle--indeterminate~.md-nav{transition:none}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav__item--section>.md-nav__link .md-icon,.md-nav__item--section>.md-nav__link>[for]{display:none}[dir=ltr] .md-nav__item--section>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav__item--section>.md-nav{margin-right:-.6rem}.md-nav__item--section>.md-nav{display:block;opacity:1;visibility:visible}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s;width:.9rem}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;border-radius:100%;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform .25s;vertical-align:-.1rem;width:100%}[dir=rtl] .md-nav__icon:after{transform:rotate(180deg)}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon:after,.md-nav__item--nested .md-toggle--indeterminate~.md-nav__link .md-nav__icon:after{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);margin-top:0;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active.md-nav__item--section{margin:0}[dir=ltr] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav{margin-right:-.6rem}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{grid-template-rows:1fr;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__list{overflow:visible;padding-bottom:0}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}.md-pagination{font-size:.8rem;font-weight:700;gap:.4rem}.md-pagination,.md-pagination>*{align-items:center;display:flex;justify-content:center}.md-pagination>*{border-radius:.2rem;height:1.8rem;min-width:1.8rem;text-align:center}.md-pagination__current{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light)}.md-pagination__link{transition:color 125ms,background-color 125ms}.md-pagination__link:focus,.md-pagination__link:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-pagination__link:focus svg,.md-pagination__link:hover svg{color:var(--md-accent-fg-color)}.md-pagination__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-pagination__link svg{fill:currentcolor;color:var(--md-default-fg-color--lighter);display:block;max-height:100%;width:1.2rem}.md-post__back{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin-bottom:1.2rem;padding-bottom:1.2rem}@media screen and (max-width:76.234375em){.md-post__back{display:none}}[dir=rtl] .md-post__back svg{transform:scaleX(-1)}.md-post__authors{display:flex;flex-direction:column;gap:.6rem;margin:0 .6rem 1.2rem}.md-post .md-post__meta a{transition:color 125ms}.md-post .md-post__meta a:focus,.md-post .md-post__meta a:hover{color:var(--md-accent-fg-color)}.md-post__title{color:var(--md-default-fg-color--light);font-weight:700}.md-post--excerpt{margin-bottom:3.2rem}.md-post--excerpt .md-post__header{align-items:center;display:flex;gap:.6rem;min-height:1.6rem}.md-post--excerpt .md-post__authors{align-items:center;display:inline-flex;flex-direction:row;gap:.2rem;margin:0;min-height:2.4rem}[dir=ltr] .md-post--excerpt .md-post__meta .md-meta__list{margin-right:.4rem}[dir=rtl] .md-post--excerpt .md-post__meta .md-meta__list{margin-left:.4rem}.md-post--excerpt .md-post__content>:first-child{--md-scroll-margin:6rem;margin-top:0}.md-post>.md-nav--secondary{margin:1em 0}.md-profile{align-items:center;display:flex;font-size:.7rem;gap:.6rem;line-height:1.4;width:100%}.md-profile__description{flex-grow:1}.md-content--post{display:flex}@media screen and (max-width:76.234375em){.md-content--post{flex-flow:column-reverse}}.md-content--post>.md-content__inner{min-width:0}@media screen and (min-width:76.25em){[dir=ltr] .md-content--post>.md-content__inner{margin-left:1.2rem}[dir=rtl] .md-content--post>.md-content__inner{margin-right:1.2rem}}@media screen and (max-width:76.234375em){.md-sidebar.md-sidebar--post{padding:0;position:static;width:100%}.md-sidebar.md-sidebar--post .md-sidebar__scrollwrap{overflow:visible}.md-sidebar.md-sidebar--post .md-sidebar__inner{padding:0}.md-sidebar.md-sidebar--post .md-post__meta{margin-left:.6rem;margin-right:.6rem}.md-sidebar.md-sidebar--post .md-nav__item{border:none;display:inline}.md-sidebar.md-sidebar--post .md-nav__list{display:inline-flex;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;padding-top:.6rem}.md-sidebar.md-sidebar--post .md-nav__link{padding:0}.md-sidebar.md-sidebar--post .md-nav{height:auto;margin-bottom:0;position:static}}:root{--md-progress-value:0;--md-progress-delay:400ms}.md-progress{background:var(--md-primary-bg-color);height:.075rem;opacity:min(clamp(0,var(--md-progress-value),1),clamp(0,100 - var(--md-progress-value),1));position:fixed;top:0;transform:scaleX(calc(var(--md-progress-value)*1%));transform-origin:left;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .25s var(--md-progress-delay);width:100%;z-index:4}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.234375em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.984375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.984375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.984375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.234375em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-source-file{margin:1em 0}[dir=ltr] .md-source-file__fact{margin-right:.6rem}[dir=rtl] .md-source-file__fact{margin-left:.6rem}.md-source-file__fact{align-items:center;color:var(--md-default-fg-color--light);display:inline-flex;font-size:.68rem;gap:.3rem}.md-source-file__fact .md-icon{flex-shrink:0;margin-bottom:.05rem}[dir=ltr] .md-source-file__fact .md-author{float:left}[dir=rtl] .md-source-file__fact .md-author{float:right}.md-source-file__fact .md-author{margin-right:.2rem}.md-source-file__fact svg{width:.9rem}:root{--md-status:url('data:image/svg+xml;charset=utf-8,');--md-status--new:url('data:image/svg+xml;charset=utf-8,');--md-status--deprecated:url('data:image/svg+xml;charset=utf-8,');--md-status--encrypted:url('data:image/svg+xml;charset=utf-8,')}.md-status:after{background-color:var(--md-default-fg-color--light);content:"";display:inline-block;height:1.125em;-webkit-mask-image:var(--md-status);mask-image:var(--md-status);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-bottom;width:1.125em}.md-status:hover:after{background-color:currentcolor}.md-status--new:after{-webkit-mask-image:var(--md-status--new);mask-image:var(--md-status--new)}.md-status--deprecated:after{-webkit-mask-image:var(--md-status--deprecated);mask-image:var(--md-status--deprecated)}.md-status--encrypted:after{-webkit-mask-image:var(--md-status--encrypted);mask-image:var(--md-status--encrypted)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.234375em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;display:flex;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__item--active .md-tabs__link{color:inherit;opacity:1}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}[dir=ltr] .md-tabs__link svg{margin-right:.4rem}[dir=rtl] .md-tabs__link svg{margin-left:.4rem}.md-tabs__link svg{fill:currentcolor;height:1.3em}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags:not([hidden]){display:inline-flex;flex-wrap:wrap;gap:.5em;margin-bottom:.75em;margin-top:-.125em}.md-typeset .md-tag{align-items:center;background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-flex;font-size:.64rem;font-size:min(.8em,.64rem);font-weight:700;gap:.5em;letter-spacing:normal;line-height:1.6;padding:.3125em .78125em}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{transform:scale(.95)}75%{transform:scale(1)}to{transform:scale(.95)}}:root{--md-annotation-bg-icon:url('data:image/svg+xml;charset=utf-8,');--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,');--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip--inline{font-weight:700;-webkit-user-select:none;user-select:none;width:auto}.md-tooltip--inline:not(.md-tooltip--active){transform:translateY(.2rem) scale(.9)}.md-tooltip--inline .md-tooltip__inner{font-size:.5rem;padding:.2rem .4rem}[hidden]+.md-tooltip--inline{display:none}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;vertical-align:text-bottom;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}code .md-annotation{font-family:var(--md-code-font-family);font-size:inherit}.md-annotation:not([hidden]){display:inline-block;line-height:1.25}.md-annotation__index{border-radius:.01px;cursor:pointer;display:inline-block;margin-left:.4ch;margin-right:.4ch;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;vertical-align:text-top;z-index:0}.md-annotation .md-annotation__index{transition:z-index .25s}@media screen{.md-annotation__index{width:2.2ch}[data-md-visible]>.md-annotation__index{animation:pulse 2s infinite}.md-annotation__index:before{background:var(--md-default-bg-color);-webkit-mask-image:var(--md-annotation-bg-icon);mask-image:var(--md-annotation-bg-icon)}.md-annotation__index:after,.md-annotation__index:before{content:"";height:2.2ch;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:-.1ch;width:2.2ch;z-index:-1}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:var(--md-annotation-icon);mask-image:var(--md-annotation-icon);transform:scale(1.0001);transition:background-color .25s,transform .25s}.md-tooltip--active+.md-annotation__index:after{transform:rotate(45deg)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}}.md-tooltip--active+.md-annotation__index{animation-play-state:paused;transition-duration:0ms;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block}@media print{.md-annotation__index [data-md-annotation-id]{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);font-weight:700;padding:0 .6ch;white-space:nowrap}.md-annotation__index [data-md-annotation-id]:after{content:attr(data-md-annotation-id)}}.md-typeset .md-annotation-list{counter-reset:xxx;list-style:none}.md-typeset .md-annotation-list li{position:relative}[dir=ltr] .md-typeset .md-annotation-list li:before{left:-2.125em}[dir=rtl] .md-typeset .md-annotation-list li:before{right:-2.125em}.md-typeset .md-annotation-list li:before{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);content:counter(xxx);counter-increment:xxx;font-size:.8875em;font-weight:700;height:2ch;line-height:1.25;min-width:2ch;padding:0 .6ch;position:absolute;text-align:center;top:.25em}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);cursor:pointer;display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (hover:none),(pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.075rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid;transition:box-shadow 125ms}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition:focus-within,.md-typeset details:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .admonition.note:focus-within,.md-typeset details.note:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .admonition.abstract:focus-within,.md-typeset details.abstract:focus-within{box-shadow:0 0 0 .2rem #00b0ff1a}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .admonition.info:focus-within,.md-typeset details.info:focus-within{box-shadow:0 0 0 .2rem #00b8d41a}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .admonition.tip:focus-within,.md-typeset details.tip:focus-within{box-shadow:0 0 0 .2rem #00bfa51a}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .admonition.success:focus-within,.md-typeset details.success:focus-within{box-shadow:0 0 0 .2rem #00c8531a}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .admonition.question:focus-within,.md-typeset details.question:focus-within{box-shadow:0 0 0 .2rem #64dd171a}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .admonition.warning:focus-within,.md-typeset details.warning:focus-within{box-shadow:0 0 0 .2rem #ff91001a}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .admonition.failure:focus-within,.md-typeset details.failure:focus-within{box-shadow:0 0 0 .2rem #ff52521a}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .admonition.danger:focus-within,.md-typeset details.danger:focus-within{box-shadow:0 0 0 .2rem #ff17441a}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .admonition.bug:focus-within,.md-typeset details.bug:focus-within{box-shadow:0 0 0 .2rem #f500571a}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .admonition.example:focus-within,.md-typeset details.example:focus-within{box-shadow:0 0 0 .2rem #7c4dff1a}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .admonition.quote:focus-within,.md-typeset details.quote:focus-within{box-shadow:0 0 0 .2rem #9e9e9e1a}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.984375em){.md-typeset div.arithmatex{margin:0 -.8rem}.md-typeset div.arithmatex>*{width:-webkit-min-content;width:min-content}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset div.arithmatex mjx-assistive-mml{height:0}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem;overflow:hidden}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{--md-icon-size:1.125em;display:inline-flex;height:var(--md-icon-size);vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:var(--md-icon-size)}.md-typeset .lg,.md-typeset .xl,.md-typeset .xxl,.md-typeset .xxxl{vertical-align:text-bottom}.md-typeset .middle{vertical-align:middle}.md-typeset .lg{--md-icon-size:1.5em}.md-typeset .xl{--md-icon-size:2.25em}.md-typeset .xxl{--md-icon-size:3em}.md-typeset .xxxl{--md-icon-size:4em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color--light);box-shadow:2px 0 0 0 var(--md-code-hl-color) inset;display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.984375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-set>input.focus-visible~.tabbed-labels:before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-default-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,background-color .25s,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-default-fg-color)}.md-typeset .tabbed-labels>label>[href]:first-child{color:inherit}.md-typeset .tabbed-labels--linked>label{padding:0}.md-typeset .tabbed-labels--linked>label>a{display:block;padding:.78125em 1.25em .625em}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.984375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-default-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-default-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color);--md-mermaid-sequence-actor-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actor-fg-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-actor-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-actor-line-color:var(--md-default-fg-color--lighter);--md-mermaid-sequence-actorman-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actorman-line-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-box-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-box-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-label-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-label-fg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-loop-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-loop-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-loop-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-message-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-message-line-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-note-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-border-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-number-bg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-number-fg-color:var(--md-accent-bg-color)}.mermaid{line-height:normal;margin:1em 0}.md-typeset .grid{grid-gap:.4rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:1em 0}.md-typeset .grid.cards>ol,.md-typeset .grid.cards>ul{display:contents}.md-typeset .grid.cards>ol>li,.md-typeset .grid.cards>ul>li,.md-typeset .grid>.card{border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem;display:block;margin:0;padding:.8rem;transition:border .25s,box-shadow .25s}.md-typeset .grid.cards>ol>li:focus-within,.md-typeset .grid.cards>ol>li:hover,.md-typeset .grid.cards>ul>li:focus-within,.md-typeset .grid.cards>ul>li:hover,.md-typeset .grid>.card:focus-within,.md-typeset .grid>.card:hover{border-color:#0000;box-shadow:var(--md-shadow-z2)}.md-typeset .grid.cards>ol>li>hr,.md-typeset .grid.cards>ul>li>hr,.md-typeset .grid>.card>hr{margin-bottom:1em;margin-top:1em}.md-typeset .grid.cards>ol>li>:first-child,.md-typeset .grid.cards>ul>li>:first-child,.md-typeset .grid>.card>:first-child{margin-top:0}.md-typeset .grid.cards>ol>li>:last-child,.md-typeset .grid.cards>ul>li>:last-child,.md-typeset .grid>.card>:last-child{margin-bottom:0}.md-typeset .grid>*,.md-typeset .grid>.admonition,.md-typeset .grid>.highlight>*,.md-typeset .grid>.highlighttable,.md-typeset .grid>.md-typeset details,.md-typeset .grid>details,.md-typeset .grid>pre{margin-bottom:0;margin-top:0}.md-typeset .grid>.highlight>pre:only-child,.md-typeset .grid>.highlight>pre>code,.md-typeset .grid>.highlighttable,.md-typeset .grid>.highlighttable>tbody,.md-typeset .grid>.highlighttable>tbody>tr,.md-typeset .grid>.highlighttable>tbody>tr>.code,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre>code{height:100%}.md-typeset .grid>.tabbed-set{margin-bottom:0;margin-top:0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/docs/assets/stylesheets/main.fad675c6.min.css b/docs/assets/stylesheets/main.fad675c6.min.css deleted file mode 100644 index 21491eb..0000000 --- a/docs/assets/stylesheets/main.fad675c6.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-scheme=default]{color-scheme:light}[data-md-color-scheme=default] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=default] img[src$="#only-dark"]{display:none}:root,[data-md-color-scheme=default]{--md-hue:225deg;--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:#4287ff;--md-code-hl-color--light:#4287ff1a;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-mark-color:#ffff0080;--md-typeset-table-color:#0000001f;--md-typeset-table-color--light:rgba(0,0,0,.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-warning-fg-color:#000000de;--md-warning-bg-color:#ff9;--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr[title]:focus:after,.md-typeset abbr[title]:hover:after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);font-size:.7rem;left:.8rem;margin-top:2em;padding:.2rem .3rem;position:absolute;right:.8rem}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:var(--md-typeset-table-color--light);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.984375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-typeset .md-author{display:block;flex-shrink:0;height:1.6rem;overflow:hidden;position:relative;transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .md-author img{border-radius:100%;display:block}.md-typeset .md-author--more{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .md-author--long{height:2.4rem;width:2.4rem}.md-typeset a.md-author{transform:scale(1)}.md-typeset a.md-author img{filter:grayscale(100%) opacity(75%);transition:filter 125ms}.md-typeset a.md-author:focus,.md-typeset a.md-author:hover{transform:scale(1.1);z-index:1}.md-typeset a.md-author:focus img,.md-typeset a.md-author:hover img{filter:grayscale(0)}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background-color:var(--md-warning-bg-color);color:var(--md-warning-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.no-js .md-banner__button{display:none}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.984375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.984375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{display:flex;flex-wrap:wrap;place-content:baseline center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{align-items:end;display:flex;flex-grow:0.01;margin-bottom:.4rem;margin-top:1rem;max-width:100%;outline-color:var(--md-accent-fg-color);overflow:hidden;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.984375em){.md-footer__link--prev{flex-shrink:0}.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;margin-bottom:.7rem;max-width:calc(100% - 2.4rem);padding:0 1rem;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;opacity:.7}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{display:inline-flex;gap:.2rem;margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.234375em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-left:1rem;margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem;margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__option>input{bottom:0}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-meta{color:var(--md-default-fg-color--light);font-size:.7rem;line-height:1.3}.md-meta__list{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.md-meta__item:not(:last-child):after{content:"·";margin-left:.2rem;margin-right:.2rem}.md-meta__link{color:var(--md-typeset-a-color)}.md-meta__link:focus,.md-meta__link:hover{color:var(--md-accent-fg-color)}.md-draft{background-color:#ff1744;border-radius:.125em;color:#fff;display:inline-block;font-weight:700;padding-left:.5714285714em;padding-right:.5714285714em}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__link{align-items:flex-start;display:flex;gap:.4rem;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active,.md-nav__item .md-nav__link--active code{color:var(--md-typeset-a-color)}.md-nav__link .md-ellipsis{position:relative}[dir=ltr] .md-nav__link .md-icon:last-child{margin-left:auto}[dir=rtl] .md-nav__link .md-icon:last-child{margin-right:auto}.md-nav__link svg{fill:currentcolor;flex-shrink:0;height:1.3em}.md-nav__link[for]:focus,.md-nav__link[for]:hover,.md-nav__link[href]:focus,.md-nav__link[href]:hover{color:var(--md-accent-fg-color);cursor:pointer}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__container>.md-nav__link{margin-top:0}.md-nav__container>.md-nav__link:first-child{flex-grow:1;min-width:0}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.234375em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest)}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link svg{margin-top:.1em}.md-nav--primary .md-nav__link>.md-nav__link{padding:0}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.984375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav{margin-bottom:-.4rem}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--secondary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--secondary .md-nav__list{padding-right:.6rem}.md-nav--secondary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--secondary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--secondary .md-nav__item>.md-nav__link{margin-left:.4rem}}@media screen and (min-width:76.25em){.md-nav{margin-bottom:-.4rem;transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--primary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--primary .md-nav__list{padding-right:.6rem}.md-nav--primary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--primary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--primary .md-nav__item>.md-nav__link{margin-left:.4rem}.md-nav__toggle~.md-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .25s,visibility 0ms .25s;visibility:collapse}.md-nav__toggle~.md-nav>.md-nav__list{overflow:hidden}.md-nav__toggle.md-toggle--indeterminate~.md-nav,.md-nav__toggle:checked~.md-nav{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .15s .1s,visibility 0ms;visibility:visible}.md-nav__toggle.md-toggle--indeterminate~.md-nav{transition:none}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav__item--section>.md-nav__link .md-icon,.md-nav__item--section>.md-nav__link>[for]{display:none}[dir=ltr] .md-nav__item--section>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav__item--section>.md-nav{margin-right:-.6rem}.md-nav__item--section>.md-nav{display:block;opacity:1;visibility:visible}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s;width:.9rem}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;border-radius:100%;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform .25s;vertical-align:-.1rem;width:100%}[dir=rtl] .md-nav__icon:after{transform:rotate(180deg)}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon:after,.md-nav__item--nested .md-toggle--indeterminate~.md-nav__link .md-nav__icon:after{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);margin-top:0;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active.md-nav__item--section{margin:0}[dir=ltr] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav{margin-right:-.6rem}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{grid-template-rows:1fr;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__list{overflow:visible;padding-bottom:0}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}.md-pagination{font-size:.8rem;font-weight:700;gap:.4rem}.md-pagination,.md-pagination>*{align-items:center;display:flex;justify-content:center}.md-pagination>*{border-radius:.2rem;height:1.8rem;min-width:1.8rem;text-align:center}.md-pagination__current{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light)}.md-pagination__link{transition:color 125ms,background-color 125ms}.md-pagination__link:focus,.md-pagination__link:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-pagination__link:focus svg,.md-pagination__link:hover svg{color:var(--md-accent-fg-color)}.md-pagination__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-pagination__link svg{fill:currentcolor;color:var(--md-default-fg-color--lighter);display:block;max-height:100%;width:1.2rem}.md-post__back{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin-bottom:1.2rem;padding-bottom:1.2rem}@media screen and (max-width:76.234375em){.md-post__back{display:none}}[dir=rtl] .md-post__back svg{transform:scaleX(-1)}.md-post__authors{display:flex;flex-direction:column;gap:.6rem;margin:0 .6rem 1.2rem}.md-post .md-post__meta a{transition:color 125ms}.md-post .md-post__meta a:focus,.md-post .md-post__meta a:hover{color:var(--md-accent-fg-color)}.md-post__title{color:var(--md-default-fg-color--light);font-weight:700}.md-post--excerpt{margin-bottom:3.2rem}.md-post--excerpt .md-post__header{align-items:center;display:flex;gap:.6rem;min-height:1.6rem}.md-post--excerpt .md-post__authors{align-items:center;display:inline-flex;flex-direction:row;gap:.2rem;margin:0;min-height:2.4rem}[dir=ltr] .md-post--excerpt .md-post__meta .md-meta__list{margin-right:.4rem}[dir=rtl] .md-post--excerpt .md-post__meta .md-meta__list{margin-left:.4rem}.md-post--excerpt .md-post__content>:first-child{--md-scroll-margin:6rem;margin-top:0}.md-post>.md-nav--secondary{margin:1em 0}.md-profile{align-items:center;display:flex;font-size:.7rem;gap:.6rem;line-height:1.4;width:100%}.md-profile__description{flex-grow:1}.md-content--post{display:flex}@media screen and (max-width:76.234375em){.md-content--post{flex-flow:column-reverse}}.md-content--post>.md-content__inner{min-width:0}@media screen and (min-width:76.25em){[dir=ltr] .md-content--post>.md-content__inner{margin-left:1.2rem}[dir=rtl] .md-content--post>.md-content__inner{margin-right:1.2rem}}@media screen and (max-width:76.234375em){.md-sidebar.md-sidebar--post{padding:0;position:static;width:100%}.md-sidebar.md-sidebar--post .md-sidebar__scrollwrap{overflow:visible}.md-sidebar.md-sidebar--post .md-sidebar__inner{padding:0}.md-sidebar.md-sidebar--post .md-post__meta{margin-left:.6rem;margin-right:.6rem}.md-sidebar.md-sidebar--post .md-nav__item{border:none;display:inline}.md-sidebar.md-sidebar--post .md-nav__list{display:inline-flex;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;padding-top:.6rem}.md-sidebar.md-sidebar--post .md-nav__link{padding:0}.md-sidebar.md-sidebar--post .md-nav{height:auto;margin-bottom:0;position:static}}:root{--md-progress-value:0;--md-progress-delay:400ms}.md-progress{background:var(--md-primary-bg-color);height:.075rem;opacity:min(clamp(0,var(--md-progress-value),1),clamp(0,100 - var(--md-progress-value),1));position:fixed;top:0;transform:scaleX(calc(var(--md-progress-value)*1%));transform-origin:left;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .25s var(--md-progress-delay);width:100%;z-index:4}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.234375em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.984375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.984375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.984375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.234375em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}:root{--md-status:url('data:image/svg+xml;charset=utf-8,');--md-status--new:url('data:image/svg+xml;charset=utf-8,');--md-status--deprecated:url('data:image/svg+xml;charset=utf-8,');--md-status--encrypted:url('data:image/svg+xml;charset=utf-8,')}.md-status:after{background-color:var(--md-default-fg-color--light);content:"";display:inline-block;height:1.125em;-webkit-mask-image:var(--md-status);mask-image:var(--md-status);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-bottom;width:1.125em}.md-status:hover:after{background-color:currentcolor}.md-status--new:after{-webkit-mask-image:var(--md-status--new);mask-image:var(--md-status--new)}.md-status--deprecated:after{-webkit-mask-image:var(--md-status--deprecated);mask-image:var(--md-status--deprecated)}.md-status--encrypted:after{-webkit-mask-image:var(--md-status--encrypted);mask-image:var(--md-status--encrypted)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.234375em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;display:flex;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__item--active .md-tabs__link{color:inherit;opacity:1}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}[dir=ltr] .md-tabs__link svg{margin-right:.4rem}[dir=rtl] .md-tabs__link svg{margin-left:.4rem}.md-tabs__link svg{fill:currentcolor;height:1.3em}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags:not([hidden]){display:inline-flex;flex-wrap:wrap;gap:.5em;margin-bottom:.75em;margin-top:-.125em}.md-typeset .md-tag{align-items:center;background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-flex;font-size:.64rem;font-size:min(.8em,.64rem);font-weight:700;gap:.5em;letter-spacing:normal;line-height:1.6;padding:.3125em .78125em}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{transform:scale(.95)}75%{transform:scale(1)}to{transform:scale(.95)}}:root{--md-annotation-bg-icon:url('data:image/svg+xml;charset=utf-8,');--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,');--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;vertical-align:text-bottom;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}code .md-annotation{font-family:var(--md-code-font-family);font-size:inherit}.md-annotation:not([hidden]){display:inline-block;line-height:1.25}.md-annotation__index{border-radius:.01px;cursor:pointer;display:inline-block;margin-left:.4ch;margin-right:.4ch;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;vertical-align:text-top;z-index:0}.md-annotation .md-annotation__index{transition:z-index .25s}@media screen{.md-annotation__index{width:2.2ch}[data-md-visible]>.md-annotation__index{animation:pulse 2s infinite}.md-annotation__index:before{background:var(--md-default-bg-color);-webkit-mask-image:var(--md-annotation-bg-icon);mask-image:var(--md-annotation-bg-icon)}.md-annotation__index:after,.md-annotation__index:before{content:"";height:2.2ch;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:-.1ch;width:2.2ch;z-index:-1}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:var(--md-annotation-icon);mask-image:var(--md-annotation-icon);transform:scale(1.0001);transition:background-color .25s,transform .25s}.md-tooltip--active+.md-annotation__index:after{transform:rotate(45deg)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}}.md-tooltip--active+.md-annotation__index{animation-play-state:paused;transition-duration:0ms;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block}@media print{.md-annotation__index [data-md-annotation-id]{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);font-weight:700;padding:0 .6ch;white-space:nowrap}.md-annotation__index [data-md-annotation-id]:after{content:attr(data-md-annotation-id)}}.md-typeset .md-annotation-list{counter-reset:xxx;list-style:none}.md-typeset .md-annotation-list li{position:relative}[dir=ltr] .md-typeset .md-annotation-list li:before{left:-2.125em}[dir=rtl] .md-typeset .md-annotation-list li:before{right:-2.125em}.md-typeset .md-annotation-list li:before{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);content:counter(xxx);counter-increment:xxx;font-size:.8875em;font-weight:700;height:2ch;line-height:1.25;min-width:2ch;padding:0 .6ch;position:absolute;text-align:center;top:.25em}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);cursor:pointer;display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (hover:none),(pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.075rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid;transition:box-shadow 125ms}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition:focus-within,.md-typeset details:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .admonition.note:focus-within,.md-typeset details.note:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .admonition.abstract:focus-within,.md-typeset details.abstract:focus-within{box-shadow:0 0 0 .2rem #00b0ff1a}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .admonition.info:focus-within,.md-typeset details.info:focus-within{box-shadow:0 0 0 .2rem #00b8d41a}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .admonition.tip:focus-within,.md-typeset details.tip:focus-within{box-shadow:0 0 0 .2rem #00bfa51a}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .admonition.success:focus-within,.md-typeset details.success:focus-within{box-shadow:0 0 0 .2rem #00c8531a}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .admonition.question:focus-within,.md-typeset details.question:focus-within{box-shadow:0 0 0 .2rem #64dd171a}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .admonition.warning:focus-within,.md-typeset details.warning:focus-within{box-shadow:0 0 0 .2rem #ff91001a}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .admonition.failure:focus-within,.md-typeset details.failure:focus-within{box-shadow:0 0 0 .2rem #ff52521a}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .admonition.danger:focus-within,.md-typeset details.danger:focus-within{box-shadow:0 0 0 .2rem #ff17441a}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .admonition.bug:focus-within,.md-typeset details.bug:focus-within{box-shadow:0 0 0 .2rem #f500571a}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .admonition.example:focus-within,.md-typeset details.example:focus-within{box-shadow:0 0 0 .2rem #7c4dff1a}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .admonition.quote:focus-within,.md-typeset details.quote:focus-within{box-shadow:0 0 0 .2rem #9e9e9e1a}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.984375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-webkit-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem;overflow:hidden}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color--light);box-shadow:2px 0 0 0 var(--md-code-hl-color) inset;display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.984375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-set>input.focus-visible~.tabbed-labels:before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-default-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,background-color .25s,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-default-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.984375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-default-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-default-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color);--md-mermaid-sequence-actor-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actor-fg-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-actor-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-actor-line-color:var(--md-default-fg-color--lighter);--md-mermaid-sequence-actorman-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actorman-line-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-box-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-box-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-label-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-label-fg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-loop-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-loop-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-loop-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-message-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-message-line-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-note-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-border-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-number-bg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-number-fg-color:var(--md-accent-bg-color)}.mermaid{line-height:normal;margin:1em 0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/docs/assets/stylesheets/palette.06af60db.min.css b/docs/assets/stylesheets/palette.06af60db.min.css new file mode 100644 index 0000000..a640d38 --- /dev/null +++ b/docs/assets/stylesheets/palette.06af60db.min.css @@ -0,0 +1 @@ +@media screen{[data-md-color-scheme=slate]{--md-default-fg-color:hsla(var(--md-hue),15%,90%,0.82);--md-default-fg-color--light:hsla(var(--md-hue),15%,90%,0.56);--md-default-fg-color--lighter:hsla(var(--md-hue),15%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),15%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,14%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,14%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,14%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,14%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,0.82);--md-code-bg-color:hsla(var(--md-hue),15%,18%,1);--md-code-hl-color:#2977ff;--md-code-hl-color--light:#2977ff1a;--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-kbd-color:hsla(var(--md-hue),15%,90%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,90%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-mark-color:#4287ff4d;--md-typeset-table-color:hsla(var(--md-hue),15%,95%,0.12);--md-typeset-table-color--light:hsla(var(--md-hue),15%,95%,0.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,10%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,8%,1);--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #00000040,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0006,0 0 0.05rem #00000059;color-scheme:dark}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#c46fd3}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a47bea}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#5488e8}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff764d}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c1775c}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#5e8bde}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:#ff19471a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:#f500561a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:#df41fb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:#7c4dff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:#4287ff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:#0091eb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:#00bad61a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:#00bda41a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:#00c7531a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:#63de171a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:#b0eb001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:#ffd5001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:#ffaa001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:#ff91001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:#ff6e421a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:hsla(var(--md-hue),0%,100%,1);--md-primary-fg-color--light:hsla(var(--md-hue),0%,100%,0.7);--md-primary-fg-color--dark:hsla(var(--md-hue),0%,0%,0.07);--md-primary-bg-color:hsla(var(--md-hue),0%,0%,0.87);--md-primary-bg-color--light:hsla(var(--md-hue),0%,0%,0.54);--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=white] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:hsla(var(--md-hue),0%,0%,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:hsla(var(--md-hue),0%,0%,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:hsla(var(--md-hue),0%,0%,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid #00000012}}[data-md-color-primary=black]{--md-primary-fg-color:hsla(var(--md-hue),15%,9%,1);--md-primary-fg-color--light:hsla(var(--md-hue),15%,9%,0.54);--md-primary-fg-color--dark:hsla(var(--md-hue),15%,9%,1);--md-primary-bg-color:hsla(var(--md-hue),15%,100%,1);--md-primary-bg-color--light:hsla(var(--md-hue),15%,100%,0.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=black] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}[data-md-color-primary=black] .md-header{background-color:hsla(var(--md-hue),15%,9%,1)}@media screen and (max-width:59.984375em){[data-md-color-primary=black] .md-nav__source{background-color:hsla(var(--md-hue),15%,11%,.87)}}@media screen and (max-width:76.234375em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:hsla(var(--md-hue),15%,9%,1)}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:hsla(var(--md-hue),15%,9%,1)}} \ No newline at end of file diff --git a/docs/assets/stylesheets/palette.356b1318.min.css b/docs/assets/stylesheets/palette.356b1318.min.css deleted file mode 100644 index 141eb5f..0000000 --- a/docs/assets/stylesheets/palette.356b1318.min.css +++ /dev/null @@ -1 +0,0 @@ -@media screen{[data-md-color-scheme=slate]{--md-default-fg-color:hsla(var(--md-hue),15%,90%,0.82);--md-default-fg-color--light:hsla(var(--md-hue),15%,90%,0.56);--md-default-fg-color--lighter:hsla(var(--md-hue),15%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),15%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,14%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,14%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,14%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,14%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,0.82);--md-code-bg-color:hsla(var(--md-hue),15%,18%,1);--md-code-hl-color--light:#4287ff26;--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-kbd-color:hsla(var(--md-hue),15%,90%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,90%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-mark-color:#4287ff4d;--md-typeset-table-color:hsla(var(--md-hue),15%,95%,0.12);--md-typeset-table-color--light:hsla(var(--md-hue),15%,95%,0.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,10%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,8%,1);--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #00000040,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0006,0 0 0.05rem #00000059;color-scheme:dark}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#c46fd3}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a47bea}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#5488e8}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff764d}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c1775c}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#5e8bde}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:#ff19471a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:#f500561a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:#df41fb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:#7c4dff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:#4287ff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:#0091eb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:#00bad61a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:#00bda41a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:#00c7531a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:#63de171a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:#b0eb001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:#ffd5001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:#ffaa001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:#ff91001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:#ff6e421a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:hsla(var(--md-hue),0%,100%,1);--md-primary-fg-color--light:hsla(var(--md-hue),0%,100%,0.7);--md-primary-fg-color--dark:hsla(var(--md-hue),0%,0%,0.07);--md-primary-bg-color:hsla(var(--md-hue),0%,0%,0.87);--md-primary-bg-color--light:hsla(var(--md-hue),0%,0%,0.54);--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=white] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:hsla(var(--md-hue),0%,0%,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:hsla(var(--md-hue),0%,0%,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:hsla(var(--md-hue),0%,0%,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid #00000012}}[data-md-color-primary=black]{--md-primary-fg-color:hsla(var(--md-hue),15%,9%,1);--md-primary-fg-color--light:hsla(var(--md-hue),15%,9%,0.54);--md-primary-fg-color--dark:hsla(var(--md-hue),15%,9%,1);--md-primary-bg-color:hsla(var(--md-hue),15%,100%,1);--md-primary-bg-color--light:hsla(var(--md-hue),15%,100%,0.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=black] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}[data-md-color-primary=black] .md-header{background-color:hsla(var(--md-hue),15%,9%,1)}@media screen and (max-width:59.984375em){[data-md-color-primary=black] .md-nav__source{background-color:hsla(var(--md-hue),15%,11%,.87)}}@media screen and (max-width:76.234375em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:hsla(var(--md-hue),15%,9%,1)}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:hsla(var(--md-hue),15%,9%,1)}} \ No newline at end of file diff --git a/docs/genomic-data/examples/index.html b/docs/genomic-data/examples/index.html index df35399..f8ca47b 100644 --- a/docs/genomic-data/examples/index.html +++ b/docs/genomic-data/examples/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
GitHub @@ -201,7 +201,7 @@
- +
@@ -1621,7 +1677,7 @@

Website examples{"base": "../..", "features": ["navigation.indexes"], "search": "../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/genomic-data/genomic-coordinates/index.html b/docs/genomic-data/genomic-coordinates/index.html index b09ebac..3df4304 100644 --- a/docs/genomic-data/genomic-coordinates/index.html +++ b/docs/genomic-data/genomic-coordinates/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
GitHub @@ -201,7 +201,7 @@
- +
@@ -1918,7 +1974,7 @@

Segment features{"base": "../..", "features": ["navigation.indexes"], "search": "../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/genomic-data/tracks/index.html b/docs/genomic-data/tracks/index.html index b63d44e..94537ad 100644 --- a/docs/genomic-data/tracks/index.html +++ b/docs/genomic-data/tracks/index.html @@ -14,7 +14,7 @@ - + @@ -22,10 +22,10 @@ - + - + @@ -92,7 +92,6 @@ - @@ -147,11 +146,12 @@ +
- +
GitHub @@ -197,7 +197,7 @@
- +
@@ -1607,7 +1663,7 @@

Example{"base": "../..", "features": ["navigation.indexes"], "search": "../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html index f5ced16..ec9c8cc 100644 --- a/docs/getting-started/index.html +++ b/docs/getting-started/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1882,7 +1938,7 @@

Using Ge - + diff --git a/docs/grammar/composition/concat/index.html b/docs/grammar/composition/concat/index.html index be97eb4..8d5ba17 100644 --- a/docs/grammar/composition/concat/index.html +++ b/docs/grammar/composition/concat/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1977,7 +2033,7 @@

Shared axes{"base": "../../..", "features": ["navigation.indexes"], "search": "../../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/composition/index.html b/docs/grammar/composition/index.html index df8d03d..8066816 100644 --- a/docs/grammar/composition/index.html +++ b/docs/grammar/composition/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1703,7 +1759,7 @@

Independent{"base": "../..", "features": ["navigation.indexes"], "search": "../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/composition/layer/index.html b/docs/grammar/composition/layer/index.html index 3a32809..b0d5c58 100644 --- a/docs/grammar/composition/layer/index.html +++ b/docs/grammar/composition/layer/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1804,7 +1860,7 @@

Lollipop plot{"base": "../../..", "features": ["navigation.indexes"], "search": "../../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/data/eager/index.html b/docs/grammar/data/eager/index.html index f6e4674..487d76b 100644 --- a/docs/grammar/data/eager/index.html +++ b/docs/grammar/data/eager/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1720,7 +1776,7 @@

FASTA& - + diff --git a/docs/grammar/data/index.html b/docs/grammar/data/index.html index 3a9e4d2..517544a 100644 --- a/docs/grammar/data/index.html +++ b/docs/grammar/data/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
GitHub @@ -201,7 +201,7 @@
- +
@@ -1555,7 +1611,7 @@

Data Input{"base": "../..", "features": ["navigation.indexes"], "search": "../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/data/lazy/index.html b/docs/grammar/data/lazy/index.html index 98f79f2..6a51c4d 100644 --- a/docs/grammar/data/lazy/index.html +++ b/docs/grammar/data/lazy/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
GitHub @@ -201,7 +201,7 @@
- +
@@ -2879,7 +2935,7 @@

Example{"base": "../../..", "features": ["navigation.indexes"], "search": "../../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/expressions/index.html b/docs/grammar/expressions/index.html index 7fbe958..876ee38 100644 --- a/docs/grammar/expressions/index.html +++ b/docs/grammar/expressions/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1666,7 +1722,7 @@

Provided constants and functions{"base": "../..", "features": ["navigation.indexes"], "search": "../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/import/index.html b/docs/grammar/import/index.html index bec6255..751826b 100644 --- a/docs/grammar/import/index.html +++ b/docs/grammar/import/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1639,7 +1695,7 @@

Importing named tracks{"base": "../..", "features": ["navigation.indexes"], "search": "../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/index.html b/docs/grammar/index.html index 42396ea..cd61990 100644 --- a/docs/grammar/index.html +++ b/docs/grammar/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1665,7 +1721,7 @@

View composition for m - + diff --git a/docs/grammar/mark/index.html b/docs/grammar/mark/index.html index 69f437a..25d8c39 100644 --- a/docs/grammar/mark/index.html +++ b/docs/grammar/mark/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
@@ -1834,7 +1890,7 @@

Chrom and Pos{"base": "../..", "features": ["navigation.indexes"], "search": "../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/mark/link/index.html b/docs/grammar/mark/link/index.html index d05538f..d5d477c 100644 --- a/docs/grammar/mark/link/index.html +++ b/docs/grammar/mark/link/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
- +
GitHub @@ -201,7 +201,7 @@
- +
GitHub @@ -216,6 +216,7 @@ +
  • @@ -235,6 +236,7 @@ +
  • @@ -256,6 +258,7 @@ + @@ -322,6 +325,7 @@ + @@ -378,6 +382,7 @@ +
  • @@ -398,6 +403,7 @@ +
  • @@ -426,6 +432,7 @@ + @@ -514,6 +521,7 @@ +
  • @@ -534,6 +542,7 @@ +
  • @@ -554,6 +563,7 @@ +
  • @@ -574,6 +584,7 @@ +
  • @@ -594,6 +605,7 @@ +
  • @@ -614,6 +626,7 @@ +
  • @@ -634,6 +647,7 @@ +
  • @@ -654,6 +668,7 @@ +
  • @@ -674,6 +689,7 @@ +
  • @@ -694,6 +710,7 @@ +
  • @@ -714,6 +731,7 @@ +
  • @@ -734,6 +752,7 @@ +
  • @@ -754,6 +773,7 @@ +
  • @@ -774,6 +794,7 @@ +
  • @@ -794,6 +815,7 @@ +
  • @@ -814,6 +836,7 @@ +
  • @@ -834,6 +857,7 @@ +
  • @@ -854,6 +878,7 @@ +
  • @@ -884,6 +909,7 @@ + @@ -948,6 +974,7 @@ +
  • @@ -1017,6 +1044,30 @@ + +
  • @@ -1033,6 +1084,7 @@ +
  • @@ -1053,6 +1105,7 @@ +
  • @@ -1073,6 +1126,7 @@ +
  • @@ -1093,6 +1147,7 @@ +
  • @@ -1121,6 +1176,7 @@ + @@ -1177,6 +1233,7 @@ +
  • @@ -1197,6 +1254,7 @@ +
  • @@ -1225,6 +1283,7 @@ +
  • @@ -1245,6 +1304,7 @@ +
  • @@ -1265,6 +1325,7 @@ +
  • @@ -1292,6 +1353,7 @@ + @@ -1334,6 +1396,7 @@ +
  • @@ -1354,6 +1417,7 @@ +
  • @@ -1381,6 +1445,7 @@ + @@ -1437,6 +1502,7 @@ +
  • @@ -1457,6 +1523,7 @@ +
  • @@ -1484,6 +1551,7 @@ +
  • @@ -1503,6 +1571,7 @@ +
  • @@ -1568,6 +1637,30 @@ + +
  • @@ -1591,7 +1684,8 @@

    Link

    The "link" mark displays each data item as a curve that connects two points. The mark can be used to display structural variation and interactions, for -example.

    +example. The mark has several different linkShapes that control +how the curve is drawn.

    {
    @@ -1616,11 +1710,6 @@ 

    Link&par

    -
    -

    Still under development

    -

    The parameterization is likely to be changed a bit to support -more use cases.

    -

    Channels

    In addition to the primary and secondary position channels and the color and opacity channels, link mark supports the following @@ -1629,45 +1718,165 @@

    ChannelsProperties

    +
    linkShape
    +
    +

    Type: String

    +

    The shape of the link. Can be one of "arc", "dome", "diagonal", or +"line".

    +

    The "arc" shape draws a circular arc between the two points. The apex of the +arc resides on the left side of the line that connects the two points. +The "dome" shape draws a vertical or horizontal arc with a specific height. +The primary positional channel determines the apex of the arc and the secondary +determines the endpoint placement. +The "diagonal" shape draws an "S"-shaped curve between the two points. +The "line" shape draws a straight line between the two points. See an +example of the different shapes below.

    +

    Default value: "arc"

    +
    +
    orient
    +
    +

    Type: String

    +

    The orientation of the link. Can be one of "vertical" or "horizontal". +Only affects the "dome" and "diagonal" shapes.

    +

    Default value: "vertical"

    +
    +
    clampApex
    +
    +

    Type: Boolean

    +

    Whether the apex of the "dome" shape is clamped to the viewport edge. When over a +half of the dome is located outside the viewport, clamping allows for more accurate +reading of the value encoded by the apex' position.

    +

    Default value: false

    +
    +
    arcHeightFactor
    +
    +

    Type: Number

    +

    Scaling factor for the "arc" shape's height. The default value 1.0 produces +roughly circular arcs.

    +

    Default value: 1.0

    +
    +
    minArcHeight
    +
    +

    Type: Number

    +

    The minimum height of an "arc" shape. Makes very short links more clearly visible.

    +

    Default value: 1.5

    +
    segments

    Type: Number

    Number of segments in the bézier curve. Affects the rendering quality and speed.

    Default value: 101

    +
    minPickingSize
    +
    +

    Type: Number

    +

    The minimum stroke width of the links when pointing with the mouse cursor. +Allows making very thin links easier to point at.

    +

    Default value: 3.0

    +

    Examples

    + +

    This example shows the different link shapes and orientations. All links have +the same coordinates: { x: 2, y: 2, x2: 8, y2: 8 }. The links are arranged in +grid with

    +

    linkShape as columns: "arc", "dome", "diagonal", "line".
    +orient as rows: "vertical", "horizontal".

    +
    + +
    {
    +  "data": { "values": [{ "x": 2, "x2": 8 }] },
    +  "resolve": {
    +    "scale": { "x": "shared", "y": "shared" },
    +    "axis": { "x": "shared", "y": "shared" }
    +  },
    +
    +  "encoding": {
    +    "x": {
    +      "field": "x",
    +      "type": "quantitative",
    +      "scale": { "domain": [0, 10] },
    +      "axis": { "grid": true }
    +    },
    +    "x2": { "field": "x2" },
    +    "y": {
    +      "field": "x",
    +      "type": "quantitative",
    +      "scale": { "domain": [0, 10] },
    +      "axis": { "grid": true }
    +    },
    +    "y2": { "field": "x2" },
    +    "size": { "value": 2 }
    +  },
    +
    +  "columns": 4,
    +  "spacing": 20,
    +
    +  "concat": [
    +    { "mark": { "type": "link", "linkShape": "arc", "orient": "vertical" } },
    +    { "mark": { "type": "link", "linkShape": "dome", "orient": "vertical" } },
    +    {
    +      "mark": { "type": "link", "linkShape": "diagonal", "orient": "vertical" }
    +    },
    +    { "mark": { "type": "link", "linkShape": "line", "orient": "vertical" } },
    +    { "mark": { "type": "link", "linkShape": "arc", "orient": "horizontal" } },
    +    { "mark": { "type": "link", "linkShape": "dome", "orient": "horizontal" } },
    +    {
    +      "mark": {
    +        "type": "link",
    +        "linkShape": "diagonal",
    +        "orient": "horizontal"
    +      }
    +    },
    +    { "mark": { "type": "link", "linkShape": "line", "orient": "horizontal" } }
    +  ]
    +}
    +
    + +
    + +

    Varying the dome height

    +

    This example uses the "dome" shape to draw links with varying heights. The +height is determined by the y channel. The clampApex property is set to +true to ensure that the apex of the dome is always visible. Try to zoom in +and pan around to see it in action.

    {
    -  "width": 300,
    -  "height": 300,
       "data": {
    -    "sequence": { "start": 0, "stop": 12, "as": "z" }
    +    "sequence": { "start": 0, "stop": 20, "as": "z" }
       },
    +
       "transform": [
    -    { "type": "formula", "expr": "datum.z / 12 * 3.141 * 2", "as": "theta" },
    -    { "type": "formula", "expr": "cos(datum.theta)", "as": "x" },
    -    { "type": "formula", "expr": "sin(datum.theta)", "as": "y" }
    +    { "type": "formula", "expr": "round(random() * 1000)", "as": "x" },
    +    {
    +      "type": "formula",
    +      "expr": "round(datum.x + random() * 500)",
    +      "as": "x2"
    +    },
    +    { "type": "formula", "expr": "random() * 1000 - 500", "as": "y" }
       ],
    +
       "mark": {
         "type": "link",
    -    "size": 7
    +    "linkShape": "dome",
    +    "orient": "vertical",
    +    "clampApex": true,
    +    "color": "gray"
       },
    +
       "encoding": {
    -    "x": { "datum": 0, "type": "quantitative" },
    -    "x2": { "field": "x" },
    -    "y": { "datum": 0, "type": "quantitative" },
    -    "y2": { "field": "y" },
    -    "color": {
    -      "field": "theta",
    +    "x": { "field": "x", "type": "index" },
    +    "x2": { "field": "x2" },
    +    "y": {
    +      "field": "y",
           "type": "quantitative",
    -      "scale": { "scheme": "rainbow" }
    +      "axis": { "grid": true }
         }
       }
     }
    @@ -1679,11 +1888,22 @@ 

    Examples

    @@ -1715,7 +1935,7 @@

    Examples{"base": "../../..", "features": ["navigation.indexes"], "search": "../../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/mark/point/index.html b/docs/grammar/mark/point/index.html index 9f54d57..9827218 100644 --- a/docs/grammar/mark/point/index.html +++ b/docs/grammar/mark/point/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
    - +
    GitHub @@ -201,7 +201,7 @@
    - +
    +
    @@ -1964,7 +2021,7 @@

    Semantic zoom{"base": "../../..", "features": ["navigation.indexes"], "search": "../../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/mark/rect/index.html b/docs/grammar/mark/rect/index.html index cc36c91..ee526b7 100644 --- a/docs/grammar/mark/rect/index.html +++ b/docs/grammar/mark/rect/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
    - +
    @@ -1829,7 +1885,7 @@

    Bars&par - + diff --git a/docs/grammar/mark/rule/index.html b/docs/grammar/mark/rule/index.html index bebb40b..ffb94d5 100644 --- a/docs/grammar/mark/rule/index.html +++ b/docs/grammar/mark/rule/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
    - +
    @@ -1851,7 +1907,7 @@

    Plenty of diagonal rules{"base": "../../..", "features": ["navigation.indexes"], "search": "../../../assets/javascripts/workers/search.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}} - + diff --git a/docs/grammar/mark/text/index.html b/docs/grammar/mark/text/index.html index 5ae6f67..cc17f27 100644 --- a/docs/grammar/mark/text/index.html +++ b/docs/grammar/mark/text/index.html @@ -18,7 +18,7 @@ - + @@ -26,10 +26,10 @@ - + - + @@ -96,7 +96,6 @@ - @@ -151,11 +150,12 @@ +
    - +
    @@ -1959,7 +2015,7 @@