1"use strict";(self.webpackChunkcov_spectrum_website=self.webpackChunkcov_spectrum_website||[]).push([[6591],{6591:(t,e,r)=>{r.r(e),r.d(e,{default:()=>h});var i=r(1016),s=r(1599),n=r(9062),l=r(2779),a=r(8311),o=r(2595);class h extends s.B.BaseFeatureDataAdapter{constructor(){super(...arguments),this.calculatedIntervalTreeMap={}}async loadDataP(t){const{statusCallback:e=()=>{}}=t||{},r=await n.u.fetchAndMaybeUnzip(n.a4.openLocation(this.getConf("gffLocation"),this.pluginManager),t),s=[],l={},h=new TextDecoder("utf8");let u=0,c=0;for(;u<r.length;){const t=r.indexOf(10,u),i=-1===t?r.subarray(u):r.subarray(u,t),a=h.decode(i).trim();if(a)if(a.startsWith("#"))s.push(a);else{if(a.startsWith(">"))break;{const t=a.indexOf("\t"),e=a.slice(0,t);l[e]||(l[e]=""),l[e]+=`${a}\n`}}c++%1e4===0&&e(`Loading ${n.u.getProgressDisplayStr(u,r.length)}`),u=t+1}const f=Object.fromEntries(Object.entries(l).map((t=>{let[e,r]=t;return[e,t=>{if(!this.calculatedIntervalTreeMap[e]){null==t||t("Parsing GFF data");const s=new i.I;for(const t of(0,o.p)(r).flat().map(((t,r)=>new a.S({data:(0,o.f)(t),id:`${this.id}-${e}-${r}`}))))s.insert([t.get("start"),t.get("end")],t);this.calculatedIntervalTreeMap[e]=s}return this.calculatedIntervalTreeMap[e]}]})));return{header:s.join("\n"),intervalTreeMap:f}}async loadData(t){return this.gffFeatures||(this.gffFeatures=this.loadDataP(t).catch((t=>{throw this.gffFeatures=void 0,t}))),this.gffFeatures}async getRefNames(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{intervalTreeMap:e}=await this.loadData(t);return Object.keys(e)}async getHeader(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{header:e}=await this.loadData(t);return e}getFeatures(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return l.r.ObservableCreate((async r=>{var i;try{const{start:s,end:n,refName:l}=t,{intervalTreeMap:a}=await this.loadData(e);for(const t of(null===(i=a[l])||void 0===i?void 0:i.call(a,e.statusCallback).search([s,n]))||[])r.next(t);r.complete()}catch(s){r.error(s)}}),e.stopToken)}}},2595:(t,e,r)=>{function i(t){return t.replaceAll(/%([0-9A-Fa-f]{2})/g,((t,e)=>String.fromCharCode(parseInt(e,16))))}function s(t){if(!t.length||"."===t)return{};const e={};return t.replace(/\r?\n$/,"").split(";").forEach((t=>{var r;const s=t.split("=",2);if(null===(r=s[1])||void 0===r||!r.length)return;s[0]=s[0].trim();let n=e[s[0].trim()];n||(n=[],e[s[0]]=n),n.push(...s[1].split(",").map((t=>t.trim())).map(i))})),e}function n(t){const e=t.split("\t").map((t=>"."===t||""===t?null:t));return{seq_id:e[0]&&i(e[0]),source:e[1]&&i(e[1]),type:e[2]&&i(e[2]),start:null===e[3]?null:parseInt(e[3],10),end:null===e[4]?null:parseInt(e[4],10),score:null===e[5]?null:parseFloat(e[5]),strand:e[6],phase:e[7],attributes:null===e[8]?null:s(e[8])}}r.d(e,{f:()=>c,p:()=>u});const l="child_features",a="derived_features";class o{constructor(t){this.seqCallback=t,this.currentSequence=void 0}addLine(t){const e=/^>\s*(\S+)\s*(.*)/.exec(t);e?(this._flush(),this.currentSequence={id:e[1],sequence:""},e[2]&&(this.currentSequence.description=e[2].trim())):this.currentSequence&&/\S/.test(t)&&(this.currentSequence.sequence+=t.replaceAll(/\s/g,""))}_flush(){this.currentSequence&&this.seqCallback(this.currentSequence)}finish(){this._flush()}}class h{constructor(t){this.fastaParser=void 0,this.eof=!1,this.lineNumber=0,this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},this._underConstructionOrphans={};const e=()=>{};this.featureCallback=t.featureCallback||e,this.endCallback=t.endCallback||e,this.commentCallback=t.commentCallback||e,this.errorCallback=t.errorCallback||e,this.directiveCallback=t.directiveCallback||e,this.sequenceCallback=t.sequenceCallback||e,this.disableDerivesFromReferences=t.disableDerivesFromReferences||!1,this.bufferSize=void 0===t.bufferSize?1e3:t.bufferSize}addLine(t){if(this.fastaParser)return void this.fastaParser.addLine(t);if(this.eof)return;if(this.lineNumber+=1,/^\s*[^#\s>]/.test(t))return void this._bufferLine(t);const e=/^\s*(#+)(.*)/.exec(t);if(e){const[,r]=e;let[,,i]=e;if(3===r.length)this._emitAllUnderConstructionFeatures();else if(2===r.length){const e=function(t){var e,r;const i=/^\s*##\s*(\S+)\s*(.*)/.exec(t);if(!i)return null;const[,s]=i;let[,,n]=i;const l={directive:s};if(n.length&&(n=n.replace(/\r?\n$/,""),l.value=n),"sequence-region"===s){const t=n.split(/\s+/,3);return{...l,seq_id:t[0],start:null===(e=t[1])||void 0===e?void 0:e.replaceAll(/\D/g,""),end:null===(r=t[2])||void 0===r?void 0:r.replaceAll(/\D/g,"")}}if("genome-build"===s){const[t,e]=n.split(/\s+/,2);return{...l,source:t,buildName:e}}return l}(t);e&&("FASTA"===e.directive?(this._emitAllUnderConstructionFeatures(),this.eof=!0,this.fastaParser=new o(this.sequenceCallback)):this._emitItem(e))}else i=i.replace(/\s*/,""),this._emitItem({comment:i})}else if(!/^\s*$/.test(t)){if(!/^\s*>/.test(t)){const e=t.replaceAll(/\r?\n?$/g,"");throw new Error(`GFF3 parse error. Cannot parse '${e}'.`)}this._emitAllUnderConstructionFeatures(),this.eof=!0,this.fastaParser=new o(this.sequenceCallback),this.fastaParser.addLine(t)}}finish(){this._emitAllUnderConstructionFeatures(),this.fastaParser&&this.fastaParser.finish(),this.endCallback()}_emitItem(t){Array.isArray(t)?this.featureCallback(t):"directive"in t?this.directiveCallback(t):"comment"in t&&this.commentCallback(t)}_enforceBufferSizeLimit(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const e=t=>{var r,i;t&&Array.isArray(t)&&null!==(i=null===(r=t[0].attributes)||void 0===r?void 0:r.ID)&&void 0!==i&&i[0]&&(t[0].attributes.ID.forEac
1h((t=>{delete this._underConstructionById[t],delete this._completedReferences[t]})),t.forEach((t=>{t.child_features&&t.child_features.forEach((t=>e(t))),t.derived_features&&t.derived_features.forEach((t=>e(t)))})))};for(;this._underConstructionTopLevel.length+t>this.bufferSize;){const t=this._underConstructionTopLevel.shift();t&&(this._emitItem(t),e(t))}}_emitAllUnderConstructionFeatures(){if(this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={},Array.from(Object.values(this._underConstructionOrphans)).length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${Object.keys(this._underConstructionOrphans).join(",")}`)}_bufferLine(t){var e,r,i;const s={...n(t),child_features:[],derived_features:[]},l=(null===(e=s.attributes)||void 0===e?void 0:e.ID)||[],a=(null===(r=s.attributes)||void 0===r?void 0:r.Parent)||[],o=this.disableDerivesFromReferences?[]:(null===(i=s.attributes)||void 0===i?void 0:i.Derives_from)||[];if(!l.length&&!a.length&&!o.length)return void this._emitItem([s]);let h;l.forEach((t=>{const e=this._underConstructionById[t];e?(e[e.length-1].type!==s.type&&this._parseError(`multi-line feature "${t}" has inconsistent types: "${s.type}", "${e[e.length-1].type}"`),e.push(s),h=e):(h=[s],this._enforceBufferSizeLimit(1),!a.length&&!o.length&&this._underConstructionTopLevel.push(h),this._underConstructionById[t]=h,this._resolveReferencesTo(h,t))})),this._resolveReferencesFrom(h||[s],{Parent:a,Derives_from:o},l)}_resolveReferencesTo(t,e){const r=this._underConstructionOrphans[e];r&&(t.forEach((t=>{t.child_features.push(...r.Parent)})),t.forEach((t=>{t.derived_features.push(...r.Derives_from)})),delete this._underConstructionOrphans[e])}_parseError(t){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${t}`)}_resolveReferencesFrom(t,e,r){function i(t,e,r){let i=t[e];i||(i={},t[e]=i);const s=i[r]||!1;return i[r]=!0,s}e.Parent.forEach((e=>{const s=this._underConstructionById[e];if(s){const n=l;r.filter((t=>i(this._completedReferences,t,`Parent,${e}`))).length||s.forEach((e=>{e[n].push(t)}))}else{let r=this._underConstructionOrphans[e];r||(r={Parent:[],Derives_from:[]},this._underConstructionOrphans[e]=r),r.Parent.push(t)}})),e.Derives_from.forEach((e=>{const s=this._underConstructionById[e];if(s){const n=a;r.filter((t=>i(this._completedReferences,t,`Derives_from,${e}`))).length||s.forEach((e=>{e[n].push(t)}))}else{let r=this._underConstructionOrphans[e];r||(r={Parent:[],Derives_from:[]},this._underConstructionOrphans[e]=r),r.Derives_from.push(t)}}))}}function u(t){const e=[],r=new h({featureCallback:t=>e.push(t),disableDerivesFromReferences:!0,errorCallback:t=>{throw t}});for(const i of t.split(/\r?\n/))r.addLine(i);return r.finish(),e}function c(t){const{end:e,start:r,child_features:i,derived_features:s,attributes:n,type:l,source:a,phase:o,seq_id:h,score:u,strand:f}=t;let _;"+"===f?_=1:"-"===f?_=-1:"."===f&&(_=0);const d=new Set(["start","end","seq_id","score","type","source","phase","strand"]),p=n||{},m={};for(const c of Object.keys(p)){let t=c.toLowerCase();if(d.has(t)&&(t+="2"),p[c]&&"_lineHash"!==c){let e=p[c];Array.isArray(e)&&1===e.length&&([e]=e),m[t]=e}}return{...m,start:r-1,end:e,strand:_,type:l,source:a,refName:h,derived_features:s,phase:null===o?void 0:Number(o),score:null===u?void 0:u,subfeatures:i.flatMap((t=>t.map((t=>c(t)))))}}},1599:(t,e,r)=>{r.d(e,{B:()=>i});var i=(0,r(9062).$)()},1016:(t,e,r)=>{r.d(e,{I:()=>n});const i=class t{constructor(t,e){this.low=t,this.high=e}clone(){return new t(this.low,this.high)}get max(){return this.clone()}less_than(t){return this.low<t.low||this.low===t.low&&this.high<t.high}equal_to(t){return this.low===t.low&&this.high===t.high}intersect(t){return!this.not_intersect(t)}not_intersect(t){return this.high<t.low||t.high<this.low}merge(e){return new t(void 0===this.low?e.low:this.low<e.low?this.low:e.low,void 0===this.high?e.high:this.high>e.high?this.high:e.high)}output(){return[this.low,this.high]}static comparable_max(t,e){return t.merge(e)}static comparable_less_than(t,e){return t<e}};class s{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;if(this.left=r,this.right=s,this.parent=n,this.color=l,this.item={key:t,value:e},t&&t instanceof Array&&2===t.length&&!Number.isNaN(t[0])&&!Number.isNaN(t[1])){let[e,r]=t;e>r&&([e,r]=[r,e]),this.item.key=new i(e,r)}this.max=this.item.key?this.item.key.max:void 0}isNil(){return void 0===this.item.key&&void 0===this.item.value&&null===this.left&&null===this.right&&1===this.color}_value_less_than(t){return this.item.value&&t.item.value&&this.item.value.less_than?this.item.value.less_than(t.item.value):this.item.value<t.item.value}less_than(t){return this.item.value===this.item.key&&t.item.value===t.item.key?this.item.key.less_than(t.item.key):this.item.key.less_than(t.item.key)||this.item.key.equal_to(t.item.key)&&this._value_less_than(t)}_value_equal(t){return this.item.value&&t.item.value&&this.item.value.equal_to?this.item.value.equal_to(t.item.value):this.item.value===t.item.value}equal_to(t){return this.item.value===this.item.key&&t.item.value===t.item.key?this.item.key.equal_to(t.item.key):this.item.key.equal_to(t.item.key)&&this._value_equal(t)}intersect(t){return this.item.key.intersect(t.item.key)}
1copy_data(t){this.item.key=t.item.key,this.item.value=t.item.value}update_max(){if(this.max=this.item.key?this.item.key.max:void 0,this.right&&this.right.max){const t=this.item.key.constructor.comparable_max;this.max=t(this.max,this.right.max)}if(this.left&&this.left.max){const t=this.item.key.constructor.comparable_max;this.max=t(this.max,this.left.max)}}not_intersect_left_subtree(t){return(0,this.item.key.constructor.comparable_less_than)(void 0!==this.left.max.high?this.left.max.high:this.left.max,t.item.key.low)}not_intersect_right_subtree(t){const e=this.item.key.constructor.comparable_less_than;let r=void 0!==this.right.max.low?this.right.max.low:this.right.item.key.low;return e(t.item.key.high,r)}}class n{constructor(){this.root=null,this.nil_node=new s}get size(){let t=0;return this.tree_walk(this.root,(()=>t++)),t}get keys(){let t=[];return this.tree_walk(this.root,(e=>t.push(e.item.key.output?e.item.key.output():e.item.key))),t}get values(){let t=[];return this.tree_walk(this.root,(e=>t.push(e.item.value))),t}get items(){let t=[];return this.tree_walk(this.root,(e=>t.push({key:e.item.key.output?e.item.key.output():e.item.key,value:e.item.value}))),t}isEmpty(){return null==this.root||this.root===this.nil_node}clear(){this.root=null}insert(t){if(void 0===t)return;let e=new s(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,this.nil_node,this.nil_node,null,0);return this.tree_insert(e),this.recalc_max(e),e}exist(t){let e=new s(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:t);return!!this.tree_search(this.root,e)}remove(t){let e=new s(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:t),r=this.tree_search(this.root,e);return r&&this.tree_delete(r),r}search(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(t,e)=>t===e?e.output():t,r=new s(t),i=[];return this.tree_search_interval(this.root,r,i),i.map((t=>e(t.item.value,t.item.key)))}intersect_any(t){let e=new s(t);return this.tree_find_any_interval(this.root,e)}forEach(t){this.tree_walk(this.root,(e=>t(e.item.key,e.item.value)))}map(t){const e=new n;return this.tree_walk(this.root,(r=>e.insert(r.item.key,t(r.item.value,r.item.key)))),e}iterate(t){var e=this;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(t,e)=>t===e?e.output():t;return function*(){let i;for(t?i=e.tree_search_nearest_forward(e.root,new s(t)):e.root&&(i=e.local_minimum(e.root));i;)yield r(i.item.value,i.item.key),i=e.tree_successor(i)}()}recalc_max(t){let e=t;for(;null!=e.parent;)e.parent.update_max(),e=e.parent}tree_insert(t){let e=this.root,r=null;if(null==this.root||this.root===this.nil_node)this.root=t;else{for(;e!==this.nil_node;)r=e,e=t.less_than(e)?e.left:e.right;t.parent=r,t.less_than(r)?r.left=t:r.right=t}this.insert_fixup(t)}insert_fixup(t){let e,r;for(e=t;e!==this.root&&0===e.parent.color;)e.parent===e.parent.parent.left?(r=e.parent.parent.right,0===r.color?(e.parent.color=1,r.color=1,e.parent.parent.color=0,e=e.parent.parent):(e===e.parent.right&&(e=e.parent,this.rotate_left(e)),e.parent.color=1,e.parent.parent.color=0,this.rotate_right(e.parent.parent))):(r=e.parent.parent.left,0===r.color?(e.parent.color=1,r.color=1,e.parent.parent.color=0,e=e.parent.parent):(e===e.parent.left&&(e=e.parent,this.rotate_right(e)),e.parent.color=1,e.parent.parent.color=0,this.rotate_left(e.parent.parent)));this.root.color=1}tree_delete(t){let e,r;e=t.left===this.nil_node||t.right===this.nil_node?t:this.tree_successor(t),r=e.left!==this.nil_node?e.left:e.right,r.parent=e.parent,e===this.root?this.root=r:(e===e.parent.left?e.parent.left=r:e.parent.right=r,e.parent.update_max()),this.recalc_max(r),e!==t&&(t.copy_data(e),t.update_max(),this.recalc_max(t)),1===e.color&&this.delete_fixup(r)}delete_fixup(t){let e,r=t;for(;r!==this.root&&null!=r.parent&&1===r.color;)r===r.parent.left?(e=r.parent.right,0===e.color&&(e.color=1,r.parent.color=0,this.rotate_left(r.parent),e=r.parent.right),1===e.left.color&&1===e.right.color?(e.color=0,r=r.parent):(1===e.right.color&&(e.color=0,e.left.color=1,this.rotate_right(e),e=r.parent.right),e.color=r.parent.color,r.parent.color=1,e.right.color=1,this.rotate_left(r.parent),r=this.root)):(e=r.parent.left,0===e.color&&(e.color=1,r.parent.color=0,this.rotate_right(r.parent),e=r.parent.left),1===e.left.color&&1===e.right.color?(e.color=0,r=r.parent):(1===e.left.color&&(e.color=0,e.right.color=1,this.rotate_left(e),e=r.parent.left),e.color=r.parent.color,r.parent.color=1,e.left.color=1,this.rotate_right(r.parent),r=this.root));r.color=1}tree_search(t,e){if(null!=t&&t!==this.nil_node)return e.equal_to(t)?t:e.less_than(t)?this.tree_search(t.left,e):this.tree_search(t.right,e)}tree_search_nearest_forward(t,e){let r,i=t;
1for(;i&&i!==this.nil_node;)i.less_than(e)?i.intersect(e)?(r=i,i=i.left):i=i.right:((!r||i.less_than(r))&&(r=i),i=i.left);return r||null}tree_search_interval(t,e,r){null!=t&&t!==this.nil_node&&(t.left!==this.nil_node&&!t.not_intersect_left_subtree(e)&&this.tree_search_interval(t.left,e,r),t.intersect(e)&&r.push(t),t.right!==this.nil_node&&!t.not_intersect_right_subtree(e)&&this.tree_search_interval(t.right,e,r))}tree_find_any_interval(t,e){let r=!1;return null!=t&&t!==this.nil_node&&(t.left!==this.nil_node&&!t.not_intersect_left_subtree(e)&&(r=this.tree_find_any_interval(t.left,e)),r||(r=t.intersect(e)),!r&&t.right!==this.nil_node&&!t.not_intersect_right_subtree(e)&&(r=this.tree_find_any_interval(t.right,e))),r}local_minimum(t){let e=t;for(;null!=e.left&&e.left!==this.nil_node;)e=e.left;return e}local_maximum(t){let e=t;for(;null!=e.right&&e.right!==this.nil_node;)e=e.right;return e}tree_successor(t){let e,r,i;if(t.right!==this.nil_node)e=this.local_minimum(t.right);else{for(r=t,i=t.parent;null!=i&&i.right===r;)r=i,i=i.parent;e=i}return e}rotate_left(t){let e=t.right;t.right=e.left,e.left!==this.nil_node&&(e.left.parent=t),e.parent=t.parent,t===this.root?this.root=e:t===t.parent.left?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e,null!=t&&t!==this.nil_node&&t.update_max(),e=t.parent,null!=e&&e!==this.nil_node&&e.update_max()}rotate_right(t){let e=t.left;t.left=e.right,e.right!==this.nil_node&&(e.right.parent=t),e.parent=t.parent,t===this.root?this.root=e:t===t.parent.left?t.parent.left=e:t.parent.right=e,e.right=t,t.parent=e,null!==t&&t!==this.nil_node&&t.update_max(),e=t.parent,null!=e&&e!==this.nil_node&&e.update_max()}tree_walk(t,e){null!=t&&t!==this.nil_node&&(this.tree_walk(t.left,e),e(t),this.tree_walk(t.right,e))}testRedBlackProperty(){let t=!0;return this.tree_walk(this.root,(function(e){0===e.color&&(1===e.left.color&&1===e.right.color||(t=!1))})),t}testBlackHeightProperty(t){let e=0,r=0,i=0;if(1===t.color&&e++,r=t.left!==this.nil_node?this.testBlackHeightProperty(t.left):1,i=t.right!==this.nil_node?this.testBlackHeightProperty(t.right):1,r!==i)throw new Error("Red-black height property violated");return e+=r,e}}},2779:(t,e,r)=>{r.d(e,{r:()=>i});var i=(0,r(9062).a0)()},8311:(t,e,r)=>{r.d(e,{S:()=>n});var i=r(5817),s=(0,r(9062).a1)();const n=(0,i.g)(s)}}]); 2//# sourceMappingURL=6591.0b352233.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.