@genome-spy/app 0.27.1 → 0.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +57 -57
- package/dist/style.css +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
var zN=Object.defineProperty;var RN=(j,R,ce)=>R in j?zN(j,R,{enumerable:!0,configurable:!0,writable:!0,value:ce}):j[R]=ce;var hc=(j,R,ce)=>(RN(j,typeof R!="symbol"?R+"":R,ce),ce),Ld=(j,R,ce)=>{if(!R.has(j))throw TypeError("Cannot "+ce)};var G=(j,R,ce)=>(Ld(j,R,"read from private field"),ce?ce.call(j):R.get(j)),te=(j,R,ce)=>{if(R.has(j))throw TypeError("Cannot add the same private member more than once");R instanceof WeakSet?R.add(j):R.set(j,ce)},tt=(j,R,ce,En)=>(Ld(j,R,"write to private field"),En?En.call(j,ce):R.set(j,ce),ce),
|
2
|
-
\r]`),n=t.charCodeAt(0);function r(l,d){var h,p,m=i(l,function(g,y){if(h)return h(g,y-1);p=g,h=d?
|
1
|
+
var zN=Object.defineProperty;var RN=(j,R,ce)=>R in j?zN(j,R,{enumerable:!0,configurable:!0,writable:!0,value:ce}):j[R]=ce;var hc=(j,R,ce)=>(RN(j,typeof R!="symbol"?R+"":R,ce),ce),Ld=(j,R,ce)=>{if(!R.has(j))throw TypeError("Cannot "+ce)};var G=(j,R,ce)=>(Ld(j,R,"read from private field"),ce?ce.call(j):R.get(j)),te=(j,R,ce)=>{if(R.has(j))throw TypeError("Cannot add the same private member more than once");R instanceof WeakSet?R.add(j):R.set(j,ce)},tt=(j,R,ce,En)=>(Ld(j,R,"write to private field"),En?En.call(j,ce):R.set(j,ce),ce),j2=(j,R,ce,En)=>({set _(pc){tt(j,R,pc,ce)},get _(){return G(j,R,En)}}),se=(j,R,ce)=>(Ld(j,R,"access private method"),ce);(function(j,R){typeof exports=="object"&&typeof module<"u"?R(exports):typeof define=="function"&&define.amd?define(["exports"],R):(j=typeof globalThis<"u"?globalThis:j||self,R(j.genomeSpyApp={}))})(this,function(j){var Qo,Bd,ui,li,et,fi,Vo,Od,Dt,Sn,oc,U2,ac,H2,br,$o,Yo,Pd,_o,Fd,Wo,zd,sc,G2,Xo,di,Wt,wn,Zo,cc,Q2,uc,V2,qo,Rd,lc,Y2,fc,_2;"use strict";function R(t,e,n){return t.fields=e||[],t.fname=n,t}function ce(t){return t==null?null:t.fname}function En(t){return t==null?null:t.fields}function pc(t){return t.length===1?W2(t[0]):X2(t)}const W2=t=>function(e){return e[t]},X2=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function ae(t){throw Error(t)}function Z2(t){const e=[],n=t.length;let r=null,i=0,o="",a,s,c;t=t+"";function u(){e.push(o+t.substring(a,s)),o="",a=s+1}for(a=s=0;s<n;++s)if(c=t[s],c==="\\")o+=t.substring(a,s),o+=t.substring(++s,++s),a=s;else if(c===r)u(),r=null,i=-1;else{if(r)continue;a===i&&c==='"'||a===i&&c==="'"?(a=s+1,r=c):c==="."&&!i?s>a?u():a=s+1:c==="["?(s>a&&u(),i=a=s+1):c==="]"&&(i||ae("Access path missing open bracket: "+t),i>0&&u(),i=0,a=s+1)}return i&&ae("Access path missing closing bracket: "+t),r&&ae("Access path missing closing quote: "+t),s>a&&(s++,u()),e}function ea(t,e,n){const r=Z2(t);return t=r.length===1?r[0]:t,R((n&&n.get||pc)(r),[t],e||t)}ea("id");const ta=R(t=>t,[],"identity");R(()=>0,[],"zero"),R(()=>1,[],"one"),R(()=>!0,[],"true"),R(()=>!1,[],"false");var We=Array.isArray;function ze(t){return t===Object(t)}function nt(t){return t[t.length-1]}function hi(t){return t==null||t===""?null:+t}const jd=t=>e=>t*Math.exp(e),Ud=t=>e=>Math.log(t*e),q2=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),K2=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,na=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function mc(t,e,n,r){const i=n(t[0]),o=n(nt(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function J2(t,e){return mc(t,e,hi,ta)}function $2(t,e){var n=Math.sign(t[0]);return mc(t,e,Ud(n),jd(n))}function eb(t,e,n){return mc(t,e,na(n),na(1/n))}function ra(t,e,n,r,i){const o=r(t[0]),a=r(nt(t)),s=e!=null?r(e):(o+a)/2;return[i(s+(o-s)*n),i(s+(a-s)*n)]}function gc(t,e,n){return ra(t,e,n,hi,ta)}function Hd(t,e,n){const r=Math.sign(t[0]);return ra(t,e,n,Ud(r),jd(r))}function yc(t,e,n,r){return ra(t,e,n,na(r),na(1/r))}function tb(t,e,n,r){return ra(t,e,n,q2(r),K2(r))}function vc(t){return t!=null?We(t)?t:[t]:[]}function nb(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function ke(t){return typeof t=="function"}const rb="descending";function Gd(t,e,n){n=n||{},e=vc(e)||[];const r=[],i=[],o={},a=n.comparator||ib;return vc(t).forEach((s,c)=>{s!=null&&(r.push(e[c]===rb?-1:1),i.push(s=ke(s)?s:ea(s,null,n)),(En(s)||[]).forEach(u=>o[u]=1))}),i.length===0?null:R(a(i,r),Object.keys(o))}const Qd=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||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),ib=(t,e)=>t.length===1?ob(t[0],e[0]):ab(t,e,t.length),ob=(t,e)=>function(n,r){return Qd(t(n),t(r))*e},ab=(t,e,n)=>(e.push(0),function(r,i){let o,a=0,s=-1;for(;a===0&&++s<n;)o=t[s],a=Qd(o(r),o(i));return a*e[s]});function sb(t){return ke(t)?t:()=>t}function bc(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const cb=Object.prototype.hasOwnProperty;function Dn(t,e){return cb.call(t,e)}function ia(t){return typeof t=="boolean"}function ub(t){return Object.prototype.toString.call(t)==="[object Date]"}function lb(t){return t&&ke(t[Symbol.iterator])}function le(t){return typeof t=="number"}function ne(t){return typeof t=="string"}function fb(t,e){const n=t[0],r=nt(t),i=+e;return i?i===1?r:n+i*(r-n):n}function oa(t){return t&&nt(t)-t[0]||0}function aa(t){return We(t)?"["+t.map(aa)+"]":ze(t)||ne(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function db(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const hb=t=>le(t)||ub(t)?t:Date.parse(t);function pb(t,e){return e=e||hb,t==null||t===""?null:e(t)}function mb(t){return t==null||t===""?null:t+""}function sa(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var Vd={},Ac={},xc=34,pi=10,wc=13;function Yd(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function gb(t,e){var n=Yd(t);return function(r,i){return e(n(r),i,t)}}function _d(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Ne(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function yb(t){return t<0?"-"+Ne(-t,6):t>9999?"+"+Ne(t,6):Ne(t,4)}function vb(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":yb(t.getUTCFullYear())+"-"+Ne(t.getUTCMonth()+1,2)+"-"+Ne(t.getUTCDate(),2)+(i?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"."+Ne(i,3)+"Z":r?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"Z":n||e?"T"+Ne(e,2)+":"+Ne(n,2)+"Z":"")}function Wd(t){var e=new RegExp('["'+t+`
|
2
|
+
\r]`),n=t.charCodeAt(0);function r(l,d){var h,p,m=i(l,function(g,y){if(h)return h(g,y-1);p=g,h=d?gb(g,d):Yd(g)});return m.columns=p||[],m}function i(l,d){var h=[],p=l.length,m=0,g=0,y,A=p<=0,x=!1;l.charCodeAt(p-1)===pi&&--p,l.charCodeAt(p-1)===wc&&--p;function w(){if(A)return Ac;if(x)return x=!1,Vd;var v,C=m,S;if(l.charCodeAt(C)===xc){for(;m++<p&&l.charCodeAt(m)!==xc||l.charCodeAt(++m)===xc;);return(v=m)>=p?A=!0:(S=l.charCodeAt(m++))===pi?x=!0:S===wc&&(x=!0,l.charCodeAt(m)===pi&&++m),l.slice(C+1,v-1).replace(/""/g,'"')}for(;m<p;){if((S=l.charCodeAt(v=m++))===pi)x=!0;else if(S===wc)x=!0,l.charCodeAt(m)===pi&&++m;else if(S!==n)continue;return l.slice(C,v)}return A=!0,l.slice(C,p)}for(;(y=w())!==Ac;){for(var b=[];y!==Vd&&y!==Ac;)b.push(y),y=w();d&&(b=d(b,g++))==null||h.push(b)}return h}function o(l,d){return l.map(function(h){return d.map(function(p){return f(h[p])}).join(t)})}function a(l,d){return d==null&&(d=_d(l)),[d.map(f).join(t)].concat(o(l,d)).join(`
|
3
3
|
`)}function s(l,d){return d==null&&(d=_d(l)),o(l,d).join(`
|
4
4
|
`)}function c(l){return l.map(u).join(`
|
5
|
-
`)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?yb(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var vb=Wd(" "),bb=vb.parseRows;function Ab(t){return t}function xb(t){if(t==null)return Ab;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(s,c){c||(e=n=0);var u=2,f=s.length,l=new Array(f);for(l[0]=(e+=s[0])*r+o,l[1]=(n+=s[1])*i+a;u<f;)l[u]=s[u],++u;return l}}function wb(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Cb(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Xd(t,n)})}:Xd(t,e)}function Xd(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Zd(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Zd(t,e){var n=xb(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],h=0,p=d.length;h<p;++h)l.push(n(d[h],h));f<0&&wb(l,p)}function o(f){return n(f)}function a(f){for(var l=[],d=0,h=f.length;d<h;++d)i(f[d],l);return l.length<2&&l.push(l[0]),l}function s(f){for(var l=a(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(s)}function u(f){var l=f.type,d;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":d=o(f.coordinates);break;case"MultiPoint":d=f.coordinates.map(o);break;case"LineString":d=a(f.arcs);break;case"MultiLineString":d=f.arcs.map(a);break;case"Polygon":d=c(f.arcs);break;case"MultiPolygon":d=f.arcs.map(c);break;default:return null}return{type:l,coordinates:d}}return u(e)}function Sb(t,e){var n={},r={},i={},o=[],a=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],d;l.length<3&&!l[1][0]&&!l[1][1]&&(d=e[++a],e[a]=u,e[f]=d)}),e.forEach(function(u){var f=s(u),l=f[0],d=f[1],h,p;if(h=i[l])if(delete i[h.end],h.push(u),h.end=d,p=r[d]){delete r[p.start];var m=p===h?h:h.concat(p);r[m.start=h.start]=i[m.end=p.end]=m}else r[h.start]=i[h.end]=h;else if(h=r[d])if(delete r[h.start],h.unshift(u),h.start=l,p=i[l]){delete i[p.end];var g=p===h?h:p.concat(h);r[g.start=p.start]=i[g.end=h.end]=g}else r[h.start]=i[h.end]=h;else h=[u],r[h.start=l]=i[h.end=d]=h});function s(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(h){d[0]+=h[0],d[1]+=h[1]})):d=f[f.length-1],u<0?[d,l]:[l,d]}function c(u,f){for(var l in u){var d=u[l];delete f[d.start],delete d.start,delete d.end,d.forEach(function(h){n[h<0?~h:h]=1}),o.push(d)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function Eb(t){return Zd(t,Db.apply(this,arguments))}function Db(t,e,n){var r,i,o;if(arguments.length>1)r=Mb(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Sb(t,r)}}function Mb(t,e,n){var r=[],i=[],o;function a(l){var d=l<0?~l:l;(i[d]||(i[d]=[])).push({i:l,g:o})}function s(l){l.forEach(a)}function c(l){l.forEach(s)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":s(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Mn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Tb(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function ca(t){let e,n,r;t.length!==2?(e=Mn,n=(s,c)=>Mn(t(s),c),r=(s,c)=>t(s)-c):(e=t===Mn||t===Tb?t:Ib,n=t,r=t);function i(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function a(s,c,u=0,f=s.length){const l=i(s,c,u,f-1);return l>u&&r(s[l-1],c)>-r(s[l],c)?l-1:l}return{left:i,center:a,right:o}}function Ib(){return 0}function qd(t){return t===null?NaN:+t}const Kd=ca(Mn),Cc=Kd.right;Kd.left,ca(qd).center;const Tn=Cc;function kb(t,e){let n=0;if(e===void 0)for(let r of t)r!=null&&(r=+r)>=r&&++n;else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(i=+i)>=i&&++n}return n}function ua(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<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class In extends Map{constructor(e,n=Bb){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Jd(this,e))}has(e){return super.has(Jd(this,e))}set(e,n){return super.set(Nb(this,e),n)}delete(e){return super.delete(Lb(this,e))}}function Jd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Nb({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Lb({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Bb(t){return t!==null&&typeof t=="object"?t.valueOf():t}function mi(t){return t}function gi(t,...e){return Sc(t,mi,mi,e)}function Ob(t,...e){return Sc(t,Array.from,mi,e)}function Pb(t,e,...n){return Sc(t,mi,e,n)}function Sc(t,e,n,r){return function i(o,a){if(a>=r.length)return n(o);const s=new In,c=r[a++];let u=-1;for(const f of o){const l=c(f,++u,o),d=s.get(l);d?d.push(f):s.set(l,[f])}for(const[f,l]of s)s.set(f,i(l,a));return e(s)}(t,0)}function Fb(t,e){return Array.from(e,n=>t[n])}function zb(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n]=e;if(n&&n.length!==2||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const a of e){const s=Ec(a[i],a[o]);if(s)return s}})):(n=t.map(n),r.sort((i,o)=>Ec(n[i],n[o]))),Fb(t,r)}return t.sort(Rb(n))}function Rb(t=Mn){if(t===Mn)return Ec;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||r===0?r:(t(n,n)===0)-(t(e,e)===0)}}function Ec(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var jb=Array.prototype,Ub=jb.slice;function la(t){return()=>t}var Dc=Math.sqrt(50),Mc=Math.sqrt(10),Tc=Math.sqrt(2);function yi(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=e<t)&&(o=t,t=e,e=o),(s=vi(t,e,n))===0||!isFinite(s))return[];if(s>0){let c=Math.round(t/s),u=Math.round(e/s);for(c*s<t&&++c,u*s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)*s}else{s=-s;let c=Math.round(t*s),u=Math.round(e*s);for(c/s<t&&++c,u/s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)/s}return r&&a.reverse(),a}function vi(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Dc?10:o>=Mc?5:o>=Tc?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Dc?10:o>=Mc?5:o>=Tc?2:1)}function kn(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>=Dc?i*=10:o>=Mc?i*=5:o>=Tc&&(i*=2),e<t?-i:i}function Hb(t,e,n){let r;for(;;){const i=vi(t,e,n);if(i===r||i===0||!isFinite(i))return[t,e];i>0?(t=Math.floor(t/i)*i,e=Math.ceil(e/i)*i):i<0&&(t=Math.ceil(t*i)/i,e=Math.floor(e*i)/i),r=i}}function Gb(t){return Math.ceil(Math.log(kb(t))/Math.LN2)+1}function Qb(){var t=mi,e=ua,n=Gb;function r(i){Array.isArray(i)||(i=Array.from(i));var o,a=i.length,s,c,u=new Array(a);for(o=0;o<a;++o)u[o]=t(i[o],o,i);var f=e(u),l=f[0],d=f[1],h=n(u,l,d);if(!Array.isArray(h)){const y=d,A=+h;if(e===ua&&([l,d]=Hb(l,d,A)),h=yi(l,d,A),h[0]<=l&&(c=vi(l,d,A)),h[h.length-1]>=d)if(y>=d&&e===ua){const x=vi(l,d,A);isFinite(x)&&(x>0?d=(Math.floor(d/x)+1)*x:x<0&&(d=(Math.ceil(d*-x)+1)/-x))}else h.pop()}for(var p=h.length;h[0]<=l;)h.shift(),--p;for(;h[p-1]>d;)h.pop(),--p;var m=new Array(p+1),g;for(o=0;o<=p;++o)g=m[o]=[],g.x0=o>0?h[o-1]:l,g.x1=o<p?h[o]:d;if(isFinite(c)){if(c>0)for(o=0;o<a;++o)(s=u[o])!=null&&l<=s&&s<=d&&m[Math.min(p,Math.floor((s-l)/c))].push(i[o]);else if(c<0){for(o=0;o<a;++o)if((s=u[o])!=null&&l<=s&&s<=d){const y=Math.floor((l-s)*c);m[Math.min(p,y+(h[y]<=s))].push(i[o])}}}else for(o=0;o<a;++o)(s=u[o])!=null&&l<=s&&s<=d&&m[Tn(h,s,0,p)].push(i[o]);return m}return r.value=function(i){return arguments.length?(t=typeof i=="function"?i:la(i),r):t},r.domain=function(i){return arguments.length?(e=typeof i=="function"?i:la([i[0],i[1]]),r):e},r.thresholds=function(i){return arguments.length?(n=typeof i=="function"?i:Array.isArray(i)?la(Ub.call(i)):la(i),r):n},r}function Ic(t,e,n=qd){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(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 Xt(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<i;)o[r]=t+r*n;return o}function fa(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Vb(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function da(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 xr(t){return t=da(Math.abs(t)),t?t[1]:NaN}function Yb(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),o.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function _b(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Wb=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Zt(t){if(!(e=Wb.exec(t)))throw new Error("invalid format: "+t);var e;return new kc({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]})}Zt.prototype=kc.prototype;function kc(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+""}kc.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 Xb(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var $d;function Zb(t,e){var n=da(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-($d=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")+da(t,Math.max(0,e+o-1))[0]}function eh(t,e){var n=da(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 th={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Vb,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)=>eh(t*100,e),r:eh,s:Zb,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function nh(t){return t}var rh=Array.prototype.map,ih=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function qb(t){var e=t.grouping===void 0||t.thousands===void 0?nh:Yb(rh.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?nh:_b(rh.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Zt(l);var d=l.fill,h=l.align,p=l.sign,m=l.symbol,g=l.zero,y=l.width,A=l.comma,x=l.precision,w=l.trim,b=l.type;b==="n"?(A=!0,b="g"):th[b]||(x===void 0&&(x=12),w=!0,b="g"),(g||d==="0"&&h==="=")&&(g=!0,d="0",h="=");var v=m==="$"?n:m==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",C=m==="$"?r:/[%p]/.test(b)?a:"",S=th[b],I=/[defgprs%]/.test(b);x=x===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function N(T){var O=v,Q=C,U,we,Ie;if(b==="c")Q=S(T)+Q,T="";else{T=+T;var Cn=T<0||1/T<0;if(T=isNaN(T)?c:S(Math.abs(T),x),w&&(T=Xb(T)),Cn&&+T==0&&p!=="+"&&(Cn=!1),O=(Cn?p==="("?p:s:p==="-"||p==="("?"":p)+O,Q=(b==="s"?ih[8+$d/3]:"")+Q+(Cn&&p==="("?")":""),I){for(U=-1,we=T.length;++U<we;)if(Ie=T.charCodeAt(U),48>Ie||Ie>57){Q=(Ie===46?i+T.slice(U+1):T.slice(U))+Q,T=T.slice(0,U);break}}}A&&!g&&(T=e(T,1/0));var _=O.length+T.length+Q.length,Ve=_<y?new Array(y-_+1).join(d):"";switch(A&&g&&(T=e(Ve+T,Ve.length?y-Q.length:1/0),Ve=""),h){case"<":T=O+T+Q+Ve;break;case"=":T=O+Ve+T+Q;break;case"^":T=Ve.slice(0,_=Ve.length>>1)+O+T+Q+Ve.slice(_);break;default:T=Ve+O+T+Q;break}return o(T)}return N.toString=function(){return l+""},N}function f(l,d){var h=u((l=Zt(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(xr(d)/3)))*3,m=Math.pow(10,-p),g=ih[8+p/3];return function(y){return h(m*y)+g}}return{format:u,formatPrefix:f}}var ha,de,Nc;Kb({thousands:",",grouping:[3],currency:["$",""]});function Kb(t){return ha=qb(t),de=ha.format,Nc=ha.formatPrefix,ha}function oh(t){return Math.max(0,-xr(Math.abs(t)))}function ah(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(xr(e)/3)))*3-xr(Math.abs(t)))}function sh(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,xr(e)-xr(t))+1}var Lc=new Date,Bc=new Date;function pe(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-a<s-o?a:s},i.offset=function(o,a){return e(o=new Date(+o),a==null?1:Math.floor(a)),o},i.range=function(o,a,s){var c=[],u;if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return c;do c.push(u=new Date(+o)),e(o,s),t(o);while(u<o&&o<a);return c},i.filter=function(o){return pe(function(a){if(a>=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 Lc.setTime(+o),Bc.setTime(+a),t(Lc),t(Bc),Math.floor(n(Lc,Bc))},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 pa=pe(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});pa.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?pe(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):pa};const Oc=pa;pa.range;const Mt=1e3,Xe=Mt*60,Tt=Xe*60,Nn=Tt*24,Pc=Nn*7,ch=Nn*30,Fc=Nn*365;var uh=pe(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getUTCSeconds()});const qt=uh;uh.range;var lh=pe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt)},function(t,e){t.setTime(+t+e*Xe)},function(t,e){return(e-t)/Xe},function(t){return t.getMinutes()});const zc=lh;lh.range;var fh=pe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt-t.getMinutes()*Xe)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getHours()});const Rc=fh;fh.range;var dh=pe(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Xe)/Nn,t=>t.getDate()-1);const Ln=dh;dh.range;function Bn(t){return pe(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())*Xe)/Pc})}var bi=Bn(0),ma=Bn(1),Jb=Bn(2),$b=Bn(3),wr=Bn(4),eA=Bn(5),tA=Bn(6);bi.range,ma.range,Jb.range,$b.range,wr.range,eA.range,tA.range;var hh=pe(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 ga=hh;hh.range;var jc=pe(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()});jc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:pe(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 Kt=jc;jc.range;var ph=pe(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Xe)},function(t,e){return(e-t)/Xe},function(t){return t.getUTCMinutes()});const Uc=ph;ph.range;var mh=pe(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getUTCHours()});const Hc=mh;mh.range;var gh=pe(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Nn},function(t){return t.getUTCDate()-1});const On=gh;gh.range;function Pn(t){return pe(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)/Pc})}var Ai=Pn(0),ya=Pn(1),nA=Pn(2),rA=Pn(3),Cr=Pn(4),iA=Pn(5),oA=Pn(6);Ai.range,ya.range,nA.range,rA.range,Cr.range,iA.range,oA.range;var yh=pe(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 va=yh;yh.range;var Gc=pe(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()});Gc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:pe(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 Jt=Gc;Gc.range;function vh(t,e,n,r,i,o){const a=[[qt,1,Mt],[qt,5,5*Mt],[qt,15,15*Mt],[qt,30,30*Mt],[o,1,Xe],[o,5,5*Xe],[o,15,15*Xe],[o,30,30*Xe],[i,1,Tt],[i,3,3*Tt],[i,6,6*Tt],[i,12,12*Tt],[r,1,Nn],[r,2,2*Nn],[n,1,Pc],[e,1,ch],[e,3,3*ch],[t,1,Fc]];function s(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const h=l&&typeof l.range=="function"?l:c(u,f,l),p=h?h.range(u,+f+1):[];return d?p.reverse():p}function c(u,f,l){const d=Math.abs(f-u)/l,h=ca(([,,g])=>g).right(a,d);if(h===a.length)return t.every(kn(u/Fc,f/Fc,l));if(h===0)return Oc.every(Math.max(kn(u,f,l),1));const[p,m]=a[d/a[h-1][2]<a[h][2]/d?h-1:h];return p.every(m)}return[s,c]}const[aA,sA]=vh(Jt,va,Ai,On,Hc,Uc),[cA,uA]=vh(Kt,ga,bi,Ln,Rc,zc),xi="year",wi="quarter",Ci="month",Si="week",Ei="date",ba="day",Qc="dayofyear",Di="hours",Mi="minutes",Ti="seconds",Aa="milliseconds";[xi,wi,Ci,Si,Ei,ba,Qc,Di,Mi,Ti,Aa].reduce((t,e,n)=>(t[e]=1+n,t),{});const lA={[xi]:Kt,[wi]:ga.every(3),[Ci]:ga,[Si]:bi,[Ei]:Ln,[ba]:Ln,[Qc]:Ln,[Di]:Rc,[Mi]:zc,[Ti]:qt,[Aa]:Oc},fA={[xi]:Jt,[wi]:va.every(3),[Ci]:va,[Si]:Ai,[Ei]:On,[ba]:On,[Qc]:On,[Di]:Hc,[Mi]:Uc,[Ti]:qt,[Aa]:Oc};function dA(t){return lA[t]}function hA(t){return fA[t]}function Vc(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 Yc(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 Ii(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function bh(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,c=t.shortMonths,u=ki(i),f=Ni(i),l=ki(o),d=Ni(o),h=ki(a),p=Ni(a),m=ki(s),g=Ni(s),y=ki(c),A=Ni(c),x={a:Cn,A:_,b:Ve,B:Ko,c:null,d:Eh,e:Eh,f:FA,g:_A,G:XA,H:BA,I:OA,j:PA,L:Dh,m:zA,M:RA,p:Jo,q:dc,Q:Lh,s:Bh,S:jA,u:UA,U:HA,V:GA,w:QA,W:VA,x:null,X:null,y:YA,Y:WA,Z:ZA,"%":Nh},w={a:Nd,A:LN,b:BN,B:ON,c:null,d:Th,e:Th,f:$A,g:ux,G:fx,H:qA,I:KA,j:JA,L:Ih,m:ex,M:tx,p:PN,q:FN,Q:Lh,s:Bh,S:nx,u:rx,U:ix,V:ox,w:ax,W:sx,x:null,X:null,y:cx,Y:lx,Z:dx,"%":Nh},b={a:N,A:T,b:O,B:Q,c:U,d:Ch,e:Ch,f:IA,g:wh,G:xh,H:Sh,I:Sh,j:EA,L:TA,m:SA,M:DA,p:I,q:CA,Q:NA,s:LA,S:MA,u:vA,U:bA,V:AA,w:yA,W:xA,x:we,X:Ie,y:wh,Y:xh,Z:wA,"%":kA};x.x=v(n,x),x.X=v(r,x),x.c=v(e,x),w.x=v(n,w),w.X=v(r,w),w.c=v(e,w);function v(B,H){return function(W){var M=[],Fe=-1,J=0,Ye=B.length,_e,Ar,z2;for(W instanceof Date||(W=new Date(+W));++Fe<Ye;)B.charCodeAt(Fe)===37&&(M.push(B.slice(J,Fe)),(Ar=Ah[_e=B.charAt(++Fe)])!=null?_e=B.charAt(++Fe):Ar=_e==="e"?" ":"0",(z2=H[_e])&&(_e=z2(W,Ar)),M.push(_e),J=Fe+1);return M.push(B.slice(J,Fe)),M.join("")}}function C(B,H){return function(W){var M=Ii(1900,void 0,1),Fe=S(M,B,W+="",0),J,Ye;if(Fe!=W.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(H&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?(J=Yc(Ii(M.y,0,1)),Ye=J.getUTCDay(),J=Ye>4||Ye===0?ya.ceil(J):ya(J),J=On.offset(J,(M.V-1)*7),M.y=J.getUTCFullYear(),M.m=J.getUTCMonth(),M.d=J.getUTCDate()+(M.w+6)%7):(J=Vc(Ii(M.y,0,1)),Ye=J.getDay(),J=Ye>4||Ye===0?ma.ceil(J):ma(J),J=Ln.offset(J,(M.V-1)*7),M.y=J.getFullYear(),M.m=J.getMonth(),M.d=J.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),Ye="Z"in M?Yc(Ii(M.y,0,1)).getUTCDay():Vc(Ii(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(Ye+5)%7:M.w+M.U*7-(Ye+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Yc(M)):Vc(M)}}function S(B,H,W,M){for(var Fe=0,J=H.length,Ye=W.length,_e,Ar;Fe<J;){if(M>=Ye)return-1;if(_e=H.charCodeAt(Fe++),_e===37){if(_e=H.charAt(Fe++),Ar=b[_e in Ah?H.charAt(Fe++):_e],!Ar||(M=Ar(B,W,M))<0)return-1}else if(_e!=W.charCodeAt(M++))return-1}return M}function I(B,H,W){var M=u.exec(H.slice(W));return M?(B.p=f.get(M[0].toLowerCase()),W+M[0].length):-1}function N(B,H,W){var M=h.exec(H.slice(W));return M?(B.w=p.get(M[0].toLowerCase()),W+M[0].length):-1}function T(B,H,W){var M=l.exec(H.slice(W));return M?(B.w=d.get(M[0].toLowerCase()),W+M[0].length):-1}function O(B,H,W){var M=y.exec(H.slice(W));return M?(B.m=A.get(M[0].toLowerCase()),W+M[0].length):-1}function Q(B,H,W){var M=m.exec(H.slice(W));return M?(B.m=g.get(M[0].toLowerCase()),W+M[0].length):-1}function U(B,H,W){return S(B,e,H,W)}function we(B,H,W){return S(B,n,H,W)}function Ie(B,H,W){return S(B,r,H,W)}function Cn(B){return a[B.getDay()]}function _(B){return o[B.getDay()]}function Ve(B){return c[B.getMonth()]}function Ko(B){return s[B.getMonth()]}function Jo(B){return i[+(B.getHours()>=12)]}function dc(B){return 1+~~(B.getMonth()/3)}function Nd(B){return a[B.getUTCDay()]}function LN(B){return o[B.getUTCDay()]}function BN(B){return c[B.getUTCMonth()]}function ON(B){return s[B.getUTCMonth()]}function PN(B){return i[+(B.getUTCHours()>=12)]}function FN(B){return 1+~~(B.getUTCMonth()/3)}return{format:function(B){var H=v(B+="",x);return H.toString=function(){return B},H},parse:function(B){var H=C(B+="",!1);return H.toString=function(){return B},H},utcFormat:function(B){var H=v(B+="",w);return H.toString=function(){return B},H},utcParse:function(B){var H=C(B+="",!0);return H.toString=function(){return B},H}}}var Ah={"-":"",_:" ",0:"0"},me=/^\s*\d+/,pA=/^%/,mA=/[\\^$*+?|[\]().{}]/g;function V(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function gA(t){return t.replace(mA,"\\$&")}function ki(t){return new RegExp("^(?:"+t.map(gA).join("|")+")","i")}function Ni(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function yA(t,e,n){var r=me.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function vA(t,e,n){var r=me.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function bA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function AA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function xA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function xh(t,e,n){var r=me.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function wh(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function wA(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 CA(t,e,n){var r=me.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function SA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ch(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function EA(t,e,n){var r=me.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Sh(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function DA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function MA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function TA(t,e,n){var r=me.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function IA(t,e,n){var r=me.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function kA(t,e,n){var r=pA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function NA(t,e,n){var r=me.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function LA(t,e,n){var r=me.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Eh(t,e){return V(t.getDate(),e,2)}function BA(t,e){return V(t.getHours(),e,2)}function OA(t,e){return V(t.getHours()%12||12,e,2)}function PA(t,e){return V(1+Ln.count(Kt(t),t),e,3)}function Dh(t,e){return V(t.getMilliseconds(),e,3)}function FA(t,e){return Dh(t,e)+"000"}function zA(t,e){return V(t.getMonth()+1,e,2)}function RA(t,e){return V(t.getMinutes(),e,2)}function jA(t,e){return V(t.getSeconds(),e,2)}function UA(t){var e=t.getDay();return e===0?7:e}function HA(t,e){return V(bi.count(Kt(t)-1,t),e,2)}function Mh(t){var e=t.getDay();return e>=4||e===0?wr(t):wr.ceil(t)}function GA(t,e){return t=Mh(t),V(wr.count(Kt(t),t)+(Kt(t).getDay()===4),e,2)}function QA(t){return t.getDay()}function VA(t,e){return V(ma.count(Kt(t)-1,t),e,2)}function YA(t,e){return V(t.getFullYear()%100,e,2)}function _A(t,e){return t=Mh(t),V(t.getFullYear()%100,e,2)}function WA(t,e){return V(t.getFullYear()%1e4,e,4)}function XA(t,e){var n=t.getDay();return t=n>=4||n===0?wr(t):wr.ceil(t),V(t.getFullYear()%1e4,e,4)}function ZA(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+V(e/60|0,"0",2)+V(e%60,"0",2)}function Th(t,e){return V(t.getUTCDate(),e,2)}function qA(t,e){return V(t.getUTCHours(),e,2)}function KA(t,e){return V(t.getUTCHours()%12||12,e,2)}function JA(t,e){return V(1+On.count(Jt(t),t),e,3)}function Ih(t,e){return V(t.getUTCMilliseconds(),e,3)}function $A(t,e){return Ih(t,e)+"000"}function ex(t,e){return V(t.getUTCMonth()+1,e,2)}function tx(t,e){return V(t.getUTCMinutes(),e,2)}function nx(t,e){return V(t.getUTCSeconds(),e,2)}function rx(t){var e=t.getUTCDay();return e===0?7:e}function ix(t,e){return V(Ai.count(Jt(t)-1,t),e,2)}function kh(t){var e=t.getUTCDay();return e>=4||e===0?Cr(t):Cr.ceil(t)}function ox(t,e){return t=kh(t),V(Cr.count(Jt(t),t)+(Jt(t).getUTCDay()===4),e,2)}function ax(t){return t.getUTCDay()}function sx(t,e){return V(ya.count(Jt(t)-1,t),e,2)}function cx(t,e){return V(t.getUTCFullYear()%100,e,2)}function ux(t,e){return t=kh(t),V(t.getUTCFullYear()%100,e,2)}function lx(t,e){return V(t.getUTCFullYear()%1e4,e,4)}function fx(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Cr(t):Cr.ceil(t),V(t.getUTCFullYear()%1e4,e,4)}function dx(){return"+0000"}function Nh(){return"%"}function Lh(t){return+t}function Bh(t){return Math.floor(+t/1e3)}var Sr,_c,Oh,Wc,Ph;hx({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 hx(t){return Sr=bh(t),_c=Sr.format,Oh=Sr.parse,Wc=Sr.utcFormat,Ph=Sr.utcParse,Sr}function Li(t){const e={};return n=>e[n]||(e[n]=t(n))}function px(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=mx(r,i);const a=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function mx(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 gx(t){const e=Li(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Zt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return px(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=Zt(a==null?",f":a);const s=kn(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(a.precision==null)switch(a.type){case"s":return isNaN(u=ah(s,c))||(a.precision=u),n(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=sh(s,c))||(a.precision=u-(a.type==="e"));break}case"f":case"%":{isNaN(u=oh(s))||(a.precision=u-(a.type==="%")*2);break}}return e(a)}}}yx();function yx(){return gx({format:de,formatPrefix:Nc})}function Fh(t,e,n){n=n||{},ze(n)||ae("Invalid time multi-format specifier: ".concat(n));const r=e(Ti),i=e(Mi),o=e(Di),a=e(Ei),s=e(Si),c=e(Ci),u=e(wi),f=e(xi),l=t(n[Aa]||".%L"),d=t(n[Ti]||":%S"),h=t(n[Mi]||"%I:%M"),p=t(n[Di]||"%I %p"),m=t(n[Ei]||n[ba]||"%a %d"),g=t(n[Si]||"%b %d"),y=t(n[Ci]||"%B"),A=t(n[wi]||"%B"),x=t(n[xi]||"%Y");return w=>(r(w)<w?l:i(w)<w?d:o(w)<w?h:a(w)<w?p:c(w)<w?s(w)<w?m:g:f(w)<w?u(w)<w?y:A:x)(w)}function zh(t){const e=Li(t.format),n=Li(t.utcFormat);return{timeFormat:r=>ne(r)?e(r):Fh(e,dA,r),utcFormat:r=>ne(r)?n(r):Fh(n,hA,r),timeParse:Li(t.parse),utcParse:Li(t.utcParse)}}let Xc;vx();function vx(){return Xc=zh({format:_c,parse:Oh,utcFormat:Wc,utcParse:Ph})}function bx(t){return zh(bh(t))}function Ax(t){return arguments.length?Xc=bx(t):Xc}const xx=/^(data:|([A-Za-z]+:)?\/\/)/,wx=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Cx=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Rh="file://";function Sx(t,e){return n=>({options:n||{},sanitize:Dx,load:Ex,fileAccess:!!e,file:Mx(e),http:Ix(t)})}async function Ex(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Dx(t,e){e=bc({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=wx.test(t.replace(Cx,""));(t==null||typeof t!="string"||!s)&&ae("Sanitize failure, invalid URI: "+aa(t));const c=xx.test(t);return(a=e.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(Rh))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Rh.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 Mx(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Tx}async function Tx(){ae("No file system access.")}function Ix(t){return t?async function(e,n){const r=bc({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ke(o[i])?o[i]():o.text():ae(o.status+""+o.statusText)}:kx}async function kx(){ae("No HTTP fetch method available.")}const Nx=t=>t!=null&&t===t,Lx=t=>t==="true"||t==="false"||t===!0||t===!1,Bx=t=>!Number.isNaN(Date.parse(t)),jh=t=>!Number.isNaN(+t)&&!(t instanceof Date),Ox=t=>jh(t)&&Number.isInteger(+t),Uh={boolean:fb,integer:hi,number:hi,date:hb,string:pb,unknown:ta},xa=[Lx,Ox,jh,Bx],Px=["boolean","integer","number","date"];function Hh(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=xa.length,i=xa.map((o,a)=>a+1);for(let o=0,a=0,s,c;o<n;++o)for(c=e?t[o][e]:t[o],s=0;s<r;++s)if(i[s]&&Nx(c)&&!xa[s](c)&&(i[s]=0,++a,a===xa.length))return"string";return Px[i.reduce((o,a)=>o===0?a:o,0)-1]}function Fx(t,e){return e.reduce((n,r)=>(n[r]=Hh(t,r),n),{})}function Gh(t){const e=function(n,r){const i={delimiter:t};return Zc(n,r?bc(r,i):i)};return e.responseType="text",e}function Zc(t,e){return e.header&&(t=e.header.map(aa).join(e.delimiter)+`
|
6
|
-
`+t),Wd(e.delimiter).parse(t+"")}Zc.responseType="text";function zx(t){return typeof Buffer=="function"&&ke(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function qc(t,e){const n=e&&e.property?ea(e.property):ta;return ze(t)&&!zx(t)?Rx(n(t),e):n(JSON.parse(t))}qc.responseType="json";function Rx(t,e){return!We(t)&&ub(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const jx={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function Qh(t,e){let n,r,i,o;return t=qc(t,e),e&&e.feature?(n=Cb,i=e.feature):e&&e.mesh?(n=Eb,i=e.mesh,o=jx[e.filter]):ae("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):ae("Invalid TopoJSON object: "+i),r&&r.features||[r]}Qh.responseType="json";const Kc={dsv:Zc,csv:Gh(","),tsv:Gh(" "),json:qc,topojson:Qh};function Vh(t,e){return arguments.length>1?(Kc[t]=e,this):Dn(Kc,t)?Kc[t]:null}function Yh(t,e,n,r){e=e||{};const i=Vh(e.type||"json");return i||ae("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Ux(t,e.parse,n,r),Dn(t,"columns")&&delete t.columns,t}function Ux(t,e,n,r){if(!t.length)return;const i=Ax();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),a,s,c,u,f,l;e==="auto"&&(e=Fx(t,o)),o=Object.keys(e);const d=o.map(h=>{const p=e[h];let m,g;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return m=p.split(/:(.+)?/,2),g=m[1],(g[0]==="'"&&g[g.length-1]==="'"||g[0]==='"'&&g[g.length-1]==='"')&&(g=g.slice(1,-1)),(m[0]==="utc"?r:n)(g);if(!Uh[p])throw Error("Illegal format pattern: "+h+":"+p);return Uh[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(a=t[c],u=0;u<l;++u)s=o[u],a[s]=d[u](a[s])}const Bi=Sx(typeof fetch<"u"&&fetch,null),_h=1;function Jc(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const u=f=>(f+a-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-a,u.domain=function(f){if(arguments.length){if(t=ua(f),n=t[1]-t[0],n<_h){n=_h;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(s=f,u):s},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u):a},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),d=u.numberingOffset();return yi(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(h=>h-s)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const h=kn(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?de(","):de(".3s");return p=>h(p+s)},u.copy=()=>Jc().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),u}function Hx(){const t=Jc().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(f=>e.toChromosome(f)),c=Math.max(1,kn(i[0],i[1],r)),u=[];for(let f=a.index;f<=s.index;f++){const l=e.chromosomes[f],d=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),h=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=d;p<=h;p+=c){const m=p-o;m>=i[0]&&m<i[1]&&u.push(m)}}return u},t.tickFormat=(r,i)=>{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(),u=kn(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?de(","):de(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+s)};const n=t.copy;return t.copy=()=>n().genome(e),t}function Gx(t){return t.type=="locus"}function ft(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function $t(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 $c=Symbol("implicit");function eu(){var t=new In,e=[],n=[],r=$c;function i(o){let a=t.get(o);if(a===void 0){if(r!==$c)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 In;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 eu(e,n).unknown(r)},ft.apply(i,arguments),i}function Er(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Oi(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function en(){}var Fn=.7,Dr=1/Fn,Mr="\\s*([+-]?\\d+)\\s*",Pi="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",dt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Qx=/^#([0-9a-f]{3,8})$/,Vx=new RegExp(`^rgb\\(${Mr},${Mr},${Mr}\\)$`),Yx=new RegExp(`^rgb\\(${dt},${dt},${dt}\\)$`),_x=new RegExp(`^rgba\\(${Mr},${Mr},${Mr},${Pi}\\)$`),Wx=new RegExp(`^rgba\\(${dt},${dt},${dt},${Pi}\\)$`),Xx=new RegExp(`^hsl\\(${Pi},${dt},${dt}\\)$`),Zx=new RegExp(`^hsla\\(${Pi},${dt},${dt},${Pi}\\)$`),Wh={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};Er(en,zn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Xh,formatHex:Xh,formatHex8:qx,formatHsl:Kx,formatRgb:Zh,toString:Zh});function Xh(){return this.rgb().formatHex()}function qx(){return this.rgb().formatHex8()}function Kx(){return e0(this).formatHsl()}function Zh(){return this.rgb().formatRgb()}function zn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Qx.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?qh(e):n===3?new ge(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?wa(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?wa(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=Vx.exec(t))?new ge(e[1],e[2],e[3],1):(e=Yx.exec(t))?new ge(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=_x.exec(t))?wa(e[1],e[2],e[3],e[4]):(e=Wx.exec(t))?wa(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Xx.exec(t))?$h(e[1],e[2]/100,e[3]/100,1):(e=Zx.exec(t))?$h(e[1],e[2]/100,e[3]/100,e[4]):Wh.hasOwnProperty(t)?qh(Wh[t]):t==="transparent"?new ge(NaN,NaN,NaN,0):null}function qh(t){return new ge(t>>16&255,t>>8&255,t&255,1)}function wa(t,e,n,r){return r<=0&&(t=e=n=NaN),new ge(t,e,n,r)}function tu(t){return t instanceof en||(t=zn(t)),t?(t=t.rgb(),new ge(t.r,t.g,t.b,t.opacity)):new ge}function Ca(t,e,n,r){return arguments.length===1?tu(t):new ge(t,e,n,r==null?1:r)}function ge(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Er(ge,Ca,Oi(en,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new ge(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new ge(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ge(Rn(this.r),Rn(this.g),Rn(this.b),Sa(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:Kh,formatHex:Kh,formatHex8:Jx,formatRgb:Jh,toString:Jh}));function Kh(){return`#${jn(this.r)}${jn(this.g)}${jn(this.b)}`}function Jx(){return`#${jn(this.r)}${jn(this.g)}${jn(this.b)}${jn((isNaN(this.opacity)?1:this.opacity)*255)}`}function Jh(){const t=Sa(this.opacity);return`${t===1?"rgb(":"rgba("}${Rn(this.r)}, ${Rn(this.g)}, ${Rn(this.b)}${t===1?")":`, ${t})`}`}function Sa(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Rn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function jn(t){return t=Rn(t),(t<16?"0":"")+t.toString(16)}function $h(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new rt(t,e,n,r)}function e0(t){if(t instanceof rt)return new rt(t.h,t.s,t.l,t.opacity);if(t instanceof en||(t=zn(t)),!t)return new rt;if(t instanceof rt)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,c=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=c<.5?o+i:2-o-i,a*=60):s=c>0&&c<1?0:a,new rt(a,s,c,t.opacity)}function nu(t,e,n,r){return arguments.length===1?e0(t):new rt(t,e,n,r==null?1:r)}function rt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Er(rt,nu,Oi(en,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new rt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new rt(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 ge(ru(t>=240?t-240:t+120,i,r),ru(t,i,r),ru(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new rt(t0(this.h),Ea(this.s),Ea(this.l),Sa(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=Sa(this.opacity);return`${t===1?"hsl(":"hsla("}${t0(this.h)}, ${Ea(this.s)*100}%, ${Ea(this.l)*100}%${t===1?")":`, ${t})`}`}}));function t0(t){return t=(t||0)%360,t<0?t+360:t}function Ea(t){return Math.max(0,Math.min(1,t||0))}function ru(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 n0=Math.PI/180,r0=180/Math.PI,Da=18,i0=.96422,o0=1,a0=.82521,s0=4/29,Tr=6/29,c0=3*Tr*Tr,$x=Tr*Tr*Tr;function u0(t){if(t instanceof ht)return new ht(t.l,t.a,t.b,t.opacity);if(t instanceof It)return l0(t);t instanceof ge||(t=tu(t));var e=cu(t.r),n=cu(t.g),r=cu(t.b),i=ou((.2225045*e+.7168786*n+.0606169*r)/o0),o,a;return e===n&&n===r?o=a=i:(o=ou((.4360747*e+.3850649*n+.1430804*r)/i0),a=ou((.0139322*e+.0971045*n+.7141733*r)/a0)),new ht(116*i-16,500*(o-i),200*(i-a),t.opacity)}function iu(t,e,n,r){return arguments.length===1?u0(t):new ht(t,e,n,r==null?1:r)}function ht(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Er(ht,iu,Oi(en,{brighter(t){return new ht(this.l+Da*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new ht(this.l-Da*(t==null?1:t),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=i0*au(e),t=o0*au(t),n=a0*au(n),new ge(su(3.1338561*e-1.6168667*t-.4906146*n),su(-.9787684*e+1.9161415*t+.033454*n),su(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ou(t){return t>$x?Math.pow(t,1/3):t/c0+s0}function au(t){return t>Tr?t*t*t:c0*(t-s0)}function su(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function cu(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function ew(t){if(t instanceof It)return new It(t.h,t.c,t.l,t.opacity);if(t instanceof ht||(t=u0(t)),t.a===0&&t.b===0)return new It(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*r0;return new It(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function uu(t,e,n,r){return arguments.length===1?ew(t):new It(t,e,n,r==null?1:r)}function It(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function l0(t){if(isNaN(t.h))return new ht(t.l,0,0,t.opacity);var e=t.h*n0;return new ht(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Er(It,uu,Oi(en,{brighter(t){return new It(this.h,this.c,this.l+Da*(t==null?1:t),this.opacity)},darker(t){return new It(this.h,this.c,this.l-Da*(t==null?1:t),this.opacity)},rgb(){return l0(this).rgb()}}));var f0=-.14861,lu=1.78277,fu=-.29227,Ma=-.90649,Fi=1.97294,d0=Fi*Ma,h0=Fi*lu,p0=lu*fu-Ma*f0;function tw(t){if(t instanceof Un)return new Un(t.h,t.s,t.l,t.opacity);t instanceof ge||(t=tu(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(p0*r+d0*e-h0*n)/(p0+d0-h0),o=r-i,a=(Fi*(n-i)-fu*o)/Ma,s=Math.sqrt(a*a+o*o)/(Fi*i*(1-i)),c=s?Math.atan2(a,o)*r0-120:NaN;return new Un(c<0?c+360:c,s,i,t.opacity)}function du(t,e,n,r){return arguments.length===1?tw(t):new Un(t,e,n,r==null?1:r)}function Un(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Er(Un,du,Oi(en,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new Un(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new Un(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*n0,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ge(255*(e+n*(f0*r+lu*i)),255*(e+n*(fu*r+Ma*i)),255*(e+n*(Fi*r)),this.opacity)}}));function m0(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function g0(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=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<e-1?t[r+2]:2*o-i;return m0((n-r/e)*e,a,i,o,s)}}function y0(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],s=t[(r+2)%e];return m0((n-r/e)*e,i,o,a,s)}}const Ta=t=>()=>t;function v0(t,e){return function(n){return t+n*e}}function nw(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 Ia(t,e){var n=e-t;return n?v0(t,n>180||n<-180?n-360*Math.round(n/360):n):Ta(isNaN(t)?e:t)}function rw(t){return(t=+t)==1?ye:function(e,n){return n-e?nw(e,n,t):Ta(isNaN(e)?n:e)}}function ye(t,e){var n=e-t;return n?v0(t,n):Ta(isNaN(t)?e:t)}const hu=function t(e){var n=rw(e);function r(i,o){var a=n((i=Ca(i)).r,(o=Ca(o)).r),s=n(i.g,o.g),c=n(i.b,o.b),u=ye(i.opacity,o.opacity);return function(f){return i.r=a(f),i.g=s(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function b0(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;a<n;++a)s=Ca(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(c){return s.r=r(c),s.g=i(c),s.b=o(c),s+""}}}var iw=b0(g0),ow=b0(y0);function pu(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function A0(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function aw(t,e){return(A0(e)?pu:x0)(t,e)}function x0(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=tn(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}function w0(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function it(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function C0(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=tn(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var mu=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,gu=new RegExp(mu.source,"g");function sw(t){return function(){return t}}function cw(t){return function(e){return t(e)+""}}function S0(t,e){var n=mu.lastIndex=gu.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=mu.exec(t))&&(i=gu.exec(e));)(o=i.index)>n&&(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,c.push({i:a,x:it(r,i)})),n=gu.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?cw(c[0].x):sw(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)s[(l=c[f]).i]=l.x(u);return s.join("")})}function tn(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ta(e):(n==="number"?it:n==="string"?(r=zn(e))?(e=r,hu):S0:e instanceof zn?hu:e instanceof Date?w0:A0(e)?pu:Array.isArray(e)?x0:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?C0:it)(t,e)}function uw(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function lw(t,e){var n=Ia(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function zi(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var E0=180/Math.PI,yu={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function D0(t,e,n,r,i,o){var a,s,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*E0,skewX:Math.atan(c)*E0,scaleX:a,scaleY:s}}var ka;function fw(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?yu:D0(e.a,e.b,e.c,e.d,e.e,e.f)}function dw(t){return t==null||(ka||(ka=document.createElementNS("http://www.w3.org/2000/svg","g")),ka.setAttribute("transform",t),!(t=ka.transform.baseVal.consolidate()))?yu:(t=t.matrix,D0(t.a,t.b,t.c,t.d,t.e,t.f))}function M0(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push("translate(",null,e,null,n);p.push({i:m-4,x:it(u,l)},{i:m-2,x:it(f,d)})}else(l||d)&&h.push("translate("+l+e+d+n)}function a(u,f,l,d){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),d.push({i:l.push(i(l)+"rotate(",null,r)-2,x:it(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function s(u,f,l,d){u!==f?d.push({i:l.push(i(l)+"skewX(",null,r)-2,x:it(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:it(u,l)},{i:m-2,x:it(f,d)})}else(l!==1||d!==1)&&h.push(i(h)+"scale("+l+","+d+")")}return function(u,f){var l=[],d=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,d),a(u.rotate,f.rotate,l,d),s(u.skewX,f.skewX,l,d),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,d),u=f=null,function(h){for(var p=-1,m=d.length,g;++p<m;)l[(g=d[p]).i]=g.x(h);return l.join("")}}}var hw=M0(fw,"px, ","px)","deg)"),pw=M0(dw,", ",")",")"),mw=1e-12;function T0(t){return((t=Math.exp(t))+1/t)/2}function gw(t){return((t=Math.exp(t))-1/t)/2}function yw(t){return((t=Math.exp(2*t))-1)/(t+1)}const I0=function t(e,n,r){function i(o,a){var s=o[0],c=o[1],u=o[2],f=a[0],l=a[1],d=a[2],h=f-s,p=l-c,m=h*h+p*p,g,y;if(m<mw)y=Math.log(d/u)/e,g=function(C){return[s+C*h,c+C*p,u*Math.exp(e*C*y)]};else{var A=Math.sqrt(m),x=(d*d-u*u+r*m)/(2*u*n*A),w=(d*d-u*u-r*m)/(2*d*n*A),b=Math.log(Math.sqrt(x*x+1)-x),v=Math.log(Math.sqrt(w*w+1)-w);y=(v-b)/e,g=function(C){var S=C*y,I=T0(b),N=u/(n*A)*(I*yw(e*S+b)-gw(b));return[s+N*h,c+N*p,u*I/T0(e*S+b)]}}return g.duration=y*1e3*e/Math.SQRT2,g}return i.rho=function(o){var a=Math.max(.001,+o),s=a*a,c=s*s;return t(a,s,c)},i}(Math.SQRT2,2,4);function k0(t){return function(e,n){var r=t((e=nu(e)).h,(n=nu(n)).h),i=ye(e.s,n.s),o=ye(e.l,n.l),a=ye(e.opacity,n.opacity);return function(s){return e.h=r(s),e.s=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const vw=k0(Ia);var bw=k0(ye);function Aw(t,e){var n=ye((t=iu(t)).l,(e=iu(e)).l),r=ye(t.a,e.a),i=ye(t.b,e.b),o=ye(t.opacity,e.opacity);return function(a){return t.l=n(a),t.a=r(a),t.b=i(a),t.opacity=o(a),t+""}}function N0(t){return function(e,n){var r=t((e=uu(e)).h,(n=uu(n)).h),i=ye(e.c,n.c),o=ye(e.l,n.l),a=ye(e.opacity,n.opacity);return function(s){return e.h=r(s),e.c=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const xw=N0(Ia);var ww=N0(ye);function L0(t){return function e(n){n=+n;function r(i,o){var a=t((i=du(i)).h,(o=du(o)).h),s=ye(i.s,o.s),c=ye(i.l,o.l),u=ye(i.opacity,o.opacity);return function(f){return i.h=a(f),i.s=s(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}const Cw=L0(Ia);var Sw=L0(ye);function vu(t,e){e===void 0&&(e=t,t=tn);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(a){var s=Math.max(0,Math.min(r-1,Math.floor(a*=r)));return o[s](a-s)}}function Ew(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Dw=Object.freeze(Object.defineProperty({__proto__:null,interpolate:tn,interpolateArray:aw,interpolateBasis:g0,interpolateBasisClosed:y0,interpolateDate:w0,interpolateDiscrete:uw,interpolateHue:lw,interpolateNumber:it,interpolateNumberArray:pu,interpolateObject:C0,interpolateRound:zi,interpolateString:S0,interpolateTransformCss:hw,interpolateTransformSvg:pw,interpolateZoom:I0,interpolateRgb:hu,interpolateRgbBasis:iw,interpolateRgbBasisClosed:ow,interpolateHsl:vw,interpolateHslLong:bw,interpolateLab:Aw,interpolateHcl:xw,interpolateHclLong:ww,interpolateCubehelix:Cw,interpolateCubehelixLong:Sw,piecewise:vu,quantize:Ew},Symbol.toStringTag,{value:"Module"}));function Mw(t){return function(){return t}}function bu(t){return+t}var B0=[0,1];function Le(t){return t}function Au(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Mw(isNaN(e)?NaN:.5)}function Tw(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Iw(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=Au(i,r),o=n(a,o)):(r=Au(r,i),o=n(o,a)),function(s){return o(r(s))}}function kw(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=Au(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var c=Tn(t,s,1,r)-1;return o[c](i[c](s))}}function Ri(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Na(){var t=B0,e=B0,n=tn,r,i,o,a=Le,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Le&&(a=Tw(t[0],t[d-1])),s=d>2?kw:Iw,c=u=null,l}function l(d){return d==null||isNaN(d=+d)?o:(c||(c=s(t.map(r),e,n)))(r(a(d)))}return l.invert=function(d){return a(i((u||(u=s(e,t.map(r),it)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,bu),f()):t.slice()},l.range=function(d){return arguments.length?(e=Array.from(d),f()):e.slice()},l.rangeRound=function(d){return e=Array.from(d),n=zi,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Le,f()):a!==Le},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,h){return r=d,i=h,f()}}function O0(){return Na()(Le,Le)}function P0(t,e,n,r){var i=kn(t,e,n),o;switch(r=Zt(r==null?",f":r),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=ah(i,a))&&(r.precision=o),Nc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=sh(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=oh(i))&&(r.precision=o-(r.type==="%")*2);break}}return de(r)}function Hn(t){var e=t.domain;return t.ticks=function(n){var r=e();return yi(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return P0(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,a=r[i],s=r[o],c,u,f=10;for(s<a&&(u=a,a=s,s=u,u=i,i=o,o=u);f-- >0;){if(u=vi(a,s,n),u===c)return r[i]=a,r[o]=s,e(r);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return t},t}function La(){var t=O0();return t.copy=function(){return Ri(t,La())},ft.apply(t,arguments),Hn(t)}function F0(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,bu),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return F0(t).unknown(e)},t=arguments.length?Array.from(t,bu):[0,1],Hn(n)}function z0(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}function R0(t){return Math.log(t)}function j0(t){return Math.exp(t)}function Nw(t){return-Math.log(-t)}function Lw(t){return-Math.exp(-t)}function Bw(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Ow(t){return t===10?Bw:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Pw(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 U0(t){return(e,n)=>-t(-e,n)}function xu(t){const e=t(R0,j0),n=e.domain;let r=10,i,o;function a(){return i=Pw(r),o=Ow(r),n()[0]<0?(i=U0(i),o=U0(o),t(Nw,Lw)):t(R0,j0),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 c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let d=i(u),h=i(f),p,m;const g=s==null?10:+s;let y=[];if(!(r%1)&&h-d<g){if(d=Math.floor(d),h=Math.ceil(h),u>0){for(;d<=h;++d)for(p=1;p<r;++p)if(m=d<0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;y.push(m)}}else for(;d<=h;++d)for(p=r-1;p>=1;--p)if(m=d>0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;y.push(m)}y.length*2<g&&(y=yi(u,f,g))}else y=yi(d,h,Math.min(h-d,g)).map(o);return l?y.reverse():y},e.tickFormat=(s,c)=>{if(s==null&&(s=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=Zt(c)).precision==null&&(c.trim=!0),c=de(c)),s===1/0)return c;const u=Math.max(1,r*s/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(z0(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function wu(){const t=xu(Na()).domain([1,10]);return t.copy=()=>Ri(t,wu()).base(t.base()),ft.apply(t,arguments),t}function H0(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function G0(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Cu(t){var e=1,n=t(H0(e),G0(e));return n.constant=function(r){return arguments.length?t(H0(e=+r),G0(e)):e},Hn(n)}function Q0(){var t=Cu(Na());return t.copy=function(){return Ri(t,Q0()).constant(t.constant())},ft.apply(t,arguments)}function V0(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Fw(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function zw(t){return t<0?-t*t:t*t}function Su(t){var e=t(Le,Le),n=1;function r(){return n===1?t(Le,Le):n===.5?t(Fw,zw):t(V0(n),V0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Hn(e)}function Eu(){var t=Su(Na());return t.copy=function(){return Ri(t,Eu()).exponent(t.exponent())},ft.apply(t,arguments),t}function Rw(){return Eu.apply(null,arguments).exponent(.5)}function Y0(){var t=[],e=[],n=[],r;function i(){var a=0,s=Math.max(1,e.length);for(n=new Array(s-1);++a<s;)n[a-1]=Ic(t,a/s);return o}function o(a){return a==null||isNaN(a=+a)?r:e[Tn(n,a)]}return o.invertExtent=function(a){var s=e.indexOf(a);return s<0?[NaN,NaN]:[s>0?n[s-1]:t[0],s<n.length?n[s]:t[t.length-1]]},o.domain=function(a){if(!arguments.length)return t.slice();t=[];for(let s of a)s!=null&&!isNaN(s=+s)&&t.push(s);return t.sort(Mn),i()},o.range=function(a){return arguments.length?(e=Array.from(a),i()):e.slice()},o.unknown=function(a){return arguments.length?(r=a,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return Y0().domain(t).range(e).unknown(r)},ft.apply(o,arguments)}function _0(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function a(c){return c!=null&&c<=c?i[Tn(r,c,0,n)]:o}function s(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return a}return a.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,s()):[t,e]},a.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,s()):i.slice()},a.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},a.unknown=function(c){return arguments.length&&(o=c),a},a.thresholds=function(){return r.slice()},a.copy=function(){return _0().domain([t,e]).range(i).unknown(o)},ft.apply(Hn(a),arguments)}function W0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Tn(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 W0().domain(t).range(e).unknown(n)},ft.apply(i,arguments)}function jw(t){return new Date(t)}function Uw(t){return t instanceof Date?+t:+new Date(+t)}function Du(t,e,n,r,i,o,a,s,c,u){var f=O0(),l=f.invert,d=f.domain,h=u(".%L"),p=u(":%S"),m=u("%I:%M"),g=u("%I %p"),y=u("%a %d"),A=u("%b %d"),x=u("%B"),w=u("%Y");function b(v){return(c(v)<v?h:s(v)<v?p:a(v)<v?m:o(v)<v?g:r(v)<v?i(v)<v?y:A:n(v)<v?x:w)(v)}return f.invert=function(v){return new Date(l(v))},f.domain=function(v){return arguments.length?d(Array.from(v,Uw)):d().map(jw)},f.ticks=function(v){var C=d();return t(C[0],C[C.length-1],v==null?10:v)},f.tickFormat=function(v,C){return C==null?b:u(C)},f.nice=function(v){var C=d();return(!v||typeof v.range!="function")&&(v=e(C[0],C[C.length-1],v==null?10:v)),v?d(z0(C,v)):f},f.copy=function(){return Ri(f,Du(t,e,n,r,i,o,a,s,c,u))},f}function Hw(){return ft.apply(Du(cA,uA,Kt,ga,bi,Ln,Rc,zc,qt,_c).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Gw(){return ft.apply(Du(aA,sA,Jt,va,Ai,On,Hc,Uc,qt,Wc).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Ba(){var t=0,e=1,n,r,i,o,a=Le,s=!1,c;function u(l){return l==null||isNaN(l=+l)?c:a(i===0?.5:(l=(o(l)-n)*i,s?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(s=!!l,u):s},u.interpolator=function(l){return arguments.length?(a=l,u):a};function f(l){return function(d){var h,p;return arguments.length?([h,p]=d,a=l(h,p),u):[a(0),a(1)]}}return u.range=f(tn),u.rangeRound=f(zi),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function nn(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Mu(){var t=Hn(Ba()(Le));return t.copy=function(){return nn(t,Mu())},$t.apply(t,arguments)}function X0(){var t=xu(Ba()).domain([1,10]);return t.copy=function(){return nn(t,X0()).base(t.base())},$t.apply(t,arguments)}function Z0(){var t=Cu(Ba());return t.copy=function(){return nn(t,Z0()).constant(t.constant())},$t.apply(t,arguments)}function Tu(){var t=Su(Ba());return t.copy=function(){return nn(t,Tu()).exponent(t.exponent())},$t.apply(t,arguments)}function Qw(){return Tu.apply(null,arguments).exponent(.5)}function Oa(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Le,f,l=!1,d;function h(m){return isNaN(m=+m)?d:(m=.5+((m=+f(m))-o)*(r*m<r*o?s:c),u(l?Math.max(0,Math.min(1,m)):m))}h.domain=function(m){return arguments.length?([t,e,n]=m,i=f(t=+t),o=f(e=+e),a=f(n=+n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h):[t,e,n]},h.clamp=function(m){return arguments.length?(l=!!m,h):l},h.interpolator=function(m){return arguments.length?(u=m,h):u};function p(m){return function(g){var y,A,x;return arguments.length?([y,A,x]=g,u=vu(m,[y,A,x]),h):[u(0),u(.5),u(1)]}}return h.range=p(tn),h.rangeRound=p(zi),h.unknown=function(m){return arguments.length?(d=m,h):d},function(m){return f=m,i=m(t),o=m(e),a=m(n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h}}function q0(){var t=Hn(Oa()(Le));return t.copy=function(){return nn(t,q0())},$t.apply(t,arguments)}function K0(){var t=xu(Oa()).domain([.1,1,10]);return t.copy=function(){return nn(t,K0()).base(t.base())},$t.apply(t,arguments)}function J0(){var t=Cu(Oa());return t.copy=function(){return nn(t,J0()).constant(t.constant())},$t.apply(t,arguments)}function Iu(){var t=Su(Oa());return t.copy=function(){return nn(t,Iu()).exponent(t.exponent())},$t.apply(t,arguments)}function Vw(){return Iu.apply(null,arguments).exponent(.5)}function ku(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Yw="identity",Ir="linear",rn="log",ji="pow",Ui="sqrt",Pa="symlog",$0="time",ep="utc",pt="sequential",kr="diverging",Nu="quantile",tp="quantize",np="threshold",Lu="ordinal",Bu="point",rp="band",Ou="bin-ordinal",he="continuous",Hi="discrete",Gi="discretizing",Ze="interpolating",ip="temporal";function _w(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function Ww(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,a,s,c,u;for(i<r&&(s=r,r=i,i=s),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),a=c);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 Pu(){const t=eu().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,a=!1,s=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,d=r[1]<r[0],h=r[1-d],p=ku(l,s,c);let m=r[d-0];i=(h-m)/(p||1),a&&(i=Math.floor(i)),m+=(h-m-i*(l-s))*u,o=i*(1-s),a&&(m=Math.round(m),o=Math.round(o));const g=Xt(l).map(y=>m+i*y);return n(d?g.reverse():g)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(a=!!l,f()):a},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),s=c,f()):s},t.paddingInner=function(l){return arguments.length?(s=Math.max(0,Math.min(1,l)),f()):s},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const d=r[1]<r[0],h=d?n().reverse():n(),p=h.length-1;let m=+l[0],g=+l[1],y,A,x;if(!(m!==m||g!==g)&&(g<m&&(x=m,m=g,g=x),!(g<h[0]||m>r[1-d])))return y=Math.max(0,Cc(h,m)-1),A=m===g?y:Cc(h,g)-1,m-h[y]>o+1e-10&&++y,d&&(x=y,y=p-A,A=p-x),y>A?void 0:e().slice(y,A+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return Pu().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(c).align(u)},f()}function op(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return op(e())},t}function Xw(){return op(Pu().paddingInner(1))}var Zw=Array.prototype.map;function qw(t){return Zw.call(t,hi)}const Kw=Array.prototype.slice;function ap(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Tn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=qw(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Kw.call(r),n):e.slice()},n.tickFormat=function(r,i){return P0(t[0],nt(t),r==null?10:r,i)},n.copy=function(){return ap().domain(n.domain()).range(n.range())},n}const Fa={};function Jw(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?_w(o):o.invertExtent?Ww(o):void 0),o.type=t,o};return r.metadata=sa(vc(n)),r}function X(t,e,n){return arguments.length>1?(Fa[t]=Jw(t,e,n),this):$w(t)?Fa[t]:void 0}X(Yw,F0),X(Ir,La,he),X(rn,wu,[he,rn]),X(ji,Eu,he),X(Ui,Rw,he),X(Pa,Q0,he),X($0,Hw,[he,ip]),X(ep,Gw,[he,ip]),X(pt,Mu,[he,Ze]),X("".concat(pt,"-").concat(Ir),Mu,[he,Ze]),X("".concat(pt,"-").concat(rn),X0,[he,Ze,rn]),X("".concat(pt,"-").concat(ji),Tu,[he,Ze]),X("".concat(pt,"-").concat(Ui),Qw,[he,Ze]),X("".concat(pt,"-").concat(Pa),Z0,[he,Ze]),X("".concat(kr,"-").concat(Ir),q0,[he,Ze]),X("".concat(kr,"-").concat(rn),K0,[he,Ze,rn]),X("".concat(kr,"-").concat(ji),Iu,[he,Ze]),X("".concat(kr,"-").concat(Ui),Vw,[he,Ze]),X("".concat(kr,"-").concat(Pa),J0,[he,Ze]),X(Nu,Y0,[Gi,Nu]),X(tp,_0,Gi),X(np,W0,Gi),X(Ou,ap,[Hi,Gi]),X(Lu,eu,Hi),X(rp,Pu,Hi),X(Bu,Xw,Hi);function $w(t){return Dn(Fa,t)}function Qi(t,e){const n=Fa[t];return n&&n.metadata[e]}function Re(t){return Qi(t,he)}function on(t){return Qi(t,Hi)}function Gn(t){return Qi(t,Gi)}function sp(t){return Qi(t,rn)}function za(t){return Qi(t,Ze)}function e4(t,e){const n=e[0],r=nt(e)-n;return function(i){return t(n+i*r)}}function Ra(t,e,n){return vu(cp(e||"rgb",n),t)}function t4(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function cp(t,e){const n=Dw[n4(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function n4(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const r4={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"},i4={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 up(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function lp(t,e){for(const n in t)Fu(n,e(t[n]))}const fp={};lp(i4,up),lp(r4,t=>Ra(up(t)));function Fu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(fp[t]=e,this):fp[t]}const UN="";function dp(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
|
5
|
+
`)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?vb(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var bb=Wd(" "),Ab=bb.parseRows;function xb(t){return t}function wb(t){if(t==null)return xb;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(s,c){c||(e=n=0);var u=2,f=s.length,l=new Array(f);for(l[0]=(e+=s[0])*r+o,l[1]=(n+=s[1])*i+a;u<f;)l[u]=s[u],++u;return l}}function Cb(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Sb(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Xd(t,n)})}:Xd(t,e)}function Xd(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Zd(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Zd(t,e){var n=wb(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],h=0,p=d.length;h<p;++h)l.push(n(d[h],h));f<0&&Cb(l,p)}function o(f){return n(f)}function a(f){for(var l=[],d=0,h=f.length;d<h;++d)i(f[d],l);return l.length<2&&l.push(l[0]),l}function s(f){for(var l=a(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(s)}function u(f){var l=f.type,d;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":d=o(f.coordinates);break;case"MultiPoint":d=f.coordinates.map(o);break;case"LineString":d=a(f.arcs);break;case"MultiLineString":d=f.arcs.map(a);break;case"Polygon":d=c(f.arcs);break;case"MultiPolygon":d=f.arcs.map(c);break;default:return null}return{type:l,coordinates:d}}return u(e)}function Eb(t,e){var n={},r={},i={},o=[],a=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],d;l.length<3&&!l[1][0]&&!l[1][1]&&(d=e[++a],e[a]=u,e[f]=d)}),e.forEach(function(u){var f=s(u),l=f[0],d=f[1],h,p;if(h=i[l])if(delete i[h.end],h.push(u),h.end=d,p=r[d]){delete r[p.start];var m=p===h?h:h.concat(p);r[m.start=h.start]=i[m.end=p.end]=m}else r[h.start]=i[h.end]=h;else if(h=r[d])if(delete r[h.start],h.unshift(u),h.start=l,p=i[l]){delete i[p.end];var g=p===h?h:p.concat(h);r[g.start=p.start]=i[g.end=h.end]=g}else r[h.start]=i[h.end]=h;else h=[u],r[h.start=l]=i[h.end=d]=h});function s(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(h){d[0]+=h[0],d[1]+=h[1]})):d=f[f.length-1],u<0?[d,l]:[l,d]}function c(u,f){for(var l in u){var d=u[l];delete f[d.start],delete d.start,delete d.end,d.forEach(function(h){n[h<0?~h:h]=1}),o.push(d)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function Db(t){return Zd(t,Mb.apply(this,arguments))}function Mb(t,e,n){var r,i,o;if(arguments.length>1)r=Tb(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Eb(t,r)}}function Tb(t,e,n){var r=[],i=[],o;function a(l){var d=l<0?~l:l;(i[d]||(i[d]=[])).push({i:l,g:o})}function s(l){l.forEach(a)}function c(l){l.forEach(s)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":s(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Mn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Ib(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function ca(t){let e,n,r;t.length!==2?(e=Mn,n=(s,c)=>Mn(t(s),c),r=(s,c)=>t(s)-c):(e=t===Mn||t===Ib?t:kb,n=t,r=t);function i(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function a(s,c,u=0,f=s.length){const l=i(s,c,u,f-1);return l>u&&r(s[l-1],c)>-r(s[l],c)?l-1:l}return{left:i,center:a,right:o}}function kb(){return 0}function qd(t){return t===null?NaN:+t}const Kd=ca(Mn),Cc=Kd.right;Kd.left,ca(qd).center;const Tn=Cc;function Nb(t,e){let n=0;if(e===void 0)for(let r of t)r!=null&&(r=+r)>=r&&++n;else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(i=+i)>=i&&++n}return n}function ua(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<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class In extends Map{constructor(e,n=Ob){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Jd(this,e))}has(e){return super.has(Jd(this,e))}set(e,n){return super.set(Lb(this,e),n)}delete(e){return super.delete(Bb(this,e))}}function Jd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Lb({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Bb({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Ob(t){return t!==null&&typeof t=="object"?t.valueOf():t}function mi(t){return t}function gi(t,...e){return Sc(t,mi,mi,e)}function Pb(t,...e){return Sc(t,Array.from,mi,e)}function Fb(t,e,...n){return Sc(t,mi,e,n)}function Sc(t,e,n,r){return function i(o,a){if(a>=r.length)return n(o);const s=new In,c=r[a++];let u=-1;for(const f of o){const l=c(f,++u,o),d=s.get(l);d?d.push(f):s.set(l,[f])}for(const[f,l]of s)s.set(f,i(l,a));return e(s)}(t,0)}function zb(t,e){return Array.from(e,n=>t[n])}function Rb(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n]=e;if(n&&n.length!==2||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const a of e){const s=Ec(a[i],a[o]);if(s)return s}})):(n=t.map(n),r.sort((i,o)=>Ec(n[i],n[o]))),zb(t,r)}return t.sort(jb(n))}function jb(t=Mn){if(t===Mn)return Ec;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||r===0?r:(t(n,n)===0)-(t(e,e)===0)}}function Ec(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var Ub=Array.prototype,Hb=Ub.slice;function la(t){return()=>t}var Dc=Math.sqrt(50),Mc=Math.sqrt(10),Tc=Math.sqrt(2);function yi(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=e<t)&&(o=t,t=e,e=o),(s=vi(t,e,n))===0||!isFinite(s))return[];if(s>0){let c=Math.round(t/s),u=Math.round(e/s);for(c*s<t&&++c,u*s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)*s}else{s=-s;let c=Math.round(t*s),u=Math.round(e*s);for(c/s<t&&++c,u/s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)/s}return r&&a.reverse(),a}function vi(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Dc?10:o>=Mc?5:o>=Tc?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Dc?10:o>=Mc?5:o>=Tc?2:1)}function kn(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>=Dc?i*=10:o>=Mc?i*=5:o>=Tc&&(i*=2),e<t?-i:i}function Gb(t,e,n){let r;for(;;){const i=vi(t,e,n);if(i===r||i===0||!isFinite(i))return[t,e];i>0?(t=Math.floor(t/i)*i,e=Math.ceil(e/i)*i):i<0&&(t=Math.ceil(t*i)/i,e=Math.floor(e*i)/i),r=i}}function Qb(t){return Math.ceil(Math.log(Nb(t))/Math.LN2)+1}function Vb(){var t=mi,e=ua,n=Qb;function r(i){Array.isArray(i)||(i=Array.from(i));var o,a=i.length,s,c,u=new Array(a);for(o=0;o<a;++o)u[o]=t(i[o],o,i);var f=e(u),l=f[0],d=f[1],h=n(u,l,d);if(!Array.isArray(h)){const y=d,A=+h;if(e===ua&&([l,d]=Gb(l,d,A)),h=yi(l,d,A),h[0]<=l&&(c=vi(l,d,A)),h[h.length-1]>=d)if(y>=d&&e===ua){const x=vi(l,d,A);isFinite(x)&&(x>0?d=(Math.floor(d/x)+1)*x:x<0&&(d=(Math.ceil(d*-x)+1)/-x))}else h.pop()}for(var p=h.length;h[0]<=l;)h.shift(),--p;for(;h[p-1]>d;)h.pop(),--p;var m=new Array(p+1),g;for(o=0;o<=p;++o)g=m[o]=[],g.x0=o>0?h[o-1]:l,g.x1=o<p?h[o]:d;if(isFinite(c)){if(c>0)for(o=0;o<a;++o)(s=u[o])!=null&&l<=s&&s<=d&&m[Math.min(p,Math.floor((s-l)/c))].push(i[o]);else if(c<0){for(o=0;o<a;++o)if((s=u[o])!=null&&l<=s&&s<=d){const y=Math.floor((l-s)*c);m[Math.min(p,y+(h[y]<=s))].push(i[o])}}}else for(o=0;o<a;++o)(s=u[o])!=null&&l<=s&&s<=d&&m[Tn(h,s,0,p)].push(i[o]);return m}return r.value=function(i){return arguments.length?(t=typeof i=="function"?i:la(i),r):t},r.domain=function(i){return arguments.length?(e=typeof i=="function"?i:la([i[0],i[1]]),r):e},r.thresholds=function(i){return arguments.length?(n=typeof i=="function"?i:Array.isArray(i)?la(Hb.call(i)):la(i),r):n},r}function Ic(t,e,n=qd){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(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 Xt(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<i;)o[r]=t+r*n;return o}function fa(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Yb(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function da(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 xr(t){return t=da(Math.abs(t)),t?t[1]:NaN}function _b(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),o.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function Wb(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Xb=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Zt(t){if(!(e=Xb.exec(t)))throw new Error("invalid format: "+t);var e;return new kc({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]})}Zt.prototype=kc.prototype;function kc(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+""}kc.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 Zb(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var $d;function qb(t,e){var n=da(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-($d=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")+da(t,Math.max(0,e+o-1))[0]}function eh(t,e){var n=da(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 th={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Yb,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)=>eh(t*100,e),r:eh,s:qb,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function nh(t){return t}var rh=Array.prototype.map,ih=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Kb(t){var e=t.grouping===void 0||t.thousands===void 0?nh:_b(rh.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?nh:Wb(rh.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Zt(l);var d=l.fill,h=l.align,p=l.sign,m=l.symbol,g=l.zero,y=l.width,A=l.comma,x=l.precision,w=l.trim,b=l.type;b==="n"?(A=!0,b="g"):th[b]||(x===void 0&&(x=12),w=!0,b="g"),(g||d==="0"&&h==="=")&&(g=!0,d="0",h="=");var v=m==="$"?n:m==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",C=m==="$"?r:/[%p]/.test(b)?a:"",S=th[b],I=/[defgprs%]/.test(b);x=x===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function N(T){var O=v,Q=C,U,we,Ie;if(b==="c")Q=S(T)+Q,T="";else{T=+T;var Cn=T<0||1/T<0;if(T=isNaN(T)?c:S(Math.abs(T),x),w&&(T=Zb(T)),Cn&&+T==0&&p!=="+"&&(Cn=!1),O=(Cn?p==="("?p:s:p==="-"||p==="("?"":p)+O,Q=(b==="s"?ih[8+$d/3]:"")+Q+(Cn&&p==="("?")":""),I){for(U=-1,we=T.length;++U<we;)if(Ie=T.charCodeAt(U),48>Ie||Ie>57){Q=(Ie===46?i+T.slice(U+1):T.slice(U))+Q,T=T.slice(0,U);break}}}A&&!g&&(T=e(T,1/0));var _=O.length+T.length+Q.length,Ve=_<y?new Array(y-_+1).join(d):"";switch(A&&g&&(T=e(Ve+T,Ve.length?y-Q.length:1/0),Ve=""),h){case"<":T=O+T+Q+Ve;break;case"=":T=O+Ve+T+Q;break;case"^":T=Ve.slice(0,_=Ve.length>>1)+O+T+Q+Ve.slice(_);break;default:T=Ve+O+T+Q;break}return o(T)}return N.toString=function(){return l+""},N}function f(l,d){var h=u((l=Zt(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(xr(d)/3)))*3,m=Math.pow(10,-p),g=ih[8+p/3];return function(y){return h(m*y)+g}}return{format:u,formatPrefix:f}}var ha,de,Nc;Jb({thousands:",",grouping:[3],currency:["$",""]});function Jb(t){return ha=Kb(t),de=ha.format,Nc=ha.formatPrefix,ha}function oh(t){return Math.max(0,-xr(Math.abs(t)))}function ah(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(xr(e)/3)))*3-xr(Math.abs(t)))}function sh(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,xr(e)-xr(t))+1}var Lc=new Date,Bc=new Date;function pe(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-a<s-o?a:s},i.offset=function(o,a){return e(o=new Date(+o),a==null?1:Math.floor(a)),o},i.range=function(o,a,s){var c=[],u;if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return c;do c.push(u=new Date(+o)),e(o,s),t(o);while(u<o&&o<a);return c},i.filter=function(o){return pe(function(a){if(a>=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 Lc.setTime(+o),Bc.setTime(+a),t(Lc),t(Bc),Math.floor(n(Lc,Bc))},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 pa=pe(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});pa.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?pe(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):pa};const Oc=pa;pa.range;const Mt=1e3,Xe=Mt*60,Tt=Xe*60,Nn=Tt*24,Pc=Nn*7,ch=Nn*30,Fc=Nn*365;var uh=pe(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getUTCSeconds()});const qt=uh;uh.range;var lh=pe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt)},function(t,e){t.setTime(+t+e*Xe)},function(t,e){return(e-t)/Xe},function(t){return t.getMinutes()});const zc=lh;lh.range;var fh=pe(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt-t.getMinutes()*Xe)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getHours()});const Rc=fh;fh.range;var dh=pe(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Xe)/Nn,t=>t.getDate()-1);const Ln=dh;dh.range;function Bn(t){return pe(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())*Xe)/Pc})}var bi=Bn(0),ma=Bn(1),$b=Bn(2),eA=Bn(3),wr=Bn(4),tA=Bn(5),nA=Bn(6);bi.range,ma.range,$b.range,eA.range,wr.range,tA.range,nA.range;var hh=pe(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 ga=hh;hh.range;var jc=pe(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()});jc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:pe(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 Kt=jc;jc.range;var ph=pe(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Xe)},function(t,e){return(e-t)/Xe},function(t){return t.getUTCMinutes()});const Uc=ph;ph.range;var mh=pe(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getUTCHours()});const Hc=mh;mh.range;var gh=pe(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Nn},function(t){return t.getUTCDate()-1});const On=gh;gh.range;function Pn(t){return pe(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)/Pc})}var Ai=Pn(0),ya=Pn(1),rA=Pn(2),iA=Pn(3),Cr=Pn(4),oA=Pn(5),aA=Pn(6);Ai.range,ya.range,rA.range,iA.range,Cr.range,oA.range,aA.range;var yh=pe(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 va=yh;yh.range;var Gc=pe(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()});Gc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:pe(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 Jt=Gc;Gc.range;function vh(t,e,n,r,i,o){const a=[[qt,1,Mt],[qt,5,5*Mt],[qt,15,15*Mt],[qt,30,30*Mt],[o,1,Xe],[o,5,5*Xe],[o,15,15*Xe],[o,30,30*Xe],[i,1,Tt],[i,3,3*Tt],[i,6,6*Tt],[i,12,12*Tt],[r,1,Nn],[r,2,2*Nn],[n,1,Pc],[e,1,ch],[e,3,3*ch],[t,1,Fc]];function s(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const h=l&&typeof l.range=="function"?l:c(u,f,l),p=h?h.range(u,+f+1):[];return d?p.reverse():p}function c(u,f,l){const d=Math.abs(f-u)/l,h=ca(([,,g])=>g).right(a,d);if(h===a.length)return t.every(kn(u/Fc,f/Fc,l));if(h===0)return Oc.every(Math.max(kn(u,f,l),1));const[p,m]=a[d/a[h-1][2]<a[h][2]/d?h-1:h];return p.every(m)}return[s,c]}const[sA,cA]=vh(Jt,va,Ai,On,Hc,Uc),[uA,lA]=vh(Kt,ga,bi,Ln,Rc,zc),xi="year",wi="quarter",Ci="month",Si="week",Ei="date",ba="day",Qc="dayofyear",Di="hours",Mi="minutes",Ti="seconds",Aa="milliseconds";[xi,wi,Ci,Si,Ei,ba,Qc,Di,Mi,Ti,Aa].reduce((t,e,n)=>(t[e]=1+n,t),{});const fA={[xi]:Kt,[wi]:ga.every(3),[Ci]:ga,[Si]:bi,[Ei]:Ln,[ba]:Ln,[Qc]:Ln,[Di]:Rc,[Mi]:zc,[Ti]:qt,[Aa]:Oc},dA={[xi]:Jt,[wi]:va.every(3),[Ci]:va,[Si]:Ai,[Ei]:On,[ba]:On,[Qc]:On,[Di]:Hc,[Mi]:Uc,[Ti]:qt,[Aa]:Oc};function hA(t){return fA[t]}function pA(t){return dA[t]}function Vc(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 Yc(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 Ii(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function bh(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,c=t.shortMonths,u=ki(i),f=Ni(i),l=ki(o),d=Ni(o),h=ki(a),p=Ni(a),m=ki(s),g=Ni(s),y=ki(c),A=Ni(c),x={a:Cn,A:_,b:Ve,B:Ko,c:null,d:Eh,e:Eh,f:zA,g:WA,G:ZA,H:OA,I:PA,j:FA,L:Dh,m:RA,M:jA,p:Jo,q:dc,Q:Lh,s:Bh,S:UA,u:HA,U:GA,V:QA,w:VA,W:YA,x:null,X:null,y:_A,Y:XA,Z:qA,"%":Nh},w={a:Nd,A:LN,b:BN,B:ON,c:null,d:Th,e:Th,f:ex,g:lx,G:dx,H:KA,I:JA,j:$A,L:Ih,m:tx,M:nx,p:PN,q:FN,Q:Lh,s:Bh,S:rx,u:ix,U:ox,V:ax,w:sx,W:cx,x:null,X:null,y:ux,Y:fx,Z:hx,"%":Nh},b={a:N,A:T,b:O,B:Q,c:U,d:Ch,e:Ch,f:kA,g:wh,G:xh,H:Sh,I:Sh,j:DA,L:IA,m:EA,M:MA,p:I,q:SA,Q:LA,s:BA,S:TA,u:bA,U:AA,V:xA,w:vA,W:wA,x:we,X:Ie,y:wh,Y:xh,Z:CA,"%":NA};x.x=v(n,x),x.X=v(r,x),x.c=v(e,x),w.x=v(n,w),w.X=v(r,w),w.c=v(e,w);function v(B,H){return function(W){var M=[],Fe=-1,J=0,Ye=B.length,_e,Ar,R2;for(W instanceof Date||(W=new Date(+W));++Fe<Ye;)B.charCodeAt(Fe)===37&&(M.push(B.slice(J,Fe)),(Ar=Ah[_e=B.charAt(++Fe)])!=null?_e=B.charAt(++Fe):Ar=_e==="e"?" ":"0",(R2=H[_e])&&(_e=R2(W,Ar)),M.push(_e),J=Fe+1);return M.push(B.slice(J,Fe)),M.join("")}}function C(B,H){return function(W){var M=Ii(1900,void 0,1),Fe=S(M,B,W+="",0),J,Ye;if(Fe!=W.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(H&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?(J=Yc(Ii(M.y,0,1)),Ye=J.getUTCDay(),J=Ye>4||Ye===0?ya.ceil(J):ya(J),J=On.offset(J,(M.V-1)*7),M.y=J.getUTCFullYear(),M.m=J.getUTCMonth(),M.d=J.getUTCDate()+(M.w+6)%7):(J=Vc(Ii(M.y,0,1)),Ye=J.getDay(),J=Ye>4||Ye===0?ma.ceil(J):ma(J),J=Ln.offset(J,(M.V-1)*7),M.y=J.getFullYear(),M.m=J.getMonth(),M.d=J.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),Ye="Z"in M?Yc(Ii(M.y,0,1)).getUTCDay():Vc(Ii(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(Ye+5)%7:M.w+M.U*7-(Ye+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Yc(M)):Vc(M)}}function S(B,H,W,M){for(var Fe=0,J=H.length,Ye=W.length,_e,Ar;Fe<J;){if(M>=Ye)return-1;if(_e=H.charCodeAt(Fe++),_e===37){if(_e=H.charAt(Fe++),Ar=b[_e in Ah?H.charAt(Fe++):_e],!Ar||(M=Ar(B,W,M))<0)return-1}else if(_e!=W.charCodeAt(M++))return-1}return M}function I(B,H,W){var M=u.exec(H.slice(W));return M?(B.p=f.get(M[0].toLowerCase()),W+M[0].length):-1}function N(B,H,W){var M=h.exec(H.slice(W));return M?(B.w=p.get(M[0].toLowerCase()),W+M[0].length):-1}function T(B,H,W){var M=l.exec(H.slice(W));return M?(B.w=d.get(M[0].toLowerCase()),W+M[0].length):-1}function O(B,H,W){var M=y.exec(H.slice(W));return M?(B.m=A.get(M[0].toLowerCase()),W+M[0].length):-1}function Q(B,H,W){var M=m.exec(H.slice(W));return M?(B.m=g.get(M[0].toLowerCase()),W+M[0].length):-1}function U(B,H,W){return S(B,e,H,W)}function we(B,H,W){return S(B,n,H,W)}function Ie(B,H,W){return S(B,r,H,W)}function Cn(B){return a[B.getDay()]}function _(B){return o[B.getDay()]}function Ve(B){return c[B.getMonth()]}function Ko(B){return s[B.getMonth()]}function Jo(B){return i[+(B.getHours()>=12)]}function dc(B){return 1+~~(B.getMonth()/3)}function Nd(B){return a[B.getUTCDay()]}function LN(B){return o[B.getUTCDay()]}function BN(B){return c[B.getUTCMonth()]}function ON(B){return s[B.getUTCMonth()]}function PN(B){return i[+(B.getUTCHours()>=12)]}function FN(B){return 1+~~(B.getUTCMonth()/3)}return{format:function(B){var H=v(B+="",x);return H.toString=function(){return B},H},parse:function(B){var H=C(B+="",!1);return H.toString=function(){return B},H},utcFormat:function(B){var H=v(B+="",w);return H.toString=function(){return B},H},utcParse:function(B){var H=C(B+="",!0);return H.toString=function(){return B},H}}}var Ah={"-":"",_:" ",0:"0"},me=/^\s*\d+/,mA=/^%/,gA=/[\\^$*+?|[\]().{}]/g;function V(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function yA(t){return t.replace(gA,"\\$&")}function ki(t){return new RegExp("^(?:"+t.map(yA).join("|")+")","i")}function Ni(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function vA(t,e,n){var r=me.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function bA(t,e,n){var r=me.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function AA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function xA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function wA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function xh(t,e,n){var r=me.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function wh(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function CA(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 SA(t,e,n){var r=me.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function EA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ch(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function DA(t,e,n){var r=me.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Sh(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function MA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function TA(t,e,n){var r=me.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function IA(t,e,n){var r=me.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function kA(t,e,n){var r=me.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function NA(t,e,n){var r=mA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function LA(t,e,n){var r=me.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function BA(t,e,n){var r=me.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Eh(t,e){return V(t.getDate(),e,2)}function OA(t,e){return V(t.getHours(),e,2)}function PA(t,e){return V(t.getHours()%12||12,e,2)}function FA(t,e){return V(1+Ln.count(Kt(t),t),e,3)}function Dh(t,e){return V(t.getMilliseconds(),e,3)}function zA(t,e){return Dh(t,e)+"000"}function RA(t,e){return V(t.getMonth()+1,e,2)}function jA(t,e){return V(t.getMinutes(),e,2)}function UA(t,e){return V(t.getSeconds(),e,2)}function HA(t){var e=t.getDay();return e===0?7:e}function GA(t,e){return V(bi.count(Kt(t)-1,t),e,2)}function Mh(t){var e=t.getDay();return e>=4||e===0?wr(t):wr.ceil(t)}function QA(t,e){return t=Mh(t),V(wr.count(Kt(t),t)+(Kt(t).getDay()===4),e,2)}function VA(t){return t.getDay()}function YA(t,e){return V(ma.count(Kt(t)-1,t),e,2)}function _A(t,e){return V(t.getFullYear()%100,e,2)}function WA(t,e){return t=Mh(t),V(t.getFullYear()%100,e,2)}function XA(t,e){return V(t.getFullYear()%1e4,e,4)}function ZA(t,e){var n=t.getDay();return t=n>=4||n===0?wr(t):wr.ceil(t),V(t.getFullYear()%1e4,e,4)}function qA(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+V(e/60|0,"0",2)+V(e%60,"0",2)}function Th(t,e){return V(t.getUTCDate(),e,2)}function KA(t,e){return V(t.getUTCHours(),e,2)}function JA(t,e){return V(t.getUTCHours()%12||12,e,2)}function $A(t,e){return V(1+On.count(Jt(t),t),e,3)}function Ih(t,e){return V(t.getUTCMilliseconds(),e,3)}function ex(t,e){return Ih(t,e)+"000"}function tx(t,e){return V(t.getUTCMonth()+1,e,2)}function nx(t,e){return V(t.getUTCMinutes(),e,2)}function rx(t,e){return V(t.getUTCSeconds(),e,2)}function ix(t){var e=t.getUTCDay();return e===0?7:e}function ox(t,e){return V(Ai.count(Jt(t)-1,t),e,2)}function kh(t){var e=t.getUTCDay();return e>=4||e===0?Cr(t):Cr.ceil(t)}function ax(t,e){return t=kh(t),V(Cr.count(Jt(t),t)+(Jt(t).getUTCDay()===4),e,2)}function sx(t){return t.getUTCDay()}function cx(t,e){return V(ya.count(Jt(t)-1,t),e,2)}function ux(t,e){return V(t.getUTCFullYear()%100,e,2)}function lx(t,e){return t=kh(t),V(t.getUTCFullYear()%100,e,2)}function fx(t,e){return V(t.getUTCFullYear()%1e4,e,4)}function dx(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Cr(t):Cr.ceil(t),V(t.getUTCFullYear()%1e4,e,4)}function hx(){return"+0000"}function Nh(){return"%"}function Lh(t){return+t}function Bh(t){return Math.floor(+t/1e3)}var Sr,_c,Oh,Wc,Ph;px({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 px(t){return Sr=bh(t),_c=Sr.format,Oh=Sr.parse,Wc=Sr.utcFormat,Ph=Sr.utcParse,Sr}function Li(t){const e={};return n=>e[n]||(e[n]=t(n))}function mx(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=gx(r,i);const a=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function gx(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 yx(t){const e=Li(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Zt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return mx(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=Zt(a==null?",f":a);const s=kn(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(a.precision==null)switch(a.type){case"s":return isNaN(u=ah(s,c))||(a.precision=u),n(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=sh(s,c))||(a.precision=u-(a.type==="e"));break}case"f":case"%":{isNaN(u=oh(s))||(a.precision=u-(a.type==="%")*2);break}}return e(a)}}}vx();function vx(){return yx({format:de,formatPrefix:Nc})}function Fh(t,e,n){n=n||{},ze(n)||ae("Invalid time multi-format specifier: ".concat(n));const r=e(Ti),i=e(Mi),o=e(Di),a=e(Ei),s=e(Si),c=e(Ci),u=e(wi),f=e(xi),l=t(n[Aa]||".%L"),d=t(n[Ti]||":%S"),h=t(n[Mi]||"%I:%M"),p=t(n[Di]||"%I %p"),m=t(n[Ei]||n[ba]||"%a %d"),g=t(n[Si]||"%b %d"),y=t(n[Ci]||"%B"),A=t(n[wi]||"%B"),x=t(n[xi]||"%Y");return w=>(r(w)<w?l:i(w)<w?d:o(w)<w?h:a(w)<w?p:c(w)<w?s(w)<w?m:g:f(w)<w?u(w)<w?y:A:x)(w)}function zh(t){const e=Li(t.format),n=Li(t.utcFormat);return{timeFormat:r=>ne(r)?e(r):Fh(e,hA,r),utcFormat:r=>ne(r)?n(r):Fh(n,pA,r),timeParse:Li(t.parse),utcParse:Li(t.utcParse)}}let Xc;bx();function bx(){return Xc=zh({format:_c,parse:Oh,utcFormat:Wc,utcParse:Ph})}function Ax(t){return zh(bh(t))}function xx(t){return arguments.length?Xc=Ax(t):Xc}const wx=/^(data:|([A-Za-z]+:)?\/\/)/,Cx=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Sx=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Rh="file://";function Ex(t,e){return n=>({options:n||{},sanitize:Mx,load:Dx,fileAccess:!!e,file:Tx(e),http:kx(t)})}async function Dx(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Mx(t,e){e=bc({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=Cx.test(t.replace(Sx,""));(t==null||typeof t!="string"||!s)&&ae("Sanitize failure, invalid URI: "+aa(t));const c=wx.test(t);return(a=e.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(Rh))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Rh.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 Tx(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Ix}async function Ix(){ae("No file system access.")}function kx(t){return t?async function(e,n){const r=bc({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?ke(o[i])?o[i]():o.text():ae(o.status+""+o.statusText)}:Nx}async function Nx(){ae("No HTTP fetch method available.")}const Lx=t=>t!=null&&t===t,Bx=t=>t==="true"||t==="false"||t===!0||t===!1,Ox=t=>!Number.isNaN(Date.parse(t)),jh=t=>!Number.isNaN(+t)&&!(t instanceof Date),Px=t=>jh(t)&&Number.isInteger(+t),Uh={boolean:db,integer:hi,number:hi,date:pb,string:mb,unknown:ta},xa=[Bx,Px,jh,Ox],Fx=["boolean","integer","number","date"];function Hh(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=xa.length,i=xa.map((o,a)=>a+1);for(let o=0,a=0,s,c;o<n;++o)for(c=e?t[o][e]:t[o],s=0;s<r;++s)if(i[s]&&Lx(c)&&!xa[s](c)&&(i[s]=0,++a,a===xa.length))return"string";return Fx[i.reduce((o,a)=>o===0?a:o,0)-1]}function zx(t,e){return e.reduce((n,r)=>(n[r]=Hh(t,r),n),{})}function Gh(t){const e=function(n,r){const i={delimiter:t};return Zc(n,r?bc(r,i):i)};return e.responseType="text",e}function Zc(t,e){return e.header&&(t=e.header.map(aa).join(e.delimiter)+`
|
6
|
+
`+t),Wd(e.delimiter).parse(t+"")}Zc.responseType="text";function Rx(t){return typeof Buffer=="function"&&ke(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function qc(t,e){const n=e&&e.property?ea(e.property):ta;return ze(t)&&!Rx(t)?jx(n(t),e):n(JSON.parse(t))}qc.responseType="json";function jx(t,e){return!We(t)&&lb(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Ux={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function Qh(t,e){let n,r,i,o;return t=qc(t,e),e&&e.feature?(n=Sb,i=e.feature):e&&e.mesh?(n=Db,i=e.mesh,o=Ux[e.filter]):ae("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):ae("Invalid TopoJSON object: "+i),r&&r.features||[r]}Qh.responseType="json";const Kc={dsv:Zc,csv:Gh(","),tsv:Gh(" "),json:qc,topojson:Qh};function Vh(t,e){return arguments.length>1?(Kc[t]=e,this):Dn(Kc,t)?Kc[t]:null}function Yh(t,e,n,r){e=e||{};const i=Vh(e.type||"json");return i||ae("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Hx(t,e.parse,n,r),Dn(t,"columns")&&delete t.columns,t}function Hx(t,e,n,r){if(!t.length)return;const i=xx();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),a,s,c,u,f,l;e==="auto"&&(e=zx(t,o)),o=Object.keys(e);const d=o.map(h=>{const p=e[h];let m,g;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return m=p.split(/:(.+)?/,2),g=m[1],(g[0]==="'"&&g[g.length-1]==="'"||g[0]==='"'&&g[g.length-1]==='"')&&(g=g.slice(1,-1)),(m[0]==="utc"?r:n)(g);if(!Uh[p])throw Error("Illegal format pattern: "+h+":"+p);return Uh[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(a=t[c],u=0;u<l;++u)s=o[u],a[s]=d[u](a[s])}const Bi=Ex(typeof fetch<"u"&&fetch,null),_h=1;function Jc(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const u=f=>(f+a-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-a,u.domain=function(f){if(arguments.length){if(t=ua(f),n=t[1]-t[0],n<_h){n=_h;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(s=f,u):s},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u):a},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),d=u.numberingOffset();return yi(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(h=>h-s)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const h=kn(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?de(","):de(".3s");return p=>h(p+s)},u.copy=()=>Jc().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),u}function Gx(){const t=Jc().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(f=>e.toChromosome(f)),c=Math.max(1,kn(i[0],i[1],r)),u=[];for(let f=a.index;f<=s.index;f++){const l=e.chromosomes[f],d=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),h=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=d;p<=h;p+=c){const m=p-o;m>=i[0]&&m<i[1]&&u.push(m)}}return u},t.tickFormat=(r,i)=>{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(),u=kn(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?de(","):de(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+s)};const n=t.copy;return t.copy=()=>n().genome(e),t}function Qx(t){return t.type=="locus"}function ft(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function $t(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 $c=Symbol("implicit");function eu(){var t=new In,e=[],n=[],r=$c;function i(o){let a=t.get(o);if(a===void 0){if(r!==$c)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 In;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 eu(e,n).unknown(r)},ft.apply(i,arguments),i}function Er(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Oi(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function en(){}var Fn=.7,Dr=1/Fn,Mr="\\s*([+-]?\\d+)\\s*",Pi="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",dt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Vx=/^#([0-9a-f]{3,8})$/,Yx=new RegExp(`^rgb\\(${Mr},${Mr},${Mr}\\)$`),_x=new RegExp(`^rgb\\(${dt},${dt},${dt}\\)$`),Wx=new RegExp(`^rgba\\(${Mr},${Mr},${Mr},${Pi}\\)$`),Xx=new RegExp(`^rgba\\(${dt},${dt},${dt},${Pi}\\)$`),Zx=new RegExp(`^hsl\\(${Pi},${dt},${dt}\\)$`),qx=new RegExp(`^hsla\\(${Pi},${dt},${dt},${Pi}\\)$`),Wh={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};Er(en,zn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Xh,formatHex:Xh,formatHex8:Kx,formatHsl:Jx,formatRgb:Zh,toString:Zh});function Xh(){return this.rgb().formatHex()}function Kx(){return this.rgb().formatHex8()}function Jx(){return e0(this).formatHsl()}function Zh(){return this.rgb().formatRgb()}function zn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Vx.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?qh(e):n===3?new ge(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?wa(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?wa(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=Yx.exec(t))?new ge(e[1],e[2],e[3],1):(e=_x.exec(t))?new ge(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Wx.exec(t))?wa(e[1],e[2],e[3],e[4]):(e=Xx.exec(t))?wa(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Zx.exec(t))?$h(e[1],e[2]/100,e[3]/100,1):(e=qx.exec(t))?$h(e[1],e[2]/100,e[3]/100,e[4]):Wh.hasOwnProperty(t)?qh(Wh[t]):t==="transparent"?new ge(NaN,NaN,NaN,0):null}function qh(t){return new ge(t>>16&255,t>>8&255,t&255,1)}function wa(t,e,n,r){return r<=0&&(t=e=n=NaN),new ge(t,e,n,r)}function tu(t){return t instanceof en||(t=zn(t)),t?(t=t.rgb(),new ge(t.r,t.g,t.b,t.opacity)):new ge}function Ca(t,e,n,r){return arguments.length===1?tu(t):new ge(t,e,n,r==null?1:r)}function ge(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Er(ge,Ca,Oi(en,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new ge(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new ge(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ge(Rn(this.r),Rn(this.g),Rn(this.b),Sa(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:Kh,formatHex:Kh,formatHex8:$x,formatRgb:Jh,toString:Jh}));function Kh(){return`#${jn(this.r)}${jn(this.g)}${jn(this.b)}`}function $x(){return`#${jn(this.r)}${jn(this.g)}${jn(this.b)}${jn((isNaN(this.opacity)?1:this.opacity)*255)}`}function Jh(){const t=Sa(this.opacity);return`${t===1?"rgb(":"rgba("}${Rn(this.r)}, ${Rn(this.g)}, ${Rn(this.b)}${t===1?")":`, ${t})`}`}function Sa(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Rn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function jn(t){return t=Rn(t),(t<16?"0":"")+t.toString(16)}function $h(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new rt(t,e,n,r)}function e0(t){if(t instanceof rt)return new rt(t.h,t.s,t.l,t.opacity);if(t instanceof en||(t=zn(t)),!t)return new rt;if(t instanceof rt)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,c=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=c<.5?o+i:2-o-i,a*=60):s=c>0&&c<1?0:a,new rt(a,s,c,t.opacity)}function nu(t,e,n,r){return arguments.length===1?e0(t):new rt(t,e,n,r==null?1:r)}function rt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Er(rt,nu,Oi(en,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new rt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new rt(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 ge(ru(t>=240?t-240:t+120,i,r),ru(t,i,r),ru(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new rt(t0(this.h),Ea(this.s),Ea(this.l),Sa(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=Sa(this.opacity);return`${t===1?"hsl(":"hsla("}${t0(this.h)}, ${Ea(this.s)*100}%, ${Ea(this.l)*100}%${t===1?")":`, ${t})`}`}}));function t0(t){return t=(t||0)%360,t<0?t+360:t}function Ea(t){return Math.max(0,Math.min(1,t||0))}function ru(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 n0=Math.PI/180,r0=180/Math.PI,Da=18,i0=.96422,o0=1,a0=.82521,s0=4/29,Tr=6/29,c0=3*Tr*Tr,ew=Tr*Tr*Tr;function u0(t){if(t instanceof ht)return new ht(t.l,t.a,t.b,t.opacity);if(t instanceof It)return l0(t);t instanceof ge||(t=tu(t));var e=cu(t.r),n=cu(t.g),r=cu(t.b),i=ou((.2225045*e+.7168786*n+.0606169*r)/o0),o,a;return e===n&&n===r?o=a=i:(o=ou((.4360747*e+.3850649*n+.1430804*r)/i0),a=ou((.0139322*e+.0971045*n+.7141733*r)/a0)),new ht(116*i-16,500*(o-i),200*(i-a),t.opacity)}function iu(t,e,n,r){return arguments.length===1?u0(t):new ht(t,e,n,r==null?1:r)}function ht(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Er(ht,iu,Oi(en,{brighter(t){return new ht(this.l+Da*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new ht(this.l-Da*(t==null?1:t),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=i0*au(e),t=o0*au(t),n=a0*au(n),new ge(su(3.1338561*e-1.6168667*t-.4906146*n),su(-.9787684*e+1.9161415*t+.033454*n),su(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ou(t){return t>ew?Math.pow(t,1/3):t/c0+s0}function au(t){return t>Tr?t*t*t:c0*(t-s0)}function su(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function cu(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function tw(t){if(t instanceof It)return new It(t.h,t.c,t.l,t.opacity);if(t instanceof ht||(t=u0(t)),t.a===0&&t.b===0)return new It(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*r0;return new It(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function uu(t,e,n,r){return arguments.length===1?tw(t):new It(t,e,n,r==null?1:r)}function It(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function l0(t){if(isNaN(t.h))return new ht(t.l,0,0,t.opacity);var e=t.h*n0;return new ht(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Er(It,uu,Oi(en,{brighter(t){return new It(this.h,this.c,this.l+Da*(t==null?1:t),this.opacity)},darker(t){return new It(this.h,this.c,this.l-Da*(t==null?1:t),this.opacity)},rgb(){return l0(this).rgb()}}));var f0=-.14861,lu=1.78277,fu=-.29227,Ma=-.90649,Fi=1.97294,d0=Fi*Ma,h0=Fi*lu,p0=lu*fu-Ma*f0;function nw(t){if(t instanceof Un)return new Un(t.h,t.s,t.l,t.opacity);t instanceof ge||(t=tu(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(p0*r+d0*e-h0*n)/(p0+d0-h0),o=r-i,a=(Fi*(n-i)-fu*o)/Ma,s=Math.sqrt(a*a+o*o)/(Fi*i*(1-i)),c=s?Math.atan2(a,o)*r0-120:NaN;return new Un(c<0?c+360:c,s,i,t.opacity)}function du(t,e,n,r){return arguments.length===1?nw(t):new Un(t,e,n,r==null?1:r)}function Un(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Er(Un,du,Oi(en,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new Un(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new Un(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*n0,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ge(255*(e+n*(f0*r+lu*i)),255*(e+n*(fu*r+Ma*i)),255*(e+n*(Fi*r)),this.opacity)}}));function m0(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function g0(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=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<e-1?t[r+2]:2*o-i;return m0((n-r/e)*e,a,i,o,s)}}function y0(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],s=t[(r+2)%e];return m0((n-r/e)*e,i,o,a,s)}}const Ta=t=>()=>t;function v0(t,e){return function(n){return t+n*e}}function rw(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 Ia(t,e){var n=e-t;return n?v0(t,n>180||n<-180?n-360*Math.round(n/360):n):Ta(isNaN(t)?e:t)}function iw(t){return(t=+t)==1?ye:function(e,n){return n-e?rw(e,n,t):Ta(isNaN(e)?n:e)}}function ye(t,e){var n=e-t;return n?v0(t,n):Ta(isNaN(t)?e:t)}const hu=function t(e){var n=iw(e);function r(i,o){var a=n((i=Ca(i)).r,(o=Ca(o)).r),s=n(i.g,o.g),c=n(i.b,o.b),u=ye(i.opacity,o.opacity);return function(f){return i.r=a(f),i.g=s(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function b0(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;a<n;++a)s=Ca(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(c){return s.r=r(c),s.g=i(c),s.b=o(c),s+""}}}var ow=b0(g0),aw=b0(y0);function pu(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function A0(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function sw(t,e){return(A0(e)?pu:x0)(t,e)}function x0(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=tn(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}function w0(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function it(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function C0(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=tn(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var mu=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,gu=new RegExp(mu.source,"g");function cw(t){return function(){return t}}function uw(t){return function(e){return t(e)+""}}function S0(t,e){var n=mu.lastIndex=gu.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=mu.exec(t))&&(i=gu.exec(e));)(o=i.index)>n&&(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,c.push({i:a,x:it(r,i)})),n=gu.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?uw(c[0].x):cw(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)s[(l=c[f]).i]=l.x(u);return s.join("")})}function tn(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ta(e):(n==="number"?it:n==="string"?(r=zn(e))?(e=r,hu):S0:e instanceof zn?hu:e instanceof Date?w0:A0(e)?pu:Array.isArray(e)?x0:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?C0:it)(t,e)}function lw(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function fw(t,e){var n=Ia(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function zi(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var E0=180/Math.PI,yu={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function D0(t,e,n,r,i,o){var a,s,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*E0,skewX:Math.atan(c)*E0,scaleX:a,scaleY:s}}var ka;function dw(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?yu:D0(e.a,e.b,e.c,e.d,e.e,e.f)}function hw(t){return t==null||(ka||(ka=document.createElementNS("http://www.w3.org/2000/svg","g")),ka.setAttribute("transform",t),!(t=ka.transform.baseVal.consolidate()))?yu:(t=t.matrix,D0(t.a,t.b,t.c,t.d,t.e,t.f))}function M0(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push("translate(",null,e,null,n);p.push({i:m-4,x:it(u,l)},{i:m-2,x:it(f,d)})}else(l||d)&&h.push("translate("+l+e+d+n)}function a(u,f,l,d){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),d.push({i:l.push(i(l)+"rotate(",null,r)-2,x:it(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function s(u,f,l,d){u!==f?d.push({i:l.push(i(l)+"skewX(",null,r)-2,x:it(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:it(u,l)},{i:m-2,x:it(f,d)})}else(l!==1||d!==1)&&h.push(i(h)+"scale("+l+","+d+")")}return function(u,f){var l=[],d=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,d),a(u.rotate,f.rotate,l,d),s(u.skewX,f.skewX,l,d),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,d),u=f=null,function(h){for(var p=-1,m=d.length,g;++p<m;)l[(g=d[p]).i]=g.x(h);return l.join("")}}}var pw=M0(dw,"px, ","px)","deg)"),mw=M0(hw,", ",")",")"),gw=1e-12;function T0(t){return((t=Math.exp(t))+1/t)/2}function yw(t){return((t=Math.exp(t))-1/t)/2}function vw(t){return((t=Math.exp(2*t))-1)/(t+1)}const I0=function t(e,n,r){function i(o,a){var s=o[0],c=o[1],u=o[2],f=a[0],l=a[1],d=a[2],h=f-s,p=l-c,m=h*h+p*p,g,y;if(m<gw)y=Math.log(d/u)/e,g=function(C){return[s+C*h,c+C*p,u*Math.exp(e*C*y)]};else{var A=Math.sqrt(m),x=(d*d-u*u+r*m)/(2*u*n*A),w=(d*d-u*u-r*m)/(2*d*n*A),b=Math.log(Math.sqrt(x*x+1)-x),v=Math.log(Math.sqrt(w*w+1)-w);y=(v-b)/e,g=function(C){var S=C*y,I=T0(b),N=u/(n*A)*(I*vw(e*S+b)-yw(b));return[s+N*h,c+N*p,u*I/T0(e*S+b)]}}return g.duration=y*1e3*e/Math.SQRT2,g}return i.rho=function(o){var a=Math.max(.001,+o),s=a*a,c=s*s;return t(a,s,c)},i}(Math.SQRT2,2,4);function k0(t){return function(e,n){var r=t((e=nu(e)).h,(n=nu(n)).h),i=ye(e.s,n.s),o=ye(e.l,n.l),a=ye(e.opacity,n.opacity);return function(s){return e.h=r(s),e.s=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const bw=k0(Ia);var Aw=k0(ye);function xw(t,e){var n=ye((t=iu(t)).l,(e=iu(e)).l),r=ye(t.a,e.a),i=ye(t.b,e.b),o=ye(t.opacity,e.opacity);return function(a){return t.l=n(a),t.a=r(a),t.b=i(a),t.opacity=o(a),t+""}}function N0(t){return function(e,n){var r=t((e=uu(e)).h,(n=uu(n)).h),i=ye(e.c,n.c),o=ye(e.l,n.l),a=ye(e.opacity,n.opacity);return function(s){return e.h=r(s),e.c=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const ww=N0(Ia);var Cw=N0(ye);function L0(t){return function e(n){n=+n;function r(i,o){var a=t((i=du(i)).h,(o=du(o)).h),s=ye(i.s,o.s),c=ye(i.l,o.l),u=ye(i.opacity,o.opacity);return function(f){return i.h=a(f),i.s=s(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}const Sw=L0(Ia);var Ew=L0(ye);function vu(t,e){e===void 0&&(e=t,t=tn);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(a){var s=Math.max(0,Math.min(r-1,Math.floor(a*=r)));return o[s](a-s)}}function Dw(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Mw=Object.freeze(Object.defineProperty({__proto__:null,interpolate:tn,interpolateArray:sw,interpolateBasis:g0,interpolateBasisClosed:y0,interpolateDate:w0,interpolateDiscrete:lw,interpolateHue:fw,interpolateNumber:it,interpolateNumberArray:pu,interpolateObject:C0,interpolateRound:zi,interpolateString:S0,interpolateTransformCss:pw,interpolateTransformSvg:mw,interpolateZoom:I0,interpolateRgb:hu,interpolateRgbBasis:ow,interpolateRgbBasisClosed:aw,interpolateHsl:bw,interpolateHslLong:Aw,interpolateLab:xw,interpolateHcl:ww,interpolateHclLong:Cw,interpolateCubehelix:Sw,interpolateCubehelixLong:Ew,piecewise:vu,quantize:Dw},Symbol.toStringTag,{value:"Module"}));function Tw(t){return function(){return t}}function bu(t){return+t}var B0=[0,1];function Le(t){return t}function Au(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Tw(isNaN(e)?NaN:.5)}function Iw(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function kw(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=Au(i,r),o=n(a,o)):(r=Au(r,i),o=n(o,a)),function(s){return o(r(s))}}function Nw(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=Au(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var c=Tn(t,s,1,r)-1;return o[c](i[c](s))}}function Ri(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Na(){var t=B0,e=B0,n=tn,r,i,o,a=Le,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Le&&(a=Iw(t[0],t[d-1])),s=d>2?Nw:kw,c=u=null,l}function l(d){return d==null||isNaN(d=+d)?o:(c||(c=s(t.map(r),e,n)))(r(a(d)))}return l.invert=function(d){return a(i((u||(u=s(e,t.map(r),it)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,bu),f()):t.slice()},l.range=function(d){return arguments.length?(e=Array.from(d),f()):e.slice()},l.rangeRound=function(d){return e=Array.from(d),n=zi,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Le,f()):a!==Le},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,h){return r=d,i=h,f()}}function O0(){return Na()(Le,Le)}function P0(t,e,n,r){var i=kn(t,e,n),o;switch(r=Zt(r==null?",f":r),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=ah(i,a))&&(r.precision=o),Nc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=sh(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=oh(i))&&(r.precision=o-(r.type==="%")*2);break}}return de(r)}function Hn(t){var e=t.domain;return t.ticks=function(n){var r=e();return yi(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return P0(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,a=r[i],s=r[o],c,u,f=10;for(s<a&&(u=a,a=s,s=u,u=i,i=o,o=u);f-- >0;){if(u=vi(a,s,n),u===c)return r[i]=a,r[o]=s,e(r);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return t},t}function La(){var t=O0();return t.copy=function(){return Ri(t,La())},ft.apply(t,arguments),Hn(t)}function F0(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,bu),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return F0(t).unknown(e)},t=arguments.length?Array.from(t,bu):[0,1],Hn(n)}function z0(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}function R0(t){return Math.log(t)}function j0(t){return Math.exp(t)}function Lw(t){return-Math.log(-t)}function Bw(t){return-Math.exp(-t)}function Ow(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Pw(t){return t===10?Ow:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Fw(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 U0(t){return(e,n)=>-t(-e,n)}function xu(t){const e=t(R0,j0),n=e.domain;let r=10,i,o;function a(){return i=Fw(r),o=Pw(r),n()[0]<0?(i=U0(i),o=U0(o),t(Lw,Bw)):t(R0,j0),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 c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let d=i(u),h=i(f),p,m;const g=s==null?10:+s;let y=[];if(!(r%1)&&h-d<g){if(d=Math.floor(d),h=Math.ceil(h),u>0){for(;d<=h;++d)for(p=1;p<r;++p)if(m=d<0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;y.push(m)}}else for(;d<=h;++d)for(p=r-1;p>=1;--p)if(m=d>0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;y.push(m)}y.length*2<g&&(y=yi(u,f,g))}else y=yi(d,h,Math.min(h-d,g)).map(o);return l?y.reverse():y},e.tickFormat=(s,c)=>{if(s==null&&(s=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=Zt(c)).precision==null&&(c.trim=!0),c=de(c)),s===1/0)return c;const u=Math.max(1,r*s/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(z0(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function wu(){const t=xu(Na()).domain([1,10]);return t.copy=()=>Ri(t,wu()).base(t.base()),ft.apply(t,arguments),t}function H0(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function G0(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Cu(t){var e=1,n=t(H0(e),G0(e));return n.constant=function(r){return arguments.length?t(H0(e=+r),G0(e)):e},Hn(n)}function Q0(){var t=Cu(Na());return t.copy=function(){return Ri(t,Q0()).constant(t.constant())},ft.apply(t,arguments)}function V0(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function zw(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Rw(t){return t<0?-t*t:t*t}function Su(t){var e=t(Le,Le),n=1;function r(){return n===1?t(Le,Le):n===.5?t(zw,Rw):t(V0(n),V0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Hn(e)}function Eu(){var t=Su(Na());return t.copy=function(){return Ri(t,Eu()).exponent(t.exponent())},ft.apply(t,arguments),t}function jw(){return Eu.apply(null,arguments).exponent(.5)}function Y0(){var t=[],e=[],n=[],r;function i(){var a=0,s=Math.max(1,e.length);for(n=new Array(s-1);++a<s;)n[a-1]=Ic(t,a/s);return o}function o(a){return a==null||isNaN(a=+a)?r:e[Tn(n,a)]}return o.invertExtent=function(a){var s=e.indexOf(a);return s<0?[NaN,NaN]:[s>0?n[s-1]:t[0],s<n.length?n[s]:t[t.length-1]]},o.domain=function(a){if(!arguments.length)return t.slice();t=[];for(let s of a)s!=null&&!isNaN(s=+s)&&t.push(s);return t.sort(Mn),i()},o.range=function(a){return arguments.length?(e=Array.from(a),i()):e.slice()},o.unknown=function(a){return arguments.length?(r=a,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return Y0().domain(t).range(e).unknown(r)},ft.apply(o,arguments)}function _0(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function a(c){return c!=null&&c<=c?i[Tn(r,c,0,n)]:o}function s(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return a}return a.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,s()):[t,e]},a.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,s()):i.slice()},a.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},a.unknown=function(c){return arguments.length&&(o=c),a},a.thresholds=function(){return r.slice()},a.copy=function(){return _0().domain([t,e]).range(i).unknown(o)},ft.apply(Hn(a),arguments)}function W0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Tn(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 W0().domain(t).range(e).unknown(n)},ft.apply(i,arguments)}function Uw(t){return new Date(t)}function Hw(t){return t instanceof Date?+t:+new Date(+t)}function Du(t,e,n,r,i,o,a,s,c,u){var f=O0(),l=f.invert,d=f.domain,h=u(".%L"),p=u(":%S"),m=u("%I:%M"),g=u("%I %p"),y=u("%a %d"),A=u("%b %d"),x=u("%B"),w=u("%Y");function b(v){return(c(v)<v?h:s(v)<v?p:a(v)<v?m:o(v)<v?g:r(v)<v?i(v)<v?y:A:n(v)<v?x:w)(v)}return f.invert=function(v){return new Date(l(v))},f.domain=function(v){return arguments.length?d(Array.from(v,Hw)):d().map(Uw)},f.ticks=function(v){var C=d();return t(C[0],C[C.length-1],v==null?10:v)},f.tickFormat=function(v,C){return C==null?b:u(C)},f.nice=function(v){var C=d();return(!v||typeof v.range!="function")&&(v=e(C[0],C[C.length-1],v==null?10:v)),v?d(z0(C,v)):f},f.copy=function(){return Ri(f,Du(t,e,n,r,i,o,a,s,c,u))},f}function Gw(){return ft.apply(Du(uA,lA,Kt,ga,bi,Ln,Rc,zc,qt,_c).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Qw(){return ft.apply(Du(sA,cA,Jt,va,Ai,On,Hc,Uc,qt,Wc).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Ba(){var t=0,e=1,n,r,i,o,a=Le,s=!1,c;function u(l){return l==null||isNaN(l=+l)?c:a(i===0?.5:(l=(o(l)-n)*i,s?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(s=!!l,u):s},u.interpolator=function(l){return arguments.length?(a=l,u):a};function f(l){return function(d){var h,p;return arguments.length?([h,p]=d,a=l(h,p),u):[a(0),a(1)]}}return u.range=f(tn),u.rangeRound=f(zi),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function nn(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Mu(){var t=Hn(Ba()(Le));return t.copy=function(){return nn(t,Mu())},$t.apply(t,arguments)}function X0(){var t=xu(Ba()).domain([1,10]);return t.copy=function(){return nn(t,X0()).base(t.base())},$t.apply(t,arguments)}function Z0(){var t=Cu(Ba());return t.copy=function(){return nn(t,Z0()).constant(t.constant())},$t.apply(t,arguments)}function Tu(){var t=Su(Ba());return t.copy=function(){return nn(t,Tu()).exponent(t.exponent())},$t.apply(t,arguments)}function Vw(){return Tu.apply(null,arguments).exponent(.5)}function Oa(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Le,f,l=!1,d;function h(m){return isNaN(m=+m)?d:(m=.5+((m=+f(m))-o)*(r*m<r*o?s:c),u(l?Math.max(0,Math.min(1,m)):m))}h.domain=function(m){return arguments.length?([t,e,n]=m,i=f(t=+t),o=f(e=+e),a=f(n=+n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h):[t,e,n]},h.clamp=function(m){return arguments.length?(l=!!m,h):l},h.interpolator=function(m){return arguments.length?(u=m,h):u};function p(m){return function(g){var y,A,x;return arguments.length?([y,A,x]=g,u=vu(m,[y,A,x]),h):[u(0),u(.5),u(1)]}}return h.range=p(tn),h.rangeRound=p(zi),h.unknown=function(m){return arguments.length?(d=m,h):d},function(m){return f=m,i=m(t),o=m(e),a=m(n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,h}}function q0(){var t=Hn(Oa()(Le));return t.copy=function(){return nn(t,q0())},$t.apply(t,arguments)}function K0(){var t=xu(Oa()).domain([.1,1,10]);return t.copy=function(){return nn(t,K0()).base(t.base())},$t.apply(t,arguments)}function J0(){var t=Cu(Oa());return t.copy=function(){return nn(t,J0()).constant(t.constant())},$t.apply(t,arguments)}function Iu(){var t=Su(Oa());return t.copy=function(){return nn(t,Iu()).exponent(t.exponent())},$t.apply(t,arguments)}function Yw(){return Iu.apply(null,arguments).exponent(.5)}function ku(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const _w="identity",Ir="linear",rn="log",ji="pow",Ui="sqrt",Pa="symlog",$0="time",ep="utc",pt="sequential",kr="diverging",Nu="quantile",tp="quantize",np="threshold",Lu="ordinal",Bu="point",rp="band",Ou="bin-ordinal",he="continuous",Hi="discrete",Gi="discretizing",Ze="interpolating",ip="temporal";function Ww(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function Xw(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,a,s,c,u;for(i<r&&(s=r,r=i,i=s),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),a=c);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 Pu(){const t=eu().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,a=!1,s=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,d=r[1]<r[0],h=r[1-d],p=ku(l,s,c);let m=r[d-0];i=(h-m)/(p||1),a&&(i=Math.floor(i)),m+=(h-m-i*(l-s))*u,o=i*(1-s),a&&(m=Math.round(m),o=Math.round(o));const g=Xt(l).map(y=>m+i*y);return n(d?g.reverse():g)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(a=!!l,f()):a},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),s=c,f()):s},t.paddingInner=function(l){return arguments.length?(s=Math.max(0,Math.min(1,l)),f()):s},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const d=r[1]<r[0],h=d?n().reverse():n(),p=h.length-1;let m=+l[0],g=+l[1],y,A,x;if(!(m!==m||g!==g)&&(g<m&&(x=m,m=g,g=x),!(g<h[0]||m>r[1-d])))return y=Math.max(0,Cc(h,m)-1),A=m===g?y:Cc(h,g)-1,m-h[y]>o+1e-10&&++y,d&&(x=y,y=p-A,A=p-x),y>A?void 0:e().slice(y,A+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return Pu().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(c).align(u)},f()}function op(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return op(e())},t}function Zw(){return op(Pu().paddingInner(1))}var qw=Array.prototype.map;function Kw(t){return qw.call(t,hi)}const Jw=Array.prototype.slice;function ap(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Tn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Kw(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Jw.call(r),n):e.slice()},n.tickFormat=function(r,i){return P0(t[0],nt(t),r==null?10:r,i)},n.copy=function(){return ap().domain(n.domain()).range(n.range())},n}const Fa={};function $w(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Ww(o):o.invertExtent?Xw(o):void 0),o.type=t,o};return r.metadata=sa(vc(n)),r}function X(t,e,n){return arguments.length>1?(Fa[t]=$w(t,e,n),this):e4(t)?Fa[t]:void 0}X(_w,F0),X(Ir,La,he),X(rn,wu,[he,rn]),X(ji,Eu,he),X(Ui,jw,he),X(Pa,Q0,he),X($0,Gw,[he,ip]),X(ep,Qw,[he,ip]),X(pt,Mu,[he,Ze]),X("".concat(pt,"-").concat(Ir),Mu,[he,Ze]),X("".concat(pt,"-").concat(rn),X0,[he,Ze,rn]),X("".concat(pt,"-").concat(ji),Tu,[he,Ze]),X("".concat(pt,"-").concat(Ui),Vw,[he,Ze]),X("".concat(pt,"-").concat(Pa),Z0,[he,Ze]),X("".concat(kr,"-").concat(Ir),q0,[he,Ze]),X("".concat(kr,"-").concat(rn),K0,[he,Ze,rn]),X("".concat(kr,"-").concat(ji),Iu,[he,Ze]),X("".concat(kr,"-").concat(Ui),Yw,[he,Ze]),X("".concat(kr,"-").concat(Pa),J0,[he,Ze]),X(Nu,Y0,[Gi,Nu]),X(tp,_0,Gi),X(np,W0,Gi),X(Ou,ap,[Hi,Gi]),X(Lu,eu,Hi),X(rp,Pu,Hi),X(Bu,Zw,Hi);function e4(t){return Dn(Fa,t)}function Qi(t,e){const n=Fa[t];return n&&n.metadata[e]}function Re(t){return Qi(t,he)}function on(t){return Qi(t,Hi)}function Gn(t){return Qi(t,Gi)}function sp(t){return Qi(t,rn)}function za(t){return Qi(t,Ze)}function t4(t,e){const n=e[0],r=nt(e)-n;return function(i){return t(n+i*r)}}function Ra(t,e,n){return vu(cp(e||"rgb",n),t)}function n4(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function cp(t,e){const n=Mw[r4(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function r4(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const i4={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"},o4={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 up(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function lp(t,e){for(const n in t)Fu(n,e(t[n]))}const fp={};lp(o4,up),lp(i4,t=>Ra(up(t)));function Fu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(fp[t]=e,this):fp[t]}const UN="";function dp(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
|
7
7
|
* @license
|
8
8
|
* Copyright 2017 Google LLC
|
9
9
|
* SPDX-License-Identifier: BSD-3-Clause
|
10
|
-
*/var zu;const ja=window,Nr=ja.trustedTypes,hp=Nr?Nr.createPolicy("lit-html",{createHTML:t=>t}):void 0,kt=`lit$${(Math.random()+"").slice(9)}$`,Ru="?"+kt,
|
10
|
+
*/var zu;const ja=window,Nr=ja.trustedTypes,hp=Nr?Nr.createPolicy("lit-html",{createHTML:t=>t}):void 0,kt=`lit$${(Math.random()+"").slice(9)}$`,Ru="?"+kt,a4=`<${Ru}>`,Lr=document,Vi=(t="")=>Lr.createComment(t),Yi=t=>t===null||typeof t!="object"&&typeof t!="function",pp=Array.isArray,mp=t=>pp(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",_i=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,gp=/-->/g,yp=/>/g,Qn=RegExp(`>|[
|
11
11
|
\f\r](?:([^\\s"'>=/]+)([
|
12
12
|
\f\r]*=[
|
13
13
|
\f\r]*(?:[^
|
14
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),vp=/'/g,bp=/"/g,Ap=/^(?:script|style|textarea|title)$/i,a4=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=a4(1),Ae=Symbol.for("lit-noChange"),z=Symbol.for("lit-nothing"),xp=new WeakMap,Br=Lr.createTreeWalker(Lr,129,null,!1),wp=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=_i;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,h=0;for(;h<u.length&&(a.lastIndex=h,l=a.exec(u),l!==null);)h=a.lastIndex,a===_i?l[1]==="!--"?a=gp:l[1]!==void 0?a=yp:l[2]!==void 0?(Ap.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=Qn):l[3]!==void 0&&(a=Qn):a===Qn?l[0]===">"?(a=i!=null?i:_i,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?Qn:l[3]==='"'?bp:vp):a===bp||a===vp?a=Qn:a===gp||a===yp?a=_i:(a=Qn,i=void 0);const p=a===Qn&&t[c+1].startsWith("/>")?" ":"";o+=a===_i?u+o4:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+kt+p):u+kt+(d===-2?(r.push(void 0),c):p)}const s=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[hp!==void 0?hp.createHTML(s):s,r]};class Wi{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=e.length-1,c=this.parts,[u,f]=wp(e,n);if(this.el=Wi.createElement(u,r),Br.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Br.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const d of i.getAttributeNames())if(d.endsWith("$lit$")||d.startsWith(kt)){const h=f[a++];if(l.push(d),h!==void 0){const p=i.getAttribute(h.toLowerCase()+"$lit$").split(kt),m=/([.?@])?(.*)/.exec(h);c.push({type:1,index:o,name:m[2],strings:p,ctor:m[1]==="."?Sp:m[1]==="?"?Ep:m[1]==="@"?Dp:Xi})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(Ap.test(i.tagName)){const l=i.textContent.split(kt),d=l.length-1;if(d>0){i.textContent=Nr?Nr.emptyScript:"";for(let h=0;h<d;h++)i.append(l[h],Vi()),Br.nextNode(),c.push({type:2,index:++o});i.append(l[d],Vi())}}}else if(i.nodeType===8)if(i.data===Ru)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(kt,l+1))!==-1;)c.push({type:7,index:o}),l+=kt.length-1}o++}}static createElement(e,n){const r=Lr.createElement("template");return r.innerHTML=e,r}}function Vn(t,e,n=t,r){var i,o,a,s;if(e===Ae)return e;let c=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const u=Yi(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((a=(s=n)._$Co)!==null&&a!==void 0?a:s._$Co=[])[r]=c:n._$Cl=c),c!==void 0&&(e=Vn(t,c._$AS(t,e.values),c,r)),e}class Cp{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:Lr).importNode(r,!0);Br.currentNode=o;let a=Br.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new Or(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new Mp(a,this,e)),this.u.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Br.nextNode(),s++)}return o}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class Or{constructor(e,n,r,i){var o;this.type=2,this._$AH=z,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=Vn(this,e,n),Yi(e)?e===z||e==null||e===""?(this._$AH!==z&&this._$AR(),this._$AH=z):e!==this._$AH&&e!==Ae&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):mp(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==z&&Yi(this._$AH)?this._$AA.nextSibling.data=e:this.T(Lr.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=Wi.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.p(r);else{const a=new Cp(o,this),s=a.v(this.options);a.p(r),this.T(s),this._$AH=a}}_$AC(e){let n=xp.get(e.strings);return n===void 0&&xp.set(e.strings,n=new Wi(e)),n}k(e){pp(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new Or(this.O(Vi()),this.O(Vi()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Xi{constructor(e,n,r,i,o){this.type=1,this._$AH=z,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=z}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)e=Vn(this,e,n,0),a=!Yi(e)||e!==this._$AH&&e!==Ae,a&&(this._$AH=e);else{const s=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Vn(this,s[r+c],n,c),u===Ae&&(u=this._$AH[c]),a||(a=!Yi(u)||u!==this._$AH[c]),u===z?e=z:e!==z&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}a&&!i&&this.j(e)}j(e){e===z?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Sp extends Xi{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===z?void 0:e}}const s4=Nr?Nr.emptyScript:"";class Ep extends Xi{constructor(){super(...arguments),this.type=4}j(e){e&&e!==z?this.element.setAttribute(this.name,s4):this.element.removeAttribute(this.name)}}class Dp extends Xi{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Vn(this,e,n,0))!==null&&r!==void 0?r:z)===Ae)return;const i=this._$AH,o=e===z&&i!==z||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,a=e!==z&&(i===z||o);o&&this.element.removeEventListener(this.name,this,i),a&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class Mp{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){Vn(this,e)}}const c4={P:"$lit$",A:kt,M:Ru,C:1,L:wp,R:Cp,D:mp,V:Vn,I:Or,H:Xi,N:Ep,U:Dp,B:Sp,F:Mp},Tp=ja.litHtmlPolyfillSupport;Tp==null||Tp(Wi,Or),((zu=ja.litHtmlVersions)!==null&&zu!==void 0?zu:ja.litHtmlVersions=[]).push("2.4.0");const Be=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let a=o._$litPart$;if(a===void 0){const s=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=a=new Or(e.insertBefore(Vi(),s),s,void 0,n!=null?n:{})}return a._$AI(t),a};function Ip(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function u4(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function qe(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function je(t){return t[t.length-1]}const Yn="gs-suppress-tooltip";class l4{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(){var e;return(e=je(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=dp(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&f4(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&&(Be("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Be(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(D`${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 f4(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const d4="RawCode",h4="Literal",p4="Property",m4="Identifier",g4="ArrayExpression",y4="BinaryExpression",v4="CallExpression",b4="ConditionalExpression",A4="LogicalExpression",x4="MemberExpression",w4="ObjectExpression",C4="UnaryExpression";function ot(t){this.type=t}ot.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=S4(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function S4(t){switch(t.type){case g4:return t.elements;case y4:case A4:return[t.left,t.right];case v4:return[t.callee].concat(t.arguments);case b4:return[t.test,t.consequent,t.alternate];case x4:return[t.object,t.property];case w4:return t.properties;case p4:return[t.key,t.value];case C4:return[t.argument];case m4:case h4:case d4:default:return[]}}var mt,L,E,Ce,Z,Ua=1,Zi=2,_n=3,an=4,Ha=5,Wn=6,Oe=7,qi=8,E4=9;mt={},mt[Ua]="Boolean",mt[Zi]="<end>",mt[_n]="Identifier",mt[an]="Keyword",mt[Ha]="Null",mt[Wn]="Numeric",mt[Oe]="Punctuator",mt[qi]="String",mt[E4]="RegularExpression";var D4="ArrayExpression",M4="BinaryExpression",T4="CallExpression",I4="ConditionalExpression",kp="Identifier",k4="Literal",N4="LogicalExpression",L4="MemberExpression",B4="ObjectExpression",O4="Property",P4="UnaryExpression",ve="Unexpected token %0",F4="Unexpected number",z4="Unexpected string",R4="Unexpected identifier",j4="Unexpected reserved word",U4="Unexpected end of input",ju="Invalid regular expression",Uu="Invalid regular expression: missing /",Np="Octal literals are not allowed in strict mode.",H4="Duplicate data property in object literal not allowed in strict mode",xe="ILLEGAL",Ki="Disabled.",G4=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]"),Q4=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 Ga(t,e){if(!t)throw new Error("ASSERT: "+e)}function Nt(t){return t>=48&&t<=57}function Hu(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Ji(t){return"01234567".indexOf(t)>=0}function V4(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 $i(t){return t===10||t===13||t===8232||t===8233}function eo(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&G4.test(String.fromCharCode(t))}function Qa(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Q4.test(String.fromCharCode(t))}const Y4={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 Lp(){for(;E<Ce;){const t=L.charCodeAt(E);if(V4(t)||$i(t))++E;else break}}function Gu(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)E<Ce&&Hu(L[E])?(r=L[E++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):Y({},ve,xe);return String.fromCharCode(i)}function _4(){var t,e,n,r;for(t=L[E],e=0,t==="}"&&Y({},ve,xe);E<Ce&&(t=L[E++],!!Hu(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&Y({},ve,xe),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Bp(){var t,e;for(t=L.charCodeAt(E++),e=String.fromCharCode(t),t===92&&(L.charCodeAt(E)!==117&&Y({},ve,xe),++E,t=Gu("u"),(!t||t==="\\"||!eo(t.charCodeAt(0)))&&Y({},ve,xe),e=t);E<Ce&&(t=L.charCodeAt(E),!!Qa(t));)++E,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),L.charCodeAt(E)!==117&&Y({},ve,xe),++E,t=Gu("u"),(!t||t==="\\"||!Qa(t.charCodeAt(0)))&&Y({},ve,xe),e+=t);return e}function W4(){var t,e;for(t=E++;E<Ce;){if(e=L.charCodeAt(E),e===92)return E=t,Bp();if(Qa(e))++E;else break}return L.slice(t,E)}function X4(){var t,e,n;return t=E,e=L.charCodeAt(E)===92?Bp():W4(),e.length===1?n=_n:Y4.hasOwnProperty(e)?n=an:e==="null"?n=Ha:e==="true"||e==="false"?n=Ua:n=_n,{type:n,value:e,start:t,end:E}}function Qu(){var t=E,e=L.charCodeAt(E),n,r=L[E],i,o,a;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++E,{type:Oe,value:String.fromCharCode(e),start:t,end:E};default:if(n=L.charCodeAt(E+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return E+=2,{type:Oe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:E};case 33:case 61:return E+=2,L.charCodeAt(E)===61&&++E,{type:Oe,value:L.slice(t,E),start:t,end:E}}}if(a=L.substr(E,4),a===">>>=")return E+=4,{type:Oe,value:a,start:t,end:E};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return E+=3,{type:Oe,value:o,start:t,end:E};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return E+=2,{type:Oe,value:i,start:t,end:E};if(i==="//"&&Y({},ve,xe),"<>=!+-*%&|^/".indexOf(r)>=0)return++E,{type:Oe,value:r,start:t,end:E};Y({},ve,xe)}function Z4(t){let e="";for(;E<Ce&&Hu(L[E]);)e+=L[E++];return e.length===0&&Y({},ve,xe),eo(L.charCodeAt(E))&&Y({},ve,xe),{type:Wn,value:parseInt("0x"+e,16),start:t,end:E}}function q4(t){let e="0"+L[E++];for(;E<Ce&&Ji(L[E]);)e+=L[E++];return(eo(L.charCodeAt(E))||Nt(L.charCodeAt(E)))&&Y({},ve,xe),{type:Wn,value:parseInt(e,8),octal:!0,start:t,end:E}}function Op(){var t,e,n;if(n=L[E],Ga(Nt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=E,t="",n!=="."){if(t=L[E++],n=L[E],t==="0"){if(n==="x"||n==="X")return++E,Z4(e);if(Ji(n))return q4(e);n&&Nt(n.charCodeAt(0))&&Y({},ve,xe)}for(;Nt(L.charCodeAt(E));)t+=L[E++];n=L[E]}if(n==="."){for(t+=L[E++];Nt(L.charCodeAt(E));)t+=L[E++];n=L[E]}if(n==="e"||n==="E")if(t+=L[E++],n=L[E],(n==="+"||n==="-")&&(t+=L[E++]),Nt(L.charCodeAt(E)))for(;Nt(L.charCodeAt(E));)t+=L[E++];else Y({},ve,xe);return eo(L.charCodeAt(E))&&Y({},ve,xe),{type:Wn,value:parseFloat(t),start:e,end:E}}function K4(){var t="",e,n,r,i,o=!1;for(e=L[E],Ga(e==="'"||e==='"',"String literal must starts with a quote"),n=E,++E;E<Ce;)if(r=L[E++],r===e){e="";break}else if(r==="\\")if(r=L[E++],!r||!$i(r.charCodeAt(0)))switch(r){case"u":case"x":L[E]==="{"?(++E,t+=_4()):t+=Gu(r);break;case"n":t+=`
|
14
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),vp=/'/g,bp=/"/g,Ap=/^(?:script|style|textarea|title)$/i,s4=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=s4(1),Ae=Symbol.for("lit-noChange"),z=Symbol.for("lit-nothing"),xp=new WeakMap,Br=Lr.createTreeWalker(Lr,129,null,!1),wp=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=_i;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,h=0;for(;h<u.length&&(a.lastIndex=h,l=a.exec(u),l!==null);)h=a.lastIndex,a===_i?l[1]==="!--"?a=gp:l[1]!==void 0?a=yp:l[2]!==void 0?(Ap.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=Qn):l[3]!==void 0&&(a=Qn):a===Qn?l[0]===">"?(a=i!=null?i:_i,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?Qn:l[3]==='"'?bp:vp):a===bp||a===vp?a=Qn:a===gp||a===yp?a=_i:(a=Qn,i=void 0);const p=a===Qn&&t[c+1].startsWith("/>")?" ":"";o+=a===_i?u+a4:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+kt+p):u+kt+(d===-2?(r.push(void 0),c):p)}const s=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[hp!==void 0?hp.createHTML(s):s,r]};class Wi{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=e.length-1,c=this.parts,[u,f]=wp(e,n);if(this.el=Wi.createElement(u,r),Br.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Br.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const d of i.getAttributeNames())if(d.endsWith("$lit$")||d.startsWith(kt)){const h=f[a++];if(l.push(d),h!==void 0){const p=i.getAttribute(h.toLowerCase()+"$lit$").split(kt),m=/([.?@])?(.*)/.exec(h);c.push({type:1,index:o,name:m[2],strings:p,ctor:m[1]==="."?Sp:m[1]==="?"?Ep:m[1]==="@"?Dp:Xi})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(Ap.test(i.tagName)){const l=i.textContent.split(kt),d=l.length-1;if(d>0){i.textContent=Nr?Nr.emptyScript:"";for(let h=0;h<d;h++)i.append(l[h],Vi()),Br.nextNode(),c.push({type:2,index:++o});i.append(l[d],Vi())}}}else if(i.nodeType===8)if(i.data===Ru)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(kt,l+1))!==-1;)c.push({type:7,index:o}),l+=kt.length-1}o++}}static createElement(e,n){const r=Lr.createElement("template");return r.innerHTML=e,r}}function Vn(t,e,n=t,r){var i,o,a,s;if(e===Ae)return e;let c=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const u=Yi(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((a=(s=n)._$Co)!==null&&a!==void 0?a:s._$Co=[])[r]=c:n._$Cl=c),c!==void 0&&(e=Vn(t,c._$AS(t,e.values),c,r)),e}class Cp{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:Lr).importNode(r,!0);Br.currentNode=o;let a=Br.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new Or(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new Mp(a,this,e)),this.u.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Br.nextNode(),s++)}return o}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class Or{constructor(e,n,r,i){var o;this.type=2,this._$AH=z,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=Vn(this,e,n),Yi(e)?e===z||e==null||e===""?(this._$AH!==z&&this._$AR(),this._$AH=z):e!==this._$AH&&e!==Ae&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):mp(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==z&&Yi(this._$AH)?this._$AA.nextSibling.data=e:this.T(Lr.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=Wi.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.p(r);else{const a=new Cp(o,this),s=a.v(this.options);a.p(r),this.T(s),this._$AH=a}}_$AC(e){let n=xp.get(e.strings);return n===void 0&&xp.set(e.strings,n=new Wi(e)),n}k(e){pp(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new Or(this.O(Vi()),this.O(Vi()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Xi{constructor(e,n,r,i,o){this.type=1,this._$AH=z,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=z}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)e=Vn(this,e,n,0),a=!Yi(e)||e!==this._$AH&&e!==Ae,a&&(this._$AH=e);else{const s=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Vn(this,s[r+c],n,c),u===Ae&&(u=this._$AH[c]),a||(a=!Yi(u)||u!==this._$AH[c]),u===z?e=z:e!==z&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}a&&!i&&this.j(e)}j(e){e===z?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Sp extends Xi{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===z?void 0:e}}const c4=Nr?Nr.emptyScript:"";class Ep extends Xi{constructor(){super(...arguments),this.type=4}j(e){e&&e!==z?this.element.setAttribute(this.name,c4):this.element.removeAttribute(this.name)}}class Dp extends Xi{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Vn(this,e,n,0))!==null&&r!==void 0?r:z)===Ae)return;const i=this._$AH,o=e===z&&i!==z||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,a=e!==z&&(i===z||o);o&&this.element.removeEventListener(this.name,this,i),a&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class Mp{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){Vn(this,e)}}const u4={P:"$lit$",A:kt,M:Ru,C:1,L:wp,R:Cp,D:mp,V:Vn,I:Or,H:Xi,N:Ep,U:Dp,B:Sp,F:Mp},Tp=ja.litHtmlPolyfillSupport;Tp==null||Tp(Wi,Or),((zu=ja.litHtmlVersions)!==null&&zu!==void 0?zu:ja.litHtmlVersions=[]).push("2.4.0");const Be=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let a=o._$litPart$;if(a===void 0){const s=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=a=new Or(e.insertBefore(Vi(),s),s,void 0,n!=null?n:{})}return a._$AI(t),a};function Ip(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function l4(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function qe(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function je(t){return t[t.length-1]}const Yn="gs-suppress-tooltip";class f4{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(){var e;return(e=je(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=dp(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&d4(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&&(Be("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Be(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(D`${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 d4(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const h4="RawCode",p4="Literal",m4="Property",g4="Identifier",y4="ArrayExpression",v4="BinaryExpression",b4="CallExpression",A4="ConditionalExpression",x4="LogicalExpression",w4="MemberExpression",C4="ObjectExpression",S4="UnaryExpression";function ot(t){this.type=t}ot.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=E4(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function E4(t){switch(t.type){case y4:return t.elements;case v4:case x4:return[t.left,t.right];case b4:return[t.callee].concat(t.arguments);case A4:return[t.test,t.consequent,t.alternate];case w4:return[t.object,t.property];case C4:return t.properties;case m4:return[t.key,t.value];case S4:return[t.argument];case g4:case p4:case h4:default:return[]}}var mt,L,E,Ce,Z,Ua=1,Zi=2,_n=3,an=4,Ha=5,Wn=6,Oe=7,qi=8,D4=9;mt={},mt[Ua]="Boolean",mt[Zi]="<end>",mt[_n]="Identifier",mt[an]="Keyword",mt[Ha]="Null",mt[Wn]="Numeric",mt[Oe]="Punctuator",mt[qi]="String",mt[D4]="RegularExpression";var M4="ArrayExpression",T4="BinaryExpression",I4="CallExpression",k4="ConditionalExpression",kp="Identifier",N4="Literal",L4="LogicalExpression",B4="MemberExpression",O4="ObjectExpression",P4="Property",F4="UnaryExpression",ve="Unexpected token %0",z4="Unexpected number",R4="Unexpected string",j4="Unexpected identifier",U4="Unexpected reserved word",H4="Unexpected end of input",ju="Invalid regular expression",Uu="Invalid regular expression: missing /",Np="Octal literals are not allowed in strict mode.",G4="Duplicate data property in object literal not allowed in strict mode",xe="ILLEGAL",Ki="Disabled.",Q4=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]"),V4=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 Ga(t,e){if(!t)throw new Error("ASSERT: "+e)}function Nt(t){return t>=48&&t<=57}function Hu(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Ji(t){return"01234567".indexOf(t)>=0}function Y4(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 $i(t){return t===10||t===13||t===8232||t===8233}function eo(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Q4.test(String.fromCharCode(t))}function Qa(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&V4.test(String.fromCharCode(t))}const _4={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 Lp(){for(;E<Ce;){const t=L.charCodeAt(E);if(Y4(t)||$i(t))++E;else break}}function Gu(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)E<Ce&&Hu(L[E])?(r=L[E++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):Y({},ve,xe);return String.fromCharCode(i)}function W4(){var t,e,n,r;for(t=L[E],e=0,t==="}"&&Y({},ve,xe);E<Ce&&(t=L[E++],!!Hu(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&Y({},ve,xe),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Bp(){var t,e;for(t=L.charCodeAt(E++),e=String.fromCharCode(t),t===92&&(L.charCodeAt(E)!==117&&Y({},ve,xe),++E,t=Gu("u"),(!t||t==="\\"||!eo(t.charCodeAt(0)))&&Y({},ve,xe),e=t);E<Ce&&(t=L.charCodeAt(E),!!Qa(t));)++E,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),L.charCodeAt(E)!==117&&Y({},ve,xe),++E,t=Gu("u"),(!t||t==="\\"||!Qa(t.charCodeAt(0)))&&Y({},ve,xe),e+=t);return e}function X4(){var t,e;for(t=E++;E<Ce;){if(e=L.charCodeAt(E),e===92)return E=t,Bp();if(Qa(e))++E;else break}return L.slice(t,E)}function Z4(){var t,e,n;return t=E,e=L.charCodeAt(E)===92?Bp():X4(),e.length===1?n=_n:_4.hasOwnProperty(e)?n=an:e==="null"?n=Ha:e==="true"||e==="false"?n=Ua:n=_n,{type:n,value:e,start:t,end:E}}function Qu(){var t=E,e=L.charCodeAt(E),n,r=L[E],i,o,a;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++E,{type:Oe,value:String.fromCharCode(e),start:t,end:E};default:if(n=L.charCodeAt(E+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return E+=2,{type:Oe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:E};case 33:case 61:return E+=2,L.charCodeAt(E)===61&&++E,{type:Oe,value:L.slice(t,E),start:t,end:E}}}if(a=L.substr(E,4),a===">>>=")return E+=4,{type:Oe,value:a,start:t,end:E};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return E+=3,{type:Oe,value:o,start:t,end:E};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return E+=2,{type:Oe,value:i,start:t,end:E};if(i==="//"&&Y({},ve,xe),"<>=!+-*%&|^/".indexOf(r)>=0)return++E,{type:Oe,value:r,start:t,end:E};Y({},ve,xe)}function q4(t){let e="";for(;E<Ce&&Hu(L[E]);)e+=L[E++];return e.length===0&&Y({},ve,xe),eo(L.charCodeAt(E))&&Y({},ve,xe),{type:Wn,value:parseInt("0x"+e,16),start:t,end:E}}function K4(t){let e="0"+L[E++];for(;E<Ce&&Ji(L[E]);)e+=L[E++];return(eo(L.charCodeAt(E))||Nt(L.charCodeAt(E)))&&Y({},ve,xe),{type:Wn,value:parseInt(e,8),octal:!0,start:t,end:E}}function Op(){var t,e,n;if(n=L[E],Ga(Nt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=E,t="",n!=="."){if(t=L[E++],n=L[E],t==="0"){if(n==="x"||n==="X")return++E,q4(e);if(Ji(n))return K4(e);n&&Nt(n.charCodeAt(0))&&Y({},ve,xe)}for(;Nt(L.charCodeAt(E));)t+=L[E++];n=L[E]}if(n==="."){for(t+=L[E++];Nt(L.charCodeAt(E));)t+=L[E++];n=L[E]}if(n==="e"||n==="E")if(t+=L[E++],n=L[E],(n==="+"||n==="-")&&(t+=L[E++]),Nt(L.charCodeAt(E)))for(;Nt(L.charCodeAt(E));)t+=L[E++];else Y({},ve,xe);return eo(L.charCodeAt(E))&&Y({},ve,xe),{type:Wn,value:parseFloat(t),start:e,end:E}}function J4(){var t="",e,n,r,i,o=!1;for(e=L[E],Ga(e==="'"||e==='"',"String literal must starts with a quote"),n=E,++E;E<Ce;)if(r=L[E++],r===e){e="";break}else if(r==="\\")if(r=L[E++],!r||!$i(r.charCodeAt(0)))switch(r){case"u":case"x":L[E]==="{"?(++E,t+=W4()):t+=Gu(r);break;case"n":t+=`
|
15
15
|
`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:Ji(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),E<Ce&&Ji(L[E])&&(o=!0,i=i*8+"01234567".indexOf(L[E++]),"0123".indexOf(r)>=0&&E<Ce&&Ji(L[E])&&(i=i*8+"01234567".indexOf(L[E++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&L[E]===`
|
16
|
-
`&&++E;else{if($i(r.charCodeAt(0)))break;t+=r}return e!==""&&Y({},ve,xe),{type:qi,value:t,octal:o,start:n,end:E}}function J4(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";Y({},ju)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{Y({},ju)}try{return new RegExp(t,e)}catch{return null}}function $4(){var t,e,n,r,i;for(t=L[E],Ga(t==="/","Regular expression literal must start with a slash"),e=L[E++],n=!1,r=!1;E<Ce;)if(t=L[E++],e+=t,t==="\\")t=L[E++],$i(t.charCodeAt(0))&&Y({},Uu),e+=t;else if($i(t.charCodeAt(0)))Y({},Uu);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||Y({},Uu),i=e.substr(1,e.length-2),{value:i,literal:e}}function e3(){var t,e,n;for(e="",n="";E<Ce&&(t=L[E],!!Qa(t.charCodeAt(0)));)++E,t==="\\"&&E<Ce?Y({},ve,xe):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&Y({},ju,n),{value:n,literal:e}}function t3(){var t,e,n,r;return Z=null,Lp(),t=E,e=$4(),n=e3(),r=J4(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:E}}function n3(t){return t.type===_n||t.type===an||t.type===Ua||t.type===Ha}function Pp(){if(Lp(),E>=Ce)return{type:Zi,start:E,end:E};const t=L.charCodeAt(E);return eo(t)?X4():t===40||t===41||t===59?Qu():t===39||t===34?K4():t===46?Nt(L.charCodeAt(E+1))?Op():Qu():Nt(t)?Op():Qu()}function Pe(){const t=Z;return E=t.end,Z=Pp(),E=t.end,t}function Fp(){const t=E;Z=Pp(),E=t}function r3(t){const e=new ot(D4);return e.elements=t,e}function zp(t,e,n){const r=new ot(t==="||"||t==="&&"?N4:M4);return r.operator=t,r.left=e,r.right=n,r}function i3(t,e){const n=new ot(T4);return n.callee=t,n.arguments=e,n}function o3(t,e,n){const r=new ot(I4);return r.test=t,r.consequent=e,r.alternate=n,r}function Vu(t){const e=new ot(kp);return e.name=t,e}function to(t){const e=new ot(k4);return e.value=t.value,e.raw=L.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Rp(t,e,n){const r=new ot(L4);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function a3(t){const e=new ot(B4);return e.properties=t,e}function jp(t,e,n){const r=new ot(O4);return r.key=e,r.value=n,r.kind=t,r}function s3(t,e){const n=new ot(P4);return n.operator=t,n.argument=e,n.prefix=!0,n}function Y(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(Ga(a<r.length,"Message reference must be in range"),r[a]));throw n=new Error(i),n.index=E,n.description=i,n}function Va(t){t.type===Zi&&Y(t,U4),t.type===Wn&&Y(t,F4),t.type===qi&&Y(t,z4),t.type===_n&&Y(t,R4),t.type===an&&Y(t,j4),Y(t,ve,t.value)}function Se(t){const e=Pe();(e.type!==Oe||e.value!==t)&&Va(e)}function $(t){return Z.type===Oe&&Z.value===t}function Yu(t){return Z.type===an&&Z.value===t}function c3(){const t=[];for(E=Z.start,Se("[");!$("]");)$(",")?(Pe(),t.push(null)):(t.push(Xn()),$("]")||Se(","));return Pe(),r3(t)}function Up(){E=Z.start;const t=Pe();return t.type===qi||t.type===Wn?(t.octal&&Y(t,Np),to(t)):Vu(t.value)}function u3(){var t,e,n,r;if(E=Z.start,t=Z,t.type===_n)return n=Up(),Se(":"),r=Xn(),jp("init",n,r);if(t.type===Zi||t.type===Oe)Va(t);else return e=Up(),Se(":"),r=Xn(),jp("init",e,r)}function l3(){var t=[],e,n,r,i={},o=String;for(E=Z.start,Se("{");!$("}");)e=u3(),e.key.type===kp?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?Y({},H4):i[r]=!0,t.push(e),$("}")||Se(",");return Se("}"),a3(t)}function f3(){Se("(");const t=_u();return Se(")"),t}const d3={if:1};function h3(){var t,e,n;if($("("))return f3();if($("["))return c3();if($("{"))return l3();if(t=Z.type,E=Z.start,t===_n||d3[Z.value])n=Vu(Pe().value);else if(t===qi||t===Wn)Z.octal&&Y(Z,Np),n=to(Pe());else{if(t===an)throw new Error(Ki);t===Ua?(e=Pe(),e.value=e.value==="true",n=to(e)):t===Ha?(e=Pe(),e.value=null,n=to(e)):$("/")||$("/=")?(n=to(t3()),Fp()):Va(Pe())}return n}function p3(){const t=[];if(Se("("),!$(")"))for(;E<Ce&&(t.push(Xn()),!$(")"));)Se(",");return Se(")"),t}function m3(){E=Z.start;const t=Pe();return n3(t)||Va(t),Vu(t.value)}function g3(){return Se("."),m3()}function y3(){Se("[");const t=_u();return Se("]"),t}function v3(){var t,e,n;for(t=h3();;)if($("."))n=g3(),t=Rp(".",t,n);else if($("("))e=p3(),t=i3(t,e);else if($("["))n=y3(),t=Rp("[",t,n);else break;return t}function Hp(){const t=v3();if(Z.type===Oe&&($("++")||$("--")))throw new Error(Ki);return t}function Ya(){var t,e;if(Z.type!==Oe&&Z.type!==an)e=Hp();else{if($("++")||$("--"))throw new Error(Ki);if($("+")||$("-")||$("~")||$("!"))t=Pe(),e=Ya(),e=s3(t.value,e);else{if(Yu("delete")||Yu("void")||Yu("typeof"))throw new Error(Ki);e=Hp()}}return e}function Gp(t){let e=0;if(t.type!==Oe&&t.type!==an)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":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 b3(){var t,e,n,r,i,o,a,s,c,u;if(t=Z,c=Ya(),r=Z,i=Gp(r),i===0)return c;for(r.prec=i,Pe(),e=[t,Z],a=Ya(),o=[c,r,a];(i=Gp(Z))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,c=o.pop(),e.pop(),n=zp(s,c,a),o.push(n);r=Pe(),r.prec=i,o.push(r),e.push(Z),n=Ya(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=zp(o[u-1].value,o[u-2],n),u-=2;return n}function Xn(){var t,e,n;return t=b3(),$("?")&&(Pe(),e=Xn(),Se(":"),n=Xn(),t=o3(t,e,n)),t}function _u(){const t=Xn();if($(","))throw new Error(Ki);return t}function A3(t){L=t,E=0,Ce=L.length,Z=null,Fp();const e=_u();if(Z.type!==Zi)throw new Error("Unexpect token after expression.");return e}var x3={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 w3(t){function e(a,s,c,u){let f=t(s[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+a+(u<0?"":u===0?"()":"("+s.slice(1).map(t).join(",")+")")}function n(a,s,c){return u=>e(a,u,s,c)}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&&ae("Missing arguments to clamp function."),a.length>3&&ae("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&&ae("Missing arguments to if function."),a.length>3&&ae("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function C3(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function S3(t){t=t||{};const e=t.allowed?sa(t.allowed):{},n=t.forbidden?sa(t.forbidden):{},r=t.constants||x3,i=(t.functions||w3)(l),o=t.globalvar,a=t.fieldvar,s=ke(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(ne(p))return p;const m=d[p.type];return m==null&&ae("Unsupported type: "+p.type),m(p)}const d={Literal:p=>p.raw,Identifier:p=>{const m=p.name;return f>0?m:Dn(n,m)?ae("Illegal identifier: "+m):Dn(r,m)?r[m]:Dn(e,m)?m:(c[m]=1,s(m))},MemberExpression:p=>{const m=!p.computed,g=l(p.object);m&&(f+=1);const y=l(p.property);return g===a&&(u[C3(y)]=1),m&&(f-=1),g+(m?"."+y:"["+y+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&ae("Illegal callee type: "+p.callee.type);const m=p.callee.name,g=p.arguments,y=Dn(i,m)&&i[m];return y||ae("Unrecognized function: "+m),ke(y)?y(g):y+"("+g.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{f+=1;const m=l(p.key);return f-=1,m+":"+l(p.value)}};function h(p){const m={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},m}return h.functions=i,h.constants=r,h}function Wu(t,e={}){const n=S3({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=A3(t),i=n(r),o=Function("datum","global",`"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 E3(){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 D3(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Ke(i)&&i.resolutionChannel||r);n[r]=M3(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function M3(t,e,n,r){let i;if(at(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)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),on(e.type)){const o=E3();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 at(t){return t&&"value"in t}function Zn(t){return t&&"field"in t}function no(t){return t&&"datum"in t}function Ke(t){return Zn(t)||no(t)||Zu(t)||Qp(t)}function Xu(t,e){const n=t.mark.encoding[e];if(Ke(n))return n;throw new Error("Not a channel def with scale!")}function Qp(t){return t&&"chrom"in t}function Zu(t){return t&&"expr"in t}const ro=["x","y"],T3=["x2","y2"],I3=[...ro,...T3];function Vp(t){return ro.includes(t)}function io(t){return I3.includes(t)}const qu={x:"x2",y:"y2"},Yp=Object.fromEntries(Object.entries(qu).map(t=>[t[1],t[0]]));function oo(t){return t in Yp}function k3(t){const e=qu[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Pr(t){var e;return(e=Yp[t])!=null?e:t}function qn(t){return["color","fill","stroke"].includes(Pr(t))}function _a(t){return["shape","squeeze"].includes(t)}function _p(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function Wp(t){if(!_a(t))throw new Error("Not a discrete channel: "+t);const e=new Map(_p(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 q(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return R(n,[t],e)}else return ea(t)}class N3{constructor(){this.accessorCreators=[],this.register(e=>{if(Zn(e))try{const n=q(e.field);return n.constant=!1,n.fields=En(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Zu(e)?L3(e.expr):void 0),this.register(e=>{if(no(e)){const r=ab(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 L3(t){const e=Wu(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
16
|
+
`&&++E;else{if($i(r.charCodeAt(0)))break;t+=r}return e!==""&&Y({},ve,xe),{type:qi,value:t,octal:o,start:n,end:E}}function $4(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";Y({},ju)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{Y({},ju)}try{return new RegExp(t,e)}catch{return null}}function e3(){var t,e,n,r,i;for(t=L[E],Ga(t==="/","Regular expression literal must start with a slash"),e=L[E++],n=!1,r=!1;E<Ce;)if(t=L[E++],e+=t,t==="\\")t=L[E++],$i(t.charCodeAt(0))&&Y({},Uu),e+=t;else if($i(t.charCodeAt(0)))Y({},Uu);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||Y({},Uu),i=e.substr(1,e.length-2),{value:i,literal:e}}function t3(){var t,e,n;for(e="",n="";E<Ce&&(t=L[E],!!Qa(t.charCodeAt(0)));)++E,t==="\\"&&E<Ce?Y({},ve,xe):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&Y({},ju,n),{value:n,literal:e}}function n3(){var t,e,n,r;return Z=null,Lp(),t=E,e=e3(),n=t3(),r=$4(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:E}}function r3(t){return t.type===_n||t.type===an||t.type===Ua||t.type===Ha}function Pp(){if(Lp(),E>=Ce)return{type:Zi,start:E,end:E};const t=L.charCodeAt(E);return eo(t)?Z4():t===40||t===41||t===59?Qu():t===39||t===34?J4():t===46?Nt(L.charCodeAt(E+1))?Op():Qu():Nt(t)?Op():Qu()}function Pe(){const t=Z;return E=t.end,Z=Pp(),E=t.end,t}function Fp(){const t=E;Z=Pp(),E=t}function i3(t){const e=new ot(M4);return e.elements=t,e}function zp(t,e,n){const r=new ot(t==="||"||t==="&&"?L4:T4);return r.operator=t,r.left=e,r.right=n,r}function o3(t,e){const n=new ot(I4);return n.callee=t,n.arguments=e,n}function a3(t,e,n){const r=new ot(k4);return r.test=t,r.consequent=e,r.alternate=n,r}function Vu(t){const e=new ot(kp);return e.name=t,e}function to(t){const e=new ot(N4);return e.value=t.value,e.raw=L.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Rp(t,e,n){const r=new ot(B4);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function s3(t){const e=new ot(O4);return e.properties=t,e}function jp(t,e,n){const r=new ot(P4);return r.key=e,r.value=n,r.kind=t,r}function c3(t,e){const n=new ot(F4);return n.operator=t,n.argument=e,n.prefix=!0,n}function Y(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(Ga(a<r.length,"Message reference must be in range"),r[a]));throw n=new Error(i),n.index=E,n.description=i,n}function Va(t){t.type===Zi&&Y(t,H4),t.type===Wn&&Y(t,z4),t.type===qi&&Y(t,R4),t.type===_n&&Y(t,j4),t.type===an&&Y(t,U4),Y(t,ve,t.value)}function Se(t){const e=Pe();(e.type!==Oe||e.value!==t)&&Va(e)}function $(t){return Z.type===Oe&&Z.value===t}function Yu(t){return Z.type===an&&Z.value===t}function u3(){const t=[];for(E=Z.start,Se("[");!$("]");)$(",")?(Pe(),t.push(null)):(t.push(Xn()),$("]")||Se(","));return Pe(),i3(t)}function Up(){E=Z.start;const t=Pe();return t.type===qi||t.type===Wn?(t.octal&&Y(t,Np),to(t)):Vu(t.value)}function l3(){var t,e,n,r;if(E=Z.start,t=Z,t.type===_n)return n=Up(),Se(":"),r=Xn(),jp("init",n,r);if(t.type===Zi||t.type===Oe)Va(t);else return e=Up(),Se(":"),r=Xn(),jp("init",e,r)}function f3(){var t=[],e,n,r,i={},o=String;for(E=Z.start,Se("{");!$("}");)e=l3(),e.key.type===kp?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?Y({},G4):i[r]=!0,t.push(e),$("}")||Se(",");return Se("}"),s3(t)}function d3(){Se("(");const t=_u();return Se(")"),t}const h3={if:1};function p3(){var t,e,n;if($("("))return d3();if($("["))return u3();if($("{"))return f3();if(t=Z.type,E=Z.start,t===_n||h3[Z.value])n=Vu(Pe().value);else if(t===qi||t===Wn)Z.octal&&Y(Z,Np),n=to(Pe());else{if(t===an)throw new Error(Ki);t===Ua?(e=Pe(),e.value=e.value==="true",n=to(e)):t===Ha?(e=Pe(),e.value=null,n=to(e)):$("/")||$("/=")?(n=to(n3()),Fp()):Va(Pe())}return n}function m3(){const t=[];if(Se("("),!$(")"))for(;E<Ce&&(t.push(Xn()),!$(")"));)Se(",");return Se(")"),t}function g3(){E=Z.start;const t=Pe();return r3(t)||Va(t),Vu(t.value)}function y3(){return Se("."),g3()}function v3(){Se("[");const t=_u();return Se("]"),t}function b3(){var t,e,n;for(t=p3();;)if($("."))n=y3(),t=Rp(".",t,n);else if($("("))e=m3(),t=o3(t,e);else if($("["))n=v3(),t=Rp("[",t,n);else break;return t}function Hp(){const t=b3();if(Z.type===Oe&&($("++")||$("--")))throw new Error(Ki);return t}function Ya(){var t,e;if(Z.type!==Oe&&Z.type!==an)e=Hp();else{if($("++")||$("--"))throw new Error(Ki);if($("+")||$("-")||$("~")||$("!"))t=Pe(),e=Ya(),e=c3(t.value,e);else{if(Yu("delete")||Yu("void")||Yu("typeof"))throw new Error(Ki);e=Hp()}}return e}function Gp(t){let e=0;if(t.type!==Oe&&t.type!==an)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":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 A3(){var t,e,n,r,i,o,a,s,c,u;if(t=Z,c=Ya(),r=Z,i=Gp(r),i===0)return c;for(r.prec=i,Pe(),e=[t,Z],a=Ya(),o=[c,r,a];(i=Gp(Z))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,c=o.pop(),e.pop(),n=zp(s,c,a),o.push(n);r=Pe(),r.prec=i,o.push(r),e.push(Z),n=Ya(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=zp(o[u-1].value,o[u-2],n),u-=2;return n}function Xn(){var t,e,n;return t=A3(),$("?")&&(Pe(),e=Xn(),Se(":"),n=Xn(),t=a3(t,e,n)),t}function _u(){const t=Xn();if($(","))throw new Error(Ki);return t}function x3(t){L=t,E=0,Ce=L.length,Z=null,Fp();const e=_u();if(Z.type!==Zi)throw new Error("Unexpect token after expression.");return e}var w3={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 C3(t){function e(a,s,c,u){let f=t(s[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+a+(u<0?"":u===0?"()":"("+s.slice(1).map(t).join(",")+")")}function n(a,s,c){return u=>e(a,u,s,c)}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&&ae("Missing arguments to clamp function."),a.length>3&&ae("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&&ae("Missing arguments to if function."),a.length>3&&ae("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function S3(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function E3(t){t=t||{};const e=t.allowed?sa(t.allowed):{},n=t.forbidden?sa(t.forbidden):{},r=t.constants||w3,i=(t.functions||C3)(l),o=t.globalvar,a=t.fieldvar,s=ke(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(ne(p))return p;const m=d[p.type];return m==null&&ae("Unsupported type: "+p.type),m(p)}const d={Literal:p=>p.raw,Identifier:p=>{const m=p.name;return f>0?m:Dn(n,m)?ae("Illegal identifier: "+m):Dn(r,m)?r[m]:Dn(e,m)?m:(c[m]=1,s(m))},MemberExpression:p=>{const m=!p.computed,g=l(p.object);m&&(f+=1);const y=l(p.property);return g===a&&(u[S3(y)]=1),m&&(f-=1),g+(m?"."+y:"["+y+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&ae("Illegal callee type: "+p.callee.type);const m=p.callee.name,g=p.arguments,y=Dn(i,m)&&i[m];return y||ae("Unrecognized function: "+m),ke(y)?y(g):y+"("+g.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{f+=1;const m=l(p.key);return f-=1,m+":"+l(p.value)}};function h(p){const m={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},m}return h.functions=i,h.constants=r,h}function Wu(t,e={}){const n=E3({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=x3(t),i=n(r),o=Function("datum","global",`"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 D3(){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 M3(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Ke(i)&&i.resolutionChannel||r);n[r]=T3(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function T3(t,e,n,r){let i;if(at(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)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),on(e.type)){const o=D3();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 at(t){return t&&"value"in t}function Zn(t){return t&&"field"in t}function no(t){return t&&"datum"in t}function Ke(t){return Zn(t)||no(t)||Zu(t)||Qp(t)}function Xu(t,e){const n=t.mark.encoding[e];if(Ke(n))return n;throw new Error("Not a channel def with scale!")}function Qp(t){return t&&"chrom"in t}function Zu(t){return t&&"expr"in t}const ro=["x","y"],I3=["x2","y2"],k3=[...ro,...I3];function Vp(t){return ro.includes(t)}function io(t){return k3.includes(t)}const qu={x:"x2",y:"y2"},Yp=Object.fromEntries(Object.entries(qu).map(t=>[t[1],t[0]]));function oo(t){return t in Yp}function N3(t){const e=qu[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Pr(t){var e;return(e=Yp[t])!=null?e:t}function qn(t){return["color","fill","stroke"].includes(Pr(t))}function _a(t){return["shape","squeeze"].includes(t)}function _p(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function Wp(t){if(!_a(t))throw new Error("Not a discrete channel: "+t);const e=new Map(_p(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 q(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return R(n,[t],e)}else return ea(t)}class L3{constructor(){this.accessorCreators=[],this.register(e=>{if(Zn(e))try{const n=q(e.field);return n.constant=!1,n.fields=En(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Zu(e)?B3(e.expr):void 0),this.register(e=>{if(no(e)){const r=sb(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 B3(t){const e=Wu(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
17
17
|
Available via the MIT license.
|
18
|
-
see: http://github.com/greggman/twgl.js for details */const Ku=5120,ao=5121,Ju=5122,$u=5123,el=5124,tl=5125,nl=5126,B3=32819,O3=32820,P3=33635,F3=5131,z3=33640,R3=35899,j3=35902,U3=36269,H3=34042,Xp={};{const t=Xp;t[Ku]=Int8Array,t[ao]=Uint8Array,t[Ju]=Int16Array,t[$u]=Uint16Array,t[el]=Int32Array,t[tl]=Uint32Array,t[nl]=Float32Array,t[B3]=Uint16Array,t[O3]=Uint16Array,t[P3]=Uint16Array,t[F3]=Uint16Array,t[z3]=Uint32Array,t[R3]=Uint32Array,t[j3]=Uint32Array,t[U3]=Uint32Array,t[H3]=Uint32Array}function rl(t){if(t instanceof Int8Array)return Ku;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return ao;if(t instanceof Int16Array)return Ju;if(t instanceof Uint16Array)return $u;if(t instanceof Int32Array)return el;if(t instanceof Uint32Array)return tl;if(t instanceof Float32Array)return nl;throw new Error("unsupported typed array type")}function G3(t){if(t===Int8Array)return Ku;if(t===Uint8Array||t===Uint8ClampedArray)return ao;if(t===Int16Array)return Ju;if(t===Uint16Array)return $u;if(t===Int32Array)return el;if(t===Uint32Array)return tl;if(t===Float32Array)return nl;throw new Error("unsupported typed array type")}function Q3(t){const e=Xp[t];if(!e)throw new Error("unknown gl type");return e}const Wa=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function V3(...t){console.error(...t)}function Zp(...t){console.warn(...t)}function Y3(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function qp(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function Xa(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function _3(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Kp=35044,gt=34962,W3=34963,X3=34660,Z3=5120,q3=5121,K3=5122,J3=5123,$3=5124,eC=5125,tC=5126,Jp={attribPrefix:""};function $p(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Kp)}function em(t,e,n,r){if(Y3(t,e))return e;n=n||gt;const i=t.createBuffer();return $p(t,n,i,e,r),i}function tm(t){return t==="indices"}function nC(t){return t instanceof Int8Array||t instanceof Uint8Array}function rC(t){return t===Int8Array||t===Uint8Array}function iC(t){return t.length?t:t.data}const oC=/coord|texture/i,aC=/color|colour/i;function nm(t,e){let n;if(oC.test(t)?n=2:aC.test(t)?n=4:n=3,e%n>0)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 sC(t,e){return t.numComponents||t.size||nm(e,iC(t).length)}function il(t,e){if(Wa(t))return t;if(Wa(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(tm(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function cC(t,e){const n={};return Object.keys(e).forEach(function(r){if(!tm(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Jp.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Wa(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,u=i.numComponents||i.size,s=i.type,c=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,d=f*l.BYTES_PER_ELEMENT;s=G3(l),c=i.normalize!==void 0?i.normalize:rC(l),u=i.numComponents||i.size||nm(r,f),a=t.createBuffer(),t.bindBuffer(gt,a),t.bufferData(gt,d,i.drawType||Kp)}else{const f=il(i,r);a=em(t,f,void 0,i.drawType),s=rl(f),c=i.normalize!==void 0?i.normalize:nC(f),u=sC(i,r)}n[o]={buffer:a,numComponents:u,type:s,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(gt,null),n}function uC(t,e,n,r){n=il(n),r!==void 0?(t.bindBuffer(gt,e.buffer),t.bufferSubData(gt,r,n)):$p(t,gt,e.buffer,n,e.drawType)}function lC(t,e){return e===Z3||e===q3?1:e===K3||e===J3?2:e===$3||e===eC||e===tC?4:0}const ol=["position","positions","a_position"];function fC(t,e){let n,r;for(r=0;r<ol.length&&(n=ol[r],!(n in e||(n=Jp.attribPrefix+n,n in e)));++r);r===ol.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(gt,i.buffer);const o=t.getBufferParameter(gt,X3);t.bindBuffer(gt,null);const a=lC(t,i.type),s=o/a,c=i.numComponents||i.size,u=s/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function dC(t,e,n){const r=cC(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const a=il(o,"indices");i.indices=em(t,a,W3),i.numElements=a.length,i.elementType=rl(a)}else i.numElements||(i.numElements=fC(t,i.attribs));return i}function Fr(t){return!!t.texStorage2D}const al=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const a=e[r[o]];e[r[o]]=a?`${a} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),sn={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},zr=Wa,rm=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),im=6406,yt=6407,re=6408,om=6409,am=6410,so=6402,sm=34041,Za=33071,hC=9728,pC=9729,Lt=3553,Bt=34067,cn=32879,un=35866,qa=34069,mC=34070,gC=34071,yC=34072,vC=34073,bC=34074,sl=10241,cl=10240,Ka=10242,Ja=10243,cm=32882,AC=33082,xC=33083,wC=33084,CC=33085,ul=3317,um=3314,lm=32878,fm=3316,dm=3315,hm=32877,SC=37443,EC=37441,DC=37440,MC=33321,TC=36756,IC=33325,kC=33326,NC=33330,LC=33329,BC=33338,OC=33337,PC=33340,FC=33339,zC=33323,RC=36757,jC=33327,UC=33328,HC=33336,GC=33335,QC=33332,VC=33331,YC=33334,_C=33333,WC=32849,XC=35905,ZC=36194,qC=36758,KC=35898,JC=35901,$C=34843,eS=34837,tS=36221,nS=36239,rS=36215,iS=36233,oS=36209,aS=36227,sS=32856,cS=35907,uS=36759,lS=32855,fS=32854,dS=32857,hS=34842,pS=34836,mS=36220,gS=36238,yS=36975,vS=36214,bS=36232,AS=36226,xS=36208,wS=33189,CS=33190,SS=36012,ES=36013,DS=35056,ln=5120,ie=5121,$a=5122,Rr=5123,es=5124,Kn=5125,Ee=5126,pm=32819,mm=32820,gm=33635,st=5131,co=36193,ll=33640,MS=35899,TS=35902,IS=36269,kS=34042,ts=33319,jr=33320,ns=6403,Ur=36244,Hr=36248,Jn=36249;let fl;function rs(t){if(!fl){const e={};e[im]={textureFormat:im,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ie,st,co,Ee]},e[om]={textureFormat:om,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ie,st,co,Ee]},e[am]={textureFormat:am,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[ie,st,co,Ee]},e[yt]={textureFormat:yt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[ie,st,co,Ee,gm]},e[re]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[ie,st,co,Ee,pm,mm]},e[so]={textureFormat:so,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Kn,Rr]},e[MC]={textureFormat:ns,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[ie]},e[TC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[ln]},e[IC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Ee,st]},e[kC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[NC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ie]},e[LC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ln]},e[QC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Rr]},e[VC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[$a]},e[YC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Kn]},e[_C]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[es]},e[zC]={textureFormat:ts,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[ie]},e[RC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[ln]},e[jC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Ee,st]},e[UC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Ee]},e[HC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ie]},e[GC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ln]},e[BC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Rr]},e[OC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$a]},e[PC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Kn]},e[FC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[es]},e[WC]={textureFormat:yt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[XC]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[ZC]={textureFormat:yt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[ie,gm]},e[qC]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ln]},e[KC]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,st,MS]},e[JC]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,st,TS]},e[$C]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Ee,st]},e[eS]={textureFormat:yt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Ee]},e[tS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ie]},e[nS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ln]},e[rS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Rr]},e[iS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[$a]},e[oS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Kn]},e[aS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[es]},e[sS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[cS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[uS]={textureFormat:re,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[ln]},e[lS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[ie,mm,ll]},e[fS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[ie,pm]},e[dS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ll]},e[hS]={textureFormat:re,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Ee,st]},e[pS]={textureFormat:re,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Ee]},e[mS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ie]},e[gS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ln]},e[yS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ll]},e[vS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Rr]},e[bS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[$a]},e[AS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[es]},e[xS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Kn]},e[wS]={textureFormat:so,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Rr,Kn]},e[CS]={textureFormat:so,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Kn]},e[SS]={textureFormat:so,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[DS]={textureFormat:sm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[kS]},e[ES]={textureFormat:sm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[IS]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const a=r.type[o];r.bytesPerElementMap[a]=i})}),fl=e}return fl[t]}function NS(t,e){const n=rs(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Gr(t){const e=rs(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function ym(t){return(t&t-1)===0}function LS(t,e,n,r){if(!Fr(t))return ym(e)&&ym(n);const i=rs(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function BS(t){const e=rs(t);if(!e)throw"unknown internal format";return e.textureFilterable}function vm(t,e,n){return zr(e)?rl(e):n||ie}function is(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Bt?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Qr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(SC,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(EC,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(DC,e.flipY)}function bm(t){t.pixelStorei(ul,4),Fr(t)&&(t.pixelStorei(um,0),t.pixelStorei(lm,0),t.pixelStorei(fm,0),t.pixelStorei(dm,0),t.pixelStorei(hm,0))}function OS(t,e,n,r){r.minMag&&(n.call(t,e,sl,r.minMag),n.call(t,e,cl,r.minMag)),r.min&&n.call(t,e,sl,r.min),r.mag&&n.call(t,e,cl,r.mag),r.wrap&&(n.call(t,e,Ka,r.wrap),n.call(t,e,Ja,r.wrap),(e===cn||_3(t,e))&&n.call(t,e,cm,r.wrap)),r.wrapR&&n.call(t,e,cm,r.wrapR),r.wrapS&&n.call(t,e,Ka,r.wrapS),r.wrapT&&n.call(t,e,Ja,r.wrapT),r.minLod&&n.call(t,e,AC,r.minLod),r.maxLod&&n.call(t,e,xC,r.maxLod),r.baseLevel&&n.call(t,e,wC,r.baseLevel),r.maxLevel&&n.call(t,e,CC,r.maxLevel)}function Am(t,e,n){const r=n.target||Lt;t.bindTexture(r,e),OS(t,r,t.texParameteri,n)}function PS(t){return t=t||sn.textureColor,zr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function dl(t,e,n,r,i,o){n=n||sn.textureOptions,o=o||re;const a=n.target||Lt;if(r=r||n.width,i=i||n.height,t.bindTexture(a,e),LS(t,r,i,o))t.generateMipmap(a);else{const s=BS(o)?pC:hC;t.texParameteri(a,sl,s),t.texParameteri(a,cl,s),t.texParameteri(a,Ka,Za),t.texParameteri(a,Ja,Za)}}function uo(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function hl(t,e){return e=e||{},e.cubeFaceOrder||[qa,mC,gC,yC,vC,bC]}function pl(t,e){const r=hl(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function xm(t,e,n,r){r=r||sn.textureOptions;const i=r.target||Lt,o=r.level||0;let a=n.width,s=n.height;const c=r.internalFormat||r.format||re,u=Gr(c),f=r.format||u.format,l=r.type||u.type;if(Qr(t,r),t.bindTexture(i,e),i===Bt){const d=n.width,h=n.height;let p,m;if(d/6===h)p=h,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(h/6===d)p=d,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===h/2)p=d/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===h/3)p=d/2,m=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const g=rm();g?(g.canvas.width=p,g.canvas.height=p,a=p,s=p,pl(t,r).forEach(function(y){const A=m[y.ndx*2+0]*p,x=m[y.ndx*2+1]*p;g.drawImage(n,A,x,p,p,0,0,p,p),t.texImage2D(y.face,o,c,f,l,g.canvas)}),g.canvas.width=1,g.canvas.height=1):typeof createImageBitmap<"u"&&(a=p,s=p,pl(t,r).forEach(function(y){const A=m[y.ndx*2+0]*p,x=m[y.ndx*2+1]*p;t.texImage2D(y.face,o,c,p,p,0,f,l,null),createImageBitmap(n,A,x,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(w){Qr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,w),uo(r)&&dl(t,e,r,a,s,c)})}))}else if(i===cn||i===un){const d=Math.min(n.width,n.height),h=Math.max(n.width,n.height),p=h/d;if(p%1!==0)throw"can not compute 3D dimensions of element";const m=n.width===h?1:0,g=n.height===h?1:0;t.pixelStorei(ul,1),t.pixelStorei(um,n.width),t.pixelStorei(lm,0),t.pixelStorei(hm,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let y=0;y<p;++y){const A=y*d*m,x=y*d*g;t.pixelStorei(fm,A),t.pixelStorei(dm,x),t.texSubImage3D(i,o,0,0,y,d,d,1,f,l,n)}bm(t)}else t.texImage2D(i,o,c,f,l,n);uo(r)&&dl(t,e,r,a,s,c),Am(t,e,r)}function lo(){}function FS(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function zS(t,e){return e===void 0&&!FS(t)?"anonymous":e}function RS(t,e,n){n=n||lo;let r;if(e=e!==void 0?e:sn.crossOrigin,e=zS(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const c="couldn't load image: "+t;V3(c),n(c,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const a=function(){n(i,o)},s={};e&&(s.mode="cors"),fetch(t,s).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(a)}).catch(function(c){i=c,setTimeout(a)}),r=null}return r}function wm(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function ml(t,e,n){return wm(t)?(setTimeout(function(){n(null,t)}),t):RS(t,e,n)}function gl(t,e,n){n=n||sn.textureOptions;const r=n.target||Lt;if(t.bindTexture(r,e),n.color===!1)return;const i=PS(n.color);if(r===Bt)for(let o=0;o<6;++o)t.texImage2D(qa+o,0,re,1,1,0,re,ie,i);else r===cn||r===un?t.texImage3D(r,0,re,1,1,1,0,re,ie,i):t.texImage2D(r,0,re,1,1,0,re,ie,i)}function jS(t,e,n,r){return r=r||lo,n=n||sn.textureOptions,gl(t,e,n),n=Object.assign({},n),ml(n.src,n.crossOrigin,function(o,a){o?r(o,e,a):(xm(t,e,a,n),r(null,e,a))})}function US(t,e,n,r){r=r||lo;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||re,s=Gr(a),c=n.format||s.format,u=n.type||ie,f=n.target||Lt;if(f!==Bt)throw"target must be TEXTURE_CUBE_MAP";gl(t,e,n),n=Object.assign({},n);let l=6;const d=[],h=hl(t,n);let p;function m(g){return function(y,A){--l,y?d.push(y):A.width!==A.height?d.push("cubemap face img is not a square: "+A.src):(Qr(t,n),t.bindTexture(f,e),l===5?hl().forEach(function(x){t.texImage2D(x,o,a,c,u,A)}):t.texImage2D(g,o,a,c,u,A),uo(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,p)}}p=i.map(function(g,y){return ml(g,n.crossOrigin,m(h[y]))})}function HS(t,e,n,r){r=r||lo;const i=n.src,o=n.internalFormat||n.format||re,a=Gr(o),s=n.format||a.format,c=n.type||ie,u=n.target||un;if(u!==cn&&u!==un)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";gl(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const h=n.level||0;let p=n.width,m=n.height;const g=i.length;let y=!0;function A(x){return function(w,b){if(--f,w)l.push(w);else{if(Qr(t,n),t.bindTexture(u,e),y){y=!1,p=n.width||b.width,m=n.height||b.height,t.texImage3D(u,h,o,p,m,g,0,s,c,null);for(let v=0;v<g;++v)t.texSubImage3D(u,h,0,0,v,p,m,1,s,c,b)}else{let v=b,C;(b.width!==p||b.height!==m)&&(C=rm(),v=C.canvas,C.canvas.width=p,C.canvas.height=m,C.drawImage(b,0,0,p,m)),t.texSubImage3D(u,h,0,0,x,p,m,1,s,c,v),C&&v===C.canvas&&(C.canvas.width=0,C.canvas.height=0)}uo(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(x,w){return ml(x,n.crossOrigin,A(w))})}function Cm(t,e,n,r){r=r||sn.textureOptions;const i=r.target||Lt;t.bindTexture(i,e);let o=r.width,a=r.height,s=r.depth;const c=r.level||0,u=r.internalFormat||r.format||re,f=Gr(u),l=r.format||f.format,d=r.type||vm(t,n,f.type);if(zr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const g=Q3(d);n=new g(n)}const h=NS(u,d),p=n.byteLength/h;if(p%1)throw"length wrong size for format: "+al(t,l);let m;if(i===cn||i===un)if(!o&&!a&&!s){const g=Math.cbrt(p);if(g%1!==0)throw"can't guess cube size of array of numElements: "+p;o=g,a=g,s=g}else o&&(!a||!s)?(m=is(t,i,a,s,p/o),a=m.width,s=m.height):a&&(!o||!s)?(m=is(t,i,o,s,p/a),o=m.width,s=m.height):(m=is(t,i,o,a,p/s),o=m.width,a=m.height);else m=is(t,i,o,a,p),o=m.width,a=m.height;if(bm(t),t.pixelStorei(ul,r.unpackAlignment||1),Qr(t,r),i===Bt){const g=h/n.BYTES_PER_ELEMENT,y=p/6*g;pl(t,r).forEach(A=>{const x=y*A.ndx,w=n.subarray(x,x+y);t.texImage2D(A.face,c,u,o,a,0,l,d,w)})}else i===cn||i===un?t.texImage3D(i,c,u,o,a,s,0,l,d,n):t.texImage2D(i,c,u,o,a,0,l,d,n);return{width:o,height:a,depth:s,type:d}}function GS(t,e,n){const r=n.target||Lt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||re,a=Gr(o),s=n.format||a.format,c=n.type||a.type;if(Qr(t,n),r===Bt)for(let u=0;u<6;++u)t.texImage2D(qa+u,i,o,n.width,n.height,0,s,c,null);else r===cn||r===un?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,c,null):t.texImage2D(r,i,o,n.width,n.height,0,s,c,null)}function fo(t,e,n){n=n||lo,e=e||sn.textureOptions;const r=t.createTexture(),i=e.target||Lt;let o=e.width||1,a=e.height||1;const s=e.internalFormat||re;t.bindTexture(i,r),i===Bt&&(t.texParameteri(i,Ka,Za),t.texParameteri(i,Ja,Za));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")jS(t,r,e,n);else if(zr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||zr(c[0]))){const u=Cm(t,r,c,e);o=u.width,a=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||wm(c[0]))?i===Bt?US(t,r,e,n):HS(t,r,e,n):(xm(t,r,c,e),o=c.width,a=c.height);else GS(t,r,e);return uo(e)&&dl(t,r,e,o,a,s),Am(t,r,e),r}function QS(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||Lt;t.bindTexture(a,e);const s=n.level||0,c=n.internalFormat||n.format||re,u=Gr(c),f=n.format||u.format;let l;const d=n.src;if(d&&(zr(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||vm(t,d,u.type):l=n.type||u.type,a===Bt)for(let h=0;h<6;++h)t.texImage2D(qa+h,s,c,r,i,0,f,l,null);else a===cn||a===un?t.texImage3D(a,s,c,r,i,o,0,f,l,null):t.texImage2D(a,s,c,r,i,0,f,l,null)}const VS=Zp,os=33984,YS=35048,as=34962,_S=34963,yl=35345,Sm=35718,WS=35721,XS=35971,ZS=35382,qS=35396,KS=35398,JS=35392,$S=35395,ss=5126,Em=35664,Dm=35665,Mm=35666,vl=5124,Tm=35667,Im=35668,km=35669,Nm=35670,Lm=35671,Bm=35672,Om=35673,Pm=35674,Fm=35675,zm=35676,eE=35678,tE=35680,nE=35679,rE=35682,iE=35685,oE=35686,aE=35687,sE=35688,cE=35689,uE=35690,lE=36289,fE=36292,dE=36293,bl=5125,Rm=36294,jm=36295,Um=36296,hE=36298,pE=36299,mE=36300,gE=36303,yE=36306,vE=36307,bE=36308,AE=36311,cs=3553,us=34067,Al=32879,ls=35866,F={};function Hm(t,e){return F[e].bindPoint}function xE(t,e){return function(n){t.uniform1f(e,n)}}function wE(t,e){return function(n){t.uniform1fv(e,n)}}function CE(t,e){return function(n){t.uniform2fv(e,n)}}function SE(t,e){return function(n){t.uniform3fv(e,n)}}function EE(t,e){return function(n){t.uniform4fv(e,n)}}function Gm(t,e){return function(n){t.uniform1i(e,n)}}function Qm(t,e){return function(n){t.uniform1iv(e,n)}}function Vm(t,e){return function(n){t.uniform2iv(e,n)}}function Ym(t,e){return function(n){t.uniform3iv(e,n)}}function _m(t,e){return function(n){t.uniform4iv(e,n)}}function DE(t,e){return function(n){t.uniform1ui(e,n)}}function ME(t,e){return function(n){t.uniform1uiv(e,n)}}function TE(t,e){return function(n){t.uniform2uiv(e,n)}}function IE(t,e){return function(n){t.uniform3uiv(e,n)}}function kE(t,e){return function(n){t.uniform4uiv(e,n)}}function NE(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function LE(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function BE(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function OE(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function PE(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function FE(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function zE(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function RE(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function jE(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Me(t,e,n,r){const i=Hm(t,e);return Fr(t)?function(o){let a,s;Xa(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(os+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(os+n),t.bindTexture(i,o)}}function Te(t,e,n,r,i){const o=Hm(t,e),a=new Int32Array(i);for(let s=0;s<i;++s)a[s]=n+s;return Fr(t)?function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(os+a[u]);let f,l;Xa(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(os+a[u]),t.bindTexture(o,c)})}}F[ss]={Type:Float32Array,size:4,setter:xE,arraySetter:wE},F[Em]={Type:Float32Array,size:8,setter:CE,cols:2},F[Dm]={Type:Float32Array,size:12,setter:SE,cols:3},F[Mm]={Type:Float32Array,size:16,setter:EE,cols:4},F[vl]={Type:Int32Array,size:4,setter:Gm,arraySetter:Qm},F[Tm]={Type:Int32Array,size:8,setter:Vm,cols:2},F[Im]={Type:Int32Array,size:12,setter:Ym,cols:3},F[km]={Type:Int32Array,size:16,setter:_m,cols:4},F[bl]={Type:Uint32Array,size:4,setter:DE,arraySetter:ME},F[Rm]={Type:Uint32Array,size:8,setter:TE,cols:2},F[jm]={Type:Uint32Array,size:12,setter:IE,cols:3},F[Um]={Type:Uint32Array,size:16,setter:kE,cols:4},F[Nm]={Type:Uint32Array,size:4,setter:Gm,arraySetter:Qm},F[Lm]={Type:Uint32Array,size:8,setter:Vm,cols:2},F[Bm]={Type:Uint32Array,size:12,setter:Ym,cols:3},F[Om]={Type:Uint32Array,size:16,setter:_m,cols:4},F[Pm]={Type:Float32Array,size:32,setter:NE,rows:2,cols:2},F[Fm]={Type:Float32Array,size:48,setter:LE,rows:3,cols:3},F[zm]={Type:Float32Array,size:64,setter:BE,rows:4,cols:4},F[iE]={Type:Float32Array,size:32,setter:OE,rows:2,cols:3},F[oE]={Type:Float32Array,size:32,setter:FE,rows:2,cols:4},F[aE]={Type:Float32Array,size:48,setter:PE,rows:3,cols:2},F[sE]={Type:Float32Array,size:48,setter:RE,rows:3,cols:4},F[cE]={Type:Float32Array,size:64,setter:zE,rows:4,cols:2},F[uE]={Type:Float32Array,size:64,setter:jE,rows:4,cols:3},F[eE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},F[tE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},F[nE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:Al},F[rE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},F[lE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},F[fE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},F[dE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},F[hE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},F[pE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:Al},F[mE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},F[gE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},F[yE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},F[vE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:Al},F[bE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},F[AE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls};function fs(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ss,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function fn(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||vl,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ds(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||bl,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function xl(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(as,o.buffer);const a=o.size||o.numComponents||r,s=a/i,c=o.type||ss,f=F[c].size*a,l=o.normalize||!1,d=o.offset||0,h=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,s,c,l,f,d+h*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const fe={};fe[ss]={size:4,setter:fs},fe[Em]={size:8,setter:fs},fe[Dm]={size:12,setter:fs},fe[Mm]={size:16,setter:fs},fe[vl]={size:4,setter:fn},fe[Tm]={size:8,setter:fn},fe[Im]={size:12,setter:fn},fe[km]={size:16,setter:fn},fe[bl]={size:4,setter:ds},fe[Rm]={size:8,setter:ds},fe[jm]={size:12,setter:ds},fe[Um]={size:16,setter:ds},fe[Nm]={size:4,setter:fn},fe[Lm]={size:8,setter:fn},fe[Bm]={size:12,setter:fn},fe[Om]={size:16,setter:fn},fe[Pm]={size:4,setter:xl,count:2},fe[Fm]={size:9,setter:xl,count:3},fe[zm]={size:16,setter:xl,count:4};function Wm(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const UE=/(\.|\[|]|\w+)/g,HE=t=>t>="0"&&t<="9";function Xm(t,e,n,r){const i=t.split(UE).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=HE(s[0]),u=c?parseInt(s):s;if(c&&(a+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],d=l==="[",h=n[u]||(d?[]:{});n[u]=h,n=h,r[a]=r[a]||function(p){return function(m){$m(p,m)}}(h),a+=l}}}function GE(t,e){let n=0;function r(s,c,u){const f=c.name.endsWith("[0]"),l=c.type,d=F[l];if(!d)throw new Error(`unknown type: 0x${l.toString(16)}`);let h;if(d.bindPoint){const p=n;n+=c.size,f?h=d.arraySetter(t,l,p,u,c.size):h=d.setter(t,l,p,u,c.size)}else d.arraySetter&&f?h=d.arraySetter(t,u):h=d.setter(t,u);return h.location=u,h}const i={},o={},a=t.getProgramParameter(e,Sm);for(let s=0;s<a;++s){const c=t.getActiveUniform(e,s);if(Wm(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,Xm(u,l,o,i)}}return i}function QE(t,e){const n={},r=t.getProgramParameter(e,XS);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function VE(t,e){const n=t.getProgramParameter(e,Sm),r=[],i=[];for(let s=0;s<n;++s){i.push(s),r.push({});const c=t.getActiveUniform(e,s);r[s].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(s){const c=s[0],u=s[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},a=t.getProgramParameter(e,ZS);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,qS),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,KS),size:t.getActiveUniformBlockParameter(e,s,JS),uniformIndices:t.getActiveUniformBlockParameter(e,s,$S)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const Zm=/\[\d+\]\.$/,YE=(t,e)=>((t+(e-1))/e|0)*e;function _E(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(a){let s=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[s++]=a[c++];s+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function WE(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return VS("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(a.size),c=t.createBuffer(),u=a.index;t.bindBuffer(yl,c),t.uniformBlockBinding(e,a.index,u);let f=r+".";Zm.test(f)&&(f=f.replace(Zm,"."));const l={},d={},h={};return a.uniformIndices.forEach(function(p){const m=o[p];let g=m.name;g.startsWith(f)&&(g=g.substr(f.length));const y=g.endsWith("[0]");y&&(g=g.substr(0,g.length-3));const A=F[m.type],x=A.Type,w=y?YE(A.size,16)*m.size:A.size*m.size,b=new x(s,m.offset,w/x.BYTES_PER_ELEMENT);l[g]=b;const v=_E(b,y,A.rows,A.cols);d[g]=v,Xm(g,v,h,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function qm(t,e,n){return WE(t,e.program,e.uniformBlockSpec,n)}function XE(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(yl,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Km(t,e,n){XE(t,e,n)&&t.bufferData(yl,n.array,YS)}function Jm(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function $m(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):$m(t[n],e[n])}}function Ue(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const a=o.length;for(let s=0;s<a;++s)Ue(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function ZE(t,e){const n={},r=t.getProgramParameter(e,WS);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(Wm(o))continue;const a=t.getAttribLocation(e,o.name),s=fe[o.type],c=s.setter(t,a,s);c.location=a,n[o.name]=c}return n}function qE(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Vr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(qE(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(_S,n.indices))}function KE(t,e){const n=GE(t,e),r=ZE(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Fr(t)&&(i.uniformBlockSpec=VE(t,e),i.transformFeedbackInfo=QE(t,e)),i}const JE=4,eg=5123;function ho(t,e,n,r,i,o){n=n===void 0?JE:n;const a=e.indices,s=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,s||a?o!==void 0?t.drawElementsInstanced(n,c,s===void 0?eg:e.elementType,i,o):t.drawElements(n,c,s===void 0?eg:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const $E=36160,$n=36161,eD=3553,tD=5121,nD=6402,rD=6408,iD=33190,oD=36012,aD=35056,sD=36013,cD=32854,uD=32855,lD=36194,tg=33189,ng=6401,rg=36168,wl=34041,fD=36064,hs=36096,ig=36128,Cl=33306,Sl=33071,El=9729,og=[{format:rD,type:tD,min:El,wrap:Sl},{format:wl}],ct={};ct[wl]=Cl,ct[ng]=ig,ct[rg]=ig,ct[nD]=hs,ct[tg]=hs,ct[iD]=hs,ct[oD]=hs,ct[aD]=Cl,ct[sD]=Cl;function dD(t,e){return ct[t]||ct[e]}const dn={};dn[cD]=!0,dn[uD]=!0,dn[lD]=!0,dn[wl]=!0,dn[tg]=!0,dn[ng]=!0,dn[rg]=!0;function hD(t){return dn[t]}function pD(t,e,n,r){const i=$E,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||og;let a=0;const s={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let d=c.attachmentPoint||dD(l,c.internalFormat);if(d||(d=fD+a++),!u)if(f!==void 0||hD(l))u=t.createRenderbuffer(),t.bindRenderbuffer($n,u),f>1?t.renderbufferStorageMultisample($n,f,l,n,r):t.renderbufferStorage($n,l,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||El,h.mag=h.mag||h.minMag||El,h.wrapS=h.wrapS||h.wrap||Sl,h.wrapT=h.wrapT||h.wrap||Sl),u=fo(t,h)}if(qp(t,u))t.framebufferRenderbuffer(i,d,$n,u);else if(Xa(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,d,u,c.level||0,c.layer):t.framebufferTexture2D(i,d,c.target||eD,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function mD(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||og,n.forEach(function(o,a){const s=e.attachments[a],c=o.format,u=o.samples;if(u!==void 0||qp(t,s))t.bindRenderbuffer($n,s),u>1?t.renderbufferStorageMultisample($n,u,c,r,i):t.renderbufferStorage($n,c,r,i);else if(Xa(t,s))QS(t,s,o,r,i);else throw new Error("unknown attachment type")})}function gD(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Vr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const yD=/^(.*?)_/;function vD(t,e){al(t,0);const n=t.getExtension(e);if(n){const r={},i=yD.exec(e)[1],o="_"+i;for(const a in n){const s=n[a],c=typeof s=="function",u=c?i:o;let f=a;a.endsWith(u)&&(f=a.substring(0,a.length-u.length)),t[f]!==void 0?!c&&t[f]!==s&&Zp(f,t[f],s,a):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(s):(t[f]=s,r[f]=s)}r.constructor={name:n.constructor.name},al(r,0)}return n}const ag=["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 sg(t){for(let e=0;e<ag.length;++e)vD(t,ag[e])}function bD(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){sg(r);break}return r}function AD(t,e){return bD(t,e)}const xD=`/**
|
18
|
+
see: http://github.com/greggman/twgl.js for details */const Ku=5120,ao=5121,Ju=5122,$u=5123,el=5124,tl=5125,nl=5126,O3=32819,P3=32820,F3=33635,z3=5131,R3=33640,j3=35899,U3=35902,H3=36269,G3=34042,Xp={};{const t=Xp;t[Ku]=Int8Array,t[ao]=Uint8Array,t[Ju]=Int16Array,t[$u]=Uint16Array,t[el]=Int32Array,t[tl]=Uint32Array,t[nl]=Float32Array,t[O3]=Uint16Array,t[P3]=Uint16Array,t[F3]=Uint16Array,t[z3]=Uint16Array,t[R3]=Uint32Array,t[j3]=Uint32Array,t[U3]=Uint32Array,t[H3]=Uint32Array,t[G3]=Uint32Array}function rl(t){if(t instanceof Int8Array)return Ku;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return ao;if(t instanceof Int16Array)return Ju;if(t instanceof Uint16Array)return $u;if(t instanceof Int32Array)return el;if(t instanceof Uint32Array)return tl;if(t instanceof Float32Array)return nl;throw new Error("unsupported typed array type")}function Q3(t){if(t===Int8Array)return Ku;if(t===Uint8Array||t===Uint8ClampedArray)return ao;if(t===Int16Array)return Ju;if(t===Uint16Array)return $u;if(t===Int32Array)return el;if(t===Uint32Array)return tl;if(t===Float32Array)return nl;throw new Error("unsupported typed array type")}function V3(t){const e=Xp[t];if(!e)throw new Error("unknown gl type");return e}const Wa=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function Y3(...t){console.error(...t)}function Zp(...t){console.warn(...t)}function _3(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function qp(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function Xa(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function W3(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Kp=35044,gt=34962,X3=34963,Z3=34660,q3=5120,K3=5121,J3=5122,$3=5123,eC=5124,tC=5125,nC=5126,Jp={attribPrefix:""};function $p(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Kp)}function em(t,e,n,r){if(_3(t,e))return e;n=n||gt;const i=t.createBuffer();return $p(t,n,i,e,r),i}function tm(t){return t==="indices"}function rC(t){return t instanceof Int8Array||t instanceof Uint8Array}function iC(t){return t===Int8Array||t===Uint8Array}function oC(t){return t.length?t:t.data}const aC=/coord|texture/i,sC=/color|colour/i;function nm(t,e){let n;if(aC.test(t)?n=2:sC.test(t)?n=4:n=3,e%n>0)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 cC(t,e){return t.numComponents||t.size||nm(e,oC(t).length)}function il(t,e){if(Wa(t))return t;if(Wa(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(tm(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function uC(t,e){const n={};return Object.keys(e).forEach(function(r){if(!tm(r)){const i=e[r],o=i.attrib||i.name||i.attribName||Jp.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Wa(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,u=i.numComponents||i.size,s=i.type,c=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,d=f*l.BYTES_PER_ELEMENT;s=Q3(l),c=i.normalize!==void 0?i.normalize:iC(l),u=i.numComponents||i.size||nm(r,f),a=t.createBuffer(),t.bindBuffer(gt,a),t.bufferData(gt,d,i.drawType||Kp)}else{const f=il(i,r);a=em(t,f,void 0,i.drawType),s=rl(f),c=i.normalize!==void 0?i.normalize:rC(f),u=cC(i,r)}n[o]={buffer:a,numComponents:u,type:s,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(gt,null),n}function lC(t,e,n,r){n=il(n),r!==void 0?(t.bindBuffer(gt,e.buffer),t.bufferSubData(gt,r,n)):$p(t,gt,e.buffer,n,e.drawType)}function fC(t,e){return e===q3||e===K3?1:e===J3||e===$3?2:e===eC||e===tC||e===nC?4:0}const ol=["position","positions","a_position"];function dC(t,e){let n,r;for(r=0;r<ol.length&&(n=ol[r],!(n in e||(n=Jp.attribPrefix+n,n in e)));++r);r===ol.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(gt,i.buffer);const o=t.getBufferParameter(gt,Z3);t.bindBuffer(gt,null);const a=fC(t,i.type),s=o/a,c=i.numComponents||i.size,u=s/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function hC(t,e,n){const r=uC(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const a=il(o,"indices");i.indices=em(t,a,X3),i.numElements=a.length,i.elementType=rl(a)}else i.numElements||(i.numElements=dC(t,i.attribs));return i}function Fr(t){return!!t.texStorage2D}const al=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const a=e[r[o]];e[r[o]]=a?`${a} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),sn={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},zr=Wa,rm=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),im=6406,yt=6407,re=6408,om=6409,am=6410,so=6402,sm=34041,Za=33071,pC=9728,mC=9729,Lt=3553,Bt=34067,cn=32879,un=35866,qa=34069,gC=34070,yC=34071,vC=34072,bC=34073,AC=34074,sl=10241,cl=10240,Ka=10242,Ja=10243,cm=32882,xC=33082,wC=33083,CC=33084,SC=33085,ul=3317,um=3314,lm=32878,fm=3316,dm=3315,hm=32877,EC=37443,DC=37441,MC=37440,TC=33321,IC=36756,kC=33325,NC=33326,LC=33330,BC=33329,OC=33338,PC=33337,FC=33340,zC=33339,RC=33323,jC=36757,UC=33327,HC=33328,GC=33336,QC=33335,VC=33332,YC=33331,_C=33334,WC=33333,XC=32849,ZC=35905,qC=36194,KC=36758,JC=35898,$C=35901,eS=34843,tS=34837,nS=36221,rS=36239,iS=36215,oS=36233,aS=36209,sS=36227,cS=32856,uS=35907,lS=36759,fS=32855,dS=32854,hS=32857,pS=34842,mS=34836,gS=36220,yS=36238,vS=36975,bS=36214,AS=36232,xS=36226,wS=36208,CS=33189,SS=33190,ES=36012,DS=36013,MS=35056,ln=5120,ie=5121,$a=5122,Rr=5123,es=5124,Kn=5125,Ee=5126,pm=32819,mm=32820,gm=33635,st=5131,co=36193,ll=33640,TS=35899,IS=35902,kS=36269,NS=34042,ts=33319,jr=33320,ns=6403,Ur=36244,Hr=36248,Jn=36249;let fl;function rs(t){if(!fl){const e={};e[im]={textureFormat:im,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ie,st,co,Ee]},e[om]={textureFormat:om,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ie,st,co,Ee]},e[am]={textureFormat:am,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[ie,st,co,Ee]},e[yt]={textureFormat:yt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[ie,st,co,Ee,gm]},e[re]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[ie,st,co,Ee,pm,mm]},e[so]={textureFormat:so,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Kn,Rr]},e[TC]={textureFormat:ns,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[ie]},e[IC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[ln]},e[kC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Ee,st]},e[NC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[LC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ie]},e[BC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ln]},e[VC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Rr]},e[YC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[$a]},e[_C]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Kn]},e[WC]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[es]},e[RC]={textureFormat:ts,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[ie]},e[jC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[ln]},e[UC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Ee,st]},e[HC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Ee]},e[GC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ie]},e[QC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ln]},e[OC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Rr]},e[PC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$a]},e[FC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Kn]},e[zC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[es]},e[XC]={textureFormat:yt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[ZC]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[qC]={textureFormat:yt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[ie,gm]},e[KC]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ln]},e[JC]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,st,TS]},e[$C]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,st,IS]},e[eS]={textureFormat:yt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Ee,st]},e[tS]={textureFormat:yt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Ee]},e[nS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ie]},e[rS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ln]},e[iS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Rr]},e[oS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[$a]},e[aS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Kn]},e[sS]={textureFormat:Hr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[es]},e[cS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[uS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[lS]={textureFormat:re,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[ln]},e[fS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[ie,mm,ll]},e[dS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[ie,pm]},e[hS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ll]},e[pS]={textureFormat:re,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Ee,st]},e[mS]={textureFormat:re,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Ee]},e[gS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ie]},e[yS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ln]},e[vS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ll]},e[bS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Rr]},e[AS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[$a]},e[xS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[es]},e[wS]={textureFormat:Jn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Kn]},e[CS]={textureFormat:so,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Rr,Kn]},e[SS]={textureFormat:so,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Kn]},e[ES]={textureFormat:so,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[MS]={textureFormat:sm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[NS]},e[DS]={textureFormat:sm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[kS]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const a=r.type[o];r.bytesPerElementMap[a]=i})}),fl=e}return fl[t]}function LS(t,e){const n=rs(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Gr(t){const e=rs(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function ym(t){return(t&t-1)===0}function BS(t,e,n,r){if(!Fr(t))return ym(e)&&ym(n);const i=rs(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function OS(t){const e=rs(t);if(!e)throw"unknown internal format";return e.textureFilterable}function vm(t,e,n){return zr(e)?rl(e):n||ie}function is(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Bt?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Qr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(EC,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(DC,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(MC,e.flipY)}function bm(t){t.pixelStorei(ul,4),Fr(t)&&(t.pixelStorei(um,0),t.pixelStorei(lm,0),t.pixelStorei(fm,0),t.pixelStorei(dm,0),t.pixelStorei(hm,0))}function PS(t,e,n,r){r.minMag&&(n.call(t,e,sl,r.minMag),n.call(t,e,cl,r.minMag)),r.min&&n.call(t,e,sl,r.min),r.mag&&n.call(t,e,cl,r.mag),r.wrap&&(n.call(t,e,Ka,r.wrap),n.call(t,e,Ja,r.wrap),(e===cn||W3(t,e))&&n.call(t,e,cm,r.wrap)),r.wrapR&&n.call(t,e,cm,r.wrapR),r.wrapS&&n.call(t,e,Ka,r.wrapS),r.wrapT&&n.call(t,e,Ja,r.wrapT),r.minLod&&n.call(t,e,xC,r.minLod),r.maxLod&&n.call(t,e,wC,r.maxLod),r.baseLevel&&n.call(t,e,CC,r.baseLevel),r.maxLevel&&n.call(t,e,SC,r.maxLevel)}function Am(t,e,n){const r=n.target||Lt;t.bindTexture(r,e),PS(t,r,t.texParameteri,n)}function FS(t){return t=t||sn.textureColor,zr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function dl(t,e,n,r,i,o){n=n||sn.textureOptions,o=o||re;const a=n.target||Lt;if(r=r||n.width,i=i||n.height,t.bindTexture(a,e),BS(t,r,i,o))t.generateMipmap(a);else{const s=OS(o)?mC:pC;t.texParameteri(a,sl,s),t.texParameteri(a,cl,s),t.texParameteri(a,Ka,Za),t.texParameteri(a,Ja,Za)}}function uo(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function hl(t,e){return e=e||{},e.cubeFaceOrder||[qa,gC,yC,vC,bC,AC]}function pl(t,e){const r=hl(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function xm(t,e,n,r){r=r||sn.textureOptions;const i=r.target||Lt,o=r.level||0;let a=n.width,s=n.height;const c=r.internalFormat||r.format||re,u=Gr(c),f=r.format||u.format,l=r.type||u.type;if(Qr(t,r),t.bindTexture(i,e),i===Bt){const d=n.width,h=n.height;let p,m;if(d/6===h)p=h,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(h/6===d)p=d,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===h/2)p=d/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===h/3)p=d/2,m=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const g=rm();g?(g.canvas.width=p,g.canvas.height=p,a=p,s=p,pl(t,r).forEach(function(y){const A=m[y.ndx*2+0]*p,x=m[y.ndx*2+1]*p;g.drawImage(n,A,x,p,p,0,0,p,p),t.texImage2D(y.face,o,c,f,l,g.canvas)}),g.canvas.width=1,g.canvas.height=1):typeof createImageBitmap<"u"&&(a=p,s=p,pl(t,r).forEach(function(y){const A=m[y.ndx*2+0]*p,x=m[y.ndx*2+1]*p;t.texImage2D(y.face,o,c,p,p,0,f,l,null),createImageBitmap(n,A,x,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(w){Qr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,w),uo(r)&&dl(t,e,r,a,s,c)})}))}else if(i===cn||i===un){const d=Math.min(n.width,n.height),h=Math.max(n.width,n.height),p=h/d;if(p%1!==0)throw"can not compute 3D dimensions of element";const m=n.width===h?1:0,g=n.height===h?1:0;t.pixelStorei(ul,1),t.pixelStorei(um,n.width),t.pixelStorei(lm,0),t.pixelStorei(hm,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let y=0;y<p;++y){const A=y*d*m,x=y*d*g;t.pixelStorei(fm,A),t.pixelStorei(dm,x),t.texSubImage3D(i,o,0,0,y,d,d,1,f,l,n)}bm(t)}else t.texImage2D(i,o,c,f,l,n);uo(r)&&dl(t,e,r,a,s,c),Am(t,e,r)}function lo(){}function zS(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function RS(t,e){return e===void 0&&!zS(t)?"anonymous":e}function jS(t,e,n){n=n||lo;let r;if(e=e!==void 0?e:sn.crossOrigin,e=RS(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const c="couldn't load image: "+t;Y3(c),n(c,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const a=function(){n(i,o)},s={};e&&(s.mode="cors"),fetch(t,s).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(a)}).catch(function(c){i=c,setTimeout(a)}),r=null}return r}function wm(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function ml(t,e,n){return wm(t)?(setTimeout(function(){n(null,t)}),t):jS(t,e,n)}function gl(t,e,n){n=n||sn.textureOptions;const r=n.target||Lt;if(t.bindTexture(r,e),n.color===!1)return;const i=FS(n.color);if(r===Bt)for(let o=0;o<6;++o)t.texImage2D(qa+o,0,re,1,1,0,re,ie,i);else r===cn||r===un?t.texImage3D(r,0,re,1,1,1,0,re,ie,i):t.texImage2D(r,0,re,1,1,0,re,ie,i)}function US(t,e,n,r){return r=r||lo,n=n||sn.textureOptions,gl(t,e,n),n=Object.assign({},n),ml(n.src,n.crossOrigin,function(o,a){o?r(o,e,a):(xm(t,e,a,n),r(null,e,a))})}function HS(t,e,n,r){r=r||lo;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||re,s=Gr(a),c=n.format||s.format,u=n.type||ie,f=n.target||Lt;if(f!==Bt)throw"target must be TEXTURE_CUBE_MAP";gl(t,e,n),n=Object.assign({},n);let l=6;const d=[],h=hl(t,n);let p;function m(g){return function(y,A){--l,y?d.push(y):A.width!==A.height?d.push("cubemap face img is not a square: "+A.src):(Qr(t,n),t.bindTexture(f,e),l===5?hl().forEach(function(x){t.texImage2D(x,o,a,c,u,A)}):t.texImage2D(g,o,a,c,u,A),uo(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,p)}}p=i.map(function(g,y){return ml(g,n.crossOrigin,m(h[y]))})}function GS(t,e,n,r){r=r||lo;const i=n.src,o=n.internalFormat||n.format||re,a=Gr(o),s=n.format||a.format,c=n.type||ie,u=n.target||un;if(u!==cn&&u!==un)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";gl(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const h=n.level||0;let p=n.width,m=n.height;const g=i.length;let y=!0;function A(x){return function(w,b){if(--f,w)l.push(w);else{if(Qr(t,n),t.bindTexture(u,e),y){y=!1,p=n.width||b.width,m=n.height||b.height,t.texImage3D(u,h,o,p,m,g,0,s,c,null);for(let v=0;v<g;++v)t.texSubImage3D(u,h,0,0,v,p,m,1,s,c,b)}else{let v=b,C;(b.width!==p||b.height!==m)&&(C=rm(),v=C.canvas,C.canvas.width=p,C.canvas.height=m,C.drawImage(b,0,0,p,m)),t.texSubImage3D(u,h,0,0,x,p,m,1,s,c,v),C&&v===C.canvas&&(C.canvas.width=0,C.canvas.height=0)}uo(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(x,w){return ml(x,n.crossOrigin,A(w))})}function Cm(t,e,n,r){r=r||sn.textureOptions;const i=r.target||Lt;t.bindTexture(i,e);let o=r.width,a=r.height,s=r.depth;const c=r.level||0,u=r.internalFormat||r.format||re,f=Gr(u),l=r.format||f.format,d=r.type||vm(t,n,f.type);if(zr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const g=V3(d);n=new g(n)}const h=LS(u,d),p=n.byteLength/h;if(p%1)throw"length wrong size for format: "+al(t,l);let m;if(i===cn||i===un)if(!o&&!a&&!s){const g=Math.cbrt(p);if(g%1!==0)throw"can't guess cube size of array of numElements: "+p;o=g,a=g,s=g}else o&&(!a||!s)?(m=is(t,i,a,s,p/o),a=m.width,s=m.height):a&&(!o||!s)?(m=is(t,i,o,s,p/a),o=m.width,s=m.height):(m=is(t,i,o,a,p/s),o=m.width,a=m.height);else m=is(t,i,o,a,p),o=m.width,a=m.height;if(bm(t),t.pixelStorei(ul,r.unpackAlignment||1),Qr(t,r),i===Bt){const g=h/n.BYTES_PER_ELEMENT,y=p/6*g;pl(t,r).forEach(A=>{const x=y*A.ndx,w=n.subarray(x,x+y);t.texImage2D(A.face,c,u,o,a,0,l,d,w)})}else i===cn||i===un?t.texImage3D(i,c,u,o,a,s,0,l,d,n):t.texImage2D(i,c,u,o,a,0,l,d,n);return{width:o,height:a,depth:s,type:d}}function QS(t,e,n){const r=n.target||Lt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||re,a=Gr(o),s=n.format||a.format,c=n.type||a.type;if(Qr(t,n),r===Bt)for(let u=0;u<6;++u)t.texImage2D(qa+u,i,o,n.width,n.height,0,s,c,null);else r===cn||r===un?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,c,null):t.texImage2D(r,i,o,n.width,n.height,0,s,c,null)}function fo(t,e,n){n=n||lo,e=e||sn.textureOptions;const r=t.createTexture(),i=e.target||Lt;let o=e.width||1,a=e.height||1;const s=e.internalFormat||re;t.bindTexture(i,r),i===Bt&&(t.texParameteri(i,Ka,Za),t.texParameteri(i,Ja,Za));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")US(t,r,e,n);else if(zr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||zr(c[0]))){const u=Cm(t,r,c,e);o=u.width,a=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||wm(c[0]))?i===Bt?HS(t,r,e,n):GS(t,r,e,n):(xm(t,r,c,e),o=c.width,a=c.height);else QS(t,r,e);return uo(e)&&dl(t,r,e,o,a,s),Am(t,r,e),r}function VS(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||Lt;t.bindTexture(a,e);const s=n.level||0,c=n.internalFormat||n.format||re,u=Gr(c),f=n.format||u.format;let l;const d=n.src;if(d&&(zr(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||vm(t,d,u.type):l=n.type||u.type,a===Bt)for(let h=0;h<6;++h)t.texImage2D(qa+h,s,c,r,i,0,f,l,null);else a===cn||a===un?t.texImage3D(a,s,c,r,i,o,0,f,l,null):t.texImage2D(a,s,c,r,i,0,f,l,null)}const YS=Zp,os=33984,_S=35048,as=34962,WS=34963,yl=35345,Sm=35718,XS=35721,ZS=35971,qS=35382,KS=35396,JS=35398,$S=35392,eE=35395,ss=5126,Em=35664,Dm=35665,Mm=35666,vl=5124,Tm=35667,Im=35668,km=35669,Nm=35670,Lm=35671,Bm=35672,Om=35673,Pm=35674,Fm=35675,zm=35676,tE=35678,nE=35680,rE=35679,iE=35682,oE=35685,aE=35686,sE=35687,cE=35688,uE=35689,lE=35690,fE=36289,dE=36292,hE=36293,bl=5125,Rm=36294,jm=36295,Um=36296,pE=36298,mE=36299,gE=36300,yE=36303,vE=36306,bE=36307,AE=36308,xE=36311,cs=3553,us=34067,Al=32879,ls=35866,F={};function Hm(t,e){return F[e].bindPoint}function wE(t,e){return function(n){t.uniform1f(e,n)}}function CE(t,e){return function(n){t.uniform1fv(e,n)}}function SE(t,e){return function(n){t.uniform2fv(e,n)}}function EE(t,e){return function(n){t.uniform3fv(e,n)}}function DE(t,e){return function(n){t.uniform4fv(e,n)}}function Gm(t,e){return function(n){t.uniform1i(e,n)}}function Qm(t,e){return function(n){t.uniform1iv(e,n)}}function Vm(t,e){return function(n){t.uniform2iv(e,n)}}function Ym(t,e){return function(n){t.uniform3iv(e,n)}}function _m(t,e){return function(n){t.uniform4iv(e,n)}}function ME(t,e){return function(n){t.uniform1ui(e,n)}}function TE(t,e){return function(n){t.uniform1uiv(e,n)}}function IE(t,e){return function(n){t.uniform2uiv(e,n)}}function kE(t,e){return function(n){t.uniform3uiv(e,n)}}function NE(t,e){return function(n){t.uniform4uiv(e,n)}}function LE(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function BE(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function OE(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function PE(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function FE(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function zE(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function RE(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function jE(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function UE(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Me(t,e,n,r){const i=Hm(t,e);return Fr(t)?function(o){let a,s;Xa(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(os+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(os+n),t.bindTexture(i,o)}}function Te(t,e,n,r,i){const o=Hm(t,e),a=new Int32Array(i);for(let s=0;s<i;++s)a[s]=n+s;return Fr(t)?function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(os+a[u]);let f,l;Xa(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(os+a[u]),t.bindTexture(o,c)})}}F[ss]={Type:Float32Array,size:4,setter:wE,arraySetter:CE},F[Em]={Type:Float32Array,size:8,setter:SE,cols:2},F[Dm]={Type:Float32Array,size:12,setter:EE,cols:3},F[Mm]={Type:Float32Array,size:16,setter:DE,cols:4},F[vl]={Type:Int32Array,size:4,setter:Gm,arraySetter:Qm},F[Tm]={Type:Int32Array,size:8,setter:Vm,cols:2},F[Im]={Type:Int32Array,size:12,setter:Ym,cols:3},F[km]={Type:Int32Array,size:16,setter:_m,cols:4},F[bl]={Type:Uint32Array,size:4,setter:ME,arraySetter:TE},F[Rm]={Type:Uint32Array,size:8,setter:IE,cols:2},F[jm]={Type:Uint32Array,size:12,setter:kE,cols:3},F[Um]={Type:Uint32Array,size:16,setter:NE,cols:4},F[Nm]={Type:Uint32Array,size:4,setter:Gm,arraySetter:Qm},F[Lm]={Type:Uint32Array,size:8,setter:Vm,cols:2},F[Bm]={Type:Uint32Array,size:12,setter:Ym,cols:3},F[Om]={Type:Uint32Array,size:16,setter:_m,cols:4},F[Pm]={Type:Float32Array,size:32,setter:LE,rows:2,cols:2},F[Fm]={Type:Float32Array,size:48,setter:BE,rows:3,cols:3},F[zm]={Type:Float32Array,size:64,setter:OE,rows:4,cols:4},F[oE]={Type:Float32Array,size:32,setter:PE,rows:2,cols:3},F[aE]={Type:Float32Array,size:32,setter:zE,rows:2,cols:4},F[sE]={Type:Float32Array,size:48,setter:FE,rows:3,cols:2},F[cE]={Type:Float32Array,size:48,setter:jE,rows:3,cols:4},F[uE]={Type:Float32Array,size:64,setter:RE,rows:4,cols:2},F[lE]={Type:Float32Array,size:64,setter:UE,rows:4,cols:3},F[tE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},F[nE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},F[rE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:Al},F[iE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},F[fE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},F[dE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},F[hE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},F[pE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},F[mE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:Al},F[gE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},F[yE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},F[vE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},F[bE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:Al},F[AE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},F[xE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls};function fs(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ss,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function fn(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||vl,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ds(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||bl,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function xl(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(as,o.buffer);const a=o.size||o.numComponents||r,s=a/i,c=o.type||ss,f=F[c].size*a,l=o.normalize||!1,d=o.offset||0,h=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,s,c,l,f,d+h*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const fe={};fe[ss]={size:4,setter:fs},fe[Em]={size:8,setter:fs},fe[Dm]={size:12,setter:fs},fe[Mm]={size:16,setter:fs},fe[vl]={size:4,setter:fn},fe[Tm]={size:8,setter:fn},fe[Im]={size:12,setter:fn},fe[km]={size:16,setter:fn},fe[bl]={size:4,setter:ds},fe[Rm]={size:8,setter:ds},fe[jm]={size:12,setter:ds},fe[Um]={size:16,setter:ds},fe[Nm]={size:4,setter:fn},fe[Lm]={size:8,setter:fn},fe[Bm]={size:12,setter:fn},fe[Om]={size:16,setter:fn},fe[Pm]={size:4,setter:xl,count:2},fe[Fm]={size:9,setter:xl,count:3},fe[zm]={size:16,setter:xl,count:4};function Wm(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const HE=/(\.|\[|]|\w+)/g,GE=t=>t>="0"&&t<="9";function Xm(t,e,n,r){const i=t.split(HE).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=GE(s[0]),u=c?parseInt(s):s;if(c&&(a+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],d=l==="[",h=n[u]||(d?[]:{});n[u]=h,n=h,r[a]=r[a]||function(p){return function(m){$m(p,m)}}(h),a+=l}}}function QE(t,e){let n=0;function r(s,c,u){const f=c.name.endsWith("[0]"),l=c.type,d=F[l];if(!d)throw new Error(`unknown type: 0x${l.toString(16)}`);let h;if(d.bindPoint){const p=n;n+=c.size,f?h=d.arraySetter(t,l,p,u,c.size):h=d.setter(t,l,p,u,c.size)}else d.arraySetter&&f?h=d.arraySetter(t,u):h=d.setter(t,u);return h.location=u,h}const i={},o={},a=t.getProgramParameter(e,Sm);for(let s=0;s<a;++s){const c=t.getActiveUniform(e,s);if(Wm(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,Xm(u,l,o,i)}}return i}function VE(t,e){const n={},r=t.getProgramParameter(e,ZS);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function YE(t,e){const n=t.getProgramParameter(e,Sm),r=[],i=[];for(let s=0;s<n;++s){i.push(s),r.push({});const c=t.getActiveUniform(e,s);r[s].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(s){const c=s[0],u=s[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},a=t.getProgramParameter(e,qS);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,KS),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,JS),size:t.getActiveUniformBlockParameter(e,s,$S),uniformIndices:t.getActiveUniformBlockParameter(e,s,eE)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const Zm=/\[\d+\]\.$/,_E=(t,e)=>((t+(e-1))/e|0)*e;function WE(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(a){let s=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[s++]=a[c++];s+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function XE(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return YS("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(a.size),c=t.createBuffer(),u=a.index;t.bindBuffer(yl,c),t.uniformBlockBinding(e,a.index,u);let f=r+".";Zm.test(f)&&(f=f.replace(Zm,"."));const l={},d={},h={};return a.uniformIndices.forEach(function(p){const m=o[p];let g=m.name;g.startsWith(f)&&(g=g.substr(f.length));const y=g.endsWith("[0]");y&&(g=g.substr(0,g.length-3));const A=F[m.type],x=A.Type,w=y?_E(A.size,16)*m.size:A.size*m.size,b=new x(s,m.offset,w/x.BYTES_PER_ELEMENT);l[g]=b;const v=WE(b,y,A.rows,A.cols);d[g]=v,Xm(g,v,h,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function qm(t,e,n){return XE(t,e.program,e.uniformBlockSpec,n)}function ZE(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(yl,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Km(t,e,n){ZE(t,e,n)&&t.bufferData(yl,n.array,_S)}function Jm(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function $m(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):$m(t[n],e[n])}}function Ue(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const a=o.length;for(let s=0;s<a;++s)Ue(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function qE(t,e){const n={},r=t.getProgramParameter(e,XS);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(Wm(o))continue;const a=t.getAttribLocation(e,o.name),s=fe[o.type],c=s.setter(t,a,s);c.location=a,n[o.name]=c}return n}function KE(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Vr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(KE(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(WS,n.indices))}function JE(t,e){const n=QE(t,e),r=qE(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Fr(t)&&(i.uniformBlockSpec=YE(t,e),i.transformFeedbackInfo=VE(t,e)),i}const $E=4,eg=5123;function ho(t,e,n,r,i,o){n=n===void 0?$E:n;const a=e.indices,s=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,s||a?o!==void 0?t.drawElementsInstanced(n,c,s===void 0?eg:e.elementType,i,o):t.drawElements(n,c,s===void 0?eg:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const eD=36160,$n=36161,tD=3553,nD=5121,rD=6402,iD=6408,oD=33190,aD=36012,sD=35056,cD=36013,uD=32854,lD=32855,fD=36194,tg=33189,ng=6401,rg=36168,wl=34041,dD=36064,hs=36096,ig=36128,Cl=33306,Sl=33071,El=9729,og=[{format:iD,type:nD,min:El,wrap:Sl},{format:wl}],ct={};ct[wl]=Cl,ct[ng]=ig,ct[rg]=ig,ct[rD]=hs,ct[tg]=hs,ct[oD]=hs,ct[aD]=hs,ct[sD]=Cl,ct[cD]=Cl;function hD(t,e){return ct[t]||ct[e]}const dn={};dn[uD]=!0,dn[lD]=!0,dn[fD]=!0,dn[wl]=!0,dn[tg]=!0,dn[ng]=!0,dn[rg]=!0;function pD(t){return dn[t]}function mD(t,e,n,r){const i=eD,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||og;let a=0;const s={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let d=c.attachmentPoint||hD(l,c.internalFormat);if(d||(d=dD+a++),!u)if(f!==void 0||pD(l))u=t.createRenderbuffer(),t.bindRenderbuffer($n,u),f>1?t.renderbufferStorageMultisample($n,f,l,n,r):t.renderbufferStorage($n,l,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||El,h.mag=h.mag||h.minMag||El,h.wrapS=h.wrapS||h.wrap||Sl,h.wrapT=h.wrapT||h.wrap||Sl),u=fo(t,h)}if(qp(t,u))t.framebufferRenderbuffer(i,d,$n,u);else if(Xa(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,d,u,c.level||0,c.layer):t.framebufferTexture2D(i,d,c.target||tD,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function gD(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||og,n.forEach(function(o,a){const s=e.attachments[a],c=o.format,u=o.samples;if(u!==void 0||qp(t,s))t.bindRenderbuffer($n,s),u>1?t.renderbufferStorageMultisample($n,u,c,r,i):t.renderbufferStorage($n,c,r,i);else if(Xa(t,s))VS(t,s,o,r,i);else throw new Error("unknown attachment type")})}function yD(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Vr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const vD=/^(.*?)_/;function bD(t,e){al(t,0);const n=t.getExtension(e);if(n){const r={},i=vD.exec(e)[1],o="_"+i;for(const a in n){const s=n[a],c=typeof s=="function",u=c?i:o;let f=a;a.endsWith(u)&&(f=a.substring(0,a.length-u.length)),t[f]!==void 0?!c&&t[f]!==s&&Zp(f,t[f],s,a):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(s):(t[f]=s,r[f]=s)}r.constructor={name:n.constructor.name},al(r,0)}return n}const ag=["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 sg(t){for(let e=0;e<ag.length;++e)bD(t,ag[e])}function AD(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){sg(r);break}return r}function xD(t,e){return AD(t,e)}const wD=`/**
|
19
19
|
* The vertex position wrt the rectangle specified by (x, x2, y, y2).
|
20
20
|
* [0, 0] = [x, y], [1, 1] = [x2, y2].
|
21
21
|
* The x or y component may contain fractional values if the rectangle
|
@@ -129,7 +129,7 @@ void main(void) {
|
|
129
129
|
|
130
130
|
setupPicking();
|
131
131
|
}
|
132
|
-
`,
|
132
|
+
`,CD=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
|
133
133
|
in vec2 vPosInPixels;
|
134
134
|
#endif
|
135
135
|
|
@@ -180,12 +180,12 @@ void main(void) {
|
|
180
180
|
fragColor = vPickingColor;
|
181
181
|
}
|
182
182
|
}
|
183
|
-
`,Dl="attr_",cg="uDomain_",
|
183
|
+
`,Dl="attr_",cg="uDomain_",SD="range_",ug="scale_",lg="getScaled_",Ml="uRangeTexture_",fg=3402823466e29;function ED(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function DD(t,e){let n;if(_a(t))n=er(Wp(t)(e));else if(ne(e))if(qn(t))n=TD(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ia(e))n=er(e?1:0);else if(e===null)if(qn(t))n=er([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=er(e);return`
|
184
184
|
#define ${t}_DEFINED
|
185
185
|
${n.type} ${lg}${t}() {
|
186
186
|
// Constant value
|
187
187
|
return ${n};
|
188
|
-
}`}function
|
188
|
+
}`}function MD(t,e,n){var C,S;if(at(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Pr(t),i=Dl+t,o=cg+r,a=SD+r,s=ps(e.type),c=s?"vec2":"float",u=e.domain?e.domain().length:void 0;let f;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${t}`),l.push(""),l.push(`#define ${t}_DEFINED`);const{transform:d}=ED(e.type),h=(I,...N)=>ID.apply(null,[I,"value",...N]);let p;switch(d){case"linear":p=h("scaleLinear","domain",a);break;case"log":p=h("scaleLog","domain",a,e.base());break;case"symlog":p=h("scaleSymlog","domain",a,e.constant());break;case"pow":case"sqrt":p=h("scalePow","domain",a,e.exponent());break;case"index":case"locus":p=h("scaleBandHp","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),(C=n.band)!=null?C:.5);break;case"point":case"band":p=h("scaleBand","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),(S=n.band)!=null?S:.5);break;case"ordinal":case"null":case"identity":p=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const m=za(e.type)||Re(e.type)&&qn(t)?[0,1]:e.range?e.range():void 0;if(m&&t==r&&m.length&&m.every(le)){const I=dg(m);l.push(`const ${I.type} ${a} = ${I};`)}const g=qn(t)?"vec3":"float";let y;if(qn(t)){const I=Ml+r;if(t==r&&l.push(`uniform sampler2D ${I};`),Re(e.type))y=`getInterpolatedColor(${I}, transformed)`;else if(on(e.type)||Gn(e.type))y=`getDiscreteColor(${I}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Gn(e.type)){const I=Ml+r;t==r&&l.push(`uniform sampler2D ${I};`),y=`getDiscreteColor(${I}, int(transformed)).r`}no(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const A=[],x=Re(e.type)&&u>2,w=Gn(e.type)||x;if(A.push("int slot = 0;"),w){const I=o;A.push(x?`while (slot < ${I}.length() - 2 && value >= ${I}[slot + 1]) { slot++; }`:`while (slot < ${I}.length() && value >= ${I}[slot]) { slot++; }`)}const b=Re(e.type)||Gn(e.type)||["band","point"].includes(e.type);if(p){const I=o;b&&(s?A.push(`vec3 domain = ${I};`):A.push(`vec2 domain = vec2(${I}[slot], ${I}[slot + 1]);`)),A.push(`float transformed = ${p};`),x&&A.push(`transformed = (float(slot) + transformed) / (float(${I}.length()) - 1.0);`)}else A.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&A.push(`transformed = clampToRange(transformed, ${dg(m)});`),A.push(`return ${y!=null?y:"transformed"};`),l.push(`
|
189
189
|
${g} ${ug}${t}(${c} value) {
|
190
190
|
${A.map(I=>` ${I}
|
191
191
|
`).join("")}
|
@@ -193,7 +193,7 @@ ${A.map(I=>` ${I}
|
|
193
193
|
${g} ${lg}${t}() {
|
194
194
|
return ${ug}${t}(${i});
|
195
195
|
}`);const v=l.join(`
|
196
|
-
`);if(b&&t==r){const I=Re(e.type)||Gn(e.type)?u:2;f=s?`highp vec3 ${o};`:`mediump float ${o}[${I}];`}return{glsl:v,domainUniform:f}}function Tl(t){if(!le(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+fg;if(t==-1/0)return""+-fg;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function er(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Tl).join(", ")})`):(n="float",r=Tl(t[0])),Object.assign(r,{type:n,numComponents:e})}function
|
196
|
+
`);if(b&&t==r){const I=Re(e.type)||Gn(e.type)?u:2;f=s?`highp vec3 ${o};`:`mediump float ${o}[${I}];`}return{glsl:v,domainUniform:f}}function Tl(t){if(!le(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+fg;if(t==-1/0)return""+-fg;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function er(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Tl).join(", ")})`):(n="float",r=Tl(t[0])),Object.assign(r,{type:n,numComponents:e})}function TD(t){const e=zn(t).rgb();return er([e.r,e.g,e.b].map(n=>n/255))}function dg(t){return er([t[0],je(t)])}function ID(t,...e){const n=[];for(const r of e)le(r)?n.push(Tl(r)):We(r)?n.push(er(r)):n.push(r);return`${t}(${n.join(", ")})`}function ps(t){return t=="index"||t=="locus"}function Il(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function kD(t){return[...Il(t[0]),t[1]-t[0]]}class ND{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Dl+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(!le(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 c=0;const u=f=>{c=+f};i=()=>{s[a++]=c},o=u}else{let c=r!=null?r:[0];const u=r?f=>{}:f=>{c=f};switch(n){case 1:break;case 2:i=()=>{s[a++]=c[0],s[a++]=c[1]},o=u;break;case 3:i=()=>{s[a++]=c[0],s[a++]=c[1],s[a++]=c[2]},o=u;break;case 4:i=()=>{s[a++]=c[0],s[a++]=c[1],s[a++]=c[2],s[a++]=c[3]},o=u;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
|
197
197
|
`,n+=`p${i}();
|
198
198
|
`;const r=new Function("that",`${e}
|
199
199
|
|
@@ -201,7 +201,7 @@ ${g} ${lg}${t}() {
|
|
201
201
|
${n}
|
202
202
|
that.vertexCount++;
|
203
203
|
};
|
204
|
-
`);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Yr=5,kl=127;function Nl(t){const e=[];for(let p=0;p<=kl;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=kl?e[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(p){return(p<=kl?e[p]:n.get(p))||e[63]}function o(p){return i(p.charCodeAt(0))}const a=t.common.base,s=o("x"),c=o("X"),u=o("q"),f=s.height-Yr*2,l=c.height-Yr*2,d=u.height-s.height+u.yoffset-s.yoffset;function h(p,m=1){let g=0;for(let y=0;y<p.length;y++)g+=i(p.charCodeAt(y)).xadvance;return g/a*m}return{measureWidth:h,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:d,common:t.common}}function ms(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const hg=2**31-1,
|
204
|
+
`);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Yr=5,kl=127;function Nl(t){const e=[];for(let p=0;p<=kl;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=kl?e[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(p){return(p<=kl?e[p]:n.get(p))||e[63]}function o(p){return i(p.charCodeAt(0))}const a=t.common.base,s=o("x"),c=o("X"),u=o("q"),f=s.height-Yr*2,l=c.height-Yr*2,d=u.height-s.height+u.yoffset-s.yoffset;function h(p,m=1){let g=0;for(let y=0;y<p.length;y++)g+=i(p.charCodeAt(y)).xadvance;return g/a*m}return{measureWidth:h,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:d,common:t.common}}function ms(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const hg=2**31-1,LD=-(2**31);function BD(t,e,n,r=n){const i=new Int32Array(t);i.fill(hg);let o=LD,a=!1;const s=new Int32Array(t),c=e[0],f=(e[1]-e[0])/t,l=(g,y)=>{const A=(g-c)/f,x=Math.floor(A);return ms(y&&x==A?x-1:x,0,t-1)};function d(g,y,A){y>o?o=y:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const x=n(g),w=l(x,!1);i[w]>y&&(i[w]=y),s[w]<A&&(s[w]=A)}function h(g,y,A){y>o?o=y:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const x=n(g),w=r(g),b=l(x,!1),v=l(w,!0);for(let C=b;C<=v;C++)i[C]>y&&(i[C]=y),s[C]<A&&(s[C]=A)}const p=(g,y,A=[0,0])=>{const x=l(g,!1),w=l(y,!0),b=i[x],v=Math.max(s[w],b);return A[0]=b,A[1]=v,A},m=()=>{for(let y=1;y<s.length;y++)s[y]<s[y-1]&&(s[y]=s[y-1]);let g=!0;for(let y=i.length-1;y>0;y--)g&&i[y]==hg?(i[y]=s[y],g=!1):i[y-1]>i[y]&&(i[y-1]=i[y]);return p};if(d.getIndex=m,h.getIndex=m,!a)return n==r?d:h}class po{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 ND(n);for(const[i,o]of Object.entries(this.variableEncoders)){const a=o.accessor,s=[0,0],c=ps(o.scale.type),u=o.indexer,f=u?l=>u(a(l)):c?l=>Il(a(l),s):a;this.variableBuilder.addConverter(i,{f,numComponents:c?2:1,arrayReference:c?s:void 0})}this.lastOffset=0,this.rangeMap=new In([],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<i;o++){const a=n[o];this.variableBuilder.pushFromDatum(a),this.addToXIndex(a)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=c=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=c=>{var u;return c&&Re((u=c.scale)==null?void 0:u.type)&&c},a=o(this.variableEncoders.x),s=o(this.variableEncoders.x2);if(a){const c=a.accessor,u=s?s.accessor:c,f=[c(e[n]),u(e[r-1])];if(f[1]>f[0]){this.xIndexer=BD(50,f,c,u);let l=this.variableBuilder.vertexCount;this.addToXIndex=d=>{let h=this.variableBuilder.vertexCount;this.xIndexer(d,l,h),l=h}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class OD extends po{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,c=d=>d.accessor||(h=>0),u=c(o.x),f=c(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let d=r;d<i;d++){const h=n[d];let p=u(h),m=f(h);if(p>m&&([p,m]=[m,p]),m<a||p>s)continue;p<a&&(p=a),m>s&&(m=s),this.variableBuilder.updateFromDatum(h),l[0]=0,l[1]=0;const g=1;this.variableBuilder.pushAll();for(let y=0;y<=g;y++)l[0]=y/g,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(h)}this.registerBatch(e)}}class PD extends po{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;o<i;o++){const a=n[o];this.variableBuilder.updateFromDatum(a),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const s=1;for(let c=0;c<=s;c++)this.updatePos(c/s),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(a)}this.registerBatch(e)}}class FD extends po{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class zD extends po{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class RD extends po{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const s=e.text.channelDef;this.numberFormat=!at(s)&&s.format?de(s.format):c=>c,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){var h;const o=this.properties.align||"left",a=(h=this.properties.logoLetters)!=null?h:!1,s=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-Yr;switch(this.properties.baseline){case"top":u+=this.metrics.capHeight;break;case"middle":u+=this.metrics.capHeight/2;break;case"bottom":u-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const d=[0,0];this.updateTextureCoord(d),this.prepareXIndexer(n,r,i);for(let p=r;p<i;p++){const m=n[p],g=this.numberFormat(f(m)),y=ne(g)?g:g===null?"":""+g;if(y.length==0)continue;this.variableBuilder.updateFromDatum(m);const A=a?y.length:this.metrics.measureWidth(y);this.updateWidth(A);let x=o=="right"?-A:o=="center"?-A/2:0;if(!a){const C=this.metrics.getCharByCode(y.charCodeAt(0));x-=(C.width-C.xadvance)/s/2}let w=-.5,b=1,v=1;for(let C=0;C<y.length;C++){const S=this.metrics.getCharByCode(y.charCodeAt(C)),I=a?1:S.xadvance/s;if(S.id==32){x+=I;continue}a?(v=(S.width+Yr*2)/S.width,x=-v/2,b=(S.height+Yr*2)/S.height,w=-.5-Yr/S.height):(b=S.height/s,w=-(S.height+S.yoffset+u)/s,v=S.width/s);const N=S.x,T=S.y;l[0]=x,l[1]=w+b,d[0]=N/c,d[1]=T/c,this.variableBuilder.pushAll(),l[0]=x+v,l[1]=w+b,d[0]=(N+S.width)/c,d[1]=T/c,this.variableBuilder.pushAll(),l[0]=x,l[1]=w,d[0]=N/c,d[1]=(T+S.height)/c,this.variableBuilder.pushAll(),l[0]=x+v,l[1]=w+b,d[0]=(N+S.width)/c,d[1]=T/c,this.variableBuilder.pushAll(),l[0]=x,l[1]=w,d[0]=N/c,d[1]=(T+S.height)/c,this.variableBuilder.pushAll(),l[0]=x+v,l[1]=w,d[0]=(N+S.width)/c,d[1]=(T+S.height)/c,this.variableBuilder.pushAll(),x+=I}this.addToXIndex(m)}this.registerBatch(e)}}const pg=`#define PI 3.141593
|
205
205
|
|
206
206
|
uniform View {
|
207
207
|
/** Offset in "unit" units */
|
@@ -264,7 +264,7 @@ vec4 distanceToColor(float d, vec4 fill, vec4 stroke, float halfStrokeWidth) {
|
|
264
264
|
return fill * distanceToRatio(-d);
|
265
265
|
}
|
266
266
|
}
|
267
|
-
`,
|
267
|
+
`,jD=`const float inf = 1.0 / 0.0;
|
268
268
|
|
269
269
|
// Utils ------------
|
270
270
|
|
@@ -376,7 +376,7 @@ float scaleBandHp(vec2 value, vec3 domainExtent, vec2 range,
|
|
376
376
|
|
377
377
|
return dot(vec4(start, hi, lo, bandwidth), vec4(1.0, step, step, band));
|
378
378
|
}
|
379
|
-
`,
|
379
|
+
`,UD=`
|
380
380
|
/**
|
381
381
|
* Describes where a sample facet should be shown. Interpolating between the
|
382
382
|
* current and target positions/heights allows for transitioning between facet
|
@@ -483,7 +483,7 @@ float getSampleFacetHeight(vec2 pos) {
|
|
483
483
|
return facetPos.height;
|
484
484
|
}
|
485
485
|
}
|
486
|
-
`,
|
486
|
+
`,HD=`/*
|
487
487
|
* Based on concepts presented at:
|
488
488
|
* https://webglfundamentals.org/webgl/lessons/webgl-picking.html
|
489
489
|
* https://deck.gl/docs/developer-guide/custom-layers/picking
|
@@ -510,22 +510,22 @@ bool setupPicking() {
|
|
510
510
|
}
|
511
511
|
return false;
|
512
512
|
}
|
513
|
-
`,
|
514
|
-
`,gs=Symbol("cacheMap");function _r(t,e,n){let r=go(t).get(e);return r===void 0&&(r=n(e),go(t).set(e,r)),r}function mg(t,e){go(t).delete(e)}function mo(t,e){const n=go(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);go(t).delete(e)}function gg(t){t[gs]=new Map}function go(t){return t[gs]||gg(t),t[gs]}function
|
513
|
+
`,GD=`in highp vec4 vPickingColor;
|
514
|
+
`,gs=Symbol("cacheMap");function _r(t,e,n){let r=go(t).get(e);return r===void 0&&(r=n(e),go(t).set(e,r)),r}function mg(t,e){go(t).delete(e)}function mo(t,e){const n=go(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);go(t).delete(e)}function gg(t){t[gs]=new Map}function go(t){return t[gs]||gg(t),t[gs]}function QD(t,e,n,r){const i=ne(t)?t:t.name,o=!ne(t)&&t.extent||[0,1];if(n===void 0&&!ne(t)&&(n=t.count),i){const a=Fu(i);if(ke(a)){const s=vg(a,{extent:o,count:n});return yo(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}else{if(We(a))return yg(a,e);throw new Error("Unknown scheme: "+i)}}}function VD(t,e="rgb",n,r){const i=Ra(t,ne(e)?e:e.type,ne(e)?void 0:e.gamma),o=vg(i);return yo(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function YD(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let a=0;a<i;a++)o[a]=t[a%t.length];return yo(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function yg(t,e,n,r){const i=bg(t,n);return yo(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function vg(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=je(e)-i,a=Xt(r).map(s=>s/(r-1)).map(s=>i+s/o).map(t);return n&&a.reverse(),bg(a)}function bg(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=zn(t[i%t.length]).rgb();r[i*3+0]=o.r,r[i*3+1]=o.g,r[i*3+2]=o.b}return r}class _D{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=xD(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!Fr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");sg(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=mD(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(o=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}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;";We(n)&&(n=n.join(`
|
515
515
|
|
516
516
|
`));const o=this.gl,a=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(a);if(!s){const c=[r,i,n].join(`
|
517
517
|
|
518
|
-
`);s=o.createShader(e),o.shaderSource(s,c),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,
|
518
|
+
`);s=o.createShader(e),o.shaderSource(s,c),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,gD(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,a,s,c;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(a=(o=this._sizeSource)==null?void 0:o.call(this))!=null?a:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(s=e.width)!=null?s:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(c=e.height)!=null?c: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(0,0,0,0),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 on(s.type)?s.domain().length:s.type=="threshold"?s.domain().length+1:s.type=="quantize"||s.type=="quantile"?a!=null?a:4:a}const o=e.channel;if(qn(o)){const a=e.getScaleProps(),s=e.getScale();let c;if(a.scheme){let u=ne(a.scheme)?void 0:a.scheme.count;u=i(u,s),c=QD(a.scheme,this.gl,u,r)}else{const u=s.range();za(s.type)?c=VD(u,a.interpolate,this.gl,r):c=yg(u,this.gl,s.domain().length,r)}this.rangeTextures.set(e,c)}else{const a=e.getScale();if(a.type==="ordinal"||Gn(a.type)){const s=_a(o)?Wp(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,YD(c.map(s),this.gl,a.domain().length,r))}}}}function WD(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((a,s)=>{const c=parseInt(a[1]),u=i[s+1],f=u?u.index:e.length,l=e.substring(a.index,f);return[c-1,l]}));return t.split(`
|
519
519
|
`).map((a,s)=>{const c=o.get(s);return`${s+1+n}: ${a}${c?`
|
520
520
|
|
521
521
|
^^^ ${c}`:""}`}).join(`
|
522
|
-
`)}function
|
523
|
-
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function yo(t,e,n,r){return r?Cm(t,r,n,e):r=fo(t,{...e,src:n}),r}function
|
522
|
+
`)}function XD(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 c of[e,n])t.getShaderParameter(c,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(c),a=WD(t.getShaderSource(c),o,0)+`
|
523
|
+
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function yo(t,e,n,r){return r?Cm(t,r,n,e):r=fo(t,{...e,src:n}),r}function ZD(...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 qD(t){return ne(t)||le(t)||ia(t)}const KD="SAMPLE_FACET_UNIFORM",Ag="SAMPLE_FACET_TEXTURE";class vo{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 JD,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=ZD(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 _r(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=a=>{const s=this.properties[a];return qD(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=M3(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Ag;if(this.unitView.getFacetAccessor())return KD}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 d of i){let h;if(d in this.encoding)h=d;else continue;const p=this.encoding[h];if(!!p)if(at(p))o.push(DD(h,p.value));else{const m=Ke(p)&&p.resolutionChannel||h,g=this.unitView.getScaleResolution(m).getScale(),y=MD(h,g,p);o.push(y.glsl),y.domainUniform&&this.domainUniforms.push(y.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains {
|
524
524
|
`+this.domainUniforms.map(d=>` ${d}
|
525
525
|
`).join("")+`};
|
526
526
|
|
527
527
|
`:"",u=[`precision highp float;
|
528
|
-
`,...r,pg,
|
528
|
+
`,...r,pg,jD,s,...o,UD,HD,e],f=[...r,pg,GD,n],l=this.gl;this.programStatus=XD(l,this.glHelper.compileShader(l.VERTEX_SHADER,u),this.glHelper.compileShader(l.FRAGMENT_SHADER,f))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=JE(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=qm(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=qm(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Ue(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(no(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):ps(r.scale.type)?Il(+n.datum):+n.datum;Ue(this.programInfo,{[Dl+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.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(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&lC(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=hC(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.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){var a;const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=yD(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[s,c]of Object.entries(this.domainUniformInfo.setters)){const u=s.substring(cg.length),f=this.encoding[u],l=Ke(f)&&f.resolutionChannel||u,d=this.unitView.getScaleResolution(l);if(d){const h=d.getScale();i.push(()=>{const p=on(h.type)?[0,h.domain().length]:h.domain();c(ps(h.type)?kD(p):p)})}}i.push(()=>Km(r,this.programInfo,this.domainUniformInfo))}for(const[s,c]of Object.entries(this.encoding))if(Ke(c)){const u=Ke(c)&&c.resolutionChannel||s,f=this.unitView.getScaleResolution(u),l=n.rangeTextures.get(f);l&&i.push(()=>Ue(this.programInfo,{[Ml+s]:l}))}this.getSampleFacetMode()==Ag&&i.push(()=>{let s;for(const c of this.unitView.getAncestors())if(s=c.getSampleFacetTexture(),s)break;if(!s)throw new Error("No facet texture available. This is bug.");Ue(this.programInfo,{uSampleFacetTexture:s})});const o=((a=e.picking)!=null?a:!1)&&this.isPickingParticipant();return i.push(()=>Jm(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 f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),a=o&&Re(o.type),s=["index","locus"].includes(o==null?void 0:o.type)?-1:0,c=[0,0];i=l=>{if(a&&l.xIndex){const d=o.domain(),h=l.xIndex(d[0]+s,d[1],c),p=h[0],m=h[1]-p;m>0&&e(p,m)}else e(l.offset,l.count)};const u=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(n)&&i(u)}:function(){u.count&&i(u)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,a=this.glHelper.getLogicalCanvasSize(),s=.5,c=(o.xOffset||0)+s,u=(o.yOffset||0)+s;let f,l=e;if(o.clip||n){let d=0,h=0,p;n?(l=o.clip?e.intersect(n):n,p=[e.width/l.width,e.height/l.height],h=Math.max(0,e.y2-n.y2),d=Math.max(0,e.x2-n.x2)):p=[1,1];const m=[e.x,a.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(x=>x*r),g=m.map(x=>Math.floor(x)),[y,A]=m.map((x,w)=>x-g[w]);i.viewport(...g),i.scissor(...g),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+d+y)/l.width,-(u+h-A)/l.height],uViewScale:p}}else i.viewport(0,0,a.width*r,a.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+c)/a.width,(a.height-e.y-u-e.height)/a.height],uViewScale:[e.width/a.width,e.height/a.height]};return Jm(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),Km(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class JD extends In{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 Ll(t,e){var o;const n=N3(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(at(r)||at(i))){if(r){if(!Ke(t[e]))return;if(i){if(r.type!="quantitative"){const a=(1-(r.band||1))/2;r.band=a,i.band=-a}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const a=(1-((o=r.band)!=null?o:1))/2;r.band=0+a,i.band=1-a}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function xg(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),at(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function wg(t,e){at(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 $D extends vo{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 _r(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&at(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Ll(e,"x"),Ll(e,"y"),xg(e,this.properties.filled),wg(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(at(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(wD,CD,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){var n,r,i,o;super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ue(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[(n=e.cornerRadiusTopRight)!=null?n:e.cornerRadius,(r=e.cornerRadiusBottomRight)!=null?r:e.cornerRadius,(i=e.cornerRadiusTopLeft)!=null?i:e.cornerRadius,(o=e.cornerRadiusBottomLeft)!=null?o:e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new OD({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(()=>Vr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{ho(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=qe(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,a=r.x2.accessor;if(i)return i.find(s=>n>=o(s)&&n<a(s))}}const eM=`/**
|
529
529
|
* The stroke should only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
|
530
530
|
* Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with
|
531
531
|
* geometric zoom, etc.
|
@@ -654,7 +654,7 @@ void main(void) {
|
|
654
654
|
|
655
655
|
setupPicking();
|
656
656
|
}
|
657
|
-
`,
|
657
|
+
`,tM=`const lowp vec4 white = vec4(1.0);
|
658
658
|
const lowp vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
|
659
659
|
|
660
660
|
uniform bool uInwardStroke;
|
@@ -777,10 +777,10 @@ void main() {
|
|
777
777
|
}
|
778
778
|
}
|
779
779
|
|
780
|
-
`,Ot=1<<0,hn=1<<1,
|
780
|
+
`,Ot=1<<0,hn=1<<1,nM={};class ue{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",Xt(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
781
781
|
`)+`return function propagate(datum) {${Xt(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
|
782
782
|
`)}}`)(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){var r;const n=this.children.map(i=>i.subtreeToString(e+1)).join("");return" ".repeat(e*2)+"* "+((r=/^class ([A-Za-z0-9_]+)/.exec(""+this.constructor))==null?void 0:r[1])+`
|
783
|
-
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():
|
783
|
+
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():nM}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 Cg(t){return t.type=="file"}function rM(t){return t.type=="facet"}class Sg extends ue{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 Eg(t,e,n){const r=new Sg({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const iM={};class oM extends vo{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(),...iM}}fixEncoding(e){return xg(e,this.properties.filled),wg(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(Eg(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(eM,tM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ue(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new FD({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 Ic(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ue(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Vr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&ho(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const aM=`// Line caps
|
784
784
|
const int BUTT = 0;
|
785
785
|
const int SQUARE = 1;
|
786
786
|
const int ROUND = 2;
|
@@ -869,7 +869,7 @@ void main(void) {
|
|
869
869
|
|
870
870
|
setupPicking();
|
871
871
|
}
|
872
|
-
`,
|
872
|
+
`,sM=`// Line ending
|
873
873
|
const int BUTT = 0;
|
874
874
|
const int SQUARE = 1;
|
875
875
|
const int ROUND = 2;
|
@@ -921,7 +921,7 @@ void main(void) {
|
|
921
921
|
fragColor = vPickingColor;
|
922
922
|
}
|
923
923
|
}
|
924
|
-
`;class
|
924
|
+
`;class cM extends vo{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&&Ke(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Ke(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=uM(this.properties.strokeDash);this.dashTexture=fo(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(aM,sM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ue(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 PD({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(()=>Ue(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Vr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>ho(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function uM(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 lM=`uniform float uSagittaScaleFactor;
|
925
925
|
|
926
926
|
/** Make very small arcs visible */
|
927
927
|
uniform float uMinSagittaLength;
|
@@ -1032,7 +1032,7 @@ void main(void) {
|
|
1032
1032
|
|
1033
1033
|
setupPicking();
|
1034
1034
|
}
|
1035
|
-
`,
|
1035
|
+
`,fM=`in lowp vec4 vColor;
|
1036
1036
|
in float vSize;
|
1037
1037
|
in float vNormalLengthInPixels;
|
1038
1038
|
|
@@ -1050,7 +1050,7 @@ void main(void) {
|
|
1050
1050
|
fragColor = vPickingColor;
|
1051
1051
|
}
|
1052
1052
|
}
|
1053
|
-
`;class
|
1053
|
+
`;class dM extends vo{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,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(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(lM,fM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ue(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new zD({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:hM(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)}Vr(n,this.programInfo,this.bufferInfo),ho(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function hM(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const pM=`uniform float uSdfNumerator;
|
1054
1054
|
|
1055
1055
|
uniform vec2 uD; // dx & dy
|
1056
1056
|
|
@@ -1296,7 +1296,7 @@ void main(void) {
|
|
1296
1296
|
|
1297
1297
|
setupPicking();
|
1298
1298
|
}
|
1299
|
-
`,
|
1299
|
+
`,mM=`uniform sampler2D uTexture;
|
1300
1300
|
|
1301
1301
|
in vec2 vTexCoord;
|
1302
1302
|
in float vEdgeFadeOpacity;
|
@@ -1327,7 +1327,7 @@ void main() {
|
|
1327
1327
|
fragColor = vPickingColor;
|
1328
1328
|
}
|
1329
1329
|
}
|
1330
|
-
`,mM={left:-1,center:0,right:1},gM={top:-1,middle:0,bottom:1,alphabetic:1};class yM extends vo{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 ro)this.properties.fitToBand&&Ll(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(hM,pM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ue(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[mM[e.align],gM[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=r.text.format?de(r.text.format):u=>u;for(const u of n){const f=a(i(u)),l=ne(f)?f:f===null?"":""+f;o+=l&&l.length||0}const s=new zD({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 c=s.toArrays();this.rangeMap.migrateEntries(c.rangeMap),this.updateBufferInfo(c)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ue(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Vr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>ho(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function bo(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+=ys(p.px)+(Bl(p)?0:n),s+=ys(p.grow);a-=n;const c=Math.max(0,e-a),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],d=p=>{const m=f.length;if(!m)return;const g=(p?n:0)*(o?-1:1);h-=g;for(let y=0;y<m;y++)l.push({location:h+(y+1)/(m+1)*g,size:0});h+=g,f.length=0};let h=o?Math.max(e,a):0+i;if(t.length==1&&Bl(t[0]))return[{location:h,size:0}];for(let p=0;p<t.length;p++){const m=t[p];if(Bl(m))f.push(m);else{d(l.length>0);const g=ys(m.px)+(s?ys(m.grow)/s*c:0);o&&(h-=g),l.push({location:u(h),size:u(g)}),o?h-=n:h+=g+n}}return h+=o?n:-n,d(!1),l}function vM(t){var r,i;let e=0,n=0;for(const o of t)e=Math.max(e,(r=o.px)!=null?r:0),n=Math.max(n,(i=o.grow)!=null?i:0);return{px:e,grow:n}}const kd=class{constructor(e,n){te(this,Qo);this.width=e,this.height=n}addPadding(e){return se(this,Qo,Bd).call(this,e.width,e.height)}subtractPadding(e){return se(this,Qo,Bd).call(this,-e.width,-e.height)}};let tr=kd;Qo=new WeakSet,Bd=function(e,n){var r,i;return new kd({px:((r=this.width.px)!=null?r:0)+e,grow:this.width.grow},{px:((i=this.height.px)!=null?i:0)+n,grow:this.height.grow})};const Ao=Object.freeze({px:0,grow:0}),bM=new tr(Ao,Ao);function Bl(t){return!t.px&&!t.grow}function ys(t){return t||0}function AM(t){return t&&(le(t.px)||le(t.grow))}function xM(t){if(Ig(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(AM(t))return t;if(le(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}`)}function wM(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function CM(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function SM(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Dg(t,e){return e>=t.location&&e<t.location+t.size}class Je{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 Je(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Je(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Je(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Ol}static createFromRecord(e){return new Je(e.top,e.right,e.bottom,e.left)}static zero(){return Ol}static createUniformPadding(e){return new Je(e,e,e,e)}}const Ol=Je.createUniformPadding(0);Object.freeze(Ol);const EM=/^([A-Za-z]+:)?\/\//;function DM(t,e){if(e&&EM.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const vs="VISIT_SKIP",nr="VISIT_STOP",Mg=t=>t;class Tg{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},gg(this),this.opacityFunction=Mg,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>Je.createFromConfig(this.spec.padding))}getOverhang(){return Je.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):bM)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Ig(r)){const a=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let c=0;if(on(s.type))c=s.domain().length;else if(["locus","index"].includes(s.type)){const f=s.domain();c=je(f)-f[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return c=ku(c,u.paddingInner(),u.paddingOuter()),{px:c*a,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&xM(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new tr(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n:1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;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!==nr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Mg)&&(this.opacityFunction=TM(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.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.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Zn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Pr(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return DM(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return ne(e)?e:e.text}_cache(e,n){return _r(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":mo(this,e);break;case"ancestors":for(const r of this.getAncestors())mo(r,e);break;case"progeny":this.visit(r=>mo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function MM(t){return"unitsPerPixel"in t}function TM(t){const e=t.spec.opacity;if(e!==void 0){if(le(e))return n=>n*e;if(MM(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 Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=wu().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=oa(r.domain())/1e3;return i(s)*o}}}return n=>n}const Ig=t=>!!(t!=null&&t.step);class rr extends Tg{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[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===nr)return n;if(n!==vs){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===nr)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 rr)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,nr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function bs(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||Wr(a)&&Wr(s)||Wr(a)&&s===!0||a===!0&&ze(s),o=a=>{for(let s in a){const c=a[s];if(!n.includes(s)&&c!==void 0)if(r[s]!==void 0&&!i(r[s],c))console.warn(`Conflicting property ${s} of ${e}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const u=r[s];if(Wr(u))Wr(c)&&(r[s]=bs([u,c],s));else if(Wr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=bs([{},c],s)}else r[s]=c}}};for(const a of t)o(a);return r}function Wr(t){return ze(t)&&!Array.isArray(t)}/*!
|
1330
|
+
`,gM={left:-1,center:0,right:1},yM={top:-1,middle:0,bottom:1,alphabetic:1};class vM extends vo{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 ro)this.properties.fitToBand&&Ll(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(pM,mM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Ue(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[gM[e.align],yM[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=r.text.format?de(r.text.format):u=>u;for(const u of n){const f=a(i(u)),l=ne(f)?f:f===null?"":""+f;o+=l&&l.length||0}const s=new RD({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 c=s.toArrays();this.rangeMap.migrateEntries(c.rangeMap),this.updateBufferInfo(c)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>Ue(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Vr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>ho(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function bo(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+=ys(p.px)+(Bl(p)?0:n),s+=ys(p.grow);a-=n;const c=Math.max(0,e-a),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],d=p=>{const m=f.length;if(!m)return;const g=(p?n:0)*(o?-1:1);h-=g;for(let y=0;y<m;y++)l.push({location:h+(y+1)/(m+1)*g,size:0});h+=g,f.length=0};let h=o?Math.max(e,a):0+i;if(t.length==1&&Bl(t[0]))return[{location:h,size:0}];for(let p=0;p<t.length;p++){const m=t[p];if(Bl(m))f.push(m);else{d(l.length>0);const g=ys(m.px)+(s?ys(m.grow)/s*c:0);o&&(h-=g),l.push({location:u(h),size:u(g)}),o?h-=n:h+=g+n}}return h+=o?n:-n,d(!1),l}function bM(t){var r,i;let e=0,n=0;for(const o of t)e=Math.max(e,(r=o.px)!=null?r:0),n=Math.max(n,(i=o.grow)!=null?i:0);return{px:e,grow:n}}const kd=class{constructor(e,n){te(this,Qo);this.width=e,this.height=n}addPadding(e){return se(this,Qo,Bd).call(this,e.width,e.height)}subtractPadding(e){return se(this,Qo,Bd).call(this,-e.width,-e.height)}};let tr=kd;Qo=new WeakSet,Bd=function(e,n){var r,i;return new kd({px:((r=this.width.px)!=null?r:0)+e,grow:this.width.grow},{px:((i=this.height.px)!=null?i:0)+n,grow:this.height.grow})};const Ao=Object.freeze({px:0,grow:0}),AM=new tr(Ao,Ao);function Bl(t){return!t.px&&!t.grow}function ys(t){return t||0}function xM(t){return t&&(le(t.px)||le(t.grow))}function Dg(t){if(kg(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(xM(t))return t;if(le(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}`)}function wM(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function CM(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function SM(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Mg(t,e){return e>=t.location&&e<t.location+t.size}class Je{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 Je(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Je(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Je(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Ol}static createFromRecord(e){return new Je(e.top,e.right,e.bottom,e.left)}static zero(){return Ol}static createUniformPadding(e){return new Je(e,e,e,e)}}const Ol=Je.createUniformPadding(0);Object.freeze(Ol);const EM=/^([A-Za-z]+:)?\/\//;function DM(t,e){if(e&&EM.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const vs="VISIT_SKIP",nr="VISIT_STOP",Tg=t=>t;class Ig{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},gg(this),this.opacityFunction=Tg,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>Je.createFromConfig(this.spec.padding))}getOverhang(){return Je.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):AM)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(kg(r)){const a=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let c=0;if(on(s.type))c=s.domain().length;else if(["locus","index"].includes(s.type)){const f=s.domain();c=je(f)-f[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return c=ku(c,u.paddingInner(),u.paddingOuter()),{px:c*a,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&Dg(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new tr(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n:1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;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!==nr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Tg)&&(this.opacityFunction=TM(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.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.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Zn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Pr(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return DM(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return ne(e)?e:e.text}_cache(e,n){return _r(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":mo(this,e);break;case"ancestors":for(const r of this.getAncestors())mo(r,e);break;case"progeny":this.visit(r=>mo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function MM(t){return"unitsPerPixel"in t}function TM(t){const e=t.spec.opacity;if(e!==void 0){if(le(e))return n=>n*e;if(MM(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 Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=wu().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=oa(r.domain())/1e3;return i(s)*o}}}return n=>n}const kg=t=>!!(t!=null&&t.step);class rr extends Ig{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[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===nr)return n;if(n!==vs){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===nr)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 rr)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,nr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function bs(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||Wr(a)&&Wr(s)||Wr(a)&&s===!0||a===!0&&ze(s),o=a=>{for(let s in a){const c=a[s];if(!n.includes(s)&&c!==void 0)if(r[s]!==void 0&&!i(r[s],c))console.warn(`Conflicting property ${s} of ${e}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const u=r[s];if(Wr(u))Wr(c)&&(r[s]=bs([u,c],s));else if(Wr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=bs([{},c],s)}else r[s]=c}}};for(const a of t)o(a);return r}function Wr(t){return ze(t)&&!Array.isArray(t)}/*!
|
1331
1331
|
* Adapted from vega-encode:
|
1332
1332
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
|
1333
1333
|
*
|
@@ -1335,7 +1335,7 @@ void main() {
|
|
1335
1335
|
* All rights reserved.
|
1336
1336
|
*
|
1337
1337
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1338
|
-
*/function
|
1338
|
+
*/function Ng(t,e,n){return le(e)&&n!=null&&(e=Math.min(e,~~(oa(t.domain())/n)||1)),ze(e)&&(e.step,e=e.interval),e}function Lg(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(nt(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],nt(e)];e.length>n&&e.length>=3;)e=e.filter(function(s,c){return!(c%2)});e.length<3&&(e=a)}return e}function IM(t,e){return t.bins?Lg(t,kM(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function kM(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function NM(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?de(n):String;if(sp(t.type)){var i=BM(n);r=t.bins?i:LM(r,i)}return r}function LM(t,e){return function(n){return t(n)?e(n):""}}function BM(t){var e=Zt(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return OM(de(e),de(".1f")(1)[1])}else return de(e)}function OM(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,a;if(i<0)return r;for(o=PM(r,i),a=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function PM(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}/*!
|
1339
1339
|
* Adapted from vega-encode:
|
1340
1340
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
|
1341
1341
|
*
|
@@ -1343,27 +1343,27 @@ void main() {
|
|
1343
1343
|
* All rights reserved.
|
1344
1344
|
*
|
1345
1345
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1346
|
-
*/const FM="locus",zM="index";var RM=5;function jM(t){const e=t.type;return!t.bins&&(e===Ir||e===ji||e===Ui)}function Lg(t){return Re(t)&&![pt,zM,FM].includes(t)}function Bg(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var UM=sa(["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 Og(t,e,n){n=Bg(n);for(const r in t)if(!UM[r]){if(r==="padding"&&Lg(e.type))continue;ke(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}XM(e,t,WM(e,t,VM(e,t,n)))}function HM(t,e){const n=GM(t),r=X(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return Og(t,i,e),i}function GM(t){var e=t.type,n="",r;return e===pt?pt+"-"+Ir:(QM(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?pt+"-":r===3?kr+"-":""),(n+e||Ir).toLowerCase())}function QM(t){const e=t.type;return Re(e)&&e!==$0&&e!==ep&&(t.scheme||t.range&&t.range.length&&t.range.every(ne))}function VM(t,e,n){if(!t.domain)return 0;n=Bg(n);var r=YM(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&jM(t),s,c;return i?(Lg(o)&&e.padding&&i[0]!==nt(i)&&(i=_M(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&&(c=e.domainMid,(c<i[0]||c>i[s])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(s,0,c))),t.domain(Pg(o,i,n)),o===Lu&&t.unknown(e.domainImplicit?$c:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&kg(t,e.nice)||null),i.length):0}function YM(t,e,n){return e?(t.domain(Pg(t.type,e,n)),e.length):-1}function _M(t,e,n,r,i,o){var a=Math.abs(nt(n)-n[0]),s=a/(a-2*r),c=t===rn?Hd(e,null,s):t===Ui?yc(e,null,s,.5):t===ji?yc(e,null,s,i||1):t===Pa?eb(e,null,s,o||1):gc(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Pg(t,e,n){if(sp(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: "+aa(e))}return e}function WM(t,e,n){let r=e.bins;if(r&&!We(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?nt(i):r.stop,s=r.step;s||ae("Scale bins parameter missing step property."),r=Xt(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Ou&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function XM(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=ZM(r,e,n);else if(e.scheme&&(o=qM(r,e,n),ke(o))){if(t.interpolator)return t.interpolator(o);ae(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&za(r))return t.interpolator(Ra(Pl(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(cp(e.interpolate,e.interpolateGamma)):ke(t.round)?t.round(i):ke(t.rangeRound)&&t.interpolate(i?zi:tn),o&&t.range(Pl(o,e.reverse))}function ZM(t,e,n){t!==rp&&t!==Bu&&ae("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Bu?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*ku(n,i,r)]}function qM(t,e,n){var r=e.schemeExtent,i,o;return We(e.scheme)?o=Ra(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Fu(i),o||ae(`Unrecognized scheme name: ${e.scheme}`)),n=t===np?n+1:t===Ou?n-1:t===Nu||t===tp?+e.schemeCount||RM:n,za(t)?Fg(o,r,e.reverse):ke(o)?t4(Fg(o,r),n):t===Lu?o:o.slice(0,n)}function Fg(t,e,n){return ke(t)&&(e||n)?e4(t,Pl(e||[0,1],n)):t}function Pl(t,e){return e?t.slice().reverse():t}const Fl=de(",d");function KM(t){return t.chrom+":"+Fl(Math.floor(t.pos+1))}function JM(t,e){return t.chrom+":"+Fl(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+Fl(Math.ceil(e.pos))}const $M="https://genomespy.app/data/genomes/";class e8{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=$M;try{this.setChromSizes(t8(await Bi({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(o);const a=o.name.replace(/^chr/i,"");for(const s of["chr"+a,"CHR"+a,"Chr"+a,o.number,""+o.number,a,o.name])this.cumulativeChromPositions.set(s,n),this.chromosomesByName.set(s,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=Tn(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 JM(...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,o,a;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(a=r.pos)!=null?a:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.size)]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(s=>s===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 t8(t){return bb(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function zg(t){return ze(t)&&"chrom"in t}function n8(t){return t.every(zg)}class xo extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof xo&&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 zl extends xo{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class Rg extends xo{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 jg extends Rg{constructor(){super(),this.type="nominal"}}class r8 extends xo{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const Ug={quantitative:zl,index:zl,locus:zl,nominal:jg,ordinal:Rg};function Hg(t,e){if(t=="quantitative"&&i8(e)){const n=new r8(e);return n.type=t,n}else if(Ug[t]){const n=new Ug[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function i8(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Gg(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function o8(t){return--t*t*t+1}function a8(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function s8(t){return 1-a8(t)}const Qg="quantitative",Rl="ordinal",jl="nominal",Vg="locus",c8="index";class u8{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var a;const r=Xu(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&&!oo(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()}_getMergedScaleProps(){return _r(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Xu(n.view,n.channel).scale).filter(n=>n!==void 0);return bs(e,"scale",["domain"])})}getScaleProps(){return _r(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=l8(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:on(n.type)&&(n.domain=new jg),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&on(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),f8(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Vg?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>oo(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>oo(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){mg(this,"scaleProps");const e=this.getScaleProps();Og(e,this._scale),Re(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=HM(e);return this._scale=n,Gx(n)&&n.genome(this.getGenome()),Re(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&Ip(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Vp(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())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=K2(a,r||0),a=gc(a,s,e);break;case"log":a=J2(a,r||0),a=Hd(a,s,e);break;case"pow":case"sqrt":{const c=i;a=$2(a,r||0,c.exponent()),a=yc(a,s,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(a=tb(a,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>a[c]!=o[c])?(i.domain(a),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var s;if(ia(n)&&(n=n?700:0),!this.isZoomable())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 c=a[1]-a[0],u=a[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,d=I0([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:Gg,onUpdate:h=>{const[p,,m]=d(h);o.domain([p-m/2,p+m/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?oa(this._zoomExtent)/oa(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(d8(n)&&We(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),io(n)?r.nice=!this.isExplicitDomain():qn(n)?r.scheme=e==jl?"tableau10":e==Rl?"blues":"viridis":_a(n)?r.range=_p(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}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 zg(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&n8(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function l8(t,e){if(e==c8||e==Vg){if(Vp(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=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[jl,Rl,Qg].indexOf(e)]:e==Qg?"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 f8(t,e){io(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Re(t.type)&&(t.clamp=!0)}function d8(t){return ze(t)}function Ul(...t){for(const e of t)if(e!==void 0)return e}class h8{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=je(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 _r(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:bs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=Xu(o.view,o.channel);if(!at(a))return{member:o,explicitTitle:Ul((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:Ul(Zn(a)?a.field:void 0,Zu(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(oo(o.member.channel)&&!o.explicitTitle){const s=Pr(o.member.channel);return((a=n.find(c=>c.member.view==o.member.view&&c.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>Ul(o.explicitTitle,o.implicitTitle)).filter(ne));return i.size?[...i].join(", "):null}}class Yg extends Tg{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Pt extends rr{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,a)=>{if(Yl(o)||Vl(o))return n.createView(o,this,"layer"+a);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(!!this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class _g{constructor(e,n){this.n=e,this.maxCols=n!=null?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<r;i++){const o=[];e.push(o);for(let a=0;a<n;a++){const s=i*n+a;s<this.n&&o.push(s)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let a=0;a<r;a++){const s=a*n+i;s<this.n&&o.push(s)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function Ft(t){return()=>t}const _t=class{static create(e,n,r,i){return new _t(Ft(e),Ft(n),Ft(r),Ft(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"?Ft(i):typeof i=="function"?i:this._passThrough(r)};return new _t(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new _t(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 _t(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?this:new _t(()=>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))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new _t(Ft(this.x),Ft(this.y),Ft(this.width),Ft(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let pn=_t;hc(pn,"ZERO",_t.create(0,0,0,0));function Wg(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class ir extends ue{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Xg(t){var n,r;const e={...t.format};if((n=e.type)!=null||(e.type=y8(t)&&p8(t.url)),(r=e.parse)!=null||(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function p8(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const As=t=>typeof t!="object"?m8:g8,m8=t=>({data:t}),g8=t=>t;function y8(t){return"url"in t}function v8(t){return"dynamicCallbackSource"in t}class Zg extends ir{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=As(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const qg="chromosome_ticks_and_labels",Kg={x:"width",y:"height"};function Hl(t){return t=="x"?"y":"x"}const Gl={x:["bottom","top"],y:["left","right"]},Jg=Object.fromEntries(Object.entries(Gl).map(([t,e])=>e.map(n=>[n,t])).flat(1));function or(t){return Jg[t]}class $g extends Pt{constructor(e,n,r,i){const o=n=="locus",a={...o?x8:e1,...A8(n,e),...e};if(super(o?w8(a):t1(a),r,i,`axis_${e.orient}`),this.axisProps=a,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Zg(()=>this.ticks),o){const s=or(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName(qg).getDynamicDataSource=()=>new Zg(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return Jg[this.axisProps.orient]=="x"?new tr(n,e):new tr(e,n)}getPerpendicularSize(){return Ql(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=or(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(Ip(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=b8(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[Kg[or(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Ql(t){const e=or(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}function b8(t,e,n,r=[]){const i=s=>25+60*Wg(100,700,s);let o=le(t.tickCount)?t.tickCount:Math.round(n/i(n));o=kg(e,o,t.tickMinStep);const a=t.values?Ng(e,t.values,o):IM(e,o);if(u4(a,r,s=>s,s=>s.value))return r;{const s=NM(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const e1={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 A8(t,e){var s;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=(s=e.labelAngle)!=null?s:(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 t1(t){const e={...t,extent:Ql(t)},n=or(e.orient),r=Hl(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),s=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const d={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&d.layer.push(c()),e.labels&&d.layer.push(s()),d},l={[Kg[Hl(or(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(a()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const x8={...e1,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 w8(t){const e={...t,extent:Ql(t)},n=or(e.orient),r=Hl(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let s;switch(e.orient){case"bottom":case"top":s={};break;case"left":s={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":s={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:s={}}const c=t1({...t,...s});if(t.chromTicks||t.chromLabels){const u={name:qg,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(a());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(d=>d.name=="labels").forEach(d=>{f=d.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const n1={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"},C8={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},S8={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},E8={start:0,middle:.5,end:1},D8={start:"left",middle:"center",end:"right"};function M8(t){var u,f,l;if(!t)return;const e=ne(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(u={"track-title":C8,overlay:S8}[e.style])!=null?u:{},r={...n1,...n,...e};let i={},o={x:0,y:0};const a=E8[(f=r.anchor)!=null?f:"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={...n1,...i,...n,...e},c={xOffset:0,yOffset:0};switch(r.orient){case"top":c.yOffset=-s.offset;break;case"right":c.xOffset=s.offset;break;case"bottom":c.yOffset=s.offset;break;case"left":c.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...c,text:s.text,align:(l=s.align)!=null?l:D8[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 r1(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 c=r.mark.encoders;c.x&&!c.x2&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&(s=(1-+c.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:a,y:s,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:a,y:s,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const a=c=>{n({x:o.clientX,y:o.clientY,xDelta:c.clientX-o.clientX,yDelta:c.clientY-o.clientY,zDelta:0}),o=c},s=c=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class i1 extends rr{constructor(n,r,i,o,a){var s;super(n,r,i,o);te(this,Vo);te(this,Dt);te(this,oc);te(this,ac);te(this,br);te(this,Yo);te(this,_o);te(this,Wo);te(this,sc);te(this,ui,1/0);te(this,li,10);te(this,et,[]);te(this,fi,0);this.spec=n,tt(this,li,(s=n.spacing)!=null?s:10),tt(this,ui,a),tt(this,et,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),G(this,et).push(se(this,Vo,Od).call(this,n)),R2(this,fi)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=G(this,et).findIndex(o=>o.view==n);if(i>=0)G(this,et)[i]=se(this,Vo,Od).call(this,r);else throw new Error("Not my child view!")}get children(){return G(this,et).map(n=>n.view)}get childCount(){return G(this,et).length}onScalesResolved(){super.onScalesResolved(),se(this,ac,U2).call(this)}*[Symbol.iterator](){for(const n of G(this,et)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=se(this,br,$o).call(this,"column"),r=se(this,br,$o).call(this,"row");return!n.length||!r.length?Je.zero():new Je(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new tr(se(this,_o,Fd).call(this,"column"),se(this,_o,Fd).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){var u;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},a=bo(se(this,Yo,Pd).call(this,"column"),r.width,o),s=bo(se(this,Yo,Pd).call(this,"row"),r.height,o),c=new _g(G(this,Dt,Sn).length,(u=G(this,ui))!=null?u:1/0);for(const[f,l]of G(this,Dt,Sn).entries()){const{view:d,axes:h,background:p,title:m}=l,[g,y]=c.getCellCoords(f),A=a[se(this,Wo,zd).call(this,"column",g)],x=s[se(this,Wo,zd).call(this,"row",y)],w=d.getSize(),b=d.getPadding().subtract(d.getOverhang()),v=A.location+b.left,C=x.location+b.top,S=(w.width.grow?A.size:w.width.px)-b.width,I=(w.height.grow?x.size:w.height.px)-b.height,N=new pn(()=>r.x+v,()=>r.y+C,()=>S,()=>I);l.coords=N,p==null||p.render(n,N,i);const T=k8(d);T&&d.render(n,N,i);for(const[O,Q]of Object.entries(h)){const U=Q.axisProps;let we;const Ie=Q.getPerpendicularSize();O=="bottom"?we=N.translate(0,N.height+U.offset).modify({height:Ie}):O=="top"?we=N.translate(0,-Ie-U.offset).modify({height:Ie}):O=="left"?we=N.translate(-Ie-U.offset,0).modify({width:Ie}):O=="right"&&(we=N.translate(N.width+U.offset,0).modify({width:Ie})),Q.render(n,we)}T||d.render(n,N,i),m==null||m.render(n,N,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=G(this,Dt,Sn).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof be||i instanceof Pt)&&r1(n,r.coords,o=>se(this,sc,H2).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}ui=new WeakMap,li=new WeakMap,et=new WeakMap,fi=new WeakMap,Vo=new WeakSet,Od=function(n){var i;const r={view:n,background:void 0,axes:{},coords:pn.ZERO};if(n instanceof be||n instanceof Pt){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const s=new be(T8(o),this.context,n,"background"+G(this,fi));s.blockEncodingInheritance=!0,r.background=s}const a=M8(n.spec.title);if(a){const s=new be(a,this.context,n,"title"+G(this,fi));s.blockEncodingInheritance=!0,r.title=s}}return r},Dt=new WeakSet,Sn=function(){return G(this,et).filter(n=>n.view.isVisible())},oc=new WeakSet,j2=function(){var n;return new _g(G(this,Dt,Sn).length,(n=G(this,ui))!=null?n:1/0)},ac=new WeakSet,U2=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of G(this,et)){const{view:r,axes:i}=n,o=(a,s,c)=>{var f;const u=a.getAxisProps();if(u!==null){if(!u.orient){for(const l of Gl[s])if(!i[l]){u.orient=l;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=u.title)!=null||(u.title=a.getTitle()),!Gl[s].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${s}"!`);if(i[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);i[u.orient]=new $g(u,a.scaleResolution.type,this.context,c)}};if(r instanceof be||r instanceof Pt)for(const a of["x","y"]){const s=r.resolutions.axis[a];!s||o(s,a,r)}if(r instanceof Pt){for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&o(c,s,a)}for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&o(c,s,a)}}}},br=new WeakSet,$o=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(a,s)=>a.map(c=>{const u=G(this,Dt,Sn)[c].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const f=G(this,Dt,Sn)[c].view.getOverhang();return n=="column"?s?f.right:f.left:s?f.bottom:f.top}).reduce((c,u)=>Math.max(c,u),0);return G(this,oc,j2)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:vM(a.map(s=>G(this,Dt,Sn)[s].view.getSize()[i]))}))},Yo=new WeakSet,Pd=function(n){const r=se(this,br,$o).call(this,n),i=[];i.push(Ao);for(const[o,a]of r.entries())o>0&&i.push({px:G(this,li),grow:0}),(o==0||this.wrappingFacet)&&i.push(Ao),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(Ao);return i},_o=new WeakSet,Fd=function(n){var a,s;let r=0,i=0;const o=se(this,br,$o).call(this,n);for(const[c,u]of o.entries())c>0&&(i+=G(this,li)),(c==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=(a=u.view.px)!=null?a:0,r+=(s=u.view.grow)!=null?s:0,i+=u.axisAfter,(c==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},Wo=new WeakSet,zd=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},sc=new WeakSet,H2=function(n,r,i){for(const[o,a]of Object.entries(I8(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),c=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),u={x:c.x-s.x,y:c.y-s.y};for(const f of a)f.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?u.x:-u.y)}this.context.animator.requestRender()};function T8(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function I8(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 k8(t){let e=!0;return t.visit(n=>{n instanceof be&&e&&(e=n.mark.properties.clip)}),e}class Xr extends i1{constructor(e,n,r,i){super(e,n,r,i,Wl(e)?e.columns:_l(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=Wl(e)?e.concat:_l(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class N8{constructor(){this.types=[];const e=n=>(r,i,o,a)=>{var s;return new n(r,i,o,(s=r.name)!=null?s:a)};this.addViewType(L8,e(Yg)),this.addViewType(Yl,e(Pt)),this.addViewType(Vl,e(be)),this.addViewType(_l,e(Xr)),this.addViewType(B8,e(Xr)),this.addViewType(Wl,e(Xr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(a=>a.specGuard(e));if(o)return o.factory(e,n,r,i!=null?i:"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function Vl(t){return"mark"in t&&(ne(t.mark)||ze(t.mark))}function Yl(t){return"layer"in t&&ze(t.layer)}function o1(t){return t&&(Vl(t)||Yl(t))&&"aggregateSamples"in t}function L8(t){return"import"in t}function _l(t){return"vconcat"in t&&We(t.vconcat)}function B8(t){return"hconcat"in t&&We(t.hconcat)}function Wl(t){return"concat"in t&&We(t.concat)}const O8={point:iM,rect:JD,rule:sM,link:fM,text:yM};class be extends rr{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=O8[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){!this.isVisible()||(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){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!Ke(o))continue;let a=Pr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!io(a))continue;let s=this;for(;s.parent instanceof rr&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(a,e))&&s.getConfiguredOrDefaultResolution(a,e)!="excluded";)s=s.parent;s.resolutions[e][a]||(s.resolutions[e][a]=e=="scale"?new u8(a):new h8(a)),io(i)?s.resolutions[e][a].pushUnitView(this,i):e=="scale"&&s.resolutions[e][a].pushUnitView(this,i)}}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(oo(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Ke(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const a=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return Hg((o=n.type)!=null?o:"nominal",a.fromComplexInterval(r))}}extractDataDomain(e){var s;const r=(s=this._validateDomainQuery(e).type)!=null?s:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=Hg(r),l.constant)u.extend(l({}));else{const d=this.getCollector();d!=null&&d.completed&&d.visitData(h=>u.extend(l(h)))}}return u};let o=i(e);const a=qu[e];if(a){const c=i(a);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return ro.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(o1(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&je(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding={...(n=r.encoding)!=null?n:{},sample:null};const o=this.context.createView(r,this,"summaryView");o.getFacetFields=a=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*Xl(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Xl(r,[...e,n]))yield i;else yield[[...e,n],r]}class Zr extends ue{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new In([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){nM(e)&&(this._data=[],this.facetBatches.set(qe(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Gd(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(c=>q(c)),s=gi(this._data,...a);this.facetBatches.clear();for(const[c,u]of Xl(s))this.facetBatches.set(c,u)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const c={type:"facet",facetId:a};for(const u of this.children)u.beginBatch(c)}for(const c of s)this._propagate(c)}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;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class wo{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){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<i;){let a=(o<<1)+1;const s=a+1;let c=this.ids[a],u=this.values[a];const f=this.values[s];if(s<this.length&&f<u&&(a=s,c=this.ids[s],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,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 P8 extends ue{get behavior(){return Ot}constructor(e){super(),this.params=e,this.startAccessor=q(e.start),this.endAccessor=q(e.end),this.chromAccessor=e.chrom?q(e.chrom):n=>{},this.weightAccessor=e.weight?q(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 wo}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 c,u,f,l=0,d;const h=this.ends;h.clear();const p=(g,y,A)=>{if(g==y)return;let x=!1;c&&(c[e]===A?(c[n]=y,x=!0):c[e]!=0&&this._propagate(c)),x||(c=this.createSegment(g,y,A,f))},m=()=>{let g;for(;(g=h.peekValue())!==void 0;)p(d,g,l),d=g,l-=h.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=g=>{const y=i(g);let A;for(;(A=h.peekValue())!==void 0&&A<y;)p(d,A,l),d=A,l-=h.pop();if(r){let w=a(g);w!==u&&(m(),f=w,u=f)}d!==void 0&&p(d,y,l),d=y;const x=s(g);l+=x,h.push(x,o(g))},this.complete=()=>{m(),super.complete()}}}function F8(t,e,n=0,r=t.length){const i=new wo,o=r-n;let a;for(a=0;a<e&&a<o;a++)i.push(a,t[n+a]);for(;a<o;a++){const u=t[n+a];u>=i.peekValue()&&(i.push(a,u),i.pop())}const s=[];let c;for(;(c=i.pop())!==void 0;)s.push(n+c);return s.reverse()}class z8{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 R8 extends ue{constructor(e,n){var i,o;if(super(),this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=q(this.params.pos),this.posBisector=ca(this.posAccessor),this.scoreAccessor=q(this.params.score),this.widthAccessor=q(this.params.width),this.laneAccessor=this.params.lane?q(this.params.lane):a=>0,this.padding=(o=this.params.padding)!=null?o: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",a=>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 z8(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=F8(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const c=this._data[s],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class j8 extends ue{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Wu(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const U8="0".charCodeAt(0);function*H8(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-U8}yield r}class G8 extends ue{get behavior(){return Ot}constructor(e){var a,s;super();const n=q((a=e.exons)!=null?a:"exons"),r=q((s=e.start)!=null?s:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const d=n(c);for(const h of H8(d)){if(l)f=u+h;else{u=f+h;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class Q8 extends ue{get behavior(){return Ot}constructor(e){super();const n=qe(e.field).map(o=>q(o)),r=qe(e.separator),i=qe(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(c=>!c(o)))return;const a=n.map((c,u)=>c(o).split(r[u]));V8(a,o);const s=a[0].length;for(let c=0;c<s;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=a[f][c];this._propagate(u)}}}}function V8(t,e){const n=t.map(r=>r.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 Y8 extends ue{get behavior(){return hn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Wu(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class a1 extends ue{get behavior(){return hn}constructor(e,n){var p;super();const r=(p=e.channel)!=null?p:"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=q(e.chrom),a=qe(e.pos).map(m=>q(m)),s=qe(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=qe(e.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",s.map((m,g)=>`datum[${JSON.stringify(m)}] = chromOffset + +posAccessors[${g}](datum) - ${u[g]};`).join(`
|
1347
|
-
`));let l,d=0;const h=m=>{if(m!==l){if(d=i.cumulativeChromPositions.get(m),d===void 0)throw new Error("Unknown chromosome/contig: "+m);l=m}return d};this.handle=m=>{f(m,h(o(m)),a),this._propagate(m)}}}const s1={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 _8 extends ue{get behavior(){return hn}constructor(e){super();const n=Nl(s1),r=q(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 W8=65536;class X8 extends ue{get behavior(){return hn}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=le(e.spacing)?e.spacing:1,i=q(e.start),o=q(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(W8),s=q(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&a.fill(-1/0),u=l;const d=c.indexOf(s(f));let h=-1;if(d>=0&&a[d]<l)h=d;else{const p=i(f);for(h=0;h<a.length&&!(a[h]<p);h++);if(h>=a.length)throw new Error("Out of lanes!")}a[h]=o(f)+r,f[n]=h,this._propagate(f)}}else{const a=new wo,s=new wo;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;a.length&&(a.peekValue()<=l||l<c);){const h=a.pop();s.push(h,h)}c=l;let d=s.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),a.push(d,o(f)+r)}}}}class Z8 extends ue{get behavior(){return Ot}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>q(i)),r=e.as?e.as:n.map(ce);this.handle=i=>{const o={};for(let a=0;a<n.length;a++)o[r[a]]=n[a](i);this._propagate(o)}}}class q8 extends ue{get behavior(){return hn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=q(e.field);this.handle=o=>{const a=i(o);if(ne(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 c=0;c<r.length;c++)o[r[c]]=s[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${a}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof a}, field content: "${a}".`);this._propagate(o)}}}class K8 extends ue{get behavior(){return Ot}constructor(e){super();const n=qe(e.columnRegex).map(d=>new RegExp(d)),r=qe(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,c;const u=d=>{var g;const h=Object.keys(d),p=new Map;for(const[y,A]of n.entries())for(const x of h){const w=(g=A.exec(x))==null?void 0:g[1];if(w!==void 0){let b=p.get(w);b||(b=[],p.set(w,b)),b[y]=x}}a=[...p.entries()],s=h.filter(y=>!n.some(A=>A.test(y))&&!(i&&i.test(y)));const m=[...s.map(y=>JSON.stringify(y)+": datum["+JSON.stringify(y)+"]"),JSON.stringify(o)+": sampleId",...r.map(y=>JSON.stringify(y)+": null")];c=new Function("datum","sampleId",`return {
|
1346
|
+
*/const FM="locus",zM="index";var RM=5;function jM(t){const e=t.type;return!t.bins&&(e===Ir||e===ji||e===Ui)}function Bg(t){return Re(t)&&![pt,zM,FM].includes(t)}function Og(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var UM=sa(["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 Pg(t,e,n){n=Og(n);for(const r in t)if(!UM[r]){if(r==="padding"&&Bg(e.type))continue;ke(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}XM(e,t,WM(e,t,VM(e,t,n)))}function HM(t,e){const n=GM(t),r=X(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return Pg(t,i,e),i}function GM(t){var e=t.type,n="",r;return e===pt?pt+"-"+Ir:(QM(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?pt+"-":r===3?kr+"-":""),(n+e||Ir).toLowerCase())}function QM(t){const e=t.type;return Re(e)&&e!==$0&&e!==ep&&(t.scheme||t.range&&t.range.length&&t.range.every(ne))}function VM(t,e,n){if(!t.domain)return 0;n=Og(n);var r=YM(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&jM(t),s,c;return i?(Bg(o)&&e.padding&&i[0]!==nt(i)&&(i=_M(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&&(c=e.domainMid,(c<i[0]||c>i[s])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(s,0,c))),t.domain(Fg(o,i,n)),o===Lu&&t.unknown(e.domainImplicit?$c:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Ng(t,e.nice)||null),i.length):0}function YM(t,e,n){return e?(t.domain(Fg(t.type,e,n)),e.length):-1}function _M(t,e,n,r,i,o){var a=Math.abs(nt(n)-n[0]),s=a/(a-2*r),c=t===rn?Hd(e,null,s):t===Ui?yc(e,null,s,.5):t===ji?yc(e,null,s,i||1):t===Pa?tb(e,null,s,o||1):gc(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Fg(t,e,n){if(sp(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: "+aa(e))}return e}function WM(t,e,n){let r=e.bins;if(r&&!We(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?nt(i):r.stop,s=r.step;s||ae("Scale bins parameter missing step property."),r=Xt(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Ou&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function XM(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=ZM(r,e,n);else if(e.scheme&&(o=qM(r,e,n),ke(o))){if(t.interpolator)return t.interpolator(o);ae(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&za(r))return t.interpolator(Ra(Pl(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(cp(e.interpolate,e.interpolateGamma)):ke(t.round)?t.round(i):ke(t.rangeRound)&&t.interpolate(i?zi:tn),o&&t.range(Pl(o,e.reverse))}function ZM(t,e,n){t!==rp&&t!==Bu&&ae("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Bu?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*ku(n,i,r)]}function qM(t,e,n){var r=e.schemeExtent,i,o;return We(e.scheme)?o=Ra(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Fu(i),o||ae(`Unrecognized scheme name: ${e.scheme}`)),n=t===np?n+1:t===Ou?n-1:t===Nu||t===tp?+e.schemeCount||RM:n,za(t)?zg(o,r,e.reverse):ke(o)?n4(zg(o,r),n):t===Lu?o:o.slice(0,n)}function zg(t,e,n){return ke(t)&&(e||n)?t4(t,Pl(e||[0,1],n)):t}function Pl(t,e){return e?t.slice().reverse():t}const Fl=de(",d");function KM(t){return t.chrom+":"+Fl(Math.floor(t.pos+1))}function JM(t,e){return t.chrom+":"+Fl(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+Fl(Math.ceil(e.pos))}const $M="https://genomespy.app/data/genomes/";class e8{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=$M;try{this.setChromSizes(t8(await Bi({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(o);const a=o.name.replace(/^chr/i,"");for(const s of["chr"+a,"CHR"+a,"Chr"+a,o.number,""+o.number,a,o.name])this.cumulativeChromPositions.set(s,n),this.chromosomesByName.set(s,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=Tn(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 JM(...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,o,a;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(a=r.pos)!=null?a:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.size)]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(s=>s===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 t8(t){return Ab(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Rg(t){return ze(t)&&"chrom"in t}function n8(t){return t.every(Rg)}class xo extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof xo&&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 zl extends xo{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class jg extends xo{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 Ug extends jg{constructor(){super(),this.type="nominal"}}class r8 extends xo{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const Hg={quantitative:zl,index:zl,locus:zl,nominal:Ug,ordinal:jg};function Gg(t,e){if(t=="quantitative"&&i8(e)){const n=new r8(e);return n.type=t,n}else if(Hg[t]){const n=new Hg[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function i8(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Qg(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function o8(t){return--t*t*t+1}function a8(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function s8(t){return 1-a8(t)}const Vg="quantitative",Rl="ordinal",jl="nominal",Yg="locus",c8="index";class u8{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var a;const r=Xu(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&&!oo(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()}_getMergedScaleProps(){return _r(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Xu(n.view,n.channel).scale).filter(n=>n!==void 0);return bs(e,"scale",["domain"])})}getScaleProps(){return _r(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=l8(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:on(n.type)&&(n.domain=new Ug),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&on(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),f8(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Yg?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>oo(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>oo(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){mg(this,"scaleProps");const e=this.getScaleProps();Pg(e,this._scale),Re(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=HM(e);return this._scale=n,Qx(n)&&n.genome(this.getGenome()),Re(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&Ip(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Vp(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())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=J2(a,r||0),a=gc(a,s,e);break;case"log":a=$2(a,r||0),a=Hd(a,s,e);break;case"pow":case"sqrt":{const c=i;a=eb(a,r||0,c.exponent()),a=yc(a,s,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(a=nb(a,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>a[c]!=o[c])?(i.domain(a),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var s;if(ia(n)&&(n=n?700:0),!this.isZoomable())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 c=a[1]-a[0],u=a[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,d=I0([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:Qg,onUpdate:h=>{const[p,,m]=d(h);o.domain([p-m/2,p+m/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?oa(this._zoomExtent)/oa(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(d8(n)&&We(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),io(n)?r.nice=!this.isExplicitDomain():qn(n)?r.scheme=e==jl?"tableau10":e==Rl?"blues":"viridis":_a(n)?r.range=_p(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}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 Rg(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&n8(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function l8(t,e){if(e==c8||e==Yg){if(Vp(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=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[jl,Rl,Vg].indexOf(e)]:e==Vg?"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 f8(t,e){io(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Re(t.type)&&(t.clamp=!0)}function d8(t){return ze(t)}function Ul(...t){for(const e of t)if(e!==void 0)return e}class h8{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=je(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 _r(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:bs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=Xu(o.view,o.channel);if(!at(a))return{member:o,explicitTitle:Ul((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:Ul(Zn(a)?a.field:void 0,Zu(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(oo(o.member.channel)&&!o.explicitTitle){const s=Pr(o.member.channel);return((a=n.find(c=>c.member.view==o.member.view&&c.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>Ul(o.explicitTitle,o.implicitTitle)).filter(ne));return i.size?[...i].join(", "):null}}class _g extends Ig{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Pt extends rr{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,a)=>{if(Yl(o)||Vl(o))return n.createView(o,this,"layer"+a);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(!!this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class Wg{constructor(e,n){this.n=e,this.maxCols=n!=null?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<r;i++){const o=[];e.push(o);for(let a=0;a<n;a++){const s=i*n+a;s<this.n&&o.push(s)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let a=0;a<r;a++){const s=a*n+i;s<this.n&&o.push(s)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function Ft(t){return()=>t}const _t=class{static create(e,n,r,i){return new _t(Ft(e),Ft(n),Ft(r),Ft(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"?Ft(i):typeof i=="function"?i:this._passThrough(r)};return new _t(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new _t(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 _t(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?this:new _t(()=>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))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new _t(Ft(this.x),Ft(this.y),Ft(this.width),Ft(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let pn=_t;hc(pn,"ZERO",_t.create(0,0,0,0));function Xg(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class ir extends ue{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Zg(t){var n,r;const e={...t.format};if((n=e.type)!=null||(e.type=y8(t)&&p8(t.url)),(r=e.parse)!=null||(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function p8(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const As=t=>typeof t!="object"?m8:g8,m8=t=>({data:t}),g8=t=>t;function y8(t){return"url"in t}function v8(t){return"dynamicCallbackSource"in t}class qg extends ir{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=As(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const Kg="chromosome_ticks_and_labels",Jg={x:"width",y:"height"};function Hl(t){return t=="x"?"y":"x"}const Gl={x:["bottom","top"],y:["left","right"]},$g=Object.fromEntries(Object.entries(Gl).map(([t,e])=>e.map(n=>[n,t])).flat(1));function or(t){return $g[t]}class e1 extends Pt{constructor(e,n,r,i){const o=n=="locus",a={...o?x8:t1,...A8(n,e),...e};if(super(o?w8(a):n1(a),r,i,`axis_${e.orient}`),this.axisProps=a,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new qg(()=>this.ticks),o){const s=or(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName(Kg).getDynamicDataSource=()=>new qg(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return $g[this.axisProps.orient]=="x"?new tr(n,e):new tr(e,n)}getPerpendicularSize(){return Ql(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=or(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(Ip(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=b8(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[Jg[or(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Ql(t){const e=or(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}function b8(t,e,n,r=[]){const i=s=>25+60*Xg(100,700,s);let o=le(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Ng(e,o,t.tickMinStep);const a=t.values?Lg(e,t.values,o):IM(e,o);if(l4(a,r,s=>s,s=>s.value))return r;{const s=NM(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const t1={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 A8(t,e){var s;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=(s=e.labelAngle)!=null?s:(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 n1(t){const e={...t,extent:Ql(t)},n=or(e.orient),r=Hl(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),s=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const d={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&d.layer.push(c()),e.labels&&d.layer.push(s()),d},l={[Jg[Hl(or(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(a()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const x8={...t1,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 w8(t){const e={...t,extent:Ql(t)},n=or(e.orient),r=Hl(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let s;switch(e.orient){case"bottom":case"top":s={};break;case"left":s={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":s={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:s={}}const c=n1({...t,...s});if(t.chromTicks||t.chromLabels){const u={name:Kg,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(a());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(d=>d.name=="labels").forEach(d=>{f=d.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const r1={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"},C8={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},S8={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},E8={start:0,middle:.5,end:1},D8={start:"left",middle:"center",end:"right"};function M8(t){var u,f,l;if(!t)return;const e=ne(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(u={"track-title":C8,overlay:S8}[e.style])!=null?u:{},r={...r1,...n,...e};let i={},o={x:0,y:0};const a=E8[(f=r.anchor)!=null?f:"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={...r1,...i,...n,...e},c={xOffset:0,yOffset:0};switch(r.orient){case"top":c.yOffset=-s.offset;break;case"right":c.xOffset=s.offset;break;case"bottom":c.yOffset=s.offset;break;case"left":c.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...c,text:s.text,align:(l=s.align)!=null?l:D8[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 i1(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 c=r.mark.encoders;c.x&&!c.x2&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&(s=(1-+c.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:a,y:s,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:a,y:s,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const a=c=>{n({x:o.clientX,y:o.clientY,xDelta:c.clientX-o.clientX,yDelta:c.clientY-o.clientY,zDelta:0}),o=c},s=c=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class o1 extends rr{constructor(n,r,i,o,a){var s;super(n,r,i,o);te(this,Vo);te(this,Dt);te(this,oc);te(this,ac);te(this,br);te(this,Yo);te(this,_o);te(this,Wo);te(this,sc);te(this,ui,1/0);te(this,li,10);te(this,et,[]);te(this,fi,0);this.spec=n,tt(this,li,(s=n.spacing)!=null?s:10),tt(this,ui,a),tt(this,et,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),G(this,et).push(se(this,Vo,Od).call(this,n)),j2(this,fi)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=G(this,et).findIndex(o=>o.view==n);if(i>=0)G(this,et)[i]=se(this,Vo,Od).call(this,r);else throw new Error("Not my child view!")}get children(){return G(this,et).map(n=>n.view)}get childCount(){return G(this,et).length}onScalesResolved(){super.onScalesResolved(),se(this,ac,H2).call(this)}*[Symbol.iterator](){for(const n of G(this,et)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=se(this,br,$o).call(this,"column"),r=se(this,br,$o).call(this,"row");return!n.length||!r.length?Je.zero():new Je(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return new tr(se(this,_o,Fd).call(this,"column"),se(this,_o,Fd).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding())}render(n,r,i={}){var u;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},a=bo(se(this,Yo,Pd).call(this,"column"),r.width,o),s=bo(se(this,Yo,Pd).call(this,"row"),r.height,o),c=new Wg(G(this,Dt,Sn).length,(u=G(this,ui))!=null?u:1/0);for(const[f,l]of G(this,Dt,Sn).entries()){const{view:d,axes:h,background:p,title:m}=l,[g,y]=c.getCellCoords(f),A=a[se(this,Wo,zd).call(this,"column",g)],x=s[se(this,Wo,zd).call(this,"row",y)],w=d.getSize(),b=d.getPadding().subtract(d.getOverhang()),v=A.location+b.left,C=x.location+b.top,S=(w.width.grow?A.size:w.width.px)-b.width,I=(w.height.grow?x.size:w.height.px)-b.height,N=new pn(()=>r.x+v,()=>r.y+C,()=>S,()=>I);l.coords=N,p==null||p.render(n,N,i);const T=k8(d);T&&d.render(n,N,i);for(const[O,Q]of Object.entries(h)){const U=Q.axisProps;let we;const Ie=Q.getPerpendicularSize();O=="bottom"?we=N.translate(0,N.height+U.offset).modify({height:Ie}):O=="top"?we=N.translate(0,-Ie-U.offset).modify({height:Ie}):O=="left"?we=N.translate(-Ie-U.offset,0).modify({width:Ie}):O=="right"&&(we=N.translate(N.width+U.offset,0).modify({width:Ie})),Q.render(n,we)}T||d.render(n,N,i),m==null||m.render(n,N,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=G(this,Dt,Sn).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof be||i instanceof Pt)&&i1(n,r.coords,o=>se(this,sc,G2).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}ui=new WeakMap,li=new WeakMap,et=new WeakMap,fi=new WeakMap,Vo=new WeakSet,Od=function(n){var i;const r={view:n,background:void 0,axes:{},coords:pn.ZERO};if(n instanceof be||n instanceof Pt){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const s=new be(T8(o),this.context,n,"background"+G(this,fi));s.blockEncodingInheritance=!0,r.background=s}const a=M8(n.spec.title);if(a){const s=new be(a,this.context,n,"title"+G(this,fi));s.blockEncodingInheritance=!0,r.title=s}}return r},Dt=new WeakSet,Sn=function(){return G(this,et).filter(n=>n.view.isVisible())},oc=new WeakSet,U2=function(){var n;return new Wg(G(this,Dt,Sn).length,(n=G(this,ui))!=null?n:1/0)},ac=new WeakSet,H2=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of G(this,et)){const{view:r,axes:i}=n,o=(a,s,c)=>{var f;const u=a.getAxisProps();if(u!==null){if(!u.orient){for(const l of Gl[s])if(!i[l]){u.orient=l;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=u.title)!=null||(u.title=a.getTitle()),!Gl[s].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${s}"!`);if(i[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);i[u.orient]=new e1(u,a.scaleResolution.type,this.context,c)}};if(r instanceof be||r instanceof Pt)for(const a of["x","y"]){const s=r.resolutions.axis[a];!s||o(s,a,r)}if(r instanceof Pt){for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&o(c,s,a)}for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&o(c,s,a)}}}},br=new WeakSet,$o=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(a,s)=>a.map(c=>{const u=G(this,Dt,Sn)[c].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const f=G(this,Dt,Sn)[c].view.getOverhang();return n=="column"?s?f.right:f.left:s?f.bottom:f.top}).reduce((c,u)=>Math.max(c,u),0);return G(this,oc,U2)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:bM(a.map(s=>G(this,Dt,Sn)[s].view.getSize()[i]))}))},Yo=new WeakSet,Pd=function(n){const r=se(this,br,$o).call(this,n),i=[];i.push(Ao);for(const[o,a]of r.entries())o>0&&i.push({px:G(this,li),grow:0}),(o==0||this.wrappingFacet)&&i.push(Ao),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(Ao);return i},_o=new WeakSet,Fd=function(n){var s,c,u;let r=0,i=0;const o=(s=n=="row"&&this.spec.height)!=null?s:n=="column"&&this.spec.width;if(o||o===0)return Dg(o);const a=se(this,br,$o).call(this,n);for(const[f,l]of a.entries())f>0&&(i+=G(this,li)),(f==0||this.wrappingFacet)&&(i+=0),i+=l.axisBefore,i+=(c=l.view.px)!=null?c:0,r+=(u=l.view.grow)!=null?u:0,i+=l.axisAfter,(f==a.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},Wo=new WeakSet,zd=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},sc=new WeakSet,G2=function(n,r,i){for(const[o,a]of Object.entries(I8(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),c=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),u={x:c.x-s.x,y:c.y-s.y};for(const f of a)f.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?u.x:-u.y)}this.context.animator.requestRender()};function T8(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function I8(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 k8(t){let e=!0;return t.visit(n=>{n instanceof be&&e&&(e=n.mark.properties.clip)}),e}class Xr extends o1{constructor(e,n,r,i){super(e,n,r,i,Wl(e)?e.columns:_l(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=Wl(e)?e.concat:_l(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class N8{constructor(){this.types=[];const e=n=>(r,i,o,a)=>{var s;return new n(r,i,o,(s=r.name)!=null?s:a)};this.addViewType(L8,e(_g)),this.addViewType(Yl,e(Pt)),this.addViewType(Vl,e(be)),this.addViewType(_l,e(Xr)),this.addViewType(B8,e(Xr)),this.addViewType(Wl,e(Xr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(a=>a.specGuard(e));if(o)return o.factory(e,n,r,i!=null?i:"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function Vl(t){return"mark"in t&&(ne(t.mark)||ze(t.mark))}function Yl(t){return"layer"in t&&ze(t.layer)}function a1(t){return t&&(Vl(t)||Yl(t))&&"aggregateSamples"in t}function L8(t){return"import"in t}function _l(t){return"vconcat"in t&&We(t.vconcat)}function B8(t){return"hconcat"in t&&We(t.hconcat)}function Wl(t){return"concat"in t&&We(t.concat)}const O8={point:oM,rect:$D,rule:cM,link:dM,text:vM};class be extends rr{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=O8[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){!this.isVisible()||(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){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!Ke(o))continue;let a=Pr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!io(a))continue;let s=this;for(;s.parent instanceof rr&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(a,e))&&s.getConfiguredOrDefaultResolution(a,e)!="excluded";)s=s.parent;s.resolutions[e][a]||(s.resolutions[e][a]=e=="scale"?new u8(a):new h8(a)),io(i)?s.resolutions[e][a].pushUnitView(this,i):e=="scale"&&s.resolutions[e][a].pushUnitView(this,i)}}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(oo(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Ke(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const a=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return Gg((o=n.type)!=null?o:"nominal",a.fromComplexInterval(r))}}extractDataDomain(e){var s;const r=(s=this._validateDomainQuery(e).type)!=null?s:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=Gg(r),l.constant)u.extend(l({}));else{const d=this.getCollector();d!=null&&d.completed&&d.visitData(h=>u.extend(l(h)))}}return u};let o=i(e);const a=qu[e];if(a){const c=i(a);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return ro.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(a1(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&je(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding={...(n=r.encoding)!=null?n:{},sample:null};const o=this.context.createView(r,this,"summaryView");o.getFacetFields=a=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*Xl(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Xl(r,[...e,n]))yield i;else yield[[...e,n],r]}class Zr extends ue{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new In([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){rM(e)&&(this._data=[],this.facetBatches.set(qe(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Gd(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(c=>q(c)),s=gi(this._data,...a);this.facetBatches.clear();for(const[c,u]of Xl(s))this.facetBatches.set(c,u)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const c={type:"facet",facetId:a};for(const u of this.children)u.beginBatch(c)}for(const c of s)this._propagate(c)}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;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class wo{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){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<i;){let a=(o<<1)+1;const s=a+1;let c=this.ids[a],u=this.values[a];const f=this.values[s];if(s<this.length&&f<u&&(a=s,c=this.ids[s],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,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 P8 extends ue{get behavior(){return Ot}constructor(e){super(),this.params=e,this.startAccessor=q(e.start),this.endAccessor=q(e.end),this.chromAccessor=e.chrom?q(e.chrom):n=>{},this.weightAccessor=e.weight?q(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 wo}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 c,u,f,l=0,d;const h=this.ends;h.clear();const p=(g,y,A)=>{if(g==y)return;let x=!1;c&&(c[e]===A?(c[n]=y,x=!0):c[e]!=0&&this._propagate(c)),x||(c=this.createSegment(g,y,A,f))},m=()=>{let g;for(;(g=h.peekValue())!==void 0;)p(d,g,l),d=g,l-=h.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=g=>{const y=i(g);let A;for(;(A=h.peekValue())!==void 0&&A<y;)p(d,A,l),d=A,l-=h.pop();if(r){let w=a(g);w!==u&&(m(),f=w,u=f)}d!==void 0&&p(d,y,l),d=y;const x=s(g);l+=x,h.push(x,o(g))},this.complete=()=>{m(),super.complete()}}}function F8(t,e,n=0,r=t.length){const i=new wo,o=r-n;let a;for(a=0;a<e&&a<o;a++)i.push(a,t[n+a]);for(;a<o;a++){const u=t[n+a];u>=i.peekValue()&&(i.push(a,u),i.pop())}const s=[];let c;for(;(c=i.pop())!==void 0;)s.push(n+c);return s.reverse()}class z8{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 R8 extends ue{constructor(e,n){var i,o;if(super(),this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=q(this.params.pos),this.posBisector=ca(this.posAccessor),this.scoreAccessor=q(this.params.score),this.widthAccessor=q(this.params.width),this.laneAccessor=this.params.lane?q(this.params.lane):a=>0,this.padding=(o=this.params.padding)!=null?o: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",a=>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 z8(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=F8(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const c=this._data[s],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class j8 extends ue{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Wu(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const U8="0".charCodeAt(0);function*H8(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-U8}yield r}class G8 extends ue{get behavior(){return Ot}constructor(e){var a,s;super();const n=q((a=e.exons)!=null?a:"exons"),r=q((s=e.start)!=null?s:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const d=n(c);for(const h of H8(d)){if(l)f=u+h;else{u=f+h;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class Q8 extends ue{get behavior(){return Ot}constructor(e){super();const n=qe(e.field).map(o=>q(o)),r=qe(e.separator),i=qe(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(c=>!c(o)))return;const a=n.map((c,u)=>c(o).split(r[u]));V8(a,o);const s=a[0].length;for(let c=0;c<s;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=a[f][c];this._propagate(u)}}}}function V8(t,e){const n=t.map(r=>r.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 Y8 extends ue{get behavior(){return hn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Wu(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class s1 extends ue{get behavior(){return hn}constructor(e,n){var p;super();const r=(p=e.channel)!=null?p:"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=q(e.chrom),a=qe(e.pos).map(m=>q(m)),s=qe(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=qe(e.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",s.map((m,g)=>`datum[${JSON.stringify(m)}] = chromOffset + +posAccessors[${g}](datum) - ${u[g]};`).join(`
|
1347
|
+
`));let l,d=0;const h=m=>{if(m!==l){if(d=i.cumulativeChromPositions.get(m),d===void 0)throw new Error("Unknown chromosome/contig: "+m);l=m}return d};this.handle=m=>{f(m,h(o(m)),a),this._propagate(m)}}}const c1={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 _8 extends ue{get behavior(){return hn}constructor(e){super();const n=Nl(c1),r=q(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 W8=65536;class X8 extends ue{get behavior(){return hn}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=le(e.spacing)?e.spacing:1,i=q(e.start),o=q(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(W8),s=q(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&a.fill(-1/0),u=l;const d=c.indexOf(s(f));let h=-1;if(d>=0&&a[d]<l)h=d;else{const p=i(f);for(h=0;h<a.length&&!(a[h]<p);h++);if(h>=a.length)throw new Error("Out of lanes!")}a[h]=o(f)+r,f[n]=h,this._propagate(f)}}else{const a=new wo,s=new wo;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;a.length&&(a.peekValue()<=l||l<c);){const h=a.pop();s.push(h,h)}c=l;let d=s.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),a.push(d,o(f)+r)}}}}class Z8 extends ue{get behavior(){return Ot}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>q(i)),r=e.as?e.as:n.map(ce);this.handle=i=>{const o={};for(let a=0;a<n.length;a++)o[r[a]]=n[a](i);this._propagate(o)}}}class q8 extends ue{get behavior(){return hn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=q(e.field);this.handle=o=>{const a=i(o);if(ne(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 c=0;c<r.length;c++)o[r[c]]=s[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${a}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof a}, field content: "${a}".`);this._propagate(o)}}}class K8 extends ue{get behavior(){return Ot}constructor(e){super();const n=qe(e.columnRegex).map(d=>new RegExp(d)),r=qe(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,c;const u=d=>{var g;const h=Object.keys(d),p=new Map;for(const[y,A]of n.entries())for(const x of h){const w=(g=A.exec(x))==null?void 0:g[1];if(w!==void 0){let b=p.get(w);b||(b=[],p.set(w,b)),b[y]=x}}a=[...p.entries()],s=h.filter(y=>!n.some(A=>A.test(y))&&!(i&&i.test(y)));const m=[...s.map(y=>JSON.stringify(y)+": datum["+JSON.stringify(y)+"]"),JSON.stringify(o)+": sampleId",...r.map(y=>JSON.stringify(y)+": null")];c=new Function("datum","sampleId",`return {
|
1348
1348
|
`+m.join(`,
|
1349
1349
|
`)+`
|
1350
|
-
};`)},f=d=>{a||u(d);for(const[h,p]of a){const m=c(d,h);for(let g=0;g<p.length;g++)m[r[g]]=d[p[g]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{Cg(d)&&(this.handle=l),super.beginBatch(d)}}}class J8 extends ue{get behavior(){return hn}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?Gd(e.sort.field,e.sort.order):void 0,i=e.field?q(e.field):()=>1,o=e.groupby.map(l=>q(l)),a=
|
1351
|
-
`)+" };");return n.properties=e,n}class
|
1352
|
-
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)}`)}async function b1(t){const e=[];t.visit(n=>{if(n instanceof Yg)return e.push(n),vs});for(const n of e){const r=n.context,i=await x5(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await b1(o)}}function A1(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Pb(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const w5=t=>!/^(layer|concat)\d+$/.test(t);class x1{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class w1 extends x1{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=a=>()=>{e&&a()},i=a=>()=>{e&&n&&a()},o=gi(this.buffer,a=>a.mark);for(const[a,s]of o.entries()){if(!a.isReady())continue;this.batch.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.batch.push(...a.prepareRender(this.globalOptions).map(u=>r(u)));let c;for(const u of s){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=a.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class C5 extends x1{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 S5{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 E5{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 D5=t=>new Promise(e=>setTimeout(e,t));function xs(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),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(m=>m),l=m=>(m-a)/(s-a),d=m=>m*(u-c)+c,h=m=>Math.max(0,Math.min(1,m)),p=m=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(d(f(h(l(m))))),m<s?e(p):(t.onUpdate(d(f(1))),i()))};e(p)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):D5(t.delay).then(r):r()}class M5{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=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 xs({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function C1(){const t=e=>e;return t.invert=e=>e,t.copy=C1,t.invertRange=()=>{},t}class T5{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new e8(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.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 I5="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAEFzklEQVR4AezcRXjr2BnG8b8SQ+gJOiA5d1NmZuZVuU133Zf3++6XxW27Ku7LzIzDrMgByxQGaxwfWVFGMly088z7e76Zi5bu6nvP+Y4sKwgC2n4KP4QfgEcvAVdZGHfuM++Fj8HHwUZERO6aMTocsMGhl4C7bbrzr7C5N0REFAC30nct7qwhdH8REQXAfKf7FrjTLPpJ7EPuMhERycB36XD+hX0/DuzSlsnw3OfyilcwAA/vn/yzQQMoUHg9r59hhn7Oz/njH9ncJAiAXNj9P2qTxdhARETufgDYNs4fsH/Cv2jL53nzm1lcZH2dngKCP/Gnn/LTEiXg+Tw/Q+btvJ1+/vlPfvYz/v1vEwA26w4fs8lm4R4GgIiIAmB5GdvGnmbuh9Rq8MIXcuMGpVJ6AFhEXNwneOI//OfnSz8fL49/jI+9lJcecjjJJD15Ho8+yo9/TKUCb7J5vY1tcw+JiOgMILYJcDpNuFQKq5+neMrFbRXLnI+fu7im6KlSCS9fqXDBccLb31siIgqARBOu1SiV8DzKZbpr0nRxWxnQqs8tv51lol/2Xf63qlS6euOpKYZIREQ7ANOHTYdu1SDL/wMOlguFlxW+Hf8dujMX9ryrNx4KEREFgGXd9BQoWu97S0vLbU36T4EOD6NwGf78R0REAZBoxWaJ3qqDA9Kcx3p9YXW1sLLSCoBM5jIV+i7/gwCWl8Nbzs0xLCIiCgDbDiub7b8JMF3exT3kMOM4a3bLmuNczoX22ScpPluK33KIREQUALmc2QS0KjGqT3BxzWKf2VmKhl0sEhD0ngKZS5ZKOgAQERmVAEg05KhVBwFXnXJ62eWLRYoGrRofv8yGHsv/gwOYmwtvtryMiIgMLQCSxwCHh92mQNGg/4gjEwCTxRZMRdOhPfbSl/86/hURGbUAmJ4eaAoULf/N/OeibDsKgPhf0AOgIiLXIQASbTn+la3ICSfRSS+xru84YY2NpU+BqtXwYr4PU1PaAYiIjFoAxNpy9NKGajV5/HvMcTwApqYuf2X+govboJG+/I82GiIiMiIBsLAQdualpStfCIg/AJqc/9DWewqUfABUy38RkREKgPjpbKJtc8xxdAIc7/dXAyBlCnR8HIuSbFYHACIioxgA6e+EODqKr+tPOU0GQHwKtMmm2SvUqcdzpNmM3SCXQ0RERicAVlbCFj07C81m/CjYrP1T5z/pUyArnALFJ0k6/hURGdEASL4XyNQRR2b5n5z/9JsCRdfQA6AiIqMdAClTIM+Ljn/POEsGQHIK5BF+ZGurZpb/+/uxS09PIyIiIxgApiYnYX/fjIDcrc7x79xc6vyn27NArY/qBXAiItcjAMbGnrkJOLzo4rH3/6yvR8v/vlMgz3tKb4AQEbkWAZBo1Ftb3vb25s6mi3vOeXyRn2S+5GuqRMk9cLd2Wp9u7O5CoRBedH4eEREZzQCIdgCZDJTLZd/f8Xe2m9u95z/JKdB2dXunsuP7uzr+FRG5HgGQz8fadbPpV6t+zW9VvLv3DQDLotwol+vlet2/HvMfEREFQLxdW1Cp16v1amWx0jMArOitotHf8hu+v+c3Gj5zc+HllpcREZFRDoD4AzvVWq1Sq1zOf9bW6CkKgPLr/Uqj0njkA/HLiYjIsGQYwMxMuAlYW+Oz//8/X/4/L3lJcvlvQdBrChR896vf1QHAdSIi2gEkm/Yg85/kFOjC5KQOAERERkEGPjT4McC6w/rfYQ6KS93nPx9K3QS8ulVPgdMJE8tCRESGGgAbDGBhAcdhw4YlWIUiqcv/b8Gn2UgNgI0iWGB3MkBERIYdAJ9iMO8Je3e7iu1Klbjg9HS7+5syV3AsRERk2AGQZzB52/TudhVhjVSpF8ybT0X5kUNERIZrjMGtJpb/gyuaCiPk+hARUQAYzq0GwMzVEZCIiAybFQQBIiLyrN4BiIiIAqAK34T3wxp8CX7N0+zZAQYCQRzF4bfMAQroCKETRMfYvWRHqFt0kI4wkaaQDQQ7+33mDPPz9wBwAQAgAAAIAAALU3KeWwEu+dglp7yNATqEADT35Np+/zGNAHQOEIDWgFsyBQAbAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAH8iAAAIAAACAIAAACAAAAgAAAIAgAAAULLPD9v0CYCSKXOO6RYAJaPff40ASg75tnm+5QLACAyAAAAgAAAMtdasBAAuAADKkJcHO3eZ3Uh2wFH8GtRkZmb2kXrCWUNWHGbmxAwyW2RmtpXSyOrwfJ9X93f+ghW8K6xZSP3LRvgvf4bvw/fgl7wq8iUlSaqlYgn2P62SgWYqcjBXWSAkyQBUXMCv/ysDST73d5j7/P6csEiSAajYgcy/LzWX7Z3rZQ5WkCSFGICKJ/jrp/cBh4f7f/9xam4q9ffUe94jSQo2ABWH8BPIzM9n5uYyf9/KHGe+zbd76UWSFG4AKtLp1YWF/dLOjjiqp94AxIAkA/D8zNISi4vXCwtn1L/hTTTCJ0n+EWx1lZWVaIn9wgwz0aaYInCSZACKRdbXWVtjdXWSySmmppnuppvASZIB2NxkY4N0mkJhnPFok0wSPkkyAFtbpW1ujjASbYyxDjoInCQZgNNTdnfZ2WFvb4ihYYajIUkKPwCZTGn7+3XU9dM/wMAgg4RPkgxAPk8uRzbbQ08vvX30VVNN4CTJANzfc3BAoRCtm+7yCJ8kGYCjo9dBO+0ddHTSSfgkyQCcnXF6yslJE01ttEXzGnDxIMkAXFxwfh6tmeZoLbQgKRZkAK6uymugIVojjUiKBRmA29vSbm4+8KGOumhIkmIRgLu70u7v3/O+PCRJ4Qfg8fF1kCDhJaAlKTYBeH7m5aV0D7XU1lATDUlS+AEoFl9XQhVV0ZAkhR+AqqrSqquBIsUXXqIhSQo/ALW1pdXUAE88lYckKRYBSCR484aqqgceykOSFH4AIu/elXfL7Q030ZAkxSIAHz6UVld3xdU119E9kqRYBKC+noaGaJdcXnARDUlSLALQ1FRac/MZZ6ecnnCCJCkWAWhpobU12jXXxxxHO+ccSVL4AWhvL62jg0TigIPykCSFH4Dqarq6SuvuLlDIkcuSRZIUfgAiPT309tLXlyWbIRPNH4NKUjwC0NdHfz8DA0+Jqj32dtndYQdJUvgB+PCBwUGGhhgZ2WFnm+1oSJLCD0BkZITR0Wh58ptspknbgHiQZAD6+hgfZ2KC4eE06XXW11hDkhR+ACITE0xOMj29xdYqqyuspEkjSbEXgwAMDzMzU9rU1DLLUQCiEiBJCkItX2x2lu3tod3d5P5d63XrW94iKQ5kAJp6elKpVDKTSWbbkr9Nfo2vETxJMgDJ8j5+TGXzyVxyND/KFpKkkAPQD0lIlQPw7l3qs+8k8glylHaHJCnAANR/OvcrTzqAkQQfeQ3AHwiNJBmAmX8596NN8C8+g1xlewRCkgxAz3+98H/Hv6v7lwbk4ZEvNUlSVbFYRJLkH8FiQpL0D/buAqqtNd/7+DcUSQrBQ4TgGg6NNEyZqZ13pvJed3dZet3d71123WXZdR13OX7OSIVOE6BKC6USCMGC9oS2+z6bTUIoFkrP9Ib+P+u3Uk+C/X/7efZOycHEanzwy/Aq643CS/Cn8MPQBQWk6YU/htNg2jTrmDZJDnwV/Cn087TNwz/B14Ips9TBL8I5duwe/AUcA9Nq/o8TQshVQL3gTMaDIQF9azPKWl6IwdhywuxOIJlOstZ0MkIIkT0FkN4BLihhcO3ov8Im/DAGseVEeFK1cDBZAFksnowQQmRVAYxAL7iYck71Hy9Ln/4zbK7C6IBkHrBzFggkUyoFIIQQz+KVwL30O/v7nH19rnf1NTf3wTCbej9JHoi9SSzKGPRgcOI8ylEUE2g8JhxmYABNS9v8cQd4TwvLvp2thMPh4eHhRCJRWVnZ0dFRVVW11bMzzMOn2Lk6OISy7dOKRLhy5cHUVDw/P15XN+PzIYQQWVQAceJfevClvl41/Qf6XAV91dUPLRYyKQDF72fsc3pi00ZpBAlasfrwsYYJuHWLM2d4/XUePgRaqQpwOkAgkMmkPXPmzJtvvnn58uXFxcWampqxsbETJ05UVFRsUwBP0gF1y2H7Ahgf54031DObHh2dtlimOztZWqKri2whhJACGGDgLd46c+dMX99CzO2mtpaurkwLoLiYQIBYjLHPqhooX7TkkefE6cBhx06ahQVCIT3nzjE4VaaP/oMHCQQwm9nO1NSUGv2qA954443p6Wmv15ubm+t2uw8fPszjPsJ68+Rt3QGvwImlJZRaqCNDg4P09vLaa/H+/nh5eXxxEaeTjg727ycrCCGkAAoosGBZYCHW309dHfX1NDRQUUGGmpqW1wFjxGKTX/ximLADhxPnKU6RJhRayeAgvC9AYDk1NWRgZmZmYmLi7t27k5OTwMDAgN/vV02AYbvD9dIt1hYaXISX4FTsP15+qVqrLqGkkEIysbDAzAyjo3FNi09MxCMRxseZnpYCyBpCSAG00OLBM8jgzbmbsStXaGykuZnDh8lcIKAKwMilG5ecOI1FwAEOsOzmzdUCwOslEFhJZgoKCvbv319SUsIytftfVFRksVi2LoBtpr+G7hb0xLjwMhcufFlr76LLi7eRRjJhtVJeTk3N9NTUtM2maoDsIoSQAjBjbqf9Bjeucz129TwtLQwM0N6uT7cMmc3GRpCesbHwzMoiQKWSytnZ1el/v8xJILn5kzGHw9HS0hIMBvPy8hYWFurq6jo7OxsaGmC9byJNof7rdTRWxOP0vKRGv4pjMu8UXUGCKhYsmS59vF4WF+NtbfEy0/TgJIWF2XT4L4SQAlBaaW2hpZnmy4nLUzduoDI4mGkBGGprjY0gldgbb4QJG4uAE5xITf/he7nGWV89Nhs7cejQoZycnKampkQiYbPZVAHU19fzBDRW9fSo0W+6cKHg5t2TnDSmfzXVZKi0lBdfnKiqmpy8MW39UOLf7Nhs+m9mESGEFEAeeU00NdLYQMPUzesMDenx+cjLI2Ppi4C+K31GATivO0OhDqMAjAN/PR4PO1RaWnry5MmpqamlpSX18/z8/N1O/y9/WY1+lhPkPcb076STHamqGqgaHGLobnCUr+uipobsIoSQAlDqqVepo+7i3EVteJjbt7lzh8bGHczVffvw+03GyYBYLDwediaczj5VAI5QiCV3g7H5o6nbJBM7U1ZWxhPTSDGpektOf4/WHiRohB0aNA320nul8sr1/++hrY2mJrKOEEL+N9ASSmqoceOuppq7d/Xcu8d2ND1pnE413zW//77fHyUajoTDw+Fr13rvThfNqd9fDlbrun/+DvskaBhMKtPTqenvmMw3Rn8XXfvZzxZMjydqip7hTE9uT+jg3H2fj85OSkrIOkIIKQBFjX4VFy599I+M6HnwgHW0tKxnXORzMRD4XZ8v3BgOR8PRaPg3Dx4MGZs/DQ1b3OHTVwg/lD7Adcnpr2/9p6a/C9dOn9YII5fyLvUcuT7Y3U1XF14vQgiRjVtAyuoLuJaWiEaNnRycTnZoqCkQahxTsQyM1X506LW8Xw4H/r8jUG4PlDfzDJhYs/W/UgA9PUEOd9Gl8gIvkKKRIVepy9ftm+vOzTl8+ILqgOwlhJACsGK1YVMpoSQ+Po7KxMROC2B+nlCoIhQKhEK/0fhXFY7PePI/E1G/sh+02/PsDhxFFD2b0a8MDaWmvwdPV/K6TwwaO+CiqrvqePfxfd1VOd3dORbLebKWEEIKQKmgQqWc8vjkJFNTKlvOVY11QiEjnqGhoZPek46I93ok4vyhL4S0kB27ylGOZnp/O2dic9PTqenvnDJ3pV/1r5Hyd/DtUMmWmqFbj6PbceyQIweMnCVrCSGkAMooK6VUhfh14nFmZnY0bwcGCIW4eFG/7aCj09tZH/E6IhFGRsKmsAOHscXUQgtfecnpbx6MBJNX/bs0F2neC9/BdrzQnUwnVXAMcpL5EtlJCCEFUEyxFasK8/PMzel59IicHDKgyiIUWknR2xV+/P58f8DrNc4nJyKR0P2VRYADhxUrOxePx43XAeTm5rITxta/8cqvIEf06a8F07f+Tej+H9v1XXdaGjFUru2AL5CFhBBSAIUUGkFZWFhJURHbW53+d+5wAr9f8/vxO+rr8XqJRFTunDsXYqUDjnGMnZidne3p6RkcHEwkElVVVZ2dnW1tbWRoaCg1/TvoCGorV/6wI4Vrp7+DdOXrOuARWUUIIQVgwaJixozy9ttGMimAq1dXC+AABwIE/Ph9+ACjAIyE765uBLXSSsbOnj376quv9vb2Liws1NfXT05OWiyW2tpatjU9TU+PMf2dk2Zj9KuYMe/s9WhzbK0UvlZPdhJCSAHkkptPvooJk7a0hJHtTE6ubv1XPLD78RvBUFi40gEjI0sjnwk9XN0IKqaYDESj0YGBgQsXLrz00kuapjU1NVmt1paWlkwKwBj9Kub/iATPnlw+99vq5DYqm47+JqgkpRshxN4nBaDsY5+KaoKlhw9RefQo882fkYjpNH7j8N+GjZSWFqMA1O3dixfDhI0OOM5xMnD//v25ubmpqSk1/YGRkZGZmRm1FGBbly+nLvwPvv9IF21BbndsNfqVpuUgBfDcEUIKwIRJBUXTkrdbuXRptQACyWP/tPOrST6fUQAqoWjIWAGoZLIRVFRUVFZW5nK5SkpK4vF4c3OzzWZTP89k7cCtW/T1AV3vvxNEBRNbaIQmHvPHPBeEEFIAj3ikoqGRk4PJpOdxx0mKxVZ2fhZDHIdmmo0CYL3S0pWNoGj0wcJCiFl78oRwCSVsqaKioqOjY3x8vLi4eHFx0e12BwKB1tZWtnhmBk3T35q2Jdq4yO2L8EdwfOsCeG4JIaQAHvDACPv2Gdniu26FQkyHOKQSXbmKNEiwjDI21NHB+DgWCw8f3oMw2BmzE3qRF9nO4cOHLRZLe3t7IpGorKz0eDxqEZDRN4Ts1COE2IaQAkiQMIKSn29kszEbDeMN6aEPgxnzNofzx4/j8RjnFUJgB4eeaBt2thNYpmmayWTCsG0BvKBHCLE9IQWwwMIiiyooZvNKHmdHGcUeAiM7kjxyf2h0QDKlZGSL6a/YN/+1EEKIHDY3x5zKPPPk5LB/vx6LhfUewcXk9J/giUUgvJwQz5QQQsgKYIYZI1itKpu+BCyUzGV2Z3UR4IB2nhEhhJACmGRyiikVSkspKdGzoYPL+VUypPGsvG85f48QQmxNtoDGGZ9gYpJJystXIoTY84QUwDjjY4ypLLCAzaanogIhxJ4npABGGBllVIWiIhwOqqqorEQIsecJKYC73L3HvQgRqqtxOnG5EELseUIKYJTR29y+w50YMWpqVPQaEELseUIKYIihW9xSwWajvp66OimAvU8IIQUQJ36Tm4MMqhqgqYmGBr0DhBB7npACuMa161wfYOB+qZnmZhW9BoQQe5uQAhhn/CpXjQ6gvZ22NlpbsVgQQuxtQgpgmGFVAFe4Mu+w0tGBx6PXgBBCiD0nd92vc61Y22lf6rRffeEFvQPMZoQQe56QAvDhS5BwdDjc3v6aAwf6PZ4RhBB7nZACMLyr7F01vhq3113j9dZAH/TDIkKIvU5IAeDD4XU4fI4aOzXghhroh+sIIfYwIQXQBl7wgZd2cCcLwGiCfhhDCLH3CCmAYvAlk4NSBO82pn/aUqAPEggh9hIhBeBLHv67SFe9nJq0JugnuwkhhDBpmoYQQgh5IVgaIYQQUgCmjXIY/gzukrke+C3wg2mzZPK4Rk7BX8Ntnoj6Z38C74Zq+Bn4ArtzAX4FmsCUWerhF+EcG/hx+Ev4LAyzVlR/ezme8WPkwnfDh8lEDP4W3gsm6ITfhStsYhT+Kvk0fPAHG1wcZnraqYDvYnMP4b/gW1P/4ImfzPNg03eWKS1e+H24yjv1kX0P/N7az/8p+Hf4Xih9Sg+RbgD+GI7tfuyY4TvhP2CerX0GfhSsO3zOJ+EfYIrtDcMfwaHN7+o74P1PswA0NpCHkcw1QSN69rE7juQd1bIXzKx+NXwCPZ9Ev30ZvV7FQT3iK8eMkXeEGw5Ap367qgw6wKPfPn31yVif1h0V7uHLQDOXb4TNGIe6Q2s/zKkOGGAXjLtoIOvNw1W4podDxtpEzw0Y0G/1tOnB9RxP/6CejGmIXb6zLO9kAaSmv4U1OvRZwS39llGepjxoSKaXXUjdC89hAWjrVkp5WxWACQrAt9HoblLZTQFYocHoALLY4iLXrnHNz7VkB/wuKUMqRg3oMWog2gZ27DxP6iG4ixWACfGEKwCLyjs5/Vt4XAF0ZFYAuzh230UBOJN34XwuCyC9A85zfphhLV8jj2/Me6wCvj31hefTk/L+1BWljZ+lcQZ3an+juJiuLioq2FyceA89k0ymHf43UNCVesiNvX/TMwBnSeOCI2zo28egiqcskdBHv8rVWq6BUQCzrHdjNUYNfLKNNpVKKslIxu+XGLzOWp3gSXtHvD91CuCt9S8cpzX1gcjU6CiRCBMTzM+ztERODmYzJSU4HNTVkZcHFCdHfxDKSDmzflf7/OrEN9VR58CBMjvL8DDRqPqJ/hC5uRQVYbfrnzlWK7szPj5+7969iYmJ2dnZJXXnUFBQYLVabTab2+0uUW/IU6Ge/L17q++lffvYv5/yclwu3G629b/sfQdYFGnW9SmBJgoNKJIzggKCIKLojDppZ76dmY3On3POOeecc845rRu+71t3djbNrI6ZIAgiUTI0OTTdQHdD/ef1LmUrdFMdGNedPs996oEOVV1vOOfe+4Zqxs6yaoNAFTnPwfIg1FWGh9WFNjZgscQdOhRXWhrH9wLCzAzGxiC/1uN5+muzspCXByBV2F/Z7qgAhrzMgDotG8ziIpxOSGtJTMShQ8jPR0aGmaaeDhR+jMJ5FBija/x6Y6P6hb4xh7lWtK5gxUtDqoEKo7X7JpmPADuCxBtP2/tlX5cYAe5hb1ze8WeIKSAdE9rEXdz9FJ9SAC5b2FrghW8Y7J8niwp2I53iYhT/KorvbgsAa5Ed/rXX4Bud6PwxfjyIQRwQAfglnmWvW8P3LuOLAD7wqwHZu39f3cm/Um+FE5ub29Tfg94F9OYr6l+Cf/Q+jQOc/bjaj/4KVFAGUpEaugD40IBKoMq7LOQru2nACW+Vv2yS1B4+RH8/ezV5VLGzIQCpqYraSkpw7BjNSP6U7PXjh7e57gAOnMGZ9/T3LO0PtUePMDiIqSksL4sA0NVQ5y8rQ02N2uY2KJD0u7q6BgYGRkdHZ2dnKQAbGxuaplEAyPtHjhwpKCg4evRoVVVVIkkqaHiX0uwsVldFAIT4yKfqLqqqeDuB1vPgtgbwZPX1eP99WDqacf8+r6Uuur7OO4nLzIyraow98XVZELo3WInt7WzVSnEpA/y1IgD8tXTs+GtZp5WVVfn5wv5+/BcjCOBRB9SvYn8ZGnrOXRAtJwnwtLwNEsieRVBYiMIOFN7eFoCKCvXzTp+Gb3Sg44f44RjGkMDvR6PwS+osgG8BCF0DXofArwAYrd4E+4dXAACn7lzRVvpi+o7HtHsVu+4ddEcbS8p8CQCtC12/ioUF4L33VIcnF7Bl7wYq8BCGBjDwK/gVd3EBit5X36dnYRLkL82HBvhgfx3hh/C+lwA0YR4msQU8gsQBN1kONEMGkpEctAD40IBKmt+vGBpwQllA4I03N6OjA2RnupxknJWVGDegwZ1ggZDF0aPkkRNzc/VnztTFxNTtqE5fveEeUKqXFtmLlu9cO9zaigcP0NeH8XFtYUEXAbBaVXhByiCV8BXKQGAgHfU3Nzd3dHT09PQMDQ1NT08vLy9vbm7qum6xWKxWa1ZWVnFx8fHjxycnJxsbG7MNgg6xlPhrLRZsbdGHIPGRhlSXobadOcOYMMB6Fg2g36Xn5GDp/t2M69e1O3fQ2cmyYmYyPi4hvvhy/Hg8pgAbVA3n7CGJuHED9+6hq0u1TZstcWXD4rFsRm3akzQ9I4NlTrYtHh+vbmiorq2thj8UAMdEAFZXH7ISqSvd3eq0/G2GEFIARMt57xQGvnjhAjVgbwGgkdR/BUvuRH5eyVVtrSrY3TCPeeY52NG+i++i8Liw/y574/8AvnAA30/GajDs77seTWvA5f0aBHbB5dJdriSXxcJGv3vK1WD/UuwCegZ0CEQGlABQ3mmPH/sSAHk8PT/khlu+pqJ4c/itUKXn0APPB18Mn/svXgzN0ICZeAQON9ClZEAFATSRAWoAlSDxpZiXwBu/fh23bqGlhe5tNrKLUJGBjAQkQIfT4Zx2TA+PDk0ODuZOT9fZ7XVud/3581HP989x+ADfyF7NdnzqcNz8acadO8XD9/PyFtOaVE93uehgeAYH56Za58hQ6v/4eOoNkyABsf/169dv3brV0tLCIIDkTk//0KFD8fHxFACn0zkzM/P48eNHjx6NjY0tLCwwMrhw4QIlIWD2v3ZNlRLpj8THSOWVV+jukHoU+y8vq5iABcjj0pJytC0Wn91hGH6YIzOTxdC30dys8VrXr6csbCYiFUhdX1+P646Lm4qDDZiCshPAKewOXVdaRQH49FP+4DJPUSkaWaexiKUuUh0nlice93cuDg1Vzc5WOzerPalRpwpA+A8C5ueHbt0aunvX2dZGIU+YWGS3z0R9EpKiEOXcck4tTfUs9ayTGFggBAMCaqE/UDVYTmIMeByK/fl1HhlL+aYdagAA45vmmVYLH3/gLeyKVL7zmY0BkKolCnOvrrqI/+qy/OiqxZKIjjS6JGxNBsFmP91NzifI4aIBdBrWhf15rK7e9dmTpH4xJhNZB/wa/cRABwN1UxrgFchcQOjgfXnzPs06tUbKPoqjWcgKzHmXaPrEifXY2I6+voHR74kA8EiTsYF4xOPnFnTfSFu3b5NrWJn1qD+Jk/zNLAf2agCrWJ3EJO+ly9Z16JPoeldaPXIOw4Lz4MEkHLcdzptLjuvX34y/efw9nS2FTkVsLBMbpH02NvIqo4IJUpX40eYFgEl/+v5k/2vXrg0ODp4+ffrkyZNlZWWZmZkJKo9MN3SVXj8jg9bW1rt3766trR04cIBZoLfeeovZoQCGRuhK81dSA1ZW8MYbOHkSpaXMdLNrUADYAdmo+LPVZ27eVPfGvBm5nO8GiA2Fzo3u9uzm5qqFU3nIk4pgwE1/Im4xToWDU9t2yreoM3Rgzd69ywo9h3NVqMpBDpuiB54FLIxilK20d7C32lFa7a4u2CzAJtAIP8iYxfEbg0M3W4ZvfdzS3Hzcc7QK58pQlotcdhkKAJsKeZlXue68bmfskpLCaIC0sNd4gKpwMQZXW6R+mg8B2MSmvE0NYGnL13Y//+V9Zn8fSew0efmzEAC2ue5u+j8Shbnsdhex6YqJuxLznSSyEkufvMwoj7Ge5sX+KfAFCrZoAI2+oAOGBtDf2cH+IsVsTCg+JxFAqHPeNB/vhHHuCBvPs9SfMm4n7wtT8w/x3GEeLLJz59jbmSHh2Ry9vW2UgbEBkQGaIQMWWBB+6CGWC6uZ3Y7My1omU1zAhbM4ewIn8pEfhzgA61gnWXSjm/08ai2q7kYd7wUC0xpAAXDcufPXs2+91aAzwcPiIDdaLCQ7XlY1VZdLJVSWWWCDg6qOFhdVkZoAXf729nb6/mT/hoYGuvZnz56trq7mkG8cfXPA4XCMjIzk5+dTD9g/Hjx4IGPCOTk5dXV1MAlqFJMe5FP2tbfeUpmNs2dVrt9qNWYQqM5IyqMYfPQRi1Qy7EGks1yufper19Xd/frEa6dwqhSlVlh16MtY1qDxXxC92wLwF3yFXeMsWTbIdKSzWl/BK01oYg0CkDpl/+1BTzWq82x5VderFPuLNfleaXgTx24eG7o5NHJvJAUJbCQ1qOGgEDmY414UAP5CthM2G2rVp85PeXWVEBsd3UsAWIqGBpBvxiUI2DX5TMIR4yVQeALynV3xBV+v/SdlAePfmdGYVHntsxCAvj42R0ZhJDJJR7pWVtxs4B6PJf7Kr0lOth06pFEhqaJsB7W1NQ0NNVFRNdib20jjYmQGcfF3FQBJ/tCY9fOd/zEXBPhgMx1hxfi4wftiySOLivFxwVsAVN4jUOTn0ygALG0aq2alt7e5t7d/QrE/zVsG2E/CxvyhY2aGIsWMNr1FzmStRe1pnKYGHMZhbIP9mcXCO6RXAKByvRI3QASkARv/em3sUuWFV/7q2bOv0HXeBsc1lX+ytqa6PPmTHMsEOhszO78ZAWBuh/kfevednZ3M/NTW1jK/f/HixVSv79LZZ+o/OTmZKRQODnOImJpRWFjINFFlZaWpIGBignXKUuJPZKjH3qSmqZw/D29Qzfi6283fxG7Bz1PJ2DEDFwCK4sDG6OBf6c95A+dexatkWJ+rFG/AJ5aW6CCyJA+hjMEcG56wv1GnPC21ZA5zVJf4uXhc3xYAD3Bux4rQSbK/soM3D9a01Gxgg84+2wMFIBOZRlOkDHCof1abZYNnSn+F5Sa1aQJeAqC8NNGAnQJguP9qwpjxHdP4CG9fAb4B2AMhqNcVrf+eD7BjdkcyfLyw3wIgSVuG7a2t5Gm2cSZh3IWF7vj4xNH45ssrhy8vHaqf4lsSHxyZnz+xulpz7twJEwEp1drgcw6nSRBAGSfHeY/DCPurmiiuheR/LJYwerR6GKeOsxU+O9KbNDSr6BjnvKk/xHy9lJoIAI/Ug6Xe3juUgcmnMmAMEePnBOPK21I1CfDX84fRJfRmf2/K4FsQrD9LPa9hT5wBzh7G+WqcOLlLZdNXZkCgOrsw18qKMhNgTp/ePfP7zPUXFRXJJB/F/jvAgIAywDlC/Fh3dzcHivlFfr20tNTMZVQpsRdI0plKz/Hq3cCmRJ3gxdgxlWzYbIYbax4D9q/8OLHh3W+/W/9KPWk6mC6g6zIuzSNzJh541rCGHYhBDLUBgkVANMADdbzk3Ugg7K8q/T7YgDlKRA1gO9nphdC/ydKzOB86TUtbWR6G1KbHo4b6/aKgQJL5KhyclzEAGQr2+iJpR9x/hqQorBb29znR6Ns+JADOYOnk0lMJ+OoLXAdAF6O5mXlGagB5mblIOlFkZ1damivhkeVfnHvNsgLLwoQ+MaANPHr8aGbmxyfsjhpX/Ak9K+18JeLNUhmNzCApIB55iZ2BGAeOTbj/Wz5e8IFNIA9be330gNef/srK4H2h/gHbUdWDG71zPirHGi6QUGjbMkCb7+u7SRmYUuzvPVOIn8MLx/S0TPzXoDF1SzefdQkzEA0wLQBnoeyED8GnM8d0vTgnWF+nDwyXy1wAM2Oz2Tjxn2l9RgBkefK7b4op4Ac49ksB4KgAv8iv7xSAsV1bEUuJhH74MD0t5OQg3Qk4oe24lWQoArNalU+2sMBEFhnQWwDysDeYpqdzzZZJ9g8y26dpqjSTkmgTqxN96LuN29QAnpZxwAFf/WVFNOBZARjdpn4eOyBI1pPhG3SkeAtxehw0sCrFyOMmgwBW4HyLHYYGlJTsdP99DP+anKLzPcCJgHERghcuAHQxjKQtLl1CUxPDUlKw6/CUK7HD8u9+v8Uy8K5ljiXVp/cVaoXdq90112tObJ2oRCUkZo/fuyaMoeDp7SwQryJTPN1wG8O/Qv08+gjYfUwQ/D5g3z0LJMiGfGdM2W56/ZrXOjAfO5LNAz0Y68WHvXikNODUXzloTS/MPHymOK/46CHF+7SDOLgfGRfyvmHrfX3D5eVkqbn5+T+8cLV/QGTAXY7S8he7aNrtJj2RpGhpirfS6dNJ3t+8BpjEnwZ0v3x14IAy8V7FTPx899LSEmf18JiWlkbHPz09nZM+fYe2GfwAPymLBhYXF/nFvRur0wkpJYeD7K/IPe0B8ACaj2xmLC1WuaX8PL9LPfPCn8DeSEbeYeTnoIBMGvyIT2amLEpYu3//Jm4y6c9Z8+RLOu80iv3uSuCA0gCPd3oTyn7dnmkSFXKsremkes2jHdg8oG1pJmrT51CwW1JAXgKwhS1j/g/FXD7qb5nqd+EbVxMD04BLPzcrgdkW6YzTm2R6p7paLZfgeNSZM8yIufAtl+aKOeWKiclJseS8hxMckOEUguM4XugurLlRA4E5DTCmA01P60YQIAJgDP/aYUdx047hX3Na/JE/DTjD7/hlf4FvAXACo4Yld43GPx79+jffsXJuYEZGQVHB0fLC5PJCHDqI/cRGwdG+jbLejb4B9+NJi23u4MJU0p+MH4hPQGY8QEuAsswXuOkFGYo8BXDkg3RjREL7oQFSxWEE53c6ngAAB3iZ60+iz+sbMvmHnyQ4NYhf5BmwA38Sz6Bxfd0oJeXXJ32CPwDcAzQfYekPobC8rMKFzU1aoAIA5AnvhjTqL+vRGLt4PDOdnd/H9xkHMMIzBIB/k0F3yXyuKw0wB413abNRTRUtra6ynLSNDd0jSaQtBAjvrD4ZblQiAAZSQjtC/TwuYxmFtXtn/y/DF74ugvJSbgUh0ej4OEWV96+82Lo6lhwbGtnfBZfFsmWxaDExugaNLn+BXsAxGTp3ye5k3IBpDRBWl7lAWPGaD0rvxhj+lTleyhgU+8PH2A2Wj2AxOqCRXfuHUNzvxOX/9vF/+29YAmCFNy7ADBKAk0ApUFaF0hiU0hX/X9/u+ST9WlpWlsa+QQXt62PpMRskEXrYN5Xg6Xt7edR6e8v7+spHR+3Rs9Vvud6qiFJjABVIKQdywjkcrAUTAdBcLkkHW2ChIVCsA3gxGuB5AtnvIWYb8AvjY6R+fpHgpPgopjF94y4ZXAycHnvg8oOCywUoK4BP/Aco8ENEfHxQA2M/Af6wtI7gNcBqpXfIMlK0mpvL/jo4OjroHGRyRtx/SfeRIupQ93zez7P3Nk7kA5rsBDE7qwTAbldCycXXbverm5uXgiJYbwGAsSDAEADRAJkzFLQAfA0GXkYBYDFTdhmQxsWxIEheEgSR+tmbeVSdWJn0NdCno0HgftZfexO+QZ5/OhLQ3m43pgPZKqzy1wQmUHxe8j9BTJeN3fmqDoxKtNBx9YMx4N2rwLmQRn8P1uNUCRT7M+FO+93zvT3zPb29VzfZvkj9chQZYDHukfzRTJKqUL/3MX4+t0KR/rsyx5RHdr+ft/mgenDkXB3CpK/wIbjH52maUWKm8lOeDzybqN7EMbNlLVQVzKStvDDUNvsmQ5bMTNX2SaNk68nJtampgcnJgZWBFKTQ/WcvZhyvQWN2yOTGfeT6tjaVHGbvGR3lKemUpi5a0u3JybwceanroOVK1P1vRCEIUKoksX/kCKaNuUC1tQvaorj/PBruv1SKT/wSduJtAC+1AIgzQmH3Tq6JAIgGbAuAj7birQFvmh0KZmV7toOA4YpUkWKkpJie/Xl5J/tf9pli71ACQO7/b/HUgNCJzQprIxpLvWSgzN3b09XT23cVO2UgLS0Eh3QX6o+Zy6reJn05eve0F6wBMTE0aStsOeJABLyXYwOAF6MB4stL0l9CAddeQ8fubTAdxC/y6+L+7+EKiQEbX9tgMn0NJUCtmbLWQ9psWzdf23nAmK8pfa+/ruZwk6qZNpiaImGr0ezBweXu7ubF5iUsUdzSkEaPhBN49mT/hQW1Eu7uXTqFaixyNKFCdf+abHqiMvStx8U9ZI1EDyGqH98JKQiYvrtkzAcdLloU9n9m3fAvNKL9d1rGWqo2pqdZo0zFiADQkrwFwLcGmEFqqqEBpLMpsr/z8eOh8bShXBn+PSbuv/o9e+CNPf7XvfcB6gAxKR+KB86FrgEEk2BNaHpGBly9PZ09A5QByQXJUZSAdx4IOPzV0/M8+2uzGce2SZ/2WU37uQ2chUnExzN3zk4ry33pCa5gJaAyxWllLwoJCir1L6u9Vp8AvsFsj5H657IAGQ8wtdKbUTQTKZpm1+wr+gpz0Lum3nSEF5qc1YzCXISq+AH4QFYWjRkhcgU1gGLABkrS4DTC/ul+WSUwjvECFGAvtLbiyf4UuNdu4UoITkFkl6HfTqWhAOgsKGYmLBNQAuBz6Nj8UPD6kxTQFmfsPhEAmvE2L/e5FAA2xJQUcVQp43TOqb2sWlcO1EZAmuuJOtD0sHgjJSWGAKi03+jw8MiofTh3eD3a81Qcwg1t356ykoEMmrcM9Gz09Hb2DvVffRoKUN0uXlQdxjQ+/lgFxQb1b86kG/6+8QeCAt1TmkS6koqmnw6faAfuBBYBWK1UOx4XlxbnMT+DGQccptZDWKCov0HZi0J0dDRn/qQ9wcITcFsI7vTALYB8zRnlB/gxADIdKNWM0rP009QkKQ7qzs3MzWgzNt3GiY0MCkLh/fDGSxcAC5R1+89l5eQoq6lBZ6di6sVFepCzmGUcQPk3s2iEzfvBA7UpBk7XUgCUVVczy/RsOUxgFbgWtK4/JfmeXuX+c+3eiH1h5OCIkt7CeiP7/7kUAJY1q7CgQA3Okm+Yd9N1hgKuo0ddhS7XATUGwBFgskZYIHsA06jxrP+Jyclx2xrnkxnsr9QorNB8tHwJAsICujw0QwZ47Fnv6X3QOyoy4HZTGkwLAGlF1cMPfqAqZGPaupP6Q1n6y04qbjrBLsoOwL66a/ksoFuxv7IMmAcFUVrU0hJ9wFGMcmyvGtV+NhyUgWJhf3WswwsEN3nmvH5u6kBa59R+LuziCq/jPjaUZiJhfHx8ii4wwK9wsyBODDV5Gdno3z0zwyIa0ob60FetV/tpxMwUyYRaHAdeAy5BHa2h9glfDt1FIBbKLEC7GeGvq5N1tpS3LQLKTGy7BBYeUzKQxXsVFZyDLhGk/ty8gJvALQQLLwHo0cEVG1NTk9Pz4wfHKcPyBgnw8yoADLJIUlVVsNnUPn/NzbINoaukxFVgdV1xWX75lsUyAk8OHaRwTHAXnteoAWvj67bZ2anZ9cm5SRS/bW74N7Dra+aD4JCRi1zaMzKw1tO7NDjBvhDIiKKu06gaB/Omn6d+cmXIWQ7lo7PZM/Cbtk9zyI7JN47dZSLTKB+P7ulARzOa7+HmCG4DM0Cm+UE3WYJJ+RrEYA96mAfgMk4KJJ4FL92GNuaIuDqprqZO2J/HEN3a0GSdLJTH5V3c55k7fXIvoN7eXi4EI61zuu9O9n/48CH3jeCyYfr+/Bi/yK+b3OpDlsaQkPqd/d3opiOdoqXsOpI/hakudNlgY0m+mv8qJEvWCFj3MUFUAli2LdZ4okZ3N5xOVjE1fud2EzS2WjJ/EpISkGBmv0KXS31pfV1FpkpFYmOF/Z8Bs3B3pnBLD0UAZG9JGmWXHhY38JiZnZsunUZhuZH9/7wKAMEIjlrMqmU1tLfLriPuoiJ3Xp4rlxHAty2DOfhODiueDVc5dyFBBEDnMa9L+3Nzc7Y5B2pz8CX1KusnLOyvmWvqEgSEF+ylNC8Z6JWnQNoCYWmgPNeb+sO6/WdmJouZNUmK9pCgKVqyOY8VVgAMCEa0EVLSfdy3nX/72IXZ0b88ij8RgAvNcEe5ckND8w8ftqOdp+Wo4AmcYLGQGljqvARVpxOdLWiZxvRq8WpKQ0rJ6RLF/vF4sSDRc/sHuvzMEty/f5/PA2BWhwO83OSHi36Z5dd1fWVlhe/yLXlgAHfa5H5Bx44d446hatqoGaSk0OuSodS5u3db0cqSoctchSpqQApSGOTR5WcuRbbYfIiHAxg4n34+qTGp7nSdEoCcfU8Q5QEWL7vd2uphanJ+XlXuiRP8/cp3NNj//n15losExMyLcpAMMDUczqhUtr9WLDQ+Tp4x+ijPqTNDRK+Uu9TcHADCEASsPJgTrFo28KUiefXzLQCshHPnFPvLbqsDA2yXGwMDroGB2fh4S/Z3LP0q00fvSJEb57xXVobC1AcOiAYsFhf/1z/Z/N2i+9/iNujhcf8dgRD69rrCiwg/JJ9FAVCG3jJAZGB2rx4BlAMVPH5xm/pJDQgrWNKsQ5LPxAQeLj20wEJGpo8pa5jpkk9isj+6X2/sPNf0tYGmRJxFYGDzGB+Xx0V1jnRq0Oywc7SNvMDBANIcx4eZ9GPSg/KwlrVG9reetvJ4KONQOPgrVHDjT2Z1uLKX2f+2tjZN07jZPff8YXaIY7wUAA788gMMDvguX6+vrz916lRNTQ13DYJ58MOTk+J4dXd2slgWsch0mWweTsmkR72ABabR+CJ1eiZlJq4xThVUY0pJeQk+ExwxckHT07GdndQAB+lYJoAyGmC+i9Th8VAV6DWSpulTVKKSzgSd6jSkmZkVInthMOdJ2lGjtPHxJBmlCS4XE9G8Fh/3VtHefqb81x7+V55Hv/t66AKQ3bH6V+cVjJcYDn++BUBckjfeYI2SHmQ9hnt83DU1FT81ZXn82DI4yIqhAMhe0HwXDQ3sKFAIeih4oLh4kE/cG4q1hmf497/62TzP9xsp+Oky/hX2BdtBAI8rpYAhA7sh2qB+2mko6qcniH0AuxwduNlZtW63pYV+/n2yM1NAZGcdugMOe870iROL9fX66cbvTjUlxiXFrZ9AYMMAbB5OJ9WVF3jw6AGTGAwp6BUyjiHT8RI22MhrK8dycLKp5cwJ6+mKlJJDb6hSePHg0764CzTZn9TPlcDc6ZNbAzG9w2Fe7wfCcGyAue5XXnmF7N/U1MSvqAmg5iEPKWT6Q9P4N3cfnXBMSCmxIigALriWsUwxZu1sHS1F9aWWU3XWM8dT6kqsQPpnVhoyINzZZekaT+hce/BobXjiQ5AQGEJyKNtiUQKwtESXkfNHKu353LyTm0VTBswl3FSnP3ZM+SJMpvFsbJcMUakrsq2IZWKiZrn/1KlHjY3fXDybihDAUxqE/6c4K/wq8OabL4P7XwD8Kdo+C4BMEJE5WFR4sv/EhKttyn1lyvKVSVaDzPSiMfdJ547dm548fb0gZxkkOg6UDB4oHogqHkTsUWF/hDzQ/Dt9LdarUvZCoEFT8zXhKQNKlaFsl/IqN9ifxxglAGnYT9TXK+aJiaEYUO7Z6RbX1xddioiQq7ZuVfFBbS08pxKSEpNOBzExk16CrtOPk0G22ZGR2dkhOLrU0KDFQodLXTj/ouwu0F5fb62uTgGswBl4owg+UASz7xQFGSQVkf3p73OXf+7zzEmD8gQYeSYwnwpAkaioqOBQATM/3DKaD43hJxEoGFW/+qo8sIxur314+IHNxgwc1PY3miq95GRVUDnV8vDkoZqaloYGKSiKZZTZZV55CA0JPbjQeSG+Mz6tO40JQ675Gm0enWu+tmr1eGJiojc3E+1ahjujEOfZ1OtQdxZnj+CIyS3m6IswCiLbMxrgqMriL/d5Dh1iJi3F48k6tFJSsnq8kbQUH9eQlpqfmufvXl41HwSkPwQytv9nxunzgWiTjgl7P8314yXXnank5C9ZvvqBZaxBqQIlurOT0RpDe8kXMeG7+7YH2h6jwmrzsuKBgZKB1X4X3i8OPf/zwy/6WB9MVNP8fxl/AJh5a1+LPrpS2F8dvVEmpO91PJyGzwLM+dGBY/tnOMdQWzzRhATWpzysV6cnMIhCOnRsDQgC9OusVsVx5eX0J3gNiQmU7CQlkfL4lrh/bEUtgPAaj8f2WnpfSjO1QlB0NUiQ9zm0y0Hd8vJyzgWSh8LLujB5KDxHhvlMGNkv2kj9B6MBZD4eWdysCbpWKyvgVQgKAJWSBcUUCeuJH8jOvr9dULTGPZbGC4qUhYJVoBPRndFNnU1MT9FTY+jGAXympxxLjk1scriCQ77M+JOdGe9Wo9ok+xubNlME2SL4B1Niy8tuj2eKxclbJ7vwRTZF5hoGkrM4WUDGFYJ+NK4kON4uUpqIbCmbInxuEK0YptfsHBiXy+pypVomK2O+HBMz9j6GRiTrx5lC7M/yfCLZ9ybQBShuuAcxOHB4YPB3DqJcUb8yOjshwCd75yszgwzsO2KBE8+Q1zvPUn8mPluQe+VR24zgxemkM0pVYMcTlKDksHZ4DWvBz72gMdk9NYXFRaacRADoZPAyjPR5NEimZVsAeMzyzWplynZHK1Dv9ZUKZSGBa7vOnDnD4V+6/0wZM/VvCIDxCDBGA6EvP2PGTMZk6Awr74pX0TQJlaQ+vOdGS0FJWVX4Z7/Q2Z/oVIYuYAqyXpZZKRtsi1h0wikCwMweM/4yGTq4hDC/ydY4PQ27HR6POAmKWuidUwEJBhZxWpwd9lAEgKguVAZaNo+0g58nATgHbAGaqRmbbrfGdmjhJKBEi6XCgop3lJ/C5u5wsD8zccD2yhoLYnxOsT8GeKQTgeJGw/3/nCABBt7dZv8cvCAwjcc+RvMVsiUjmRbqrCPaXpgAjDjgPQjq8Syi5CXfMN63qL/CA3I9gwDsNyiKdKdo/rFDLKVk0YgdiFKvhogxEQBlBmT7z3CvwaafoMwP9opETYUdRwoBbwFIwOdPADaBxwD8rzon+1MDYOFWQJrFoltAMF23vEzqp+/PdB1jVXor6kMBxr9kfzFFPOL+0wH4POJd7/AkgofeAuAbEYx7ieW72Ddsebn/63hB0MPOgt4CEA68rQz/6aUSAB6HfY7cCvuLbe8EaoG+PYPEaqVTZOwip4b1AgETiOL+M4pE8asiAPic4ueT/XW8OIhvG8Ge6PoMBKBrWwAG8AsFQwA+Z25nNMq9BIDHMZ8U4HKJBuzY1d1rx1CRhiDcf0kBqeRm8TPDvxFE4FIaEMGLF0vM70z+vFBfREPYkA78dnwOEQ3imJcAfApMQBblk+0LtIID+gFjD3ojAlAaoFsgWFxUmR+7HSkpNIYCu+ygXeUndB2X5M8okpGYJe6/OkMoiGBzP915/ecpWIgCfq2yvWEBfgPtcxtSGUUVLNL3qQD1F1WIEURDUOUVB1xX64Bu47YTTo7B1KP+MA4DpH6dg8CUgURYRANAzM4az+xRxM3JCbvOff7Av/s/P4AmGX9Ugz6lpXi5UK8Mf3ef11/+QWURRBBBBOEWAOKECACmNqfaP22/PnPdBhttXpvnloQVqHC5LNQAJoIsUCPAPKrZgi0taqegnh7qg5q6VVDA0WDz07FmMDOIzAFcHjQmoGRnIzFx//Psf0JZBBFEEEFEAAQ4CX1L79js6Njq6LjZ0TPTs4CFaUyPYrQPfTmunCfrAOos/RbLA4s2+zGGhtDZqfbtfvAAdXVqDXBFxe7T+yp8uf8ZyiLBXAQRRBDBC18J3FGvdWyld6Cgx1KDVk/nQCcHAx5rj7lT5xH3kWRXssv16yxXHlrW2jA/rzI/8nSS6mo0NlID1KxQ01gCBoEBdYwggggiiOCFCoAN6KA1NDx4suxaVt0t9PXdmrzVoXUcKjh08DcddLkSYq64Y9buqKWiNpvK+F+4gNpaJQBnzwb0mEOD/TfwWSOCCCKIIAJN13Vs4wfb1g1gdJTpHZXcHxigp69PTzcvLn7D6fxva2uXLZYP4uIuyLY/+flqpSIjALr/TP68dIgggggiiEQAD8T9F/YnyOwczi0r05non5jAzIyLezI5HJb1b1ssX46JjZVdCRkiyK6EkYmbLyUiiCCCiADMKOoXDfCCpumyFQmzPXNzrrFl1xWn5TtXLd9MtMR+RXYljHj9LzciiCCCiAB0bNv8rsssrFaa+zF+thPcBYsFCUAlXlpEEEEEEURwAEDnNvt3+Vxkp9FcLo0LwX62ExwseJkRQQQRRBBB9JyR/d+d/eugcBKAy6UsweW1E9xLiwgiiCCCCKKN5M/sLuz/d409HLa2FPvX0DZRjvJMZELDS68BEUQQQQQRAeh8nv0Hn9vAgezf4FZGkP0TkADgZdeACCKIIIKIAOz0/UvwLOJcKHEBNC+8vBoQQQQRRBDBgQ5g2szWqm5gVwEgNLyUiCCCCCKICADMOPEuwK0MiGhABBFEEMEvzFYQn09EEEEEEUTWAUQQQQQRRBARALQAfwYoAjRT5oUfAX8cOBbo12DuC9nA7wC+CTiggFd3ntIkaoC/CfTBBLR9ts/gGsHDiWBxD/gHwLvAwTD91uvAHwKOBHX/2cAfAW7ue+2+ppoVbiMofAj8diB5r2sUAX8aaMY+oVj1fbSGu1v4Pksc8JuAXzX7iNP/C3zN92lfCOSXHAX+AtARdGF9AFx50ZvBhY4qYAwYV4ZVhBtV25ZorE+bB7r3ZzpSBMPAgirkoHDaa8rANXX8hUc90CCGwOEBVoBlwI4XiG7sByLQTYrVyy8AWUC1Yn8lA3cQVhxTp1ZWAcBbAGjTCAQTiMAMepQAoARIQVA4C7i8NOAXGmWK93GKx+C607IyrOAFYgpoRQT7pwGE9osuAEYQYMQB4UGS4f4/53MtKAHAjwCPySBgALiLCPbEgJcANAadWRQNkFDgNn5RccTL909DUFgRQwgIKQZeV+yPFoQf+xib6y+Bf/9ShALRz6efWoAheScaiYlqx/+CAqT5bdvGKeKB6n6Mt3sLQApS6lB3CIdgDhsbuHsX09PYRjWtCNWnkOn9fPnK7Qhg4VlW14BvYDd0deHOIyM0qQGOwg8uwxw2NzE6CpsNS0tYW+O/UmyqwLKykJOD8ICnHhtThbK8rApI1+H1yDajdsxUkRn0XEXvmirbEmWXTNXd5R3XiKMGrMB1Da51uMTDhAYtDWlsD1ZYzf/U68A0QkQ2cM5E7ZrA48fo78fKirR3of5TKC/ECVPFshPL7VjuxzJMopBX9NlcDYr5Bkyj5QZaprwjgGKgPpRuMYKRKUwtYnENa5vYjEZ0EpLYinKRexiHYQLNuw8CtG17FwfykS+nwvo6hoZUD2SNuFyIikJSEjIyFGulpiJ0sLqnprC4qC5ExMXxtKpjFxYC6EGPHXYIYFG8so2GvTRgZgbNzXA6jbINgYbAJtk/MDCwurqanJx89OjRoqKiYAXA0AAyGSkmMxMlJaiuxsmTptilrExR1dj3MTaChyDykMdG8A7egTm0tuKTT/BQfZfItaLqHVRVoWpnqRhZINoAnuKDnQXHkr5zB8rcSMIJqaiQBeDRI/T0qObHFrKwoOpSBIAtkMzMRsKSq6xEXh6Ch8eDzk709WF4mJcRnVECYLEgOdl4IpsqoZSUsAgA70jZPREA3kHWeZwPRgAI/sKzZ6kBytw2PABRhCK2hzfxpumfGroGZLFRmKtdE3Tw8cdoa8PcHIT9UdWA108I+wcnAGSulU+xYjPF/jRTzfUDk/fKjsYe13pTCUCW1A+Kg+4WpP4udA1gYAIT85h3wsm6jkFMkpaU8aOMAhQUohyoAp6l5je8//RTYoOiAVGIakDDe3gvpmeQjp3S48lJxdEiAGx1ZK3SUtUpyFpBY2REdT2enITG7s1+R8THIz1dqcvx49212T849ANKHRRinmtjDXvFAb29bEo8t8+C/YYdOGiyz/Z88sknHR0dCwsLhw4dqquru3TpUgn7bpACACT3osIVPTObskAHs6KCaqUczzNnTHVZqsX4OJR9nx7rJVzKQhYVuxKV2AsTE6pFdnTgww95QYpG9SuoJvvHIQ47kPSsBizu+ntcLqF+GiMLNpQTqrOGCDkrew6bnzwxE/PzcDiUAIhuigtSXq7u6PRpVSTBgCxz7x7a29HdjcFBnktdRgQgNlYxPqOM4mIcO0Zt4GUoBiEKAOWG7M+m2fMp5mzRJXiXGkBjDSK4KINKqDTAJTLAs7+BN47gCJ3BYzgW0E+9BswEyf6XERZQfVnldCZ+/GMqQS1qSf1kolM4FVLwxahO2fcAZ1DsH/zFSZuK/Wk3sD4l7E8LEg/x8DZu38d9+g9Ugtn42fjk+KioKJfLpS/qWVeyilGcicfAGPAbYOCLAEwJgKEBRXoR3cql2y2HWRfsHXTESNbkaFIGBcBqpc+lWMtmU07ZuXMIAqR+9vD793ly+l4kQPY7ht009m1xc+cWGh6ff3xVv4qjMTvb2N/fKxe0uqoa1Ecfwf72Lp/Af5ZTmhWAlpaWH//4x6Ojo8XFxZubm5mZmeYFwBuq9PjFy5dZmJ7x8fn29vn2H40x/GHsozozdXVPMGtE7SUp0m7eZLOg8lMAeGQkuKc/QiOrsirJ+2JlKIMPFHhpwE927VrC+yIA9BHCAdLvjRv49FOeWLUQNrNsZJch6yAOMjhd96zPL86PLo729q4NDZHDWXhslvQYAmf/69dZgGhpwYMHMQ4Hw7oj9fWJiYmapq2trc3Ozo4MDq5SG0ZHeWuqyC5eDDHrRPYXy/lb9X/wO1n/82qPbwEwjexs0QCxrsddZH8xlhhM48gRmvn0cBvwCa1ztRsWi5LlkCFkSSP7k8tI/WKxiEXQYK2trNBIVdXVZIKvK/ORH2Oqj6KfkBC2tKLcDdtX4p8r/X3fzP7o+lgI08aGb+HWNVy7i7vzqfNVVVVnC85arVYRgLm5ucetjz8c/DAJo8A//rcH0n4v86S0HdL57+Rsfi+VgQzHDYfjxrXDt28rsmBTYj2QmlmYlAH2OqoCO4XdDk1TV6mtRUAg6bN7s5PT/aLjxfOfOqXYj+7/1hZPq/r8T35iX1+3H7DPvjbrQLbZwZa4pxpAf1Fsl+b7TgDsz7TP4uLi1NQU2R9g23w8OTnJUGB9fT2OpB2oAJDh2cKoTtROeoIsPYdjoZ8xL51NvkczA/L2+LjYzIiKCikAtDM44599WJsUAEZdzBFXo1oEAH7hHQS0wws2m0H9tIzkf13/3pXvf/f7YeEBnlg0IHYj+RLqK1BBlyQFKQxOGfbOYGYQg+1oZ2KO3Yzkw6iUfgObEMyPLdC7uXWLGsAOSuqvvXSprKwsOzv74MGDFACn02mz2Zj1Y9z3iD9IREZyTwwOggLPIe4/j2eys7Kys28fvvsbZ3+mAaw+BA0mTN1uEQCb61rX+M80oAlNMAEWHeWTR9PsPwDc68TdT/7y9/DaaxRFJR0hoq3NEACmsw32598IBcL+y8tRfz3qOFIqkQLabgOGQmUM9uh9hgXkfbHpq2lvXqmvdwx8hODBPt6GNkYAi6mLzD+cPn2azTU9PT0mJoZMxLb68OHD5NvJzFSc/g2nexNrf5KUVEdXhpoWeNWstq067jhWb7SoJvveeygqUmkZEYDpadWCeVdMI7DjS8cj9/BC5h0vo4fThSX119erWD4zk8xIAWBl8XXPo0f227ft8QWORAfM43+olQ+E06k7HBppluczoBvjOG/DNNjdY+Pj4w8+gd1uT01N5TBAQkICXw8mAhCPzQjfGaRQAvs/GqOiMmLkzSsnZE9YLEYQQHu49VAEgEGAL1+SekPqFyOE+qkBZkaNZEaQ2CgUGLV5Z34KCuYbG6/Mn3HhzwK/D6FgdpbRIR1/xc9k/4u4SFWrQQ1dwnSkUwAo6kyA8j6oB1vYGhwfpDsi4wHmBYBKSC9GOig70quvvsoeVVlZWVBQkJKScuDAAdb0+Pg4O1VaWhqdrC5+nvUiQwLMe4bm/sfMZeXm5ubk51qLinrCIgAyOORyiQx0XruWM9MpGmDmtIzmyX1Op8l5IesP8eD7aL2He3P/LkcNkPDSVKAQwOZksL8FFoP9WekIDZL/oQakfMD6SzmDlHzfk0bogDK3oWmhzzNh+zJuCK866uscR+ucDxAsRjFKj6cXvY/x+NVq1VZfe+01ZqLZMrdlboW5aYYCVILey73lieXDiV+oSyzVk5O1wKvG0exw3Ot20LF64w3U1Sl2Zsu3WKgHinDYOfm3w8HkrGIT5kj5BxOkJsGQWno4T8XQ4ZVXVBKppoY9i6eVmyEnOnJyVuPjV7/1U/wDIGBJFt9faUDoc5ooscz21NTUuN3u+fn5jIwM/s1X6CaGOg2UHZSyR3GllmwsLFANePOmBABguRtxwFpHh5EI8iUABvszm12IQiP/AxNIezYOcDCCM9j/wYOKCr2xcfrUGfeVM27UIkRQDvv6VCNht72Ak2R/0QAN2vaPSWM0wCiV7D+HOYbGvb2bpLCREeVJmFJll4tBEONQ/niKeX19fVNTEzWg1Cv8YiIo8wmio6MdDsf09PQsy45ETReRoxzseAGCzojh/lehpLC4sKCkgNQ52Nvbs6w0QAyhoLJSgoCN6OgutzsXP9MA5s2wB0h8ZqcEPkDfIzxiUxrRRnDpEgWAFipHG2S5uNiAc8L+tSE3JmETseSK5BRdaUB5SBMHJ4FsMyNtxg1VrtfVNdfVr6+fZKwKDUFhHvOMeun30BXNz8/nLBQ2Wrop2AabMVlpaGgoLy/v0ZcfTelTs5idxwX6TEFMkl//I7aN1x0uVi7ZubERBuihUwyokyxSMg95n92V4i2OPH/PniDL8Vu9vYqJSHzsSlSOV19VaW2vm1E+1sGDKky3j2PxMQLC+8CvigDQVBXroe6qyZs75fF4cnJy6BfSQSwvLz9p2guM3ktelFFrN9h1xYMzDRkNliCgd6GX7C9WjnI8i5kZSf2rI51o8f1pvLhZ/9IQgLa2T7cdf1I1y+HMGTaSraUzm5vlm9AQyBDwBVmjuX10M17jDZHKORmEGWneCEeUG9FosL8B+obsD2QiEtyIa4SBKUOH+XmJrkx0UF5jaIh0U1pXd+zYsdraWrL/bgqdy7fGWLy9vbO8ZX6Lv29yknwZtPtvWcrgfZUnlJeWF1CH2B967oZJAAhpl/n5g5ubXUAunJQBxk/hmhC+hjX6oX1aH4/IUe6/RABhSf2TTdgmDfcfut8NcXWz6iLGAf1kJNN8n8UMSaRiLzCQMlL/cbbCerolm/V1ntuax1OEGAQFFrsTThJaUlISuZ5ZCLL/jpHBwxwSYJoCgENzOHXnOtaDXCtVb8WpEkX9tJ0gx7CzMLBgA2BXokdpsymKoTO7J4SvqBns6nRh2XjotZD9d6L0MFY0LELZiMlSWnduM79z1el4AgC3Ibi9c1XVQXjjLHyAzv7Zs2c57sLMMKuA3mHYFoJR5MToVNJMqaj3oJUxGHDtmvdo8HOzeoT6afRDa7Z9/6IAJyTUbW7O37mj7O7d7jt3DkyMnWkS9lfH7+QjcHz9WQFYmZtbnplZmZ5ejltbyUQmyZ3Bii8HlgpBBycVqSMYsdtVtbPvmQKFgnLBhgvQxyfLc2QfPsC36FVlcYSG4Lfm5ujFBCoADO0M9/8kysmatOiKIrI/bbS/v2fhZxrA0Y4waAAN6ARyty09TGuByPu9Wi+PC1jA0XC4/+3thgCw3f6M/fWGeMT7/jnBRAApqEjRUhgEhLYIKg64CrwL3xDqp032JL+J+jrmUPTcVIQEdgExfRvYAe+31Ie1A5quBVmE9cpwyu+8AyaFSNwycW5xkU3clABQJ6gWdKEI9qncXH/JwzpgEfgz/lJAbYBDGZzyBz50YMapOTmG8QTOPwZc8cH+NJgTAIEMA4R5JfD6uhpZoanAKi5OGRBcEDD5+LExGuw9c25wUNhf5VXImHSyxBAYVi1Rd+qK784P3pmPvTPvmqu6JOyv8+gRCddCFQBieXm5bmmlBMvUQ7J/tu+I2wILLRrRMr1SdNRsOsZu59XoRrFGGdPRdYIPMOjmB/gx/rHGb/G7DkfQ7n/i6hFhfxWlxUepgFqCgFtPgwAJy0LHgpcGXAyZ+sWvJPWLkQJCd/8ZURnsn6pbhfp5pLSHbSKORADr6ylQ7M8jQoUVIKv8E1+TG0n9ck9NivrrGAGUwGOu1H2664lI5IQu/vgZ+8zS0hLn/OycgsLsP6emsPvI4lB+PlFLDFI1/wXUYF68nzKwsjhVQEWwU0i/MOkKUS3oQiUl0X9Vo3b+KfUN+MeVZ9hf/r7mwLDj1zucX1BBgLC/2kbzA//sT/xjhIIgBEDKjabrSl9YoDwGpNhUehkNljjgoetpECCju0wpGVM/CSP1T8cZAWAOuEPLyrpTX39nYcHBtkflFvefVTmF4JBJ8ybmhNWVL68ur6yusNfSi2Gex8/vdMHlhtsDjwyKSzLN5BQgKgaNAkCokTS/iNoGXC75YqDTTQ33v2Gb/SlvACgAEgRM9fcbo8FKm8MEEYAcdURpaOwPDX3oE1vCEo7Whur+2+0G+0fNLzXoaso/zc+kZA2BRQUy/EvjRNJkPZm0mIAEeltSg5o0moADjFTA6iu9YWSzKlwnSP00RgDAPVNF7vvFDC1D1vp0bXQNDw9zWjojV6ahmY7Ydqxn7t+/z0lxnKqYgxwOkvHzvN/gd4nIhj8Y3qq3D2smO+ZwKL5jB+RwAhMp8vtN1rcPATDYf1PTyIf8bfpXy64D35jGlQMY/+q3L2+evnwaNM1LAD4zRJsITxWBiaKyUAJukQUFRhxgb2szggAuEAOM1D/fBMklKPdfNp8Tu1tZyWUQnDVI/WamQX9KnhpCRlL2Ki0b5pyJRSySiVh+AAuP0um7Oe1gdI660Diws7GxwSn/HN+P8aEejKnpR/AzhLqANLKg3P+UdTWqQSNxGlPMngYBs4+MIEDxVDigP5sIiguW+gk6Kjvdf1roqX/ee4N+RrH/akP9ag7cY6wgEgTdTA2mUA7YgGU/+Z/+lJR7KclL8bB/i2GBRreI9WixGGvK2Yk0s7piVRqAV4Hrz007MVL/MdO5Qv00UXottF13jugqcKTfZtNsnJfMMQB2Qg5NceaPTAPlLPXu7u579+6N94+z43MNIGeUB7dTkKlvsfuIBRJ9GzOVjcFPWijsTww+O2GTxKTzV0mK7AYUvv1t/J8o4Ks+Bv1ftABIhKoITEwB84Hue2VMCWUQMPN0Sqh1odiY/GOBxXD/tQDKoc+gfmOrEA7d0/YFq2Im2pLiibEpTE1jmqKZlRXIOgB+QeKt2VlGzQyoGT4z0e8jSzHC3kUPa1Pclvj4gNYB2GxP3f+m7ey/kILACALmGATYfhYEkDgQJox5aUBDoOyvwYDB/mywOHoyVPZ/8MAQgOOu4w0PGxpGGhpmRmDvIk1oFADWUXq6oubi4j3rlZ3btm1TPO4cAf5WSspCUsriNxl2aPRDDQFgG2Aim92FiazKSmOlt18xSBUN8JX6H+2NfxOK+uv1ekbh4dpzjSP5c5hb19ctvZbrvddn/sYM5yhTCThLjU4MFy0ODg4udi/KlDle3XcgFSYN0HVlhKbJ0dQKT29oGi28e7vpHP2qqVEXuolt/DpcBiAaAPy8CYAk0LwF4N8icPCLxv4QH38so8G0tEdFDx9qZH+m3eq3ff9A5pt3bFM/j492lvYLFAC61GTNIQw54DhRwnwUO69p15zMwm7PMavBQbpRnDzHmJpDwTsn9nLWV2dnJ6cAcfkfiNRUyX4G4f4f8mQa2f/nnSkJApQAtBtBAFsDwgIfAmDS8RewkTLzIwJAsQ0x+0/dRUeHmgne1pY1kHHqw1OnurMahr6XNDWlka9dLtnvSaiZF2KzJaOaEQDF/t62suKUCOCbhSkL30xZXNRWVrTNLRLPFrZkXqNqBkVFqKjgyKRsKrIXDcZva0Ai4DDkzEj9N6rMjzJWdLjYX2Y/n184H9Mck9aZlt+XP544/iDzgeN/OjajNmNcMcn2ZOZ8mtB0HMd56bM4G4YOqvtdX00RpREWi2RgzUTeYt5p2DDu76kbWfHnGnEU5PIvJAiIlov6z4khN4ktnm7p6yHMATfWhXFWCedHliyUHOo/2ttbzrHfDGQEMvFfYFA/bRj+oYWJ/e3qiC34B12hTnR2o5t8RDY+dowsYXYNtczuVMxC1/LRI/pNpHiG0vSkOM2Lc+mwDSZb+dadO3eYXeXfIEgWDDT4GXOgHBvu/6vb7L9zUpORBVpmImjiZ0FAIxrDqKqiAc9CN1+bQv3UACoBjtaJAJhy+nytkurspAZYZmfrfvjFuvbEUw++Vz84yJH2Y9HRTMdxJJMuLYMARc1s2NPTqp9wTroPnNqOm23P2fIyberI8szQzJX5wz9G8ZeRRLqiALjgojJMOaco7etU95ER2eyMRKbEgNg7C0RzAKrPGdmsMvdxet9iXsXpn17N7UnmdGbdaH7rxq1/3tKSmvrb33t7xl497/zTzs18tRkch3wZbTD1z4qp0Cv2fTtocpYxG0Jyr2ZmRjJ09h45oDGt6h+fAq+E/HvDt132FvDNbdPNXT1aPrBrYxARdbmUiqrSoYUAIwigsa/2P+5fHuReBuW8hPj+ZH81D9osfrrN/tPh3i9cD8X9Z9dlqM0tsR7gAZXg4knmo6hsAaxFZ2mTc+n+s6C4M+rdu3c5wMsJSBQDLvPjIu+trS36/hMTE319fWT/27dvy9Q3zv6kePjYBbfKl/s/3KPe88r+74CmkXQoACoISJ0pwc80QO2CECb0PCMAekBazhyKCIDh/ivfn8egIKooY1Mu4Hu/53vDlZU/LSv7Wm0tZ1sxo+1yubj1CpdhM/Dqp1RMTKhIeWuLxKEGiX0jXRkqgTVh/9VVm7YydX7FVvrlFVv2EduRNFvaQdvB2LFYCgBHLTmAxK7Cm2JbeszCp1dL9pf13juq2EcWaJw0aKT+tZkj5H1x/2P1WHM94D8BH5hUTY2XuXHjfNTtxsarr702E1235Dzg3NK3mIxPRCJbi+kdpUzMAuqFvwBGFt0sLMhkdImMzfQ7cXNVHtVul+wcQwGfyyq7gJZQqF/bVQN04B0EA2re8tracmLickKCHkwKaIcSyORe3j7bN41lEYoqM2EqgwHa2NiU3jw8Nrw+yvyGTQ0f2auqkqoqURmII/+JYn+s7P1DtCDYP3gB4HYo3ISgGc0d6GDGj72N7lZNTeBiabOp9ufx2FtafvSjH5FxuA8EN1fhdE8KgKz+/TcTEx81NFh/rfWjP/zhFlmPtFxUZHInX8YMJLq0XlweAJGJTHH/dy8DyUGvrzvd7h6gBCOUAdkmOoyJoODCOIP96fXhaH2o7j91l2zb1yeL7M+dO8dllsePH2fhc9cNvsKMNhfcMy/HDZr4CuWZWzYxV8PEHTXYzGZ88UARLWkFX1mx2ZZttt+wYsvJtGWm29IpABabBf8PHnjmMc8UIjOl9Ip06ENjQwxKlMCXqDVQewkAzeqd+h/qi3lTpv3odSRi35kM79p/2+SeZJoEGiy3jo64JpJtQmpqYY5LaeK+oBVIA1KBDB8L6RkwUZjZgyiZ9AlkTYAJUCpk9idvhyrCM/A8u2+yO25HK5Rlhsz+OzTg+8B/DnR/SnqB/f3LDsdycvLysWOs6hDHAHRATXOQOQh0eTAzQ85gaVIeg/a3ZV3YL4+PX8kZv/9nx91jY5vnS6ovv2M2+aM/FwG49oP9QxEAbohIAaDdxd3jx9U8VKZtT50KfGsGTeOXqbiyCetWf//DJzv/kP25x5Ou68709Jmioh++9VZHnaOjoWOLQyqs9fJyn4nvHX7ceg/e6AFoCmCQngO/5MWtRgsL6QcoARDDVNh8OmA6qAwe3WRj9iczYOL7KwsODocsBIUaUyHNNnIHDu7DwRmNjL3gBeoxX6EecPLVA6bYmTJiFfDqAezGukzLzFzJzPwKEIcVr4GCs4j+o9FHcETWEpL9F7HI5KmHMsdaJrvV1flNalslAqBeGKn/U4r6VeaHHc1fNltHENA9HtKuGr52Oll+bW0aNzkg5SYm8mey8fNIY1vmK4xhyMb8W/N1MrMCYLXjgmNnbocixNwp1Yj+E3sE64WRsVktYpGzFVHIx9TuZ2wG9JIoukbi3qh+pfr37qNlFDbgIAKEFuZcECv4pz9Fc/MScfgwE5SKpUlAIQ4CFxbqLMDaWjhuakNs4snJmJpSgRJeB9KCebhGUpIxI6j/j/yIWfLT75yWjR+EfczDBPsHQ/2hCAA3oLiJmzTKQP7R9aYm7oJMGieBB3VFlvalS3RJ2HzloTNs0Gsu11pUlP5kBPIn+fltR6faT9ycKJrBF77AgqWT7tvzrYA3BlDRA/QCwwEkpoRY3YChAeGi/6A123D/HXAY7j+7a7AqNK3KeXKSOldYWMhtNrivGTWAurtzEw4qMeMwTsFias7R3886Ug3bIZRk/lGQHRAkK8NRwA3YgD8KAWfL2GDjEDxDgcG1Qf429SPn5pQr5hMJQOroqLW1NaG11UlyKHKXGckf+EDu801SA74Ac5ANb/Un06K03glmzru7NbbcHQJAAqAAkGPJLWyt/BKCQec0rO2IT2Y18SxKdBUpgcVCT4A8SAmiJJMEZfyNMVMAw28UjOJieQIHT6LESuZBMDJgu1pZUcLA12Wz3vz30POPgT8SrsZtaMBvD3TFYlcXd6hettuXjxxZYrHyrkMXADIXm8z6+nJS0t3h4anpD/+OanYxbyOUpysxm9w7hoxxxIxnux9VIb0KBaSufaFsLXynMgRg0if7f4pPb+AGBeBI2Qo3EKRRA/LzQ5Ao9hgKCJsv29zMDBuf7nbjyRzE1vT0lpwbrYWtbVobowyqNNNMbLhmb7dHDMHBEABaPl4YFrBgCAB9tzDM/ZdVoOQRgBke7sPKHVgN9t+5uQ13PeP0ds7Q5TQtGPs9mRWAZWU7EQPkefvkyEUuE3TMoQ9iEEtLsnzMrwDAbif7pz4x59b/S6//RFF/Curuwfht2i6t8RPRJXzy3BD2QQguwSfYShdPnhzc2PjWo0e/t7W1RYtf+3SNzCkCwD8sFhKyKht5oiKDJWrZ+fNBbdT9r4/gWjZ9XlUU9PQZnPHUHo8qHHmMF/NyLCIOy7Nf0DFiWZkEU3n8ZbJ3I/md5+GvZ6vgmBCFS9Mo8HQRZD9ItUlc3xmAFlbXJtDQiCrIeyczkP2BZe5Us7jIv2X0ItStIJIrx6wJtw/ldjomRvS/P++JSeI3QkY1MA6MVeER/6IlvshHNush64dif1K/WHrpIps1jQJA6g49OiHTMJw2appuyGD0SAt+rCJ7rZWulOyuw7Zu3m2GuP/jwU9L6HnxAgAj+bOGNRw9Far7T6ytydQ3LsAmv3OHpXwKuG9wvSs/xpEAmTQd4D4cZp8Er3ZNQKJafGesa3W54BcjrakdLVbOx+nrm3jrSn0q6lqUyb1ou9b0e8BHV2AHrsCAseXO3gLQ5aloT/H0FqaOaGVfP3TIUXbEWep0lbrc75KZlK1jnVHaHOa6YYuN5SCXKiry9i/9EgJGE+DKwKceXL0KVhAjD7pK5DvqAVWFLYJqc+ECA3DlGzHvFeiiJXkIMMuZ0dMPf8iUIJNCssqSzYMyz8sp9q9pQl8jkBoK+4cONnh5NvhabS23KlvOyWGSAGIhRgCsMI5nXiu6dqfoTt9Zy+q7775OuolByMgEqoDf/kPgTwHlCDOuARfMaoAOA8NAIYKAsL+4/9biBfH9KQD0JIKmft1XTVss85jnqF4r6GS1LCa6hPppZtcZu0N1/wWDz8QBLwAsh/C6/yKxYvT6OduKOxlQCfyu2EuMfwKZM+dz5vhvAW4D/XgGunr4l8mt1jRoNACm1jS1I5VTMVtTLa1WAG1X6toUkdcCmg9iOiSPKcEVYf+3gTlhf5o3/jV2x/376uFI9+5VPXz4/mD1+V95553V48VrpWuuIpdH97g1twsuCgAf5DJzbab/p/3N15pbWpbYYEknDG7J4YGhBvAAUReZQmK6n346+VqVv8ySYlKIfY8KU1/PGDzguYskd8oGJZYqQsdrcFDFdszvaZo8I50np0goXZlvBLIBDSjbd+ov2GuS/dzcUmLikt2+lNmOx2rjgTAsBHuMx91aN+mmLWca77/PYUB126q5hyUIUHgT0BF+/AHgX+2tAToM/IMgHxzLwV7D908pWiDvi5GITNxZwOKwiU1x/FkpQxhC7Tlx/5n8Cdj9tyEkvGgBMNifzIKjDcL+yusJAWQQMf0JONsKfqFvQ/LgPt2uC4AFiAG6fdCC7o80GN9wVihN6InEpMwXRoBWWFutFICszay38Bbm2gDa3wP/3rX93QauPMQV9B/HZbR/wNECYxagppnYQFOjAHDs6/r1WNu5d9n6L7EDcM8D6OR9SiLdf5euBGAFK5OuyXZXO5zgxDby6sKC8tqDQT2QVCN0rLz+lRVKrzyPm96ALJ1TXhFfCQI8gwy/FRQwFyQP4pZHsjHdRNVSJ6+qwZWkz8jxLwWa4A8shzfftJWVzTl/ZeH3L+LLauJTaAKggZjF7BSmhjGMjBwORaoRFR7Dg3jsMzKAGX8aoMPA6eDZXxx/HpMLDfbniJGZtFIw0ifUL+sMFN8Z7r9JrIXH/ReMemlABT5TsGUaAsA+GR73HzC2AHOOj3OAl09b5XZM0b5JhHMuuCCDHwMgq414Bp8CINYeMEvwZhewsIQlQNbk+/bvVoBWZYmtidVz1bIqxZz30f3X0B1zGUAtUAbpMaS80lJey/8vJv3SP2aS3Barxnb1qioZftSgxSKW5t3OqxqrNmY2+AA77hW6ubnOtI0e9EZA5UD+F+WJ7bDbKQBUX1mhTZpSpRQKmNZ77TXVoiYmVHixvi77uDHdxJOrSyyHzu/mUAE0KfOP5bSo3rS+x7GPx75YSv0zH1VF+2mLlG6J3YxR/HDO8/A9GrX/4wHmr2bK9z9YIJkfnceKihBcAc2fS8hkN6lfDFYreV/cf/aygN3/OYQBL04AjOw/2yd7qXn33+w0cIBrfbkFE6d7cjoQfIB7W/IB3NyISYZqyA67L9Eq2Wb/GHXEPZgHb5AemOwrBYuFvh4v5GtimbA/WoB+sGWwUOiAm2F/JQAw3KCTsjerTgVITt6zKTscpF9FkohTo73+W6PL5eJCCq6mprKyCVNcKJrBQ+b50PYJubnK9gfGVkMSJDHCo1hKaKtDr5AuVbXN/uf81QOzlkwMPMCD7lM9y8e/QA+UTTFAAdB2fS9ajOoqA82hRzqhf18PyFHYc0xYAxqCZH9x/xPy5kn94vvT9Qn4xjRTL85gxmB/O+w4eUnc/wAaqD2c7r9gSjQAnylYFPvi/gMyB5xFSmbhLnuc38lJPhwK3vX52pz5w3e5xbHah4NeIX2unByfjmeelwDQbgFbaEYz74V7JBzH8SQk+aD01i50UeoYBKD0uOwqtXsK6L6ifmWtT7fpN9+LxoEiq/F6ivlZFLJLAKkY8wuw2bhzeHpGhmW3VAFXs7e3t7PcuMNVXJyHt8KSllxFcEHAi4YWinLJnChpzyMY4VCiFdZpTLO6xfmurq1+yv6F/q7JhsSvt5S1tDNFLxOfTCPaz10kIIHGZrQgWwLZ7T8BLuNlh47QwIFxw/ePz517Qv1uWlElnL6bRxzifD/81tT2EmJ0BtWYj+H+AwG7/0sIG16EABjsz05isL+5bK8JMiMtlZTQhxpub+fOxlx6zdVefJ6t90IwPniP+0C0trY2NzerVWCAqfnmR4CLT0OBttttH69//AiPClBAH78c5YUo9N5izwYb32WNy6pyJCfTv+AP83mV1m3bCrgHaL6I1YQGsGBkU9TBwSW0t38rMTF9eTmdq9YPH+YgOXcx4VAKd4Q29s9guVEGTp0iTakyS0oKjX71l4z6jQwTyy0rSy0160Qn652JPpKtLGzMRGbWqay8pjxrk1Wxfy78YxnLk2WTM03ZW41qrz82lfDsBkqvhFPQaFhZpHwrA37vz4sG3AziHePtWdrz9Zhj6Ow5v+wvjj8tLuf2+fM3z59fSDlvb61yt/ptHixMEnYxihE4DPZnW2HDMeZ9BrDhwWL43X/BnDrlZwe6SEb+h8kQ8xt/mgUZlp1yfBxzc9zmgQMATPEz1ZOdnc3N4DgpiEt/mfPhHm1MZHODezqzaGhgdZDP9l5wlCrjARixjLRZ2qgBP1r5UQlKKADUszzkMRqgo6BDd8BBARjEIGucTW7V4sLpV9VVTpygz+xPAOYDY3/NBLHqfjmvoEAJ0+SkPG244w85HF8bHk7PyUlLT+dMKkMAuIMeU2qPFbpOn3adOcNi894i5SWSAQ0hg1EcGwsdOaYP+/tXPsJHD/GQKaBVrDqtk1VVJztP5+Y25b5y7hVkYk8crz2+2Lh4oNF5oKnpflFR2LaDpi6JYXlYtkYytrXS8cLxDfiCB/i2D4fmDwM//cbsLl/OFV3zLwDMshm+f0zW3z937ttZ56bvnpu3V9tdcPlvGFnI4hyRIASgG92GAAAg74v7TyIIxv1fRdjR8yLcfw88hvuvBqjCBRlcWVjA2trGnTsff/wxaYtZiyNHjtCfFQHgQxooCXRmlxgZNzbKfHOzu68kYfWCq80y3GaZa0v0LN63tgy1kOiLUMR8cypSRQCccNIlHMUogwCVz62/yKvwWv5mtbcAAwGwv2aeWPfiWFL5+joTQapJcn/HT+4MaFo6n2PKCbJUUAoA8/7M/2xtzeTnb3LiP7WSpcUbslh8FZLA9HsHATv2Hwd3/oKkYKebUfyWljhuRTGgs7Hlco2wNHLSmE1ki+6src091piHQ7mAX0KPAhqR25j7SuMrBxpdBwoLDwCt4RKAZCSLUdyNh5dyKPiFhl8GrsAPPMB3nmnJ/xQCzB6+csUv+xP/zPe8WAbjZP85zL079duHzjfcPT8zVzPn0BzYC1/BV9awRtpSYyqmMYlJg/35dfH9xd8MlKTF9gPL+Iwwhann5/7L5j/hBfM5Gxtq1gej366u7icjAdwKlP4sh0XJZcxmbLEH0/WtqFDzzZnOaGpSymEObRZL24ULbfHxA/wKswA9PYt8WMr4gzZPG9OtFlhk6uc61tWQclEdfw/ZglchZfpb5tZqlv21cPvXdBI5ZYY6xfzZ8LCKBrhf3urqPEtxa4s/mZwhz7aRZBFviJGMv1u57PNKvt/77cB/xn7it++8dk4I6RCWA9mfZcI4wFjGwBaRnc23PJWVnTExuQAtzydLH1TsL5bdmP1KBg5ADM1hEQAmf5i4oD19fJ3dLgKww79+DwHibYSIGvhFvQeYhYGPgIPqojU4DLOohcAYaudIvVrNCFUxV8EG58Z/VjsvohbBw/d36QYK9beicwpHYMlTvC/uf6AQ938dLwF8N6Xtp77oW/giGyZpUVEw+03YwUKWSd8MqIeGwE07l5a4167iM4uFwiBzDSWMN78Kj3gItIkxaOD55Wlfwppzc5x56nC5ZMYhyYAiZzwObO90iW7q3fd9FfBJZbvjfSj86h4TaClP1OKxMZaWiqAYHRkCEBuryuzQIeodRWLvmT8fYDdYfb3h1cnfxv7go53XzpWXQkBBAU22/RUBoEyyzkUah4EuQDTg5O5DSo1eloRM4BUYGoC7oQsAUxYJSIhHfCxiN1ifTidtD802hy8geJi5Yr2ykPFByOcO/ipG6v9hK7K65UN0GEg69ARTU4MRANpLgcs+g6FejPahhiZLosiMKv28T+DJc3MVpclGTBL+6jq7KeleNn/+/+y9B1wU2bru/S8FGhAkJ4liAAOimJ0czz5p9rlnNt64z3dzzjnnnHPO+Y4n3JmTdpysM86YYVRMgAhKjgJNqu9Zs37UbYWWohsanKlnv7umraaraq1a63ned721akkezNY3uj32h2kQF1qfWacwNNDfL9a060GqdPa1mboGOYQihhV57uG/QeNy2d/C/vjbS69lJwMV4nEBUJ0lJcXhHW5cHXKP9YqyVu5yiouNRV8rr9xsKSASWx9l/w1YFD6qAZ/EKQDek6BSAvskaPQlAU7GXpcrLQANshXJ5TTGz/6xl+MKt86x5TyN57DARowxPjbRAjM8HTgZrQR5LZxsAdcbRhW1rCrS0uxCpTb29QTAvtJsudMOZiLY/wERsDKgniW32S4I7PnMHu+vBPuH4aS/DhM/7GhGfAgwFLFe6ks+n2HMh28as4hbAOy7UVxcOyUgeqMP4RshVgSZPr+IHdt5FBsW7Fr5s1jchXNst3N6pp62RK1/+G8f96CFUAvcYC1gc2HxwWP/L1gAT91XHK6PfhdivSJA83wEINvBKmAD0THIYD/9QwxNMGEnoHvu51OPGtYtRuAcWPbvIYDBDaw9rbgdIQABAiwHTdBsbHWQxALYVOc441e5ep3r7bTz5VIPFBWZD6uMAN58fst3ATqgBWM3n9pI3lL/eRgjgXDX/3H9YyP8OmPrBFnw22U+6mp9w3FxH0u1neb0AAOTTHbQcZ7zH2z8yH3hBb1tjh//cerq/JRv/SNAgAABAiRFe/B8mmmzFl3pOHtesfNc7LPnXxUECBAgQCAAz7MQd5hpS04hcw9btrB9O/X1Zhai4/DVQYAAAQIEAnCSBagwtnGjyfraBRB27OCrhgABAgQIBKBxMfYX7OoKoRBfTQQIECBAIACFPIpCAgQIECDA1wAbCBAgQIAAgQAECBAgQICvDxzXdQkQIECAAEEEECBAgAABvt4CMAz/Hn4EnEetBv48XMEvRuE/wjfAgTT4/+CXiAbHh5XDt+E/wG3fJ145i/N00dEB/xCOgQOvwL+GfnxhAv4L/AQ4UA9/HW7gIeYaSjTG4H/AX/XfrtZhGR1/9jr8G+/ufg5/CrYtp8W0w9+HIz7OtB/+BtyIcnGvwb+DIXyiCf4i1IIDu+EvQTP+8Dn8SagCBw7A34q+atl78Idhawxd0fFnb2CIo48n4R78IzgOIfhN8A4eVoluDsPfhTaWQBj+O7wRB3mFDHPyzlMdARTA8XnbRoCvyote2ozRru3TW0bXn7OVDTnGDBiEIWMGAaqssTqomD96PgGeSgHYDMfhmDF2E+Crwv7MU7+1u1/hV6R57L8BmIUhGJQlpMTrH1vnKTonwfKy/hEIQMo89R+HBlYHAX6RNcA96/5726eujP6Z1rJ/NkIE+7sE8DTA2kojK6oABEg6FTUJ8D2ioAb2LVjUKspxRuE7RCANfgJY8HOHR9HWRksLIyMYeCM/Bcd58dHfwSkfZ10MGzaQnExaGllZ5OVRUkJ6OkvAx+mSkqiuXnQBVwfcKAfogE95BC9DnlfKaCeeWCSlUg87gWi/9V9FDk4yyWmkbWZzHnkllGSQ4b96/KL9NG1dHvvLXq83d8Q//De/hdjAhhRSVMYssmwZ9TluDXCIgJrwxYv09GDZnwM5bKeRU4O3GLzIkJ1yrxazf7+vSm2Hz+K/LA+vQfaSvalpwXpCu2AvPvH5AlU/ANu9k0aetWqYqu9RBZdh1lsv8ciRGN5H0ELLda5PMRUhLNvZeGCpst6DT/BACN7w05tsQ4sDh6FqkTrxEIZ3iBcLSkSjJwC+NWAn1PjrgQvrJg0a/SyKePcuH3zA2bP09WF9f6qP8eIxji34XYxd3xMAkb5de7W01HTD2tonLGXn63QpKRw/rharQ/k9wAINeBnw1exgHH4ZD/ug3tdvF1bRz0QVAJFjAQWllG5lay21IsoVE4CxMaP07W/TBrNou7eNmnb27cM//Dc/fmZxAUgn3StjNdUqo/7pK+/rLk2258/z/e9z6xaQzSs55OS8BUgABhk6z+AdTCt87rnHVoZ1o1aqpwHx4zX/vSlSA3YZs4hBAw4Yg0XJTj2xqoiqt6nq4DYG7NmjvmQ0YDnoo+8MZz7iozHGcKzv/2NUVfkrq6cBKXDSR2+KXwMOweFodbKiGhCyR/clAJ4G7Nv3a+EkvOkJwPJ7/gh8NxVO+omau7v55BM+/ZT33+f69f3sF/Uf57gslVS/J/bOSlQ4jiHrTZsM4xcWUlHBjh20t3P4sFECixhOV1amHq2mrMPaHu3/AHfhLLy8zBN7GrBPtrzfelWUGjUCEDlmk11IYQUV29neSmsDDbvZvTICIPa3Nv05kNdOZrv5l38B8N/8SI0aAWxiU2QZdUEHOagPvjRAcKNqQDhMVxfXrvH22477LcP+8/7FqaEhpAGDP4TaExw6xPR0xI+XKlwbfE58eHW59XgFWmJhf4vPoB32w4Enn1Usbewyt3+I8c6Skti1SwH1soIA3cE73DnHuSaaqNpK1Td1UFW+77J2wAVojI0ClolDMr9nmYxjDNPTM/9rAv816yebeM9r0yLKlV+71MFTnGFRvzWx/y52ifetWacsBrySmsrJZ2jEPi7pYdadnQxPDoWHHgw8uHNn6NIldu826jMxYYLyykpiw717nDuHFYBXX0Unf8xptPW4rvAKqfDMwuWgw4SHGe6h5zM+u8hFucaddGrPNNP11BM/pLeytraa/1jz5s9t/5u//MtWDu7eVTNb2QLCYmWcYWaSySGGHvDgNrcvcUlNTp+N5whWA+IIBQzFW3Nz5tlfbQvm5rD7JQN4X0U9zAFfu1w4D6fgraGL2a1Q/zTO8tF9txqQn09f37htHsZqavAH3VO1KutZeJJiLFE4Ia062AiyN+Lo6yf87Y0CF8bg+/A9bbvP3L6t0Daf/M1s9i0AkXqxG08DcnJWUABcIjE5aXx/a5cuacBBYz7W5J0RKxoRSuHEY9H5LLMTTKgb3uNeCy0XJi9cuDA1NkZSkumMW7YYRz42NDdbATD27LOsf0RWUaQAWHK8z/1b3LrCFflTAwyI/eU1q3CVVBIPJJW2b/f2FhTUFBQU3N28+cW2EdvlV1AA/jUWi5RRbWCccbUBCdtNbkoALnBBCufiKiwooCCLrFg1wAXHY3lL8dq6WGFwBwcd7Z8LpZGbq/1kZrpPvj8R+DVP6knD8JayDvxN4M2nUQO2brUmAcC2EMmAfwGw1C8NGGVUdZt4AWgEquEgXjOI8TAL8PKyOPUiXOjn4ve5ffsG+Qrc5bTtZKdfAXB5FDvjLE/UMzjMw/P9z57dwhbP96+gIm52W0QDbOfvp1/N5TKX00l/l3dv3JC8qbUo7jRNLga8/o3Xf9j4w3O/d9YKgJSgrs5HRi4B8F1FkQIgxu+g4ypX88jToKqI8nM+zyW3lNI4BcBz7hzXKTpbVFhYWFBY2N46Yrt8vU0Fr1TpomiA2sBDHqoNiC+aadYde5/3FQrIUVILlNN0hCNAzBoglrcaQMGX7D8/CmFVQVvttOYyj/8D34KNUUvwU0uw/yngz3o/ego1wGPsy5eZ6uqy7cTE5kVF+ECk+++JSeJ7k38N8CkALy3Lnb42woXvIUfgwoUyeJ2GAxyQBqhV+xIAd+nzOCv7wJx1/K2Jayz1y/ffwQ7iQx7eyXIXErBYTFF/JpkiArGbQgG1Hfmm9+/HKADT4UOHwsNn7509t9cKgNmWlz/KE2ukAf6ryEMZZfvYV0JJMsnSy1/hV8SPqqVaaiUM5ZQTE2z61/ZtNcqSYv2vJHXLltlbt+xu2b59Kx1jLlZGuflim73stVGm6FpN8AY3lOdQAQ9z2MGJWQPk6Q8NGQ1gZ2QCAMv+ngB4wsBvW8j+wnbmUblECc8v9qPtC3loPSMjA08D5JB5iSI/AtBHn3X/de9ISkq8+y+ULvgUU92XEoEQlPpv5b294n3L/s70dMM8+6sj+5oH4OIH7gr2Sl2r5/5vmkr2Rn7qqEvAE9tppO1hj/wEebVgAk/roMWGsBGAQzXhGrksSgZYGx31X4PrEWo9ysaL9LexDVDv6qKrm258I3r6d7qCirLSstLSUsrKSE/3Rn0TOQEqREhcL9JXARULyhtQ6cQmAwzEms5ichLL8qNjjijeNUNAXgRgtQHL/makQqiALNkKZdQcnlo8ytueRxAOsxQWH/3fvBmf2LhRJuWwps+x139iuru74MCua9nfEfvfv6/OZdlfWxZDUvyPPMfbWK9e9Xz/pJHx4/PP/BziECsEJ/qTGp4bmEuuHfANh03XnZrCdWNYBVk/PFQ5PXxoemjIHWpxur1kwEsvrU4NrmoVRUACqWigmGJFAJYZRWLxp39TSVUbrUyqrKyooLJS1n/tWuyp4Dg6nDSghJJ88tUSFOuMMSYZ0Ic88lgOJp1JPV8AjAxaT38sN6fioWX/jZMIc3hDQGO5uQ9NEJCN85A9sBljbAKDTbGzz9ON0lJL3cbp7+4eV2vwkwqeYca6/7IY079paY/bSvamyH3Oajk4ov4vfX+amuTKeOyvRuZLANwETzK/fdvz/RW5HOc5z/1PJMElkyzplwGOYz5pK4sBc3Pls7OHDs2qgw/9kB+eOzfpJQMaGha5FvvJWfcaYAUyk0zAMuMEE/GnfyupEevLUrWxZgSAOFPBLrFAPV4ykEKKTQ/I5phjOfiYj1Wwaaaxw0nGdPez3zIs3wlv2f3Thv1FL5u+3D9LutlPlrVXPeb/Lcssp7PUHXXBecpSwRKAiCBAAuDD/R9hxKbyjJWXJ14ABMfPQPpncAT4uyvVxJ27d637bww89n/CQHpSwgclXDx0dhret+5/hxlvFe9b919cvBpnjdZdRhn1GC03V2Rto8aYsfcQEgBjp+dOawjISwZUV/vIq6xLDUgiydNI0aK1ONO/gHH/qdSW4mJsEFBU1N7ebb/fv183InEuyRRT8iJlgFUCeQb4xk1uypE5zemwE8aFIasBSi/knMppIrsJwYFb2P3P52h/D7mnsNgse9MW2BMA/3B83NGnNBU80dWl1rBkKthz/2NP/4ZChvTT08nI0DYeAXCffJMqoRFjBn8y/qM7wPi4N/Qv7qmhxhv9JzqS1oz9+/ocO+FLduuWEhTeYz+KXBL8Mqw73Omks4ceMBxdVhZ9VqY/Fi3hkNEAd2jYGW4eaPZmBsgkMLBOZcAlKqSOYcIywDKjLJ70ryyffOv22+yLPloNmO3utn/if1KYywqgjz4xs/EfQffKRjxEwwJu0W/VhC5zuRWoNt//BFyaYWCAb/3bgT/xb+eH0l7jt8HPwrXkpG+9ff3n3qbVHi3riFqJLIa75fhQ9acrCEhL8zRAMWHE86BRBKCffhsB3OWueDz29O+WLeYRwLw864usLPvHDh9hn8f+otM88jz2DxEiOpLWhv3FApb6pQHNzRIrb+Qnh5xEsv8009e4pkcbr3JVo9tqMHV11NaybVuctZKqHMYQQ8MMa3vnzj1PAF55RY607ZRrLwP+K+o+93vpteP+YqnNbM4gIy73f2rKsr/3mK/+ZU3tuL192v6VBCAxuM51NQDRh+5XCSU24SEB8P+gtpRjBGeERluZb4vluxj6Oer/wJVs9g1CNgafaj+zg/xsLrk5vParUAMO2Pno8bC/fw14jacAkQLgJY28WcHRHv9/5JebNrFcyHOTb/PwISUlsvXM/g4RuH7dsr/Zgsf+1rVaQgAShe97/2V01Dl/3rD/+fOVbqU38qMqX/E8V/OiHx1D/WOMPeCB3P8rXJEcFe0a0N0/etQ9cMCEgHFC9CENsAIgu3hxbD4ZoFOsmEvrOAv/sfLsP8poCy2ttHbQAeg2FVJYQAExYN6338AGkb01LDZt8oKA/lu34kwF+8ccc3ICNNv5Epf0AdjN7u1sl7MO+BeAYbKHaRyen4Y52MzQVWYmTmQ3vpnDkez5Yg7SK/ZXk9jGNu3UV1jHXC1jxw784LMovcG3Bnwf/h3rHcXFlsaNU97V9dALAti5k0cxy+yKzf4V+4sF4sCZhR+dqOR7xP9s398ki3K8vj6P/QmHRf2W/f1M109K4POIpxDeATtcdedO+tmzO365ft+Vfcdrjh8PHdcdW41o/xQWn8se8/2VzJRXe3fz3f4t/31nVW5t7WYNOh854qMb+utttdQOu8NDjhEAzTCKTAbU1BA/NmywtuAfK+37K6l0jnPNNPfQk056NdVibfnI8aV/t1r3P3J6uqjfaoDCWPV0/6ngW/jHLSwcptwpue0qoHx/OQFnOdtJp2RbnaeOuhpqeAIOEYkRGDZ6z4xl+Q6GPsZkgMnOOWRSvXDIphks+8szMF+hr+oheRmDM3/cB/v70IDfAUNPTSpYAoDnOkgAorn/upuP6MYawCOc95Zk/0b/L4EIPfFgHvt3dpZT7uV+8YEkN5E18w7eM9L1k5OlP/ZrS//vjoqKmrIDDcXP1pC1SmddhP1d3Jn8mfGS8f6S/l9X8sef3/Kz5eV527eW7K2sLDHNayMrBDsQZDv8xdGLX2qANaeoyCU+JCVZW/CPZaJ1wUdvprQEUo6/xsc0SiYfGdjP/j3sETmKuONJ/1rfX/EfEXDLyx2rATk5bW2D/lPBp/CJJpnXk6Y+nRrdPdqzuUfccZ3rYcLP8Zx9GGG5TyEPz5v7yFQvJ8fOASPHyxOoMWibRZbdn0zyMp4TrPTB/r41IPupSgWPRU8FP+7+W9FYI7yF8C6/B2NdLIpkaCQa/tGyBj489lcdpZHmsX8uSyQbEz4E1DAJDVjMzl7u77/8K/8nP/9sbe2OsbEcBV4vv2zpa4WxyW4Woo/M0czNPZu/0/7vfzG7qrSgYItchm3bTAqooYHSUlYCG9loNcBaa0dr5KviQqH4Dr4R1VtKCo6Dq//oH7IYm6zwhSxyYGSCiX7673HvBjfEj4DI8ShHrYMcT/pX9Gfcf7dCWx6F++UQkGRg9tKg/1TwW/jBFVlkZ5o+Pj32v8b6d/dn7c7amrRVYzIa/FHnOcIR23/8o3yIP/Kz/JHfjoVlf20rsM/5W7LFsr8sx9sfU1jmxBedPi1Qo/Y0oLkZr/1ECoCaqHX/Tfo3Pd1Qv/3BGqF/G40XshuzeQOcKLe3cqXmdnR0eLlfwGP/nez02aqSEvuOjO1wwAoAnZ189lnf6aMff+yKtTT8K3vmmWXViYsPnPTeZrcAM+GZ8e7x/u7+v0qHCO5W0ecmulSdDg+7L7xgnyCOv5/luXmHnP+XEG5qGvQSwipv/D1EJiGZtJ9ky8epBezvCYB9UyZQTrnIUe6/BEAOsnyNuNK/bq2NAJyFzdsGBtKAS5fsL/wIwCWWQGolJ89OnD0Lf5yWGnBdw8O9va//yut5bXn57flbDm+pKq6qoWYve2N5wGnMGM/A6ci5vk69a1g+MgKwQUAO3v5lt2oHi6+FBkQKgNeEIlPB9tHPx0f/U1PX9NVaDbDN/7BejHd5YsJjfzUrkb6X+/VB/WsjAPMaMDPjNjc7GzYwOcl5R93SCoD0+8CBlT/twlWM7J2ZYcamAZQHrqAio/vMpe6PGBiQPjm6moICrxm5xAW5lp4A/IAfnDvn2lGgrCx3717igS7Q2qT3afm4YTdR3pWv9lRCiXrVDnbI8dc/de3xpH8JUzlVaWcATC2kpU05Ng8crqgI3b1rf7QCqeCTwNG/T+VP2JPNzXH/PmfPnv+VN3e35RU+yKuZKX711YrMzHT84QqP4mELY2EeggOjdq4vMxPJ2VcMy98l++6jQ0AapND+MDlXsPfRmR/ZdnxNX/naaEDkjK6OjsdTwbPMLv78D6ypAMSrAQ4+4LH/zZsKWD32Fwv4jyWT1uolSeJ7KZi18atXpQFif5l2686uIKoiP0aBgkeRmvSgn/6OL74wQ85lZSYXLHpeof5ykIPeE0GfT34emRAuww+qowlAWhq5xtKQ6d+xcSO/BpKJgIPjLZZSRFE55ZIxWfyzf8veKhP7h6j8VfLsqRbQUqXVgP929+5fnvf5tGMluuURqARcabxu9Oxs//f/ykcfdYbDZGSQm4sCP584tXCAa+z/MmZpHoYwGeA/n625XpeQWUyBYX+1BLH/fXJOWSnFyczkxRc5ciSBb3pwYpv678ZxQie+VLAEAFF/ZCrYc/9VpY+8QWINsSfi0+rNvWhpWfS5zzLKolH/H4WTcGxtBGAhiebnu8eOORKAyUlZ7507VgNsHCD6FRLm64iPppnuoquFlg46uHXL+JxdXVYA4j+zbQKRCeEbD254yYDsg2T4Y+mFMKqZxsk0MJZGcnLs3MhPQXJkd/WWSyykMN75GV6/hcpTlR0YW8Bp3j+noZKcCrFyW9uYj1SwD9Qt+CSxHBigX6KfeuFCODfXlQDI6upiFoBBxn6A8Br8WhhE7P8uOfB7oQUL/gUMAl+Q8wV/BX4DBpw4sfR5nQT0yuiTwLW179tRT5HhD/aP9St7HGvxpIKHOzuxDaKnh8LChe6/hGK9zadfeQ3o7/fYX+SpgVnL/voQbbJYWZS0c9JaVo1o/tgxFcDGAe3t9z/7zAqA2ebkkLCXwdmHUoopzicf742gw8OsKDazOXJ22PXrPVlZTna2GQ560T9LLxCAxnTwLCb8yIKPK4yxMS9yT0/fdGnTJf7XJfgr0d94lo19q/0tZq/iIxUcSyNwa2sddSTZwMDMmTN6eWJeHlYDSkvdJd3mFh7F7Cxzc+wtc/dyEX72ND87Q1L5/W9x9k3K6ikDOrWfn/+56Q19yXkv0vYtyl6lzIEi7HsHEsH7MYQCqaTKD1AsaF8DJaEbYQR/GGXUvlYPML4KabIYHnaI1ACvQQwUJln3X1syM22YYMd/vuIa4LH/vXty+R957tNdXvtJWuOq2bHDCoC2WgT46tVBbyBIr88MhRLn6CSRFCJk3wpn3uY4NcXMjGxln0yqoMJqwHwyYMpmg7M2cIAno4HFsCstgv3T1uuAcET6t6L6Nx6vhE/haPS26UI3vA2VD7j6q+/4TAXHUM6GBgmAtZ6WlvPnDfvn5cmcZY+lVVYqp+/W1wODsssMNf3FHX90RzY/nkO6Pe0XMPiAgZ8lZ7I9548fzsZSFZnGbHyzHpFFlswmflRTffT10CO/Xp1lSfbXX+rv1doB+/yz3KA4nwf1mlPb/qS2lAWj/zYIXp8asPh8vr8JjbADn7h0ybK/PkibPfbXwyYxeA9JrCGsKtbVWQHQVhqg12d6CeHnn1+5E/mIVSeZnGJqllk7IdB7rH4FR4GEfezzgoAzs2e+TAYkZR3fmJ2UtDW2FMcfN2Zwfr0mBT0fnl8RTx4xT4BGd4pcDIqgUvYOxcX/6cGDWFLBPsrppqU5ERpw/XqfBMDash/Q2rbNLSmx76wffNc+BfS7c04eMY978k0MGGhm8Jr215U0lZhHgHgVcrHsb7brFKqPQgqLKMokU5zeQYc49za3a6ld8hVb+stOOu0b13UEbWOIACBybUe1o4e2Rd29m9K+fcHzP+sE7tJh1xGE/dC4vFzawuc+3QM11MQWOyatC208ciQyDohMCB88iB/E/3YO+zI40QAgSjb+WEYGq4PIV0Rc7XfOnevLygplp6RkQw5x4OC6fDCks9NL/xYW/tiXT3jyoyU+AuOKa9hJYQ8etPtIBcc+DulpwPe/f+GC6w0E7dq1vAZmW62dAqZt0nRado55BCgDbx0Ya527c3fnuHYSQA6W/Y2tX5RSWkGF+LWJJlH/da7rswj9CZmhbrqbaW6h5Ra3AP29jqDjxD8rWM1APNjd2Xm/M6Nze6e6UuRa8uub/Z0oO2U+IHr02H9gYAc7Gtyoz306+ELSmj8PZhlAyQArALLJTz+NfDBU/XDl4RAJ9f7LXL7JTRtO2teBUli4OnKHeCIyIXz7dkpWVkp2YSgbXoENy3lMo6+v78aNG8PDw+np6dXV1eXl5YnXAN/uv/eiB389R39q7dKltrawj1RwrKiv94KAyfOCHQgy26KiZfd0bwpYNiU5To6IHgMePsR+NTm+IXISgAs/aYMA1i+2YmbJ7WSn2Pw+9y9xSRJpl1ErppgFuMc9zRs/xzl1KzvrTb/VEXSc+CcE6L7Q1dVz/37Pg5zume715/4vl/1907XH/jduqF15T/6kkRb9NOsuAojCbSkpkQnhgcuXI+OAePy+URjDYizy7PaRhjHG1KBF/Re5eJ7zIhn7ICrV1fasK6kBEd5uCSURCeGSCxceZr/8zWzIgiO+b+GDBw/ef//9ixcv9vb2bt68ua6u7vnnn9+xY8eKNFJ3pdO/yckepUfJjrkLEtxmSrBRjNmbNyUiPlLBMY7MRSYDutrarAbIXnuNpKTlOXmieBsE5Ni5vk42Lp4wDAxg2V/asMG1Wm/Zn3TWL/LJ381u3QF1ljOcUU8R+08zrfoSs8uvzyIriSTtUZO2a2tLJM5yVhGDfX3IXvbWUmszyfFrABdm+nt7+76Eide96GA9oA/6wW580bKDkIdFHlFw44aX+6WPhv4Gy/7lpEP/cqg/L/Jj0jqaFJKVFRkHdLS0RMYBMcd2p7DotR9x8OBNBBNFXeWqmixiqcOHjZ+5Zw8FBauaEtrFLu8VER/wwbvvvv0uy8O1a9c+++yzd99999atWyUlJWNjWmEwd9u2bRs2bFh5jY4//bvNuv9ORobvJyTm14nk5k17GCsAK39DRCIRGtDcPOoNBB096l80I8d52GmJfj4CGBhw7H7r+8u8Kv6f8APWO5S76qZbbVUOmrwlyYA+y9NXx7HvzZYAqEPZl+tp9P8LvrjBDeAoRxUoiK10hJWaFZx0mf/TLxhQtRu7V81+HcDSTBec8s/+rzseLf9uFsPAgMf+Ysj6U/WG/ck6wFmM4eAT+z0BsCdLSkQO0L9nXFQUGQe0tNy17C97+eUY1+c5FYX9rQCMM25fdzPGGMXFZjTgyBHT6UUHq4/Ip0IVLLNMyP25d+/elStXXNeVBlRWVnZ3dw8NDUkGVly44hr/keG5/8tZ4q6sDPubvDx1dT+p4NjLtm2bupk1JaIiB4J27PAf0WPdfxsBWHtMGEofewuQg/CqyzpHGmmi8jBh+1nekl1Co4IKxQcZZFgBGGVUHpVuuT5vZrN9sdIJTmi7gQ3xu4ieBnzrSv/rL/ZP1U3zzXU2/nPKY39/zCz29xBNAK5f59Ilw/4dHaUvlx44ldfAhQNcWOaATz3sBxYKwNprQKTKe3GAthcu9NpRIJmmSsaAX9Vx/uuv8l+jv1J582YKSigtNRQgx//AASMAycmrUtRHXd1kkiMTwuo2y3x1eXIoFNLgj3IAjuOkpaWlpKQkRRuzSHwoEDFnJyfHSwAss615QUB/f+ypYH+IDALGmpqsBngy4Ace+yfNpFpPX8z42Fd7yLZfPXXvZiii6HmeTyVVF7+FLXLwdTc0fCrjUaiAGpGxL1ZqoEHKoZ+s7Auib9/u/N4/7fRe/WZUdX0g/G74Xf47Mj846PhayUPtpqvLyAB0vtv5n5EtF2VQv4o5gJ8kOlLs175RW2sjAEDbs7Dpoo0D5J2v6InF/qmpZGSYAaaSEtOMamp09kSVE/t4nI0DJplcboxcUVGxe/duufxdXV3y+pUD2Lp1q/TA/0X7v+I34J3lNgPrsae2aa9q2mZV/BOe46WCdV/27pVCt80fcmREqh3/bbGlihDljRutBugEOulduNBD7nmbDPDVFCzFpwzyDTZKtXRzI5ebzcrScZxULwLwU8UxNKm9slXUgFd5tZBCla6W2g46euiRB6PuOstsEklppKlo+oMKKrazXeOc9dRrPx7iK2J5OZbwf7IAeqGKhLv//nuTDzgyx+85XmXFkRSnF+L9phFiePW1wX+Dby8YBJYbPjtLWRnh8DSchXTY1GLiAPnoHuI6sRUA9Uv7Fhi7KHl0xHu66OPd6ifqP3nkSQPwC1tJB8bHx/Py8gYHBzdt2lRTU3No8cWMGuO7Yu9GGXzbZ/XY9G+drN26OKpd0bhPOJFhv7Iy0unJyVlohzZsJmBFb4uHwkITgKpJSAPgIuRC3gPJwMInkhsXFYDiQRqH2MCGUkojlmRS2VUCRkdzwLD/Rjb6rOJGloM9skSMBanRyv3vpLOX3hFG1HTnmFOhFB9kkSXlU/GrqdZn/Hcq35mA56tANgdbZVmJFQD/vckvFmpAY0LYX0iKfczX8fGqmhT7RUwQl8kdm54GhsDEAZAuC7M1tEInlgD4GOpZuXKGIcRiqKNuD3ummV5ms3GeffZZ8f7o6GhqaqrWM/B70bHfGVsGH9WT3M63LF1PeS6wz7bmLIwId+60LaFt3vaxas1v2zaZndIlnIdcKwNhqkJLnHPPoDEGsW9SIgJlZdafycE+/u+7ik8m3vf3AfkrMvuKw1FGIwUgk8xlTvdd3k3aUSWbFwD7IUFY+d6EI/NxjldZJSTFmPdzoqxZ5muvb1gPHYMuLw7AWGHsJ44Jq386+YyhmI5T8CWWe9Gh1a6ekCXqdl/xo++W0D9/0LtQ4eu2xBSVRejVEFyA3Hnb/ORaHYQhGCQaQiHL/jK/COEboTV7UUT8rcY/QhmQAAFIWG9yfNBpKHEC4KNfOqwJbs4LgLYvQQYB1i06wQpAzwq/Cd0bBYIKEoTbNgLAbF8iOgbnbeYJxbLsn008CLBVNi8Am3mK4bC2SCIKBqLs0MQW+aqrNiV4CVyeFwBtXybAukWbJWr/SST/3cGLLEYS1/cjBoJgH1GwlPsPDmRjLId4EGALVMGs2T71cGRreHLXZSGGhzl16l+fOsUPfkBjIydf4qcxcNjClhd44ZExPpenDgECBAgQIIno+N1YL7sX3vLcs+d4roqqOup4mhEgQIAAAZKe50mYeXaO++/yTzD2PLBzhhkXl6ccAQIECBAg6STR8QZfVQQIECBAgKTGryX7BwgQIECApEIWQxZfbQQIECBAgA18fRAgQIAAAQIBCBAgQIAAjuu6fF0RIECAAEEEECBAgAABAgE4DX8YtoDzqL0J/wfmeBxOAi0Z3lit06bAT8N/hB6w6IP/Dr8R8lboFPHDWV2Liln43/AmOFAMfxA+Wt8FibR9ROAm/At4A0IxVIfjw47An4cPeTJGMU3tG6vTSiC+s0cv62H4u9DG0rgH/wiOQwh+E7yDQQf8Q8zOVPi2dsZ0wcv7rcV34LdBJjjwCvxr6E/EiRfiV+G3RlzIv4GBZV9HGvx/8EtfxwhgH9SxSqiZt0KwyIc675xPJwKUwAEisAP2z9vKo3L+0AeIDS5rCZcAwasg1isKoc7YaiAUIQCRqIPOebtFvAjgJJZkUqBBtnBZ7G6M9UAbK4e0eeqXZQbsHyAQgJV3/2Wr6v7nL4iPIjVggqcJwVtvGxYVgE3zGtCj7QreVEv9+2EbMeBt1hJv8/VEgKRTiyQBuoiCN2EDHhpZPsYYe8CDAQZGGBlnfJrpOebsWijppGeRlU9+CSUppBCJXfPsv4dlYHCQe/fo62N0lKkpu4w6GRnk5FBczPz6Wamwc94WojxCA84yj+lp7t7lwQOGhpicZG6OlBQ2b6aoiIoKc4plYmJi4sqVK52dnYAW9tLqvlrikZhhr03FHx9nZoaNG0lPJztbpfa3eN6CRjELP8+jKIbniIbGlWZ/3cTubgYGzK1Uhc/O4jimzlVLKldBAaWlppgR2A4HrAAsLFU17P+Ennt0wydYqAXuY18VVfjDZ5/R3h55tv2k7OdHDpD6SB2cijqo+x0fqulsZGMaaZlk5pJbRJG2+ISPs8f2cvbDRNZRY5Sz3INPHo2x34AO+HTBzhiqy/vlApxqXDQDMMqjeBnyHm2qp3ycdeF5G72f+k8CjBGBVyA38nD+L4U0+AmWi8ZoAuBDA96MbyXPDjpuc1vb+9zvo2+YYQnAFFMurhWATWzKJruAgi1sUT/czvY8e5cyoQ5rfiGaaGri5k3TR0UcIyN4ApCZSV6eYX+7BPy2bZ77nxc99uict3tgjnzjBq2t3L8vShJ5GwGwa36XlFBdze7d1NezHHz00UenT5++desW6Iq2aY3fV199NVlXu1zcvs21a9y5Q1cX/f08fIgnALbU9vK2b/fJG1E0oPhJd/+tFaV+1YkKZSXNarkq3BMAK+fS3fJyVZy5oampQM489R+ATYuWav9+0zC6v0d3H3cQcsiROyL/I4Ol9fv6dT75hNOnwWAz7Of1AzKd3UdvXtCnfxPRYJdZ38xm9YUSSsopr6ZaXQN/8H92nzgEh4GlBMDTgAULJnoaELK/XX512V9GgXl3PUtowMsLCuBPebzz+hIAHxrwChYxiGCa/eNVEgAoaKEA4T/DKfjlK1d+mtghum+i6RrXbnGrjbYuunrpHWLoIQ8jBUAdT52wkEK18q1sraFmL3v3s3/Dvg1Y9i/BF+T1nz3LpUtcvWqoUDQtPz0cRhBNSwDkMJaViQTFLOn792sl9Zq0tBqiIt3TgIGBznPnXHtkEZNOZEnWdc2Rc3ONH7pzp9k/PMxzz+H4IUDp1E25/9KATz/91HXdI0eOpKWlVVZW7hZTLwuffsr581jl6+igt5exMSsAxlNWqcWSujx9NTjI4cPL5A1PA4qiLoDqrqjjL8a/fNnomYrT1kZnpxEAVWykAOhuqtqlu5WV7NhhpKKuTh88378yWqnS0owG9PTQ/V16vqeKOsIRudgi2ROcWDKwVBOQffyxaVy8YKjfHK2iwndVWozAdwkBTxIALzKWY1RJ5Q527GJXHXX6J9Hh/+z+cUi2vLN0wAVoXLDzIjTGdsGGhWMos8e7Ly/nV95ZLfv7/6kPDXgZYrwUUuHkquUA5EyJd/LzXRi31/IpXGmEv0BMuMGNc5xTf2mmWZ/vcMfFBeOPlmSaLrxhg7rz3OTkxMjIxI3hXv2NWrx8HIULnXT2VvYeqTuSU5fDPvxAPVLutOman3/OlSviffXqPLbJjXJwJsOTg+HBzj6J0TV5cfIra/r6tKR6zTPP5GRlER07oPP+/c4zZzrPnr1y/ryOnE+fOCevxjCJAoCRkXBn5/1b5+4byRkYMLSrL0SyPjA0NNTT09Pa2qqBIEBxwIMHDxQEsCycOcOHHxoNuHhR5ZKOKsYRcYhBwrPhgZGBeyP3RsSPMgnD5KRRhYYGVhDuijr+ukG6gypLc7PulDTVjtLkkptOUTLJc+5cOBweDY8O9KnJ3CAnx7j/7e1qAPUDAw1Hj1oBeBKqqmwcIJMzf5nLYn9r8j+IDsv+0ibD/rt26SDGDhwgJjxDCA4RBdNMjzE2wMBFLsrkG+1kp7yoBzw4xKE97CE+nCAEB7EIECSBjV+cnu7Kc7T4xBu1Owk1LBMi/dOcPsvZ85y/whUwbmh1tXGU9UHemyJmx5EAIOobHjbU1NlJa+v4lcEr7bT3JPUM7Rsarxs/UXeiKKWIJaEDXbggEpQGyBEupliO0ja2iQ0lKg7OBBN99N3l7k1uXuu4ltE9WDOSWTO1s2YOnoEcoqOjLuVM5+SZzq4znZfPydeUSm7dKrlUbRkBEF23tYkXxMMDYXGxPG59J4koLGQJqBJSNeKfm5vbpkMYaczLyMgIhUL4x9WrGpMWi6ngqcPhgzwjJ7GCCtGlBGCSSZW6lVZxXHNHs6nrpCSys20iZB2yv+6dkXDdx3PnTNFAZREpl1KaR56GCo0AMBcmPMyw+Fs39NbgrTH9fWdnaV9fw+how9TUgRMnjMg9GZ4A9PSEb96M1IBUUqPVtGV/bXWrLPXLvHP5xz/Bw1Y4zAK4uBKAUUb76e+kU87Tda530KHP2iNh0LcSH2LCP8JDNYEGBALgwfVIYdx3YiiK7y/2/5APz3BGPktKiukme/YYiamoMMSYlRUpAIZD1RM7OuQCq5uJBIaH976XVPcwvy5cVD0Nx6F86aHZ5mZ1Tf1YZKGlKw9zuJZafbYDu+OMq7urIykE0M7BqcGaj2pqZmuyZrOYhWcgn8XQCmfy8s7U1Z3u7Lw8OmoKsm+fGU2RkonqJQCSLvmsKtH0tLhrxFxJTY08cT8CUFFRUVtbK69fvA/oswZ/quSf+sTDh7bUosvk4fHneUmDGOIFKV8BBeJKyZ4cRnGHTSE29zWb2Ki8HOlY/AKwssM+IHdeKmrDOLWGTDIbaJCru4Md8n9VIt1KFcrFlbANMthFl1pXCy3yNm533G4YmW0IZzTMFubPbOQZSOFJSEmxGiAB0LZtpM3TgKMcZQH6+w31W/Z3XSz16wj6RdzjsVWLaoBETgLQQ494X15LFVUXuKBbqZ1TTDk4IUIS+xjP/lXTAJc4EQiAG/fK7d64v0Z+5Ptb9hczyiE7dIj6ehGcfGc5zosOhhg/uqXFKERZmXFS6+o+27dvCqZB2xNQzRPQ3m6GOES+IAY8znFpwGOrV4pKdrNbHUnxgcRAnWfnmZ3MgbVnoJBHcRPOYOx0Xd0XAwPY/PHBg6Sl4UF0KqqfnDQCJvUa6Ow0nCLC8IGsrKzjx4+npKTs0ngCKnjZgQMH8vPz8QkNOok0pT8PHhw4ceToTx194adeOL7juKjBo2SpnUjNxdV90e0Yk8aqru7dIxwmFFqp7uYQN/r7JWNK4UgDVJWie4mZRufrqded0l3bwAYehTRAA1vVVG9hyxd80TDccODDAxJ1ZmAWTkA60WDv3HwyoFtjaIpTvSCgggoegaV+mWoauQB28EdteoW4qoToGGBAXovKmE32x3wsJ0Y9S2GKzQ8rxo377KU83XBjcFMDJPlh/xg0oIkm9RSN/IhuRJTPPMPzz3P8uOHN6M83GsZXh6quFglqa/0z8eOleQHQVlYT9ckf9eGuLnXmMsrk/4rrDfsvgKhfpr40wog6uboQn8LsvD0LxczjmqV+zLbFcXjxRaamzIUthIjUDm3l5DBw9yHj4yau8QcFAaWlpcoEgI5QkJSUxGJ4CUZgeH4bBgOJzd27koHMUGZNeU1ded3h8sOW/SNvl8pbQ41IRJVzffa6odrBQYaHJVzrhf3t4I9Y9sIF6ZN8f7G/JFxbjXdvZCOLIYccfVtOeRFFknZJXcPDBj7ACoDZPrPExCxPAGQPW1psEKAWoq1CDebxxRd4o/9qQd7gT2I8VUVvz/CMtrqzs8w+5OE97ikakEbqOl/hlZU8e/xMunGjMTVja/oM9nOkrZbX7y6zUQYC4LKSuMtdEY1Ccjvu39DA0aNGA559Fj/YvNn88d69aiGeWnyxtACMjRkNEKNBFlnqKk92i0QWROJzmLPm5dibItj/duSwQTRs2IDjGLP/MeYT32PjWxtL/n0Jws9AI/wkC/GtRwVgRDY+PtzTM9LdPez25VVu31KxpaqialPq4hqrChFdGsETJiclZbJ1NM9LEYniGBGtRqhA5KoRPIVxZjRmKYj9v8E3pOi2dIThw3kB0PbHiQpLTPX1XjLg9uBtbyBI0uLNQ7DsLzO32Rv8yc9P5DiFwiCx/yijffR9l++qi0nOlR3ZwQ65MutolCQt7TGzyS5jkTvjQ/wDFgGS/LcJ//Wq+FTjlS202Ai7rs70lMOHn3D/fgFOYWwmYmBk4VCMjQN+Z9QMsDVwcKyxLJy3QYAnAB/Os387/jAwYARISmRELCMjSrDzWdRdWRD2zn6ECBzxBOAxDRgZGdb/a4eGS5iby922I3dLZV40bvZcL+ujichk8fa7/n6nt9dIr33eVKUuLIyBFu1Ylsn/tLTguqIz+xCwpWCfMOzvYQY+8CcAQmkpXjLgvfciB4JKKY188kffc9BQv7HduxM/Sq1qkVLZWTW3uHWDG9qqx/kRADdmVX8WTsJ/jUsA7AerAVYMVpf9Aw3wUVtJ7krXvtwTRQBttLXSap8qqqkxud9QKP6O0AZTRENyMtZgmOF++u9z33Pz/eISzDGPD+AMdPqfgyXuam/HDBAfKKe4WDzo8znfIfg+kXgeWCgAhRjzMA4jjA2/NjYyMibhkQBUVOSWluZg8TcfP9VDHk4wMckkQmam0af09Lie07961RFr68PICNPTRlykfKLNbdsk+8uTgYcPuXvXVF9rK6ARvJ3slMNr5Sp2nIZZ/MAKgLWRq1cjNeCLpg2W/U1kUl6+cPAnwaihRnlgOf6ifvUydTfpgW7uJjatrtf/i1CML4RCYnm1LjkE2noRgD6o1cnszkTkewMNcBP7LqAHPBDzdtHl4ooNKiqU8hUhxNwgre/RuHTTE6PpfNnZdtaxeogdw62nPoss/OMK4EUA3X6lqQ37CH5zM/aZdCN9VVX+J3oMwg+isL/w91gE6bLiseLiMZAJOZBrtsLNxSdj6+700WcnT8lVV3XFMjRsa+nCdxw7KdpOfJuask+XGopUNrunxwzklZUtQ07u36ezk9lZOfLyZ6uoqqaa+PEpvuA4kU8EtfS3lDglJW5JSU9J8+X9Nv0rXrPUb3NTa/WQShllqp9SSlVRI4yor+m2SrgWVpfL2mHLFtMM8vKorKSoyIu07E51De1cXfYPNMBdi5fByfUWxfTQY2eViWfUEhKB9HQ53WIfaY58ybOcVR5qjDGxntzJcsptLO8f/tlfjuH580YAPvmE9r5NPHfUPvFq6XUB2omCQRghxPIwNm9CrrHFIMdfLu0lLt3ghhxG9j7Pjh3qhDFyxFn45LxmHqRdvFg6c116l7LF8H9/P61X2l2RpSTh4UPpgVhSwuz3+Z++PpGvzVXYHGyCu4ZN7To2IfzDHyoTYC6jqaTpUvGlS8W9vXDMUL8r9lftRYGTkMH3IopUS/nkSwDU3dTpBhjwBGBdZHUOHTLhuJqBjaMsDh60O0UK2rmK7B9ogLtGbwNVixxmeIghQNQgXzM/P1FOiR1vamsTjwxPDv+AH8gzUpgsX1JOkwRAW9kKMsvEBGfPcu6c8f21vTFSzIsHOXaMo0YDSATGYHReAP4F/PNODFzuubgzzIj6Bxm8x70WWi5w4Vz6Ofaf4MgRt77eDGHHgHNwGj76YN/tM2/U91RWmvubkkI4bGjz+nVTIf3yltXP8/JMfasq/GBkhKEhmX2wJ5dcsdsadIr6evdLAQh3d6c2N1/pvVJyu6TlWklzc8mt6uptPgZ/7Cmc1WR/W0VZZMnsgKc63SijLMAo/jHqh/0zl9wROSQrDVg48UI748JF778B/Df0xAnAOOMPeSgDM9aXkWFdwISguhp10cFBpqfFx9MDZgL9da7beNnTgEoqNX66ne0ppBAHdBJNVzp92lCeIoC+gl28etD4OGrix4+TIERGAO4/ARdrEy7vzDI7yaRoVYNyrQWtP1c2VbLtxQ0KTXSFUqnYnsM7Lev8S8Mff+MbfV++d8fEeaEQdg6Ejfa+8x3mmpt1OxTvi1J9pfvGx42p4YAGiTPIkK1Jp7ADQZe7u/9qT89fLLxa8hdLejpKfmdGxuUDB4oPHNikb30kTtxVdnnSSZelkWZ7nGRexgK8hU/0wltLsv+PL8L3v41E4xTCp8Z8IGD/d+CNhArAFFOyaaZtKsja45iN9q/o2Bj53+gQr83MGMYpKKClBb1gp79fzq8sk0wJgMRAAqBguZZa+6IIYsXlyxoFwWrAVN1Bkb6I1ZgYNtHsPwfuc+A+YuFZfkECIPew5yd7/njJz/y85hpUVW2tqdm1b19qrCm4wT/J9RdKX3zx548de66hwYZ3jqe/jiPytPnwCSMI9++bf1dWsiTUaqyBhFmWSiprAbWc9v37L3V3X+rpyfje9y53Xu5r+mH6c0eL9+8p3r/3RFXVepicmkyyNUBxnrVY31PWC6c86o/O/hZrLgBv8QkyHwjY/9vQmNAIYI45F1fmPRdv7ckN8x0I80S8CMVY/DqeCHWKl14yA09lZXY4yNBQZyddXaNDQ4oGZEUUyf1vpbWbbgXOMb9NRQfW4T7/nKmtNXaqm5Gf0lISgctQHyEA7lEWgZM8s7G+OTROxif5P//fPy7cUlheXr4j27wy7TCHJYcsH8dzOFGrV51qVocq+/FhD2X7y80DUEZysXPNhoZ8CYDrMjdntmBbjYPDWiAc5vKdvZfvdF++3eP+i9Pf+M7xX5P8nd+4/3LxgWKZ96q49QM3usp8lyUQCocb//t3//t/58l4lnWDvfdgLzGgJRvOf53YPxUaEz0EZLuubMGj+UuEpu/AJFHwEhZ+BMAbyZU7KvffvvBAAiBXVBpgXzXXPWae9eukc5hhXV0aaTXUsHzI6ZLDOjaGEZvaWk6coKSEBGEL/Bv4hfk+7pzF/Qc8ihBzjeYKHz5kYKCv85/33bx59WJL1m52q/gT7sSLvBhDOuS4tSSx/yJZtpwcOwXCG9XxOx1arcZOTZAM6KZYYw3gTfjaf/v2qzv37Szt2l3a1TX5z85f/lOXi5OL7SRhtZm1XQXT8/ptNOBN71g2fiQEL74Nb4DD04BGYNeyNeAGtADnvzbs70BobXIAdtRH8fskk+Ewk5PGRAqP4BcWf8h4ZgV9j8xM9u0z9uCBqN+anHa7ZIr6dxtt6j/ppBdQUEGF/y4dmdCyNmWfdxb5JQ4FsAVKIAuGMXD+GO5dIlevEJdiJaq3l7t3uXqVz/OHT5/+ZIyxjc7GLLI8AfDPUn8b/jSkRp9Ua83qv67AmP/aDIUkGGHCajUyVhjOkkVtb7eve3O0VTOu3Vdb1VVV1rXP7epyytrM5ADXCMAxjvk/z2poQOS4v5quupuMGHDStqWXIuO4dS8Ay9SAG8YEtdwg67vqApBBhjV14NFRZCMjFBYuETeo9/+4HWZ0oRVOyTqVyH076hgo0/hDcbGxhgbDgurfN25QXi550OD9Pe5d5aodDlpsyliKTwFAAiBTH0woSqwGWAGwqFj4KWKhhJISQ83DwzQ1N+WRJ9nbyU4V3xc3RiCLlYd9YEBb0ZpajWyEEd25RK5PPDnpuf8mbDrqmvm++/btK+2alPegGjQPhjpqTMaqqFrD1fCHGLIP/9j5zzL1uDj4NB9eejqelqyO/OQPN75uz/w4aykA2WTbx/j66BscpL/fEO/27U96JreGmh/jx6aZjihJJ5wCGqOsWPcMfAhzy0zu2eUIjKvuugwN0dRk50b10rt45/AhAN80ApBiBCDRsOyv7XU/PCP2V4air4+bN2luxi7PqbDICoDFWg5rZGXJdGt0iQMM9NOvmyJ9In5ULSOrb+3OHSqprKfeWG09nRM2ghxvarKTA+w0hRChtaq0HnpUP6olQFqu7iYjBmz2LitzfT8xH389OgH7J0IA8sm3E3lucMOb3Tk9TXJyVA2opVZdfdadBYt7kWnik4u54idgBj5m+VBPOXIEXdm1axIAuVFyNhVQxyYAP5oCsnSsAKxRBJAO4376R34+RUXk5RmPsXfE0IccSSzWXAN0WZLnwkIJlCRZdKv4bJLJeJ8FKoJj+IFdz8eamN2yv2wTm9i3zyaQtL3Tf8dqgATgCEdYC6h+rHgPMgjoSuy8MOLG060B65/9Xdda5IsjEzrykwAB2MKWUkrLKVdMOjY+Zl/ucusWu3YtuHsRg44bXJs69tscn4FZjH0SG9fYZGVy8ty0GaWOkm/8Jk/EcyH4fwKwJv2gZGpqS2trSXv77YkJtmzh8OEl+od0yr6Ja2RkMkxYtvID6rFBXnVJCaWl0tXwVLiNNvtKwTrqiBmb4Rgc9TWhz77tRzY+zlHM4I9dVMfGjlYDjL3/vicA2lZQkXjVbKFFAZx915Z9rFndbTObE8CnT6cGOKwTqMPJ7LPOKdZWlv2dtReAJJKqqLIzreROacDh+nW2bjVdW5Tr3T2fIjYFISBKBGDt8zik2N6FZJKJASkQkq2RAPTJaS35vLWktVUacHt0VP6qhtDt9F4n2sCn5M6ag2ONdQKJUkUFlZWmrbS03OLWda5XU11GWQ45xIBkOGaNJeGt8+UN/lhjHlYArD28ccNbM0Cm9pNIsrVrn13jmiJsQKGzVMp7MjXQgPXL/mNjcrtQR52edhzvnXgJ8P0TKwCCqL+GGjkp8uO6u4euXDEdJTtbD8pbxfN7967DNTywCRqwINsGAfMacBED+xIICgt58mwd+8oB3YyZmSyyMsmUEQP2G+NvkGi0GqONLa1b5lq3XGjd8lFbaHY2LNd+505qa+3Ei532Eh+ba9Xba5eBQfGZWmA66awfVFfbl3koYOyb7WuiSSQr9n+e5/0MBPXTr5S+4kh57iqapX6OLi0Ara3e254XDP54cJxIDbg9dttLBhzmcMLIVn3KrrCts0vHxf672V1LrZRyxfnUBeep1wCH9YPOTrq76euzg7G5uYYSHWcF2d9ZLwKgTruHPTa/+h7vXbhAVpao3ziehw6p5N7lRi3NHbgG1+GPY0EFNBjzQN58HDBrjCti/+9/nxs32LaNhgYOHoy6TndLi6RC3diOn9qXasU0D2Cmvb19YmIiMzOzsrKSBOCKx/5mm9KaUt5aXjlWeYkqOYYqukom7RN7zePSYwua377N3btyQaiiWKW2mcP1gpISM1Bo5+5dvHiRi9lki/pd3EMcyiPvyWsQfc7nIkf54+OMP3/o+dCxkB/2n5gQ70cZ/Fm4ZoCnAWfORGaDFaastgY85KG8fumUyvgJn6hzqd0e5KCEai97iRMLeuS6hP9rdlhvUNtS51SAqe4HW7ao6chTTQj7J14ABLXLHnrkaavhfjb32enTYn9VgjxQ9XGRlGRgkcHkcNgubsiNeQGwOAAN8xaJIm8sSGhuviov7ld/1fRf+2rJ3bt1pse7+xdfmBc4NDXpfsgLVuxcSeVyOzDoDP1nzpy5fv366OhoXl7e3r17n3322VAoxKribY/9zVbQ9cv7U8glAVDJxFE5OSQlLfI2CsVhZ8+K5kzyW9CvVHDfk4ETFWvX1YleTSsZHlY7OM1pF1eE3kef/Nwqqh6TAX1rV/mX73+BC9IABXPJe5KTjiW9cOyFDcc2kOZz2pfigCiDP7DoQNBoW1tkMmC587AG/e3zFoWXwikj0kyziqk4wFstWRqwYjdxQY90wXn6RoQc1haTk6YBp6YaP99xTNz94IGhnXPnaG5Wy0lONrFuZSXl5cSCe95//XW9soiPCRMAReJqnRNMzDCzkY2fT37+3nszAwPcu4eyAhUVFBWZCCg9XWwlbRD1O6Oj9PS4nZ3GBTSZgx7uQi40RNgOHkepHQtqbp5tapprarqufizq15lU6XJ3y8p0G8zNcF3pj9l565a6u7hQ/6znmV3s2sGOGEZC5KF++OGHn376aV9fn96vMDQ0lJGRcfTo0UQIwAAexD52tE0E0dTf9OmnJuwZGzM+dEmJqV7XNf/s7JTeoVBMfzA4iHxGhWj6YTnlsJ5Gj9UmFCSqKagXue5Ua+v7vD/AwD3u3eCGdFrEJ4oX284xN8WUyLGXXpVd317hijIHodra5OP3ko51JR+9/2xu6ZKDP9b3jzL4swChUKQG3Jy66QmAiJjlIBf+DZF4AKcWvuNhmmm7AGQnndI55UX0T4m3TneMY9IAXe2qOteu+zRqwNphZoYf/AAF4xrgz8lRbxS1iZGMV2tpB7UwOcEarZUTHPvb8G7K/LD/tkdY/48kTADsQNCzPCslSCMtm+wmmi5fvqcuJ/UrLTXhT1YWaWlWACST6vWqKOf+fdrb70gnHM6bVd0p89z/aNVV0c+J5s2zzVs2NO9OY+zS6CX3gw90FJ1JsZa5DVYA5P7buWDygUdG1IU0enuAAzFE0PL6Ozo6rl279vHHH4OilrsKAvbs2bPqAnCehVAtiY366Zfc3mq9pVJK5kT3BQWmeq3wdXerBcr/MBUgV1rc0UDDPvatL/ffYts202dcl5QUNm8WN4vZW2lVrLOFLXnkKW7zBGCMMRVc5CgJnNK+/YfChw+fOXYs6fjx5NLSJDj2xKDcc/9VaQsGf6Jg61ZPA+TTRWaDl+uJ/y54BYv70V7cKQFQGSWB97kfJiz9s2M+dsFkbRPAqq7Lc0RFgHrohh6YA3Uw09N+4RfkfKn1SgAMtQ0MyCPTfhviHjnCgQPs3UuMOLUc9pexRgJg5wS8zMtZZBVSKGezhZY7I3cuXepQl7Prd4mhVEWua99YoIoyYrCJut1UbuMnRFViN7X4/RTzBDRR3VS9oWlD2qBRGnVIOUp32u7Q1mZOIKcyFDLnmJw0J5ieLqJoNwfFgHbB8RieNJ/9EtPT0xigNICGoLRnbm5uw4YNJBYiBXHBJJPS2s1svvbg2g8eTFy5Iv/CEz4bFBlJPsEucZxKLQ3QTWF9QmN3ipMzMkz0VlYmNRttbb0yqzJdCRGSe+4JwEMezjJLUpIR+9pa9Sr1rbEjR85UVCRDEiQT1TP3nvtsa/Mx+BNlIGikq8sOBFlTsMty8EOEsP1vNKSQoh4kr1/6V0WVAlaFrRJvfSZR+Aj+GYsjwE9Dj9UAWTjcHQ4PhsMY1xD7bivvOeeaGuNiyEuUZWURGyY/mfyE/4rsyQjBNpZE0mqHW/LXXuAF23ZrqGmjrZPOHnoGRwdHBcLqwA6OunQW6eVslounjiS1kMdnV4VdgqduQ7OxquYqT2nUSXQiOU0DEwMPJx5OM6ZTiOizqNHB1dt1JepCCgJiSv9KU7KLioqqq6vl9ff29ioDXFVVpT3+2L8i6mGNxQKVV+wvZlTp9Pkud/t6+oZ7xvqYBlTwYjbXU1RBhb6V/yjxe+LgT3L0L/x+k0x82LHDrltJVZX6jYIs7t+XiIVHR8MmPpgzXSs1m4wy+2dUVuondvkBeRZDcMYKgNl6pP6TkevP2+c+Cy6ZvdIV6aId/PH7mikJgER1drYFimktxoQCC11yHTw6Usz34SUeqk4jTbquhmqnHUgJ1Hp9phx+cqmT+8Ib8A4JgI8Ljv0YL63Sia0AeBowOSnr3TI59IIJMaen5REaLzQnh9JSBbcmOdfQIDGI4VLsdawwkuKcz+OfoZSotEPV4uVeeocYGmMsHCEAtqHLS5WHXkqpBEMfeDLC0GSMZnDRb1/kRSmHfc9BN92DDI4zPs20TqFOruNbhVCYv5vd8WUr6zTuLyWwSeD6+vq9foO6kyyGHPtFrFCJxBGqNI0U2xEhece24HIhLYOUUWYXQlBVxHCFaXDS308y4OSKzA1+8UW2bxdbm9xRdzeDg4yN2QEiEzmGQnak1SSUysrUvSJXH+2FM48LQKO3/ryoP+MSb16GSWzKSq6G/8UhpEm6GAUo1r+7DMVQQrNNCfibTZ7sfcl/X/zvbL+QfmeSmUuuuoMcKZaDRh8n94X/xh+AB98mBiT2gv/bon/34mqe2Hb7KasBU1M9h6b6qqZGRowAzMzgOEYAsrIM6VdWmoazlJfY6P864kdSTNM6HZYPB0caIJtgoo++YYbFUJ4AJJNsG7pIvIACfKJ53u7ioZJK2QgjVmZ0Ok8AdHzrSRE35PKnp6fX1taOj49v3rx5+/btehg05kaevRJ3N4ssBZeKbB7wwD5/ZV8XLAFQwfPIEzc5OLFdYVr0K3wbvhnxZcbKtlQxu2xykp4ehoYMeU9NiXaNAKSkGAHIzqagYNE38d2fjwN+z6MqlXSZH78MsjYsrEyyLBw7Znw51wWG4DKUQLEx18FZQktJ8SmREgA7rBQbTvo/uQ8UhyGEHyTggv0f4KWEnDgFymT7ptg3NTFhBGBiQgJg6D4UUlCKX3rgpP/riB9Jyx/XcYgP8vTlg8uIE90RArAA9hWJrCYKvwTLxhEfu+Kq3rhXLPkmj2Kjdvn7SYo+rd48YdkycRfO4CGEcJvQJZBdJk5ETuS/7gkA7MdDNMIMLVJ/LiuOkP+9sWNdXXAoyq6E1dSULC1Nhn/4KkICBMCHBjisHzTPj/+MEA0BAtwhAg/h8rxNsrKwA0GexZ5WC/AUY8oaTwmSWICwE37oPmQR5LF+cGPe979KgAB+cWne2llxDDyqAQQa8HXE9NMtABo+/piP+53+9d4Qm+YtQAD/eMYYf5UY4LJyyITfaiwGrMPTu+v8gr9hjP+QmLO+Zox/t77umH8BaKX1Ez65xCUceMg83k3szfeBN419dfC6Mf49FuuutjfCr5P5y4X9Rtk6LUckAgQIkMTzRMK+HP8aM/eBH8WC55/nq4YAAQIECATgJAuww9hXHAECBAgQCEBjwP5fTwQIECAQgEIeRSFfAwQIECBAgA18fRAgQIAAAQIBCBAgQIAAjuu6fE0QIECAAAGCCCBAgAABAmxwwL+9CP8Cenkczhrb47gOfwdOrNyRnZWwZ+DvQktMa8CdhN8G3yGR8FHyDfC6KRUXWZ9wlml74C/DVVYUw/Dv4UfAgZ3w5+AyfjAL/xveBAeK4Q/CR8SJhHVFZ40sOn4Rvg2pkAW/A74Hq3oTnAUWRAAJQ5UxKiGN9YJ0qJq3SHTzNOPgvB1gfcJleUgyxsaoHTpAAB9wWEsEApAKlZZt15Mm2UsK8Qh+BT6DMZ5CVEcIwFcFSdae6p4dIECQA6iytv6CEhYIgOxX4QtixzRcIrHIiWD/bNYz3PgFIAgFnnYE7n/sawLfvUtnJwMDTE7OL3D8IhRg0UjsePCAnh4GBzFrA4fNwe06fxkZ5ORQWEhx8XIHyz0UQyXfqWS0BO4nJVFezqFDJB7nztHRsWVmxggAWUW8jodGhFR4B9qhzWzZEykS34fXTj1arkz4BkLjp3AMA27BF3AV9rM0bt682dnZqcUstaJ9SkqKlrQsLS3Vcmb4QB99t7k9zTR47J/O1gYi8CyxYGBg4MGDB9pqfc3JyUmtsO84ji5Pa65lZWXl5+eXlJSkpqYSK9xovfLhQ9ra6O5mZITpaTW/jZmZSYWFSWVl5OX56OXuo60vGoYXDDnvhPqIhhDlALPw8zyKYniOaGhkRTDOeAcdPfQMMxwmPMdcCikZZOSRV0ppAQWsHFTrugNigqEhwwGCt4JuZSWx4tSiKYBJIpFFRGdsXKk74BA/1P7b29vVI9RP1R1c11Vf0LKDBQUF5eXl+pAoAdA9uXCBq1dpb6evj/FxXBdeiLfNSUhu3aK1lXv3zJ2XtEgAtNMKgPq5BCA31y70SlUVO3aoUcRw36vMj9+u4vz9lBTsgr0J1oDPPuOHP6S5uWp6upJDlXxzYdX9GFTCF/Ar0D6vAbshv8Xs5bVGODlftEz7G97CfEflfUos9dvtn+EJkNT2nD9//urVq2pbotqpqSm1Kq1mrBXtd+/effDgQTWvJ7UFht7n/c/5fJLJL6k/jYOv0mAJ//+n7jzAokizd38KUERUGhHMNJKlQR1QEAzj5GfdnHdvjk+8Oeecc8453/vf8E8zOzlgwKwgTZLUKCCSJEuy7s86Q03ZQFNd3Yzs2e9hR+jqrq4633ve857zfeU9AHR2dnZ0dPT09PT39w8NDY2Pj4cFAEIUj10jSvEMTgIVwUDiZc3N0tCAK0pfn4yN8aRJ3C9px46kvWVJB78vB0SHpLndv19vlYsYUGAFAIkUAFZGoD0R5hteEbuxEWSDNLRKa7d0szO8PlHVFFOfKgr081Q2nupaKqW7JA43orVVgkHp6IBhwgPBAA0Awk0G/QsLecI/JDA+AQCDac3a6O+8kvxjo9wBvLK5paWFedHX18c8nZmZefr0aXJyMkxoz549zNbCwkIeSM7UWOcAACeqrZXLl3l+NpPkwMCsb8onZobEaC0t3HPuPFOf3EL6+3cNDe3YOr5ly5OEhKeLiwmzsymTMztGMjIWuPPQdp70zXOUAwE5fNhDAGD4+QI7fmNmcZF/8T4aS74EI17i2nx46i9+kTPxdT0ZWWZfEcm2RpCxFAO6nzwJBIOBxgDPSV76VtvkV37guDnBYDC7qVoDAEKeVEkkA1tra2svX758584dkgC8B0KNb4G2oCo5weTk5Llz5yLA6025eUNufCQf9R0akYo3pOK0VKyg/f9TcWnQ7oGGhgYCEufT3d2Nuw8ODo6NjXFWdgBITU1NT0/fvXs3xCc3N7eoqCgQCBw7diyJlC7GJACvvnRJrl+H3+CHwE/ynJFIAEivStx/LOlAEtAvB4Wf8jvFfSoABBhrxIACRjSwZSPQbuLLum6uDd+/Ile40UEJkur1Su+IjCxsXkhgZj55mkb+Krt52mixFPdJX6VUEgkkBuPaX73KfQASuAMyPMzDuzeJyNbN83A/5j2TdXBQamokNzcuAcCOATu4kvG8A/ZNMGIl/nV1dbC0u3fvMinu37/PtJ2amiIDYLYyEfbt28csgK6RHFRVVREP1jMAcGe4P599tvVKQ7VUl0gJMZ/nU/NgcbiAeDDSbe45b3v3LmFud+e9nJyh/YWSeYpH5gPLPD1ZiHVPnkxNTEwND/c/fNjY82lGV1M+MEqugC9IZaVEowOAnn7xP0Pe8f3N5Jk6CCRfjunHhUL+iYN6GjyVfsXHwZ+CzC8NAP1TYkBjYyj4i1AwFDACRaap4o96GYGs6a4RDL7Z9DA7mOEfLCwkXQgwJIKRyN26cuXKZ599hj+dPXsWHkEM4HH2ZAP8CdgFcEkt33zzzRXVzFtyC1x4NnwdEH+gn0GiHgP1a71+/frt27fxdf6bDEBEoDl4OXx/06ZNeMLs7CyKUIdlTICCggL+48GDB8QJvH8nOaLnGMDH4YoXLsjFi5BP+GyOnPCJL3ExMXEocfPQ5qT6JGa7HAgLAK5SAXP9deD1QH+YPk+CuiAXrspVHgeSsDMBZlCxt2Lbtm0EAIgCYNTV1fWb3b8ZkhCBAWkINPD89GkwgPjLHQBjeoeShVl59IBY4sbU48edXV2dHzSTmIEZhoEigB7s8rEp62/e0D9N1jKc8eKFCxeYp0xJIJ6s9/DhwxB/rj/TFsIEeyM/YAogDZHBv/zyy0yWdQkAoC1zlLvEPDkhp8/JuSqpOiAHuOV7ZA/AKlEa8Z1kAkkETdxXX1+a11/8dYI8FJ9bC5IQAMi/QTcepQ+9hbGSG6ASDbe1DTd+GLqPUkSKCKc+fVpwB9cG7Opo7r6tcPwlBwBGjlRYiUgkRVOhxq9jcBB6/04wSABgsvEWX8B7p7wThLOSRDU2JWcX+/1fyc4ObNnCn/Miyiz4TX19PV711ltv4Tfw6O3btwOvfBDY+v777+NbBw4cYM5DMZY/Iwjo1yHgvg5e5tGQxBrxdRz9xo0bnICQAGVnHzp0CIKDJAXiEABgPYAOihDKFVQI6CdUEK6YBiqMnj59Gs3KcxqK+IMrgv5n5MxJOQmrhd8kSVKCJODhsF0ZEGHcjK725wwDxi8P+mOAPvreJblEGMANKisrcRJVnAEg0jKcp62tDWyCpRItgIIdsoOcYKtErUUgLdfXC5efGDDwJE1ePy0vvYRHKaVg8nODkIGCFy5ACgkKe/fKq6+uhvgcwvDpzw3aZZAqsLzIBh9iRmgMIBMlHQf9mRdQIv7JVCVF5vrDmbj++D+MLSUlBcZGohz/AIA0z9wAvHYtphdK4TE59oq8wvQQbwZ2K9uqq8t/dK3i7ALSXkmJoO2DzWhZy66ksbAA6Yf6kyrIvn0Pr1//qAEywG/xCHzBtQLAZFbw3fvwTj9wCiITWHCo9TbYi/Vx+wYSNQIxVWQtK1Y5qDuYbQaDBxuDp0c0BgSMHsM4b9QZ7e/A/Y2mpoL0YMlbhVkB/0wguzVQcTTy5YAywN1IKiHRpaWlJ0+eREsRy+AXo6Oj+ld+ArUEgDBZwEb/0fJDXwQAr8YHoUTh5ZcuXQLQOYGXXnqJrBbQAW7AdCKTHQDAenCHl5ElEACQjEhiSFwWFxeZFa+++irRIuokAHzp7sa3GIgYfBn4DYKGd1E7ciqw4aFfy/vN0oz6j8pHvb2mpgaWQFmIm4IKJyJccHyD688/4Z7IFOmSTkE4T/IAB4m68IMbCKGf6ru8dlzOnJFTp4Qqnc+n4iAlYOY4pcG7d+5kZwveWlYmVrjfYcO9/kfYPzci+m+x0L9GIhgaLPwMPnSVhEi4HmdOnTrFvNCiF65Ojs4sYAowX5gChAFuBEkwKtBx6prxDwBjY4RpaDu3mYnBnfaO/tTWrlyB/hMAApNXa15ByAFAuKPc4tUuoMmflLpnZxsZGQSJOaP2Yn1dIpkCoCVVVeLaVH5h9NsqEAHgy9J/NPzw0/V6sc4TJxr9/qA1JOjvv3U21P+X+jMzz2292PXhxe2Tt1871oM6GggEA4HsgC/bxzeMjF1oJvBoGER1dTUg6+z5ISTAMpjzgDKvIc1fLv3r6MhZjBn9cahh9XI+DofGfcGaEydOHDlypLiYfMaPry8rRY2TwRCWeDFsFIoEV6IGoA1C4FS08o85NGTQewYPQOSXg0BYmVlmo39cY0A4QBgb9Qm89Pzgr+3SToWfG0GVBVc57MiVuS8U4bngpAKU64nibeNtyMI90uMhAEAvoXfMD2ailnrJ7MU2KgAnT9IbwivkGSlJ7+/3DQ6mZ2auiPvOX255YehvrI6vNToiZ6QtpMLgO0AP9KNwotMyNezpwJVnnhIMIP7IQcxTAobdGUGjRLwDwPw8wM1IkjQaABji1ZCfSfaQ+ooeX0VLIthT1Tl0yKUjg1AmJC8hwZidfTr2/vXuWz40I5ICxKNoVaA73XdmFJePHVvXUrA2FzJSux849R8XtqDF4Kyst/mWfj+jhdH36wPTTxaebBrxf/X/+n/f+UBJIJAbQJET7E9bWcM5Wc2YsXgMKSSUAXKNr4SBLL7F7/krr6EUDL+2Gwxuy+3PA0DavS+kf8R3r4aLozXBH6n6cibKNMEayCY6g6xkgD54hDxFLky2CxUlBSYGaHHYdQ+rFmh/oHfHnJw00BlF0P13mjtJEx3z+KvWy2j1SIlXDFghw91I6I8NyzBNn/3Sj6qgsKLoH2Zcc03UYAyt460DMkDqMC7jaEHisMj5DzIv1x56yZD9VrPf8rmMFoT3M2u/970Jn28qMX16ekX0T97o60sU+k8xInVDoHASU1F4uLDa5oAEt5wMcVPgQ7we8sQkIi0mlYcelZeXxzkAgLg69BHBDPFmPT2ofcSAPW03Kt+Q6moivbb3msvlU9jHpExqmzkhJ1VSt2zeIt+Vvf9LTpwwR0eNhw8n79+9u0hOiEyB07guBX9Ow5/kNGsZYJ1LwfoRDP+sJh9a/nV3O65/Xd75OgvDHlx9cM8M3ssO3ssP9gz2VL5X/WQurfGdb83l7kkOFSQHJDlgZGa+LH/3vNVJVCarGIi5YBn+lGSZPG/oLfp7fRmvF81hjG6b/ps296du49VQoihFwHRQEkQEr8XLiQFucli4D3kxp0eIgv4wW4glIBGVA9cBAAPWfwUhEX5jzs8niLHJ3MSt2SSbvMOy2xgQIRK8eEPTp/ef2bctdZuyBFnFiAGEZFXeOIQDmbZ2AHATBvAvBjdBnY9B9V+WG4rQkyfcqbn09GfDp4i/WTaGmW5Wfp1aGjWRThxtDUBHgBUR/DkvL48kjIYIWckQS9vb20mImUQcwoE0UMQ/AECQGSgv3F0dnptaKflB/I4cmabMw0wPR39DpmRKe86gIRMyYQcAeo12Ze06mHUwtzY39+yWQMDs6jLa2tpbkA8RcJGQ4A5RqkDNodtfRi/QUpjJkeN8NEPcW0Aehx4He56VgIMI/v7g5pJgxZF/Har+Sdr75w//mZ82/u7Gnh4qAyjjhwKWpaSUyuoGs060zI4E8rwp6GMaBpR3QOts9B95yR8m/nirc0Jz8F1oC/o+Hkw1AqbjXsEEmHB0rQnDevgJY+INmQZMm5WE1edOtW8liDZ6DX1huO38IgHYL25tclIXNGk/Ow1rRnq6SbKa4plFRng1H4OQtbR+jc4INHKG12Bl6PB2rOvzNpyYz+dR5yFFJSeT5Qbiv/66ICFbA1DY+EZKhGwialVK/yWtRnZoRi0rc1YkNeRZ6BGzj0wXqYcMLMIs4AW8jESNNJqjOJY6meeW0KQVUzU+h9ybn1PSDy8Alz0S4bY2uokKEjoQrUFsfoah/1252yRNbdKGmDgog+AOVxCXIgBAK3Zn7vZn+r+dlVcsufn5eUxz0LQlFCJoUjchAHgpBWsAoEjL1FwH0+I5Y/+jTW7Lv04BaKsESx8Ge64GQ7Wjhcj87SUl5u7Ar3T+67kn21/5+mxGdnd20PDXhogBmaHp0tCuQCDHKJZVDT0HeQfKhrYDfSaFBH9REp0iO79HJlIhiNc7pf92//wX6G8dZXrCLz4CqoLLgt0iAs1hPcvhKMMwfk/OSwghfpAEKAMiEhAA1uzpvqQxQAyRK87X3BfGMvT/vtj2R9xpfvCc9nayHF0yrySK1cRGdrZZXCxHJX7GB+jqKcoYhAENAExYIIDMOBBAWI92VTSdPCTcrPWdmp7iTiEGyiqGSM1f8RYR4fUcCFWMKoLhe2A7Gg+1PZI5YibTmTJAhG1OGHPisP9o3aAdsqGM7imq6MqVBabE8oUaefmUtraq/bEVr6eW6JiGdMGhagLlSv9XM2QiXkMDKLOJAzmcy+g9AKyYqnHWDOThcWkFlBkeAwB5Db0WRVR64NzPIcYT40md1AExXLUWaenKGRwCkSnwJm27PD//s8eP/8Hwx29l7a7IOpSZmQdi7N2by9/5mtuu9U3SJwD9wTyXgjk33m49uz/5xKjKvx2gv47iYoJcoKenem8T05l2qZu5It9AmuaEzfNaGkj0Nx2a/kUg0JOT0yPCCKzOVdFPcBd8C6YAZYCJ27KJUmllEJg2VtIReNOwAsCOVlv6Z76a4t34CJgO3Q40+CMjoN5Q8oXLSJQG1nMghxMAlP7wtiQxsKdIAcAZA2yrlvsEgLA0Pl0rBe4DAKCv61so5XHbATVIrYZe4XLm5xvd3Y+HMqSa38QuOrQRnN8TNDQ+DNykv479E/juTBw6Z2iXgX/QIkHMwVwrUOzxkCVZ+2Rf/XQ9EjMXlsjKdV7WzzFHFOdWgjs7ZSfMhqSDMBAlIzD37OFkCY0ydGsIfBC+C58FQ1zJ5nTYJ/yWhf7GxtJ/gDI6aGullhUSRPsTFvTT2UScwyIEAPrcaMNjxa/KazT20Am9phzKy3ixdlVwLO8QHwnIJgf4kw74OI2ABACEGjhCVPs94Iv46O4pPIl5yy13UF1jQVedsPLw1q5bQ8hDh6sFsrRzJ/nhr8/OPhqt3TbcmPlgIDNzICMDVCQG5LJMlb/7UkcnuV58Z9QMXN9DKVg1ekgHczTu5V/rzVO7e9F/XJZ/BwB9xyBfOI+y87inpCQUCISoxdw0ZGmWQfZNf5rfH/DnBJpJEOzFw4zfvzpx1m4BBBN68PEw6AZ8n5+I8vwGMIVZK7bSdWrT/6dL3N8kYMRmeKoyHREhGhFsIDISvZH5cqwuFmM7I6U/vDnhTcLs8nMyBRUtqkHJ8sp01R+ePjXNZjfm5Yq5r3XIw78j8nfkxnFR+2rU7b50OOuaYpbNzDxNFrxs7y4EIJY1dkxOttUOwHGnquWpyMsxathBglgzPXUU1ZhfTE/YIAGAi0sCQlSAb+m8QGFhyrlFMkPohmJJFw3frPlQJ+EKQ9WdERpvofsQ6ZkMDNAB33Ill50holeyuEKkgGZhIeBvjHHmUDFQDxWLc47QZrNR9+Jj/cRluUwAYBwIjCn019S4EuQ038JEhDSdWUlThkS0HZbxSr0p2rsRtxrAbatb4m9zMzQGbN48MTdBAEAFii4AsJQMnv6MWi5yfy30N+1bSLsx0E8MuLi/de7Uq0Jn6JEjoAzXbHTT/ODszwZHBjPOTWZ9V1cATgisVBo5KZqSGeAsi8IYXIyoS8GzVilYB+x6nVb/zrkt/15zQL8pUinCOQUOHAicZ60WqP5z3RsIW/q/QMrj4PG/eZwY4GcnH+vA+ogBAOhHbIHpM2/pv6S/nrYz+j0QhSB0zGpmO3I8QScjJ+MD+UDp//Cxg6Loz8+Ybcwy+I6IUGOEvyjTidZAJaU/vAnozxvqO2sAiGCH5TDlpcfm4+mr09P/r29afuXvyPdJm8/8QW358QIrYC8NbnV1wp4poD/4xYImGtdIVBGACABM0JHe3k9bvv/00g8Sk4Ra81nPG/C2WyGNTwIxAwGcC8YIWyISkA3TV09UgEqjCIH+/InYQBBySWih8/R0UocbM8bqOuvo0+U6E1khBPZCMDIt3IYuXtaC0fqJZ9A+ywI6idqYtegBTJSnrG2qre2Q63+YWQ3UoGXBAiNXWTdWDDCETjnQX8fe4jGFfoZLejNjGTNR8MElk4jG7dCXsYSTA9XiXATOx9+IMBbiTs0Bt89GtIu/ECvhJhl7yVnA8eeajuulHoi5uv36XNUbdIbSG2TSmqmBQ9oeJT8aTBvMOhFW1lrAQ7SCpC2q+LonFYgAcGtdA4CWf13qP+9YCP5QRHFef+I8sp3/DMlfsfXoEoazVpxZSg+Q+HWs9RAryqeQBeQXujA//vhj6APeQyTAddDiWXLC6jBew01R9L+XPSsVZwX0p0hLDhKz8UEIx0pVtCahFMaDcSCH8yYEAN4TczMBAmaAln94zIx0Tsv/mxZoPy20nc9igPclzfS4ccmW0P/cORrYkTLIuZg7NLuQ4dO6MHbw4K/UvfMrn17/K7GUgq8wpkiphe06mCzwZ+YGkwG9iVQb+s8nfvwxpJrfA6OEfUiVuDYAnWofp0LzRfNo83sn3qPEgiptbwXB1UYwHPrNoZo9NUeMI2wNcEJOeG4QTz3SWtrfMjTUPjrKGu82vghuRngHDVZr8FuQBZPzM0THJlnRNn2Z+k+jNIL7Sv/T84cV+okBLlsUVVWbtUzIDi2LXADA7Fdi3BfeAVMVNJ57AcEj+BwGWAt1YkTntiQ1DKSGQq0miG2UfFl2SPm3sqzsW+Xl36qqylb01wBA7mAM0pVcmknYYIQRQIZ9AtFlnloKZuwduNOvZQAtBa9b+ZfTdxMAitB8lqA/37l7SNOPVY9ettlPkwRKmHr2c2YYkUMNBJmOe0ATCcXeDRRXQ09E+YH704nfk97zufizvRnp31yS/kVEsZvqMbxDU9RoDbmGT+Sn033FkzkPZ+bwnpibWUsWyAD0nTUFwTE89fwDvNBubXPjjeH+oD8xAGi2PxPuAxCr93MR5YP3xbP99gE51SosfKOTmozZmT/Rmwvl5yJQf/jgAzovCAP4YVQBAInsZXl5W8e2PR17Cu4X9Pyenv/15/8X9xqf0QCA0Py1P/u1Uz87lbsvt+RQyUtFL2WmeGk6IswgANxJuhM8Hmwba6v678H5U8Utl4Kic1tjABH0eaNVhGIhHaTK/b+9agD4rfJlGZVLcF8DQErOgEI/g5nv3uwePF1tZ7fhRTZ9GeZ8h3gHAM7JNBls+oFzMKLq/GBqkpySOjI1UlKIJnqYjBqjqMyd0jmSPnKm8Iyf/S6cDQCGAP3EgNHtg0A/VMaJNni4DoEv6IjS7HW5ui0EgwAQ9+5PO9UQF/amzf2X34ySZf9lW8FzCXGprP1hSOfnz59n6S8lPvt5AMgpugUQXVg2/V9ckv5RM1CEKRpT90NqJADQI0ShWHeQ3uT6+j+1jMPtHFZNPJkeq41MvKe+ebQrdgxHt763ttaeHu42VXRIDjcgn7orgOtAf4dVFslkg4yKjKCFiUcL7JYT5SylAR+Xb4dF2gH/APpJBZBeKUxDbqBSTCH35asENv5qaPC3tnaGQjQGfLJ3LzIdd5yrTaAl8frWz+5l75nwHxjLy5+QrinySoq3UT0UhRopoMl+c9r9kXUs6/T583I42fzjZut3Gp0xwNi/33webd+Rd9CiwaHvWKmCvIgAYJ8Sq6YvG58rP3LggUI/MSDaYpm5ZCpvqrkRQtXC3iF+AaC/H3/Cgchh90g5TQI+0yfRGPGDkchIFIZt4Dv7jLOdLNklvRzsAQajc65IBP15TVbWDK4bRv/RD1T8FxRD6rcMzJMKVN9dP60BgPDDu8VunJyu/g31sbWk+/4fuH9JPDYx2eYOOossExHdTscmZTb6Dx3dr7o/FeDLFy8i+KL8EjPQ2XEy+CCBRKMIC9Zd7s4fhviLSyaeTI8F9O135otEpa0YEeb319xvZy1gLLNE6+xAIUx81Y+tgPtQW9PI7cmO8yb8TAP9V6v1IzyT63FmpAKor2iwLgMA6Yzu/Y4LkNH4ExJICr9dVUVxyM4AyBrfffCACvCdW7eIdiYQQeg7exbty/1yM7plaP2g+Hct8dri6dO9lZUdZE6BObPYFBH2e3LGAJuczZgzU8YU3Si/Lr/+HVQJa7zA5h/muco+/Jzd2312SfeHA0RrSmWcbMYNlOvLMOc7eA4AvxK2K6DcE2p26JqJLS3lc0dLTehNPmpGtNU6hpmQwEk6+Rl3kUXgAP3BnQeBj7DandJ/hqJ/mPfyB7x6dMJqIdYKWJSmpWAGa3Sb7X7QkpJ4qv9zOfoRLuXRGnkx5gRNG/3bDs6w0T/oz5q9Omv7aPZdYNcR7U7jEPptWINOCAEOQOHXXnst1V34TF6y2SUDU7w924gDbdmUSgbvSSrjHf01CYjatMIl+CQnoWWuSGibBnzH4/n7Ebq9mRQ+n6bMzF8EWEiJyy1Muf80F7H3OxXt4vx8tqOhIERxiGAP8dcisG4H/awsfOUKz5YwqOcTwiFhfHfKOS4uIvVSbZghDMjJU7oHXB5y1s5RU6z/GWYbGYwjBmgtFcRgAB18mnaC4Lxfvn0kanMDoL/xDP1HM26cq0lT9C8t9fJkSHQbXYqvYo6aG+FITd9BLU4BQDuB6qequ7r2/OPiouwiSj0vyUsSpalEs7Bpk9ZriQHK/9hGHCLAYN4iKIc916b3am9/VT8L6o4sLRVxCuwMaMeEMh2vCx/s9vzm7puq2BAA4rn9Qxj93/DWYDR8Lv1vC9rSf6fV88f+tHQNsQfD0aNH6drUAEDnKFGBvTxVDmInH3FhduEX4NbWN4rS3nYz51i79Y33xFwGIcxYc9uG3xT5b66anLXIRRiSXds4DyGYRZZID0lM9ofWgFjNidFb9fx0uLoCtKk2NenzP3b5fOzNp7tRhu2xQTxgiwJ4gPZ0QQv41kxDMgB90J4R8euT9wclqN0fQqoE8a+qAuLxjDzZKXqsdXQb7+yIAXwEgAApZN8hPpxGcJDhhdj/UwATOgimWSuzWPCdc0feq64u51JRxPS234dWfeExWhDGlNlENl6jLwb3ORxjbnoOAIOyzHa2TX83UJj1s8yc/J1l/T7f6e3RVvt1JwmGtmsi3cAS7I5sfurOBM7yHbWBdl9799/s7vvzfZVb9A2cG+bpcyQTpSQXDHcW2j2Wgh8trQomsNCmGoMhuWoysX9ws7P8u/HtvnHf7vpfWJL+mevt778P0NP0TXsoWAAiAAd4GwuvSNq4a2+//bZuxEYxwE1Z2GcZ7ZsQSbIHAgn/weESpeH6HGgvftF+UE7AO/ovjwG/A9FhzeYNLXKJTmISHIbnz459eyElkzqUIqoG69J7cV0q2nwrvaHQ/xVvDYkg2zfRDkQqwKPc5ltbaeekMcnNk1aZaez4gpRPXEIp50BKJrb6SoMW9N8OA/eIRgZmmFYM6N3d22/2PzQe5u6xE60XYD+VBX5oP9JY0tgf2pFc5hs45puoyOCa53jb72Prktmdctia/RS8EmMuaJVeD/ccAL6//OEk35bxhl9rvrD7g86yTvg6SS5JTrTNegxokb3zH/+yF53zNyYwnkRzuq4+vT90/3rf9YbdDQNpA3/23LmG+U+ZY0wwEgncGHxCeKTd4t7WUpQ2ipPiUJ+9l4KXdJtYA4C+ibP8u+FNd2Gy0X/wyF5t+uQn/A6JnyUC+CJ7NoAINs0HcFFg6CNiTzdWonP7CAlu8NdejcyiM9aa6v4nWoeIdkc5jqUorRVp3hP/WbMUYUSLrylrirCi2qZz50SJ0WKPAZwTA7MZtDsxCyWLPEA7BWgK4KbLKkYMQAUiHeSycwe13sD0JsJLRCMDIIen1wBMEMR9GlUZDkNntpMA7N7t2/oVeBRG15n+UFZoNGGY5J+ZytEvxJLkB99RCJb5toW2f3az9v7Y2AEQSpU3T4nJdst0Bo1bxuxzs6SGV+pWvjssiyUA/CAM/fk3Wny6pD8eeGyMf8A5QrdNdJJodp3mcuAszPuhXl0TZvAeglBpZmQZzxad3+m6A4gAKExpJvPDRw/v9t29+qevHk87Xu579IFFqalLkWVC9ZqbrYeJtefKuQrKtmF6W6ylYOgPKRxkJMbyb7ej/LthzVhhr//WA1NSUaP0HwpJjxAUm/BMvg/C7nt+wlG6100jgHKIvMtl6EAG7wO4oPsRV4guNJXTYqQVaffGUQQeDtczIQvhbb2jv9d6gAK+Bi8YCqGAEe0OPHHeg1hXxjAwe8mMC9MMHTfWhzCDJpEZJS+wZTftyoAjRgYHJF8aeOCByAGybR9vsSJcEgM0AOjPe5A+w2gxjHvG044z7F/CXkcm8xZAekH2/STIsfV1PjM/mzamD7bf4IubwDfn9NprK5YmjIi3Trd/wEREM2PmnUQ0XsDLMBFhhuq6yFgCgJM98Q/9uYtGHWA6Y2brMJMN/Obz+Kri1kjVaEiAUfTfSOnrmyHLpGeMOcOic1aQs4Cwd6yXh3sQyoAYitrDI8NdfV1Vf7mqMquyfN+tu3dyttdCMBGCUFpBV6kfKR07e5w2OPJNz1vSh5eC5/zNdj9oIBDr3p/zzvLvi4f4yMY6jM8DQOpde8Mfsmvn6kQt0oQ9dcveM05XYPFKl837MEfd7VY3n9A93UBw90/14hCUBzYB1QDA4bwh2xV4vQzeYwAAqyNcD4pg9SJH1w39nVgs0bXJaS7DMJKStKXEbQ+iHquHRzTUKGQTRqTsxBSsgP+J2GHAMG7+E8NoNtJ7ftj5la88IvMnOYk1fHu3VxQxq2WUSEYNiKjWduOGQTzT3TNZCBKlMZU0MyaLBdl1yyzYfQRSr/tfkUZrxsaxsLH4PxRe90ln4NzKLCJHs+Ucib40SNr4Pn93dwsLU1DwaZKGObGCfMgYwuOa+5oB/fYt7alm6r7ZfW/JWywxr86vzi2bnx0b+6R5562PR5INYzotbRLFn2ZquD89A3iBw8zYVCBKwbEHAI0BlH9/WfSfB/LApv/z9oY/kHFH274uLUmwbMWeTu3FxMSdIStrIREWjwezoT/uC3mhwOCmh4GN5NiHgNoj8UNrkmQPvKdmAPEzV26OJgrGErk4cZ5RoBXhSCh0n4RLYrV+MqmISo6KrZp/qy7hLjjzfRizU8+M6jricoT1qLp3rAZ+LX6s2ZVJaQIkIWLaCQeXa7VrRQz4PAB0mfJfpel33mgy9h858kdLSy+WlJzZv39XnKK9d3KAOsIzRLnlOvqvX9cAwPDQUaKZMeksxS19NgAThNqbrGTspmVLr0QODtQnacc/AAD5OogCWlyKaopggCEkjXl/71ZLayuh22C3NzyNbafQfNKN9CIpGpXRxSeLcBWqpvyeDUkO5B6Q0wvMLbR+hC6YAhcXBUG3ujVJLOJhbGSoYL3vUX1fLKVgkhTrcMq/GlQ2fvkX8mKj/6Oy3WI1ffLT+YgYDM4+bxnNBmGL19W0/9L9cjA4DuUE/BvfpbmIdlJoDu9ALwBVx8hOTMbAU8D0WWBEAqRPniLJEwV0Q+n1sciNLaArGEsuypycpSGU/1t14dWEhf43iFq8WQxdQLzJG6s/BUub5DgNjOSbM3GHC6pfc3vAZXilPkGaOC0rGeRUNwSFrsIF+P5uIg3hhZ3FfOKj+DeBZsh5hkLUc+CIK8aAQv7XLmadKRflo2Kzt69j/1uXZo8aw2XGsJxhWVKM0B97DKCCUWlWThjPAsBHEx9NEgNAfx0Q32hMHwBAOoskzqJLElz6L4gHK84I2A95MNqp7qmuGziuwzOB24XFQRQJAQvtLWNIlEZ+Ak8Dx/s6O4PBJi4LOwzW1Jgiggp00Dz4wHhADkUqgH/ohrT2w4BIHUh1IBsEAIKBGdmbvSYBCtl9SxoOAcBz9ydv9ctC/230b9k/IRVvKP136sVoMkAz3TUwEa0HhEmQ6P4AAeKj1qDEtYHaYAdvSB8nGQC9pKQRMEpwBzrPTNBNKJ0t/+QKnAZTgl2Mrl27xgQgZtCLwt4VNKeiIMkLMtU4YSZArjbSkOQCu+FxA8J75Zpc75KbY9IWw0KwW1RgIZ+rPFywrY0gSZMctwdEEa2WutTW+A68GBwJhQAg1v3BK5EmwKDlGzqRhIFTxGNuDQjEPOVwN+uy9speHmLKBEF7RMujeZQryIH8DGOTBBnaUgtpBgVV6669XzXzgwu5/+8/XTP+lGH4cA7jjJxh97oXvh9cQAKaAQBin/R9Is4YwHBtTDQSWfyfi4+Ta2bMtGJ7LmcMgCdx8TUJRgjlNQRplmRybLwDwN8WWrX4VgzKHdrPo84UtUHQQiG4yZ33B3btGuay8Jik8nJutJASHjJXbY2mriKMNTL0vZaqesz6+SPPCwLqQ45VwdF8Te6+ij+p3f1+qdz47f+6fdXnAWBrvS39MwmdLAxJEWGR1BK6TbKJX0I0gFqFAAgILB4ajgijj7AQ10a/M23mIL5mFfg6O9NRzoJUKu6QJRB+yCrIEYEYSkTEBv4KLQL6ORmAiYnBgySJAfo0sRdl+lxqfIilSybgSys9lwi2FAhoumzofhH8+erVgrq6vKPp8kdF/qLnuD0uvi6ehiEJSc4GSkV/lnHRyM85aMc+0Ox+SxqwGFlVGzofdnVx07lNKDxAEveXkg8hWTeDwxNAH/YKBaf4phA1QTbks1wYnA9er3uOjnC50tO5SswgzpZACr8E4QwIH+GUi9bWBtel889vmmdPs9I2+c+IlBdf1eqBxgB0GHkh5hCuWCOlOyUzbrTcsNGfgnCUMHlY55Q+7Z0pwDWHe5EW6AJMTbwIvXAgbhAcCI2orKyMlJpEPH4BwPhiva4O6toAsQ7xYNxaxKzBwenHj69e/TQ5ecZq5TaIAVGeNmcD0hpEItyVE7WhX3/GWgq2+0HxaQ+rfxec5d+Na8w9m/7P2crPsmQfRZ6cVFvClWvoQwVwRBy0wTJcEIAgCY2Wg9MOxMIC/BvHJYGot4yUlk/kT7g7EK8BACUavwd3ECXQPTVZZuNScJ+2VGKAvEgjIwX6AEBoN5HM2hgafRMIA7yYLIbBf5PFsoDl4O3bVYf+4EzVr0iVeLbUf7d36wc7t9bW8rZ8JOm1gqagqPBP+DIxABWorIyBEs3Jud+OALenDZQ5xhsSlbnyJGpkXSRkCkb8hjhNAOaX7A6yyOytrsZ5CEUuV+SQ4h+RIyzpAjHZRGGcrj5yI65PMIj6JLwhzVTUBhDTSKc6OhKbm8tmisrN8sqWypOSeNRqb73SecUZA9CUXmwMSDQTK40vigGtziTgxIloWibTcWwyYwgWrTFkxvoEPZIw8gPmHf8kFSbxYrJwL5QAIZwyQ2PtbQ1H/7AAYH8fzwat5p1mZgYWFmprL8/OTo2PE+YNzpzchaUeLjaWNjo7mVZMJWBIvvY1gMLGfYaqwDGWgm8ol/cWAKD/G1//IZmz0X+gNJPZq2M1SoL/Ab64IyQd5yMtoPALK0GQoRKFC+KyAU+Vc1RL0B9qCd8nfsDuec+gZfg6/UV2ALD3edZFZ+S8iEh8LmkEUUpesAGzkGboDcBFf+oD+fBDwItzJWPGswE4HD2vs6OqqqOm5jevVKVuzdk67bl1rXzLlpFDWz6+I2+/ja8BmsQb8JrJBe4zN/gp3A4aUYjrTLqoLDeXA4FgggqxpK21lTIA4ZYbRCeYbgbHrad4g/pHaGGa8CnEgKhgjg0FEJbpCIJ7sSS4E47PxOZyUUhAC+LTuWIjI0n9/bnzh4rkdTSWo3K0oriiQBZ1fQM/67rqnDEAZvpiYwBB6IuCsDnR54wB0bQ449t4Oy0VUCsVgki1ycDQggjA/IlJx8UnJED88X8mIJtxScyWtGIhhSitA0mEEWPnLY7C3YVoDGzZ8uGNm0NDffgqfUFweYpAJAmkg3yIrf2aJvECx4YNwEt0mS0KJ06e+MYbZd3dxxwBID0+peDB+j5V863ClNvyr3XI/qHkjVX+Pb6G9N8sqSCFov9q6i28D4qBUIMaoNDM/Mc7QW1SgTfffBP2gRSDO4onI6vgTYjkEH94jVaGSS/QfBAfKAzg9KQCYBAMCJWJD0WGQnSC8uS547ZrTb6t+pIYDK0MAMRXyZPxYUoAQ2MXL5JAoc/gzZmbZgoKZo9YRZa8k6l3A6mpRup8pBrApgh/SClJSZlISZk7LXBn+D5ArKAJ8hB/EKTYiRo+zgkx3ZhUURrH6pNk8H/QaJ5Hh6L5MFFnZ5mQlIj4UihFZHDMW16gnyVRhmEgmywZ9YZ6AAuDe6eRg0ZmpEMfA47WnCEH91p0ijUBPMOHdIYXS7HYAYAzvPx02pBLdgwAa11dyfj/jbkzRxQ4aBzUGABgfjT20awzBnC5XBtzCvQnLQb3cXUSX2YE3AsyBGFirjElEYUgZ+g/xADmZjwCgLEyW6T8SxFYtmy3K8DeDe85exb3IpBM79p1ubEx9DZ9QRPop4R/ZpHPp08EIkbQg0ifCZOK+AMbYAUCzAZV0Oicyp8rKio0SkOho8eOHU1JORz/UrAOJkA03Z8brvz7fVluQQla6J96U76pHTnAUmSYwOFeffVVNBkAF3TW7aABZeCY30BDQGSJwfB1Crm8lf1cYkQGNB/kZupdBADyAD6O+UDyQQZA3kAS4H7Xwx9EFFT07zEbJA+n1dYP+4HAnPwYhIYaJ27BM/0RQYdytrO25k1508Mppyz9YUfVjq1JlcwWtDD4BxSJqQIEM610Tx4+DMWVYOD9ywBYxFe+CeIM/Au5yQ4AiP6EB3xGnzbjNfZXSRUFYfZ+YP70Sz+Nq1QcNQBANvVRw6wW4gWsQ3LmpNp1ynfkfC6JGAxp0BhA5HB587/n0WlSIjsMtQ3QH8mEMzHvm3J9XnZc12JAVCtMaWxDdoMVkYEB/VB+uL8GACYCUw9K5L3w674LiCUbOrQBlNsf++aTgmhLroeH+f29bQW9XV07Pr6/ZyvawmJaGt4VFgDwPQIAOXTWwD5aFLLxSwhIN32EZWWhlPRiiY8p+tOBGuoOTSmmM4WWlYLTlnXDaQDY1j2z8QMAa/puytab8o2bIrP2Rh0u9tLA4eDp6Dykn/YDYfR5AArEsRsEv9wybS4izDgDAHIQfq+V4XjEQbWt+sd4mT4Ckp9kj3gs3TG4Mf5MkQCQpMaJY2dJyaQxSc4V7Smn2L81hMa5PRXlzCCQWnQ3ZuYoM4uLo08B4yRivC8qXrNTG6k3X4ZJyGzUAAALJPbwQbwmNqOHksHmbloSmLW8kgDAJjHwfTJpNCLBzHBdkgvNWWk2cFHE0CEDZ8QgeKx587/n0WlS3DgMBWF+UucwOe8gV5JhEgbIzKLrLrMMjk/7A2k304HMWyVTpp69f+L6BgD28GeA/eAxg0xT4mFkjjAlBEeyZdBzvLd3fGCgDaIxOA7k85Bvg++akLCgK1MAqcJ0OZWp/RZgLLwjdOBAt0hIJF4BgHUsLEeAlfjmfXPdczD6FUvB31+5+zN988I3WdXMO2yg8u/zvPwJ4o/sA/oZD8WL7bdM1tkyLZP4WZmHv3g1XJWF7gzEGBgzIAxa4sI2hrHS5ZysCQTfDJ+G/GrF9iMGsxLxRwMAHBOAjqPB+ZinjPU0UiKGRGWkIAw1RwxgnCGtW/1KYl8XzP0diHwTVsbMk3JSbLtOAFga5RKtxbTDT+wBgEQGBYsCy0Pdy406V7wMtoL4EAgg65BmwvAJ6bgyAYA1R8R26BPezOzhlTAOnET7lPXG94O91hiAn0p8jOXHzM9SKV0ILQjhpbtv7QBA8hqqku4qYiTpqq5f35h2c2k0/X/2zjOuqXTb/98tVQIiIFEIwtBU0BksyH/G+Yin934O8++99zf/3st9dc+r++b23u89vdw+fYQpeKyoY4NANIAh5BAgkFD2/V122CcaxBDAwjzfWbMNO/t5kuDH9XvWWjvPYtMxyBXLHgX6Z6LA+YONnaYBRY/rfVjpWZR7NSCrnM1jEwA1Y1eeTq7t2vDL9Pdz+TKlpdTVablBeTnrR/5dsbFMsUUkokhTAkC6AJSWpi9tBsEJAnazYeityAiBf8kCsJdUPkEKQ+D/BH4I84RzJUUAth4Gw+K9GvAJniTG79UA79MjADXUNNHUSmuQ4JWzZykqkptWlC4BoLGRj32MjUITao0vy5jBZQ04DPlsNP5ledn7kGtkTzgjKd5/FsOjx2bzMSzA6SdTAIQ/RQM+yxOIZWOzEnL9r/LqaU6f5ez1kusTjfXJL+996Ut0dbl7ntiPY0OOF+GL8CVo3vA9ofI09bKVsAJR+B58d+m48Ij8wzeWrAS64FMYDAbDZkYAoprqk5wspLCKqtbJ1tD5UIzY4qkEtv0kyKoTBDSz0cylLPCfXTVEWOCR0YXsUWEwGIwAiDrqlJ1ppDFAIEx4hhkbmyeAO8uJoBBUPuKY+7kl+59sZQwGgxEA4cFzhCPOd7hXEQCbrYXBYDAYAXAppljGVsFgMBgM2/jgYDAYDAYjAAaDwWDIxSZDDAaDwWAiAIPBYDAYAbAet63CJPwqfCq7eTIZ8+mlF5jkoSzA78NXV3659b6P1cf/BfwrqMrw6lvw09Cx2kUrzlMN/xpezuqtr8o34SXIgb8J3yYD3oP/CM9k/OqF8HfhBxgMRgAMW26PgOqkZUb5sqViZf0q62cxy9+WwWAwAmDwyTJ3zWVQDhWQv5kyk6m+2EkzGAybKgAG60l8YYt1sxOqwQeVWQQBmeFdfomdbCyLj14ADAbzRTD1Zb148eKdO3cANahUJ271ZmIjGGd8lFEdo0RnmZ1n3sLKI6+IolJKnW2oCylkjXzjgUWAP035qLkNNLTRth6nfP48AwPMz+PCp6AEhy4E75DOAvQuT23VUbeHPcCtW9y+rYYLJBLk51Nejnpt1dbauCwu6iKGh3UR8bjT/cNp/7T6FqrfIYXqS1TfxAchnDbWxzi2gx0P+IDlt26VLy6Ww0hNjfrLprTATmGe+Xd59y53wfH+OjbDIZb4chYi+IekYzNv851FXHLgK7h0YTAYNl4A3nrrre7u7ps3bwLqP6nOZB//+Mdz5H3WQT/9t7g1xNAww2HCEoAZZlwB8OCRY5IA+PCpvWIzzbvYtS4BSNOAfPJPcUrT6iXICgliby+vv87cXIr3536P9I3VdoZlG9vUOehD4c+fPZt/+bIlOQmHkwLg9dLczLFjdHQgGBriwgWuXSMQIBJhdjbZ/2/PHhobefZZXcoD+MP7e0i9S/UrnE92wZQWnuQkaYRC+oDlr71WPj9fAXobUhm9pZWbDL/GazqC4/0/plcBMheAG9y4w50o0UUWt7O94hsVPnyS/7TWpLOL/GAbWORadAFGAAyGTRSAGzduaPkvDXjnnXcAtaLX8l9tYNWNnqzQOvEiF69w5QY3/PjvcCdEaIIJVwDcdqC72V1Djdbp+9l/kIOHOSxtWJ8AiCj8mdP1RQJTT33WAnD1KleucOYM16+73n9155uuAe812831wfpXuyd6e73nzqGpRketeFx9n/H5aGsjFiMvjyMlNzl9GglOXx9SiVDIEYBkA/KWFp2RbmiJ/vBfSEXFkgYUU/GdnPDkl/myNHieeckA9xIMSuTKL18uv3ixvLZWg3RmZQHQDAECL/NyZBdUf1mXpnYK+j1WQ33A3+O9S1waZDBCRAKg+M/7DW8NNbXUSp9kHjzAEEMhQhFGPFws4mvSCQwGw6YKgNb7agKutvRKBAGKA0ZGRtSwm6y4zvVees9x7hKXrnFtkEEgPz+/vLzc6/Hm5ubatp1IJKLR6K3xWwoRCilsokkPbnM7RKiDjvRQIOt3Is8iAdBRL8Ea6e+XAMgc778at1d9sjpUHeuOvfnmdE9PZcHZpiN4CyiYZXYkPvJ+//tvTkTz8uSxQzV573rfeiuvu/tA/rWaQ5SUOM3TFvz+SP+liDJHytORn09ZGQcOkMZCWmNfmdz0QvjSCCOOyeGuJABF0oB/8A/Kf/u3S4LBSZ2Jx5E4pSLx1nBpwBhjVD+nadHkmREn3k33m7x5hjP6G9EMkqJiip0OdHXU6W/HSZFZWH78ffT106+VwS52lVPOClxK/yErnk19ZDB8QAWgsLDQ4/HIQfv9fpAzqtCPOsnaUYqgm+53eEca0EcfsHfv3vr6ejUZ17TFxcV5eXkSAHW+lwCEQqFAIHDr1q2+SJ90YpRRLRUVJShZ4cXL+vha19e++cffvDp91REAHXPIIWNsW2v/pABA0ec+99kf/vAbZMV07/TwO9Pd3Z89dO5TinLkmLWwjRHTR9bjN8JvXL5MY+OVlvkLpb29JxquHTlCfT07dyIBCIXQG3j7bc6di6BIxOtFy+X9+7EsVkc+2nHTly45vlt2nwCEw/L+0gCKi8tFzRsVwf80qet0Rm8gFXcGhDOtjpnRR99ZzvbQc5rTcvTHOa6PP820ZnuFVyqo0N+O4gBH9RU7at0wyugn+aTO6w0/NNqZgR+SBccxAmAwAiBqa2sPHDigVb8cNKDMT2tr6zNyNGvkJjd76NFaTxrgx68m90eOHDl48KCKCpKBysrKkpISVwAUdoyOjkpyrl+/funSpQsXLmig3OICC7nkfoSPlFDCOoi1xn7Nf/wf9vYqEyXvL3uWZ9eU/HFsaIhfbG/9RryFbIm9F/uL3m+d/JkPPX/y+SMcabQaHQ8oscwnP0Kk1z8eCPQHJ6+3e/s6OzlxgoMHJcNIALTu372b+XkpgR4Po5BpcFCPpKusTmWlowGKGIYjw04EkLb8dyIAypcJBv06ky4ActaO6VLH+2fY1HOe+X76FQhe4EIrrZL2AxzQ8n+SSQV8fvwyXaDgoIwyIEJEz77Ii/pF6Xp9gExSbjPwg7V6f1kK/w+D4YMqAKWlpS+88IKyNHL9zppdjlvugLUQIfIjfqQbRd7mbT/+3bt3nzhxor29va2tTeoiOUkvKU9OTmr5f+XKlT179kgtVIU+s3hG63TnBqEP8SHWwUzrzMxAixJbrWM/CQLkXDIaO5P0/goCRsrLv9HSEh9chwD8vP2Rlzrk1DrprKEGG+GxPB10yCm/z/vnphtGRv79v7/m/+IXbS3/pQFu++S6OubmCATQO5HbR054dJSxMUcAMgkCZNHIZUcAxhhLTa/J9TsRQFtbuagor7gcTKqCJCc3FzeH43h/zUB1S3LazAgR0ij5eun6czynX4KsggqFegqAZH78AQJ6IzojtSiiSLO30NJOu4yVaVvpVFYYDEYAnCBAWRpVAgAt1ZWpZ40ocj/PeQX7/fRLUeT9Ozs7dTx27Fi663dQQHD48GHpTVlZmeRnYWGhp6fHWQx68frwNdOcvQC0SABaZwcGxt56yw0C5HPXtPzX7yPxYktcAnC9hexpL6J9Lx33JDRssFCmW95Qn/fllwfb2/0+Hw0N3EdNDQoCFBAgJiaIRqWcZIBbBuDyZdeDuwIQiSR9vdSuqqpyz56qam91QXxHMBh1ztfW3r/8lxN3RYUVOcx9TDE1yeQEE/vw6uM306yCPyCBr6MuSlQaIAEYOT+ix5q/kEIvXl0jtXjw7QBd3MtfQ5YtBoMRAP6cnD/MqfrlKsTfgy74PJmjFZwcZh99ivQBBRC6lUjeX0cehmoDJ0+enJ+fn5qaCofD165dk5YoKSwv0ESThUVWJFoTcwPMDbTaAwOe21fcIKCSSlZDJfHk2l9Hu6qqv6VlzmqZm2sle9rhODSRRhFFcnkFFMBveDxSREpL0ys0FBWxfTuS0YXZWRIJZJkg3XDy9Tt2jESTdeBDHEpZ/sv0vGNJ1+4IwPDw/QKgsXpzzoSaOTPPjHw6zHcxDwVQqM9LCjvYobycbOL8hHRikcUCCqSIueSyGl8jhQ5kmWIwGAF4jzSSp0ohDi8h0v9Zdax6y/8Nblzn+iKLyvYcOnRImZ/jx4+TGao9KFBQ/BFQLry//87cHU2lisIAA5IBsiMHu9W2B1oYGIjd/nMFAY4AnOJUhsv/iQk41mK3tJBose08sue/gM1KSN62sc0RuW3bkpaOZaHzOmLbSXPJrBQ8Gr3qFHKnmfbgcQsAsoMHlwRA4NPV7wbfd867aJQzluo6t/yboQDkuOdW3QqutKu0dF8pBoNh8wXgG6TxY/gLUukEMhSAGLEhhpxqHtDY2Lhv3z6VEyzLgsw9VbVKBSoINzQ0KAiQ69eEmjZ7ARBN0NoqAZBduZHMAskUXnA/NljAyEjKzT8qg8v7yy7sZ71YYPPIcTM2+jyOH5c10ihtc8q/09P3RAD605ouDganHA3QKTf/EyOW9P6yB9G8yglrybZhMBieNAEQEXj5wd5ffJ2VcZaH8hjzzCv7r3KCvkSWxU1EultUA1USkAAECGhCTZsgkU9+9i63pYGBv9IAWxow7wQBjgCsjFv7jceXxEPef58EALCeSg1wb9ksLh6ZGnEFwC3/6knHRDVuFui6KwDu8p+SkuTzVVVkw2oRgCvBBoNhswVgkAcQgSgFrJEw4RAhZ5cYr9er+3+0nGftaJRuB9IMBQUF8Xhcc44xpsmrqCJrapATl/fXDgz9ly5dJXlH0AEOkIbfnxSA99+HAwdsZ/lPipI9zRowcn3IWcsvshgMbnMiAGmcKwD607Gzw0kBSK0Au9kkssRZ/uvIBmtAx5J9HYPB8Bh2A51gQhYhAuzcuVO39Di3kGaBBmq4JnH2D9C0UaKsE2chr2NxsSoBMjn5OHHScGu/5OdrSNKeclzHPcusEwGoIOxEAFNTK0cAcxNFjgDcvTvuLP8jRFwhITsc7y8zGAxbSQBixKaZlgEej0cVXd3fSVYUL6FJAE2omWWsk4oKeX/H5Mvk/R0Z4F6uXUsu/wcGwPX+VVVbRABkRUXJL/QGhx3/nur9nU3rnBNLWSCWbPkLwB5PWgFgo1NADjYGg+FpEoAECceA/CWUwyErNNCZ4b5ps8RKCwIqK90gQBEGyyQSKbXfkpK05b/F08u2ba4GOAn90eDovTeA4uJcp3P3C4CrIpZFFpgisMGwVQXAxl5kUUc0+xJWtm4idbjmdKddL0VF9rIGyO9LABxLr/3K2zlqYevisjK2BO43wvTZwzPh8HB4eHgmGl1BAJzlvyw2XjgysjAyMjb247EQodQCwPojABMEGAxbRwCUOsghR0dgYYlFue6sSB2uOd1pNwAnAtCxttbNAjm7m0WjSQGQKUTY5Oy/9RjLABQWRu5GQqPahenH6d7f+Z27peDR0XHVAMKh8EJhXnoBIPsisMFg2EoCUECBY0B8Ce31RlbMLqEZUqfdqEyIqwFx4k4WSMfU2m8kkpL9LyraOg0pc3PdHM7E6MTdu9HR0eiD9nRwS8FjY5Oh0MREaMINIJAiw/qLwCYIMBi2jgB48BRT7Gzeqe0ctMVbNBolKzR2aglAc2pm2Yb52cbGpAbs23eNa04Q0B/qd5f/Tt8V55rUKbZMECCbvDs5Oqo9nydXjACEGwEEQy1jY1OTY5OkasX6U0AGw1bCCEAppTvZmdzONxIJh8NjY2Osnbm5OQ0cHx/XJEA55ZpTk7NB2KnV4Lw8JwjQl86WvL8Vi+Eu/22FC1sLdxXf/5XAr/961OdzBGCFmm4eeclS8LTvN8d+6lrXwIYKwDbABAGPC4Mhl42mkkov3t3s1rJaW/yrr4Cay8uba+t/1sLt27eDwaCGqwywne2aUzPvYtfGLoTdzSGGLly4Gb3ZP9B/69bta9eW4wNZUxNrpD6LJ+szncNlL6txglXJz0/m8Y9Xw88VFPycz2frp3TcUrCOVX9cxTM4AzWDiQDux2AwAlBFlfxFDTUePNOx6cHBQXWXVF/JtbYUVm8A9YcZGhoC9rLXcUPWRrsMVwBk/iG/f9Cv/+cXt+l81rXfLh5EkyyDMV/gYdRoRJbvIUX8amU+GLQspcGsmpqVV9o11Oxn/1f5KqIafKxj+X8A/heyLLB50jEYjADkkltHXT31jTRe5KJcv/Iq2tOtpqYm82+EqTH91atXtRmc/DHQQIPTKXDj918oK8MNAgLnA0u4yR/27s0iX/8SK9KMbEV+pDFr8P57ZVm8h3QBeKkaZDmwsHt36ge078sCfZyPH+UouY73l5VjMBiMAKyIXH8zzVo29tOvHM7Fixe1I5B2dFBPmEwSQcr8nDlz5vz58319fYAzlY4+fGwoNlggR+8IQPwf+odG/+Du9u/T+VlHALJbdx4jnRydzmDAoezmT6eah7FdebWkO4fAQ+/sqkb/kbRCVsZgMBgBqKCildYhhoIEu+k+e/astgXV13qVzT969OiuVfvHKmKQ91cvsN7eXpUBSilto+0QhzThJqUF5ApdDQjMz1NXl/T+Xi9bGjehA4FML3dGGAyGLUHuJm28qx5+o4yGCU8yeXHh4unTp+X9dUOn2ryoPYD2edY2n5Zlpd7yPzw8rGqBMj9a+7/33ntqDZ9Pfgcdxzh2mMM+fNibtgtnayuDg0Qit51b/g8dQg/Sh201XI+ewb6kVopeGAxbCBMBbLwGFFDQTvsUUwkSFtaF2QuvvfaabglVUVctYlQPUBygkoAyQrZty/tPTExIG1QxVvZfmR9d5ol6ni95/gQnpAGaig3E1YDUT67+5BUVTE+Tn09TEzt2APZW9v7CA39HZuquH3AMJgVkw5twio1jD3te5EVHDHaw4wIXVAxQhkedXqqqqrTVs3b6dAQgHo9Ho9FQKKScj1P1rf2vtUd6jrSfan+h8AVpAGlsfBwgj9/RsVnf1cqBv4FsdQ4t2f/lYXxpyX4Hg8GwUZgaQBz+KfwSG8de9n6YD5dQsotdPnzXuDYQG7i8hHZ50z7PrgDEYjHE59gTLhmdOlDfc7gtr+1E3tHOzo7c3Bw2Exsss/z9YGMwGAFIINtodrP7E3xC0UAddfvZP8hgkGCIUHQxOjM5M8+8s3uEpKKsu8z7htc3F/e98cb/7TmvL+fm5TXl5tLZufqq3AY+z4PJf/DTX4Dv8zC+kD6+BpnBYNhqGAHIhXk2lDzyVMhtoqmf/iGGRhgJE44SnWVWAmBh6QKP7Sm1SysTldUJv29u7n+88UZPT1NeHhIAHV944SHZmK4HvzZd2QQB9oPn9jmnDAbDVsEIwOKyAMyzOZRSeoQjsjHGxhmfZPInAmDnFVFUapVWnKgomXuHuTkSidhpq6dH3j9p7e1r/95Tvp7IJhFkP3juGudng8GwhTAC4Hj/OEvYNkksi41G9QDZyrn2fDhxQgLg2MS770oDnCBA1tbGgyjI9GwWFKT/YDAYthJGAOJLlgAWF5meJhZjdhaKCikspKCAR4bHo4yPqwFjZ8+6cYCU4ODBTa8G23zAMBgMJgK4eTMxNZUAxse5cYNgkEQCnvFSXs7OnZvodNMpK5MG6OUdG+nrkwa49YB9+9gwzJ0/BoPBCMDwcOLllxOBQAKYnOTmTS5cgPx8mpupq8Pn4xHj9bq5IHn9QDicmguqryczSuAfIdtAGuG/IDMYDFsEIwCz44noaOLPv5GYgOlpgkGorKSzjWPHlHbZLAGwH9a0RBpgWehBNNoPebK+pAbU1LAeDAaDwZDLKzBEYiiRCCTiTZU3pjsRh4upqmL/fo4epaODR4vFMs88Q1kZgQCxGLZ9DXIdGbhDZy579mAwGAyGrMnloxAhPhSPBw4n7lYjV2tZFBWhCKC+Xsv/x5xuLy1FtsxlRwAgF05BBevBYDAYTAqojETZc4m25xLRKDMzSAC2b6ekhCeS88sCoOMp/rKdO+BQIIgCOP5mupRGYQpQxSEFEZAAhPvcg44OKAClQGkXxoJb2BubAw539txp+v889OYL/GVqpCMVAAB3APltOh0J8wcKqeLtMwBhXgQAUD0A8v+UfMvrbwUAAAjAezk/VtzlL/EBAKooCnk8AAAtAIBoEAAAAAEAABAAAAABAAA8yVeyLNvtdpfLRSnV7/dns1mj0ZC4AQAByPPcObderw+HQ61WG4/H3vvVaiVxAwACsN/vt9utc26z2dTr9cVi0W63n0sCIGIgAN77JEmOx2NeOp1OYQ2HAiBu4BK42WwaY6y1tzV8CGs4FABxA98AhsPhZDK5Xq+9Xk9rPZ1OwzoajQRA3EAArLXL5dIYcz6flVKDwWA+n7daLQHwCMBjcOE8TVOtdbfbFQAAr4ECAPgnMACAAAAA7s0HoDFhsamH/bcAAAAASUVORK5CYII=",k5={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class N5{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new In([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Nl(s1),texture:this._createTextureNow(I5)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(ne(r)&&(r=k5[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=B5(r,n),o=this.fontRepository+S1(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=>Nl(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=S1(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=>L5(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)=>{fo(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=fo(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function S1(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function L5(t){const e=t.split(`
|
1350
|
+
};`)},f=d=>{a||u(d);for(const[h,p]of a){const m=c(d,h);for(let g=0;g<p.length;g++)m[r[g]]=d[p[g]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{Cg(d)&&(this.handle=l),super.beginBatch(d)}}}class J8 extends ue{get behavior(){return hn}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?Gd(e.sort.field,e.sort.order):void 0,i=e.field?q(e.field):()=>1,o=e.groupby.map(l=>q(l)),a=Pb(this.buffer,l=>o.map(d=>d(l)).join()).map(l=>l[1]);let s=l=>!0;if(e.baseField){const l=q(e.baseField);s=d=>l(d)!==null}let c,u;switch(e.offset){case"normalize":c=(l,d)=>l/d,u=(l,d)=>fa(l,d);break;case"center":c=(l,d)=>l-d/2,u=(l,d)=>fa(l,d);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(d,h)=>d/h,u=(d,h)=>{const m=fa(d,x=>+!s(x)),g=fa(d,h),y=g-m;let A=0;for(let x=0;x<d.length;x++){const w=d[x];if(s(w)){const b=h(w)/y;A-=b*Math.log2(b)}}return y/(l-(A+0))*(y/g)}}break;default:c=(l,d)=>l,u=(l,d)=>1}for(const l of a){r&&l.sort(r);const d=u(l,i);let h=0;for(const p of l){const m=h+i(p);s(p)&&(p[n[0]]=c(h,d),p[n[1]]=c(m,d),this._propagate(p),h=m)}}super.complete()}}class $8 extends ue{get behavior(){return Ot}constructor(e){var o,a;super();const n=q((o=e.field)!=null?o:"sequence"),[r,i]=(a=e.as)!=null?a:["pos","sequence"];this.handle=s=>{const c=Object.assign({},s,{[i]:"",[r]:0}),u=n(s);for(let f=0;f<u.length;f++){const l=Object.assign({},c);l[r]=f,l[i]=u.charAt(f),this._propagate(l)}}}}class e5 extends ue{get behavior(){return Ot}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(o=>q(o)),i=gi(this.buffer,...r);for(const[o,a]of Xl(i)){const s={count:a.length};for(let c=0;c<n.length;c++)s[n[c]]=o[c];this._propagate(s)}super.complete()}}const t5="_uniqueId",u1=1e4,l1=[null];class f1 extends ue{get behavior(){return hn}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:t5,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%u1==0&&(this._id=this._getBlock()*u1),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=l1.length;return l1[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const d1={aggregate:e5,collect:Zr,coverage:P8,filterScoredLabels:R8,filter:j8,flattenCompressedExons:G8,flattenDelimited:Q8,flattenSequence:$8,formula:Y8,identifier:f1,linearizeGenomicCoordinate:s1,measureText:_8,pileup:X8,project:Z8,regexExtract:q8,regexFold:K8,sample:Sg,stack:J8};function n5(t,e){const n=d1[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function r5(t){return"values"in t}class i5 extends ir{constructor(e){var n;if(super(),this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)!=null&&n.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=As(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Yh(e,Zg(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 o5(t){return"url"in t}class a5 extends ir{constructor(e,n){super(),this.params=e,this.baseUrl=n}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=>Bi({baseURL:this.baseUrl}).load(o).catch(a=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${a.message}`)}),i=(o,a)=>{try{const s=Yh(o,Zg(this.params));this.beginBatch({type:"file",url:a});for(const c of s)this._propagate(c)}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 s5(t){return"sequence"in t}class c5 extends ir{constructor(e){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<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function u5(t){return"dynamicSource"in t}class l5 extends ir{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=As(r)),this._propagate(n(r));this.complete()}async load(){}}function h1(t,e){if(r5(t))return new i5(t);if(o5(t))return new a5(t,e);if(s5(t))return new c5(t);if(u5(t))return new l5;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function f5(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(`,
|
1351
|
+
`)+" };");return n.properties=e,n}class p1 extends ue{get behavior(){return Ot}constructor(){super();const e=n=>{const r=f5(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Cg(n)&&(this.handle=e),super.beginBatch(n)}}}function d5(t){return"name"in t}class m1 extends ir{constructor(n,r){super();te(this,Xo,void 0);this.provider=r,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){tt(this,Xo,n),this.loadSynchronously()}loadSynchronously(){var i,o;const n=(o=(i=G(this,Xo))!=null?i:this.provider(this.params.name))!=null?o:[];let r=a=>a;if(Array.isArray(n))n.length>0&&(r=As(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const a of n)this._propagate(r(a));this.complete()}async load(){this.loadSynchronously()}}Xo=new WeakMap;class g1{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 m1&&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 y1(t,e){const n=[];let r;const i=e!=null?e:new g1,o=[];function a(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function s(f,l){return a(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function c(f,l){for(const d of f){let h;try{h=n5(d,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${d.type}" transform: ${p}`)}h.behavior&hn&&s(new p1),s(h)}}const u=f=>{if(n.push(r),f.spec.data){const l=v8(f.spec.data)?f.getDynamicDataSource():d5(f.spec.data)?new m1(f.spec.data,f.context.getNamedDataFromProvider):h1(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof be){if(!r)throw new Error("A unit view has no (inherited) data source");const l=h5(f);if(l){o.push(l.rewrite);for(const h of l.transforms)s(h)}f.mark.isPickingParticipant()&&s(new f1({type:"identifier"}));const d=new Zr({type:"collect",groupby:f.getFacetFields(),sort:p5(f,l==null?void 0:l.rewrittenEncoding)});a(d),i.addCollector(d,f)}a1(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function h5(t){var o,a,s,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;io(l)&&Qp(f)&&r.push({channel:l,chromPosDef:f})}const i=gi(r,u=>Pr(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,d]of f.entries()){const h=[],p=[],m=[];for(const{channel:g,chromPosDef:y}of d){const A=b=>b.replace(/[^A-Za-z0-9_]/g,""),x=["_linearized_",A(y.chrom),"_",A(y.pos)].join(""),w={...(s=(a=(o=t.spec.encoding)==null?void 0:o[g])!=null?a:t.getEncoding()[g])!=null?s:{},field:x};delete w.chrom,delete w.pos,!w.type&&y.type&&(w.type=y.type),n[g]=w,h.push(y.pos),m.push((c=y.offset)!=null?c:0),p.push(x)}e.push(new s1({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:h,offset:m,as:p},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},mg(t.mark,"encoding")}}:void 0}function p5(t,e){var r;const n={...t.getEncoding(),...e}.x;if(Ke(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Zn(n))return{field:n.field};if(!no(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function m5(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Zr?r=n:(r=new Zr,n.addChild(r));let i;return t instanceof ir?i=async()=>(await t.load(),r.getData()):i=async()=>{throw new Error("The root node is not derived from DataSource!")},{dataSource:t,collector:r,loadAndCollect:i}}function v1(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!v1(n,t))return!1;return!0}function Zl(t,e=!1){if(t instanceof Zr&&(e=!0),t instanceof p1)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Zl(n,e);return}t.behavior&Ot&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Zl(t.children[n],e||n<r-1)}function g5(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 y5(t){if(Zl(t),!v1(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function v5(t){for(const e of t.dataSources)y5(e);g5(t)}function b1(t){t.visit(n=>{n instanceof be&&n.resolve("scale")});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)}}),t.visit(n=>{n instanceof be&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function b5(t){for(const e of ro){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function A5(t){const e=[];return t.visit(n=>{if(n instanceof be){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Zn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return vs}}),e}async function x5(t,e,n){var a;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Bi({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}
|
1352
|
+
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)}`)}async function A1(t){const e=[];t.visit(n=>{if(n instanceof _g)return e.push(n),vs});for(const n of e){const r=n.context,i=await x5(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await A1(o)}}function x1(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Fb(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const w5=t=>!/^(layer|concat)\d+$/.test(t);class w1{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class C1 extends w1{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=a=>()=>{e&&a()},i=a=>()=>{e&&n&&a()},o=gi(this.buffer,a=>a.mark);for(const[a,s]of o.entries()){if(!a.isReady())continue;this.batch.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.batch.push(...a.prepareRender(this.globalOptions).map(u=>r(u)));let c;for(const u of s){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=a.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class C5 extends w1{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 S5{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 E5{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 D5=t=>new Promise(e=>setTimeout(e,t));function xs(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),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(m=>m),l=m=>(m-a)/(s-a),d=m=>m*(u-c)+c,h=m=>Math.max(0,Math.min(1,m)),p=m=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(d(f(h(l(m))))),m<s?e(p):(t.onUpdate(d(f(1))),i()))};e(p)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):D5(t.delay).then(r):r()}class M5{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=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 xs({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function S1(){const t=e=>e;return t.invert=e=>e,t.copy=S1,t.invertRange=()=>{},t}class T5{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new e8(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.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 I5="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAEFzklEQVR4AezcRXjr2BnG8b8SQ+gJOiA5d1NmZuZVuU133Zf3++6XxW27Ku7LzIzDrMgByxQGaxwfWVFGMly088z7e76Zi5bu6nvP+Y4sKwgC2n4KP4QfgEcvAVdZGHfuM++Fj8HHwUZERO6aMTocsMGhl4C7bbrzr7C5N0REFAC30nct7qwhdH8REQXAfKf7FrjTLPpJ7EPuMhERycB36XD+hX0/DuzSlsnw3OfyilcwAA/vn/yzQQMoUHg9r59hhn7Oz/njH9ncJAiAXNj9P2qTxdhARETufgDYNs4fsH/Cv2jL53nzm1lcZH2dngKCP/Gnn/LTEiXg+Tw/Q+btvJ1+/vlPfvYz/v1vEwA26w4fs8lm4R4GgIiIAmB5GdvGnmbuh9Rq8MIXcuMGpVJ6AFhEXNwneOI//OfnSz8fL49/jI+9lJcecjjJJD15Ho8+yo9/TKUCb7J5vY1tcw+JiOgMILYJcDpNuFQKq5+neMrFbRXLnI+fu7im6KlSCS9fqXDBccLb31siIgqARBOu1SiV8DzKZbpr0nRxWxnQqs8tv51lol/2Xf63qlS6euOpKYZIREQ7ANOHTYdu1SDL/wMOlguFlxW+Hf8dujMX9ryrNx4KEREFgGXd9BQoWu97S0vLbU36T4EOD6NwGf78R0REAZBoxWaJ3qqDA9Kcx3p9YXW1sLLSCoBM5jIV+i7/gwCWl8Nbzs0xLCIiCgDbDiub7b8JMF3exT3kMOM4a3bLmuNczoX22ScpPluK33KIREQUALmc2QS0KjGqT3BxzWKf2VmKhl0sEhD0ngKZS5ZKOgAQERmVAEg05KhVBwFXnXJ62eWLRYoGrRofv8yGHsv/gwOYmwtvtryMiIgMLQCSxwCHh92mQNGg/4gjEwCTxRZMRdOhPfbSl/86/hURGbUAmJ4eaAoULf/N/OeibDsKgPhf0AOgIiLXIQASbTn+la3ICSfRSS+xru84YY2NpU+BqtXwYr4PU1PaAYiIjFoAxNpy9NKGajV5/HvMcTwApqYuf2X+govboJG+/I82GiIiMiIBsLAQdualpStfCIg/AJqc/9DWewqUfABUy38RkREKgPjpbKJtc8xxdAIc7/dXAyBlCnR8HIuSbFYHACIioxgA6e+EODqKr+tPOU0GQHwKtMmm2SvUqcdzpNmM3SCXQ0RERicAVlbCFj07C81m/CjYrP1T5z/pUyArnALFJ0k6/hURGdEASL4XyNQRR2b5n5z/9JsCRdfQA6AiIqMdAClTIM+Ljn/POEsGQHIK5BF+ZGurZpb/+/uxS09PIyIiIxgApiYnYX/fjIDcrc7x79xc6vyn27NArY/qBXAiItcjAMbGnrkJOLzo4rH3/6yvR8v/vlMgz3tKb4AQEbkWAZBo1Ftb3vb25s6mi3vOeXyRn2S+5GuqRMk9cLd2Wp9u7O5CoRBedH4eEREZzQCIdgCZDJTLZd/f8Xe2m9u95z/JKdB2dXunsuP7uzr+FRG5HgGQz8fadbPpV6t+zW9VvLv3DQDLotwol+vlet2/HvMfEREFQLxdW1Cp16v1amWx0jMArOitotHf8hu+v+c3Gj5zc+HllpcREZFRDoD4AzvVWq1Sq1zOf9bW6CkKgPLr/Uqj0njkA/HLiYjIsGQYwMxMuAlYW+Oz//8/X/4/L3lJcvlvQdBrChR896vf1QHAdSIi2gEkm/Yg85/kFOjC5KQOAERERkEGPjT4McC6w/rfYQ6KS93nPx9K3QS8ulVPgdMJE8tCRESGGgAbDGBhAcdhw4YlWIUiqcv/b8Gn2UgNgI0iWGB3MkBERIYdAJ9iMO8Je3e7iu1Klbjg9HS7+5syV3AsRERk2AGQZzB52/TudhVhjVSpF8ybT0X5kUNERIZrjMGtJpb/gyuaCiPk+hARUQAYzq0GwMzVEZCIiAybFQQBIiLyrN4BiIiIAqAK34T3wxp8CX7N0+zZAQYCQRzF4bfMAQroCKETRMfYvWRHqFt0kI4wkaaQDQQ7+33mDPPz9wBwAQAgAAAIAAALU3KeWwEu+dglp7yNATqEADT35Np+/zGNAHQOEIDWgFsyBQAbAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAH8iAAAIAAACAIAAACAAAAgAAAIAgAAAULLPD9v0CYCSKXOO6RYAJaPff40ASg75tnm+5QLACAyAAAAgAAAMtdasBAAuAADKkJcHO3eZ3Uh2wFH8GtRkZmb2kXrCWUNWHGbmxAwyW2RmtpXSyOrwfJ9X93f+ghW8K6xZSP3LRvgvf4bvw/fgl7wq8iUlSaqlYgn2P62SgWYqcjBXWSAkyQBUXMCv/ysDST73d5j7/P6csEiSAajYgcy/LzWX7Z3rZQ5WkCSFGICKJ/jrp/cBh4f7f/9xam4q9ffUe94jSQo2ABWH8BPIzM9n5uYyf9/KHGe+zbd76UWSFG4AKtLp1YWF/dLOjjiqp94AxIAkA/D8zNISi4vXCwtn1L/hTTTCJ0n+EWx1lZWVaIn9wgwz0aaYInCSZACKRdbXWVtjdXWSySmmppnuppvASZIB2NxkY4N0mkJhnPFok0wSPkkyAFtbpW1ujjASbYyxDjoInCQZgNNTdnfZ2WFvb4ihYYajIUkKPwCZTGn7+3XU9dM/wMAgg4RPkgxAPk8uRzbbQ08vvX30VVNN4CTJANzfc3BAoRCtm+7yCJ8kGYCjo9dBO+0ddHTSSfgkyQCcnXF6yslJE01ttEXzGnDxIMkAXFxwfh6tmeZoLbQgKRZkAK6uymugIVojjUiKBRmA29vSbm4+8KGOumhIkmIRgLu70u7v3/O+PCRJ4Qfg8fF1kCDhJaAlKTYBeH7m5aV0D7XU1lATDUlS+AEoFl9XQhVV0ZAkhR+AqqrSqquBIsUXXqIhSQo/ALW1pdXUAE88lYckKRYBSCR484aqqgceykOSFH4AIu/elXfL7Q030ZAkxSIAHz6UVld3xdU119E9kqRYBKC+noaGaJdcXnARDUlSLALQ1FRac/MZZ6ecnnCCJCkWAWhpobU12jXXxxxHO+ccSVL4AWhvL62jg0TigIPykCSFH4Dqarq6SuvuLlDIkcuSRZIUfgAiPT309tLXlyWbIRPNH4NKUjwC0NdHfz8DA0+Jqj32dtndYQdJUvgB+PCBwUGGhhgZ2WFnm+1oSJLCD0BkZITR0Wh58ptspknbgHiQZAD6+hgfZ2KC4eE06XXW11hDkhR+ACITE0xOMj29xdYqqyuspEkjSbEXgwAMDzMzU9rU1DLLUQCiEiBJCkItX2x2lu3tod3d5P5d63XrW94iKQ5kAJp6elKpVDKTSWbbkr9Nfo2vETxJMgDJ8j5+TGXzyVxyND/KFpKkkAPQD0lIlQPw7l3qs+8k8glylHaHJCnAANR/OvcrTzqAkQQfeQ3AHwiNJBmAmX8596NN8C8+g1xlewRCkgxAz3+98H/Hv6v7lwbk4ZEvNUlSVbFYRJLkH8FiQpL0D/buAqqtNd/7+DcUSQrBQ4TgGg6NNEyZqZ13pvJed3dZet3d71123WXZdR13OX7OSIVOE6BKC6USCMGC9oS2+z6bTUIoFkrP9Ib+P+u3Uk+C/X/7efZOycHEanzwy/Aq643CS/Cn8MPQBQWk6YU/htNg2jTrmDZJDnwV/Cn087TNwz/B14Ips9TBL8I5duwe/AUcA9Nq/o8TQshVQL3gTMaDIQF9azPKWl6IwdhywuxOIJlOstZ0MkIIkT0FkN4BLihhcO3ov8Im/DAGseVEeFK1cDBZAFksnowQQmRVAYxAL7iYck71Hy9Ln/4zbK7C6IBkHrBzFggkUyoFIIQQz+KVwL30O/v7nH19rnf1NTf3wTCbej9JHoi9SSzKGPRgcOI8ylEUE2g8JhxmYABNS9v8cQd4TwvLvp2thMPh4eHhRCJRWVnZ0dFRVVW11bMzzMOn2Lk6OISy7dOKRLhy5cHUVDw/P15XN+PzIYQQWVQAceJfevClvl41/Qf6XAV91dUPLRYyKQDF72fsc3pi00ZpBAlasfrwsYYJuHWLM2d4/XUePgRaqQpwOkAgkMmkPXPmzJtvvnn58uXFxcWampqxsbETJ05UVFRsUwBP0gF1y2H7Ahgf54031DObHh2dtlimOztZWqKri2whhJACGGDgLd46c+dMX99CzO2mtpaurkwLoLiYQIBYjLHPqhooX7TkkefE6cBhx06ahQVCIT3nzjE4VaaP/oMHCQQwm9nO1NSUGv2qA954443p6Wmv15ubm+t2uw8fPszjPsJ68+Rt3QGvwImlJZRaqCNDg4P09vLaa/H+/nh5eXxxEaeTjg727ycrCCGkAAoosGBZYCHW309dHfX1NDRQUUGGmpqW1wFjxGKTX/ximLADhxPnKU6RJhRayeAgvC9AYDk1NWRgZmZmYmLi7t27k5OTwMDAgN/vV02AYbvD9dIt1hYaXISX4FTsP15+qVqrLqGkkEIysbDAzAyjo3FNi09MxCMRxseZnpYCyBpCSAG00OLBM8jgzbmbsStXaGykuZnDh8lcIKAKwMilG5ecOI1FwAEOsOzmzdUCwOslEFhJZgoKCvbv319SUsIytftfVFRksVi2LoBtpr+G7hb0xLjwMhcufFlr76LLi7eRRjJhtVJeTk3N9NTUtM2maoDsIoSQAjBjbqf9Bjeucz129TwtLQwM0N6uT7cMmc3GRpCesbHwzMoiQKWSytnZ1el/v8xJILn5kzGHw9HS0hIMBvPy8hYWFurq6jo7OxsaGmC9byJNof7rdTRWxOP0vKRGv4pjMu8UXUGCKhYsmS59vF4WF+NtbfEy0/TgJIWF2XT4L4SQAlBaaW2hpZnmy4nLUzduoDI4mGkBGGprjY0gldgbb4QJG4uAE5xITf/he7nGWV89Nhs7cejQoZycnKampkQiYbPZVAHU19fzBDRW9fSo0W+6cKHg5t2TnDSmfzXVZKi0lBdfnKiqmpy8MW39UOLf7Nhs+m9mESGEFEAeeU00NdLYQMPUzesMDenx+cjLI2Ppi4C+K31GATivO0OhDqMAjAN/PR4PO1RaWnry5MmpqamlpSX18/z8/N1O/y9/WY1+lhPkPcb076STHamqGqgaHGLobnCUr+uipobsIoSQAlDqqVepo+7i3EVteJjbt7lzh8bGHczVffvw+03GyYBYLDwediaczj5VAI5QiCV3g7H5o6nbJBM7U1ZWxhPTSDGpektOf4/WHiRohB0aNA320nul8sr1/++hrY2mJrKOEEL+N9ASSmqoceOuppq7d/Xcu8d2ND1pnE413zW//77fHyUajoTDw+Fr13rvThfNqd9fDlbrun/+DvskaBhMKtPTqenvmMw3Rn8XXfvZzxZMjydqip7hTE9uT+jg3H2fj85OSkrIOkIIKQBFjX4VFy599I+M6HnwgHW0tKxnXORzMRD4XZ8v3BgOR8PRaPg3Dx4MGZs/DQ1b3OHTVwg/lD7Adcnpr2/9p6a/C9dOn9YII5fyLvUcuT7Y3U1XF14vQgiRjVtAyuoLuJaWiEaNnRycTnZoqCkQahxTsQyM1X506LW8Xw4H/r8jUG4PlDfzDJhYs/W/UgA9PUEOd9Gl8gIvkKKRIVepy9ftm+vOzTl8+ILqgOwlhJACsGK1YVMpoSQ+Po7KxMROC2B+nlCoIhQKhEK/0fhXFY7PePI/E1G/sh+02/PsDhxFFD2b0a8MDaWmvwdPV/K6TwwaO+CiqrvqePfxfd1VOd3dORbLebKWEEIKQKmgQqWc8vjkJFNTKlvOVY11QiEjnqGhoZPek46I93ok4vyhL4S0kB27ylGOZnp/O2dic9PTqenvnDJ3pV/1r5Hyd/DtUMmWmqFbj6PbceyQIweMnCVrCSGkAMooK6VUhfh14nFmZnY0bwcGCIW4eFG/7aCj09tZH/E6IhFGRsKmsAOHscXUQgtfecnpbx6MBJNX/bs0F2neC9/BdrzQnUwnVXAMcpL5EtlJCCEFUEyxFasK8/PMzel59IicHDKgyiIUWknR2xV+/P58f8DrNc4nJyKR0P2VRYADhxUrOxePx43XAeTm5rITxta/8cqvIEf06a8F07f+Tej+H9v1XXdaGjFUru2AL5CFhBBSAIUUGkFZWFhJURHbW53+d+5wAr9f8/vxO+rr8XqJRFTunDsXYqUDjnGMnZidne3p6RkcHEwkElVVVZ2dnW1tbWRoaCg1/TvoCGorV/6wI4Vrp7+DdOXrOuARWUUIIQVgwaJixozy9ttGMimAq1dXC+AABwIE/Ph9+ACjAIyE765uBLXSSsbOnj376quv9vb2Liws1NfXT05OWiyW2tpatjU9TU+PMf2dk2Zj9KuYMe/s9WhzbK0UvlZPdhJCSAHkkptPvooJk7a0hJHtTE6ubv1XPLD78RvBUFi40gEjI0sjnwk9XN0IKqaYDESj0YGBgQsXLrz00kuapjU1NVmt1paWlkwKwBj9Kub/iATPnlw+99vq5DYqm47+JqgkpRshxN4nBaDsY5+KaoKlhw9RefQo882fkYjpNH7j8N+GjZSWFqMA1O3dixfDhI0OOM5xMnD//v25ubmpqSk1/YGRkZGZmRm1FGBbly+nLvwPvv9IF21BbndsNfqVpuUgBfDcEUIKwIRJBUXTkrdbuXRptQACyWP/tPOrST6fUQAqoWjIWAGoZLIRVFRUVFZW5nK5SkpK4vF4c3OzzWZTP89k7cCtW/T1AV3vvxNEBRNbaIQmHvPHPBeEEFIAj3ikoqGRk4PJpOdxx0mKxVZ2fhZDHIdmmo0CYL3S0pWNoGj0wcJCiFl78oRwCSVsqaKioqOjY3x8vLi4eHFx0e12BwKB1tZWtnhmBk3T35q2Jdq4yO2L8EdwfOsCeG4JIaQAHvDACPv2Gdniu26FQkyHOKQSXbmKNEiwjDI21NHB+DgWCw8f3oMw2BmzE3qRF9nO4cOHLRZLe3t7IpGorKz0eDxqEZDRN4Ts1COE2IaQAkiQMIKSn29kszEbDeMN6aEPgxnzNofzx4/j8RjnFUJgB4eeaBt2thNYpmmayWTCsG0BvKBHCLE9IQWwwMIiiyooZvNKHmdHGcUeAiM7kjxyf2h0QDKlZGSL6a/YN/+1EEKIHDY3x5zKPPPk5LB/vx6LhfUewcXk9J/giUUgvJwQz5QQQsgKYIYZI1itKpu+BCyUzGV2Z3UR4IB2nhEhhJACmGRyiikVSkspKdGzoYPL+VUypPGsvG85f48QQmxNtoDGGZ9gYpJJystXIoTY84QUwDjjY4ypLLCAzaanogIhxJ4npABGGBllVIWiIhwOqqqorEQIsecJKYC73L3HvQgRqqtxOnG5EELseUIKYJTR29y+w50YMWpqVPQaEELseUIKYIihW9xSwWajvp66OimAvU8IIQUQJ36Tm4MMqhqgqYmGBr0DhBB7npACuMa161wfYOB+qZnmZhW9BoQQe5uQAhhn/CpXjQ6gvZ22NlpbsVgQQuxtQgpgmGFVAFe4Mu+w0tGBx6PXgBBCiD0nd92vc61Y22lf6rRffeEFvQPMZoQQe56QAvDhS5BwdDjc3v6aAwf6PZ4RhBB7nZACMLyr7F01vhq3113j9dZAH/TDIkKIvU5IAeDD4XU4fI4aOzXghhroh+sIIfYwIQXQBl7wgZd2cCcLwGiCfhhDCLH3CCmAYvAlk4NSBO82pn/aUqAPEggh9hIhBeBLHv67SFe9nJq0JugnuwkhhDBpmoYQQgh5IVgaIYQQUgCmjXIY/gzukrke+C3wg2mzZPK4Rk7BX8Ntnoj6Z38C74Zq+Bn4ArtzAX4FmsCUWerhF+EcG/hx+Ev4LAyzVlR/ezme8WPkwnfDh8lEDP4W3gsm6ITfhStsYhT+Kvk0fPAHG1wcZnraqYDvYnMP4b/gW1P/4ImfzPNg03eWKS1e+H24yjv1kX0P/N7az/8p+Hf4Xih9Sg+RbgD+GI7tfuyY4TvhP2CerX0GfhSsO3zOJ+EfYIrtDcMfwaHN7+o74P1PswA0NpCHkcw1QSN69rE7juQd1bIXzKx+NXwCPZ9Ev30ZvV7FQT3iK8eMkXeEGw5Ap367qgw6wKPfPn31yVif1h0V7uHLQDOXb4TNGIe6Q2s/zKkOGGAXjLtoIOvNw1W4podDxtpEzw0Y0G/1tOnB9RxP/6CejGmIXb6zLO9kAaSmv4U1OvRZwS39llGepjxoSKaXXUjdC89hAWjrVkp5WxWACQrAt9HoblLZTQFYocHoALLY4iLXrnHNz7VkB/wuKUMqRg3oMWog2gZ27DxP6iG4ixWACfGEKwCLyjs5/Vt4XAF0ZFYAuzh230UBOJN34XwuCyC9A85zfphhLV8jj2/Me6wCvj31hefTk/L+1BWljZ+lcQZ3an+juJiuLioq2FyceA89k0ymHf43UNCVesiNvX/TMwBnSeOCI2zo28egiqcskdBHv8rVWq6BUQCzrHdjNUYNfLKNNpVKKslIxu+XGLzOWp3gSXtHvD91CuCt9S8cpzX1gcjU6CiRCBMTzM+ztERODmYzJSU4HNTVkZcHFCdHfxDKSDmzflf7/OrEN9VR58CBMjvL8DDRqPqJ/hC5uRQVYbfrnzlWK7szPj5+7969iYmJ2dnZJXXnUFBQYLVabTab2+0uUW/IU6Ge/L17q++lffvYv5/yclwu3G629b/sfQdYFGnW9SmBJgoNKJIzggKCIKLojDppZ76dmY3On3POOeecc845rRu+71t3djbNrI6ZIAgiUTI0OTTdQHdD/ef1LmUrdFMdGNedPs996oEOVV1vOOfe+4Zqxs6yaoNAFTnPwfIg1FWGh9WFNjZgscQdOhRXWhrH9wLCzAzGxiC/1uN5+muzspCXByBV2F/Z7qgAhrzMgDotG8ziIpxOSGtJTMShQ8jPR0aGmaaeDhR+jMJ5FBija/x6Y6P6hb4xh7lWtK5gxUtDqoEKo7X7JpmPADuCxBtP2/tlX5cYAe5hb1ze8WeIKSAdE9rEXdz9FJ9SAC5b2FrghW8Y7J8niwp2I53iYhT/KorvbgsAa5Ed/rXX4Bud6PwxfjyIQRwQAfglnmWvW8P3LuOLAD7wqwHZu39f3cm/Um+FE5ub29Tfg94F9OYr6l+Cf/Q+jQOc/bjaj/4KVFAGUpEaugD40IBKoMq7LOQru2nACW+Vv2yS1B4+RH8/ezV5VLGzIQCpqYraSkpw7BjNSP6U7PXjh7e57gAOnMGZ9/T3LO0PtUePMDiIqSksL4sA0NVQ5y8rQ02N2uY2KJD0u7q6BgYGRkdHZ2dnKQAbGxuaplEAyPtHjhwpKCg4evRoVVVVIkkqaHiX0uwsVldFAIT4yKfqLqqqeDuB1vPgtgbwZPX1eP99WDqacf8+r6Uuur7OO4nLzIyraow98XVZELo3WInt7WzVSnEpA/y1IgD8tXTs+GtZp5WVVfn5wv5+/BcjCOBRB9SvYn8ZGnrOXRAtJwnwtLwNEsieRVBYiMIOFN7eFoCKCvXzTp+Gb3Sg44f44RjGkMDvR6PwS+osgG8BCF0DXofArwAYrd4E+4dXAACn7lzRVvpi+o7HtHsVu+4ddEcbS8p8CQCtC12/ioUF4L33VIcnF7Bl7wYq8BCGBjDwK/gVd3EBit5X36dnYRLkL82HBvhgfx3hh/C+lwA0YR4msQU8gsQBN1kONEMGkpEctAD40IBKmt+vGBpwQllA4I03N6OjA2RnupxknJWVGDegwZ1ggZDF0aPkkRNzc/VnztTFxNTtqE5fveEeUKqXFtmLlu9cO9zaigcP0NeH8XFtYUEXAbBaVXhByiCV8BXKQGAgHfU3Nzd3dHT09PQMDQ1NT08vLy9vbm7qum6xWKxWa1ZWVnFx8fHjxycnJxsbG7MNgg6xlPhrLRZsbdGHIPGRhlSXobadOcOYMMB6Fg2g36Xn5GDp/t2M69e1O3fQ2cmyYmYyPi4hvvhy/Hg8pgAbVA3n7CGJuHED9+6hq0u1TZstcWXD4rFsRm3akzQ9I4NlTrYtHh+vbmiorq2thj8UAMdEAFZXH7ISqSvd3eq0/G2GEFIARMt57xQGvnjhAjVgbwGgkdR/BUvuRH5eyVVtrSrY3TCPeeY52NG+i++i8Liw/y574/8AvnAA30/GajDs77seTWvA5f0aBHbB5dJdriSXxcJGv3vK1WD/UuwCegZ0CEQGlABQ3mmPH/sSAHk8PT/khlu+pqJ4c/itUKXn0APPB18Mn/svXgzN0ICZeAQON9ClZEAFATSRAWoAlSDxpZiXwBu/fh23bqGlhe5tNrKLUJGBjAQkQIfT4Zx2TA+PDk0ODuZOT9fZ7XVud/3581HP989x+ADfyF7NdnzqcNz8acadO8XD9/PyFtOaVE93uehgeAYH56Za58hQ6v/4eOoNkyABsf/169dv3brV0tLCIIDkTk//0KFD8fHxFACn0zkzM/P48eNHjx6NjY0tLCwwMrhw4QIlIWD2v3ZNlRLpj8THSOWVV+jukHoU+y8vq5iABcjj0pJytC0Wn91hGH6YIzOTxdC30dys8VrXr6csbCYiFUhdX1+P646Lm4qDDZiCshPAKewOXVdaRQH49FP+4DJPUSkaWaexiKUuUh0nlice93cuDg1Vzc5WOzerPalRpwpA+A8C5ueHbt0aunvX2dZGIU+YWGS3z0R9EpKiEOXcck4tTfUs9ayTGFggBAMCaqE/UDVYTmIMeByK/fl1HhlL+aYdagAA45vmmVYLH3/gLeyKVL7zmY0BkKolCnOvrrqI/+qy/OiqxZKIjjS6JGxNBsFmP91NzifI4aIBdBrWhf15rK7e9dmTpH4xJhNZB/wa/cRABwN1UxrgFchcQOjgfXnzPs06tUbKPoqjWcgKzHmXaPrEifXY2I6+voHR74kA8EiTsYF4xOPnFnTfSFu3b5NrWJn1qD+Jk/zNLAf2agCrWJ3EJO+ly9Z16JPoeldaPXIOw4Lz4MEkHLcdzptLjuvX34y/efw9nS2FTkVsLBMbpH02NvIqo4IJUpX40eYFgEl/+v5k/2vXrg0ODp4+ffrkyZNlZWWZmZkJKo9MN3SVXj8jg9bW1rt3766trR04cIBZoLfeeovZoQCGRuhK81dSA1ZW8MYbOHkSpaXMdLNrUADYAdmo+LPVZ27eVPfGvBm5nO8GiA2Fzo3u9uzm5qqFU3nIk4pgwE1/Im4xToWDU9t2yreoM3Rgzd69ywo9h3NVqMpBDpuiB54FLIxilK20d7C32lFa7a4u2CzAJtAIP8iYxfEbg0M3W4ZvfdzS3Hzcc7QK58pQlotcdhkKAJsKeZlXue68bmfskpLCaIC0sNd4gKpwMQZXW6R+mg8B2MSmvE0NYGnL13Y//+V9Zn8fSew0efmzEAC2ue5u+j8Shbnsdhex6YqJuxLznSSyEkufvMwoj7Ge5sX+KfAFCrZoAI2+oAOGBtDf2cH+IsVsTCg+JxFAqHPeNB/vhHHuCBvPs9SfMm4n7wtT8w/x3GEeLLJz59jbmSHh2Ry9vW2UgbEBkQGaIQMWWBB+6CGWC6uZ3Y7My1omU1zAhbM4ewIn8pEfhzgA61gnWXSjm/08ai2q7kYd7wUC0xpAAXDcufPXs2+91aAzwcPiIDdaLCQ7XlY1VZdLJVSWWWCDg6qOFhdVkZoAXf729nb6/mT/hoYGuvZnz56trq7mkG8cfXPA4XCMjIzk5+dTD9g/Hjx4IGPCOTk5dXV1MAlqFJMe5FP2tbfeUpmNs2dVrt9qNWYQqM5IyqMYfPQRi1Qy7EGks1yufper19Xd/frEa6dwqhSlVlh16MtY1qDxXxC92wLwF3yFXeMsWTbIdKSzWl/BK01oYg0CkDpl/+1BTzWq82x5VderFPuLNfleaXgTx24eG7o5NHJvJAUJbCQ1qOGgEDmY414UAP5CthM2G2rVp85PeXWVEBsd3UsAWIqGBpBvxiUI2DX5TMIR4yVQeALynV3xBV+v/SdlAePfmdGYVHntsxCAvj42R0ZhJDJJR7pWVtxs4B6PJf7Kr0lOth06pFEhqaJsB7W1NQ0NNVFRNdib20jjYmQGcfF3FQBJ/tCY9fOd/zEXBPhgMx1hxfi4wftiySOLivFxwVsAVN4jUOTn0ygALG0aq2alt7e5t7d/QrE/zVsG2E/CxvyhY2aGIsWMNr1FzmStRe1pnKYGHMZhbIP9mcXCO6RXAKByvRI3QASkARv/em3sUuWFV/7q2bOv0HXeBsc1lX+ytqa6PPmTHMsEOhszO78ZAWBuh/kfevednZ3M/NTW1jK/f/HixVSv79LZZ+o/OTmZKRQODnOImJpRWFjINFFlZaWpIGBignXKUuJPZKjH3qSmqZw/D29Qzfi6283fxG7Bz1PJ2DEDFwCK4sDG6OBf6c95A+dexatkWJ+rFG/AJ5aW6CCyJA+hjMEcG56wv1GnPC21ZA5zVJf4uXhc3xYAD3Bux4rQSbK/soM3D9a01Gxgg84+2wMFIBOZRlOkDHCof1abZYNnSn+F5Sa1aQJeAqC8NNGAnQJguP9qwpjxHdP4CG9fAb4B2AMhqNcVrf+eD7BjdkcyfLyw3wIgSVuG7a2t5Gm2cSZh3IWF7vj4xNH45ssrhy8vHaqf4lsSHxyZnz+xulpz7twJEwEp1drgcw6nSRBAGSfHeY/DCPurmiiuheR/LJYwerR6GKeOsxU+O9KbNDSr6BjnvKk/xHy9lJoIAI/Ug6Xe3juUgcmnMmAMEePnBOPK21I1CfDX84fRJfRmf2/K4FsQrD9LPa9hT5wBzh7G+WqcOLlLZdNXZkCgOrsw18qKMhNgTp/ePfP7zPUXFRXJJB/F/jvAgIAywDlC/Fh3dzcHivlFfr20tNTMZVQpsRdI0plKz/Hq3cCmRJ3gxdgxlWzYbIYbax4D9q/8OLHh3W+/W/9KPWk6mC6g6zIuzSNzJh541rCGHYhBDLUBgkVANMADdbzk3Ugg7K8q/T7YgDlKRA1gO9nphdC/ydKzOB86TUtbWR6G1KbHo4b6/aKgQJL5KhyclzEAGQr2+iJpR9x/hqQorBb29znR6Ns+JADOYOnk0lMJ+OoLXAdAF6O5mXlGagB5mblIOlFkZ1damivhkeVfnHvNsgLLwoQ+MaANPHr8aGbmxyfsjhpX/Ak9K+18JeLNUhmNzCApIB55iZ2BGAeOTbj/Wz5e8IFNIA9be330gNef/srK4H2h/gHbUdWDG71zPirHGi6QUGjbMkCb7+u7SRmYUuzvPVOIn8MLx/S0TPzXoDF1SzefdQkzEA0wLQBnoeyED8GnM8d0vTgnWF+nDwyXy1wAM2Oz2Tjxn2l9RgBkefK7b4op4Ac49ksB4KgAv8iv7xSAsV1bEUuJhH74MD0t5OQg3Qk4oe24lWQoArNalU+2sMBEFhnQWwDysDeYpqdzzZZJ9g8y26dpqjSTkmgTqxN96LuN29QAnpZxwAFf/WVFNOBZARjdpn4eOyBI1pPhG3SkeAtxehw0sCrFyOMmgwBW4HyLHYYGlJTsdP99DP+anKLzPcCJgHERghcuAHQxjKQtLl1CUxPDUlKw6/CUK7HD8u9+v8Uy8K5ljiXVp/cVaoXdq90112tObJ2oRCUkZo/fuyaMoeDp7SwQryJTPN1wG8O/Qv08+gjYfUwQ/D5g3z0LJMiGfGdM2W56/ZrXOjAfO5LNAz0Y68WHvXikNODUXzloTS/MPHymOK/46CHF+7SDOLgfGRfyvmHrfX3D5eVkqbn5+T+8cLV/QGTAXY7S8he7aNrtJj2RpGhpirfS6dNJ3t+8BpjEnwZ0v3x14IAy8V7FTPx899LSEmf18JiWlkbHPz09nZM+fYe2GfwAPymLBhYXF/nFvRur0wkpJYeD7K/IPe0B8ACaj2xmLC1WuaX8PL9LPfPCn8DeSEbeYeTnoIBMGvyIT2amLEpYu3//Jm4y6c9Z8+RLOu80iv3uSuCA0gCPd3oTyn7dnmkSFXKsremkes2jHdg8oG1pJmrT51CwW1JAXgKwhS1j/g/FXD7qb5nqd+EbVxMD04BLPzcrgdkW6YzTm2R6p7paLZfgeNSZM8yIufAtl+aKOeWKiclJseS8hxMckOEUguM4XugurLlRA4E5DTCmA01P60YQIAJgDP/aYUdx047hX3Na/JE/DTjD7/hlf4FvAXACo4Yld43GPx79+jffsXJuYEZGQVHB0fLC5PJCHDqI/cRGwdG+jbLejb4B9+NJi23u4MJU0p+MH4hPQGY8QEuAsswXuOkFGYo8BXDkg3RjREL7oQFSxWEE53c6ngAAB3iZ60+iz+sbMvmHnyQ4NYhf5BmwA38Sz6Bxfd0oJeXXJ32CPwDcAzQfYekPobC8rMKFzU1aoAIA5AnvhjTqL+vRGLt4PDOdnd/H9xkHMMIzBIB/k0F3yXyuKw0wB413abNRTRUtra6ynLSNDd0jSaQtBAjvrD4ZblQiAAZSQjtC/TwuYxmFtXtn/y/DF74ugvJSbgUh0ej4OEWV96+82Lo6lhwbGtnfBZfFsmWxaDExugaNLn+BXsAxGTp3ye5k3IBpDRBWl7lAWPGaD0rvxhj+lTleyhgU+8PH2A2Wj2AxOqCRXfuHUNzvxOX/9vF/+29YAmCFNy7ADBKAk0ApUFaF0hiU0hX/X9/u+ST9WlpWlsa+QQXt62PpMRskEXrYN5Xg6Xt7edR6e8v7+spHR+3Rs9Vvud6qiFJjABVIKQdywjkcrAUTAdBcLkkHW2ChIVCsA3gxGuB5AtnvIWYb8AvjY6R+fpHgpPgopjF94y4ZXAycHnvg8oOCywUoK4BP/Aco8ENEfHxQA2M/Af6wtI7gNcBqpXfIMlK0mpvL/jo4OjroHGRyRtx/SfeRIupQ93zez7P3Nk7kA5rsBDE7qwTAbldCycXXbverm5uXgiJYbwGAsSDAEADRAJkzFLQAfA0GXkYBYDFTdhmQxsWxIEheEgSR+tmbeVSdWJn0NdCno0HgftZfexO+QZ5/OhLQ3m43pgPZKqzy1wQmUHxe8j9BTJeN3fmqDoxKtNBx9YMx4N2rwLmQRn8P1uNUCRT7M+FO+93zvT3zPb29VzfZvkj9chQZYDHukfzRTJKqUL/3MX4+t0KR/rsyx5RHdr+ft/mgenDkXB3CpK/wIbjH52maUWKm8lOeDzybqN7EMbNlLVQVzKStvDDUNvsmQ5bMTNX2SaNk68nJtampgcnJgZWBFKTQ/WcvZhyvQWN2yOTGfeT6tjaVHGbvGR3lKemUpi5a0u3JybwceanroOVK1P1vRCEIUKoksX/kCKaNuUC1tQvaorj/PBruv1SKT/wSduJtAC+1AIgzQmH3Tq6JAIgGbAuAj7birQFvmh0KZmV7toOA4YpUkWKkpJie/Xl5J/tf9pli71ACQO7/b/HUgNCJzQprIxpLvWSgzN3b09XT23cVO2UgLS0Eh3QX6o+Zy6reJn05eve0F6wBMTE0aStsOeJABLyXYwOAF6MB4stL0l9CAddeQ8fubTAdxC/y6+L+7+EKiQEbX9tgMn0NJUCtmbLWQ9psWzdf23nAmK8pfa+/ruZwk6qZNpiaImGr0ezBweXu7ubF5iUsUdzSkEaPhBN49mT/hQW1Eu7uXTqFaixyNKFCdf+abHqiMvStx8U9ZI1EDyGqH98JKQiYvrtkzAcdLloU9n9m3fAvNKL9d1rGWqo2pqdZo0zFiADQkrwFwLcGmEFqqqEBpLMpsr/z8eOh8bShXBn+PSbuv/o9e+CNPf7XvfcB6gAxKR+KB86FrgEEk2BNaHpGBly9PZ09A5QByQXJUZSAdx4IOPzV0/M8+2uzGce2SZ/2WU37uQ2chUnExzN3zk4ry33pCa5gJaAyxWllLwoJCir1L6u9Vp8AvsFsj5H657IAGQ8wtdKbUTQTKZpm1+wr+gpz0Lum3nSEF5qc1YzCXISq+AH4QFYWjRkhcgU1gGLABkrS4DTC/ul+WSUwjvECFGAvtLbiyf4UuNdu4UoITkFkl6HfTqWhAOgsKGYmLBNQAuBz6Nj8UPD6kxTQFmfsPhEAmvE2L/e5FAA2xJQUcVQp43TOqb2sWlcO1EZAmuuJOtD0sHgjJSWGAKi03+jw8MiofTh3eD3a81Qcwg1t356ykoEMmrcM9Gz09Hb2DvVffRoKUN0uXlQdxjQ+/lgFxQb1b86kG/6+8QeCAt1TmkS6koqmnw6faAfuBBYBWK1UOx4XlxbnMT+DGQccptZDWKCov0HZi0J0dDRn/qQ9wcITcFsI7vTALYB8zRnlB/gxADIdKNWM0rP009QkKQ7qzs3MzWgzNt3GiY0MCkLh/fDGSxcAC5R1+89l5eQoq6lBZ6di6sVFepCzmGUcQPk3s2iEzfvBA7UpBk7XUgCUVVczy/RsOUxgFbgWtK4/JfmeXuX+c+3eiH1h5OCIkt7CeiP7/7kUAJY1q7CgQA3Okm+Yd9N1hgKuo0ddhS7XATUGwBFgskZYIHsA06jxrP+Jyclx2xrnkxnsr9QorNB8tHwJAsICujw0QwZ47Fnv6X3QOyoy4HZTGkwLAGlF1cMPfqAqZGPaupP6Q1n6y04qbjrBLsoOwL66a/ksoFuxv7IMmAcFUVrU0hJ9wFGMcmyvGtV+NhyUgWJhf3WswwsEN3nmvH5u6kBa59R+LuziCq/jPjaUZiJhfHx8ii4wwK9wsyBODDV5Gdno3z0zwyIa0ob60FetV/tpxMwUyYRaHAdeAy5BHa2h9glfDt1FIBbKLEC7GeGvq5N1tpS3LQLKTGy7BBYeUzKQxXsVFZyDLhGk/ty8gJvALQQLLwHo0cEVG1NTk9Pz4wfHKcPyBgnw8yoADLJIUlVVsNnUPn/NzbINoaukxFVgdV1xWX75lsUyAk8OHaRwTHAXnteoAWvj67bZ2anZ9cm5SRS/bW74N7Dra+aD4JCRi1zaMzKw1tO7NDjBvhDIiKKu06gaB/Omn6d+cmXIWQ7lo7PZM/Cbtk9zyI7JN47dZSLTKB+P7ulARzOa7+HmCG4DM0Cm+UE3WYJJ+RrEYA96mAfgMk4KJJ4FL92GNuaIuDqprqZO2J/HEN3a0GSdLJTH5V3c55k7fXIvoN7eXi4EI61zuu9O9n/48CH3jeCyYfr+/Bi/yK+b3OpDlsaQkPqd/d3opiOdoqXsOpI/hakudNlgY0m+mv8qJEvWCFj3MUFUAli2LdZ4okZ3N5xOVjE1fud2EzS2WjJ/EpISkGBmv0KXS31pfV1FpkpFYmOF/Z8Bs3B3pnBLD0UAZG9JGmWXHhY38JiZnZsunUZhuZH9/7wKAMEIjlrMqmU1tLfLriPuoiJ3Xp4rlxHAty2DOfhODiueDVc5dyFBBEDnMa9L+3Nzc7Y5B2pz8CX1KusnLOyvmWvqEgSEF+ylNC8Z6JWnQNoCYWmgPNeb+sO6/WdmJouZNUmK9pCgKVqyOY8VVgAMCEa0EVLSfdy3nX/72IXZ0b88ij8RgAvNcEe5ckND8w8ftqOdp+Wo4AmcYLGQGljqvARVpxOdLWiZxvRq8WpKQ0rJ6RLF/vF4sSDRc/sHuvzMEty/f5/PA2BWhwO83OSHi36Z5dd1fWVlhe/yLXlgAHfa5H5Bx44d446hatqoGaSk0OuSodS5u3db0cqSoctchSpqQApSGOTR5WcuRbbYfIiHAxg4n34+qTGp7nSdEoCcfU8Q5QEWL7vd2uphanJ+XlXuiRP8/cp3NNj//n15losExMyLcpAMMDUczqhUtr9WLDQ+Tp4x+ijPqTNDRK+Uu9TcHADCEASsPJgTrFo28KUiefXzLQCshHPnFPvLbqsDA2yXGwMDroGB2fh4S/Z3LP0q00fvSJEb57xXVobC1AcOiAYsFhf/1z/Z/N2i+9/iNujhcf8dgRD69rrCiwg/JJ9FAVCG3jJAZGB2rx4BlAMVPH5xm/pJDQgrWNKsQ5LPxAQeLj20wEJGpo8pa5jpkk9isj+6X2/sPNf0tYGmRJxFYGDzGB+Xx0V1jnRq0Oywc7SNvMDBANIcx4eZ9GPSg/KwlrVG9reetvJ4KONQOPgrVHDjT2Z1uLKX2f+2tjZN07jZPff8YXaIY7wUAA788gMMDvguX6+vrz916lRNTQ13DYJ58MOTk+J4dXd2slgWsch0mWweTsmkR72ABabR+CJ1eiZlJq4xThVUY0pJeQk+ExwxckHT07GdndQAB+lYJoAyGmC+i9Th8VAV6DWSpulTVKKSzgSd6jSkmZkVInthMOdJ2lGjtPHxJBmlCS4XE9G8Fh/3VtHefqb81x7+V55Hv/t66AKQ3bH6V+cVjJcYDn++BUBckjfeYI2SHmQ9hnt83DU1FT81ZXn82DI4yIqhAMhe0HwXDQ3sKFAIeih4oLh4kE/cG4q1hmf497/62TzP9xsp+Oky/hX2BdtBAI8rpYAhA7sh2qB+2mko6qcniH0AuxwduNlZtW63pYV+/n2yM1NAZGcdugMOe870iROL9fX66cbvTjUlxiXFrZ9AYMMAbB5OJ9WVF3jw6AGTGAwp6BUyjiHT8RI22MhrK8dycLKp5cwJ6+mKlJJDb6hSePHg0764CzTZn9TPlcDc6ZNbAzG9w2Fe7wfCcGyAue5XXnmF7N/U1MSvqAmg5iEPKWT6Q9P4N3cfnXBMSCmxIigALriWsUwxZu1sHS1F9aWWU3XWM8dT6kqsQPpnVhoyINzZZekaT+hce/BobXjiQ5AQGEJyKNtiUQKwtESXkfNHKu353LyTm0VTBswl3FSnP3ZM+SJMpvFsbJcMUakrsq2IZWKiZrn/1KlHjY3fXDybihDAUxqE/6c4K/wq8OabL4P7XwD8Kdo+C4BMEJE5WFR4sv/EhKttyn1lyvKVSVaDzPSiMfdJ547dm548fb0gZxkkOg6UDB4oHogqHkTsUWF/hDzQ/Dt9LdarUvZCoEFT8zXhKQNKlaFsl/IqN9ifxxglAGnYT9TXK+aJiaEYUO7Z6RbX1xddioiQq7ZuVfFBbS08pxKSEpNOBzExk16CrtOPk0G22ZGR2dkhOLrU0KDFQodLXTj/ouwu0F5fb62uTgGswBl4owg+UASz7xQFGSQVkf3p73OXf+7zzEmD8gQYeSYwnwpAkaioqOBQATM/3DKaD43hJxEoGFW/+qo8sIxur314+IHNxgwc1PY3miq95GRVUDnV8vDkoZqaloYGKSiKZZTZZV55CA0JPbjQeSG+Mz6tO40JQ675Gm0enWu+tmr1eGJiojc3E+1ahjujEOfZ1OtQdxZnj+CIyS3m6IswCiLbMxrgqMriL/d5Dh1iJi3F48k6tFJSsnq8kbQUH9eQlpqfmufvXl41HwSkPwQytv9nxunzgWiTjgl7P8314yXXnank5C9ZvvqBZaxBqQIlurOT0RpDe8kXMeG7+7YH2h6jwmrzsuKBgZKB1X4X3i8OPf/zwy/6WB9MVNP8fxl/AJh5a1+LPrpS2F8dvVEmpO91PJyGzwLM+dGBY/tnOMdQWzzRhATWpzysV6cnMIhCOnRsDQgC9OusVsVx5eX0J3gNiQmU7CQlkfL4lrh/bEUtgPAaj8f2WnpfSjO1QlB0NUiQ9zm0y0Hd8vJyzgWSh8LLujB5KDxHhvlMGNkv2kj9B6MBZD4eWdysCbpWKyvgVQgKAJWSBcUUCeuJH8jOvr9dULTGPZbGC4qUhYJVoBPRndFNnU1MT9FTY+jGAXympxxLjk1scriCQ77M+JOdGe9Wo9ok+xubNlME2SL4B1Niy8tuj2eKxclbJ7vwRTZF5hoGkrM4WUDGFYJ+NK4kON4uUpqIbCmbInxuEK0YptfsHBiXy+pypVomK2O+HBMz9j6GRiTrx5lC7M/yfCLZ9ybQBShuuAcxOHB4YPB3DqJcUb8yOjshwCd75yszgwzsO2KBE8+Q1zvPUn8mPluQe+VR24zgxemkM0pVYMcTlKDksHZ4DWvBz72gMdk9NYXFRaacRADoZPAyjPR5NEimZVsAeMzyzWplynZHK1Dv9ZUKZSGBa7vOnDnD4V+6/0wZM/VvCIDxCDBGA6EvP2PGTMZk6Awr74pX0TQJlaQ+vOdGS0FJWVX4Z7/Q2Z/oVIYuYAqyXpZZKRtsi1h0wikCwMweM/4yGTq4hDC/ydY4PQ27HR6POAmKWuidUwEJBhZxWpwd9lAEgKguVAZaNo+0g58nATgHbAGaqRmbbrfGdmjhJKBEi6XCgop3lJ/C5u5wsD8zccD2yhoLYnxOsT8GeKQTgeJGw/3/nCABBt7dZv8cvCAwjcc+RvMVsiUjmRbqrCPaXpgAjDjgPQjq8Syi5CXfMN63qL/CA3I9gwDsNyiKdKdo/rFDLKVk0YgdiFKvhogxEQBlBmT7z3CvwaafoMwP9opETYUdRwoBbwFIwOdPADaBxwD8rzon+1MDYOFWQJrFoltAMF23vEzqp+/PdB1jVXor6kMBxr9kfzFFPOL+0wH4POJd7/AkgofeAuAbEYx7ieW72Ddsebn/63hB0MPOgt4CEA68rQz/6aUSAB6HfY7cCvuLbe8EaoG+PYPEaqVTZOwip4b1AgETiOL+M4pE8asiAPic4ueT/XW8OIhvG8Ge6PoMBKBrWwAG8AsFQwA+Z25nNMq9BIDHMZ8U4HKJBuzY1d1rx1CRhiDcf0kBqeRm8TPDvxFE4FIaEMGLF0vM70z+vFBfREPYkA78dnwOEQ3imJcAfApMQBblk+0LtIID+gFjD3ojAlAaoFsgWFxUmR+7HSkpNIYCu+ygXeUndB2X5M8okpGYJe6/OkMoiGBzP915/ecpWIgCfq2yvWEBfgPtcxtSGUUVLNL3qQD1F1WIEURDUOUVB1xX64Bu47YTTo7B1KP+MA4DpH6dg8CUgURYRANAzM4az+xRxM3JCbvOff7Av/s/P4AmGX9Ugz6lpXi5UK8Mf3ef11/+QWURRBBBBOEWAOKECACmNqfaP22/PnPdBhttXpvnloQVqHC5LNQAJoIsUCPAPKrZgi0taqegnh7qg5q6VVDA0WDz07FmMDOIzAFcHjQmoGRnIzFx//Psf0JZBBFEEEFEAAQ4CX1L79js6Njq6LjZ0TPTs4CFaUyPYrQPfTmunCfrAOos/RbLA4s2+zGGhtDZqfbtfvAAdXVqDXBFxe7T+yp8uf8ZyiLBXAQRRBDBC18J3FGvdWyld6Cgx1KDVk/nQCcHAx5rj7lT5xH3kWRXssv16yxXHlrW2jA/rzI/8nSS6mo0NlID1KxQ01gCBoEBdYwggggiiOCFCoAN6KA1NDx4suxaVt0t9PXdmrzVoXUcKjh08DcddLkSYq64Y9buqKWiNpvK+F+4gNpaJQBnzwb0mEOD/TfwWSOCCCKIIAJN13Vs4wfb1g1gdJTpHZXcHxigp69PTzcvLn7D6fxva2uXLZYP4uIuyLY/+flqpSIjALr/TP68dIgggggiiEQAD8T9F/YnyOwczi0r05non5jAzIyLezI5HJb1b1ssX46JjZVdCRkiyK6EkYmbLyUiiCCCiADMKOoXDfCCpumyFQmzPXNzrrFl1xWn5TtXLd9MtMR+RXYljHj9LzciiCCCiAB0bNv8rsssrFaa+zF+thPcBYsFCUAlXlpEEEEEEURwAEDnNvt3+Vxkp9FcLo0LwX62ExwseJkRQQQRRBBB9JyR/d+d/eugcBKAy6UsweW1E9xLiwgiiCCCCKKN5M/sLuz/d409HLa2FPvX0DZRjvJMZELDS68BEUQQQQQRAeh8nv0Hn9vAgezf4FZGkP0TkADgZdeACCKIIIKIAOz0/UvwLOJcKHEBNC+8vBoQQQQRRBDBgQ5g2szWqm5gVwEgNLyUiCCCCCKICADMOPEuwK0MiGhABBFEEMEvzFYQn09EEEEEEUTWAUQQQQQRRBARALQAfwYoAjRT5oUfAX8cOBbo12DuC9nA7wC+CTiggFd3ntIkaoC/CfTBBLR9ts/gGsHDiWBxD/gHwLvAwTD91uvAHwKOBHX/2cAfAW7ue+2+ppoVbiMofAj8diB5r2sUAX8aaMY+oVj1fbSGu1v4Pksc8JuAXzX7iNP/C3zN92lfCOSXHAX+AtARdGF9AFx50ZvBhY4qYAwYV4ZVhBtV25ZorE+bB7r3ZzpSBMPAgirkoHDaa8rANXX8hUc90CCGwOEBVoBlwI4XiG7sByLQTYrVyy8AWUC1Yn8lA3cQVhxTp1ZWAcBbAGjTCAQTiMAMepQAoARIQVA4C7i8NOAXGmWK93GKx+C607IyrOAFYgpoRQT7pwGE9osuAEYQYMQB4UGS4f4/53MtKAHAjwCPySBgALiLCPbEgJcANAadWRQNkFDgNn5RccTL909DUFgRQwgIKQZeV+yPFoQf+xib6y+Bf/9ShALRz6efWoAheScaiYlqx/+CAqT5bdvGKeKB6n6Mt3sLQApS6lB3CIdgDhsbuHsX09PYRjWtCNWnkOn9fPnK7Qhg4VlW14BvYDd0deHOIyM0qQGOwg8uwxw2NzE6CpsNS0tYW+O/UmyqwLKykJOD8ICnHhtThbK8rApI1+H1yDajdsxUkRn0XEXvmirbEmWXTNXd5R3XiKMGrMB1Da51uMTDhAYtDWlsD1ZYzf/U68A0QkQ2cM5E7ZrA48fo78fKirR3of5TKC/ECVPFshPL7VjuxzJMopBX9NlcDYr5Bkyj5QZaprwjgGKgPpRuMYKRKUwtYnENa5vYjEZ0EpLYinKRexiHYQLNuw8CtG17FwfykS+nwvo6hoZUD2SNuFyIikJSEjIyFGulpiJ0sLqnprC4qC5ExMXxtKpjFxYC6EGPHXYIYFG8so2GvTRgZgbNzXA6jbINgYbAJtk/MDCwurqanJx89OjRoqKiYAXA0AAyGSkmMxMlJaiuxsmTptilrExR1dj3MTaChyDykMdG8A7egTm0tuKTT/BQfZfItaLqHVRVoWpnqRhZINoAnuKDnQXHkr5zB8rcSMIJqaiQBeDRI/T0qObHFrKwoOpSBIAtkMzMRsKSq6xEXh6Ch8eDzk709WF4mJcRnVECYLEgOdl4IpsqoZSUsAgA70jZPREA3kHWeZwPRgAI/sKzZ6kBytw2PABRhCK2hzfxpumfGroGZLFRmKtdE3Tw8cdoa8PcHIT9UdWA108I+wcnAGSulU+xYjPF/jRTzfUDk/fKjsYe13pTCUCW1A+Kg+4WpP4udA1gYAIT85h3wsm6jkFMkpaU8aOMAhQUohyoAp6l5je8//RTYoOiAVGIakDDe3gvpmeQjp3S48lJxdEiAGx1ZK3SUtUpyFpBY2REdT2enITG7s1+R8THIz1dqcvx49212T849ANKHRRinmtjDXvFAb29bEo8t8+C/YYdOGiyz/Z88sknHR0dCwsLhw4dqquru3TpUgn7bpACACT3osIVPTObskAHs6KCaqUczzNnTHVZqsX4OJR9nx7rJVzKQhYVuxKV2AsTE6pFdnTgww95QYpG9SuoJvvHIQ47kPSsBizu+ntcLqF+GiMLNpQTqrOGCDkrew6bnzwxE/PzcDiUAIhuigtSXq7u6PRpVSTBgCxz7x7a29HdjcFBnktdRgQgNlYxPqOM4mIcO0Zt4GUoBiEKAOWG7M+m2fMp5mzRJXiXGkBjDSK4KINKqDTAJTLAs7+BN47gCJ3BYzgW0E+9BswEyf6XERZQfVnldCZ+/GMqQS1qSf1kolM4FVLwxahO2fcAZ1DsH/zFSZuK/Wk3sD4l7E8LEg/x8DZu38d9+g9Ugtn42fjk+KioKJfLpS/qWVeyilGcicfAGPAbYOCLAEwJgKEBRXoR3cql2y2HWRfsHXTESNbkaFIGBcBqpc+lWMtmU07ZuXMIAqR+9vD793ly+l4kQPY7ht009m1xc+cWGh6ff3xVv4qjMTvb2N/fKxe0uqoa1Ecfwf72Lp/Af5ZTmhWAlpaWH//4x6Ojo8XFxZubm5mZmeYFwBuq9PjFy5dZmJ7x8fn29vn2H40x/GHsozozdXVPMGtE7SUp0m7eZLOg8lMAeGQkuKc/QiOrsirJ+2JlKIMPFHhpwE927VrC+yIA9BHCAdLvjRv49FOeWLUQNrNsZJch6yAOMjhd96zPL86PLo729q4NDZHDWXhslvQYAmf/69dZgGhpwYMHMQ4Hw7oj9fWJiYmapq2trc3Ozo4MDq5SG0ZHeWuqyC5eDDHrRPYXy/lb9X/wO1n/82qPbwEwjexs0QCxrsddZH8xlhhM48gRmvn0cBvwCa1ztRsWi5LlkCFkSSP7k8tI/WKxiEXQYK2trNBIVdXVZIKvK/ORH2Oqj6KfkBC2tKLcDdtX4p8r/X3fzP7o+lgI08aGb+HWNVy7i7vzqfNVVVVnC85arVYRgLm5ucetjz8c/DAJo8A//rcH0n4v86S0HdL57+Rsfi+VgQzHDYfjxrXDt28rsmBTYj2QmlmYlAH2OqoCO4XdDk1TV6mtRUAg6bN7s5PT/aLjxfOfOqXYj+7/1hZPq/r8T35iX1+3H7DPvjbrQLbZwZa4pxpAf1Fsl+b7TgDsz7TP4uLi1NQU2R9g23w8OTnJUGB9fT2OpB2oAJDh2cKoTtROeoIsPYdjoZ8xL51NvkczA/L2+LjYzIiKCikAtDM44599WJsUAEZdzBFXo1oEAH7hHQS0wws2m0H9tIzkf13/3pXvf/f7YeEBnlg0IHYj+RLqK1BBlyQFKQxOGfbOYGYQg+1oZ2KO3Yzkw6iUfgObEMyPLdC7uXWLGsAOSuqvvXSprKwsOzv74MGDFACn02mz2Zj1Y9z3iD9IREZyTwwOggLPIe4/j2eys7Kys28fvvsbZ3+mAaw+BA0mTN1uEQCb61rX+M80oAlNMAEWHeWTR9PsPwDc68TdT/7y9/DaaxRFJR0hoq3NEACmsw32598IBcL+y8tRfz3qOFIqkQLabgOGQmUM9uh9hgXkfbHpq2lvXqmvdwx8hODBPt6GNkYAi6mLzD+cPn2azTU9PT0mJoZMxLb68OHD5NvJzFSc/g2nexNrf5KUVEdXhpoWeNWstq067jhWb7SoJvveeygqUmkZEYDpadWCeVdMI7DjS8cj9/BC5h0vo4fThSX119erWD4zk8xIAWBl8XXPo0f227ft8QWORAfM43+olQ+E06k7HBppluczoBvjOG/DNNjdY+Pj4w8+gd1uT01N5TBAQkICXw8mAhCPzQjfGaRQAvs/GqOiMmLkzSsnZE9YLEYQQHu49VAEgEGAL1+SekPqFyOE+qkBZkaNZEaQ2CgUGLV5Z34KCuYbG6/Mn3HhzwK/D6FgdpbRIR1/xc9k/4u4SFWrQQ1dwnSkUwAo6kyA8j6oB1vYGhwfpDsi4wHmBYBKSC9GOig70quvvsoeVVlZWVBQkJKScuDAAdb0+Pg4O1VaWhqdrC5+nvUiQwLMe4bm/sfMZeXm5ubk51qLinrCIgAyOORyiQx0XruWM9MpGmDmtIzmyX1Op8l5IesP8eD7aL2He3P/LkcNkPDSVKAQwOZksL8FFoP9WekIDZL/oQakfMD6SzmDlHzfk0bogDK3oWmhzzNh+zJuCK866uscR+ucDxAsRjFKj6cXvY/x+NVq1VZfe+01ZqLZMrdlboW5aYYCVILey73lieXDiV+oSyzVk5O1wKvG0exw3Ot20LF64w3U1Sl2Zsu3WKgHinDYOfm3w8HkrGIT5kj5BxOkJsGQWno4T8XQ4ZVXVBKppoY9i6eVmyEnOnJyVuPjV7/1U/wDIGBJFt9faUDoc5ooscz21NTUuN3u+fn5jIwM/s1X6CaGOg2UHZSyR3GllmwsLFANePOmBABguRtxwFpHh5EI8iUABvszm12IQiP/AxNIezYOcDCCM9j/wYOKCr2xcfrUGfeVM27UIkRQDvv6VCNht72Ak2R/0QAN2vaPSWM0wCiV7D+HOYbGvb2bpLCREeVJmFJll4tBEONQ/niKeX19fVNTEzWg1Cv8YiIo8wmio6MdDsf09PQsy45ETReRoxzseAGCzojh/lehpLC4sKCkgNQ52Nvbs6w0QAyhoLJSgoCN6OgutzsXP9MA5s2wB0h8ZqcEPkDfIzxiUxrRRnDpEgWAFipHG2S5uNiAc8L+tSE3JmETseSK5BRdaUB5SBMHJ4FsMyNtxg1VrtfVNdfVr6+fZKwKDUFhHvOMeun30BXNz8/nLBQ2Wrop2AabMVlpaGgoLy/v0ZcfTelTs5idxwX6TEFMkl//I7aN1x0uVi7ZubERBuihUwyokyxSMg95n92V4i2OPH/PniDL8Vu9vYqJSHzsSlSOV19VaW2vm1E+1sGDKky3j2PxMQLC+8CvigDQVBXroe6qyZs75fF4cnJy6BfSQSwvLz9p2guM3ktelFFrN9h1xYMzDRkNliCgd6GX7C9WjnI8i5kZSf2rI51o8f1pvLhZ/9IQgLa2T7cdf1I1y+HMGTaSraUzm5vlm9AQyBDwBVmjuX10M17jDZHKORmEGWneCEeUG9FosL8B+obsD2QiEtyIa4SBKUOH+XmJrkx0UF5jaIh0U1pXd+zYsdraWrL/bgqdy7fGWLy9vbO8ZX6Lv29yknwZtPtvWcrgfZUnlJeWF1CH2B967oZJAAhpl/n5g5ubXUAunJQBxk/hmhC+hjX6oX1aH4/IUe6/RABhSf2TTdgmDfcfut8NcXWz6iLGAf1kJNN8n8UMSaRiLzCQMlL/cbbCerolm/V1ntuax1OEGAQFFrsTThJaUlISuZ5ZCLL/jpHBwxwSYJoCgENzOHXnOtaDXCtVb8WpEkX9tJ0gx7CzMLBgA2BXokdpsymKoTO7J4SvqBns6nRh2XjotZD9d6L0MFY0LELZiMlSWnduM79z1el4AgC3Ibi9c1XVQXjjLHyAzv7Zs2c57sLMMKuA3mHYFoJR5MToVNJMqaj3oJUxGHDtmvdo8HOzeoT6afRDa7Z9/6IAJyTUbW7O37mj7O7d7jt3DkyMnWkS9lfH7+QjcHz9WQFYmZtbnplZmZ5ejltbyUQmyZ3Bii8HlgpBBycVqSMYsdtVtbPvmQKFgnLBhgvQxyfLc2QfPsC36FVlcYSG4Lfm5ujFBCoADO0M9/8kysmatOiKIrI/bbS/v2fhZxrA0Y4waAAN6ARyty09TGuByPu9Wi+PC1jA0XC4/+3thgCw3f6M/fWGeMT7/jnBRAApqEjRUhgEhLYIKg64CrwL3xDqp032JL+J+jrmUPTcVIQEdgExfRvYAe+31Ie1A5quBVmE9cpwyu+8AyaFSNwycW5xkU3clABQJ6gWdKEI9qncXH/JwzpgEfgz/lJAbYBDGZzyBz50YMapOTmG8QTOPwZc8cH+NJgTAIEMA4R5JfD6uhpZoanAKi5OGRBcEDD5+LExGuw9c25wUNhf5VXImHSyxBAYVi1Rd+qK784P3pmPvTPvmqu6JOyv8+gRCddCFQBieXm5bmmlBMvUQ7J/tu+I2wILLRrRMr1SdNRsOsZu59XoRrFGGdPRdYIPMOjmB/gx/rHGb/G7DkfQ7n/i6hFhfxWlxUepgFqCgFtPgwAJy0LHgpcGXAyZ+sWvJPWLkQJCd/8ZURnsn6pbhfp5pLSHbSKORADr6ylQ7M8jQoUVIKv8E1+TG0n9ck9NivrrGAGUwGOu1H2664lI5IQu/vgZ+8zS0hLn/OycgsLsP6emsPvI4lB+PlFLDFI1/wXUYF68nzKwsjhVQEWwU0i/MOkKUS3oQiUl0X9Vo3b+KfUN+MeVZ9hf/r7mwLDj1zucX1BBgLC/2kbzA//sT/xjhIIgBEDKjabrSl9YoDwGpNhUehkNljjgoetpECCju0wpGVM/CSP1T8cZAWAOuEPLyrpTX39nYcHBtkflFvefVTmF4JBJ8ybmhNWVL68ur6yusNfSi2Gex8/vdMHlhtsDjwyKSzLN5BQgKgaNAkCokTS/iNoGXC75YqDTTQ33v2Gb/SlvACgAEgRM9fcbo8FKm8MEEYAcdURpaOwPDX3oE1vCEo7Whur+2+0G+0fNLzXoaso/zc+kZA2BRQUy/EvjRNJkPZm0mIAEeltSg5o0moADjFTA6iu9YWSzKlwnSP00RgDAPVNF7vvFDC1D1vp0bXQNDw9zWjojV6ahmY7Ydqxn7t+/z0lxnKqYgxwOkvHzvN/gd4nIhj8Y3qq3D2smO+ZwKL5jB+RwAhMp8vtN1rcPATDYf1PTyIf8bfpXy64D35jGlQMY/+q3L2+evnwaNM1LAD4zRJsITxWBiaKyUAJukQUFRhxgb2szggAuEAOM1D/fBMklKPdfNp8Tu1tZyWUQnDVI/WamQX9KnhpCRlL2Ki0b5pyJRSySiVh+AAuP0um7Oe1gdI660Diws7GxwSn/HN+P8aEejKnpR/AzhLqANLKg3P+UdTWqQSNxGlPMngYBs4+MIEDxVDigP5sIiguW+gk6Kjvdf1roqX/ee4N+RrH/akP9ag7cY6wgEgTdTA2mUA7YgGU/+Z/+lJR7KclL8bB/i2GBRreI9WixGGvK2Yk0s7piVRqAV4Hrz007MVL/MdO5Qv00UXottF13jugqcKTfZtNsnJfMMQB2Qg5NceaPTAPlLPXu7u579+6N94+z43MNIGeUB7dTkKlvsfuIBRJ9GzOVjcFPWijsTww+O2GTxKTzV0mK7AYUvv1t/J8o4Ks+Bv1ftABIhKoITEwB84Hue2VMCWUQMPN0Sqh1odiY/GOBxXD/tQDKoc+gfmOrEA7d0/YFq2Im2pLiibEpTE1jmqKZlRXIOgB+QeKt2VlGzQyoGT4z0e8jSzHC3kUPa1Pclvj4gNYB2GxP3f+m7ey/kILACALmGATYfhYEkDgQJox5aUBDoOyvwYDB/mywOHoyVPZ/8MAQgOOu4w0PGxpGGhpmRmDvIk1oFADWUXq6oubi4j3rlZ3btm1TPO4cAf5WSspCUsriNxl2aPRDDQFgG2Aim92FiazKSmOlt18xSBUN8JX6H+2NfxOK+uv1ekbh4dpzjSP5c5hb19ctvZbrvddn/sYM5yhTCThLjU4MFy0ODg4udi/KlDle3XcgFSYN0HVlhKbJ0dQKT29oGi28e7vpHP2qqVEXuolt/DpcBiAaAPy8CYAk0LwF4N8icPCLxv4QH38so8G0tEdFDx9qZH+m3eq3ff9A5pt3bFM/j492lvYLFAC61GTNIQw54DhRwnwUO69p15zMwm7PMavBQbpRnDzHmJpDwTsn9nLWV2dnJ6cAcfkfiNRUyX4G4f4f8mQa2f/nnSkJApQAtBtBAFsDwgIfAmDS8RewkTLzIwJAsQ0x+0/dRUeHmgne1pY1kHHqw1OnurMahr6XNDWlka9dLtnvSaiZF2KzJaOaEQDF/t62suKUCOCbhSkL30xZXNRWVrTNLRLPFrZkXqNqBkVFqKjgyKRsKrIXDcZva0Ai4DDkzEj9N6rMjzJWdLjYX2Y/n184H9Mck9aZlt+XP544/iDzgeN/OjajNmNcMcn2ZOZ8mtB0HMd56bM4G4YOqvtdX00RpREWi2RgzUTeYt5p2DDu76kbWfHnGnEU5PIvJAiIlov6z4khN4ktnm7p6yHMATfWhXFWCedHliyUHOo/2ttbzrHfDGQEMvFfYFA/bRj+oYWJ/e3qiC34B12hTnR2o5t8RDY+dowsYXYNtczuVMxC1/LRI/pNpHiG0vSkOM2Lc+mwDSZb+dadO3eYXeXfIEgWDDT4GXOgHBvu/6vb7L9zUpORBVpmImjiZ0FAIxrDqKqiAc9CN1+bQv3UACoBjtaJAJhy+nytkurspAZYZmfrfvjFuvbEUw++Vz84yJH2Y9HRTMdxJJMuLYMARc1s2NPTqp9wTroPnNqOm23P2fIyberI8szQzJX5wz9G8ZeRRLqiALjgojJMOaco7etU95ER2eyMRKbEgNg7C0RzAKrPGdmsMvdxet9iXsXpn17N7UnmdGbdaH7rxq1/3tKSmvrb33t7xl497/zTzs18tRkch3wZbTD1z4qp0Cv2fTtocpYxG0Jyr2ZmRjJ09h45oDGt6h+fAq+E/HvDt132FvDNbdPNXT1aPrBrYxARdbmUiqrSoYUAIwigsa/2P+5fHuReBuW8hPj+ZH81D9osfrrN/tPh3i9cD8X9Z9dlqM0tsR7gAZXg4knmo6hsAaxFZ2mTc+n+s6C4M+rdu3c5wMsJSBQDLvPjIu+trS36/hMTE319fWT/27dvy9Q3zv6kePjYBbfKl/s/3KPe88r+74CmkXQoACoISJ0pwc80QO2CECb0PCMAekBazhyKCIDh/ivfn8egIKooY1Mu4Hu/53vDlZU/LSv7Wm0tZ1sxo+1yubj1CpdhM/Dqp1RMTKhIeWuLxKEGiX0jXRkqgTVh/9VVm7YydX7FVvrlFVv2EduRNFvaQdvB2LFYCgBHLTmAxK7Cm2JbeszCp1dL9pf13juq2EcWaJw0aKT+tZkj5H1x/2P1WHM94D8BH5hUTY2XuXHjfNTtxsarr702E1235Dzg3NK3mIxPRCJbi+kdpUzMAuqFvwBGFt0sLMhkdImMzfQ7cXNVHtVul+wcQwGfyyq7gJZQqF/bVQN04B0EA2re8tracmLickKCHkwKaIcSyORe3j7bN41lEYoqM2EqgwHa2NiU3jw8Nrw+yvyGTQ0f2auqkqoqURmII/+JYn+s7P1DtCDYP3gB4HYo3ISgGc0d6GDGj72N7lZNTeBiabOp9ufx2FtafvSjH5FxuA8EN1fhdE8KgKz+/TcTEx81NFh/rfWjP/zhFlmPtFxUZHInX8YMJLq0XlweAJGJTHH/dy8DyUGvrzvd7h6gBCOUAdkmOoyJoODCOIP96fXhaH2o7j91l2zb1yeL7M+dO8dllsePH2fhc9cNvsKMNhfcMy/HDZr4CuWZWzYxV8PEHTXYzGZ88UARLWkFX1mx2ZZttt+wYsvJtGWm29IpABabBf8PHnjmMc8UIjOl9Ip06ENjQwxKlMCXqDVQewkAzeqd+h/qi3lTpv3odSRi35kM79p/2+SeZJoEGiy3jo64JpJtQmpqYY5LaeK+oBVIA1KBDB8L6RkwUZjZgyiZ9AlkTYAJUCpk9idvhyrCM/A8u2+yO25HK5Rlhsz+OzTg+8B/DnR/SnqB/f3LDsdycvLysWOs6hDHAHRATXOQOQh0eTAzQ85gaVIeg/a3ZV3YL4+PX8kZv/9nx91jY5vnS6ovv2M2+aM/FwG49oP9QxEAbohIAaDdxd3jx9U8VKZtT50KfGsGTeOXqbiyCetWf//DJzv/kP25x5Ou68709Jmioh++9VZHnaOjoWOLQyqs9fJyn4nvHX7ceg/e6AFoCmCQngO/5MWtRgsL6QcoARDDVNh8OmA6qAwe3WRj9iczYOL7KwsODocsBIUaUyHNNnIHDu7DwRmNjL3gBeoxX6EecPLVA6bYmTJiFfDqAezGukzLzFzJzPwKEIcVr4GCs4j+o9FHcETWEpL9F7HI5KmHMsdaJrvV1flNalslAqBeGKn/U4r6VeaHHc1fNltHENA9HtKuGr52Oll+bW0aNzkg5SYm8mey8fNIY1vmK4xhyMb8W/N1MrMCYLXjgmNnbocixNwp1Yj+E3sE64WRsVktYpGzFVHIx9TuZ2wG9JIoukbi3qh+pfr37qNlFDbgIAKEFuZcECv4pz9Fc/MScfgwE5SKpUlAIQ4CFxbqLMDaWjhuakNs4snJmJpSgRJeB9KCebhGUpIxI6j/j/yIWfLT75yWjR+EfczDBPsHQ/2hCAA3oLiJmzTKQP7R9aYm7oJMGieBB3VFlvalS3RJ2HzloTNs0Gsu11pUlP5kBPIn+fltR6faT9ycKJrBF77AgqWT7tvzrYA3BlDRA/QCwwEkpoRY3YChAeGi/6A123D/HXAY7j+7a7AqNK3KeXKSOldYWMhtNrivGTWAurtzEw4qMeMwTsFias7R3886Ug3bIZRk/lGQHRAkK8NRwA3YgD8KAWfL2GDjEDxDgcG1Qf429SPn5pQr5hMJQOroqLW1NaG11UlyKHKXGckf+EDu801SA74Ac5ANb/Un06K03glmzru7NbbcHQJAAqAAkGPJLWyt/BKCQec0rO2IT2Y18SxKdBUpgcVCT4A8SAmiJJMEZfyNMVMAw28UjOJieQIHT6LESuZBMDJgu1pZUcLA12Wz3vz30POPgT8SrsZtaMBvD3TFYlcXd6hettuXjxxZYrHyrkMXADIXm8z6+nJS0t3h4anpD/+OanYxbyOUpysxm9w7hoxxxIxnux9VIb0KBaSufaFsLXynMgRg0if7f4pPb+AGBeBI2Qo3EKRRA/LzQ5Ao9hgKCJsv29zMDBuf7nbjyRzE1vT0lpwbrYWtbVobowyqNNNMbLhmb7dHDMHBEABaPl4YFrBgCAB9tzDM/ZdVoOQRgBke7sPKHVgN9t+5uQ13PeP0ds7Q5TQtGPs9mRWAZWU7EQPkefvkyEUuE3TMoQ9iEEtLsnzMrwDAbif7pz4x59b/S6//RFF/Curuwfht2i6t8RPRJXzy3BD2QQguwSfYShdPnhzc2PjWo0e/t7W1RYtf+3SNzCkCwD8sFhKyKht5oiKDJWrZ+fNBbdT9r4/gWjZ9XlUU9PQZnPHUHo8qHHmMF/NyLCIOy7Nf0DFiWZkEU3n8ZbJ3I/md5+GvZ6vgmBCFS9Mo8HQRZD9ItUlc3xmAFlbXJtDQiCrIeyczkP2BZe5Us7jIv2X0ItStIJIrx6wJtw/ldjomRvS/P++JSeI3QkY1MA6MVeER/6IlvshHNush64dif1K/WHrpIps1jQJA6g49OiHTMJw2appuyGD0SAt+rCJ7rZWulOyuw7Zu3m2GuP/jwU9L6HnxAgAj+bOGNRw9Far7T6ytydQ3LsAmv3OHpXwKuG9wvSs/xpEAmTQd4D4cZp8Er3ZNQKJafGesa3W54BcjrakdLVbOx+nrm3jrSn0q6lqUyb1ou9b0e8BHV2AHrsCAseXO3gLQ5aloT/H0FqaOaGVfP3TIUXbEWep0lbrc75KZlK1jnVHaHOa6YYuN5SCXKiry9i/9EgJGE+DKwKceXL0KVhAjD7pK5DvqAVWFLYJqc+ECA3DlGzHvFeiiJXkIMMuZ0dMPf8iUIJNCssqSzYMyz8sp9q9pQl8jkBoK+4cONnh5NvhabS23KlvOyWGSAGIhRgCsMI5nXiu6dqfoTt9Zy+q7775OuolByMgEqoDf/kPgTwHlCDOuARfMaoAOA8NAIYKAsL+4/9biBfH9KQD0JIKmft1XTVss85jnqF4r6GS1LCa6hPppZtcZu0N1/wWDz8QBLwAsh/C6/yKxYvT6OduKOxlQCfyu2EuMfwKZM+dz5vhvAW4D/XgGunr4l8mt1jRoNACm1jS1I5VTMVtTLa1WAG1X6toUkdcCmg9iOiSPKcEVYf+3gTlhf5o3/jV2x/376uFI9+5VPXz4/mD1+V95553V48VrpWuuIpdH97g1twsuCgAf5DJzbab/p/3N15pbWpbYYEknDG7J4YGhBvAAUReZQmK6n346+VqVv8ySYlKIfY8KU1/PGDzguYskd8oGJZYqQsdrcFDFdszvaZo8I50np0goXZlvBLIBDSjbd+ov2GuS/dzcUmLikt2+lNmOx2rjgTAsBHuMx91aN+mmLWca77/PYUB126q5hyUIUHgT0BF+/AHgX+2tAToM/IMgHxzLwV7D908pWiDvi5GITNxZwOKwiU1x/FkpQxhC7Tlx/5n8Cdj9tyEkvGgBMNifzIKjDcL+yusJAWQQMf0JONsKfqFvQ/LgPt2uC4AFiAG6fdCC7o80GN9wVihN6InEpMwXRoBWWFutFICszay38Bbm2gDa3wP/3rX93QauPMQV9B/HZbR/wNECYxagppnYQFOjAHDs6/r1WNu5d9n6L7EDcM8D6OR9SiLdf5euBGAFK5OuyXZXO5zgxDby6sKC8tqDQT2QVCN0rLz+lRVKrzyPm96ALJ1TXhFfCQI8gwy/FRQwFyQP4pZHsjHdRNVSJ6+qwZWkz8jxLwWa4A8shzfftJWVzTl/ZeH3L+LLauJTaAKggZjF7BSmhjGMjBwORaoRFR7Dg3jsMzKAGX8aoMPA6eDZXxx/HpMLDfbniJGZtFIw0ifUL+sMFN8Z7r9JrIXH/ReMemlABT5TsGUaAsA+GR73HzC2AHOOj3OAl09b5XZM0b5JhHMuuCCDHwMgq414Bp8CINYeMEvwZhewsIQlQNbk+/bvVoBWZYmtidVz1bIqxZz30f3X0B1zGUAtUAbpMaS80lJey/8vJv3SP2aS3Barxnb1qioZftSgxSKW5t3OqxqrNmY2+AA77hW6ubnOtI0e9EZA5UD+F+WJ7bDbKQBUX1mhTZpSpRQKmNZ77TXVoiYmVHixvi77uDHdxJOrSyyHzu/mUAE0KfOP5bSo3rS+x7GPx75YSv0zH1VF+2mLlG6J3YxR/HDO8/A9GrX/4wHmr2bK9z9YIJkfnceKihBcAc2fS8hkN6lfDFYreV/cf/aygN3/OYQBL04AjOw/2yd7qXn33+w0cIBrfbkFE6d7cjoQfIB7W/IB3NyISYZqyA67L9Eq2Wb/GHXEPZgHb5AemOwrBYuFvh4v5GtimbA/WoB+sGWwUOiAm2F/JQAw3KCTsjerTgVITt6zKTscpF9FkohTo73+W6PL5eJCCq6mprKyCVNcKJrBQ+b50PYJubnK9gfGVkMSJDHCo1hKaKtDr5AuVbXN/uf81QOzlkwMPMCD7lM9y8e/QA+UTTFAAdB2fS9ajOoqA82hRzqhf18PyFHYc0xYAxqCZH9x/xPy5kn94vvT9Qn4xjRTL85gxmB/O+w4eUnc/wAaqD2c7r9gSjQAnylYFPvi/gMyB5xFSmbhLnuc38lJPhwK3vX52pz5w3e5xbHah4NeIX2unByfjmeelwDQbgFbaEYz74V7JBzH8SQk+aD01i50UeoYBKD0uOwqtXsK6L6ifmWtT7fpN9+LxoEiq/F6ivlZFLJLAKkY8wuw2bhzeHpGhmW3VAFXs7e3t7PcuMNVXJyHt8KSllxFcEHAi4YWinLJnChpzyMY4VCiFdZpTLO6xfmurq1+yv6F/q7JhsSvt5S1tDNFLxOfTCPaz10kIIHGZrQgWwLZ7T8BLuNlh47QwIFxw/ePz517Qv1uWlElnL6bRxzifD/81tT2EmJ0BtWYj+H+AwG7/0sIG16EABjsz05isL+5bK8JMiMtlZTQhxpub+fOxlx6zdVefJ6t90IwPniP+0C0trY2NzerVWCAqfnmR4CLT0OBttttH69//AiPClBAH78c5YUo9N5izwYb32WNy6pyJCfTv+AP83mV1m3bCrgHaL6I1YQGsGBkU9TBwSW0t38rMTF9eTmdq9YPH+YgOXcx4VAKd4Q29s9guVEGTp0iTakyS0oKjX71l4z6jQwTyy0rSy0160Qn652JPpKtLGzMRGbWqay8pjxrk1Wxfy78YxnLk2WTM03ZW41qrz82lfDsBkqvhFPQaFhZpHwrA37vz4sG3AziHePtWdrz9Zhj6Ow5v+wvjj8tLuf2+fM3z59fSDlvb61yt/ptHixMEnYxihE4DPZnW2HDMeZ9BrDhwWL43X/BnDrlZwe6SEb+h8kQ8xt/mgUZlp1yfBxzc9zmgQMATPEz1ZOdnc3N4DgpiEt/mfPhHm1MZHODezqzaGhgdZDP9l5wlCrjARixjLRZ2qgBP1r5UQlKKADUszzkMRqgo6BDd8BBARjEIGucTW7V4sLpV9VVTpygz+xPAOYDY3/NBLHqfjmvoEAJ0+SkPG244w85HF8bHk7PyUlLT+dMKkMAuIMeU2qPFbpOn3adOcNi894i5SWSAQ0hg1EcGwsdOaYP+/tXPsJHD/GQKaBVrDqtk1VVJztP5+Y25b5y7hVkYk8crz2+2Lh4oNF5oKnpflFR2LaDpi6JYXlYtkYytrXS8cLxDfiCB/i2D4fmDwM//cbsLl/OFV3zLwDMshm+f0zW3z937ttZ56bvnpu3V9tdcPlvGFnI4hyRIASgG92GAAAg74v7TyIIxv1fRdjR8yLcfw88hvuvBqjCBRlcWVjA2trGnTsff/wxaYtZiyNHjtCfFQHgQxooCXRmlxgZNzbKfHOzu68kYfWCq80y3GaZa0v0LN63tgy1kOiLUMR8cypSRQCccNIlHMUogwCVz62/yKvwWv5mtbcAAwGwv2aeWPfiWFL5+joTQapJcn/HT+4MaFo6n2PKCbJUUAoA8/7M/2xtzeTnb3LiP7WSpcUbslh8FZLA9HsHATv2Hwd3/oKkYKebUfyWljhuRTGgs7Hlco2wNHLSmE1ki+6src091piHQ7mAX0KPAhqR25j7SuMrBxpdBwoLDwCt4RKAZCSLUdyNh5dyKPiFhl8GrsAPPMB3nmnJ/xQCzB6+csUv+xP/zPe8WAbjZP85zL079duHzjfcPT8zVzPn0BzYC1/BV9awRtpSYyqmMYlJg/35dfH9xd8MlKTF9gPL+Iwwhann5/7L5j/hBfM5Gxtq1gej366u7icjAdwKlP4sh0XJZcxmbLEH0/WtqFDzzZnOaGpSymEObRZL24ULbfHxA/wKswA9PYt8WMr4gzZPG9OtFlhk6uc61tWQclEdfw/ZglchZfpb5tZqlv21cPvXdBI5ZYY6xfzZ8LCKBrhf3urqPEtxa4s/mZwhz7aRZBFviJGMv1u57PNKvt/77cB/xn7it++8dk4I6RCWA9mfZcI4wFjGwBaRnc23PJWVnTExuQAtzydLH1TsL5bdmP1KBg5ADM1hEQAmf5i4oD19fJ3dLgKww79+DwHibYSIGvhFvQeYhYGPgIPqojU4DLOohcAYaudIvVrNCFUxV8EG58Z/VjsvohbBw/d36QYK9beicwpHYMlTvC/uf6AQ938dLwF8N6Xtp77oW/giGyZpUVEw+03YwUKWSd8MqIeGwE07l5a4167iM4uFwiBzDSWMN78Kj3gItIkxaOD55Wlfwppzc5x56nC5ZMYhyYAiZzwObO90iW7q3fd9FfBJZbvjfSj86h4TaClP1OKxMZaWiqAYHRkCEBuryuzQIeodRWLvmT8fYDdYfb3h1cnfxv7go53XzpWXQkBBAU22/RUBoEyyzkUah4EuQDTg5O5DSo1eloRM4BUYGoC7oQsAUxYJSIhHfCxiN1ifTidtD802hy8geJi5Yr2ykPFByOcO/ipG6v9hK7K65UN0GEg69ARTU4MRANpLgcs+g6FejPahhiZLosiMKv28T+DJc3MVpclGTBL+6jq7KeleNn/+/+y9B1wU2bru/S8FGhAkJ4liAAOimJ0czz5p9rlnNt64z3dzzjnnnHPO+Y4n3JmTdpysM86YYVRMgAhKjgJNqu9Zs37UbYWWohsanKlnv7umraaraq1a63ned721akkezNY3uj32h2kQF1qfWacwNNDfL9a060GqdPa1mboGOYQihhV57uG/QeNy2d/C/vjbS69lJwMV4nEBUJ0lJcXhHW5cHXKP9YqyVu5yiouNRV8rr9xsKSASWx9l/w1YFD6qAZ/EKQDek6BSAvskaPQlAU7GXpcrLQANshXJ5TTGz/6xl+MKt86x5TyN57DARowxPjbRAjM8HTgZrQR5LZxsAdcbRhW1rCrS0uxCpTb29QTAvtJsudMOZiLY/wERsDKgniW32S4I7PnMHu+vBPuH4aS/DhM/7GhGfAgwFLFe6ks+n2HMh28as4hbAOy7UVxcOyUgeqMP4RshVgSZPr+IHdt5FBsW7Fr5s1jchXNst3N6pp62RK1/+G8f96CFUAvcYC1gc2HxwWP/L1gAT91XHK6PfhdivSJA83wEINvBKmAD0THIYD/9QwxNMGEnoHvu51OPGtYtRuAcWPbvIYDBDaw9rbgdIQABAiwHTdBsbHWQxALYVOc441e5ep3r7bTz5VIPFBWZD6uMAN58fst3ATqgBWM3n9pI3lL/eRgjgXDX/3H9YyP8OmPrBFnw22U+6mp9w3FxH0u1neb0AAOTTHbQcZ7zH2z8yH3hBb1tjh//cerq/JRv/SNAgAABAiRFe/B8mmmzFl3pOHtesfNc7LPnXxUECBAgQCAAz7MQd5hpS04hcw9btrB9O/X1Zhai4/DVQYAAAQIEAnCSBagwtnGjyfraBRB27OCrhgABAgQIBKBxMfYX7OoKoRBfTQQIECBAIACFPIpCAgQIECDA1wAbCBAgQIAAgQAECBAgQICvDxzXdQkQIECAAEEEECBAgAABvt4CMAz/Hn4EnEetBv48XMEvRuE/wjfAgTT4/+CXiAbHh5XDt+E/wG3fJ145i/N00dEB/xCOgQOvwL+GfnxhAv4L/AQ4UA9/HW7gIeYaSjTG4H/AX/XfrtZhGR1/9jr8G+/ufg5/CrYtp8W0w9+HIz7OtB/+BtyIcnGvwb+DIXyiCf4i1IIDu+EvQTP+8Dn8SagCBw7A34q+atl78Idhawxd0fFnb2CIo48n4R78IzgOIfhN8A4eVoluDsPfhTaWQBj+O7wRB3mFDHPyzlMdARTA8XnbRoCvyote2ozRru3TW0bXn7OVDTnGDBiEIWMGAaqssTqomD96PgGeSgHYDMfhmDF2E+Crwv7MU7+1u1/hV6R57L8BmIUhGJQlpMTrH1vnKTonwfKy/hEIQMo89R+HBlYHAX6RNcA96/5726eujP6Z1rJ/NkIE+7sE8DTA2kojK6oABEg6FTUJ8D2ioAb2LVjUKspxRuE7RCANfgJY8HOHR9HWRksLIyMYeCM/Bcd58dHfwSkfZ10MGzaQnExaGllZ5OVRUkJ6OkvAx+mSkqiuXnQBVwfcKAfogE95BC9DnlfKaCeeWCSlUg87gWi/9V9FDk4yyWmkbWZzHnkllGSQ4b96/KL9NG1dHvvLXq83d8Q//De/hdjAhhRSVMYssmwZ9TluDXCIgJrwxYv09GDZnwM5bKeRU4O3GLzIkJ1yrxazf7+vSm2Hz+K/LA+vQfaSvalpwXpCu2AvPvH5AlU/ANu9k0aetWqYqu9RBZdh1lsv8ciRGN5H0ELLda5PMRUhLNvZeGCpst6DT/BACN7w05tsQ4sDh6FqkTrxEIZ3iBcLSkSjJwC+NWAn1PjrgQvrJg0a/SyKePcuH3zA2bP09WF9f6qP8eIxji34XYxd3xMAkb5de7W01HTD2tonLGXn63QpKRw/rharQ/k9wAINeBnw1exgHH4ZD/ug3tdvF1bRz0QVAJFjAQWllG5lay21IsoVE4CxMaP07W/TBrNou7eNmnb27cM//Dc/fmZxAUgn3StjNdUqo/7pK+/rLk2258/z/e9z6xaQzSs55OS8BUgABhk6z+AdTCt87rnHVoZ1o1aqpwHx4zX/vSlSA3YZs4hBAw4Yg0XJTj2xqoiqt6nq4DYG7NmjvmQ0YDnoo+8MZz7iozHGcKzv/2NUVfkrq6cBKXDSR2+KXwMOweFodbKiGhCyR/clAJ4G7Nv3a+EkvOkJwPJ7/gh8NxVO+omau7v55BM+/ZT33+f69f3sF/Uf57gslVS/J/bOSlQ4jiHrTZsM4xcWUlHBjh20t3P4sFECixhOV1amHq2mrMPaHu3/AHfhLLy8zBN7GrBPtrzfelWUGjUCEDlmk11IYQUV29neSmsDDbvZvTICIPa3Nv05kNdOZrv5l38B8N/8SI0aAWxiU2QZdUEHOagPvjRAcKNqQDhMVxfXrvH22477LcP+8/7FqaEhpAGDP4TaExw6xPR0xI+XKlwbfE58eHW59XgFWmJhf4vPoB32w4Enn1Usbewyt3+I8c6Skti1SwH1soIA3cE73DnHuSaaqNpK1Td1UFW+77J2wAVojI0ClolDMr9nmYxjDNPTM/9rAv816yebeM9r0yLKlV+71MFTnGFRvzWx/y52ifetWacsBrySmsrJZ2jEPi7pYdadnQxPDoWHHgw8uHNn6NIldu826jMxYYLyykpiw717nDuHFYBXX0Unf8xptPW4rvAKqfDMwuWgw4SHGe6h5zM+u8hFucaddGrPNNP11BM/pLeytraa/1jz5s9t/5u//MtWDu7eVTNb2QLCYmWcYWaSySGGHvDgNrcvcUlNTp+N5whWA+IIBQzFW3Nz5tlfbQvm5rD7JQN4X0U9zAFfu1w4D6fgraGL2a1Q/zTO8tF9txqQn09f37htHsZqavAH3VO1KutZeJJiLFE4Ia062AiyN+Lo6yf87Y0CF8bg+/A9bbvP3L6t0Daf/M1s9i0AkXqxG08DcnJWUABcIjE5aXx/a5cuacBBYz7W5J0RKxoRSuHEY9H5LLMTTKgb3uNeCy0XJi9cuDA1NkZSkumMW7YYRz42NDdbATD27LOsf0RWUaQAWHK8z/1b3LrCFflTAwyI/eU1q3CVVBIPJJW2b/f2FhTUFBQU3N28+cW2EdvlV1AA/jUWi5RRbWCccbUBCdtNbkoALnBBCufiKiwooCCLrFg1wAXHY3lL8dq6WGFwBwcd7Z8LpZGbq/1kZrpPvj8R+DVP6knD8JayDvxN4M2nUQO2brUmAcC2EMmAfwGw1C8NGGVUdZt4AWgEquEgXjOI8TAL8PKyOPUiXOjn4ve5ffsG+Qrc5bTtZKdfAXB5FDvjLE/UMzjMw/P9z57dwhbP96+gIm52W0QDbOfvp1/N5TKX00l/l3dv3JC8qbUo7jRNLga8/o3Xf9j4w3O/d9YKgJSgrs5HRi4B8F1FkQIgxu+g4ypX88jToKqI8nM+zyW3lNI4BcBz7hzXKTpbVFhYWFBY2N46Yrt8vU0Fr1TpomiA2sBDHqoNiC+aadYde5/3FQrIUVILlNN0hCNAzBoglrcaQMGX7D8/CmFVQVvttOYyj/8D34KNUUvwU0uw/yngz3o/ego1wGPsy5eZ6uqy7cTE5kVF+ECk+++JSeJ7k38N8CkALy3Lnb42woXvIUfgwoUyeJ2GAxyQBqhV+xIAd+nzOCv7wJx1/K2Jayz1y/ffwQ7iQx7eyXIXErBYTFF/JpkiArGbQgG1Hfmm9+/HKADT4UOHwsNn7509t9cKgNmWlz/KE2ukAf6ryEMZZfvYV0JJMsnSy1/hV8SPqqVaaiUM5ZQTE2z61/ZtNcqSYv2vJHXLltlbt+xu2b59Kx1jLlZGuflim73stVGm6FpN8AY3lOdQAQ9z2MGJWQPk6Q8NGQ1gZ2QCAMv+ngB4wsBvW8j+wnbmUblECc8v9qPtC3loPSMjA08D5JB5iSI/AtBHn3X/de9ISkq8+y+ULvgUU92XEoEQlPpv5b294n3L/s70dMM8+6sj+5oH4OIH7gr2Sl2r5/5vmkr2Rn7qqEvAE9tppO1hj/wEebVgAk/roMWGsBGAQzXhGrksSgZYGx31X4PrEWo9ysaL9LexDVDv6qKrm258I3r6d7qCirLSstLSUsrKSE/3Rn0TOQEqREhcL9JXARULyhtQ6cQmAwzEms5ichLL8qNjjijeNUNAXgRgtQHL/makQqiALNkKZdQcnlo8ytueRxAOsxQWH/3fvBmf2LhRJuWwps+x139iuru74MCua9nfEfvfv6/OZdlfWxZDUvyPPMfbWK9e9Xz/pJHx4/PP/BziECsEJ/qTGp4bmEuuHfANh03XnZrCdWNYBVk/PFQ5PXxoemjIHWpxur1kwEsvrU4NrmoVRUACqWigmGJFAJYZRWLxp39TSVUbrUyqrKyooLJS1n/tWuyp4Dg6nDSghJJ88tUSFOuMMSYZ0Ic88lgOJp1JPV8AjAxaT38sN6fioWX/jZMIc3hDQGO5uQ9NEJCN85A9sBljbAKDTbGzz9ON0lJL3cbp7+4eV2vwkwqeYca6/7IY079paY/bSvamyH3Oajk4ov4vfX+amuTKeOyvRuZLANwETzK/fdvz/RW5HOc5z/1PJMElkyzplwGOYz5pK4sBc3Pls7OHDs2qgw/9kB+eOzfpJQMaGha5FvvJWfcaYAUyk0zAMuMEE/GnfyupEevLUrWxZgSAOFPBLrFAPV4ykEKKTQ/I5phjOfiYj1Wwaaaxw0nGdPez3zIs3wlv2f3Thv1FL5u+3D9LutlPlrVXPeb/Lcssp7PUHXXBecpSwRKAiCBAAuDD/R9hxKbyjJWXJ14ABMfPQPpncAT4uyvVxJ27d637bww89n/CQHpSwgclXDx0dhret+5/hxlvFe9b919cvBpnjdZdRhn1GC03V2Rto8aYsfcQEgBjp+dOawjISwZUV/vIq6xLDUgiydNI0aK1ONO/gHH/qdSW4mJsEFBU1N7ebb/fv183InEuyRRT8iJlgFUCeQb4xk1uypE5zemwE8aFIasBSi/knMppIrsJwYFb2P3P52h/D7mnsNgse9MW2BMA/3B83NGnNBU80dWl1rBkKthz/2NP/4ZChvTT08nI0DYeAXCffJMqoRFjBn8y/qM7wPi4N/Qv7qmhxhv9JzqS1oz9+/ocO+FLduuWEhTeYz+KXBL8Mqw73Omks4ceMBxdVhZ9VqY/Fi3hkNEAd2jYGW4eaPZmBsgkMLBOZcAlKqSOYcIywDKjLJ70ryyffOv22+yLPloNmO3utn/if1KYywqgjz4xs/EfQffKRjxEwwJu0W/VhC5zuRWoNt//BFyaYWCAb/3bgT/xb+eH0l7jt8HPwrXkpG+9ff3n3qbVHi3riFqJLIa75fhQ9acrCEhL8zRAMWHE86BRBKCffhsB3OWueDz29O+WLeYRwLw864usLPvHDh9hn8f+otM88jz2DxEiOpLWhv3FApb6pQHNzRIrb+Qnh5xEsv8009e4pkcbr3JVo9tqMHV11NaybVuctZKqHMYQQ8MMa3vnzj1PAF55RY607ZRrLwP+K+o+93vpteP+YqnNbM4gIy73f2rKsr/3mK/+ZU3tuL192v6VBCAxuM51NQDRh+5XCSU24SEB8P+gtpRjBGeERluZb4vluxj6Oer/wJVs9g1CNgafaj+zg/xsLrk5vParUAMO2Pno8bC/fw14jacAkQLgJY28WcHRHv9/5JebNrFcyHOTb/PwISUlsvXM/g4RuH7dsr/Zgsf+1rVaQgAShe97/2V01Dl/3rD/+fOVbqU38qMqX/E8V/OiHx1D/WOMPeCB3P8rXJEcFe0a0N0/etQ9cMCEgHFC9CENsAIgu3hxbD4ZoFOsmEvrOAv/sfLsP8poCy2ttHbQAeg2FVJYQAExYN6338AGkb01LDZt8oKA/lu34kwF+8ccc3ICNNv5Epf0AdjN7u1sl7MO+BeAYbKHaRyen4Y52MzQVWYmTmQ3vpnDkez5Yg7SK/ZXk9jGNu3UV1jHXC1jxw784LMovcG3Bnwf/h3rHcXFlsaNU97V9dALAti5k0cxy+yKzf4V+4sF4sCZhR+dqOR7xP9s398ki3K8vj6P/QmHRf2W/f1M109K4POIpxDeATtcdedO+tmzO365ft+Vfcdrjh8PHdcdW41o/xQWn8se8/2VzJRXe3fz3f4t/31nVW5t7WYNOh854qMb+utttdQOu8NDjhEAzTCKTAbU1BA/NmywtuAfK+37K6l0jnPNNPfQk056NdVibfnI8aV/t1r3P3J6uqjfaoDCWPV0/6ngW/jHLSwcptwpue0qoHx/OQFnOdtJp2RbnaeOuhpqeAIOEYkRGDZ6z4xl+Q6GPsZkgMnOOWRSvXDIphks+8szMF+hr+oheRmDM3/cB/v70IDfAUNPTSpYAoDnOkgAorn/upuP6MYawCOc95Zk/0b/L4EIPfFgHvt3dpZT7uV+8YEkN5E18w7eM9L1k5OlP/ZrS//vjoqKmrIDDcXP1pC1SmddhP1d3Jn8mfGS8f6S/l9X8sef3/Kz5eV527eW7K2sLDHNayMrBDsQZDv8xdGLX2qANaeoyCU+JCVZW/CPZaJ1wUdvprQEUo6/xsc0SiYfGdjP/j3sETmKuONJ/1rfX/EfEXDLyx2rATk5bW2D/lPBp/CJJpnXk6Y+nRrdPdqzuUfccZ3rYcLP8Zx9GGG5TyEPz5v7yFQvJ8fOASPHyxOoMWibRZbdn0zyMp4TrPTB/r41IPupSgWPRU8FP+7+W9FYI7yF8C6/B2NdLIpkaCQa/tGyBj489lcdpZHmsX8uSyQbEz4E1DAJDVjMzl7u77/8K/8nP/9sbe2OsbEcBV4vv2zpa4WxyW4Woo/M0czNPZu/0/7vfzG7qrSgYItchm3bTAqooYHSUlYCG9loNcBaa0dr5KviQqH4Dr4R1VtKCo6Dq//oH7IYm6zwhSxyYGSCiX7673HvBjfEj4DI8ShHrYMcT/pX9Gfcf7dCWx6F++UQkGRg9tKg/1TwW/jBFVlkZ5o+Pj32v8b6d/dn7c7amrRVYzIa/FHnOcIR23/8o3yIP/Kz/JHfjoVlf20rsM/5W7LFsr8sx9sfU1jmxBedPi1Qo/Y0oLkZr/1ECoCaqHX/Tfo3Pd1Qv/3BGqF/G40XshuzeQOcKLe3cqXmdnR0eLlfwGP/nez02aqSEvuOjO1wwAoAnZ189lnf6aMff+yKtTT8K3vmmWXViYsPnPTeZrcAM+GZ8e7x/u7+v0qHCO5W0ecmulSdDg+7L7xgnyCOv5/luXmHnP+XEG5qGvQSwipv/D1EJiGZtJ9ky8epBezvCYB9UyZQTrnIUe6/BEAOsnyNuNK/bq2NAJyFzdsGBtKAS5fsL/wIwCWWQGolJ89OnD0Lf5yWGnBdw8O9va//yut5bXn57flbDm+pKq6qoWYve2N5wGnMGM/A6ci5vk69a1g+MgKwQUAO3v5lt2oHi6+FBkQKgNeEIlPB9tHPx0f/U1PX9NVaDbDN/7BejHd5YsJjfzUrkb6X+/VB/WsjAPMaMDPjNjc7GzYwOcl5R93SCoD0+8CBlT/twlWM7J2ZYcamAZQHrqAio/vMpe6PGBiQPjm6moICrxm5xAW5lp4A/IAfnDvn2lGgrCx3717igS7Q2qT3afm4YTdR3pWv9lRCiXrVDnbI8dc/de3xpH8JUzlVaWcATC2kpU05Ng8crqgI3b1rf7QCqeCTwNG/T+VP2JPNzXH/PmfPnv+VN3e35RU+yKuZKX711YrMzHT84QqP4mELY2EeggOjdq4vMxPJ2VcMy98l++6jQ0AapND+MDlXsPfRmR/ZdnxNX/naaEDkjK6OjsdTwbPMLv78D6ypAMSrAQ4+4LH/zZsKWD32Fwv4jyWT1uolSeJ7KZi18atXpQFif5l2686uIKoiP0aBgkeRmvSgn/6OL74wQ85lZSYXLHpeof5ykIPeE0GfT34emRAuww+qowlAWhq5xtKQ6d+xcSO/BpKJgIPjLZZSRFE55ZIxWfyzf8veKhP7h6j8VfLsqRbQUqXVgP929+5fnvf5tGMluuURqARcabxu9Oxs//f/ykcfdYbDZGSQm4sCP584tXCAa+z/MmZpHoYwGeA/n625XpeQWUyBYX+1BLH/fXJOWSnFyczkxRc5ciSBb3pwYpv678ZxQie+VLAEAFF/ZCrYc/9VpY+8QWINsSfi0+rNvWhpWfS5zzLKolH/H4WTcGxtBGAhiebnu8eOORKAyUlZ7507VgNsHCD6FRLm64iPppnuoquFlg46uHXL+JxdXVYA4j+zbQKRCeEbD254yYDsg2T4Y+mFMKqZxsk0MJZGcnLs3MhPQXJkd/WWSyykMN75GV6/hcpTlR0YW8Bp3j+noZKcCrFyW9uYj1SwD9Qt+CSxHBigX6KfeuFCODfXlQDI6upiFoBBxn6A8Br8WhhE7P8uOfB7oQUL/gUMAl+Q8wV/BX4DBpw4sfR5nQT0yuiTwLW179tRT5HhD/aP9St7HGvxpIKHOzuxDaKnh8LChe6/hGK9zadfeQ3o7/fYX+SpgVnL/voQbbJYWZS0c9JaVo1o/tgxFcDGAe3t9z/7zAqA2ebkkLCXwdmHUoopzicf742gw8OsKDazOXJ22PXrPVlZTna2GQ560T9LLxCAxnTwLCb8yIKPK4yxMS9yT0/fdGnTJf7XJfgr0d94lo19q/0tZq/iIxUcSyNwa2sddSTZwMDMmTN6eWJeHlYDSkvdJd3mFh7F7Cxzc+wtc/dyEX72ND87Q1L5/W9x9k3K6ikDOrWfn/+56Q19yXkv0vYtyl6lzIEi7HsHEsH7MYQCqaTKD1AsaF8DJaEbYQR/GGXUvlYPML4KabIYHnaI1ACvQQwUJln3X1syM22YYMd/vuIa4LH/vXty+R957tNdXvtJWuOq2bHDCoC2WgT46tVBbyBIr88MhRLn6CSRFCJk3wpn3uY4NcXMjGxln0yqoMJqwHwyYMpmg7M2cIAno4HFsCstgv3T1uuAcET6t6L6Nx6vhE/haPS26UI3vA2VD7j6q+/4TAXHUM6GBgmAtZ6WlvPnDfvn5cmcZY+lVVYqp+/W1wODsssMNf3FHX90RzY/nkO6Pe0XMPiAgZ8lZ7I9548fzsZSFZnGbHyzHpFFlswmflRTffT10CO/Xp1lSfbXX+rv1doB+/yz3KA4nwf1mlPb/qS2lAWj/zYIXp8asPh8vr8JjbADn7h0ybK/PkibPfbXwyYxeA9JrCGsKtbVWQHQVhqg12d6CeHnn1+5E/mIVSeZnGJqllk7IdB7rH4FR4GEfezzgoAzs2e+TAYkZR3fmJ2UtDW2FMcfN2Zwfr0mBT0fnl8RTx4xT4BGd4pcDIqgUvYOxcX/6cGDWFLBPsrppqU5ERpw/XqfBMDash/Q2rbNLSmx76wffNc+BfS7c04eMY978k0MGGhm8Jr215U0lZhHgHgVcrHsb7brFKqPQgqLKMokU5zeQYc49za3a6ld8hVb+stOOu0b13UEbWOIACBybUe1o4e2Rd29m9K+fcHzP+sE7tJh1xGE/dC4vFzawuc+3QM11MQWOyatC208ciQyDohMCB88iB/E/3YO+zI40QAgSjb+WEYGq4PIV0Rc7XfOnevLygplp6RkQw5x4OC6fDCks9NL/xYW/tiXT3jyoyU+AuOKa9hJYQ8etPtIBcc+DulpwPe/f+GC6w0E7dq1vAZmW62dAqZt0nRado55BCgDbx0Ya527c3fnuHYSQA6W/Y2tX5RSWkGF+LWJJlH/da7rswj9CZmhbrqbaW6h5Ra3AP29jqDjxD8rWM1APNjd2Xm/M6Nze6e6UuRa8uub/Z0oO2U+IHr02H9gYAc7Gtyoz306+ELSmj8PZhlAyQArALLJTz+NfDBU/XDl4RAJ9f7LXL7JTRtO2teBUli4OnKHeCIyIXz7dkpWVkp2YSgbXoENy3lMo6+v78aNG8PDw+np6dXV1eXl5YnXAN/uv/eiB389R39q7dKltrawj1RwrKiv94KAyfOCHQgy26KiZfd0bwpYNiU5To6IHgMePsR+NTm+IXISgAs/aYMA1i+2YmbJ7WSn2Pw+9y9xSRJpl1ErppgFuMc9zRs/xzl1KzvrTb/VEXSc+CcE6L7Q1dVz/37Pg5zume715/4vl/1907XH/jduqF15T/6kkRb9NOsuAojCbSkpkQnhgcuXI+OAePy+URjDYizy7PaRhjHG1KBF/Re5eJ7zIhn7ICrV1fasK6kBEd5uCSURCeGSCxceZr/8zWzIgiO+b+GDBw/ef//9ixcv9vb2bt68ua6u7vnnn9+xY8eKNFJ3pdO/yckepUfJjrkLEtxmSrBRjNmbNyUiPlLBMY7MRSYDutrarAbIXnuNpKTlOXmieBsE5Ni5vk42Lp4wDAxg2V/asMG1Wm/Zn3TWL/LJ381u3QF1ljOcUU8R+08zrfoSs8uvzyIriSTtUZO2a2tLJM5yVhGDfX3IXvbWUmszyfFrABdm+nt7+76Eide96GA9oA/6wW580bKDkIdFHlFw44aX+6WPhv4Gy/7lpEP/cqg/L/Jj0jqaFJKVFRkHdLS0RMYBMcd2p7DotR9x8OBNBBNFXeWqmixiqcOHjZ+5Zw8FBauaEtrFLu8VER/wwbvvvv0uy8O1a9c+++yzd99999atWyUlJWNjWmEwd9u2bRs2bFh5jY4//bvNuv9ORobvJyTm14nk5k17GCsAK39DRCIRGtDcPOoNBB096l80I8d52GmJfj4CGBhw7H7r+8u8Kv6f8APWO5S76qZbbVUOmrwlyYA+y9NXx7HvzZYAqEPZl+tp9P8LvrjBDeAoRxUoiK10hJWaFZx0mf/TLxhQtRu7V81+HcDSTBec8s/+rzseLf9uFsPAgMf+Ysj6U/WG/ck6wFmM4eAT+z0BsCdLSkQO0L9nXFQUGQe0tNy17C97+eUY1+c5FYX9rQCMM25fdzPGGMXFZjTgyBHT6UUHq4/Ip0IVLLNMyP25d+/elStXXNeVBlRWVnZ3dw8NDUkGVly44hr/keG5/8tZ4q6sDPubvDx1dT+p4NjLtm2bupk1JaIiB4J27PAf0WPdfxsBWHtMGEofewuQg/CqyzpHGmmi8jBh+1nekl1Co4IKxQcZZFgBGGVUHpVuuT5vZrN9sdIJTmi7gQ3xu4ieBnzrSv/rL/ZP1U3zzXU2/nPKY39/zCz29xBNAK5f59Ilw/4dHaUvlx44ldfAhQNcWOaATz3sBxYKwNprQKTKe3GAthcu9NpRIJmmSsaAX9Vx/uuv8l+jv1J582YKSigtNRQgx//AASMAycmrUtRHXd1kkiMTwuo2y3x1eXIoFNLgj3IAjuOkpaWlpKQkRRuzSHwoEDFnJyfHSwAss615QUB/f+ypYH+IDALGmpqsBngy4Ace+yfNpFpPX8z42Fd7yLZfPXXvZiii6HmeTyVVF7+FLXLwdTc0fCrjUaiAGpGxL1ZqoEHKoZ+s7Auib9/u/N4/7fRe/WZUdX0g/G74Xf47Mj846PhayUPtpqvLyAB0vtv5n5EtF2VQv4o5gJ8kOlLs175RW2sjAEDbs7Dpoo0D5J2v6InF/qmpZGSYAaaSEtOMamp09kSVE/t4nI0DJplcboxcUVGxe/duufxdXV3y+pUD2Lp1q/TA/0X7v+I34J3lNgPrsae2aa9q2mZV/BOe46WCdV/27pVCt80fcmREqh3/bbGlihDljRutBugEOulduNBD7nmbDPDVFCzFpwzyDTZKtXRzI5ebzcrScZxULwLwU8UxNKm9slXUgFd5tZBCla6W2g46euiRB6PuOstsEklppKlo+oMKKrazXeOc9dRrPx7iK2J5OZbwf7IAeqGKhLv//nuTDzgyx+85XmXFkRSnF+L9phFiePW1wX+Dby8YBJYbPjtLWRnh8DSchXTY1GLiAPnoHuI6sRUA9Uv7Fhi7KHl0xHu66OPd6ifqP3nkSQPwC1tJB8bHx/Py8gYHBzdt2lRTU3No8cWMGuO7Yu9GGXzbZ/XY9G+drN26OKpd0bhPOJFhv7Iy0unJyVlohzZsJmBFb4uHwkITgKpJSAPgIuRC3gPJwMInkhsXFYDiQRqH2MCGUkojlmRS2VUCRkdzwLD/Rjb6rOJGloM9skSMBanRyv3vpLOX3hFG1HTnmFOhFB9kkSXlU/GrqdZn/Hcq35mA56tANgdbZVmJFQD/vckvFmpAY0LYX0iKfczX8fGqmhT7RUwQl8kdm54GhsDEAZAuC7M1tEInlgD4GOpZuXKGIcRiqKNuD3ummV5ms3GeffZZ8f7o6GhqaqrWM/B70bHfGVsGH9WT3M63LF1PeS6wz7bmLIwId+60LaFt3vaxas1v2zaZndIlnIdcKwNhqkJLnHPPoDEGsW9SIgJlZdafycE+/u+7ik8m3vf3AfkrMvuKw1FGIwUgk8xlTvdd3k3aUSWbFwD7IUFY+d6EI/NxjldZJSTFmPdzoqxZ5muvb1gPHYMuLw7AWGHsJ44Jq386+YyhmI5T8CWWe9Gh1a6ekCXqdl/xo++W0D9/0LtQ4eu2xBSVRejVEFyA3Hnb/ORaHYQhGCQaQiHL/jK/COEboTV7UUT8rcY/QhmQAAFIWG9yfNBpKHEC4KNfOqwJbs4LgLYvQQYB1i06wQpAzwq/Cd0bBYIKEoTbNgLAbF8iOgbnbeYJxbLsn008CLBVNi8Am3mK4bC2SCIKBqLs0MQW+aqrNiV4CVyeFwBtXybAukWbJWr/SST/3cGLLEYS1/cjBoJgH1GwlPsPDmRjLId4EGALVMGs2T71cGRreHLXZSGGhzl16l+fOsUPfkBjIydf4qcxcNjClhd44ZExPpenDgECBAgQIIno+N1YL7sX3vLcs+d4roqqOup4mhEgQIAAAZKe50mYeXaO++/yTzD2PLBzhhkXl6ccAQIECBAg6STR8QZfVQQIECBAgKTGryX7BwgQIECApEIWQxZfbQQIECBAgA18fRAgQIAAAQIBCBAgQIAAjuu6fF0RIECAAEEEECBAgAABAgE4DX8YtoDzqL0J/wfmeBxOAi0Z3lit06bAT8N/hB6w6IP/Dr8R8lboFPHDWV2Liln43/AmOFAMfxA+Wt8FibR9ROAm/At4A0IxVIfjw47An4cPeTJGMU3tG6vTSiC+s0cv62H4u9DG0rgH/wiOQwh+E7yDQQf8Q8zOVPi2dsZ0wcv7rcV34LdBJjjwCvxr6E/EiRfiV+G3RlzIv4GBZV9HGvx/8EtfxwhgH9SxSqiZt0KwyIc675xPJwKUwAEisAP2z9vKo3L+0AeIDS5rCZcAwasg1isKoc7YaiAUIQCRqIPOebtFvAjgJJZkUqBBtnBZ7G6M9UAbK4e0eeqXZQbsHyAQgJV3/2Wr6v7nL4iPIjVggqcJwVtvGxYVgE3zGtCj7QreVEv9+2EbMeBt1hJv8/VEgKRTiyQBuoiCN2EDHhpZPsYYe8CDAQZGGBlnfJrpOebsWijppGeRlU9+CSUppBCJXfPsv4dlYHCQe/fo62N0lKkpu4w6GRnk5FBczPz6Wamwc94WojxCA84yj+lp7t7lwQOGhpicZG6OlBQ2b6aoiIoKc4plYmJi4sqVK52dnYAW9tLqvlrikZhhr03FHx9nZoaNG0lPJztbpfa3eN6CRjELP8+jKIbniIbGlWZ/3cTubgYGzK1Uhc/O4jimzlVLKldBAaWlppgR2A4HrAAsLFU17P+Ennt0wydYqAXuY18VVfjDZ5/R3h55tv2k7OdHDpD6SB2cijqo+x0fqulsZGMaaZlk5pJbRJG2+ISPs8f2cvbDRNZRY5Sz3INPHo2x34AO+HTBzhiqy/vlApxqXDQDMMqjeBnyHm2qp3ycdeF5G72f+k8CjBGBVyA38nD+L4U0+AmWi8ZoAuBDA96MbyXPDjpuc1vb+9zvo2+YYQnAFFMurhWATWzKJruAgi1sUT/czvY8e5cyoQ5rfiGaaGri5k3TR0UcIyN4ApCZSV6eYX+7BPy2bZ77nxc99uict3tgjnzjBq2t3L8vShJ5GwGwa36XlFBdze7d1NezHHz00UenT5++desW6Iq2aY3fV199NVlXu1zcvs21a9y5Q1cX/f08fIgnALbU9vK2b/fJG1E0oPhJd/+tFaV+1YkKZSXNarkq3BMAK+fS3fJyVZy5oampQM489R+ATYuWav9+0zC6v0d3H3cQcsiROyL/I4Ol9fv6dT75hNOnwWAz7Of1AzKd3UdvXtCnfxPRYJdZ38xm9YUSSsopr6ZaXQN/8H92nzgEh4GlBMDTgAULJnoaELK/XX512V9GgXl3PUtowMsLCuBPebzz+hIAHxrwChYxiGCa/eNVEgAoaKEA4T/DKfjlK1d+mtghum+i6RrXbnGrjbYuunrpHWLoIQ8jBUAdT52wkEK18q1sraFmL3v3s3/Dvg1Y9i/BF+T1nz3LpUtcvWqoUDQtPz0cRhBNSwDkMJaViQTFLOn792sl9Zq0tBqiIt3TgIGBznPnXHtkEZNOZEnWdc2Rc3ONH7pzp9k/PMxzz+H4IUDp1E25/9KATz/91HXdI0eOpKWlVVZW7hZTLwuffsr581jl6+igt5exMSsAxlNWqcWSujx9NTjI4cPL5A1PA4qiLoDqrqjjL8a/fNnomYrT1kZnpxEAVWykAOhuqtqlu5WV7NhhpKKuTh88378yWqnS0owG9PTQ/V16vqeKOsIRudgi2ROcWDKwVBOQffyxaVy8YKjfHK2iwndVWozAdwkBTxIALzKWY1RJ5Q527GJXHXX6J9Hh/+z+cUi2vLN0wAVoXLDzIjTGdsGGhWMos8e7Ly/nV95ZLfv7/6kPDXgZYrwUUuHkquUA5EyJd/LzXRi31/IpXGmEv0BMuMGNc5xTf2mmWZ/vcMfFBeOPlmSaLrxhg7rz3OTkxMjIxI3hXv2NWrx8HIULnXT2VvYeqTuSU5fDPvxAPVLutOman3/OlSviffXqPLbJjXJwJsOTg+HBzj6J0TV5cfIra/r6tKR6zTPP5GRlER07oPP+/c4zZzrPnr1y/ryOnE+fOCevxjCJAoCRkXBn5/1b5+4byRkYMLSrL0SyPjA0NNTT09Pa2qqBIEBxwIMHDxQEsCycOcOHHxoNuHhR5ZKOKsYRcYhBwrPhgZGBeyP3RsSPMgnD5KRRhYYGVhDuijr+ukG6gypLc7PulDTVjtLkkptOUTLJc+5cOBweDY8O9KnJ3CAnx7j/7e1qAPUDAw1Hj1oBeBKqqmwcIJMzf5nLYn9r8j+IDsv+0ibD/rt26SDGDhwgJjxDCA4RBdNMjzE2wMBFLsrkG+1kp7yoBzw4xKE97CE+nCAEB7EIECSBjV+cnu7Kc7T4xBu1Owk1LBMi/dOcPsvZ85y/whUwbmh1tXGU9UHemyJmx5EAIOobHjbU1NlJa+v4lcEr7bT3JPUM7Rsarxs/UXeiKKWIJaEDXbggEpQGyBEupliO0ja2iQ0lKg7OBBN99N3l7k1uXuu4ltE9WDOSWTO1s2YOnoEcoqOjLuVM5+SZzq4znZfPydeUSm7dKrlUbRkBEF23tYkXxMMDYXGxPG59J4koLGQJqBJSNeKfm5vbpkMYaczLyMgIhUL4x9WrGpMWi6ngqcPhgzwjJ7GCCtGlBGCSSZW6lVZxXHNHs6nrpCSys20iZB2yv+6dkXDdx3PnTNFAZREpl1KaR56GCo0AMBcmPMyw+Fs39NbgrTH9fWdnaV9fw+how9TUgRMnjMg9GZ4A9PSEb96M1IBUUqPVtGV/bXWrLPXLvHP5xz/Bw1Y4zAK4uBKAUUb76e+kU87Tda530KHP2iNh0LcSH2LCP8JDNYEGBALgwfVIYdx3YiiK7y/2/5APz3BGPktKiukme/YYiamoMMSYlRUpAIZD1RM7OuQCq5uJBIaH976XVPcwvy5cVD0Nx6F86aHZ5mZ1Tf1YZKGlKw9zuJZafbYDu+OMq7urIykE0M7BqcGaj2pqZmuyZrOYhWcgn8XQCmfy8s7U1Z3u7Lw8OmoKsm+fGU2RkonqJQCSLvmsKtH0tLhrxFxJTY08cT8CUFFRUVtbK69fvA/oswZ/quSf+sTDh7bUosvk4fHneUmDGOIFKV8BBeJKyZ4cRnGHTSE29zWb2Ki8HOlY/AKwssM+IHdeKmrDOLWGTDIbaJCru4Md8n9VIt1KFcrFlbANMthFl1pXCy3yNm533G4YmW0IZzTMFubPbOQZSOFJSEmxGiAB0LZtpM3TgKMcZQH6+w31W/Z3XSz16wj6RdzjsVWLaoBETgLQQ494X15LFVUXuKBbqZ1TTDk4IUIS+xjP/lXTAJc4EQiAG/fK7d64v0Z+5Ptb9hczyiE7dIj6ehGcfGc5zosOhhg/uqXFKERZmXFS6+o+27dvCqZB2xNQzRPQ3m6GOES+IAY8znFpwGOrV4pKdrNbHUnxgcRAnWfnmZ3MgbVnoJBHcRPOYOx0Xd0XAwPY/PHBg6Sl4UF0KqqfnDQCJvUa6Ow0nCLC8IGsrKzjx4+npKTs0ngCKnjZgQMH8vPz8QkNOok0pT8PHhw4ceToTx194adeOL7juKjBo2SpnUjNxdV90e0Yk8aqru7dIxwmFFqp7uYQN/r7JWNK4UgDVJWie4mZRufrqded0l3bwAYehTRAA1vVVG9hyxd80TDccODDAxJ1ZmAWTkA60WDv3HwyoFtjaIpTvSCgggoegaV+mWoauQB28EdteoW4qoToGGBAXovKmE32x3wsJ0Y9S2GKzQ8rxo377KU83XBjcFMDJPlh/xg0oIkm9RSN/IhuRJTPPMPzz3P8uOHN6M83GsZXh6quFglqa/0z8eOleQHQVlYT9ckf9eGuLnXmMsrk/4rrDfsvgKhfpr40wog6uboQn8LsvD0LxczjmqV+zLbFcXjxRaamzIUthIjUDm3l5DBw9yHj4yau8QcFAaWlpcoEgI5QkJSUxGJ4CUZgeH4bBgOJzd27koHMUGZNeU1ded3h8sOW/SNvl8pbQ41IRJVzffa6odrBQYaHJVzrhf3t4I9Y9sIF6ZN8f7G/JFxbjXdvZCOLIYccfVtOeRFFknZJXcPDBj7ACoDZPrPExCxPAGQPW1psEKAWoq1CDebxxRd4o/9qQd7gT2I8VUVvz/CMtrqzs8w+5OE97ikakEbqOl/hlZU8e/xMunGjMTVja/oM9nOkrZbX7y6zUQYC4LKSuMtdEY1Ccjvu39DA0aNGA559Fj/YvNn88d69aiGeWnyxtACMjRkNEKNBFlnqKk92i0QWROJzmLPm5dibItj/duSwQTRs2IDjGLP/MeYT32PjWxtL/n0Jws9AI/wkC/GtRwVgRDY+PtzTM9LdPez25VVu31KxpaqialPq4hqrChFdGsETJiclZbJ1NM9LEYniGBGtRqhA5KoRPIVxZjRmKYj9v8E3pOi2dIThw3kB0PbHiQpLTPX1XjLg9uBtbyBI0uLNQ7DsLzO32Rv8yc9P5DiFwiCx/yijffR9l++qi0nOlR3ZwQ65MutolCQt7TGzyS5jkTvjQ/wDFgGS/LcJ//Wq+FTjlS202Ai7rs70lMOHn3D/fgFOYWwmYmBk4VCMjQN+Z9QMsDVwcKyxLJy3QYAnAB/Os387/jAwYARISmRELCMjSrDzWdRdWRD2zn6ECBzxBOAxDRgZGdb/a4eGS5iby922I3dLZV40bvZcL+ujichk8fa7/n6nt9dIr33eVKUuLIyBFu1Ylsn/tLTguqIz+xCwpWCfMOzvYQY+8CcAQmkpXjLgvfciB4JKKY188kffc9BQv7HduxM/Sq1qkVLZWTW3uHWDG9qqx/kRADdmVX8WTsJ/jUsA7AerAVYMVpf9Aw3wUVtJ7krXvtwTRQBttLXSap8qqqkxud9QKP6O0AZTRENyMtZgmOF++u9z33Pz/eISzDGPD+AMdPqfgyXuam/HDBAfKKe4WDzo8znfIfg+kXgeWCgAhRjzMA4jjA2/NjYyMibhkQBUVOSWluZg8TcfP9VDHk4wMckkQmam0af09Lie07961RFr68PICNPTRlykfKLNbdsk+8uTgYcPuXvXVF9rK6ARvJ3slMNr5Sp2nIZZ/MAKgLWRq1cjNeCLpg2W/U1kUl6+cPAnwaihRnlgOf6ifvUydTfpgW7uJjatrtf/i1CML4RCYnm1LjkE2noRgD6o1cnszkTkewMNcBP7LqAHPBDzdtHl4ooNKiqU8hUhxNwgre/RuHTTE6PpfNnZdtaxeogdw62nPoss/OMK4EUA3X6lqQ37CH5zM/aZdCN9VVX+J3oMwg+isL/w91gE6bLiseLiMZAJOZBrtsLNxSdj6+700WcnT8lVV3XFMjRsa+nCdxw7KdpOfJuask+XGopUNrunxwzklZUtQ07u36ezk9lZOfLyZ6uoqqaa+PEpvuA4kU8EtfS3lDglJW5JSU9J8+X9Nv0rXrPUb3NTa/WQShllqp9SSlVRI4yor+m2SrgWVpfL2mHLFtMM8vKorKSoyIu07E51De1cXfYPNMBdi5fByfUWxfTQY2eViWfUEhKB9HQ53WIfaY58ybOcVR5qjDGxntzJcsptLO8f/tlfjuH580YAPvmE9r5NPHfUPvFq6XUB2omCQRghxPIwNm9CrrHFIMdfLu0lLt3ghhxG9j7Pjh3qhDFyxFn45LxmHqRdvFg6c116l7LF8H9/P61X2l2RpSTh4UPpgVhSwuz3+Z++PpGvzVXYHGyCu4ZN7To2IfzDHyoTYC6jqaTpUvGlS8W9vXDMUL8r9lftRYGTkMH3IopUS/nkSwDU3dTpBhjwBGBdZHUOHTLhuJqBjaMsDh60O0UK2rmK7B9ogLtGbwNVixxmeIghQNQgXzM/P1FOiR1vamsTjwxPDv+AH8gzUpgsX1JOkwRAW9kKMsvEBGfPcu6c8f21vTFSzIsHOXaMo0YDSATGYHReAP4F/PNODFzuubgzzIj6Bxm8x70WWi5w4Vz6Ofaf4MgRt77eDGHHgHNwGj76YN/tM2/U91RWmvubkkI4bGjz+nVTIf3yltXP8/JMfasq/GBkhKEhmX2wJ5dcsdsadIr6evdLAQh3d6c2N1/pvVJyu6TlWklzc8mt6uptPgZ/7Cmc1WR/W0VZZMnsgKc63SijLMAo/jHqh/0zl9wROSQrDVg48UI748JF778B/Df0xAnAOOMPeSgDM9aXkWFdwISguhp10cFBpqfFx9MDZgL9da7beNnTgEoqNX66ne0ppBAHdBJNVzp92lCeIoC+gl28etD4OGrix4+TIERGAO4/ARdrEy7vzDI7yaRoVYNyrQWtP1c2VbLtxQ0KTXSFUqnYnsM7Lev8S8Mff+MbfV++d8fEeaEQdg6Ejfa+8x3mmpt1OxTvi1J9pfvGx42p4YAGiTPIkK1Jp7ADQZe7u/9qT89fLLxa8hdLejpKfmdGxuUDB4oPHNikb30kTtxVdnnSSZelkWZ7nGRexgK8hU/0wltLsv+PL8L3v41E4xTCp8Z8IGD/d+CNhArAFFOyaaZtKsja45iN9q/o2Bj53+gQr83MGMYpKKClBb1gp79fzq8sk0wJgMRAAqBguZZa+6IIYsXlyxoFwWrAVN1Bkb6I1ZgYNtHsPwfuc+A+YuFZfkECIPew5yd7/njJz/y85hpUVW2tqdm1b19qrCm4wT/J9RdKX3zx548de66hwYZ3jqe/jiPytPnwCSMI9++bf1dWsiTUaqyBhFmWSiprAbWc9v37L3V3X+rpyfje9y53Xu5r+mH6c0eL9+8p3r/3RFXVepicmkyyNUBxnrVY31PWC6c86o/O/hZrLgBv8QkyHwjY/9vQmNAIYI45F1fmPRdv7ckN8x0I80S8CMVY/DqeCHWKl14yA09lZXY4yNBQZyddXaNDQ4oGZEUUyf1vpbWbbgXOMb9NRQfW4T7/nKmtNXaqm5Gf0lISgctQHyEA7lEWgZM8s7G+OTROxif5P//fPy7cUlheXr4j27wy7TCHJYcsH8dzOFGrV51qVocq+/FhD2X7y80DUEZysXPNhoZ8CYDrMjdntmBbjYPDWiAc5vKdvZfvdF++3eP+i9Pf+M7xX5P8nd+4/3LxgWKZ96q49QM3usp8lyUQCocb//t3//t/58l4lnWDvfdgLzGgJRvOf53YPxUaEz0EZLuubMGj+UuEpu/AJFHwEhZ+BMAbyZU7KvffvvBAAiBXVBpgXzXXPWae9eukc5hhXV0aaTXUsHzI6ZLDOjaGEZvaWk6coKSEBGEL/Bv4hfk+7pzF/Qc8ihBzjeYKHz5kYKCv85/33bx59WJL1m52q/gT7sSLvBhDOuS4tSSx/yJZtpwcOwXCG9XxOx1arcZOTZAM6KZYYw3gTfjaf/v2qzv37Szt2l3a1TX5z85f/lOXi5OL7SRhtZm1XQXT8/ptNOBN71g2fiQEL74Nb4DD04BGYNeyNeAGtADnvzbs70BobXIAdtRH8fskk+Ewk5PGRAqP4BcWf8h4ZgV9j8xM9u0z9uCBqN+anHa7ZIr6dxtt6j/ppBdQUEGF/y4dmdCyNmWfdxb5JQ4FsAVKIAuGMXD+GO5dIlevEJdiJaq3l7t3uXqVz/OHT5/+ZIyxjc7GLLI8AfDPUn8b/jSkRp9Ua83qv67AmP/aDIUkGGHCajUyVhjOkkVtb7eve3O0VTOu3Vdb1VVV1rXP7epyytrM5ADXCMAxjvk/z2poQOS4v5quupuMGHDStqWXIuO4dS8Ay9SAG8YEtdwg67vqApBBhjV14NFRZCMjFBYuETeo9/+4HWZ0oRVOyTqVyH076hgo0/hDcbGxhgbDgurfN25QXi550OD9Pe5d5aodDlpsyliKTwFAAiBTH0woSqwGWAGwqFj4KWKhhJISQ83DwzQ1N+WRJ9nbyU4V3xc3RiCLlYd9YEBb0ZpajWyEEd25RK5PPDnpuf8mbDrqmvm++/btK+2alPegGjQPhjpqTMaqqFrD1fCHGLIP/9j5zzL1uDj4NB9eejqelqyO/OQPN75uz/w4aykA2WTbx/j66BscpL/fEO/27U96JreGmh/jx6aZjihJJ5wCGqOsWPcMfAhzy0zu2eUIjKvuugwN0dRk50b10rt45/AhAN80ApBiBCDRsOyv7XU/PCP2V4air4+bN2luxi7PqbDICoDFWg5rZGXJdGt0iQMM9NOvmyJ9In5ULSOrb+3OHSqprKfeWG09nRM2ghxvarKTA+w0hRChtaq0HnpUP6olQFqu7iYjBmz2LitzfT8xH389OgH7J0IA8sm3E3lucMOb3Tk9TXJyVA2opVZdfdadBYt7kWnik4u54idgBj5m+VBPOXIEXdm1axIAuVFyNhVQxyYAP5oCsnSsAKxRBJAO4376R34+RUXk5RmPsXfE0IccSSzWXAN0WZLnwkIJlCRZdKv4bJLJeJ8FKoJj+IFdz8eamN2yv2wTm9i3zyaQtL3Tf8dqgATgCEdYC6h+rHgPMgjoSuy8MOLG060B65/9Xdda5IsjEzrykwAB2MKWUkrLKVdMOjY+Zl/ucusWu3YtuHsRg44bXJs69tscn4FZjH0SG9fYZGVy8ty0GaWOkm/8Jk/EcyH4fwKwJv2gZGpqS2trSXv77YkJtmzh8OEl+od0yr6Ja2RkMkxYtvID6rFBXnVJCaWl0tXwVLiNNvtKwTrqiBmb4Rgc9TWhz77tRzY+zlHM4I9dVMfGjlYDjL3/vicA2lZQkXjVbKFFAZx915Z9rFndbTObE8CnT6cGOKwTqMPJ7LPOKdZWlv2dtReAJJKqqLIzreROacDh+nW2bjVdW5Tr3T2fIjYFISBKBGDt8zik2N6FZJKJASkQkq2RAPTJaS35vLWktVUacHt0VP6qhtDt9F4n2sCn5M6ag2ONdQKJUkUFlZWmrbS03OLWda5XU11GWQ45xIBkOGaNJeGt8+UN/lhjHlYArD28ccNbM0Cm9pNIsrVrn13jmiJsQKGzVMp7MjXQgPXL/mNjcrtQR52edhzvnXgJ8P0TKwCCqL+GGjkp8uO6u4euXDEdJTtbD8pbxfN7967DNTywCRqwINsGAfMacBED+xIICgt58mwd+8oB3YyZmSyyMsmUEQP2G+NvkGi0GqONLa1b5lq3XGjd8lFbaHY2LNd+505qa+3Ei532Eh+ba9Xba5eBQfGZWmA66awfVFfbl3koYOyb7WuiSSQr9n+e5/0MBPXTr5S+4kh57iqapX6OLi0Ara3e254XDP54cJxIDbg9dttLBhzmcMLIVn3KrrCts0vHxf672V1LrZRyxfnUBeep1wCH9YPOTrq76euzg7G5uYYSHWcF2d9ZLwKgTruHPTa/+h7vXbhAVpao3ziehw6p5N7lRi3NHbgG1+GPY0EFNBjzQN58HDBrjCti/+9/nxs32LaNhgYOHoy6TndLi6RC3diOn9qXasU0D2Cmvb19YmIiMzOzsrKSBOCKx/5mm9KaUt5aXjlWeYkqOYYqukom7RN7zePSYwua377N3btyQaiiWKW2mcP1gpISM1Bo5+5dvHiRi9lki/pd3EMcyiPvyWsQfc7nIkf54+OMP3/o+dCxkB/2n5gQ70cZ/Fm4ZoCnAWfORGaDFaastgY85KG8fumUyvgJn6hzqd0e5KCEai97iRMLeuS6hP9rdlhvUNtS51SAqe4HW7ao6chTTQj7J14ABLXLHnrkaavhfjb32enTYn9VgjxQ9XGRlGRgkcHkcNgubsiNeQGwOAAN8xaJIm8sSGhuviov7ld/1fRf+2rJ3bt1pse7+xdfmBc4NDXpfsgLVuxcSeVyOzDoDP1nzpy5fv366OhoXl7e3r17n3322VAoxKribY/9zVbQ9cv7U8glAVDJxFE5OSQlLfI2CsVhZ8+K5kzyW9CvVHDfk4ETFWvX1YleTSsZHlY7OM1pF1eE3kef/Nwqqh6TAX1rV/mX73+BC9IABXPJe5KTjiW9cOyFDcc2kOZz2pfigCiDP7DoQNBoW1tkMmC587AG/e3zFoWXwikj0kyziqk4wFstWRqwYjdxQY90wXn6RoQc1haTk6YBp6YaP99xTNz94IGhnXPnaG5Wy0lONrFuZSXl5cSCe95//XW9soiPCRMAReJqnRNMzDCzkY2fT37+3nszAwPcu4eyAhUVFBWZCCg9XWwlbRD1O6Oj9PS4nZ3GBTSZgx7uQi40RNgOHkepHQtqbp5tapprarqufizq15lU6XJ3y8p0G8zNcF3pj9l565a6u7hQ/6znmV3s2sGOGEZC5KF++OGHn376aV9fn96vMDQ0lJGRcfTo0UQIwAAexD52tE0E0dTf9OmnJuwZGzM+dEmJqV7XNf/s7JTeoVBMfzA4iHxGhWj6YTnlsJ5Gj9UmFCSqKagXue5Ua+v7vD/AwD3u3eCGdFrEJ4oX284xN8WUyLGXXpVd317hijIHodra5OP3ko51JR+9/2xu6ZKDP9b3jzL4swChUKQG3Jy66QmAiJjlIBf+DZF4AKcWvuNhmmm7AGQnndI55UX0T4m3TneMY9IAXe2qOteu+zRqwNphZoYf/AAF4xrgz8lRbxS1iZGMV2tpB7UwOcEarZUTHPvb8G7K/LD/tkdY/48kTADsQNCzPCslSCMtm+wmmi5fvqcuJ/UrLTXhT1YWaWlWACST6vWqKOf+fdrb70gnHM6bVd0p89z/aNVV0c+J5s2zzVs2NO9OY+zS6CX3gw90FJ1JsZa5DVYA5P7buWDygUdG1IU0enuAAzFE0PL6Ozo6rl279vHHH4OilrsKAvbs2bPqAnCehVAtiY366Zfc3mq9pVJK5kT3BQWmeq3wdXerBcr/MBUgV1rc0UDDPvatL/ffYts202dcl5QUNm8WN4vZW2lVrLOFLXnkKW7zBGCMMRVc5CgJnNK+/YfChw+fOXYs6fjx5NLSJDj2xKDcc/9VaQsGf6Jg61ZPA+TTRWaDl+uJ/y54BYv70V7cKQFQGSWB97kfJiz9s2M+dsFkbRPAqq7Lc0RFgHrohh6YA3Uw09N+4RfkfKn1SgAMtQ0MyCPTfhviHjnCgQPs3UuMOLUc9pexRgJg5wS8zMtZZBVSKGezhZY7I3cuXepQl7Prd4mhVEWua99YoIoyYrCJut1UbuMnRFViN7X4/RTzBDRR3VS9oWlD2qBRGnVIOUp32u7Q1mZOIKcyFDLnmJw0J5ieLqJoNwfFgHbB8RieNJ/9EtPT0xigNICGoLRnbm5uw4YNJBYiBXHBJJPS2s1svvbg2g8eTFy5Iv/CEz4bFBlJPsEucZxKLQ3QTWF9QmN3ipMzMkz0VlYmNRttbb0yqzJdCRGSe+4JwEMezjJLUpIR+9pa9Sr1rbEjR85UVCRDEiQT1TP3nvtsa/Mx+BNlIGikq8sOBFlTsMty8EOEsP1vNKSQoh4kr1/6V0WVAlaFrRJvfSZR+Aj+GYsjwE9Dj9UAWTjcHQ4PhsMY1xD7bivvOeeaGuNiyEuUZWURGyY/mfyE/4rsyQjBNpZE0mqHW/LXXuAF23ZrqGmjrZPOHnoGRwdHBcLqwA6OunQW6eVslounjiS1kMdnV4VdgqduQ7OxquYqT2nUSXQiOU0DEwMPJx5OM6ZTiOizqNHB1dt1JepCCgJiSv9KU7KLioqqq6vl9ff29ioDXFVVpT3+2L8i6mGNxQKVV+wvZlTp9Pkud/t6+oZ7xvqYBlTwYjbXU1RBhb6V/yjxe+LgT3L0L/x+k0x82LHDrltJVZX6jYIs7t+XiIVHR8MmPpgzXSs1m4wy+2dUVuondvkBeRZDcMYKgNl6pP6TkevP2+c+Cy6ZvdIV6aId/PH7mikJgER1drYFimktxoQCC11yHTw6Usz34SUeqk4jTbquhmqnHUgJ1Hp9phx+cqmT+8Ib8A4JgI8Ljv0YL63Sia0AeBowOSnr3TI59IIJMaen5REaLzQnh9JSBbcmOdfQIDGI4VLsdawwkuKcz+OfoZSotEPV4uVeeocYGmMsHCEAtqHLS5WHXkqpBEMfeDLC0GSMZnDRb1/kRSmHfc9BN92DDI4zPs20TqFOruNbhVCYv5vd8WUr6zTuLyWwSeD6+vq9foO6kyyGHPtFrFCJxBGqNI0U2xEhece24HIhLYOUUWYXQlBVxHCFaXDS308y4OSKzA1+8UW2bxdbm9xRdzeDg4yN2QEiEzmGQnak1SSUysrUvSJXH+2FM48LQKO3/ryoP+MSb16GSWzKSq6G/8UhpEm6GAUo1r+7DMVQQrNNCfibTZ7sfcl/X/zvbL+QfmeSmUuuuoMcKZaDRh8n94X/xh+AB98mBiT2gv/bon/34mqe2Hb7KasBU1M9h6b6qqZGRowAzMzgOEYAsrIM6VdWmoazlJfY6P864kdSTNM6HZYPB0caIJtgoo++YYbFUJ4AJJNsG7pIvIACfKJ53u7ioZJK2QgjVmZ0Ok8AdHzrSRE35PKnp6fX1taOj49v3rx5+/btehg05kaevRJ3N4ssBZeKbB7wwD5/ZV8XLAFQwfPIEzc5OLFdYVr0K3wbvhnxZcbKtlQxu2xykp4ehoYMeU9NiXaNAKSkGAHIzqagYNE38d2fjwN+z6MqlXSZH78MsjYsrEyyLBw7Znw51wWG4DKUQLEx18FZQktJ8SmREgA7rBQbTvo/uQ8UhyGEHyTggv0f4KWEnDgFymT7ptg3NTFhBGBiQgJg6D4UUlCKX3rgpP/riB9Jyx/XcYgP8vTlg8uIE90RArAA9hWJrCYKvwTLxhEfu+Kq3rhXLPkmj2Kjdvn7SYo+rd48YdkycRfO4CGEcJvQJZBdJk5ETuS/7gkA7MdDNMIMLVJ/LiuOkP+9sWNdXXAoyq6E1dSULC1Nhn/4KkICBMCHBjisHzTPj/+MEA0BAtwhAg/h8rxNsrKwA0GexZ5WC/AUY8oaTwmSWICwE37oPmQR5LF+cGPe979KgAB+cWne2llxDDyqAQQa8HXE9NMtABo+/piP+53+9d4Qm+YtQAD/eMYYf5UY4LJyyITfaiwGrMPTu+v8gr9hjP+QmLO+Zox/t77umH8BaKX1Ez65xCUceMg83k3szfeBN419dfC6Mf49FuuutjfCr5P5y4X9Rtk6LUckAgQIkMTzRMK+HP8aM/eBH8WC55/nq4YAAQIECATgJAuww9hXHAECBAgQCEBjwP5fTwQIECAQgEIeRSFfAwQIECBAgA18fRAgQIAAAQIBCBAgQIAAjuu6fE0QIECAAAGCCCBAgAABAmxwwL+9CP8Cenkczhrb47gOfwdOrNyRnZWwZ+DvQktMa8CdhN8G3yGR8FHyDfC6KRUXWZ9wlml74C/DVVYUw/Dv4UfAgZ3w5+AyfjAL/xveBAeK4Q/CR8SJhHVFZ40sOn4Rvg2pkAW/A74Hq3oTnAUWRAAJQ5UxKiGN9YJ0qJq3SHTzNOPgvB1gfcJleUgyxsaoHTpAAB9wWEsEApAKlZZt15Mm2UsK8Qh+BT6DMZ5CVEcIwFcFSdae6p4dIECQA6iytv6CEhYIgOxX4QtixzRcIrHIiWD/bNYz3PgFIAgFnnYE7n/sawLfvUtnJwMDTE7OL3D8IhRg0UjsePCAnh4GBzFrA4fNwe06fxkZ5ORQWEhx8XIHyz0UQyXfqWS0BO4nJVFezqFDJB7nztHRsWVmxggAWUW8jodGhFR4B9qhzWzZEykS34fXTj1arkz4BkLjp3AMA27BF3AV9rM0bt682dnZqcUstaJ9SkqKlrQsLS3Vcmb4QB99t7k9zTR47J/O1gYi8CyxYGBg4MGDB9pqfc3JyUmtsO84ji5Pa65lZWXl5+eXlJSkpqYSK9xovfLhQ9ra6O5mZITpaTW/jZmZSYWFSWVl5OX56OXuo60vGoYXDDnvhPqIhhDlALPw8zyKYniOaGhkRTDOeAcdPfQMMxwmPMdcCikZZOSRV0ppAQWsHFTrugNigqEhwwGCt4JuZSWx4tSiKYBJIpFFRGdsXKk74BA/1P7b29vVI9RP1R1c11Vf0LKDBQUF5eXl+pAoAdA9uXCBq1dpb6evj/FxXBdeiLfNSUhu3aK1lXv3zJ2XtEgAtNMKgPq5BCA31y70SlUVO3aoUcRw36vMj9+u4vz9lBTsgr0J1oDPPuOHP6S5uWp6upJDlXxzYdX9GFTCF/Ar0D6vAbshv8Xs5bVGODlftEz7G97CfEflfUos9dvtn+EJkNT2nD9//urVq2pbotqpqSm1Kq1mrBXtd+/effDgQTWvJ7UFht7n/c/5fJLJL6k/jYOv0mAJ//+n7jzAokizd38KUERUGhHMNJKlQR1QEAzj5GfdnHdvjk+8Oeecc8453/vf8E8zOzlgwKwgTZLUKCCSJEuy7s86Q03ZQFNd3Yzs2e9hR+jqrq4633ve857zfeU9AHR2dnZ0dPT09PT39w8NDY2Pj4cFAEIUj10jSvEMTgIVwUDiZc3N0tCAK0pfn4yN8aRJ3C9px46kvWVJB78vB0SHpLndv19vlYsYUGAFAIkUAFZGoD0R5hteEbuxEWSDNLRKa7d0szO8PlHVFFOfKgr081Q2nupaKqW7JA43orVVgkHp6IBhwgPBAA0Awk0G/QsLecI/JDA+AQCDac3a6O+8kvxjo9wBvLK5paWFedHX18c8nZmZefr0aXJyMkxoz549zNbCwkIeSM7UWOcAACeqrZXLl3l+NpPkwMCsb8onZobEaC0t3HPuPFOf3EL6+3cNDe3YOr5ly5OEhKeLiwmzsymTMztGMjIWuPPQdp70zXOUAwE5fNhDAGD4+QI7fmNmcZF/8T4aS74EI17i2nx46i9+kTPxdT0ZWWZfEcm2RpCxFAO6nzwJBIOBxgDPSV76VtvkV37guDnBYDC7qVoDAEKeVEkkA1tra2svX758584dkgC8B0KNb4G2oCo5weTk5Llz5yLA6025eUNufCQf9R0akYo3pOK0VKyg/f9TcWnQ7oGGhgYCEufT3d2Nuw8ODo6NjXFWdgBITU1NT0/fvXs3xCc3N7eoqCgQCBw7diyJlC7GJACvvnRJrl+H3+CHwE/ynJFIAEivStx/LOlAEtAvB4Wf8jvFfSoABBhrxIACRjSwZSPQbuLLum6uDd+/Ile40UEJkur1Su+IjCxsXkhgZj55mkb+Krt52mixFPdJX6VUEgkkBuPaX73KfQASuAMyPMzDuzeJyNbN83A/5j2TdXBQamokNzcuAcCOATu4kvG8A/ZNMGIl/nV1dbC0u3fvMinu37/PtJ2amiIDYLYyEfbt28csgK6RHFRVVREP1jMAcGe4P599tvVKQ7VUl0gJMZ/nU/NgcbiAeDDSbe45b3v3LmFud+e9nJyh/YWSeYpH5gPLPD1ZiHVPnkxNTEwND/c/fNjY82lGV1M+MEqugC9IZaVEowOAnn7xP0Pe8f3N5Jk6CCRfjunHhUL+iYN6GjyVfsXHwZ+CzC8NAP1TYkBjYyj4i1AwFDACRaap4o96GYGs6a4RDL7Z9DA7mOEfLCwkXQgwJIKRyN26cuXKZ599hj+dPXsWHkEM4HH2ZAP8CdgFcEkt33zzzRXVzFtyC1x4NnwdEH+gn0GiHgP1a71+/frt27fxdf6bDEBEoDl4OXx/06ZNeMLs7CyKUIdlTICCggL+48GDB8QJvH8nOaLnGMDH4YoXLsjFi5BP+GyOnPCJL3ExMXEocfPQ5qT6JGa7HAgLAK5SAXP9deD1QH+YPk+CuiAXrspVHgeSsDMBZlCxt2Lbtm0EAIgCYNTV1fWb3b8ZkhCBAWkINPD89GkwgPjLHQBjeoeShVl59IBY4sbU48edXV2dHzSTmIEZhoEigB7s8rEp62/e0D9N1jKc8eKFCxeYp0xJIJ6s9/DhwxB/rj/TFsIEeyM/YAogDZHBv/zyy0yWdQkAoC1zlLvEPDkhp8/JuSqpOiAHuOV7ZA/AKlEa8Z1kAkkETdxXX1+a11/8dYI8FJ9bC5IQAMi/QTcepQ+9hbGSG6ASDbe1DTd+GLqPUkSKCKc+fVpwB9cG7Opo7r6tcPwlBwBGjlRYiUgkRVOhxq9jcBB6/04wSABgsvEWX8B7p7wThLOSRDU2JWcX+/1fyc4ObNnCn/Miyiz4TX19PV711ltv4Tfw6O3btwOvfBDY+v777+NbBw4cYM5DMZY/Iwjo1yHgvg5e5tGQxBrxdRz9xo0bnICQAGVnHzp0CIKDJAXiEABgPYAOihDKFVQI6CdUEK6YBiqMnj59Gs3KcxqK+IMrgv5n5MxJOQmrhd8kSVKCJODhsF0ZEGHcjK725wwDxi8P+mOAPvreJblEGMANKisrcRJVnAEg0jKcp62tDWyCpRItgIIdsoOcYKtErUUgLdfXC5efGDDwJE1ePy0vvYRHKaVg8nODkIGCFy5ACgkKe/fKq6+uhvgcwvDpzw3aZZAqsLzIBh9iRmgMIBMlHQf9mRdQIv7JVCVF5vrDmbj++D+MLSUlBcZGohz/AIA0z9wAvHYtphdK4TE59oq8wvQQbwZ2K9uqq8t/dK3i7ALSXkmJoO2DzWhZy66ksbAA6Yf6kyrIvn0Pr1//qAEywG/xCHzBtQLAZFbw3fvwTj9wCiITWHCo9TbYi/Vx+wYSNQIxVWQtK1Y5qDuYbQaDBxuDp0c0BgSMHsM4b9QZ7e/A/Y2mpoL0YMlbhVkB/0wguzVQcTTy5YAywN1IKiHRpaWlJ0+eREsRy+AXo6Oj+ld+ArUEgDBZwEb/0fJDXwQAr8YHoUTh5ZcuXQLQOYGXXnqJrBbQAW7AdCKTHQDAenCHl5ElEACQjEhiSFwWFxeZFa+++irRIuokAHzp7sa3GIgYfBn4DYKGd1E7ciqw4aFfy/vN0oz6j8pHvb2mpgaWQFmIm4IKJyJccHyD688/4Z7IFOmSTkE4T/IAB4m68IMbCKGf6ru8dlzOnJFTp4Qqnc+n4iAlYOY4pcG7d+5kZwveWlYmVrjfYcO9/kfYPzci+m+x0L9GIhgaLPwMPnSVhEi4HmdOnTrFvNCiF65Ojs4sYAowX5gChAFuBEkwKtBx6prxDwBjY4RpaDu3mYnBnfaO/tTWrlyB/hMAApNXa15ByAFAuKPc4tUuoMmflLpnZxsZGQSJOaP2Yn1dIpkCoCVVVeLaVH5h9NsqEAHgy9J/NPzw0/V6sc4TJxr9/qA1JOjvv3U21P+X+jMzz2292PXhxe2Tt1871oM6GggEA4HsgC/bxzeMjF1oJvBoGER1dTUg6+z5ISTAMpjzgDKvIc1fLv3r6MhZjBn9cahh9XI+DofGfcGaEydOHDlypLiYfMaPry8rRY2TwRCWeDFsFIoEV6IGoA1C4FS08o85NGTQewYPQOSXg0BYmVlmo39cY0A4QBgb9Qm89Pzgr+3SToWfG0GVBVc57MiVuS8U4bngpAKU64nibeNtyMI90uMhAEAvoXfMD2ailnrJ7MU2KgAnT9IbwivkGSlJ7+/3DQ6mZ2auiPvOX255YehvrI6vNToiZ6QtpMLgO0AP9KNwotMyNezpwJVnnhIMIP7IQcxTAobdGUGjRLwDwPw8wM1IkjQaABji1ZCfSfaQ+ooeX0VLIthT1Tl0yKUjg1AmJC8hwZidfTr2/vXuWz40I5ICxKNoVaA73XdmFJePHVvXUrA2FzJSux849R8XtqDF4Kyst/mWfj+jhdH36wPTTxaebBrxf/X/+n/f+UBJIJAbQJET7E9bWcM5Wc2YsXgMKSSUAXKNr4SBLL7F7/krr6EUDL+2Gwxuy+3PA0DavS+kf8R3r4aLozXBH6n6cibKNMEayCY6g6xkgD54hDxFLky2CxUlBSYGaHHYdQ+rFmh/oHfHnJw00BlF0P13mjtJEx3z+KvWy2j1SIlXDFghw91I6I8NyzBNn/3Sj6qgsKLoH2Zcc03UYAyt460DMkDqMC7jaEHisMj5DzIv1x56yZD9VrPf8rmMFoT3M2u/970Jn28qMX16ekX0T97o60sU+k8xInVDoHASU1F4uLDa5oAEt5wMcVPgQ7we8sQkIi0mlYcelZeXxzkAgLg69BHBDPFmPT2ofcSAPW03Kt+Q6moivbb3msvlU9jHpExqmzkhJ1VSt2zeIt+Vvf9LTpwwR0eNhw8n79+9u0hOiEyB07guBX9Ow5/kNGsZYJ1LwfoRDP+sJh9a/nV3O65/Xd75OgvDHlx9cM8M3ssO3ssP9gz2VL5X/WQurfGdb83l7kkOFSQHJDlgZGa+LH/3vNVJVCarGIi5YBn+lGSZPG/oLfp7fRmvF81hjG6b/ps296du49VQoihFwHRQEkQEr8XLiQFucli4D3kxp0eIgv4wW4glIBGVA9cBAAPWfwUhEX5jzs8niLHJ3MSt2SSbvMOy2xgQIRK8eEPTp/ef2bctdZuyBFnFiAGEZFXeOIQDmbZ2AHATBvAvBjdBnY9B9V+WG4rQkyfcqbn09GfDp4i/WTaGmW5Wfp1aGjWRThxtDUBHgBUR/DkvL48kjIYIWckQS9vb20mImUQcwoE0UMQ/AECQGSgv3F0dnptaKflB/I4cmabMw0wPR39DpmRKe86gIRMyYQcAeo12Ze06mHUwtzY39+yWQMDs6jLa2tpbkA8RcJGQ4A5RqkDNodtfRi/QUpjJkeN8NEPcW0Aehx4He56VgIMI/v7g5pJgxZF/Har+Sdr75w//mZ82/u7Gnh4qAyjjhwKWpaSUyuoGs060zI4E8rwp6GMaBpR3QOts9B95yR8m/nirc0Jz8F1oC/o+Hkw1AqbjXsEEmHB0rQnDevgJY+INmQZMm5WE1edOtW8liDZ6DX1huO38IgHYL25tclIXNGk/Ow1rRnq6SbKa4plFRng1H4OQtbR+jc4INHKG12Bl6PB2rOvzNpyYz+dR5yFFJSeT5Qbiv/66ICFbA1DY+EZKhGwialVK/yWtRnZoRi0rc1YkNeRZ6BGzj0wXqYcMLMIs4AW8jESNNJqjOJY6meeW0KQVUzU+h9ybn1PSDy8Alz0S4bY2uokKEjoQrUFsfoah/1252yRNbdKGmDgog+AOVxCXIgBAK3Zn7vZn+r+dlVcsufn5eUxz0LQlFCJoUjchAHgpBWsAoEjL1FwH0+I5Y/+jTW7Lv04BaKsESx8Ge64GQ7Wjhcj87SUl5u7Ar3T+67kn21/5+mxGdnd20PDXhogBmaHp0tCuQCDHKJZVDT0HeQfKhrYDfSaFBH9REp0iO79HJlIhiNc7pf92//wX6G8dZXrCLz4CqoLLgt0iAs1hPcvhKMMwfk/OSwghfpAEKAMiEhAA1uzpvqQxQAyRK87X3BfGMvT/vtj2R9xpfvCc9nayHF0yrySK1cRGdrZZXCxHJX7GB+jqKcoYhAENAExYIIDMOBBAWI92VTSdPCTcrPWdmp7iTiEGyiqGSM1f8RYR4fUcCFWMKoLhe2A7Gg+1PZI5YibTmTJAhG1OGHPisP9o3aAdsqGM7imq6MqVBabE8oUaefmUtraq/bEVr6eW6JiGdMGhagLlSv9XM2QiXkMDKLOJAzmcy+g9AKyYqnHWDOThcWkFlBkeAwB5Db0WRVR64NzPIcYT40md1AExXLUWaenKGRwCkSnwJm27PD//s8eP/8Hwx29l7a7IOpSZmQdi7N2by9/5mtuu9U3SJwD9wTyXgjk33m49uz/5xKjKvx2gv47iYoJcoKenem8T05l2qZu5It9AmuaEzfNaGkj0Nx2a/kUg0JOT0yPCCKzOVdFPcBd8C6YAZYCJ27KJUmllEJg2VtIReNOwAsCOVlv6Z76a4t34CJgO3Q40+CMjoN5Q8oXLSJQG1nMghxMAlP7wtiQxsKdIAcAZA2yrlvsEgLA0Pl0rBe4DAKCv61so5XHbATVIrYZe4XLm5xvd3Y+HMqSa38QuOrQRnN8TNDQ+DNykv479E/juTBw6Z2iXgX/QIkHMwVwrUOzxkCVZ+2Rf/XQ9EjMXlsjKdV7WzzFHFOdWgjs7ZSfMhqSDMBAlIzD37OFkCY0ydGsIfBC+C58FQ1zJ5nTYJ/yWhf7GxtJ/gDI6aGullhUSRPsTFvTT2UScwyIEAPrcaMNjxa/KazT20Am9phzKy3ixdlVwLO8QHwnIJgf4kw74OI2ABACEGjhCVPs94Iv46O4pPIl5yy13UF1jQVedsPLw1q5bQ8hDh6sFsrRzJ/nhr8/OPhqt3TbcmPlgIDNzICMDVCQG5LJMlb/7UkcnuV58Z9QMXN9DKVg1ekgHczTu5V/rzVO7e9F/XJZ/BwB9xyBfOI+y87inpCQUCISoxdw0ZGmWQfZNf5rfH/DnBJpJEOzFw4zfvzpx1m4BBBN68PEw6AZ8n5+I8vwGMIVZK7bSdWrT/6dL3N8kYMRmeKoyHREhGhFsIDISvZH5cqwuFmM7I6U/vDnhTcLs8nMyBRUtqkHJ8sp01R+ePjXNZjfm5Yq5r3XIw78j8nfkxnFR+2rU7b50OOuaYpbNzDxNFrxs7y4EIJY1dkxOttUOwHGnquWpyMsxathBglgzPXUU1ZhfTE/YIAGAi0sCQlSAb+m8QGFhyrlFMkPohmJJFw3frPlQJ+EKQ9WdERpvofsQ6ZkMDNAB33Ill50holeyuEKkgGZhIeBvjHHmUDFQDxWLc47QZrNR9+Jj/cRluUwAYBwIjCn019S4EuQ038JEhDSdWUlThkS0HZbxSr0p2rsRtxrAbatb4m9zMzQGbN48MTdBAEAFii4AsJQMnv6MWi5yfy30N+1bSLsx0E8MuLi/de7Uq0Jn6JEjoAzXbHTT/ODszwZHBjPOTWZ9V1cATgisVBo5KZqSGeAsi8IYXIyoS8GzVilYB+x6nVb/zrkt/15zQL8pUinCOQUOHAicZ60WqP5z3RsIW/q/QMrj4PG/eZwY4GcnH+vA+ogBAOhHbIHpM2/pv6S/nrYz+j0QhSB0zGpmO3I8QScjJ+MD+UDp//Cxg6Loz8+Ybcwy+I6IUGOEvyjTidZAJaU/vAnozxvqO2sAiGCH5TDlpcfm4+mr09P/r29afuXvyPdJm8/8QW358QIrYC8NbnV1wp4poD/4xYImGtdIVBGACABM0JHe3k9bvv/00g8Sk4Ra81nPG/C2WyGNTwIxAwGcC8YIWyISkA3TV09UgEqjCIH+/InYQBBySWih8/R0UocbM8bqOuvo0+U6E1khBPZCMDIt3IYuXtaC0fqJZ9A+ywI6idqYtegBTJSnrG2qre2Q63+YWQ3UoGXBAiNXWTdWDDCETjnQX8fe4jGFfoZLejNjGTNR8MElk4jG7dCXsYSTA9XiXATOx9+IMBbiTs0Bt89GtIu/ECvhJhl7yVnA8eeajuulHoi5uv36XNUbdIbSG2TSmqmBQ9oeJT8aTBvMOhFW1lrAQ7SCpC2q+LonFYgAcGtdA4CWf13qP+9YCP5QRHFef+I8sp3/DMlfsfXoEoazVpxZSg+Q+HWs9RAryqeQBeQXujA//vhj6APeQyTAddDiWXLC6jBew01R9L+XPSsVZwX0p0hLDhKz8UEIx0pVtCahFMaDcSCH8yYEAN4TczMBAmaAln94zIx0Tsv/mxZoPy20nc9igPclzfS4ccmW0P/cORrYkTLIuZg7NLuQ4dO6MHbw4K/UvfMrn17/K7GUgq8wpkiphe06mCzwZ+YGkwG9iVQb+s8nfvwxpJrfA6OEfUiVuDYAnWofp0LzRfNo83sn3qPEgiptbwXB1UYwHPrNoZo9NUeMI2wNcEJOeG4QTz3SWtrfMjTUPjrKGu82vghuRngHDVZr8FuQBZPzM0THJlnRNn2Z+k+jNIL7Sv/T84cV+okBLlsUVVWbtUzIDi2LXADA7Fdi3BfeAVMVNJ57AcEj+BwGWAt1YkTntiQ1DKSGQq0miG2UfFl2SPm3sqzsW+Xl36qqylb01wBA7mAM0pVcmknYYIQRQIZ9AtFlnloKZuwduNOvZQAtBa9b+ZfTdxMAitB8lqA/37l7SNOPVY9ettlPkwRKmHr2c2YYkUMNBJmOe0ATCcXeDRRXQ09E+YH704nfk97zufizvRnp31yS/kVEsZvqMbxDU9RoDbmGT+Sn033FkzkPZ+bwnpibWUsWyAD0nTUFwTE89fwDvNBubXPjjeH+oD8xAGi2PxPuAxCr93MR5YP3xbP99gE51SosfKOTmozZmT/Rmwvl5yJQf/jgAzovCAP4YVQBAInsZXl5W8e2PR17Cu4X9Pyenv/15/8X9xqf0QCA0Py1P/u1Uz87lbsvt+RQyUtFL2WmeGk6IswgANxJuhM8Hmwba6v678H5U8Utl4Kic1tjABH0eaNVhGIhHaTK/b+9agD4rfJlGZVLcF8DQErOgEI/g5nv3uwePF1tZ7fhRTZ9GeZ8h3gHAM7JNBls+oFzMKLq/GBqkpySOjI1UlKIJnqYjBqjqMyd0jmSPnKm8Iyf/S6cDQCGAP3EgNHtg0A/VMaJNni4DoEv6IjS7HW5ui0EgwAQ9+5PO9UQF/amzf2X34ySZf9lW8FzCXGprP1hSOfnz59n6S8lPvt5AMgpugUQXVg2/V9ckv5RM1CEKRpT90NqJADQI0ShWHeQ3uT6+j+1jMPtHFZNPJkeq41MvKe+ebQrdgxHt763ttaeHu42VXRIDjcgn7orgOtAf4dVFslkg4yKjKCFiUcL7JYT5SylAR+Xb4dF2gH/APpJBZBeKUxDbqBSTCH35asENv5qaPC3tnaGQjQGfLJ3LzIdd5yrTaAl8frWz+5l75nwHxjLy5+QrinySoq3UT0UhRopoMl+c9r9kXUs6/T583I42fzjZut3Gp0xwNi/33webd+Rd9CiwaHvWKmCvIgAYJ8Sq6YvG58rP3LggUI/MSDaYpm5ZCpvqrkRQtXC3iF+AaC/H3/Cgchh90g5TQI+0yfRGPGDkchIFIZt4Dv7jLOdLNklvRzsAQajc65IBP15TVbWDK4bRv/RD1T8FxRD6rcMzJMKVN9dP60BgPDDu8VunJyu/g31sbWk+/4fuH9JPDYx2eYOOossExHdTscmZTb6Dx3dr7o/FeDLFy8i+KL8EjPQ2XEy+CCBRKMIC9Zd7s4fhviLSyaeTI8F9O135otEpa0YEeb319xvZy1gLLNE6+xAIUx81Y+tgPtQW9PI7cmO8yb8TAP9V6v1IzyT63FmpAKor2iwLgMA6Yzu/Y4LkNH4ExJICr9dVUVxyM4AyBrfffCACvCdW7eIdiYQQeg7exbty/1yM7plaP2g+Hct8dri6dO9lZUdZE6BObPYFBH2e3LGAJuczZgzU8YU3Si/Lr/+HVQJa7zA5h/muco+/Jzd2312SfeHA0RrSmWcbMYNlOvLMOc7eA4AvxK2K6DcE2p26JqJLS3lc0dLTehNPmpGtNU6hpmQwEk6+Rl3kUXgAP3BnQeBj7DandJ/hqJ/mPfyB7x6dMJqIdYKWJSmpWAGa3Sb7X7QkpJ4qv9zOfoRLuXRGnkx5gRNG/3bDs6w0T/oz5q9Omv7aPZdYNcR7U7jEPptWINOCAEOQOHXXnst1V34TF6y2SUDU7w924gDbdmUSgbvSSrjHf01CYjatMIl+CQnoWWuSGibBnzH4/n7Ebq9mRQ+n6bMzF8EWEiJyy1Muf80F7H3OxXt4vx8tqOhIERxiGAP8dcisG4H/awsfOUKz5YwqOcTwiFhfHfKOS4uIvVSbZghDMjJU7oHXB5y1s5RU6z/GWYbGYwjBmgtFcRgAB18mnaC4Lxfvn0kanMDoL/xDP1HM26cq0lT9C8t9fJkSHQbXYqvYo6aG+FITd9BLU4BQDuB6qequ7r2/OPiouwiSj0vyUsSpalEs7Bpk9ZriQHK/9hGHCLAYN4iKIc916b3am9/VT8L6o4sLRVxCuwMaMeEMh2vCx/s9vzm7puq2BAA4rn9Qxj93/DWYDR8Lv1vC9rSf6fV88f+tHQNsQfD0aNH6drUAEDnKFGBvTxVDmInH3FhduEX4NbWN4rS3nYz51i79Y33xFwGIcxYc9uG3xT5b66anLXIRRiSXds4DyGYRZZID0lM9ofWgFjNidFb9fx0uLoCtKk2NenzP3b5fOzNp7tRhu2xQTxgiwJ4gPZ0QQv41kxDMgB90J4R8euT9wclqN0fQqoE8a+qAuLxjDzZKXqsdXQb7+yIAXwEgAApZN8hPpxGcJDhhdj/UwATOgimWSuzWPCdc0feq64u51JRxPS234dWfeExWhDGlNlENl6jLwb3ORxjbnoOAIOyzHa2TX83UJj1s8yc/J1l/T7f6e3RVvt1JwmGtmsi3cAS7I5sfurOBM7yHbWBdl9799/s7vvzfZVb9A2cG+bpcyQTpSQXDHcW2j2Wgh8trQomsNCmGoMhuWoysX9ws7P8u/HtvnHf7vpfWJL+mevt778P0NP0TXsoWAAiAAd4GwuvSNq4a2+//bZuxEYxwE1Z2GcZ7ZsQSbIHAgn/weESpeH6HGgvftF+UE7AO/ovjwG/A9FhzeYNLXKJTmISHIbnz459eyElkzqUIqoG69J7cV0q2nwrvaHQ/xVvDYkg2zfRDkQqwKPc5ltbaeekMcnNk1aZaez4gpRPXEIp50BKJrb6SoMW9N8OA/eIRgZmmFYM6N3d22/2PzQe5u6xE60XYD+VBX5oP9JY0tgf2pFc5hs45puoyOCa53jb72Prktmdctia/RS8EmMuaJVeD/ccAL6//OEk35bxhl9rvrD7g86yTvg6SS5JTrTNegxokb3zH/+yF53zNyYwnkRzuq4+vT90/3rf9YbdDQNpA3/23LmG+U+ZY0wwEgncGHxCeKTd4t7WUpQ2ipPiUJ+9l4KXdJtYA4C+ibP8u+FNd2Gy0X/wyF5t+uQn/A6JnyUC+CJ7NoAINs0HcFFg6CNiTzdWonP7CAlu8NdejcyiM9aa6v4nWoeIdkc5jqUorRVp3hP/WbMUYUSLrylrirCi2qZz50SJ0WKPAZwTA7MZtDsxCyWLPEA7BWgK4KbLKkYMQAUiHeSycwe13sD0JsJLRCMDIIen1wBMEMR9GlUZDkNntpMA7N7t2/oVeBRG15n+UFZoNGGY5J+ZytEvxJLkB99RCJb5toW2f3az9v7Y2AEQSpU3T4nJdst0Bo1bxuxzs6SGV+pWvjssiyUA/CAM/fk3Wny6pD8eeGyMf8A5QrdNdJJodp3mcuAszPuhXl0TZvAeglBpZmQZzxad3+m6A4gAKExpJvPDRw/v9t29+qevHk87Xu579IFFqalLkWVC9ZqbrYeJtefKuQrKtmF6W6ylYOgPKRxkJMbyb7ej/LthzVhhr//WA1NSUaP0HwpJjxAUm/BMvg/C7nt+wlG6100jgHKIvMtl6EAG7wO4oPsRV4guNJXTYqQVaffGUQQeDtczIQvhbb2jv9d6gAK+Bi8YCqGAEe0OPHHeg1hXxjAwe8mMC9MMHTfWhzCDJpEZJS+wZTftyoAjRgYHJF8aeOCByAGybR9vsSJcEgM0AOjPe5A+w2gxjHvG044z7F/CXkcm8xZAekH2/STIsfV1PjM/mzamD7bf4IubwDfn9NprK5YmjIi3Trd/wEREM2PmnUQ0XsDLMBFhhuq6yFgCgJM98Q/9uYtGHWA6Y2brMJMN/Obz+Kri1kjVaEiAUfTfSOnrmyHLpGeMOcOic1aQs4Cwd6yXh3sQyoAYitrDI8NdfV1Vf7mqMquyfN+tu3dyttdCMBGCUFpBV6kfKR07e5w2OPJNz1vSh5eC5/zNdj9oIBDr3p/zzvLvi4f4yMY6jM8DQOpde8Mfsmvn6kQt0oQ9dcveM05XYPFKl837MEfd7VY3n9A93UBw90/14hCUBzYB1QDA4bwh2xV4vQzeYwAAqyNcD4pg9SJH1w39nVgs0bXJaS7DMJKStKXEbQ+iHquHRzTUKGQTRqTsxBSsgP+J2GHAMG7+E8NoNtJ7ftj5la88IvMnOYk1fHu3VxQxq2WUSEYNiKjWduOGQTzT3TNZCBKlMZU0MyaLBdl1yyzYfQRSr/tfkUZrxsaxsLH4PxRe90ln4NzKLCJHs+Ucib40SNr4Pn93dwsLU1DwaZKGObGCfMgYwuOa+5oB/fYt7alm6r7ZfW/JWywxr86vzi2bnx0b+6R5562PR5INYzotbRLFn2ZquD89A3iBw8zYVCBKwbEHAI0BlH9/WfSfB/LApv/z9oY/kHFH274uLUmwbMWeTu3FxMSdIStrIREWjwezoT/uC3mhwOCmh4GN5NiHgNoj8UNrkmQPvKdmAPEzV26OJgrGErk4cZ5RoBXhSCh0n4RLYrV+MqmISo6KrZp/qy7hLjjzfRizU8+M6jricoT1qLp3rAZ+LX6s2ZVJaQIkIWLaCQeXa7VrRQz4PAB0mfJfpel33mgy9h858kdLSy+WlJzZv39XnKK9d3KAOsIzRLnlOvqvX9cAwPDQUaKZMeksxS19NgAThNqbrGTspmVLr0QODtQnacc/AAD5OogCWlyKaopggCEkjXl/71ZLayuh22C3NzyNbafQfNKN9CIpGpXRxSeLcBWqpvyeDUkO5B6Q0wvMLbR+hC6YAhcXBUG3ujVJLOJhbGSoYL3vUX1fLKVgkhTrcMq/GlQ2fvkX8mKj/6Oy3WI1ffLT+YgYDM4+bxnNBmGL19W0/9L9cjA4DuUE/BvfpbmIdlJoDu9ALwBVx8hOTMbAU8D0WWBEAqRPniLJEwV0Q+n1sciNLaArGEsuypycpSGU/1t14dWEhf43iFq8WQxdQLzJG6s/BUub5DgNjOSbM3GHC6pfc3vAZXilPkGaOC0rGeRUNwSFrsIF+P5uIg3hhZ3FfOKj+DeBZsh5hkLUc+CIK8aAQv7XLmadKRflo2Kzt69j/1uXZo8aw2XGsJxhWVKM0B97DKCCUWlWThjPAsBHEx9NEgNAfx0Q32hMHwBAOoskzqJLElz6L4gHK84I2A95MNqp7qmuGziuwzOB24XFQRQJAQvtLWNIlEZ+Ak8Dx/s6O4PBJi4LOwzW1Jgiggp00Dz4wHhADkUqgH/ohrT2w4BIHUh1IBsEAIKBGdmbvSYBCtl9SxoOAcBz9ydv9ctC/230b9k/IRVvKP136sVoMkAz3TUwEa0HhEmQ6P4AAeKj1qDEtYHaYAdvSB8nGQC9pKQRMEpwBzrPTNBNKJ0t/+QKnAZTgl2Mrl27xgQgZtCLwt4VNKeiIMkLMtU4YSZArjbSkOQCu+FxA8J75Zpc75KbY9IWw0KwW1RgIZ+rPFywrY0gSZMctwdEEa2WutTW+A68GBwJhQAg1v3BK5EmwKDlGzqRhIFTxGNuDQjEPOVwN+uy9speHmLKBEF7RMujeZQryIH8DGOTBBnaUgtpBgVV6669XzXzgwu5/+8/XTP+lGH4cA7jjJxh97oXvh9cQAKaAQBin/R9Is4YwHBtTDQSWfyfi4+Ta2bMtGJ7LmcMgCdx8TUJRgjlNQRplmRybLwDwN8WWrX4VgzKHdrPo84UtUHQQiG4yZ33B3btGuay8Jik8nJutJASHjJXbY2mriKMNTL0vZaqesz6+SPPCwLqQ45VwdF8Te6+ij+p3f1+qdz47f+6fdXnAWBrvS39MwmdLAxJEWGR1BK6TbKJX0I0gFqFAAgILB4ajgijj7AQ10a/M23mIL5mFfg6O9NRzoJUKu6QJRB+yCrIEYEYSkTEBv4KLQL6ORmAiYnBgySJAfo0sRdl+lxqfIilSybgSys9lwi2FAhoumzofhH8+erVgrq6vKPp8kdF/qLnuD0uvi6ehiEJSc4GSkV/lnHRyM85aMc+0Ox+SxqwGFlVGzofdnVx07lNKDxAEveXkg8hWTeDwxNAH/YKBaf4phA1QTbks1wYnA9er3uOjnC50tO5SswgzpZACr8E4QwIH+GUi9bWBtel889vmmdPs9I2+c+IlBdf1eqBxgB0GHkh5hCuWCOlOyUzbrTcsNGfgnCUMHlY55Q+7Z0pwDWHe5EW6AJMTbwIvXAgbhAcCI2orKyMlJpEPH4BwPhiva4O6toAsQ7xYNxaxKzBwenHj69e/TQ5ecZq5TaIAVGeNmcD0hpEItyVE7WhX3/GWgq2+0HxaQ+rfxec5d+Na8w9m/7P2crPsmQfRZ6cVFvClWvoQwVwRBy0wTJcEIAgCY2Wg9MOxMIC/BvHJYGot4yUlk/kT7g7EK8BACUavwd3ECXQPTVZZuNScJ+2VGKAvEgjIwX6AEBoN5HM2hgafRMIA7yYLIbBf5PFsoDl4O3bVYf+4EzVr0iVeLbUf7d36wc7t9bW8rZ8JOm1gqagqPBP+DIxABWorIyBEs3Jud+OALenDZQ5xhsSlbnyJGpkXSRkCkb8hjhNAOaX7A6yyOytrsZ5CEUuV+SQ4h+RIyzpAjHZRGGcrj5yI65PMIj6JLwhzVTUBhDTSKc6OhKbm8tmisrN8sqWypOSeNRqb73SecUZA9CUXmwMSDQTK40vigGtziTgxIloWibTcWwyYwgWrTFkxvoEPZIw8gPmHf8kFSbxYrJwL5QAIZwyQ2PtbQ1H/7AAYH8fzwat5p1mZgYWFmprL8/OTo2PE+YNzpzchaUeLjaWNjo7mVZMJWBIvvY1gMLGfYaqwDGWgm8ol/cWAKD/G1//IZmz0X+gNJPZq2M1SoL/Ab64IyQd5yMtoPALK0GQoRKFC+KyAU+Vc1RL0B9qCd8nfsDuec+gZfg6/UV2ALD3edZFZ+S8iEh8LmkEUUpesAGzkGboDcBFf+oD+fBDwItzJWPGswE4HD2vs6OqqqOm5jevVKVuzdk67bl1rXzLlpFDWz6+I2+/ja8BmsQb8JrJBe4zN/gp3A4aUYjrTLqoLDeXA4FgggqxpK21lTIA4ZYbRCeYbgbHrad4g/pHaGGa8CnEgKhgjg0FEJbpCIJ7sSS4E47PxOZyUUhAC+LTuWIjI0n9/bnzh4rkdTSWo3K0oriiQBZ1fQM/67rqnDEAZvpiYwBB6IuCsDnR54wB0bQ449t4Oy0VUCsVgki1ycDQggjA/IlJx8UnJED88X8mIJtxScyWtGIhhSitA0mEEWPnLY7C3YVoDGzZ8uGNm0NDffgqfUFweYpAJAmkg3yIrf2aJvECx4YNwEt0mS0KJ06e+MYbZd3dxxwBID0+peDB+j5V863ClNvyr3XI/qHkjVX+Pb6G9N8sqSCFov9q6i28D4qBUIMaoNDM/Mc7QW1SgTfffBP2gRSDO4onI6vgTYjkEH94jVaGSS/QfBAfKAzg9KQCYBAMCJWJD0WGQnSC8uS547ZrTb6t+pIYDK0MAMRXyZPxYUoAQ2MXL5JAoc/gzZmbZgoKZo9YRZa8k6l3A6mpRup8pBrApgh/SClJSZlISZk7LXBn+D5ArKAJ8hB/EKTYiRo+zgkx3ZhUURrH6pNk8H/QaJ5Hh6L5MFFnZ5mQlIj4UihFZHDMW16gnyVRhmEgmywZ9YZ6AAuDe6eRg0ZmpEMfA47WnCEH91p0ijUBPMOHdIYXS7HYAYAzvPx02pBLdgwAa11dyfj/jbkzRxQ4aBzUGABgfjT20awzBnC5XBtzCvQnLQb3cXUSX2YE3AsyBGFirjElEYUgZ+g/xADmZjwCgLEyW6T8SxFYtmy3K8DeDe85exb3IpBM79p1ubEx9DZ9QRPop4R/ZpHPp08EIkbQg0ifCZOK+AMbYAUCzAZV0Oicyp8rKio0SkOho8eOHU1JORz/UrAOJkA03Z8brvz7fVluQQla6J96U76pHTnAUmSYwOFeffVVNBkAF3TW7aABZeCY30BDQGSJwfB1Crm8lf1cYkQGNB/kZupdBADyAD6O+UDyQQZA3kAS4H7Xwx9EFFT07zEbJA+n1dYP+4HAnPwYhIYaJ27BM/0RQYdytrO25k1508Mppyz9YUfVjq1JlcwWtDD4BxSJqQIEM610Tx4+DMWVYOD9ywBYxFe+CeIM/Au5yQ4AiP6EB3xGnzbjNfZXSRUFYfZ+YP70Sz+Nq1QcNQBANvVRw6wW4gWsQ3LmpNp1ynfkfC6JGAxp0BhA5HB587/n0WlSIjsMtQ3QH8mEMzHvm3J9XnZc12JAVCtMaWxDdoMVkYEB/VB+uL8GACYCUw9K5L3w674LiCUbOrQBlNsf++aTgmhLroeH+f29bQW9XV07Pr6/ZyvawmJaGt4VFgDwPQIAOXTWwD5aFLLxSwhIN32EZWWhlPRiiY8p+tOBGuoOTSmmM4WWlYLTlnXDaQDY1j2z8QMAa/puytab8o2bIrP2Rh0u9tLA4eDp6Dykn/YDYfR5AArEsRsEv9wybS4izDgDAHIQfq+V4XjEQbWt+sd4mT4Ckp9kj3gs3TG4Mf5MkQCQpMaJY2dJyaQxSc4V7Smn2L81hMa5PRXlzCCQWnQ3ZuYoM4uLo08B4yRivC8qXrNTG6k3X4ZJyGzUAAALJPbwQbwmNqOHksHmbloSmLW8kgDAJjHwfTJpNCLBzHBdkgvNWWk2cFHE0CEDZ8QgeKx587/n0WlS3DgMBWF+UucwOe8gV5JhEgbIzKLrLrMMjk/7A2k304HMWyVTpp69f+L6BgD28GeA/eAxg0xT4mFkjjAlBEeyZdBzvLd3fGCgDaIxOA7k85Bvg++akLCgK1MAqcJ0OZWp/RZgLLwjdOBAt0hIJF4BgHUsLEeAlfjmfXPdczD6FUvB31+5+zN988I3WdXMO2yg8u/zvPwJ4o/sA/oZD8WL7bdM1tkyLZP4WZmHv3g1XJWF7gzEGBgzIAxa4sI2hrHS5ZysCQTfDJ+G/GrF9iMGsxLxRwMAHBOAjqPB+ZinjPU0UiKGRGWkIAw1RwxgnCGtW/1KYl8XzP0diHwTVsbMk3JSbLtOAFga5RKtxbTDT+wBgEQGBYsCy0Pdy406V7wMtoL4EAgg65BmwvAJ6bgyAYA1R8R26BPezOzhlTAOnET7lPXG94O91hiAn0p8jOXHzM9SKV0ILQjhpbtv7QBA8hqqku4qYiTpqq5f35h2c2k0/X/2zjOuqXTb/98tVQIiIFEIwtBU0BksyH/G+Yin934O8++99zf/3st9dc+r++b23u89vdw+fYQpeKyoY4NANIAh5BAgkFD2/V122CcaxBDAwjzfWbMNO/t5kuDH9XvWWjvPYtMxyBXLHgX6Z6LA+YONnaYBRY/rfVjpWZR7NSCrnM1jEwA1Y1eeTq7t2vDL9Pdz+TKlpdTVablBeTnrR/5dsbFMsUUkokhTAkC6AJSWpi9tBsEJAnazYeityAiBf8kCsJdUPkEKQ+D/BH4I84RzJUUAth4Gw+K9GvAJniTG79UA79MjADXUNNHUSmuQ4JWzZykqkptWlC4BoLGRj32MjUITao0vy5jBZQ04DPlsNP5ledn7kGtkTzgjKd5/FsOjx2bzMSzA6SdTAIQ/RQM+yxOIZWOzEnL9r/LqaU6f5ez1kusTjfXJL+996Ut0dbl7ntiPY0OOF+GL8CVo3vA9ofI09bKVsAJR+B58d+m48Ij8wzeWrAS64FMYDAbDZkYAoprqk5wspLCKqtbJ1tD5UIzY4qkEtv0kyKoTBDSz0cylLPCfXTVEWOCR0YXsUWEwGIwAiDrqlJ1ppDFAIEx4hhkbmyeAO8uJoBBUPuKY+7kl+59sZQwGgxEA4cFzhCPOd7hXEQCbrYXBYDAYAXAppljGVsFgMBgM2/jgYDAYDAYjAAaDwWDIxSZDDAaDwWAiAIPBYDAYAbAet63CJPwqfCq7eTIZ8+mlF5jkoSzA78NXV3659b6P1cf/BfwrqMrw6lvw09Cx2kUrzlMN/xpezuqtr8o34SXIgb8J3yYD3oP/CM9k/OqF8HfhBxgMRgAMW26PgOqkZUb5sqViZf0q62cxy9+WwWAwAmDwyTJ3zWVQDhWQv5kyk6m+2EkzGAybKgAG60l8YYt1sxOqwQeVWQQBmeFdfomdbCyLj14ADAbzRTD1Zb148eKdO3cANahUJ271ZmIjGGd8lFEdo0RnmZ1n3sLKI6+IolJKnW2oCylkjXzjgUWAP035qLkNNLTRth6nfP48AwPMz+PCp6AEhy4E75DOAvQuT23VUbeHPcCtW9y+rYYLJBLk51Nejnpt1dbauCwu6iKGh3UR8bjT/cNp/7T6FqrfIYXqS1TfxAchnDbWxzi2gx0P+IDlt26VLy6Ww0hNjfrLprTATmGe+Xd59y53wfH+OjbDIZb4chYi+IekYzNv851FXHLgK7h0YTAYNl4A3nrrre7u7ps3bwLqP6nOZB//+Mdz5H3WQT/9t7g1xNAww2HCEoAZZlwB8OCRY5IA+PCpvWIzzbvYtS4BSNOAfPJPcUrT6iXICgliby+vv87cXIr3536P9I3VdoZlG9vUOehD4c+fPZt/+bIlOQmHkwLg9dLczLFjdHQgGBriwgWuXSMQIBJhdjbZ/2/PHhobefZZXcoD+MP7e0i9S/UrnE92wZQWnuQkaYRC+oDlr71WPj9fAXobUhm9pZWbDL/GazqC4/0/plcBMheAG9y4w50o0UUWt7O94hsVPnyS/7TWpLOL/GAbWORadAFGAAyGTRSAGzduaPkvDXjnnXcAtaLX8l9tYNWNnqzQOvEiF69w5QY3/PjvcCdEaIIJVwDcdqC72V1Djdbp+9l/kIOHOSxtWJ8AiCj8mdP1RQJTT33WAnD1KleucOYM16+73n9155uuAe812831wfpXuyd6e73nzqGpRketeFx9n/H5aGsjFiMvjyMlNzl9GglOXx9SiVDIEYBkA/KWFp2RbmiJ/vBfSEXFkgYUU/GdnPDkl/myNHieeckA9xIMSuTKL18uv3ixvLZWg3RmZQHQDAECL/NyZBdUf1mXpnYK+j1WQ33A3+O9S1waZDBCRAKg+M/7DW8NNbXUSp9kHjzAEEMhQhFGPFws4mvSCQwGw6YKgNb7agKutvRKBAGKA0ZGRtSwm6y4zvVees9x7hKXrnFtkEEgPz+/vLzc6/Hm5ubatp1IJKLR6K3xWwoRCilsokkPbnM7RKiDjvRQIOt3Is8iAdBRL8Ea6e+XAMgc778at1d9sjpUHeuOvfnmdE9PZcHZpiN4CyiYZXYkPvJ+//tvTkTz8uSxQzV573rfeiuvu/tA/rWaQ5SUOM3TFvz+SP+liDJHytORn09ZGQcOkMZCWmNfmdz0QvjSCCOOyeGuJABF0oB/8A/Kf/u3S4LBSZ2Jx5E4pSLx1nBpwBhjVD+nadHkmREn3k33m7x5hjP6G9EMkqJiip0OdHXU6W/HSZFZWH78ffT106+VwS52lVPOClxK/yErnk19ZDB8QAWgsLDQ4/HIQfv9fpAzqtCPOsnaUYqgm+53eEca0EcfsHfv3vr6ejUZ17TFxcV5eXkSAHW+lwCEQqFAIHDr1q2+SJ90YpRRLRUVJShZ4cXL+vha19e++cffvDp91REAHXPIIWNsW2v/pABA0ec+99kf/vAbZMV07/TwO9Pd3Z89dO5TinLkmLWwjRHTR9bjN8JvXL5MY+OVlvkLpb29JxquHTlCfT07dyIBCIXQG3j7bc6di6BIxOtFy+X9+7EsVkc+2nHTly45vlt2nwCEw/L+0gCKi8tFzRsVwf80qet0Rm8gFXcGhDOtjpnRR99ZzvbQc5rTcvTHOa6PP820ZnuFVyqo0N+O4gBH9RU7at0wyugn+aTO6w0/NNqZgR+SBccxAmAwAiBqa2sPHDigVb8cNKDMT2tr6zNyNGvkJjd76NFaTxrgx68m90eOHDl48KCKCpKBysrKkpISVwAUdoyOjkpyrl+/funSpQsXLmig3OICC7nkfoSPlFDCOoi1xn7Nf/wf9vYqEyXvL3uWZ9eU/HFsaIhfbG/9RryFbIm9F/uL3m+d/JkPPX/y+SMcabQaHQ8oscwnP0Kk1z8eCPQHJ6+3e/s6OzlxgoMHJcNIALTu372b+XkpgR4Po5BpcFCPpKusTmWlowGKGIYjw04EkLb8dyIAypcJBv06ky4ActaO6VLH+2fY1HOe+X76FQhe4EIrrZL2AxzQ8n+SSQV8fvwyXaDgoIwyIEJEz77Ii/pF6Xp9gExSbjPwg7V6f1kK/w+D4YMqAKWlpS+88IKyNHL9zppdjlvugLUQIfIjfqQbRd7mbT/+3bt3nzhxor29va2tTeoiOUkvKU9OTmr5f+XKlT179kgtVIU+s3hG63TnBqEP8SHWwUzrzMxAixJbrWM/CQLkXDIaO5P0/goCRsrLv9HSEh9chwD8vP2Rlzrk1DrprKEGG+GxPB10yCm/z/vnphtGRv79v7/m/+IXbS3/pQFu++S6OubmCATQO5HbR054dJSxMUcAMgkCZNHIZUcAxhhLTa/J9TsRQFtbuagor7gcTKqCJCc3FzeH43h/zUB1S3LazAgR0ij5eun6czynX4KsggqFegqAZH78AQJ6IzojtSiiSLO30NJOu4yVaVvpVFYYDEYAnCBAWRpVAgAt1ZWpZ40ocj/PeQX7/fRLUeT9Ozs7dTx27Fi663dQQHD48GHpTVlZmeRnYWGhp6fHWQx68frwNdOcvQC0SABaZwcGxt56yw0C5HPXtPzX7yPxYktcAnC9hexpL6J9Lx33JDRssFCmW95Qn/fllwfb2/0+Hw0N3EdNDQoCFBAgJiaIRqWcZIBbBuDyZdeDuwIQiSR9vdSuqqpyz56qam91QXxHMBh1ztfW3r/8lxN3RYUVOcx9TDE1yeQEE/vw6uM306yCPyCBr6MuSlQaIAEYOT+ix5q/kEIvXl0jtXjw7QBd3MtfQ5YtBoMRAP6cnD/MqfrlKsTfgy74PJmjFZwcZh99ivQBBRC6lUjeX0cehmoDJ0+enJ+fn5qaCofD165dk5YoKSwv0ESThUVWJFoTcwPMDbTaAwOe21fcIKCSSlZDJfHk2l9Hu6qqv6VlzmqZm2sle9rhODSRRhFFcnkFFMBveDxSREpL0ys0FBWxfTuS0YXZWRIJZJkg3XDy9Tt2jESTdeBDHEpZ/sv0vGNJ1+4IwPDw/QKgsXpzzoSaOTPPjHw6zHcxDwVQqM9LCjvYobycbOL8hHRikcUCCqSIueSyGl8jhQ5kmWIwGAF4jzSSp0ohDi8h0v9Zdax6y/8Nblzn+iKLyvYcOnRImZ/jx4+TGao9KFBQ/BFQLry//87cHU2lisIAA5IBsiMHu9W2B1oYGIjd/nMFAY4AnOJUhsv/iQk41mK3tJBose08sue/gM1KSN62sc0RuW3bkpaOZaHzOmLbSXPJrBQ8Gr3qFHKnmfbgcQsAsoMHlwRA4NPV7wbfd867aJQzluo6t/yboQDkuOdW3QqutKu0dF8pBoNh8wXgG6TxY/gLUukEMhSAGLEhhpxqHtDY2Lhv3z6VEyzLgsw9VbVKBSoINzQ0KAiQ69eEmjZ7ARBN0NoqAZBduZHMAskUXnA/NljAyEjKzT8qg8v7yy7sZ71YYPPIcTM2+jyOH5c10ihtc8q/09P3RAD605ouDganHA3QKTf/EyOW9P6yB9G8yglrybZhMBieNAEQEXj5wd5ffJ2VcZaH8hjzzCv7r3KCvkSWxU1EultUA1USkAAECGhCTZsgkU9+9i63pYGBv9IAWxow7wQBjgCsjFv7jceXxEPef58EALCeSg1wb9ksLh6ZGnEFwC3/6knHRDVuFui6KwDu8p+SkuTzVVVkw2oRgCvBBoNhswVgkAcQgSgFrJEw4RAhZ5cYr9er+3+0nGftaJRuB9IMBQUF8Xhcc44xpsmrqCJrapATl/fXDgz9ly5dJXlH0AEOkIbfnxSA99+HAwdsZ/lPipI9zRowcn3IWcsvshgMbnMiAGmcKwD607Gzw0kBSK0Au9kkssRZ/uvIBmtAx5J9HYPB8Bh2A51gQhYhAuzcuVO39Di3kGaBBmq4JnH2D9C0UaKsE2chr2NxsSoBMjn5OHHScGu/5OdrSNKeclzHPcusEwGoIOxEAFNTK0cAcxNFjgDcvTvuLP8jRFwhITsc7y8zGAxbSQBixKaZlgEej0cVXd3fSVYUL6FJAE2omWWsk4oKeX/H5Mvk/R0Z4F6uXUsu/wcGwPX+VVVbRABkRUXJL/QGhx3/nur9nU3rnBNLWSCWbPkLwB5PWgFgo1NADjYGg+FpEoAECceA/CWUwyErNNCZ4b5ps8RKCwIqK90gQBEGyyQSKbXfkpK05b/F08u2ba4GOAn90eDovTeA4uJcp3P3C4CrIpZFFpgisMGwVQXAxl5kUUc0+xJWtm4idbjmdKddL0VF9rIGyO9LABxLr/3K2zlqYevisjK2BO43wvTZwzPh8HB4eHgmGl1BAJzlvyw2XjgysjAyMjb247EQodQCwPojABMEGAxbRwCUOsghR0dgYYlFue6sSB2uOd1pNwAnAtCxttbNAjm7m0WjSQGQKUTY5Oy/9RjLABQWRu5GQqPahenH6d7f+Z27peDR0XHVAMKh8EJhXnoBIPsisMFg2EoCUECBY0B8Ce31RlbMLqEZUqfdqEyIqwFx4k4WSMfU2m8kkpL9LyraOg0pc3PdHM7E6MTdu9HR0eiD9nRwS8FjY5Oh0MREaMINIJAiw/qLwCYIMBi2jgB48BRT7Gzeqe0ctMVbNBolKzR2aglAc2pm2Yb52cbGpAbs23eNa04Q0B/qd5f/Tt8V55rUKbZMECCbvDs5Oqo9nydXjACEGwEEQy1jY1OTY5OkasX6U0AGw1bCCEAppTvZmdzONxIJh8NjY2Osnbm5OQ0cHx/XJEA55ZpTk7NB2KnV4Lw8JwjQl86WvL8Vi+Eu/22FC1sLdxXf/5XAr/961OdzBGCFmm4eeclS8LTvN8d+6lrXwIYKwDbABAGPC4Mhl42mkkov3t3s1rJaW/yrr4Cay8uba+t/1sLt27eDwaCGqwywne2aUzPvYtfGLoTdzSGGLly4Gb3ZP9B/69bta9eW4wNZUxNrpD6LJ+szncNlL6txglXJz0/m8Y9Xw88VFPycz2frp3TcUrCOVX9cxTM4AzWDiQDux2AwAlBFlfxFDTUePNOx6cHBQXWXVF/JtbYUVm8A9YcZGhoC9rLXcUPWRrsMVwBk/iG/f9Cv/+cXt+l81rXfLh5EkyyDMV/gYdRoRJbvIUX8amU+GLQspcGsmpqVV9o11Oxn/1f5KqIafKxj+X8A/heyLLB50jEYjADkkltHXT31jTRe5KJcv/Iq2tOtpqYm82+EqTH91atXtRmc/DHQQIPTKXDj918oK8MNAgLnA0u4yR/27s0iX/8SK9KMbEV+pDFr8P57ZVm8h3QBeKkaZDmwsHt36ge078sCfZyPH+UouY73l5VjMBiMAKyIXH8zzVo29tOvHM7Fixe1I5B2dFBPmEwSQcr8nDlz5vz58319fYAzlY4+fGwoNlggR+8IQPwf+odG/+Du9u/T+VlHALJbdx4jnRydzmDAoezmT6eah7FdebWkO4fAQ+/sqkb/kbRCVsZgMBgBqKCildYhhoIEu+k+e/astgXV13qVzT969OiuVfvHKmKQ91cvsN7eXpUBSilto+0QhzThJqUF5ApdDQjMz1NXl/T+Xi9bGjehA4FML3dGGAyGLUHuJm28qx5+o4yGCU8yeXHh4unTp+X9dUOn2ryoPYD2edY2n5Zlpd7yPzw8rGqBMj9a+7/33ntqDZ9Pfgcdxzh2mMM+fNibtgtnayuDg0Qit51b/g8dQg/Sh201XI+ewb6kVopeGAxbCBMBbLwGFFDQTvsUUwkSFtaF2QuvvfaabglVUVctYlQPUBygkoAyQrZty/tPTExIG1QxVvZfmR9d5ol6ni95/gQnpAGaig3E1YDUT67+5BUVTE+Tn09TEzt2APZW9v7CA39HZuquH3AMJgVkw5twio1jD3te5EVHDHaw4wIXVAxQhkedXqqqqrTVs3b6dAQgHo9Ho9FQKKScj1P1rf2vtUd6jrSfan+h8AVpAGlsfBwgj9/RsVnf1cqBv4FsdQ4t2f/lYXxpyX4Hg8GwUZgaQBz+KfwSG8de9n6YD5dQsotdPnzXuDYQG7i8hHZ50z7PrgDEYjHE59gTLhmdOlDfc7gtr+1E3tHOzo7c3Bw2Exsss/z9YGMwGAFIINtodrP7E3xC0UAddfvZP8hgkGCIUHQxOjM5M8+8s3uEpKKsu8z7htc3F/e98cb/7TmvL+fm5TXl5tLZufqq3AY+z4PJf/DTX4Dv8zC+kD6+BpnBYNhqGAHIhXk2lDzyVMhtoqmf/iGGRhgJE44SnWVWAmBh6QKP7Sm1SysTldUJv29u7n+88UZPT1NeHhIAHV944SHZmK4HvzZd2QQB9oPn9jmnDAbDVsEIwOKyAMyzOZRSeoQjsjHGxhmfZPInAmDnFVFUapVWnKgomXuHuTkSidhpq6dH3j9p7e1r/95Tvp7IJhFkP3juGudng8GwhTAC4Hj/OEvYNkksi41G9QDZyrn2fDhxQgLg2MS770oDnCBA1tbGgyjI9GwWFKT/YDAYthJGAOJLlgAWF5meJhZjdhaKCikspKCAR4bHo4yPqwFjZ8+6cYCU4ODBTa8G23zAMBgMJgK4eTMxNZUAxse5cYNgkEQCnvFSXs7OnZvodNMpK5MG6OUdG+nrkwa49YB9+9gwzJ0/BoPBCMDwcOLllxOBQAKYnOTmTS5cgPx8mpupq8Pn4xHj9bq5IHn9QDicmguqryczSuAfIdtAGuG/IDMYDFsEIwCz44noaOLPv5GYgOlpgkGorKSzjWPHlHbZLAGwH9a0RBpgWehBNNoPebK+pAbU1LAeDAaDwZDLKzBEYiiRCCTiTZU3pjsRh4upqmL/fo4epaODR4vFMs88Q1kZgQCxGLZ9DXIdGbhDZy579mAwGAyGrMnloxAhPhSPBw4n7lYjV2tZFBWhCKC+Xsv/x5xuLy1FtsxlRwAgF05BBevBYDAYTAqojETZc4m25xLRKDMzSAC2b6ekhCeS88sCoOMp/rKdO+BQIIgCOP5mupRGYQpQxSEFEZAAhPvcg44OKAClQGkXxoJb2BubAw539txp+v889OYL/GVqpCMVAAB3APltOh0J8wcKqeLtMwBhXgQAUD0A8v+UfMvrbwUAAAjAezk/VtzlL/EBAKooCnk8AAAtAIBoEAAAAAEAABAAAAABAAA8yVeyLNvtdpfLRSnV7/dns1mj0ZC4AQAByPPcObderw+HQ61WG4/H3vvVaiVxAwACsN/vt9utc26z2dTr9cVi0W63n0sCIGIgAN77JEmOx2NeOp1OYQ2HAiBu4BK42WwaY6y1tzV8CGs4FABxA98AhsPhZDK5Xq+9Xk9rPZ1OwzoajQRA3EAArLXL5dIYcz6flVKDwWA+n7daLQHwCMBjcOE8TVOtdbfbFQAAr4ECAPgnMACAAAAA7s0HoDFhsamH/bcAAAAASUVORK5CYII=",k5={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class N5{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new In([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Nl(c1),texture:this._createTextureNow(I5)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(ne(r)&&(r=k5[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=B5(r,n),o=this.fontRepository+E1(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=>Nl(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=E1(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=>L5(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)=>{fo(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=fo(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function E1(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function L5(t){const e=t.split(`
|
1353
1353
|
`),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 B5(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&&(r=o,n=i)}return n==null?void 0:n.filename}function O5(t,e){const n=[];let r;for(const i of t.split(`
|
1354
|
-
`))if(i.startsWith(">"))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 P5{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=lb([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 F5(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}function ws(t,e,n=!0){let r,i=a=>{};return function(...s){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...s))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const E1=new Map;async function z5(t,e,n){var o;const r=t.symbol;let i=(o=E1.get(r))!=null?o:await U5(t.symbol);return i?(E1.set(r,i),D`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function R5(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 j5=ws(R5,500);function U5(t){return j5(t)}const H5=de(".4~r"),G5=de(".4~e");function D1(t){return t===null?D`<span class="na">NA</span>`:ne(t)?t.substring(0,30):Number.isInteger(t)?""+t:le(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?G5(t):H5(t):ia(t)?t?"True":"False":"?"+typeof t+" "+t}async function Q5(t,e,n){const r=(s,c)=>{var u;for(const[f,l]of Object.entries(e.encoders))if((u=l==null?void 0:l.accessor)!=null&&u.fields.includes(s))switch(f){case"color":case"fill":case"stroke":return D`<span class="color-legend" style="${`background-color: ${l(c)}`}"></span>`}return""},i=D`<table class="attributes">${Object.entries(t).filter(([s,c])=>!s.startsWith("_")).map(([s,c])=>D`<tr><th>${s}</th><td>${D1(c)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),a=o?D`<div class="title"><strong>${o}</strong></div>`:"";return D`${a}${i}`}class V5 extends i1{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}X("index",Jc,["continuous"]),X("locus",Hx,["continuous"]),X("null",C1,[]),Vh("fasta",O5);class M1{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new N3,this.viewFactory=new N8,this.namedDataProviders=[],this.animator=new M5(()=>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 P5(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:Q5,refseqgene:z5,...(i=r.tooltipHandlers)!=null?i:{}},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);for(const i of r.hosts)i.visit(o=>{for(const a of Object.values(o.resolutions.scale))a.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new YD(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new l4(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 T5(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new m1,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new N5(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(s,c)=>{document.addEventListener(s,c);let u=this._keyboardListeners.get(s);u||(u=[],this._keyboardListeners.set(s,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:s=>e.viewFactory.isViewSpec(s),createView:function(s,c,u){return e.viewFactory.createView(s,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(s=>r.datasets[s]),this.viewRoot=n.createView(r,null,"viewRoot"),await b1(this.viewRoot),(this.viewRoot instanceof be||this.viewRoot instanceof Pt)&&(this.viewRoot=new V5(n,this.viewRoot)),v1(this.viewRoot),b5(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof be&&i.push(s)});const o=g1(this.viewRoot,n.dataFlow);v5(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(s=>console.log(s.subtreeToString())),i.forEach(s=>s.mark.initializeEncoders());const a=Promise.all(i.map(s=>s.mark.initializeGraphics()));for(const s of i)o.addObserver(c=>{s.mark.initializeData(),s.mark.updateGraphicsData()},s);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(s=>s.load())),this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await a,this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const s of i)s.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(s=>mo(s,"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),Y5(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 E5(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new S5(a,c)),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 c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=F5(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...u,deltaMode:0,deltaX:0,deltaY:f});s(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}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 be){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(c=>{s(c)==i&&(this._currentHover={mark:a.mark,datum:c,uniqueId:i})})}if(this._currentHover)return nr}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{var u;if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(s,a,c==null?void 0:c.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 w1({picking:!1},this._glHelper),this._pickingContext=new w1({picking:!0},this._glHelper),e.render(new C5(this._renderingContext,this._pickingContext),pn.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof be&&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 Y5(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)}const _N="",_5="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1354
|
+
`))if(i.startsWith(">"))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 P5{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=fb([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 F5(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}function ws(t,e,n=!0){let r,i=a=>{};return function(...s){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...s))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const D1=new Map;async function z5(t,e,n){var o;const r=t.symbol;let i=(o=D1.get(r))!=null?o:await U5(t.symbol);return i?(D1.set(r,i),D`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function R5(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 j5=ws(R5,500);function U5(t){return j5(t)}const H5=de(".4~r"),G5=de(".4~e");function M1(t){return t===null?D`<span class="na">NA</span>`:ne(t)?t.substring(0,30):Number.isInteger(t)?""+t:le(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?G5(t):H5(t):ia(t)?t?"True":"False":"?"+typeof t+" "+t}async function Q5(t,e,n){const r=(s,c)=>{var u;for(const[f,l]of Object.entries(e.encoders))if((u=l==null?void 0:l.accessor)!=null&&u.fields.includes(s))switch(f){case"color":case"fill":case"stroke":return D`<span class="color-legend" style="${`background-color: ${l(c)}`}"></span>`}return""},i=D`<table class="attributes">${Object.entries(t).filter(([s,c])=>!s.startsWith("_")).map(([s,c])=>D`<tr><th>${s}</th><td>${M1(c)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),a=o?D`<div class="title"><strong>${o}</strong></div>`:"";return D`${a}${i}`}class V5 extends o1{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}X("index",Jc,["continuous"]),X("locus",Gx,["continuous"]),X("null",S1,[]),Vh("fasta",O5);class T1{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new L3,this.viewFactory=new N8,this.namedDataProviders=[],this.animator=new M5(()=>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 P5(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:Q5,refseqgene:z5,...(i=r.tooltipHandlers)!=null?i:{}},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);for(const i of r.hosts)i.visit(o=>{for(const a of Object.values(o.resolutions.scale))a.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new _D(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new f4(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 T5(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new g1,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new N5(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(s,c)=>{document.addEventListener(s,c);let u=this._keyboardListeners.get(s);u||(u=[],this._keyboardListeners.set(s,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:s=>e.viewFactory.isViewSpec(s),createView:function(s,c,u){return e.viewFactory.createView(s,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(s=>r.datasets[s]),this.viewRoot=n.createView(r,null,"viewRoot"),await A1(this.viewRoot),(this.viewRoot instanceof be||this.viewRoot instanceof Pt)&&(this.viewRoot=new V5(n,this.viewRoot)),b1(this.viewRoot),b5(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof be&&i.push(s)});const o=y1(this.viewRoot,n.dataFlow);v5(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(s=>console.log(s.subtreeToString())),i.forEach(s=>s.mark.initializeEncoders());const a=Promise.all(i.map(s=>s.mark.initializeGraphics()));for(const s of i)o.addObserver(c=>{s.mark.initializeData(),s.mark.updateGraphicsData()},s);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(s=>s.load())),this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await a,this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const s of i)s.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(s=>mo(s,"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),Y5(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 E5(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new S5(a,c)),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 c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=F5(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...u,deltaMode:0,deltaX:0,deltaY:f});s(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}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 be){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(c=>{s(c)==i&&(this._currentHover={mark:a.mark,datum:c,uniqueId:i})})}if(this._currentHover)return nr}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{var u;if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(s,a,c==null?void 0:c.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 C1({picking:!1},this._glHelper),this._pickingContext=new C1({picking:!0},this._glHelper),e.render(new C5(this._renderingContext,this._pickingContext),pn.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof be&&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 Y5(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)}const _N="",_5="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1355
1355
|
* @license
|
1356
1356
|
* Copyright 2019 Google LLC
|
1357
1357
|
* SPDX-License-Identifier: BSD-3-Clause
|
1358
|
-
*/const Cs=window,ql=Cs.ShadowRoot&&(Cs.ShadyCSS===void 0||Cs.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,
|
1358
|
+
*/const Cs=window,ql=Cs.ShadowRoot&&(Cs.ShadyCSS===void 0||Cs.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,I1=Symbol(),k1=new WeakMap;class W5{constructor(e,n,r){if(this._$cssResult$=!0,r!==I1)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(ql&&e===void 0){const r=n!==void 0&&n.length===1;r&&(e=k1.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&k1.set(n,e))}return e}toString(){return this.cssText}}const X5=t=>new W5(typeof t=="string"?t:t+"",void 0,I1),Z5=(t,e)=>{ql?t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet):e.forEach(n=>{const r=document.createElement("style"),i=Cs.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)})},N1=ql?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return X5(n)})(t):t;/**
|
1359
1359
|
* @license
|
1360
1360
|
* Copyright 2017 Google LLC
|
1361
1361
|
* SPDX-License-Identifier: BSD-3-Clause
|
1362
|
-
*/var Kl;const Ss=window,
|
1362
|
+
*/var Kl;const Ss=window,L1=Ss.trustedTypes,q5=L1?L1.emptyScript:"",B1=Ss.reactiveElementPolyfillSupport,Jl={toAttribute(t,e){switch(e){case Boolean:t=t?q5: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}},O1=(t,e)=>e!==t&&(e==e||t==t),$l={attribute:!0,type:String,converter:Jl,reflect:!1,hasChanged:O1};class qr extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(e){var n;(n=this.h)!==null&&n!==void 0||(this.h=[]),this.h.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach((n,r)=>{const i=this._$Ep(r,n);i!==void 0&&(this._$Ev.set(i,r),e.push(i))}),e}static createProperty(e,n=$l){if(n.state&&(n.attribute=!1),this.finalize(),this.elementProperties.set(e,n),!n.noAccessor&&!this.prototype.hasOwnProperty(e)){const r=typeof e=="symbol"?Symbol():"__"+e,i=this.getPropertyDescriptor(e,r,n);i!==void 0&&Object.defineProperty(this.prototype,e,i)}}static getPropertyDescriptor(e,n,r){return{get(){return this[n]},set(i){const o=this[e];this[n]=i,this.requestUpdate(e,o,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||$l}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),this.elementProperties=new Map(e.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const n=this.properties,r=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(const i of r)this.createProperty(i,n[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}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(N1(i))}else e!==void 0&&n.push(N1(e));return n}static _$Ep(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}u(){var e;this._$E_=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Eg(),this.requestUpdate(),(e=this.constructor.h)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$ES)!==null&&n!==void 0?n:this._$ES=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$ES)===null||n===void 0||n.splice(this._$ES.indexOf(e)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach((e,n)=>{this.hasOwnProperty(n)&&(this._$Ei.set(n,this[n]),delete this[n])})}createRenderRoot(){var e;const n=(e=this.shadowRoot)!==null&&e!==void 0?e:this.attachShadow(this.constructor.shadowRootOptions);return Z5(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$ES)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostConnected)===null||r===void 0?void 0:r.call(n)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$ES)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostDisconnected)===null||r===void 0?void 0:r.call(n)})}attributeChangedCallback(e,n,r){this._$AK(e,r)}_$EO(e,n,r=$l){var i;const o=this.constructor._$Ep(e,r);if(o!==void 0&&r.reflect===!0){const a=(((i=r.converter)===null||i===void 0?void 0:i.toAttribute)!==void 0?r.converter:Jl).toAttribute(n,r.type);this._$El=e,a==null?this.removeAttribute(o):this.setAttribute(o,a),this._$El=null}}_$AK(e,n){var r;const i=this.constructor,o=i._$Ev.get(e);if(o!==void 0&&this._$El!==o){const a=i.getPropertyOptions(o),s=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)===null||r===void 0?void 0:r.fromAttribute)!==void 0?a.converter:Jl;this._$El=o,this[o]=s.fromAttribute(n,a.type),this._$El=null}}requestUpdate(e,n,r){let i=!0;e!==void 0&&(((r=r||this.constructor.getPropertyOptions(e)).hasChanged||O1)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$El!==e&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(n){Promise.reject(n)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach((i,o)=>this[o]=i),this._$Ei=void 0);let n=!1;const r=this._$AL;try{n=this.shouldUpdate(r),n?(this.willUpdate(r),(e=this._$ES)===null||e===void 0||e.forEach(i=>{var o;return(o=i.hostUpdate)===null||o===void 0?void 0:o.call(i)}),this.update(r)):this._$Ek()}catch(i){throw n=!1,this._$Ek(),i}n&&this._$AE(r)}willUpdate(e){}_$AE(e){var n;(n=this._$ES)===null||n===void 0||n.forEach(r=>{var i;return(i=r.hostUpdated)===null||i===void 0?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(e){return!0}update(e){this._$EC!==void 0&&(this._$EC.forEach((n,r)=>this._$EO(r,this[r],n)),this._$EC=void 0),this._$Ek()}updated(e){}firstUpdated(e){}}qr.finalized=!0,qr.elementProperties=new Map,qr.elementStyles=[],qr.shadowRootOptions={mode:"open"},B1==null||B1({ReactiveElement:qr}),((Kl=Ss.reactiveElementVersions)!==null&&Kl!==void 0?Kl:Ss.reactiveElementVersions=[]).push("1.4.1");/**
|
1363
1363
|
* @license
|
1364
1364
|
* Copyright 2017 Google LLC
|
1365
1365
|
* SPDX-License-Identifier: BSD-3-Clause
|
1366
|
-
*/var ef,tf;class vt extends qr{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var e,n;const r=super.createRenderRoot();return(e=(n=this.renderOptions).renderBefore)!==null&&e!==void 0||(n.renderBefore=r.firstChild),r}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Dt=Be(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!1)}render(){return Ae}}vt.finalized=!0,vt._$litElement$=!0,(ef=globalThis.litElementHydrateSupport)===null||ef===void 0||ef.call(globalThis,{LitElement:vt});const
|
1366
|
+
*/var ef,tf;class vt extends qr{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var e,n;const r=super.createRenderRoot();return(e=(n=this.renderOptions).renderBefore)!==null&&e!==void 0||(n.renderBefore=r.firstChild),r}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Dt=Be(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!1)}render(){return Ae}}vt.finalized=!0,vt._$litElement$=!0,(ef=globalThis.litElementHydrateSupport)===null||ef===void 0||ef.call(globalThis,{LitElement:vt});const P1=globalThis.litElementPolyfillSupport;P1==null||P1({LitElement:vt}),((tf=globalThis.litElementVersions)!==null&&tf!==void 0?tf:globalThis.litElementVersions=[]).push("3.2.0");/**
|
1367
1367
|
* @license
|
1368
1368
|
* Copyright 2017 Google LLC
|
1369
1369
|
* SPDX-License-Identifier: BSD-3-Clause
|
@@ -1375,13 +1375,13 @@ Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]
|
|
1375
1375
|
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
|
1376
1376
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1377
1377
|
* Copyright 2022 Fonticons, Inc.
|
1378
|
-
*/var K5={prefix:"fas",iconName:"arrow-down-wide-short",icon:[576,512,["sort-amount-asc","sort-amount-down"],"f160","M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"]},J5=K5,$5={prefix:"fas",iconName:"arrow-rotate-left",icon:[512,512,[8634,"arrow-left-rotate","arrow-rotate-back","arrow-rotate-backward","undo"],"f0e2","M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.86 0-95.19-15.58-134.2-44.86c-14.14-10.59-17-30.66-6.391-44.81c10.61-14.09 30.69-16.97 44.8-6.375c27.84 20.91 61 31.94 95.89 31.94C344.3 415.8 416 344.1 416 256s-71.67-159.8-159.8-159.8C205.9 96.22 158.6 120.3 128.6 160H192c17.67 0 32 14.31 32 32S209.7 224 192 224H48c-17.67 0-32-14.31-32-32V48c0-17.69 14.33-32 32-32s32 14.31 32 32v70.23C122.1 64.58 186.1 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"]},e6=$5,t6={prefix:"fas",iconName:"arrow-rotate-right",icon:[512,512,[8635,"arrow-right-rotate","arrow-rotate-forward","redo"],"f01e","M496 48V192c0 17.69-14.31 32-32 32H320c-17.69 0-32-14.31-32-32s14.31-32 32-32h63.39c-29.97-39.7-77.25-63.78-127.6-63.78C167.7 96.22 96 167.9 96 256s71.69 159.8 159.8 159.8c34.88 0 68.03-11.03 95.88-31.94c14.22-10.53 34.22-7.75 44.81 6.375c10.59 14.16 7.75 34.22-6.375 44.81c-39.03 29.28-85.36 44.86-134.2 44.86C132.5 479.9 32 379.4 32 256s100.5-223.9 223.9-223.9c69.15 0 134 32.47 176.1 86.12V48c0-17.69 14.31-32 32-32S496 30.31 496 48z"]},n6=t6,r6={prefix:"fas",iconName:"arrow-up",icon:[384,512,[8593],"f062","M374.6 246.6C368.4 252.9 360.2 256 352 256s-16.38-3.125-22.62-9.375L224 141.3V448c0 17.69-14.33 31.1-31.1 31.1S160 465.7 160 448V141.3L54.63 246.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l160-160c12.5-12.5 32.75-12.5 45.25 0l160 160C387.1 213.9 387.1 234.1 374.6 246.6z"]},i6={prefix:"fas",iconName:"backward-step",icon:[320,512,["step-backward"],"f048","M31.1 64.03c-17.67 0-31.1 14.33-31.1 32v319.9c0 17.67 14.33 32 32 32C49.67 447.1 64 433.6 64 415.1V96.03C64 78.36 49.67 64.03 31.1 64.03zM267.5 71.41l-192 159.1C67.82 237.8 64 246.9 64 256c0 9.094 3.82 18.18 11.44 24.62l192 159.1c20.63 17.12 52.51 2.75 52.51-24.62v-319.9C319.1 68.66 288.1 54.28 267.5 71.41z"]},o6=i6,P1={prefix:"fas",iconName:"bookmark",icon:[384,512,[61591,128278],"f02e","M384 48V512l-192-112L0 512V48C0 21.5 21.5 0 48 0h288C362.5 0 384 21.5 384 48z"]},a6={prefix:"fas",iconName:"check",icon:[448,512,[10004,10003],"f00c","M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"]},s6={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"]},F1={prefix:"fas",iconName:"circle",icon:[512,512,[128308,128309,128992,128993,128994,128995,128996,9898,9899,11044,61708,61915,9679],"f111","M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"]},c6={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"]},u6=c6,l6={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"]},z1=l6,f6={prefix:"fas",iconName:"circle-question",icon:[512,512,[62108,"question-circle"],"f059","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"]},d6=f6,h6={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200C94.93 200 120 225.1 120 256zM280 256C280 286.9 254.9 312 224 312C193.1 312 168 286.9 168 256C168 225.1 193.1 200 224 200C254.9 200 280 225.1 280 256zM328 256C328 225.1 353.1 200 384 200C414.9 200 440 225.1 440 256C440 286.9 414.9 312 384 312C353.1 312 328 286.9 328 256z"]},p6=h6,m6={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360C94.93 360 120 385.1 120 416C120 446.9 94.93 472 64 472C33.07 472 8 446.9 8 416C8 385.1 33.07 360 64 360zM64 200C94.93 200 120 225.1 120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200zM64 152C33.07 152 8 126.9 8 96C8 65.07 33.07 40 64 40C94.93 40 120 65.07 120 96C120 126.9 94.93 152 64 152z"]},g6=m6,sr={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.853 54.87C10.47 40.9 24.54 32 40 32H472C487.5 32 501.5 40.9 508.1 54.87C514.8 68.84 512.7 85.37 502.1 97.33L320 320.9V448C320 460.1 313.2 471.2 302.3 476.6C291.5 482 278.5 480.9 268.8 473.6L204.8 425.6C196.7 419.6 192 410.1 192 400V320.9L9.042 97.33C-.745 85.37-2.765 68.84 3.854 54.87L3.853 54.87z"]},y6={prefix:"fas",iconName:"forward-step",icon:[320,512,["step-forward"],"f051","M287.1 447.1c17.67 0 31.1-14.33 31.1-32V96.03c0-17.67-14.33-32-32-32c-17.67 0-31.1 14.33-31.1 31.1v319.9C255.1 433.6 270.3 447.1 287.1 447.1zM52.51 440.6l192-159.1c7.625-6.436 11.43-15.53 11.43-24.62c0-9.094-3.809-18.18-11.43-24.62l-192-159.1C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6z"]},v6=y6,b6={prefix:"fas",iconName:"maximize",icon:[448,512,["expand-arrows-alt"],"f31e","M447.1 319.1v135.1c0 13.26-10.75 23.1-23.1 23.1h-135.1c-12.94 0-24.61-7.781-29.56-19.75c-4.906-11.1-2.203-25.72 6.937-34.87l30.06-30.06L224 323.9l-71.43 71.44l30.06 30.06c9.156 9.156 11.91 22.91 6.937 34.87C184.6 472.2 172.9 479.1 160 479.1H24c-13.25 0-23.1-10.74-23.1-23.1v-135.1c0-12.94 7.781-24.61 19.75-29.56C23.72 288.8 27.88 288 32 288c8.312 0 16.5 3.242 22.63 9.367l30.06 30.06l71.44-71.44L84.69 184.6L54.63 214.6c-9.156 9.156-22.91 11.91-34.87 6.937C7.798 216.6 .0013 204.9 .0013 191.1v-135.1c0-13.26 10.75-23.1 23.1-23.1h135.1c12.94 0 24.61 7.781 29.56 19.75C191.2 55.72 191.1 59.87 191.1 63.1c0 8.312-3.237 16.5-9.362 22.63L152.6 116.7l71.44 71.44l71.43-71.44l-30.06-30.06c-9.156-9.156-11.91-22.91-6.937-34.87c4.937-11.95 16.62-19.75 29.56-19.75h135.1c13.26 0 23.1 10.75 23.1 23.1v135.1c0 12.94-7.781 24.61-19.75 29.56c-11.1 4.906-25.72 2.203-34.87-6.937l-30.06-30.06l-71.43 71.43l71.44 71.44l30.06-30.06c9.156-9.156 22.91-11.91 34.87-6.937C440.2 295.4 447.1 307.1 447.1 319.1z"]},A6=b6,R1={prefix:"fas",iconName:"medal",icon:[512,512,[127941],"f5a2","M223.7 130.8L149.1 7.77C147.1 2.949 141.9 0 136.3 0H16.03c-12.95 0-20.53 14.58-13.1 25.18l111.3 158.9C143.9 156.4 181.7 137.3 223.7 130.8zM256 160c-97.25 0-176 78.75-176 176S158.8 512 256 512s176-78.75 176-176S353.3 160 256 160zM348.5 317.3l-37.88 37l8.875 52.25c1.625 9.25-8.25 16.5-16.63 12l-46.88-24.62L209.1 418.5c-8.375 4.5-18.25-2.75-16.63-12l8.875-52.25l-37.88-37C156.6 310.6 160.5 299 169.9 297.6l52.38-7.625L245.7 242.5c2-4.25 6.125-6.375 10.25-6.375S264.2 238.3 266.2 242.5l23.5 47.5l52.38 7.625C351.6 299 355.4 310.6 348.5 317.3zM495.1 0H375.7c-5.621 0-10.83 2.949-13.72 7.77l-73.76 122.1c42 6.5 79.88 25.62 109.5 53.38l111.3-158.9C516.5 14.58 508.9 0 495.1 0z"]},Co={prefix:"fas",iconName:"object-group",icon:[576,512,[],"f247","M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H456.6C467.6 12.87 488.3 0 512 0C547.3 0 576 28.65 576 64C576 87.69 563.1 108.4 544 119.4V392.6C563.1 403.6 576 424.3 576 448C576 483.3 547.3 512 512 512C488.3 512 467.6 499.1 456.6 480H119.4C108.4 499.1 87.69 512 64 512C28.65 512 0 483.3 0 448C0 424.3 12.87 403.6 32 392.6V119.4zM119.4 96C113.8 105.7 105.7 113.8 96 119.4V392.6C105.7 398.2 113.8 406.3 119.4 416H456.6C462.2 406.3 470.3 398.2 480 392.6V119.4C470.3 113.8 462.2 105.7 456.6 96H119.4z"]},x6={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32zM421.7 220.3L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3z"]},rf={prefix:"fas",iconName:"share",icon:[512,512,["arrow-turn-right","mail-forward"],"f064","M503.7 226.2l-176 151.1c-15.38 13.3-39.69 2.545-39.69-18.16V272.1C132.9 274.3 66.06 312.8 111.4 457.8c5.031 16.09-14.41 28.56-28.06 18.62C39.59 444.6 0 383.8 0 322.3c0-152.2 127.4-184.4 288-186.3V56.02c0-20.67 24.28-31.46 39.69-18.16l176 151.1C514.8 199.4 514.8 216.6 503.7 226.2z"]},w6={prefix:"fas",iconName:"sliders",icon:[512,512,["sliders-h"],"f1de","M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"]},C6=w6,j1={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z"]},S6={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM111.1 208V432C111.1 440.8 119.2 448 127.1 448C136.8 448 143.1 440.8 143.1 432V208C143.1 199.2 136.8 192 127.1 192C119.2 192 111.1 199.2 111.1 208zM207.1 208V432C207.1 440.8 215.2 448 223.1 448C232.8 448 240 440.8 240 432V208C240 199.2 232.8 192 223.1 192C215.2 192 207.1 199.2 207.1 208zM304 208V432C304 440.8 311.2 448 320 448C328.8 448 336 440.8 336 432V208C336 199.2 328.8 192 320 192C311.2 192 304 199.2 304 208z"]},Es=S6,E6={prefix:"fas",iconName:"up-down",icon:[256,512,[11021,8597,"arrows-alt-v"],"f338","M249.6 392.3l-104 112c-9.094 9.781-26.09 9.781-35.19 0l-103.1-112c-6.484-6.984-8.219-17.17-4.406-25.92S14.45 352 24 352H80V160H24C14.45 160 5.812 154.3 1.999 145.6C-1.813 136.8-.0781 126.7 6.406 119.7l104-112c9.094-9.781 26.09-9.781 35.19 0l104 112c6.484 6.984 8.219 17.17 4.406 25.92C250.2 154.3 241.5 160 232 160H176v192h56c9.547 0 18.19 5.656 22 14.41S256.1 385.3 249.6 392.3z"]},D6=E6,M6={prefix:"fas",iconName:"xmark",icon:[320,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"]};/*!
|
1378
|
+
*/var K5={prefix:"fas",iconName:"arrow-down-wide-short",icon:[576,512,["sort-amount-asc","sort-amount-down"],"f160","M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"]},J5=K5,$5={prefix:"fas",iconName:"arrow-rotate-left",icon:[512,512,[8634,"arrow-left-rotate","arrow-rotate-back","arrow-rotate-backward","undo"],"f0e2","M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.86 0-95.19-15.58-134.2-44.86c-14.14-10.59-17-30.66-6.391-44.81c10.61-14.09 30.69-16.97 44.8-6.375c27.84 20.91 61 31.94 95.89 31.94C344.3 415.8 416 344.1 416 256s-71.67-159.8-159.8-159.8C205.9 96.22 158.6 120.3 128.6 160H192c17.67 0 32 14.31 32 32S209.7 224 192 224H48c-17.67 0-32-14.31-32-32V48c0-17.69 14.33-32 32-32s32 14.31 32 32v70.23C122.1 64.58 186.1 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"]},e6=$5,t6={prefix:"fas",iconName:"arrow-rotate-right",icon:[512,512,[8635,"arrow-right-rotate","arrow-rotate-forward","redo"],"f01e","M496 48V192c0 17.69-14.31 32-32 32H320c-17.69 0-32-14.31-32-32s14.31-32 32-32h63.39c-29.97-39.7-77.25-63.78-127.6-63.78C167.7 96.22 96 167.9 96 256s71.69 159.8 159.8 159.8c34.88 0 68.03-11.03 95.88-31.94c14.22-10.53 34.22-7.75 44.81 6.375c10.59 14.16 7.75 34.22-6.375 44.81c-39.03 29.28-85.36 44.86-134.2 44.86C132.5 479.9 32 379.4 32 256s100.5-223.9 223.9-223.9c69.15 0 134 32.47 176.1 86.12V48c0-17.69 14.31-32 32-32S496 30.31 496 48z"]},n6=t6,r6={prefix:"fas",iconName:"arrow-up",icon:[384,512,[8593],"f062","M374.6 246.6C368.4 252.9 360.2 256 352 256s-16.38-3.125-22.62-9.375L224 141.3V448c0 17.69-14.33 31.1-31.1 31.1S160 465.7 160 448V141.3L54.63 246.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l160-160c12.5-12.5 32.75-12.5 45.25 0l160 160C387.1 213.9 387.1 234.1 374.6 246.6z"]},i6={prefix:"fas",iconName:"backward-step",icon:[320,512,["step-backward"],"f048","M31.1 64.03c-17.67 0-31.1 14.33-31.1 32v319.9c0 17.67 14.33 32 32 32C49.67 447.1 64 433.6 64 415.1V96.03C64 78.36 49.67 64.03 31.1 64.03zM267.5 71.41l-192 159.1C67.82 237.8 64 246.9 64 256c0 9.094 3.82 18.18 11.44 24.62l192 159.1c20.63 17.12 52.51 2.75 52.51-24.62v-319.9C319.1 68.66 288.1 54.28 267.5 71.41z"]},o6=i6,F1={prefix:"fas",iconName:"bookmark",icon:[384,512,[61591,128278],"f02e","M384 48V512l-192-112L0 512V48C0 21.5 21.5 0 48 0h288C362.5 0 384 21.5 384 48z"]},a6={prefix:"fas",iconName:"check",icon:[448,512,[10004,10003],"f00c","M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"]},s6={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"]},z1={prefix:"fas",iconName:"circle",icon:[512,512,[128308,128309,128992,128993,128994,128995,128996,9898,9899,11044,61708,61915,9679],"f111","M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"]},c6={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"]},u6=c6,l6={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"]},R1=l6,f6={prefix:"fas",iconName:"circle-question",icon:[512,512,[62108,"question-circle"],"f059","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"]},d6=f6,h6={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200C94.93 200 120 225.1 120 256zM280 256C280 286.9 254.9 312 224 312C193.1 312 168 286.9 168 256C168 225.1 193.1 200 224 200C254.9 200 280 225.1 280 256zM328 256C328 225.1 353.1 200 384 200C414.9 200 440 225.1 440 256C440 286.9 414.9 312 384 312C353.1 312 328 286.9 328 256z"]},p6=h6,m6={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360C94.93 360 120 385.1 120 416C120 446.9 94.93 472 64 472C33.07 472 8 446.9 8 416C8 385.1 33.07 360 64 360zM64 200C94.93 200 120 225.1 120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200zM64 152C33.07 152 8 126.9 8 96C8 65.07 33.07 40 64 40C94.93 40 120 65.07 120 96C120 126.9 94.93 152 64 152z"]},g6=m6,sr={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.853 54.87C10.47 40.9 24.54 32 40 32H472C487.5 32 501.5 40.9 508.1 54.87C514.8 68.84 512.7 85.37 502.1 97.33L320 320.9V448C320 460.1 313.2 471.2 302.3 476.6C291.5 482 278.5 480.9 268.8 473.6L204.8 425.6C196.7 419.6 192 410.1 192 400V320.9L9.042 97.33C-.745 85.37-2.765 68.84 3.854 54.87L3.853 54.87z"]},y6={prefix:"fas",iconName:"forward-step",icon:[320,512,["step-forward"],"f051","M287.1 447.1c17.67 0 31.1-14.33 31.1-32V96.03c0-17.67-14.33-32-32-32c-17.67 0-31.1 14.33-31.1 31.1v319.9C255.1 433.6 270.3 447.1 287.1 447.1zM52.51 440.6l192-159.1c7.625-6.436 11.43-15.53 11.43-24.62c0-9.094-3.809-18.18-11.43-24.62l-192-159.1C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6z"]},v6=y6,b6={prefix:"fas",iconName:"maximize",icon:[448,512,["expand-arrows-alt"],"f31e","M447.1 319.1v135.1c0 13.26-10.75 23.1-23.1 23.1h-135.1c-12.94 0-24.61-7.781-29.56-19.75c-4.906-11.1-2.203-25.72 6.937-34.87l30.06-30.06L224 323.9l-71.43 71.44l30.06 30.06c9.156 9.156 11.91 22.91 6.937 34.87C184.6 472.2 172.9 479.1 160 479.1H24c-13.25 0-23.1-10.74-23.1-23.1v-135.1c0-12.94 7.781-24.61 19.75-29.56C23.72 288.8 27.88 288 32 288c8.312 0 16.5 3.242 22.63 9.367l30.06 30.06l71.44-71.44L84.69 184.6L54.63 214.6c-9.156 9.156-22.91 11.91-34.87 6.937C7.798 216.6 .0013 204.9 .0013 191.1v-135.1c0-13.26 10.75-23.1 23.1-23.1h135.1c12.94 0 24.61 7.781 29.56 19.75C191.2 55.72 191.1 59.87 191.1 63.1c0 8.312-3.237 16.5-9.362 22.63L152.6 116.7l71.44 71.44l71.43-71.44l-30.06-30.06c-9.156-9.156-11.91-22.91-6.937-34.87c4.937-11.95 16.62-19.75 29.56-19.75h135.1c13.26 0 23.1 10.75 23.1 23.1v135.1c0 12.94-7.781 24.61-19.75 29.56c-11.1 4.906-25.72 2.203-34.87-6.937l-30.06-30.06l-71.43 71.43l71.44 71.44l30.06-30.06c9.156-9.156 22.91-11.91 34.87-6.937C440.2 295.4 447.1 307.1 447.1 319.1z"]},A6=b6,j1={prefix:"fas",iconName:"medal",icon:[512,512,[127941],"f5a2","M223.7 130.8L149.1 7.77C147.1 2.949 141.9 0 136.3 0H16.03c-12.95 0-20.53 14.58-13.1 25.18l111.3 158.9C143.9 156.4 181.7 137.3 223.7 130.8zM256 160c-97.25 0-176 78.75-176 176S158.8 512 256 512s176-78.75 176-176S353.3 160 256 160zM348.5 317.3l-37.88 37l8.875 52.25c1.625 9.25-8.25 16.5-16.63 12l-46.88-24.62L209.1 418.5c-8.375 4.5-18.25-2.75-16.63-12l8.875-52.25l-37.88-37C156.6 310.6 160.5 299 169.9 297.6l52.38-7.625L245.7 242.5c2-4.25 6.125-6.375 10.25-6.375S264.2 238.3 266.2 242.5l23.5 47.5l52.38 7.625C351.6 299 355.4 310.6 348.5 317.3zM495.1 0H375.7c-5.621 0-10.83 2.949-13.72 7.77l-73.76 122.1c42 6.5 79.88 25.62 109.5 53.38l111.3-158.9C516.5 14.58 508.9 0 495.1 0z"]},Co={prefix:"fas",iconName:"object-group",icon:[576,512,[],"f247","M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H456.6C467.6 12.87 488.3 0 512 0C547.3 0 576 28.65 576 64C576 87.69 563.1 108.4 544 119.4V392.6C563.1 403.6 576 424.3 576 448C576 483.3 547.3 512 512 512C488.3 512 467.6 499.1 456.6 480H119.4C108.4 499.1 87.69 512 64 512C28.65 512 0 483.3 0 448C0 424.3 12.87 403.6 32 392.6V119.4zM119.4 96C113.8 105.7 105.7 113.8 96 119.4V392.6C105.7 398.2 113.8 406.3 119.4 416H456.6C462.2 406.3 470.3 398.2 480 392.6V119.4C470.3 113.8 462.2 105.7 456.6 96H119.4z"]},x6={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32zM421.7 220.3L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3z"]},rf={prefix:"fas",iconName:"share",icon:[512,512,["arrow-turn-right","mail-forward"],"f064","M503.7 226.2l-176 151.1c-15.38 13.3-39.69 2.545-39.69-18.16V272.1C132.9 274.3 66.06 312.8 111.4 457.8c5.031 16.09-14.41 28.56-28.06 18.62C39.59 444.6 0 383.8 0 322.3c0-152.2 127.4-184.4 288-186.3V56.02c0-20.67 24.28-31.46 39.69-18.16l176 151.1C514.8 199.4 514.8 216.6 503.7 226.2z"]},w6={prefix:"fas",iconName:"sliders",icon:[512,512,["sliders-h"],"f1de","M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"]},C6=w6,U1={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z"]},S6={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM111.1 208V432C111.1 440.8 119.2 448 127.1 448C136.8 448 143.1 440.8 143.1 432V208C143.1 199.2 136.8 192 127.1 192C119.2 192 111.1 199.2 111.1 208zM207.1 208V432C207.1 440.8 215.2 448 223.1 448C232.8 448 240 440.8 240 432V208C240 199.2 232.8 192 223.1 192C215.2 192 207.1 199.2 207.1 208zM304 208V432C304 440.8 311.2 448 320 448C328.8 448 336 440.8 336 432V208C336 199.2 328.8 192 320 192C311.2 192 304 199.2 304 208z"]},Es=S6,E6={prefix:"fas",iconName:"up-down",icon:[256,512,[11021,8597,"arrows-alt-v"],"f338","M249.6 392.3l-104 112c-9.094 9.781-26.09 9.781-35.19 0l-103.1-112c-6.484-6.984-8.219-17.17-4.406-25.92S14.45 352 24 352H80V160H24C14.45 160 5.812 154.3 1.999 145.6C-1.813 136.8-.0781 126.7 6.406 119.7l104-112c9.094-9.781 26.09-9.781 35.19 0l104 112c6.484 6.984 8.219 17.17 4.406 25.92C250.2 154.3 241.5 160 232 160H176v192h56c9.547 0 18.19 5.656 22 14.41S256.1 385.3 249.6 392.3z"]},D6=E6,M6={prefix:"fas",iconName:"xmark",icon:[320,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"]};/*!
|
1379
1379
|
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
|
1380
1380
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1381
1381
|
* Copyright 2022 Fonticons, Inc.
|
1382
|
-
*/function
|
1382
|
+
*/function H1(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function k(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?H1(Object(n),!0).forEach(function(r){k6(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):H1(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ds(t){return Ds=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ds(t)}function T6(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function G1(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function I6(t,e,n){return e&&G1(t.prototype,e),n&&G1(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function k6(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function of(t,e){return L6(t)||O6(t,e)||Q1(t,e)||F6()}function Ms(t){return N6(t)||B6(t)||Q1(t)||P6()}function N6(t){if(Array.isArray(t))return af(t)}function L6(t){if(Array.isArray(t))return t}function B6(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function O6(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r=[],i=!0,o=!1,a,s;try{for(n=n.call(t);!(i=(a=n.next()).done)&&(r.push(a.value),!(e&&r.length===e));i=!0);}catch(c){o=!0,s=c}finally{try{!i&&n.return!=null&&n.return()}finally{if(o)throw s}}return r}}function Q1(t,e){if(!!t){if(typeof t=="string")return af(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return af(t,e)}}function af(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function P6(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
1383
1383
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function F6(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
1384
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var
|
1384
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var V1=function(){},sf={},Y1={},_1=null,W1={mark:V1,measure:V1};try{typeof window<"u"&&(sf=window),typeof document<"u"&&(Y1=document),typeof MutationObserver<"u"&&(_1=MutationObserver),typeof performance<"u"&&(W1=performance)}catch{}var z6=sf.navigator||{},X1=z6.userAgent,Z1=X1===void 0?"":X1,mn=sf,ee=Y1,q1=_1,Ts=W1;mn.document;var zt=!!ee.documentElement&&!!ee.head&&typeof ee.addEventListener=="function"&&typeof ee.createElement=="function",K1=~Z1.indexOf("MSIE")||~Z1.indexOf("Trident/"),Rt="___FONT_AWESOME___",cf=16,J1="fa",$1="svg-inline--fa",cr="data-fa-i2svg",uf="data-fa-pseudo-element",R6="data-fa-pseudo-element-pending",lf="data-prefix",ff="data-icon",ey="fontawesome-i2svg",j6="async",U6=["HTML","HEAD","STYLE","SCRIPT"],ty=function(){try{return!0}catch{return!1}}(),df={fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit",fa:"solid"},Is={solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"},ny={fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},H6={"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},G6=/fa[srltdbk\-\ ]/,ry="fa-layers-text",Q6=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i,V6={900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},iy=[1,2,3,4,5,6,7,8,9,10],Y6=iy.concat([11,12,13,14,15,16,17,18,19,20]),_6=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],ur={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},W6=[].concat(Ms(Object.keys(Is)),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",ur.GROUP,ur.SWAP_OPACITY,ur.PRIMARY,ur.SECONDARY]).concat(iy.map(function(t){return"".concat(t,"x")})).concat(Y6.map(function(t){return"w-".concat(t)})),oy=mn.FontAwesomeConfig||{};function X6(t){var e=ee.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function Z6(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(ee&&typeof ee.querySelector=="function"){var q6=[["data-family-prefix","familyPrefix"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];q6.forEach(function(t){var e=of(t,2),n=e[0],r=e[1],i=Z6(X6(n));i!=null&&(oy[r]=i)})}var K6={familyPrefix:J1,styleDefault:"solid",replacementClass:$1,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},So=k(k({},K6),oy);So.autoReplaceSvg||(So.observeMutations=!1);var P={};Object.keys(So).forEach(function(t){Object.defineProperty(P,t,{enumerable:!0,set:function(n){So[t]=n,ks.forEach(function(r){return r(P)})},get:function(){return So[t]}})}),mn.FontAwesomeConfig=P;var ks=[];function J6(t){return ks.push(t),function(){ks.splice(ks.indexOf(t),1)}}var gn=cf,At={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function $6(t){if(!(!t||!zt)){var e=ee.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=ee.head.childNodes,r=null,i=n.length-1;i>-1;i--){var o=n[i],a=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=o)}return ee.head.insertBefore(e,r),t}}var eT="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Eo(){for(var t=12,e="";t-- >0;)e+=eT[Math.random()*62|0];return e}function Jr(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function hf(t){return t.classList?Jr(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(e){return e})}function ay(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function tT(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(ay(t[n]),'" ')},"").trim()}function Ns(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n].trim(),";")},"")}function pf(t){return t.size!==At.size||t.x!==At.x||t.y!==At.y||t.rotate!==At.rotate||t.flipX||t.flipY}function nT(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(e.x*32,", ").concat(e.y*32,") "),a="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),s="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(o," ").concat(a," ").concat(s)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:i,inner:c,path:u}}function rT(t){var e=t.transform,n=t.width,r=n===void 0?cf:n,i=t.height,o=i===void 0?cf:i,a=t.startCentered,s=a===void 0?!1:a,c="";return s&&K1?c+="translate(".concat(e.x/gn-r/2,"em, ").concat(e.y/gn-o/2,"em) "):s?c+="translate(calc(-50% + ".concat(e.x/gn,"em), calc(-50% + ").concat(e.y/gn,"em)) "):c+="translate(".concat(e.x/gn,"em, ").concat(e.y/gn,"em) "),c+="scale(".concat(e.size/gn*(e.flipX?-1:1),", ").concat(e.size/gn*(e.flipY?-1:1),") "),c+="rotate(".concat(e.rotate,"deg) "),c}var iT=`:root, :host {
|
1385
1385
|
--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";
|
1386
1386
|
--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";
|
1387
1387
|
--fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";
|
@@ -2132,9 +2132,9 @@ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
|
2132
2132
|
.fad.fa-inverse,
|
2133
2133
|
.fa-duotone.fa-inverse {
|
2134
2134
|
color: var(--fa-inverse, #fff);
|
2135
|
-
}`;function ay(){var t=K1,e=J1,n=P.familyPrefix,r=P.replacementClass,i=iT;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(s,".".concat(r))}return i}var sy=!1;function mf(){P.autoAddCss&&!sy&&($6(ay()),sy=!0)}var oT={mixout:function(){return{dom:{css:ay,insertCss:mf}}},hooks:function(){return{beforeDOMElementCreation:function(){mf()},beforeI2svg:function(){mf()}}}},jt=mn||{};jt[Rt]||(jt[Rt]={}),jt[Rt].styles||(jt[Rt].styles={}),jt[Rt].hooks||(jt[Rt].hooks={}),jt[Rt].shims||(jt[Rt].shims=[]);var ut=jt[Rt],cy=[],aT=function t(){ee.removeEventListener("DOMContentLoaded",t),Ls=1,cy.map(function(e){return e()})},Ls=!1;zt&&(Ls=(ee.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(ee.readyState),Ls||ee.addEventListener("DOMContentLoaded",aT));function sT(t){!zt||(Ls?setTimeout(t,0):cy.push(t))}function Do(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?oy(t):"<".concat(e," ").concat(tT(r),">").concat(o.map(Do).join(""),"</").concat(e,">")}function uy(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var cT=function(e,n){return function(r,i,o,a){return e.call(n,r,i,o,a)}},gf=function(e,n,r,i){var o=Object.keys(e),a=o.length,s=i!==void 0?cT(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<a;c++)u=o[c],f=s(f,e[u],u,e);return f};function uT(t){for(var e=[],n=0,r=t.length;n<r;){var i=t.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=t.charCodeAt(n++);(o&64512)==56320?e.push(((i&1023)<<10)+(o&1023)+65536):(e.push(i),n--)}else e.push(i)}return e}function yf(t){var e=uT(t);return e.length===1?e[0].toString(16):null}function lT(t,e){var n=t.length,r=t.charCodeAt(e),i;return r>=55296&&r<=56319&&n>e+1&&(i=t.charCodeAt(e+1),i>=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}function ly(t){return Object.keys(t).reduce(function(e,n){var r=t[n],i=!!r.icon;return i?e[r.iconName]=r.icon:e[n]=r,e},{})}function vf(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=ly(e);typeof ut.hooks.addPack=="function"&&!i?ut.hooks.addPack(t,ly(e)):ut.styles[t]=k(k({},ut.styles[t]||{}),o),t==="fas"&&vf("fa",e)}var Mo=ut.styles,fT=ut.shims,dT=Object.values(ty),bf=null,fy={},dy={},hy={},py={},my={},hT=Object.keys(df);function pT(t){return~W6.indexOf(t)}function mT(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!pT(i)?i:null}var gy=function(){var e=function(o){return gf(Mo,function(a,s,c){return a[c]=gf(s,o,{}),a},{})};fy=e(function(i,o,a){if(o[3]&&(i[o[3]]=a),o[2]){var s=o[2].filter(function(c){return typeof c=="number"});s.forEach(function(c){i[c.toString(16)]=a})}return i}),dy=e(function(i,o,a){if(i[a]=a,o[2]){var s=o[2].filter(function(c){return typeof c=="string"});s.forEach(function(c){i[c]=a})}return i}),my=e(function(i,o,a){var s=o[2];return i[a]=a,s.forEach(function(c){i[c]=a}),i});var n="far"in Mo||P.autoFetchSvg,r=gf(fT,function(i,o){var a=o[0],s=o[1],c=o[2];return s==="far"&&!n&&(s="fas"),typeof a=="string"&&(i.names[a]={prefix:s,iconName:c}),typeof a=="number"&&(i.unicodes[a.toString(16)]={prefix:s,iconName:c}),i},{names:{},unicodes:{}});hy=r.names,py=r.unicodes,bf=Bs(P.styleDefault)};J6(function(t){bf=Bs(t.styleDefault)}),gy();function Af(t,e){return(fy[t]||{})[e]}function gT(t,e){return(dy[t]||{})[e]}function $r(t,e){return(my[t]||{})[e]}function yy(t){return hy[t]||{prefix:null,iconName:null}}function yT(t){var e=py[t],n=Af("fas",t);return e||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function yn(){return bf}var xf=function(){return{prefix:null,iconName:null,rest:[]}};function Bs(t){var e=df[t],n=Is[t]||Is[e],r=t in ut.styles?t:null;return n||r||null}function Os(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.skipLookups,r=n===void 0?!1:n,i=null,o=t.reduce(function(a,s){var c=mT(P.familyPrefix,s);if(Mo[s]?(s=dT.includes(s)?H6[s]:s,i=s,a.prefix=s):hT.indexOf(s)>-1?(i=s,a.prefix=Bs(s)):c?a.iconName=c:s!==P.replacementClass&&a.rest.push(s),!r&&a.prefix&&a.iconName){var u=i==="fa"?yy(a.iconName):{},f=$r(a.prefix,a.iconName);u.prefix&&(i=null),a.iconName=u.iconName||f||a.iconName,a.prefix=u.prefix||a.prefix,a.prefix==="far"&&!Mo.far&&Mo.fas&&!P.autoFetchSvg&&(a.prefix="fas")}return a},xf());return(o.prefix==="fa"||i==="fa")&&(o.prefix=yn()||"fas"),o}var vT=function(){function t(){T6(this,t),this.definitions={}}return I6(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var a=i.reduce(this._pullDefinitions,{});Object.keys(a).forEach(function(s){n.definitions[s]=k(k({},n.definitions[s]||{}),a[s]),vf(s,a[s]);var c=ty[s];c&&vf(c,a[s]),gy()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var a=i[o],s=a.prefix,c=a.iconName,u=a.icon,f=u[2];n[s]||(n[s]={}),f.length>0&&f.forEach(function(l){typeof l=="string"&&(n[s][l]=u)}),n[s][c]=u}),n}}]),t}(),vy=[],ei={},ti={},bT=Object.keys(ti);function AT(t,e){var n=e.mixoutsTo;return vy=t,ei={},Object.keys(ti).forEach(function(r){bT.indexOf(r)===-1&&delete ti[r]}),vy.forEach(function(r){var i=r.mixout?r.mixout():{};if(Object.keys(i).forEach(function(a){typeof i[a]=="function"&&(n[a]=i[a]),Ds(i[a])==="object"&&Object.keys(i[a]).forEach(function(s){n[a]||(n[a]={}),n[a][s]=i[a][s]})}),r.hooks){var o=r.hooks();Object.keys(o).forEach(function(a){ei[a]||(ei[a]=[]),ei[a].push(o[a])})}r.provides&&r.provides(ti)}),n}function wf(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var o=ei[t]||[];return o.forEach(function(a){e=a.apply(null,[e].concat(r))}),e}function lr(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=ei[t]||[];i.forEach(function(o){o.apply(null,n)})}function Ut(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return ti[t]?ti[t].apply(null,e):void 0}function Cf(t){t.prefix==="fa"&&(t.prefix="fas");var e=t.iconName,n=t.prefix||yn();if(!!e)return e=$r(n,e)||e,uy(by.definitions,n,e)||uy(ut.styles,n,e)}var by=new vT,xT=function(){P.autoReplaceSvg=!1,P.observeMutations=!1,lr("noAuto")},wT={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return zt?(lr("beforeI2svg",e),Ut("pseudoElements2svg",e),Ut("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot;P.autoReplaceSvg===!1&&(P.autoReplaceSvg=!0),P.observeMutations=!0,sT(function(){ST({autoReplaceSvgRoot:n}),lr("watch",e)})}},CT={icon:function(e){if(e===null)return null;if(Ds(e)==="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:$r(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){var n=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],r=Bs(e[0]);return{prefix:r,iconName:$r(r,n)||n}}if(typeof e=="string"&&(e.indexOf("".concat(P.familyPrefix,"-"))>-1||e.match(G6))){var i=Os(e.split(" "),{skipLookups:!0});return{prefix:i.prefix||yn(),iconName:$r(i.prefix,i.iconName)||i.iconName}}if(typeof e=="string"){var o=yn();return{prefix:o,iconName:$r(o,e)||e}}}},He={noAuto:xT,config:P,dom:wT,parse:CT,library:by,findIconDefinition:Cf,toHtml:Do},ST=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?ee:n;(Object.keys(ut.styles).length>0||P.autoFetchSvg)&&zt&&P.autoReplaceSvg&&He.dom.i2svg({node:r})};function Ps(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return Do(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!zt){var r=ee.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function ET(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(pf(a)&&n.found&&!r.found){var s=n.width,c=n.height,u={x:s/c/2,y:.5};i.style=Ns(k(k({},o),{},{"transform-origin":"".concat(u.x+a.x/16,"em ").concat(u.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function DT(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,a=o===!0?"".concat(e,"-").concat(P.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:k(k({},i),{},{id:a}),children:r}]}]}function Sf(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,a=t.transform,s=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,d=t.watchable,h=d===void 0?!1:d,p=r.found?r:n,m=p.width,g=p.height,y=i==="fak",A=[P.replacementClass,o?"".concat(P.familyPrefix,"-").concat(o):""].filter(function(I){return l.classes.indexOf(I)===-1}).filter(function(I){return I!==""||!!I}).concat(l.classes).join(" "),x={children:[],attributes:k(k({},l.attributes),{},{"data-prefix":i,"data-icon":o,class:A,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(g)})},w=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/g*16*.0625,"em")}:{};h&&(x.attributes[cr]=""),c&&(x.children.push({tag:"title",attributes:{id:x.attributes["aria-labelledby"]||"title-".concat(f||Eo())},children:[c]}),delete x.attributes.title);var b=k(k({},x),{},{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:s,styles:k(k({},w),l.styles)}),v=r.found&&n.found?Ut("generateAbstractMask",b)||{children:[],attributes:{}}:Ut("generateAbstractIcon",b)||{children:[],attributes:{}},C=v.children,S=v.attributes;return b.children=C,b.attributes=S,s?DT(b):ET(b)}function Ay(t){var e=t.content,n=t.width,r=t.height,i=t.transform,o=t.title,a=t.extra,s=t.watchable,c=s===void 0?!1:s,u=k(k(k({},a.attributes),o?{title:o}:{}),{},{class:a.classes.join(" ")});c&&(u[cr]="");var f=k({},a.styles);pf(i)&&(f.transform=rT({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=Ns(f);l.length>0&&(u.style=l);var d=[];return d.push({tag:"span",attributes:u,children:[e]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}function MT(t){var e=t.content,n=t.title,r=t.extra,i=k(k(k({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),o=Ns(r.styles);o.length>0&&(i.style=o);var a=[];return a.push({tag:"span",attributes:i,children:[e]}),n&&a.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),a}var Ef=ut.styles;function Df(t){var e=t[0],n=t[1],r=t.slice(4),i=of(r,1),o=i[0],a=null;return Array.isArray(o)?a={tag:"g",attributes:{class:"".concat(P.familyPrefix,"-").concat(ur.GROUP)},children:[{tag:"path",attributes:{class:"".concat(P.familyPrefix,"-").concat(ur.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(P.familyPrefix,"-").concat(ur.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var TT={found:!1,width:512,height:512};function IT(t,e){!ey&&!P.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}function Mf(t,e){var n=e;return e==="fa"&&P.styleDefault!==null&&(e=yn()),new Promise(function(r,i){if(Ut("missingIconAbstract"),n==="fa"){var o=yy(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&Ef[e]&&Ef[e][t]){var a=Ef[e][t];return r(Df(a))}IT(t,e),r(k(k({},TT),{},{icon:P.showMissingIcons&&t?Ut("missingIconAbstract")||{}:{}}))})}var xy=function(){},Tf=P.measurePerformance&&Ts&&Ts.mark&&Ts.measure?Ts:{mark:xy,measure:xy},To='FA "6.1.1"',kT=function(e){return Tf.mark("".concat(To," ").concat(e," begins")),function(){return wy(e)}},wy=function(e){Tf.mark("".concat(To," ").concat(e," ends")),Tf.measure("".concat(To," ").concat(e),"".concat(To," ").concat(e," begins"),"".concat(To," ").concat(e," ends"))},If={begin:kT,end:wy},Fs=function(){};function Cy(t){var e=t.getAttribute?t.getAttribute(cr):null;return typeof e=="string"}function NT(t){var e=t.getAttribute?t.getAttribute(lf):null,n=t.getAttribute?t.getAttribute(ff):null;return e&&n}function LT(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(P.replacementClass)}function BT(){if(P.autoReplaceSvg===!0)return zs.replace;var t=zs[P.autoReplaceSvg];return t||zs.replace}function OT(t){return ee.createElementNS("http://www.w3.org/2000/svg",t)}function PT(t){return ee.createElement(t)}function Sy(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?OT:PT:n;if(typeof t=="string")return ee.createTextNode(t);var i=r(t.tag);Object.keys(t.attributes||[]).forEach(function(a){i.setAttribute(a,t.attributes[a])});var o=t.children||[];return o.forEach(function(a){i.appendChild(Sy(a,{ceFn:r}))}),i}function FT(t){var e=" ".concat(t.outerHTML," ");return e="".concat(e,"Font Awesome fontawesome.com "),e}var zs={replace:function(e){var n=e[0];if(n.parentNode)if(e[1].forEach(function(i){n.parentNode.insertBefore(Sy(i),n)}),n.getAttribute(cr)===null&&P.keepOriginalSource){var r=ee.createComment(FT(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(e){var n=e[0],r=e[1];if(~hf(n).indexOf(P.replacementClass))return zs.replace(e);var i=new RegExp("".concat(P.familyPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var o=r[0].attributes.class.split(" ").reduce(function(s,c){return c===P.replacementClass||c.match(i)?s.toSvg.push(c):s.toNode.push(c),s},{toNode:[],toSvg:[]});r[0].attributes.class=o.toSvg.join(" "),o.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",o.toNode.join(" "))}var a=r.map(function(s){return Do(s)}).join(`
|
2136
|
-
`);n.setAttribute(cr,""),n.innerHTML=a}};function
|
2137
|
-
`),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function JT(t){return Promise.all([
|
2135
|
+
}`;function sy(){var t=J1,e=$1,n=P.familyPrefix,r=P.replacementClass,i=iT;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(s,".".concat(r))}return i}var cy=!1;function mf(){P.autoAddCss&&!cy&&($6(sy()),cy=!0)}var oT={mixout:function(){return{dom:{css:sy,insertCss:mf}}},hooks:function(){return{beforeDOMElementCreation:function(){mf()},beforeI2svg:function(){mf()}}}},jt=mn||{};jt[Rt]||(jt[Rt]={}),jt[Rt].styles||(jt[Rt].styles={}),jt[Rt].hooks||(jt[Rt].hooks={}),jt[Rt].shims||(jt[Rt].shims=[]);var ut=jt[Rt],uy=[],aT=function t(){ee.removeEventListener("DOMContentLoaded",t),Ls=1,uy.map(function(e){return e()})},Ls=!1;zt&&(Ls=(ee.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(ee.readyState),Ls||ee.addEventListener("DOMContentLoaded",aT));function sT(t){!zt||(Ls?setTimeout(t,0):uy.push(t))}function Do(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?ay(t):"<".concat(e," ").concat(tT(r),">").concat(o.map(Do).join(""),"</").concat(e,">")}function ly(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var cT=function(e,n){return function(r,i,o,a){return e.call(n,r,i,o,a)}},gf=function(e,n,r,i){var o=Object.keys(e),a=o.length,s=i!==void 0?cT(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<a;c++)u=o[c],f=s(f,e[u],u,e);return f};function uT(t){for(var e=[],n=0,r=t.length;n<r;){var i=t.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=t.charCodeAt(n++);(o&64512)==56320?e.push(((i&1023)<<10)+(o&1023)+65536):(e.push(i),n--)}else e.push(i)}return e}function yf(t){var e=uT(t);return e.length===1?e[0].toString(16):null}function lT(t,e){var n=t.length,r=t.charCodeAt(e),i;return r>=55296&&r<=56319&&n>e+1&&(i=t.charCodeAt(e+1),i>=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}function fy(t){return Object.keys(t).reduce(function(e,n){var r=t[n],i=!!r.icon;return i?e[r.iconName]=r.icon:e[n]=r,e},{})}function vf(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=fy(e);typeof ut.hooks.addPack=="function"&&!i?ut.hooks.addPack(t,fy(e)):ut.styles[t]=k(k({},ut.styles[t]||{}),o),t==="fas"&&vf("fa",e)}var Mo=ut.styles,fT=ut.shims,dT=Object.values(ny),bf=null,dy={},hy={},py={},my={},gy={},hT=Object.keys(df);function pT(t){return~W6.indexOf(t)}function mT(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!pT(i)?i:null}var yy=function(){var e=function(o){return gf(Mo,function(a,s,c){return a[c]=gf(s,o,{}),a},{})};dy=e(function(i,o,a){if(o[3]&&(i[o[3]]=a),o[2]){var s=o[2].filter(function(c){return typeof c=="number"});s.forEach(function(c){i[c.toString(16)]=a})}return i}),hy=e(function(i,o,a){if(i[a]=a,o[2]){var s=o[2].filter(function(c){return typeof c=="string"});s.forEach(function(c){i[c]=a})}return i}),gy=e(function(i,o,a){var s=o[2];return i[a]=a,s.forEach(function(c){i[c]=a}),i});var n="far"in Mo||P.autoFetchSvg,r=gf(fT,function(i,o){var a=o[0],s=o[1],c=o[2];return s==="far"&&!n&&(s="fas"),typeof a=="string"&&(i.names[a]={prefix:s,iconName:c}),typeof a=="number"&&(i.unicodes[a.toString(16)]={prefix:s,iconName:c}),i},{names:{},unicodes:{}});py=r.names,my=r.unicodes,bf=Bs(P.styleDefault)};J6(function(t){bf=Bs(t.styleDefault)}),yy();function Af(t,e){return(dy[t]||{})[e]}function gT(t,e){return(hy[t]||{})[e]}function $r(t,e){return(gy[t]||{})[e]}function vy(t){return py[t]||{prefix:null,iconName:null}}function yT(t){var e=my[t],n=Af("fas",t);return e||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function yn(){return bf}var xf=function(){return{prefix:null,iconName:null,rest:[]}};function Bs(t){var e=df[t],n=Is[t]||Is[e],r=t in ut.styles?t:null;return n||r||null}function Os(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.skipLookups,r=n===void 0?!1:n,i=null,o=t.reduce(function(a,s){var c=mT(P.familyPrefix,s);if(Mo[s]?(s=dT.includes(s)?H6[s]:s,i=s,a.prefix=s):hT.indexOf(s)>-1?(i=s,a.prefix=Bs(s)):c?a.iconName=c:s!==P.replacementClass&&a.rest.push(s),!r&&a.prefix&&a.iconName){var u=i==="fa"?vy(a.iconName):{},f=$r(a.prefix,a.iconName);u.prefix&&(i=null),a.iconName=u.iconName||f||a.iconName,a.prefix=u.prefix||a.prefix,a.prefix==="far"&&!Mo.far&&Mo.fas&&!P.autoFetchSvg&&(a.prefix="fas")}return a},xf());return(o.prefix==="fa"||i==="fa")&&(o.prefix=yn()||"fas"),o}var vT=function(){function t(){T6(this,t),this.definitions={}}return I6(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var a=i.reduce(this._pullDefinitions,{});Object.keys(a).forEach(function(s){n.definitions[s]=k(k({},n.definitions[s]||{}),a[s]),vf(s,a[s]);var c=ny[s];c&&vf(c,a[s]),yy()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var a=i[o],s=a.prefix,c=a.iconName,u=a.icon,f=u[2];n[s]||(n[s]={}),f.length>0&&f.forEach(function(l){typeof l=="string"&&(n[s][l]=u)}),n[s][c]=u}),n}}]),t}(),by=[],ei={},ti={},bT=Object.keys(ti);function AT(t,e){var n=e.mixoutsTo;return by=t,ei={},Object.keys(ti).forEach(function(r){bT.indexOf(r)===-1&&delete ti[r]}),by.forEach(function(r){var i=r.mixout?r.mixout():{};if(Object.keys(i).forEach(function(a){typeof i[a]=="function"&&(n[a]=i[a]),Ds(i[a])==="object"&&Object.keys(i[a]).forEach(function(s){n[a]||(n[a]={}),n[a][s]=i[a][s]})}),r.hooks){var o=r.hooks();Object.keys(o).forEach(function(a){ei[a]||(ei[a]=[]),ei[a].push(o[a])})}r.provides&&r.provides(ti)}),n}function wf(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var o=ei[t]||[];return o.forEach(function(a){e=a.apply(null,[e].concat(r))}),e}function lr(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=ei[t]||[];i.forEach(function(o){o.apply(null,n)})}function Ut(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return ti[t]?ti[t].apply(null,e):void 0}function Cf(t){t.prefix==="fa"&&(t.prefix="fas");var e=t.iconName,n=t.prefix||yn();if(!!e)return e=$r(n,e)||e,ly(Ay.definitions,n,e)||ly(ut.styles,n,e)}var Ay=new vT,xT=function(){P.autoReplaceSvg=!1,P.observeMutations=!1,lr("noAuto")},wT={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return zt?(lr("beforeI2svg",e),Ut("pseudoElements2svg",e),Ut("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot;P.autoReplaceSvg===!1&&(P.autoReplaceSvg=!0),P.observeMutations=!0,sT(function(){ST({autoReplaceSvgRoot:n}),lr("watch",e)})}},CT={icon:function(e){if(e===null)return null;if(Ds(e)==="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:$r(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){var n=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],r=Bs(e[0]);return{prefix:r,iconName:$r(r,n)||n}}if(typeof e=="string"&&(e.indexOf("".concat(P.familyPrefix,"-"))>-1||e.match(G6))){var i=Os(e.split(" "),{skipLookups:!0});return{prefix:i.prefix||yn(),iconName:$r(i.prefix,i.iconName)||i.iconName}}if(typeof e=="string"){var o=yn();return{prefix:o,iconName:$r(o,e)||e}}}},He={noAuto:xT,config:P,dom:wT,parse:CT,library:Ay,findIconDefinition:Cf,toHtml:Do},ST=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?ee:n;(Object.keys(ut.styles).length>0||P.autoFetchSvg)&&zt&&P.autoReplaceSvg&&He.dom.i2svg({node:r})};function Ps(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return Do(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!zt){var r=ee.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function ET(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(pf(a)&&n.found&&!r.found){var s=n.width,c=n.height,u={x:s/c/2,y:.5};i.style=Ns(k(k({},o),{},{"transform-origin":"".concat(u.x+a.x/16,"em ").concat(u.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function DT(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,a=o===!0?"".concat(e,"-").concat(P.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:k(k({},i),{},{id:a}),children:r}]}]}function Sf(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,a=t.transform,s=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,d=t.watchable,h=d===void 0?!1:d,p=r.found?r:n,m=p.width,g=p.height,y=i==="fak",A=[P.replacementClass,o?"".concat(P.familyPrefix,"-").concat(o):""].filter(function(I){return l.classes.indexOf(I)===-1}).filter(function(I){return I!==""||!!I}).concat(l.classes).join(" "),x={children:[],attributes:k(k({},l.attributes),{},{"data-prefix":i,"data-icon":o,class:A,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(g)})},w=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/g*16*.0625,"em")}:{};h&&(x.attributes[cr]=""),c&&(x.children.push({tag:"title",attributes:{id:x.attributes["aria-labelledby"]||"title-".concat(f||Eo())},children:[c]}),delete x.attributes.title);var b=k(k({},x),{},{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:s,styles:k(k({},w),l.styles)}),v=r.found&&n.found?Ut("generateAbstractMask",b)||{children:[],attributes:{}}:Ut("generateAbstractIcon",b)||{children:[],attributes:{}},C=v.children,S=v.attributes;return b.children=C,b.attributes=S,s?DT(b):ET(b)}function xy(t){var e=t.content,n=t.width,r=t.height,i=t.transform,o=t.title,a=t.extra,s=t.watchable,c=s===void 0?!1:s,u=k(k(k({},a.attributes),o?{title:o}:{}),{},{class:a.classes.join(" ")});c&&(u[cr]="");var f=k({},a.styles);pf(i)&&(f.transform=rT({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=Ns(f);l.length>0&&(u.style=l);var d=[];return d.push({tag:"span",attributes:u,children:[e]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}function MT(t){var e=t.content,n=t.title,r=t.extra,i=k(k(k({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),o=Ns(r.styles);o.length>0&&(i.style=o);var a=[];return a.push({tag:"span",attributes:i,children:[e]}),n&&a.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),a}var Ef=ut.styles;function Df(t){var e=t[0],n=t[1],r=t.slice(4),i=of(r,1),o=i[0],a=null;return Array.isArray(o)?a={tag:"g",attributes:{class:"".concat(P.familyPrefix,"-").concat(ur.GROUP)},children:[{tag:"path",attributes:{class:"".concat(P.familyPrefix,"-").concat(ur.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(P.familyPrefix,"-").concat(ur.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var TT={found:!1,width:512,height:512};function IT(t,e){!ty&&!P.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}function Mf(t,e){var n=e;return e==="fa"&&P.styleDefault!==null&&(e=yn()),new Promise(function(r,i){if(Ut("missingIconAbstract"),n==="fa"){var o=vy(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&Ef[e]&&Ef[e][t]){var a=Ef[e][t];return r(Df(a))}IT(t,e),r(k(k({},TT),{},{icon:P.showMissingIcons&&t?Ut("missingIconAbstract")||{}:{}}))})}var wy=function(){},Tf=P.measurePerformance&&Ts&&Ts.mark&&Ts.measure?Ts:{mark:wy,measure:wy},To='FA "6.1.1"',kT=function(e){return Tf.mark("".concat(To," ").concat(e," begins")),function(){return Cy(e)}},Cy=function(e){Tf.mark("".concat(To," ").concat(e," ends")),Tf.measure("".concat(To," ").concat(e),"".concat(To," ").concat(e," begins"),"".concat(To," ").concat(e," ends"))},If={begin:kT,end:Cy},Fs=function(){};function Sy(t){var e=t.getAttribute?t.getAttribute(cr):null;return typeof e=="string"}function NT(t){var e=t.getAttribute?t.getAttribute(lf):null,n=t.getAttribute?t.getAttribute(ff):null;return e&&n}function LT(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(P.replacementClass)}function BT(){if(P.autoReplaceSvg===!0)return zs.replace;var t=zs[P.autoReplaceSvg];return t||zs.replace}function OT(t){return ee.createElementNS("http://www.w3.org/2000/svg",t)}function PT(t){return ee.createElement(t)}function Ey(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?OT:PT:n;if(typeof t=="string")return ee.createTextNode(t);var i=r(t.tag);Object.keys(t.attributes||[]).forEach(function(a){i.setAttribute(a,t.attributes[a])});var o=t.children||[];return o.forEach(function(a){i.appendChild(Ey(a,{ceFn:r}))}),i}function FT(t){var e=" ".concat(t.outerHTML," ");return e="".concat(e,"Font Awesome fontawesome.com "),e}var zs={replace:function(e){var n=e[0];if(n.parentNode)if(e[1].forEach(function(i){n.parentNode.insertBefore(Ey(i),n)}),n.getAttribute(cr)===null&&P.keepOriginalSource){var r=ee.createComment(FT(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(e){var n=e[0],r=e[1];if(~hf(n).indexOf(P.replacementClass))return zs.replace(e);var i=new RegExp("".concat(P.familyPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var o=r[0].attributes.class.split(" ").reduce(function(s,c){return c===P.replacementClass||c.match(i)?s.toSvg.push(c):s.toNode.push(c),s},{toNode:[],toSvg:[]});r[0].attributes.class=o.toSvg.join(" "),o.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",o.toNode.join(" "))}var a=r.map(function(s){return Do(s)}).join(`
|
2136
|
+
`);n.setAttribute(cr,""),n.innerHTML=a}};function Dy(t){t()}function My(t,e){var n=typeof e=="function"?e:Fs;if(t.length===0)n();else{var r=Dy;P.mutateApproach===j6&&(r=mn.requestAnimationFrame||Dy),r(function(){var i=BT(),o=If.begin("mutate");t.map(i),o(),n()})}}var kf=!1;function Ty(){kf=!0}function Nf(){kf=!1}var Rs=null;function Iy(t){if(!!q1&&!!P.observeMutations){var e=t.treeCallback,n=e===void 0?Fs:e,r=t.nodeCallback,i=r===void 0?Fs:r,o=t.pseudoElementsCallback,a=o===void 0?Fs:o,s=t.observeMutationsRoot,c=s===void 0?ee:s;Rs=new q1(function(u){if(!kf){var f=yn();Jr(u).forEach(function(l){if(l.type==="childList"&&l.addedNodes.length>0&&!Sy(l.addedNodes[0])&&(P.searchPseudoElements&&a(l.target),n(l.target)),l.type==="attributes"&&l.target.parentNode&&P.searchPseudoElements&&a(l.target.parentNode),l.type==="attributes"&&Sy(l.target)&&~_6.indexOf(l.attributeName))if(l.attributeName==="class"&&NT(l.target)){var d=Os(hf(l.target)),h=d.prefix,p=d.iconName;l.target.setAttribute(lf,h||f),p&&l.target.setAttribute(ff,p)}else LT(l.target)&&i(l.target)})}}),zt&&Rs.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function zT(){!Rs||Rs.disconnect()}function RT(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce(function(r,i){var o=i.split(":"),a=o[0],s=o.slice(1);return a&&s.length>0&&(r[a]=s.join(":").trim()),r},{})),n}function jT(t){var e=t.getAttribute("data-prefix"),n=t.getAttribute("data-icon"),r=t.innerText!==void 0?t.innerText.trim():"",i=Os(hf(t));return i.prefix||(i.prefix=yn()),e&&n&&(i.prefix=e,i.iconName=n),i.iconName&&i.prefix||i.prefix&&r.length>0&&(i.iconName=gT(i.prefix,t.innerText)||Af(i.prefix,yf(t.innerText))),i}function UT(t){var e=Jr(t.attributes).reduce(function(i,o){return i.name!=="class"&&i.name!=="style"&&(i[o.name]=o.value),i},{}),n=t.getAttribute("title"),r=t.getAttribute("data-fa-title-id");return P.autoA11y&&(n?e["aria-labelledby"]="".concat(P.replacementClass,"-title-").concat(r||Eo()):(e["aria-hidden"]="true",e.focusable="false")),e}function HT(){return{iconName:null,title:null,titleId:null,prefix:null,transform:At,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function ky(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=jT(t),r=n.iconName,i=n.prefix,o=n.rest,a=UT(t),s=wf("parseNodeAttributes",{},t),c=e.styleParser?RT(t):[];return k({iconName:r,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:i,transform:At,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:c,attributes:a}},s)}var GT=ut.styles;function Ny(t){var e=P.autoReplaceSvg==="nest"?ky(t,{styleParser:!1}):ky(t);return~e.extra.classes.indexOf(ry)?Ut("generateLayersText",t,e):Ut("generateSvgReplacementMutation",t,e)}function Ly(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!zt)return Promise.resolve();var n=ee.documentElement.classList,r=function(l){return n.add("".concat(ey,"-").concat(l))},i=function(l){return n.remove("".concat(ey,"-").concat(l))},o=P.autoFetchSvg?Object.keys(df):Object.keys(GT),a=[".".concat(ry,":not([").concat(cr,"])")].concat(o.map(function(f){return".".concat(f,":not([").concat(cr,"])")})).join(", ");if(a.length===0)return Promise.resolve();var s=[];try{s=Jr(t.querySelectorAll(a))}catch{}if(s.length>0)r("pending"),i("complete");else return Promise.resolve();var c=If.begin("onTree"),u=s.reduce(function(f,l){try{var d=Ny(l);d&&f.push(d)}catch(h){ty||h.name==="MissingIcon"&&console.error(h)}return f},[]);return new Promise(function(f,l){Promise.all(u).then(function(d){My(d,function(){r("active"),r("complete"),i("pending"),typeof e=="function"&&e(),c(),f()})}).catch(function(d){c(),l(d)})})}function QT(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;Ny(t).then(function(n){n&&My([n],e)})}function VT(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:Cf(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:Cf(i||{})),t(r,k(k({},n),{},{mask:i}))}}var YT=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,i=r===void 0?At:r,o=n.symbol,a=o===void 0?!1:o,s=n.mask,c=s===void 0?null:s,u=n.maskId,f=u===void 0?null:u,l=n.title,d=l===void 0?null:l,h=n.titleId,p=h===void 0?null:h,m=n.classes,g=m===void 0?[]:m,y=n.attributes,A=y===void 0?{}:y,x=n.styles,w=x===void 0?{}:x;if(!!e){var b=e.prefix,v=e.iconName,C=e.icon;return Ps(k({type:"icon"},e),function(){return lr("beforeDOMElementCreation",{iconDefinition:e,params:n}),P.autoA11y&&(d?A["aria-labelledby"]="".concat(P.replacementClass,"-title-").concat(p||Eo()):(A["aria-hidden"]="true",A.focusable="false")),Sf({icons:{main:Df(C),mask:c?Df(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:v,transform:k(k({},At),i),symbol:a,title:d,maskId:f,titleId:p,extra:{attributes:A,styles:w,classes:g}})})}},_T={mixout:function(){return{icon:VT(YT)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=Ly,n.nodeCallback=QT,n}}},provides:function(e){e.i2svg=function(n){var r=n.node,i=r===void 0?ee:r,o=n.callback,a=o===void 0?function(){}:o;return Ly(i,a)},e.generateSvgReplacementMutation=function(n,r){var i=r.iconName,o=r.title,a=r.titleId,s=r.prefix,c=r.transform,u=r.symbol,f=r.mask,l=r.maskId,d=r.extra;return new Promise(function(h,p){Promise.all([Mf(i,s),f.iconName?Mf(f.iconName,f.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(m){var g=of(m,2),y=g[0],A=g[1];h([n,Sf({icons:{main:y,mask:A},prefix:s,iconName:i,transform:c,symbol:u,maskId:l,title:o,titleId:a,extra:d,watchable:!0})])}).catch(p)})},e.generateAbstractIcon=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.transform,s=n.styles,c=Ns(s);c.length>0&&(i.style=c);var u;return pf(a)&&(u=Ut("generateAbstractTransformGrouping",{main:o,transform:a,containerWidth:o.width,iconWidth:o.width})),r.push(u||o.icon),{children:r,attributes:i}}}},WT={mixout:function(){return{layer:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.classes,o=i===void 0?[]:i;return Ps({type:"layer"},function(){lr("beforeDOMElementCreation",{assembler:n,params:r});var a=[];return n(function(s){Array.isArray(s)?s.map(function(c){a=a.concat(c.abstract)}):a=a.concat(s.abstract)}),[{tag:"span",attributes:{class:["".concat(P.familyPrefix,"-layers")].concat(Ms(o)).join(" ")},children:a}]})}}}},XT={mixout:function(){return{counter:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.title,o=i===void 0?null:i,a=r.classes,s=a===void 0?[]:a,c=r.attributes,u=c===void 0?{}:c,f=r.styles,l=f===void 0?{}:f;return Ps({type:"counter",content:n},function(){return lr("beforeDOMElementCreation",{content:n,params:r}),MT({content:n.toString(),title:o,extra:{attributes:u,styles:l,classes:["".concat(P.familyPrefix,"-layers-counter")].concat(Ms(s))}})})}}}},ZT={mixout:function(){return{text:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.transform,o=i===void 0?At:i,a=r.title,s=a===void 0?null:a,c=r.classes,u=c===void 0?[]:c,f=r.attributes,l=f===void 0?{}:f,d=r.styles,h=d===void 0?{}:d;return Ps({type:"text",content:n},function(){return lr("beforeDOMElementCreation",{content:n,params:r}),xy({content:n,transform:k(k({},At),o),title:s,extra:{attributes:l,styles:h,classes:["".concat(P.familyPrefix,"-layers-text")].concat(Ms(u))}})})}}},provides:function(e){e.generateLayersText=function(n,r){var i=r.title,o=r.transform,a=r.extra,s=null,c=null;if(K1){var u=parseInt(getComputedStyle(n).fontSize,10),f=n.getBoundingClientRect();s=f.width/u,c=f.height/u}return P.autoA11y&&!i&&(a.attributes["aria-hidden"]="true"),Promise.resolve([n,xy({content:n.innerHTML,width:s,height:c,transform:o,title:i,extra:a,watchable:!0})])}}},qT=new RegExp('"',"ug"),By=[1105920,1112319];function KT(t){var e=t.replace(qT,""),n=lT(e,0),r=n>=By[0]&&n<=By[1],i=e.length===2?e[0]===e[1]:!1;return{value:yf(i?e[0]:e),isSecondary:r||i}}function Oy(t,e){var n="".concat(R6).concat(e.replace(":","-"));return new Promise(function(r,i){if(t.getAttribute(n)!==null)return r();var o=Jr(t.children),a=o.filter(function(v){return v.getAttribute(uf)===e})[0],s=mn.getComputedStyle(t,e),c=s.getPropertyValue("font-family").match(Q6),u=s.getPropertyValue("font-weight"),f=s.getPropertyValue("content");if(a&&!c)return t.removeChild(a),r();if(c&&f!=="none"&&f!==""){var l=s.getPropertyValue("content"),d=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(c[2])?Is[c[2].toLowerCase()]:V6[u],h=KT(l),p=h.value,m=h.isSecondary,g=c[0].startsWith("FontAwesome"),y=Af(d,p),A=y;if(g){var x=yT(p);x.iconName&&x.prefix&&(y=x.iconName,d=x.prefix)}if(y&&!m&&(!a||a.getAttribute(lf)!==d||a.getAttribute(ff)!==A)){t.setAttribute(n,A),a&&t.removeChild(a);var w=HT(),b=w.extra;b.attributes[uf]=e,Mf(y,d).then(function(v){var C=Sf(k(k({},w),{},{icons:{main:v,mask:xf()},prefix:d,iconName:A,extra:b,watchable:!0})),S=ee.createElement("svg");e==="::before"?t.insertBefore(S,t.firstChild):t.appendChild(S),S.outerHTML=C.map(function(I){return Do(I)}).join(`
|
2137
|
+
`),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function JT(t){return Promise.all([Oy(t,"::before"),Oy(t,"::after")])}function $T(t){return t.parentNode!==document.head&&!~U6.indexOf(t.tagName.toUpperCase())&&!t.getAttribute(uf)&&(!t.parentNode||t.parentNode.tagName!=="svg")}function Py(t){if(!!zt)return new Promise(function(e,n){var r=Jr(t.querySelectorAll("*")).filter($T).map(JT),i=If.begin("searchPseudoElements");Ty(),Promise.all(r).then(function(){i(),Nf(),e()}).catch(function(){i(),Nf(),n()})})}var eI={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=Py,n}}},provides:function(e){e.pseudoElements2svg=function(n){var r=n.node,i=r===void 0?ee:r;P.searchPseudoElements&&Py(i)}}},Fy=!1,tI={mixout:function(){return{dom:{unwatch:function(){Ty(),Fy=!0}}}},hooks:function(){return{bootstrap:function(){Iy(wf("mutationObserverCallbacks",{}))},noAuto:function(){zT()},watch:function(n){var r=n.observeMutationsRoot;Fy?Nf():Iy(wf("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},zy=function(e){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce(function(r,i){var o=i.toLowerCase().split("-"),a=o[0],s=o.slice(1).join("-");if(a&&s==="h")return r.flipX=!0,r;if(a&&s==="v")return r.flipY=!0,r;if(s=parseFloat(s),isNaN(s))return r;switch(a){case"grow":r.size=r.size+s;break;case"shrink":r.size=r.size-s;break;case"left":r.x=r.x-s;break;case"right":r.x=r.x+s;break;case"up":r.y=r.y-s;break;case"down":r.y=r.y+s;break;case"rotate":r.rotate=r.rotate+s;break}return r},n)},nI={mixout:function(){return{parse:{transform:function(n){return zy(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-transform");return i&&(n.transform=zy(i)),n}}},provides:function(e){e.generateAbstractTransformGrouping=function(n){var r=n.main,i=n.transform,o=n.containerWidth,a=n.iconWidth,s={transform:"translate(".concat(o/2," 256)")},c="translate(".concat(i.x*32,", ").concat(i.y*32,") "),u="scale(".concat(i.size/16*(i.flipX?-1:1),", ").concat(i.size/16*(i.flipY?-1:1),") "),f="rotate(".concat(i.rotate," 0 0)"),l={transform:"".concat(c," ").concat(u," ").concat(f)},d={transform:"translate(".concat(a/2*-1," -256)")},h={outer:s,inner:l,path:d};return{tag:"g",attributes:k({},h.outer),children:[{tag:"g",attributes:k({},h.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:k(k({},r.icon.attributes),h.path)}]}]}}}},Lf={x:0,y:0,width:"100%",height:"100%"};function Ry(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function rI(t){return t.tag==="g"?t.children:[t]}var iI={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-mask"),o=i?Os(i.split(" ").map(function(a){return a.trim()})):xf();return o.prefix||(o.prefix=yn()),n.mask=o,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(e){e.generateAbstractMask=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.mask,s=n.maskId,c=n.transform,u=o.width,f=o.icon,l=a.width,d=a.icon,h=nT({transform:c,containerWidth:l,iconWidth:u}),p={tag:"rect",attributes:k(k({},Lf),{},{fill:"white"})},m=f.children?{children:f.children.map(Ry)}:{},g={tag:"g",attributes:k({},h.inner),children:[Ry(k({tag:f.tag,attributes:k(k({},f.attributes),h.path)},m))]},y={tag:"g",attributes:k({},h.outer),children:[g]},A="mask-".concat(s||Eo()),x="clip-".concat(s||Eo()),w={tag:"mask",attributes:k(k({},Lf),{},{id:A,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[p,y]},b={tag:"defs",children:[{tag:"clipPath",attributes:{id:x},children:rI(d)},w]};return r.push(b,{tag:"rect",attributes:k({fill:"currentColor","clip-path":"url(#".concat(x,")"),mask:"url(#".concat(A,")")},Lf)}),{children:r,attributes:i}}}},oI={provides:function(e){var n=!1;mn.matchMedia&&(n=mn.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){var r=[],i={fill:"currentColor"},o={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:k(k({},i),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var a=k(k({},o),{},{attributeName:"opacity"}),s={tag:"circle",attributes:k(k({},i),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||s.children.push({tag:"animate",attributes:k(k({},o),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:k(k({},a),{},{values:"1;0;1;1;0;1;"})}),r.push(s),r.push({tag:"path",attributes:k(k({},i),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:k(k({},a),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:k(k({},i),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:k(k({},a),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},aI={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-symbol"),o=i===null?!1:i===""?!0:i;return n.symbol=o,n}}}},sI=[oT,_T,WT,XT,ZT,eI,tI,nI,iI,oI,aI];AT(sI,{mixoutsTo:He}),He.noAuto,He.config,He.library,He.dom,He.parse,He.findIconDefinition,He.toHtml;var K=He.icon;He.layer,He.text,He.counter;/**
|
2138
2138
|
* @license
|
2139
2139
|
* Copyright 2018 Google LLC
|
2140
2140
|
* SPDX-License-Identifier: BSD-3-Clause
|
@@ -2142,32 +2142,32 @@ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
|
2142
2142
|
* @license
|
2143
2143
|
* Copyright 2020 Google LLC
|
2144
2144
|
* SPDX-License-Identifier: BSD-3-Clause
|
2145
|
-
*/const{I:cI}=
|
2145
|
+
*/const{I:cI}=u4,uI=t=>t===null||typeof t!="object"&&typeof t!="function",jy=t=>t.strings===void 0,Uy=()=>document.createComment(""),Io=(t,e,n)=>{var r;const i=t._$AA.parentNode,o=e===void 0?t._$AB:e._$AA;if(n===void 0){const a=i.insertBefore(Uy(),o),s=i.insertBefore(Uy(),o);n=new cI(a,s,t,t.options)}else{const a=n._$AB.nextSibling,s=n._$AM,c=s!==t;if(c){let u;(r=n._$AQ)===null||r===void 0||r.call(n,t),n._$AM=t,n._$AP!==void 0&&(u=t._$AU)!==s._$AU&&n._$AP(u)}if(a!==o||c){let u=n._$AA;for(;u!==a;){const f=u.nextSibling;i.insertBefore(u,o),u=f}}}return n},fr=(t,e,n=t)=>(t._$AI(e,n),t),lI={},Hy=(t,e=lI)=>t._$AH=e,fI=t=>t._$AH,Of=t=>{var e;(e=t._$AP)===null||e===void 0||e.call(t,!1,!0);let n=t._$AA;const r=t._$AB.nextSibling;for(;n!==r;){const i=n.nextSibling;n.remove(),n=i}};/**
|
2146
2146
|
* @license
|
2147
2147
|
* Copyright 2017 Google LLC
|
2148
2148
|
* SPDX-License-Identifier: BSD-3-Clause
|
2149
|
-
*/const Hy=(t,e,n)=>{const r=new Map;for(let i=e;i<=n;i++)r.set(t[i],i);return r},dI=ar(class extends Kr{constructor(t){if(super(t),t.type!==bt.CHILD)throw Error("repeat() can only be used in text expressions")}ht(t,e,n){let r;n===void 0?n=e:e!==void 0&&(r=e);const i=[],o=[];let a=0;for(const s of t)i[a]=r?r(s,a):a,o[a]=n(s,a),a++;return{values:o,keys:i}}render(t,e,n){return this.ht(t,e,n).values}update(t,[e,n,r]){var i;const o=fI(t),{values:a,keys:s}=this.ht(e,n,r);if(!Array.isArray(o))return this.ut=s,a;const c=(i=this.ut)!==null&&i!==void 0?i:this.ut=[],u=[];let f,l,d=0,h=o.length-1,p=0,m=a.length-1;for(;d<=h&&p<=m;)if(o[d]===null)d++;else if(o[h]===null)h--;else if(c[d]===s[p])u[p]=fr(o[d],a[p]),d++,p++;else if(c[h]===s[m])u[m]=fr(o[h],a[m]),h--,m--;else if(c[d]===s[m])u[m]=fr(o[d],a[m]),Io(t,u[m+1],o[d]),d++,m--;else if(c[h]===s[p])u[p]=fr(o[h],a[p]),Io(t,o[d],o[h]),h--,p++;else if(f===void 0&&(f=Hy(s,p,m),l=Hy(c,d,h)),f.has(c[d]))if(f.has(c[h])){const g=l.get(s[p]),y=g!==void 0?o[g]:null;if(y===null){const A=Io(t,o[d]);fr(A,a[p]),u[p]=A}else u[p]=fr(y,a[p]),Io(t,o[d],y),o[g]=null;p++}else Of(o[h]),h--;else Of(o[d]),d++;for(;p<=m;){const g=Io(t,u[m+1]);fr(g,a[p]),u[p++]=g}for(;d<=h;){const g=o[d++];g!==null&&Of(g)}return this.ut=s,Uy(t,u),Ae}}),Gy="close-dialog";function hI(){return new CustomEvent(Gy,{bubbles:!0})}function dr(t="default",e=document.body){const n=document.createElement("div");n.classList.add("gs-modal"),t!="default"&&n.classList.add(t);const r=o=>{var a;switch(o.key){case"Escape":{const s=n.querySelector(".btn-cancel");s&&(s.click(),o.stopPropagation());break}case"Enter":{if(((a=o.target)==null?void 0:a.tagName)=="TEXTAREA")return;n.querySelector(".btn-primary").click(),o.stopPropagation();break}}};n.addEventListener("keydown",r),Be(D`<div class="backdrop"></div><div class="content"></div>`,n);const i=()=>{n.querySelector(".backdrop").addEventListener("transitionend",()=>n.remove()),n.classList.remove("visible"),document.body.classList.remove(Yn)};return n.addEventListener("keydown",o=>{o.stopPropagation()}),n.addEventListener(Gy,i),e.appendChild(n),window.requestAnimationFrame(()=>n.classList.add("visible")),t!="tour"&&document.body.classList.add(Yn),{content:n.querySelector(".content"),close:i}}function Ge(t,e={}){var i;const n=dr(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,a)=>{const s=()=>{n.close(),o(!0)},c=D`${r?D`<div class="modal-title">${r}</div>`:z}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?D`<button class="btn" @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:z} <button class="btn" @click="${s}">${e.okLabel}</button></div>`;Be(c,n.content)})}class Qy extends vt{constructor(){super();te(this,cc);te(this,uc);te(this,qo);te(this,lc);te(this,di,void 0);te(this,Wt,void 0);te(this,wn,void 0);te(this,Zo,0);this.values=[],this.thresholds=[],this.operators=[],this.colors=Vy,this.showThresholdNumbers=!1,tt(this,di,Qb().thresholds(40)),tt(this,Wt,G(this,di).call(this,[])),tt(this,wn,La())}connectedCallback(){super.connectedCallback()}createRenderRoot(){return this}willUpdate(n){n.has("values")&&(tt(this,Wt,G(this,di).call(this,this.values)),tt(this,wn,La().domain(this.domain).range([0,100])))}get domain(){return[G(this,Wt).at(0).x0,G(this,Wt).at(-1).x1]}render(){const n=G(this,wn),r=100/G(this,Wt).length,i=se(this,lc,V2).call(this).map(o=>D`<div style="${Bf({width:r+.01+"%",left:o.x+"%",bottom:o.y+"%",height:o.height+"%",backgroundColor:typeof o.group=="number"?this.colors[o.group%this.colors.length]:"default"})}"></div>`);return D`<div class="histogram-widget"><div class="histogram-plot"><div class="histogram-bars">${i}</div><div class="histogram-thresholds" @click="${se(this,cc,G2)}">${this.thresholds.map((o,a)=>{const s=n(o);return s>=0&&s<=100?D`<div class="histogram-threshold" style="${Bf({left:n(o)+"%"})}"><div class="histogram-knob" @mousedown="${c=>se(this,uc,Q2).call(this,c,a)}">${this.showThresholdNumbers?a+1:z}</div></div>`:z})}</div><div class="${nf({"histogram-hint":!0,visible:!this.thresholds.length})}"><span>Click here to add a threshold!</span></div></div><div class="histogram-domain"></div><div class="histogram-extent">${n.domain().map(o=>D`<div>${o}</div>`)}</div></div>`}}di=new WeakMap,Wt=new WeakMap,wn=new WeakMap,Zo=new WeakMap,cc=new WeakSet,G2=function(n){if(performance.now()<G(this,Zo)+200)return;const r=n.target,i=dp(r,n);se(this,qo,Rd).call(this,"add",0,i[0]/r.offsetWidth)},uc=new WeakSet,Q2=function(n,r){const o=n.target.closest(".histogram-threshold"),a=o.offsetLeft,s=o.offsetParent.offsetWidth;n.preventDefault(),n.stopPropagation(),this.style.cursor="col-resize",mI(n,(c,u)=>{se(this,qo,Rd).call(this,"adjust",r,(a+c)/s)},()=>{tt(this,Zo,performance.now()),this.style.cursor=""})},qo=new WeakSet,Rd=function(n,r,i){i=ms(i,0,1),this.dispatchEvent(new pI(n,r,+G(this,wn).invert(i*100).toPrecision(3)))},lc=new WeakSet,V2=function(){const n=G(this,Wt),r=G(this,wn),i=90/n.map(f=>f.length).reduce((f,l)=>Math.max(f,l),0),o=[],a=this.thresholds.length==1&&this.operators[0]=="eq",s=[-1/0,...this.thresholds,1/0],c=[!1,...this.operators.map(f=>["lte","gt"].includes(f)),!0],u=["gt","gte"].includes(this.operators[0])?f=>s.length-f-2:f=>f;for(let f=0;f<n.length;f++){const l=n[f],d=r(l.x0);let h=0,p=0;if(a)for(let m=0;m<=1;m++)p=yI(l,this.thresholds[0],m>0),p&&o.push({x:d,y:h*i,height:p*i,group:m}),h+=p;else if(this.thresholds.length)for(let m=0;m<s.length-1;m++){const g=u(m);p=gI(l,s[g],s[g+1],!c[g],c[g+1]),p&&o.push({x:d,y:h*i,height:p*i,group:m}),h+=p}else p=l.length,p&&o.push({x:d,y:h,height:p*i,group:null})}return o},hc(Qy,"properties",{values:{attribute:!1},thresholds:{attribute:!1},operators:{attribute:!1},colors:{attribute:!1},showThresholdNumbers:{}}),customElements.define("genome-spy-histogram",Qy);class pI extends Event{constructor(e,n,r){super(e),this.index=n,this.value=r}}function mI(t,e,n){const r=t.clientX,i=t.clientY,o=function(s){e(s.clientX-r,s.clientY-i)},a=function(s){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",a),n==null||n(s.clientX-r,s.clientY-i)};document.addEventListener("mousemove",o),document.addEventListener("mouseup",a)}function gI(t,e,n,r=!0,i=!1){const o=r?c=>c>=e:c=>c>e,a=i?c=>c<=n:c=>c<n;let s=0;for(let c=0;c<t.length;c++){const u=t[c];o(u)&&a(u)&&s++}return s}function yI(t,e,n=!1){let r=0;for(let i=0;i<t.length;i++)r+=+(t[i]==e);return n?t.length-r:r}const Vy=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b"];function vI(t,e){var r;const n=(r=t.scale)==null?void 0:r.type;on(n)?bI(t,e):Re(n)||Gn(n)?AI(t,e):Ge("Not implemented (yet).")}function bI(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=new Set(Yy(t,e.leafSamples,e.sampleHierarchy)),o=r.domain().filter(w=>i.has(w)).map((w,b)=>({index:b,value:w,stringValue:`${w}`,lowerCaseValue:`${w}`.toLowerCase()})),a=dr(),s=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,c=new Set;let u="";const f=w=>{n(e.actions.filterByNominal({values:r.domain().filter(b=>c.has(b)),attribute:t.attribute,remove:w})),a.close()},l=()=>o.filter(w=>u.length==0||w.lowerCaseValue.includes(u)),d=w=>{u=w.target.value.toLowerCase(),x()},h=w=>{const b=w.target,v=o[+b.value].value;b.checked?c.add(v):c.delete(v),x()},p=w=>{var b;if(w.key=="ArrowDown")(b=a.content.querySelector(".gs-checkbox-list li:first-child input[type='checkbox']"))==null||b.focus(),w.preventDefault(),w.stopPropagation();else if(w.key=="Enter"){const v=l();v.length==1&&(c.add(v[0].value),x()),w.stopPropagation()}},m=()=>{a.content.querySelector("input[type='text']").focus()},g=w=>{var v,C,S,I,N;const b=w.target;if(b.type=="checkbox")if(w.key=="ArrowDown")(C=(v=b.closest("li").nextElementSibling)==null?void 0:v.querySelector("input[type='checkbox']"))==null||C.focus(),w.preventDefault();else if(w.key=="ArrowUp"){const T=(S=b.closest("li").previousElementSibling)==null?void 0:S.querySelector("input[type='checkbox']");T?T.focus():m(),w.preventDefault()}else w.key=="Esc"?(m(),w.stopPropagation()):w.key=="Tab"&&!w.shiftKey?(I=b.closest(".gs-checkbox-list").querySelector("li:last-child input"))==null||I.focus():w.key=="Tab"&&w.shiftKey&&((N=b.closest(".gs-checkbox-list").querySelector("li:first-child input"))==null||N.focus())},y=()=>D`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>a.close()}">Cancel</button> <button class="btn" ?disabled="${!c.size}" @click="${()=>f(!1)}">${K(sr).node[0]} Retain</button> <button class="btn" ?disabled="${!c.size}" @click="${()=>f(!0)}">${K(Es).node[0]} Remove</button></div>`,A=r;function x(){const w=l(),b=D`<div class="gs-form-group"><p>Please select one or more categories and choose an action.</p><input type="text" placeholder="Type something to filter the list" @keydown="${p}" @input="${d}"><div class="gs-checkbox-list-wrapper"><ul class="gs-checkbox-list" @input="${h}" @keydown="${g}">${dI(w,C=>C.value,C=>D`<li><label class="checkbox"><span class="color" style="${Bf({backgroundColor:A(C.value).toString()})}"></span> <input type="checkbox" .checked="${c.has(C.value)}" .value="${""+C.index}"> ${C.stringValue}</label></li>`)}</ul>${w.length==0?D`<div class="search-note"><div>Nothing found</div></div>`:w.length==1&&o.length>1?D`<div class="search-note"><div>${K(r6).node[0]} Hit enter to select the exact match</div></div>`:z}</div><small>The number of selected categories: <strong>${c.size}</strong></small></div>`;Be(D`${s}<div class="modal-body">${b}</div>${y()}`,a.content);const v=a.content.querySelector(".gs-checkbox-list");v.style.minHeight=`${v.offsetHeight}px`}x(),m()}function AI(t,e){var g;const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=dr(),a=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=y=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>D`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn btn-primary" ?disabled="${typeof i>"u"}" @click="${()=>s()}">${K(sr).node[0]} Retain</button></div>`,u=y=>{r=y.target.value,m()},f=y=>{const x=y.target.value;/^\d+(\.(\d+)?)?$/.test(x)&&(i=+x,m())},l=y=>{typeof i!="number"&&(i=y.value,m())},d=y=>{i=y.value,m()},h=Yy(t,e.leafSamples,e.sampleHierarchy),p=()=>D`<div class="gs-form-group"><label>Retain samples where <em>${t.name}</em> is</label><div class="btn-group" role="group">${Object.entries(xI).map(([y,A])=>D`<button class="${nf({btn:!0,chosen:y==r})}" .value="${y}" @click="${u}" title="${A[1]}">${A[0]}</button>`)}</div><genome-spy-histogram .values="${h}" .thresholds="${[i].filter(y=>y!==void 0)}" .operators="${[r]}" .colors="${["#1f77b4","#ddd"]}" .showThresholdNumbers="${!1}" @add="${l}" @adjust="${d}"></genome-spy-histogram><input type="text" placeholder="... or enter a numeric value here" .value="${typeof i=="number"?""+i:""}" @input="${f}"></div>`;function m(){Be(D`${a}<div class="modal-body">${p()}</div>${c()}`,o.content)}m(),(g=o.content.querySelector("input[type='text']"))==null||g.focus()}const xI={lt:["<","less than"],lte:["\u2264","less than or equal to"],eq:["=","equal to"],gte:["\u2265","greater than or equal to"],gt:[">","greater than"]};function Yy(t,e,n){const r=t.accessor;return e.map(i=>r(i,n))}function lt(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function vn(t){return!!t&&!!t[oe]}function Ht(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===kI}(t)||Array.isArray(t)||!!t[tv]||!!t.constructor[tv]||Pf(t)||Ff(t))}function hr(t,e,n){n===void 0&&(n=!1),ni(t)===0?(n?Object.keys:ii)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function ni(t){var e=t[oe];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:Pf(t)?2:Ff(t)?3:0}function ri(t,e){return ni(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function wI(t,e){return ni(t)===2?t.get(e):t[e]}function _y(t,e,n){var r=ni(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function Wy(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Pf(t){return TI&&t instanceof Map}function Ff(t){return II&&t instanceof Set}function pr(t){return t.o||t.t}function zf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=nv(t);delete e[oe];for(var n=ii(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function Rf(t,e){return e===void 0&&(e=!1),jf(t)||vn(t)||!Ht(t)||(ni(t)>1&&(t.set=t.add=t.clear=t.delete=CI),Object.freeze(t),e&&hr(t,function(n,r){return Rf(r,!0)},!0)),t}function CI(){lt(2)}function jf(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function xt(t){var e=Xf[t];return e||lt(18,t),e}function SI(t,e){Xf[t]||(Xf[t]=e)}function Uf(){return ko}function Hf(t,e){e&&(xt("Patches"),t.u=[],t.s=[],t.v=e)}function js(t){Gf(t),t.p.forEach(EI),t.p=null}function Gf(t){t===ko&&(ko=t.l)}function Xy(t){return ko={p:[],l:ko,h:t,m:!0,_:0}}function EI(t){var e=t[oe];e.i===0||e.i===1?e.j():e.O=!0}function Qf(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||xt("ES5").S(e,t,r),r?(n[oe].P&&(js(e),lt(4)),Ht(t)&&(t=Us(e,t),e.l||Hs(e,t)),e.u&&xt("Patches").M(n[oe].t,t,e.u,e.s)):t=Us(e,n,[]),js(e),e.u&&e.v(e.u,e.s),t!==ev?t:void 0}function Us(t,e,n){if(jf(e))return e;var r=e[oe];if(!r)return hr(e,function(o,a){return Zy(t,r,e,o,a,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Hs(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=zf(r.k):r.o;hr(r.i===3?new Set(i):i,function(o,a){return Zy(t,r,i,o,a,n)}),Hs(t,i,!1),n&&t.u&&xt("Patches").R(r,n,t.u,t.s)}return r.o}function Zy(t,e,n,r,i,o){if(vn(i)){var a=Us(t,i,o&&e&&e.i!==3&&!ri(e.D,r)?o.concat(r):void 0);if(_y(n,r,a),!vn(a))return;t.m=!1}if(Ht(i)&&!jf(i)){if(!t.h.F&&t._<1)return;Us(t,i),e&&e.A.l||Hs(t,i)}}function Hs(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Rf(e,n)}function Vf(t,e){var n=t[oe];return(n?pr(n):t)[e]}function qy(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function bn(t){t.P||(t.P=!0,t.l&&bn(t.l))}function Yf(t){t.o||(t.o=zf(t.t))}function _f(t,e,n){var r=Pf(e)?xt("MapSet").N(e,n):Ff(e)?xt("MapSet").T(e,n):t.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:Uf(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=s,u=No;a&&(c=[s],u=Lo);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return s.k=d,s.j=l,d}(e,n):xt("ES5").J(e,n);return(n?n.A:Uf()).p.push(r),r}function DI(t){return vn(t)||lt(22,t),function e(n){if(!Ht(n))return n;var r,i=n[oe],o=ni(n);if(i){if(!i.P&&(i.i<4||!xt("ES5").K(i)))return i.t;i.I=!0,r=Ky(n,o),i.I=!1}else r=Ky(n,o);return hr(r,function(a,s){i&&wI(i.t,a)===s||_y(r,a,e(s))}),o===3?new Set(r):r}(t)}function Ky(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return zf(t)}function MI(){function t(o,a){var s=i[o];return s?s.enumerable=a:i[o]=s={configurable:!0,enumerable:a,get:function(){var c=this[oe];return No.get(c,o)},set:function(c){var u=this[oe];No.set(u,o,c)}},s}function e(o){for(var a=o.length-1;a>=0;a--){var s=o[a][oe];if(!s.P)switch(s.i){case 5:r(s)&&bn(s);break;case 4:n(s)&&bn(s)}}}function n(o){for(var a=o.t,s=o.k,c=ii(s),u=c.length-1;u>=0;u--){var f=c[u];if(f!==oe){var l=a[f];if(l===void 0&&!ri(a,f))return!0;var d=s[f],h=d&&d[oe];if(h?h.t!==l:!Wy(d,l))return!0}}var p=!!a[oe];return c.length!==ii(a).length+(p?0:1)}function r(o){var a=o.k;if(a.length!==o.t.length)return!0;var s=Object.getOwnPropertyDescriptor(a,a.length-1);if(s&&!s.get)return!0;for(var c=0;c<a.length;c++)if(!a.hasOwnProperty(c))return!0;return!1}var i={};SI("ES5",{J:function(o,a){var s=Array.isArray(o),c=function(f,l){if(f){for(var d=Array(l.length),h=0;h<l.length;h++)Object.defineProperty(d,""+h,t(h,!0));return d}var p=nv(l);delete p[oe];for(var m=ii(p),g=0;g<m.length;g++){var y=m[g];p[y]=t(y,f||!!p[y].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(s,o),u={i:s?5:4,A:a?a.A:Uf(),P:!1,I:!1,D:{},l:a,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,oe,{value:u,writable:!0}),c},S:function(o,a,s){s?vn(a)&&a[oe].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[oe];if(f){var l=f.t,d=f.k,h=f.D,p=f.i;if(p===4)hr(d,function(x){x!==oe&&(l[x]!==void 0||ri(l,x)?h[x]||c(d[x]):(h[x]=!0,bn(f)))}),hr(l,function(x){d[x]!==void 0||ri(d,x)||(h[x]=!1,bn(f))});else if(p===5){if(r(f)&&(bn(f),h.length=!0),d.length<l.length)for(var m=d.length;m<l.length;m++)h[m]=!1;else for(var g=l.length;g<d.length;g++)h[g]=!0;for(var y=Math.min(d.length,l.length),A=0;A<y;A++)d.hasOwnProperty(A)||(h[A]=!0),h[A]===void 0&&c(d[A])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var Jy,ko,Wf=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",TI=typeof Map<"u",II=typeof Set<"u",$y=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",ev=Wf?Symbol.for("immer-nothing"):((Jy={})["immer-nothing"]=!0,Jy),tv=Wf?Symbol.for("immer-draftable"):"__$immer_draftable",oe=Wf?Symbol.for("immer-state"):"__$immer_state",kI=""+Object.prototype.constructor,ii=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,nv=Object.getOwnPropertyDescriptors||function(t){var e={};return ii(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Xf={},No={get:function(t,e){if(e===oe)return t;var n=pr(t);if(!ri(n,e))return function(i,o,a){var s,c=qy(o,a);return c?"value"in c?c.value:(s=c.get)===null||s===void 0?void 0:s.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!Ht(r)?r:r===Vf(t.t,e)?(Yf(t),t.o[e]=_f(t.A.h,r,t)):r},has:function(t,e){return e in pr(t)},ownKeys:function(t){return Reflect.ownKeys(pr(t))},set:function(t,e,n){var r=qy(pr(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=Vf(pr(t),e),o=i==null?void 0:i[oe];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(Wy(n,i)&&(n!==void 0||ri(t.t,e)))return!0;Yf(t),bn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return Vf(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,Yf(t),bn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=pr(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){lt(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){lt(12)}},Lo={};hr(No,function(t,e){Lo[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Lo.deleteProperty=function(t,e){return Lo.set.call(this,t,e,void 0)},Lo.set=function(t,e,n){return No.set.call(this,t[0],e,n,t[0])};var NI=function(){function t(n){var r=this;this.g=$y,this.F=!0,this.produce=function(i,o,a){if(typeof i=="function"&&typeof o!="function"){var s=o;o=i;var c=r;return function(m){var g=this;m===void 0&&(m=s);for(var y=arguments.length,A=Array(y>1?y-1:0),x=1;x<y;x++)A[x-1]=arguments[x];return c.produce(m,function(w){var b;return(b=o).call.apply(b,[g,w].concat(A))})}}var u;if(typeof o!="function"&<(6),a!==void 0&&typeof a!="function"&<(7),Ht(i)){var f=Xy(r),l=_f(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?js(f):Gf(f)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return Hf(f,a),Qf(m,f)},function(m){throw js(f),m}):(Hf(f,a),Qf(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===ev&&(u=void 0),r.F&&Rf(u,!0),a){var h=[],p=[];xt("Patches").M(i,u,h,p),a(h,p)}return u}lt(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),d=1;d<f;d++)l[d-1]=arguments[d];return r.produceWithPatches(u,function(h){return i.apply(void 0,[h].concat(l))})};var a,s,c=r.produce(i,o,function(u,f){a=u,s=f});return typeof Promise<"u"&&c instanceof Promise?c.then(function(u){return[u,a,s]}):[c,a,s]},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){Ht(n)||lt(8),vn(n)&&(n=DI(n));var r=Xy(this),i=_f(this,n,void 0);return i[oe].C=!0,Gf(r),i},e.finishDraft=function(n,r){var i=n&&n[oe],o=i.A;return Hf(o,r),Qf(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!$y&<(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=xt("Patches").$;return vn(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},t}(),Qe=new NI,rv=Qe.produce;Qe.produceWithPatches.bind(Qe),Qe.setAutoFreeze.bind(Qe),Qe.setUseProxies.bind(Qe),Qe.applyPatches.bind(Qe),Qe.createDraft.bind(Qe),Qe.finishDraft.bind(Qe);function LI(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function iv(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function ov(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?iv(Object(n),!0).forEach(function(r){LI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):iv(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function De(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var av=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Zf=function(){return Math.random().toString(36).substring(7).split("").join(".")},Gs={INIT:"@@redux/INIT"+Zf(),REPLACE:"@@redux/REPLACE"+Zf(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Zf()}};function BI(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function sv(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(De(0));if(typeof e=="function"&&typeof n>"u"&&(n=e,e=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(De(1));return n(sv)(t,e)}if(typeof t!="function")throw new Error(De(2));var i=t,o=e,a=[],s=a,c=!1;function u(){s===a&&(s=a.slice())}function f(){if(c)throw new Error(De(3));return o}function l(m){if(typeof m!="function")throw new Error(De(4));if(c)throw new Error(De(5));var g=!0;return u(),s.push(m),function(){if(!!g){if(c)throw new Error(De(6));g=!1,u();var A=s.indexOf(m);s.splice(A,1),a=null}}}function d(m){if(!BI(m))throw new Error(De(7));if(typeof m.type>"u")throw new Error(De(8));if(c)throw new Error(De(9));try{c=!0,o=i(o,m)}finally{c=!1}for(var g=a=s,y=0;y<g.length;y++){var A=g[y];A()}return m}function h(m){if(typeof m!="function")throw new Error(De(10));i=m,d({type:Gs.REPLACE})}function p(){var m,g=l;return m={subscribe:function(A){if(typeof A!="object"||A===null)throw new Error(De(11));function x(){A.next&&A.next(f())}x();var w=g(x);return{unsubscribe:w}}},m[av]=function(){return this},m}return d({type:Gs.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:h},r[av]=p,r}function OI(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Gs.INIT});if(typeof r>"u")throw new Error(De(12));if(typeof n(void 0,{type:Gs.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(De(13))})}function qf(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),a;try{OI(n)}catch(s){a=s}return function(c,u){if(c===void 0&&(c={}),a)throw a;for(var f=!1,l={},d=0;d<o.length;d++){var h=o[d],p=n[h],m=c[h],g=p(m,u);if(typeof g>"u")throw u&&u.type,new Error(De(14));l[h]=g,f=f||g!==m}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Qs(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function PI(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(De(15))},a={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=e.map(function(c){return c(a)});return o=Qs.apply(void 0,s)(i.dispatch),ov(ov({},i),{},{dispatch:o})}}}var Vs="NOT_FOUND";function FI(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Vs},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function zI(t,e){var n=[];function r(s){var c=n.findIndex(function(f){return e(s,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Vs}function i(s,c){r(s)===Vs&&(n.unshift({key:s,value:c}),n.length>t&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var RI=function(e,n){return e===n};function jI(t){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o<i;o++)if(!t(n[o],r[o]))return!1;return!0}}function UI(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?RI:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=jI(i),u=a===1?FI(c):zI(a,c);function f(){var l=u.get(arguments);if(l===Vs){if(l=t.apply(null,arguments),s){var d=u.getEntries(),h=d.find(function(p){return s(p.value,l)});h&&(l=h.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function HI(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r=="function"?"function "+(r.name||"unnamed")+"()":typeof r}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return e}function GI(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=function(){for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},d=s.pop();if(typeof d=="object"&&(l=d,d=s.pop()),typeof d!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof d+"]");var h=l,p=h.memoizeOptions,m=p===void 0?n:p,g=Array.isArray(m)?m:[m],y=HI(s),A=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(g)),x=t(function(){for(var w=[],b=y.length,v=0;v<b;v++)w.push(y[v].apply(null,arguments));return f=A.apply(null,w),f});return Object.assign(x,{resultFunc:d,memoizedResultFunc:A,dependencies:y,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),x};return i}var QI=GI(UI);function cv(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(a){return function(s){return typeof s=="function"?s(i,o,t):a(s)}}};return e}var uv=cv();uv.withExtraArgument=cv;const lv=uv;var VI=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var Ys=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},YI=Object.defineProperty,fv=Object.getOwnPropertySymbols,_I=Object.prototype.hasOwnProperty,WI=Object.prototype.propertyIsEnumerable,dv=function(t,e,n){return e in t?YI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Bo=function(t,e){for(var n in e||(e={}))_I.call(e,n)&&dv(t,n,e[n]);if(fv)for(var r=0,i=fv(e);r<i.length;r++){var n=i[r];WI.call(e,n)&&dv(t,n,e[n])}return t},XI=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Qs:Qs.apply(null,arguments)};function ZI(t){if(typeof t!="object"||t===null)return!1;var e=Object.getPrototypeOf(t);if(e===null)return!0;for(var n=e;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return e===n}var qI=function(t){VI(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,Ys([void 0],n[0].concat(this)))):new(e.bind.apply(e,Ys([void 0],n.concat(this))))},e}(Array);function Kf(t){return Ht(t)?rv(t,function(){}):t}function KI(t){return typeof t=="boolean"}function JI(){return function(e){return $I(e)}}function $I(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new qI;return n&&(KI(n)?r.push(lv):r.push(lv.withExtraArgument(n.extraArgument))),r}var e9=!0;function t9(t){var e=JI(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,a=o===void 0?e():o,s=n.devTools,c=s===void 0?!0:s,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,d=l===void 0?void 0:l,h;if(typeof i=="function")h=i;else if(ZI(i))h=qf(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var p=a;typeof p=="function"&&(p=p(e));var m=PI.apply(void 0,p),g=Qs;c&&(g=XI(Bo({trace:!e9},typeof c=="object"&&c)));var y=[m];Array.isArray(d)?y=Ys([m],d):typeof d=="function"&&(y=d(y));var A=g.apply(void 0,y);return sv(h,f,A)}function Oo(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Bo(Bo({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function hv(t){var e={},n=[],r,i={addCase:function(o,a){var s=typeof o=="string"?o:o.type;if(s in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[s]=a,i},addMatcher:function(o,a){return n.push({matcher:o,reducer:a}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function n9(t){return typeof t=="function"}function r9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?hv(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if(n9(t))c=function(){return Kf(t())};else{var u=Kf(t);c=function(){return u}}function f(l,d){l===void 0&&(l=c());var h=Ys([o[d.type]],a.filter(function(p){var m=p.matcher;return m(d)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[s]),h.reduce(function(p,m){if(m)if(vn(p)){var g=p,y=m(g,d);return typeof y>"u"?p:y}else{if(Ht(p))return rv(p,function(A){return m(A,d)});var y=m(p,d);if(typeof y>"u"){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return y}return p},l)}return f.getInitialState=c,f}function i9(t,e){return t+"/"+e}function pv(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");typeof process<"u";var n=typeof t.initialState=="function"?t.initialState:Kf(t.initialState),r=t.reducers||{},i=Object.keys(r),o={},a={},s={};i.forEach(function(f){var l=r[f],d=i9(e,f),h,p;"reducer"in l?(h=l.reducer,p=l.prepare):h=l,o[f]=h,a[d]=h,s[f]=p?Oo(d,p):Oo(d)});function c(){var f=typeof t.extraReducers=="function"?hv(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,h=f[1],p=h===void 0?[]:h,m=f[2],g=m===void 0?void 0:m,y=Bo(Bo({},d),a);return r9(n,y,p,g)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:s,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var Jf="listenerMiddleware";Oo(Jf+"/add"),Oo(Jf+"/removeAll"),Oo(Jf+"/remove"),MI();function o9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var a9=[].forEach;function s9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];a9.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void a.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=o9),i.sort(function(c,u){return n(o[c],o[u])});var s=i.map(function(c){return t[c]}).concat(a);return s.length!=t.length&&(s.length=t.length),s}function c9(t,e){const n=i=>i.copy().range(Xt(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>le(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function u9(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function l9(t,e,n){const r=new Set,i=o=>(r.size<n&&r.add(o),r.has(o));return t.filter(o=>i(e(o)))}function f9(t,e,n=!1){return s9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const d9={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function h9(t,e,n,r){const i=d9[n];return t.filter(o=>i(e(o),r))}function mv(t,e,n,r){const i=new Set(r),o=s=>i.has(s),a=n=="remove"?s=>!o(s):o;return t.filter(s=>a(e(s)))}function p9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}/**
|
2149
|
+
*/const Gy=(t,e,n)=>{const r=new Map;for(let i=e;i<=n;i++)r.set(t[i],i);return r},dI=ar(class extends Kr{constructor(t){if(super(t),t.type!==bt.CHILD)throw Error("repeat() can only be used in text expressions")}ht(t,e,n){let r;n===void 0?n=e:e!==void 0&&(r=e);const i=[],o=[];let a=0;for(const s of t)i[a]=r?r(s,a):a,o[a]=n(s,a),a++;return{values:o,keys:i}}render(t,e,n){return this.ht(t,e,n).values}update(t,[e,n,r]){var i;const o=fI(t),{values:a,keys:s}=this.ht(e,n,r);if(!Array.isArray(o))return this.ut=s,a;const c=(i=this.ut)!==null&&i!==void 0?i:this.ut=[],u=[];let f,l,d=0,h=o.length-1,p=0,m=a.length-1;for(;d<=h&&p<=m;)if(o[d]===null)d++;else if(o[h]===null)h--;else if(c[d]===s[p])u[p]=fr(o[d],a[p]),d++,p++;else if(c[h]===s[m])u[m]=fr(o[h],a[m]),h--,m--;else if(c[d]===s[m])u[m]=fr(o[d],a[m]),Io(t,u[m+1],o[d]),d++,m--;else if(c[h]===s[p])u[p]=fr(o[h],a[p]),Io(t,o[d],o[h]),h--,p++;else if(f===void 0&&(f=Gy(s,p,m),l=Gy(c,d,h)),f.has(c[d]))if(f.has(c[h])){const g=l.get(s[p]),y=g!==void 0?o[g]:null;if(y===null){const A=Io(t,o[d]);fr(A,a[p]),u[p]=A}else u[p]=fr(y,a[p]),Io(t,o[d],y),o[g]=null;p++}else Of(o[h]),h--;else Of(o[d]),d++;for(;p<=m;){const g=Io(t,u[m+1]);fr(g,a[p]),u[p++]=g}for(;d<=h;){const g=o[d++];g!==null&&Of(g)}return this.ut=s,Hy(t,u),Ae}}),Qy="close-dialog";function hI(){return new CustomEvent(Qy,{bubbles:!0})}function dr(t="default",e=document.body){const n=document.createElement("div");n.classList.add("gs-modal"),t!="default"&&n.classList.add(t);const r=o=>{var a;switch(o.key){case"Escape":{const s=n.querySelector(".btn-cancel");s&&(s.click(),o.stopPropagation());break}case"Enter":{if(((a=o.target)==null?void 0:a.tagName)=="TEXTAREA")return;n.querySelector(".btn-primary").click(),o.stopPropagation();break}}};n.addEventListener("keydown",r),Be(D`<div class="backdrop"></div><div class="content"></div>`,n);const i=()=>{n.querySelector(".backdrop").addEventListener("transitionend",()=>n.remove()),n.classList.remove("visible"),document.body.classList.remove(Yn)};return n.addEventListener("keydown",o=>{o.stopPropagation()}),n.addEventListener(Qy,i),e.appendChild(n),window.requestAnimationFrame(()=>n.classList.add("visible")),t!="tour"&&document.body.classList.add(Yn),{content:n.querySelector(".content"),close:i}}function Ge(t,e={}){var i;const n=dr(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,a)=>{const s=()=>{n.close(),o(!0)},c=D`${r?D`<div class="modal-title">${r}</div>`:z}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?D`<button class="btn" @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:z} <button class="btn" @click="${s}">${e.okLabel}</button></div>`;Be(c,n.content)})}class Vy extends vt{constructor(){super();te(this,cc);te(this,uc);te(this,qo);te(this,lc);te(this,di,void 0);te(this,Wt,void 0);te(this,wn,void 0);te(this,Zo,0);this.values=[],this.thresholds=[],this.operators=[],this.colors=Yy,this.showThresholdNumbers=!1,tt(this,di,Vb().thresholds(40)),tt(this,Wt,G(this,di).call(this,[])),tt(this,wn,La())}connectedCallback(){super.connectedCallback()}createRenderRoot(){return this}willUpdate(n){n.has("values")&&(tt(this,Wt,G(this,di).call(this,this.values)),tt(this,wn,La().domain(this.domain).range([0,100])))}get domain(){return[G(this,Wt).at(0).x0,G(this,Wt).at(-1).x1]}render(){const n=G(this,wn),r=100/G(this,Wt).length,i=se(this,lc,Y2).call(this).map(o=>D`<div style="${Bf({width:r+.01+"%",left:o.x+"%",bottom:o.y+"%",height:o.height+"%",backgroundColor:typeof o.group=="number"?this.colors[o.group%this.colors.length]:"default"})}"></div>`);return D`<div class="histogram-widget"><div class="histogram-plot"><div class="histogram-bars">${i}</div><div class="histogram-thresholds" @click="${se(this,cc,Q2)}">${this.thresholds.map((o,a)=>{const s=n(o);return s>=0&&s<=100?D`<div class="histogram-threshold" style="${Bf({left:n(o)+"%"})}"><div class="histogram-knob" @mousedown="${c=>se(this,uc,V2).call(this,c,a)}">${this.showThresholdNumbers?a+1:z}</div></div>`:z})}</div><div class="${nf({"histogram-hint":!0,visible:!this.thresholds.length})}"><span>Click here to add a threshold!</span></div></div><div class="histogram-domain"></div><div class="histogram-extent">${n.domain().map(o=>D`<div>${o}</div>`)}</div></div>`}}di=new WeakMap,Wt=new WeakMap,wn=new WeakMap,Zo=new WeakMap,cc=new WeakSet,Q2=function(n){if(performance.now()<G(this,Zo)+200)return;const r=n.target,i=dp(r,n);se(this,qo,Rd).call(this,"add",0,i[0]/r.offsetWidth)},uc=new WeakSet,V2=function(n,r){const o=n.target.closest(".histogram-threshold"),a=o.offsetLeft,s=o.offsetParent.offsetWidth;n.preventDefault(),n.stopPropagation(),this.style.cursor="col-resize",mI(n,(c,u)=>{se(this,qo,Rd).call(this,"adjust",r,(a+c)/s)},()=>{tt(this,Zo,performance.now()),this.style.cursor=""})},qo=new WeakSet,Rd=function(n,r,i){i=ms(i,0,1),this.dispatchEvent(new pI(n,r,+G(this,wn).invert(i*100).toPrecision(3)))},lc=new WeakSet,Y2=function(){const n=G(this,Wt),r=G(this,wn),i=90/n.map(f=>f.length).reduce((f,l)=>Math.max(f,l),0),o=[],a=this.thresholds.length==1&&this.operators[0]=="eq",s=[-1/0,...this.thresholds,1/0],c=[!1,...this.operators.map(f=>["lte","gt"].includes(f)),!0],u=["gt","gte"].includes(this.operators[0])?f=>s.length-f-2:f=>f;for(let f=0;f<n.length;f++){const l=n[f],d=r(l.x0);let h=0,p=0;if(a)for(let m=0;m<=1;m++)p=yI(l,this.thresholds[0],m>0),p&&o.push({x:d,y:h*i,height:p*i,group:m}),h+=p;else if(this.thresholds.length)for(let m=0;m<s.length-1;m++){const g=u(m);p=gI(l,s[g],s[g+1],!c[g],c[g+1]),p&&o.push({x:d,y:h*i,height:p*i,group:m}),h+=p}else p=l.length,p&&o.push({x:d,y:h,height:p*i,group:null})}return o},hc(Vy,"properties",{values:{attribute:!1},thresholds:{attribute:!1},operators:{attribute:!1},colors:{attribute:!1},showThresholdNumbers:{}}),customElements.define("genome-spy-histogram",Vy);class pI extends Event{constructor(e,n,r){super(e),this.index=n,this.value=r}}function mI(t,e,n){const r=t.clientX,i=t.clientY,o=function(s){e(s.clientX-r,s.clientY-i)},a=function(s){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",a),n==null||n(s.clientX-r,s.clientY-i)};document.addEventListener("mousemove",o),document.addEventListener("mouseup",a)}function gI(t,e,n,r=!0,i=!1){const o=r?c=>c>=e:c=>c>e,a=i?c=>c<=n:c=>c<n;let s=0;for(let c=0;c<t.length;c++){const u=t[c];o(u)&&a(u)&&s++}return s}function yI(t,e,n=!1){let r=0;for(let i=0;i<t.length;i++)r+=+(t[i]==e);return n?t.length-r:r}const Yy=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b"];function vI(t,e){var r;const n=(r=t.scale)==null?void 0:r.type;on(n)?bI(t,e):Re(n)||Gn(n)?AI(t,e):Ge("Not implemented (yet).")}function bI(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=new Set(_y(t,e.leafSamples,e.sampleHierarchy)),o=r.domain().filter(w=>i.has(w)).map((w,b)=>({index:b,value:w,stringValue:`${w}`,lowerCaseValue:`${w}`.toLowerCase()})),a=dr(),s=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,c=new Set;let u="";const f=w=>{n(e.actions.filterByNominal({values:r.domain().filter(b=>c.has(b)),attribute:t.attribute,remove:w})),a.close()},l=()=>o.filter(w=>u.length==0||w.lowerCaseValue.includes(u)),d=w=>{u=w.target.value.toLowerCase(),x()},h=w=>{const b=w.target,v=o[+b.value].value;b.checked?c.add(v):c.delete(v),x()},p=w=>{var b;if(w.key=="ArrowDown")(b=a.content.querySelector(".gs-checkbox-list li:first-child input[type='checkbox']"))==null||b.focus(),w.preventDefault(),w.stopPropagation();else if(w.key=="Enter"){const v=l();v.length==1&&(c.add(v[0].value),x()),w.stopPropagation()}},m=()=>{a.content.querySelector("input[type='text']").focus()},g=w=>{var v,C,S,I,N;const b=w.target;if(b.type=="checkbox")if(w.key=="ArrowDown")(C=(v=b.closest("li").nextElementSibling)==null?void 0:v.querySelector("input[type='checkbox']"))==null||C.focus(),w.preventDefault();else if(w.key=="ArrowUp"){const T=(S=b.closest("li").previousElementSibling)==null?void 0:S.querySelector("input[type='checkbox']");T?T.focus():m(),w.preventDefault()}else w.key=="Esc"?(m(),w.stopPropagation()):w.key=="Tab"&&!w.shiftKey?(I=b.closest(".gs-checkbox-list").querySelector("li:last-child input"))==null||I.focus():w.key=="Tab"&&w.shiftKey&&((N=b.closest(".gs-checkbox-list").querySelector("li:first-child input"))==null||N.focus())},y=()=>D`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>a.close()}">Cancel</button> <button class="btn" ?disabled="${!c.size}" @click="${()=>f(!1)}">${K(sr).node[0]} Retain</button> <button class="btn" ?disabled="${!c.size}" @click="${()=>f(!0)}">${K(Es).node[0]} Remove</button></div>`,A=r;function x(){const w=l(),b=D`<div class="gs-form-group"><p>Please select one or more categories and choose an action.</p><input type="text" placeholder="Type something to filter the list" @keydown="${p}" @input="${d}"><div class="gs-checkbox-list-wrapper"><ul class="gs-checkbox-list" @input="${h}" @keydown="${g}">${dI(w,C=>C.value,C=>D`<li><label class="checkbox"><span class="color" style="${Bf({backgroundColor:A(C.value).toString()})}"></span> <input type="checkbox" .checked="${c.has(C.value)}" .value="${""+C.index}"> ${C.stringValue}</label></li>`)}</ul>${w.length==0?D`<div class="search-note"><div>Nothing found</div></div>`:w.length==1&&o.length>1?D`<div class="search-note"><div>${K(r6).node[0]} Hit enter to select the exact match</div></div>`:z}</div><small>The number of selected categories: <strong>${c.size}</strong></small></div>`;Be(D`${s}<div class="modal-body">${b}</div>${y()}`,a.content);const v=a.content.querySelector(".gs-checkbox-list");v.style.minHeight=`${v.offsetHeight}px`}x(),m()}function AI(t,e){var g;const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=dr(),a=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=y=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>D`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn btn-primary" ?disabled="${typeof i>"u"}" @click="${()=>s()}">${K(sr).node[0]} Retain</button></div>`,u=y=>{r=y.target.value,m()},f=y=>{const x=y.target.value;/^\d+(\.(\d+)?)?$/.test(x)&&(i=+x,m())},l=y=>{typeof i!="number"&&(i=y.value,m())},d=y=>{i=y.value,m()},h=_y(t,e.leafSamples,e.sampleHierarchy),p=()=>D`<div class="gs-form-group"><label>Retain samples where <em>${t.name}</em> is</label><div class="btn-group" role="group">${Object.entries(xI).map(([y,A])=>D`<button class="${nf({btn:!0,chosen:y==r})}" .value="${y}" @click="${u}" title="${A[1]}">${A[0]}</button>`)}</div><genome-spy-histogram .values="${h}" .thresholds="${[i].filter(y=>y!==void 0)}" .operators="${[r]}" .colors="${["#1f77b4","#ddd"]}" .showThresholdNumbers="${!1}" @add="${l}" @adjust="${d}"></genome-spy-histogram><input type="text" placeholder="... or enter a numeric value here" .value="${typeof i=="number"?""+i:""}" @input="${f}"></div>`;function m(){Be(D`${a}<div class="modal-body">${p()}</div>${c()}`,o.content)}m(),(g=o.content.querySelector("input[type='text']"))==null||g.focus()}const xI={lt:["<","less than"],lte:["\u2264","less than or equal to"],eq:["=","equal to"],gte:["\u2265","greater than or equal to"],gt:[">","greater than"]};function _y(t,e,n){const r=t.accessor;return e.map(i=>r(i,n))}function lt(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function vn(t){return!!t&&!!t[oe]}function Ht(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===kI}(t)||Array.isArray(t)||!!t[nv]||!!t.constructor[nv]||Pf(t)||Ff(t))}function hr(t,e,n){n===void 0&&(n=!1),ni(t)===0?(n?Object.keys:ii)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function ni(t){var e=t[oe];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:Pf(t)?2:Ff(t)?3:0}function ri(t,e){return ni(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function wI(t,e){return ni(t)===2?t.get(e):t[e]}function Wy(t,e,n){var r=ni(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function Xy(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Pf(t){return TI&&t instanceof Map}function Ff(t){return II&&t instanceof Set}function pr(t){return t.o||t.t}function zf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=rv(t);delete e[oe];for(var n=ii(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function Rf(t,e){return e===void 0&&(e=!1),jf(t)||vn(t)||!Ht(t)||(ni(t)>1&&(t.set=t.add=t.clear=t.delete=CI),Object.freeze(t),e&&hr(t,function(n,r){return Rf(r,!0)},!0)),t}function CI(){lt(2)}function jf(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function xt(t){var e=Xf[t];return e||lt(18,t),e}function SI(t,e){Xf[t]||(Xf[t]=e)}function Uf(){return ko}function Hf(t,e){e&&(xt("Patches"),t.u=[],t.s=[],t.v=e)}function js(t){Gf(t),t.p.forEach(EI),t.p=null}function Gf(t){t===ko&&(ko=t.l)}function Zy(t){return ko={p:[],l:ko,h:t,m:!0,_:0}}function EI(t){var e=t[oe];e.i===0||e.i===1?e.j():e.O=!0}function Qf(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||xt("ES5").S(e,t,r),r?(n[oe].P&&(js(e),lt(4)),Ht(t)&&(t=Us(e,t),e.l||Hs(e,t)),e.u&&xt("Patches").M(n[oe].t,t,e.u,e.s)):t=Us(e,n,[]),js(e),e.u&&e.v(e.u,e.s),t!==tv?t:void 0}function Us(t,e,n){if(jf(e))return e;var r=e[oe];if(!r)return hr(e,function(o,a){return qy(t,r,e,o,a,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Hs(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=zf(r.k):r.o;hr(r.i===3?new Set(i):i,function(o,a){return qy(t,r,i,o,a,n)}),Hs(t,i,!1),n&&t.u&&xt("Patches").R(r,n,t.u,t.s)}return r.o}function qy(t,e,n,r,i,o){if(vn(i)){var a=Us(t,i,o&&e&&e.i!==3&&!ri(e.D,r)?o.concat(r):void 0);if(Wy(n,r,a),!vn(a))return;t.m=!1}if(Ht(i)&&!jf(i)){if(!t.h.F&&t._<1)return;Us(t,i),e&&e.A.l||Hs(t,i)}}function Hs(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Rf(e,n)}function Vf(t,e){var n=t[oe];return(n?pr(n):t)[e]}function Ky(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function bn(t){t.P||(t.P=!0,t.l&&bn(t.l))}function Yf(t){t.o||(t.o=zf(t.t))}function _f(t,e,n){var r=Pf(e)?xt("MapSet").N(e,n):Ff(e)?xt("MapSet").T(e,n):t.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:Uf(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=s,u=No;a&&(c=[s],u=Lo);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return s.k=d,s.j=l,d}(e,n):xt("ES5").J(e,n);return(n?n.A:Uf()).p.push(r),r}function DI(t){return vn(t)||lt(22,t),function e(n){if(!Ht(n))return n;var r,i=n[oe],o=ni(n);if(i){if(!i.P&&(i.i<4||!xt("ES5").K(i)))return i.t;i.I=!0,r=Jy(n,o),i.I=!1}else r=Jy(n,o);return hr(r,function(a,s){i&&wI(i.t,a)===s||Wy(r,a,e(s))}),o===3?new Set(r):r}(t)}function Jy(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return zf(t)}function MI(){function t(o,a){var s=i[o];return s?s.enumerable=a:i[o]=s={configurable:!0,enumerable:a,get:function(){var c=this[oe];return No.get(c,o)},set:function(c){var u=this[oe];No.set(u,o,c)}},s}function e(o){for(var a=o.length-1;a>=0;a--){var s=o[a][oe];if(!s.P)switch(s.i){case 5:r(s)&&bn(s);break;case 4:n(s)&&bn(s)}}}function n(o){for(var a=o.t,s=o.k,c=ii(s),u=c.length-1;u>=0;u--){var f=c[u];if(f!==oe){var l=a[f];if(l===void 0&&!ri(a,f))return!0;var d=s[f],h=d&&d[oe];if(h?h.t!==l:!Xy(d,l))return!0}}var p=!!a[oe];return c.length!==ii(a).length+(p?0:1)}function r(o){var a=o.k;if(a.length!==o.t.length)return!0;var s=Object.getOwnPropertyDescriptor(a,a.length-1);if(s&&!s.get)return!0;for(var c=0;c<a.length;c++)if(!a.hasOwnProperty(c))return!0;return!1}var i={};SI("ES5",{J:function(o,a){var s=Array.isArray(o),c=function(f,l){if(f){for(var d=Array(l.length),h=0;h<l.length;h++)Object.defineProperty(d,""+h,t(h,!0));return d}var p=rv(l);delete p[oe];for(var m=ii(p),g=0;g<m.length;g++){var y=m[g];p[y]=t(y,f||!!p[y].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(s,o),u={i:s?5:4,A:a?a.A:Uf(),P:!1,I:!1,D:{},l:a,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,oe,{value:u,writable:!0}),c},S:function(o,a,s){s?vn(a)&&a[oe].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[oe];if(f){var l=f.t,d=f.k,h=f.D,p=f.i;if(p===4)hr(d,function(x){x!==oe&&(l[x]!==void 0||ri(l,x)?h[x]||c(d[x]):(h[x]=!0,bn(f)))}),hr(l,function(x){d[x]!==void 0||ri(d,x)||(h[x]=!1,bn(f))});else if(p===5){if(r(f)&&(bn(f),h.length=!0),d.length<l.length)for(var m=d.length;m<l.length;m++)h[m]=!1;else for(var g=l.length;g<d.length;g++)h[g]=!0;for(var y=Math.min(d.length,l.length),A=0;A<y;A++)d.hasOwnProperty(A)||(h[A]=!0),h[A]===void 0&&c(d[A])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var $y,ko,Wf=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",TI=typeof Map<"u",II=typeof Set<"u",ev=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",tv=Wf?Symbol.for("immer-nothing"):(($y={})["immer-nothing"]=!0,$y),nv=Wf?Symbol.for("immer-draftable"):"__$immer_draftable",oe=Wf?Symbol.for("immer-state"):"__$immer_state",kI=""+Object.prototype.constructor,ii=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,rv=Object.getOwnPropertyDescriptors||function(t){var e={};return ii(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Xf={},No={get:function(t,e){if(e===oe)return t;var n=pr(t);if(!ri(n,e))return function(i,o,a){var s,c=Ky(o,a);return c?"value"in c?c.value:(s=c.get)===null||s===void 0?void 0:s.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!Ht(r)?r:r===Vf(t.t,e)?(Yf(t),t.o[e]=_f(t.A.h,r,t)):r},has:function(t,e){return e in pr(t)},ownKeys:function(t){return Reflect.ownKeys(pr(t))},set:function(t,e,n){var r=Ky(pr(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=Vf(pr(t),e),o=i==null?void 0:i[oe];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(Xy(n,i)&&(n!==void 0||ri(t.t,e)))return!0;Yf(t),bn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return Vf(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,Yf(t),bn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=pr(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){lt(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){lt(12)}},Lo={};hr(No,function(t,e){Lo[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Lo.deleteProperty=function(t,e){return Lo.set.call(this,t,e,void 0)},Lo.set=function(t,e,n){return No.set.call(this,t[0],e,n,t[0])};var NI=function(){function t(n){var r=this;this.g=ev,this.F=!0,this.produce=function(i,o,a){if(typeof i=="function"&&typeof o!="function"){var s=o;o=i;var c=r;return function(m){var g=this;m===void 0&&(m=s);for(var y=arguments.length,A=Array(y>1?y-1:0),x=1;x<y;x++)A[x-1]=arguments[x];return c.produce(m,function(w){var b;return(b=o).call.apply(b,[g,w].concat(A))})}}var u;if(typeof o!="function"&<(6),a!==void 0&&typeof a!="function"&<(7),Ht(i)){var f=Zy(r),l=_f(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?js(f):Gf(f)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return Hf(f,a),Qf(m,f)},function(m){throw js(f),m}):(Hf(f,a),Qf(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===tv&&(u=void 0),r.F&&Rf(u,!0),a){var h=[],p=[];xt("Patches").M(i,u,h,p),a(h,p)}return u}lt(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),d=1;d<f;d++)l[d-1]=arguments[d];return r.produceWithPatches(u,function(h){return i.apply(void 0,[h].concat(l))})};var a,s,c=r.produce(i,o,function(u,f){a=u,s=f});return typeof Promise<"u"&&c instanceof Promise?c.then(function(u){return[u,a,s]}):[c,a,s]},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){Ht(n)||lt(8),vn(n)&&(n=DI(n));var r=Zy(this),i=_f(this,n,void 0);return i[oe].C=!0,Gf(r),i},e.finishDraft=function(n,r){var i=n&&n[oe],o=i.A;return Hf(o,r),Qf(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!ev&<(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=xt("Patches").$;return vn(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},t}(),Qe=new NI,iv=Qe.produce;Qe.produceWithPatches.bind(Qe),Qe.setAutoFreeze.bind(Qe),Qe.setUseProxies.bind(Qe),Qe.applyPatches.bind(Qe),Qe.createDraft.bind(Qe),Qe.finishDraft.bind(Qe);function LI(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function ov(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function av(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?ov(Object(n),!0).forEach(function(r){LI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ov(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function De(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var sv=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Zf=function(){return Math.random().toString(36).substring(7).split("").join(".")},Gs={INIT:"@@redux/INIT"+Zf(),REPLACE:"@@redux/REPLACE"+Zf(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Zf()}};function BI(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function cv(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(De(0));if(typeof e=="function"&&typeof n>"u"&&(n=e,e=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(De(1));return n(cv)(t,e)}if(typeof t!="function")throw new Error(De(2));var i=t,o=e,a=[],s=a,c=!1;function u(){s===a&&(s=a.slice())}function f(){if(c)throw new Error(De(3));return o}function l(m){if(typeof m!="function")throw new Error(De(4));if(c)throw new Error(De(5));var g=!0;return u(),s.push(m),function(){if(!!g){if(c)throw new Error(De(6));g=!1,u();var A=s.indexOf(m);s.splice(A,1),a=null}}}function d(m){if(!BI(m))throw new Error(De(7));if(typeof m.type>"u")throw new Error(De(8));if(c)throw new Error(De(9));try{c=!0,o=i(o,m)}finally{c=!1}for(var g=a=s,y=0;y<g.length;y++){var A=g[y];A()}return m}function h(m){if(typeof m!="function")throw new Error(De(10));i=m,d({type:Gs.REPLACE})}function p(){var m,g=l;return m={subscribe:function(A){if(typeof A!="object"||A===null)throw new Error(De(11));function x(){A.next&&A.next(f())}x();var w=g(x);return{unsubscribe:w}}},m[sv]=function(){return this},m}return d({type:Gs.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:h},r[sv]=p,r}function OI(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Gs.INIT});if(typeof r>"u")throw new Error(De(12));if(typeof n(void 0,{type:Gs.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(De(13))})}function qf(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),a;try{OI(n)}catch(s){a=s}return function(c,u){if(c===void 0&&(c={}),a)throw a;for(var f=!1,l={},d=0;d<o.length;d++){var h=o[d],p=n[h],m=c[h],g=p(m,u);if(typeof g>"u")throw u&&u.type,new Error(De(14));l[h]=g,f=f||g!==m}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Qs(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function PI(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(De(15))},a={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=e.map(function(c){return c(a)});return o=Qs.apply(void 0,s)(i.dispatch),av(av({},i),{},{dispatch:o})}}}var Vs="NOT_FOUND";function FI(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Vs},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function zI(t,e){var n=[];function r(s){var c=n.findIndex(function(f){return e(s,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Vs}function i(s,c){r(s)===Vs&&(n.unshift({key:s,value:c}),n.length>t&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var RI=function(e,n){return e===n};function jI(t){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o<i;o++)if(!t(n[o],r[o]))return!1;return!0}}function UI(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?RI:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=jI(i),u=a===1?FI(c):zI(a,c);function f(){var l=u.get(arguments);if(l===Vs){if(l=t.apply(null,arguments),s){var d=u.getEntries(),h=d.find(function(p){return s(p.value,l)});h&&(l=h.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function HI(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r=="function"?"function "+(r.name||"unnamed")+"()":typeof r}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return e}function GI(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=function(){for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},d=s.pop();if(typeof d=="object"&&(l=d,d=s.pop()),typeof d!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof d+"]");var h=l,p=h.memoizeOptions,m=p===void 0?n:p,g=Array.isArray(m)?m:[m],y=HI(s),A=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(g)),x=t(function(){for(var w=[],b=y.length,v=0;v<b;v++)w.push(y[v].apply(null,arguments));return f=A.apply(null,w),f});return Object.assign(x,{resultFunc:d,memoizedResultFunc:A,dependencies:y,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),x};return i}var QI=GI(UI);function uv(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(a){return function(s){return typeof s=="function"?s(i,o,t):a(s)}}};return e}var lv=uv();lv.withExtraArgument=uv;const fv=lv;var VI=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var Ys=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},YI=Object.defineProperty,dv=Object.getOwnPropertySymbols,_I=Object.prototype.hasOwnProperty,WI=Object.prototype.propertyIsEnumerable,hv=function(t,e,n){return e in t?YI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Bo=function(t,e){for(var n in e||(e={}))_I.call(e,n)&&hv(t,n,e[n]);if(dv)for(var r=0,i=dv(e);r<i.length;r++){var n=i[r];WI.call(e,n)&&hv(t,n,e[n])}return t},XI=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Qs:Qs.apply(null,arguments)};function ZI(t){if(typeof t!="object"||t===null)return!1;var e=Object.getPrototypeOf(t);if(e===null)return!0;for(var n=e;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return e===n}var qI=function(t){VI(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,Ys([void 0],n[0].concat(this)))):new(e.bind.apply(e,Ys([void 0],n.concat(this))))},e}(Array);function Kf(t){return Ht(t)?iv(t,function(){}):t}function KI(t){return typeof t=="boolean"}function JI(){return function(e){return $I(e)}}function $I(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new qI;return n&&(KI(n)?r.push(fv):r.push(fv.withExtraArgument(n.extraArgument))),r}var e9=!0;function t9(t){var e=JI(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,a=o===void 0?e():o,s=n.devTools,c=s===void 0?!0:s,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,d=l===void 0?void 0:l,h;if(typeof i=="function")h=i;else if(ZI(i))h=qf(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var p=a;typeof p=="function"&&(p=p(e));var m=PI.apply(void 0,p),g=Qs;c&&(g=XI(Bo({trace:!e9},typeof c=="object"&&c)));var y=[m];Array.isArray(d)?y=Ys([m],d):typeof d=="function"&&(y=d(y));var A=g.apply(void 0,y);return cv(h,f,A)}function Oo(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return Bo(Bo({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function pv(t){var e={},n=[],r,i={addCase:function(o,a){var s=typeof o=="string"?o:o.type;if(s in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[s]=a,i},addMatcher:function(o,a){return n.push({matcher:o,reducer:a}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function n9(t){return typeof t=="function"}function r9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?pv(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if(n9(t))c=function(){return Kf(t())};else{var u=Kf(t);c=function(){return u}}function f(l,d){l===void 0&&(l=c());var h=Ys([o[d.type]],a.filter(function(p){var m=p.matcher;return m(d)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[s]),h.reduce(function(p,m){if(m)if(vn(p)){var g=p,y=m(g,d);return typeof y>"u"?p:y}else{if(Ht(p))return iv(p,function(A){return m(A,d)});var y=m(p,d);if(typeof y>"u"){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return y}return p},l)}return f.getInitialState=c,f}function i9(t,e){return t+"/"+e}function mv(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");typeof process<"u";var n=typeof t.initialState=="function"?t.initialState:Kf(t.initialState),r=t.reducers||{},i=Object.keys(r),o={},a={},s={};i.forEach(function(f){var l=r[f],d=i9(e,f),h,p;"reducer"in l?(h=l.reducer,p=l.prepare):h=l,o[f]=h,a[d]=h,s[f]=p?Oo(d,p):Oo(d)});function c(){var f=typeof t.extraReducers=="function"?pv(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,h=f[1],p=h===void 0?[]:h,m=f[2],g=m===void 0?void 0:m,y=Bo(Bo({},d),a);return r9(n,y,p,g)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:s,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var Jf="listenerMiddleware";Oo(Jf+"/add"),Oo(Jf+"/removeAll"),Oo(Jf+"/remove"),MI();function o9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var a9=[].forEach;function s9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];a9.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void a.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=o9),i.sort(function(c,u){return n(o[c],o[u])});var s=i.map(function(c){return t[c]}).concat(a);return s.length!=t.length&&(s.length=t.length),s}function c9(t,e){const n=i=>i.copy().range(Xt(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>le(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function u9(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function l9(t,e,n){const r=new Set,i=o=>(r.size<n&&r.add(o),r.has(o));return t.filter(o=>i(e(o)))}function f9(t,e,n=!1){return s9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const d9={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function h9(t,e,n,r){const i=d9[n];return t.filter(o=>i(e(o),r))}function gv(t,e,n,r){const i=new Set(r),o=s=>i.has(s),a=n=="remove"?s=>!o(s):o;return t.filter(s=>a(e(s)))}function p9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}/**
|
2150
2150
|
* @license
|
2151
2151
|
* Copyright 2021 Google LLC
|
2152
2152
|
* SPDX-License-Identifier: BSD-3-Clause
|
2153
|
-
*/function*m9(t,e){const n=typeof e=="function";if(t!==void 0){let r=-1;for(const i of t)r>-1&&(yield n?e(r):e),r++,yield i}}const gv="setSamples",yv="sortBy",vv="retainFirstOfEach",bv="retainFirstNCategories",Av="filterByNominal",xv="filterByQuantitative",wv="removeUndefined",Cv="groupByNominal",Sv="groupToQuartiles",Ev="groupByThresholds",Dv="removeGroup",Mv="retainMatched",oi="sampleView";function g9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",title:"Root",samples:[]}}}function y9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return pv({name:oi,initialState:g9(),reducers:{[gv]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(a=>a.id===void 0||a.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(a=>a.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((a,s)=>({...a,indexNumber:s}));n.sampleData={ids:o.map(a=>a.id),entities:Object.fromEntries(o.map(a=>[a.id,a]))},n.rootGroup={name:"ROOT",title:"Root",samples:n.sampleData.ids}},[yv]:(n,r)=>{mr(n,i=>f9(i,c9(e(r.payload,n),t(r.payload.attribute)),!1))},[vv]:(n,r)=>{mr(n,i=>u9(i,e(r.payload,n)))},[bv]:(n,r)=>{mr(n,i=>l9(i,e(r.payload,n),r.payload.n))},[xv]:(n,r)=>{mr(n,i=>h9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Av]:(n,r)=>{mr(n,i=>mv(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[wv]:(n,r)=>{mr(n,i=>p9(i,e(r.payload,n)))},[Cv]:(n,r)=>{var o;const i=(o=t(r.payload.attribute).scale)==null?void 0:o.domain();$f(n,a=>Nv(a,e(r.payload,n),i)),n.groupMetadata.push({attribute:r.payload.attribute})},[Sv]:(n,r)=>{$f(n,i=>x9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Ev]:(n,r)=>{$f(n,i=>A9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})},[Dv]:(n,r)=>{const i=n.rootGroup;_s(i)&&Bv(i,r.payload.path)},[Mv]:(n,r)=>{const i=e(r.payload,n),o=[];for(const s of ed(n))if(s.samples.length>0){const c=new Set;for(const u of s.samples)c.add(i(u));o.push(c)}const a=[];for(const s of o[0]){let c=!0;for(let u=1;u<o.length&&c;u++)c=o[u].has(s);c&&a.push(s)}mr(n,s=>mv(s,i,"retain",a))}}})}function mr(t,e){for(const n of ed(t))n.samples=e(n.samples)}function $f(t,e){for(const n of ed(t))e(n)}function ed(t){return nd(t).map(e=>je(e))}function td(t){return t.provenance.present[oi]}function nd(t){const e=[],n=[],r=i=>{if(e.push(i),_s(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function Tv(t){return"samples"in t}function _s(t){return"groups"in t}function*rd(t){if(yield[t],_s(t))for(const e of t.groups)for(const n of rd(e))yield[t,...n]}const v9=de(".4"),Iv={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function kv(t){return D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`}function b9(t,e){if(!t.type.startsWith(oi))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||D`<em>${i}</em>`,a={attributeName:i};switch(t.type.substring(oi.length+1)){case gv:return{...a,title:"The initial state",icon:a6};case yv:return{...a,title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:J5};case vv:return{...a,title:D`Retain the first sample of each <em>${i}</em>`,provenanceTitle:D`Retain the first sample of each ${o}`,icon:R1};case bv:return{...a,title:D`Retain first <strong>n</strong> categories of <em>${i}</em>...`,provenanceTitle:D`Retain first <strong>${n.n}</strong> categories of ${o}`,icon:R1};case Av:{const c=n.values,u=f=>D`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?D`undefined ${f}`:D`${f} ${c.length>1?D`in ${kv(c)}`:D`<span class="operator">=</span> <strong>${c[0]}</strong>`}`}`;return{...a,title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Es:sr}}case xv:{const c=u=>D`Retain samples having ${u} <span class="operator">${Iv[n.operator]}</span> <strong>${v9(n.operand)}</strong>`;return{...a,title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:sr}}case wv:return{...a,title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Es};case Cv:return{...a,title:"Group by",provenanceTitle:D`Group by ${o}`,icon:Co};case Sv:return{...a,title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:Co};case Ev:return{...a,title:"Group by thresholds",provenanceTitle:D`Group by thresholds ${kv(n.thresholds.map(c=>`${Iv[c.operator]} ${c.operand}`))} on ${o}`,icon:Co};case Dv:return{title:"Remove group",provenanceTitle:D`Remove group ${m9(n.path.map(c=>D`<strong>${c}</strong>`)," / ")}`,icon:Es};case Mv:return{...a,title:D`Retain group-wise matched samples using <em>${i}</em>`,provenanceTitle:D`Retain group-wise matched samples using ${o}`,icon:sr};default:return{...a,title:JSON.stringify(t),icon:F1}}}function Nv(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=gi(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],s=t;s.groups=o.map(([c,u],f)=>({name:""+c,title:r?r[f]:c,samples:u})),delete t.samples}function Lv(t,e,n){const r=a=>`Group ${a+1}`,i=Xt(n.length-1).reverse(),o=Ov(e,n.slice(1,n.length-1));Nv(t,a=>r(o(a)),i.map(r),i.map(a=>Fv(n[a],n[a+1])))}function A9(t,e,n){Lv(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function x9(t,e){const n=C9(w9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),Lv(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function Bv(t,e){if(e.length==0)return;const n=t.groups.findIndex(r=>r.name==e[0]);if(!(n<0)){if(e.length==1)t.groups.splice(n,1);else if(e.length>1){const r=t.groups[n];_s(r)&&Bv(r,[...e].splice(1))}}}function Ov(t,e){return r=>{const i=t(r);if(!(!le(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(e[o].operator=="lt"){if(i<e[o].operand)return o}else if(i<=e[o].operand)return o;return e.length}}}function w9(t,e,n){const r=zb(t.map(e).filter(i=>le(i)&&!isNaN(i)));return n.map(i=>Ic(r,i))}function C9(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}const Pv=de(".3~r"),Fv=(t,e)=>`${t.operator=="lt"?"[":"("}${Pv(t.operand)}, ${Pv(e.operand)}${e.operator=="lte"?"]":")"}`;function S9(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[],i=dr(),o=D`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,a=g=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn btn-primary" ?disabled="${!E9(r)}" @click="${()=>a()}">${K(Co).node[0]} Group</button></div>`,c=(g,y)=>(y>0&&(g=Math.max(g,r[y-1].operand)),y<r.length-1&&(g=Math.min(g,r[y+1].operand)),g),u=(g,y)=>{const A=g.target.value;r[y].operator=A,m()},f=(g,y)=>{const A=g.target.value;/^\d+(\.\d+)?$/.test(A)&&(r[y].operand=c(+A,y),m())},l=g=>{const y=r.findIndex(A=>A.operand>g.value);r.splice(y<0?r.length:y,0,{operand:g.value,operator:"lt"}),m()},d=g=>{r[g.index].operand=c(g.value,g.index),m()},h=g=>{r.splice(g,1),m()},p=D9(t,e.leafSamples,e.sampleHierarchy);function m(){const g=()=>{const A=[{operand:-1/0,operator:"lt"},...r,{operand:1/0,operator:"lte"}],x=Ov(v=>v,A),w=[];for(let v=1;v<A.length;v++)w.push(0);for(const v of p)w[x(v)-1]++;const b=[];for(let v=1;v<A.length;v++)b.push({index:v-1,name:v,interval:Fv(A[v-1],A[v]),n:w[v-1]});return D`<table class="threshold-groups"><thead><tr><th>Group</th><th>Interval</th><th>n</th></tr></thead><tbody>${b.map(v=>D`<tr><td><span class="group-color" style="background-color:${Vy[v.index]}"></span> ${v.name}</td><td>${v.interval}</td><td>${v.n}</td></tr>`)}</tbody></table>`},y=D`<div class="gs-form-group group-by-thresholds-form"><label>Split into groups using the thresholds:</label><genome-spy-histogram .values="${p}" .thresholds="${r.map(A=>A.operand)}" .operators="${r.map(A=>A.operator)}" .showThresholdNumbers="${!0}" @add="${l}" @adjust="${d}"></genome-spy-histogram>${r.map((A,x)=>D`<div class="threshold-flex"><select .value="${A.operator}" @change="${w=>u(w,x)}"><option value="lt">${"<"}</option><option value="lte">${"\u2264"}</option></select> <input .value="${""+A.operand}" type="text" placeholder="Numeric value" @input="${w=>f(w,x)}" @blur="${w=>{w.target.value=""+r[x].operand}}"> <button @click="${()=>h(x)}" class="btn" title="Remove">${K(j1).node[0]}</button></div>`)} ${r.length?D`<small>The operator specifies whether the upper endpoint of the interval (<em>i.e.</em>, the group) is exclusive (<) or inclusive(≤). </small>${g()}`:z}</div>`;Be(D`${o}<div class="modal-body">${y}</div>${s()}`,i.content)}m()}function E9(t){return t.length}function D9(t,e,n){const r=t.accessor;return e.map(i=>r(i,n))}function M9(t,e){const n=e.provenance.storeHelper.getDispatcher();let r=5;const i=dr(),o=D`<div class="modal-title">Retain first n categories of <em>${t.title}</em></div>`,a=f=>{n(e.actions.retainFirstNCategories({attribute:t.attribute,n:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn btn-primary" @click="${()=>a()}">${K(sr).node[0]} Retain</button></div>`,c=D`<div class="gs-form-group"><label>Number of categories to retain:</label> <input type="number" min="1" .valueAsNumber="${r}" @change="${f=>{r=f.target.valueAsNumber}}"></div>`;function u(){Be(D`${o}<div class="modal-body">${c}</div>${s()}`,i.content)}u(),i.content.querySelector("input").focus()}function id(t,e,n,r){var d;const i=r.actions,o=e.attribute,a=r.sampleHierarchy,s=r.provenance.storeHelper.getDispatcher(),c=[];t&&c.push({label:t,type:"header"});const u=(h,p,m)=>{const g=r.provenance.getActionInfo(h);return{label:g.title,icon:g.icon,callback:p?void 0:m!=null?m:()=>s(h)}},f=(...h)=>c.push(...h.map(p=>u(p)));f(i.sortBy({attribute:o}));const l=(d=e==null?void 0:e.type)!=null?d:"identifier";return l!="quantitative"?(l!="identifier"&&(f(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),c.push(u(i.retainFirstNCategories({attribute:o,n:void 0}),!1,()=>M9(e,r)))),f(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]})),c.push(u(i.retainMatched({attribute:o}),!a.groupMetadata.length))):(f(i.groupToQuartiles({attribute:o})),c.push({icon:Co,label:"Group by thresholds...",callback:()=>S9(e,r)}),T9(n)?f(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):f(i.removeUndefined({attribute:o}))),l!=="identifier"&&c.push({icon:sr,label:"Advanced filter...",callback:()=>vI(e,r)}),c}function T9(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function I9(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Gt={},gr={};Object.defineProperty(gr,"__esModule",{value:!0}),gr.ActionCreators=gr.ActionTypes=void 0;var yr={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};gr.ActionTypes=yr;var k9={undo:function(){return{type:yr.UNDO}},redo:function(){return{type:yr.REDO}},jumpToFuture:function(e){return{type:yr.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:yr.JUMP_TO_PAST,index:e}},jump:function(e){return{type:yr.JUMP,index:e}},clearHistory:function(){return{type:yr.CLEAR_HISTORY}}};gr.ActionCreators=k9;var wt={};Object.defineProperty(wt,"__esModule",{value:!0}),wt.parseActions=Ws,wt.isHistory=N9,wt.includeAction=L9,wt.excludeAction=B9,wt.combineFilters=O9,wt.groupByActionTypes=P9,wt.newHistory=F9;function Ws(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function N9(t){return typeof t.present<"u"&&typeof t.future<"u"&&typeof t.past<"u"&&Array.isArray(t.future)&&Array.isArray(t.past)}function L9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)>=0}}function B9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)<0}}function O9(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,a,s){return r(o,a,s)&&i(o,a,s)}},function(){return!0})}function P9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function F9(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var zv={},ai={};Object.defineProperty(ai,"__esModule",{value:!0}),ai.set=Y9,ai.start=G9,ai.end=Q9,ai.log=V9;function Ct(t){return j9(t)||R9(t)||z9()}function z9(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function R9(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function j9(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Xs,$e,od={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function U9(){$e={header:[],prev:[],action:[],next:[],msgs:[]}}function H9(){var t=$e,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var a,s,c,u,f;(a=console).groupCollapsed.apply(a,Ct(e)),(s=console).log.apply(s,Ct(n)),(c=console).log.apply(c,Ct(i)),(u=console).log.apply(u,Ct(r)),(f=console).log.apply(f,Ct(o)),console.groupEnd()}else{var l,d,h,p,m;(l=console).log.apply(l,Ct(e)),(d=console).log.apply(d,Ct(n)),(h=console).log.apply(h,Ct(i)),(p=console).log.apply(p,Ct(r)),(m=console).log.apply(m,Ct(o))}}function ad(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function G9(t,e){U9(),Xs&&(console.group?($e.header=["%credux-undo","font-style: italic","action",t.type],$e.action=ad("action",od.action,t),$e.prev=ad("prev history",od.prevState,e)):($e.header=["redux-undo action",t.type],$e.action=["action",t],$e.prev=["prev history",e]))}function Q9(t){Xs&&(console.group?$e.next=ad("next history",od.nextState,t):$e.next=["next history",t],H9())}function V9(){if(Xs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];$e.msgs=$e.msgs.concat([].concat(e,[`
|
2154
|
-
`]))}}function Y9(t){Xs=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(C){return typeof C}:e=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=w;var n=a(ai),r=gr,i=wt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function a(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var v=o();if(v&&v.has(b))return v.get(b);var C={},S=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var I in b)if(Object.prototype.hasOwnProperty.call(b,I)){var N=S?Object.getOwnPropertyDescriptor(b,I):null;N&&(N.get||N.set)?Object.defineProperty(C,I,N):C[I]=b[I]}return C.default=b,v&&v.set(b,C),C}function s(b,v){var C=Object.keys(b);if(Object.getOwnPropertySymbols){var S=Object.getOwnPropertySymbols(b);v&&(S=S.filter(function(I){return Object.getOwnPropertyDescriptor(b,I).enumerable})),C.push.apply(C,S)}return C}function c(b){for(var v=1;v<arguments.length;v++){var C=arguments[v]!=null?arguments[v]:{};v%2?s(Object(C),!0).forEach(function(S){u(b,S,C[S])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(C)):s(Object(C)).forEach(function(S){Object.defineProperty(b,S,Object.getOwnPropertyDescriptor(C,S))})}return b}function u(b,v,C){return v in b?Object.defineProperty(b,v,{value:C,enumerable:!0,configurable:!0,writable:!0}):b[v]=C,b}function f(b){return h(b)||d(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function h(b){if(Array.isArray(b)){for(var v=0,C=new Array(b.length);v<b.length;v++)C[v]=b[v];return C}}function p(b,v){var C=(0,i.newHistory)([],b,[]);return v&&(C._latestUnfiltered=null),C}function m(b,v,C,S){var I=b.past.length+1;n.log("inserting",v),n.log("new free: ",C-I);var N=b.past,T=b._latestUnfiltered,O=C&&C<=I,Q=N.slice(O?1:0),U=T!=null?[].concat(f(Q),[T]):Q;return(0,i.newHistory)(U,v,[],S)}function g(b,v){if(v<0||v>=b.future.length)return b;var C=b.past,S=b.future,I=b._latestUnfiltered,N=[].concat(f(C),[I],f(S.slice(0,v))),T=S[v],O=S.slice(v+1);return(0,i.newHistory)(N,T,O)}function y(b,v){if(v<0||v>=b.past.length)return b;var C=b.past,S=b.future,I=b._latestUnfiltered,N=C.slice(0,v),T=[].concat(f(C.slice(v+1)),[I],f(S)),O=C[v];return(0,i.newHistory)(N,O,T)}function A(b,v){return v>0?g(b,v-1):v<0?y(b,b.past.length+v):b}function x(b,v){return v.indexOf(b)>-1?b:!b}function w(b){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(v.debug);var C=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},v,{initTypes:(0,i.parseActions)(v.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(v.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),S=C.neverSkipReducer?function(N,T){for(var O=arguments.length,Q=new Array(O>2?O-2:0),U=2;U<O;U++)Q[U-2]=arguments[U];return c({},N,{present:b.apply(void 0,[N.present,T].concat(Q))})}:function(N){return N},I;return function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:I,T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(T,N);for(var O=N,Q=arguments.length,U=new Array(Q>2?Q-2:0),we=2;we<Q;we++)U[we-2]=arguments[we];if(!I)if(n.log("history is uninitialized"),N===void 0){var Ie={type:"@@redux-undo/CREATE_HISTORY"},Cn=b.apply(void 0,[N,Ie].concat(U));return O=p(Cn,C.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(O),O}else(0,i.isHistory)(N)?(O=I=C.ignoreInitialState?N:(0,i.newHistory)(N.past,N.present,N.future),n.log("initialHistory initialized: initialState is a history",I)):(O=I=p(N,C.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",I));var _;switch(T.type){case void 0:return O;case C.undoType:return _=A(O,-1),n.log("perform undo"),n.end(_),S.apply(void 0,[_,T].concat(U));case C.redoType:return _=A(O,1),n.log("perform redo"),n.end(_),S.apply(void 0,[_,T].concat(U));case C.jumpToPastType:return _=y(O,T.index),n.log("perform jumpToPast to ".concat(T.index)),n.end(_),S.apply(void 0,[_,T].concat(U));case C.jumpToFutureType:return _=g(O,T.index),n.log("perform jumpToFuture to ".concat(T.index)),n.end(_),S.apply(void 0,[_,T].concat(U));case C.jumpType:return _=A(O,T.index),n.log("perform jump to ".concat(T.index)),n.end(_),S.apply(void 0,[_,T].concat(U));case x(T.type,C.clearHistoryType):return _=p(O.present,C.ignoreInitialState),n.log("perform clearHistory"),n.end(_),S.apply(void 0,[_,T].concat(U));default:if(_=b.apply(void 0,[O.present,T].concat(U)),C.initTypes.some(function(Nd){return Nd===T.type}))return n.log("reset history due to init action"),n.end(I),I;if(O._latestUnfiltered===_)return O;var Ve=typeof C.filter=="function"&&!C.filter(T,_,O);if(Ve){var Ko=(0,i.newHistory)(O.past,_,O.future,O.group);return C.syncFilter||(Ko._latestUnfiltered=O._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(Ko),Ko}var Jo=C.groupBy(T,_,O);if(Jo!=null&&Jo===O.group){var dc=(0,i.newHistory)(O.past,_,O.future,O.group);return n.log("groupBy grouped the action with the previous action"),n.end(dc),dc}return O=m(O,_,C.limit,Jo),n.log("inserted new state into history"),n.end(O),O}}}})(zv),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=gr,n=wt,r=i(zv);function i(o){return o&&o.__esModule?o:{default:o}}}(Gt);const _9=I9(Gt);function Zs(t){return t.split("-")[0]}function sd(t){return t.split("-")[1]}function cd(t){return["top","bottom"].includes(Zs(t))?"x":"y"}function Rv(t){return t==="y"?"height":"width"}function jv(t,e,n){let{reference:r,floating:i}=t;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=cd(e),c=Rv(s),u=r[c]/2-i[c]/2,f=Zs(e),l=s==="x";let d;switch(f){case"top":d={x:o,y:r.y-i.height};break;case"bottom":d={x:o,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:a};break;case"left":d={x:r.x-i.width,y:a};break;default:d={x:r.x,y:r.y}}switch(sd(e)){case"start":d[s]-=u*(n&&l?-1:1);break;case"end":d[s]+=u*(n&&l?-1:1);break}return d}const W9=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(e));let c=await a.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:f}=jv(c,r,s),l=r,d={};for(let h=0;h<o.length;h++){const{name:p,fn:m}=o[h],{x:g,y,data:A,reset:x}=await m({x:u,y:f,initialPlacement:r,placement:l,strategy:i,middlewareData:d,rects:c,platform:a,elements:{reference:t,floating:e}});if(u=g!=null?g:u,f=y!=null?y:f,d={...d,[p]:{...d[p],...A}},x){typeof x=="object"&&(x.placement&&(l=x.placement),x.rects&&(c=x.rects===!0?await a.getElementRects({reference:t,floating:e,strategy:i}):x.rects),{x:u,y:f}=jv(c,l,s)),h=-1;continue}}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function X9(t){return{top:0,right:0,bottom:0,left:0,...t}}function Z9(t){return typeof t!="number"?X9(t):{top:t,right:t,bottom:t,left:t}}function qs(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}async function q9(t,e){var n;e===void 0&&(e={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:c}=t,{boundary:u="clippingAncestors",rootBoundary:f="viewport",elementContext:l="floating",altBoundary:d=!1,padding:h=0}=e,p=Z9(h),g=s[d?l==="floating"?"reference":"floating":l],y=qs(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(g)))==null||n?g:g.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:c})),A=qs(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:l==="floating"?{...a.floating,x:r,y:i}:a.reference,offsetParent:await(o.getOffsetParent==null?void 0:o.getOffsetParent(s.floating)),strategy:c}):a[l]);return{top:y.top-A.top+p.top,bottom:A.bottom-y.bottom+p.bottom,left:y.left-A.left+p.left,right:A.right-y.right+p.right}}const K9={left:"right",right:"left",bottom:"top",top:"bottom"};function Ks(t){return t.replace(/left|right|bottom|top/g,e=>K9[e])}function J9(t,e,n){n===void 0&&(n=!1);const r=sd(t),i=cd(t),o=Rv(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=Ks(a)),{main:a,cross:Ks(a)}}const $9={start:"end",end:"start"};function Uv(t){return t.replace(/start|end/g,e=>$9[e])}function ek(t){const e=Ks(t);return[Uv(t),e,Uv(e)]}const Hv=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:c}=e,{mainAxis:u=!0,crossAxis:f=!0,fallbackPlacements:l,fallbackStrategy:d="bestFit",flipAlignment:h=!0,...p}=t,m=Zs(r),y=l||(m===a||!h?[Ks(a)]:ek(a)),A=[a,...y],x=await q9(e,p),w=[];let b=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&w.push(x[m]),f){const{main:I,cross:N}=J9(r,o,await(s.isRTL==null?void 0:s.isRTL(c.floating)));w.push(x[I],x[N])}if(b=[...b,{placement:r,overflows:w}],!w.every(I=>I<=0)){var v,C;const I=((v=(C=i.flip)==null?void 0:C.index)!=null?v:0)+1,N=A[I];if(N)return{data:{index:I,overflows:b},reset:{placement:N}};let T="bottom";switch(d){case"bestFit":{var S;const O=(S=b.map(Q=>[Q,Q.overflows.filter(U=>U>0).reduce((U,we)=>U+we,0)]).sort((Q,U)=>Q[1]-U[1])[0])==null?void 0:S[0].placement;O&&(T=O);break}case"initialPlacement":T=a;break}if(r!==T)return{reset:{placement:T}}}return{}}}};async function tk(t,e){const{placement:n,platform:r,elements:i}=t,o=await(r.isRTL==null?void 0:r.isRTL(i.floating)),a=Zs(n),s=sd(n),c=cd(n)==="x",u=["left","top"].includes(a)?-1:1,f=o&&c?-1:1,l=typeof e=="function"?e(t):e;let{mainAxis:d,crossAxis:h,alignmentAxis:p}=typeof l=="number"?{mainAxis:l,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...l};return s&&typeof p=="number"&&(h=s==="end"?p*-1:p),c?{x:h*f,y:d*u}:{x:d*u,y:h*f}}const nk=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){const{x:n,y:r}=e,i=await tk(e,t);return{x:n+i.x,y:r+i.y,data:i}}}};function Gv(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Qt(t){if(t==null)return window;if(!Gv(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function Po(t){return Qt(t).getComputedStyle(t)}function Vt(t){return Gv(t)?"":t?(t.nodeName||"").toLowerCase():""}function Qv(){const t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(e=>e.brand+"/"+e.version).join(" "):navigator.userAgent}function St(t){return t instanceof Qt(t).HTMLElement}function si(t){return t instanceof Qt(t).Element}function rk(t){return t instanceof Qt(t).Node}function ud(t){if(typeof ShadowRoot>"u")return!1;const e=Qt(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Js(t){const{overflow:e,overflowX:n,overflowY:r}=Po(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function ik(t){return["table","td","th"].includes(Vt(t))}function Vv(t){const e=/firefox/i.test(Qv()),n=Po(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}function Yv(){return!/^((?!chrome|android).)*safari/i.test(Qv())}const _v=Math.min,Fo=Math.max,$s=Math.round;function vr(t,e,n){var r,i,o,a;e===void 0&&(e=!1),n===void 0&&(n=!1);const s=t.getBoundingClientRect();let c=1,u=1;e&&St(t)&&(c=t.offsetWidth>0&&$s(s.width)/t.offsetWidth||1,u=t.offsetHeight>0&&$s(s.height)/t.offsetHeight||1);const f=si(t)?Qt(t):window,l=!Yv()&&n,d=(s.left+(l&&(r=(i=f.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/c,h=(s.top+(l&&(o=(a=f.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,p=s.width/c,m=s.height/u;return{width:p,height:m,top:h,right:d+p,bottom:h+m,left:d,x:d,y:h}}function An(t){return((rk(t)?t.ownerDocument:t.document)||window.document).documentElement}function ec(t){return si(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Wv(t){return vr(An(t)).left+ec(t).scrollLeft}function ok(t){const e=vr(t);return $s(e.width)!==t.offsetWidth||$s(e.height)!==t.offsetHeight}function ak(t,e,n){const r=St(e),i=An(e),o=vr(t,r&&ok(e),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Vt(e)!=="body"||Js(i))&&(a=ec(e)),St(e)){const c=vr(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=Wv(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function Xv(t){return Vt(t)==="html"?t:t.assignedSlot||t.parentNode||(ud(t)?t.host:null)||An(t)}function Zv(t){return!St(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function sk(t){let e=Xv(t);for(ud(e)&&(e=e.host);St(e)&&!["html","body"].includes(Vt(e));){if(Vv(e))return e;e=e.parentNode}return null}function ld(t){const e=Qt(t);let n=Zv(t);for(;n&&ik(n)&&getComputedStyle(n).position==="static";)n=Zv(n);return n&&(Vt(n)==="html"||Vt(n)==="body"&&getComputedStyle(n).position==="static"&&!Vv(n))?e:n||sk(t)||e}function qv(t){if(St(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=vr(t);return{width:e.width,height:e.height}}function ck(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=St(n),o=An(n);if(n===o)return e;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((Vt(n)!=="body"||Js(o))&&(a=ec(n)),St(n))){const c=vr(n,!0);s.x=c.x+n.clientLeft,s.y=c.y+n.clientTop}return{...e,x:e.x-a.scrollLeft+s.x,y:e.y-a.scrollTop+s.y}}function uk(t,e){const n=Qt(t),r=An(t),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,c=0;if(i){o=i.width,a=i.height;const u=Yv();(u||!u&&e==="fixed")&&(s=i.offsetLeft,c=i.offsetTop)}return{width:o,height:a,x:s,y:c}}function lk(t){var e;const n=An(t),r=ec(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Fo(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Fo(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+Wv(t);const c=-r.scrollTop;return Po(i||n).direction==="rtl"&&(s+=Fo(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:c}}function Kv(t){const e=Xv(t);return["html","body","#document"].includes(Vt(e))?t.ownerDocument.body:St(e)&&Js(e)?e:Kv(e)}function Jv(t,e){var n;e===void 0&&(e=[]);const r=Kv(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=Qt(r),a=i?[o].concat(o.visualViewport||[],Js(r)?r:[]):r,s=e.concat(a);return i?s:s.concat(Jv(a))}function fk(t,e){const n=e==null||e.getRootNode==null?void 0:e.getRootNode();if(t!=null&&t.contains(e))return!0;if(n&&ud(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function dk(t,e){const n=vr(t,!1,e==="fixed"),r=n.top+t.clientTop,i=n.left+t.clientLeft;return{top:r,left:i,x:i,y:r,right:i+t.clientWidth,bottom:r+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function $v(t,e,n){return e==="viewport"?qs(uk(t,n)):si(e)?dk(e,n):qs(lk(An(t)))}function hk(t){const e=Jv(t),r=["absolute","fixed"].includes(Po(t).position)&&St(t)?ld(t):t;return si(r)?e.filter(i=>si(i)&&fk(i,r)&&Vt(i)!=="body"):[]}function pk(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const a=[...n==="clippingAncestors"?hk(e):[].concat(n),r],s=a[0],c=a.reduce((u,f)=>{const l=$v(e,f,i);return u.top=Fo(l.top,u.top),u.right=_v(l.right,u.right),u.bottom=_v(l.bottom,u.bottom),u.left=Fo(l.left,u.left),u},$v(e,s,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}const mk={getClippingRect:pk,convertOffsetParentRelativeRectToViewportRelativeRect:ck,isElement:si,getDimensions:qv,getOffsetParent:ld,getDocumentElement:An,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:ak(e,ld(n),r),floating:{...qv(n),x:0,y:0}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>Po(t).direction==="rtl"},gk=(t,e,n)=>W9(t,e,{platform:mk,...n});let Et;const zo=[],fd=ws(t=>t(),150,!1),dd={type:"divider"};function Ro(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}Et&&(Et.remove(),Et=void 0,document.body.classList.remove(Yn))}function e2(t){var e;if(!(t<1)){for(let n=t;n<zo.length;n++)(e=zo[n])==null||e.remove(),zo[n]=void 0;for(const n of zo[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const yk=()=>D`<li class="menu-divider"></li>`,vk=t=>D`<li class="menu-header">${t.label||"-"}</li>`,bk=(t,e)=>D`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>fd(()=>{const r=n.target.closest("li");wk(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>fd(()=>e2(e+1))}"><span>${t.label}</span></a></li>`,Ak=t=>D`<li><a class="choice-item" @mouseup="${()=>{Ro(),t.callback()}}"><span>${t.icon?K(t.icon).node[0]:""} ${t.label}</span> ${t.shortcut?D`<span class="kbd-shortcut">${t.shortcut}</span>`:z} </a>${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${K(g6).node[0]}</a>`:z}</li>`,xk=t=>D`<li><span class="disabled-item">${t.icon?K(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function t2(t,e=1){switch(t.type){case"divider":return yk();case"header":return vk(t);default:return t.submenu?bk(t,e):t.callback?Ak(t):xk(t)}}function wk(t,e,n){n2(t,e,n,"right-start"),e.classList.add("active")}function n2(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{fd(()=>{})}),Be(t.map(o=>t2(o,n)),i),Et.appendChild(i),e2(n),zo[n]=i,gk(e,i,{placement:r!=null?r:"right-start",middleware:n?[Hv()]:[nk(2),Hv()]}).then(({x:o,y:a})=>{const s=i.querySelector(":scope > li");s&&(a-=s.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${a}px`})}function r2(t,e,n){n!=null||(n="bottom-start"),Ro();const r=performance.now(),i=document.body;Et=document.createElement("div"),Et.classList.add("gs-context-menu-backdrop"),Et.addEventListener("click",Ro),Et.addEventListener("contextmenu",Ro),Et.addEventListener("mouseup",()=>{performance.now()-r>500&&Ro()},{once:!0}),i.appendChild(Et),document.body.classList.add(Yn),n2(t.items,e,0,n)}function hd(t,e){r2(t,Ck(e),"right-start"),e.preventDefault()}function Ck(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const pd={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},tc="SAMPLE_ATTRIBUTE",i2="SAMPLE_NAME",Sk=/^attribute-(.*)$/;class o2 extends Xr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata"),this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(tc,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(i2,n=>a2),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var s;const i=r.target,o=this._findSampleForMouseEvent(n,r),a=i&&((s=this.getAttributeInfoFromView(i))==null?void 0:s.name)||void 0;if(o){const c=JSON.stringify([o.id,a]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(a)}),je([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,{...r,clipRect:this.sampleView._clipBySummary(n)})}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:Gg,signal:n.abortController.signal,...e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150}}).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-this.sampleView.childCoords.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[this.sampleView.makePeekMenuItem(),dd],a=this.getAttributeInfoFromView(n.target);if(a){const s=i.attributes[a.name];o.push(...id(D`Attribute: <strong>${a.name}</strong>`,a,s,this.sampleView))}else o.push(...id(D`Sample: <strong>${i.displayName}</strong>`,a2,i.id,this.sampleView));hd({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;g1(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof be){const a=o.mark;a.initializeEncoders(),i.push(a.initializeGraphics().then(s=>a)),n.addObserver(s=>{a.initializeData(),a.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const a of o)"value"in a?a.value.finalizeGraphicsInitialization():"reason"in a&&console.error(a.reason)}),r.publishData(e),this.visit(o=>{o.name.startsWith("title")&&n.findDataSourceByKey(o).load()})}_createViews(){const e=[];e.push(this.context.createView(Dk(),this));for(const n of this._getAttributeNames()){const r=this.context.createView(this._createAttributeViewSpec(n),this);r.opacityFunction=i=>i*this._getAttributeOpacity(n),e.push(r)}this.setChildren(e),v1(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}_getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(Hh(i.map(o=>o.attributes[e]))){case"integer":case"number":r=pd.QUANTITATIVE;break;default:r=pd.NOMINAL}}return Ek(e,{...n||{},type:r})}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e==null?void 0:e.name.match(Sk);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:tc,specifier:i},accessor:(o,a)=>a.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:D`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(s,c)=>Mk(c)?this.getAttributeInfo(s).scale(c):"transparent",a=D`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>D`<tr class="${nf({hovered:s==r})}"><th>${s}</th><td>${D1(c)}</td><td class="color" .style="background-color: ${o(s,c)}"></td></tr>`)}</table>`;return D`<div class="title"><strong>${i.displayName||i.id}</strong></div>${a}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==Rl||i.type==jl)&&this.sampleView.getSamples().find(a=>a.attributes[i.name]==n)){const a=this.sampleView.actions.filterByNominal({attribute:{type:tc,specifier:r},values:[n]}),s=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(s)&&!s.payload.remove&&s.payload.attribute.type==tc&&s.payload.attribute.specifier==r&&s.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[Gt.ActionCreators.undo(),a]:a),!0}}return!1}isPickingSupported(){return!1}}function Ek(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:{text:t,orient:"bottom",align:"right",baseline:"middle",offset:5,angle:-90,dy:-.5,fontSize:11},visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect",xOffset:-.5},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==pd.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),r}function Dk(){return{name:"metadata-sample-name",title:{text:"Sample name",orient:"bottom",anchor:"start",offset:5,fontSize:11},width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function Mk(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const a2=Object.freeze({name:"sample",attribute:{type:i2},accessor:t=>t,type:"identifier",scale:void 0});class Tk extends Pt{constructor(e){super({title:{text:"Groups",orient:"none"},width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_title",expr:"datum.title || datum.name"},{type:"formula",as:"_NA",expr:"datum._title === null"},{type:"formula",as:"_title",expr:"datum._title !== null ? datum._title: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:Xt(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,color:"#e8e8e8",cornerRadiusBottomLeft:14,cornerRadiusTopLeft:14}},{mark:{type:"text",clip:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"_title"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups"),this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()}),this.addInteractionEventListener("contextmenu",(n,r)=>{const i=r.uiEvent,o=this.context.getCurrentHover();if(!o)return;const a=o.datum._rawGroup;let s;for(const l of rd(this.sampleView.sampleHierarchy.rootGroup))if(l.at(-1)===a){s=l.slice(1);break}const c=e.actions.removeGroup({path:s.map(l=>l.name)}),u=e.provenance.getActionInfo(c),f=e.provenance.storeHelper.getDispatcher();hd({items:[{label:u.title,icon:u.icon,callback:()=>f(c)}]},i)})}updateRange(){var o,a,s;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e!=null&&e.length))return;const n=(s=(a=this.sampleView)==null?void 0:a.childCoords.height)!=null?s:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(a=>({_index:a.key.index,_depth:a.key.depth,_rawGroup:a.key.group,attribute:a.key.attributeLabel,name:a.key.group.name,...a.key.group.name!=a.key.group.title?{title:a.key.group.title}:{},n:a.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),je([...this.getAncestors()]).visit(a=>mo(a,"size"))}}class Ik{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function nc(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function s2(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=d=>je(d),a=t.map(d=>({path:d,sampleGroup:o(d),samples:o(d).samples})).filter(d=>d.samples.length),s=n?d=>({px:d.length*n+i,grow:0}):d=>({px:i,grow:d.length}),c=[];bo(a.map(d=>s(d.samples)),e,{spacing:r}).forEach((d,h)=>{c.push({key:a[h].path,locSize:d})});const u=[];for(const[d,h]of a.entries()){const p={grow:1},m=h.samples;bo(m.map(g=>p),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((g,y)=>{const{size:A,location:x}=g,w=A*.1*Wg(15,22,A);g.location=x+w,g.size=A-2*w,u.push({key:m[y],locSize:g})})}function*f(){const d=[];for(const h of c){const p=h.key,m=je(p);for(;d.length<=p.length&&d.length&&p[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let g=0;g<d.length;g++){const y=d[g];y.locSize.size=h.locSize.location-y.locSize.location+h.locSize.size}for(let g=d.length;g<p.length;g++)d.push({group:p[g],locSize:{...h.locSize},depth:d.length,n:0});for(const g of d)g.n+=m.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,h)=>d.depth-h.depth).map((d,h)=>({key:{index:h,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function kk(t,e){return e.find(n=>Dg(n.locSize,t))}const c2="VALUE_AT_LOCUS",u2=10;class md extends rr{constructor(n,r,i,o,a){var f;super(n,r,i,o);te(this,fc);hc(this,"_peekState",0);this.provenance=a,this.spec=n,this.stickySummaries=(f=n.stickySummaries)!=null?f:!0,this.compositeAttributeInfoSource=new Ik,this.child=r.createView(n.spec,this,"sample-facets"),this.summaryViews=new Xr({vconcat:[]},r,this,"sampleSummaries"),this.child.visit(l=>{l instanceof be&&this.summaryViews.setChildren(l.sampleAggregateViews)}),this.childCoords=pn.ZERO,this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new Xr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},r,this,"sample-sidebar"),this.peripheryCoords=pn.ZERO,this.groupPanel=new Tk(this),this.attributePanel=new o2(this),this.peripheryView.setChildren([this.groupPanel,this.attributePanel]),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(nc(l=>td(l).rootGroup,l=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(nc(l=>td(l).sampleData,l=>{const d=l&&Object.values(l.entities);!d||(this.attributePanel._setSamples(d),this.facetTextureData=new Float32Array(Math.ceil(d.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(c2,l=>{var w,b;const d=l.specifier,h=this.findDescendantByName(d.view);let p;if(le(d.locus))p=d.locus;else{const v=this.getScaleResolution("x").getGenome();if(v)p=v.toContinuous(d.locus.chrom,d.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const m=v=>{var C;return(C=h.mark.findDatumAt(v,p))==null?void 0:C[d.field]},[g,y]=Object.entries(h.getEncoding()).find(([v,C])=>"field"in C&&C.field==d.field),A=g?(w=h.getScaleResolution(g))==null?void 0:w.getScale():void 0;return{name:d.field,attribute:l,title:D`<em class="attribute">${d.field}</em> <span class="viewTitle">(${(b=h.getTitleText())!=null?b:h.name})</span> at <span class="locus">${l2(d.locus)}</span>`,accessor:m,type:"type"in y?y.type:void 0,scale:A}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(l,d)=>{this._lastMouseY=d.point.y-this.childCoords.y}),this.addInteractionEventListener("wheel",(l,d)=>{const h=d.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=ms(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this.childCoords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),d.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),r.addKeyboardListener("keydown",l=>{l.code=="KeyE"&&!l.repeat&&this.togglePeek()}),r.addKeyboardListener("keyup",l=>{l.code=="KeyE"&&this.togglePeek(!1)});const s=l=>this.compositeAttributeInfoSource.getAttributeInfo(l),c=y9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>b9(l,s)),this.actions=c.actions;const u=QI(l=>{var d;return(d=l.sampleData)==null?void 0:d.entities},l=>l&&Object.values(l));this.getSamples=()=>u(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getOverhang(){let n=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px:0;return n&&(n+=u2),new Je(0,0,0,n)}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(n,r){const i=r;if(n===this.child)this.child=i;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:n,collector:r}=m5(d1(this.spec.samples.data,this.getBaseUrl()),new Nk);r.observers.push(o=>{const a=o.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:a}))});const i="samples "+this.getPathString();this.context.dataFlow.addDataSource(n,i)}extractSamplesFromData(){if(this.getSamples())return;const n=this.getScaleResolution("sample");if(n){const r=n.getDataDomain().map((i,o)=>({id:i,displayName:i,indexNumber:o,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:r}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[oi]}get leafSamples(){return nd(this.sampleHierarchy).map(r=>r.at(-1)).map(r=>r.samples).flat()}getLocations(){var n,r,i,o;if(!this._locations){if(!((n=this.childCoords)!=null&&n.height))return;const a=this.sampleHierarchy,s=nd(a),c=[null,...a.groupMetadata],u=(o=((r=this.summaryViews)==null?void 0:r.isVisible())&&((i=this.summaryViews)==null?void 0:i.getSize().height.px))!=null?o:0,f=s2(s,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:u}),l=s2(s,{sampleHeight:35,groupSpacing:15,summaryHeight:u}),d=()=>-this._scrollOffset,h=()=>this._peekState;this._scrollableLocations=l,this._scrollableHeight=l.summaries.map(y=>y.locSize.location+y.locSize.size).reduce((y,A)=>Math.max(y,A),0);const p=(y,A)=>{const x=[];for(let w=0;w<y.length;w++){const b=y[w].key;x.push({key:b,locSize:wM(y[w].locSize,CM(A[w].locSize,d),h)})}return x},m=p(f.groups,l.groups),g=document.createElement("div");m.forEach(y=>{if(y.key.depth==0)return;const A=c[y.key.depth].attribute,x=this.compositeAttributeInfoSource.getAttributeInfo(A).title;x?ne(x)?y.key.attributeLabel=x:(Be(x,g),y.key.attributeLabel=g.textContent.replace(/\s+/g," ").trim()):y.key.attributeLabel="unknown"}),this._locations={samples:p(f.samples,l.samples),summaries:p(f.summaries,l.summaries),groups:m}}return this._locations}getSampleAt(n){const r=kk(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>Dg(o.locSize,n));return i>=0?{index:i,location:r[i]}:void 0}_clipBySummary(n){if(this.stickySummaries&&this.summaryViews.childCount){const r=this.summaryViews.getSize().height.px;return n.modify({y:()=>n.y+r,height:()=>n.height-r})}}renderChild(n,r,i={}){const o=1/r.height,a=()=>o,s=this._clipBySummary(r);for(const c of this.getLocations().samples)this.child.render(n,r,{...i,sampleFacetRenderingOptions:{locSize:SM(c.locSize,a)},facetId:[c.key],clipRect:s})}renderSummaries(n,r,i={}){i={...i,clipRect:r};const o=this.summaryViews.getSize().height.px;for(const[a,s]of this.getLocations().summaries.entries()){const c=()=>{const u=s.locSize.location;let f=r.y+u;return this.stickySummaries?f+ms(-u,0,s.locSize.size-o):f};this.summaryViews.render(n,r.modify({y:c,height:o}),{...i,facetId:[a]})}}render(n,r,i={}){if(!this.isVisible())return;n.pushView(this,r);const o=bo([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:u2}),a=s=>r.modify({x:s.location+r.x,width:s.size});this.peripheryCoords=a(o[0]),this.childCoords=a(o[1]),this.peripheryView.render(n,this.peripheryCoords,i),this.renderChild(n,this.childCoords,i),this.renderSummaries(n,this.childCoords,i),n.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var o;const n=this.facetTextureData;n.fill(0);const r=(o=this.sampleHierarchy.sampleData)==null?void 0:o.entities;if(r){const a=this.getLocations().samples,s=this.childCoords.height;for(const c of a){const u=r[c.key].indexNumber;n[u*2+0]=c.locSize.location/s,n[u*2+1]=c.locSize.size/s}}const i=this.context.glHelper.gl;this.facetTexture=yo(i,{internalFormat:i.RG32F,format:i.RG,height:1},n,this.facetTexture)}togglePeek(n){var i;if(this._peekState>0&&this._peekState<1||n!==void 0&&n==!!this._peekState)return;const r={requestAnimationFrame:o=>this.context.animator.requestTransition(o),onUpdate:o=>{this._peekState=Math.pow(o,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const o=this._lastMouseY,a=(i=this.getSampleAt(o))==null?void 0:i.id;let s;if(a)s=(u=>u.location+u.size/2)(this._scrollableLocations.samples.find(u=>u.key==a).locSize);else{const c=this.getSummaryAt(o);c&&(s=this._scrollableLocations.summaries[c.index].locSize.location-(c.location.locSize.location-o))}s?this._scrollOffset=s-o:this._scrollOffset=(this._scrollableHeight-this.childCoords.height)/2,this._scrollableHeight>this.childCoords.height?xs({...r,to:1,duration:500,easingFunction:s8}):xs({...r,from:0,to:1,duration:300,easingFunction:u=>(1-Math.pow(u*2-1,2))*.5})}else xs({...r,to:0,duration:400,easingFunction:o8})}makePeekMenuItem(){return{...this._peekState==0?{label:"Open closeup",callback:()=>this.togglePeek(!0),icon:D6}:{label:"Close closeup",callback:()=>this.togglePeek(!1),icon:M6},shortcut:"E"}}_handleContextMenu(n,r){var l;const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=A1([...this.getAncestors()].at(-1)),c=A5(this.child).filter(d=>!["sample","x","x2"].includes(d.channel)).filter(d=>["rect","rule"].includes(d.view.getMarkType())).filter(d=>s.has(d.view.name));let u=[this.makePeekMenuItem(),dd,{label:`Locus: ${l2(a)}`,type:"header"},dd],f="";for(const[d,h]of c.entries()){const p={view:h.view.name,field:h.field,locus:a},m=this.compositeAttributeInfoSource.getAttributeInfo({type:c2,specifier:p}),g=(l=h.view.getTitleText())!=null?l:h.view.spec.name;g!=f&&(d>0&&u.push({type:"divider"}),u.push({label:g,type:"header"}),f=g),u.push({label:h.field,submenu:id(null,m,void 0,this)})}hd({items:u},i)}getSampleFacetTexture(){return this.facetTexture}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0),!n.stopped&&(this.childCoords.containsPoint(n.point.x,n.point.y)&&(this.child.propagateInteractionEvent(n),r1(n,this.childCoords,r=>se(this,fc,Y2).call(this,this.childCoords,this.child,r),this.context.getCurrentHover())),this.peripheryCoords.containsPoint(n.point.x,n.point.y)&&this.peripheryView.propagateInteractionEvent(n),!n.stopped&&this.handleInteractionEvent(void 0,n,!1))}getDefaultResolution(n,r){switch(n){case"x":case"sample":return"shared";default:return"independent"}}}fc=new WeakSet,Y2=function(n,r,i){const o=this.child.getScaleResolution("x");if(!o||!o.isZoomable())return;const a=n.normalizePoint(i.x,i.y),s=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta);o.zoom(2**i.zDelta,a.x,s.x-a.x),this.context.animator.requestRender()};function l2(t){return!le(t)&&"chrom"in t?KM(t):""+t}class Nk extends ue{constructor(){super(),this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:Lk(e)})}}function Lk(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function Bk(t){return"samples"in t&&ze(t.samples)&&"spec"in t&&ze(t.spec)}const Ok=(t,e)=>e.some(n=>t instanceof n);let f2,d2;function Pk(){return f2||(f2=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Fk(){return d2||(d2=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const h2=new WeakMap,gd=new WeakMap,p2=new WeakMap,yd=new WeakMap,vd=new WeakMap;function zk(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",a)},o=()=>{n(xn(t.result)),i()},a=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",a)});return e.then(n=>{n instanceof IDBCursor&&h2.set(n,t)}).catch(()=>{}),vd.set(e,t),e}function Rk(t){if(gd.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",a),t.removeEventListener("abort",a)},o=()=>{n(),i()},a=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",a),t.addEventListener("abort",a)});gd.set(t,e)}let bd={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return gd.get(t);if(e==="objectStoreNames")return t.objectStoreNames||p2.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return xn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function jk(t){bd=t(bd)}function Uk(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Ad(this),e,...n);return p2.set(r,e.sort?e.sort():[e]),xn(r)}:Fk().includes(t)?function(...e){return t.apply(Ad(this),e),xn(h2.get(this))}:function(...e){return xn(t.apply(Ad(this),e))}}function Hk(t){return typeof t=="function"?Uk(t):(t instanceof IDBTransaction&&Rk(t),Ok(t,Pk())?new Proxy(t,bd):t)}function xn(t){if(t instanceof IDBRequest)return zk(t);if(yd.has(t))return yd.get(t);const e=Hk(t);return e!==t&&(yd.set(t,e),vd.set(e,t)),e}const Ad=t=>vd.get(t);function Gk(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const a=indexedDB.open(t,e),s=xn(a);return r&&a.addEventListener("upgradeneeded",c=>{r(xn(a.result),c.oldVersion,c.newVersion,xn(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),s.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),s}const Qk=["get","getKey","getAll","getAllKeys","count"],Vk=["put","add","delete","clear"],xd=new Map;function m2(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(xd.get(e))return xd.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=Vk.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||Qk.includes(n)))return;const o=async function(a,...s){const c=this.transaction(a,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(s.shift())),(await Promise.all([u[n](...s),i&&c.done]))[0]};return xd.set(e,o),o}jk(t=>({...t,get:(e,n,r)=>m2(e,n)||t.get(e,n,r),has:(e,n)=>!!m2(e,n)||t.has(e,n)}));class g2{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const jo="bookmarks";class Yk extends g2{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=Gk(e,1,{upgrade(n,r,i,o){n.createObjectStore(jo,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(jo,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(jo,e)}async getNames(){return(await this._getDB()).getAllKeys(jo)}async get(e){return(await this._getDB()).get(jo,e)}}/**
|
2153
|
+
*/function*m9(t,e){const n=typeof e=="function";if(t!==void 0){let r=-1;for(const i of t)r>-1&&(yield n?e(r):e),r++,yield i}}const yv="setSamples",vv="sortBy",bv="retainFirstOfEach",Av="retainFirstNCategories",xv="filterByNominal",wv="filterByQuantitative",Cv="removeUndefined",Sv="groupByNominal",Ev="groupToQuartiles",Dv="groupByThresholds",Mv="removeGroup",Tv="retainMatched",oi="sampleView";function g9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",title:"Root",samples:[]}}}function y9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return mv({name:oi,initialState:g9(),reducers:{[yv]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(a=>a.id===void 0||a.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(a=>a.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((a,s)=>({...a,indexNumber:s}));n.sampleData={ids:o.map(a=>a.id),entities:Object.fromEntries(o.map(a=>[a.id,a]))},n.rootGroup={name:"ROOT",title:"Root",samples:n.sampleData.ids}},[vv]:(n,r)=>{mr(n,i=>f9(i,c9(e(r.payload,n),t(r.payload.attribute)),!1))},[bv]:(n,r)=>{mr(n,i=>u9(i,e(r.payload,n)))},[Av]:(n,r)=>{mr(n,i=>l9(i,e(r.payload,n),r.payload.n))},[wv]:(n,r)=>{mr(n,i=>h9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[xv]:(n,r)=>{mr(n,i=>gv(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Cv]:(n,r)=>{mr(n,i=>p9(i,e(r.payload,n)))},[Sv]:(n,r)=>{var o;const i=(o=t(r.payload.attribute).scale)==null?void 0:o.domain();$f(n,a=>Lv(a,e(r.payload,n),i)),n.groupMetadata.push({attribute:r.payload.attribute})},[Ev]:(n,r)=>{$f(n,i=>x9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Dv]:(n,r)=>{$f(n,i=>A9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})},[Mv]:(n,r)=>{const i=n.rootGroup;_s(i)&&Ov(i,r.payload.path)},[Tv]:(n,r)=>{const i=e(r.payload,n),o=[];for(const s of ed(n))if(s.samples.length>0){const c=new Set;for(const u of s.samples)c.add(i(u));o.push(c)}const a=[];for(const s of o[0]){let c=!0;for(let u=1;u<o.length&&c;u++)c=o[u].has(s);c&&a.push(s)}mr(n,s=>gv(s,i,"retain",a))}}})}function mr(t,e){for(const n of ed(t))n.samples=e(n.samples)}function $f(t,e){for(const n of ed(t))e(n)}function ed(t){return nd(t).map(e=>je(e))}function td(t){return t.provenance.present[oi]}function nd(t){const e=[],n=[],r=i=>{if(e.push(i),_s(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function Iv(t){return"samples"in t}function _s(t){return"groups"in t}function*rd(t){if(yield[t],_s(t))for(const e of t.groups)for(const n of rd(e))yield[t,...n]}const v9=de(".4"),kv={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function Nv(t){return D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`}function b9(t,e){if(!t.type.startsWith(oi))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||D`<em>${i}</em>`,a={attributeName:i};switch(t.type.substring(oi.length+1)){case yv:return{...a,title:"The initial state",icon:a6};case vv:return{...a,title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:J5};case bv:return{...a,title:D`Retain the first sample of each <em>${i}</em>`,provenanceTitle:D`Retain the first sample of each ${o}`,icon:j1};case Av:return{...a,title:D`Retain first <strong>n</strong> categories of <em>${i}</em>...`,provenanceTitle:D`Retain first <strong>${n.n}</strong> categories of ${o}`,icon:j1};case xv:{const c=n.values,u=f=>D`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?D`undefined ${f}`:D`${f} ${c.length>1?D`in ${Nv(c)}`:D`<span class="operator">=</span> <strong>${c[0]}</strong>`}`}`;return{...a,title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Es:sr}}case wv:{const c=u=>D`Retain samples having ${u} <span class="operator">${kv[n.operator]}</span> <strong>${v9(n.operand)}</strong>`;return{...a,title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:sr}}case Cv:return{...a,title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Es};case Sv:return{...a,title:"Group by",provenanceTitle:D`Group by ${o}`,icon:Co};case Ev:return{...a,title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:Co};case Dv:return{...a,title:"Group by thresholds",provenanceTitle:D`Group by thresholds ${Nv(n.thresholds.map(c=>`${kv[c.operator]} ${c.operand}`))} on ${o}`,icon:Co};case Mv:return{title:"Remove group",provenanceTitle:D`Remove group ${m9(n.path.map(c=>D`<strong>${c}</strong>`)," / ")}`,icon:Es};case Tv:return{...a,title:D`Retain group-wise matched samples using <em>${i}</em>`,provenanceTitle:D`Retain group-wise matched samples using ${o}`,icon:sr};default:return{...a,title:JSON.stringify(t),icon:z1}}}function Lv(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=gi(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],s=t;s.groups=o.map(([c,u],f)=>({name:""+c,title:r?r[f]:c,samples:u})),delete t.samples}function Bv(t,e,n){const r=a=>`Group ${a+1}`,i=Xt(n.length-1).reverse(),o=Pv(e,n.slice(1,n.length-1));Lv(t,a=>r(o(a)),i.map(r),i.map(a=>zv(n[a],n[a+1])))}function A9(t,e,n){Bv(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function x9(t,e){const n=C9(w9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),Bv(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function Ov(t,e){if(e.length==0)return;const n=t.groups.findIndex(r=>r.name==e[0]);if(!(n<0)){if(e.length==1)t.groups.splice(n,1);else if(e.length>1){const r=t.groups[n];_s(r)&&Ov(r,[...e].splice(1))}}}function Pv(t,e){return r=>{const i=t(r);if(!(!le(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(e[o].operator=="lt"){if(i<e[o].operand)return o}else if(i<=e[o].operand)return o;return e.length}}}function w9(t,e,n){const r=Rb(t.map(e).filter(i=>le(i)&&!isNaN(i)));return n.map(i=>Ic(r,i))}function C9(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}const Fv=de(".3~r"),zv=(t,e)=>`${t.operator=="lt"?"[":"("}${Fv(t.operand)}, ${Fv(e.operand)}${e.operator=="lte"?"]":")"}`;function S9(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[],i=dr(),o=D`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,a=g=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn btn-primary" ?disabled="${!E9(r)}" @click="${()=>a()}">${K(Co).node[0]} Group</button></div>`,c=(g,y)=>(y>0&&(g=Math.max(g,r[y-1].operand)),y<r.length-1&&(g=Math.min(g,r[y+1].operand)),g),u=(g,y)=>{const A=g.target.value;r[y].operator=A,m()},f=(g,y)=>{const A=g.target.value;/^\d+(\.\d+)?$/.test(A)&&(r[y].operand=c(+A,y),m())},l=g=>{const y=r.findIndex(A=>A.operand>g.value);r.splice(y<0?r.length:y,0,{operand:g.value,operator:"lt"}),m()},d=g=>{r[g.index].operand=c(g.value,g.index),m()},h=g=>{r.splice(g,1),m()},p=D9(t,e.leafSamples,e.sampleHierarchy);function m(){const g=()=>{const A=[{operand:-1/0,operator:"lt"},...r,{operand:1/0,operator:"lte"}],x=Pv(v=>v,A),w=[];for(let v=1;v<A.length;v++)w.push(0);for(const v of p)w[x(v)-1]++;const b=[];for(let v=1;v<A.length;v++)b.push({index:v-1,name:v,interval:zv(A[v-1],A[v]),n:w[v-1]});return D`<table class="threshold-groups"><thead><tr><th>Group</th><th>Interval</th><th>n</th></tr></thead><tbody>${b.map(v=>D`<tr><td><span class="group-color" style="background-color:${Yy[v.index]}"></span> ${v.name}</td><td>${v.interval}</td><td>${v.n}</td></tr>`)}</tbody></table>`},y=D`<div class="gs-form-group group-by-thresholds-form"><label>Split into groups using the thresholds:</label><genome-spy-histogram .values="${p}" .thresholds="${r.map(A=>A.operand)}" .operators="${r.map(A=>A.operator)}" .showThresholdNumbers="${!0}" @add="${l}" @adjust="${d}"></genome-spy-histogram>${r.map((A,x)=>D`<div class="threshold-flex"><select .value="${A.operator}" @change="${w=>u(w,x)}"><option value="lt">${"<"}</option><option value="lte">${"\u2264"}</option></select> <input .value="${""+A.operand}" type="text" placeholder="Numeric value" @input="${w=>f(w,x)}" @blur="${w=>{w.target.value=""+r[x].operand}}"> <button @click="${()=>h(x)}" class="btn" title="Remove">${K(U1).node[0]}</button></div>`)} ${r.length?D`<small>The operator specifies whether the upper endpoint of the interval (<em>i.e.</em>, the group) is exclusive (<) or inclusive(≤). </small>${g()}`:z}</div>`;Be(D`${o}<div class="modal-body">${y}</div>${s()}`,i.content)}m()}function E9(t){return t.length}function D9(t,e,n){const r=t.accessor;return e.map(i=>r(i,n))}function M9(t,e){const n=e.provenance.storeHelper.getDispatcher();let r=5;const i=dr(),o=D`<div class="modal-title">Retain first n categories of <em>${t.title}</em></div>`,a=f=>{n(e.actions.retainFirstNCategories({attribute:t.attribute,n:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn btn-primary" @click="${()=>a()}">${K(sr).node[0]} Retain</button></div>`,c=D`<div class="gs-form-group"><label>Number of categories to retain:</label> <input type="number" min="1" .valueAsNumber="${r}" @change="${f=>{r=f.target.valueAsNumber}}"></div>`;function u(){Be(D`${o}<div class="modal-body">${c}</div>${s()}`,i.content)}u(),i.content.querySelector("input").focus()}function id(t,e,n,r){var d;const i=r.actions,o=e.attribute,a=r.sampleHierarchy,s=r.provenance.storeHelper.getDispatcher(),c=[];t&&c.push({label:t,type:"header"});const u=(h,p,m)=>{const g=r.provenance.getActionInfo(h);return{label:g.title,icon:g.icon,callback:p?void 0:m!=null?m:()=>s(h)}},f=(...h)=>c.push(...h.map(p=>u(p)));f(i.sortBy({attribute:o}));const l=(d=e==null?void 0:e.type)!=null?d:"identifier";return l!="quantitative"?(l!="identifier"&&(f(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),c.push(u(i.retainFirstNCategories({attribute:o,n:void 0}),!1,()=>M9(e,r)))),f(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]})),c.push(u(i.retainMatched({attribute:o}),!a.groupMetadata.length))):(f(i.groupToQuartiles({attribute:o})),c.push({icon:Co,label:"Group by thresholds...",callback:()=>S9(e,r)}),T9(n)?f(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):f(i.removeUndefined({attribute:o}))),l!=="identifier"&&c.push({icon:sr,label:"Advanced filter...",callback:()=>vI(e,r)}),c}function T9(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function I9(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Gt={},gr={};Object.defineProperty(gr,"__esModule",{value:!0}),gr.ActionCreators=gr.ActionTypes=void 0;var yr={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};gr.ActionTypes=yr;var k9={undo:function(){return{type:yr.UNDO}},redo:function(){return{type:yr.REDO}},jumpToFuture:function(e){return{type:yr.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:yr.JUMP_TO_PAST,index:e}},jump:function(e){return{type:yr.JUMP,index:e}},clearHistory:function(){return{type:yr.CLEAR_HISTORY}}};gr.ActionCreators=k9;var wt={};Object.defineProperty(wt,"__esModule",{value:!0}),wt.parseActions=Ws,wt.isHistory=N9,wt.includeAction=L9,wt.excludeAction=B9,wt.combineFilters=O9,wt.groupByActionTypes=P9,wt.newHistory=F9;function Ws(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function N9(t){return typeof t.present<"u"&&typeof t.future<"u"&&typeof t.past<"u"&&Array.isArray(t.future)&&Array.isArray(t.past)}function L9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)>=0}}function B9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)<0}}function O9(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,a,s){return r(o,a,s)&&i(o,a,s)}},function(){return!0})}function P9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function F9(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var Rv={},ai={};Object.defineProperty(ai,"__esModule",{value:!0}),ai.set=Y9,ai.start=G9,ai.end=Q9,ai.log=V9;function Ct(t){return j9(t)||R9(t)||z9()}function z9(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function R9(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function j9(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Xs,$e,od={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function U9(){$e={header:[],prev:[],action:[],next:[],msgs:[]}}function H9(){var t=$e,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var a,s,c,u,f;(a=console).groupCollapsed.apply(a,Ct(e)),(s=console).log.apply(s,Ct(n)),(c=console).log.apply(c,Ct(i)),(u=console).log.apply(u,Ct(r)),(f=console).log.apply(f,Ct(o)),console.groupEnd()}else{var l,d,h,p,m;(l=console).log.apply(l,Ct(e)),(d=console).log.apply(d,Ct(n)),(h=console).log.apply(h,Ct(i)),(p=console).log.apply(p,Ct(r)),(m=console).log.apply(m,Ct(o))}}function ad(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function G9(t,e){U9(),Xs&&(console.group?($e.header=["%credux-undo","font-style: italic","action",t.type],$e.action=ad("action",od.action,t),$e.prev=ad("prev history",od.prevState,e)):($e.header=["redux-undo action",t.type],$e.action=["action",t],$e.prev=["prev history",e]))}function Q9(t){Xs&&(console.group?$e.next=ad("next history",od.nextState,t):$e.next=["next history",t],H9())}function V9(){if(Xs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];$e.msgs=$e.msgs.concat([].concat(e,[`
|
2154
|
+
`]))}}function Y9(t){Xs=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(C){return typeof C}:e=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=w;var n=a(ai),r=gr,i=wt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function a(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var v=o();if(v&&v.has(b))return v.get(b);var C={},S=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var I in b)if(Object.prototype.hasOwnProperty.call(b,I)){var N=S?Object.getOwnPropertyDescriptor(b,I):null;N&&(N.get||N.set)?Object.defineProperty(C,I,N):C[I]=b[I]}return C.default=b,v&&v.set(b,C),C}function s(b,v){var C=Object.keys(b);if(Object.getOwnPropertySymbols){var S=Object.getOwnPropertySymbols(b);v&&(S=S.filter(function(I){return Object.getOwnPropertyDescriptor(b,I).enumerable})),C.push.apply(C,S)}return C}function c(b){for(var v=1;v<arguments.length;v++){var C=arguments[v]!=null?arguments[v]:{};v%2?s(Object(C),!0).forEach(function(S){u(b,S,C[S])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(C)):s(Object(C)).forEach(function(S){Object.defineProperty(b,S,Object.getOwnPropertyDescriptor(C,S))})}return b}function u(b,v,C){return v in b?Object.defineProperty(b,v,{value:C,enumerable:!0,configurable:!0,writable:!0}):b[v]=C,b}function f(b){return h(b)||d(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function h(b){if(Array.isArray(b)){for(var v=0,C=new Array(b.length);v<b.length;v++)C[v]=b[v];return C}}function p(b,v){var C=(0,i.newHistory)([],b,[]);return v&&(C._latestUnfiltered=null),C}function m(b,v,C,S){var I=b.past.length+1;n.log("inserting",v),n.log("new free: ",C-I);var N=b.past,T=b._latestUnfiltered,O=C&&C<=I,Q=N.slice(O?1:0),U=T!=null?[].concat(f(Q),[T]):Q;return(0,i.newHistory)(U,v,[],S)}function g(b,v){if(v<0||v>=b.future.length)return b;var C=b.past,S=b.future,I=b._latestUnfiltered,N=[].concat(f(C),[I],f(S.slice(0,v))),T=S[v],O=S.slice(v+1);return(0,i.newHistory)(N,T,O)}function y(b,v){if(v<0||v>=b.past.length)return b;var C=b.past,S=b.future,I=b._latestUnfiltered,N=C.slice(0,v),T=[].concat(f(C.slice(v+1)),[I],f(S)),O=C[v];return(0,i.newHistory)(N,O,T)}function A(b,v){return v>0?g(b,v-1):v<0?y(b,b.past.length+v):b}function x(b,v){return v.indexOf(b)>-1?b:!b}function w(b){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(v.debug);var C=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},v,{initTypes:(0,i.parseActions)(v.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(v.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),S=C.neverSkipReducer?function(N,T){for(var O=arguments.length,Q=new Array(O>2?O-2:0),U=2;U<O;U++)Q[U-2]=arguments[U];return c({},N,{present:b.apply(void 0,[N.present,T].concat(Q))})}:function(N){return N},I;return function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:I,T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(T,N);for(var O=N,Q=arguments.length,U=new Array(Q>2?Q-2:0),we=2;we<Q;we++)U[we-2]=arguments[we];if(!I)if(n.log("history is uninitialized"),N===void 0){var Ie={type:"@@redux-undo/CREATE_HISTORY"},Cn=b.apply(void 0,[N,Ie].concat(U));return O=p(Cn,C.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(O),O}else(0,i.isHistory)(N)?(O=I=C.ignoreInitialState?N:(0,i.newHistory)(N.past,N.present,N.future),n.log("initialHistory initialized: initialState is a history",I)):(O=I=p(N,C.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",I));var _;switch(T.type){case void 0:return O;case C.undoType:return _=A(O,-1),n.log("perform undo"),n.end(_),S.apply(void 0,[_,T].concat(U));case C.redoType:return _=A(O,1),n.log("perform redo"),n.end(_),S.apply(void 0,[_,T].concat(U));case C.jumpToPastType:return _=y(O,T.index),n.log("perform jumpToPast to ".concat(T.index)),n.end(_),S.apply(void 0,[_,T].concat(U));case C.jumpToFutureType:return _=g(O,T.index),n.log("perform jumpToFuture to ".concat(T.index)),n.end(_),S.apply(void 0,[_,T].concat(U));case C.jumpType:return _=A(O,T.index),n.log("perform jump to ".concat(T.index)),n.end(_),S.apply(void 0,[_,T].concat(U));case x(T.type,C.clearHistoryType):return _=p(O.present,C.ignoreInitialState),n.log("perform clearHistory"),n.end(_),S.apply(void 0,[_,T].concat(U));default:if(_=b.apply(void 0,[O.present,T].concat(U)),C.initTypes.some(function(Nd){return Nd===T.type}))return n.log("reset history due to init action"),n.end(I),I;if(O._latestUnfiltered===_)return O;var Ve=typeof C.filter=="function"&&!C.filter(T,_,O);if(Ve){var Ko=(0,i.newHistory)(O.past,_,O.future,O.group);return C.syncFilter||(Ko._latestUnfiltered=O._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(Ko),Ko}var Jo=C.groupBy(T,_,O);if(Jo!=null&&Jo===O.group){var dc=(0,i.newHistory)(O.past,_,O.future,O.group);return n.log("groupBy grouped the action with the previous action"),n.end(dc),dc}return O=m(O,_,C.limit,Jo),n.log("inserted new state into history"),n.end(O),O}}}})(Rv),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=gr,n=wt,r=i(Rv);function i(o){return o&&o.__esModule?o:{default:o}}}(Gt);const _9=I9(Gt);function Zs(t){return t.split("-")[0]}function sd(t){return t.split("-")[1]}function cd(t){return["top","bottom"].includes(Zs(t))?"x":"y"}function jv(t){return t==="y"?"height":"width"}function Uv(t,e,n){let{reference:r,floating:i}=t;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=cd(e),c=jv(s),u=r[c]/2-i[c]/2,f=Zs(e),l=s==="x";let d;switch(f){case"top":d={x:o,y:r.y-i.height};break;case"bottom":d={x:o,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:a};break;case"left":d={x:r.x-i.width,y:a};break;default:d={x:r.x,y:r.y}}switch(sd(e)){case"start":d[s]-=u*(n&&l?-1:1);break;case"end":d[s]+=u*(n&&l?-1:1);break}return d}const W9=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(e));let c=await a.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:f}=Uv(c,r,s),l=r,d={};for(let h=0;h<o.length;h++){const{name:p,fn:m}=o[h],{x:g,y,data:A,reset:x}=await m({x:u,y:f,initialPlacement:r,placement:l,strategy:i,middlewareData:d,rects:c,platform:a,elements:{reference:t,floating:e}});if(u=g!=null?g:u,f=y!=null?y:f,d={...d,[p]:{...d[p],...A}},x){typeof x=="object"&&(x.placement&&(l=x.placement),x.rects&&(c=x.rects===!0?await a.getElementRects({reference:t,floating:e,strategy:i}):x.rects),{x:u,y:f}=Uv(c,l,s)),h=-1;continue}}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function X9(t){return{top:0,right:0,bottom:0,left:0,...t}}function Z9(t){return typeof t!="number"?X9(t):{top:t,right:t,bottom:t,left:t}}function qs(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}async function q9(t,e){var n;e===void 0&&(e={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:c}=t,{boundary:u="clippingAncestors",rootBoundary:f="viewport",elementContext:l="floating",altBoundary:d=!1,padding:h=0}=e,p=Z9(h),g=s[d?l==="floating"?"reference":"floating":l],y=qs(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(g)))==null||n?g:g.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:c})),A=qs(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:l==="floating"?{...a.floating,x:r,y:i}:a.reference,offsetParent:await(o.getOffsetParent==null?void 0:o.getOffsetParent(s.floating)),strategy:c}):a[l]);return{top:y.top-A.top+p.top,bottom:A.bottom-y.bottom+p.bottom,left:y.left-A.left+p.left,right:A.right-y.right+p.right}}const K9={left:"right",right:"left",bottom:"top",top:"bottom"};function Ks(t){return t.replace(/left|right|bottom|top/g,e=>K9[e])}function J9(t,e,n){n===void 0&&(n=!1);const r=sd(t),i=cd(t),o=jv(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=Ks(a)),{main:a,cross:Ks(a)}}const $9={start:"end",end:"start"};function Hv(t){return t.replace(/start|end/g,e=>$9[e])}function ek(t){const e=Ks(t);return[Hv(t),e,Hv(e)]}const Gv=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:c}=e,{mainAxis:u=!0,crossAxis:f=!0,fallbackPlacements:l,fallbackStrategy:d="bestFit",flipAlignment:h=!0,...p}=t,m=Zs(r),y=l||(m===a||!h?[Ks(a)]:ek(a)),A=[a,...y],x=await q9(e,p),w=[];let b=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&w.push(x[m]),f){const{main:I,cross:N}=J9(r,o,await(s.isRTL==null?void 0:s.isRTL(c.floating)));w.push(x[I],x[N])}if(b=[...b,{placement:r,overflows:w}],!w.every(I=>I<=0)){var v,C;const I=((v=(C=i.flip)==null?void 0:C.index)!=null?v:0)+1,N=A[I];if(N)return{data:{index:I,overflows:b},reset:{placement:N}};let T="bottom";switch(d){case"bestFit":{var S;const O=(S=b.map(Q=>[Q,Q.overflows.filter(U=>U>0).reduce((U,we)=>U+we,0)]).sort((Q,U)=>Q[1]-U[1])[0])==null?void 0:S[0].placement;O&&(T=O);break}case"initialPlacement":T=a;break}if(r!==T)return{reset:{placement:T}}}return{}}}};async function tk(t,e){const{placement:n,platform:r,elements:i}=t,o=await(r.isRTL==null?void 0:r.isRTL(i.floating)),a=Zs(n),s=sd(n),c=cd(n)==="x",u=["left","top"].includes(a)?-1:1,f=o&&c?-1:1,l=typeof e=="function"?e(t):e;let{mainAxis:d,crossAxis:h,alignmentAxis:p}=typeof l=="number"?{mainAxis:l,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...l};return s&&typeof p=="number"&&(h=s==="end"?p*-1:p),c?{x:h*f,y:d*u}:{x:d*u,y:h*f}}const nk=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){const{x:n,y:r}=e,i=await tk(e,t);return{x:n+i.x,y:r+i.y,data:i}}}};function Qv(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Qt(t){if(t==null)return window;if(!Qv(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function Po(t){return Qt(t).getComputedStyle(t)}function Vt(t){return Qv(t)?"":t?(t.nodeName||"").toLowerCase():""}function Vv(){const t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(e=>e.brand+"/"+e.version).join(" "):navigator.userAgent}function St(t){return t instanceof Qt(t).HTMLElement}function si(t){return t instanceof Qt(t).Element}function rk(t){return t instanceof Qt(t).Node}function ud(t){if(typeof ShadowRoot>"u")return!1;const e=Qt(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Js(t){const{overflow:e,overflowX:n,overflowY:r}=Po(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function ik(t){return["table","td","th"].includes(Vt(t))}function Yv(t){const e=/firefox/i.test(Vv()),n=Po(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&(n.filter?n.filter!=="none":!1)}function _v(){return!/^((?!chrome|android).)*safari/i.test(Vv())}const Wv=Math.min,Fo=Math.max,$s=Math.round;function vr(t,e,n){var r,i,o,a;e===void 0&&(e=!1),n===void 0&&(n=!1);const s=t.getBoundingClientRect();let c=1,u=1;e&&St(t)&&(c=t.offsetWidth>0&&$s(s.width)/t.offsetWidth||1,u=t.offsetHeight>0&&$s(s.height)/t.offsetHeight||1);const f=si(t)?Qt(t):window,l=!_v()&&n,d=(s.left+(l&&(r=(i=f.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/c,h=(s.top+(l&&(o=(a=f.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,p=s.width/c,m=s.height/u;return{width:p,height:m,top:h,right:d+p,bottom:h+m,left:d,x:d,y:h}}function An(t){return((rk(t)?t.ownerDocument:t.document)||window.document).documentElement}function ec(t){return si(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Xv(t){return vr(An(t)).left+ec(t).scrollLeft}function ok(t){const e=vr(t);return $s(e.width)!==t.offsetWidth||$s(e.height)!==t.offsetHeight}function ak(t,e,n){const r=St(e),i=An(e),o=vr(t,r&&ok(e),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Vt(e)!=="body"||Js(i))&&(a=ec(e)),St(e)){const c=vr(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=Xv(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function Zv(t){return Vt(t)==="html"?t:t.assignedSlot||t.parentNode||(ud(t)?t.host:null)||An(t)}function qv(t){return!St(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function sk(t){let e=Zv(t);for(ud(e)&&(e=e.host);St(e)&&!["html","body"].includes(Vt(e));){if(Yv(e))return e;e=e.parentNode}return null}function ld(t){const e=Qt(t);let n=qv(t);for(;n&&ik(n)&&getComputedStyle(n).position==="static";)n=qv(n);return n&&(Vt(n)==="html"||Vt(n)==="body"&&getComputedStyle(n).position==="static"&&!Yv(n))?e:n||sk(t)||e}function Kv(t){if(St(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=vr(t);return{width:e.width,height:e.height}}function ck(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=St(n),o=An(n);if(n===o)return e;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((Vt(n)!=="body"||Js(o))&&(a=ec(n)),St(n))){const c=vr(n,!0);s.x=c.x+n.clientLeft,s.y=c.y+n.clientTop}return{...e,x:e.x-a.scrollLeft+s.x,y:e.y-a.scrollTop+s.y}}function uk(t,e){const n=Qt(t),r=An(t),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,c=0;if(i){o=i.width,a=i.height;const u=_v();(u||!u&&e==="fixed")&&(s=i.offsetLeft,c=i.offsetTop)}return{width:o,height:a,x:s,y:c}}function lk(t){var e;const n=An(t),r=ec(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=Fo(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Fo(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+Xv(t);const c=-r.scrollTop;return Po(i||n).direction==="rtl"&&(s+=Fo(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:c}}function Jv(t){const e=Zv(t);return["html","body","#document"].includes(Vt(e))?t.ownerDocument.body:St(e)&&Js(e)?e:Jv(e)}function $v(t,e){var n;e===void 0&&(e=[]);const r=Jv(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=Qt(r),a=i?[o].concat(o.visualViewport||[],Js(r)?r:[]):r,s=e.concat(a);return i?s:s.concat($v(a))}function fk(t,e){const n=e==null||e.getRootNode==null?void 0:e.getRootNode();if(t!=null&&t.contains(e))return!0;if(n&&ud(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function dk(t,e){const n=vr(t,!1,e==="fixed"),r=n.top+t.clientTop,i=n.left+t.clientLeft;return{top:r,left:i,x:i,y:r,right:i+t.clientWidth,bottom:r+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function e2(t,e,n){return e==="viewport"?qs(uk(t,n)):si(e)?dk(e,n):qs(lk(An(t)))}function hk(t){const e=$v(t),r=["absolute","fixed"].includes(Po(t).position)&&St(t)?ld(t):t;return si(r)?e.filter(i=>si(i)&&fk(i,r)&&Vt(i)!=="body"):[]}function pk(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const a=[...n==="clippingAncestors"?hk(e):[].concat(n),r],s=a[0],c=a.reduce((u,f)=>{const l=e2(e,f,i);return u.top=Fo(l.top,u.top),u.right=Wv(l.right,u.right),u.bottom=Wv(l.bottom,u.bottom),u.left=Fo(l.left,u.left),u},e2(e,s,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}const mk={getClippingRect:pk,convertOffsetParentRelativeRectToViewportRelativeRect:ck,isElement:si,getDimensions:Kv,getOffsetParent:ld,getDocumentElement:An,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:ak(e,ld(n),r),floating:{...Kv(n),x:0,y:0}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>Po(t).direction==="rtl"},gk=(t,e,n)=>W9(t,e,{platform:mk,...n});let Et;const zo=[],fd=ws(t=>t(),150,!1),dd={type:"divider"};function Ro(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}Et&&(Et.remove(),Et=void 0,document.body.classList.remove(Yn))}function t2(t){var e;if(!(t<1)){for(let n=t;n<zo.length;n++)(e=zo[n])==null||e.remove(),zo[n]=void 0;for(const n of zo[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const yk=()=>D`<li class="menu-divider"></li>`,vk=t=>D`<li class="menu-header">${t.label||"-"}</li>`,bk=(t,e)=>D`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>fd(()=>{const r=n.target.closest("li");wk(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>fd(()=>t2(e+1))}"><span>${t.label}</span></a></li>`,Ak=t=>D`<li><a class="choice-item" @mouseup="${()=>{Ro(),t.callback()}}"><span>${t.icon?K(t.icon).node[0]:""} ${t.label}</span> ${t.shortcut?D`<span class="kbd-shortcut">${t.shortcut}</span>`:z} </a>${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${K(g6).node[0]}</a>`:z}</li>`,xk=t=>D`<li><span class="disabled-item">${t.icon?K(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function n2(t,e=1){switch(t.type){case"divider":return yk();case"header":return vk(t);default:return t.submenu?bk(t,e):t.callback?Ak(t):xk(t)}}function wk(t,e,n){r2(t,e,n,"right-start"),e.classList.add("active")}function r2(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{fd(()=>{})}),Be(t.map(o=>n2(o,n)),i),Et.appendChild(i),t2(n),zo[n]=i,gk(e,i,{placement:r!=null?r:"right-start",middleware:n?[Gv()]:[nk(2),Gv()]}).then(({x:o,y:a})=>{const s=i.querySelector(":scope > li");s&&(a-=s.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${a}px`})}function i2(t,e,n){n!=null||(n="bottom-start"),Ro();const r=performance.now(),i=document.body;Et=document.createElement("div"),Et.classList.add("gs-context-menu-backdrop"),Et.addEventListener("click",Ro),Et.addEventListener("contextmenu",Ro),Et.addEventListener("mouseup",()=>{performance.now()-r>500&&Ro()},{once:!0}),i.appendChild(Et),document.body.classList.add(Yn),r2(t.items,e,0,n)}function hd(t,e){i2(t,Ck(e),"right-start"),e.preventDefault()}function Ck(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const pd={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},tc="SAMPLE_ATTRIBUTE",o2="SAMPLE_NAME",Sk=/^attribute-(.*)$/;class a2 extends Xr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata"),this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(tc,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(o2,n=>s2),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var s;const i=r.target,o=this._findSampleForMouseEvent(n,r),a=i&&((s=this.getAttributeInfoFromView(i))==null?void 0:s.name)||void 0;if(o){const c=JSON.stringify([o.id,a]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(a)}),je([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(!!this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,{...r,clipRect:this.sampleView._clipBySummary(n)})}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:Qg,signal:n.abortController.signal,...e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150}}).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-this.sampleView.childCoords.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[this.sampleView.makePeekMenuItem(),dd],a=this.getAttributeInfoFromView(n.target);if(a){const s=i.attributes[a.name];o.push(...id(D`Attribute: <strong>${a.name}</strong>`,a,s,this.sampleView))}else o.push(...id(D`Sample: <strong>${i.displayName}</strong>`,s2,i.id,this.sampleView));hd({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;y1(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof be){const a=o.mark;a.initializeEncoders(),i.push(a.initializeGraphics().then(s=>a)),n.addObserver(s=>{a.initializeData(),a.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const a of o)"value"in a?a.value.finalizeGraphicsInitialization():"reason"in a&&console.error(a.reason)}),r.publishData(e),this.visit(o=>{o.name.startsWith("title")&&n.findDataSourceByKey(o).load()})}_createViews(){const e=[];e.push(this.context.createView(Dk(),this));for(const n of this.getAttributeNames()){const r=this.context.createView(this._createAttributeViewSpec(n),this);r.opacityFunction=i=>i*this._getAttributeOpacity(n),e.push(r)}this.setChildren(e),b1(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(Hh(i.map(o=>o.attributes[e]))){case"integer":case"number":r=pd.QUANTITATIVE;break;default:r=pd.NOMINAL}}return Ek(e,{...n||{},type:r})}_findViewForAttribute(e){return this.children[this.getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e==null?void 0:e.name.match(Sk);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:tc,specifier:i},accessor:(o,a)=>a.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:D`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(s,c)=>Mk(c)?this.getAttributeInfo(s).scale(c):"transparent",a=D`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>D`<tr class="${nf({hovered:s==r})}"><th>${s}</th><td>${M1(c)}</td><td class="color" .style="background-color: ${o(s,c)}"></td></tr>`)}</table>`;return D`<div class="title"><strong>${i.displayName||i.id}</strong></div>${a}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this.getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==Rl||i.type==jl)&&this.sampleView.getSamples().find(a=>a.attributes[i.name]==n)){const a=this.sampleView.actions.filterByNominal({attribute:{type:tc,specifier:r},values:[n]}),s=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(s)&&!s.payload.remove&&s.payload.attribute.type==tc&&s.payload.attribute.specifier==r&&s.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[Gt.ActionCreators.undo(),a]:a),!0}}return!1}isPickingSupported(){return!1}}function Ek(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:{text:t,orient:"bottom",align:"right",baseline:"middle",offset:5,angle:-90,dy:-.5,fontSize:11},visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect",xOffset:-.5},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==pd.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),r}function Dk(){return{name:"metadata-sample-name",title:{text:"Sample name",orient:"bottom",anchor:"start",offset:5,fontSize:11},width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function Mk(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const s2=Object.freeze({name:"sample",attribute:{type:o2},accessor:t=>t,type:"identifier",scale:void 0});class Tk extends Pt{constructor(e){super({title:{text:"Groups",orient:"none"},width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_title",expr:"datum.title || datum.name"},{type:"formula",as:"_NA",expr:"datum._title === null"},{type:"formula",as:"_title",expr:"datum._title !== null ? datum._title: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:Xt(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,color:"#e8e8e8",cornerRadiusBottomLeft:14,cornerRadiusTopLeft:14}},{mark:{type:"text",clip:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"_title"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups"),this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()}),this.addInteractionEventListener("contextmenu",(n,r)=>{const i=r.uiEvent,o=this.context.getCurrentHover();if(!o)return;const a=o.datum._rawGroup;let s;for(const l of rd(this.sampleView.sampleHierarchy.rootGroup))if(l.at(-1)===a){s=l.slice(1);break}const c=e.actions.removeGroup({path:s.map(l=>l.name)}),u=e.provenance.getActionInfo(c),f=e.provenance.storeHelper.getDispatcher();hd({items:[{label:u.title,icon:u.icon,callback:()=>f(c)}]},i)})}updateRange(){var o,a,s;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e!=null&&e.length))return;const n=(s=(a=this.sampleView)==null?void 0:a.childCoords.height)!=null?s:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(a=>({_index:a.key.index,_depth:a.key.depth,_rawGroup:a.key.group,attribute:a.key.attributeLabel,name:a.key.group.name,...a.key.group.name!=a.key.group.title?{title:a.key.group.title}:{},n:a.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),je([...this.getAncestors()]).visit(a=>mo(a,"size"))}}class Ik{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function nc(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function c2(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=d=>je(d),a=t.map(d=>({path:d,sampleGroup:o(d),samples:o(d).samples})).filter(d=>d.samples.length),s=n?d=>({px:d.length*n+i,grow:0}):d=>({px:i,grow:d.length}),c=[];bo(a.map(d=>s(d.samples)),e,{spacing:r}).forEach((d,h)=>{c.push({key:a[h].path,locSize:d})});const u=[];for(const[d,h]of a.entries()){const p={grow:1},m=h.samples;bo(m.map(g=>p),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((g,y)=>{const{size:A,location:x}=g,w=A*.1*Xg(15,22,A);g.location=x+w,g.size=A-2*w,u.push({key:m[y],locSize:g})})}function*f(){const d=[];for(const h of c){const p=h.key,m=je(p);for(;d.length<=p.length&&d.length&&p[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let g=0;g<d.length;g++){const y=d[g];y.locSize.size=h.locSize.location-y.locSize.location+h.locSize.size}for(let g=d.length;g<p.length;g++)d.push({group:p[g],locSize:{...h.locSize},depth:d.length,n:0});for(const g of d)g.n+=m.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,h)=>d.depth-h.depth).map((d,h)=>({key:{index:h,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function kk(t,e){return e.find(n=>Mg(n.locSize,t))}const u2="VALUE_AT_LOCUS",l2=10;class md extends rr{constructor(n,r,i,o,a){var f;super(n,r,i,o);te(this,fc);hc(this,"_peekState",0);this.provenance=a,this.spec=n,this.stickySummaries=(f=n.stickySummaries)!=null?f:!0,this.compositeAttributeInfoSource=new Ik,this.child=r.createView(n.spec,this,"sample-facets"),this.summaryViews=new Xr({vconcat:[]},r,this,"sampleSummaries"),this.child.visit(l=>{l instanceof be&&this.summaryViews.setChildren(l.sampleAggregateViews)}),this.childCoords=pn.ZERO,this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new Xr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},r,this,"sample-sidebar"),this.peripheryCoords=pn.ZERO,this.groupPanel=new Tk(this),this.attributePanel=new a2(this),this.peripheryView.setChildren([this.groupPanel,this.attributePanel]),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(nc(l=>td(l).rootGroup,l=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(nc(l=>td(l).sampleData,l=>{const d=l&&Object.values(l.entities);!d||(this.attributePanel._setSamples(d),this.facetTextureData=new Float32Array(Math.ceil(d.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(u2,l=>{var w,b;const d=l.specifier,h=this.findDescendantByName(d.view);let p;if(le(d.locus))p=d.locus;else{const v=this.getScaleResolution("x").getGenome();if(v)p=v.toContinuous(d.locus.chrom,d.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const m=v=>{var C;return(C=h.mark.findDatumAt(v,p))==null?void 0:C[d.field]},[g,y]=Object.entries(h.getEncoding()).find(([v,C])=>"field"in C&&C.field==d.field),A=g?(w=h.getScaleResolution(g))==null?void 0:w.getScale():void 0;return{name:d.field,attribute:l,title:D`<em class="attribute">${d.field}</em> <span class="viewTitle">(${(b=h.getTitleText())!=null?b:h.name})</span> at <span class="locus">${f2(d.locus)}</span>`,accessor:m,type:"type"in y?y.type:void 0,scale:A}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(l,d)=>{this._lastMouseY=d.point.y-this.childCoords.y}),this.addInteractionEventListener("wheel",(l,d)=>{const h=d.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=ms(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this.childCoords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),d.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!0),r.addKeyboardListener("keydown",l=>{l.code=="KeyE"&&!l.repeat&&this.togglePeek()}),r.addKeyboardListener("keyup",l=>{l.code=="KeyE"&&this.togglePeek(!1)});const s=l=>this.compositeAttributeInfoSource.getAttributeInfo(l),c=y9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>b9(l,s)),this.actions=c.actions;const u=QI(l=>{var d;return(d=l.sampleData)==null?void 0:d.entities},l=>l&&Object.values(l));this.getSamples=()=>u(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getOverhang(){let n=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px:0;return n&&(n+=l2),new Je(0,0,0,n)}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(n,r){const i=r;if(n===this.child)this.child=i;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:n,collector:r}=m5(h1(this.spec.samples.data,this.getBaseUrl()),new Nk);r.observers.push(o=>{const a=o.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:a}))});const i="samples "+this.getPathString();this.context.dataFlow.addDataSource(n,i)}extractSamplesFromData(){if(this.getSamples())return;const n=this.getScaleResolution("sample");if(n){const r=n.getDataDomain().map((i,o)=>({id:i,displayName:i,indexNumber:o,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:r}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[oi]}get leafSamples(){return nd(this.sampleHierarchy).map(r=>r.at(-1)).map(r=>r.samples).flat()}getLocations(){var n,r,i,o;if(!this._locations){if(!((n=this.childCoords)!=null&&n.height))return;const a=this.sampleHierarchy,s=nd(a),c=[null,...a.groupMetadata],u=(o=((r=this.summaryViews)==null?void 0:r.isVisible())&&((i=this.summaryViews)==null?void 0:i.getSize().height.px))!=null?o:0,f=c2(s,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:u}),l=c2(s,{sampleHeight:35,groupSpacing:15,summaryHeight:u}),d=()=>-this._scrollOffset,h=()=>this._peekState;this._scrollableLocations=l,this._scrollableHeight=l.summaries.map(y=>y.locSize.location+y.locSize.size).reduce((y,A)=>Math.max(y,A),0);const p=(y,A)=>{const x=[];for(let w=0;w<y.length;w++){const b=y[w].key;x.push({key:b,locSize:wM(y[w].locSize,CM(A[w].locSize,d),h)})}return x},m=p(f.groups,l.groups),g=document.createElement("div");m.forEach(y=>{if(y.key.depth==0)return;const A=c[y.key.depth].attribute,x=this.compositeAttributeInfoSource.getAttributeInfo(A).title;x?ne(x)?y.key.attributeLabel=x:(Be(x,g),y.key.attributeLabel=g.textContent.replace(/\s+/g," ").trim()):y.key.attributeLabel="unknown"}),this._locations={samples:p(f.samples,l.samples),summaries:p(f.summaries,l.summaries),groups:m}}return this._locations}getSampleAt(n){const r=kk(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>Mg(o.locSize,n));return i>=0?{index:i,location:r[i]}:void 0}_clipBySummary(n){if(this.stickySummaries&&this.summaryViews.childCount){const r=this.summaryViews.getSize().height.px;return n.modify({y:()=>n.y+r,height:()=>n.height-r})}}renderChild(n,r,i={}){const o=1/r.height,a=()=>o,s=this._clipBySummary(r);for(const c of this.getLocations().samples)this.child.render(n,r,{...i,sampleFacetRenderingOptions:{locSize:SM(c.locSize,a)},facetId:[c.key],clipRect:s})}renderSummaries(n,r,i={}){i={...i,clipRect:r};const o=this.summaryViews.getSize().height.px;for(const[a,s]of this.getLocations().summaries.entries()){const c=()=>{const u=s.locSize.location;let f=r.y+u;return this.stickySummaries?f+ms(-u,0,s.locSize.size-o):f};this.summaryViews.render(n,r.modify({y:c,height:o}),{...i,facetId:[a]})}}render(n,r,i={}){if(!this.isVisible())return;n.pushView(this,r);const o=bo([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:l2}),a=s=>r.modify({x:s.location+r.x,width:s.size});this.peripheryCoords=a(o[0]),this.childCoords=a(o[1]),this.peripheryView.render(n,this.peripheryCoords,i),this.renderChild(n,this.childCoords,i),this.renderSummaries(n,this.childCoords,i),n.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var o;const n=this.facetTextureData;n.fill(0);const r=(o=this.sampleHierarchy.sampleData)==null?void 0:o.entities;if(r){const a=this.getLocations().samples,s=this.childCoords.height;for(const c of a){const u=r[c.key].indexNumber;n[u*2+0]=c.locSize.location/s,n[u*2+1]=c.locSize.size/s}}const i=this.context.glHelper.gl;this.facetTexture=yo(i,{internalFormat:i.RG32F,format:i.RG,height:1},n,this.facetTexture)}togglePeek(n){var i;if(this._peekState>0&&this._peekState<1||n!==void 0&&n==!!this._peekState)return;const r={requestAnimationFrame:o=>this.context.animator.requestTransition(o),onUpdate:o=>{this._peekState=Math.pow(o,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const o=this._lastMouseY,a=(i=this.getSampleAt(o))==null?void 0:i.id;let s;if(a)s=(u=>u.location+u.size/2)(this._scrollableLocations.samples.find(u=>u.key==a).locSize);else{const c=this.getSummaryAt(o);c&&(s=this._scrollableLocations.summaries[c.index].locSize.location-(c.location.locSize.location-o))}s?this._scrollOffset=s-o:this._scrollOffset=(this._scrollableHeight-this.childCoords.height)/2,this._scrollableHeight>this.childCoords.height?xs({...r,to:1,duration:500,easingFunction:s8}):xs({...r,from:0,to:1,duration:300,easingFunction:u=>(1-Math.pow(u*2-1,2))*.5})}else xs({...r,to:0,duration:400,easingFunction:o8})}makePeekMenuItem(){return{...this._peekState==0?{label:"Open closeup",callback:()=>this.togglePeek(!0),icon:D6}:{label:"Close closeup",callback:()=>this.togglePeek(!1),icon:M6},shortcut:"E"}}_handleContextMenu(n,r){var l;const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=x1([...this.getAncestors()].at(-1)),c=A5(this.child).filter(d=>!["sample","x","x2"].includes(d.channel)).filter(d=>["rect","rule"].includes(d.view.getMarkType())).filter(d=>s.has(d.view.name));let u=[this.makePeekMenuItem(),dd,{label:`Locus: ${f2(a)}`,type:"header"},dd],f="";for(const[d,h]of c.entries()){const p={view:h.view.name,field:h.field,locus:a},m=this.compositeAttributeInfoSource.getAttributeInfo({type:u2,specifier:p}),g=(l=h.view.getTitleText())!=null?l:h.view.spec.name;g!=f&&(d>0&&u.push({type:"divider"}),u.push({label:g,type:"header"}),f=g),u.push({label:h.field,submenu:id(null,m,void 0,this)})}hd({items:u},i)}getSampleFacetTexture(){return this.facetTexture}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0),!n.stopped&&(this.childCoords.containsPoint(n.point.x,n.point.y)&&(this.child.propagateInteractionEvent(n),i1(n,this.childCoords,r=>se(this,fc,_2).call(this,this.childCoords,this.child,r),this.context.getCurrentHover())),this.peripheryCoords.containsPoint(n.point.x,n.point.y)&&this.peripheryView.propagateInteractionEvent(n),!n.stopped&&this.handleInteractionEvent(void 0,n,!1))}getDefaultResolution(n,r){switch(n){case"x":case"sample":return"shared";default:return"independent"}}}fc=new WeakSet,_2=function(n,r,i){const o=this.child.getScaleResolution("x");if(!o||!o.isZoomable())return;const a=n.normalizePoint(i.x,i.y),s=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta);o.zoom(2**i.zDelta,a.x,s.x-a.x),this.context.animator.requestRender()};function f2(t){return!le(t)&&"chrom"in t?KM(t):""+t}class Nk extends ue{constructor(){super(),this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:Lk(e)})}}function Lk(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function Bk(t){return"samples"in t&&ze(t.samples)&&"spec"in t&&ze(t.spec)}const Ok=(t,e)=>e.some(n=>t instanceof n);let d2,h2;function Pk(){return d2||(d2=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Fk(){return h2||(h2=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const p2=new WeakMap,gd=new WeakMap,m2=new WeakMap,yd=new WeakMap,vd=new WeakMap;function zk(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",a)},o=()=>{n(xn(t.result)),i()},a=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",a)});return e.then(n=>{n instanceof IDBCursor&&p2.set(n,t)}).catch(()=>{}),vd.set(e,t),e}function Rk(t){if(gd.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",a),t.removeEventListener("abort",a)},o=()=>{n(),i()},a=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",a),t.addEventListener("abort",a)});gd.set(t,e)}let bd={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return gd.get(t);if(e==="objectStoreNames")return t.objectStoreNames||m2.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return xn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function jk(t){bd=t(bd)}function Uk(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Ad(this),e,...n);return m2.set(r,e.sort?e.sort():[e]),xn(r)}:Fk().includes(t)?function(...e){return t.apply(Ad(this),e),xn(p2.get(this))}:function(...e){return xn(t.apply(Ad(this),e))}}function Hk(t){return typeof t=="function"?Uk(t):(t instanceof IDBTransaction&&Rk(t),Ok(t,Pk())?new Proxy(t,bd):t)}function xn(t){if(t instanceof IDBRequest)return zk(t);if(yd.has(t))return yd.get(t);const e=Hk(t);return e!==t&&(yd.set(t,e),vd.set(e,t)),e}const Ad=t=>vd.get(t);function Gk(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const a=indexedDB.open(t,e),s=xn(a);return r&&a.addEventListener("upgradeneeded",c=>{r(xn(a.result),c.oldVersion,c.newVersion,xn(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),s.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),s}const Qk=["get","getKey","getAll","getAllKeys","count"],Vk=["put","add","delete","clear"],xd=new Map;function g2(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(xd.get(e))return xd.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=Vk.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||Qk.includes(n)))return;const o=async function(a,...s){const c=this.transaction(a,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(s.shift())),(await Promise.all([u[n](...s),i&&c.done]))[0]};return xd.set(e,o),o}jk(t=>({...t,get:(e,n,r)=>g2(e,n)||t.get(e,n,r),has:(e,n)=>!!g2(e,n)||t.has(e,n)}));class y2{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const jo="bookmarks";class Yk extends y2{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=Gk(e,1,{upgrade(n,r,i,o){n.createObjectStore(jo,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(jo,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(jo,e)}async getNames(){return(await this._getDB()).getAllKeys(jo)}async get(e){return(await this._getDB()).get(jo,e)}}/**
|
2155
2155
|
* @license
|
2156
2156
|
* Copyright 2017 Google LLC
|
2157
2157
|
* SPDX-License-Identifier: BSD-3-Clause
|
2158
|
-
*/const Uo=(t,e)=>{var n,r;const i=t._$AN;if(i===void 0)return!1;for(const o of i)(r=(n=o)._$AO)===null||r===void 0||r.call(n,e,!1),Uo(o,e);return!0},rc=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)},
|
2158
|
+
*/const Uo=(t,e)=>{var n,r;const i=t._$AN;if(i===void 0)return!1;for(const o of i)(r=(n=o)._$AO)===null||r===void 0||r.call(n,e,!1),Uo(o,e);return!0},rc=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)},v2=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),Xk(e)}};function _k(t){this._$AN!==void 0?(rc(this),this._$AM=t,v2(this)):this._$AM=t}function Wk(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<r.length;o++)Uo(r[o],!1),rc(r[o]);else r!=null&&(Uo(r,!1),rc(r));else Uo(this,t)}const Xk=t=>{var e,n,r,i;t.type==bt.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=Wk),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=_k))};class b2 extends Kr{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),v2(this),this.isConnected=e._$AU}_$AO(e,n=!0){var r,i;e!==this.isConnected&&(this.isConnected=e,e?(r=this.reconnected)===null||r===void 0||r.call(this):(i=this.disconnected)===null||i===void 0||i.call(this)),n&&(Uo(this,e),rc(this))}setValue(e){if(jy(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(){}}/**
|
2159
2159
|
* @license
|
2160
2160
|
* Copyright 2020 Google LLC
|
2161
2161
|
* SPDX-License-Identifier: BSD-3-Clause
|
2162
|
-
*/const
|
2162
|
+
*/const A2=()=>new Zk;class Zk{}const wd=new WeakMap,x2=ar(class extends b2{render(t){return z}update(t,[e]){var n;const r=e!==this.Y;return r&&this.Y!==void 0&&this.rt(void 0),(r||this.lt!==this.ct)&&(this.Y=e,this.dt=(n=t.options)===null||n===void 0?void 0:n.host,this.rt(this.ct=t.element)),z}rt(t){var e;if(typeof this.Y=="function"){const n=(e=this.dt)!==null&&e!==void 0?e:globalThis;let r=wd.get(n);r===void 0&&(r=new WeakMap,wd.set(n,r)),r.get(this.Y)!==void 0&&this.Y.call(this.dt,void 0),r.set(this.Y,t),t!==void 0&&this.Y.call(this.dt,t)}else this.Y.value=t}get lt(){var t,e,n;return typeof this.Y=="function"?(e=wd.get((t=this.dt)!==null&&t!==void 0?t:globalThis))===null||e===void 0?void 0:e.get(this.Y):(n=this.Y)===null||n===void 0?void 0:n.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});/**
|
2163
2163
|
* @license
|
2164
2164
|
* Copyright 2018 Google LLC
|
2165
2165
|
* SPDX-License-Identifier: BSD-3-Clause
|
2166
|
-
*/const qk={},Kk=ar(class extends Kr{constructor(){super(...arguments),this.ot=qk}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.ot)&&this.ot.length===e.length&&e.every((r,i)=>r===this.ot[i]))return Ae}else if(this.ot===e)return Ae;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class Jk extends vt{constructor(){super(),this.inputRef=
|
2166
|
+
*/const qk={},Kk=ar(class extends Kr{constructor(){super(...arguments),this.ot=qk}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.ot)&&this.ot.length===e.length&&e.every((r,i)=>r===this.ot[i]))return Ae}else if(this.ot===e)return Ae;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class Jk extends vt{constructor(){super(),this.inputRef=A2(),this.app=void 0,this.getDefaultValue=()=>"",this._keyListener=this._onKeyDown.bind(this),this._documentClickListener=e=>{var n;e.target!==this._inputField&&((n=this._inputField)==null||n.blur())},this._focused=!1}get genomeSpy(){return this.app.genomeSpy}get _inputField(){return this.inputRef.value}static get properties(){return{app:{type:Object}}}connectedCallback(){super.connectedCallback(),this._initializeGenome(),document.addEventListener("keydown",this._keyListener),document.addEventListener("click",this._documentClickListener)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this._keyListener),document.removeEventListener("click",this._documentClickListener)}createRenderRoot(){return this}_onKeyDown(e){switch(e.code){case"KeyF":e.metaKey||e.altKey||e.ctrlKey||(e.preventDefault(),this.inputRef.value.focus());break}}_initializeGenome(){const e=w2(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",ws(()=>this.requestUpdate(),60,!1)))}async searchViews(e){var r,i;const n=new Intl.Collator("en",{usage:"search",sensitivity:"base"});for(const o of this.genomeSpy.getSearchableViews()){const a=o.getAccessor("search"),s=o.getAccessor("x"),c=o.getAccessor("x2"),u=o.getScaleResolution("x");if(!(!s||!c||!(u!=null&&u.isZoomable()))){for(const f of(i=(r=o.getCollector())==null?void 0:r.getData())!=null?i:[])if(n.compare(a(f),e)===0){const l=gc([s(f),c(f)],null,1.2);return await u.zoomTo(l),!0}}}return!1}async search(e){await(async()=>{if(this._genomeResolution&&this._genome){const r=this._genome.parseInterval(e);if(r){this._genomeResolution.zoomTo(r);return}if(await this.searchViews(e))return;this.genomeSpy.viewRoot.visit(i=>{i instanceof a2&&i.handleVerboseCommand(e)})}})(),this._inputField.value=this.getDefaultValue(),this.requestUpdate()}_onSearchHelpClicked(e){const n=e.target;n.tagName=="LI"&&this._doExampleSearch(n.innerText)}_onSearchFocused(e){const n=e.target;switch(e.type){case"focus":this._focused=!0,n.select();break;case"blur":this._focused=!1;break}}_onSearchKeyDown(e){const n=e.target;e.code=="Enter"?(e.preventDefault(),this.search(n.value).then(()=>{n.focus(),n.select()}).catch(r=>{console.log(r),alert(r)})):e.code=="Escape"?n.blur():e.stopPropagation()}_doExampleSearch(e){$k(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var i,o;const e=[];e.push(D`<p>Focus to a specific range. Examples:</p><ul><li>chr8</li><li>chr8:21,445,873</li><li>chr8:21,445,873-24,623,697</li><li>chr4:166,014,727-chr15:23,731,397</li></ul>`);for(const a of((i=this.genomeSpy)==null?void 0:i.getSearchableViews())||[]){const s=(o=a.getTitleText())!=null?o:a.spec.name,c=a.getAccessor("search"),u=c.fields.join(", "),f=Eg(3,a.getCollector().getData(),c);e.push(D`<p>Search <em>${s}</em> (${u}). Examples:</p><ul>${f.map(l=>D`<li>${l}</li>`)}</ul>`)}const n=this.app.getSampleView().attributePanel,r=n.getAttributeNames().map(a=>n.getAttributeInfo(a)).filter(a=>a.type=="nominal"||a.type=="ordinal").sort(()=>.5-Math.random()).map(a=>{var s,c;return[...(c=(s=a.scale)==null?void 0:s.domain())!=null?c:[]].sort(()=>.5-Math.random())[0]}).filter(a=>a!==void 0).slice(0,3);return r.length&&e.push(D`<p>Filter samples by categorical attributes. Examples:</p><ul>${r.map(a=>D`<li>${a}</li>`)}</ul>`),D`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return D`<div class="search"><input type="text" class="search-input" .value="${this.getDefaultValue()}" @mousedown="${e=>{this._focused||(this._inputField.focus(),e.preventDefault(),e.stopPropagation())}}" @keydown="${this._onSearchKeyDown.bind(this)}" @focus="${this._onSearchFocused}" @blur="${this._onSearchFocused}" ${x2(this.inputRef)}> ${Kk([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",Jk);function $k(t,e){return new Promise(n=>{let r=0;const i=700/t.length+30;function o(){e.value=t.substring(0,r),r>=t.length?setTimeout(n,500):(r++,setTimeout(o,Math.random()*i*2))}o()})}function w2(t){let e;return t.visit(n=>{for(const r of["x","y"]){const i=n.resolutions.scale[r];if(i&&i.type=="locus"&&i.isZoomable())return e=i,nr}}),e}const C2="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+",S2={name:"@genome-spy/app",description:"GenomeSpy-based visualization tool for multiple patient samples",author:{name:"Kari Lavikka",email:"kari.lavikka@helsinki.fi"},contributors:[],license:"BSD-2-Clause",version:"0.28.1",main:"dist/index.js",files:["dist/"],repository:{type:"git",url:"github:genome-spy/genome-spy",directory:"packages/app"},scripts:{dev:"node dev-server.js",build:"vite build",prepublishOnly:"npm run build"},dependencies:{"@floating-ui/dom":"^0.5.0","@fortawesome/fontawesome-free":"^6.1.1","@fortawesome/fontawesome-svg-core":"^6.1.1","@fortawesome/free-solid-svg-icons":"^6.1.1","@genome-spy/core":"^0.28.1","@reduxjs/toolkit":"^1.8.4",idb:"^7.0.1",lit:"^2.4.0","lz-string":"^1.4.4",mapsort:"^1.0.5","redux-batched-actions":"^0.5.0","redux-undo":"^1.0.1",snarkdown:"^2.0.0"},gitHead:"afa6f0dad1d3b205e95a6335fd474cf7984021b3"};/**
|
2167
2167
|
* @license
|
2168
2168
|
* Copyright 2020 Google LLC
|
2169
2169
|
* SPDX-License-Identifier: BSD-3-Clause
|
2170
|
-
*/const eN=ar(class extends Kr{constructor(t){if(super(t),t.type!==bt.PROPERTY&&t.type!==bt.ATTRIBUTE&&t.type!==bt.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!
|
2170
|
+
*/const eN=ar(class extends Kr{constructor(t){if(super(t),t.type!==bt.PROPERTY&&t.type!==bt.ATTRIBUTE&&t.type!==bt.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!jy(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===Ae||e===z)return e;const n=t.element,r=t.name;if(t.type===bt.PROPERTY){if(e===n[r])return Ae}else if(t.type===bt.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return Ae}else if(t.type===bt.ATTRIBUTE&&n.getAttribute(r)===e+"")return Ae;return Hy(t),e}});function E2(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function tN(t){if(!(t!=null&&t.length))throw new Error("Can't nest an empty array!");const e=D2(null);for(const n of t){if(!(n!=null&&n.length))throw new Error("Cannot nest, element has no path!");let r=e;for(const i of n){let o=r.children.find(a=>a.item===i);o||(o=D2(i),r.children.push(o)),r=o}}return e.children[0]}const D2=t=>({item:t,children:[]}),Cd=new Set;function Sd(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Cd)i.classList.remove("show"),document.body.classList.remove(Yn);return Cd.clear(),t.stopPropagation(),r?(Cd.add(n),n.classList.add("show"),document.body.classList.add(Yn),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(Yn),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Ed={visibilities:{}},ci=mv({name:"viewSettings",initialState:Ed,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Ed,setViewSettings:(t,e)=>({...Ed,...e.payload?e.payload:{}})}});class nN extends vt{constructor(){super(),this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=nc(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(E2("app",e=>{this.app=e})),this.app.addInitializationListener(()=>{this.updateToggles(),this.requestUpdate(),this.style.display=this.nestedPaths.children.length?"block":"none"}),this.app.storeHelper.subscribe(this.sateWatcher)}disconnectedCallback(){this.app.storeHelper.unsubscribe(this.sateWatcher)}createRenderRoot(){return this}toolButtonClicked(e){Sd(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?ci.actions.setVisibility({name:n.name,visibility:r}):ci.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch(ci.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof e1)return vs;n.push(i)});const r=n.filter(i=>w5(i.name)&&M2(i)).map(i=>[...i.getAncestors()].reverse());this.nestedPaths=tN(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=x1(n);var i=(a,s=!0)=>a.length?D`<ul class="${s?null:"unchecked"}">${a.map(o)}</ul>`:z,o=a=>{var u,f;const s=a.item,c=(u=e[s.name])!=null?u:s.isVisibleInSpec();return D`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(s.name)||!M2(s)}" .checked="${eN(c)}" @change="${l=>this.handleCheckboxClick(l,s)}">${(f=s.getTitleText())!=null?f:s.name}</label> ${i(a.children,c)}</li>`};return i(this.nestedPaths.children)}render(){const e=!Object.keys(this.getVisibilities()).length;return D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${K(C6).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?D`<span class="disabled-item">Restore defaults</span>`:D`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():z}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const M2=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof Pt)};customElements.define("genome-spy-view-visibility",nN);class rN extends vt{constructor(){super(),this.provenance=void 0}connectedCallback(){super.connectedCallback(),this.provenance.storeHelper.subscribe(()=>{this.requestUpdate()})}disconnectedCallback(){super.disconnectedCallback()}createRenderRoot(){return this}render(){const e=(r,i)=>{var a,s;const o=this.provenance.getActionInfo(r);return o?D`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${K((a=o.icon)!=null?a:z1).node[0]} ${(s=o.provenanceTitle)!=null?s:o.title}</a></li>`:z},n=()=>D`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${Sd}">${K(p6).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return D`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${K(e6).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${K(n6).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",rN);/**
|
2171
2171
|
* @license
|
2172
2172
|
* Copyright 2021 Google LLC
|
2173
2173
|
* SPDX-License-Identifier: BSD-3-Clause
|
@@ -2175,5 +2175,5 @@ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
|
2175
2175
|
* @license
|
2176
2176
|
* Copyright 2017 Google LLC
|
2177
2177
|
* SPDX-License-Identifier: BSD-3-Clause
|
2178
|
-
*/const M2=t=>!uI(t)&&typeof t.then=="function";class aN extends v2{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CK=new iN(this),this._$CX=new oN}render(...e){var n;return(n=e.find(r=>!M2(r)))!==null&&n!==void 0?n:Ae}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CK,a=this._$CX;this.isConnected||this.disconnected();for(let s=0;s<n.length&&!(s>this._$Cwt);s++){const c=n[s];if(!M2(c))return this._$Cwt=s,c;s<i&&c===r[s]||(this._$Cwt=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;a.get();)await a.get();const f=o.deref();if(f!==void 0){const l=f._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return Ae}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}}const sN=ar(aN);var cN={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function T2(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function Ho(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Dd(t,e){var n,r,i,o,a,s=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function d(p){var m=cN[p[1]||""],g=c[c.length-1]==p;return m?m[1]?(g?c.pop():c.push(p),m[0|g]):m[0]:p}function h(){for(var p="";c.length;)p+=d(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,m,g){return f[m.toLowerCase()]=g,""}).replace(/^\n+|\n+$/g,"");i=s.exec(t);)r=t.substring(l,i.index),l=s.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((a=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+T2(Ho(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Dd(T2(i[5].replace(/^\s*[>*+.-]/gm,""))),a==">"?a="blockquote":(a=a.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+a+">"+o+"</"+a+">"):i[8]?n='<img src="'+Ho(i[8])+'" alt="'+Ho(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+Ho(i[11]||f[r.toLowerCase()])+'">'),n=h()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(a="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Dd(i[12]||i[15],f)+"</"+a+">":i[16]?n="<code>"+Ho(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+h()).replace(/^\n+|\n+$/g,"")}function I2(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function uN(t,e={}){const n=Dd(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),k2(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",I2(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",I2(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function k2(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)k2(t.childNodes[e])}}function lN(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),a=[...r.children].findIndex(s=>s==n);for(const s of r.children)s.classList.remove("active-tab");for(const s of o.children)s.classList.remove("active-tab");r.children.item(a).classList.add("active-tab"),o.children.item(a).classList.add("active-tab")}var Md={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function a(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var s={compressToBase64:function(c){if(c==null)return"";var u=s._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:s._decompress(c.length,32,function(u){return a(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":s._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:s._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=s.compress(c),f=new Uint8Array(u.length*2),l=0,d=u.length;l<d;l++){var h=u.charCodeAt(l);f[l*2]=h>>>8,f[l*2+1]=h%256}return f},decompressFromUint8Array:function(c){if(c==null)return s.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var d=[];return u.forEach(function(h){d.push(n(h))}),s.decompress(d.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":s._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),s._decompress(c.length,32,function(u){return a(i,c.charAt(u))}))},compress:function(c){return s._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,d,h={},p={},m="",g="",y="",A=2,x=3,w=2,b=[],v=0,C=0,S;for(S=0;S<c.length;S+=1)if(m=c.charAt(S),Object.prototype.hasOwnProperty.call(h,m)||(h[m]=x++,p[m]=!0),g=y+m,Object.prototype.hasOwnProperty.call(h,g))y=g;else{if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<w;l++)v=v<<1,C==u-1?(C=0,b.push(f(v)),v=0):C++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1}else{for(d=1,l=0;l<w;l++)v=v<<1|d,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1}A--,A==0&&(A=Math.pow(2,w),w++),delete p[y]}else for(d=h[y],l=0;l<w;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1;A--,A==0&&(A=Math.pow(2,w),w++),h[g]=x++,y=String(m)}if(y!==""){if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<w;l++)v=v<<1,C==u-1?(C=0,b.push(f(v)),v=0):C++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1}else{for(d=1,l=0;l<w;l++)v=v<<1|d,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1}A--,A==0&&(A=Math.pow(2,w),w++),delete p[y]}else for(d=h[y],l=0;l<w;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1;A--,A==0&&(A=Math.pow(2,w),w++)}for(d=2,l=0;l<w;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1;for(;;)if(v=v<<1,C==u-1){b.push(f(v));break}else C++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:s._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],d=4,h=4,p=3,m="",g=[],y,A,x,w,b,v,C,S={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(x=0,b=Math.pow(2,2),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;switch(x){case 0:for(x=0,b=Math.pow(2,8),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;C=n(x);break;case 1:for(x=0,b=Math.pow(2,16),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;C=n(x);break;case 2:return""}for(l[3]=C,A=C,g.push(C);;){if(S.index>c)return"";for(x=0,b=Math.pow(2,p),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;switch(C=x){case 0:for(x=0,b=Math.pow(2,8),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;l[h++]=n(x),C=h-1,d--;break;case 1:for(x=0,b=Math.pow(2,16),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;l[h++]=n(x),C=h-1,d--;break;case 2:return g.join("")}if(d==0&&(d=Math.pow(2,p),p++),l[C])m=l[C];else if(C===h)m=A+A.charAt(0);else return null;g.push(m),l[h++]=A+m.charAt(0),d--,A=m,d==0&&(d=Math.pow(2,p),p++)}}};return s}();t!=null&&(t.exports=e)})(Md);function fN(){const t=typeof process<"u"?require("util").TextEncoder:TextEncoder;return new t}let ic;function dN(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function hN(t){ic!=null||(ic=dN());let e=-1;const n=fN().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^ic[(e^n[r])&255];return(e^-1)>>>0}function N2(t){return("00000000"+hN(t).toString(16)).slice(-8)}function L2(t){const e=Md.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+N2(e)}function pN(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(N2(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Md.exports.decompressFromEncodedURIComponent(e))}let Yt;function mN(t){for(const e of t.genomeSpy.getNamedScaleResolutions().values())e.isZoomable()&&e.resetZoom();t.storeHelper.dispatch([...t.provenance.isUndoable()?[Gt.ActionCreators.jumpToPast(0)]:[],ci.actions.restoreDefaultVisibilities()])}async function Td(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(ci.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const a=e.genomeSpy.getNamedScaleResolutions().get(i);a?r.push(a.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),Ge(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function Go(t,e,n={}){await Td(t,e),(Yt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await gN(t,e,n)}async function gN(t,e,n={}){Yt!=null||(Yt=dr("tour",e.appContainer)),await yN(t,e,n)}async function yN(t,e,n){var m;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),a=r?` ${o+1} of ${i.length}`:"",s=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${a}: ${(m=t.name)!=null?m:"Unnamed"}`,c=t.notes?uN(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):D`<span class="no-notes">No notes provided</span>`,u=async()=>{if(Yt==null||Yt.close(),Yt=void 0,n.mode=="tour"){const g=n.afterTourBookmark;if(typeof g=="string"){const y=await n.database.get(g);if(!y)throw new Error(`No such bookmark: ${g}`);Td(y,e)}else g===null||mN(e)}},f=async g=>{const y=await r.get(i[g]);Go(y,e,n),e.appContainer.querySelector("canvas").focus()},l=async()=>{if(await Id(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(g){console.warn(g),Ge(`Cannot import bookmark: ${g}`)}},d=D`<button class="btn" @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button class="btn" @click="${l}">${K(P1).node[0]} Import bookmark</button>`:z} ${r?D`<button class="btn" @click="${()=>f(o-1)}" ?disabled="${o<=0}">${K(o6).node[0]} Previous</button> <button class="btn" @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${K(v6).node[0]}</button>`:z}`,p=D`<button title="Collapse" class="btn collapse" @click="${g=>g.target.closest(".gs-modal").classList.toggle("collapsed")}">${K(s6).node[0]}</button><div class="modal-title">${s}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${d}</div>`;Be(p,Yt.content)}function B2(t,e){const n=JSON.stringify(t,void 0,2),r=window.location,i=r.origin+r.pathname+r.search+(e?"#bookmark:"+t.name.replaceAll(" ","-"):L2(t));Ge(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${lN}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${i}"> <button @click="${a=>navigator.clipboard.writeText(i).then(()=>a.target.dispatchEvent(hI())).catch(()=>Ge("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
|
2179
|
-
${n}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function Id(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return D`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?D`<div class="gs-alert warning">${K(u6).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:z} ${n=="share"?D`<div class="gs-alert info">${K(z1).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:z}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${d=>{e.name=O2(d.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${d=>{e.notes=O2(d.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn btn-cancel" @click="${c}">Cancel</button> <button class="btn btn-primary" @click="${u}">${n=="share"?D`${K(rf).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,a=()=>!!e.name,s=dr();return new Promise(c=>{const u=()=>{s.close(),c(!1)},f=async()=>{if(!a()){Ge("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await Ge(D`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),d&&(s.close(),c(!0))},l=()=>{s.close(),c(!0)};Be(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function O2(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class vN extends vt{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(S2("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await Id(void 0,e,"share")&&B2(e,!1)}async _addBookmark(e,n){var a,s;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((a=o.name)!=null||(o.name=r==null?void 0:r.name),(s=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await Id(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){Ge(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Go(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li"),o=()=>Ge(D`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async c=>{c&&(await e.delete(n),this.requestUpdate())}),a=[],s=e==this.app.globalBookmarkDatabase;s||(a.push({label:"Edit and replace...",icon:x6,callback:()=>this._addBookmark(e,n)}),a.push({label:"Delete",icon:j1,callback:o})),a.push({label:"Share...",icon:rf,callback:async()=>B2(await e.get(n),s)}),r2({items:a},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>t2(o)):z}_getBookmarks(){const e=(n,r)=>n?sN(this._makeBookmarkMenuItems(n,r),D`Loading...`):z;return[e(this.app.globalBookmarkDatabase,"Bookmarks on the server"),e(this.app.localBookmarkDatabase,"Bookmarks in the web browser")]}render(){const e=this.app.localBookmarkDatabase,n=e?D`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:z,r=e||this.app.globalBookmarkDatabase?D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Sd(i)&&this.requestUpdate()}}">${K(P1).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:z;return D`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${K(rf).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",vN);class bN extends vt{constructor(){super(),this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.provenance,n=[];e.isEnabled()&&n.push(D`<genome-spy-provenance-buttons .provenance="${e}"></genome-spy-provenance-buttons>`),n.push(D`<genome-spy-view-visibility></genome-spy-view-visibility>`),n.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const r=this.app.config.description?qe(this.app.config.description):[];return r.length>1&&n.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>Ge(D`${r.slice(1).map(i=>D`<p>${i}</p>`)}`,{title:r[0]})}">${K(z1).node[0]}</button>`),r.length>0&&n.push(D`<span class="vis-title">${r[0]}</span>`),n.push(D`<span class="spacer"></span> <a class="version" href="https://github.com/genome-spy/genome-spy/releases/tag/v${C2.version}">v${C2.version}</a> ${this.app.appContainer.requestFullscreen?D`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${K(A6).node[0]}</button>`:z} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${K(d6).node[0]}</button>`),n}render(){const e=this.app.genomeSpy;return D`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${w2}"> </a>${this.appInitialized&&x2(e.viewRoot)?D`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:z} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",bN);class AN{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(a=>o.type.startsWith(a)),i=(o,a)=>r(a)?a:o!=null?o:null;this._reducer=_9(qf({...this._reducers,lastAction:i}),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[Gt.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(Gt.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(Gt.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(Gt.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(Gt.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*xN(t,e=n=>+n){const n=t.length,r=new wo,i=new Array(n).fill(0);for(const[a,s]of t.entries())s.length&&r.push(a,e(s[0]));let o=0;for(;(o=r.pop())!==void 0;){const a=t[o];let s=i[o];if(yield a[s++],s<a.length){const u=e(a[s]);r.push(o,u),i[o]=s}}}const wN="sampleCount";class CN extends ue{constructor(e,n){super(),this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof md&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(td(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.getEncoding().x;if(Zn(e))this.xAccessor=q(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Zr)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[oi]),super.complete()}_mergeAndPropagate(e){const n=[...rd(e.rootGroup)].filter(r=>Tv(je(r)));for(const[r,i]of n.entries()){const o=je(i);if(Tv(o)){this.contextObject[wN]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const a=o.samples,s=this._getCollector(),c=xN(a.map(u=>{var f;return(f=s.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof be&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var SN="BATCHING_REDUCER.BATCH";function EN(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:SN;return{type:e,meta:{batch:!0},payload:t}}function DN(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class MN{constructor(e){this._reducers=e!=null?e:{},this.store=t9({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(DN(qf(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(EN(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class TN extends g2{constructor(e){super(),this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}f1.mergeFacets=CN;class P2{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new MN,this.storeHelper.addReducer("viewSettings",ci.reducer),this.provenance=new AN(this.storeHelper),this._initializationListeners=[],this.toolbarRef=b2(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new Yk(n.specId):void 0,this.globalBookmarkDatabase=void 0,Be(D`<div class="genome-spy-app"><genome-spy-toolbar ${A2(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",s=>{s.detail.name=="app"&&(s.detail.setter(i),s.stopPropagation())});const o=s=>this.appContainer.getElementsByClassName(s)[0];this.genomeSpy=new M1(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(Bk,(s,c,u,f)=>new md(s,c,u,f,this.provenance));const a=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=s=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[s.name])!=null?u:a(s)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var a,s;const e=(a=this.config.bookmarks)!=null&&a.remote?Bi({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.appContainer.querySelector("canvas").setAttribute("tabindex","-1"),this.storeHelper.subscribe(nc(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,d;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(d=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||d._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new TN(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}try{await this._restoreStateFromUrlOrBookmark()}catch(c){Ge(c.toString())}this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl().catch(c=>Ge(c.toString())),!1);const r=ws(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=qe((s=this.genomeSpy.spec.description)!=null?s:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=(i=this.config.bookmarks)==null?void 0:i.remote,n=this.globalBookmarkDatabase;if(!await this._restoreStateFromUrl()&&e&&n){const a=(o=e.initialBookmark)!=null?o:e.tour&&(await n.getNames())[0];if(a){const s=await n.get(a);if(!s)throw new Error(`No such bookmark: ${a}`);e.tour?await Go(s,this,{mode:"tour",database:n,afterTourBookmark:e.afterTourBookmark}):await Td(s,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&n.length&&(e.actions=n);for(const[o,a]of this.genomeSpy.getNamedScaleResolutions().entries())a.isZoomed()||(e.scaleDomains[o]=a.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?L2(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}async _restoreStateFromUrl(){var r,i;const e=window.location.hash,n=(r=e.match(/^#bookmark:(.+)$/))==null?void 0:r[1];if(n){const o=(i=this.config.bookmarks)==null?void 0:i.remote,a=this.globalBookmarkDatabase;if(o&&a){const s=(await a.getNames()).find(c=>c.replaceAll(" ","-")==n);if(s){const c=await a.get(s);if(!c)throw new Error(`No such bookmark: ${s}`);return await Go(c,this,{mode:"tour",database:a}),!0}else throw new Error(`No such bookmark: ${n}`)}}if(e&&e.length>0)try{const o=pN(e);return Go(o,this,{mode:"shared"}),!0}catch(o){console.error(o),Ge(D`<p>Cannot restore the state:</p><p>${o}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",IN(_5)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)!=null&&n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof md)return e=r,nr}),e}}function IN(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function kN(t,e,n={}){var o,a,s;let r;if(ne(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 c=ze(e)?e:await F2(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(a=c.width)!=null||(c.width="container"),(s=c.padding)!=null||(c.padding=10);const u=new P2(r,c,n);i=u.genomeSpy,NN(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function NN(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function F2(t){let e;try{e=JSON.parse(await Bi().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}j.GenomeSpy=M1,j.GenomeSpyApp=P2,j.embed=kN,j.html=D,j.icon=w2,j.loadSpec=F2,Object.defineProperties(j,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
2178
|
+
*/const T2=t=>!uI(t)&&typeof t.then=="function";class aN extends b2{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CK=new iN(this),this._$CX=new oN}render(...e){var n;return(n=e.find(r=>!T2(r)))!==null&&n!==void 0?n:Ae}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CK,a=this._$CX;this.isConnected||this.disconnected();for(let s=0;s<n.length&&!(s>this._$Cwt);s++){const c=n[s];if(!T2(c))return this._$Cwt=s,c;s<i&&c===r[s]||(this._$Cwt=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;a.get();)await a.get();const f=o.deref();if(f!==void 0){const l=f._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return Ae}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}}const sN=ar(aN);var cN={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function I2(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function Ho(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Dd(t,e){var n,r,i,o,a,s=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function d(p){var m=cN[p[1]||""],g=c[c.length-1]==p;return m?m[1]?(g?c.pop():c.push(p),m[0|g]):m[0]:p}function h(){for(var p="";c.length;)p+=d(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,m,g){return f[m.toLowerCase()]=g,""}).replace(/^\n+|\n+$/g,"");i=s.exec(t);)r=t.substring(l,i.index),l=s.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((a=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+I2(Ho(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Dd(I2(i[5].replace(/^\s*[>*+.-]/gm,""))),a==">"?a="blockquote":(a=a.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+a+">"+o+"</"+a+">"):i[8]?n='<img src="'+Ho(i[8])+'" alt="'+Ho(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+Ho(i[11]||f[r.toLowerCase()])+'">'),n=h()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(a="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Dd(i[12]||i[15],f)+"</"+a+">":i[16]?n="<code>"+Ho(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+h()).replace(/^\n+|\n+$/g,"")}function k2(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function uN(t,e={}){const n=Dd(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),N2(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",k2(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",k2(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function N2(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)N2(t.childNodes[e])}}function lN(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),a=[...r.children].findIndex(s=>s==n);for(const s of r.children)s.classList.remove("active-tab");for(const s of o.children)s.classList.remove("active-tab");r.children.item(a).classList.add("active-tab"),o.children.item(a).classList.add("active-tab")}var Md={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function a(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var s={compressToBase64:function(c){if(c==null)return"";var u=s._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:s._decompress(c.length,32,function(u){return a(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":s._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:s._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=s.compress(c),f=new Uint8Array(u.length*2),l=0,d=u.length;l<d;l++){var h=u.charCodeAt(l);f[l*2]=h>>>8,f[l*2+1]=h%256}return f},decompressFromUint8Array:function(c){if(c==null)return s.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var d=[];return u.forEach(function(h){d.push(n(h))}),s.decompress(d.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":s._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),s._decompress(c.length,32,function(u){return a(i,c.charAt(u))}))},compress:function(c){return s._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,d,h={},p={},m="",g="",y="",A=2,x=3,w=2,b=[],v=0,C=0,S;for(S=0;S<c.length;S+=1)if(m=c.charAt(S),Object.prototype.hasOwnProperty.call(h,m)||(h[m]=x++,p[m]=!0),g=y+m,Object.prototype.hasOwnProperty.call(h,g))y=g;else{if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<w;l++)v=v<<1,C==u-1?(C=0,b.push(f(v)),v=0):C++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1}else{for(d=1,l=0;l<w;l++)v=v<<1|d,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1}A--,A==0&&(A=Math.pow(2,w),w++),delete p[y]}else for(d=h[y],l=0;l<w;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1;A--,A==0&&(A=Math.pow(2,w),w++),h[g]=x++,y=String(m)}if(y!==""){if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<w;l++)v=v<<1,C==u-1?(C=0,b.push(f(v)),v=0):C++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1}else{for(d=1,l=0;l<w;l++)v=v<<1|d,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1}A--,A==0&&(A=Math.pow(2,w),w++),delete p[y]}else for(d=h[y],l=0;l<w;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1;A--,A==0&&(A=Math.pow(2,w),w++)}for(d=2,l=0;l<w;l++)v=v<<1|d&1,C==u-1?(C=0,b.push(f(v)),v=0):C++,d=d>>1;for(;;)if(v=v<<1,C==u-1){b.push(f(v));break}else C++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:s._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],d=4,h=4,p=3,m="",g=[],y,A,x,w,b,v,C,S={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(x=0,b=Math.pow(2,2),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;switch(x){case 0:for(x=0,b=Math.pow(2,8),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;C=n(x);break;case 1:for(x=0,b=Math.pow(2,16),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;C=n(x);break;case 2:return""}for(l[3]=C,A=C,g.push(C);;){if(S.index>c)return"";for(x=0,b=Math.pow(2,p),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;switch(C=x){case 0:for(x=0,b=Math.pow(2,8),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;l[h++]=n(x),C=h-1,d--;break;case 1:for(x=0,b=Math.pow(2,16),v=1;v!=b;)w=S.val&S.position,S.position>>=1,S.position==0&&(S.position=u,S.val=f(S.index++)),x|=(w>0?1:0)*v,v<<=1;l[h++]=n(x),C=h-1,d--;break;case 2:return g.join("")}if(d==0&&(d=Math.pow(2,p),p++),l[C])m=l[C];else if(C===h)m=A+A.charAt(0);else return null;g.push(m),l[h++]=A+m.charAt(0),d--,A=m,d==0&&(d=Math.pow(2,p),p++)}}};return s}();t!=null&&(t.exports=e)})(Md);function fN(){const t=typeof process<"u"?require("util").TextEncoder:TextEncoder;return new t}let ic;function dN(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function hN(t){ic!=null||(ic=dN());let e=-1;const n=fN().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^ic[(e^n[r])&255];return(e^-1)>>>0}function L2(t){return("00000000"+hN(t).toString(16)).slice(-8)}function B2(t){const e=Md.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+L2(e)}function pN(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(L2(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Md.exports.decompressFromEncodedURIComponent(e))}let Yt;function mN(t){for(const e of t.genomeSpy.getNamedScaleResolutions().values())e.isZoomable()&&e.resetZoom();t.storeHelper.dispatch([...t.provenance.isUndoable()?[Gt.ActionCreators.jumpToPast(0)]:[],ci.actions.restoreDefaultVisibilities()])}async function Td(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(ci.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const a=e.genomeSpy.getNamedScaleResolutions().get(i);a?r.push(a.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),Ge(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function Go(t,e,n={}){await Td(t,e),(Yt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await gN(t,e,n)}async function gN(t,e,n={}){Yt!=null||(Yt=dr("tour",e.appContainer)),await yN(t,e,n)}async function yN(t,e,n){var m;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),a=r?` ${o+1} of ${i.length}`:"",s=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${a}: ${(m=t.name)!=null?m:"Unnamed"}`,c=t.notes?uN(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):D`<span class="no-notes">No notes provided</span>`,u=async()=>{if(Yt==null||Yt.close(),Yt=void 0,n.mode=="tour"){const g=n.afterTourBookmark;if(typeof g=="string"){const y=await n.database.get(g);if(!y)throw new Error(`No such bookmark: ${g}`);Td(y,e)}else g===null||mN(e)}},f=async g=>{const y=await r.get(i[g]);Go(y,e,n),e.appContainer.querySelector("canvas").focus()},l=async()=>{if(await Id(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(g){console.warn(g),Ge(`Cannot import bookmark: ${g}`)}},d=D`<button class="btn" @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button class="btn" @click="${l}">${K(F1).node[0]} Import bookmark</button>`:z} ${r?D`<button class="btn" @click="${()=>f(o-1)}" ?disabled="${o<=0}">${K(o6).node[0]} Previous</button> <button class="btn" @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${K(v6).node[0]}</button>`:z}`,p=D`<button title="Collapse" class="btn collapse" @click="${g=>g.target.closest(".gs-modal").classList.toggle("collapsed")}">${K(s6).node[0]}</button><div class="modal-title">${s}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${d}</div>`;Be(p,Yt.content)}function O2(t,e){const n=JSON.stringify(t,void 0,2),r=window.location,i=r.origin+r.pathname+r.search+(e?"#bookmark:"+t.name.replaceAll(" ","-"):B2(t));Ge(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${lN}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${i}"> <button @click="${a=>navigator.clipboard.writeText(i).then(()=>a.target.dispatchEvent(hI())).catch(()=>Ge("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
|
2179
|
+
${n}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function Id(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return D`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?D`<div class="gs-alert warning">${K(u6).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:z} ${n=="share"?D`<div class="gs-alert info">${K(R1).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:z}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${d=>{e.name=P2(d.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${d=>{e.notes=P2(d.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn btn-cancel" @click="${c}">Cancel</button> <button class="btn btn-primary" @click="${u}">${n=="share"?D`${K(rf).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,a=()=>!!e.name,s=dr();return new Promise(c=>{const u=()=>{s.close(),c(!1)},f=async()=>{if(!a()){Ge("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await Ge(D`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),d&&(s.close(),c(!0))},l=()=>{s.close(),c(!0)};Be(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function P2(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class vN extends vt{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(E2("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await Id(void 0,e,"share")&&O2(e,!1)}async _addBookmark(e,n){var a,s;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((a=o.name)!=null||(o.name=r==null?void 0:r.name),(s=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await Id(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){Ge(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Go(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li"),o=()=>Ge(D`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async c=>{c&&(await e.delete(n),this.requestUpdate())}),a=[],s=e==this.app.globalBookmarkDatabase;s||(a.push({label:"Edit and replace...",icon:x6,callback:()=>this._addBookmark(e,n)}),a.push({label:"Delete",icon:U1,callback:o})),a.push({label:"Share...",icon:rf,callback:async()=>O2(await e.get(n),s)}),i2({items:a},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>n2(o)):z}_getBookmarks(){const e=(n,r)=>n?sN(this._makeBookmarkMenuItems(n,r),D`Loading...`):z;return[e(this.app.globalBookmarkDatabase,"Bookmarks on the server"),e(this.app.localBookmarkDatabase,"Bookmarks in the web browser")]}render(){const e=this.app.localBookmarkDatabase,n=e?D`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:z,r=e||this.app.globalBookmarkDatabase?D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Sd(i)&&this.requestUpdate()}}">${K(F1).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:z;return D`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${K(rf).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",vN);class bN extends vt{constructor(){super(),this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.provenance,n=[];e.isEnabled()&&n.push(D`<genome-spy-provenance-buttons .provenance="${e}"></genome-spy-provenance-buttons>`),n.push(D`<genome-spy-view-visibility></genome-spy-view-visibility>`),n.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const r=this.app.config.description?qe(this.app.config.description):[];return r.length>1&&n.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>Ge(D`${r.slice(1).map(i=>D`<p>${i}</p>`)}`,{title:r[0]})}">${K(R1).node[0]}</button>`),r.length>0&&n.push(D`<span class="vis-title">${r[0]}</span>`),n.push(D`<span class="spacer"></span> <a class="version" href="https://github.com/genome-spy/genome-spy/releases/tag/v${S2.version}">v${S2.version}</a> ${this.app.appContainer.requestFullscreen?D`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${K(A6).node[0]}</button>`:z} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${K(d6).node[0]}</button>`),n}render(){const e=this.app.genomeSpy;return D`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${C2}"> </a>${this.appInitialized&&w2(e.viewRoot)?D`<genome-spy-search-field .app="${this.app}"></genome-spy-search-field>`:z} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",bN);class AN{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(a=>o.type.startsWith(a)),i=(o,a)=>r(a)?a:o!=null?o:null;this._reducer=_9(qf({...this._reducers,lastAction:i}),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[Gt.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(Gt.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(Gt.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(Gt.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(Gt.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*xN(t,e=n=>+n){const n=t.length,r=new wo,i=new Array(n).fill(0);for(const[a,s]of t.entries())s.length&&r.push(a,e(s[0]));let o=0;for(;(o=r.pop())!==void 0;){const a=t[o];let s=i[o];if(yield a[s++],s<a.length){const u=e(a[s]);r.push(o,u),i[o]=s}}}const wN="sampleCount";class CN extends ue{constructor(e,n){super(),this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof md&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(td(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.getEncoding().x;if(Zn(e))this.xAccessor=q(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Zr)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[oi]),super.complete()}_mergeAndPropagate(e){const n=[...rd(e.rootGroup)].filter(r=>Iv(je(r)));for(const[r,i]of n.entries()){const o=je(i);if(Iv(o)){this.contextObject[wN]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const a=o.samples,s=this._getCollector(),c=xN(a.map(u=>{var f;return(f=s.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof be&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var SN="BATCHING_REDUCER.BATCH";function EN(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:SN;return{type:e,meta:{batch:!0},payload:t}}function DN(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class MN{constructor(e){this._reducers=e!=null?e:{},this.store=t9({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(DN(qf(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(EN(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class TN extends y2{constructor(e){super(),this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}d1.mergeFacets=CN;class F2{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new MN,this.storeHelper.addReducer("viewSettings",ci.reducer),this.provenance=new AN(this.storeHelper),this._initializationListeners=[],this.toolbarRef=A2(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new Yk(n.specId):void 0,this.globalBookmarkDatabase=void 0,Be(D`<div class="genome-spy-app"><genome-spy-toolbar ${x2(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",s=>{s.detail.name=="app"&&(s.detail.setter(i),s.stopPropagation())});const o=s=>this.appContainer.getElementsByClassName(s)[0];this.genomeSpy=new T1(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(Bk,(s,c,u,f)=>new md(s,c,u,f,this.provenance));const a=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=s=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[s.name])!=null?u:a(s)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var a,s;const e=(a=this.config.bookmarks)!=null&&a.remote?Bi({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.appContainer.querySelector("canvas").setAttribute("tabindex","-1"),this.storeHelper.subscribe(nc(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,d;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(d=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||d._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new TN(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}try{await this._restoreStateFromUrlOrBookmark()}catch(c){Ge(c.toString())}this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl().catch(c=>Ge(c.toString())),!1);const r=ws(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=qe((s=this.genomeSpy.spec.description)!=null?s:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=(i=this.config.bookmarks)==null?void 0:i.remote,n=this.globalBookmarkDatabase;if(!await this._restoreStateFromUrl()&&e&&n){const a=(o=e.initialBookmark)!=null?o:e.tour&&(await n.getNames())[0];if(a){const s=await n.get(a);if(!s)throw new Error(`No such bookmark: ${a}`);e.tour?await Go(s,this,{mode:"tour",database:n,afterTourBookmark:e.afterTourBookmark}):await Td(s,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&n.length&&(e.actions=n);for(const[o,a]of this.genomeSpy.getNamedScaleResolutions().entries())a.isZoomed()||(e.scaleDomains[o]=a.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?B2(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}async _restoreStateFromUrl(){var r,i;const e=window.location.hash,n=(r=e.match(/^#bookmark:(.+)$/))==null?void 0:r[1];if(n){const o=(i=this.config.bookmarks)==null?void 0:i.remote,a=this.globalBookmarkDatabase;if(o&&a){const s=(await a.getNames()).find(c=>c.replaceAll(" ","-")==n);if(s){const c=await a.get(s);if(!c)throw new Error(`No such bookmark: ${s}`);return await Go(c,this,{mode:"tour",database:a}),!0}else throw new Error(`No such bookmark: ${n}`)}}if(e&&e.length>0)try{const o=pN(e);return Go(o,this,{mode:"shared"}),!0}catch(o){console.error(o),Ge(D`<p>Cannot restore the state:</p><p>${o}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",IN(_5)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)!=null&&n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof md)return e=r,nr}),e}}function IN(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function kN(t,e,n={}){var o,a,s;let r;if(ne(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 c=ze(e)?e:await z2(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(a=c.width)!=null||(c.width="container"),(s=c.padding)!=null||(c.padding=10);const u=new F2(r,c,n);i=u.genomeSpy,NN(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function NN(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function z2(t){let e;try{e=JSON.parse(await Bi().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}j.GenomeSpy=T1,j.GenomeSpyApp=F2,j.embed=kN,j.html=D,j.icon=C2,j.loadSpec=z2,Object.defineProperties(j,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|