jbrowse-plugin-graphgenomeviewer 8.3.4 → 8.3.6
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/README.md +2 -2
- package/dist/chunks/{GbzBaseSyntenyAdapter-GX3NGJHG.js → GbzBaseSyntenyAdapter-BG6FNGHY.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-XYAUUM35.js → MinigraphBubbleAdapter-P66QLENP.js} +2 -2
- package/dist/chunks/{RgfaTabixAdapter-SBIUUIRI.js → RgfaTabixAdapter-CQJROUIP.js} +2 -2
- package/dist/chunks/{WalkFormsAdapter-ANELMZU4.js → WalkFormsAdapter-YSYANJD5.js} +2 -2
- package/dist/chunks/WalkTabixSyntenyAdapter-7COETKFB.js +2 -0
- package/dist/chunks/WalkTabixSyntenyAdapter-7COETKFB.js.map +7 -0
- package/dist/chunks/chunk-DAF7EWRF.js +3 -0
- package/dist/chunks/{chunk-EENENDGZ.js.map → chunk-DAF7EWRF.js.map} +4 -4
- package/dist/chunks/{chunk-WANYNRGU.js → chunk-HLWIFWDZ.js} +3 -3
- package/dist/chunks/{chunk-WANYNRGU.js.map → chunk-HLWIFWDZ.js.map} +2 -2
- package/dist/chunks/{chunk-OXU7F4BR.js → chunk-KVZIGTH3.js} +2 -2
- package/dist/chunks/{chunk-OHQ3WIPI.js → chunk-RCJQCBBI.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +1 -1
- package/package.json +2 -2
- package/src/RgfaTabixAdapter/test_data/walks5_skipfollow.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks5_skipfollow.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks5_skipinv.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks5_skipinv.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +154 -0
- package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts +148 -28
- package/src/WalkTabixSyntenyAdapter/walkLanes.ts +111 -1
- package/src/readinessConformance.test.ts +66 -0
- package/src/synteny/clipFeatureToRegion.ts +3 -2
- package/src/version.ts +1 -1
- package/dist/chunks/WalkTabixSyntenyAdapter-I3MGWUQ5.js +0 -2
- package/dist/chunks/WalkTabixSyntenyAdapter-I3MGWUQ5.js.map +0 -7
- package/dist/chunks/chunk-EENENDGZ.js +0 -3
- /package/dist/chunks/{GbzBaseSyntenyAdapter-GX3NGJHG.js.map → GbzBaseSyntenyAdapter-BG6FNGHY.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-XYAUUM35.js.map → MinigraphBubbleAdapter-P66QLENP.js.map} +0 -0
- /package/dist/chunks/{RgfaTabixAdapter-SBIUUIRI.js.map → RgfaTabixAdapter-CQJROUIP.js.map} +0 -0
- /package/dist/chunks/{WalkFormsAdapter-ANELMZU4.js.map → WalkFormsAdapter-YSYANJD5.js.map} +0 -0
- /package/dist/chunks/{chunk-OXU7F4BR.js.map → chunk-KVZIGTH3.js.map} +0 -0
- /package/dist/chunks/{chunk-OHQ3WIPI.js.map → chunk-RCJQCBBI.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/WalkTabixSyntenyAdapter/walkLanes.ts", "../../src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts"],
|
|
4
|
-
"sourcesContent": ["import { weightedLcs } from '@gmod/gbz-base/lcs'\nimport { pairAlignments, pairCigar } from '@gmod/gbz-base/pairAlignment'\nimport { panSNContig } from '@jbrowse/bandage-core/pansn'\n\nimport { matchFeature } from '../synteny/matchFeature.ts'\n\nimport type { PairChain, PairEdit } from '@gmod/gbz-base/pairAlignment'\nimport type { WalkFragment, WalkNode } from '@jbrowse/graph-walks'\n\n// The longest bubble with equal bases on both sides that is written as\n// mismatches; a longer one stays an insertion and a deletion\nconst BALANCED_BUBBLE_MAX_BP = 50\n\n/**\n * A chain's edits with each short balanced bubble as `X`. The walks carry no\n * bases, so two walks differ wherever they leave a shared node, and a SNP is\n * one base inserted and one deleted until it is read as the mismatch it is.\n */\nexport function bubblesAsMismatches(edits: PairEdit[]) {\n const out: PairEdit[] = []\n for (let i = 0; i < edits.length; i++) {\n const [op, len] = edits[i]!\n const [nextOp, nextLen] = edits[i + 1] ?? []\n if (\n len === nextLen &&\n len <= BALANCED_BUBBLE_MAX_BP &&\n ((op === 'I' && nextOp === 'D') || (op === 'D' && nextOp === 'I'))\n ) {\n out.push(['X', len])\n i++\n } else {\n out.push([op, len])\n }\n }\n return out\n}\n\n// A walk's steps as the handles gbz-base reads, 2 * id + reversed\nfunction handlesOf(fragment: WalkFragment) {\n return Array.from(fragment.ids, (id, i) => 2 * id + fragment.rev[i]!)\n}\n\nfunction nodeLength(nodes: Map<number, WalkNode>, id: number) {\n const node = nodes.get(id)\n return node === undefined ? 0 : node.end - node.start\n}\n\n/**\n * Aligns one walk fragment to another on the nodes both visit, from node\n * lengths alone: the fragments' steps as the handles gbz-base's chainer reads,\n * and a stand-in sequence of each node's length.\n */\nexport function walkAligner(nodes: Map<number, WalkNode>) {\n const standIn = new Map<number, string>()\n const sequenceOf = (id: number) => {\n const length = nodeLength(nodes, id)\n let sequence = standIn.get(length)\n if (sequence === undefined) {\n sequence = 'N'.repeat(length)\n standIn.set(length, sequence)\n }\n return sequence\n }\n const handles = new Map<WalkFragment, number[]>()\n const cachedHandles = (fragment: WalkFragment) => {\n let steps = handles.get(fragment)\n if (steps === undefined) {\n steps = handlesOf(fragment)\n handles.set(fragment, steps)\n }\n return steps\n }\n return (query: WalkFragment, target: WalkFragment) =>\n pairAlignments({\n query: cachedHandles(query),\n target: cachedHandles(target),\n sequenceOf,\n bases: false,\n })\n}\n\n// The fewest bases on shared nodes a record against the reference keeps,\n// gbz-base's floor for a pair record\nconst MIN_MATCH_BP = 100\n\nfunction appendEdit(edits: PairEdit[], op: PairEdit[0], len: number) {\n const last = edits.at(-1)\n if (len > 0) {\n if (last?.[0] === op) {\n last[1] += len\n } else {\n edits.push([op, len])\n }\n }\n}\n\n/**\n * Aligns a haplotype's walk fragment to the reference's as gbz-base aligns a\n * walk to its reference path: the heaviest common subsequence of their steps,\n * each node weighing its length, read in whichever direction shares more. A\n * pair chain leaves out every node either walk passes twice, which is the\n * whole of a collapsed copy-number array (amylase, KIV-2); the subsequence\n * matches one pass over it, and the other copies are insertions.\n */\nexport function referenceAligner(nodes: Map<number, WalkNode>) {\n const lengthOf = (handle: number) => nodeLength(nodes, handle >> 1)\n const offsets = (handles: number[]) => {\n const out = new Float64Array(handles.length + 1)\n handles.forEach((handle, i) => {\n out[i + 1] = out[i]! + lengthOf(handle)\n })\n return out\n }\n\n return (query: WalkFragment, target: WalkFragment): PairChain[] => {\n const ref = handlesOf(target)\n const hap = handlesOf(query)\n const [same, sameWeight] = weightedLcs(hap, ref, lengthOf)\n const [turned, turnedWeight] = weightedLcs(\n hap.map(handle => handle ^ 1).reverse(),\n ref,\n lengthOf,\n )\n const reverse = turnedWeight > sameWeight\n const pairs = reverse ? turned : same\n const sharedBases = Math.max(sameWeight, turnedWeight)\n if (sharedBases < MIN_MATCH_BP) {\n return []\n }\n const refAt = offsets(ref)\n const hapAt = offsets(hap)\n // a pair's haplotype step, counted along the haplotype\n const stepOf = (k: number) =>\n reverse ? hap.length - 1 - pairs[k]![0] : pairs[k]![0]\n const edits: PairEdit[] = []\n pairs.forEach(([, r], k) => {\n if (k > 0) {\n const [lo, hi] = [stepOf(k - 1), stepOf(k)].sort((x, y) => x - y)\n appendEdit(edits, 'I', hapAt[hi!]! - hapAt[lo! + 1]!)\n appendEdit(edits, 'D', refAt[r]! - refAt[pairs[k - 1]![1] + 1]!)\n }\n appendEdit(edits, '=', lengthOf(ref[r]!))\n })\n const [lo, hi] = [stepOf(0), stepOf(pairs.length - 1)].sort((x, y) => x - y)\n return [\n {\n queryStart: hapAt[lo!]!,\n queryEnd: hapAt[hi! + 1]!,\n targetStart: refAt[pairs[0]![1]]!,\n targetEnd: refAt[pairs.at(-1)![1] + 1]!,\n strand: reverse ? '-' : '+',\n edits,\n sharedBases,\n },\n ]\n }\n}\n\n// Each node a walk visits once, with the direction it passes it\nfunction singleVisits(fragment: WalkFragment) {\n const rev = new Map<number, number>()\n const twice = new Set<number>()\n fragment.ids.forEach((id, i) => {\n if (rev.has(id)) {\n twice.add(id)\n } else {\n rev.set(id, fragment.rev[i]!)\n }\n })\n for (const id of twice) {\n rev.delete(id)\n }\n return rev\n}\n\n// The bases on singly visited nodes two walks pass the same way and the\n// opposite way\nfunction directionShares(nodes: Map<number, WalkNode>) {\n const visits = new Map<WalkFragment, Map<number, number>>()\n const visitsOf = (fragment: WalkFragment) => {\n let found = visits.get(fragment)\n if (found === undefined) {\n found = singleVisits(fragment)\n visits.set(fragment, found)\n }\n return found\n }\n return (query: WalkFragment, target: WalkFragment) => {\n const theirs = visitsOf(target)\n let same = 0\n let opposite = 0\n for (const [id, rev] of visitsOf(query)) {\n const other = theirs.get(id)\n if (other === rev) {\n same += nodeLength(nodes, id)\n } else if (other !== undefined) {\n opposite += nodeLength(nodes, id)\n }\n }\n return { same, opposite }\n }\n}\n\n/**\n * Aligns one lane's walk fragment to another's. The weighted subsequence\n * (`referenceAligner`) is the fast route and matches through copy-number\n * arrays, but it reads one direction per pair, so an inversion between the\n * lanes comes out as an insertion beside a deletion. A pair sharing 100 bp\n * (MIN_MATCH_BP) or more of singly visited nodes in each direction goes to\n * pair chaining (`walkAligner`) instead, which answers the inverted stretch as\n * a reverse-strand record of its own. Chaining leaves out every node a walk\n * passes twice, so counting singly visited nodes misses no inversion it could\n * draw.\n */\nexport function lanePairAligner(nodes: Map<number, WalkNode>) {\n const subsequence = referenceAligner(nodes)\n const chained = walkAligner(nodes)\n const shares = directionShares(nodes)\n return (query: WalkFragment, target: WalkFragment) => {\n const { same, opposite } = shares(query, target)\n return same >= MIN_MATCH_BP && opposite >= MIN_MATCH_BP\n ? chained(query, target)\n : subsequence(query, target)\n }\n}\n\n// The multi-way display's SPLIT_AT_GAP_BP, under which a turned stretch names\n// no inversion there\nconst TURNED_MIN_BP = 10_000\n\n/**\n * Aligns a haplotype's walk fragment to the reference's as `referenceAligner`\n * does, then adds the stretches it reads the other way. A walk sharing\n * TURNED_MIN_BP or more of singly visited nodes in each direction is chained\n * too, and the chained records on the strand the subsequence did not take are\n * its turned stretches. The subsequence record stays, so a copy-number array,\n * which chaining leaves out, still matches one pass alike in every lane.\n */\nexport function anchorAligner(nodes: Map<number, WalkNode>) {\n const subsequence = referenceAligner(nodes)\n const chained = walkAligner(nodes)\n const shares = directionShares(nodes)\n return (query: WalkFragment, target: WalkFragment) => {\n const records = subsequence(query, target)\n const taken = records[0]?.strand\n const { same, opposite } = shares(query, target)\n return taken === undefined || Math.min(same, opposite) < TURNED_MIN_BP\n ? records\n : [\n ...records,\n ...chained(query, target).filter(chain => chain.strand !== taken),\n ]\n }\n}\n\n/**\n * One record of a walk aligned to another, with its short balanced bubbles as\n * mismatches\n */\nexport function chainFeature({\n chain,\n target,\n query,\n assemblyName,\n refName,\n mateAssemblyName,\n}: {\n chain: PairChain\n target: WalkFragment\n query: WalkFragment\n assemblyName: string\n refName: string\n mateAssemblyName: string\n}) {\n const edits = bubblesAsMismatches(chain.edits)\n return matchFeature({\n target: {\n name: target.name,\n assemblyName,\n refName,\n start: target.hapStart + chain.targetStart,\n end: target.hapStart + chain.targetEnd,\n },\n query: {\n name: query.name,\n assemblyName: mateAssemblyName,\n refName: panSNContig(query.name),\n start: query.hapStart + chain.queryStart,\n end: query.hapStart + chain.queryEnd,\n },\n strand: chain.strand,\n cigar: pairCigar(edits),\n matches: edits.reduce((sum, [op, n]) => sum + (op === '=' ? n : 0), 0),\n columns: edits.reduce((sum, [, n]) => sum + n, 0),\n })\n}\n", "import {\n assemblyByPanSNPrefix,\n panSNContig,\n panSNHaplotype,\n panSNMatchesPrefix,\n panSNSample,\n resolvePanSNPrefix,\n} from '@jbrowse/bandage-core/pansn'\nimport { updateStatus } from '@jbrowse/core/util'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { walksKept } from '@jbrowse/graph-walks'\n\nimport { anchorAligner, chainFeature, lanePairAligner } from './walkLanes.ts'\nimport { WalkIndex } from '../RgfaTabixAdapter/walkReader.ts'\nimport { PanSNRefNames, openTabixSlot } from '../panSNTabix.ts'\nimport { ComparativeAdapterBase } from '../synteny/ComparativeAdapterBase.ts'\nimport {\n laneAssemblyName,\n lanePairsStatus,\n requestedPairs,\n} from '../synteny/lanePairs.ts'\nimport { laneZoomNotice } from '../synteny/laneZoomNotice.ts'\n\nimport type { WalkTabixSyntenyAdapterConfig } from './configSchema.ts'\nimport type { SubgraphAdapterOptions } from '../GetSubgraph.ts'\nimport type { LaneFeatureOptions, LanePair } from '../synteny/lanePairs.ts'\nimport type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport type { Feature } from '@jbrowse/core/util'\nimport type { Region } from '@jbrowse/core/util/types'\nimport type { WalkFragment } from '@jbrowse/graph-walks'\n\nconst haplotypeOf = (fragment: WalkFragment) =>\n panSNHaplotype(fragment.name) ?? fragment.name\n\nexport default class WalkTabixSyntenyAdapter extends ComparativeAdapterBase<WalkTabixSyntenyAdapterConfig> {\n private readonly walks: WalkIndex = new WalkIndex(\n openTabixSlot(this, ['walksLocation'], ['walksIndex']),\n this,\n )\n private readonly refNames: PanSNRefNames = new PanSNRefNames(\n this.walks.file,\n this,\n )\n\n private get anchor() {\n const anchor = this.getConf('assemblyNames')[0]\n if (anchor === undefined) {\n throw new Error(\n 'WalkTabixSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as',\n )\n }\n return anchor\n }\n\n /**\n * The haplotypes the walk file's header names, `sample#haplotype` in byte\n * order, or undefined when it names none\n */\n async getHaplotypeNames(opts: BaseOptions = {}) {\n return this.walks.haplotypeNames(opts)\n }\n\n /**\n * `lanes` is every haplotype the header names but the anchor's own,\n * declared up front so the display can offer the whole graph's haplotypes\n * before a fetch has placed any of them\n */\n async getHeader(opts: BaseOptions = {}) {\n const { haplotypes } = await this.walks.reader.header(opts)\n const { anchor } = this\n const anchorPrefix = resolvePanSNPrefix(this, anchor)\n const asmByPrefix = assemblyByPanSNPrefix(this)\n return {\n hasCoarseTier: false,\n anchorAssemblyName: anchor,\n lanes: haplotypes\n .filter(\n prefix =>\n prefix !== anchorPrefix && panSNSample(prefix) !== anchorPrefix,\n )\n .map(prefix => ({\n name: laneAssemblyName(asmByPrefix, prefix),\n label: prefix,\n group: panSNSample(prefix),\n })),\n }\n }\n\n // A lane's contigs are named only in its walk rows, so only the anchor's\n // are listed\n async getRefNames(opts: BaseOptions = {}) {\n const { assemblyName } = opts\n return assemblyName === undefined || assemblyName === this.anchor\n ? this.refNames.assemblyRefNames({ ...opts, assemblyName: this.anchor })\n : []\n }\n\n /**\n * The graph display's cut of the window, as RgfaTabixAdapter cuts a\n * walk-indexed graph: the reference walk first, then the walks `haplotypes`\n * asks for, and the nodes and links they visit\n */\n async getSubgraph(region: Region, opts: SubgraphAdapterOptions = {}) {\n const refName = await this.refNames.resolveForCut(region, {\n signal: opts.signal,\n })\n return this.walks.subgraph(refName, region, opts)\n }\n\n // The window's walks for the haplotypes named and the reference, with no\n // link read; a window past a budget fails as a zoom-in notice for lanes.\n // Named lanes come back in full where format 5 abridged them: an abridged\n // walk is two reference steps, which drew 15 of the HPRC MHC launch's 32\n // lanes empty.\n private async laneWalks(\n refName: string,\n region: Region,\n prefixes: string[] | undefined,\n opts: LaneFeatureOptions,\n status: string,\n ) {\n const keep = walksKept(prefixes, refName)\n return updateStatus(status, opts.statusCallback, () =>\n this.walks.reader\n .cut(refName, region, {\n ...this.walks.budgets(),\n signal: opts.signal,\n keep,\n expand: keep,\n links: false,\n })\n .catch((error: unknown) => {\n throw laneZoomNotice(error, region.end - region.start)\n }),\n )\n }\n\n /**\n * One record per stretch a haplotype's walk shares with the reference's,\n * on the reference with the haplotype as its mate\n */\n private async anchorFeatures(\n refName: string,\n region: Region,\n opts: LaneFeatureOptions,\n ) {\n const wanted = opts.haplotypes?.length\n ? opts.haplotypes.map(lane => resolvePanSNPrefix(this, lane))\n : undefined\n const target = resolvePanSNPrefix(this, opts.targetAssemblyName)\n const prefixes =\n target === undefined\n ? wanted\n : wanted === undefined ||\n wanted.some(\n prefix =>\n panSNMatchesPrefix(target, prefix) ||\n panSNMatchesPrefix(prefix, target),\n )\n ? [target]\n : []\n if (prefixes?.length === 0) {\n return []\n }\n const { start, end } = region\n const { graph, fragments } = await this.laneWalks(\n refName,\n region,\n prefixes,\n opts,\n `Reading walks ${region.refName}:${start.toLocaleString()}-${end.toLocaleString()}`,\n )\n const align = anchorAligner(graph.nodes)\n const asmByPrefix = assemblyByPanSNPrefix(this)\n const references = fragments.filter(f => f.name === refName)\n // lanes come back in the order the fetch names them, which is the order\n // the display stacks lanes of equal weight in\n const rank = (fragment: WalkFragment) =>\n prefixes === undefined\n ? 0\n : prefixes.findIndex(prefix =>\n panSNMatchesPrefix(fragment.name, prefix),\n )\n const shown = fragments\n .filter(fragment => fragment.name !== refName && rank(fragment) >= 0)\n .sort((a, b) => rank(a) - rank(b))\n return shown.flatMap(query =>\n references.flatMap(reference =>\n align(query, reference).map(chain =>\n chainFeature({\n chain,\n target: reference,\n query,\n assemblyName: region.assemblyName,\n refName: region.refName,\n mateAssemblyName: laneAssemblyName(asmByPrefix, haplotypeOf(query)),\n }),\n ),\n ),\n )\n }\n\n /**\n * Each pair's two lanes read out of the anchor window, all pairs in one\n * read, and each walk of a pair's query lane aligned to each walk of its\n * target lane. A pair's records sit on its query lane's contigs, the lane\n * the display draws on top.\n */\n private async pairFeatures(\n refName: string,\n region: Region,\n pairs: LanePair[],\n opts: LaneFeatureOptions,\n ) {\n const sides = pairs.map(pair => ({\n pair,\n featurePrefix: resolvePanSNPrefix(this, pair.queryAssemblyName),\n matePrefix: resolvePanSNPrefix(this, pair.targetAssemblyName),\n }))\n const { graph, fragments } = await this.laneWalks(\n refName,\n region,\n sides.flatMap(side => [side.featurePrefix, side.matePrefix]),\n opts,\n lanePairsStatus(pairs),\n )\n const align = lanePairAligner(graph.nodes)\n const walksOf = (prefix: string) =>\n fragments.filter(f => panSNMatchesPrefix(f.name, prefix))\n return sides.flatMap(({ pair, featurePrefix, matePrefix }) =>\n walksOf(featurePrefix).flatMap(target =>\n walksOf(matePrefix).flatMap(query =>\n align(query, target).map(chain =>\n chainFeature({\n chain,\n target,\n query,\n assemblyName: pair.queryAssemblyName,\n refName: panSNContig(target.name),\n mateAssemblyName: pair.targetAssemblyName,\n }),\n ),\n ),\n ),\n )\n }\n\n // The files are filed under the reference alone, so a window on a\n // haplotype lane has no answer: a lane pair is read inside the anchor's\n getFeatures(region: Region, opts: LaneFeatureOptions = {}) {\n return ObservableCreate<Feature>(async observer => {\n const refName =\n region.assemblyName === this.anchor\n ? await this.refNames.resolve(region, opts)\n : undefined\n if (refName !== undefined) {\n const pairs = requestedPairs(opts)\n const features =\n pairs.length > 0\n ? await this.pairFeatures(refName, region, pairs, opts)\n : await this.anchorFeatures(refName, region, opts)\n for (const feature of features) {\n observer.next(feature)\n }\n }\n observer.complete()\n }, opts.signal)\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["BALANCED_BUBBLE_MAX_BP", "bubblesAsMismatches", "edits", "out", "i", "op", "len", "nextOp", "nextLen", "handlesOf", "fragment", "id", "nodeLength", "nodes", "node", "walkAligner", "standIn", "sequenceOf", "length", "sequence", "handles", "cachedHandles", "steps", "query", "target", "pairAlignments", "MIN_MATCH_BP", "appendEdit", "last", "referenceAligner", "lengthOf", "handle", "offsets", "ref", "hap", "same", "sameWeight", "weightedLcs", "turned", "turnedWeight", "reverse", "pairs", "sharedBases", "refAt", "hapAt", "stepOf", "k", "r", "lo", "hi", "x", "y", "singleVisits", "rev", "twice", "directionShares", "visits", "visitsOf", "found", "theirs", "opposite", "other", "lanePairAligner", "subsequence", "chained", "shares", "TURNED_MIN_BP", "anchorAligner", "records", "taken", "chain", "chainFeature", "assemblyName", "refName", "mateAssemblyName", "matchFeature", "panSNContig", "pairCigar", "sum", "n", "haplotypeOf", "fragment", "panSNHaplotype", "WalkTabixSyntenyAdapter", "ComparativeAdapterBase", "WalkIndex", "openTabixSlot", "PanSNRefNames", "anchor", "opts", "haplotypes", "anchorPrefix", "resolvePanSNPrefix", "asmByPrefix", "assemblyByPanSNPrefix", "prefix", "panSNSample", "laneAssemblyName", "assemblyName", "region", "refName", "prefixes", "status", "keep", "walksKept", "updateStatus", "error", "laneZoomNotice", "wanted", "lane", "target", "panSNMatchesPrefix", "start", "end", "graph", "fragments", "align", "anchorAligner", "references", "f", "rank", "a", "query", "reference", "chain", "chainFeature", "pairs", "sides", "pair", "side", "lanePairsStatus", "lanePairAligner", "walksOf", "featurePrefix", "matePrefix", "panSNContig", "ObservableCreate", "observer", "requestedPairs", "features", "feature"]
|
|
7
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{b as rn}from"./chunk-ROZPEXN4.js";import{d as nn,g as Ze,h as ge}from"./chunk-L372SDUG.js";import{a as sn,b as an}from"./chunk-OGQ6OQDN.js";import{f as on}from"./chunk-3WG3GF2A.js";var yA=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"],gn=t=>yA!=null&&t in Object(yA)?yA[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/data_adapters/BaseAdapter' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Ps=gn("BaseFeatureDataAdapter");var cn=gn("cachedSetup");var zs=yA&&yA.__esModule?yA.default:yA;var aA=class extends Error{constructor(e,A,n,r,i){super(e),this.regionTooLarge=!0,this.name="NodeLimitError",this.limit=A,this.windowBp=n,this.fitsBp=r,this.zoomHelps=i===void 0||i.zoomHelps===!0,i&&(this.bytes=i.bytes)}},GA="#";function XA(t){return t.split(GA)[0]}function Pe(t){let e=t.split(GA);return e.length>=3?e.slice(2).join(GA):e.length===2?e[1]:t}function hA(t){let e=t.split(GA);return e.length>=3?`${e[0]}${GA}${e[1]}`:void 0}function UA(t,e){return e!==void 0&&(t===e||t.startsWith(e+GA))}var In=t=>Number.parseFloat(t.toPrecision(3));function NA(t){let e=In(t/1e6);return e>=1?`${e.toLocaleString("en-US")}Mbp`:t>=1e3?`${In(t/1e3).toLocaleString("en-US")}Kbp`:`${Math.floor(t)}bp`}var P=t=>(t-(t&1))/2,IA=t=>t&1?t-1:t+1;function YA(t,e,A){if(t===".")return A;let n=0,r=!1;for(let i=0;i<=t.length;i++){let o=i<t.length?t.charCodeAt(i):44;if(o===44){let s=r?-n:n,c=s&1;e.id+=(s-c)/2,A.push(e.id*2+c),n=0,r=!1}else o===45?r=!0:n=n*10+(o-48)}return A}function HA(t){return t==="."?[]:t.split(",").map(Number)}function Cn(t,e){return t>IA(e)?[IA(e),IA(t)]:[t,e]}function ze(t,e){let A=t.lastIndexOf(":");return{refName:t[3]==="Z"?t.slice(5,A):e,start:+t.slice(A+1)}}function Xe(t,e,A){let n={};for(let r=e;r<t.length;r++){let i=t[r],o=i.slice(0,2);if(o==="pv")n.prev=ze(i,A);else if(o==="nx")n.next=ze(i,A);else if(o==="pg"||o==="ng"){let s=o==="pg"?"prevRecord":"nextRecord";n[s]={...n[s],bp:+i.slice(5)}}else if(o==="pr"||o==="nr"){let s=o==="pr"?"prevRecord":"nextRecord";n[s]={bp:0,...n[s],chunk:ze(i,A)}}}return n}var ce=class{constructor(){this.handles=[],this.before=[0],this.occurrences=new Map}add(e,A){for(let n=0;n<e.length;n++){let r=e[n],i=this.handles.length;this.handles.push(r),this.before.push(this.before[i]+A[n]);let o=P(r),s=this.occurrences.get(o);s?s.push(i):this.occurrences.set(o,[i])}}bp(e){return this.before[e]}first(e){var A;return(A=this.occurrences.get(P(e)))===null||A===void 0?void 0:A[0]}nearest(e,A){let n=this.occurrences.get(P(e));if(!n)return;let r=0,i=n.length;for(;r<i;){let c=r+i>>1;n[c]<=A?r=c+1:i=c}let o=n[r-1],s=n[r];return o===void 0||s===void 0?o??s:s-A<=A-o?s:o}reach(e,A,n){var r;let i=this.handles[e]===A,o;for(let s of(r=this.occurrences.get(P(n)))!==null&&r!==void 0?r:[])i&&s>=e&&this.handles[s]===n?(o===void 0||s<o)&&(o=s):!i&&s<=e&&IA(this.handles[s])===n&&(o===void 0||s>o)&&(o=s);return o}handleAt(e,A){return A?this.handles[e]:IA(this.handles[e])}},oA=class extends Error{},je=(t,e)=>e?t.exit===-1?-1:IA(t.exit):t.entry,Qn=(t,e)=>e?t.entry===-1?-1:IA(t.entry):t.exit,Ie=(t,e,A)=>e?IA(t.interior[t.interior.length-1-A]):t.interior[A];function Li(t){let e=[];if(t!=="."){let A=0,n=0,r=!1,i=0,o=!1;for(let s=0;s<=t.length;s++){let c=s<t.length?t.charCodeAt(s):44;if(c===44){let a=r?-n:n,g=o?i:a,l=g&1;A+=(g-l)/2,e.push(A,l,o?a:0),n=0,r=!1,o=!1}else c===58?(i=r?-n:n,n=0,r=!1,o=!0):c===45?r=!0:n=n*10+(c-48)}}return e}function ln(t,e,A,n,r,i){let o=n.indexOf(":"),s=A+ +(o<0?n:n.slice(0,o)),c=o>=0,a=c?+n.slice(o+1):0,g=E=>{let d=e[E];if(!d)throw new oA(`route ${E} is not in the chunk`);return d},l=0;if(r.length>0&&je(g(r[0]),r[1]===1)===-1){if(!i.route(r[0],r[1]===1))return;l=3}let Q=A,I=t.first(Q);if(I===void 0)throw new oA("a walk row starts off its chunk");i.step(Q);let B=(E,d)=>{let p=t.handles[I]===Q,u=c?I+(p?d:-d):t.reach(I,Q,E);if(u===void 0||u<0||u>=t.handles.length)throw new oA("a walk row runs off its chunk");u!==I&&i.stretch(I,u,p),I=u,Q=t.handleAt(u,p)};for(;l<r.length;l+=3){let E=r[l],d=r[l+1]===1,p=g(E),u=je(p,d);if(u===-1)throw new oA("an open route after the first choice");if(B(u,r[l+2]),!i.route(E,d))return;let m=Qn(p,d);if(m===-1)return;if(Q=m,I=t.nearest(Q,I),I===void 0)throw new oA("a route lands off its chunk");i.step(Q)}if(B(s,a),Q!==s)throw new oA("a walk row misses its last handle")}function Ji(t,e,A,n,r){let i=new Int32Array(r),o=new Uint8Array(r),s=0,c=a=>{if(s>=r)throw new oA("a walk row decodes to more steps than it states");i[s]=P(a),o[s++]=a&1};if(ln(t,e,+A[9],A[10],n,{step:c,stretch(a,g,l){if(l)for(let Q=a+1;Q<=g;Q++)c(t.handles[Q]);else for(let Q=a-1;Q>=g;Q--)c(IA(t.handles[Q]))},route(a,g){let l=e[a];for(let Q=0;Q<l.interior.length;Q++)c(Ie(l,g,Q));return!0}}),s!==r)throw new oA(`a walk row decodes to ${s} steps, not ${r}`);return{ids:i,rev:o}}function Bn(t,e,A){let n=new Set(e.map(o=>o.name)),r=new Set,i=[];for(let o of t){let s=`${o.name} ${o.fragStart} ${o.piece}`;!n.has(o.name)&&!r.has(s)&&o.refStart<A.end&&o.refEnd>A.start&&(r.add(s),i.push(o))}return i.sort((o,s)=>o.name<s.name?-1:o.name>s.name?1:o.fragStart-s.fragStart||o.piece-s.piece)}function fn(t,e,A,n,r){let i=t.slice(e).find(s=>s.startsWith("SQ:Z:"));if(i===void 0)return;let o=5;for(let s=0;s<A.length;s++){let c=n[s];r.set(A[s],i.slice(o,o+c)),o+=c}}var Gi=16384;function Ui(t){let e=t[0],A=[+t[10],+t[11]],n=HA(t[7]);for(let r=1;r<n.length;r++)n[r]+=n[r-1];return{chunkStart:+t[1],name:t[4],fragStart:+t[5],hapOffset:+t[6],piece:n[0],n:A.length,steps:{ids:Int32Array.from(A,P),rev:Uint8Array.from(A,r=>r&1)},...Xe(t,13,e),abridged:{pieces:n,steps:+t[8],bp:+t[9],detail:{refName:`${e}~${t[1]}`,start:+t[12]*Gi}}}}var En=t=>t.filter(e=>e[3]==="ref").sort((e,A)=>+e[6]-+A[6]);function dn(t){let e=new ce,A=new Map;for(let n of En(t)){let r=YA(n[9],{id:0},[]),i=HA(n[10]);e.add(r,i);for(let o=0;o<r.length;o++)A.set(P(r[o]),i[o])}return{path:e,lengths:A}}function We(t,e,A=!1,n){var r,i,o,s;let c=(r=n?.path)!==null&&r!==void 0?r:new ce,a=new Map,g=[],l={sequences:new Map,rows:[],nodes:new Map,ends:[],chunk:{path:c,routes:g,walks:[],lengths:a,refLengths:n?.lengths},skips:[]},Q=E=>l.nodes.has(E)||n?.lengths.has(E)===!0,I={id:0};for(let E of n?[]:En(t)){let d=E[0],p=YA(E[9],{id:0},[]),u=HA(E[10]),m=+E[6];c.add(p,u),A&&fn(E,11,p.map(P),u,l.sequences);let C=m;for(let D=0;D<p.length;D++){let x=P(p[D]),f=u[D];a.set(x,f),l.nodes.has(x)||l.nodes.set(x,{refName:E[4],start:C,end:C+f,rank:0}),C+=f}l.ends.push({name:E[4],fragStart:+E[5],piece:+E[7],first:p[0],last:p.at(-1)}),(e===void 0||e(E[4]))&&l.rows.push({chunkStart:+E[1],name:E[4],fragStart:+E[5],hapOffset:m,piece:+E[7],n:p.length,steps:{ids:Int32Array.from(p,P),rev:Uint8Array.from(p,D=>D&1)},...Xe(E,11,d)})}for(let E of t)if(E[3]==="nodes"){let d=HA(E[4]),p=HA(E[5]),u=0;for(let m=0;m<d.length;m++)u+=d[m],d[m]=u,a.set(u,p[m]);A&&fn(E,6,d,p,l.sequences)}else if(E[3]==="route"){let d=YA(E[4],I,[]),p=YA(E[5],I,[]),u=YA(E[6],I,[]);g.push({entry:(i=d[0])!==null&&i!==void 0?i:-1,interior:p,exit:(o=u[0])!==null&&o!==void 0?o:-1})}let B=E=>{let d=g[E];if(!d)throw new oA(`route ${E} is not in the chunk`);return d};for(let E of t){if(E[3]==="skip"){(e===void 0||e(E[4]))&&l.skips.push({name:E[4],fragStart:+E[5],piece:+E[6],refStart:+E[9],refEnd:+E[10]});continue}if(E[3]==="abridged"){let f=E[4];(e===void 0||e(f))&&l.rows.push(Ui(E));continue}if(E[3]!=="walk")continue;let d=Li(E[11]);l.chunk.walks.push({cols:E,choices:d});let p=E[4],u=+E[9],m=E[10],C=m.indexOf(":"),D=u,x=u+ +(C<0?m:m.slice(0,C));if(d.length>0){let f=B(d[0]),w=d[1]===1;je(f,w)===-1&&(D=Ie(f,w,0));let b=d.length-3,y=B(d[b]),R=d[b+1]===1;Qn(y,R)===-1&&(x=Ie(y,R,y.interior.length-1))}if(l.ends.push({name:p,fragStart:+E[5],piece:+E[7],first:D,last:x}),e===void 0||e(p)){let f=+E[8],w=0;for(let b=0;b<d.length;b+=3){w+=B(d[b]).interior.length;for(let y of B(d[b]).interior){let R=P(y);if(!Q(R)){let U=(s=a.get(R))!==null&&s!==void 0?s:0;l.nodes.set(R,{refName:p,start:0,end:U,rank:1})}}}l.rows.push({chunkStart:+E[1],name:p,fragStart:+E[5],hapOffset:+E[6],piece:+E[7],n:f,interior:w,steps:Ji(c,g,E,d,f),...Xe(E,12,E[0])})}}return l}function hn(t,e,A,n){let r=new Set;for(let s of e)t.some(({path:c})=>c.occurrences.has(s))||r.add(s);let i=(s,c)=>{let[a,g]=Cn(s,c);n(a,g)},o=new Map;for(let{path:s,routes:c,walks:a,lengths:g,refLengths:l}of t){let Q=s.handles;for(let u=1;u<Q.length;u++)e.has(P(Q[u-1]))&&e.has(P(Q[u]))&&i(Q[u-1],Q[u]);let I=new Uint8Array(c.length);for(let u=0;u<c.length;u++){let{entry:m,interior:C,exit:D}=c[u],x=!1,f=m;for(let w of C){let b=e.has(P(w));x||(x=r.has(P(w))),b&&f!==-1&&e.has(P(f))&&i(f,w),f=w}f!==-1&&D!==-1&&e.has(P(f))&&e.has(P(D))&&i(f,D),I[u]=x?1:0}let B=u=>{var m,C;return(C=(m=g.get(P(u)))!==null&&m!==void 0?m:l?.get(P(u)))!==null&&C!==void 0?C:0},E=new Float64Array(c.length).fill(-1),d=u=>(E[u]<0&&(E[u]=c[u].interior.reduce((m,C)=>m+B(C),0)),E[u]),p=new Uint8Array(c.length);for(let{cols:u,choices:m}of a){let C=0;for(let f=0;f<m.length;f+=3){let w=m[f];I[w]&&!p[w]&&C++}if(C===0)continue;let D=u[4],x=+u[6];ln(s,c,+u[9],u[10],m,{step(f){x+=B(f)},stretch(f,w,b){x+=b?s.bp(w+1)-s.bp(f+1):s.bp(f)-s.bp(w)},route(f,w){if(!I[f]||p[f])return x+=d(f),!0;p[f]=1;let b=c[f];for(let y=0;y<b.interior.length;y++){let R=Ie(b,w,y),U=P(R),h=B(R);if(r.has(U)){let k=o.get(U);(!k||D<k.refName||D===k.refName&&x<k.start)&&o.set(U,{refName:D,start:x,end:x+h,rank:1})}x+=h}return C--,C>0}})}}for(let[s,c]of o)A(s,c)}function Yi(t){let e=[];for(let A of t){if(A[3]!=="ref")continue;let n=YA(A[9],{id:0},[]),r=HA(A[10]),i=+A[6];for(let o=0;o<n.length;o++){let s=r[o];e.push({id:P(n[o]),refName:A[4],start:i,end:i+s,rank:0}),i+=s}}return e}function un(t){let e=new Map;for(let n of t){let r=`${n.name} ${n.fragStart}`,i=e.get(r);i||(i=new Map,e.set(r,i)),i.set(n.piece,n)}let A=[];for(let n of e.values())for(let[r,i]of n){let o=n.get(r+1);o&&A.push(Cn(i.last,o.first))}return A}var pn=["elsewhere","break","end"];function Ve(t,e){let A=new RegExp(`(?:^|\\t)${e}:i:(\\d+)`).exec(t);return A?+A[1]:void 0}function $e(t){var e,A,n;let r={references:[],haplotypes:[],long:[]};for(let i of t){let[o,s="",c="",a=""]=i.split(" ");o==="#reference"?r.references.push(s):o==="#haplotype"?r.haplotypes.push(s):o==="#long"?r.long.push({refName:s,start:+c,end:+a}):((e=r.format)!==null&&e!==void 0||(r.format=Ve(i,"format")),(A=r.chunk)!==null&&A!==void 0||(r.chunk=Ve(i,"chunk")),(n=r.maxNode)!==null&&n!==void 0||(r.maxNode=Ve(i,"maxnode")))}return r}function yn(t,e){return t===void 0?1:Math.max(1,Math.ceil(t/e))}function fe(t,e,A=1){return Math.max(0,(Math.floor(t/e)-A)*e)}function Ce(t,e,A,n){let{chunk:r,long:i}=t;if(i.length===0)return fe(A,r,yn(t.maxNode,r));let o=fe(A,r);for(let s of i)s.refName===e&&s.start<n&&s.end>A&&(o=Math.min(o,fe(s.start,r)));return o}function Nn(t,e){return t===void 0||t.length===0?void 0:A=>UA(A,e)||t.some(n=>UA(A,n))}function At(t,e){var A;return Nn(t,(A=hA(e))!==null&&A!==void 0?A:e)}function et(t){let e=new Map,A=[];for(let n of t){if(n.abridged){A.push(wn([n]));continue}let r=`${n.name} ${n.fragStart}`,i=e.get(r);i?i.push(n):e.set(r,[n])}for(let n of e.values()){n.sort((i,o)=>i.piece-o.piece);let r=0;for(let i=1;i<=n.length;i++)(i===n.length||n[i].piece!==n[i-1].piece+1)&&(A.push(wn(n.slice(r,i))),r=i)}return A}function wn(t){let e=t.reduce((s,c)=>s+c.n,0),A=new Int32Array(e),n=new Uint8Array(e),r=0;for(let s of t)A.set(s.steps.ids,r),n.set(s.steps.rev,r),r+=s.n;let i=t[0],o=t.at(-1);return{name:i.name,fragStart:i.fragStart,hapOffset:i.hapOffset,firstPiece:i.piece,ids:A,rev:n,prev:i.prev,next:o.next,prevRecord:i.prevRecord,nextRecord:o.nextRecord,...i.abridged?{abridged:i.abridged}:{}}}function tt(t,e,A,{contained:n=!1,context:r=0}={}){let i=h=>{var k;return((k=e.get(h))===null||k===void 0?void 0:k.onWindow)===!0},o=h=>{let k=e.get(h);return k?.rank===0?k:void 0},s=new Map,c=h=>{h&&s.set(`${h.refName}:${h.start}`,h)},a=(h,k,F)=>{let{ids:L}=h,N=k+F;for(;N>=0&&N<L.length&&o(L[N])===void 0;)N+=F;if(N<0||N>=L.length)return c(F<0?h.prev:h.next),N-F;let v=o(L[k]),_=o(L[N]);return _.refName!==A?N-F:N===k+F&&(_.start===v.end||_.end===v.start)?k:N},g=1/0,l=-1/0,Q=[],I=h=>{let k=e.get(h);return k===void 0?0:k.end-k.start},B=h=>{let{ids:k}=h,F=0,L=-1,N=-1;for(let v=0;v<=k.length;v++){let _=v<k.length?e.get(k[v]):void 0;if(v===k.length||_?.rank===0&&!_.onWindow){if(L>=0){for(let G=0;L>F&&G<r;)G+=I(k[--L]);for(let G=0;N<v-1&&G<r;)G+=I(k[++N]);L===0&&c(h.prev),N===k.length-1&&c(h.next),Q.push({run:h,first:L,last:N})}F=v+1,L=-1}else _?.onWindow&&(L<0&&(L=v),N=v)}},E=h=>{let{ids:k}=h,F=-1,L=-1;for(let N=0;N<k.length;N++)i(k[N])&&(F<0&&(F=N),L=N);if(F>=0){if(h.name!==A){F=a(h,F,-1),L=a(h,L,1);for(let N of[F,L]){let v=o(k[N]);v&&(g=Math.min(g,v.start),l=Math.max(l,v.end))}}Q.push({run:h,first:F,last:L})}},d=1/0,p=-1/0;for(let h of e.values())h.onWindow&&(d=Math.min(d,h.start),p=Math.max(p,h.end));let u=h=>{let k=o(h.ids[0]),F=o(h.ids.at(-1));k?.refName!==A||F?.refName!==A||Math.max(k.end,F.end)>d&&Math.min(k.start,F.start)<p&&Q.push({run:h,first:0,last:h.ids.length-1})};for(let h of t)h.abridged?u(h):n?B(h):E(h);let m=h=>{let k=o(h);return i(h)||k?.refName===A&&k.end>g&&k.start<l},C=new Set;for(let[h,k]of e)k.onWindow&&C.add(h);for(let h of Q){let{ids:k}=h.run;if(h.run.name===A){for(;h.first>0&&m(k[h.first-1]);)h.first--;for(;h.last<k.length-1&&m(k[h.last+1]);)h.last++}for(let F=h.first;F<=h.last;F++)C.add(k[F])}let D=new Set(Q.filter(h=>h.run.abridged).map(h=>h.run)),x=(h,k,F)=>{let L=0;for(let N=k;N<F;N++)L+=I(h[N]);return L},f=new Map;for(let h of t){let k=`${h.name} ${h.fragStart}`,F=f.get(k);F?F.push(h):f.set(k,[h])}let w=new Map;for(let h of f.values())h.sort((k,F)=>k.firstPiece-F.firstPiece),h.forEach((k,F)=>{w.set(k,[h[F-1],h[F+1]])});let b=new Map,y=h=>{var k,F;let L=b.get(h);return L===void 0&&(L=h.hapOffset+((F=(k=h.abridged)===null||k===void 0?void 0:k.bp)!==null&&F!==void 0?F:x(h.ids,0,h.ids.length)),b.set(h,L)),L},R=(h,k,F)=>{var L;let N=F>0?{trimmed:F}:{},v=k?h.next:h.prev;if(v){let G=(L=w.get(h))===null||L===void 0?void 0:L[k?1:0];return G?{kind:"elsewhere",chunk:v,bp:k?G.hapOffset-y(h):h.hapOffset-y(G),...N}:{kind:"elsewhere",chunk:v,...N}}let _=k?h.nextRecord:h.prevRecord;return _?{kind:"break",..._,...N}:{kind:"end",...N}},U=[];for(let{run:h,first:k,last:F}of Q){let{ids:L,rev:N}=h;if(D.has(h)){U.push({name:h.name,fragStart:h.fragStart,hapStart:h.hapOffset,hapEnd:y(h),ids:L,rev:N,before:R(h,!1,0),after:R(h,!0,0),abridged:h.abridged});continue}let v=k,_=F;for(;v>0&&C.has(L[v-1]);)v--;for(;_<L.length-1&&C.has(L[_+1]);)_++;let G=h.hapOffset+x(L,0,v),H=G+x(L,v,_+1);U.push({name:h.name,fragStart:h.fragStart,hapStart:G,hapEnd:H,ids:L.subarray(v,_+1),rev:N.subarray(v,_+1),before:R(h,!1,G-h.hapOffset),after:R(h,!0,y(h)-H)})}return{kept:C,fragments:U,open:[...s.values()]}}function nt(t,e,A,n){var r;for(let i of t.nodes.keys())!((r=e.get(i))===null||r===void 0)&&r.onWindow&&n.add(i);for(let{steps:i}of t.rows){let{ids:o}=i,s=-1;for(let c=0;c<o.length;c++){let a=e.get(o[c]);if(a?.onWindow){for(let g=s+1;s>=0&&g<c;g++)n.add(o[g]);s=c}else A&&a?.rank===0&&(s=-1)}}}function mn(t){let e=[],A=new Map,n={kinds:new Uint8Array(t.length),kindNames:[...pn],bp:new Float64Array(t.length).fill(Number.NaN),trimmed:new Float64Array(t.length),chunkRefs:new Int32Array(t.length).fill(-1),chunkStarts:new Float64Array(t.length).fill(Number.NaN),chunkRefNames:e};return t.forEach((r,i)=>{var o;if(n.kinds[i]=pn.indexOf(r.kind),n.trimmed[i]=(o=r.trimmed)!==null&&o!==void 0?o:0,"bp"in r&&r.bp!==void 0&&(n.bp[i]=r.bp),"chunk"in r&&r.chunk){let{refName:s,start:c}=r.chunk,a=A.get(s);a===void 0&&(a=e.length,A.set(s,a),e.push(s)),n.chunkRefs[i]=a,n.chunkStarts[i]=c}}),n}var Hi=(t,e)=>t.rank===0&&(e.rank!==0||t.refName<e.refName||t.refName===e.refName&&t.start<e.start),jA=class{constructor(e){this.nodes=new Map,this.sequences=new Map,this.links=[],this.chunks=[],this.window=e}placeNode(e,A){let n=this.nodes.get(e);if(n&&!Hi(A,n))return;let{window:r}=this;this.nodes.set(e,{...A,onWindow:A.rank===0&&A.refName===r.refName&&A.end>r.start-r.context&&A.start<r.end+r.context})}addLinkEnds(e,A){this.links.push(e,A)}addChunk(e){this.chunks.push(e)}addSequences(e){if(this.window.sequences)for(let[A,n]of e)this.sequences.set(A,n)}tables(e,A,n=[]){this.chunks.length>0&&hn(this.chunks,e,(f,w)=>{let b=this.nodes.get(f);b&&this.nodes.set(f,{...b,...w})},(f,w)=>{this.links.push(f,w)});let r=[];for(let f of e){let w=this.nodes.get(f);w&&r.push({...w,id:f})}r.sort((f,w)=>f.refName<w.refName?-1:f.refName>w.refName?1:f.start-w.start||f.id-w.id);let i=new Map,o=[],s=[],c=new Map,a=new Int32Array(r.length),g=new Int32Array(r.length),l=new Float64Array(r.length),Q=new Int32Array(r.length);r.forEach(({id:f,refName:w,start:b,end:y,rank:R},U)=>{i.set(f,U),o.push(String(f));let h=c.get(w);h===void 0&&(h=s.length,c.set(w,h),s.push(w)),a[U]=y-b,g[U]=h,l[U]=b,Q[U]=R});let I=f=>{let w=i.get(f);return w===void 0&&(w=o.length,i.set(f,w),o.push(String(f))),w},B=new Map;for(let f=0;f<this.links.length;f+=2){let w=this.links[f],b=this.links[f+1],y=Math.floor(w/2),R=Math.floor(b/2);e.has(y)&&e.has(R)&&B.set(`${y} ${w%2?"-":"+"} ${R} ${b%2?"-":"+"}`,f)}let E=[...B.keys()].sort(),d=new Int32Array(E.length),p=new Int32Array(E.length),u=new Uint8Array(E.length);E.forEach((f,w)=>{let b=B.get(f),y=this.links[b],R=this.links[b+1];d[w]=I(Math.floor(y/2)),p[w]=I(Math.floor(R/2)),u[w]=y%2|R%2<<1});let m=this.referenceFirst(A),C=new Int32Array(m.length+1);m.forEach(({ids:f},w)=>{C[w+1]=C[w]+f.length});let D=new Int32Array(C[m.length]),x=new Uint8Array(D.length);return m.forEach(({ids:f,rev:w},b)=>{let y=C[b];for(let R=0;R<f.length;R++)D[y+R]=I(f[R]);x.set(w,y)}),{nodes:{names:o,lengths:a,refs:g,starts:l,ranks:Q,refNames:s},links:{from:d,to:p,strands:u},walks:{names:m.map(f=>f.name),starts:Float64Array.from(m,f=>f.hapStart),ends:Float64Array.from(m,f=>f.hapEnd),offsets:C,steps:D,reversed:x,before:mn(m.map(f=>f.before)),after:mn(m.map(f=>f.after)),abridgedSteps:Float64Array.from(m,f=>{var w,b;return(b=(w=f.abridged)===null||w===void 0?void 0:w.steps)!==null&&b!==void 0?b:NaN}),abridgedBp:Float64Array.from(m,f=>{var w,b;return(b=(w=f.abridged)===null||w===void 0?void 0:w.bp)!==null&&b!==void 0?b:NaN})},skips:{names:n.map(f=>f.name),starts:Float64Array.from(n,f=>f.refStart),ends:Float64Array.from(n,f=>f.refEnd)}}}referenceFirst(e){let{refName:A}=this.window;return[...e].sort((n,r)=>+(r.name===A)-+(n.name===A)||(n.name<r.name?-1:n.name>r.name?1:n.hapStart-r.hapStart))}},rt={steps:"the step budget",bytes:"a byte budget of"},Ki=4,Ti=t=>{var e;let A=(e=t.interior)!==null&&e!==void 0?e:0;return A+(t.n-A)/Ki};function it(t,e,A,n,r,i,o=rt){var s;let c=0,a=new Map,g=new Set;for(let d of t){let p=Ti(d);c+=p,a.set(d.chunkStart,((s=a.get(d.chunkStart))!==null&&s!==void 0?s:0)+p),g.add(d.name)}let l=e*A;if(c<=l)return;let Q=n.end-n.start,I=0,B=0;for(let d of[...a.keys()].sort((p,u)=>p-u)){if(I+=a.get(d),I>l)break;B=Math.max(B,d+r-n.start)}let E=!i&&g.size>2&&2*c/g.size<=l;return new aA(B>0?`Zoom in to about ${NA(B)}${E?", or choose fewer haplotypes,":""} to see the graph`:`Too many haplotype steps here to draw ${i?"these haplotypes":"every haplotype"} (${Math.round(I).toLocaleString()} steps read, a step along the reference counting a quarter, over ${A} \xD7 ${o.steps} of ${e.toLocaleString()}); choose fewer haplotypes`,l,Q,Math.max(B,1))}function ot(t,e,A,n){let r=t.reduce((i,o)=>i+o.ids.length,0);return bn(r,e,A,n)}function Qe(t,e,A,n,r=A.end){return bn(t,e,A,n,r)}function bn(t,e,A,n,r=A.end){if(t<=e)return;let i=A.end-A.start,o=Math.min(r,A.end)-A.start,s=Math.max(1,Math.floor(o*e/t));return new aA(`Zoom in to about ${NA(s)}${n?"":", or choose fewer haplotypes,"} to see the graph`,e,i,s)}async function st(t,e,A,n,r=rt){let i=await t(A.end);if(i<=e)return;let o=0,s;for(let a=Math.floor(A.start/n)*n;a<A.end;a+=n){let g=await t(a+1);if(s??(s=g),g>e)break;o=a+n-A.start}let c=A.end-A.start;return o>0?new aA(`Zoom in to about ${NA(o)} to see the graph`,e,c,o,{bytes:i,zoomHelps:!0}):new aA(`Too much graph here to fetch, even zoomed in (${kn(s??i)} against ${r.bytes} ${kn(e)}). A satellite or rDNA array usually causes this: the graph folds the repeat into a few nodes that each haplotype loops through many times`,e,c,1,{bytes:i})}var kn=t=>`${(t/1e6).toFixed(1)} MB`;function at(t,e){return`${t} ${e}`}function WA(t){let e=new Map;for(let A of t){e.set(A,A);let n=XA(A);if(n!==A){let r=Pe(A);e.set(at(n,r),A);let i=hA(A);i!==void 0&&e.set(at(i,r),A)}}return e}function VA(t,e,A){var n;return(n=t.get(at(e,A)))!==null&&n!==void 0?n:t.get(A)}var Oi=8,qi=3,Zi=4,Pi=1e3,zi=16,Xi={stepBudget:4e6,byteBudget:8e6},le=class extends Error{constructor(){super(...arguments),this.name="WalkFormatError"}};function fA(t,e,A){if(!Number.isFinite(e)||!Number.isFinite(A))throw new Error(`${t}:${e}-${A} is not a finite range to query the graph's index for`)}function xn(t){return t.filter(e=>!e.includes("~"))}async function ji(t,e,A,n,r){let i=[],o=()=>{if(i.length<t.length&&!A.aborted){let s=n(t[i.length]);i.push(s),s.then(o,()=>{})}};for(let s=0;s<e;s++)o();for(let s=0;s<t.length;s++)A.throwIfAborted(),r(t[s],await i[s])}function Dn(t,e){return e?(e.throwIfAborted(),new Promise((A,n)=>{let r=()=>{n(e.reason instanceof Error?e.reason:new Error(String(e.reason)))};e.addEventListener("abort",r,{once:!0}),t.then(A,n).finally(()=>{e.removeEventListener("abort",r)})})):t}var gt=class{constructor(e){this.walks=e}header(e={}){if(!this.headerRead){let A=this.walks.getHeaderLines().then(n=>{var r,i;let o=$e(n);if(o.format!==5)throw new le(`This walk file is format ${(r=o.format)!==null&&r!==void 0?r:1}; @jbrowse/graph-walks reads format 5, so rebuild it with gfa-to-tabix 1.4 or later`);return{...o,chunk:(i=o.chunk)!==null&&i!==void 0?i:65536}});A.catch(()=>{this.headerRead===A&&(this.headerRead=void 0)}),this.headerRead=A}return Dn(this.headerRead,e.signal)}async referenceSequences(e={}){return xn(await this.walks.getReferenceSequenceNames(e))}async sequenceFor(e,A,n={}){if(!this.lookupRead){let i=this.walks.getReferenceSequenceNames().then(o=>WA(xn(o)));i.catch(()=>{this.lookupRead===i&&(this.lookupRead=void 0)}),this.lookupRead=i}let r=await Dn(this.lookupRead,n.signal);return VA(r,e,A)}async queryStart(e,A={}){let{refName:n="",end:r=e+1}=A;return Ce(await this.header(A),n,e,r)}async cut(e,A,n={}){var r,i;let{signal:o,keep:s,context:c=Pi,stepBudget:a=1/0,byteBudget:g=1/0,links:l=!0,contained:Q=!1,nodeLimit:I=1/0,expand:B}=n,E=await this.header({signal:o}),{chunk:d}=E,p=Ce(E,e,A.start,A.end),u=(r=this.walks.bytesForRegions)===null||r===void 0?void 0:r.bind(this.walks),m=Number.isFinite(g)&&u!==void 0,C=async S=>m?u(S.map(J=>({refName:e,...J})),{signal:o}):0,D=m?await st(async S=>(fA(e,p,S),C([{start:p,end:S}])),g,A,d,n.budgetNames):void 0;if(D)throw D;let x=new AbortController,f=()=>{x.abort(o?.reason)};o?.throwIfAborted(),o?.addEventListener("abort",f,{once:!0});let w=[],b,y=new jA({refName:e,start:A.start,end:A.end,context:c,sequences:n.sequences}),R=new Set,U=[],h=[],k=new Set,F=s!==void 0,L=[],N=(S,J)=>{if(R.has(S))return;R.add(S);let M=We(J,s,n.sequences);for(let K of M.skips)h.push(K);let Y;for(let K of M.rows)K.abridged&&B?.(K.name)?(Y??(Y=dn(J)),L.push({ref:Y,row:K})):w.push(K);G(M,S)},v=async({row:S})=>{let{refName:J,start:M}=S.abridged.detail;fA(J,M,M+1);let Y=[];return await this.walks.getLines(J,M,M+1,{signal:x.signal,lineCallback:K=>{let j=K.split(" ");j[0]=e,j[1]=String(S.chunkStart),Y.push(j)}}),Y},_=({ref:S,row:J},M)=>{let Y=We(M,K=>K===J.name,n.sequences,S);for(let K of Y.rows)K.name===J.name&&w.push(K);G(Y,J.chunkStart)},G=(S,J)=>{for(let[M,Y]of S.nodes)y.placeNode(M,Y);y.addSequences(S.sequences),y.addChunk(S.chunk);for(let M of S.ends)U.push(M);if(Number.isFinite(I)){nt(S,y.nodes,Q,k),k.size>I&&(k.clear(),nt({nodes:y.nodes,rows:w},y.nodes,Q,k));let M=Qe(k.size,I,A,F,J+d);if(M)throw M}},H=async(S,J)=>{fA(e,S,J);let M,Y=[];await this.walks.getLines(e,S,J,{signal:x.signal,lineCallback:j=>{let W=j.split(" "),eA=+W[1];eA!==M&&(M!==void 0&&N(M,Y),M=eA,Y=[]),Y.push(W)}}),M!==void 0&&N(M,Y);let K=L;if(L=[],await ji(K,zi,x.signal,v,_),l)for(let[j,W]of un(U))y.addLinkEnds(j,W)};try{await H(p,A.end);let S=it(w,a,Oi,A,d,F,n.budgetNames);if(S)throw S;let J=p,M=Math.floor((A.end-1)/d)*d,Y=Zi*d,[K,j]=Q?[Math.floor((A.start-c)/d)*d,Math.floor((A.end+c-1)/d)*d]:[J-Y,M+Y],W=()=>tt(et(w),y.nodes,e,{contained:Q,context:c});b=W();let eA=await C([{start:p,end:A.end}]);for(let tA=0;tA<qi;tA++){let V=J,X=M;for(let O of b.open)O.refName===e&&O.start>=K&&O.start<=j&&(V=Math.min(V,O.start),X=Math.max(X,O.start));let T=[{start:V,end:J},{start:M+d,end:X+1}].filter(O=>O.end>O.start);if(T.length===0||(eA+=await C(T),eA>g))break;J=V,M=X,await Promise.all(T.map(({start:O,end:dA})=>H(O,dA))),b=W()}}catch(S){throw x.abort(),S}finally{o?.removeEventListener("abort",f)}let z=(i=ot(b.fragments,a,A,F))!==null&&i!==void 0?i:Qe(b.kept.size,I,A,F);if(z)throw z;return{graph:y,...b,skips:Bn(h,b.fragments,A)}}async cutRegion(e,A={}){var n;let{haplotypes:r,referenceSample:i,...o}=A,{signal:s}=A,c=await this.header({signal:s}),a=(n=i??c.references[0])!==null&&n!==void 0?n:"",g=await this.sequenceFor(a,e.refName,{signal:s});if(g===void 0){let E=await this.referenceSequences({signal:s});throw new Error(`The walk file has no sequence ${e.refName} on ${a}; it holds ${E.slice(0,5).join(", ")}${E.length>5?", \u2026":""}`)}let{graph:l,kept:Q,fragments:I,skips:B}=await this.cut(g,e,{...o,keep:At(r,g)});return{tables:l.tables(Q,I,B),refName:g,sample:a}}};var bA=50,Ln=[50,1e3,1e4],It=.05,Wi=1e3,Vi=.1,Be="0",sA=".",Ee="~";function Jn(t){let e=t/100,[A,n,r]=Ln;return e<250?A:e<3e3?n:r}var Gn=t=>Math.max(1,Math.round(t/100));function ft(t,e){return e>t&&t<bA?"insertion":e<t&&e<bA?"deletion":"replacement"}function Ct(t,e){return e<It*t?"deletion":t<It*e?"insertion":void 0}var Un=(t,e,A)=>{let n=t==="replacement"?Ct(e,A):void 0;return n?{lopsided:n}:{}},Yn=t=>10**(Math.floor(Math.log10(t))-1),KA=t=>{let e=Yn(t);return Math.round(Math.round(t/e)*e)},Hn=(t,e=0)=>Math.abs(t.delta)>=Math.max(e,Yn(t.shiftedBp));function Kn(t,e=bA){let A=t.delta>0?"+":"-";switch(t.kind){case"inversion":return`v${KA(Math.max(Math.abs(t.delta),t.refEnd-t.refStart,1))}`;case"shift":return Hn(t,e)?`s${KA(t.shiftedBp)}${A}${KA(Math.abs(t.delta))}`:`s${KA(t.shiftedBp)}`;case"net":return`n${A}${KA(Math.abs(t.delta))}`;default:return`${A}${KA(Math.abs(t.delta))}`}}var Sn=t=>t.altLength-(t.refEnd-t.refStart);function $i(t,e){let A=[];for(let n of t){let r=A.at(-1);r&&!r.abridged&&!n.abridged&&n.refStart-r.refEnd<e?(r.refEnd=Math.max(r.refEnd,n.refEnd),r.delta+=Sn(n),r.invertedBp+=n.invertedBp,r.repeatedBp+=n.repeatedBp,n.copied&&(r.copied=r.copied?[Math.min(r.copied[0],n.copied[0]),Math.max(r.copied[1],n.copied[1])]:n.copied)):A.push({refStart:n.refStart,refEnd:n.refEnd,delta:Sn(n),invertedBp:n.invertedBp,repeatedBp:n.repeatedBp,...n.copied?{copied:n.copied}:{},...n.abridged?{abridged:!0}:{}})}return A}function Ao(t,e){let A=t.refEnd-t.refStart,n=Math.max(0,A+t.delta),r=Math.abs(t.delta),i=t.abridged?r>=e?"net":void 0:r<e?t.invertedBp>=e?"inversion":void 0:t.repeatedBp>=bA&&t.delta>0?"duplication":ft(A,n);return i&&{kind:i,refStart:t.refStart,refEnd:t.refEnd,altLength:n,delta:t.delta,...i==="duplication"?{repeatedBp:t.repeatedBp}:{},...i==="duplication"&&t.copied?{copied:t.copied}:{},...Un(i,A,n)}}function Tn(t){let e=new Set,A=[],n=t.filter(r=>r.kind==="deletion"&&-r.delta>=Wi).sort((r,i)=>r.delta-i.delta);for(let r of n){let i=-r.delta,o=t.find(s=>!e.has(s)&&(s.kind==="insertion"||s.kind==="duplication")&&Math.abs(s.delta-i)<=Vi*Math.max(s.delta,i)&&Math.max(s.refStart-r.refEnd,r.refStart-s.refEnd)<=2*i);if(o){e.add(o),e.add(r);let s=Math.min(r.refStart,o.refStart),c=Math.max(r.refEnd,o.refEnd),a=r.delta+o.delta;A.push({kind:"shift",refStart:s,refEnd:c,altLength:c-s+a,delta:a,shiftedBp:i})}}return[...t.filter(r=>!e.has(r)),...A].sort((r,i)=>r.refStart-i.refStart)}var On=new Set(["insertion","deletion","replacement"]),eo=1e3;function to(t,e,A,n){let r=$i(t,A).filter(a=>!n||a.refEnd>=n.start&&a.refStart<=n.end),i=new Map;for(let a of r){let g=Ao(a,e);g&&i.set(g,a)}let o=Tn([...i.keys()]),s=new Set(o),c=new Set([...i].flatMap(([a,g])=>s.has(a)&&On.has(a.kind)?[]:[g]));return{marks:o,plain:r.filter(a=>!a.abridged&&!c.has(a))}}function no(t,e){let A=t.reduce((g,l)=>g+l.delta,0);if(Math.abs(A)<e)return;let n=t.filter(g=>Math.abs(g.delta)>=e),r=n.length>0?n:t.filter(g=>g.delta!==0),i=1/0,o=-1/0;for(let g of r)i=Math.min(i,g.refStart),o=Math.max(o,g.refEnd);let s=o-i,c=Math.max(0,s+A),a=ft(s,c);return{kind:a,refStart:i,refEnd:o,altLength:c,delta:A,...Un(a,s,c)}}var ct=t=>t.reduce((e,A)=>e+A.delta,0),ro=(t,e,A)=>t.covered.some(([n,r])=>n<=e&&r>=A),io=(t,e,A)=>t.covered.some(([n,r])=>n<=A&&r>=e);function oo(t){let e=t.flat().map(n=>[n.refStart,n.refEnd]).sort((n,r)=>n[0]-r[0]),A=[];for(let[n,r]of e){let i=A.at(-1);i&&n<=i[1]?i[1]=Math.max(i[1],r):A.push([n,r])}return A}function vn(t,e){let A=0,n=t.length-1;for(;A<n;){let r=A+n+1>>1;t[r][0]<=e.refStart?A=r:n=r-1}return A}function so(t,e={}){var A,n,r,i;let o=(A=e.exclude)!==null&&A!==void 0?A:[],s=t.filter(N=>!o.some(v=>UA(N.haplotype,v))),c=(n=e.minCarriers)!==null&&n!==void 0?n:Gn(s.length),a=(r=e.window)!==null&&r!==void 0?r:ao(s),g=e.floorBp===void 0||e.floorBp==="auto"?Jn(a.end-a.start):Math.max(bA,e.floorBp),l=(i=e.joinBp)!==null&&i!==void 0?i:bA,Q=e.foldRareForms===!1,I=s.map(N=>to(N.departures,g,l,e.window)),B=oo(I.map(N=>N.marks)),E=B.map(([N,v])=>v-N<=eo),d=I.map(({marks:N,plain:v})=>{var _;let G=new Map,H=(S,J)=>{var M;G.set(S,[...(M=G.get(S))!==null&&M!==void 0?M:[],J])};for(let S of N){let J=vn(B,S);(!On.has(S.kind)||!E[J])&&H(J,S)}let z=new Map;for(let S of v){let J=vn(B,{refStart:S.refEnd});E[J]&&B[J][0]<=S.refEnd&&B[J][1]>=S.refStart&&z.set(J,[...(_=z.get(J))!==null&&_!==void 0?_:[],S])}for(let[S,J]of z){let M=no(J,g);M&&H(S,M)}return new Map([...G].map(([S,J])=>{J.sort((Y,K)=>Y.refStart-K.refStart||Y.refEnd-K.refEnd);let M=J.map(Y=>Kn(Y,g)).join(";");return[S,J.map(Y=>({...Y,site:S,state:M}))]}))});for(let N of d)for(let[v,_]of N){let G=B[v];for(let H of _)G[0]=Math.min(G[0],H.refStart),G[1]=Math.max(G[1],H.refEnd)}let p=B.map(([N,v],_)=>s.map((G,H)=>{var z,S;return ro(G,Math.max(N,a.start),Math.min(v,a.end))?(S=(z=d[H].get(_))===null||z===void 0?void 0:z[0].state)!==null&&S!==void 0?S:Be:sA})),u=s.map(N=>io(N,a.start,a.end)),m=u.filter(Boolean).length,C=p.map(N=>2*N.filter((v,_)=>u[_]&&v!==sA).length<m),D=s.map((N,v)=>u[v]&&(C.every(Boolean)||p.some((_,G)=>!C[G]&&_[v]!==sA))),x=s.flatMap((N,v)=>D[v]?[v]:[]),f=new Set,w=[],b=[],y=[],R=[];B.forEach(([N,v],_)=>{var G,H,z,S,J,M;let Y=p[_],K=new Map;for(let T of x){let O=K.get(Y[T]);O?O.push(T):K.set(Y[T],[T])}let j=[...K].sort((T,O)=>O[1].length-T[1].length||(T[0]<O[0]?-1:1)),W=j.flatMap(([T,O])=>{if(T===sA)return[];let dA=O.map($=>{var JA;return{j:$,marks:(JA=d[$].get(_))!==null&&JA!==void 0?JA:[]}}).map($=>({...$,delta:ct($.marks)})).sort(($,JA)=>$.delta-JA.delta),LA=dA[Math.floor(dA.length/2)];return[{key:T,delta:LA.delta,marks:LA.marks,carriers:O.map($=>s[$].haplotype)}]}),eA=!C[_]&&j.length>1&&j[1][1].length>=c;if(w.push({refStart:N,refEnd:v,edge:C[_],shared:!C[_]&&!eA,covered:x.length-((H=(G=K.get(sA))===null||G===void 0?void 0:G.length)!==null&&H!==void 0?H:0),states:W}),C[_])return;let tA=(S=(z=j[0])===null||z===void 0?void 0:z[0])!==null&&S!==void 0?S:Be,V=W.filter(T=>T.carriers.length>=c),X=Y.map((T,O)=>{var dA,LA,$;if(((LA=(dA=K.get(T))===null||dA===void 0?void 0:dA.length)!==null&&LA!==void 0?LA:0)>=c||!D[O]||Q&&eA)return T;if(T!==tA&&f.add(s[O].haplotype),T!==sA&&tA===sA)return Ee;if(T!==sA&&V.length>0){let _i=ct(($=d[O].get(_))!==null&&$!==void 0?$:[]);return Fn(V,Mi=>Mi.delta,_i).key}return tA});if(eA)b.push(_),y.push(X);else for(let T of(M=(J=W.find(O=>O.key===tA))===null||J===void 0?void 0:J.marks)!==null&&M!==void 0?M:[])R.push(T)});let U=(N,v)=>w[b[N]].states.find(_=>_.key===v),h=new Map;for(let N of x){let v=y.map(H=>H[N]),_=v.join("|"),G=h.get(_);G?G.members.push(s[N].haplotype):h.set(_,{states:v,members:[s[N].haplotype]})}let k=[...h].map(([N,{states:v,members:_}])=>{let G=v.flatMap((S,J)=>{var M,Y;return(Y=(M=U(J,S))===null||M===void 0?void 0:M.marks)!==null&&Y!==void 0?Y:[]}).concat(R).sort((S,J)=>S.refStart-J.refStart),H=G.filter(S=>!w[S.site].shared),z=H.length>0&&H.every(S=>S.kind==="shift")&&!v.some(S=>S===sA||S===Ee);return{members:_,key:N,states:v,marks:G,net:ct(G),onlyShifts:z}}),F=Q?k:k.filter(N=>N.members.length>=c),L=F.length>0?F:k;if(F.length>0&&F!==k){for(let N of Rn(k))if(N.members.length<c){let v=Fn(F,_=>_.net,N.net);for(let _ of N.members)v.members.push(_),f.add(_)}}return{sites:w,informative:b,forms:Rn(L),placed:x.length,unplaced:s.flatMap((N,v)=>D[v]?[]:[N.haplotype]),rareCarriers:s.filter(N=>f.has(N.haplotype)).map(N=>N.haplotype),abridged:s.filter((N,v)=>I[v].marks.some(_=>_.kind==="net")).map(N=>N.haplotype),minCarriers:c,floorBp:g}}function ao(t){let e=1/0,A=-1/0;for(let n of t)for(let[r,i]of n.covered)e=Math.min(e,r),A=Math.max(A,i);return e<=A?{start:e,end:A}:{start:0,end:0}}function Fn(t,e,A){let n=t[0];for(let r of t)Math.abs(e(r)-A)<Math.abs(e(n)-A)&&(n=r);return n}var Rn=t=>t.toSorted((e,A)=>A.members.length-e.members.length||Math.abs(e.net)-Math.abs(A.net)||(e.key<A.key?-1:1));function gA(t){let e=Number(t.toPrecision(3));return e>=1e6?`${Number((e/1e6).toPrecision(3))}Mb`:e>=1e3?`${Number((e/1e3).toPrecision(3))}kb`:`${e}bp`}var _n=t=>`${t<0?"-":"+"}${gA(Math.abs(t))}`,go={deletion:"del",insertion:"ins",none:"repl"};function qn(t){var e;let A=t.refEnd-t.refStart;switch(t.kind){case"insertion":return`ins ${gA(t.delta)}`;case"deletion":return`del ${gA(-t.delta)}`;case"duplication":return`dup ${gA(t.delta)}`;case"inversion":return`inv ${gA(A)}`;case"net":return`net ${_n(t.delta)}`;case"shift":return Hn(t)?`shift ${gA(t.shiftedBp)} net ${_n(t.delta)}`:`shift ${gA(t.shiftedBp)}`;case"replacement":return`${go[(e=Ct(A,t.altLength))!==null&&e!==void 0?e:"none"]} ${gA(A)}->${gA(t.altLength)}`}}var Mn=t=>{var e;return t.kind==="inversion"?t.refEnd-t.refStart:(e=t.shiftedBp)!==null&&e!==void 0?e:Math.abs(t.delta)};function co(t,e,A){var n,r,i;let o=t.informative.indexOf(A);return o>=0?e.states[o]:!((n=t.sites[A])===null||n===void 0)&&n.shared?(i=(r=e.marks.find(s=>s.site===A))===null||r===void 0?void 0:r.state)!==null&&i!==void 0?i:Be:void 0}function Io(t,e){let A=a=>{var g;return"site"in a&&((g=e?.sites[a.site])===null||g===void 0?void 0:g.shared)===!0},n=t.marks.filter(a=>!A(a)),[r]=n.toSorted((a,g)=>Mn(g)-Mn(a)),i=t.states.filter(a=>a===Ee).length,o=t.states.filter(a=>a===sA).length,s=r?qn(r):i>0?"rarer":o>0?"no call":n.length<t.marks.length?"shared":"ref",c=n.length+i+o-1;return c>0?`${s} +${c}`:s}function fo(t,e,A){return{walks:t.map(n=>{var r,i,o;return{name:n.name,hapStart:n.hapStart,hapEnd:n.hapEnd,steps:n.ids.length,id:s=>n.ids[s],rev:s=>n.rev[s]===1,abridgedBp:(r=n.abridged)===null||r===void 0?void 0:r.bp,trimmed:[(i=n.before.trimmed)!==null&&i!==void 0?i:0,(o=n.after.trimmed)!==null&&o!==void 0?o:0]}}),refStart:n=>{let r=e.get(n);return r?.rank===0&&r.refName===A?r.start:NaN},length:n=>{let r=e.get(n);return r?r.end-r.start:0}}}function Co({nodes:t,walks:e},A){let n=t.refNames.indexOf(A);return{walks:e.names.map((r,i)=>{var o;let s=e.offsets[i],c=(o=e.abridgedBp)===null||o===void 0?void 0:o[i];return{name:r,hapStart:e.starts[i],hapEnd:e.ends[i],steps:e.offsets[i+1]-s,id:a=>e.steps[s+a],rev:a=>e.reversed[s+a]===1,abridgedBp:c===void 0||Number.isNaN(c)?void 0:c,trimmed:[0,0]}}),refStart:r=>t.ranks[r]===0&&t.refs[r]===n?t.starts[r]:NaN,length:r=>{var i;return(i=t.lengths[r])!==null&&i!==void 0?i:0}}}var $A=t=>!Number.isNaN(t);function Qo(t){let e=t.toSorted((i,o)=>i.name<o.name?-1:i.name>o.name?1:i.hapStart-o.hapStart),A=[],n=NaN,r=-1/0;for(let i of e){let o=A.at(-1),s=o?.at(-1);if(o&&s?.name===i.name){if(s.abridgedBp!==void 0&&i.hapStart<n){let c=i.hapStart-i.trimmed[0],a=i.hapEnd+i.trimmed[1],g=Math.max(0,a-Math.max(c,r));r=Math.max(r,a),n+=g,o[o.length-1]={...s,abridgedBp:s.abridgedBp+g};continue}if(i.hapStart===n){o.push(i),n=i.hapEnd,r=-1/0;continue}}A.push([i]),n=i.hapEnd,r=-1/0}return A}function Zn(t,e){var A,n;let{walks:r,refStart:i,length:o}="fragments"in t?fo(t.fragments,t.nodes,e):Co(t,e),s=(A=hA(e))!==null&&A!==void 0?A:e,c=new Map;for(let g of Qo(r)){let{name:l}=g[0],Q=(n=hA(l))!==null&&n!==void 0?n:XA(l);if(Q===s||l===e)continue;let I=c.get(Q);I||(I={haplotype:Q,covered:[],departures:[],open:!1},c.set(Q,I)),lo(g,i,o,I)}let a=[...c.values()];for(let g of a)g.departures.sort((l,Q)=>l.refStart-Q.refStart||l.refEnd-Q.refEnd),g.covered=Bo(g.covered);return a}function lo(t,e,A,n){let r=0,i=0;for(let B of t)for(let E=0;B.abridgedBp===void 0&&E<B.steps;E++){let d=B.id(E);$A(e(d))&&(B.rev(E)?i+=A(d):r+=A(d))}let o=i>r,s=NaN,c=NaN,a=-1/0,g=0,l=0,Q=NaN,I=0;for(let B of o?t.toReversed():t){let E=B.steps;if(B.abridgedBp!==void 0){let d=B.id(0),p=B.id(E-1),u=e(d),m=e(p);if(!$A(u)||!$A(m)){n.open=!0;continue}Number.isNaN(c)&&(s=Math.min(u,m),c=s,g=0),g+=B.abridgedBp,Q=Math.max(u+A(d),m+A(p)),I=g;continue}for(let d=0;d<E;d++){let p=o?E-1-d:d,u=B.id(p),m=B.rev(p)!==o,C=e(u),D=A(u);if($A(C)&&!m){if(Number.isNaN(c))s=C;else if(!Number.isNaN(Q))n.departures.push({refStart:c,refEnd:Math.max(C,c),altLength:g+Math.max(0,c-C),invertedBp:0,repeatedBp:0,abridged:!0}),Q=NaN;else if(C!==c||g>0){let x=C<c?c-C:0;n.departures.push({refStart:c,refEnd:x>0?c:C,altLength:g+x,invertedBp:l,repeatedBp:x,...x>0?{copied:[C,c]}:{}})}c=C+D,a=Math.max(a,c),g=0,l=0}else Number.isNaN(c)?n.open=!0:(g+=D,$A(C)&&(l+=D))}}Number.isNaN(Q)||(n.departures.push({refStart:c,refEnd:Math.max(Q,c),altLength:I,invertedBp:0,repeatedBp:0,abridged:!0}),a=Math.max(a,Q),g-=I),Number.isNaN(s)?n.open=!0:n.covered.push([s,a]),g>0&&(n.open=!0)}function Bo(t){let e=[...new Set(t.flat())].sort((r,i)=>r-i),A=[],n=-1;for(let r=0;r+1<e.length;r++){let i=e[r],o=e[r+1],s=t.flatMap(([a,g],l)=>a<=i&&g>=o?[l]:[]),c=A.at(-1);s.length!==1?n=-1:c&&s[0]===n&&c[1]===i?c[1]=o:(A.push([i,o]),n=s[0])}return A}var Pn=16e6,de=class extends aA{constructor(e,A,n){let r=Math.max(1,Math.floor(n*A/e));super(`Zoom in to about ${NA(r)} to read every walk in full`,A,n,r),this.steps=e}};async function Eo(t,e,A={}){var n,r;let{expand:i=!0,partial:o=!0,stepBudget:s=Pn,byteBudget:c,signal:a}=A,g=await t.header({signal:a}),l=(n=g.references[0])!==null&&n!==void 0?n:"",Q=(r=await t.sequenceFor(l,e.refName,{signal:a}))!==null&&r!==void 0?r:e.refName,I={links:!1,byteBudget:c,signal:a},B=await t.cut(Q,e,I);if(i){let p=ho(B.fragments,s,o,e);p.size>0&&(B=await t.cut(Q,e,{...I,expand:u=>p.has(u)}))}let E=Zn({fragments:B.fragments,nodes:B.graph.nodes},Q),d=new Set(E.map(p=>p.haplotype));for(let p of g.haplotypes)d.has(p)||E.push({haplotype:p,covered:[],departures:[],open:!1});return E}function ho(t,e,A,n){var r;let i=0,o=new Map;for(let c of t)c.abridged?o.set(c.name,((r=o.get(c.name))!==null&&r!==void 0?r:0)+c.abridged.steps):i+=c.ids.length;if(!A){let c=[...o.values()].reduce((a,g)=>a+g,i);if(o.size>0&&c>e)throw new de(c,e,n.end-n.start);return new Set(o.keys())}let s=new Set;for(let[c,a]of[...o].sort((g,l)=>g[1]-l[1])){if(i+a>e)break;i+=a,s.add(c)}return s}function lt(t){let e=t.split(" ");return jn(e,e.length>=8)}function jn(t,e){var A;let n=e?5:0;return{anchored:e,segment:{refName:t[n],start:+t[n+1],end:+t[n+2],id:t[3],rank:+t[4],tags:(A=t[e?8:5])!==null&&A!==void 0?A:""}}}function uo(t){let e=t.tags.split(" ").find(n=>n.startsWith("SM:Z:"));if(e===void 0)return;let A=e.slice(5).split(",").map(n=>n.trim()).filter(Boolean);return A.length>0?A:void 0}function zn(t){return{id:t.slice(0,-1),strand:t.slice(-1)}}function Bt(t){return Wn(t.split(" "))}function Wn(t){var e,A;let n=zn(t[3]),r=zn(t[4]);return{source:n.id,sourceStrand:n.strand,target:r.id,targetStrand:r.strand,sourceSegment:{id:n.id,refName:t[5],start:+t[6],end:+t[7],rank:+t[8],tags:(e=t[13])!==null&&e!==void 0?e:""},targetSegment:{id:r.id,refName:t[9],start:+t[10],end:+t[11],rank:+t[12],tags:(A=t[14])!==null&&A!==void 0?A:""}}}function Et(t){let e=t.find(i=>i.startsWith("#gfa-to-tabix "));if(e===void 0)throw new Error("not a gfa-to-tabix graph file: no #gfa-to-tabix header");let A=new Map(e.split(" ").slice(1).map(i=>[i.slice(0,i.indexOf(":")),i.slice(i.indexOf(":")+3)])),n=A.get("format");if(n!=="2")throw new Error(`gfa-to-tabix format ${n}: this graph-walks reads format 2`);let r=t.find(i=>i.startsWith("#samples "));return{anchored:A.get("layout")==="anchored",samples:r?r.slice(9).split(","):[]}}function Vn(t,e){let A=[];for(let n=0;n<t.length;n++){let r=Number.parseInt(t[n],16);for(let i=0;i<4;i++)r&1<<i&&A.push(e[n*4+i])}return A}function dt(t,e){let A=t.split(" "),[n]=A.splice(3,1),r=i=>{var o;!((o=A[i])===null||o===void 0)&&o.startsWith("SB:H:")&&(A[i]=`SM:Z:${Vn(A[i].slice(5),e.samples).join(",")}`)};if(n==="N")return r(e.anchored?8:5),{kind:"N",segment:jn(A,e.anchored).segment};if(n==="L")return r(13),r(14),{kind:"L",link:Wn(A)}}function ht(t){return`${t.source}${t.sourceStrand}${t.target}${t.targetStrand}`}function Ae(t,e,A){e.set(ht(A),A);let n=[];for(let r of[A.sourceSegment,A.targetSegment])t.has(r.id)||(t.set(r.id,r),n.push(r));return n}function $n(t,e,A){let n=o=>o.rank!==0||o.refName!==A.refName?0:o.end<=A.start?-1:o.start>=A.end?1:0,r=new Map(t),i=new Map;for(let o of e)(t.has(o.source)||t.has(o.target)||n(o.sourceSegment)*n(o.targetSegment)===-1)&&Ae(r,i,o);for(let o of e)r.has(o.source)&&r.has(o.target)&&i.set(ht(o),o);for(let[o,s]of r)!t.has(o)&&s.rank>0&&r.set(o,{...s,tags:s.tags?`${s.tags} ${Qt}`:Qt});return{segments:r,links:i}}var Qt="mv:i:1";function Ar(t,e,A){let n=r=>r.refName!==A.refName||r.end<=A.start||r.start>=A.end;return[...Xn(t.filter(r=>r.rank>0),r=>e.has(r.id),A.end-A.start),...Xn(t.filter(r=>r.rank===0&&n(r)),()=>!0,0)]}function Xn(t,e,A){let n=[...t].sort((i,o)=>he(i.refName,o.refName)||i.start-o.start),r=[];for(let i of n){let o=r.at(-1);o?.refName===i.refName&&i.start-o.end<=A?(o.needed||(o.needed=i.start>o.end||e(i)),o.end=Math.max(o.end,i.end)):r.push({refName:i.refName,start:i.start,end:i.end,needed:e(i)})}return r.filter(i=>i.needed).map(({refName:i,start:o,end:s})=>({refName:i,start:o,end:s}))}function er(t,e,A){let n=r=>e.has(r.id)||A.some(i=>i.refName===r.refName&&r.start>=i.start&&r.end<=i.end);return t.filter(r=>n(r.sourceSegment)&&n(r.targetSegment))}var po=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function wo(t){let{id:e,refName:A,start:n,end:r,rank:i,tags:o}=t,s=o.split(" ").filter(a=>po.test(a)),c=s.length===0?"":` ${s.join(" ")}`;return`S ${e} * LN:i:${r-n} SN:Z:${A} SO:i:${n} SR:i:${i}${c}`}function mo(t){let{source:e,sourceStrand:A,target:n,targetStrand:r}=t;return`L ${e} ${A} ${n} ${r} 0M`}function he(t,e){return t<e?-1:t>e?1:0}function ue(t,e){let A=[...t.values()].sort((r,i)=>he(r.refName,i.refName)||r.start-i.start||he(r.id,i.id)),n=[...e.keys()].sort((r,i)=>he(r,i));return["H VN:Z:1.0",...A.map(r=>wo(r)),...n.map(r=>mo(e.get(r)))].join(`
|
|
2
|
-
`)}function tr(t){return t.filter(e=>e.rank>0)}var ut=new WeakMap;function ko(t,e){let A=ut.get(t);return A||(A=t.getHeaderLines({signal:e}).then(Et),A.catch(()=>ut.delete(t)),ut.set(t,A)),A}function yo(t,e,A,n,r){return fA(e,A,n),t.getLines(e,A,n,r)}async function nr(t,e,A,n){var r,i,o,s;let c=[],a=[],g=(Q,I)=>yo(Q,e.refName,e.start,e.end,{signal:n,lineCallback:I});if("graph"in t){let Q=await ko(t.graph,n);await g(t.graph,B=>{let E=dt(B,Q);E?.kind==="N"?c.push(E.segment):E?.kind==="L"&&a.push(E.link)});let I=new Map(c.map(B=>[B.id,B.tags]));for(let B of a)(o=B.sourceSegment).tags||(o.tags=(r=I.get(B.source))!==null&&r!==void 0?r:""),(s=B.targetSegment).tags||(s.tags=(i=I.get(B.target))!==null&&i!==void 0?i:"");return{segments:A?c:[],links:a,anchored:Q.anchored}}let l=!1;return await Promise.all([A&&g(t.segments,Q=>{let I=lt(Q);l||(l=I.anchored),c.push(I.segment)}),g(t.links,Q=>{a.push(Bt(Q))})]),{segments:c,links:a,anchored:l}}async function No(t,e,{hops:A=0,signal:n}={}){let r=new Map,i=new Map,o=await nr(t,e,!0,n);for(let l of o.segments)r.set(l.id,l);let s=o.links;if(o.anchored){let l=$n(r,s,e);return ue(l.segments,l.links)}let c=async l=>(await nr(t,l,!1,n)).links,a=async l=>(await c(l)).flatMap(Q=>Ae(r,i,Q)),g=tr(s.flatMap(l=>Ae(r,i,l)));for(let l=0;l<A;l++){let Q=await Promise.all(g.map(a));g=tr(Q.flat())}if(A>0){let l=Ar([...r.values()],new Set(g.map(I=>I.id)),e),Q=await Promise.all(l.map(I=>c(I)));for(let I of er(Q.flat(),r,l))Ae(r,i,I)}return ue(r,i)}async function Sa(t,e,A,n,r){return fA(e,A,n),t.getLines(e,A,n,r)}async function rr(t,e,A){for(let{refName:n,start:r,end:i}of e)fA(n,r,i);return t.bytesForRegions(e,A)}var pt=0;var wt=2;var ee=4;var uA=0,te=1,ir=2;var or=-5;function bo(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function sr(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var A=e.shift();if(A){if(typeof A!="object")throw new TypeError(A+"must be non-object");for(var n in A)bo(A,n)&&(t[n]=A[n])}}return t}function we(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)}var ne={arraySet:function(t,e,A,n,r){if(e.subarray&&t.subarray){t.set(e.subarray(A,A+n),r);return}for(var i=0;i<n;i++)t[r+i]=e[A+i]},flattenChunks:function(t){var e,A,n,r,i,o;for(n=0,e=0,A=t.length;e<A;e++)n+=t[e].length;for(o=new Uint8Array(n),r=0,e=0,A=t.length;e<A;e++)i=t[e],o.set(i,r),r+=i.length;return o},Buf8:function(t){return new Uint8Array(t)},Buf16:function(t){return new Uint16Array(t)},Buf32:function(t){return new Int32Array(t)}},re={arraySet:function(t,e,A,n,r){for(var i=0;i<n;i++)t[r+i]=e[A+i]},flattenChunks:function(t){return[].concat.apply([],t)},Buf8:function(t){return new Array(t)},Buf16:function(t){return new Array(t)},Buf32:function(t){return new Array(t)}},TA=()=>{let t=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return TA=()=>t,t},cA=(t,e,A,n,r)=>(cA=TA()?ne.arraySet:re.arraySet,cA(t,e,A,n,r)),pe=t=>(pe=TA()?ne.flattenChunks:re.flattenChunks,pe(t)),CA=t=>(CA=TA()?ne.Buf8:re.Buf8,CA(t)),pA=t=>(pA=TA()?ne.Buf16:re.Buf16,pA(t)),xA=t=>(xA=TA()?ne.Buf32:re.Buf32,xA(t));var ar=function(){let t=!0;try{String.fromCharCode.apply(null,[0])}catch{t=!1}return ar=()=>t,t},gr=function(){let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{t=!1}return gr=()=>t,t},mt=function(t){for(var e=CA(256),A=0;A<256;A++)e[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;return e[254]=e[254]=1,mt=n=>e[n],e[t]};function kt(t){var e,A,n,r,i,o=t.length,s=0;for(r=0;r<o;r++)A=t.charCodeAt(r),(A&64512)===55296&&r+1<o&&(n=t.charCodeAt(r+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),r++)),s+=A<128?1:A<2048?2:A<65536?3:4;for(e=new Uint8Array(s),i=0,r=0;i<s;r++)A=t.charCodeAt(r),(A&64512)===55296&&r+1<o&&(n=t.charCodeAt(r+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),r++)),A<128?e[i++]=A:A<2048?(e[i++]=192|A>>>6,e[i++]=128|A&63):A<65536?(e[i++]=224|A>>>12,e[i++]=128|A>>>6&63,e[i++]=128|A&63):(e[i++]=240|A>>>18,e[i++]=128|A>>>12&63,e[i++]=128|A>>>6&63,e[i++]=128|A&63);return e}function xo(t,e){if(e<65534&&(t.subarray&&gr()||!t.subarray&&ar()))return String.fromCharCode.apply(null,we(t,e));for(var A="",n=0;n<e;n++)A+=String.fromCharCode(t[n]);return A}function cr(t){for(var e=new Uint8Array(t.length),A=0,n=e.length;A<n;A++)e[A]=t.charCodeAt(A);return e}function Ir(t,e){var A,n,r,i,o=e||t.length,s=new Array(o*2);for(n=0,A=0;A<o;){if(r=t[A++],r<128){s[n++]=r;continue}if(i=mt(r),i>4){s[n++]=65533,A+=i-1;continue}for(r&=i===2?31:i===3?15:7;i>1&&A<o;)r=r<<6|t[A++]&63,i--;if(i>1){s[n++]=65533;continue}r<65536?s[n++]=r:(r-=65536,s[n++]=55296|r>>10&1023,s[n++]=56320|r&1023)}return xo(s,n)}function fr(t,e){var A;for(e=e||t.length,e>t.length&&(e=t.length),A=e-1;A>=0&&(t[A]&192)===128;)A--;return A<0||A===0?e:A+mt(t[A])>e?A:e}function yt(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function ie(t,e,A,n){for(var r=t&65535|0,i=t>>>16&65535|0,o=0;A!==0;){o=A>2e3?2e3:A,A-=o;do r=r+e[n++]|0,i=i+r|0;while(--o);r%=65521,i%=65521}return r|i<<16|0}function Do(){for(var t,e=[],A=0;A<256;A++){t=A;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;e[A]=t}return e}var Cr=function(){let t=Do();return Cr=()=>t,t};function nA(t,e,A,n){var r=Cr(),i=n+A;t^=-1;for(var o=n;o<i;o++)t=t>>>8^r[(t^e[o])&255];return t^-1}var me=30,So=12;function Nt(t,e){var A,n,r,i,o,s,c,a,g,l,Q,I,B,E,d,p,u,m,C,D,x,f,w,b,y;A=t.state,n=t.next_in,b=t.input,r=n+(t.avail_in-5),i=t.next_out,y=t.output,o=i-(e-t.avail_out),s=i+(t.avail_out-257),c=A.dmax,a=A.wsize,g=A.whave,l=A.wnext,Q=A.window,I=A.hold,B=A.bits,E=A.lencode,d=A.distcode,p=(1<<A.lenbits)-1,u=(1<<A.distbits)-1;A:do{B<15&&(I+=b[n++]<<B,B+=8,I+=b[n++]<<B,B+=8),m=E[I&p];e:for(;;){if(C=m>>>24,I>>>=C,B-=C,C=m>>>16&255,C===0)y[i++]=m&65535;else if(C&16){D=m&65535,C&=15,C&&(B<C&&(I+=b[n++]<<B,B+=8),D+=I&(1<<C)-1,I>>>=C,B-=C),B<15&&(I+=b[n++]<<B,B+=8,I+=b[n++]<<B,B+=8),m=d[I&u];t:for(;;){if(C=m>>>24,I>>>=C,B-=C,C=m>>>16&255,C&16){if(x=m&65535,C&=15,B<C&&(I+=b[n++]<<B,B+=8,B<C&&(I+=b[n++]<<B,B+=8)),x+=I&(1<<C)-1,x>c){t.msg="invalid distance too far back",A.mode=me;break A}if(I>>>=C,B-=C,C=i-o,x>C){if(C=x-C,C>g&&A.sane){t.msg="invalid distance too far back",A.mode=me;break A}if(f=0,w=Q,l===0){if(f+=a-C,C<D){D-=C;do y[i++]=Q[f++];while(--C);f=i-x,w=y}}else if(l<C){if(f+=a+l-C,C-=l,C<D){D-=C;do y[i++]=Q[f++];while(--C);if(f=0,l<D){C=l,D-=C;do y[i++]=Q[f++];while(--C);f=i-x,w=y}}}else if(f+=l-C,C<D){D-=C;do y[i++]=Q[f++];while(--C);f=i-x,w=y}for(;D>2;)y[i++]=w[f++],y[i++]=w[f++],y[i++]=w[f++],D-=3;D&&(y[i++]=w[f++],D>1&&(y[i++]=w[f++]))}else{f=i-x;do y[i++]=y[f++],y[i++]=y[f++],y[i++]=y[f++],D-=3;while(D>2);D&&(y[i++]=y[f++],D>1&&(y[i++]=y[f++]))}}else if((C&64)===0){m=d[(m&65535)+(I&(1<<C)-1)];continue t}else{t.msg="invalid distance code",A.mode=me;break A}break}}else if((C&64)===0){m=E[(m&65535)+(I&(1<<C)-1)];continue e}else if(C&32){A.mode=So;break A}else{t.msg="invalid literal/length code",A.mode=me;break A}break}}while(n<r&&i<s);D=B>>3,n-=D,B-=D<<3,I&=(1<<B)-1,t.next_in=n,t.next_out=i,t.avail_in=n<r?5+(r-n):5-(n-r),t.avail_out=i<s?257+(s-i):257-(i-s),A.hold=I,A.bits=B}var OA=15,Qr=852,lr=592,Br=0,bt=1,Er=2,vo=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Fo=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],Ro=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],_o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function DA(t,e,A,n,r,i,o,s){var c=s.bits,a=0,g=0,l=0,Q=0,I=0,B=0,E=0,d=0,p=0,u=0,m,C,D,x,f,w=null,b=0,y,R=pA(OA+1),U=pA(OA+1),h=null,k=0,F,L,N;for(a=0;a<=OA;a++)R[a]=0;for(g=0;g<n;g++)R[e[A+g]]++;for(I=c,Q=OA;Q>=1&&R[Q]===0;Q--);if(I>Q&&(I=Q),Q===0)return r[i++]=1<<24|64<<16|0,r[i++]=1<<24|64<<16|0,s.bits=1,0;for(l=1;l<Q&&R[l]===0;l++);for(I<l&&(I=l),d=1,a=1;a<=OA;a++)if(d<<=1,d-=R[a],d<0)return-1;if(d>0&&(t===Br||Q!==1))return-1;for(U[1]=0,a=1;a<OA;a++)U[a+1]=U[a]+R[a];for(g=0;g<n;g++)e[A+g]!==0&&(o[U[e[A+g]]++]=g);if(t===Br?(w=h=o,y=19):t===bt?(w=vo,b-=257,h=Fo,k-=257,y=256):(w=Ro,h=_o,y=-1),u=0,g=0,a=l,f=i,B=I,E=0,D=-1,p=1<<I,x=p-1,t===bt&&p>Qr||t===Er&&p>lr)return 1;for(;;){F=a-E,o[g]<y?(L=0,N=o[g]):o[g]>y?(L=h[k+o[g]],N=w[b+o[g]]):(L=96,N=0),m=1<<a-E,C=1<<B,l=C;do C-=m,r[f+(u>>E)+C]=F<<24|L<<16|N|0;while(C!==0);for(m=1<<a-1;u&m;)m>>=1;if(m!==0?(u&=m-1,u+=m):u=0,g++,--R[a]===0){if(a===Q)break;a=e[A+o[g]]}if(a>I&&(u&x)!==D){for(E===0&&(E=I),f+=l,B=a-E,d=1<<B;B+E<Q&&(d-=R[B+E],!(d<=0));)B++,d<<=1;if(p+=1<<B,t===bt&&p>Qr||t===Er&&p>lr)return 1;D=u&x,r[D]=I<<24|B<<16|f-i|0}}return u!==0&&(r[f+u]=a-E<<24|64<<16|0),s.bits=I,0}var Mo=0,Tr=1,Or=2,dr=4,Lo=5,ke=6,SA=0,Jo=1,Go=2,rA=-2,qr=-3,Rt=-4,Uo=-5,hr=8,Zr=1,ur=2,pr=3,wr=4,mr=5,kr=6,yr=7,Nr=8,br=9,xr=10,be=11,QA=12,xt=13,Dr=14,Dt=15,Sr=16,vr=17,Fr=18,Rr=19,ye=20,Ne=21,_r=22,Mr=23,Lr=24,Jr=25,Gr=26,St=27,Ur=28,Yr=29,Z=30,_t=31,Yo=32,Ho=852,Ko=592;function Hr(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function To(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=pA(320),this.work=pA(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Oo(t){var e;return!t||!t.state?rA:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=Zr,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=xA(Ho),e.distcode=e.distdyn=xA(Ko),e.sane=1,e.back=-1,SA)}function qo(t){var e;return!t||!t.state?rA:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,Oo(t))}function Zo(t,e){var A,n;return!t||!t.state||(n=t.state,e<0?(A=0,e=-e):(A=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?rA:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=A,n.wbits=e,qo(t))}function Pr(t,e){var A,n;return t?(n=new To,t.state=n,n.window=null,A=Zo(t,e),A!==SA&&(t.state=null),A):rA}var Kr=!0,vt,Ft;function Po(t){if(Kr){var e;for(vt=xA(512),Ft=xA(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(DA(Tr,t.lens,0,288,vt,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;DA(Or,t.lens,0,32,Ft,0,t.work,{bits:5}),Kr=!1}t.lencode=vt,t.lenbits=9,t.distcode=Ft,t.distbits=5}function zr(t,e,A,n){var r,i=t.state;return i.window===null&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=CA(i.wsize)),n>=i.wsize?(cA(i.window,e,A-i.wsize,i.wsize,0),i.wnext=0,i.whave=i.wsize):(r=i.wsize-i.wnext,r>n&&(r=n),cA(i.window,e,A-n,r,i.wnext),n-=r,n?(cA(i.window,e,A-n,n,0),i.wnext=n,i.whave=i.wsize):(i.wnext+=r,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=r))),0}function Xr(t,e){var A,n,r,i,o,s,c,a,g,l,Q,I,B,E,d=0,p,u,m,C,D,x,f,w,b=CA(4),y,R,U=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&t.avail_in!==0)return rA;A=t.state,A.mode===QA&&(A.mode=xt),o=t.next_out,r=t.output,c=t.avail_out,i=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,l=s,Q=c,w=SA;A:for(;;)switch(A.mode){case Zr:if(A.wrap===0){A.mode=xt;break}for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(A.wrap&2&&a===35615){A.check=0,b[0]=a&255,b[1]=a>>>8&255,A.check=nA(A.check,b,2,0),a=0,g=0,A.mode=ur;break}if(A.flags=0,A.head&&(A.head.done=!1),!(A.wrap&1)||(((a&255)<<8)+(a>>8))%31){t.msg="incorrect header check",A.mode=Z;break}if((a&15)!==hr){t.msg="unknown compression method",A.mode=Z;break}if(a>>>=4,g-=4,f=(a&15)+8,A.wbits===0)A.wbits=f;else if(f>A.wbits){t.msg="invalid window size",A.mode=Z;break}A.dmax=1<<f,t.adler=A.check=1,A.mode=a&512?xr:QA,a=0,g=0;break;case ur:for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(A.flags=a,(A.flags&255)!==hr){t.msg="unknown compression method",A.mode=Z;break}if(A.flags&57344){t.msg="unknown header flags set",A.mode=Z;break}A.head&&(A.head.text=a>>8&1),A.flags&512&&(b[0]=a&255,b[1]=a>>>8&255,A.check=nA(A.check,b,2,0)),a=0,g=0,A.mode=pr;case pr:for(;g<32;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.head&&(A.head.time=a),A.flags&512&&(b[0]=a&255,b[1]=a>>>8&255,b[2]=a>>>16&255,b[3]=a>>>24&255,A.check=nA(A.check,b,4,0)),a=0,g=0,A.mode=wr;case wr:for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.head&&(A.head.xflags=a&255,A.head.os=a>>8),A.flags&512&&(b[0]=a&255,b[1]=a>>>8&255,A.check=nA(A.check,b,2,0)),a=0,g=0,A.mode=mr;case mr:if(A.flags&1024){for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.length=a,A.head&&(A.head.extra_len=a),A.flags&512&&(b[0]=a&255,b[1]=a>>>8&255,A.check=nA(A.check,b,2,0)),a=0,g=0}else A.head&&(A.head.extra=null);A.mode=kr;case kr:if(A.flags&1024&&(I=A.length,I>s&&(I=s),I&&(A.head&&(f=A.head.extra_len-A.length,A.head.extra||(A.head.extra=new Array(A.head.extra_len)),cA(A.head.extra,n,i,I,f)),A.flags&512&&(A.check=nA(A.check,n,I,i)),s-=I,i+=I,A.length-=I),A.length))break A;A.length=0,A.mode=yr;case yr:if(A.flags&2048){if(s===0)break A;I=0;do f=n[i+I++],A.head&&f&&A.length<65536&&(A.head.name+=String.fromCharCode(f));while(f&&I<s);if(A.flags&512&&(A.check=nA(A.check,n,I,i)),s-=I,i+=I,f)break A}else A.head&&(A.head.name=null);A.length=0,A.mode=Nr;case Nr:if(A.flags&4096){if(s===0)break A;I=0;do f=n[i+I++],A.head&&f&&A.length<65536&&(A.head.comment+=String.fromCharCode(f));while(f&&I<s);if(A.flags&512&&(A.check=nA(A.check,n,I,i)),s-=I,i+=I,f)break A}else A.head&&(A.head.comment=null);A.mode=br;case br:if(A.flags&512){for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(a!==(A.check&65535)){t.msg="header crc mismatch",A.mode=Z;break}a=0,g=0}A.head&&(A.head.hcrc=A.flags>>9&1,A.head.done=!0),t.adler=A.check=0,A.mode=QA;break;case xr:for(;g<32;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}t.adler=A.check=Hr(a),a=0,g=0,A.mode=be;case be:if(A.havedict===0)return t.next_out=o,t.avail_out=c,t.next_in=i,t.avail_in=s,A.hold=a,A.bits=g,Go;t.adler=A.check=1,A.mode=QA;case QA:if(e===Lo||e===ke)break A;case xt:if(A.last){a>>>=g&7,g-=g&7,A.mode=St;break}for(;g<3;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}switch(A.last=a&1,a>>>=1,g-=1,a&3){case 0:A.mode=Dr;break;case 1:if(Po(A),A.mode=ye,e===ke){a>>>=2,g-=2;break A}break;case 2:A.mode=vr;break;case 3:t.msg="invalid block type",A.mode=Z}a>>>=2,g-=2;break;case Dr:for(a>>>=g&7,g-=g&7;g<32;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if((a&65535)!==(a>>>16^65535)){t.msg="invalid stored block lengths",A.mode=Z;break}if(A.length=a&65535,a=0,g=0,A.mode=Dt,e===ke)break A;case Dt:A.mode=Sr;case Sr:if(I=A.length,I){if(I>s&&(I=s),I>c&&(I=c),I===0)break A;cA(r,n,i,I,o),s-=I,i+=I,c-=I,o+=I,A.length-=I;break}A.mode=QA;break;case vr:for(;g<14;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(A.nlen=(a&31)+257,a>>>=5,g-=5,A.ndist=(a&31)+1,a>>>=5,g-=5,A.ncode=(a&15)+4,a>>>=4,g-=4,A.nlen>286||A.ndist>30){t.msg="too many length or distance symbols",A.mode=Z;break}A.have=0,A.mode=Fr;case Fr:for(;A.have<A.ncode;){for(;g<3;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.lens[U[A.have++]]=a&7,a>>>=3,g-=3}for(;A.have<19;)A.lens[U[A.have++]]=0;if(A.lencode=A.lendyn,A.lenbits=7,y={bits:A.lenbits},w=DA(Mo,A.lens,0,19,A.lencode,0,A.work,y),A.lenbits=y.bits,w){t.msg="invalid code lengths set",A.mode=Z;break}A.have=0,A.mode=Rr;case Rr:for(;A.have<A.nlen+A.ndist;){for(;d=A.lencode[a&(1<<A.lenbits)-1],p=d>>>24,u=d>>>16&255,m=d&65535,!(p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(m<16)a>>>=p,g-=p,A.lens[A.have++]=m;else{if(m===16){for(R=p+2;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(a>>>=p,g-=p,A.have===0){t.msg="invalid bit length repeat",A.mode=Z;break}f=A.lens[A.have-1],I=3+(a&3),a>>>=2,g-=2}else if(m===17){for(R=p+3;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}a>>>=p,g-=p,f=0,I=3+(a&7),a>>>=3,g-=3}else{for(R=p+7;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}a>>>=p,g-=p,f=0,I=11+(a&127),a>>>=7,g-=7}if(A.have+I>A.nlen+A.ndist){t.msg="invalid bit length repeat",A.mode=Z;break}for(;I--;)A.lens[A.have++]=f}}if(A.mode===Z)break;if(A.lens[256]===0){t.msg="invalid code -- missing end-of-block",A.mode=Z;break}if(A.lenbits=9,y={bits:A.lenbits},w=DA(Tr,A.lens,0,A.nlen,A.lencode,0,A.work,y),A.lenbits=y.bits,w){t.msg="invalid literal/lengths set",A.mode=Z;break}if(A.distbits=6,A.distcode=A.distdyn,y={bits:A.distbits},w=DA(Or,A.lens,A.nlen,A.ndist,A.distcode,0,A.work,y),A.distbits=y.bits,w){t.msg="invalid distances set",A.mode=Z;break}if(A.mode=ye,e===ke)break A;case ye:A.mode=Ne;case Ne:if(s>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=i,t.avail_in=s,A.hold=a,A.bits=g,Nt(t,Q),o=t.next_out,r=t.output,c=t.avail_out,i=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,A.mode===QA&&(A.back=-1);break}for(A.back=0;d=A.lencode[a&(1<<A.lenbits)-1],p=d>>>24,u=d>>>16&255,m=d&65535,!(p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(u&&(u&240)===0){for(C=p,D=u,x=m;d=A.lencode[x+((a&(1<<C+D)-1)>>C)],p=d>>>24,u=d>>>16&255,m=d&65535,!(C+p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}a>>>=C,g-=C,A.back+=C}if(a>>>=p,g-=p,A.back+=p,A.length=m,u===0){A.mode=Gr;break}if(u&32){A.back=-1,A.mode=QA;break}if(u&64){t.msg="invalid literal/length code",A.mode=Z;break}A.extra=u&15,A.mode=_r;case _r:if(A.extra){for(R=A.extra;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.length+=a&(1<<A.extra)-1,a>>>=A.extra,g-=A.extra,A.back+=A.extra}A.was=A.length,A.mode=Mr;case Mr:for(;d=A.distcode[a&(1<<A.distbits)-1],p=d>>>24,u=d>>>16&255,m=d&65535,!(p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if((u&240)===0){for(C=p,D=u,x=m;d=A.distcode[x+((a&(1<<C+D)-1)>>C)],p=d>>>24,u=d>>>16&255,m=d&65535,!(C+p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}a>>>=C,g-=C,A.back+=C}if(a>>>=p,g-=p,A.back+=p,u&64){t.msg="invalid distance code",A.mode=Z;break}A.offset=m,A.extra=u&15,A.mode=Lr;case Lr:if(A.extra){for(R=A.extra;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.offset+=a&(1<<A.extra)-1,a>>>=A.extra,g-=A.extra,A.back+=A.extra}if(A.offset>A.dmax){t.msg="invalid distance too far back",A.mode=Z;break}A.mode=Jr;case Jr:if(c===0)break A;if(I=Q-c,A.offset>I){if(I=A.offset-I,I>A.whave&&A.sane){t.msg="invalid distance too far back",A.mode=Z;break}I>A.wnext?(I-=A.wnext,B=A.wsize-I):B=A.wnext-I,I>A.length&&(I=A.length),E=A.window}else E=r,B=o-A.offset,I=A.length;I>c&&(I=c),c-=I,A.length-=I;do r[o++]=E[B++];while(--I);A.length===0&&(A.mode=Ne);break;case Gr:if(c===0)break A;r[o++]=A.length,c--,A.mode=Ne;break;case St:if(A.wrap){for(;g<32;){if(s===0)break A;s--,a|=n[i++]<<g,g+=8}if(Q-=c,t.total_out+=Q,A.total+=Q,Q&&(t.adler=A.check=A.flags?nA(A.check,r,Q,o-Q):ie(A.check,r,Q,o-Q)),Q=c,(A.flags?a:Hr(a))!==A.check){t.msg="incorrect data check",A.mode=Z;break}a=0,g=0}A.mode=Ur;case Ur:if(A.wrap&&A.flags){for(;g<32;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(a!==(A.total&4294967295)){t.msg="incorrect length check",A.mode=Z;break}a=0,g=0}A.mode=Yr;case Yr:w=Jo;break A;case Z:w=qr;break A;case _t:return Rt;case Yo:default:return rA}return t.next_out=o,t.avail_out=c,t.next_in=i,t.avail_in=s,A.hold=a,A.bits=g,(A.wsize||Q!==t.avail_out&&A.mode<Z&&(A.mode<St||e!==dr))&&zr(t,t.output,t.next_out,Q-t.avail_out)?(A.mode=_t,Rt):(l-=t.avail_in,Q-=t.avail_out,t.total_in+=l,t.total_out+=Q,A.total+=Q,A.wrap&&Q&&(t.adler=A.check=A.flags?nA(A.check,r,Q,t.next_out-Q):ie(A.check,r,Q,t.next_out-Q)),t.data_type=A.bits+(A.last?64:0)+(A.mode===QA?128:0)+(A.mode===ye||A.mode===Dt?256:0),(l===0&&Q===0||e===dr)&&w===SA&&(w=Uo),w)}function jr(t){if(!t||!t.state)return rA;var e=t.state;return e.window&&(e.window=null),t.state=null,SA}function Wr(t,e){var A;return!t||!t.state||(A=t.state,(A.wrap&2)===0)?rA:(A.head=e,e.done=!1,SA)}function Mt(t,e){var A=e.length,n,r,i;return!t||!t.state||(n=t.state,n.wrap!==0&&n.mode!==be)?rA:n.mode===be&&(r=1,r=ie(r,e,A,0),r!==n.check)?qr:(i=zr(t,e,A,A),i?(n.mode=_t,Rt):(n.havedict=1,SA))}var xe={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function Lt(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Jt=Object.prototype.toString,Gt=class t{constructor(e){if(!(this instanceof t))return new t(e);this.options=sr({chunkSize:16384,windowBits:0,to:""},e||{});var A=this.options;A.raw&&A.windowBits>=0&&A.windowBits<16&&(A.windowBits=-A.windowBits,A.windowBits===0&&(A.windowBits=-15)),A.windowBits>=0&&A.windowBits<16&&!(e&&e.windowBits)&&(A.windowBits+=32),A.windowBits>15&&A.windowBits<48&&(A.windowBits&15)===0&&(A.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Lt,this.strm.avail_out=0;var n=Pr(this.strm,A.windowBits);if(n!==uA)throw new Error(xe[n]);if(this.header=new yt,Wr(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=kt(A.dictionary):Jt.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(n=Mt(this.strm,A.dictionary),n!==uA)))throw new Error(xe[n])}push(e,A){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,o,s,c,a,g,l,Q=!1;if(this.ended)return!1;s=A===~~A?A:A===!0?ee:pt,typeof e=="string"?n.input=cr(e):Jt.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=CA(r),n.next_out=0,n.avail_out=r),o=Xr(n,pt),o===ir&&i&&(typeof i=="string"?l=kt(i):Jt.call(i)==="[object ArrayBuffer]"?l=new Uint8Array(i):l=i,o=Mt(this.strm,l)),o===or&&Q===!0&&(o=uA,Q=!1),o!==te&&o!==uA)return this.onEnd(o),this.ended=!0,!1;n.next_out&&(n.avail_out===0||o===te||n.avail_in===0&&(s===ee||s===wt))&&(this.options.to==="string"?(c=fr(n.output,n.next_out),a=n.next_out-c,g=Ir(n.output,c),n.next_out=a,n.avail_out=r-a,a&&cA(n.output,n.output,c,a,0),this.onData(g)):this.onData(we(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(Q=!0)}while((n.avail_in>0||n.avail_out===0)&&o!==te);return o===te&&(s=ee),s===ee?(o=jr(this.strm),this.onEnd(o),this.ended=!0,o===uA):(s===wt&&(this.onEnd(uA),n.avail_out=0),!0)}onData(e){this.chunks.push(e)}onEnd(e){e===uA&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=pe(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}};function zo(t,e){var A=new Gt(e);if(A.push(t,!0),A.err)throw A.msg||xe[A.err];return A.result}var Vr=zo;var jo=18,Ai=8,$r=jo+Ai;function Ut(t,e,A){let n=[],r=0,i=e;for(;r+$r<=t.length&&!(t[r]!==31||t[r+1]!==139||t[r+2]!==8||t[r+3]!==4||t[r+10]!==6||t[r+12]!==66||t[r+13]!==67);){let o=(t[r+16]|t[r+17]<<8)+1;if(o<$r||r+o>t.length)break;let s=r+o-Ai,c=(t[s+4]|t[s+5]<<8|t[s+6]<<16|t[s+7]<<24)>>>0;if(c>65536||(n.push({inputOffset:r,compressedSize:o,decompressedSize:c,filePosition:i}),i>=A))break;r+=o,i+=o}return n}var wA={};wA.d=(t,e)=>{if(Array.isArray(e))for(var A=0;A<e.length;){var n=e[A++],r=e[A++];wA.o(t,n)?r===0&&A++:r===0?Object.defineProperty(t,n,{enumerable:!0,value:e[A++]}):Object.defineProperty(t,n,{enumerable:!0,get:r})}else for(var n in e)wA.o(e,n)&&!wA.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})};wA.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);wA.r=t=>{Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var Ht={};wA.r(Ht);wA.d(Ht,{ChunkSliceResult:()=>ZA,__wbg_Error_92b29b0548f8b746:()=>Vo,__wbg___wbindgen_throw_344f42d3211c4765:()=>$o,__wbg_set_wasm:()=>gi,decompress_all:()=>ni,decompress_chunk_slice:()=>ri});var Wo="data:application/wasm;base64,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AyABNgIEIAMgADYCACADQRmtQiCGIAOthDcDCEGWgcAAIANBCGogAhAwAAs8AAJAIAAoAgBBf0YNACABIAAoAgQgACgCCBBLDwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEAwLNgACQCACQX9GDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzIAAkACQCABaUEBRw0AIABBgICAgHggAWtLDQAgAEUNARBpIAAgARBXIgENAQsACyABCzUBAX8CQCAARQ0AAkAgASgCACICRQ0AIAAgAhECAAsgASgCBCICRQ0AIAAgAiABKAIIEFELCysBAX8jAEEQayIBJAAgAUEYrUIghiABQQ9qrYQ3AwBBloHAACABIAAQMAALKgEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIAMgADYCBCADQQRqEGMACy0BAX8jAEEQayIBJAAgASAAKQIANwIIIAFBCGpBwJPAACAAKAIIQQFBABAVAAssAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahBlAAsjAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahBkAAslAQF/AkBBvIjAABAsIgBFDQAgAA8LQfCHwABBOkGsiMAAEDcACyAAAkAgASgCAEUNACAAQYiWwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQSw8LAAsbAQF/EGkgAEEEakEEEFciASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFELCx4AIAAoAgAgACgCBEEAKAKgnUAiAEEEIAAbEQQAAAscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFELCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUQsUAAJAIABFDQAgACABEF4ACxBUAAsRACAAIAFBAXRBAXIgAhAwAAsSAAJAIAFFDQAgACABIAIQUQsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAsSUQDcCCCAAQQApAryUQDcCAAsaACAAQQApArSUQDcCCCAAQQApAqyUQDcCAAsW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AA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAAAO6AAADvgAAA8IAAAPGAAADygAAA84AAAPSAAAD1gAAA9oAAAPeAAAD4gAAA+YAAAPqAAAD7gAAA/IAAAP2AAAD+gAAA/4AAoAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgABAAsAAQANAAEADwABABEAAgATAAIAFwACABsAAgAfAAMAIwADACsAAwAzAAMAOwAEAEMABABTAAQAYwAEAHMABQCDAAUAowAFAMMABQDjAAAAAgEAAAIBAAACAQAAAAAIAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAADAAAAAQAAAAKAAAACwAAAAwAAAAAAAAACAAAAAQAAAANAAAADgAAAA8AAAAQAAAAEQAAABAAAAAEAAAAEgAAABMAAAAUAAAACAAAAFz26V/cAva58cFwbPJhwSTy7zhUTX+ApB6nbeU+Qjz+YXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZAAAogEQACoAAADpBAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplIDw9IHNpemUgKyBtYXhfb3ZlcmhlYWQAAKIBEAAqAAAA7wQAAA0AAACiARAAKgAAAE0FAAAeAAAAcndsb2NrIG92ZXJmbG93ZWQgcmVhZCBsb2Nrc5gAEABdAAAAGAAAACwAAAAAAAAACAAAAAQAAAAVAAAACQAAAAwAAAAEAAAAFgAAAHJ3bG9jayBoYXMgbm90IGJlZW4gbG9ja2VkIGZvciByZWFkaW5nAACYABAAXQAAAEEAAAAJAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAABRARAAUAAAABwAAAAFAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvUmVmQ2VsbCBhbHJlYWR5IGJvcnJvd2VkAEGAmcAAC+QDAAAAAAAAAAABAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA/w8AAAApBG5hbWUBIgFWH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIASAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjYuNAx3YXNtLWJpbmRnZW4TMC4yLjEyNiAoMjFhYzgwNGE5KQ==",ZA=class t{static __wrap(e){let A=Object.create(t.prototype);return A.__wbg_ptr=e,ei.register(A,A.__wbg_ptr,A),A}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ei.unregister(this),e}free(){let e=this.__destroy_into_raw();q.__wbg_chunksliceresult_free(e,0)}take_buffer(){try{let r=q.__wbindgen_add_to_stack_pointer(-16);q.chunksliceresult_take_buffer(r,this.__wbg_ptr);var e=AA().getInt32(r+0,!0),A=AA().getInt32(r+4,!0),n=ii(e,A).slice();return q.__wbindgen_export(e,A*1,1),n}finally{q.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let r=q.__wbindgen_add_to_stack_pointer(-16);q.chunksliceresult_take_cpositions(r,this.__wbg_ptr);var e=AA().getInt32(r+0,!0),A=AA().getInt32(r+4,!0),n=ti(e,A).slice();return q.__wbindgen_export(e,A*8,8),n}finally{q.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let r=q.__wbindgen_add_to_stack_pointer(-16);q.chunksliceresult_take_dpositions(r,this.__wbg_ptr);var e=AA().getInt32(r+0,!0),A=AA().getInt32(r+4,!0),n=ti(e,A).slice();return q.__wbindgen_export(e,A*8,8),n}finally{q.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(ZA.prototype[Symbol.dispose]=ZA.prototype.free);function ni(t){try{let o=q.__wbindgen_add_to_stack_pointer(-16),s=si(t,q.__wbindgen_export2),c=Tt;q.decompress_all(o,s,c);var e=AA().getInt32(o+0,!0),A=AA().getInt32(o+4,!0),n=AA().getInt32(o+8,!0),r=AA().getInt32(o+12,!0);if(r)throw ai(n);var i=ii(e,A).slice();return q.__wbindgen_export(e,A*1,1),i}finally{q.__wbindgen_add_to_stack_pointer(16)}}function ri(t,e,A,n,r){try{let c=q.__wbindgen_add_to_stack_pointer(-16),a=si(t,q.__wbindgen_export2),g=Tt;q.decompress_chunk_slice(c,a,g,e,A,n,r);var i=AA().getInt32(c+0,!0),o=AA().getInt32(c+4,!0),s=AA().getInt32(c+8,!0);if(s)throw ai(o);return ZA.__wrap(i)}finally{q.__wbindgen_add_to_stack_pointer(16)}}function Vo(t,e){let A=Error(oi(t,e));return As(A)}function $o(t,e){throw new Error(oi(t,e))}var ei=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>q.__wbg_chunksliceresult_free(t,1));function As(t){oe===lA.length&&lA.push(lA.length+1);let e=oe;return oe=lA[e],lA[e]=t,e}function es(t){t<1028||(lA[t]=oe,oe=t)}function ti(t,e){return t=t>>>0,ts().subarray(t/8,t/8+e)}function ii(t,e){return t=t>>>0,Kt().subarray(t/1,t/1+e)}var qA=null;function AA(){return(qA===null||qA.buffer.detached===!0||qA.buffer.detached===void 0&&qA.buffer!==q.memory.buffer)&&(qA=new DataView(q.memory.buffer)),qA}var De=null;function ts(){return(De===null||De.byteLength===0)&&(De=new Float64Array(q.memory.buffer)),De}function oi(t,e){return is(t>>>0,e)}var Se=null;function Kt(){return(Se===null||Se.byteLength===0)&&(Se=new Uint8Array(q.memory.buffer)),Se}function ns(t){return lA[t]}var lA=new Array(1024).fill(void 0);lA.push(void 0,null,!0,!1);var oe=lA.length;function si(t,e){let A=e(t.length*1,1)>>>0;return Kt().set(t,A/1),Tt=t.length,A}function ai(t){let e=ns(t);return es(t),e}var Fe=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Fe.decode();var rs=2146435072,Yt=0;function is(t,e){return Yt+=e,Yt>=rs&&(Fe=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Fe.decode(),Yt=e),Fe.decode(Kt().subarray(t,t+e).slice())}var Tt=0,q;function gi(t){q=t}var vA=null,ve=null;async function Re(){return vA||(ve||(ve=(async()=>{let e=await(await fetch(Wo)).arrayBuffer(),{instance:A}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":Ht});return vA=A.exports,gi(vA),vA})().catch(t=>{throw ve=null,t})),ve)}async function _e(t){return vA||await Re(),ni(t)}async function ci(t,e,A,n,r){vA||await Re();let i=ri(t,e,A,n,r),o=i.take_buffer(),s=i.take_cpositions(),c=i.take_dpositions();return i.free(),{buffer:o,cpositions:s,dpositions:c}}var Me=8*1024*1024;function Ot(t){let e=0;for(let A of t)e+=A.compressedSize+A.decompressedSize;return e}function os(t,e=0,A=t.length){let n=[],r=e,i=0;for(let o=e;o<A;o++){let s=t[o],c=s.compressedSize+s.decompressedSize;o>r&&i+c>Me&&(n.push([r,o]),r=o,i=0),i+=c}return r<A&&n.push([r,A]),n}function ss(t,e,A){let n=t[e],r=t[A-1];return{inputOffset:n.inputOffset,inputLength:r.inputOffset+r.compressedSize-n.inputOffset}}function qt(t,e){let A=e.at(-1);return t.subarray(0,A?A.inputOffset+A.compressedSize:65536)}var as={decompress_all:3,__wbindgen_add_to_stack_pointer:1,__wbindgen_export:3,__wbindgen_export2:2};function gs(t){return Object.entries(as).every(([A,n])=>{let r=t[A];return typeof r=="function"&&r.length===n})&&t.memory instanceof WebAssembly.Memory?t:void 0}async function cs(t,e,A){let n=gs(await Re());if(n){let i=n.__wbindgen_add_to_stack_pointer(-16);try{let o=n.__wbindgen_export2(t.length,1)>>>0;new Uint8Array(n.memory.buffer).set(t,o),n.decompress_all(i,o,t.length);let s=new DataView(n.memory.buffer);if(s.getInt32(i+12,!0)===0){let c=s.getUint32(i,!0),a=s.getUint32(i+4,!0);return e.set(new Uint8Array(n.memory.buffer,c,a),A),n.__wbindgen_export(c,a,1),a}}finally{n.__wbindgen_add_to_stack_pointer(16)}}let r=await _e(t);return e.set(r,A),r.length}function Is(t,e,A,n,r){let i=0;for(let o=A;o<n;o++){let s=e[o].decompressedSize;r[o]=t.subarray(i,i+s),i+=s}}async function Zt(t,e){let A=0;for(let i of e)A+=i.decompressedSize;let n=new Uint8Array(A),r=0;for(let[i,o]of os(e)){let{inputOffset:s,inputLength:c}=ss(e,i,o);r+=await cs(t.subarray(s,s+c),n,r)}return n}async function Ii(t,e){let A=new Array(e.length);return Is(await Zt(t,e),e,0,e.length,A),{blocks:A}}var fs=26;function Ci(t){return t[0]===31&&t[1]===139}function Cs(t){return t.length>=fs&&Ci(t)&&t[2]===8&&t[3]===4&&t[10]===6&&t[12]===66&&t[13]===67}function Qi(t){return t instanceof Error?t.message:`${t}`}async function fi(t){if(typeof DecompressionStream<"u"){let e=new Blob([t]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(e).arrayBuffer())}else return Vr(t,void 0)}function li(t){return Qi(t).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:t}):t}async function se(t){if(t.length===0)return new Uint8Array(0);if(!Cs(t)){if(Ci(t))return fi(t);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}let e=Ut(t,0,1/0);try{return Ot(e)>Me?await Zt(t,e):await _e(qt(t,e))}catch(A){if(Qi(A).includes("invalid bgzf header"))return fi(t);throw li(A)}}function Qs(t,e,A,n){let r=[],i=[],o=[],s=A.dataPosition;for(let c=0;c<t.length;c++){let a=t[c],g=e[c],l=g.filePosition>=n.blockPosition;r.push(g.filePosition),i.push(s);let Q=c===0?A.dataPosition:0,I=l?Math.min(n.dataPosition+1,a.length):a.length;if(Q<I&&o.push(a.subarray(Q,I)),s+=Math.max(0,a.length-Q),l){r.push(g.filePosition+g.compressedSize),i.push(s);break}}return{slices:o,cpositions:Float64Array.from(r),dpositions:Float64Array.from(i)}}function ls(t){let e=[],A;for(let n of t)A?.buffer===n.buffer&&A.byteOffset+A.length===n.byteOffset?A=new Uint8Array(A.buffer,A.byteOffset,A.length+n.length):(A&&e.push(A),A=n);return A&&e.push(A),e}async function Pt(t,e,A){let{minv:n,maxv:r}=e,i=Ut(t,n.blockPosition,r.blockPosition),o=await Es(t,i,A);if(o){let{slices:g,cpositions:l,dpositions:Q}=Qs(o,i,n,r);return{segments:ls(g),cpositions:l,dpositions:Q}}let{buffer:s,cpositions:c,dpositions:a}=await ds(t,i,e);return{segments:[s],cpositions:c,dpositions:a}}var Bi=4e5;function Bs(t){let e=0;for(let A of t)e+=A.decompressedSize;return e}async function Es(t,e,A){if(A&&Bs(e)>=Bi)return(await A.decompressBlocks(t,e)).blocks;if(Ot(e)>Me)return(await Ii(t,e)).blocks}async function ds(t,e,{minv:A,maxv:n}){try{let r=await ci(qt(t,e),A.blockPosition,A.dataPosition,n.blockPosition,n.dataPosition);return{buffer:r.buffer,cpositions:r.cpositions,dpositions:r.dpositions}}catch(r){throw li(r)}}function FA(t){if(t?.aborted)throw zt(t)}function zt(t){let e=t.reason;return e===void 0?new DOMException("This operation was aborted","AbortError"):e}function Ei(t){return typeof t?.addEventListener=="function"}var mA=class{entries=new Map;total=0;settledCount=0;limit;shared;fill;sizeOf;toCacheKey;idleTimeoutMs;sweepTimer;constructor({fill:e,maxSize:A=1/0,sizeOf:n=()=>1,cacheKey:r=s=>String(s),idleTimeoutMs:i=0,budget:o}={}){this.fill=e,this.limit=A,this.shared=o&&{budget:o,membership:o.register(this)},this.sizeOf=n,this.toCacheKey=r,this.idleTimeoutMs=i>0&&Number.isFinite(i)?i:void 0}get size(){return this.entries.size}get totalSize(){return this.total}get maxSize(){return this.limit}set maxSize(e){this.limit=e,this.evict()}waiterCount(e){return this.entries.get(this.toCacheKey(e))?.pending?.signals.size??0}async get(e,A,n){FA(A);let r=this.toCacheKey(e),i=this.entries.get(r);i&&this.isDoomed(i)&&(this.release(r),i=void 0),i?this.touch(r,i):i=this.start(r,e,n),i.pending&&this.join(i.pending,A);try{return await this.settleFor(i,A)}finally{FA(A)}}settleFor(e,A){if(!e.pending||!Ei(A))return e.promise;let n,r=new Promise((o,s)=>{n=s}),i=()=>{n(zt(A))};return A.addEventListener("abort",i,{once:!0}),Promise.race([e.promise,r]).finally(()=>{A.removeEventListener("abort",i)})}getIfCached(e){let A=this.toCacheKey(e),n=this.entries.get(A);if(n){if(this.isDoomed(n)){this.release(A);return}return this.touch(A,n),n.promise}}has(e){let A=this.entries.get(this.toCacheKey(e));return A!==void 0&&!this.isDoomed(A)}delete(e){this.release(this.toCacheKey(e))}clear(){this.entries.clear(),this.shared?.budget.charge(this.shared.membership,-this.total),this.total=0,this.settledCount=0,this.stopSweep()}touch(e,A){this.entries.delete(e),this.entries.set(e,A),A.lastTouched=Date.now(),A.seq=this.stamp()}stamp(){return this.shared?.budget.nextSeq()??0}isDoomed(e){return e.pending?.controller.signal.aborted===!0}sweepIdle(){let e=this.idleTimeoutMs;if(e===void 0)return;let A=Date.now()-e;for(let[n,r]of this.entries)!r.pending&&r.lastTouched<=A&&this.release(n);this.settledCount===0&&this.stopSweep()}startSweep(){let e=this.idleTimeoutMs;if(e===void 0||this.sweepTimer!==void 0)return;let A=Math.min(2**31-1,Math.max(1e3,Math.floor(e/4))),n=new WeakRef(this),r=setInterval(()=>{let i=n.deref();i?i.sweepIdle():clearInterval(r)},A);this.sweepTimer=r,r.unref?.()}stopSweep(){this.sweepTimer!==void 0&&(clearInterval(this.sweepTimer),this.sweepTimer=void 0)}start(e,A,n){let r=n??(this.fill&&(a=>this.fill(A,a)));if(!r)throw new Error("SharedReadCache needs a fill, either on the cache or on the get() call");let i={signals:new Map,pinned:!1,controller:new AbortController},o={promise:Promise.resolve(r(i.controller.signal)),pending:i,size:0,lastTouched:Date.now(),seq:this.stamp()};this.entries.set(e,o);let s=()=>this.entries.get(e)===o,c=()=>{for(let[a,g]of i.signals)a.removeEventListener("abort",g);o.pending=void 0};return o.promise.then(a=>{let g=s()?this.weigh(a):void 0,l=s();c(),l&&(g===void 0?this.entries.delete(e):(o.lastTouched=Date.now(),o.size=g,this.settledCount++,this.total+=g,this.shared?.budget.charge(this.shared.membership,g),this.startSweep())),this.evict(),this.shared?.budget.evict()},()=>{s()&&this.release(e),c()}),o}weigh(e){try{let A=this.sizeOf(e);return Number.isFinite(A)&&A>=0?A:void 0}catch{return}}join(e,A){if(!Ei(A))e.pinned=!0;else if(!A.aborted&&!e.signals.has(A)){let n=()=>{e.signals.delete(A),!e.pinned&&e.signals.size===0&&e.controller.abort(A.reason)};e.signals.set(A,n),A.addEventListener("abort",n,{once:!0})}}release(e){let A=this.entries.get(e);A&&(this.entries.delete(e),A.pending||this.settledCount--,this.total-=A.size,this.shared?.budget.charge(this.shared.membership,-A.size))}lruSpare(e=!1){if(!(this.settledCount<=(e?0:1))){for(let[A,n]of this.entries)if(!n.pending)return{cacheKey:A,seq:n.seq,last:this.settledCount===1}}}evict(){if(!(this.total<=this.limit))for(let[e,A]of this.entries){if(this.total<=this.limit||this.settledCount<=1)break;A.pending||this.release(e)}}};async function Le(t){return t.bytes?t.bytes():new Uint8Array(await t.arrayBuffer())}async function di(t,e,A){if(e==="utf8"||e==="utf-8")return t.text();if(e)throw new Error(`unsupported encoding: ${e}`);return A&&"body"in t?Xt(t,A):Le(t)}function hi(t){return typeof t=="string"?{encoding:t,opts:{}}:{encoding:t?.encoding,opts:t??{}}}function ui(t){let e=/\/(\d+)$/.exec(t??"")?.[1];return e===void 0?void 0:parseInt(e,10)}function hs(t){let e=t.headers.get("content-length"),A=e===null?Number.NaN:Number(e);return Number.isSafeInteger(A)&&A>=0?A:void 0}var us=50;async function Xt(t,e){let A=hs(t),n=t.body;if(!n||A===void 0){let c=await Le(t);return e(c.byteLength,A??c.byteLength),c}let r=n.getReader(),i=new Uint8Array(A),o=0,s=Date.now();e(0,A);for(let c=await r.read();!c.done;c=await r.read()){if(o+c.value.byteLength>i.length){let g=new Uint8Array(Math.max(o+c.value.byteLength,i.length*2));g.set(i.subarray(0,o)),i=g}i.set(c.value,o),o+=c.value.byteLength;let a=Date.now();a-s>=us&&(s=a,e(o,A))}return e(o,A),o===i.length?i:i.slice(0,o)}function ps(...t){let e=new Map;for(let A of t)for(let[n,r]of Object.entries(A??{}))e.set(n.toLowerCase(),[n,r]);return Object.fromEntries(e.values())}function jt(t){let e=t.body;typeof e?.cancel=="function"&&e.cancel().catch(()=>{})}function pi(t){return Number.isSafeInteger(t)&&t>=0}function ws(t){return typeof t=="object"&&t!==null&&"name"in t&&t.name==="TypeError"}function ms(t){return(typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"?t.message:`${t}`).replace(/\.$/,"")}var BA=class{url;get source(){return this.url}_stat;statProbe;fetchImplementation;baseHeaders;baseOverrides;baseSignal;constructor(e,A={}){this.url=e,this.baseHeaders=A.headers??{},this.baseOverrides=A.overrides??{},this.baseSignal=A.signal,this.fetchImplementation=A.fetch??globalThis.fetch.bind(globalThis)}buildRequest(e,A){let n=e.signal??this.baseSignal;return{method:"GET",redirect:"follow",mode:"cors",...this.baseOverrides,...e.overrides,headers:ps(this.baseHeaders,e.headers,A),...n?{signal:n}:{}}}async fetch(e,A){let n=i=>ws(i)&&!A?.signal?.aborted?new Error(`${ms(i)} fetching ${e}`,{cause:i}):i,r;try{r=await this.fetchImplementation(e,A)}catch(i){if(`${i}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...A,cache:"reload"})}catch(o){throw n(o)}}else throw n(i)}return r}async read(e,A,n={}){if(!pi(e)||!pi(A))throw new TypeError(`read() called with an invalid length or position (length=${e}, position=${A}). The index file may be corrupt.`);return e===0?new Uint8Array(0):this.fetchBytes(e,A,n)}async fetchBytes(e,A,n){let r=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${A}-${A+e-1}`}));if(r.status===416)return jt(r),new Uint8Array(0);if(this.checkOk(r),r.status===200&&A===0||r.status===206){let i=ui(r.headers.get("content-range"));i!==void 0&&(this._stat={size:i});let o=n.onProgress?await Xt(r,n.onProgress):await Le(r);return!this._stat&&r.status===200&&(this._stat={size:o.byteLength}),o.byteLength<=e?o:o.slice(0,e)}throw jt(r),new Error(r.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${r.status} fetching ${this.url}`)}checkOk(e){if(!e.ok)throw jt(e),new Error(`HTTP ${e.status} fetching ${this.url}`)}async readFile(e){let{encoding:A,opts:n}=hi(e),r=await this.fetch(this.url,this.buildRequest(n));this.checkOk(r);let i=await this.readFileBody(r,A,n.onProgress);return r.status===200&&typeof i!="string"&&(this._stat={size:i.byteLength}),i}readFileBody(e,A,n){return di(e,A,n)}async stat(){return this._stat||(this.statProbe??=this.read(10,0).finally(()=>{this.statProbe=void 0}),await this.statProbe),this._stat??{size:0}}close(){return Promise.resolve()}};var RA=class{source;constructor(e,A={}){this.source=e}unimplemented(){return Promise.reject(new Error(`LocalFile is unimplemented in the browser (${this.source})`))}readFile(e){return this.unimplemented()}read(e,A,n){return this.unimplemented()}stat(){return this.unimplemented()}close(){return this.unimplemented()}};var iA=class{minv;maxv;bin;endPosition;constructor(e,A,n,r=A.blockPosition+65536){this.minv=e,this.maxv=A,this.bin=n,this.endPosition=r}toString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}fetchedSize(){return this.endPosition-this.minv.blockPosition}};function Wt(t,e){if(!(e>0))throw new TypeError(`\`${t}\` must be a number greater than 0`)}var ae=class{#A=new Map;#e=new Map;#t;#r;#i;constructor(e){let A=e.maxAge??Number.POSITIVE_INFINITY;Wt("maxSize",e.maxSize),Wt("maxAge",A),this.#t=e.maxSize,this.#r=A,this.#i=e.onEviction}#o(e){let A=this.#i;if(A)for(let[n,r]of e)A(n,r.value)}#n(e,A){return A.expiry!==void 0&&A.expiry<=Date.now()?(this.#i?.(e,A.value),this.delete(e),!0):!1}#a(e,A){return this.#n(e,A)?void 0:A.value}#g(e,A){if(this.#e.delete(e),this.#A.set(e,A),this.#A.size>=this.#t){let n=this.#e;this.#e=this.#A,this.#A=new Map,this.#o(n)}}#c(e){this.#e=new Map(e),this.#A=new Map}*#s(){for(let e of[this.#e,this.#A])for(let A of e)this.#n(...A)||(yield A)}get(e){let A=this.#A.get(e);if(A)return this.#a(e,A);let n=this.#e.get(e);if(n&&!this.#n(e,n))return this.#g(e,n),n.value}set(e,A,{maxAge:n=this.#r}={}){let r={value:A,expiry:n===Number.POSITIVE_INFINITY?void 0:Date.now()+n};return this.#A.has(e)?this.#A.set(e,r):this.#g(e,r),this}has(e){let A=this.#A.get(e)??this.#e.get(e);return A!==void 0&&!this.#n(e,A)}peek(e){let A=this.#A.get(e)??this.#e.get(e);return A?this.#a(e,A):void 0}expiresIn(e){let A=this.#A.get(e)??this.#e.get(e);if(A)return A.expiry===void 0?Number.POSITIVE_INFINITY:A.expiry-Date.now()}delete(e){return this.#A.delete(e)||this.#e.delete(e)}clear(){this.#A.clear(),this.#e.clear()}resize(e){Wt("maxSize",e);let A=[...this.#s()],n=A.length-e;n<0?(this.#A=new Map(A),this.#e=new Map):(this.#o(A.slice(0,n)),this.#c(A.slice(n))),this.#t=e}evict(e=1){if(!(e>0))return;let A=[...this.#s()],n=Math.trunc(Math.min(e,A.length-1));n>0&&(this.#o(A.slice(0,n)),this.#c(A.slice(n)))}get size(){return Math.min(this.#A.size+this.#e.size,this.#t)}get maxSize(){return this.#t}get maxAge(){return this.#r}*entriesAscending(){for(let[e,A]of this.#s())yield[e,A.value]}*entriesDescending(){for(let e of[this.#A,this.#e])for(let[A,n]of[...e].reverse())this.#n(A,n)||(yield[A,n.value])}entries(){return this.entriesAscending()}[Symbol.iterator](){return this.entriesAscending()}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}forEach(e,A=this){for(let[n,r]of this)e.call(A,r,n,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}};function wi(t,e=0){let A=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24;return((t[e+4]|t[e+5]<<8|t[e+6]<<16|t[e+7]<<24)>>>0)*4294967296+(A>>>0)}var PA=class{blockPosition;dataPosition;constructor(e,A){this.blockPosition=e,this.dataPosition=A}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}};function kA(t,e=0){return new PA(t[e+7]*1099511627776+t[e+6]*4294967296+t[e+5]*16777216+t[e+4]*65536+t[e+3]*256+t[e+2],t[e+1]<<8|t[e])}function Je(t,e){let A=t.length;if(A===0)return t;let n;if(e){let s=e.blockPosition,c=e.dataPosition;n=[];for(let a=0;a<A;a++){let g=t[a];(g.maxv.blockPosition-s||g.maxv.dataPosition-c)>0&&n.push(g)}if(n.length===0)return n}else n=t;n.sort((s,c)=>{let a=s.minv.blockPosition-c.minv.blockPosition;return a===0?s.minv.dataPosition-c.minv.dataPosition:a});let r=[n[0]],i=n[0].minv.blockPosition,o=n[0].maxv.blockPosition;for(let s=1;s<n.length;s++){let c=n[s],a=c.minv.blockPosition,g=c.maxv.blockPosition;if(a-o<65e3&&g-i<5e6){let l=r.at(-1);(g-o||c.maxv.dataPosition-l.maxv.dataPosition)>0&&(r[r.length-1]=new iA(l.minv,c.maxv,l.bin,c.endPosition),o=g)}else r.push(c),i=a,o=g}return ks(r)}function ks(t){let e=[t[0]];for(let A=1;A<t.length;A++){let n=t[A],r=e.at(-1).maxv;if((n.minv.blockPosition-r.blockPosition||n.minv.dataPosition-r.dataPosition)>=0){e.push(n);continue}(n.maxv.blockPosition-r.blockPosition||n.maxv.dataPosition-r.dataPosition)>0&&e.push(new iA(r,n.maxv,n.bin,n.endPosition))}return e}function Ge(t,e=[]){let A=[...e];for(let n of t)A.push(n.minv.blockPosition,n.maxv.blockPosition);A.sort((n,r)=>n-r);for(let n of t){let r=n.maxv.blockPosition,i=0,o=A.length;for(;i<o;){let s=i+o>>>1;A[s]>r?o=s:i=s+1}i<A.length&&(n.endPosition=Math.min(n.endPosition,A[i]))}}function Ue(t,e,A,n){let r=n?n.blockPosition:1/0,i=n?n.dataPosition:0,o=!1;for(let s=0;s<A;s++){let c=e+s*8,a=t[c+7]*1099511627776+t[c+6]*4294967296+t[c+5]*16777216+t[c+4]*65536+t[c+3]*256+t[c+2],g=t[c+1]<<8|t[c];(a<r||a===r&&g<i)&&(r=a,i=g,o=!0)}return o?new PA(r,i):n}function ys(t){let e=new TextDecoder("utf-8"),A=[],n={},r=0,i=0;for(;i<t.length;){let o=t.indexOf(0,i);if(o===-1)break;if(o>i){let s=e.decode(t.subarray(i,o));A[r]=s,n[s]=r}i=o+1,r++}return{refNameToId:n,refIdToName:A}}var Ns={0:"generic",1:"SAM",2:"VCF",3:"GAF"};function Ye(t,e){let A=new DataView(t.buffer,t.byteOffset,t.byteLength),n=A.getInt32(e,!0),r=n&65536?"zero-based-half-open":"1-based-closed",i=Ns[n&15];if(!i)throw new Error(`invalid Tabix preset format flags ${n}`);let o={ref:A.getInt32(e+4,!0),start:A.getInt32(e+8,!0),end:A.getInt32(e+12,!0)},s=A.getInt32(e+16,!0),c=s?String.fromCharCode(s):void 0,a=A.getInt32(e+20,!0),g=A.getInt32(e+24,!0),{refIdToName:l,refNameToId:Q}=ys(t.subarray(e+28,e+28+g));return{refIdToName:l,refNameToId:Q,skipLines:a,metaChar:c,columnNumbers:o,format:i,coordinateType:r}}function He(t,e){return{lineCount:wi(t,e)}}function Ke(t,e=5){let A=new ae({maxSize:e});return n=>{let r=A.get(n);if(r!==void 0)return r;let i=t(n);return i!==void 0&&A.set(n,i),i}}function mi(t){let e=0;for(let r of t)e+=r.length;let A=new Uint8Array(e),n=0;for(let r of t)A.set(r,n),n+=r.length;return A}var ki=10;function Vt(t,e){let A=0,n,r=0;for(let i of t){let o=0;if(n){let a=i.indexOf(ki);if(a===-1){n=mi([n,i]),A+=i.length;continue}if(e(mi([n,i.subarray(0,a+1)]),r))return!0;o=a+1,n=void 0}let s=i.lastIndexOf(ki);if(s>=o&&e(i.subarray(o,s+1),A+o))return!0;let c=Math.max(o,s+1);c<i.length&&(n=i.slice(c),r=A+c),A+=i.length}return!1}function bs(t,e,A,n){if(e>2**(A+n*3))return;let r=(8**(n+1)-1)/7,i=(8**n-1)/7+Math.floor((e-1)/2**A)+1;for(i>=r&&(i=0);;){for(;i%8===1;)i=(i-1)/8;if(i===0)return;let o=t[i];if(o?.length){let s=o[0].minv;for(let c=1;c<o.length;c++){let a=o[c].minv;a.compareTo(s)<0&&(s=a)}return s}i++}}function yi(t,e){return t.format==="GAF"?0:t.refNameToId[e]}var _A=class{filehandle;parseCache=new mA({});constructor({filehandle:e}){this.filehandle=e}async readIndexBytes(e){let A=await this.filehandle.readFile({signal:e.signal,onProgress:e.onProgress}),n=await se(A);return{bytes:n,dataView:new DataView(n.buffer,n.byteOffset,n.byteLength)}}async lineCount(e,A={}){let n=await this.parse(A),r=yi(n,e);return r===void 0?-1:n.indices(r)?.stats?.lineCount??-1}async getMetadata(e={}){let{indices:A,...n}=await this.parse(e);return n}async blocksForRange(e,A,n,r={}){let i=await this.parse(r),o=yi(i,e);if(o===void 0)return[];let s=i.indices(o);if(!s)return[];i.format==="GAF"&&(A=Math.max(A-1,0));let c=[];for(let[B,E]of this.reg2bins(A,n,i))for(let d=B;d<=E;d++){let p=s.binIndex[d];if(p)for(let u of p)c.push(u)}let a=this.lowestOffset(s,A,i),g=Je(c,a),l=bs(s.binIndex,n,i.minShift,i.depth);if(l){let B=g.length;for(;B>0&&g[B-1].minv.compareTo(l)>=0;)B--;g.length=B}let Q=2**(i.minShift+3),I=a&&this.lowestOffset(s,Math.floor(A/Q)*Q,i);I&&a&&I.compareTo(a)>0&&(I=a);for(let B=0;I&&B<g.length&&g[B].minv.compareTo(I)<0;B++){let E=g[B];g[B]=new iA(I,E.maxv,E.bin,E.endPosition)}return g}parse(e={}){return this.parseCache.get("index",e.signal,A=>this._parse({...e,signal:A}))}async hasRefSeq(e,A={}){return!!(await this.parse(A)).indices(e)?.binIndex}};var xs=21582659,Ds=38359875;function Ni(t,e){return t*2**e}function $t(t,e){return Math.floor(t/2**e)}var MA=class extends _A{async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e),r=n.getUint32(0,!0),i;if(r===xs)i=1;else if(r===Ds)i=2;else throw new Error(`Not a CSI file (magic=${r})`);let o=n.getInt32(4,!0),s=n.getInt32(8,!0),c=(8**(s+1)-1)/7,a=2**(o+s*3),g=n.getInt32(12,!0),l=g>=28&&(n.getInt32(16,!0)&15)===3;if(g<30&&!l)throw new Error("CSI index has no tabix header, so it names no references; it may be a BAM or BCF index");let Q=Ye(A,16),I=n.getInt32(16+g,!0),B=16+g+4,E,d=[];for(let u=0;u<I;u++){d.push(B);let m=n.getInt32(B,!0);B+=4;for(let C=0;C<m;C++){let D=n.getUint32(B,!0);if(B+=4,D>c)B+=44;else{E=Ue(A,B,1,E),B+=8;let x=n.getInt32(B,!0);B+=4+16*x}}}function p(u){let m=d[u];if(m===void 0)return;let C=m,D=n.getInt32(C,!0);C+=4;let x={},f={},w;for(let b=0;b<D;b++){let y=n.getUint32(C,!0);if(C+=4,y>c)w=He(A,C+28),C+=44;else{f[y]=kA(A,C),C+=8;let R=n.getInt32(C,!0);C+=4;let U=Array.from({length:R});for(let h=0;h<R;h++)U[h]=new iA(kA(A,C),kA(A,C+8),y),C+=16;x[y]=U}}return Ge(Object.values(x).flat()),{binIndex:x,loffsets:f,stats:w}}return{...Q,csi:!0,refCount:I,maxBlockSize:65536,firstDataLine:E,csiVersion:i,indices:Ke(p),minShift:o,depth:s,maxBinNumber:c,maxRefLength:a}}lowestOffset(e,A,{minShift:n,depth:r}){let{loffsets:i}=e,o;if(i){let s=(Ni(1,3*r)-1)/7+$t(Math.max(A,0),n);for(;o===void 0&&s>0;)if(o=i[s],o===void 0){let c=Math.floor((s-1)/8),a=c*8+1;s=s>a?s-1:c}o??=i[0]}return o}reg2bins(e,A,{minShift:n,depth:r,maxBinNumber:i}){e=Math.max(e,0);let o=2**(n+r*3);A>o&&(A=o),A-=1;let s=0,c=0,a=n+r*3,g=[];for(;s<=r;a-=3,c+=Ni(1,s*3),s+=1){let l=c+$t(e,a),Q=c+$t(A,a);if(Q-l+g.length>i)throw new Error(`query ${e}-${A} is too large for current binning scheme (shift ${n}, depth ${r}), try a smaller query or a coarser index binning scheme`);g.push([l,Q])}return g}};var Ss=21578324,An=5,en=14,Te=2**(en+An*3);function bi(t){return Math.min(Math.max(t,0),Te)}var EA=class extends _A{reg2bins(e,A){e>Te&&console.warn("querying outside of possible tabix range");let n=bi(e),r=Math.min(A,Te)-1,i=[];return n<=r&&i.push([0,0],[1+(n>>26),1+(r>>26)],[9+(n>>23),9+(r>>23)],[73+(n>>20),73+(r>>20)],[585+(n>>17),585+(r>>17)],[4681+(n>>14),4681+(r>>14)]),i}lowestOffset(e,A){let n=e.linearIndex;return n?.[Math.min(bi(A)>>en,n.length-1)]}async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e);if(n.getUint32(0,!0)!==Ss)throw new Error("Not a TBI file");let r=n.getUint32(4,!0),i=((1<<(An+1)*3)-1)/7,{refNameToId:o,refIdToName:s,coordinateType:c,format:a,columnNumbers:g,metaChar:l,skipLines:Q}=Ye(A,8),B=36+n.getInt32(32,!0),E,d=[];for(let u=0;u<r;u++){d.push(B);let m=n.getInt32(B,!0);B+=4;for(let D=0;D<m;D++){let x=n.getUint32(B,!0);B+=4;let f=n.getInt32(B,!0);if(B+=4,x>i+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(x<=i)for(let w=0;w<f;w++)E=Ue(A,B+16*w,1,E);B+=16*f}let C=n.getInt32(B,!0);B+=4+8*C}function p(u){let m=d[u];if(m===void 0)return;let C=m,D=n.getInt32(C,!0);C+=4;let x={},f;for(let y=0;y<D;y++){let R=n.getUint32(C,!0);if(C+=4,R>i+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(R===i+1){let U=n.getInt32(C,!0);C+=4,U===2&&(f=He(A,C+16)),C+=16*U}else{let U=n.getInt32(C,!0);C+=4;let h=Array.from({length:U});for(let k=0;k<U;k++)h[k]=new iA(kA(A,C),kA(A,C+8),R),C+=16;x[R]=h}}let w=n.getInt32(C,!0);C+=4;let b=Array.from({length:w});for(let y=0;y<w;y++)b[y]=kA(A,C),C+=8;return Ge(Object.values(x).flat(),b.map(y=>y.blockPosition)),{binIndex:x,linearIndex:b,stats:f}}return{indices:Ke(p),metaChar:l,minShift:en,depth:An,maxBinNumber:i,maxRefLength:Te,skipLines:Q,firstDataLine:E,columnNumbers:g,coordinateType:c,format:a,refIdToName:s,refNameToId:o,maxBlockSize:65536}}};var tn=9,qe=10,Si=13,vs=59,Fs=60,Rs=62,_s=6,Ms=1024*2**20,Ls=180*1e3;function Js(t,e,A){if(t)return t;if(e)return new RA(e);if(A)return new BA(A);throw new TypeError("must provide either filehandle, path, or url")}function Gs({tbiFilehandle:t,csiFilehandle:e,tbiPath:A,csiPath:n,tbiUrl:r,csiUrl:i,path:o,url:s}){if(t)return new EA({filehandle:t});if(e)return new MA({filehandle:e});if(A)return new EA({filehandle:new RA(A)});if(n)return new MA({filehandle:new RA(n)});if(i)return new MA({filehandle:new BA(i)});if(r)return new EA({filehandle:new BA(r)});if(o)return new EA({filehandle:new RA(`${o}.tbi`)});if(s)return new EA({filehandle:new BA(`${s}.tbi`)});throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl")}function vi(t,e,A,n,r){return t[A]*256+(n-e[A])+r+1}function Us(t,e,A,n,r,i,o){let s=n-A,c=e+s,a=0;if(t[r]===46)return c;let g=r;for(let l=r;l<=i;l++)if(l===i||t[l]===vs){let Q=l-g;if(Q>=10&&t[g]===83&&t[g+1]===86&&t[g+2]===84&&t[g+3]===89&&t[g+4]===80&&t[g+5]===69&&t[g+6]===61&&t[g+7]===84&&t[g+8]===82&&t[g+9]===65)return e+1;if(Q>=4&&t[g]===69&&t[g+1]===78&&t[g+2]===68&&t[g+3]===61){let I=Oe(t,g+4,l);I>e&&(c=I)}else Q>=6&&t[g]===83&&t[g+1]===86&&t[g+2]===76&&t[g+3]===69&&t[g+4]===78&&t[g+5]===61&&(a=Hs(t,g+6,l,n+1,o));g=l+1}return Math.max(c,e+a)}var xi=44;function Ys(t,e,A){if(A-e<5||t[e]!==60||t[A-1]!==62)return!1;let n=t[e+4];if(n!==62&&n!==58)return!1;let r=t[e+1],i=t[e+2],o=t[e+3];return r===67&&i===78&&o===86||r===68&&i===69&&o===76||r===68&&i===85&&o===80||r===73&&i===78&&o===86}function Hs(t,e,A,n,r){let i=0,o=e,s=n;for(;o<A&&s<r;){let c=t.indexOf(xi,o);(c===-1||c>A)&&(c=A);let a=t.indexOf(xi,s);if((a===-1||a>r)&&(a=r),Ys(t,s,a)){let g=Oe(t,t[o]===45?o+1:o,c);g>i&&(i=g)}o=c+1,s=a+1}return i}var Fi=new TextDecoder;function Di(t,e){let A=-1,n=e.charCodeAt(0);for(let r=0,i=t.length;r<i;r++){let o=t[r];if(r===A+1&&o!==n)break;o===qe&&(A=r)}return t.subarray(0,A+1)}function Ks(t,e){let A=0;for(let n=0;n<e;n++){let r=t.indexOf(qe,A);if(r===-1){A=t.length;break}A=r+1}return Fi.decode(t.subarray(0,A)).split(/\r?\n/).slice(0,e)}function Oe(t,e,A){let n=0;for(let r=e;r<A;r++){let i=t[r];if(i>=48&&i<=57)n=n*10+(i-48);else break}return n}function Ts(t,e,A,n,r,{start:i,end:o,pathCol:s,metaCharCode:c,decoder:a,callback:g}){let l=0,Q=0;for(;l<t.length;){let I=t.indexOf(qe,l);if(I===-1)break;let B=l;l=I+1;let E=B+e+r;for(;Q<n.length&&E>=n[Q];)Q++;if(t[B]===c)continue;let d=B;for(let x=1;x<s;x++){let f=t.indexOf(tn,d);if(f===-1||f>=I){d=I;break}d=f+1}let p=t[d];if(p!==Rs&&p!==Fs)continue;let u=t.indexOf(tn,d);(u===-1||u>I)&&(u=I);let m=1/0,C=-1,D=d;for(;D<u;){let x=0,f=D+1;for(;f<u;f++){let w=t[f]-48;if(w<0||w>9)break;x=x*10+w}x<m&&(m=x),x>C&&(C=x),D=f}if(m>=o)return!0;if(C>=i){let x=t[I-1]===Si?I-1:I;g(a.decode(t.subarray(B,x)),vi(A,n,Q,B+e,r),m,C+1)}}return!1}var zA=class{filehandle;index;chunkCache;requested=new Map;headerCache=new mA({});bgzfWorkerPool;constructor({path:e,filehandle:A,url:n,tbiPath:r,tbiUrl:i,tbiFilehandle:o,csiPath:s,csiUrl:c,csiFilehandle:a,chunkCacheSize:g=Ms,chunkCacheIdleTimeoutMs:l=Ls,chunkCacheBudget:Q,bgzfWorkerPool:I}){this.bgzfWorkerPool=I,this.filehandle=Js(A,e,n),this.index=Gs({tbiFilehandle:o,csiFilehandle:a,tbiPath:r,csiPath:s,tbiUrl:i,csiUrl:c,path:e,url:n}),this.chunkCache=new mA({maxSize:g,sizeOf:B=>{let E=0;for(let d of B.segments)E+=d.byteLength;return E},cacheKey:B=>B.toString(),idleTimeoutMs:l,budget:Q,fill:(B,E)=>this.readChunk(B,{signal:E})})}clearChunkCache(){this.chunkCache.clear(),this.requested.clear()}withCachedContainers(e){let A=[];for(let n=0;n<e.length;n++){let r=e[n],i=A[A.length-1],o=e[n+1],s;if(!this.chunkCache.has(r))for(let[c,a]of this.requested)this.chunkCache.has(a)?a.minv.compareTo(r.minv)<=0&&a.maxv.compareTo(r.maxv)>=0&&(!i||a.minv.compareTo(i.maxv)>=0)&&(!o||a.maxv.compareTo(o.minv)<=0)&&(!s||a.fetchedSize()<s.fetchedSize())&&(s=a):this.requested.delete(c);A.push(s??r)}return A}async bytesForRegions(e,A={}){let n=[];for(let{refName:i,start:o,end:s}of e){let c=await this.index.blocksForRange(i,o,s,A);for(let a of c)n.push(a)}let r=0;for(let i of Je(n))r+=i.fetchedSize();return r}async getLines(e,A,n,r){let i,o={},s,c;typeof r=="function"?s=r:(o=r,s=r.lineCallback,i=r.signal,c=r.onProgress);let a=await this.index.getMetadata(o),g=A??0,l=n??a.maxRefLength;if(g>l)throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(g===l)return;let Q=this.withCachedContainers(await this.index.blocksForRange(e,g,l,o)),I=a.format==="VCF",B=a.columnNumbers.ref||0,E=a.columnNumbers.start||0,d=I?8:a.columnNumbers.end||0,p=Math.max(B,E,d),u=a.metaChar?.charCodeAt(0),m=a.coordinateType==="1-based-closed"?-1:0,C=new TextEncoder,D=new TextDecoder,x=C.encode(e),f=new Int32Array(p+1),w=a.format==="GAF"?{start:g,end:l,pathCol:E,metaCharCode:u,decoder:D,callback:s}:void 0,b=0;for(let k of Q)b+=k.fetchedSize();let y=0;c?.(0,b);let R=1,U=[],h=k=>{for(;U.length<Math.min(k,Q.length);){let F=Q[U.length];this.requested.set(F.toString(),F);let L=this.chunkCache.get(F,i);L.catch(()=>{}),U.push(L)}};h(1);for(let k=0,F=Q.length;k<F;k++){let L=Q[k],{segments:N,cpositions:v,dpositions:_}=await U[k];y+=L.fetchedSize(),c?.(y,b);let G=L.minv.dataPosition;if(w){if(Vt(N,(H,z)=>Ts(H,z,v,_,G,w)))return}else if(Vt(N,(H,z)=>{let S=0,J=0;for(;S<H.length;){let M=H.indexOf(qe,S);if(M===-1)break;let Y=S+z+G;for(;J<_.length&&Y>=_[J];)J++;if(u!==void 0&&H[S]===u){S=M+1;continue}f[0]=S-1;for(let X=0;X<p;X++){let T=f[X],O=T<M?H.indexOf(tn,T+1):-1;f[X+1]=O===-1||O>=M?M:O}let K=f[B-1]+1,W=f[B]-K;if(W!==x.length){S=M+1;continue}let eA=!0;for(let X=0;X<W;X++)if(H[K+X]!==x[X]){eA=!1;break}if(!eA){S=M+1;continue}let tA=Oe(H,f[E-1]+1,f[E])+m;if(tA>=l)return!0;let V;if(d===0||d===E?V=tA+1:I?V=Us(H,tA,f[3]+1,f[4],f[d-1]+1,f[d],f[5]):V=Oe(H,f[d-1]+1,f[d]),V>g){let X=H[M-1]===Si?M-1:M,T=D.decode(H.subarray(S,X));s(T,vi(v,_,J,S+z,G),tA,V)}S=M+1}return!1}))return;R=Math.min(R*2,_s),h(k+1+R)}}async getMetadata(e={}){return this.index.getMetadata(e)}async readHeaderBytes(e){let{firstDataLine:A,maxBlockSize:n}=await this.getMetadata(e);if(A?.blockPosition===0&&A.dataPosition===0)return new Uint8Array(0);let r=(A?.blockPosition??0)+n,i=await this.filehandle.read(r,0,e);return se(i)}async parseHeader(e){let{metaChar:A,skipLines:n=0}=await this.getMetadata(e),r=await this.readHeaderBytes(e);return{header:Fi.decode(A?Di(r,A):r),skippedLines:n>0?Ks(r,n):[]}}getParsedHeader(e={}){return this.headerCache.get("header",e.signal,A=>this.parseHeader({...e,signal:A}))}async getHeaderBuffer(e={}){let{metaChar:A}=await this.getMetadata(e),n=await this.readHeaderBytes(e);return A?Di(n,A):n}async getSkippedLines(e={}){let{skipLines:A=0}=await this.getMetadata(e);return A<=0?[]:(await this.getParsedHeader(e)).skippedLines}async getHeader(e={}){return(await this.getParsedHeader(e)).header}async getHeaderLines(e={}){let{header:A,skippedLines:n}=await this.getParsedHeader(e);return(A?A.split(/\r?\n/):n).filter(Boolean)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}async lineCount(e,A={}){return this.index.lineCount(e,A)}async readChunk(e,A={}){let n=await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,A);FA(A.signal);let r=await this.bgzfWorkerPool;return Pt(n,e,r)}};var Os=t=>({type:"fileLocation",defaultValue:{uri:t,locationType:"UriLocation"}}),Bc=(t,e="")=>rn(t,{indexType:{model:on.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:Os(e)});function qs(t,e,A){return{indexType:A?"CSI":"TBI",location:{uri:`${t}.${A?"csi":"tbi"}`,baseUri:e}}}function Ec(t){let{walksUri:e,baseUri:A,csi:n}=t;if(typeof e!="string")return t;let r=`${e}.walks.bed.gz`;return{...t,walksLocation:{uri:r,baseUri:A},walksIndex:qs(r,A,n)}}function dc(t,e,A){let n=t.pluginManager;return new zA({filehandle:sn(t.getConf(e),n),...an(t.getConf([...A,"location"]),t.getConf([...A,"indexType"]),n)})}function Zs(t){return`${t.assemblyName} ${t.refName} is not in this graph's index; a graph with PanSN names (GRCh38#0#chr1) needs ${t.assemblyName} mapped to its prefix in assemblyNameToPanSN`}var Ri=class{constructor(e,A){this.file=e;this.adapter=A;this.lookup=cn({setup:async e=>WA(await this.names(e))})}async names(e){return(await this.file.getReferenceSequenceNames(e)).filter(n=>!n.includes("~"))}async assemblyRefNames(e={}){let A=await this.names(e),n=ge(this.adapter,e.assemblyName),r=A.filter(i=>Ze(i,n)).map(i=>nn(i));return r.length>0?[...new Set(r)]:A}async resolve(e,A){let n=await this.lookup(A);return VA(n,ge(this.adapter,e.assemblyName),e.refName)}async resolveMapped(e,A){let n=await this.resolve(e,A);if(n===void 0&&e.assemblyName){let r=await this.names(A),i=ge(this.adapter,e.assemblyName);if(r.every(o=>o.includes("#"))&&!r.some(o=>Ze(o,i)))throw new Error(Zs(e))}return n}async resolveForCut(e,A){let n=await this.resolveMapped(e,A);if(n===void 0)throw new Error(`This graph has nothing on ${e.assemblyName} ${e.refName}`);return n}async regionBytes(e,A={},n=async(r,i)=>i.start){let r=[];for(let i of e){let o=await this.resolve(i,A);o!==void 0&&r.push({refName:o,start:await n(o,i),end:i.end})}return rr(this.file,r,A)}};export{se as a,Ps as b,cn as c,aA as d,Pe as e,UA as f,NA as g,Yi as h,At as i,Xi as j,gt as k,Be as l,sA as m,Ee as n,so as o,qn as p,co as q,Io as r,de as s,Eo as t,lt as u,uo as v,Et as w,dt as x,No as y,Sa as z,Os as A,Bc as B,qs as C,Ec as D,dc as E,Ri as F};
|
|
3
|
-
//# sourceMappingURL=chunk-EENENDGZ.js.map
|
/package/dist/chunks/{GbzBaseSyntenyAdapter-GX3NGJHG.js.map → GbzBaseSyntenyAdapter-BG6FNGHY.js.map}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|