jbrowse-plugin-graphgenomeviewer 7.3.0 → 7.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{GbzBaseSyntenyAdapter-FXMGIM7Z.js → GbzBaseSyntenyAdapter-NYI2YVNG.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-QCOMFPLL.js → MinigraphBubbleAdapter-ABZPIZYV.js} +2 -2
- package/dist/chunks/{RgfaTabixAdapter-O3NMNRZ2.js → RgfaTabixAdapter-3NQC5QPT.js} +2 -2
- package/dist/chunks/{WalkTabixSyntenyAdapter-7VDCNSFD.js → WalkTabixSyntenyAdapter-ZJJ4SQHH.js} +2 -2
- package/dist/chunks/chunk-BKBH3WGW.js +3 -0
- package/dist/chunks/chunk-BKBH3WGW.js.map +7 -0
- package/dist/chunks/{chunk-YKSUKPYY.js → chunk-QTOA4RB7.js} +2 -2
- package/dist/chunks/{chunk-2O3YVA2I.js → chunk-YXVEGNFQ.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/configSchema.ts +4 -4
- package/src/RgfaTabixAdapter/test_data/{walks3_follow.GRCh38.walks.bed.gz → walks4_follow.GRCh38.walks.bed.gz} +0 -0
- package/src/RgfaTabixAdapter/test_data/{walks3_header.GRCh38.walks.bed.gz → walks4_header.GRCh38.walks.bed.gz} +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_inversion.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_inversion.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_lanepairs.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_lanepairs.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_maxnode.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_rejoin.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/{walks3_twopart.GRCh38.walks.bed.gz → walks4_twopart.GRCh38.walks.bed.gz} +0 -0
- package/src/RgfaTabixAdapter/walkFiles.test.ts +9 -9
- package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +5 -5
- package/src/WalkTabixSyntenyAdapter/configSchema.ts +3 -3
- package/src/WalkTabixSyntenyAdapter/gbzParity.test.ts +2 -2
- package/src/panSNAliases/panSNAliases.test.ts +2 -2
- package/src/version.ts +1 -1
- package/dist/chunks/chunk-B2EP6FOQ.js +0 -3
- package/dist/chunks/chunk-B2EP6FOQ.js.map +0 -7
- package/src/RgfaTabixAdapter/test_data/walks3_inversion.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks3_inversion.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks3_lanepairs.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks3_lanepairs.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks3_maxnode.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks3_rejoin.GRCh38.walks.bed.gz +0 -0
- /package/dist/chunks/{GbzBaseSyntenyAdapter-FXMGIM7Z.js.map → GbzBaseSyntenyAdapter-NYI2YVNG.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-QCOMFPLL.js.map → MinigraphBubbleAdapter-ABZPIZYV.js.map} +0 -0
- /package/dist/chunks/{RgfaTabixAdapter-O3NMNRZ2.js.map → RgfaTabixAdapter-3NQC5QPT.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-7VDCNSFD.js.map → WalkTabixSyntenyAdapter-ZJJ4SQHH.js.map} +0 -0
- /package/dist/chunks/{chunk-YKSUKPYY.js.map → chunk-QTOA4RB7.js.map} +0 -0
- /package/dist/chunks/{chunk-2O3YVA2I.js.map → chunk-YXVEGNFQ.js.map} +0 -0
- /package/src/RgfaTabixAdapter/test_data/{walks3_follow.GRCh38.walks.bed.gz.tbi → walks4_follow.GRCh38.walks.bed.gz.tbi} +0 -0
- /package/src/RgfaTabixAdapter/test_data/{walks3_header.GRCh38.walks.bed.gz.tbi → walks4_header.GRCh38.walks.bed.gz.tbi} +0 -0
- /package/src/RgfaTabixAdapter/test_data/{walks3_maxnode.GRCh38.walks.bed.gz.tbi → walks4_maxnode.GRCh38.walks.bed.gz.tbi} +0 -0
- /package/src/RgfaTabixAdapter/test_data/{walks3_rejoin.GRCh38.walks.bed.gz.tbi → walks4_rejoin.GRCh38.walks.bed.gz.tbi} +0 -0
- /package/src/RgfaTabixAdapter/test_data/{walks3_twopart.GRCh38.walks.bed.gz.tbi → walks4_twopart.GRCh38.walks.bed.gz.tbi} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jbrowse-plugin-graphgenomeviewer",
|
|
3
|
-
"version": "7.3.
|
|
3
|
+
"version": "7.3.1",
|
|
4
4
|
"description": "JBrowse 2 graph genome (pangenome) view: rGFA reference-anchored layouts, the Bandage force-directed engine, and haplotype lanes read from a gbz-base database",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"repository": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@jbrowse/core": "5.0.0-beta.11",
|
|
33
33
|
"@jbrowse/display-kit": "5.0.0-beta.11",
|
|
34
34
|
"@jbrowse/display-ui": "5.0.0-beta.11",
|
|
35
|
-
"@jbrowse/graph-walks": "^
|
|
35
|
+
"@jbrowse/graph-walks": "^3.0.0",
|
|
36
36
|
"@jbrowse/render-core": "5.0.0-beta.11",
|
|
37
37
|
"@jbrowse/synteny-core": "5.0.0-beta.11"
|
|
38
38
|
},
|
|
@@ -30,8 +30,8 @@ import type { Instance } from '@jbrowse/mobx-state-tree'
|
|
|
30
30
|
* `walksUri` takes the prefix of a walk file in place of `uri`, and resolves
|
|
31
31
|
* `<walksUri>.walks.bed.gz` and its `.tbi`. `gfa-to-tabix --walks -o <prefix>`
|
|
32
32
|
* writes one per reference sample, so a track names one as
|
|
33
|
-
* `<prefix>.<sample>`. The adapter reads walk format
|
|
34
|
-
* writes from 1.
|
|
33
|
+
* `<prefix>.<sample>`. The adapter reads walk format 4, which gfa-to-tabix
|
|
34
|
+
* writes from 1.2, through @jbrowse/graph-walks. Such a graph's cut carries
|
|
35
35
|
* the haplotypes' walks, and `defaultHaplotypes` names the ones it is cut for
|
|
36
36
|
* until the user picks others.
|
|
37
37
|
*
|
|
@@ -48,7 +48,7 @@ import type { Instance } from '@jbrowse/mobx-state-tree'
|
|
|
48
48
|
* ```js
|
|
49
49
|
* {
|
|
50
50
|
* type: 'RgfaTabixAdapter',
|
|
51
|
-
* walksUri: 'https://
|
|
51
|
+
* walksUri: 'https://jbrowse.org/demos/hprc/hprc-v2.1-mc-grch38-f4.GRCh38',
|
|
52
52
|
* assemblyNameToPanSN: { hg38: 'GRCh38' },
|
|
53
53
|
* defaultHaplotypes: ['HG002', 'HG00733', 'HG02257', 'NA19240'],
|
|
54
54
|
* }
|
|
@@ -152,7 +152,7 @@ const RgfaTabixAdapter = ConfigurationSchema(
|
|
|
152
152
|
),
|
|
153
153
|
/**
|
|
154
154
|
* #slot
|
|
155
|
-
* a `gfa-to-tabix --walks` file in walk format
|
|
155
|
+
* a `gfa-to-tabix --walks` file in walk format 4: per reference chunk,
|
|
156
156
|
* the reference's path, the ways haplotypes leave it and each haplotype's
|
|
157
157
|
* piece. Unset means the graph has no walks.
|
|
158
158
|
*/
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -17,9 +17,9 @@ import type { WalkCut } from './walkCut.ts'
|
|
|
17
17
|
import type { GraphTables } from '@jbrowse/bandage-core/gfa/graphTables'
|
|
18
18
|
|
|
19
19
|
// chr22 of HPRC v2.1 at base level, one walk file per reference in walk
|
|
20
|
-
// format
|
|
20
|
+
// format 4, built under ~/work/scratch/walks-20261008/f4. Skipped where the
|
|
21
21
|
// files are absent.
|
|
22
|
-
const chr22 = '/home/cdiesh/work/scratch/walks-20261008/
|
|
22
|
+
const chr22 = '/home/cdiesh/work/scratch/walks-20261008/f4/chr22'
|
|
23
23
|
const present = ['GRCh38', 'CHM13'].every(sample =>
|
|
24
24
|
existsSync(`${chr22}.${sample}.walks.bed.gz`),
|
|
25
25
|
)
|
|
@@ -34,27 +34,27 @@ const fixture = (name: string) =>
|
|
|
34
34
|
// W HG002 1 chr1 >1>2>7>4>5>6 7 replaces 3
|
|
35
35
|
// W HG002 2 chr1 >1>2>3>4>8>6 8 replaces 5
|
|
36
36
|
// W HG00097 1 chr1 >1>2>3>4>5>6
|
|
37
|
-
const headerPrefix = fixture('
|
|
37
|
+
const headerPrefix = fixture('walks4_header')
|
|
38
38
|
|
|
39
|
-
//
|
|
39
|
+
// walks4_header's walks with the reference named as pggb names a P-line,
|
|
40
40
|
// GRCh38#chr1
|
|
41
|
-
const twoPartPrefix = fixture('
|
|
41
|
+
const twoPartPrefix = fixture('walks4_twopart')
|
|
42
42
|
|
|
43
43
|
// An unchopped graph, node 1 spanning 0-2600 and filed under chunk 0 alone:
|
|
44
44
|
// W GRCh38 0 chr1 >1>2>4
|
|
45
45
|
// W HG002 1 chr1 >1>3>4 3 replaces 2
|
|
46
|
-
const maxNodePrefix = fixture('
|
|
46
|
+
const maxNodePrefix = fixture('walks4_maxnode')
|
|
47
47
|
|
|
48
48
|
// Twelve 500 bp reference nodes over chr1:0-6000 in one 10 kb chunk:
|
|
49
49
|
// W GRCh38 0 chr1 >1>2>3>4>5>6>7>8>9>10>11>12
|
|
50
50
|
// W HG002 1 chr1 >1>2>3>20>21>9>10>11>12 20 and 21, 2 kb each, replace 4-8
|
|
51
51
|
// W HG002 2 chr1 >1>2>3>4>5>6>7>8>9>10>11>12
|
|
52
52
|
// W HG003 1 chr1 >1>2>3>22 the contig ends on 22, 300 bp
|
|
53
|
-
const rejoinPrefix = fixture('
|
|
53
|
+
const rejoinPrefix = fixture('walks4_rejoin')
|
|
54
54
|
|
|
55
55
|
// The same graph in 1 kb chunks, whose rows name the chunks their path goes on
|
|
56
56
|
// in: HG002#1 leaves chunk 1000 for 20 and 21 and rejoins at 9, in chunk 4000
|
|
57
|
-
const followPrefix = fixture('
|
|
57
|
+
const followPrefix = fixture('walks4_follow')
|
|
58
58
|
|
|
59
59
|
function makeAdapter(prefix: string, slots = {}) {
|
|
60
60
|
const local = (path: string) => ({
|
|
@@ -215,7 +215,7 @@ test('a cut for some haplotypes keeps a reference walk named without a haplotype
|
|
|
215
215
|
|
|
216
216
|
test('a format 1 walk file is refused, with what to rebuild it with', async () => {
|
|
217
217
|
const cut = makeAdapter(fixture('walks1_header')).getSubgraph(chr1(0, 600))
|
|
218
|
-
await expect(cut).rejects.toThrow(/rebuild it with gfa-to-tabix 1.
|
|
218
|
+
await expect(cut).rejects.toThrow(/rebuild it with gfa-to-tabix 1.2/)
|
|
219
219
|
})
|
|
220
220
|
|
|
221
221
|
test('a cut over walkByteBudget reads no row', async () => {
|
|
@@ -34,7 +34,7 @@ const fixture = (name: string) =>
|
|
|
34
34
|
|
|
35
35
|
function makeAdapter(
|
|
36
36
|
slots: Record<string, unknown> = {},
|
|
37
|
-
name = '
|
|
37
|
+
name = 'walks4_header',
|
|
38
38
|
) {
|
|
39
39
|
const local = (path: string) => ({
|
|
40
40
|
localPath: path,
|
|
@@ -111,7 +111,7 @@ test('a fetch for some haplotypes answers those lanes in the order asked, named
|
|
|
111
111
|
})
|
|
112
112
|
|
|
113
113
|
test('a fetch for some haplotypes reads them against a reference walk named without a haplotype', async () => {
|
|
114
|
-
const found = await feats(makeAdapter({}, '
|
|
114
|
+
const found = await feats(makeAdapter({}, 'walks4_twopart'), {
|
|
115
115
|
haplotypes: ['HG002#1'],
|
|
116
116
|
})
|
|
117
117
|
expect(found.map(summary)).toEqual([
|
|
@@ -172,7 +172,7 @@ test('a batch of lane pairs answers each pair what it answers alone', async () =
|
|
|
172
172
|
expect(batch).toHaveLength(2)
|
|
173
173
|
})
|
|
174
174
|
|
|
175
|
-
//
|
|
175
|
+
// walks4_lanepairs, a 5.5 kb reference of 2 kb flanks around three 500 bp
|
|
176
176
|
// nodes, in 1 kb chunks:
|
|
177
177
|
// W GRCh38 0 chr1 >1>2>3>4>5
|
|
178
178
|
// W HG002 1 chr1 >1>2>3>4>5
|
|
@@ -180,7 +180,7 @@ test('a batch of lane pairs answers each pair what it answers alone', async () =
|
|
|
180
180
|
// W HG00097 1 chr1 >1>2>6>2>6>2>3>4>5 2 three times, 6 a 30 bp spacer
|
|
181
181
|
test('a lane pair matches through a copy-number array, and draws an inversion between the lanes as a reverse-strand record', async () => {
|
|
182
182
|
const found = await firstValueFrom(
|
|
183
|
-
makeAdapter({}, '
|
|
183
|
+
makeAdapter({}, 'walks4_lanepairs')
|
|
184
184
|
.getFeatures(
|
|
185
185
|
{ ...window, end: 5500 },
|
|
186
186
|
{
|
|
@@ -554,7 +554,7 @@ test('a walk turned against the reference for 10 kb or more gains a reverse-stra
|
|
|
554
554
|
// W HG00097 1 chr1 >1>2>3>4>5
|
|
555
555
|
test('the anchor window answers a haplotype turned against the reference with a reverse-strand record of the turned stretch', async () => {
|
|
556
556
|
const records = await firstValueFrom(
|
|
557
|
-
makeAdapter({}, '
|
|
557
|
+
makeAdapter({}, 'walks4_inversion')
|
|
558
558
|
.getFeatures({ ...window, end: 55_000 }, {})
|
|
559
559
|
.pipe(toArray()),
|
|
560
560
|
)
|
|
@@ -25,14 +25,14 @@ import type { Instance } from '@jbrowse/mobx-state-tree'
|
|
|
25
25
|
*
|
|
26
26
|
* `walksUri` takes the prefix of one reference's walk file, `<prefix>.<sample>`,
|
|
27
27
|
* and resolves `<walksUri>.walks.bed.gz` and its `.tbi`. The adapter reads walk
|
|
28
|
-
* format
|
|
28
|
+
* format 4, which gfa-to-tabix writes from 1.2, through @jbrowse/graph-walks.
|
|
29
29
|
* Only a window on the anchor is answered.
|
|
30
30
|
*
|
|
31
31
|
* #example
|
|
32
32
|
* ```js
|
|
33
33
|
* {
|
|
34
34
|
* type: 'WalkTabixSyntenyAdapter',
|
|
35
|
-
* walksUri: 'https://
|
|
35
|
+
* walksUri: 'https://jbrowse.org/demos/hprc/hprc-v2.1-mc-grch38-f4.GRCh38',
|
|
36
36
|
* assemblyNames: ['hg38'],
|
|
37
37
|
* assemblyNameToPanSN: { hg38: 'GRCh38' },
|
|
38
38
|
* }
|
|
@@ -56,7 +56,7 @@ const WalkTabixSyntenyAdapter = ConfigurationSchema(
|
|
|
56
56
|
},
|
|
57
57
|
/**
|
|
58
58
|
* #slot
|
|
59
|
-
* a `gfa-to-tabix --walks` file in walk format
|
|
59
|
+
* a `gfa-to-tabix --walks` file in walk format 4
|
|
60
60
|
*/
|
|
61
61
|
walksLocation: fileLocationSlot('/path/to/graph.walks.bed.gz'),
|
|
62
62
|
/**
|
|
@@ -12,10 +12,10 @@ import type { Feature } from '@jbrowse/core/util'
|
|
|
12
12
|
import type { SyntenyMate } from '@jbrowse/synteny-core'
|
|
13
13
|
|
|
14
14
|
// chr22 of HPRC v2.1 as a gbz-base database and as gfa-to-tabix's GRCh38
|
|
15
|
-
// walk file in walk format
|
|
15
|
+
// walk file in walk format 4, built 2026-10-08 and 2026-10-20. Skipped where
|
|
16
16
|
// the files are absent.
|
|
17
17
|
const dir = '/home/cdiesh/work/scratch/walks-20261008'
|
|
18
|
-
const walkPrefix = `${dir}/
|
|
18
|
+
const walkPrefix = `${dir}/f4/chr22.GRCh38`
|
|
19
19
|
const present =
|
|
20
20
|
existsSync(`${walkPrefix}.walks.bed.gz`) && existsSync(`${dir}/chr22.gbz.db`)
|
|
21
21
|
|
|
@@ -123,11 +123,11 @@ describe("a lanes track anchored on an alias of the window's assembly", () => {
|
|
|
123
123
|
{
|
|
124
124
|
type: 'WalkTabixSyntenyAdapter',
|
|
125
125
|
walksLocation: local(
|
|
126
|
-
'../RgfaTabixAdapter/test_data/
|
|
126
|
+
'../RgfaTabixAdapter/test_data/walks4_header.GRCh38.walks.bed.gz',
|
|
127
127
|
),
|
|
128
128
|
walksIndex: {
|
|
129
129
|
location: local(
|
|
130
|
-
'../RgfaTabixAdapter/test_data/
|
|
130
|
+
'../RgfaTabixAdapter/test_data/walks4_header.GRCh38.walks.bed.gz.tbi',
|
|
131
131
|
),
|
|
132
132
|
},
|
|
133
133
|
assemblyNames: ['GRCh38'],
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '7.3.
|
|
1
|
+
export const version = '7.3.1'
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{b as Ft}from"./chunk-MVVXRZXV.js";import{d as bt,g as De,h as qA}from"./chunk-7HWHWPRW.js";import{a as Rt,b as vt}from"./chunk-OGQ6OQDN.js";import{g as St}from"./chunk-NDRLCGPC.js";var aA=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"],Jt=t=>aA!=null&&t in Object(aA)?aA[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 so=Jt("BaseFeatureDataAdapter");var Gt=Jt("cachedSetup");var ao=aA&&aA.__esModule?aA.default:aA;var gA=class extends Error{constructor(e,A,n,i){super(e),this.regionTooLarge=!0,this.name="NodeLimitError",this.limit=A,this.windowBp=n,this.fitsBp=i}},dA="#";function Ne(t){return t.split(dA)[0]}function ye(t){let e=t.split(dA);return e.length>=3?e.slice(2).join(dA):e.length===2?e[1]:t}function yA(t){let e=t.split(dA);return e.length>=3?`${e[0]}${dA}${e[1]}`:void 0}function ZA(t,e){return e!==void 0&&(t===e||t.startsWith(e+dA))}var Lt=t=>Number.parseFloat(t.toPrecision(3));function xA(t){let e=Lt(t/1e6);return e>=1?`${e.toLocaleString("en-US")}Mbp`:t>=1e3?`${Lt(t/1e3).toLocaleString("en-US")}Kbp`:`${Math.floor(t)}bp`}var G=t=>(t-(t&1))/2,P=t=>t&1?t-1:t+1;function bA(t,e,A){if(t===".")return A;let n=0,i=!1;for(let r=0;r<=t.length;r++){let o=r<t.length?t.charCodeAt(r):44;if(o===44){let a=i?-n:n,C=a&1;e.id+=(a-C)/2,A.push(e.id*2+C),n=0,i=!1}else o===45?i=!0:n=n*10+(o-48)}return A}function OA(t){return t==="."?[]:t.split(",").map(Number)}function XA(t,e){return t>P(e)?[P(e),P(t)]:[t,e]}function xe(t,e){let A=t.lastIndexOf(":");return{refName:t[3]==="Z"?t.slice(5,A):e,start:+t.slice(A+1)}}function Mt(t,e,A){let n={};for(let i=e;i<t.length;i++){let r=t[i],o=r.slice(0,2);if(o==="pv")n.prev=xe(r,A);else if(o==="nx")n.next=xe(r,A);else if(o==="pg"||o==="ng"){let a=o==="pg"?"prevRecord":"nextRecord";n[a]={...n[a],bp:+r.slice(5)}}else if(o==="pr"||o==="nr"){let a=o==="pr"?"prevRecord":"nextRecord";n[a]={bp:0,...n[a],chunk:xe(r,A)}}}return n}var be=class{constructor(){this.handles=[],this.before=[0],this.occurrences=new Map}add(e,A){for(let n=0;n<e.length;n++){let i=e[n],r=this.handles.length;this.handles.push(i),this.before.push(this.before[r]+A[n]);let o=G(i),a=this.occurrences.get(o);a?a.push(r):this.occurrences.set(o,[r])}}bp(e){return this.before[e]}first(e){var A;return(A=this.occurrences.get(G(e)))===null||A===void 0?void 0:A[0]}nearest(e,A){var n;let i;for(let r of(n=this.occurrences.get(G(e)))!==null&&n!==void 0?n:[])(i===void 0||Math.abs(r-A)<=Math.abs(i-A))&&(i=r);return i}reach(e,A,n){var i;let r=this.handles[e]===A,o;for(let a of(i=this.occurrences.get(G(n)))!==null&&i!==void 0?i:[])r&&a>=e&&this.handles[a]===n?(o===void 0||a<o)&&(o=a):!r&&a<=e&&P(this.handles[a])===n&&(o===void 0||a>o)&&(o=a);return o}handleAt(e,A){return A?this.handles[e]:P(this.handles[e])}},q=class extends Error{},Fe=(t,e)=>e?t.exit===-1?-1:P(t.exit):t.entry,Ut=(t,e)=>e?t.entry===-1?-1:P(t.entry):t.exit,PA=(t,e,A)=>e?P(t.interior[t.interior.length-1-A]):t.interior[A];function Mi(t){let e=[];if(t!=="."){let A=0,n=0,i=!1,r=0,o=!1;for(let a=0;a<=t.length;a++){let C=a<t.length?t.charCodeAt(a):44;if(C===44){let s=i?-n:n,g=o?r:s,f=g&1;A+=(g-f)/2,e.push(A,f,o?s:0),n=0,i=!1,o=!1}else C===58?(r=i?-n:n,n=0,i=!1,o=!0):C===45?i=!0:n=n*10+(C-48)}}return e}function Yt(t,e,A,n,i,r){let o=n.indexOf(":"),a=A+ +(o<0?n:n.slice(0,o)),C=o>=0,s=C?+n.slice(o+1):0,g=u=>{let d=e[u];if(!d)throw new q(`route ${u} is not in the chunk`);return d},f=0;if(i.length>0&&Fe(g(i[0]),i[1]===1)===-1){if(!r.route(i[0],i[1]===1))return;f=3}let h=A,Q=t.first(h);if(Q===void 0)throw new q("a walk row starts off its chunk");r.step(h);let E=(u,d)=>{let k=t.handles[Q]===h,p=C?Q+(k?d:-d):t.reach(Q,h,u);if(p===void 0||p<0||p>=t.handles.length)throw new q("a walk row runs off its chunk");p!==Q&&r.stretch(Q,p,k),Q=p,h=t.handleAt(p,k)};for(;f<i.length;f+=3){let u=i[f],d=i[f+1]===1,k=g(u),p=Fe(k,d);if(p===-1)throw new q("an open route after the first choice");if(E(p,i[f+2]),!r.route(u,d))return;let m=Ut(k,d);if(m===-1)return;if(h=m,Q=t.nearest(h,Q),Q===void 0)throw new q("a route lands off its chunk");r.step(h)}if(E(a,s),h!==a)throw new q("a walk row misses its last handle")}function _i(t,e,A,n,i){let r=new Int32Array(i),o=new Uint8Array(i),a=0,C=s=>{if(a>=i)throw new q("a walk row decodes to more steps than it states");r[a]=G(s),o[a++]=s&1};if(Yt(t,e,+A[9],A[10],n,{step:C,stretch(s,g,f){if(f)for(let h=s+1;h<=g;h++)C(t.handles[h]);else for(let h=s-1;h>=g;h--)C(P(t.handles[h]))},route(s,g){let f=e[s];for(let h=0;h<f.interior.length;h++)C(PA(f,g,h));return!0}}),a!==i)throw new q(`a walk row decodes to ${a} steps, not ${i}`);return{ids:r,rev:o}}function _t(t,e,A,n,i){let r=t.slice(e).find(a=>a.startsWith("SQ:Z:"));if(r===void 0)return;let o=5;for(let a=0;a<A.length;a++){let C=n[a];i.set(A[a],r.slice(o,o+C)),o+=C}}function Ht(t,e,A=!1){var n,i,r;let o=new be,a=new Map,C=[],s={sequences:new Map,rows:[],nodes:new Map,ends:[],chunk:{path:o,routes:C,walks:[],lengths:a}},g={id:0},f=t.filter(Q=>Q[3]==="ref").sort((Q,E)=>+Q[6]-+E[6]);for(let Q of f){let E=Q[0],u=bA(Q[9],{id:0},[]),d=OA(Q[10]),k=+Q[6];o.add(u,d),A&&_t(Q,11,u.map(G),d,s.sequences);let p=k;for(let m=0;m<u.length;m++){let I=G(u[m]),l=d[m];a.set(I,l),s.nodes.has(I)||s.nodes.set(I,{refName:Q[4],start:p,end:p+l,rank:0}),p+=l}s.ends.push({name:Q[4],fragStart:+Q[5],piece:+Q[7],first:u[0],last:u.at(-1)}),(e===void 0||e(Q[4]))&&s.rows.push({chunkStart:+Q[1],name:Q[4],fragStart:+Q[5],hapOffset:k,piece:+Q[7],n:u.length,steps:{ids:Int32Array.from(u,G),rev:Uint8Array.from(u,m=>m&1)},...Mt(Q,11,E)})}for(let Q of t)if(Q[3]==="nodes"){let E=OA(Q[4]),u=OA(Q[5]),d=0;for(let k=0;k<E.length;k++)d+=E[k],E[k]=d,a.set(d,u[k]);A&&_t(Q,6,E,u,s.sequences)}else if(Q[3]==="route"){let E=bA(Q[4],g,[]),u=bA(Q[5],g,[]),d=bA(Q[6],g,[]);C.push({entry:(n=E[0])!==null&&n!==void 0?n:-1,interior:u,exit:(i=d[0])!==null&&i!==void 0?i:-1})}let h=Q=>{let E=C[Q];if(!E)throw new q(`route ${Q} is not in the chunk`);return E};for(let Q of t){if(Q[3]!=="walk")continue;let E=Mi(Q[11]);s.chunk.walks.push({cols:Q,choices:E});let u=Q[4],d=+Q[9],k=Q[10],p=k.indexOf(":"),m=d,I=d+ +(p<0?k:k.slice(0,p));if(E.length>0){let l=h(E[0]),B=E[1]===1;Fe(l,B)===-1&&(m=PA(l,B,0));let c=E.length-3,w=h(E[c]),N=E[c+1]===1;Ut(w,N)===-1&&(I=PA(w,N,w.interior.length-1))}if(s.ends.push({name:u,fragStart:+Q[5],piece:+Q[7],first:m,last:I}),e===void 0||e(u)){let l=+Q[8];for(let B=0;B<E.length;B+=3)for(let c of h(E[B]).interior){let w=G(c);if(!s.nodes.has(w)){let N=(r=a.get(w))!==null&&r!==void 0?r:0;s.nodes.set(w,{refName:u,start:0,end:N,rank:1})}}s.rows.push({chunkStart:+Q[1],name:u,fragStart:+Q[5],hapOffset:+Q[6],piece:+Q[7],n:l,steps:_i(o,C,Q,E,l),...Mt(Q,12,Q[0])})}}return s}function Kt(t,e,A,n){let i=new Map;for(let{path:r,routes:o,walks:a,lengths:C}of t){let s=r.handles;for(let u=1;u<s.length;u++)e.has(G(s[u-1]))&&e.has(G(s[u]))&&n(...XA(s[u-1],s[u]));let g=new Uint8Array(o.length);for(let u=0;u<o.length;u++){let{entry:d,interior:k,exit:p}=o[u],m=!1,I=d;for(let l of k){let B=e.has(G(l));m||(m=B),B&&I!==-1&&e.has(G(I))&&n(...XA(I,l)),I=l}I!==-1&&p!==-1&&e.has(G(I))&&e.has(G(p))&&n(...XA(I,p)),g[u]=m?1:0}let f=u=>{var d;return(d=C.get(G(u)))!==null&&d!==void 0?d:0},h=new Float64Array(o.length).fill(-1),Q=u=>(h[u]<0&&(h[u]=o[u].interior.reduce((d,k)=>d+f(k),0)),h[u]),E=new Uint8Array(o.length);for(let{cols:u,choices:d}of a){let k=0;for(let I=0;I<d.length;I+=3){let l=d[I];g[l]&&!E[l]&&k++}if(k===0)continue;let p=u[4],m=+u[6];Yt(r,o,+u[9],u[10],d,{step(I){m+=f(I)},stretch(I,l,B){m+=B?r.bp(l+1)-r.bp(I+1):r.bp(I)-r.bp(l)},route(I,l){if(!g[I]||E[I])return m+=Q(I),!0;E[I]=1;let B=o[I];for(let c=0;c<B.interior.length;c++){let w=PA(B,l,c),N=G(w),D=f(w);if(e.has(N)){let y=i.get(N);(!y||p<y.refName||p===y.refName&&m<y.start)&&i.set(N,{refName:p,start:m,end:m+D,rank:1})}m+=D}return k--,k>0}})}}for(let[r,o]of i)A(r,o)}function Ui(t){let e=[];for(let A of t){if(A[3]!=="ref")continue;let n=bA(A[9],{id:0},[]),i=OA(A[10]),r=+A[6];for(let o=0;o<n.length;o++){let a=i[o];e.push({id:G(n[o]),refName:A[4],start:r,end:r+a,rank:0}),r+=a}}return e}function Tt(t){let e=new Map;for(let n of t){let i=`${n.name} ${n.fragStart}`,r=e.get(i);r||(r=new Map,e.set(i,r)),r.set(n.piece,n)}let A=[];for(let n of e.values())for(let[i,r]of n){let o=n.get(i+1);o&&A.push(XA(r.last,o.first))}return A}var qt=["elsewhere","break","end"];function Se(t,e){let A=new RegExp(`(?:^|\\t)${e}:i:(\\d+)`).exec(t);return A?+A[1]:void 0}function Re(t){var e,A,n;let i={references:[],haplotypes:[]};for(let r of t){let[o,a=""]=r.split(" ");o==="#reference"?i.references.push(a):o==="#haplotype"?i.haplotypes.push(a):((e=i.format)!==null&&e!==void 0||(i.format=Se(r,"format")),(A=i.chunk)!==null&&A!==void 0||(i.chunk=Se(r,"chunk")),(n=i.maxNode)!==null&&n!==void 0||(i.maxNode=Se(r,"maxnode")))}return i}function ve(t,e){return t===void 0?1:Math.max(1,Math.ceil(t/e))}function zA(t,e,A=1){return Math.max(0,(Math.floor(t/e)-A)*e)}function Xt(t,e){return t===void 0||t.length===0?void 0:A=>ZA(A,e)||t.some(n=>ZA(A,n))}function Je(t,e){var A;return Xt(t,(A=yA(e))!==null&&A!==void 0?A:e)}function jA(t){let e=new Map;for(let n of t){let i=`${n.name} ${n.fragStart}`,r=e.get(i);r?r.push(n):e.set(i,[n])}let A=[];for(let n of e.values()){n.sort((r,o)=>r.piece-o.piece);let i=0;for(let r=1;r<=n.length;r++)(r===n.length||n[r].piece!==n[r-1].piece+1)&&(A.push(Yi(n.slice(i,r))),i=r)}return A}function Yi(t){let e=t.reduce((a,C)=>a+C.n,0),A=new Int32Array(e),n=new Uint8Array(e),i=0;for(let a of t)A.set(a.steps.ids,i),n.set(a.steps.rev,i),i+=a.n;let r=t[0],o=t.at(-1);return{name:r.name,fragStart:r.fragStart,hapOffset:r.hapOffset,firstPiece:r.piece,ids:A,rev:n,prev:r.prev,next:o.next,prevRecord:r.prevRecord,nextRecord:o.nextRecord}}function WA(t,e,A){let n=I=>{var l;return((l=e.get(I))===null||l===void 0?void 0:l.onWindow)===!0},i=I=>{let l=e.get(I);return l?.rank===0?l:void 0},r=new Map,o=I=>{I&&r.set(`${I.refName}:${I.start}`,I)},a=(I,l,B)=>{let{ids:c}=I,w=l+B;for(;w>=0&&w<c.length&&i(c[w])===void 0;)w+=B;if(w<0||w>=c.length)return o(B<0?I.prev:I.next),w-B;let N=i(c[l]),D=i(c[w]);return D.refName!==A?w-B:w===l+B&&(D.start===N.end||D.end===N.start)?l:w},C=1/0,s=-1/0,g=[];for(let I of t){let{ids:l}=I,B=-1,c=-1;for(let w=0;w<l.length;w++)n(l[w])&&(B<0&&(B=w),c=w);if(B>=0){if(I.name!==A){B=a(I,B,-1),c=a(I,c,1);for(let w of[B,c]){let N=i(l[w]);N&&(C=Math.min(C,N.start),s=Math.max(s,N.end))}}g.push({run:I,first:B,last:c})}}let f=I=>{let l=i(I);return n(I)||l?.refName===A&&l.end>C&&l.start<s},h=new Set;for(let[I,l]of e)l.onWindow&&h.add(I);for(let I of g){let{ids:l}=I.run;if(I.run.name===A){for(;I.first>0&&f(l[I.first-1]);)I.first--;for(;I.last<l.length-1&&f(l[I.last+1]);)I.last++}for(let B=I.first;B<=I.last;B++)h.add(l[B])}let Q=I=>{let l=e.get(I);return l===void 0?0:l.end-l.start},E=(I,l,B)=>{let c=0;for(let w=l;w<B;w++)c+=Q(I[w]);return c},u=new Map;for(let I of t){let l=`${I.name} ${I.fragStart}`,B=u.get(l);B?B.push(I):u.set(l,[I])}let d=new Map;for(let I of u.values())I.sort((l,B)=>l.firstPiece-B.firstPiece),I.forEach((l,B)=>{d.set(l,[I[B-1],I[B+1]])});let k=I=>I.hapOffset+E(I.ids,0,I.ids.length),p=(I,l,B)=>{var c;let w=B>0?{trimmed:B}:{},N=l?I.next:I.prev;if(N){let y=(c=d.get(I))===null||c===void 0?void 0:c[l?1:0];return y?{kind:"elsewhere",chunk:N,bp:l?y.hapOffset-k(I):I.hapOffset-k(y),...w}:{kind:"elsewhere",chunk:N,...w}}let D=l?I.nextRecord:I.prevRecord;return D?{kind:"break",...D,...w}:{kind:"end",...w}},m=[];for(let{run:I,first:l,last:B}of g){let{ids:c,rev:w}=I,N=l,D=B;for(;N>0&&h.has(c[N-1]);)N--;for(;D<c.length-1&&h.has(c[D+1]);)D++;let y=I.hapOffset+E(c,0,N),x=y+E(c,N,D+1);m.push({name:I.name,fragStart:I.fragStart,hapStart:y,hapEnd:x,ids:c.subarray(N,D+1),rev:w.subarray(N,D+1),before:p(I,!1,y-I.hapOffset),after:p(I,!0,k(I)-x)})}return{kept:h,fragments:m,open:[...r.values()]}}function Zt(t){let e=[],A=new Map,n={kinds:new Uint8Array(t.length),kindNames:[...qt],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((i,r)=>{var o;if(n.kinds[r]=qt.indexOf(i.kind),n.trimmed[r]=(o=i.trimmed)!==null&&o!==void 0?o:0,"bp"in i&&i.bp!==void 0&&(n.bp[r]=i.bp),"chunk"in i&&i.chunk){let{refName:a,start:C}=i.chunk,s=A.get(a);s===void 0&&(s=e.length,A.set(a,s),e.push(a)),n.chunkRefs[r]=s,n.chunkStarts[r]=C}}),n}var FA=class{constructor(e){this.nodes=new Map,this.sequences=new Map,this.links=[],this.chunks=[],this.window=e}placeNode(e,A){if(this.nodes.has(e))return;let{window:n}=this;this.nodes.set(e,{...A,onWindow:A.rank===0&&A.refName===n.refName&&A.end>n.start-n.context&&A.start<n.end+n.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){this.chunks.length>0&&Kt(this.chunks,e,(B,c)=>{let w=this.nodes.get(B);w&&this.nodes.set(B,{...w,...c})},(B,c)=>{this.links.push(B,c)});let n=[];for(let B of e){let c=this.nodes.get(B);c&&n.push({...c,id:B})}n.sort((B,c)=>B.refName<c.refName?-1:B.refName>c.refName?1:B.start-c.start||B.id-c.id);let i=new Map,r=[],o=[],a=new Map,C=new Int32Array(n.length),s=new Int32Array(n.length),g=new Float64Array(n.length),f=new Int32Array(n.length);n.forEach(({id:B,refName:c,start:w,end:N,rank:D},y)=>{i.set(B,y),r.push(String(B));let x=a.get(c);x===void 0&&(x=o.length,a.set(c,x),o.push(c)),C[y]=N-w,s[y]=x,g[y]=w,f[y]=D});let h=B=>{let c=i.get(B);return c===void 0&&(c=r.length,i.set(B,c),r.push(String(B))),c},Q=new Map;for(let B=0;B<this.links.length;B+=2){let c=this.links[B],w=this.links[B+1],N=Math.floor(c/2),D=Math.floor(w/2);e.has(N)&&e.has(D)&&Q.set(`${N} ${c%2?"-":"+"} ${D} ${w%2?"-":"+"}`,B)}let E=[...Q.keys()].sort(),u=new Int32Array(E.length),d=new Int32Array(E.length),k=new Uint8Array(E.length);E.forEach((B,c)=>{let w=Q.get(B),N=this.links[w],D=this.links[w+1];u[c]=h(Math.floor(N/2)),d[c]=h(Math.floor(D/2)),k[c]=N%2|D%2<<1});let p=this.referenceFirst(A),m=new Int32Array(p.length+1);p.forEach(({ids:B},c)=>{m[c+1]=m[c]+B.length});let I=new Int32Array(m[p.length]),l=new Uint8Array(I.length);return p.forEach(({ids:B,rev:c},w)=>{let N=m[w];for(let D=0;D<B.length;D++)I[N+D]=h(B[D]);l.set(c,N)}),{nodes:{names:r,lengths:C,refs:s,starts:g,ranks:f,refNames:o},links:{from:u,to:d,strands:k},walks:{names:p.map(B=>B.name),starts:Float64Array.from(p,B=>B.hapStart),ends:Float64Array.from(p,B=>B.hapEnd),offsets:m,steps:I,reversed:l,before:Zt(p.map(B=>B.before)),after:Zt(p.map(B=>B.after))}}}referenceFirst(e){let{refName:A}=this.window;return[...e].sort((n,i)=>+(i.name===A)-+(n.name===A)||(n.name<i.name?-1:n.name>i.name?1:n.hapStart-i.hapStart))}},Ge={steps:"the step budget",bytes:"a byte budget of"};function Le(t,e,A,n,i,r,o=Ge){var a;let C=0,s=new Map,g=new Set;for(let d of t)C+=d.n,s.set(d.chunkStart,((a=s.get(d.chunkStart))!==null&&a!==void 0?a:0)+d.n),g.add(d.name);let f=e*A;if(C<=f)return;let h=n.end-n.start,Q=0,E=0;for(let d of[...s.keys()].sort((k,p)=>k-p)){if(Q+=s.get(d),Q>f)break;E=Math.max(E,d+i-n.start)}let u=!r&&g.size>2&&2*C/g.size<=f;return new gA(E>0?`Zoom in to about ${xA(E)}${u?", or choose fewer haplotypes,":""} to see the graph`:`Too many haplotype steps here to draw ${r?"these haplotypes":"every haplotype"} (${Q.toLocaleString()} steps read, over ${A} \xD7 ${o.steps} of ${e.toLocaleString()}); choose fewer haplotypes`,f,h,Math.max(E,1))}function Me(t,e,A,n){let i=t.reduce((r,o)=>r+o.ids.length,0);return Pt(i,e,A,n)}function _e(t,e,A,n){return Pt(t,e,A,n)}function Pt(t,e,A,n){if(t<=e)return;let i=A.end-A.start,r=Math.max(1,Math.floor(i*e/t));return new gA(`Zoom in to about ${xA(r)}${n?"":", or choose fewer haplotypes,"} to see the graph`,e,i,r)}async function Ue(t,e,A,n,i=Ge){let r=await t(A.end);if(r<=e)return;let o=0,a;for(let s=Math.floor(A.start/n)*n;s<A.end;s+=n){let g=await t(s+1);if(a??(a=g),g>e)break;o=s+n-A.start}let C=A.end-A.start;return new gA(o>0?`Zoom in to about ${xA(o)} to see the graph`:`Too much graph here to fetch (${Ot(a??r)} against ${i.bytes} ${Ot(e)})`,e,C,Math.max(o,1))}var Ot=t=>`${(t/1e6).toFixed(1)} MB`;function Ye(t){var e;let A=t.split(" "),n=A.length>=8,i=n?5:0;return{anchored:n,segment:{refName:A[i],start:+A[i+1],end:+A[i+2],id:A[3],rank:+A[4],tags:(e=A[n?8:5])!==null&&e!==void 0?e:""}}}function Hi(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 zt(t){return{id:t.slice(0,-1),strand:t.slice(-1)}}function He(t){var e,A;let n=t.split(" "),i=zt(n[3]),r=zt(n[4]);return{source:i.id,sourceStrand:i.strand,target:r.id,targetStrand:r.strand,sourceSegment:{id:i.id,refName:n[5],start:+n[6],end:+n[7],rank:+n[8],tags:(e=n[13])!==null&&e!==void 0?e:""},targetSegment:{id:r.id,refName:n[9],start:+n[10],end:+n[11],rank:+n[12],tags:(A=n[14])!==null&&A!==void 0?A:""}}}function Ke(t){return`${t.source}${t.sourceStrand}${t.target}${t.targetStrand}`}function $A(t,e,A){e.set(Ke(A),A);let n=[];for(let i of[A.sourceSegment,A.targetSegment])t.has(i.id)||(t.set(i.id,i),n.push(i));return n}function Wt(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,i=new Map(t),r=new Map;for(let o of e)(t.has(o.source)||t.has(o.target)||n(o.sourceSegment)*n(o.targetSegment)===-1)&&$A(i,r,o);for(let o of e)i.has(o.source)&&i.has(o.target)&&r.set(Ke(o),o);return{segments:i,links:r}}function Vt(t,e,A){let n=i=>i.refName!==A.refName||i.end<=A.start||i.start>=A.end;return[...jt(t.filter(i=>i.rank>0),i=>e.has(i.id),A.end-A.start),...jt(t.filter(i=>i.rank===0&&n(i)),()=>!0,0)]}function jt(t,e,A){let n=[...t].sort((r,o)=>VA(r.refName,o.refName)||r.start-o.start),i=[];for(let r of n){let o=i.at(-1);o?.refName===r.refName&&r.start-o.end<=A?(o.needed||(o.needed=r.start>o.end||e(r)),o.end=Math.max(o.end,r.end)):i.push({refName:r.refName,start:r.start,end:r.end,needed:e(r)})}return i.filter(r=>r.needed).map(({refName:r,start:o,end:a})=>({refName:r,start:o,end:a}))}function $t(t,e,A){let n=i=>e.has(i.id)||A.some(r=>r.refName===i.refName&&i.start>=r.start&&i.end<=r.end);return t.filter(i=>n(i.sourceSegment)&&n(i.targetSegment))}var Ki=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function Ti(t){let{id:e,refName:A,start:n,end:i,rank:r,tags:o}=t,a=o.split(" ").filter(s=>Ki.test(s)),C=a.length===0?"":` ${a.join(" ")}`;return`S ${e} * LN:i:${i-n} SN:Z:${A} SO:i:${n} SR:i:${r}${C}`}function qi(t){let{source:e,sourceStrand:A,target:n,targetStrand:i}=t;return`L ${e} ${A} ${n} ${i} 0M`}function VA(t,e){return t<e?-1:t>e?1:0}function Ae(t,e){let A=[...t.values()].sort((i,r)=>VA(i.refName,r.refName)||i.start-r.start||VA(i.id,r.id)),n=[...e.keys()].sort((i,r)=>VA(i,r));return["H VN:Z:1.0",...A.map(i=>Ti(i)),...n.map(i=>qi(e.get(i)))].join(`
|
|
2
|
-
`)}function Te(t,e){return`${t} ${e}`}function SA(t){let e=new Map;for(let A of t){e.set(A,A);let n=Ne(A);if(n!==A){let i=ye(A);e.set(Te(n,i),A);let r=yA(A);r!==void 0&&e.set(Te(r,i),A)}}return e}function RA(t,e,A){var n;return(n=t.get(Te(e,A)))!==null&&n!==void 0?n:t.get(A)}var Zi=8,Oi=3,Xi=4,Pi=1e3,zi={stepBudget:4e6,byteBudget:8e6},ee=class extends Error{constructor(){super(...arguments),this.name="WalkFormatError"}};function AA(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 An(t,e){return e?(e.throwIfAborted(),new Promise((A,n)=>{let i=()=>{n(e.reason instanceof Error?e.reason:new Error(String(e.reason)))};e.addEventListener("abort",i,{once:!0}),t.then(A,n).finally(()=>{e.removeEventListener("abort",i)})})):t}var qe=class{constructor(e){this.walks=e}header(e={}){if(!this.headerRead){let A=this.walks.getHeaderLines().then(n=>{var i,r;let o=Re(n);if(o.format!==3)throw new ee(`This walk file is format ${(i=o.format)!==null&&i!==void 0?i:1}; @jbrowse/graph-walks reads format 3, so rebuild it with gfa-to-tabix 1.1 or later`);let a=(r=o.chunk)!==null&&r!==void 0?r:65536;return{...o,chunk:a,lookback:ve(o.maxNode,a)}});A.catch(()=>{this.headerRead===A&&(this.headerRead=void 0)}),this.headerRead=A}return An(this.headerRead,e.signal)}referenceSequences(e={}){return this.walks.getReferenceSequenceNames(e)}async sequenceFor(e,A,n={}){if(!this.lookupRead){let r=this.walks.getReferenceSequenceNames().then(SA);r.catch(()=>{this.lookupRead===r&&(this.lookupRead=void 0)}),this.lookupRead=r}let i=await An(this.lookupRead,n.signal);return RA(i,e,A)}async queryStart(e,A={}){let{chunk:n,lookback:i}=await this.header(A);return zA(e,n,i)}async cut(e,A,n={}){var i;let{signal:r,keep:o,context:a=Pi,stepBudget:C=1/0,byteBudget:s=1/0,links:g=!0}=n,{chunk:f,lookback:h}=await this.header({signal:r}),Q=zA(A.start,f,h),E=(i=this.walks.bytesForRegions)===null||i===void 0?void 0:i.bind(this.walks),u=Number.isFinite(s)&&E!==void 0,d=async y=>u?E(y.map(x=>({refName:e,...x})),{signal:r}):0,k=u?await Ue(async y=>(AA(e,Q,y),d([{start:Q,end:y}])),s,A,f,n.budgetNames):void 0;if(k)throw k;let p=new AbortController,m=()=>{p.abort(r?.reason)};r?.throwIfAborted(),r?.addEventListener("abort",m,{once:!0});let I=[],l,B=new FA({refName:e,start:A.start,end:A.end,context:a,sequences:n.sequences}),c=new Set,w=[],N=async(y,x)=>{AA(e,y,x);let S=new Map;await this.walks.getLines(e,y,x,{signal:p.signal,lineCallback:F=>{let L=F.split(" "),J=+L[1],M=S.get(J);M?M.push(L):S.set(J,[L])}});for(let[F,L]of S){if(c.has(F))continue;c.add(F);let J=Ht(L,o,n.sequences);I.push(...J.rows);for(let[M,oA]of J.nodes)B.placeNode(M,oA);B.addSequences(J.sequences),B.addChunk(J.chunk),w.push(...J.ends)}if(g)for(let[F,L]of Tt(w))B.addLinkEnds(F,L)};try{await N(Q,A.end);let y=Le(I,C,Zi,A,f,o!==void 0,n.budgetNames);if(y)throw y;let x=Q,S=Math.floor((A.end-1)/f)*f,F=Xi*f,[L,J]=[x-F,S+F];l=WA(jA(I),B.nodes,e);let M=await d([{start:Q,end:A.end}]);for(let oA=0;oA<Oi;oA++){let X=l.open.filter(v=>v.refName===e&&v.start>=L&&v.start<=J).map(v=>v.start),sA=[{start:Math.min(x,...X),end:x},{start:S+f,end:Math.max(S,...X)+1}].filter(v=>v.end>v.start);if(sA.length===0||(M+=await d(sA),M>s))break;x=Math.min(x,...X),S=Math.max(S,...X),await Promise.all(sA.map(({start:v,end:hA})=>N(v,hA))),l=WA(jA(I),B.nodes,e)}}catch(y){throw p.abort(),y}finally{r?.removeEventListener("abort",m)}let D=Me(l.fragments,C,A,o!==void 0);if(D)throw D;return{graph:B,...l}}async cutRegion(e,A={}){var n;let{haplotypes:i,referenceSample:r,nodeLimit:o=1/0,...a}=A,{signal:C}=A,s=await this.header({signal:C}),g=(n=r??s.references[0])!==null&&n!==void 0?n:"",f=await this.sequenceFor(g,e.refName,{signal:C});if(f===void 0){let d=await this.referenceSequences({signal:C});throw new Error(`The walk file has no sequence ${e.refName} on ${g}; it holds ${d.slice(0,5).join(", ")}${d.length>5?", \u2026":""}`)}let{graph:h,kept:Q,fragments:E}=await this.cut(f,e,{...a,keep:Je(i,f)}),u=_e(Q.size,o,e,!!i?.length);if(u)throw u;return{tables:h.tables(Q,E),refName:f,sample:g}}};function en(t){return t.filter(e=>e.rank>0)}function tn(t,e,A,n,i){return AA(e,A,n),t.getLines(e,A,n,i)}async function Ze(t,e,A){let n=[];return await tn(t,e.refName,e.start,e.end,{signal:A,lineCallback:i=>{n.push(He(i))}}),n}async function ji(t,e,{hops:A=0,signal:n}={}){let i=new Map,r=new Map,o={anchored:!1};if(await tn(t.segments,e.refName,e.start,e.end,{signal:n,lineCallback:s=>{let g=Ye(s);o.anchored||(o.anchored=g.anchored),i.set(g.segment.id,g.segment)}}),o.anchored){let s=Wt(i,await Ze(t.links,e,n),e);return Ae(s.segments,s.links)}let a=async s=>(await Ze(t.links,s,n)).flatMap(g=>$A(i,r,g)),C=en(await a(e));for(let s=0;s<A;s++){let g=await Promise.all(C.map(a));C=en(g.flat())}if(A>0){let s=Vt([...i.values()],new Set(C.map(f=>f.id)),e),g=await Promise.all(s.map(f=>Ze(t.links,f,n)));for(let f of $t(g.flat(),i,s))$A(i,r,f)}return Ae(i,r)}async function Lo(t,e,A,n,i){return AA(e,A,n),t.getLines(e,A,n,i)}async function nn(t,e,A){for(let{refName:n,start:i,end:r}of e)AA(n,i,r);return t.bytesForRegions(e,A)}var Oe=0;var Xe=2;var vA=4;var eA=0,JA=1,rn=2;var on=-5;function Wi(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function sn(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)Wi(A,n)&&(t[n]=A[n])}}return t}function ne(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)}var GA={arraySet:function(t,e,A,n,i){if(e.subarray&&t.subarray){t.set(e.subarray(A,A+n),i);return}for(var r=0;r<n;r++)t[i+r]=e[A+r]},flattenChunks:function(t){var e,A,n,i,r,o;for(n=0,e=0,A=t.length;e<A;e++)n+=t[e].length;for(o=new Uint8Array(n),i=0,e=0,A=t.length;e<A;e++)r=t[e],o.set(r,i),i+=r.length;return o},Buf8:function(t){return new Uint8Array(t)},Buf16:function(t){return new Uint16Array(t)},Buf32:function(t){return new Int32Array(t)}},LA={arraySet:function(t,e,A,n,i){for(var r=0;r<n;r++)t[i+r]=e[A+r]},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)}},uA=()=>{let t=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return uA=()=>t,t},Z=(t,e,A,n,i)=>(Z=uA()?GA.arraySet:LA.arraySet,Z(t,e,A,n,i)),te=t=>(te=uA()?GA.flattenChunks:LA.flattenChunks,te(t)),z=t=>(z=uA()?GA.Buf8:LA.Buf8,z(t)),tA=t=>(tA=uA()?GA.Buf16:LA.Buf16,tA(t)),IA=t=>(IA=uA()?GA.Buf32:LA.Buf32,IA(t));var an=function(){let t=!0;try{String.fromCharCode.apply(null,[0])}catch{t=!1}return an=()=>t,t},gn=function(){let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{t=!1}return gn=()=>t,t},Pe=function(t){for(var e=z(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,Pe=n=>e[n],e[t]};function ze(t){var e,A,n,i,r,o=t.length,a=0;for(i=0;i<o;i++)A=t.charCodeAt(i),(A&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),i++)),a+=A<128?1:A<2048?2:A<65536?3:4;for(e=new Uint8Array(a),r=0,i=0;r<a;i++)A=t.charCodeAt(i),(A&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),i++)),A<128?e[r++]=A:A<2048?(e[r++]=192|A>>>6,e[r++]=128|A&63):A<65536?(e[r++]=224|A>>>12,e[r++]=128|A>>>6&63,e[r++]=128|A&63):(e[r++]=240|A>>>18,e[r++]=128|A>>>12&63,e[r++]=128|A>>>6&63,e[r++]=128|A&63);return e}function Vi(t,e){if(e<65534&&(t.subarray&&gn()||!t.subarray&&an()))return String.fromCharCode.apply(null,ne(t,e));for(var A="",n=0;n<e;n++)A+=String.fromCharCode(t[n]);return A}function In(t){for(var e=new Uint8Array(t.length),A=0,n=e.length;A<n;A++)e[A]=t.charCodeAt(A);return e}function Qn(t,e){var A,n,i,r,o=e||t.length,a=new Array(o*2);for(n=0,A=0;A<o;){if(i=t[A++],i<128){a[n++]=i;continue}if(r=Pe(i),r>4){a[n++]=65533,A+=r-1;continue}for(i&=r===2?31:r===3?15:7;r>1&&A<o;)i=i<<6|t[A++]&63,r--;if(r>1){a[n++]=65533;continue}i<65536?a[n++]=i:(i-=65536,a[n++]=55296|i>>10&1023,a[n++]=56320|i&1023)}return Vi(a,n)}function Cn(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+Pe(t[A])>e?A:e}function je(){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 MA(t,e,A,n){for(var i=t&65535|0,r=t>>>16&65535|0,o=0;A!==0;){o=A>2e3?2e3:A,A-=o;do i=i+e[n++]|0,r=r+i|0;while(--o);i%=65521,r%=65521}return i|r<<16|0}function $i(){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 cn=function(){let t=$i();return cn=()=>t,t};function U(t,e,A,n){var i=cn(),r=n+A;t^=-1;for(var o=n;o<r;o++)t=t>>>8^i[(t^e[o])&255];return t^-1}var ie=30,Ar=12;function We(t,e){var A,n,i,r,o,a,C,s,g,f,h,Q,E,u,d,k,p,m,I,l,B,c,w,N,D;A=t.state,n=t.next_in,N=t.input,i=n+(t.avail_in-5),r=t.next_out,D=t.output,o=r-(e-t.avail_out),a=r+(t.avail_out-257),C=A.dmax,s=A.wsize,g=A.whave,f=A.wnext,h=A.window,Q=A.hold,E=A.bits,u=A.lencode,d=A.distcode,k=(1<<A.lenbits)-1,p=(1<<A.distbits)-1;A:do{E<15&&(Q+=N[n++]<<E,E+=8,Q+=N[n++]<<E,E+=8),m=u[Q&k];e:for(;;){if(I=m>>>24,Q>>>=I,E-=I,I=m>>>16&255,I===0)D[r++]=m&65535;else if(I&16){l=m&65535,I&=15,I&&(E<I&&(Q+=N[n++]<<E,E+=8),l+=Q&(1<<I)-1,Q>>>=I,E-=I),E<15&&(Q+=N[n++]<<E,E+=8,Q+=N[n++]<<E,E+=8),m=d[Q&p];t:for(;;){if(I=m>>>24,Q>>>=I,E-=I,I=m>>>16&255,I&16){if(B=m&65535,I&=15,E<I&&(Q+=N[n++]<<E,E+=8,E<I&&(Q+=N[n++]<<E,E+=8)),B+=Q&(1<<I)-1,B>C){t.msg="invalid distance too far back",A.mode=ie;break A}if(Q>>>=I,E-=I,I=r-o,B>I){if(I=B-I,I>g&&A.sane){t.msg="invalid distance too far back",A.mode=ie;break A}if(c=0,w=h,f===0){if(c+=s-I,I<l){l-=I;do D[r++]=h[c++];while(--I);c=r-B,w=D}}else if(f<I){if(c+=s+f-I,I-=f,I<l){l-=I;do D[r++]=h[c++];while(--I);if(c=0,f<l){I=f,l-=I;do D[r++]=h[c++];while(--I);c=r-B,w=D}}}else if(c+=f-I,I<l){l-=I;do D[r++]=h[c++];while(--I);c=r-B,w=D}for(;l>2;)D[r++]=w[c++],D[r++]=w[c++],D[r++]=w[c++],l-=3;l&&(D[r++]=w[c++],l>1&&(D[r++]=w[c++]))}else{c=r-B;do D[r++]=D[c++],D[r++]=D[c++],D[r++]=D[c++],l-=3;while(l>2);l&&(D[r++]=D[c++],l>1&&(D[r++]=D[c++]))}}else if((I&64)===0){m=d[(m&65535)+(Q&(1<<I)-1)];continue t}else{t.msg="invalid distance code",A.mode=ie;break A}break}}else if((I&64)===0){m=u[(m&65535)+(Q&(1<<I)-1)];continue e}else if(I&32){A.mode=Ar;break A}else{t.msg="invalid literal/length code",A.mode=ie;break A}break}}while(n<i&&r<a);l=E>>3,n-=l,E-=l<<3,Q&=(1<<E)-1,t.next_in=n,t.next_out=r,t.avail_in=n<i?5+(i-n):5-(n-i),t.avail_out=r<a?257+(a-r):257-(r-a),A.hold=Q,A.bits=E}var wA=15,Bn=852,En=592,fn=0,Ve=1,ln=2,er=[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],tr=[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],nr=[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],ir=[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 QA(t,e,A,n,i,r,o,a){var C=a.bits,s=0,g=0,f=0,h=0,Q=0,E=0,u=0,d=0,k=0,p=0,m,I,l,B,c,w=null,N=0,D,y=tA(wA+1),x=tA(wA+1),S=null,F=0,L,J,M;for(s=0;s<=wA;s++)y[s]=0;for(g=0;g<n;g++)y[e[A+g]]++;for(Q=C,h=wA;h>=1&&y[h]===0;h--);if(Q>h&&(Q=h),h===0)return i[r++]=1<<24|64<<16|0,i[r++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&y[f]===0;f++);for(Q<f&&(Q=f),d=1,s=1;s<=wA;s++)if(d<<=1,d-=y[s],d<0)return-1;if(d>0&&(t===fn||h!==1))return-1;for(x[1]=0,s=1;s<wA;s++)x[s+1]=x[s]+y[s];for(g=0;g<n;g++)e[A+g]!==0&&(o[x[e[A+g]]++]=g);if(t===fn?(w=S=o,D=19):t===Ve?(w=er,N-=257,S=tr,F-=257,D=256):(w=nr,S=ir,D=-1),p=0,g=0,s=f,c=r,E=Q,u=0,l=-1,k=1<<Q,B=k-1,t===Ve&&k>Bn||t===ln&&k>En)return 1;for(;;){L=s-u,o[g]<D?(J=0,M=o[g]):o[g]>D?(J=S[F+o[g]],M=w[N+o[g]]):(J=96,M=0),m=1<<s-u,I=1<<E,f=I;do I-=m,i[c+(p>>u)+I]=L<<24|J<<16|M|0;while(I!==0);for(m=1<<s-1;p&m;)m>>=1;if(m!==0?(p&=m-1,p+=m):p=0,g++,--y[s]===0){if(s===h)break;s=e[A+o[g]]}if(s>Q&&(p&B)!==l){for(u===0&&(u=Q),c+=f,E=s-u,d=1<<E;E+u<h&&(d-=y[E+u],!(d<=0));)E++,d<<=1;if(k+=1<<E,t===Ve&&k>Bn||t===ln&&k>En)return 1;l=p&B,i[l]=Q<<24|E<<16|c-r|0}}return p!==0&&(i[c+p]=s-u<<24|64<<16|0),a.bits=Q,0}var rr=0,Tn=1,qn=2,hn=4,or=5,re=6,CA=0,sr=1,ar=2,Y=-2,Zn=-3,it=-4,gr=-5,dn=8,On=1,un=2,wn=3,pn=4,kn=5,mn=6,Dn=7,Nn=8,yn=9,xn=10,ae=11,j=12,$e=13,bn=14,At=15,Fn=16,Sn=17,Rn=18,vn=19,oe=20,se=21,Jn=22,Gn=23,Ln=24,Mn=25,_n=26,et=27,Un=28,Yn=29,R=30,rt=31,Ir=32,Qr=852,Cr=592;function Hn(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function cr(){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=tA(320),this.work=tA(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Br(t){var e;return!t||!t.state?Y:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=On,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=IA(Qr),e.distcode=e.distdyn=IA(Cr),e.sane=1,e.back=-1,CA)}function Er(t){var e;return!t||!t.state?Y:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,Br(t))}function fr(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))?Y:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=A,n.wbits=e,Er(t))}function Xn(t,e){var A,n;return t?(n=new cr,t.state=n,n.window=null,A=fr(t,e),A!==CA&&(t.state=null),A):Y}var Kn=!0,tt,nt;function lr(t){if(Kn){var e;for(tt=IA(512),nt=IA(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(QA(Tn,t.lens,0,288,tt,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;QA(qn,t.lens,0,32,nt,0,t.work,{bits:5}),Kn=!1}t.lencode=tt,t.lenbits=9,t.distcode=nt,t.distbits=5}function Pn(t,e,A,n){var i,r=t.state;return r.window===null&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=z(r.wsize)),n>=r.wsize?(Z(r.window,e,A-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(i=r.wsize-r.wnext,i>n&&(i=n),Z(r.window,e,A-n,i,r.wnext),n-=i,n?(Z(r.window,e,A-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=i,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=i))),0}function zn(t,e){var A,n,i,r,o,a,C,s,g,f,h,Q,E,u,d=0,k,p,m,I,l,B,c,w,N=z(4),D,y,x=[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 Y;A=t.state,A.mode===j&&(A.mode=$e),o=t.next_out,i=t.output,C=t.avail_out,r=t.next_in,n=t.input,a=t.avail_in,s=A.hold,g=A.bits,f=a,h=C,w=CA;A:for(;;)switch(A.mode){case On:if(A.wrap===0){A.mode=$e;break}for(;g<16;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if(A.wrap&2&&s===35615){A.check=0,N[0]=s&255,N[1]=s>>>8&255,A.check=U(A.check,N,2,0),s=0,g=0,A.mode=un;break}if(A.flags=0,A.head&&(A.head.done=!1),!(A.wrap&1)||(((s&255)<<8)+(s>>8))%31){t.msg="incorrect header check",A.mode=R;break}if((s&15)!==dn){t.msg="unknown compression method",A.mode=R;break}if(s>>>=4,g-=4,c=(s&15)+8,A.wbits===0)A.wbits=c;else if(c>A.wbits){t.msg="invalid window size",A.mode=R;break}A.dmax=1<<c,t.adler=A.check=1,A.mode=s&512?xn:j,s=0,g=0;break;case un:for(;g<16;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if(A.flags=s,(A.flags&255)!==dn){t.msg="unknown compression method",A.mode=R;break}if(A.flags&57344){t.msg="unknown header flags set",A.mode=R;break}A.head&&(A.head.text=s>>8&1),A.flags&512&&(N[0]=s&255,N[1]=s>>>8&255,A.check=U(A.check,N,2,0)),s=0,g=0,A.mode=wn;case wn:for(;g<32;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}A.head&&(A.head.time=s),A.flags&512&&(N[0]=s&255,N[1]=s>>>8&255,N[2]=s>>>16&255,N[3]=s>>>24&255,A.check=U(A.check,N,4,0)),s=0,g=0,A.mode=pn;case pn:for(;g<16;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}A.head&&(A.head.xflags=s&255,A.head.os=s>>8),A.flags&512&&(N[0]=s&255,N[1]=s>>>8&255,A.check=U(A.check,N,2,0)),s=0,g=0,A.mode=kn;case kn:if(A.flags&1024){for(;g<16;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}A.length=s,A.head&&(A.head.extra_len=s),A.flags&512&&(N[0]=s&255,N[1]=s>>>8&255,A.check=U(A.check,N,2,0)),s=0,g=0}else A.head&&(A.head.extra=null);A.mode=mn;case mn:if(A.flags&1024&&(Q=A.length,Q>a&&(Q=a),Q&&(A.head&&(c=A.head.extra_len-A.length,A.head.extra||(A.head.extra=new Array(A.head.extra_len)),Z(A.head.extra,n,r,Q,c)),A.flags&512&&(A.check=U(A.check,n,Q,r)),a-=Q,r+=Q,A.length-=Q),A.length))break A;A.length=0,A.mode=Dn;case Dn:if(A.flags&2048){if(a===0)break A;Q=0;do c=n[r+Q++],A.head&&c&&A.length<65536&&(A.head.name+=String.fromCharCode(c));while(c&&Q<a);if(A.flags&512&&(A.check=U(A.check,n,Q,r)),a-=Q,r+=Q,c)break A}else A.head&&(A.head.name=null);A.length=0,A.mode=Nn;case Nn:if(A.flags&4096){if(a===0)break A;Q=0;do c=n[r+Q++],A.head&&c&&A.length<65536&&(A.head.comment+=String.fromCharCode(c));while(c&&Q<a);if(A.flags&512&&(A.check=U(A.check,n,Q,r)),a-=Q,r+=Q,c)break A}else A.head&&(A.head.comment=null);A.mode=yn;case yn:if(A.flags&512){for(;g<16;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if(s!==(A.check&65535)){t.msg="header crc mismatch",A.mode=R;break}s=0,g=0}A.head&&(A.head.hcrc=A.flags>>9&1,A.head.done=!0),t.adler=A.check=0,A.mode=j;break;case xn:for(;g<32;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}t.adler=A.check=Hn(s),s=0,g=0,A.mode=ae;case ae:if(A.havedict===0)return t.next_out=o,t.avail_out=C,t.next_in=r,t.avail_in=a,A.hold=s,A.bits=g,ar;t.adler=A.check=1,A.mode=j;case j:if(e===or||e===re)break A;case $e:if(A.last){s>>>=g&7,g-=g&7,A.mode=et;break}for(;g<3;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}switch(A.last=s&1,s>>>=1,g-=1,s&3){case 0:A.mode=bn;break;case 1:if(lr(A),A.mode=oe,e===re){s>>>=2,g-=2;break A}break;case 2:A.mode=Sn;break;case 3:t.msg="invalid block type",A.mode=R}s>>>=2,g-=2;break;case bn:for(s>>>=g&7,g-=g&7;g<32;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if((s&65535)!==(s>>>16^65535)){t.msg="invalid stored block lengths",A.mode=R;break}if(A.length=s&65535,s=0,g=0,A.mode=At,e===re)break A;case At:A.mode=Fn;case Fn:if(Q=A.length,Q){if(Q>a&&(Q=a),Q>C&&(Q=C),Q===0)break A;Z(i,n,r,Q,o),a-=Q,r+=Q,C-=Q,o+=Q,A.length-=Q;break}A.mode=j;break;case Sn:for(;g<14;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if(A.nlen=(s&31)+257,s>>>=5,g-=5,A.ndist=(s&31)+1,s>>>=5,g-=5,A.ncode=(s&15)+4,s>>>=4,g-=4,A.nlen>286||A.ndist>30){t.msg="too many length or distance symbols",A.mode=R;break}A.have=0,A.mode=Rn;case Rn:for(;A.have<A.ncode;){for(;g<3;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}A.lens[x[A.have++]]=s&7,s>>>=3,g-=3}for(;A.have<19;)A.lens[x[A.have++]]=0;if(A.lencode=A.lendyn,A.lenbits=7,D={bits:A.lenbits},w=QA(rr,A.lens,0,19,A.lencode,0,A.work,D),A.lenbits=D.bits,w){t.msg="invalid code lengths set",A.mode=R;break}A.have=0,A.mode=vn;case vn:for(;A.have<A.nlen+A.ndist;){for(;d=A.lencode[s&(1<<A.lenbits)-1],k=d>>>24,p=d>>>16&255,m=d&65535,!(k<=g);){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if(m<16)s>>>=k,g-=k,A.lens[A.have++]=m;else{if(m===16){for(y=k+2;g<y;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if(s>>>=k,g-=k,A.have===0){t.msg="invalid bit length repeat",A.mode=R;break}c=A.lens[A.have-1],Q=3+(s&3),s>>>=2,g-=2}else if(m===17){for(y=k+3;g<y;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}s>>>=k,g-=k,c=0,Q=3+(s&7),s>>>=3,g-=3}else{for(y=k+7;g<y;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}s>>>=k,g-=k,c=0,Q=11+(s&127),s>>>=7,g-=7}if(A.have+Q>A.nlen+A.ndist){t.msg="invalid bit length repeat",A.mode=R;break}for(;Q--;)A.lens[A.have++]=c}}if(A.mode===R)break;if(A.lens[256]===0){t.msg="invalid code -- missing end-of-block",A.mode=R;break}if(A.lenbits=9,D={bits:A.lenbits},w=QA(Tn,A.lens,0,A.nlen,A.lencode,0,A.work,D),A.lenbits=D.bits,w){t.msg="invalid literal/lengths set",A.mode=R;break}if(A.distbits=6,A.distcode=A.distdyn,D={bits:A.distbits},w=QA(qn,A.lens,A.nlen,A.ndist,A.distcode,0,A.work,D),A.distbits=D.bits,w){t.msg="invalid distances set",A.mode=R;break}if(A.mode=oe,e===re)break A;case oe:A.mode=se;case se:if(a>=6&&C>=258){t.next_out=o,t.avail_out=C,t.next_in=r,t.avail_in=a,A.hold=s,A.bits=g,We(t,h),o=t.next_out,i=t.output,C=t.avail_out,r=t.next_in,n=t.input,a=t.avail_in,s=A.hold,g=A.bits,A.mode===j&&(A.back=-1);break}for(A.back=0;d=A.lencode[s&(1<<A.lenbits)-1],k=d>>>24,p=d>>>16&255,m=d&65535,!(k<=g);){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if(p&&(p&240)===0){for(I=k,l=p,B=m;d=A.lencode[B+((s&(1<<I+l)-1)>>I)],k=d>>>24,p=d>>>16&255,m=d&65535,!(I+k<=g);){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}s>>>=I,g-=I,A.back+=I}if(s>>>=k,g-=k,A.back+=k,A.length=m,p===0){A.mode=_n;break}if(p&32){A.back=-1,A.mode=j;break}if(p&64){t.msg="invalid literal/length code",A.mode=R;break}A.extra=p&15,A.mode=Jn;case Jn:if(A.extra){for(y=A.extra;g<y;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}A.length+=s&(1<<A.extra)-1,s>>>=A.extra,g-=A.extra,A.back+=A.extra}A.was=A.length,A.mode=Gn;case Gn:for(;d=A.distcode[s&(1<<A.distbits)-1],k=d>>>24,p=d>>>16&255,m=d&65535,!(k<=g);){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if((p&240)===0){for(I=k,l=p,B=m;d=A.distcode[B+((s&(1<<I+l)-1)>>I)],k=d>>>24,p=d>>>16&255,m=d&65535,!(I+k<=g);){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}s>>>=I,g-=I,A.back+=I}if(s>>>=k,g-=k,A.back+=k,p&64){t.msg="invalid distance code",A.mode=R;break}A.offset=m,A.extra=p&15,A.mode=Ln;case Ln:if(A.extra){for(y=A.extra;g<y;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}A.offset+=s&(1<<A.extra)-1,s>>>=A.extra,g-=A.extra,A.back+=A.extra}if(A.offset>A.dmax){t.msg="invalid distance too far back",A.mode=R;break}A.mode=Mn;case Mn:if(C===0)break A;if(Q=h-C,A.offset>Q){if(Q=A.offset-Q,Q>A.whave&&A.sane){t.msg="invalid distance too far back",A.mode=R;break}Q>A.wnext?(Q-=A.wnext,E=A.wsize-Q):E=A.wnext-Q,Q>A.length&&(Q=A.length),u=A.window}else u=i,E=o-A.offset,Q=A.length;Q>C&&(Q=C),C-=Q,A.length-=Q;do i[o++]=u[E++];while(--Q);A.length===0&&(A.mode=se);break;case _n:if(C===0)break A;i[o++]=A.length,C--,A.mode=se;break;case et:if(A.wrap){for(;g<32;){if(a===0)break A;a--,s|=n[r++]<<g,g+=8}if(h-=C,t.total_out+=h,A.total+=h,h&&(t.adler=A.check=A.flags?U(A.check,i,h,o-h):MA(A.check,i,h,o-h)),h=C,(A.flags?s:Hn(s))!==A.check){t.msg="incorrect data check",A.mode=R;break}s=0,g=0}A.mode=Un;case Un:if(A.wrap&&A.flags){for(;g<32;){if(a===0)break A;a--,s+=n[r++]<<g,g+=8}if(s!==(A.total&4294967295)){t.msg="incorrect length check",A.mode=R;break}s=0,g=0}A.mode=Yn;case Yn:w=sr;break A;case R:w=Zn;break A;case rt:return it;case Ir:default:return Y}return t.next_out=o,t.avail_out=C,t.next_in=r,t.avail_in=a,A.hold=s,A.bits=g,(A.wsize||h!==t.avail_out&&A.mode<R&&(A.mode<et||e!==hn))&&Pn(t,t.output,t.next_out,h-t.avail_out)?(A.mode=rt,it):(f-=t.avail_in,h-=t.avail_out,t.total_in+=f,t.total_out+=h,A.total+=h,A.wrap&&h&&(t.adler=A.check=A.flags?U(A.check,i,h,t.next_out-h):MA(A.check,i,h,t.next_out-h)),t.data_type=A.bits+(A.last?64:0)+(A.mode===j?128:0)+(A.mode===oe||A.mode===At?256:0),(f===0&&h===0||e===hn)&&w===CA&&(w=gr),w)}function jn(t){if(!t||!t.state)return Y;var e=t.state;return e.window&&(e.window=null),t.state=null,CA}function Wn(t,e){var A;return!t||!t.state||(A=t.state,(A.wrap&2)===0)?Y:(A.head=e,e.done=!1,CA)}function ot(t,e){var A=e.length,n,i,r;return!t||!t.state||(n=t.state,n.wrap!==0&&n.mode!==ae)?Y:n.mode===ae&&(i=1,i=MA(i,e,A,0),i!==n.check)?Zn:(r=Pn(t,e,A,A),r?(n.mode=rt,it):(n.havedict=1,CA))}var ge={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 st(){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 at=Object.prototype.toString,gt=class t{constructor(e){if(!(this instanceof t))return new t(e);this.options=sn({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 st,this.strm.avail_out=0;var n=Xn(this.strm,A.windowBits);if(n!==eA)throw new Error(ge[n]);if(this.header=new je,Wn(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=ze(A.dictionary):at.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(n=ot(this.strm,A.dictionary),n!==eA)))throw new Error(ge[n])}push(e,A){var n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,o,a,C,s,g,f,h=!1;if(this.ended)return!1;a=A===~~A?A:A===!0?vA:Oe,typeof e=="string"?n.input=In(e):at.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=z(i),n.next_out=0,n.avail_out=i),o=zn(n,Oe),o===rn&&r&&(typeof r=="string"?f=ze(r):at.call(r)==="[object ArrayBuffer]"?f=new Uint8Array(r):f=r,o=ot(this.strm,f)),o===on&&h===!0&&(o=eA,h=!1),o!==JA&&o!==eA)return this.onEnd(o),this.ended=!0,!1;n.next_out&&(n.avail_out===0||o===JA||n.avail_in===0&&(a===vA||a===Xe))&&(this.options.to==="string"?(C=Cn(n.output,n.next_out),s=n.next_out-C,g=Qn(n.output,C),n.next_out=s,n.avail_out=i-s,s&&Z(n.output,n.output,C,s,0),this.onData(g)):this.onData(ne(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(h=!0)}while((n.avail_in>0||n.avail_out===0)&&o!==JA);return o===JA&&(a=vA),a===vA?(o=jn(this.strm),this.onEnd(o),this.ended=!0,o===eA):(a===Xe&&(this.onEnd(eA),n.avail_out=0),!0)}onData(e){this.chunks.push(e)}onEnd(e){e===eA&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=te(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}};function hr(t,e){var A=new gt(e);if(A.push(t,!0),A.err)throw A.msg||ge[A.err];return A.result}var Vn=hr;function It(t,e,A){let n=[],i=0,r=e;for(;i+26<=t.length&&!(t[i]!==31||t[i+1]!==139||t[i+2]!==8||t[i+3]!==4||t[i+10]!==6||t[i+12]!==66||t[i+13]!==67);){let o=(t[i+16]|t[i+17]<<8)+1;if(o<26||i+o>t.length)break;let a=i+o-8,C=(t[a+4]|t[a+5]<<8|t[a+6]<<16|t[a+7]<<24)>>>0;if(n.push({inputOffset:i,compressedSize:o,decompressedSize:C,filePosition:r}),r>=A)break;i+=o,r+=o}return n}function $n(t){let e=0;for(let i of t)e+=i.length;let A=new Uint8Array(e),n=0;for(let i of t)A.set(i,n),n+=i.length;return A}var nA={};nA.d=(t,e)=>{if(Array.isArray(e))for(var A=0;A<e.length;){var n=e[A++],i=e[A++];nA.o(t,n)?i===0&&A++:i===0?Object.defineProperty(t,n,{enumerable:!0,value:e[A++]}):Object.defineProperty(t,n,{enumerable:!0,get:i})}else for(var n in e)nA.o(e,n)&&!nA.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})};nA.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);nA.r=t=>{Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var Ct={};nA.r(Ct);nA.d(Ct,{ChunkSliceResult:()=>kA,__wbg_Error_92b29b0548f8b746:()=>ur,__wbg___wbindgen_throw_344f42d3211c4765:()=>wr,__wbg_set_wasm:()=>ai,decompress_all:()=>ti,decompress_chunk_slice:()=>ni});var dr="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+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAA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",kA=class t{static __wrap(e){let A=Object.create(t.prototype);return A.__wbg_ptr=e,Ai.register(A,A.__wbg_ptr,A),A}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ai.unregister(this),e}free(){let e=this.__destroy_into_raw();b.__wbg_chunksliceresult_free(e,0)}take_buffer(){try{let i=b.__wbindgen_add_to_stack_pointer(-16);b.chunksliceresult_take_buffer(i,this.__wbg_ptr);var e=_().getInt32(i+0,!0),A=_().getInt32(i+4,!0),n=ii(e,A).slice();return b.__wbindgen_export(e,A*1,1),n}finally{b.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let i=b.__wbindgen_add_to_stack_pointer(-16);b.chunksliceresult_take_cpositions(i,this.__wbg_ptr);var e=_().getInt32(i+0,!0),A=_().getInt32(i+4,!0),n=ei(e,A).slice();return b.__wbindgen_export(e,A*8,8),n}finally{b.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let i=b.__wbindgen_add_to_stack_pointer(-16);b.chunksliceresult_take_dpositions(i,this.__wbg_ptr);var e=_().getInt32(i+0,!0),A=_().getInt32(i+4,!0),n=ei(e,A).slice();return b.__wbindgen_export(e,A*8,8),n}finally{b.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(kA.prototype[Symbol.dispose]=kA.prototype.free);function ti(t){try{let o=b.__wbindgen_add_to_stack_pointer(-16),a=oi(t,b.__wbindgen_export2),C=Bt;b.decompress_all(o,a,C);var e=_().getInt32(o+0,!0),A=_().getInt32(o+4,!0),n=_().getInt32(o+8,!0),i=_().getInt32(o+12,!0);if(i)throw si(n);var r=ii(e,A).slice();return b.__wbindgen_export(e,A*1,1),r}finally{b.__wbindgen_add_to_stack_pointer(16)}}function ni(t,e,A,n,i){try{let C=b.__wbindgen_add_to_stack_pointer(-16),s=oi(t,b.__wbindgen_export2),g=Bt;b.decompress_chunk_slice(C,s,g,e,A,n,i);var r=_().getInt32(C+0,!0),o=_().getInt32(C+4,!0),a=_().getInt32(C+8,!0);if(a)throw si(o);return kA.__wrap(r)}finally{b.__wbindgen_add_to_stack_pointer(16)}}function ur(t,e){let A=Error(ri(t,e));return pr(A)}function wr(t,e){throw new Error(ri(t,e))}var Ai=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>b.__wbg_chunksliceresult_free(t,1));function pr(t){_A===W.length&&W.push(W.length+1);let e=_A;return _A=W[e],W[e]=t,e}function kr(t){t<1028||(W[t]=_A,_A=t)}function ei(t,e){return t=t>>>0,mr().subarray(t/8,t/8+e)}function ii(t,e){return t=t>>>0,ct().subarray(t/1,t/1+e)}var pA=null;function _(){return(pA===null||pA.buffer.detached===!0||pA.buffer.detached===void 0&&pA.buffer!==b.memory.buffer)&&(pA=new DataView(b.memory.buffer)),pA}var Ie=null;function mr(){return(Ie===null||Ie.byteLength===0)&&(Ie=new Float64Array(b.memory.buffer)),Ie}function ri(t,e){return yr(t>>>0,e)}var Qe=null;function ct(){return(Qe===null||Qe.byteLength===0)&&(Qe=new Uint8Array(b.memory.buffer)),Qe}function Dr(t){return W[t]}var W=new Array(1024).fill(void 0);W.push(void 0,null,!0,!1);var _A=W.length;function oi(t,e){let A=e(t.length*1,1)>>>0;return ct().set(t,A/1),Bt=t.length,A}function si(t){let e=Dr(t);return kr(t),e}var ce=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});ce.decode();var Nr=2146435072,Qt=0;function yr(t,e){return Qt+=e,Qt>=Nr&&(ce=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),ce.decode(),Qt=e),ce.decode(ct().subarray(t,t+e).slice())}var Bt=0,b;function ai(t){b=t}var cA=null,Ce=null;async function gi(){return cA||(Ce||(Ce=(async()=>{let e=await(await fetch(dr)).arrayBuffer(),{instance:A}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":Ct});return cA=A.exports,ai(cA),cA})().catch(t=>{throw Ce=null,t})),Ce)}async function Ii(t){return cA||await gi(),ti(t)}async function Qi(t,e,A,n,i){cA||await gi();let r=ni(t,e,A,n,i),o=r.take_buffer(),a=r.take_cpositions(),C=r.take_dpositions();return r.free(),{buffer:o,cpositions:a,dpositions:C}}var xr=26;function ci(t){return t[0]===31&&t[1]===139}function br(t){return t.length>=xr&&ci(t)&&t[2]===8&&t[3]===4&&t[10]===6&&t[12]===66&&t[13]===67}function Bi(t){return t instanceof Error?t.message:`${t}`}async function Ci(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 Vn(t,void 0)}function Ei(t){return Bi(t).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:t}):t}async function UA(t){if(t.length===0)return new Uint8Array(0);if(!br(t)){if(ci(t))return Ci(t);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}try{return await Ii(t)}catch(e){if(Bi(e).includes("invalid bgzf header"))return Ci(t);throw Ei(e)}}function fi(t,e,A,n){let i=[],r=[],o=[],a=A.dataPosition;for(let C=0;C<t.length;C++){let s=t[C],g=e[C],f=g.filePosition>=n.blockPosition;i.push(g.filePosition),r.push(a);let h=C===0?A.dataPosition:0,Q=f?Math.min(n.dataPosition+1,s.length):s.length;if(h<Q&&o.push(s.subarray(h,Q)),a+=s.length-h,f){i.push(g.filePosition+g.compressedSize),r.push(a);break}}return{slices:o,cpositions:Float64Array.from(i),dpositions:Float64Array.from(r)}}function Fr(t,e,A,n){let{slices:i,cpositions:r,dpositions:o}=fi(t,e,A,n);return{buffer:$n(i),cpositions:r,dpositions:o}}function Sr(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 Et(t,e,A){let{minv:n,maxv:i}=e;if(A){let C=It(t,n.blockPosition,i.blockPosition);if(li(C)>=ft){let s=await A.decompressBlocks(t,C),{slices:g,cpositions:f,dpositions:h}=fi(s.blocks,C,n,i);return{segments:Sr(g),cpositions:f,dpositions:h}}}let{buffer:r,cpositions:o,dpositions:a}=await hi(t,e);return{segments:[r],cpositions:o,dpositions:a}}var ft=4e5;function li(t){let e=0;for(let A of t)e+=A.decompressedSize;return e}async function hi(t,e,A){let{minv:n,maxv:i}=e;if(A){let r=It(t,n.blockPosition,i.blockPosition);if(li(r)>=ft){let o=await A.decompressBlocks(t,r);return Fr(o.blocks,r,n,i)}}try{let r=await Qi(t,n.blockPosition,n.dataPosition,i.blockPosition,i.dataPosition);return{buffer:r.buffer,cpositions:r.cpositions,dpositions:r.dpositions}}catch(r){throw Ei(r)}}function BA(t){if(t?.aborted)throw lt(t)}function lt(t){let e=t.reason;return e===void 0?new DOMException("This operation was aborted","AbortError"):e}function di(t){return typeof t?.addEventListener=="function"}var iA=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:i=a=>String(a),idleTimeoutMs:r=0,budget:o}={}){this.fill=e,this.limit=A,this.shared=o&&{budget:o,membership:o.register(this)},this.sizeOf=n,this.toCacheKey=i,this.idleTimeoutMs=r>0&&Number.isFinite(r)?r: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){BA(A);let i=this.toCacheKey(e),r=this.entries.get(i);r&&this.isDoomed(r)&&(this.release(i),r=void 0),r?this.touch(i,r):r=this.start(i,e,n),r.pending&&this.join(r.pending,A);try{return await this.settleFor(r,A)}finally{BA(A)}}settleFor(e,A){if(!e.pending||!di(A))return e.promise;let n,i=new Promise((o,a)=>{n=a}),r=()=>{n(lt(A))};return A.addEventListener("abort",r,{once:!0}),Promise.race([e.promise,i]).finally(()=>{A.removeEventListener("abort",r)})}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,i]of this.entries)!i.pending&&i.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),i=setInterval(()=>{let r=n.deref();r?r.sweepIdle():clearInterval(i)},A);this.sweepTimer=i,i.unref?.()}stopSweep(){this.sweepTimer!==void 0&&(clearInterval(this.sweepTimer),this.sweepTimer=void 0)}start(e,A,n){let i=n??(this.fill&&(s=>this.fill(A,s)));if(!i)throw new Error("SharedReadCache needs a fill, either on the cache or on the get() call");let r={signals:new Map,pinned:!1,controller:new AbortController},o={promise:Promise.resolve(i(r.controller.signal)),pending:r,size:0,lastTouched:Date.now(),seq:this.stamp()};this.entries.set(e,o);let a=()=>this.entries.get(e)===o,C=()=>{for(let[s,g]of r.signals)s.removeEventListener("abort",g);o.pending=void 0};return o.promise.then(s=>{let g=a()?this.weigh(s):void 0,f=a();C(),f&&(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()},()=>{a()&&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(!di(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 Be(t){return t.bytes?t.bytes():new Uint8Array(await t.arrayBuffer())}async function ui(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?ht(t,A):Be(t)}function wi(t){return typeof t=="string"?{encoding:t,opts:{}}:{encoding:t?.encoding,opts:t??{}}}function pi(t){let e=/\/(\d+)$/.exec(t??"")?.[1];return e===void 0?void 0:parseInt(e,10)}function Rr(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 vr=50;async function ht(t,e){let A=Rr(t),n=t.body;if(!n||A===void 0){let C=await Be(t);return e(C.byteLength,A??C.byteLength),C}let i=n.getReader(),r=new Uint8Array(A),o=0,a=Date.now();e(0,A);for(let C=await i.read();!C.done;C=await i.read()){if(o+C.value.byteLength>r.length){let g=new Uint8Array(Math.max(o+C.value.byteLength,r.length*2));g.set(r.subarray(0,o)),r=g}r.set(C.value,o),o+=C.value.byteLength;let s=Date.now();s-a>=vr&&(a=s,e(o,A))}return e(o,A),o===r.length?r:r.slice(0,o)}function Jr(...t){let e=new Map;for(let A of t)for(let[n,i]of Object.entries(A??{}))e.set(n.toLowerCase(),[n,i]);return Object.fromEntries(e.values())}function dt(t){let e=t.body;typeof e?.cancel=="function"&&e.cancel().catch(()=>{})}function ki(t){return Number.isSafeInteger(t)&&t>=0}function Gr(t){return typeof t=="object"&&t!==null&&"name"in t&&t.name==="TypeError"}function Lr(t){return(typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"?t.message:`${t}`).replace(/\.$/,"")}var V=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:Jr(this.baseHeaders,e.headers,A),...n?{signal:n}:{}}}async fetch(e,A){let n=r=>Gr(r)&&!A?.signal?.aborted?new Error(`${Lr(r)} fetching ${e}`,{cause:r}):r,i;try{i=await this.fetchImplementation(e,A)}catch(r){if(`${r}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{i=await this.fetchImplementation(e,{...A,cache:"reload"})}catch(o){throw n(o)}}else throw n(r)}return i}async read(e,A,n={}){if(!ki(e)||!ki(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 i=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${A}-${A+e-1}`}));if(i.status===416)return dt(i),new Uint8Array(0);if(this.checkOk(i),i.status===200&&A===0||i.status===206){let r=pi(i.headers.get("content-range"));r!==void 0&&(this._stat={size:r});let o=n.onProgress?await ht(i,n.onProgress):await Be(i);return!this._stat&&i.status===200&&(this._stat={size:o.byteLength}),o.byteLength<=e?o:o.slice(0,e)}throw dt(i),new Error(i.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${i.status} fetching ${this.url}`)}checkOk(e){if(!e.ok)throw dt(e),new Error(`HTTP ${e.status} fetching ${this.url}`)}async readFile(e){let{encoding:A,opts:n}=wi(e),i=await this.fetch(this.url,this.buildRequest(n));this.checkOk(i);let r=await this.readFileBody(i,A,n.onProgress);return i.status===200&&typeof r!="string"&&(this._stat={size:r.byteLength}),r}readFileBody(e,A,n){return ui(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 EA=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 O=class{minv;maxv;bin;endPosition;constructor(e,A,n,i=A.blockPosition+65536){this.minv=e,this.maxv=A,this.bin=n,this.endPosition=i}toString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}fetchedSize(){return this.endPosition-this.minv.blockPosition}};function ut(t,e){if(!(e>0))throw new TypeError(`\`${t}\` must be a number greater than 0`)}var YA=class{#A=new Map;#e=new Map;#t;#i;#r;constructor(e){let A=e.maxAge??Number.POSITIVE_INFINITY;ut("maxSize",e.maxSize),ut("maxAge",A),this.#t=e.maxSize,this.#i=A,this.#r=e.onEviction}#o(e){let A=this.#r;if(A)for(let[n,i]of e)A(n,i.value)}#n(e,A){return A.expiry!==void 0&&A.expiry<=Date.now()?(this.#r?.(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)}}#I(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.#i}={}){let i={value:A,expiry:n===Number.POSITIVE_INFINITY?void 0:Date.now()+n};return this.#A.has(e)?this.#A.set(e,i):this.#g(e,i),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){ut("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.#I(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.#I(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.#i}*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,i]of this)e.call(A,i,n,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}};function mi(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 mA=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 rA(t,e=0){return new mA(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 Ee(t,e){let A=t.length;if(A===0)return t;let n;if(e){let a=e.blockPosition,C=e.dataPosition;n=[];for(let s=0;s<A;s++){let g=t[s];(g.maxv.blockPosition-a||g.maxv.dataPosition-C)>0&&n.push(g)}if(n.length===0)return n}else n=t;n.sort((a,C)=>{let s=a.minv.blockPosition-C.minv.blockPosition;return s===0?a.minv.dataPosition-C.minv.dataPosition:s});let i=[n[0]],r=n[0].minv.blockPosition,o=n[0].maxv.blockPosition;for(let a=1;a<n.length;a++){let C=n[a],s=C.minv.blockPosition,g=C.maxv.blockPosition;if(s-o<65e3&&g-r<5e6){let f=i.at(-1);(g-o||C.maxv.dataPosition-f.maxv.dataPosition)>0&&(i[i.length-1]=new O(f.minv,C.maxv,f.bin,C.endPosition),o=g)}else i.push(C),r=s,o=g}return Mr(i)}function Mr(t){let e=[t[0]];for(let A=1;A<t.length;A++){let n=t[A],i=e.at(-1).maxv;if((n.minv.blockPosition-i.blockPosition||n.minv.dataPosition-i.dataPosition)>=0){e.push(n);continue}(n.maxv.blockPosition-i.blockPosition||n.maxv.dataPosition-i.dataPosition)>0&&e.push(new O(i,n.maxv,n.bin,n.endPosition))}return e}function fe(t,e=[]){let A=[...e];for(let n of t)A.push(n.minv.blockPosition,n.maxv.blockPosition);A.sort((n,i)=>n-i);for(let n of t){let i=n.maxv.blockPosition,r=0,o=A.length;for(;r<o;){let a=r+o>>>1;A[a]>i?o=a:r=a+1}r<A.length&&(n.endPosition=Math.min(n.endPosition,A[r]))}}function le(t,e,A,n){let i=n?n.blockPosition:1/0,r=n?n.dataPosition:0,o=!1;for(let a=0;a<A;a++){let C=e+a*8,s=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];(s<i||s===i&&g<r)&&(i=s,r=g,o=!0)}return o?new mA(i,r):n}function _r(t){let e=new TextDecoder("utf-8"),A=[],n={},i=0,r=0;for(;r<t.length;){let o=t.indexOf(0,r);if(o===-1)break;if(o>r){let a=e.decode(t.subarray(r,o));A[i]=a,n[a]=i}r=o+1,i++}return{refNameToId:n,refIdToName:A}}var Ur={0:"generic",1:"SAM",2:"VCF",3:"GAF"};function he(t,e){let A=new DataView(t.buffer,t.byteOffset,t.byteLength),n=A.getInt32(e,!0),i=n&65536?"zero-based-half-open":"1-based-closed",r=Ur[n&15];if(!r)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)},a=A.getInt32(e+16,!0),C=a?String.fromCharCode(a):void 0,s=A.getInt32(e+20,!0),g=A.getInt32(e+24,!0),{refIdToName:f,refNameToId:h}=_r(t.subarray(e+28,e+28+g));return{refIdToName:f,refNameToId:h,skipLines:s,metaChar:C,columnNumbers:o,format:r,coordinateType:i}}function de(t,e){return{lineCount:mi(t,e)}}function ue(t,e=5){let A=new YA({maxSize:e});return n=>{let i=A.get(n);if(i!==void 0)return i;let r=t(n);return r!==void 0&&A.set(n,r),r}}function Di(t){let e=0;for(let i of t)e+=i.length;let A=new Uint8Array(e),n=0;for(let i of t)A.set(i,n),n+=i.length;return A}var Ni=10;function wt(t,e){let A=0,n,i=0;for(let r of t){let o=0;if(n){let s=r.indexOf(Ni);if(s===-1){n=Di([n,r]),A+=r.length;continue}if(e(Di([n,r.subarray(0,s+1)]),i))return!0;o=s+1,n=void 0}let a=r.lastIndexOf(Ni);if(a>=o&&e(r.subarray(o,a+1),A+o))return!0;let C=Math.max(o,a+1);C<r.length&&(n=r.slice(C),i=A+C),A+=r.length}return!1}function Yr(t,e,A,n){if(e>2**(A+n*3))return;let i=(8**(n+1)-1)/7,r=(8**n-1)/7+Math.floor((e-1)/2**A)+1;for(r>=i&&(r=0);;){for(;r%8===1;)r=(r-1)/8;if(r===0)return;let o=t[r];if(o?.length){let a=o[0].minv;for(let C=1;C<o.length;C++){let s=o[C].minv;s.compareTo(a)<0&&(a=s)}return a}r++}}function yi(t,e){return t.format==="GAF"?0:t.refNameToId[e]}var fA=class{filehandle;parseCache=new iA({});constructor({filehandle:e}){this.filehandle=e}async readIndexBytes(e){let A=await this.filehandle.readFile({signal:e.signal,onProgress:e.onProgress}),n=await UA(A);return{bytes:n,dataView:new DataView(n.buffer,n.byteOffset,n.byteLength)}}async lineCount(e,A={}){let n=await this.parse(A),i=yi(n,e);return i===void 0?-1:n.indices(i)?.stats?.lineCount??-1}async getMetadata(e={}){let{indices:A,...n}=await this.parse(e);return n}async blocksForRange(e,A,n,i={}){let r=await this.parse(i),o=yi(r,e);if(o===void 0)return[];let a=r.indices(o);if(!a)return[];r.format==="GAF"&&(A=Math.max(A-1,0));let C=[];for(let[f,h]of this.reg2bins(A,n,r))for(let Q=f;Q<=h;Q++){let E=a.binIndex[Q];if(E)for(let u of E)C.push(u)}let s=Ee(C,this.lowestOffset(a,A,r)),g=Yr(a.binIndex,n,r.minShift,r.depth);if(g){let f=s.length;for(;f>0&&s[f-1].minv.compareTo(g)>=0;)f--;s.length=f}return s}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 Hr=21582659,Kr=38359875;function xi(t,e){return t*2**e}function pt(t,e){return Math.floor(t/2**e)}var lA=class extends fA{async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e),i=n.getUint32(0,!0),r;if(i===Hr)r=1;else if(i===Kr)r=2;else throw new Error(`Not a CSI file (magic=${i})`);let o=n.getInt32(4,!0),a=n.getInt32(8,!0),C=(8**(a+1)-1)/7,s=2**(o+a*3),g=n.getInt32(12,!0),f=g>=28&&(n.getInt32(16,!0)&15)===3;if(g<30&&!f)throw new Error("CSI index has no tabix header, so it names no references; it may be a BAM or BCF index");let h=he(A,16),Q=n.getInt32(16+g,!0),E=16+g+4,u,d=[];for(let p=0;p<Q;p++){d.push(E);let m=n.getInt32(E,!0);E+=4;for(let I=0;I<m;I++){let l=n.getUint32(E,!0);if(E+=4,l>C)E+=44;else{u=le(A,E,1,u),E+=8;let B=n.getInt32(E,!0);E+=4+16*B}}}function k(p){let m=d[p];if(m===void 0)return;let I=m,l=n.getInt32(I,!0);I+=4;let B={},c={},w;for(let N=0;N<l;N++){let D=n.getUint32(I,!0);if(I+=4,D>C)w=de(A,I+28),I+=44;else{c[D]=rA(A,I),I+=8;let y=n.getInt32(I,!0);I+=4;let x=Array.from({length:y});for(let S=0;S<y;S++)x[S]=new O(rA(A,I),rA(A,I+8),D),I+=16;B[D]=x}}return fe(Object.values(B).flat()),{binIndex:B,loffsets:c,stats:w}}return{...h,csi:!0,refCount:Q,maxBlockSize:65536,firstDataLine:u,csiVersion:r,indices:ue(k),minShift:o,depth:a,maxBinNumber:C,maxRefLength:s}}lowestOffset(e,A,{minShift:n,depth:i}){let{loffsets:r}=e,o;if(r){let a=(xi(1,3*i)-1)/7+pt(Math.max(A,0),n);for(;o===void 0&&a>0;)if(o=r[a],o===void 0){let C=Math.floor((a-1)/8),s=C*8+1;a=a>s?a-1:C}o??=r[0]}return o}reg2bins(e,A,{minShift:n,depth:i,maxBinNumber:r}){e=Math.max(e,0);let o=2**(n+i*3);A>o&&(A=o),A-=1;let a=0,C=0,s=n+i*3,g=[];for(;a<=i;s-=3,C+=xi(1,a*3),a+=1){let f=C+pt(e,s),h=C+pt(A,s);if(h-f+g.length>r)throw new Error(`query ${e}-${A} is too large for current binning scheme (shift ${n}, depth ${i}), try a smaller query or a coarser index binning scheme`);g.push([f,h])}return g}};var Tr=21578324,kt=5,mt=14,we=2**(mt+kt*3);function bi(t){return Math.min(Math.max(t,0),we)}var $=class extends fA{reg2bins(e,A){e>we&&console.warn("querying outside of possible tabix range");let n=bi(e),i=Math.min(A,we)-1,r=[];return n<=i&&r.push([0,0],[1+(n>>26),1+(i>>26)],[9+(n>>23),9+(i>>23)],[73+(n>>20),73+(i>>20)],[585+(n>>17),585+(i>>17)],[4681+(n>>14),4681+(i>>14)]),r}lowestOffset(e,A){let n=e.linearIndex;return n?.[Math.min(bi(A)>>mt,n.length-1)]}async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e);if(n.getUint32(0,!0)!==Tr)throw new Error("Not a TBI file");let i=n.getUint32(4,!0),r=((1<<(kt+1)*3)-1)/7,{refNameToId:o,refIdToName:a,coordinateType:C,format:s,columnNumbers:g,metaChar:f,skipLines:h}=he(A,8),E=36+n.getInt32(32,!0),u,d=[];for(let p=0;p<i;p++){d.push(E);let m=n.getInt32(E,!0);E+=4;for(let l=0;l<m;l++){let B=n.getUint32(E,!0);E+=4;let c=n.getInt32(E,!0);if(E+=4,B>r+1)throw new Error("tabix index contains too many bins, please use a CSI index");E+=16*c}let I=n.getInt32(E,!0);E+=4,u=le(A,E,I,u),E+=8*I}function k(p){let m=d[p];if(m===void 0)return;let I=m,l=n.getInt32(I,!0);I+=4;let B={},c;for(let D=0;D<l;D++){let y=n.getUint32(I,!0);if(I+=4,y>r+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(y===r+1){let x=n.getInt32(I,!0);I+=4,x===2&&(c=de(A,I+16)),I+=16*x}else{let x=n.getInt32(I,!0);I+=4;let S=Array.from({length:x});for(let F=0;F<x;F++)S[F]=new O(rA(A,I),rA(A,I+8),y),I+=16;B[y]=S}}let w=n.getInt32(I,!0);I+=4;let N=Array.from({length:w});for(let D=0;D<w;D++)N[D]=rA(A,I),I+=8;return fe(Object.values(B).flat(),N.map(D=>D.blockPosition)),{binIndex:B,linearIndex:N,stats:c}}return{indices:ue(k),metaChar:f,minShift:mt,depth:kt,maxBinNumber:r,maxRefLength:we,skipLines:h,firstDataLine:u,columnNumbers:g,coordinateType:C,format:s,refIdToName:a,refNameToId:o,maxBlockSize:65536}}};var Dt=9,ke=10,Ri=13,qr=59,Zr=60,Or=62,Xr=6,Pr=1024*2**20,zr=180*1e3;function jr(t,e,A){if(t)return t;if(e)return new EA(e);if(A)return new V(A);throw new TypeError("must provide either filehandle, path, or url")}function Wr({tbiFilehandle:t,csiFilehandle:e,tbiPath:A,csiPath:n,tbiUrl:i,csiUrl:r,path:o,url:a}){if(t)return new $({filehandle:t});if(e)return new lA({filehandle:e});if(A)return new $({filehandle:new EA(A)});if(n)return new lA({filehandle:new EA(n)});if(r)return new lA({filehandle:new V(r)});if(i)return new $({filehandle:new V(i)});if(o)return new $({filehandle:new EA(`${o}.tbi`)});if(a)return new $({filehandle:new V(`${a}.tbi`)});throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl")}function vi(t,e,A,n,i){return t[A]*256+(n-e[A])+i+1}function Vr(t,e,A,n,i,r,o){let a=n-A,C=e+a,s=0;if(t[i]===46)return C;let g=i;for(let f=i;f<=r;f++)if(f===r||t[f]===qr){let h=f-g;if(h>=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(h>=4&&t[g]===69&&t[g+1]===78&&t[g+2]===68&&t[g+3]===61){let Q=pe(t,g+4,f);Q>e&&(C=Q)}else h>=6&&t[g]===83&&t[g+1]===86&&t[g+2]===76&&t[g+3]===69&&t[g+4]===78&&t[g+5]===61&&(s=Ao(t,g+6,f,n+1,o));g=f+1}return Math.max(C,e+s)}var Fi=44;function $r(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 i=t[e+1],r=t[e+2],o=t[e+3];return i===67&&r===78&&o===86||i===68&&r===69&&o===76||i===68&&r===85&&o===80||i===73&&r===78&&o===86}function Ao(t,e,A,n,i){let r=0,o=e,a=n;for(;o<A&&a<i;){let C=t.indexOf(Fi,o);(C===-1||C>A)&&(C=A);let s=t.indexOf(Fi,a);if((s===-1||s>i)&&(s=i),$r(t,a,s)){let g=pe(t,t[o]===45?o+1:o,C);g>r&&(r=g)}o=C+1,a=s+1}return r}var Ji=new TextDecoder;function Si(t,e){let A=-1,n=e.charCodeAt(0);for(let i=0,r=t.length;i<r;i++){let o=t[i];if(i===A+1&&o!==n)break;o===ke&&(A=i)}return t.subarray(0,A+1)}function eo(t,e){let A=0;for(let n=0;n<e;n++){let i=t.indexOf(ke,A);if(i===-1){A=t.length;break}A=i+1}return Ji.decode(t.subarray(0,A)).split(/\r?\n/).slice(0,e)}function pe(t,e,A){let n=0;for(let i=e;i<A;i++){let r=t[i];if(r>=48&&r<=57)n=n*10+(r-48);else break}return n}function to(t,e,A,n,i,{start:r,end:o,pathCol:a,metaCharCode:C,decoder:s,callback:g}){let f=0,h=0;for(;f<t.length;){let Q=t.indexOf(ke,f);if(Q===-1)break;let E=f;f=Q+1;let u=E+e+i;for(;h<n.length&&u>=n[h];)h++;if(t[E]===C)continue;let d=E;for(let B=1;B<a;B++){let c=t.indexOf(Dt,d);if(c===-1||c>=Q){d=Q;break}d=c+1}let k=t[d];if(k!==Or&&k!==Zr)continue;let p=t.indexOf(Dt,d);(p===-1||p>Q)&&(p=Q);let m=1/0,I=-1,l=d;for(;l<p;){let B=0,c=l+1;for(;c<p;c++){let w=t[c]-48;if(w<0||w>9)break;B=B*10+w}B<m&&(m=B),B>I&&(I=B),l=c}if(m>=o)return!0;if(I>=r){let B=t[Q-1]===Ri?Q-1:Q;g(s.decode(t.subarray(E,B)),vi(A,n,h,E+e,i),m,I+1)}}return!1}var DA=class{filehandle;index;chunkCache;headerCache=new iA({});bgzfWorkerPool;constructor({path:e,filehandle:A,url:n,tbiPath:i,tbiUrl:r,tbiFilehandle:o,csiPath:a,csiUrl:C,csiFilehandle:s,chunkCacheSize:g=Pr,chunkCacheIdleTimeoutMs:f=zr,chunkCacheBudget:h,bgzfWorkerPool:Q}){this.bgzfWorkerPool=Q,this.filehandle=jr(A,e,n),this.index=Wr({tbiFilehandle:o,csiFilehandle:s,tbiPath:i,csiPath:a,tbiUrl:r,csiUrl:C,path:e,url:n}),this.chunkCache=new iA({maxSize:g,sizeOf:E=>{let u=0;for(let d of E.segments)u+=d.byteLength;return u},cacheKey:E=>E.toString(),idleTimeoutMs:f,budget:h,fill:(E,u)=>this.readChunk(E,{signal:u})})}clearChunkCache(){this.chunkCache.clear()}async bytesForRegions(e,A={}){let n=[];for(let{refName:r,start:o,end:a}of e){let C=await this.index.blocksForRange(r,o,a,A);for(let s of C)n.push(s)}let i=0;for(let r of Ee(n))i+=r.fetchedSize();return i}async getLines(e,A,n,i){let r,o={},a,C;typeof i=="function"?a=i:(o=i,a=i.lineCallback,r=i.signal,C=i.onProgress);let s=await this.index.getMetadata(o),g=A??0,f=n??s.maxRefLength;if(g>f)throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(g===f)return;let h=await this.index.blocksForRange(e,g,f,o),Q=s.format==="VCF",E=s.columnNumbers.ref||0,u=s.columnNumbers.start||0,d=Q?8:s.columnNumbers.end||0,k=Math.max(E,u,d),p=s.metaChar?.charCodeAt(0),m=s.coordinateType==="1-based-closed"?-1:0,I=new TextEncoder,l=new TextDecoder,B=I.encode(e),c=new Int32Array(k+1),w=s.format==="GAF"?{start:g,end:f,pathCol:u,metaCharCode:p,decoder:l,callback:a}:void 0,N=0;for(let F of h)N+=F.fetchedSize();let D=0;C?.(0,N);let y=1,x=[],S=F=>{for(;x.length<Math.min(F,h.length);){let L=h[x.length],J=this.chunkCache.get(L,r);J.catch(()=>{}),x.push(J)}};S(1);for(let F=0,L=h.length;F<L;F++){let J=h[F],{segments:M,cpositions:oA,dpositions:X}=await x[F];D+=J.fetchedSize(),C?.(D,N);let sA=J.minv.dataPosition;if(w){if(wt(M,(v,hA)=>to(v,hA,oA,X,sA,w)))return}else if(wt(M,(v,hA)=>{let H=0,HA=0;for(;H<v.length;){let K=v.indexOf(ke,H);if(K===-1)break;let Li=H+hA+sA;for(;HA<X.length&&Li>=X[HA];)HA++;if(p!==void 0&&v[H]===p){H=K+1;continue}c[0]=H-1;for(let T=0;T<k;T++){let TA=c[T],me=TA<K?v.indexOf(Dt,TA+1):-1;c[T+1]=me===-1||me>=K?K:me}let Nt=c[E-1]+1,yt=c[E]-Nt;if(yt!==B.length){H=K+1;continue}let xt=!0;for(let T=0;T<yt;T++)if(v[Nt+T]!==B[T]){xt=!1;break}if(!xt){H=K+1;continue}let KA=pe(v,c[u-1]+1,c[u])+m;if(KA>=f)return!0;let NA;if(d===0||d===u?NA=KA+1:Q?NA=Vr(v,KA,c[3]+1,c[4],c[d-1]+1,c[d],c[5]):NA=pe(v,c[d-1]+1,c[d]),NA>g){let T=v[K-1]===Ri?K-1:K,TA=l.decode(v.subarray(H,T));a(TA,vi(oA,X,HA,H+hA,sA),KA,NA)}H=K+1}return!1}))return;y=Math.min(y*2,Xr),S(F+1+y)}}async getMetadata(e={}){return this.index.getMetadata(e)}async readHeaderBytes(e){let{firstDataLine:A,maxBlockSize:n}=await this.getMetadata(e),i=(A?.blockPosition??0)+n,r=await this.filehandle.read(i,0,e);return UA(r)}async parseHeader(e){let{metaChar:A,skipLines:n=0}=await this.getMetadata(e),i=await this.readHeaderBytes(e);return{header:Ji.decode(A?Si(i,A):i),skippedLines:n>0?eo(i,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?Si(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);BA(A.signal);let i=await this.bgzfWorkerPool;return Et(n,e,i)}};var no=t=>({type:"fileLocation",defaultValue:{uri:t,locationType:"UriLocation"}}),da=(t,e="")=>Ft(t,{indexType:{model:St.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:no(e)});function io(t,e,A){return{indexType:A?"CSI":"TBI",location:{uri:`${t}.${A?"csi":"tbi"}`,baseUri:e}}}function ua(t){let{walksUri:e,baseUri:A,csi:n}=t;if(typeof e!="string")return t;let i=`${e}.walks.bed.gz`;return{...t,walksLocation:{uri:i,baseUri:A},walksIndex:io(i,A,n)}}function wa(t,e,A){let n=t.pluginManager;return new DA({filehandle:Rt(t.getConf(e),n),...vt(t.getConf([...A,"location"]),t.getConf([...A,"indexType"]),n)})}function ro(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 Gi=class{constructor(e,A){this.file=e;this.adapter=A;this.lookup=Gt({setup:async e=>SA(await this.file.getReferenceSequenceNames(e))})}async assemblyRefNames(e={}){let A=await this.file.getReferenceSequenceNames(e),n=qA(this.adapter,e.assemblyName),i=A.filter(r=>De(r,n)).map(r=>bt(r));return i.length>0?[...new Set(i)]:A}async resolve(e,A){let n=await this.lookup(A);return RA(n,qA(this.adapter,e.assemblyName),e.refName)}async resolveMapped(e,A){let n=await this.resolve(e,A);if(n===void 0&&e.assemblyName){let i=await this.file.getReferenceSequenceNames(A),r=qA(this.adapter,e.assemblyName);if(i.every(o=>o.includes("#"))&&!i.some(o=>De(o,r)))throw new Error(ro(e))}return n}async regionBytes(e,A={},n=async i=>i){let i=[];for(let r of e){let o=await this.resolve(r,A);o!==void 0&&i.push({refName:o,start:await n(r.start),end:r.end})}return nn(this.file,i,A)}};export{UA as a,so as b,Gt as c,Ui as d,Je as e,zi as f,qe as g,Ye as h,Hi as i,ji as j,Lo as k,no as l,da as m,io as n,ua as o,wa as p,ro as q,Gi as r};
|
|
3
|
-
//# sourceMappingURL=chunk-B2EP6FOQ.js.map
|