New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@gmod/bam

Package Overview
Dependencies
Maintainers
5
Versions
78
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@gmod/bam - npm Package Compare versions

Comparing version 1.0.22 to 1.0.24

dist/bai.d.ts

5

CHANGELOG.md

@@ -0,1 +1,6 @@

<a name="1.0.24"></a>
## [1.0.24](https://github.com/GMOD/bam-js/compare/v1.0.22...v1.0.24) (2019-09-27)
<a name="1.0.22"></a>

@@ -2,0 +7,0 @@ ## [1.0.22](https://github.com/GMOD/bam-js/compare/v1.0.20...v1.0.22) (2019-09-03)

513

dist/bai.js

@@ -1,9 +0,56 @@

"use strict";var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));var Long = _interopRequireWildcard(require("long"));
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty2 = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty2(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-properties"));
var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors"));
var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor"));
var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols"));
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
var _long = _interopRequireDefault(require("long"));
var _virtualOffset = require("./virtualOffset");
var _chunk = _interopRequireDefault(require("./chunk"));
var _indexFile = _interopRequireDefault(require("./indexFile"));function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(source, true).forEach(function (key) {(0, _defineProperty2.default)(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(source).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}
var _indexFile = _interopRequireDefault(require("./indexFile"));
var _util = require("./util");
function ownKeys(object, enumerableOnly) { var keys = (0, _keys.default)(object); if (_getOwnPropertySymbols.default) { var symbols = (0, _getOwnPropertySymbols.default)(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return (0, _getOwnPropertyDescriptor.default)(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty3.default)(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors.default) { (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source)); } else { ownKeys(source).forEach(function (key) { (0, _defineProperty2.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key)); }); } } return target; }
var BAI_MAGIC = 21578050; // BAI\1
var _require = require('./util'),longToNumber = _require.longToNumber,abortBreakPoint = _require.abortBreakPoint,canMergeBlocks = _require.canMergeBlocks;

@@ -13,62 +60,159 @@ function roundDown(n, multiple) {

}
function roundUp(n, multiple) {
return n - n % multiple + multiple;
}var
}
BAI = /*#__PURE__*/function (_IndexFile) {(0, _inherits2.default)(BAI, _IndexFile);function BAI() {(0, _classCallCheck2.default)(this, BAI);return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BAI).apply(this, arguments));}(0, _createClass2.default)(BAI, [{ key: "parsePseudoBin", value: function parsePseudoBin(
bytes, offset) {
var lineCount = longToNumber(
Long.fromBytesLE(bytes.slice(offset + 16, offset + 24), true));
var BAI =
/*#__PURE__*/
function (_IndexFile) {
(0, _inherits2.default)(BAI, _IndexFile);
return { lineCount: lineCount };
} }, { key: "lineCount", value: function () {var _lineCount = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(
function BAI() {
(0, _classCallCheck2.default)(this, BAI);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BAI).apply(this, arguments));
}
refId) {var index, ret;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return (
this.parse());case 2:_context.t0 = refId;index = _context.sent.indices[_context.t0];if (
index) {_context.next = 6;break;}return _context.abrupt("return",
-1);case 6:
(0, _createClass2.default)(BAI, [{
key: "parsePseudoBin",
value: function parsePseudoBin(bytes, offset) {
var lineCount = (0, _util.longToNumber)(_long.default.fromBytesLE(Array.prototype.slice.call(bytes, offset + 16, offset + 24), true));
return {
lineCount: lineCount
};
}
}, {
key: "lineCount",
value: function () {
var _lineCount = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(refId) {
var index, ret;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this.parse();
ret = index.stats || {};return _context.abrupt("return",
ret.lineCount === undefined ? -1 : ret.lineCount);case 8:case "end":return _context.stop();}}}, _callee, this);}));function lineCount(_x) {return _lineCount.apply(this, arguments);}return lineCount;}()
case 2:
_context.t0 = refId;
index = _context.sent.indices[_context.t0];
if (index) {
_context.next = 6;
break;
}
// fetch and parse the index
}, { key: "_parse", value: function () {var _parse2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(abortSignal) {var data, bytes, depth, binLimit, currOffset, i, binCount, stats, binIndex, j, bin, chunkCount, chunks, k, u, v, linearCount, linearIndex, _k;return _regenerator.default.wrap(function _callee2$(_context2) {while (1) {switch (_context2.prev = _context2.next) {case 0:
data = { bai: true, maxBlockSize: 1 << 16 };_context2.next = 3;return (
this.filehandle.readFile({ signal: abortSignal }));case 3:bytes = _context2.sent;if (!(
return _context.abrupt("return", -1);
case 6:
ret = index.stats || {};
return _context.abrupt("return", ret.lineCount === undefined ? -1 : ret.lineCount);
bytes.readUInt32LE(0) !== BAI_MAGIC)) {_context2.next = 6;break;}throw (
new Error('Not a BAI file'));case 6:
case 8:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function lineCount(_x) {
return _lineCount.apply(this, arguments);
}
return lineCount;
}() // fetch and parse the index
}, {
key: "_parse",
value: function () {
var _parse2 = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(abortSignal) {
var data, bytes, depth, binLimit, currOffset, i, binCount, stats, binIndex, j, bin, chunkCount, chunks, k, u, v, linearCount, linearIndex, _k;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
data = {
bai: true,
maxBlockSize: 1 << 16
};
_context2.next = 3;
return this.filehandle.readFile({
signal: abortSignal
});
case 3:
bytes = _context2.sent;
if (!(bytes.readUInt32LE(0) !== BAI_MAGIC)) {
_context2.next = 6;
break;
}
throw new Error('Not a BAI file');
case 6:
data.refCount = bytes.readInt32LE(4);
depth = 5;
binLimit = ((1 << (depth + 1) * 3) - 1) / 7;
binLimit = ((1 << (depth + 1) * 3) - 1) / 7; // read the indexes for each reference sequence
// read the indexes for each reference sequence
data.indices = new Array(data.refCount);
currOffset = 8;
i = 0;case 12:if (!(i < data.refCount)) {_context2.next = 49;break;}_context2.next = 15;return (
abortBreakPoint(abortSignal));case 15:
i = 0;
case 12:
if (!(i < data.refCount)) {
_context2.next = 49;
break;
}
_context2.next = 15;
return (0, _util.abortBreakPoint)(abortSignal);
case 15:
// the binning index
binCount = bytes.readInt32LE(currOffset);
stats = void 0;
currOffset += 4;
binIndex = {};
j = 0;case 20:if (!(j < binCount)) {_context2.next = 41;break;}
j = 0;
case 20:
if (!(j < binCount)) {
_context2.next = 41;
break;
}
bin = bytes.readUInt32LE(currOffset);
currOffset += 4;if (!(
bin === binLimit + 1)) {_context2.next = 29;break;}
currOffset += 4;
if (!(bin === binLimit + 1)) {
_context2.next = 29;
break;
}
currOffset += 4;
stats = this.parsePseudoBin(bytes, currOffset);
currOffset += 32;_context2.next = 38;break;case 29:if (!(
bin > binLimit + 1)) {_context2.next = 33;break;}throw (
new Error('bai index contains too many bins, please use CSI'));case 33:
currOffset += 32;
_context2.next = 38;
break;
case 29:
if (!(bin > binLimit + 1)) {
_context2.next = 33;
break;
}
throw new Error('bai index contains too many bins, please use CSI');
case 33:
chunkCount = bytes.readInt32LE(currOffset);
currOffset += 4;
chunks = new Array(chunkCount);
for (k = 0; k < chunkCount; k += 1) {

@@ -78,98 +222,188 @@ u = (0, _virtualOffset.fromBytes)(bytes, currOffset);

currOffset += 16;
this._findFirstData(data, u);
chunks[k] = new _chunk.default(u, v, bin);
}
binIndex[bin] = chunks;case 38:j += 1;_context2.next = 20;break;case 41:
binIndex[bin] = chunks;
case 38:
j += 1;
_context2.next = 20;
break;
case 41:
linearCount = bytes.readInt32LE(currOffset);
currOffset += 4;
// as we're going through the linear index, figure out
currOffset += 4; // as we're going through the linear index, figure out
// the smallest virtual offset in the indexes, which
// tells us where the BAM header ends
linearIndex = new Array(linearCount);
for (_k = 0; _k < linearCount; _k += 1) {
linearIndex[_k] = (0, _virtualOffset.fromBytes)(bytes, currOffset);
currOffset += 8;
this._findFirstData(data, linearIndex[_k]);
}
data.indices[i] = { binIndex: binIndex, linearIndex: linearIndex, stats: stats };case 46:i += 1;_context2.next = 12;break;case 49:return _context2.abrupt("return",
data.indices[i] = {
binIndex: binIndex,
linearIndex: linearIndex,
stats: stats
};
case 46:
i += 1;
_context2.next = 12;
break;
data);case 50:case "end":return _context2.stop();}}}, _callee2, this);}));function _parse(_x2) {return _parse2.apply(this, arguments);}return _parse;}() }, { key: "indexCov", value: function () {var _indexCov = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(
case 49:
return _context2.abrupt("return", data);
case 50:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
seqId, start, end) {var v, range, indexData, seqIdx, _seqIdx$linearIndex, linearIndex, stats, e, s, depths, totalSize, currentPos, i, j;return _regenerator.default.wrap(function _callee3$(_context3) {while (1) {switch (_context3.prev = _context3.next) {case 0:
function _parse(_x2) {
return _parse2.apply(this, arguments);
}
return _parse;
}()
}, {
key: "indexCov",
value: function () {
var _indexCov = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee3(seqId, start, end) {
var v, range, indexData, seqIdx, _seqIdx$linearIndex, linearIndex, stats, e, s, depths, totalSize, currentPos, i, j;
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
v = 16384;
range = start !== undefined;_context3.next = 4;return (
this.parse());case 4:indexData = _context3.sent;
seqIdx = indexData.indices[seqId];if (
seqIdx) {_context3.next = 8;break;}return _context3.abrupt("return", []);case 8:_seqIdx$linearIndex =
seqIdx.linearIndex, linearIndex = _seqIdx$linearIndex === void 0 ? [] : _seqIdx$linearIndex, stats = seqIdx.stats;if (
linearIndex.length) {_context3.next = 11;break;}return _context3.abrupt("return", []);case 11:
e = range ? roundUp(end, v) : (linearIndex.length - 1) * v;
s = range ? roundDown(start, v) : 0;
range = start !== undefined;
_context3.next = 4;
return this.parse();
case 4:
indexData = _context3.sent;
seqIdx = indexData.indices[seqId];
if (seqIdx) {
_context3.next = 8;
break;
}
return _context3.abrupt("return", []);
case 8:
_seqIdx$linearIndex = seqIdx.linearIndex, linearIndex = _seqIdx$linearIndex === void 0 ? [] : _seqIdx$linearIndex, stats = seqIdx.stats;
if (linearIndex.length) {
_context3.next = 11;
break;
}
return _context3.abrupt("return", []);
case 11:
e = end !== undefined ? roundUp(end, v) : (linearIndex.length - 1) * v;
s = start !== undefined ? roundDown(start, v) : 0;
if (range) {
depths = new Array(Math.floor((e - s) / v));
depths = new Array((e - s) / v);
} else {
depths = new Array(linearIndex.length - 1);
}
totalSize = linearIndex[linearIndex.length - 1].blockPosition;if (!(
e > (linearIndex.length - 1) * v)) {_context3.next = 17;break;}throw (
new Error('query outside of range of linear index'));case 17:
totalSize = linearIndex[linearIndex.length - 1].blockPosition;
if (!(e > (linearIndex.length - 1) * v)) {
_context3.next = 17;
break;
}
throw new Error('query outside of range of linear index');
case 17:
currentPos = linearIndex[s / v].blockPosition;
for (i = s / v, j = 0; i + 1 < e / v; i++, j++) {
for (i = s / v, j = 0; i < e / v; i++, j++) {
depths[j] = {
score: linearIndex[i + 1].blockPosition - currentPos,
start: i * v,
end: i * v + v };
end: i * v + v
};
currentPos = linearIndex[i + 1].blockPosition;
}return _context3.abrupt("return",
depths.map(function (d) {
return _objectSpread({}, d, { score: d.score * stats.lineCount / totalSize });
}));case 20:case "end":return _context3.stop();}}}, _callee3, this);}));function indexCov(_x3, _x4, _x5) {return _indexCov.apply(this, arguments);}return indexCov;}() }, { key: "indexCovTotal", value: function () {var _indexCovTotal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(
}
return _context3.abrupt("return", depths.map(function (d) {
return _objectSpread({}, d, {
score: d.score * stats.lineCount / totalSize
});
}));
seqId) {var v, indexData, seqIdx, _seqIdx$linearIndex2, linearIndex, stats, currentPos, depths, totalSize, i, j;return _regenerator.default.wrap(function _callee4$(_context4) {while (1) {switch (_context4.prev = _context4.next) {case 0:
v = 16384;_context4.next = 3;return (
this.parse());case 3:indexData = _context4.sent;
seqIdx = indexData.indices[seqId];if (
seqIdx) {_context4.next = 7;break;}return _context4.abrupt("return", []);case 7:_seqIdx$linearIndex2 =
seqIdx.linearIndex, linearIndex = _seqIdx$linearIndex2 === void 0 ? [] : _seqIdx$linearIndex2, stats = seqIdx.stats;if (
linearIndex.length) {_context4.next = 10;break;}return _context4.abrupt("return", []);case 10:
currentPos = linearIndex[0].blockPosition;
depths = new Array(linearIndex.length - 1);
totalSize = linearIndex.slice(-1)[0].blockPosition;
for (i = 1, j = 0; i < linearIndex.length; i++, j++) {
depths[j] = linearIndex[i].blockPosition - currentPos;
currentPos = linearIndex[i].blockPosition;
}return _context4.abrupt("return",
depths.map(function (d, i) {
return {
score: d * stats.lineCount / totalSize,
start: i * v,
end: i * v + v };
case 20:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
}));case 15:case "end":return _context4.stop();}}}, _callee4, this);}));function indexCovTotal(_x6) {return _indexCovTotal.apply(this, arguments);}return indexCovTotal;}() }, { key: "blocksForRange", value: function () {var _blocksForRange = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(
function indexCov(_x3, _x4, _x5) {
return _indexCov.apply(this, arguments);
}
return indexCov;
}()
}, {
key: "blocksForRange",
value: function () {
var _blocksForRange = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(refId, beg, end) {
var indexData, indexes, binIndex, bins, l, numOffsets, i, off, _i, chunks, j, _i2, _i3;
refId, beg, end) {var indexData, indexes, binIndex, bins, l, numOffsets, i, off, _i, chunks, j, _i2, _i3;return _regenerator.default.wrap(function _callee5$(_context5) {while (1) {switch (_context5.prev = _context5.next) {case 0:
if (beg < 0) beg = 0;_context5.next = 3;return (
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
if (beg < 0) beg = 0;
_context4.next = 3;
return this.parse();
this.parse());case 3:indexData = _context5.sent;if (
indexData) {_context5.next = 6;break;}return _context5.abrupt("return", []);case 6:
indexes = indexData.indices[refId];if (
indexes) {_context5.next = 9;break;}return _context5.abrupt("return", []);case 9:
case 3:
indexData = _context4.sent;
binIndex = indexes.binIndex;
if (indexData) {
_context4.next = 6;
break;
}
bins = this.reg2bins(beg, end);
return _context4.abrupt("return", []);
case 6:
indexes = indexData.indices[refId];
if (indexes) {
_context4.next = 9;
break;
}
return _context4.abrupt("return", []);
case 9:
binIndex = indexes.binIndex;
bins = this.reg2bins(beg, end);
numOffsets = 0;
for (i = 0; i < bins.length; i += 1) {

@@ -179,34 +413,44 @@ if (binIndex[bins[i]]) {

}
}if (!(
}
numOffsets === 0)) {_context5.next = 15;break;}return _context5.abrupt("return", []);case 15:
if (!(numOffsets === 0)) {
_context4.next = 15;
break;
}
return _context4.abrupt("return", []);
case 15:
off = [];
numOffsets = 0;
for (_i = 0; _i < bins.length; _i += 1) {
chunks = binIndex[bins[_i]];
if (chunks)
for (j = 0; j < chunks.length; j += 1) {
off[numOffsets] = new _chunk.default(
chunks[j].minv,
chunks[j].maxv,
chunks[j].bin);
if (chunks) for (j = 0; j < chunks.length; j += 1) {
off[numOffsets] = new _chunk.default(chunks[j].minv, chunks[j].maxv, chunks[j].bin);
numOffsets += 1;
}
}if (
}
off.length) {_context5.next = 20;break;}return _context5.abrupt("return", []);case 20:
if (off.length) {
_context4.next = 20;
break;
}
off = off.sort(function (a, b) {return a.compareTo(b);});
// resolve overlaps between adjacent blocks; this may happen due to the merge in indexing
return _context4.abrupt("return", []);
case 20:
off = off.sort(function (a, b) {
return a.compareTo(b);
}); // resolve overlaps between adjacent blocks; this may happen due to the merge in indexing
for (_i2 = 1; _i2 < numOffsets; _i2 += 1) {
if (off[_i2 - 1].maxv.compareTo(off[_i2].minv) >= 0)
off[_i2 - 1].maxv = off[_i2].minv;}
if (off[_i2 - 1].maxv.compareTo(off[_i2].minv) >= 0) off[_i2 - 1].maxv = off[_i2].minv;
} // merge adjacent blocks
// merge adjacent blocks
l = 0;
for (_i3 = 1; _i3 < numOffsets; _i3 += 1) {
if (canMergeBlocks(off[l], off[_i3])) off[l].maxv = off[_i3].maxv;else
{
if ((0, _util.canMergeBlocks)(off[l], off[_i3])) off[l].maxv = off[_i3].maxv;else {
l += 1;

@@ -217,21 +461,58 @@ off[l].minv = off[_i3].minv;

}
numOffsets = l + 1;return _context5.abrupt("return",
off.slice(0, numOffsets));case 26:case "end":return _context5.stop();}}}, _callee5, this);}));function blocksForRange(_x7, _x8, _x9) {return _blocksForRange.apply(this, arguments);}return blocksForRange;}()
numOffsets = l + 1;
return _context4.abrupt("return", off.slice(0, numOffsets));
case 26:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function blocksForRange(_x6, _x7, _x8) {
return _blocksForRange.apply(this, arguments);
}
return blocksForRange;
}()
/**
* calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
* @returns {Array[number]}
*/ }, { key: "reg2bins", value: function reg2bins(
beg, end) {
* calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
* @returns {Array[number]}
*/
}, {
key: "reg2bins",
value: function reg2bins(beg, end) {
var list = [0];
end -= 1;
for (var k = 1 + (beg >> 26); k <= 1 + (end >> 26); k += 1) {list.push(k);}
for (var _k2 = 9 + (beg >> 23); _k2 <= 9 + (end >> 23); _k2 += 1) {list.push(_k2);}
for (var _k3 = 73 + (beg >> 20); _k3 <= 73 + (end >> 20); _k3 += 1) {list.push(_k3);}
for (var _k4 = 585 + (beg >> 17); _k4 <= 585 + (end >> 17); _k4 += 1) {list.push(_k4);}
for (var k = 1 + (beg >> 26); k <= 1 + (end >> 26); k += 1) {
list.push(k);
}
for (var _k2 = 9 + (beg >> 23); _k2 <= 9 + (end >> 23); _k2 += 1) {
list.push(_k2);
}
for (var _k3 = 73 + (beg >> 20); _k3 <= 73 + (end >> 20); _k3 += 1) {
list.push(_k3);
}
for (var _k4 = 585 + (beg >> 17); _k4 <= 585 + (end >> 17); _k4 += 1) {
list.push(_k4);
}
for (var _k5 = 4681 + (beg >> 14); _k5 <= 4681 + (end >> 14); _k5 += 1) {
list.push(_k5);}
list.push(_k5);
}
return list;
} }]);return BAI;}(_indexFile.default);exports.default = BAI;
}
}]);
return BAI;
}(_indexFile.default);
exports.default = BAI;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYWkudHMiXSwibmFtZXMiOlsiQkFJX01BR0lDIiwicm91bmREb3duIiwibiIsIm11bHRpcGxlIiwicm91bmRVcCIsIkJBSSIsImJ5dGVzIiwib2Zmc2V0IiwibGluZUNvdW50IiwiTG9uZyIsImZyb21CeXRlc0xFIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJyZWZJZCIsInBhcnNlIiwiaW5kZXgiLCJpbmRpY2VzIiwicmV0Iiwic3RhdHMiLCJ1bmRlZmluZWQiLCJhYm9ydFNpZ25hbCIsImRhdGEiLCJiYWkiLCJtYXhCbG9ja1NpemUiLCJmaWxlaGFuZGxlIiwicmVhZEZpbGUiLCJzaWduYWwiLCJyZWFkVUludDMyTEUiLCJFcnJvciIsInJlZkNvdW50IiwicmVhZEludDMyTEUiLCJkZXB0aCIsImJpbkxpbWl0IiwiY3Vyck9mZnNldCIsImkiLCJiaW5Db3VudCIsImJpbkluZGV4IiwiaiIsImJpbiIsInBhcnNlUHNldWRvQmluIiwiY2h1bmtDb3VudCIsImNodW5rcyIsImsiLCJ1IiwidiIsIl9maW5kRmlyc3REYXRhIiwiQ2h1bmsiLCJsaW5lYXJDb3VudCIsImxpbmVhckluZGV4Iiwic2VxSWQiLCJzdGFydCIsImVuZCIsInJhbmdlIiwiaW5kZXhEYXRhIiwic2VxSWR4IiwibGVuZ3RoIiwiZSIsInMiLCJkZXB0aHMiLCJ0b3RhbFNpemUiLCJibG9ja1Bvc2l0aW9uIiwiY3VycmVudFBvcyIsInNjb3JlIiwibWFwIiwiZCIsImJlZyIsImluZGV4ZXMiLCJiaW5zIiwicmVnMmJpbnMiLCJudW1PZmZzZXRzIiwib2ZmIiwibWludiIsIm1heHYiLCJzb3J0IiwiYSIsImIiLCJjb21wYXJlVG8iLCJsIiwibGlzdCIsInB1c2giLCJJbmRleEZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7O0FBRUEsSUFB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QUcsS0FBS3VCLEdBQUcsSUFBSSxFQUFaLENBQWIsRUFBOEJ2QixHQUFDLElBQUksS0FBS1MsR0FBRyxJQUFJLEVBQVosQ0FBbkMsRUFBb0RULEdBQUMsSUFBSSxDQUF6RDtBQUE0RG9DLFFBQUFBLElBQUksQ0FBQ0MsSUFBTCxDQUFVckMsR0FBVjtBQUE1RDs7QUFDQSxXQUFLLElBQUlBLEdBQUMsR0FBRyxNQUFNdUIsR0FBRyxJQUFJLEVBQWIsQ0FBYixFQUErQnZCLEdBQUMsSUFBSSxNQUFNUyxHQUFHLElBQUksRUFBYixDQUFwQyxFQUFzRFQsR0FBQyxJQUFJLENBQTNEO0FBQThEb0MsUUFBQUEsSUFBSSxDQUFDQyxJQUFMLENBQVVyQyxHQUFWO0FBQTlEOztBQUNBLFdBQUssSUFBSUEsR0FBQyxHQUFHLE9BQU91QixHQUFHLElBQUksRUFBZCxDQUFiLEVBQWdDdkIsR0FBQyxJQUFJLE9BQU9TLEdBQUcsSUFBSSxFQUFkLENBQXJDLEVBQXdEVCxHQUFDLElBQUksQ0FBN0Q7QUFBZ0VvQyxRQUFBQSxJQUFJLENBQUNDLElBQUwsQ0FBVXJDLEdBQVY7QUFBaEU7O0FBQ0EsV0FBSyxJQUFJQSxHQUFDLEdBQUcsUUFBUXVCLEdBQUcsSUFBSSxFQUFmLENBQWIsRUFBaUN2QixHQUFDLElBQUksUUFBUVMsR0FBRyxJQUFJLEVBQWYsQ0FBdEMsRUFBMERULEdBQUMsSUFBSSxDQUEvRDtBQUFrRW9DLFFBQUFBLElBQUksQ0FBQ0MsSUFBTCxDQUFVckMsR0FBVjtBQUFsRTs7QUFDQSxhQUFPb0MsSUFBUDtBQUNEOzs7RUEvTDhCRSxrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb25nIGZyb20gJ2xvbmcnXG5pbXBvcnQgeyBmcm9tQnl0ZXMgfSBmcm9tICcuL3ZpcnR1YWxPZmZzZXQnXG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi9jaHVuaydcblxuaW1wb3J0IEluZGV4RmlsZSBmcm9tICcuL2luZGV4RmlsZSdcbmltcG9ydCB7IGxvbmdUb051bWJlciwgYWJvcnRCcmVha1BvaW50LCBjYW5NZXJnZUJsb2NrcyB9IGZyb20gJy4vdXRpbCdcblxuY29uc3QgQkFJX01BR0lDID0gMjE1NzgwNTAgLy8gQkFJXFwxXG5cbmZ1bmN0aW9uIHJvdW5kRG93bihuOiBudW1iZXIsIG11bHRpcGxlOiBudW1iZXIpIHtcbiAgcmV0dXJuIG4gLSAobiAlIG11bHRpcGxlKVxufVxuZnVuY3Rpb24gcm91bmRVcChuOiBudW1iZXIsIG11bHRpcGxlOiBudW1iZXIpIHtcbiAgcmV0dXJuIG4gLSAobiAlIG11bHRpcGxlKSArIG11bHRpcGxlXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJBSSBleHRlbmRzIEluZGV4RmlsZSB7XG4gIHBhcnNlUHNldWRvQmluKGJ5dGVzOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKSB7XG4gICAgY29uc3QgbGluZUNvdW50ID0gbG9uZ1RvTnVtYmVyKExvbmcuZnJvbUJ5dGVzTEUoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYnl0ZXMsIG9mZnNldCArIDE2LCBvZmZzZXQgKyAyNCksIHRydWUpKVxuICAgIHJldHVybiB7IGxpbmVDb3VudCB9XG4gIH1cblxuICBhc3luYyBsaW5lQ291bnQocmVmSWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGluZGV4ID0gKGF3YWl0IHRoaXMucGFyc2UoKSkuaW5kaWNlc1tyZWZJZF1cbiAgICBpZiAoIWluZGV4KSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgY29uc3QgcmV0ID0gaW5kZXguc3RhdHMgfHwge31cbiAgICByZXR1cm4gcmV0LmxpbmVDb3VudCA9PT0gdW5kZWZpbmVkID8gLTEgOiByZXQubGluZUNvdW50XG4gIH1cblxuICAvLyBmZXRjaCBhbmQgcGFyc2UgdGhlIGluZGV4XG4gIGFzeW5jIF9wYXJzZShhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKSB7XG4gICAgY29uc3QgZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHsgYmFpOiB0cnVlLCBtYXhCbG9ja1NpemU6IDEgPDwgMTYgfVxuICAgIGNvbnN0IGJ5dGVzID0gKGF3YWl0IHRoaXMuZmlsZWhhbmRsZS5yZWFkRmlsZSh7XG4gICAgICBzaWduYWw6IGFib3J0U2lnbmFsLFxuICAgIH0pKSBhcyBCdWZmZXJcblxuICAgIC8vIGNoZWNrIEJBSSBtYWdpYyBudW1iZXJzXG4gICAgaWYgKGJ5dGVzLnJlYWRVSW50MzJMRSgwKSAhPT0gQkFJX01BR0lDKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIEJBSSBmaWxlJylcbiAgICB9XG5cbiAgICBkYXRhLnJlZkNvdW50ID0gYnl0ZXMucmVhZEludDMyTEUoNClcbiAgICBjb25zdCBkZXB0aCA9IDVcbiAgICBjb25zdCBiaW5MaW1pdCA9ICgoMSA8PCAoKGRlcHRoICsgMSkgKiAzKSkgLSAxKSAvIDdcblxuICAgIC8vIHJlYWQgdGhlIGluZGV4ZXMgZm9yIGVhY2ggcmVmZXJlbmNlIHNlcXVlbmNlXG4gICAgZGF0YS5pbmRpY2VzID0gbmV3IEFycmF5KGRhdGEucmVmQ291bnQpXG4gICAgbGV0IGN1cnJPZmZzZXQgPSA4XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnJlZkNvdW50OyBpICs9IDEpIHtcbiAgICAgIGF3YWl0IGFib3J0QnJlYWtQb2ludChhYm9ydFNpZ25hbClcblxuICAgICAgLy8gdGhlIGJpbm5pbmcgaW5kZXhcbiAgICAgIGNvbnN0IGJpbkNvdW50ID0gYnl0ZXMucmVhZEludDMyTEUoY3Vyck9mZnNldClcbiAgICAgIGxldCBzdGF0c1xuXG4gICAgICBjdXJyT2Zmc2V0ICs9IDRcbiAgICAgIGNvbnN0IGJpbkluZGV4OiB7IFtrZXk6IG51bWJlcl06IENodW5rW10gfSA9IHt9XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGJpbkNvdW50OyBqICs9IDEpIHtcbiAgICAgICAgY29uc3QgYmluID0gYnl0ZXMucmVhZFVJbnQzMkxFKGN1cnJPZmZzZXQpXG4gICAgICAgIGN1cnJPZmZzZXQgKz0gNFxuICAgICAgICBpZiAoYmluID09PSBiaW5MaW1pdCArIDEpIHtcbiAgICAgICAgICBjdXJyT2Zmc2V0ICs9IDRcbiAgICAgICAgICBzdGF0cyA9IHRoaXMucGFyc2VQc2V1ZG9CaW4oYnl0ZXMsIGN1cnJPZmZzZXQpXG4gICAgICAgICAgY3Vyck9mZnNldCArPSAzMlxuICAgICAgICB9IGVsc2UgaWYgKGJpbiA+IGJpbkxpbWl0ICsgMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFpIGluZGV4IGNvbnRhaW5zIHRvbyBtYW55IGJpbnMsIHBsZWFzZSB1c2UgQ1NJJylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjaHVua0NvdW50ID0gYnl0ZXMucmVhZEludDMyTEUoY3Vyck9mZnNldClcbiAgICAgICAgICBjdXJyT2Zmc2V0ICs9IDRcbiAgICAgICAgICBjb25zdCBjaHVua3MgPSBuZXcgQXJyYXkoY2h1bmtDb3VudClcbiAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGNodW5rQ291bnQ7IGsgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgdSA9IGZyb21CeXRlcyhieXRlcywgY3Vyck9mZnNldClcbiAgICAgICAgICAgIGNvbnN0IHYgPSBmcm9tQnl0ZXMoYnl0ZXMsIGN1cnJPZmZzZXQgKyA4KVxuICAgICAgICAgICAgY3Vyck9mZnNldCArPSAxNlxuICAgICAgICAgICAgdGhpcy5fZmluZEZpcnN0RGF0YShkYXRhLCB1KVxuICAgICAgICAgICAgY2h1bmtzW2tdID0gbmV3IENodW5rKHUsIHYsIGJpbilcbiAgICAgICAgICB9XG4gICAgICAgICAgYmluSW5kZXhbYmluXSA9IGNodW5rc1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxpbmVhckNvdW50ID0gYnl0ZXMucmVhZEludDMyTEUoY3Vyck9mZnNldClcbiAgICAgIGN1cnJPZmZzZXQgKz0gNFxuICAgICAgLy8gYXMgd2UncmUgZ29pbmcgdGhyb3VnaCB0aGUgbGluZWFyIGluZGV4LCBmaWd1cmUgb3V0XG4gICAgICAvLyB0aGUgc21hbGxlc3QgdmlydHVhbCBvZmZzZXQgaW4gdGhlIGluZGV4ZXMsIHdoaWNoXG4gICAgICAvLyB0ZWxscyB1cyB3aGVyZSB0aGUgQkFNIGhlYWRlciBlbmRzXG4gICAgICBjb25zdCBsaW5lYXJJbmRleCA9IG5ldyBBcnJheShsaW5lYXJDb3VudClcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGluZWFyQ291bnQ7IGsgKz0gMSkge1xuICAgICAgICBsaW5lYXJJbmRleFtrXSA9IGZyb21CeXRlcyhieXRlcywgY3Vyck9mZnNldClcbiAgICAgICAgY3Vyck9mZnNldCArPSA4XG4gICAgICAgIHRoaXMuX2ZpbmRGaXJzdERhdGEoZGF0YSwgbGluZWFySW5kZXhba10pXG4gICAgICB9XG5cbiAgICAgIGRhdGEuaW5kaWNlc1tpXSA9IHsgYmluSW5kZXgsIGxpbmVhckluZGV4LCBzdGF0cyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxuXG4gIGFzeW5jIGluZGV4Q292KFxuICAgIHNlcUlkOiBudW1iZXIsXG4gICAgc3RhcnQ/OiBudW1iZXIsXG4gICAgZW5kPzogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXI7IHNjb3JlOiBudW1iZXIgfVtdPiB7XG4gICAgY29uc3QgdiA9IDE2Mzg0XG4gICAgY29uc3QgcmFuZ2UgPSBzdGFydCAhPT0gdW5kZWZpbmVkXG4gICAgY29uc3QgaW5kZXhEYXRhID0gYXdhaXQgdGhpcy5wYXJzZSgpXG4gICAgY29uc3Qgc2VxSWR4ID0gaW5kZXhEYXRhLmluZGljZXNbc2VxSWRdXG4gICAgaWYgKCFzZXFJZHgpIHJldHVybiBbXVxuICAgIGNvbnN0IHsgbGluZWFySW5kZXggPSBbXSwgc3RhdHMgfSA9IHNlcUlkeFxuICAgIGlmICghbGluZWFySW5kZXgubGVuZ3RoKSByZXR1cm4gW11cbiAgICBjb25zdCBlID0gZW5kICE9PSB1bmRlZmluZWQgPyByb3VuZFVwKGVuZCwgdikgOiAobGluZWFySW5kZXgubGVuZ3RoIC0gMSkgKiB2XG4gICAgY29uc3QgcyA9IHN0YXJ0ICE9PSB1bmRlZmluZWQgPyByb3VuZERvd24oc3RhcnQsIHYpIDogMFxuICAgIGxldCBkZXB0aHNcbiAgICBpZiAocmFuZ2UpIHtcbiAgICAgIGRlcHRocyA9IG5ldyBBcnJheSgoZSAtIHMpIC8gdilcbiAgICB9IGVsc2Uge1xuICAgICAgZGVwdGhzID0gbmV3IEFycmF5KGxpbmVhckluZGV4Lmxlbmd0aCAtIDEpXG4gICAgfVxuICAgIGNvbnN0IHRvdGFsU2l6ZSA9IGxpbmVhckluZGV4W2xpbmVhckluZGV4Lmxlbmd0aCAtIDFdLmJsb2NrUG9zaXRpb25cbiAgICBpZiAoZSA+IChsaW5lYXJJbmRleC5sZW5ndGggLSAxKSAqIHYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncXVlcnkgb3V0c2lkZSBvZiByYW5nZSBvZiBsaW5lYXIgaW5kZXgnKVxuICAgIH1cbiAgICBsZXQgY3VycmVudFBvcyA9IGxpbmVhckluZGV4W3MgLyB2XS5ibG9ja1Bvc2l0aW9uXG4gICAgZm9yIChsZXQgaSA9IHMgLyB2LCBqID0gMDsgaSA8IGUgLyB2OyBpKyssIGorKykge1xuICAgICAgZGVwdGhzW2pdID0ge1xuICAgICAgICBzY29yZTogbGluZWFySW5kZXhbaSArIDFdLmJsb2NrUG9zaXRpb24gLSBjdXJyZW50UG9zLFxuICAgICAgICBzdGFydDogaSAqIHYsXG4gICAgICAgIGVuZDogaSAqIHYgKyB2LFxuICAgICAgfVxuICAgICAgY3VycmVudFBvcyA9IGxpbmVhckluZGV4W2kgKyAxXS5ibG9ja1Bvc2l0aW9uXG4gICAgfVxuICAgIHJldHVybiBkZXB0aHMubWFwKGQgPT4ge1xuICAgICAgcmV0dXJuIHsgLi4uZCwgc2NvcmU6IChkLnNjb3JlICogc3RhdHMubGluZUNvdW50KSAvIHRvdGFsU2l6ZSB9XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGJsb2Nrc0ZvclJhbmdlKHJlZklkOiBudW1iZXIsIGJlZzogbnVtYmVyLCBlbmQ6IG51bWJlcik6IFByb21pc2U8Q2h1bmtbXT4ge1xuICAgIGlmIChiZWcgPCAwKSBiZWcgPSAwXG5cbiAgICBjb25zdCBpbmRleERhdGEgPSBhd2FpdCB0aGlzLnBhcnNlKClcbiAgICBpZiAoIWluZGV4RGF0YSkgcmV0dXJuIFtdXG4gICAgY29uc3QgaW5kZXhlcyA9IGluZGV4RGF0YS5pbmRpY2VzW3JlZklkXVxuICAgIGlmICghaW5kZXhlcykgcmV0dXJuIFtdXG5cbiAgICBjb25zdCBiaW5JbmRleDogeyBba2V5OiBudW1iZXJdOiBhbnkgfSA9IGluZGV4ZXMuYmluSW5kZXhcblxuICAgIGNvbnN0IGJpbnMgPSB0aGlzLnJlZzJiaW5zKGJlZywgZW5kKVxuXG4gICAgbGV0IGxcbiAgICBsZXQgbnVtT2Zmc2V0cyA9IDBcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChiaW5JbmRleFtiaW5zW2ldXSkge1xuICAgICAgICBudW1PZmZzZXRzICs9IGJpbkluZGV4W2JpbnNbaV1dLmxlbmd0aFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChudW1PZmZzZXRzID09PSAwKSByZXR1cm4gW11cblxuICAgIGxldCBvZmYgPSBbXVxuICAgIG51bU9mZnNldHMgPSAwXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBjaHVua3MgPSBiaW5JbmRleFtiaW5zW2ldXVxuICAgICAgaWYgKGNodW5rcylcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjaHVua3MubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgICBvZmZbbnVtT2Zmc2V0c10gPSBuZXcgQ2h1bmsoY2h1bmtzW2pdLm1pbnYsIGNodW5rc1tqXS5tYXh2LCBjaHVua3Nbal0uYmluKVxuICAgICAgICAgIG51bU9mZnNldHMgKz0gMVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvZmYubGVuZ3RoKSByZXR1cm4gW11cblxuICAgIG9mZiA9IG9mZi5zb3J0KChhLCBiKSA9PiBhLmNvbXBhcmVUbyhiKSlcbiAgICAvLyByZXNvbHZlIG92ZXJsYXBzIGJldHdlZW4gYWRqYWNlbnQgYmxvY2tzOyB0aGlzIG1heSBoYXBwZW4gZHVlIHRvIHRoZSBtZXJnZSBpbiBpbmRleGluZ1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtT2Zmc2V0czsgaSArPSAxKVxuICAgICAgaWYgKG9mZltpIC0gMV0ubWF4di5jb21wYXJlVG8ob2ZmW2ldLm1pbnYpID49IDApIG9mZltpIC0gMV0ubWF4diA9IG9mZltpXS5taW52XG5cbiAgICAvLyBtZXJnZSBhZGphY2VudCBibG9ja3NcbiAgICBsID0gMFxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtT2Zmc2V0czsgaSArPSAxKSB7XG4gICAgICBpZiAoY2FuTWVyZ2VCbG9ja3Mob2ZmW2xdLCBvZmZbaV0pKSBvZmZbbF0ubWF4diA9IG9mZltpXS5tYXh2XG4gICAgICBlbHNlIHtcbiAgICAgICAgbCArPSAxXG4gICAgICAgIG9mZltsXS5taW52ID0gb2ZmW2ldLm1pbnZcbiAgICAgICAgb2ZmW2xdLm1heHYgPSBvZmZbaV0ubWF4dlxuICAgICAgfVxuICAgIH1cbiAgICBudW1PZmZzZXRzID0gbCArIDFcblxuICAgIHJldHVybiBvZmYuc2xpY2UoMCwgbnVtT2Zmc2V0cylcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxjdWxhdGUgdGhlIGxpc3Qgb2YgYmlucyB0aGF0IG1heSBvdmVybGFwIHdpdGggcmVnaW9uIFtiZWcsZW5kKSAoemVyby1iYXNlZCBoYWxmLW9wZW4pXG4gICAqIEByZXR1cm5zIHtBcnJheVtudW1iZXJdfVxuICAgKi9cbiAgcmVnMmJpbnMoYmVnOiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gICAgY29uc3QgbGlzdCA9IFswXVxuICAgIGVuZCAtPSAxXG4gICAgZm9yIChsZXQgayA9IDEgKyAoYmVnID4+IDI2KTsgayA8PSAxICsgKGVuZCA+PiAyNik7IGsgKz0gMSkgbGlzdC5wdXNoKGspXG4gICAgZm9yIChsZXQgayA9IDkgKyAoYmVnID4+IDIzKTsgayA8PSA5ICsgKGVuZCA+PiAyMyk7IGsgKz0gMSkgbGlzdC5wdXNoKGspXG4gICAgZm9yIChsZXQgayA9IDczICsgKGJlZyA+PiAyMCk7IGsgPD0gNzMgKyAoZW5kID4+IDIwKTsgayArPSAxKSBsaXN0LnB1c2goaylcbiAgICBmb3IgKGxldCBrID0gNTg1ICsgKGJlZyA+PiAxNyk7IGsgPD0gNTg1ICsgKGVuZCA+PiAxNyk7IGsgKz0gMSkgbGlzdC5wdXNoKGspXG4gICAgZm9yIChsZXQgayA9IDQ2ODEgKyAoYmVnID4+IDE0KTsgayA8PSA0NjgxICsgKGVuZCA+PiAxNCk7IGsgKz0gMSkgbGlzdC5wdXNoKGspXG4gICAgcmV0dXJuIGxpc3RcbiAgfVxufVxuIl19

@@ -1,10 +0,36 @@

"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); // little class representing a chunk in the index
var Chunk = /*#__PURE__*/function () {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
// little class representing a chunk in the index
var Chunk =
/*#__PURE__*/
function () {
/**
* @param {VirtualOffset} minv
* @param {VirtualOffset} maxv
* @param {number} bin
* @param {number} [fetchedSize]
*/
function Chunk(minv, maxv, bin, fetchedSize) {(0, _classCallCheck2.default)(this, Chunk);
* @param {VirtualOffset} minv
* @param {VirtualOffset} maxv
* @param {number} bin
* @param {number} [fetchedSize]
*/
function Chunk(minv, maxv, bin) {
var fetchedSize = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
(0, _classCallCheck2.default)(this, Chunk);
(0, _defineProperty2.default)(this, "minv", void 0);
(0, _defineProperty2.default)(this, "maxv", void 0);
(0, _defineProperty2.default)(this, "bin", void 0);
(0, _defineProperty2.default)(this, "_fetchedSize", void 0);
this.minv = minv;

@@ -14,28 +40,30 @@ this.maxv = maxv;

this._fetchedSize = fetchedSize;
}(0, _createClass2.default)(Chunk, [{ key: "toUniqueString", value: function toUniqueString()
}
{
return "".concat(this.minv, "..").concat(this.maxv, " (bin ").concat(
this.bin, ", fetchedSize ").concat(
this.fetchedSize(), ")");
} }, { key: "toString", value: function toString()
{
(0, _createClass2.default)(Chunk, [{
key: "toUniqueString",
value: function toUniqueString() {
return "".concat(this.minv, "..").concat(this.maxv, " (bin ").concat(this.bin, ", fetchedSize ").concat(this.fetchedSize(), ")");
}
}, {
key: "toString",
value: function toString() {
return this.toUniqueString();
} }, { key: "compareTo", value: function compareTo(
b) {
return (
this.minv.compareTo(b.minv) ||
this.maxv.compareTo(b.maxv) ||
this.bin - b.bin);
} }, { key: "fetchedSize", value: function fetchedSize()
{
}
}, {
key: "compareTo",
value: function compareTo(b) {
return this.minv.compareTo(b.minv) || this.maxv.compareTo(b.maxv) || this.bin - b.bin;
}
}, {
key: "fetchedSize",
value: function fetchedSize() {
if (this._fetchedSize !== undefined) return this._fetchedSize;
return this.maxv.blockPosition + (1 << 16) - this.minv.blockPosition;
} }]);return Chunk;}();
}
}]);
return Chunk;
}();
module.exports = Chunk;
exports.default = Chunk;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jaHVuay50cyJdLCJuYW1lcyI6WyJDaHVuayIsIm1pbnYiLCJtYXh2IiwiYmluIiwiZmV0Y2hlZFNpemUiLCJ1bmRlZmluZWQiLCJfZmV0Y2hlZFNpemUiLCJ0b1VuaXF1ZVN0cmluZyIsImIiLCJjb21wYXJlVG8iLCJibG9ja1Bvc2l0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtJQUNxQkEsSzs7O0FBTW5COzs7Ozs7QUFNQSxpQkFBWUMsSUFBWixFQUFpQ0MsSUFBakMsRUFBc0RDLEdBQXRELEVBQTRGO0FBQUEsUUFBekJDLFdBQXlCLHVFQUFYQyxTQUFXO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUMxRixTQUFLSixJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLQyxJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLRyxZQUFMLEdBQW9CRixXQUFwQjtBQUNEOzs7O3FDQUVnQjtBQUNmLHVCQUFVLEtBQUtILElBQWYsZUFBd0IsS0FBS0MsSUFBN0IsbUJBQTBDLEtBQUtDLEdBQS9DLDJCQUFtRSxLQUFLQyxXQUFMLEVBQW5FO0FBQ0Q7OzsrQkFFVTtBQUNULGFBQU8sS0FBS0csY0FBTCxFQUFQO0FBQ0Q7Ozs4QkFFU0MsQyxFQUFVO0FBQ2xCLGFBQU8sS0FBS1AsSUFBTCxDQUFVUSxTQUFWLENBQW9CRCxDQUFDLENBQUNQLElBQXRCLEtBQStCLEtBQUtDLElBQUwsQ0FBVU8sU0FBVixDQUFvQkQsQ0FBQyxDQUFDTixJQUF0QixDQUEvQixJQUE4RCxLQUFLQyxHQUFMLEdBQVdLLENBQUMsQ0FBQ0wsR0FBbEY7QUFDRDs7O2tDQUVhO0FBQ1osVUFBSSxLQUFLRyxZQUFMLEtBQXNCRCxTQUExQixFQUFxQyxPQUFPLEtBQUtDLFlBQVo7QUFDckMsYUFBTyxLQUFLSixJQUFMLENBQVVRLGFBQVYsSUFBMkIsS0FBSyxFQUFoQyxJQUFzQyxLQUFLVCxJQUFMLENBQVVTLGFBQXZEO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmlydHVhbE9mZnNldCBmcm9tICcuL3ZpcnR1YWxPZmZzZXQnXG5cbi8vIGxpdHRsZSBjbGFzcyByZXByZXNlbnRpbmcgYSBjaHVuayBpbiB0aGUgaW5kZXhcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENodW5rIHtcbiAgcHVibGljIG1pbnY6IFZpcnR1YWxPZmZzZXRcbiAgcHVibGljIG1heHY6IFZpcnR1YWxPZmZzZXRcbiAgcHVibGljIGJpbjogbnVtYmVyXG4gIHB1YmxpYyBfZmV0Y2hlZFNpemU/OiBudW1iZXJcblxuICAvKipcbiAgICogQHBhcmFtIHtWaXJ0dWFsT2Zmc2V0fSBtaW52XG4gICAqIEBwYXJhbSB7VmlydHVhbE9mZnNldH0gbWF4dlxuICAgKiBAcGFyYW0ge251bWJlcn0gYmluXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZmV0Y2hlZFNpemVdXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtaW52OiBWaXJ0dWFsT2Zmc2V0LCBtYXh2OiBWaXJ0dWFsT2Zmc2V0LCBiaW46IG51bWJlciwgZmV0Y2hlZFNpemUgPSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm1pbnYgPSBtaW52XG4gICAgdGhpcy5tYXh2ID0gbWF4dlxuICAgIHRoaXMuYmluID0gYmluXG4gICAgdGhpcy5fZmV0Y2hlZFNpemUgPSBmZXRjaGVkU2l6ZVxuICB9XG5cbiAgdG9VbmlxdWVTdHJpbmcoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMubWludn0uLiR7dGhpcy5tYXh2fSAoYmluICR7dGhpcy5iaW59LCBmZXRjaGVkU2l6ZSAke3RoaXMuZmV0Y2hlZFNpemUoKX0pYFxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9VbmlxdWVTdHJpbmcoKVxuICB9XG5cbiAgY29tcGFyZVRvKGI6IENodW5rKSB7XG4gICAgcmV0dXJuIHRoaXMubWludi5jb21wYXJlVG8oYi5taW52KSB8fCB0aGlzLm1heHYuY29tcGFyZVRvKGIubWF4dikgfHwgdGhpcy5iaW4gLSBiLmJpblxuICB9XG5cbiAgZmV0Y2hlZFNpemUoKSB7XG4gICAgaWYgKHRoaXMuX2ZldGNoZWRTaXplICE9PSB1bmRlZmluZWQpIHJldHVybiB0aGlzLl9mZXRjaGVkU2l6ZVxuICAgIHJldHVybiB0aGlzLm1heHYuYmxvY2tQb3NpdGlvbiArICgxIDw8IDE2KSAtIHRoaXMubWludi5ibG9ja1Bvc2l0aW9uXG4gIH1cbn1cbiJdfQ==

@@ -1,2 +0,11 @@

"use strict";module.exports = {
"use strict";
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = {
// the read is paired in sequencing, no matter whether it is mapped in a pair

@@ -25,2 +34,5 @@ BAM_FPAIRED: 1,

// supplementary alignment
BAM_FSUPPLEMENTARY: 2048 };
BAM_FSUPPLEMENTARY: 2048
};
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMudHMiXSwibmFtZXMiOlsiQkFNX0ZQQUlSRUQiLCJCQU1fRlBST1BFUl9QQUlSIiwiQkFNX0ZVTk1BUCIsIkJBTV9GTVVOTUFQIiwiQkFNX0ZSRVZFUlNFIiwiQkFNX0ZNUkVWRVJTRSIsIkJBTV9GUkVBRDEiLCJCQU1fRlJFQUQyIiwiQkFNX0ZTRUNPTkRBUlkiLCJCQU1fRlFDRkFJTCIsIkJBTV9GRFVQIiwiQkFNX0ZTVVBQTEVNRU5UQVJZIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7ZUFBZTtBQUNiO0FBQ0FBLEVBQUFBLFdBQVcsRUFBRSxDQUZBO0FBR2I7QUFDQUMsRUFBQUEsZ0JBQWdCLEVBQUUsQ0FKTDtBQUtiO0FBQ0FDLEVBQUFBLFVBQVUsRUFBRSxDQU5DO0FBT2I7QUFDQUMsRUFBQUEsV0FBVyxFQUFFLENBUkE7QUFTYjtBQUNBQyxFQUFBQSxZQUFZLEVBQUUsRUFWRDtBQVdiO0FBQ0FDLEVBQUFBLGFBQWEsRUFBRSxFQVpGO0FBYWI7QUFDQUMsRUFBQUEsVUFBVSxFQUFFLEVBZEM7QUFlYjtBQUNBQyxFQUFBQSxVQUFVLEVBQUUsR0FoQkM7QUFpQmI7QUFDQUMsRUFBQUEsY0FBYyxFQUFFLEdBbEJIO0FBbUJiO0FBQ0FDLEVBQUFBLFdBQVcsRUFBRSxHQXBCQTtBQXFCYjtBQUNBQyxFQUFBQSxRQUFRLEVBQUUsSUF0Qkc7QUF1QmI7QUFDQUMsRUFBQUEsa0JBQWtCLEVBQUU7QUF4QlAsQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gIHRoZSByZWFkIGlzIHBhaXJlZCBpbiBzZXF1ZW5jaW5nLCBubyBtYXR0ZXIgd2hldGhlciBpdCBpcyBtYXBwZWQgaW4gYSBwYWlyXG4gIEJBTV9GUEFJUkVEOiAxLFxuICAvLyAgdGhlIHJlYWQgaXMgbWFwcGVkIGluIGEgcHJvcGVyIHBhaXJcbiAgQkFNX0ZQUk9QRVJfUEFJUjogMixcbiAgLy8gIHRoZSByZWFkIGl0c2VsZiBpcyB1bm1hcHBlZDsgY29uZmxpY3RpdmUgd2l0aCBCQU1fRlBST1BFUl9QQUlSXG4gIEJBTV9GVU5NQVA6IDQsXG4gIC8vICB0aGUgbWF0ZSBpcyB1bm1hcHBlZFxuICBCQU1fRk1VTk1BUDogOCxcbiAgLy8gIHRoZSByZWFkIGlzIG1hcHBlZCB0byB0aGUgcmV2ZXJzZSBzdHJhbmRcbiAgQkFNX0ZSRVZFUlNFOiAxNixcbiAgLy8gIHRoZSBtYXRlIGlzIG1hcHBlZCB0byB0aGUgcmV2ZXJzZSBzdHJhbmRcbiAgQkFNX0ZNUkVWRVJTRTogMzIsXG4gIC8vICB0aGlzIGlzIHJlYWQxXG4gIEJBTV9GUkVBRDE6IDY0LFxuICAvLyAgdGhpcyBpcyByZWFkMlxuICBCQU1fRlJFQUQyOiAxMjgsXG4gIC8vICBub3QgcHJpbWFyeSBhbGlnbm1lbnRcbiAgQkFNX0ZTRUNPTkRBUlk6IDI1NixcbiAgLy8gIFFDIGZhaWx1cmVcbiAgQkFNX0ZRQ0ZBSUw6IDUxMixcbiAgLy8gIG9wdGljYWwgb3IgUENSIGR1cGxpY2F0ZVxuICBCQU1fRkRVUDogMTAyNCxcbiAgLy8gIHN1cHBsZW1lbnRhcnkgYWxpZ25tZW50XG4gIEJBTV9GU1VQUExFTUVOVEFSWTogMjA0OCxcbn1cbiJdfQ==

@@ -1,11 +0,47 @@

"use strict";var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));var Long = _interopRequireWildcard(require("long"));
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
var _long = _interopRequireDefault(require("long"));
var _unzip = require("./unzip");
var _virtualOffset = require("./virtualOffset");
var _chunk = _interopRequireDefault(require("./chunk"));
var _util = require("./util");
var IndexFile = require('./indexFile');
var _indexFile = _interopRequireDefault(require("./indexFile"));
var CSI1_MAGIC = 21582659; // CSI\1
var CSI2_MAGIC = 38359875; // CSI\2

@@ -16,32 +52,131 @@

}
function rshift(num, bits) {
return Math.floor(num / Math.pow(2, bits));
}var
}
CSI = /*#__PURE__*/function (_IndexFile) {(0, _inherits2.default)(CSI, _IndexFile);function CSI() {(0, _classCallCheck2.default)(this, CSI);return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CSI).apply(this, arguments));}(0, _createClass2.default)(CSI, [{ key: "lineCount", value: function () {var _lineCount = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(
refId) {var indexData, idx, stats;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return (
this.parse());case 2:indexData = _context.sent;if (
indexData) {_context.next = 5;break;}return _context.abrupt("return", -1);case 5:
idx = indexData.indices[refId];if (
idx) {_context.next = 8;break;}return _context.abrupt("return", -1);case 8:
stats = indexData.indices[refId].stats;if (!
stats) {_context.next = 11;break;}return _context.abrupt("return", stats.lineCount);case 11:return _context.abrupt("return",
-1);case 12:case "end":return _context.stop();}}}, _callee, this);}));function lineCount(_x) {return _lineCount.apply(this, arguments);}return lineCount;}() }, { key: "parseAuxData", value: function parseAuxData(
var CSI =
/*#__PURE__*/
function (_IndexFile) {
(0, _inherits2.default)(CSI, _IndexFile);
function CSI(args) {
var _this;
bytes, offset, auxLength) {
(0, _classCallCheck2.default)(this, CSI);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CSI).call(this, args));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "maxBinNumber", void 0);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "depth", void 0);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "minShift", void 0);
_this.maxBinNumber = 0;
_this.depth = 0;
_this.minShift = 0;
return _this;
}
(0, _createClass2.default)(CSI, [{
key: "lineCount",
value: function () {
var _lineCount = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(refId) {
var indexData, idx, stats;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this.parse();
case 2:
indexData = _context.sent;
if (indexData) {
_context.next = 5;
break;
}
return _context.abrupt("return", -1);
case 5:
idx = indexData.indices[refId];
if (idx) {
_context.next = 8;
break;
}
return _context.abrupt("return", -1);
case 8:
stats = indexData.indices[refId].stats;
if (!stats) {
_context.next = 11;
break;
}
return _context.abrupt("return", stats.lineCount);
case 11:
return _context.abrupt("return", -1);
case 12:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function lineCount(_x) {
return _lineCount.apply(this, arguments);
}
return lineCount;
}()
}, {
key: "indexCov",
value: function () {
var _indexCov = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
throw new Error('CSI indexes do not support indexcov');
case 2:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
function indexCov() {
return _indexCov.apply(this, arguments);
}
return indexCov;
}()
}, {
key: "parseAuxData",
value: function parseAuxData(bytes, offset, auxLength) {
if (auxLength < 30) return {};
var data = {};
data.formatFlags = bytes.readInt32LE(offset);
data.coordinateType =
data.formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed';
data.format = { 0: 'generic', 1: 'SAM', 2: 'VCF' }[data.formatFlags & 0xf];
if (!data.format)
throw new Error("invalid Tabix preset format flags ".concat(data.formatFlags));
data.coordinateType = data.formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed';
data.format = {
0: 'generic',
1: 'SAM',
2: 'VCF'
}[data.formatFlags & 0xf];
if (!data.format) throw new Error("invalid Tabix preset format flags ".concat(data.formatFlags));
data.columnNumbers = {
ref: bytes.readInt32LE(offset + 4),
start: bytes.readInt32LE(offset + 8),
end: bytes.readInt32LE(offset + 12) };
end: bytes.readInt32LE(offset + 12)
};
data.metaValue = bytes.readInt32LE(offset + 16);

@@ -51,13 +186,8 @@ data.metaChar = data.metaValue ? String.fromCharCode(data.metaValue) : '';

var nameSectionLength = bytes.readInt32LE(offset + 24);
Object.assign(
data,
this._parseNameBytes(
bytes.slice(offset + 28, offset + 28 + nameSectionLength)));
(0, _assign.default)(data, this._parseNameBytes(bytes.slice(offset + 28, offset + 28 + nameSectionLength)));
return data;
} }, { key: "_parseNameBytes", value: function _parseNameBytes(
namesBytes) {
}
}, {
key: "_parseNameBytes",
value: function _parseNameBytes(namesBytes) {
var currRefId = 0;

@@ -67,2 +197,3 @@ var currNameStart = 0;

var refNameToId = {};
for (var i = 0; i < namesBytes.length; i += 1) {

@@ -76,2 +207,3 @@ if (!namesBytes[i]) {

}
currNameStart = i + 1;

@@ -81,22 +213,61 @@ currRefId += 1;

}
return { refNameToId: refNameToId, refIdToName: refIdToName };
}
// fetch and parse the index
}, { key: "_parse", value: function () {var _parse2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(abortSignal) {var data, bytes, auxLength, currOffset, i, binCount, binIndex, stats, j, bin, loffset, chunkCount, chunks, k, u, v;return _regenerator.default.wrap(function _callee2$(_context2) {while (1) {switch (_context2.prev = _context2.next) {case 0:
data = { csi: true, maxBlockSize: 1 << 16 };_context2.t0 =
_unzip.unzip;_context2.next = 4;return (
this.filehandle.readFile({ signal: abortSignal }));case 4:_context2.t1 = _context2.sent;_context2.next = 7;return (0, _context2.t0)(_context2.t1);case 7:bytes = _context2.sent;if (!(
return {
refNameToId: refNameToId,
refIdToName: refIdToName
};
} // fetch and parse the index
}, {
key: "_parse",
value: function () {
var _parse2 = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee3(abortSignal) {
var data, bytes, auxLength, currOffset, i, binCount, binIndex, stats, j, bin, loffset, chunkCount, chunks, k, u, v;
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
data = {
csi: true,
maxBlockSize: 1 << 16
};
_context3.t0 = _unzip.unzip;
_context3.next = 4;
return this.filehandle.readFile({
signal: abortSignal
});
case 4:
_context3.t1 = _context3.sent;
_context3.next = 7;
return (0, _context3.t0)(_context3.t1);
bytes.readUInt32LE(0) === CSI1_MAGIC)) {_context2.next = 12;break;}
data.csiVersion = 1;_context2.next = 17;break;case 12:if (!(
bytes.readUInt32LE(0) === CSI2_MAGIC)) {_context2.next = 16;break;}
data.csiVersion = 2;_context2.next = 17;break;case 16:throw (
case 7:
bytes = _context3.sent;
new Error('Not a CSI file'));case 17:
if (!(bytes.readUInt32LE(0) === CSI1_MAGIC)) {
_context3.next = 12;
break;
}
data.csiVersion = 1;
_context3.next = 17;
break;
case 12:
if (!(bytes.readUInt32LE(0) === CSI2_MAGIC)) {
_context3.next = 16;
break;
}
data.csiVersion = 2;
_context3.next = 17;
break;
case 16:
throw new Error('Not a CSI file');
case 17:
this.minShift = bytes.readInt32LE(4);

@@ -106,12 +277,23 @@ this.depth = bytes.readInt32LE(8);

auxLength = bytes.readInt32LE(12);
if (auxLength) {
Object.assign(data, this.parseAuxData(bytes, 16, auxLength));
(0, _assign.default)(data, this.parseAuxData(bytes, 16, auxLength));
}
data.refCount = bytes.readInt32LE(16 + auxLength);
// read the indexes for each reference sequence
data.refCount = bytes.readInt32LE(16 + auxLength); // read the indexes for each reference sequence
data.indices = new Array(data.refCount);
currOffset = 16 + auxLength + 4;
i = 0;case 26:if (!(i < data.refCount)) {_context2.next = 38;break;}_context2.next = 29;return (
(0, _util.abortBreakPoint)(abortSignal));case 29:
i = 0;
case 26:
if (!(i < data.refCount)) {
_context3.next = 38;
break;
}
_context3.next = 29;
return (0, _util.abortBreakPoint)(abortSignal);
case 29:
// the binning index

@@ -122,4 +304,6 @@ binCount = bytes.readInt32LE(currOffset);

stats = void 0; // < provided by parsing a pseudo-bin, if present
for (j = 0; j < binCount; j += 1) {
bin = bytes.readUInt32LE(currOffset);
if (bin > this.maxBinNumber) {

@@ -132,13 +316,17 @@ // this is a fake bin that actually has stats information

loffset = (0, _virtualOffset.fromBytes)(bytes, currOffset + 4);
this._findFirstData(data, loffset);
chunkCount = bytes.readInt32LE(currOffset + 12);
currOffset += 16;
chunks = new Array(chunkCount);
for (k = 0; k < chunkCount; k += 1) {
u = (0, _virtualOffset.fromBytes)(bytes, currOffset);
v = (0, _virtualOffset.fromBytes)(bytes, currOffset + 8);
currOffset += 16;
// this._findFirstData(data, u)
currOffset += 16; // this._findFirstData(data, u)
chunks[k] = new _chunk.default(u, v, bin);
}
binIndex[bin] = chunks;

@@ -148,9 +336,32 @@ }

data.indices[i] = { binIndex: binIndex, stats: stats };case 35:i += 1;_context2.next = 26;break;case 38:return _context2.abrupt("return",
data.indices[i] = {
binIndex: binIndex,
stats: stats
};
case 35:
i += 1;
_context3.next = 26;
break;
data);case 39:case "end":return _context2.stop();}}}, _callee2, this);}));function _parse(_x2) {return _parse2.apply(this, arguments);}return _parse;}() }, { key: "parsePseudoBin", value: function parsePseudoBin(
case 38:
return _context3.abrupt("return", data);
case 39:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
bytes, offset) {
function _parse(_x2) {
return _parse2.apply(this, arguments);
}
return _parse;
}()
}, {
key: "parsePseudoBin",
value: function parsePseudoBin(bytes, offset) {
// const one = Long.fromBytesLE(bytes.slice(offset + 4, offset + 12), true)

@@ -161,49 +372,101 @@ // const two = Long.fromBytesLE(bytes.slice(offset + 12, offset + 20), true)

// )
var lineCount = (0, _util.longToNumber)(
Long.fromBytesLE(bytes.slice(offset + 28, offset + 36), true));
var lineCount = (0, _util.longToNumber)(_long.default.fromBytesLE(Array.prototype.slice.call(bytes, offset + 28, offset + 36), true));
return {
lineCount: lineCount
};
}
}, {
key: "blocksForRange",
value: function () {
var _blocksForRange = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(refId, beg, end) {
var opts,
indexData,
indexes,
binIndex,
bins,
l,
numOffsets,
i,
off,
_i,
chunks,
j,
_i2,
_i3,
_i4,
_args4 = arguments;
return { lineCount: lineCount };
} }, { key: "blocksForRange", value: function () {var _blocksForRange = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
opts = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : {};
if (beg < 0) beg = 0;
_context4.next = 4;
return this.parse(opts.signal);
refId, beg, end, opts) {var indexData, indexes, binIndex, bins, l, numOffsets, i, off, _i, chunks, j, _i2, _i3, _i4;return _regenerator.default.wrap(function _callee3$(_context3) {while (1) {switch (_context3.prev = _context3.next) {case 0:
if (beg < 0) beg = 0;_context3.next = 3;return (
case 4:
indexData = _context4.sent;
this.parse(opts.signal));case 3:indexData = _context3.sent;if (
indexData) {_context3.next = 6;break;}return _context3.abrupt("return", []);case 6:
indexes = indexData.indices[refId];if (
indexes) {_context3.next = 9;break;}return _context3.abrupt("return", []);case 9:
if (indexData) {
_context4.next = 7;
break;
}
binIndex = indexes.binIndex;
return _context4.abrupt("return", []);
bins = this.reg2bins(beg, end);
case 7:
indexes = indexData.indices[refId];
if (indexes) {
_context4.next = 10;
break;
}
return _context4.abrupt("return", []);
case 10:
binIndex = indexes.binIndex;
bins = this.reg2bins(beg, end);
numOffsets = 0;
for (i = 0; i < bins.length; i += 1) {
if (binIndex[bins[i]]) numOffsets += binIndex[bins[i]].length;
}if (!(
}
numOffsets === 0)) {_context3.next = 15;break;}return _context3.abrupt("return", []);case 15:
if (!(numOffsets === 0)) {
_context4.next = 16;
break;
}
return _context4.abrupt("return", []);
case 16:
off = [];
numOffsets = 0;
for (_i = 0; _i < bins.length; _i += 1) {
chunks = binIndex[bins[_i]];
if (chunks)
for (j = 0; j < chunks.length; j += 1) {
off[numOffsets] = new _chunk.default(
chunks[j].minv,
chunks[j].maxv,
chunks[j].bin);
if (chunks) for (j = 0; j < chunks.length; j += 1) {
off[numOffsets] = new _chunk.default(chunks[j].minv, chunks[j].maxv, chunks[j].bin);
numOffsets += 1;
}
}if (
}
off.length) {_context3.next = 20;break;}return _context3.abrupt("return", []);case 20:
if (off.length) {
_context4.next = 21;
break;
}
off = off.sort(function (a, b) {return a.compareTo(b);});
return _context4.abrupt("return", []);
// resolve completely contained adjacent blocks
case 21:
off = off.sort(function (a, b) {
return a.compareTo(b);
}); // resolve completely contained adjacent blocks
l = 0;
for (_i2 = 1; _i2 < numOffsets; _i2 += 1) {

@@ -216,14 +479,14 @@ if (off[l].maxv.compareTo(off[_i2].maxv) < 0) {

}
numOffsets = l + 1;
// resolve overlaps between adjacent blocks; this may happen due to the merge in indexing
numOffsets = l + 1; // resolve overlaps between adjacent blocks; this may happen due to the merge in indexing
for (_i3 = 1; _i3 < numOffsets; _i3 += 1) {
if (off[_i3 - 1].maxv.compareTo(off[_i3].minv) >= 0)
off[_i3 - 1].maxv = off[_i3].minv;}
if (off[_i3 - 1].maxv.compareTo(off[_i3].minv) >= 0) off[_i3 - 1].maxv = off[_i3].minv;
} // merge adjacent blocks
// merge adjacent blocks
l = 0;
for (_i4 = 1; _i4 < numOffsets; _i4 += 1) {
if ((0, _util.canMergeBlocks)(off[l], off[_i4])) off[l].maxv = off[_i4].maxv;else
{
if ((0, _util.canMergeBlocks)(off[l], off[_i4])) off[l].maxv = off[_i4].maxv;else {
l += 1;

@@ -234,15 +497,33 @@ off[l].minv = off[_i4].minv;

}
numOffsets = l + 1;return _context3.abrupt("return",
off.slice(0, numOffsets));case 29:case "end":return _context3.stop();}}}, _callee3, this);}));function blocksForRange(_x3, _x4, _x5, _x6) {return _blocksForRange.apply(this, arguments);}return blocksForRange;}()
numOffsets = l + 1;
return _context4.abrupt("return", off.slice(0, numOffsets));
case 30:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function blocksForRange(_x3, _x4, _x5) {
return _blocksForRange.apply(this, arguments);
}
return blocksForRange;
}()
/**
* calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
* @returns {Array[number]}
*/ }, { key: "reg2bins", value: function reg2bins(
beg, end) {
* calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
* @returns {Array[number]}
*/
}, {
key: "reg2bins",
value: function reg2bins(beg, end) {
beg -= 1; // < convert to 1-based closed
if (beg < 1) beg = 1;
if (end > Math.pow(2, 50)) end = Math.pow(2, 34); // 17 GiB ought to be enough for anybody
end -= 1;

@@ -253,12 +534,20 @@ var l = 0;

var bins = [];
for (; l <= this.depth; s -= 3, t += lshift(1, l * 3), l += 1) {
var b = t + rshift(beg, s);
var e = t + rshift(end, s);
if (e - b + bins.length > this.maxBinNumber)
throw new Error("query ".concat(
beg, "-").concat(end, " is too large for current binning scheme (shift ").concat(this.minShift, ", depth ").concat(this.depth, "), try a smaller query or a coarser index binning scheme"));
if (e - b + bins.length > this.maxBinNumber) throw new Error("query ".concat(beg, "-").concat(end, " is too large for current binning scheme (shift ").concat(this.minShift, ", depth ").concat(this.depth, "), try a smaller query or a coarser index binning scheme"));
for (var i = b; i <= e; i += 1) {bins.push(i);}
for (var i = b; i <= e; i += 1) {
bins.push(i);
}
}
return bins;
} }]);return CSI;}(IndexFile);exports.default = CSI;
}
}]);
return CSI;
}(_indexFile.default);
exports.default = CSI;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jc2kudHMiXSwibmFtZXMiOlsiQ1NJMV9NQUdJQyIsIkNTSTJfTUFHSUMiLCJsc2hpZnQiLCJudW0iLCJiaXRzIiwicnNoaWZ0IiwiTWF0aCIsImZsb29yIiwiQ1NJIiwiYXJncyIsIm1heEJpbk51bWJlciIsImRlcHRoIiwibWluU2hpZnQiLCJyZWZJZCIsInBhcnNlIiwiaW5kZXhEYXRhIiwiaWR4IiwiaW5kaWNlcyIsInN0YXRzIiwibGluZUNvdW50IiwiRXJyb3IiLCJieXRlcyIsIm9mZnNldCIsImF1eExlbmd0aCIsImRhdGEiLCJmb3JtYXRGbGFncyIsInJlYWRJbnQzMkxFIiwiY29vcmRpbmF0ZVR5cGUiLCJmb3JtYXQiLCJjb2x1bW5OdW1iZXJzIiwicmVmIiwic3RhcnQiLCJlbmQiLCJtZXRhVmFsdWUiLCJtZXRhQ2hhciIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInNraXBMaW5lcyIsIm5hbWVTZWN0aW9uTGVuZ3RoIiwiX3BhcnNlTmFtZUJ5dGVzIiwic2xpY2UiLCJuYW1lc0J5dGVzIiwiY3VyclJlZklkIiwiY3Vyck5hbWVTdGFydCIsInJlZklkVG9OYW1lIiwicmVmTmFtZVRvSWQiLCJpIiwibGVuZ3RoIiwicmVmTmFtZSIsInRvU3RyaW5nIiwicmVuYW1lUmVmU2VxIiwiYWJvcnRTaWduYWwiLCJjc2kiLCJtYXhCbG9ja1NpemUiLCJ1bnppcCIsImZpbGVoYW5kbGUiLCJyZWFkRmlsZSIsInNpZ25hbCIsInJlYWRVSW50MzJMRSIsImNzaVZlcnNpb24iLCJwYXJzZUF1eERhdGEiLCJyZWZDb3VudCIsIkFycmF5IiwiY3Vyck9mZnNldCIsImJpbkNvdW50IiwiYmluSW5kZXgiLCJqIiwiYmluIiwicGFyc2VQc2V1ZG9CaW4iLCJsb2Zmc2V0IiwiX2ZpbmRGaXJzdERhdGEiLCJjaHVua0NvdW50IiwiY2h1bmtzIiwiayIsInUiLCJ2IiwiQ2h1bmsiLCJMb25nIiwiZnJvbUJ5dGVzTEUiLCJwcm90b3R5cGUiLCJjYWxsIiwiYmVnIiwib3B0cyIsImluZGV4ZXMiLCJiaW5zIiwicmVnMmJpbnMiLCJudW1PZmZzZXRzIiwib2ZmIiwibWludiIsIm1heHYiLCJzb3J0IiwiYSIsImIiLCJjb21wYXJlVG8iLCJsIiwidCIsInMiLCJlIiwicHVzaCIsIkluZGV4RmlsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQSxJQUFNQSxVQUFVLEdBQUcsUUFBbkIsQyxDQUE0Qjs7QUFDNUIsSUFBTUMsVUFBVSxHQUFHLFFBQW5CLEMsQ0FBNEI7O0FBRTVCLFNBQVNDLE1BQVQsQ0FBZ0JDLEdBQWhCLEVBQTZCQyxJQUE3QixFQUEyQztBQUN6QyxTQUFPRCxHQUFHLFlBQUcsQ0FBSCxFQUFRQyxJQUFSLENBQVY7QUFDRDs7QUFDRCxTQUFTQyxNQUFULENBQWdCRixHQUFoQixFQUE2QkMsSUFBN0IsRUFBMkM7QUFDekMsU0FBT0UsSUFBSSxDQUFDQyxLQUFMLENBQVdKLEdBQUcsWUFBRyxDQUFILEVBQVFDLElBQVIsQ0FBZCxDQUFQO0FBQ0Q7O0lBRW9CSSxHOzs7OztBQUluQixlQUFZQyxJQUFaLEVBQXVCO0FBQUE7O0FBQUE7QUFDckIseUdBQU1BLElBQU47QUFEcUI7QUFBQTtBQUFBO0FBRXJCLFVBQUtDLFlBQUwsR0FBb0IsQ0FBcEI7QUFDQSxVQUFLQyxLQUFMLEdBQWEsQ0FBYjtBQUNBLFVBQUtDLFFBQUwsR0FBZ0IsQ0FBaEI7QUFKcUI7QUFLdEI7Ozs7Ozs7aURBQ2VDLEs7Ozs7Ozs7dUJBQ1UsS0FBS0MsS0FBTCxFOzs7QUFBbEJDLGdCQUFBQSxTOztvQkFDREEsUzs7Ozs7aURBQWtCLENBQUMsQzs7O0FBQ2xCQyxnQkFBQUEsRyxHQUFNRCxTQUFTLENBQUNFLE9BQVYsQ0FBa0JKLEtBQWxCLEM7O29CQUNQRyxHOzs7OztpREFBWSxDQUFDLEM7OztBQUNWRSxnQkFBQUEsSyxHQUFVSCxTQUFTLENBQUNFLE9BQVYsQ0FBa0JKLEtBQWxCLEMsQ0FBVkssSzs7cUJBQ0pBLEs7Ozs7O2lEQUFjQSxLQUFLLENBQUNDLFM7OztpREFDakIsQ0FBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFHRixJQUFJQyxLQUFKLENBQVUscUNBQVYsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDQUlLQyxLLEVBQWVDLE0sRUFBZ0JDLFMsRUFBbUI7QUFDN0QsVUFBSUEsU0FBUyxHQUFHLEVBQWhCLEVBQW9CLE9BQU8sRUFBUDtBQUVwQixVQUFNQyxJQUE0QixHQUFHLEVBQXJDO0FBQ0FBLE1BQUFBLElBQUksQ0FBQ0MsV0FBTCxHQUFtQkosS0FBSyxDQUFDSyxXQUFOLENBQWtCSixNQUFsQixDQUFuQjtBQUNBRSxNQUFBQSxJQUFJLENBQUNHLGNBQUwsR0FBc0JILElBQUksQ0FBQ0MsV0FBTCxHQUFtQixPQUFuQixHQUE2QixzQkFBN0IsR0FBc0QsZ0JBQTVFO0FBQ0FELE1BQUFBLElBQUksQ0FBQ0ksTUFBTCxHQUFlO0FBQUUsV0FBRyxTQUFMO0FBQWdCLFdBQUcsS0FBbkI7QUFBMEIsV0FBRztBQUE3QixPQUFELENBQW9FSixJQUFJLENBQUNDLFdBQUwsR0FBbUIsR0FBdkYsQ0FBZDtBQUNBLFVBQUksQ0FBQ0QsSUFBSSxDQUFDSSxNQUFWLEVBQWtCLE1BQU0sSUFBSVIsS0FBSiw2Q0FBK0NJLElBQUksQ0FBQ0MsV0FBcEQsRUFBTjtBQUNsQkQsTUFBQUEsSUFBSSxDQUFDSyxhQUFMLEdBQXFCO0FBQ25CQyxRQUFBQSxHQUFHLEVBQUVULEtBQUssQ0FBQ0ssV0FBTixDQUFrQkosTUFBTSxHQUFHLENBQTNCLENBRGM7QUFFbkJTLFFBQUFBLEtBQUssRUFBRVYsS0FBSyxDQUFDSyxXQUFOLENBQWtCSixNQUFNLEdBQUcsQ0FBM0IsQ0FGWTtBQUduQlUsUUFBQUEsR0FBRyxFQUFFWCxLQUFLLENBQUNLLFdBQU4sQ0FBa0JKLE1BQU0sR0FBRyxFQUEzQjtBQUhjLE9BQXJCO0FBS0FFLE1BQUFBLElBQUksQ0FBQ1MsU0FBTCxHQUFpQlosS0FBSyxDQUFDSyxXQUFOLENBQWtCSixNQUFNLEdBQUcsRUFBM0IsQ0FBakI7QUFDQUUsTUFBQUEsSUFBSSxDQUFDVSxRQUFMLEdBQWdCVixJQUFJLENBQUNTLFNBQUwsR0FBaUJFLE1BQU0sQ0FBQ0MsWUFBUCxDQUFvQlosSUFBSSxDQUFDUyxTQUF6QixDQUFqQixHQUF1RCxFQUF2RTtBQUNBVCxNQUFBQSxJQUFJLENBQUNhLFNBQUwsR0FBaUJoQixLQUFLLENBQUNLLFdBQU4sQ0FBa0JKLE1BQU0sR0FBRyxFQUEzQixDQUFqQjtBQUNBLFVBQU1nQixpQkFBaUIsR0FBR2pCLEtBQUssQ0FBQ0ssV0FBTixDQUFrQkosTUFBTSxHQUFHLEVBQTNCLENBQTFCO0FBRUEsMkJBQWNFLElBQWQsRUFBb0IsS0FBS2UsZUFBTCxDQUFxQmxCLEtBQUssQ0FBQ21CLEtBQU4sQ0FBWWxCLE1BQU0sR0FBRyxFQUFyQixFQUF5QkEsTUFBTSxHQUFHLEVBQVQsR0FBY2dCLGlCQUF2QyxDQUFyQixDQUFwQjtBQUNBLGFBQU9kLElBQVA7QUFDRDs7O29DQUVlaUIsVSxFQUFvQjtBQUNsQyxVQUFJQyxTQUFTLEdBQUcsQ0FBaEI7QUFDQSxVQUFJQyxhQUFhLEdBQUcsQ0FBcEI7QUFDQSxVQUFNQyxXQUFXLEdBQUcsRUFBcEI7QUFDQSxVQUFNQyxXQUFzQyxHQUFHLEVBQS9DOztBQUNBLFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0wsVUFBVSxDQUFDTSxNQUEvQixFQUF1Q0QsQ0FBQyxJQUFJLENBQTVDLEVBQStDO0FBQzdDLFlBQUksQ0FBQ0wsVUFBVSxDQUFDSyxDQUFELENBQWYsRUFBb0I7QUFDbEIsY0FBSUgsYUFBYSxHQUFHRyxDQUFwQixFQUF1QjtBQUNyQixnQkFBSUUsT0FBTyxHQUFHUCxVQUFVLENBQUNRLFFBQVgsQ0FBb0IsTUFBcEIsRUFBNEJOLGFBQTVCLEVBQTJDRyxDQUEzQyxDQUFkO0FBQ0FFLFlBQUFBLE9BQU8sR0FBRyxLQUFLRSxZQUFMLENBQWtCRixPQUFsQixDQUFWO0FBQ0FKLFlBQUFBLFdBQVcsQ0FBQ0YsU0FBRCxDQUFYLEdBQXlCTSxPQUF6QjtBQUNBSCxZQUFBQSxXQUFXLENBQUNHLE9BQUQsQ0FBWCxHQUF1Qk4sU0FBdkI7QUFDRDs7QUFDREMsVUFBQUEsYUFBYSxHQUFHRyxDQUFDLEdBQUcsQ0FBcEI7QUFDQUosVUFBQUEsU0FBUyxJQUFJLENBQWI7QUFDRDtBQUNGOztBQUNELGFBQU87QUFBRUcsUUFBQUEsV0FBVyxFQUFYQSxXQUFGO0FBQWVELFFBQUFBLFdBQVcsRUFBWEE7QUFBZixPQUFQO0FBQ0QsSyxDQUVEOzs7Ozs7O2tEQUNhTyxXOzs7Ozs7QUFDTDNCLGdCQUFBQSxJLEdBQStCO0FBQUU0QixrQkFBQUEsR0FBRyxFQUFFLElBQVA7QUFBYUMsa0JBQUFBLFlBQVksRUFBRSxLQUFLO0FBQWhDLGlCOytCQUNqQkMsWTs7dUJBQWEsS0FBS0MsVUFBTCxDQUFnQkMsUUFBaEIsQ0FBeUI7QUFBRUMsa0JBQUFBLE1BQU0sRUFBRU47QUFBVixpQkFBekIsQzs7Ozs7Ozs7QUFBM0I5QixnQkFBQUEsSzs7c0JBR0ZBLEtBQUssQ0FBQ3FDLFlBQU4sQ0FBbUIsQ0FBbkIsTUFBMEIxRCxVOzs7OztBQUM1QndCLGdCQUFBQSxJQUFJLENBQUNtQyxVQUFMLEdBQWtCLENBQWxCOzs7OztzQkFDU3RDLEtBQUssQ0FBQ3FDLFlBQU4sQ0FBbUIsQ0FBbkIsTUFBMEJ6RCxVOzs7OztBQUNuQ3VCLGdCQUFBQSxJQUFJLENBQUNtQyxVQUFMLEdBQWtCLENBQWxCOzs7OztzQkFFTSxJQUFJdkMsS0FBSixDQUFVLGdCQUFWLEM7OztBQUlSLHFCQUFLUixRQUFMLEdBQWdCUyxLQUFLLENBQUNLLFdBQU4sQ0FBa0IsQ0FBbEIsQ0FBaEI7QUFDQSxxQkFBS2YsS0FBTCxHQUFhVSxLQUFLLENBQUNLLFdBQU4sQ0FBa0IsQ0FBbEIsQ0FBYjtBQUNBLHFCQUFLaEIsWUFBTCxHQUFvQixDQUFDLENBQUMsS0FBTSxDQUFDLEtBQUtDLEtBQUwsR0FBYSxDQUFkLElBQW1CLENBQTFCLElBQWdDLENBQWpDLElBQXNDLENBQTFEO0FBQ01ZLGdCQUFBQSxTLEdBQVlGLEtBQUssQ0FBQ0ssV0FBTixDQUFrQixFQUFsQixDOztBQUNsQixvQkFBSUgsU0FBSixFQUFlO0FBQ2IsdUNBQWNDLElBQWQsRUFBb0IsS0FBS29DLFlBQUwsQ0FBa0J2QyxLQUFsQixFQUF5QixFQUF6QixFQUE2QkUsU0FBN0IsQ0FBcEI7QUFDRDs7QUFDREMsZ0JBQUFBLElBQUksQ0FBQ3FDLFFBQUwsR0FBZ0J4QyxLQUFLLENBQUNLLFdBQU4sQ0FBa0IsS0FBS0gsU0FBdkIsQ0FBaEIsQyxDQUVBOztBQUNBQyxnQkFBQUEsSUFBSSxDQUFDUCxPQUFMLEdBQWUsSUFBSTZDLEtBQUosQ0FBVXRDLElBQUksQ0FBQ3FDLFFBQWYsQ0FBZjtBQUNJRSxnQkFBQUEsVSxHQUFhLEtBQUt4QyxTQUFMLEdBQWlCLEM7QUFDekJ1QixnQkFBQUEsQyxHQUFJLEM7OztzQkFBR0EsQ0FBQyxHQUFHdEIsSUFBSSxDQUFDcUMsUTs7Ozs7O3VCQUNqQiwyQkFBZ0JWLFdBQWhCLEM7OztBQUNOO0FBQ01hLGdCQUFBQSxRLEdBQVczQyxLQUFLLENBQUNLLFdBQU4sQ0FBa0JxQyxVQUFsQixDO0FBQ2pCQSxnQkFBQUEsVUFBVSxJQUFJLENBQWQ7QUFDTUUsZ0JBQUFBLFEsR0FBdUMsRTtBQUN6Qy9DLGdCQUFBQSxLLFdBQU07O0FBQ1YscUJBQVNnRCxDQUFULEdBQWEsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixRQUFwQixFQUE4QkUsQ0FBQyxJQUFJLENBQW5DLEVBQXNDO0FBQzlCQyxrQkFBQUEsR0FEOEIsR0FDeEI5QyxLQUFLLENBQUNxQyxZQUFOLENBQW1CSyxVQUFuQixDQUR3Qjs7QUFFcEMsc0JBQUlJLEdBQUcsR0FBRyxLQUFLekQsWUFBZixFQUE2QjtBQUMzQjtBQUNBO0FBQ0FRLG9CQUFBQSxLQUFLLEdBQUcsS0FBS2tELGNBQUwsQ0FBb0IvQyxLQUFwQixFQUEyQjBDLFVBQVUsR0FBRyxDQUF4QyxDQUFSO0FBQ0FBLG9CQUFBQSxVQUFVLElBQUksSUFBSSxDQUFKLEdBQVEsQ0FBUixHQUFZLEVBQVosR0FBaUIsRUFBL0I7QUFDRCxtQkFMRCxNQUtPO0FBQ0NNLG9CQUFBQSxPQURELEdBQ1csOEJBQVVoRCxLQUFWLEVBQWlCMEMsVUFBVSxHQUFHLENBQTlCLENBRFg7O0FBRUwseUJBQUtPLGNBQUwsQ0FBb0I5QyxJQUFwQixFQUEwQjZDLE9BQTFCOztBQUNNRSxvQkFBQUEsVUFIRCxHQUdjbEQsS0FBSyxDQUFDSyxXQUFOLENBQWtCcUMsVUFBVSxHQUFHLEVBQS9CLENBSGQ7QUFJTEEsb0JBQUFBLFVBQVUsSUFBSSxFQUFkO0FBQ01TLG9CQUFBQSxNQUxELEdBS1UsSUFBSVYsS0FBSixDQUFVUyxVQUFWLENBTFY7O0FBTUwseUJBQVNFLENBQVQsR0FBYSxDQUFiLEVBQWdCQSxDQUFDLEdBQUdGLFVBQXBCLEVBQWdDRSxDQUFDLElBQUksQ0FBckMsRUFBd0M7QUFDaENDLHNCQUFBQSxDQURnQyxHQUM1Qiw4QkFBVXJELEtBQVYsRUFBaUIwQyxVQUFqQixDQUQ0QjtBQUVoQ1ksc0JBQUFBLENBRmdDLEdBRTVCLDhCQUFVdEQsS0FBVixFQUFpQjBDLFVBQVUsR0FBRyxDQUE5QixDQUY0QjtBQUd0Q0Esc0JBQUFBLFVBQVUsSUFBSSxFQUFkLENBSHNDLENBSXRDOztBQUNBUyxzQkFBQUEsTUFBTSxDQUFDQyxDQUFELENBQU4sR0FBWSxJQUFJRyxjQUFKLENBQVVGLENBQVYsRUFBYUMsQ0FBYixFQUFnQlIsR0FBaEIsQ0FBWjtBQUNEOztBQUNERixvQkFBQUEsUUFBUSxDQUFDRSxHQUFELENBQVIsR0FBZ0JLLE1BQWhCO0FBQ0Q7QUFDRjs7QUFFRGhELGdCQUFBQSxJQUFJLENBQUNQLE9BQUwsQ0FBYTZCLENBQWIsSUFBa0I7QUFBRW1CLGtCQUFBQSxRQUFRLEVBQVJBLFFBQUY7QUFBWS9DLGtCQUFBQSxLQUFLLEVBQUxBO0FBQVosaUJBQWxCOzs7QUEvQmlDNEIsZ0JBQUFBLENBQUMsSUFBSSxDOzs7OztrREFrQ2pDdEIsSTs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQUdNSCxLLEVBQWVDLE0sRUFBZ0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQU1ILFNBQVMsR0FBRyx3QkFBYTBELGNBQUtDLFdBQUwsQ0FBaUJoQixLQUFLLENBQUNpQixTQUFOLENBQWdCdkMsS0FBaEIsQ0FBc0J3QyxJQUF0QixDQUEyQjNELEtBQTNCLEVBQWtDQyxNQUFNLEdBQUcsRUFBM0MsRUFBK0NBLE1BQU0sR0FBRyxFQUF4RCxDQUFqQixFQUE4RSxJQUE5RSxDQUFiLENBQWxCO0FBQ0EsYUFBTztBQUFFSCxRQUFBQSxTQUFTLEVBQVRBO0FBQUYsT0FBUDtBQUNEOzs7Ozs7a0RBRW9CTixLLEVBQWVvRSxHLEVBQWFqRCxHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWFrRCxnQkFBQUEsSSw4REFBNEIsRTtBQUN4RixvQkFBSUQsR0FBRyxHQUFHLENBQVYsRUFBYUEsR0FBRyxHQUFHLENBQU47O3VCQUVXLEtBQUtuRSxLQUFMLENBQVdvRSxJQUFJLENBQUN6QixNQUFoQixDOzs7QUFBbEIxQyxnQkFBQUEsUzs7b0JBQ0RBLFM7Ozs7O2tEQUFrQixFOzs7QUFDakJvRSxnQkFBQUEsTyxHQUFVcEUsU0FBUyxDQUFDRSxPQUFWLENBQWtCSixLQUFsQixDOztvQkFDWHNFLE87Ozs7O2tEQUFnQixFOzs7QUFFYmxCLGdCQUFBQSxRLEdBQWFrQixPLENBQWJsQixRO0FBRUZtQixnQkFBQUEsSSxHQUFPLEtBQUtDLFFBQUwsQ0FBY0osR0FBZCxFQUFtQmpELEdBQW5CLEM7QUFHVHNELGdCQUFBQSxVLEdBQWEsQzs7QUFDakIscUJBQVN4QyxDQUFULEdBQWEsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHc0MsSUFBSSxDQUFDckMsTUFBekIsRUFBaUNELENBQUMsSUFBSSxDQUF0QyxFQUF5QztBQUN2QyxzQkFBSW1CLFFBQVEsQ0FBQ21CLElBQUksQ0FBQ3RDLENBQUQsQ0FBTCxDQUFaLEVBQXVCd0MsVUFBVSxJQUFJckIsUUFBUSxDQUFDbUIsSUFBSSxDQUFDdEMsQ0FBRCxDQUFMLENBQVIsQ0FBa0JDLE1BQWhDO0FBQ3hCOztzQkFFR3VDLFVBQVUsS0FBSyxDOzs7OztrREFBVSxFOzs7QUFFekJDLGdCQUFBQSxHLEdBQU0sRTtBQUNWRCxnQkFBQUEsVUFBVSxHQUFHLENBQWI7O0FBQ0EscUJBQVN4QyxFQUFULEdBQWEsQ0FBYixFQUFnQkEsRUFBQyxHQUFHc0MsSUFBSSxDQUFDckMsTUFBekIsRUFBaUNELEVBQUMsSUFBSSxDQUF0QyxFQUF5QztBQUNqQzBCLGtCQUFBQSxNQURpQyxHQUN4QlAsUUFBUSxDQUFDbUIsSUFBSSxDQUFDdEMsRUFBRCxDQUFMLENBRGdCO0FBRXZDLHNCQUFJMEIsTUFBSixFQUNFLEtBQVNOLENBQVQsR0FBYSxDQUFiLEVBQWdCQSxDQUFDLEdBQUdNLE1BQU0sQ0FBQ3pCLE1BQTNCLEVBQW1DbUIsQ0FBQyxJQUFJLENBQXhDLEVBQTJDO0FBQ3pDcUIsb0JBQUFBLEdBQUcsQ0FBQ0QsVUFBRCxDQUFILEdBQWtCLElBQUlWLGNBQUosQ0FBVUosTUFBTSxDQUFDTixDQUFELENBQU4sQ0FBVXNCLElBQXBCLEVBQTBCaEIsTUFBTSxDQUFDTixDQUFELENBQU4sQ0FBVXVCLElBQXBDLEVBQTBDakIsTUFBTSxDQUFDTixDQUFELENBQU4sQ0FBVUMsR0FBcEQsQ0FBbEI7QUFDQW1CLG9CQUFBQSxVQUFVLElBQUksQ0FBZDtBQUNEO0FBQ0o7O29CQUVJQyxHQUFHLENBQUN4QyxNOzs7OztrREFBZSxFOzs7QUFFeEJ3QyxnQkFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUNHLElBQUosQ0FBUyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSx5QkFBVUQsQ0FBQyxDQUFDRSxTQUFGLENBQVlELENBQVosQ0FBVjtBQUFBLGlCQUFULENBQU4sQyxDQUVBOztBQUNBRSxnQkFBQUEsQ0FBQyxHQUFHLENBQUo7O0FBQ0EscUJBQVNoRCxHQUFULEdBQWEsQ0FBYixFQUFnQkEsR0FBQyxHQUFHd0MsVUFBcEIsRUFBZ0N4QyxHQUFDLElBQUksQ0FBckMsRUFBd0M7QUFDdEMsc0JBQUl5QyxHQUFHLENBQUNPLENBQUQsQ0FBSCxDQUFPTCxJQUFQLENBQVlJLFNBQVosQ0FBc0JOLEdBQUcsQ0FBQ3pDLEdBQUQsQ0FBSCxDQUFPMkMsSUFBN0IsSUFBcUMsQ0FBekMsRUFBNEM7QUFDMUNLLG9CQUFBQSxDQUFDLElBQUksQ0FBTDtBQUNBUCxvQkFBQUEsR0FBRyxDQUFDTyxDQUFELENBQUgsQ0FBT04sSUFBUCxHQUFjRCxHQUFHLENBQUN6QyxHQUFELENBQUgsQ0FBTzBDLElBQXJCO0FBQ0FELG9CQUFBQSxHQUFHLENBQUNPLENBQUQsQ0FBSCxDQUFPTCxJQUFQLEdBQWNGLEdBQUcsQ0FBQ3pDLEdBQUQsQ0FBSCxDQUFPMkMsSUFBckI7QUFDRDtBQUNGOztBQUNESCxnQkFBQUEsVUFBVSxHQUFHUSxDQUFDLEdBQUcsQ0FBakIsQyxDQUVBOztBQUNBLHFCQUFTaEQsR0FBVCxHQUFhLENBQWIsRUFBZ0JBLEdBQUMsR0FBR3dDLFVBQXBCLEVBQWdDeEMsR0FBQyxJQUFJLENBQXJDO0FBQ0Usc0JBQUl5QyxHQUFHLENBQUN6QyxHQUFDLEdBQUcsQ0FBTCxDQUFILENBQVcyQyxJQUFYLENBQWdCSSxTQUFoQixDQUEwQk4sR0FBRyxDQUFDekMsR0FBRCxDQUFILENBQU8wQyxJQUFqQyxLQUEwQyxDQUE5QyxFQUFpREQsR0FBRyxDQUFDekMsR0FBQyxHQUFHLENBQUwsQ0FBSCxDQUFXMkMsSUFBWCxHQUFrQkYsR0FBRyxDQUFDekMsR0FBRCxDQUFILENBQU8wQyxJQUF6QjtBQURuRCxpQixDQUdBOzs7QUFDQU0sZ0JBQUFBLENBQUMsR0FBRyxDQUFKOztBQUNBLHFCQUFTaEQsR0FBVCxHQUFhLENBQWIsRUFBZ0JBLEdBQUMsR0FBR3dDLFVBQXBCLEVBQWdDeEMsR0FBQyxJQUFJLENBQXJDLEVBQXdDO0FBQ3RDLHNCQUFJLDBCQUFleUMsR0FBRyxDQUFDTyxDQUFELENBQWxCLEVBQXVCUCxHQUFHLENBQUN6QyxHQUFELENBQTFCLENBQUosRUFBb0N5QyxHQUFHLENBQUNPLENBQUQsQ0FBSCxDQUFPTCxJQUFQLEdBQWNGLEdBQUcsQ0FBQ3pDLEdBQUQsQ0FBSCxDQUFPMkMsSUFBckIsQ0FBcEMsS0FDSztBQUNISyxvQkFBQUEsQ0FBQyxJQUFJLENBQUw7QUFDQVAsb0JBQUFBLEdBQUcsQ0FBQ08sQ0FBRCxDQUFILENBQU9OLElBQVAsR0FBY0QsR0FBRyxDQUFDekMsR0FBRCxDQUFILENBQU8wQyxJQUFyQjtBQUNBRCxvQkFBQUEsR0FBRyxDQUFDTyxDQUFELENBQUgsQ0FBT0wsSUFBUCxHQUFjRixHQUFHLENBQUN6QyxHQUFELENBQUgsQ0FBTzJDLElBQXJCO0FBQ0Q7QUFDRjs7QUFDREgsZ0JBQUFBLFVBQVUsR0FBR1EsQ0FBQyxHQUFHLENBQWpCO2tEQUVPUCxHQUFHLENBQUMvQyxLQUFKLENBQVUsQ0FBVixFQUFhOEMsVUFBYixDOzs7Ozs7Ozs7Ozs7Ozs7O0FBR1Q7Ozs7Ozs7NkJBSVNMLEcsRUFBYWpELEcsRUFBYTtBQUNqQ2lELE1BQUFBLEdBQUcsSUFBSSxDQUFQLENBRGlDLENBQ3hCOztBQUNULFVBQUlBLEdBQUcsR0FBRyxDQUFWLEVBQWFBLEdBQUcsR0FBRyxDQUFOO0FBQ2IsVUFBSWpELEdBQUcsWUFBRyxDQUFILEVBQVEsRUFBUixDQUFQLEVBQW1CQSxHQUFHLFlBQUcsQ0FBSCxFQUFRLEVBQVIsQ0FBSCxDQUhjLENBR0E7O0FBQ2pDQSxNQUFBQSxHQUFHLElBQUksQ0FBUDtBQUNBLFVBQUk4RCxDQUFDLEdBQUcsQ0FBUjtBQUNBLFVBQUlDLENBQUMsR0FBRyxDQUFSO0FBQ0EsVUFBSUMsQ0FBQyxHQUFHLEtBQUtwRixRQUFMLEdBQWdCLEtBQUtELEtBQUwsR0FBYSxDQUFyQztBQUNBLFVBQU15RSxJQUFJLEdBQUcsRUFBYjs7QUFDQSxhQUFPVSxDQUFDLElBQUksS0FBS25GLEtBQWpCLEVBQXdCcUYsQ0FBQyxJQUFJLENBQUwsRUFBUUQsQ0FBQyxJQUFJN0YsTUFBTSxDQUFDLENBQUQsRUFBSTRGLENBQUMsR0FBRyxDQUFSLENBQW5CLEVBQStCQSxDQUFDLElBQUksQ0FBNUQsRUFBK0Q7QUFDN0QsWUFBTUYsQ0FBQyxHQUFHRyxDQUFDLEdBQUcxRixNQUFNLENBQUM0RSxHQUFELEVBQU1lLENBQU4sQ0FBcEI7QUFDQSxZQUFNQyxDQUFDLEdBQUdGLENBQUMsR0FBRzFGLE1BQU0sQ0FBQzJCLEdBQUQsRUFBTWdFLENBQU4sQ0FBcEI7QUFDQSxZQUFJQyxDQUFDLEdBQUdMLENBQUosR0FBUVIsSUFBSSxDQUFDckMsTUFBYixHQUFzQixLQUFLckMsWUFBL0IsRUFDRSxNQUFNLElBQUlVLEtBQUosaUJBQ0s2RCxHQURMLGNBQ1lqRCxHQURaLDZEQUNrRSxLQUFLcEIsUUFEdkUscUJBQzBGLEtBQUtELEtBRC9GLDhEQUFOOztBQUdGLGFBQUssSUFBSW1DLENBQUMsR0FBRzhDLENBQWIsRUFBZ0I5QyxDQUFDLElBQUltRCxDQUFyQixFQUF3Qm5ELENBQUMsSUFBSSxDQUE3QjtBQUFnQ3NDLFVBQUFBLElBQUksQ0FBQ2MsSUFBTCxDQUFVcEQsQ0FBVjtBQUFoQztBQUNEOztBQUNELGFBQU9zQyxJQUFQO0FBQ0Q7OztFQXBPOEJlLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvbmcgZnJvbSAnbG9uZydcbmltcG9ydCB7IHVuemlwIH0gZnJvbSAnLi91bnppcCdcblxuaW1wb3J0IHsgZnJvbUJ5dGVzIH0gZnJvbSAnLi92aXJ0dWFsT2Zmc2V0J1xuaW1wb3J0IENodW5rIGZyb20gJy4vY2h1bmsnXG5pbXBvcnQgeyBsb25nVG9OdW1iZXIsIGFib3J0QnJlYWtQb2ludCwgY2FuTWVyZ2VCbG9ja3MgfSBmcm9tICcuL3V0aWwnXG5cbmltcG9ydCBJbmRleEZpbGUgZnJvbSAnLi9pbmRleEZpbGUnXG5cbmNvbnN0IENTSTFfTUFHSUMgPSAyMTU4MjY1OSAvLyBDU0lcXDFcbmNvbnN0IENTSTJfTUFHSUMgPSAzODM1OTg3NSAvLyBDU0lcXDJcblxuZnVuY3Rpb24gbHNoaWZ0KG51bTogbnVtYmVyLCBiaXRzOiBudW1iZXIpIHtcbiAgcmV0dXJuIG51bSAqIDIgKiogYml0c1xufVxuZnVuY3Rpb24gcnNoaWZ0KG51bTogbnVtYmVyLCBiaXRzOiBudW1iZXIpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IobnVtIC8gMiAqKiBiaXRzKVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDU0kgZXh0ZW5kcyBJbmRleEZpbGUge1xuICBwcml2YXRlIG1heEJpbk51bWJlcjogbnVtYmVyXG4gIHByaXZhdGUgZGVwdGg6IG51bWJlclxuICBwcml2YXRlIG1pblNoaWZ0OiBudW1iZXJcbiAgY29uc3RydWN0b3IoYXJnczogYW55KSB7XG4gICAgc3VwZXIoYXJncylcbiAgICB0aGlzLm1heEJpbk51bWJlciA9IDBcbiAgICB0aGlzLmRlcHRoID0gMFxuICAgIHRoaXMubWluU2hpZnQgPSAwXG4gIH1cbiAgYXN5bmMgbGluZUNvdW50KHJlZklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGluZGV4RGF0YSA9IGF3YWl0IHRoaXMucGFyc2UoKVxuICAgIGlmICghaW5kZXhEYXRhKSByZXR1cm4gLTFcbiAgICBjb25zdCBpZHggPSBpbmRleERhdGEuaW5kaWNlc1tyZWZJZF1cbiAgICBpZiAoIWlkeCkgcmV0dXJuIC0xXG4gICAgY29uc3QgeyBzdGF0cyB9ID0gaW5kZXhEYXRhLmluZGljZXNbcmVmSWRdXG4gICAgaWYgKHN0YXRzKSByZXR1cm4gc3RhdHMubGluZUNvdW50XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgYXN5bmMgaW5kZXhDb3YoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDU0kgaW5kZXhlcyBkbyBub3Qgc3VwcG9ydCBpbmRleGNvdicpXG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBwYXJzZUF1eERhdGEoYnl0ZXM6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGF1eExlbmd0aDogbnVtYmVyKSB7XG4gICAgaWYgKGF1eExlbmd0aCA8IDMwKSByZXR1cm4ge31cblxuICAgIGNvbnN0IGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fVxuICAgIGRhdGEuZm9ybWF0RmxhZ3MgPSBieXRlcy5yZWFkSW50MzJMRShvZmZzZXQpXG4gICAgZGF0YS5jb29yZGluYXRlVHlwZSA9IGRhdGEuZm9ybWF0RmxhZ3MgJiAweDEwMDAwID8gJ3plcm8tYmFzZWQtaGFsZi1vcGVuJyA6ICcxLWJhc2VkLWNsb3NlZCdcbiAgICBkYXRhLmZvcm1hdCA9ICh7IDA6ICdnZW5lcmljJywgMTogJ1NBTScsIDI6ICdWQ0YnIH0gYXMgeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSlbZGF0YS5mb3JtYXRGbGFncyAmIDB4Zl1cbiAgICBpZiAoIWRhdGEuZm9ybWF0KSB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgVGFiaXggcHJlc2V0IGZvcm1hdCBmbGFncyAke2RhdGEuZm9ybWF0RmxhZ3N9YClcbiAgICBkYXRhLmNvbHVtbk51bWJlcnMgPSB7XG4gICAgICByZWY6IGJ5dGVzLnJlYWRJbnQzMkxFKG9mZnNldCArIDQpLFxuICAgICAgc3RhcnQ6IGJ5dGVzLnJlYWRJbnQzMkxFKG9mZnNldCArIDgpLFxuICAgICAgZW5kOiBieXRlcy5yZWFkSW50MzJMRShvZmZzZXQgKyAxMiksXG4gICAgfVxuICAgIGRhdGEubWV0YVZhbHVlID0gYnl0ZXMucmVhZEludDMyTEUob2Zmc2V0ICsgMTYpXG4gICAgZGF0YS5tZXRhQ2hhciA9IGRhdGEubWV0YVZhbHVlID8gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhLm1ldGFWYWx1ZSkgOiAnJ1xuICAgIGRhdGEuc2tpcExpbmVzID0gYnl0ZXMucmVhZEludDMyTEUob2Zmc2V0ICsgMjApXG4gICAgY29uc3QgbmFtZVNlY3Rpb25MZW5ndGggPSBieXRlcy5yZWFkSW50MzJMRShvZmZzZXQgKyAyNClcblxuICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgdGhpcy5fcGFyc2VOYW1lQnl0ZXMoYnl0ZXMuc2xpY2Uob2Zmc2V0ICsgMjgsIG9mZnNldCArIDI4ICsgbmFtZVNlY3Rpb25MZW5ndGgpKSlcbiAgICByZXR1cm4gZGF0YVxuICB9XG5cbiAgX3BhcnNlTmFtZUJ5dGVzKG5hbWVzQnl0ZXM6IEJ1ZmZlcikge1xuICAgIGxldCBjdXJyUmVmSWQgPSAwXG4gICAgbGV0IGN1cnJOYW1lU3RhcnQgPSAwXG4gICAgY29uc3QgcmVmSWRUb05hbWUgPSBbXVxuICAgIGNvbnN0IHJlZk5hbWVUb0lkOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge31cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzQnl0ZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmICghbmFtZXNCeXRlc1tpXSkge1xuICAgICAgICBpZiAoY3Vyck5hbWVTdGFydCA8IGkpIHtcbiAgICAgICAgICBsZXQgcmVmTmFtZSA9IG5hbWVzQnl0ZXMudG9TdHJpbmcoJ3V0ZjgnLCBjdXJyTmFtZVN0YXJ0LCBpKVxuICAgICAgICAgIHJlZk5hbWUgPSB0aGlzLnJlbmFtZVJlZlNlcShyZWZOYW1lKVxuICAgICAgICAgIHJlZklkVG9OYW1lW2N1cnJSZWZJZF0gPSByZWZOYW1lXG4gICAgICAgICAgcmVmTmFtZVRvSWRbcmVmTmFtZV0gPSBjdXJyUmVmSWRcbiAgICAgICAgfVxuICAgICAgICBjdXJyTmFtZVN0YXJ0ID0gaSArIDFcbiAgICAgICAgY3VyclJlZklkICs9IDFcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgcmVmTmFtZVRvSWQsIHJlZklkVG9OYW1lIH1cbiAgfVxuXG4gIC8vIGZldGNoIGFuZCBwYXJzZSB0aGUgaW5kZXhcbiAgYXN5bmMgX3BhcnNlKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpIHtcbiAgICBjb25zdCBkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0geyBjc2k6IHRydWUsIG1heEJsb2NrU2l6ZTogMSA8PCAxNiB9XG4gICAgY29uc3QgYnl0ZXMgPSBhd2FpdCB1bnppcCgoYXdhaXQgdGhpcy5maWxlaGFuZGxlLnJlYWRGaWxlKHsgc2lnbmFsOiBhYm9ydFNpZ25hbCB9KSkgYXMgQnVmZmVyKVxuXG4gICAgLy8gY2hlY2sgVEJJIG1hZ2ljIG51bWJlcnNcbiAgICBpZiAoYnl0ZXMucmVhZFVJbnQzMkxFKDApID09PSBDU0kxX01BR0lDKSB7XG4gICAgICBkYXRhLmNzaVZlcnNpb24gPSAxXG4gICAgfSBlbHNlIGlmIChieXRlcy5yZWFkVUludDMyTEUoMCkgPT09IENTSTJfTUFHSUMpIHtcbiAgICAgIGRhdGEuY3NpVmVyc2lvbiA9IDJcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSBDU0kgZmlsZScpXG4gICAgICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRvIHN1cHBvcnQgYmlnLWVuZGlhbiBDU0kgZmlsZXM/XG4gICAgfVxuXG4gICAgdGhpcy5taW5TaGlmdCA9IGJ5dGVzLnJlYWRJbnQzMkxFKDQpXG4gICAgdGhpcy5kZXB0aCA9IGJ5dGVzLnJlYWRJbnQzMkxFKDgpXG4gICAgdGhpcy5tYXhCaW5OdW1iZXIgPSAoKDEgPDwgKCh0aGlzLmRlcHRoICsgMSkgKiAzKSkgLSAxKSAvIDdcbiAgICBjb25zdCBhdXhMZW5ndGggPSBieXRlcy5yZWFkSW50MzJMRSgxMilcbiAgICBpZiAoYXV4TGVuZ3RoKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGRhdGEsIHRoaXMucGFyc2VBdXhEYXRhKGJ5dGVzLCAxNiwgYXV4TGVuZ3RoKSlcbiAgICB9XG4gICAgZGF0YS5yZWZDb3VudCA9IGJ5dGVzLnJlYWRJbnQzMkxFKDE2ICsgYXV4TGVuZ3RoKVxuXG4gICAgLy8gcmVhZCB0aGUgaW5kZXhlcyBmb3IgZWFjaCByZWZlcmVuY2Ugc2VxdWVuY2VcbiAgICBkYXRhLmluZGljZXMgPSBuZXcgQXJyYXkoZGF0YS5yZWZDb3VudClcbiAgICBsZXQgY3Vyck9mZnNldCA9IDE2ICsgYXV4TGVuZ3RoICsgNFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5yZWZDb3VudDsgaSArPSAxKSB7XG4gICAgICBhd2FpdCBhYm9ydEJyZWFrUG9pbnQoYWJvcnRTaWduYWwpXG4gICAgICAvLyB0aGUgYmlubmluZyBpbmRleFxuICAgICAgY29uc3QgYmluQ291bnQgPSBieXRlcy5yZWFkSW50MzJMRShjdXJyT2Zmc2V0KVxuICAgICAgY3Vyck9mZnNldCArPSA0XG4gICAgICBjb25zdCBiaW5JbmRleDogeyBba2V5OiBzdHJpbmddOiBDaHVua1tdIH0gPSB7fVxuICAgICAgbGV0IHN0YXRzIC8vIDwgcHJvdmlkZWQgYnkgcGFyc2luZyBhIHBzZXVkby1iaW4sIGlmIHByZXNlbnRcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYmluQ291bnQ7IGogKz0gMSkge1xuICAgICAgICBjb25zdCBiaW4gPSBieXRlcy5yZWFkVUludDMyTEUoY3Vyck9mZnNldClcbiAgICAgICAgaWYgKGJpbiA+IHRoaXMubWF4QmluTnVtYmVyKSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyBhIGZha2UgYmluIHRoYXQgYWN0dWFsbHkgaGFzIHN0YXRzIGluZm9ybWF0aW9uXG4gICAgICAgICAgLy8gYWJvdXQgdGhlIHJlZmVyZW5jZSBzZXF1ZW5jZSBpbiBpdFxuICAgICAgICAgIHN0YXRzID0gdGhpcy5wYXJzZVBzZXVkb0JpbihieXRlcywgY3Vyck9mZnNldCArIDQpXG4gICAgICAgICAgY3Vyck9mZnNldCArPSA0ICsgOCArIDQgKyAxNiArIDE2XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbG9mZnNldCA9IGZyb21CeXRlcyhieXRlcywgY3Vyck9mZnNldCArIDQpXG4gICAgICAgICAgdGhpcy5fZmluZEZpcnN0RGF0YShkYXRhLCBsb2Zmc2V0KVxuICAgICAgICAgIGNvbnN0IGNodW5rQ291bnQgPSBieXRlcy5yZWFkSW50MzJMRShjdXJyT2Zmc2V0ICsgMTIpXG4gICAgICAgICAgY3Vyck9mZnNldCArPSAxNlxuICAgICAgICAgIGNvbnN0IGNodW5rcyA9IG5ldyBBcnJheShjaHVua0NvdW50KVxuICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgY2h1bmtDb3VudDsgayArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCB1ID0gZnJvbUJ5dGVzKGJ5dGVzLCBjdXJyT2Zmc2V0KVxuICAgICAgICAgICAgY29uc3QgdiA9IGZyb21CeXRlcyhieXRlcywgY3Vyck9mZnNldCArIDgpXG4gICAgICAgICAgICBjdXJyT2Zmc2V0ICs9IDE2XG4gICAgICAgICAgICAvLyB0aGlzLl9maW5kRmlyc3REYXRhKGRhdGEsIHUpXG4gICAgICAgICAgICBjaHVua3Nba10gPSBuZXcgQ2h1bmsodSwgdiwgYmluKVxuICAgICAgICAgIH1cbiAgICAgICAgICBiaW5JbmRleFtiaW5dID0gY2h1bmtzXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGF0YS5pbmRpY2VzW2ldID0geyBiaW5JbmRleCwgc3RhdHMgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhXG4gIH1cblxuICBwYXJzZVBzZXVkb0JpbihieXRlczogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcikge1xuICAgIC8vIGNvbnN0IG9uZSA9IExvbmcuZnJvbUJ5dGVzTEUoYnl0ZXMuc2xpY2Uob2Zmc2V0ICsgNCwgb2Zmc2V0ICsgMTIpLCB0cnVlKVxuICAgIC8vIGNvbnN0IHR3byA9IExvbmcuZnJvbUJ5dGVzTEUoYnl0ZXMuc2xpY2Uob2Zmc2V0ICsgMTIsIG9mZnNldCArIDIwKSwgdHJ1ZSlcbiAgICAvLyBjb25zdCB0aHJlZSA9IGxvbmdUb051bWJlcihcbiAgICAvLyAgIExvbmcuZnJvbUJ5dGVzTEUoYnl0ZXMuc2xpY2Uob2Zmc2V0ICsgMjAsIG9mZnNldCArIDI4KSwgdHJ1ZSksXG4gICAgLy8gKVxuICAgIGNvbnN0IGxpbmVDb3VudCA9IGxvbmdUb051bWJlcihMb25nLmZyb21CeXRlc0xFKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGJ5dGVzLCBvZmZzZXQgKyAyOCwgb2Zmc2V0ICsgMzYpLCB0cnVlKSlcbiAgICByZXR1cm4geyBsaW5lQ291bnQgfVxuICB9XG5cbiAgYXN5bmMgYmxvY2tzRm9yUmFuZ2UocmVmSWQ6IG51bWJlciwgYmVnOiBudW1iZXIsIGVuZDogbnVtYmVyLCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pOiBQcm9taXNlPENodW5rW10+IHtcbiAgICBpZiAoYmVnIDwgMCkgYmVnID0gMFxuXG4gICAgY29uc3QgaW5kZXhEYXRhID0gYXdhaXQgdGhpcy5wYXJzZShvcHRzLnNpZ25hbClcbiAgICBpZiAoIWluZGV4RGF0YSkgcmV0dXJuIFtdXG4gICAgY29uc3QgaW5kZXhlcyA9IGluZGV4RGF0YS5pbmRpY2VzW3JlZklkXVxuICAgIGlmICghaW5kZXhlcykgcmV0dXJuIFtdXG5cbiAgICBjb25zdCB7IGJpbkluZGV4IH0gPSBpbmRleGVzXG5cbiAgICBjb25zdCBiaW5zID0gdGhpcy5yZWcyYmlucyhiZWcsIGVuZClcblxuICAgIGxldCBsXG4gICAgbGV0IG51bU9mZnNldHMgPSAwXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYmluSW5kZXhbYmluc1tpXV0pIG51bU9mZnNldHMgKz0gYmluSW5kZXhbYmluc1tpXV0ubGVuZ3RoXG4gICAgfVxuXG4gICAgaWYgKG51bU9mZnNldHMgPT09IDApIHJldHVybiBbXVxuXG4gICAgbGV0IG9mZiA9IFtdXG4gICAgbnVtT2Zmc2V0cyA9IDBcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGNodW5rcyA9IGJpbkluZGV4W2JpbnNbaV1dXG4gICAgICBpZiAoY2h1bmtzKVxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNodW5rcy5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICAgIG9mZltudW1PZmZzZXRzXSA9IG5ldyBDaHVuayhjaHVua3Nbal0ubWludiwgY2h1bmtzW2pdLm1heHYsIGNodW5rc1tqXS5iaW4pXG4gICAgICAgICAgbnVtT2Zmc2V0cyArPSAxXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9mZi5sZW5ndGgpIHJldHVybiBbXVxuXG4gICAgb2ZmID0gb2ZmLnNvcnQoKGEsIGIpID0+IGEuY29tcGFyZVRvKGIpKVxuXG4gICAgLy8gcmVzb2x2ZSBjb21wbGV0ZWx5IGNvbnRhaW5lZCBhZGphY2VudCBibG9ja3NcbiAgICBsID0gMFxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtT2Zmc2V0czsgaSArPSAxKSB7XG4gICAgICBpZiAob2ZmW2xdLm1heHYuY29tcGFyZVRvKG9mZltpXS5tYXh2KSA8IDApIHtcbiAgICAgICAgbCArPSAxXG4gICAgICAgIG9mZltsXS5taW52ID0gb2ZmW2ldLm1pbnZcbiAgICAgICAgb2ZmW2xdLm1heHYgPSBvZmZbaV0ubWF4dlxuICAgICAgfVxuICAgIH1cbiAgICBudW1PZmZzZXRzID0gbCArIDFcblxuICAgIC8vIHJlc29sdmUgb3ZlcmxhcHMgYmV0d2VlbiBhZGphY2VudCBibG9ja3M7IHRoaXMgbWF5IGhhcHBlbiBkdWUgdG8gdGhlIG1lcmdlIGluIGluZGV4aW5nXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1PZmZzZXRzOyBpICs9IDEpXG4gICAgICBpZiAob2ZmW2kgLSAxXS5tYXh2LmNvbXBhcmVUbyhvZmZbaV0ubWludikgPj0gMCkgb2ZmW2kgLSAxXS5tYXh2ID0gb2ZmW2ldLm1pbnZcblxuICAgIC8vIG1lcmdlIGFkamFjZW50IGJsb2Nrc1xuICAgIGwgPSAwXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1PZmZzZXRzOyBpICs9IDEpIHtcbiAgICAgIGlmIChjYW5NZXJnZUJsb2NrcyhvZmZbbF0sIG9mZltpXSkpIG9mZltsXS5tYXh2ID0gb2ZmW2ldLm1heHZcbiAgICAgIGVsc2Uge1xuICAgICAgICBsICs9IDFcbiAgICAgICAgb2ZmW2xdLm1pbnYgPSBvZmZbaV0ubWludlxuICAgICAgICBvZmZbbF0ubWF4diA9IG9mZltpXS5tYXh2XG4gICAgICB9XG4gICAgfVxuICAgIG51bU9mZnNldHMgPSBsICsgMVxuXG4gICAgcmV0dXJuIG9mZi5zbGljZSgwLCBudW1PZmZzZXRzKVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGN1bGF0ZSB0aGUgbGlzdCBvZiBiaW5zIHRoYXQgbWF5IG92ZXJsYXAgd2l0aCByZWdpb24gW2JlZyxlbmQpICh6ZXJvLWJhc2VkIGhhbGYtb3BlbilcbiAgICogQHJldHVybnMge0FycmF5W251bWJlcl19XG4gICAqL1xuICByZWcyYmlucyhiZWc6IG51bWJlciwgZW5kOiBudW1iZXIpIHtcbiAgICBiZWcgLT0gMSAvLyA8IGNvbnZlcnQgdG8gMS1iYXNlZCBjbG9zZWRcbiAgICBpZiAoYmVnIDwgMSkgYmVnID0gMVxuICAgIGlmIChlbmQgPiAyICoqIDUwKSBlbmQgPSAyICoqIDM0IC8vIDE3IEdpQiBvdWdodCB0byBiZSBlbm91Z2ggZm9yIGFueWJvZHlcbiAgICBlbmQgLT0gMVxuICAgIGxldCBsID0gMFxuICAgIGxldCB0ID0gMFxuICAgIGxldCBzID0gdGhpcy5taW5TaGlmdCArIHRoaXMuZGVwdGggKiAzXG4gICAgY29uc3QgYmlucyA9IFtdXG4gICAgZm9yICg7IGwgPD0gdGhpcy5kZXB0aDsgcyAtPSAzLCB0ICs9IGxzaGlmdCgxLCBsICogMyksIGwgKz0gMSkge1xuICAgICAgY29uc3QgYiA9IHQgKyByc2hpZnQoYmVnLCBzKVxuICAgICAgY29uc3QgZSA9IHQgKyByc2hpZnQoZW5kLCBzKVxuICAgICAgaWYgKGUgLSBiICsgYmlucy5sZW5ndGggPiB0aGlzLm1heEJpbk51bWJlcilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBxdWVyeSAke2JlZ30tJHtlbmR9IGlzIHRvbyBsYXJnZSBmb3IgY3VycmVudCBiaW5uaW5nIHNjaGVtZSAoc2hpZnQgJHt0aGlzLm1pblNoaWZ0fSwgZGVwdGggJHt0aGlzLmRlcHRofSksIHRyeSBhIHNtYWxsZXIgcXVlcnkgb3IgYSBjb2Fyc2VyIGluZGV4IGJpbm5pbmcgc2NoZW1lYCxcbiAgICAgICAgKVxuICAgICAgZm9yIChsZXQgaSA9IGI7IGkgPD0gZTsgaSArPSAxKSBiaW5zLnB1c2goaSlcbiAgICB9XG4gICAgcmV0dXJuIGJpbnNcbiAgfVxufVxuIl19

@@ -1,29 +0,128 @@

"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));var BamError = /*#__PURE__*/function (_Error) {(0, _inherits2.default)(BamError, _Error);function BamError() {(0, _classCallCheck2.default)(this, BamError);return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamError).apply(this, arguments));}return BamError;}((0, _wrapNativeSuper2.default)(Error));
"use strict";
/** Error caused by encountering a part of the BAM spec that has not yet been implemented */var
BamUnimplementedError = /*#__PURE__*/function (_Error2) {(0, _inherits2.default)(BamUnimplementedError, _Error2);function BamUnimplementedError() {(0, _classCallCheck2.default)(this, BamUnimplementedError);return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamUnimplementedError).apply(this, arguments));}return BamUnimplementedError;}((0, _wrapNativeSuper2.default)(Error));
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
/** An error caused by malformed data. */var
BamMalformedError = /*#__PURE__*/function (_BamError) {(0, _inherits2.default)(BamMalformedError, _BamError);function BamMalformedError() {(0, _classCallCheck2.default)(this, BamMalformedError);return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamMalformedError).apply(this, arguments));}return BamMalformedError;}(BamError);
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.BamArgumentError = exports.BamSizeLimitError = exports.BamBufferOverrunError = exports.BamMalformedError = exports.BamUnimplementedError = exports.BamError = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/wrapNativeSuper"));
var BamError =
/*#__PURE__*/
function (_Error) {
(0, _inherits2.default)(BamError, _Error);
function BamError() {
(0, _classCallCheck2.default)(this, BamError);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamError).apply(this, arguments));
}
return BamError;
}((0, _wrapNativeSuper2.default)(Error));
/** Error caused by encountering a part of the BAM spec that has not yet been implemented */
exports.BamError = BamError;
var BamUnimplementedError =
/*#__PURE__*/
function (_Error2) {
(0, _inherits2.default)(BamUnimplementedError, _Error2);
function BamUnimplementedError() {
(0, _classCallCheck2.default)(this, BamUnimplementedError);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamUnimplementedError).apply(this, arguments));
}
return BamUnimplementedError;
}((0, _wrapNativeSuper2.default)(Error));
/** An error caused by malformed data. */
exports.BamUnimplementedError = BamUnimplementedError;
var BamMalformedError =
/*#__PURE__*/
function (_BamError) {
(0, _inherits2.default)(BamMalformedError, _BamError);
function BamMalformedError() {
(0, _classCallCheck2.default)(this, BamMalformedError);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamMalformedError).apply(this, arguments));
}
return BamMalformedError;
}(BamError);
/**
* An error caused by attempting to read beyond the end of the defined data.
*/var
BamBufferOverrunError = /*#__PURE__*/function (_BamMalformedError) {(0, _inherits2.default)(BamBufferOverrunError, _BamMalformedError);function BamBufferOverrunError() {(0, _classCallCheck2.default)(this, BamBufferOverrunError);return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamBufferOverrunError).apply(this, arguments));}return BamBufferOverrunError;}(BamMalformedError);
* An error caused by attempting to read beyond the end of the defined data.
*/
exports.BamMalformedError = BamMalformedError;
var BamBufferOverrunError =
/*#__PURE__*/
function (_BamMalformedError) {
(0, _inherits2.default)(BamBufferOverrunError, _BamMalformedError);
function BamBufferOverrunError() {
(0, _classCallCheck2.default)(this, BamBufferOverrunError);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamBufferOverrunError).apply(this, arguments));
}
return BamBufferOverrunError;
}(BamMalformedError);
/**
* An error caused by data being too big, exceeding a size limit.
*/var
BamSizeLimitError = /*#__PURE__*/function (_BamError2) {(0, _inherits2.default)(BamSizeLimitError, _BamError2);function BamSizeLimitError() {(0, _classCallCheck2.default)(this, BamSizeLimitError);return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamSizeLimitError).apply(this, arguments));}return BamSizeLimitError;}(BamError);
* An error caused by data being too big, exceeding a size limit.
*/
exports.BamBufferOverrunError = BamBufferOverrunError;
var BamSizeLimitError =
/*#__PURE__*/
function (_BamError2) {
(0, _inherits2.default)(BamSizeLimitError, _BamError2);
function BamSizeLimitError() {
(0, _classCallCheck2.default)(this, BamSizeLimitError);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamSizeLimitError).apply(this, arguments));
}
return BamSizeLimitError;
}(BamError);
/**
* An invalid argument was supplied to a bam-js method or object.
*/var
BamArgumentError = /*#__PURE__*/function (_BamError3) {(0, _inherits2.default)(BamArgumentError, _BamError3);function BamArgumentError() {(0, _classCallCheck2.default)(this, BamArgumentError);return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamArgumentError).apply(this, arguments));}return BamArgumentError;}(BamError);
* An invalid argument was supplied to a bam-js method or object.
*/
module.exports = {
BamBufferOverrunError: BamBufferOverrunError,
BamMalformedError: BamMalformedError,
BamUnimplementedError: BamUnimplementedError,
BamSizeLimitError: BamSizeLimitError,
BamArgumentError: BamArgumentError };
exports.BamSizeLimitError = BamSizeLimitError;
var BamArgumentError =
/*#__PURE__*/
function (_BamError3) {
(0, _inherits2.default)(BamArgumentError, _BamError3);
function BamArgumentError() {
(0, _classCallCheck2.default)(this, BamArgumentError);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BamArgumentError).apply(this, arguments));
}
return BamArgumentError;
}(BamError);
exports.BamArgumentError = BamArgumentError;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvcnMudHMiXSwibmFtZXMiOlsiQmFtRXJyb3IiLCJFcnJvciIsIkJhbVVuaW1wbGVtZW50ZWRFcnJvciIsIkJhbU1hbGZvcm1lZEVycm9yIiwiQmFtQnVmZmVyT3ZlcnJ1bkVycm9yIiwiQmFtU2l6ZUxpbWl0RXJyb3IiLCJCYW1Bcmd1bWVudEVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQWFBLFE7Ozs7Ozs7Ozs7O2lDQUFpQkMsSztBQUU5Qjs7Ozs7SUFDYUMscUI7Ozs7Ozs7Ozs7O2lDQUE4QkQsSztBQUUzQzs7Ozs7SUFDYUUsaUI7Ozs7Ozs7Ozs7O0VBQTBCSCxRO0FBRXZDOzs7Ozs7O0lBR2FJLHFCOzs7Ozs7Ozs7OztFQUE4QkQsaUI7QUFFM0M7Ozs7Ozs7SUFHYUUsaUI7Ozs7Ozs7Ozs7O0VBQTBCTCxRO0FBRXZDOzs7Ozs7O0lBR2FNLGdCOzs7Ozs7Ozs7OztFQUF5Qk4sUSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBCYW1FcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbi8qKiBFcnJvciBjYXVzZWQgYnkgZW5jb3VudGVyaW5nIGEgcGFydCBvZiB0aGUgQkFNIHNwZWMgdGhhdCBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkICovXG5leHBvcnQgY2xhc3MgQmFtVW5pbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLyoqIEFuIGVycm9yIGNhdXNlZCBieSBtYWxmb3JtZWQgZGF0YS4gICovXG5leHBvcnQgY2xhc3MgQmFtTWFsZm9ybWVkRXJyb3IgZXh0ZW5kcyBCYW1FcnJvciB7fVxuXG4vKipcbiAqIEFuIGVycm9yIGNhdXNlZCBieSBhdHRlbXB0aW5nIHRvIHJlYWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGRlZmluZWQgZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhbUJ1ZmZlck92ZXJydW5FcnJvciBleHRlbmRzIEJhbU1hbGZvcm1lZEVycm9yIHt9XG5cbi8qKlxuICogQW4gZXJyb3IgY2F1c2VkIGJ5IGRhdGEgYmVpbmcgdG9vIGJpZywgZXhjZWVkaW5nIGEgc2l6ZSBsaW1pdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhbVNpemVMaW1pdEVycm9yIGV4dGVuZHMgQmFtRXJyb3Ige31cblxuLyoqXG4gKiBBbiBpbnZhbGlkIGFyZ3VtZW50IHdhcyBzdXBwbGllZCB0byBhIGJhbS1qcyBtZXRob2Qgb3Igb2JqZWN0LlxuICovXG5leHBvcnQgY2xhc3MgQmFtQXJndW1lbnRFcnJvciBleHRlbmRzIEJhbUVycm9yIHt9XG4iXX0=

@@ -1,2 +0,28 @@

"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports, "__esModule", { value: true });Object.defineProperty(exports, "BAI", { enumerable: true, get: function get() {return _bai.default;} });Object.defineProperty(exports, "BamFile", { enumerable: true, get: function get() {return _bamFile.default;} });var _bai = _interopRequireDefault(require("./bai"));
var _bamFile = _interopRequireDefault(require("./bamFile"));
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
_Object$defineProperty(exports, "BAI", {
enumerable: true,
get: function get() {
return _bai.default;
}
});
_Object$defineProperty(exports, "BamFile", {
enumerable: true,
get: function get() {
return _bamFile.default;
}
});
var _bai = _interopRequireDefault(require("./bai"));
var _bamFile = _interopRequireDefault(require("./bamFile"));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCQUkgZnJvbSAnLi9iYWknXG5pbXBvcnQgQmFtRmlsZSBmcm9tICcuL2JhbUZpbGUnXG5cbmV4cG9ydCB7IEJBSSwgQmFtRmlsZSB9XG4iXX0=

@@ -1,44 +0,148 @@

"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _abortablePromiseCache = _interopRequireDefault(require("abortable-promise-cache"));
var _quickLru = _interopRequireDefault(require("quick-lru"));var
"use strict";
IndexFile = /*#__PURE__*/function () {
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
var _abortablePromiseCache = _interopRequireDefault(require("abortable-promise-cache"));
var _quickLru = _interopRequireDefault(require("quick-lru"));
var IndexFile =
/*#__PURE__*/
function () {
/**
* @param {filehandle} filehandle
* @param {function} [renameRefSeqs]
*/
function IndexFile(_ref) {var filehandle = _ref.filehandle,_ref$renameRefSeqs = _ref.renameRefSeqs,renameRefSeqs = _ref$renameRefSeqs === void 0 ? function (n) {return n;} : _ref$renameRefSeqs;(0, _classCallCheck2.default)(this, IndexFile);
* @param {filehandle} filehandle
* @param {function} [renameRefSeqs]
*/
function IndexFile(_ref) {
var filehandle = _ref.filehandle,
_ref$renameRefSeq = _ref.renameRefSeq,
renameRefSeq = _ref$renameRefSeq === void 0 ? function (n) {
return n;
} : _ref$renameRefSeq;
(0, _classCallCheck2.default)(this, IndexFile);
(0, _defineProperty2.default)(this, "filehandle", void 0);
(0, _defineProperty2.default)(this, "renameRefSeq", void 0);
(0, _defineProperty2.default)(this, "_parseCache", void 0);
this.filehandle = filehandle;
this.renameRefSeq = renameRefSeqs;
}(0, _createClass2.default)(IndexFile, [{ key: "_findFirstData", value: function _findFirstData(
this.renameRefSeq = renameRefSeq;
}
data, virtualOffset) {
(0, _createClass2.default)(IndexFile, [{
key: "_findFirstData",
value: function _findFirstData(data, virtualOffset) {
var currentFdl = data.firstDataLine;
if (currentFdl) {
data.firstDataLine =
currentFdl.compareTo(virtualOffset) > 0 ? virtualOffset : currentFdl;
data.firstDataLine = currentFdl.compareTo(virtualOffset) > 0 ? virtualOffset : currentFdl;
} else {
data.firstDataLine = virtualOffset;
}
} }, { key: "parse", value: function () {var _parse = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(
}
}, {
key: "parse",
value: function () {
var _parse2 = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(abortSignal) {
var _this = this;
abortSignal) {var _this = this;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:
if (!this._parseCache)
this._parseCache = new _abortablePromiseCache.default({
cache: new _quickLru.default({ maxSize: 1 }),
fill: function fill(data, signal) {return _this._parse(signal);} });return _context.abrupt("return",
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!this._parseCache) this._parseCache = new _abortablePromiseCache.default({
cache: new _quickLru.default({
maxSize: 1
}),
fill: function fill(data, signal) {
return _this._parse(signal);
}
});
return _context.abrupt("return", this._parseCache.get('index', null, abortSignal));
this._parseCache.get('index', null, abortSignal));case 2:case "end":return _context.stop();}}}, _callee, this);}));function parse(_x) {return _parse.apply(this, arguments);}return parse;}()
case 2:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function parse(_x) {
return _parse2.apply(this, arguments);
}
return parse;
}()
/**
* @param {number} seqId
* @param {AbortSignal} [abortSignal]
* @returns {Promise} true if the index contains entries for
* the given reference sequence ID, false otherwise
*/ }, { key: "hasRefSeq", value: function () {var _hasRefSeq = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(
seqId, abortSignal) {return _regenerator.default.wrap(function _callee2$(_context2) {while (1) {switch (_context2.prev = _context2.next) {case 0:_context2.next = 2;return (
this.parse(abortSignal));case 2:_context2.t1 = seqId;_context2.t0 = _context2.sent.indices[_context2.t1];if (_context2.t0) {_context2.next = 6;break;}_context2.t0 = {};case 6:return _context2.abrupt("return", !!_context2.t0.binIndex);case 7:case "end":return _context2.stop();}}}, _callee2, this);}));function hasRefSeq(_x2, _x3) {return _hasRefSeq.apply(this, arguments);}return hasRefSeq;}() }]);return IndexFile;}();
* @param {number} seqId
* @param {AbortSignal} [abortSignal]
* @returns {Promise} true if the index contains entries for
* the given reference sequence ID, false otherwise
*/
}, {
key: "hasRefSeq",
value: function () {
var _hasRefSeq = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(seqId, abortSignal) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return this.parse(abortSignal);
case 2:
_context2.t1 = seqId;
_context2.t0 = _context2.sent.indices[_context2.t1];
module.exports = IndexFile;
if (_context2.t0) {
_context2.next = 6;
break;
}
_context2.t0 = {};
case 6:
return _context2.abrupt("return", !!_context2.t0.binIndex);
case 7:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function hasRefSeq(_x2, _x3) {
return _hasRefSeq.apply(this, arguments);
}
return hasRefSeq;
}()
}]);
return IndexFile;
}();
exports.default = IndexFile;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleEZpbGUudHMiXSwibmFtZXMiOlsiSW5kZXhGaWxlIiwiZmlsZWhhbmRsZSIsInJlbmFtZVJlZlNlcSIsIm4iLCJkYXRhIiwidmlydHVhbE9mZnNldCIsImN1cnJlbnRGZGwiLCJmaXJzdERhdGFMaW5lIiwiY29tcGFyZVRvIiwiYWJvcnRTaWduYWwiLCJfcGFyc2VDYWNoZSIsIkFib3J0YWJsZVByb21pc2VDYWNoZSIsImNhY2hlIiwiUXVpY2tMUlUiLCJtYXhTaXplIiwiZmlsbCIsInNpZ25hbCIsIl9wYXJzZSIsImdldCIsInNlcUlkIiwicGFyc2UiLCJpbmRpY2VzIiwiYmluSW5kZXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7SUFLOEJBLFM7OztBQUs1Qjs7OztBQUlBLDJCQU1HO0FBQUEsUUFMREMsVUFLQyxRQUxEQSxVQUtDO0FBQUEsaUNBSkRDLFlBSUM7QUFBQSxRQUpEQSxZQUlDLGtDQUpjLFVBQUNDLENBQUQ7QUFBQSxhQUFlQSxDQUFmO0FBQUEsS0FJZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0QsU0FBS0YsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQSxTQUFLQyxZQUFMLEdBQW9CQSxZQUFwQjtBQUNEOzs7O21DQWVjRSxJLEVBQVdDLGEsRUFBOEI7QUFDdEQsVUFBTUMsVUFBVSxHQUFHRixJQUFJLENBQUNHLGFBQXhCOztBQUNBLFVBQUlELFVBQUosRUFBZ0I7QUFDZEYsUUFBQUEsSUFBSSxDQUFDRyxhQUFMLEdBQXFCRCxVQUFVLENBQUNFLFNBQVgsQ0FBcUJILGFBQXJCLElBQXNDLENBQXRDLEdBQTBDQSxhQUExQyxHQUEwREMsVUFBL0U7QUFDRCxPQUZELE1BRU87QUFDTEYsUUFBQUEsSUFBSSxDQUFDRyxhQUFMLEdBQXFCRixhQUFyQjtBQUNEO0FBQ0Y7Ozs7OztpREFFV0ksVzs7Ozs7OztBQUNWLG9CQUFJLENBQUMsS0FBS0MsV0FBVixFQUNFLEtBQUtBLFdBQUwsR0FBbUIsSUFBSUMsOEJBQUosQ0FBMEI7QUFDM0NDLGtCQUFBQSxLQUFLLEVBQUUsSUFBSUMsaUJBQUosQ0FBYTtBQUFFQyxvQkFBQUEsT0FBTyxFQUFFO0FBQVgsbUJBQWIsQ0FEb0M7QUFFM0NDLGtCQUFBQSxJQUFJLEVBQUUsY0FBQ1gsSUFBRCxFQUFZWSxNQUFaO0FBQUEsMkJBQW9DLEtBQUksQ0FBQ0MsTUFBTCxDQUFZRCxNQUFaLENBQXBDO0FBQUE7QUFGcUMsaUJBQTFCLENBQW5CO2lEQUlLLEtBQUtOLFdBQUwsQ0FBaUJRLEdBQWpCLENBQXFCLE9BQXJCLEVBQThCLElBQTlCLEVBQW9DVCxXQUFwQyxDOzs7Ozs7Ozs7Ozs7Ozs7O0FBR1Q7Ozs7Ozs7Ozs7OztrREFNZ0JVLEssRUFBZVYsVzs7Ozs7O3VCQUNaLEtBQUtXLEtBQUwsQ0FBV1gsV0FBWCxDOzs7K0JBQWlDVSxLOzhDQUFSRSxPOzs7Ozs7OytCQUFrQixFOzs7aUVBQUlDLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWJvcnRhYmxlUHJvbWlzZUNhY2hlIGZyb20gJ2Fib3J0YWJsZS1wcm9taXNlLWNhY2hlJ1xuaW1wb3J0IFF1aWNrTFJVIGZyb20gJ3F1aWNrLWxydSdcbmltcG9ydCB7IEdlbmVyaWNGaWxlaGFuZGxlIH0gZnJvbSAnZ2VuZXJpYy1maWxlaGFuZGxlJ1xuaW1wb3J0IFZpcnR1YWxPZmZzZXQgZnJvbSAnLi92aXJ0dWFsT2Zmc2V0J1xuaW1wb3J0IENodW5rIGZyb20gJy4vY2h1bmsnXG5cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIEluZGV4RmlsZSB7XG4gIHB1YmxpYyBmaWxlaGFuZGxlOiBHZW5lcmljRmlsZWhhbmRsZVxuICBwdWJsaWMgcmVuYW1lUmVmU2VxOiBGdW5jdGlvblxuICBwcml2YXRlIF9wYXJzZUNhY2hlOiBhbnlcblxuICAvKipcbiAgICogQHBhcmFtIHtmaWxlaGFuZGxlfSBmaWxlaGFuZGxlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtyZW5hbWVSZWZTZXFzXVxuICAgKi9cbiAgY29uc3RydWN0b3Ioe1xuICAgIGZpbGVoYW5kbGUsXG4gICAgcmVuYW1lUmVmU2VxID0gKG46IHN0cmluZykgPT4gbixcbiAgfToge1xuICAgIGZpbGVoYW5kbGU6IEdlbmVyaWNGaWxlaGFuZGxlXG4gICAgcmVuYW1lUmVmU2VxPzogKGE6IHN0cmluZykgPT4gc3RyaW5nXG4gIH0pIHtcbiAgICB0aGlzLmZpbGVoYW5kbGUgPSBmaWxlaGFuZGxlXG4gICAgdGhpcy5yZW5hbWVSZWZTZXEgPSByZW5hbWVSZWZTZXFcbiAgfVxuICBwdWJsaWMgYWJzdHJhY3QgYXN5bmMgbGluZUNvdW50KHJlZklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGFzeW5jIF9wYXJzZShzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8YW55PlxuICBwdWJsaWMgYWJzdHJhY3QgYXN5bmMgaW5kZXhDb3YoXG4gICAgcmVmSWQ6IG51bWJlcixcbiAgICBzdGFydD86IG51bWJlcixcbiAgICBlbmQ/OiBudW1iZXIsXG4gICk6IFByb21pc2U8eyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlcjsgc2NvcmU6IG51bWJlciB9W10+XG4gIHB1YmxpYyBhYnN0cmFjdCBhc3luYyBibG9ja3NGb3JSYW5nZShcbiAgICBjaHJJZDogbnVtYmVyLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb3B0czogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKTogUHJvbWlzZTxDaHVua1tdPlxuXG4gIF9maW5kRmlyc3REYXRhKGRhdGE6IGFueSwgdmlydHVhbE9mZnNldDogVmlydHVhbE9mZnNldCkge1xuICAgIGNvbnN0IGN1cnJlbnRGZGwgPSBkYXRhLmZpcnN0RGF0YUxpbmVcbiAgICBpZiAoY3VycmVudEZkbCkge1xuICAgICAgZGF0YS5maXJzdERhdGFMaW5lID0gY3VycmVudEZkbC5jb21wYXJlVG8odmlydHVhbE9mZnNldCkgPiAwID8gdmlydHVhbE9mZnNldCA6IGN1cnJlbnRGZGxcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YS5maXJzdERhdGFMaW5lID0gdmlydHVhbE9mZnNldFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHBhcnNlKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpIHtcbiAgICBpZiAoIXRoaXMuX3BhcnNlQ2FjaGUpXG4gICAgICB0aGlzLl9wYXJzZUNhY2hlID0gbmV3IEFib3J0YWJsZVByb21pc2VDYWNoZSh7XG4gICAgICAgIGNhY2hlOiBuZXcgUXVpY2tMUlUoeyBtYXhTaXplOiAxIH0pLFxuICAgICAgICBmaWxsOiAoZGF0YTogYW55LCBzaWduYWw6IEFib3J0U2lnbmFsKSA9PiB0aGlzLl9wYXJzZShzaWduYWwpLFxuICAgICAgfSlcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VDYWNoZS5nZXQoJ2luZGV4JywgbnVsbCwgYWJvcnRTaWduYWwpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNlcUlkXG4gICAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFthYm9ydFNpZ25hbF1cbiAgICogQHJldHVybnMge1Byb21pc2V9IHRydWUgaWYgdGhlIGluZGV4IGNvbnRhaW5zIGVudHJpZXMgZm9yXG4gICAqIHRoZSBnaXZlbiByZWZlcmVuY2Ugc2VxdWVuY2UgSUQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYXN5bmMgaGFzUmVmU2VxKHNlcUlkOiBudW1iZXIsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpIHtcbiAgICByZXR1cm4gISEoKGF3YWl0IHRoaXMucGFyc2UoYWJvcnRTaWduYWwpKS5pbmRpY2VzW3NlcUlkXSB8fCB7fSkuYmluSW5kZXhcbiAgfVxufVxuIl19

@@ -1,11 +0,49 @@

"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));var Constants = require('./constants');
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
var _constants = _interopRequireDefault(require("./constants"));
/* eslint-disable @typescript-eslint/camelcase */
/* eslint-disable @typescript-eslint/no-empty-function */
/* eslint-disable @typescript-eslint/ban-ts-ignore */
var SEQRET_DECODER = '=ACMGRSVTWYHKDBN'.split('');
var CIGAR_DECODER = 'MIDNSHP=X???????'.split('');
/**
* Class of each BAM record returned by this API.
*/
/**
* Class of each BAM record returned by this API.
*/var
BamRecord = /*#__PURE__*/function () {
function BamRecord(args) {(0, _classCallCheck2.default)(this, BamRecord);
var BamRecord =
/*#__PURE__*/
function () {
function BamRecord(args) {
(0, _classCallCheck2.default)(this, BamRecord);
(0, _defineProperty2.default)(this, "data", void 0);
(0, _defineProperty2.default)(this, "bytes", void 0);
(0, _defineProperty2.default)(this, "flags", void 0);
(0, _defineProperty2.default)(this, "_id", void 0);
(0, _defineProperty2.default)(this, "_refID", void 0);
(0, _defineProperty2.default)(this, "_tagOffset", undefined);
(0, _defineProperty2.default)(this, "_tagList", []);
(0, _defineProperty2.default)(this, "_allTagsParsed", false);
this.data = {};

@@ -15,41 +53,40 @@ this.bytes = {

end: args.bytes.end,
byteArray: args.bytes.byteArray };
byteArray: args.bytes.byteArray
};
this._id = args.fileOffset;
this._coreParse();
var _this$bytes = this.bytes,
start = _this$bytes.start,
byteArray = _this$bytes.byteArray;
this._refID = byteArray.readInt32LE(start + 4);
this.data.start = byteArray.readInt32LE(start + 8);
this.flags = (byteArray.readInt32LE(start + 16) & 0xffff0000) >> 16;
}
/**
* parse the core data: ref ID and start
*/(0, _createClass2.default)(BamRecord, [{ key: "_coreParse", value: function _coreParse()
{var _this$bytes =
this.bytes,start = _this$bytes.start,byteArray = _this$bytes.byteArray;
this._refID = byteArray.readInt32LE(start + 4);
this.data.start = byteArray.readInt32LE(start + 8);
this.flags = (byteArray.readInt32LE(start + 16) & 0xffff0000) >> 16;
} }, { key: "get", value: function get(
field) {
(0, _createClass2.default)(BamRecord, [{
key: "get",
value: function get(field) {
return this._get(field.toLowerCase());
} }, { key: "end", value: function end()
{
return (
this._get('start') + (
this._get('length_on_ref') || this._get('seq_length') || undefined));
} }, { key: "seq_id", value: function seq_id()
{
}
}, {
key: "end",
value: function end() {
return this._get('start') + (this._get('length_on_ref') || this._get('seq_length') || undefined);
}
}, {
key: "seq_id",
value: function seq_id() {
return this._refID;
}
} // same as get(), except requires lower-case arguments. used
// internally to save lots of calls to field.toLowerCase()
// same as get(), except requires lower-case arguments. used
// internally to save lots of calls to field.toLowerCase()
}, { key: "_get", value: function _get(field) {
}, {
key: "_get",
value: function _get(field) {
if (field in this.data) {
return this.data[field];
}
} //@ts-ignore
if (this[field]) {
//@ts-ignore
this.data[field] = this[field]();

@@ -59,56 +96,26 @@ } else {

}
return this.data[field];
} }, { key: "_tags", value: function _tags()
}
}, {
key: "_tags",
value: function _tags() {
var _this = this;
{var _this = this;
this._parseAllTags();
var tags = [
'seq',
'seq_reverse_complemented',
'unmapped',
'qc_failed',
'duplicate',
'secondary_alignment',
'supplementary_alignment'];
var tags = ['seq', 'seq_reverse_complemented', 'unmapped', 'qc_failed', 'duplicate', 'secondary_alignment', 'supplementary_alignment'];
if (!this.isSegmentUnmapped()) tags.push('start', 'end', 'strand', 'score', 'qual', 'MQ', 'CIGAR', 'length_on_ref', 'template_length');
if (!this.isSegmentUnmapped())
tags.push(
'start',
'end',
'strand',
'score',
'qual',
'MQ',
'CIGAR',
'length_on_ref',
'template_length');
if (this.isPaired()) {
tags.push(
'multi_segment_all_correctly_aligned',
'multi_segment_next_segment_unmapped',
'multi_segment_next_segment_reversed',
'multi_segment_first',
'multi_segment_last',
'next_segment_position',
'pair_orientation');
tags.push('multi_segment_all_correctly_aligned', 'multi_segment_next_segment_unmapped', 'multi_segment_next_segment_reversed', 'multi_segment_first', 'multi_segment_last', 'next_segment_position', 'pair_orientation');
}
}
tags = tags.concat(this._tagList || []);
Object.keys(this.data).forEach(function (k) {
if (
k[0] !== '_' &&
k !== 'multi_segment_all_aligned' &&
k !== 'next_seq_id')
tags.push(k);
(0, _keys.default)(this.data).forEach(function (k) {
if (k[0] !== '_' && k !== 'multi_segment_all_aligned' && k !== 'next_seq_id') tags.push(k);
});
var seen = {};
tags = tags.filter(function (t) {
if (t in _this.data && _this.data[t] === undefined) return false;
var lt = t.toLowerCase();

@@ -119,80 +126,88 @@ var s = seen[lt];

});
return tags;
} }, { key: "parent", value: function parent()
{
}
}, {
key: "parent",
value: function parent() {
return undefined;
} }, { key: "children", value: function children()
{
}
}, {
key: "children",
value: function children() {
return this._get('subfeatures');
} }, { key: "id", value: function id()
{
}
}, {
key: "id",
value: function id() {
return this._id;
} }, { key: "multi_segment_all_aligned", value: function multi_segment_all_aligned()
{
}
}, {
key: "multi_segment_all_aligned",
value: function multi_segment_all_aligned() {
return this._get('multi_segment_all_correctly_aligned');
}
} // special parsers
// special parsers
/**
* Mapping quality score.
*/ }, { key: "mq", value: function mq()
{
*/
}, {
key: "mq",
value: function mq() {
var mq = (this._get('_bin_mq_nl') & 0xff00) >> 8;
return mq === 255 ? undefined : mq;
} }, { key: "score", value: function score()
{
}
}, {
key: "score",
value: function score() {
return this._get('mq');
} }, { key: "qual", value: function qual()
{
}
}, {
key: "qual",
value: function qual() {
if (this.isSegmentUnmapped()) return undefined;
var qseq = [];
var byteArray = this.bytes.byteArray;
var qseq = [];var
byteArray = this.bytes.byteArray;
var p =
this.bytes.start +
36 +
this._get('_l_read_name') +
this._get('_n_cigar_op') * 4 +
this._get('_seq_bytes');
var p = this.bytes.start + 36 + this._get('_l_read_name') + this._get('_n_cigar_op') * 4 + this._get('_seq_bytes');
var lseq = this._get('seq_length');
for (var j = 0; j < lseq; ++j) {
qseq.push(byteArray[p + j]);
}
return qseq.join(' ');
} }, { key: "strand", value: function strand()
{
}
}, {
key: "strand",
value: function strand() {
return this.isReverseComplemented() ? -1 : 1;
} }, { key: "multi_segment_next_segment_strand", value: function multi_segment_next_segment_strand()
{
}
}, {
key: "multi_segment_next_segment_strand",
value: function multi_segment_next_segment_strand() {
if (this.isMateUnmapped()) return undefined;
return this.isMateReverseComplemented() ? -1 : 1;
} }, { key: "name", value: function name()
{
}
}, {
key: "name",
value: function name() {
return this._get('_read_name');
} }, { key: "_read_name", value: function _read_name()
{
}
}, {
key: "_read_name",
value: function _read_name() {
var nl = this._get('_l_read_name');
return this.bytes.byteArray.toString(
'ascii',
this.bytes.start + 36,
this.bytes.start + 36 + nl - 1);
return this.bytes.byteArray.toString('ascii', this.bytes.start + 36, this.bytes.start + 36 + nl - 1);
}
/**
* Get the value of a tag, parsing the tags as far as necessary.
* Only called if we have not already parsed that field.
*/
/**
* Get the value of a tag, parsing the tags as far as necessary.
* Only called if we have not already parsed that field.
*/ }, { key: "_parseTag", value: function _parseTag(
tagName) {
}, {
key: "_parseTag",
value: function _parseTag(tagName) {
// if all of the tags have been parsed and we're still being

@@ -202,16 +217,9 @@ // called, we already know that we have no such tag, because

if (this._allTagsParsed) return undefined;
var byteArray = this.bytes.byteArray;
this._tagList = this._tagList || [];var
byteArray = this.bytes.byteArray;
var p =
this._tagOffset ||
this.bytes.start +
36 +
this._get('_l_read_name') +
this._get('_n_cigar_op') * 4 +
this._get('_seq_bytes') +
this._get('seq_length');
var p = this._tagOffset || this.bytes.start + 36 + this._get('_l_read_name') + this._get('_n_cigar_op') * 4 + this._get('_seq_bytes') + this._get('seq_length');
var blockEnd = this.bytes.end;
var lcTag;
while (p < blockEnd && lcTag !== tagName) {

@@ -222,4 +230,4 @@ var tag = String.fromCharCode(byteArray[p], byteArray[p + 1]);

p += 3;
var value = void 0;
var value = void 0;
switch (type.toLowerCase()) {

@@ -230,2 +238,3 @@ case 'a':

break;
case 'i':

@@ -235,2 +244,3 @@ value = byteArray.readInt32LE(p);

break;
case 'c':

@@ -240,2 +250,3 @@ value = byteArray.readInt8(p);

break;
case 's':

@@ -245,2 +256,3 @@ value = byteArray.readInt16LE(p);

break;
case 'f':

@@ -250,7 +262,10 @@ value = byteArray.readFloatLE(p);

break;
case 'z':
case 'h':
value = '';
while (p <= blockEnd) {
var cc = byteArray[p++];
if (cc === 0) {

@@ -262,10 +277,15 @@ break;

}
break;
case 'b':{
case 'b':
{
value = '';
var _cc = byteArray[p++];
var Btype = String.fromCharCode(_cc);
if (Btype === 'i' || Btype === 'I') {
var limit = byteArray.readInt32LE(p);
p += 4;
for (var k = 0; k < limit; k++) {

@@ -277,5 +297,8 @@ value += byteArray.readInt32LE(p);

}
if (Btype === 's' || Btype === 'S') {
var _limit = byteArray.readInt32LE(p);
p += 4;
for (var _k = 0; _k < _limit; _k++) {

@@ -287,5 +310,8 @@ value += byteArray.readInt16LE(p);

}
if (Btype === 'c' || Btype === 'C') {
var _limit2 = byteArray.readInt32LE(p);
p += 4;
for (var _k2 = 0; _k2 < _limit2; _k2++) {

@@ -297,5 +323,8 @@ value += byteArray.readInt8(p);

}
if (Btype === 'f') {
var _limit3 = byteArray.readInt32LE(p);
p += 4;
for (var _k3 = 0; _k3 < _limit3; _k3++) {

@@ -307,8 +336,11 @@ value += byteArray.readFloatLE(p);

}
break;
}
default:
console.warn("Unknown BAM tag type '".concat(type, "', tags may be incomplete"));
value = undefined;
p = blockEnd; // stop parsing tags
p = blockEnd;
// stop parsing tags
}

@@ -319,90 +351,124 @@

this._tagList.push(tag);
if (lcTag === tagName) return value;
this.data[lcTag] = value;
}
this._allTagsParsed = true;
return undefined;
} }, { key: "_parseAllTags", value: function _parseAllTags()
{
}
}, {
key: "_parseAllTags",
value: function _parseAllTags() {
this._parseTag();
} }, { key: "_parseCigar", value: function _parseCigar(
}
}, {
key: "_parseCigar",
value: function _parseCigar(cigar) {
//@ts-ignore
return cigar.match(/\d+\D/g).map(function (op) {
return [op.match(/\D/)[0].toUpperCase(), (0, _parseInt2.default)(op, 10)];
});
}
/**
* @returns {boolean} true if the read is paired, regardless of whether both segments are mapped
*/
cigar) {
return cigar.
match(/\d+\D/g).
map(function (op) {return [op.match(/\D/)[0].toUpperCase(), parseInt(op, 10)];});
}, {
key: "isPaired",
value: function isPaired() {
return !!(this.flags & _constants.default.BAM_FPAIRED);
}
/** @returns {boolean} true if the read is paired, and both segments are mapped */
/**
* @returns {boolean} true if the read is paired, regardless of whether both segments are mapped
*/ }, { key: "isPaired", value: function isPaired()
{
return !!(this.flags & Constants.BAM_FPAIRED);
}, {
key: "isProperlyPaired",
value: function isProperlyPaired() {
return !!(this.flags & _constants.default.BAM_FPROPER_PAIR);
}
/** @returns {boolean} true if the read itself is unmapped; conflictive with isProperlyPaired */
/** @returns {boolean} true if the read is paired, and both segments are mapped */ }, { key: "isProperlyPaired", value: function isProperlyPaired()
{
return !!(this.flags & Constants.BAM_FPROPER_PAIR);
}, {
key: "isSegmentUnmapped",
value: function isSegmentUnmapped() {
return !!(this.flags & _constants.default.BAM_FUNMAP);
}
/** @returns {boolean} true if the read itself is unmapped; conflictive with isProperlyPaired */
/** @returns {boolean} true if the read itself is unmapped; conflictive with isProperlyPaired */ }, { key: "isSegmentUnmapped", value: function isSegmentUnmapped()
{
return !!(this.flags & Constants.BAM_FUNMAP);
}, {
key: "isMateUnmapped",
value: function isMateUnmapped() {
return !!(this.flags & _constants.default.BAM_FMUNMAP);
}
/** @returns {boolean} true if the read is mapped to the reverse strand */
/** @returns {boolean} true if the read itself is unmapped; conflictive with isProperlyPaired */ }, { key: "isMateUnmapped", value: function isMateUnmapped()
{
return !!(this.flags & Constants.BAM_FMUNMAP);
}, {
key: "isReverseComplemented",
value: function isReverseComplemented() {
return !!(this.flags & _constants.default.BAM_FREVERSE);
}
/** @returns {boolean} true if the mate is mapped to the reverse strand */
/** @returns {boolean} true if the read is mapped to the reverse strand */ }, { key: "isReverseComplemented", value: function isReverseComplemented()
{
return !!(this.flags & Constants.BAM_FREVERSE);
}, {
key: "isMateReverseComplemented",
value: function isMateReverseComplemented() {
return !!(this.flags & _constants.default.BAM_FMREVERSE);
}
/** @returns {boolean} true if this is read number 1 in a pair */
/** @returns {boolean} true if the mate is mapped to the reverse strand */ }, { key: "isMateReverseComplemented", value: function isMateReverseComplemented()
{
return !!(this.flags & Constants.BAM_FMREVERSE);
}, {
key: "isRead1",
value: function isRead1() {
return !!(this.flags & _constants.default.BAM_FREAD1);
}
/** @returns {boolean} true if this is read number 2 in a pair */
/** @returns {boolean} true if this is read number 1 in a pair */ }, { key: "isRead1", value: function isRead1()
{
return !!(this.flags & Constants.BAM_FREAD1);
}, {
key: "isRead2",
value: function isRead2() {
return !!(this.flags & _constants.default.BAM_FREAD2);
}
/** @returns {boolean} true if this is a secondary alignment */
/** @returns {boolean} true if this is read number 2 in a pair */ }, { key: "isRead2", value: function isRead2()
{
return !!(this.flags & Constants.BAM_FREAD2);
}, {
key: "isSecondary",
value: function isSecondary() {
return !!(this.flags & _constants.default.BAM_FSECONDARY);
}
/** @returns {boolean} true if this read has failed QC checks */
/** @returns {boolean} true if this is a secondary alignment */ }, { key: "isSecondary", value: function isSecondary()
{
return !!(this.flags & Constants.BAM_FSECONDARY);
}, {
key: "isFailedQc",
value: function isFailedQc() {
return !!(this.flags & _constants.default.BAM_FQCFAIL);
}
/** @returns {boolean} true if the read is an optical or PCR duplicate */
/** @returns {boolean} true if this read has failed QC checks */ }, { key: "isFailedQc", value: function isFailedQc()
{
return !!(this.flags & Constants.BAM_FQCFAIL);
}, {
key: "isDuplicate",
value: function isDuplicate() {
return !!(this.flags & _constants.default.BAM_FDUP);
}
/** @returns {boolean} true if this is a supplementary alignment */
/** @returns {boolean} true if the read is an optical or PCR duplicate */ }, { key: "isDuplicate", value: function isDuplicate()
{
return !!(this.flags & Constants.BAM_FDUP);
}, {
key: "isSupplementary",
value: function isSupplementary() {
return !!(this.flags & _constants.default.BAM_FSUPPLEMENTARY);
}
}, {
key: "cigar",
value: function cigar() {
if (this.isSegmentUnmapped()) return undefined;
var _this$bytes2 = this.bytes,
byteArray = _this$bytes2.byteArray,
start = _this$bytes2.start;
/** @returns {boolean} true if this is a supplementary alignment */ }, { key: "isSupplementary", value: function isSupplementary()
{
return !!(this.flags & Constants.BAM_FSUPPLEMENTARY);
} }, { key: "cigar", value: function cigar()
var numCigarOps = this._get('_n_cigar_op');
{
if (this.isSegmentUnmapped()) return undefined;var _this$bytes2 =
var p = start + 36 + this._get('_l_read_name');
this.bytes,byteArray = _this$bytes2.byteArray,start = _this$bytes2.start;
var numCigarOps = this._get('_n_cigar_op');
var p = start + 36 + this._get('_l_read_name');
var cigar = '';
var lref = 0;
for (var c = 0; c < numCigarOps; ++c) {

@@ -412,8 +478,6 @@ var cigop = byteArray.readInt32LE(p);

var op = CIGAR_DECODER[cigop & 0xf];
cigar += lop + op;
cigar += lop + op; // soft clip, hard clip, and insertion don't count toward
// the length on the reference
// soft clip, hard clip, and insertion don't count toward
// the length on the reference
if (op !== 'H' && op !== 'S' && op !== 'I') lref += lop;
p += 4;

@@ -424,36 +488,43 @@ }

return cigar;
} }, { key: "_flags", value: function _flags()
}
}, {
key: "_flags",
value: function _flags() {}
}, {
key: "length_on_ref",
value: function length_on_ref() {
this._get('cigar'); // the length_on_ref is set as a
// side effect of the CIGAR parsing
{} }, { key: "length_on_ref", value: function length_on_ref()
{
this._get('cigar'); // the length_on_ref is set as a
// side effect of the CIGAR parsing
return this.data.length_on_ref;
} }, { key: "_n_cigar_op", value: function _n_cigar_op()
{
}
}, {
key: "_n_cigar_op",
value: function _n_cigar_op() {
return this._get('_flag_nc') & 0xffff;
} }, { key: "_l_read_name", value: function _l_read_name()
{
}
}, {
key: "_l_read_name",
value: function _l_read_name() {
return this._get('_bin_mq_nl') & 0xff;
}
/**
* number of bytes in the sequence field
*/
/**
* number of bytes in the sequence field
*/ }, { key: "_seq_bytes", value: function _seq_bytes()
{
}, {
key: "_seq_bytes",
value: function _seq_bytes() {
return this._get('seq_length') + 1 >> 1;
} }, { key: "getReadBases", value: function getReadBases()
}
}, {
key: "getReadBases",
value: function getReadBases() {
var seq = '';
var byteArray = this.bytes.byteArray;
var p = this.bytes.start + 36 + this._get('_l_read_name') + this._get('_n_cigar_op') * 4;
{
var seq = '';var
byteArray = this.bytes.byteArray;
var p =
this.bytes.start +
36 +
this._get('_l_read_name') +
this._get('_n_cigar_op') * 4;
var seqBytes = this._get('_seq_bytes');
for (var j = 0; j < seqBytes; ++j) {

@@ -464,12 +535,10 @@ var sb = byteArray[p + j];

}
return seq;
}
} // adapted from igv.js
// adapted from igv.js
}, { key: "getPairOrientation", value: function getPairOrientation() {
if (
!this.isSegmentUnmapped() &&
!this.isMateUnmapped() &&
this._refID === this._next_refid())
{
}, {
key: "getPairOrientation",
value: function getPairOrientation() {
if (!this.isSegmentUnmapped() && !this.isMateUnmapped() && this._refID === this._next_refid()) {
var s1 = this.isReverseComplemented() ? 'R' : 'F';

@@ -479,2 +548,3 @@ var s2 = this.isMateReverseComplemented() ? 'R' : 'F';

var o2 = ' ';
if (this.isRead1()) {

@@ -490,2 +560,3 @@ o1 = '1';

var isize = this.template_length();
if (isize > 0) {

@@ -502,42 +573,56 @@ tmp[0] = s1;

}
return tmp.join('');
}
return null;
} }, { key: "_bin_mq_nl", value: function _bin_mq_nl()
{
}
}, {
key: "_bin_mq_nl",
value: function _bin_mq_nl() {
return this.bytes.byteArray.readInt32LE(this.bytes.start + 12);
} }, { key: "_flag_nc", value: function _flag_nc()
{
}
}, {
key: "_flag_nc",
value: function _flag_nc() {
return this.bytes.byteArray.readInt32LE(this.bytes.start + 16);
} }, { key: "seq_length", value: function seq_length()
{
}
}, {
key: "seq_length",
value: function seq_length() {
return this.bytes.byteArray.readInt32LE(this.bytes.start + 20);
} }, { key: "_next_refid", value: function _next_refid()
{
}
}, {
key: "_next_refid",
value: function _next_refid() {
return this.bytes.byteArray.readInt32LE(this.bytes.start + 24);
} }, { key: "_next_pos", value: function _next_pos()
{
}
}, {
key: "_next_pos",
value: function _next_pos() {
return this.bytes.byteArray.readInt32LE(this.bytes.start + 28);
} }, { key: "template_length", value: function template_length()
{
}
}, {
key: "template_length",
value: function template_length() {
return this.bytes.byteArray.readInt32LE(this.bytes.start + 32);
} }, { key: "toJSON", value: function toJSON()
}
}, {
key: "toJSON",
value: function toJSON() {
var _this2 = this;
{var _this2 = this;
var data = {};
Object.keys(this).forEach(function (k) {
if (k.charAt(0) === '_' || k === 'bytes') return;
(0, _keys.default)(this).forEach(function (k) {
if (k.charAt(0) === '_' || k === 'bytes') return; //@ts-ignore
data[k] = _this2[k];
});
return data;
} }]);return BamRecord;}();
}
}]);
return BamRecord;
}();
module.exports = BamRecord;
exports.default = BamRecord;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWNvcmQudHMiXSwibmFtZXMiOlsiU0VRUkVUX0RFQ09ERVIiLCJzcGxpdCIsIkNJR0FSX0RFQ09ERVIiLCJCYW1SZWNvcmQiLCJhcmdzIiwidW5kZWZpbmVkIiwiZGF0YSIsImJ5dGVzIiwic3RhcnQiLCJlbmQiLCJieXRlQXJyYXkiLCJfaWQiLCJmaWxlT2Zmc2V0IiwiX3JlZklEIiwicmVhZEludDMyTEUiLCJmbGFncyIsImZpZWxkIiwiX2dldCIsInRvTG93ZXJDYXNlIiwiX3BhcnNlVGFnIiwiX3BhcnNlQWxsVGFncyIsInRhZ3MiLCJpc1NlZ21lbnRVbm1hcHBlZCIsInB1c2giLCJpc1BhaXJlZCIsImNvbmNhdCIsIl90YWdMaXN0IiwiZm9yRWFjaCIsImsiLCJzZWVuIiwiZmlsdGVyIiwidCIsImx0IiwicyIsIm1xIiwicXNlcSIsInAiLCJsc2VxIiwiaiIsImpvaW4iLCJpc1JldmVyc2VDb21wbGVtZW50ZWQiLCJpc01hdGVVbm1hcHBlZCIsImlzTWF0ZVJldmVyc2VDb21wbGVtZW50ZWQiLCJubCIsInRvU3RyaW5nIiwidGFnTmFtZSIsIl9hbGxUYWdzUGFyc2VkIiwiX3RhZ09mZnNldCIsImJsb2NrRW5kIiwibGNUYWciLCJ0YWciLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJ0eXBlIiwidmFsdWUiLCJyZWFkSW50OCIsInJlYWRJbnQxNkxFIiwicmVhZEZsb2F0TEUiLCJjYyIsIkJ0eXBlIiwibGltaXQiLCJjb25zb2xlIiwid2FybiIsImNpZ2FyIiwibWF0Y2giLCJtYXAiLCJvcCIsInRvVXBwZXJDYXNlIiwiQ29uc3RhbnRzIiwiQkFNX0ZQQUlSRUQiLCJCQU1fRlBST1BFUl9QQUlSIiwiQkFNX0ZVTk1BUCIsIkJBTV9GTVVOTUFQIiwiQkFNX0ZSRVZFUlNFIiwiQkFNX0ZNUkVWRVJTRSIsIkJBTV9GUkVBRDEiLCJCQU1fRlJFQUQyIiwiQkFNX0ZTRUNPTkRBUlkiLCJCQU1fRlFDRkFJTCIsIkJBTV9GRFVQIiwiQkFNX0ZTVVBQTEVNRU5UQVJZIiwibnVtQ2lnYXJPcHMiLCJscmVmIiwiYyIsImNpZ29wIiwibG9wIiwibGVuZ3RoX29uX3JlZiIsInNlcSIsInNlcUJ5dGVzIiwic2IiLCJsZW5ndGgiLCJnZXQiLCJfbmV4dF9yZWZpZCIsInMxIiwiczIiLCJvMSIsIm8yIiwiaXNSZWFkMSIsImlzUmVhZDIiLCJ0bXAiLCJpc2l6ZSIsInRlbXBsYXRlX2xlbmd0aCIsImNoYXJBdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBOztBQUhBOztBQUNBOztBQUNBO0FBR0EsSUFBTUEsY0FBYyxHQUFHLG1CQUFtQkMsS0FBbkIsQ0FBeUIsRUFBekIsQ0FBdkI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsbUJBQW1CRCxLQUFuQixDQUF5QixFQUF6QixDQUF0QjtBQUVBOzs7O0lBR3FCRSxTOzs7QUFTbkIscUJBQVlDLElBQVosRUFBdUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxzREFIa0JDLFNBR2xCO0FBQUEsb0RBRk0sRUFFTjtBQUFBLDBEQURFLEtBQ0Y7QUFDckIsU0FBS0MsSUFBTCxHQUFZLEVBQVo7QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFDWEMsTUFBQUEsS0FBSyxFQUFFSixJQUFJLENBQUNHLEtBQUwsQ0FBV0MsS0FEUDtBQUVYQyxNQUFBQSxHQUFHLEVBQUVMLElBQUksQ0FBQ0csS0FBTCxDQUFXRSxHQUZMO0FBR1hDLE1BQUFBLFNBQVMsRUFBRU4sSUFBSSxDQUFDRyxLQUFMLENBQVdHO0FBSFgsS0FBYjtBQUtBLFNBQUtDLEdBQUwsR0FBV1AsSUFBSSxDQUFDUSxVQUFoQjtBQVBxQixzQkFRUSxLQUFLTCxLQVJiO0FBQUEsUUFRYkMsS0FSYSxlQVFiQSxLQVJhO0FBQUEsUUFRTkUsU0FSTSxlQVFOQSxTQVJNO0FBU3JCLFNBQUtHLE1BQUwsR0FBY0gsU0FBUyxDQUFDSSxXQUFWLENBQXNCTixLQUFLLEdBQUcsQ0FBOUIsQ0FBZDtBQUNBLFNBQUtGLElBQUwsQ0FBVUUsS0FB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dC1lc2xpbnQvY2FtZWxjYXNlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtaWdub3JlICovXG5pbXBvcnQgQ29uc3RhbnRzIGZyb20gJy4vY29uc3RhbnRzJ1xuXG5jb25zdCBTRVFSRVRfREVDT0RFUiA9ICc9QUNNR1JTVlRXWUhLREJOJy5zcGxpdCgnJylcbmNvbnN0IENJR0FSX0RFQ09ERVIgPSAnTUlETlNIUD1YPz8/Pz8/Pycuc3BsaXQoJycpXG5cbi8qKlxuICogQ2xhc3Mgb2YgZWFjaCBCQU0gcmVjb3JkIHJldHVybmVkIGJ5IHRoaXMgQVBJLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYW1SZWNvcmQge1xuICBwcml2YXRlIGRhdGE6IGFueVxuICBwcml2YXRlIGJ5dGVzOiBhbnlcbiAgcHJpdmF0ZSBmbGFnczogYW55XG4gIHByaXZhdGUgX2lkOiBudW1iZXJcbiAgcHJpdmF0ZSBfcmVmSUQ6IG51bWJlclxuICBwcml2YXRlIF90YWdPZmZzZXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICBwcml2YXRlIF90YWdMaXN0OiBzdHJpbmdbXSA9IFtdXG4gIHByaXZhdGUgX2FsbFRhZ3NQYXJzZWQgPSBmYWxzZVxuICBjb25zdHJ1Y3RvcihhcmdzOiBhbnkpIHtcbiAgICB0aGlzLmRhdGEgPSB7fVxuICAgIHRoaXMuYnl0ZXMgPSB7XG4gICAgICBzdGFydDogYXJncy5ieXRlcy5zdGFydCxcbiAgICAgIGVuZDogYXJncy5ieXRlcy5lbmQsXG4gICAgICBieXRlQXJyYXk6IGFyZ3MuYnl0ZXMuYnl0ZUFycmF5LFxuICAgIH1cbiAgICB0aGlzLl9pZCA9IGFyZ3MuZmlsZU9mZnNldFxuICAgIGNvbnN0IHsgc3RhcnQsIGJ5dGVBcnJheSB9ID0gdGhpcy5ieXRlc1xuICAgIHRoaXMuX3JlZklEID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHN0YXJ0ICsgNClcbiAgICB0aGlzLmRhdGEuc3RhcnQgPSBieXRlQXJyYXkucmVhZEludDMyTEUoc3RhcnQgKyA4KVxuICAgIHRoaXMuZmxhZ3MgPSAoYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHN0YXJ0ICsgMTYpICYgMHhmZmZmMDAwMCkgPj4gMTZcbiAgfVxuXG4gIGdldChmaWVsZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldChmaWVsZC50b0xvd2VyQ2FzZSgpKVxuICB9XG5cbiAgZW5kKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXQoJ3N0YXJ0JykgKyAodGhpcy5fZ2V0KCdsZW5ndGhfb25fcmVmJykgfHwgdGhpcy5fZ2V0KCdzZXFfbGVuZ3RoJykgfHwgdW5kZWZpbmVkKVxuICB9XG5cbiAgc2VxX2lkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWZJRFxuICB9XG5cbiAgLy8gc2FtZSBhcyBnZXQoKSwgZXhjZXB0IHJlcXVpcmVzIGxvd2VyLWNhc2UgYXJndW1lbnRzLiAgdXNlZFxuICAvLyBpbnRlcm5hbGx5IHRvIHNhdmUgbG90cyBvZiBjYWxscyB0byBmaWVsZC50b0xvd2VyQ2FzZSgpXG4gIF9nZXQoZmllbGQ6IHN0cmluZykge1xuICAgIGlmIChmaWVsZCBpbiB0aGlzLmRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFbZmllbGRdXG4gICAgfVxuICAgIC8vQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzW2ZpZWxkXSkge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aGlzLmRhdGFbZmllbGRdID0gdGhpc1tmaWVsZF0oKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFbZmllbGRdID0gdGhpcy5fcGFyc2VUYWcoZmllbGQpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRhdGFbZmllbGRdXG4gIH1cblxuICBfdGFncygpIHtcbiAgICB0aGlzLl9wYXJzZUFsbFRhZ3MoKVxuXG4gICAgbGV0IHRhZ3MgPSBbXG4gICAgICAnc2VxJyxcbiAgICAgICdzZXFfcmV2ZXJzZV9jb21wbGVtZW50ZWQnLFxuICAgICAgJ3VubWFwcGVkJyxcbiAgICAgICdxY19mYWlsZWQnLFxuICAgICAgJ2R1cGxpY2F0ZScsXG4gICAgICAnc2Vjb25kYXJ5X2FsaWdubWVudCcsXG4gICAgICAnc3VwcGxlbWVudGFyeV9hbGlnbm1lbnQnLFxuICAgIF1cblxuICAgIGlmICghdGhpcy5pc1NlZ21lbnRVbm1hcHBlZCgpKVxuICAgICAgdGFncy5wdXNoKCdzdGFydCcsICdlbmQnLCAnc3RyYW5kJywgJ3Njb3JlJywgJ3F1YWwnLCAnTVEnLCAnQ0lHQVInLCAnbGVuZ3RoX29uX3JlZicsICd0ZW1wbGF0ZV9sZW5ndGgnKVxuICAgIGlmICh0aGlzLmlzUGFpcmVkKCkpIHtcbiAgICAgIHRhZ3MucHVzaChcbiAgICAgICAgJ211bHRpX3NlZ21lbnRfYWxsX2NvcnJlY3RseV9hbGlnbmVkJyxcbiAgICAgICAgJ211bHRpX3NlZ21lbnRfbmV4dF9zZWdtZW50X3VubWFwcGVkJyxcbiAgICAgICAgJ211bHRpX3NlZ21lbnRfbmV4dF9zZWdtZW50X3JldmVyc2VkJyxcbiAgICAgICAgJ211bHRpX3NlZ21lbnRfZmlyc3QnLFxuICAgICAgICAnbXVsdGlfc2VnbWVudF9sYXN0JyxcbiAgICAgICAgJ25leHRfc2VnbWVudF9wb3NpdGlvbicsXG4gICAgICAgICdwYWlyX29yaWVudGF0aW9uJyxcbiAgICAgIClcbiAgICB9XG4gICAgdGFncyA9IHRhZ3MuY29uY2F0KHRoaXMuX3RhZ0xpc3QgfHwgW10pXG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmRhdGEpLmZvckVhY2goayA9PiB7XG4gICAgICBpZiAoa1swXSAhPT0gJ18nICYmIGsgIT09ICdtdWx0aV9zZWdtZW50X2FsbF9hbGlnbmVkJyAmJiBrICE9PSAnbmV4dF9zZXFfaWQnKSB0YWdzLnB1c2goaylcbiAgICB9KVxuXG4gICAgY29uc3Qgc2VlbjogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fVxuICAgIHRhZ3MgPSB0YWdzLmZpbHRlcih0ID0+IHtcbiAgICAgIGlmICh0IGluIHRoaXMuZGF0YSAmJiB0aGlzLmRhdGFbdF0gPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGNvbnN0IGx0ID0gdC50b0xvd2VyQ2FzZSgpXG4gICAgICBjb25zdCBzID0gc2VlbltsdF1cbiAgICAgIHNlZW5bbHRdID0gdHJ1ZVxuICAgICAgcmV0dXJuICFzXG4gICAgfSlcblxuICAgIHJldHVybiB0YWdzXG4gIH1cblxuICBwYXJlbnQoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldCgnc3ViZmVhdHVyZXMnKVxuICB9XG5cbiAgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lkXG4gIH1cblxuICBtdWx0aV9zZWdtZW50X2FsbF9hbGlnbmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXQoJ211bHRpX3NlZ21lbnRfYWxsX2NvcnJlY3RseV9hbGlnbmVkJylcbiAgfVxuXG4gIC8vIHNwZWNpYWwgcGFyc2Vyc1xuICAvKipcbiAgICogTWFwcGluZyBxdWFsaXR5IHNjb3JlLlxuICAgKi9cbiAgbXEoKSB7XG4gICAgY29uc3QgbXEgPSAodGhpcy5fZ2V0KCdfYmluX21xX25sJykgJiAweGZmMDApID4+IDhcbiAgICByZXR1cm4gbXEgPT09IDI1NSA/IHVuZGVmaW5lZCA6IG1xXG4gIH1cblxuICBzY29yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0KCdtcScpXG4gIH1cblxuICBxdWFsKCkge1xuICAgIGlmICh0aGlzLmlzU2VnbWVudFVubWFwcGVkKCkpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHFzZXEgPSBbXVxuICAgIGNvbnN0IHsgYnl0ZUFycmF5IH0gPSB0aGlzLmJ5dGVzXG4gICAgY29uc3QgcCA9IHRoaXMuYnl0ZXMuc3RhcnQgKyAzNiArIHRoaXMuX2dldCgnX2xfcmVhZF9uYW1lJykgKyB0aGlzLl9nZXQoJ19uX2NpZ2FyX29wJykgKiA0ICsgdGhpcy5fZ2V0KCdfc2VxX2J5dGVzJylcbiAgICBjb25zdCBsc2VxID0gdGhpcy5fZ2V0KCdzZXFfbGVuZ3RoJylcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxzZXE7ICsraikge1xuICAgICAgcXNlcS5wdXNoKGJ5dGVBcnJheVtwICsgal0pXG4gICAgfVxuICAgIHJldHVybiBxc2VxLmpvaW4oJyAnKVxuICB9XG5cbiAgc3RyYW5kKCkge1xuICAgIHJldHVybiB0aGlzLmlzUmV2ZXJzZUNvbXBsZW1lbnRlZCgpID8gLTEgOiAxXG4gIH1cblxuICBtdWx0aV9zZWdtZW50X25leHRfc2VnbWVudF9zdHJhbmQoKSB7XG4gICAgaWYgKHRoaXMuaXNNYXRlVW5tYXBwZWQoKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmlzTWF0ZVJldmVyc2VDb21wbGVtZW50ZWQoKSA/IC0xIDogMVxuICB9XG5cbiAgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0KCdfcmVhZF9uYW1lJylcbiAgfVxuXG4gIF9yZWFkX25hbWUoKSB7XG4gICAgY29uc3QgbmwgPSB0aGlzLl9nZXQoJ19sX3JlYWRfbmFtZScpXG4gICAgcmV0dXJuIHRoaXMuYnl0ZXMuYnl0ZUFycmF5LnRvU3RyaW5nKCdhc2NpaScsIHRoaXMuYnl0ZXMuc3RhcnQgKyAzNiwgdGhpcy5ieXRlcy5zdGFydCArIDM2ICsgbmwgLSAxKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgb2YgYSB0YWcsIHBhcnNpbmcgdGhlIHRhZ3MgYXMgZmFyIGFzIG5lY2Vzc2FyeS5cbiAgICogT25seSBjYWxsZWQgaWYgd2UgaGF2ZSBub3QgYWxyZWFkeSBwYXJzZWQgdGhhdCBmaWVsZC5cbiAgICovXG4gIF9wYXJzZVRhZyh0YWdOYW1lPzogc3RyaW5nKSB7XG4gICAgLy8gaWYgYWxsIG9mIHRoZSB0YWdzIGhhdmUgYmVlbiBwYXJzZWQgYW5kIHdlJ3JlIHN0aWxsIGJlaW5nXG4gICAgLy8gY2FsbGVkLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCB3ZSBoYXZlIG5vIHN1Y2ggdGFnLCBiZWNhdXNlXG4gICAgLy8gaXQgd291bGQgYWxyZWFkeSBoYXZlIGJlZW4gY2FjaGVkLlxuICAgIGlmICh0aGlzLl9hbGxUYWdzUGFyc2VkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCB7IGJ5dGVBcnJheSB9ID0gdGhpcy5ieXRlc1xuICAgIGxldCBwID1cbiAgICAgIHRoaXMuX3RhZ09mZnNldCB8fFxuICAgICAgdGhpcy5ieXRlcy5zdGFydCArXG4gICAgICAgIDM2ICtcbiAgICAgICAgdGhpcy5fZ2V0KCdfbF9yZWFkX25hbWUnKSArXG4gICAgICAgIHRoaXMuX2dldCgnX25fY2lnYXJfb3AnKSAqIDQgK1xuICAgICAgICB0aGlzLl9nZXQoJ19zZXFfYnl0ZXMnKSArXG4gICAgICAgIHRoaXMuX2dldCgnc2VxX2xlbmd0aCcpXG5cbiAgICBjb25zdCBibG9ja0VuZCA9IHRoaXMuYnl0ZXMuZW5kXG4gICAgbGV0IGxjVGFnXG4gICAgd2hpbGUgKHAgPCBibG9ja0VuZCAmJiBsY1RhZyAhPT0gdGFnTmFtZSkge1xuICAgICAgY29uc3QgdGFnID0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlQXJyYXlbcF0sIGJ5dGVBcnJheVtwICsgMV0pXG4gICAgICBsY1RhZyA9IHRhZy50b0xvd2VyQ2FzZSgpXG4gICAgICBjb25zdCB0eXBlID0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlQXJyYXlbcCArIDJdKVxuICAgICAgcCArPSAzXG5cbiAgICAgIGxldCB2YWx1ZVxuICAgICAgc3dpdGNoICh0eXBlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY2FzZSAnYSc6XG4gICAgICAgICAgdmFsdWUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVBcnJheVtwXSlcbiAgICAgICAgICBwICs9IDFcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdpJzpcbiAgICAgICAgICB2YWx1ZSA9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgICAgIHAgKz0gNFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2MnOlxuICAgICAgICAgIHZhbHVlID0gYnl0ZUFycmF5LnJlYWRJbnQ4KHApXG4gICAgICAgICAgcCArPSAxXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgdmFsdWUgPSBieXRlQXJyYXkucmVhZEludDE2TEUocClcbiAgICAgICAgICBwICs9IDJcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdmJzpcbiAgICAgICAgICB2YWx1ZSA9IGJ5dGVBcnJheS5yZWFkRmxvYXRMRShwKVxuICAgICAgICAgIHAgKz0gNFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3onOlxuICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICB2YWx1ZSA9ICcnXG4gICAgICAgICAgd2hpbGUgKHAgPD0gYmxvY2tFbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNjID0gYnl0ZUFycmF5W3ArK11cbiAgICAgICAgICAgIGlmIChjYyA9PT0gMCkge1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFsdWUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjYylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnYic6IHtcbiAgICAgICAgICB2YWx1ZSA9ICcnXG4gICAgICAgICAgY29uc3QgY2MgPSBieXRlQXJyYXlbcCsrXVxuICAgICAgICAgIGNvbnN0IEJ0eXBlID0gU3RyaW5nLmZyb21DaGFyQ29kZShjYylcbiAgICAgICAgICBpZiAoQnR5cGUgPT09ICdpJyB8fCBCdHlwZSA9PT0gJ0knKSB7XG4gICAgICAgICAgICBjb25zdCBsaW1pdCA9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgICAgICAgcCArPSA0XG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGxpbWl0OyBrKyspIHtcbiAgICAgICAgICAgICAgdmFsdWUgKz0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHApXG4gICAgICAgICAgICAgIGlmIChrICsgMSA8IGxpbWl0KSB2YWx1ZSArPSAnLCdcbiAgICAgICAgICAgICAgcCArPSA0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChCdHlwZSA9PT0gJ3MnIHx8IEJ0eXBlID09PSAnUycpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbWl0ID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHApXG4gICAgICAgICAgICBwICs9IDRcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGltaXQ7IGsrKykge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBieXRlQXJyYXkucmVhZEludDE2TEUocClcbiAgICAgICAgICAgICAgaWYgKGsgKyAxIDwgbGltaXQpIHZhbHVlICs9ICcsJ1xuICAgICAgICAgICAgICBwICs9IDJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnYycgfHwgQnR5cGUgPT09ICdDJykge1xuICAgICAgICAgICAgY29uc3QgbGltaXQgPSBieXRlQXJyYXkucmVhZEludDMyTEUocClcbiAgICAgICAgICAgIHAgKz0gNFxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgIHZhbHVlICs9IGJ5dGVBcnJheS5yZWFkSW50OChwKVxuICAgICAgICAgICAgICBpZiAoayArIDEgPCBsaW1pdCkgdmFsdWUgKz0gJywnXG4gICAgICAgICAgICAgIHAgKz0gMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoQnR5cGUgPT09ICdmJykge1xuICAgICAgICAgICAgY29uc3QgbGltaXQgPSBieXRlQXJyYXkucmVhZEludDMyTEUocClcbiAgICAgICAgICAgIHAgKz0gNFxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgIHZhbHVlICs9IGJ5dGVBcnJheS5yZWFkRmxvYXRMRShwKVxuICAgICAgICAgICAgICBpZiAoayArIDEgPCBsaW1pdCkgdmFsdWUgKz0gJywnXG4gICAgICAgICAgICAgIHAgKz0gNFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS53YXJuKGBVbmtub3duIEJBTSB0YWcgdHlwZSAnJHt0eXBlfScsIHRhZ3MgbWF5IGJlIGluY29tcGxldGVgKVxuICAgICAgICAgIHZhbHVlID0gdW5kZWZpbmVkXG4gICAgICAgICAgcCA9IGJsb2NrRW5kIC8vIHN0b3AgcGFyc2luZyB0YWdzXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3RhZ09mZnNldCA9IHBcblxuICAgICAgdGhpcy5fdGFnTGlzdC5wdXNoKHRhZylcbiAgICAgIGlmIChsY1RhZyA9PT0gdGFnTmFtZSkgcmV0dXJuIHZhbHVlXG5cbiAgICAgIHRoaXMuZGF0YVtsY1RhZ10gPSB2YWx1ZVxuICAgIH1cbiAgICB0aGlzLl9hbGxUYWdzUGFyc2VkID0gdHJ1ZVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIF9wYXJzZUFsbFRhZ3MoKSB7XG4gICAgdGhpcy5fcGFyc2VUYWcoKVxuICB9XG5cbiAgX3BhcnNlQ2lnYXIoY2lnYXI6IHN0cmluZykge1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHJldHVybiBjaWdhci5tYXRjaCgvXFxkK1xcRC9nKS5tYXAoKG9wOiBzdHJpbmcpID0+IFtvcC5tYXRjaCgvXFxELylbMF0udG9VcHBlckNhc2UoKSwgcGFyc2VJbnQob3AsIDEwKV0pXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXMgcGFpcmVkLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYm90aCBzZWdtZW50cyBhcmUgbWFwcGVkXG4gICAqL1xuICBpc1BhaXJlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlBBSVJFRClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgcmVhZCBpcyBwYWlyZWQsIGFuZCBib3RoIHNlZ21lbnRzIGFyZSBtYXBwZWQgKi9cbiAgaXNQcm9wZXJseVBhaXJlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlBST1BFUl9QQUlSKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSByZWFkIGl0c2VsZiBpcyB1bm1hcHBlZDsgY29uZmxpY3RpdmUgd2l0aCBpc1Byb3Blcmx5UGFpcmVkICovXG4gIGlzU2VnbWVudFVubWFwcGVkKCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GVU5NQVApXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXRzZWxmIGlzIHVubWFwcGVkOyBjb25mbGljdGl2ZSB3aXRoIGlzUHJvcGVybHlQYWlyZWQgKi9cbiAgaXNNYXRlVW5tYXBwZWQoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuZmxhZ3MgJiBDb25zdGFudHMuQkFNX0ZNVU5NQVApXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXMgbWFwcGVkIHRvIHRoZSByZXZlcnNlIHN0cmFuZCAqL1xuICBpc1JldmVyc2VDb21wbGVtZW50ZWQoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuZmxhZ3MgJiBDb25zdGFudHMuQkFNX0ZSRVZFUlNFKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBtYXRlIGlzIG1hcHBlZCB0byB0aGUgcmV2ZXJzZSBzdHJhbmQgKi9cbiAgaXNNYXRlUmV2ZXJzZUNvbXBsZW1lbnRlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRk1SRVZFUlNFKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgcmVhZCBudW1iZXIgMSBpbiBhIHBhaXIgKi9cbiAgaXNSZWFkMSgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlJFQUQxKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgcmVhZCBudW1iZXIgMiBpbiBhIHBhaXIgKi9cbiAgaXNSZWFkMigpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlJFQUQyKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgYSBzZWNvbmRhcnkgYWxpZ25tZW50ICovXG4gIGlzU2Vjb25kYXJ5KCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GU0VDT05EQVJZKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgcmVhZCBoYXMgZmFpbGVkIFFDIGNoZWNrcyAqL1xuICBpc0ZhaWxlZFFjKCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GUUNGQUlMKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSByZWFkIGlzIGFuIG9wdGljYWwgb3IgUENSIGR1cGxpY2F0ZSAqL1xuICBpc0R1cGxpY2F0ZSgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRkRVUClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGlzIGlzIGEgc3VwcGxlbWVudGFyeSBhbGlnbm1lbnQgKi9cbiAgaXNTdXBwbGVtZW50YXJ5KCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GU1VQUExFTUVOVEFSWSlcbiAgfVxuXG4gIGNpZ2FyKCkge1xuICAgIGlmICh0aGlzLmlzU2VnbWVudFVubWFwcGVkKCkpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHsgYnl0ZUFycmF5LCBzdGFydCB9ID0gdGhpcy5ieXRlc1xuICAgIGNvbnN0IG51bUNpZ2FyT3BzID0gdGhpcy5fZ2V0KCdfbl9jaWdhcl9vcCcpXG4gICAgbGV0IHAgPSBzdGFydCArIDM2ICsgdGhpcy5fZ2V0KCdfbF9yZWFkX25hbWUnKVxuICAgIGxldCBjaWdhciA9ICcnXG4gICAgbGV0IGxyZWYgPSAwXG4gICAgZm9yIChsZXQgYyA9IDA7IGMgPCBudW1DaWdhck9wczsgKytjKSB7XG4gICAgICBjb25zdCBjaWdvcCA9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgY29uc3QgbG9wID0gY2lnb3AgPj4gNFxuICAgICAgY29uc3Qgb3AgPSBDSUdBUl9ERUNPREVSW2NpZ29wICYgMHhmXVxuICAgICAgY2lnYXIgKz0gbG9wICsgb3BcblxuICAgICAgLy8gc29mdCBjbGlwLCBoYXJkIGNsaXAsIGFuZCBpbnNlcnRpb24gZG9uJ3QgY291bnQgdG93YXJkXG4gICAgICAvLyB0aGUgbGVuZ3RoIG9uIHRoZSByZWZlcmVuY2VcbiAgICAgIGlmIChvcCAhPT0gJ0gnICYmIG9wICE9PSAnUycgJiYgb3AgIT09ICdJJykgbHJlZiArPSBsb3BcblxuICAgICAgcCArPSA0XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhLmxlbmd0aF9vbl9yZWYgPSBscmVmXG4gICAgcmV0dXJuIGNpZ2FyXG4gIH1cblxuICBfZmxhZ3MoKSB7fVxuXG4gIGxlbmd0aF9vbl9yZWYoKSB7XG4gICAgdGhpcy5fZ2V0KCdjaWdhcicpIC8vIHRoZSBsZW5ndGhfb25fcmVmIGlzIHNldCBhcyBhXG4gICAgLy8gc2lkZSBlZmZlY3Qgb2YgdGhlIENJR0FSIHBhcnNpbmdcbiAgICByZXR1cm4gdGhpcy5kYXRhLmxlbmd0aF9vbl9yZWZcbiAgfVxuXG4gIF9uX2NpZ2FyX29wKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXQoJ19mbGFnX25jJykgJiAweGZmZmZcbiAgfVxuXG4gIF9sX3JlYWRfbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0KCdfYmluX21xX25sJykgJiAweGZmXG4gIH1cblxuICAvKipcbiAgICogbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzZXF1ZW5jZSBmaWVsZFxuICAgKi9cbiAgX3NlcV9ieXRlcygpIHtcbiAgICByZXR1cm4gKHRoaXMuX2dldCgnc2VxX2xlbmd0aCcpICsgMSkgPj4gMVxuICB9XG5cbiAgZ2V0UmVhZEJhc2VzKCkge1xuICAgIGxldCBzZXEgPSAnJ1xuICAgIGNvbnN0IHsgYnl0ZUFycmF5IH0gPSB0aGlzLmJ5dGVzXG4gICAgY29uc3QgcCA9IHRoaXMuYnl0ZXMuc3RhcnQgKyAzNiArIHRoaXMuX2dldCgnX2xfcmVhZF9uYW1lJykgKyB0aGlzLl9nZXQoJ19uX2NpZ2FyX29wJykgKiA0XG4gICAgY29uc3Qgc2VxQnl0ZXMgPSB0aGlzLl9nZXQoJ19zZXFfYnl0ZXMnKVxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2VxQnl0ZXM7ICsraikge1xuICAgICAgY29uc3Qgc2IgPSBieXRlQXJyYXlbcCArIGpdXG4gICAgICBzZXEgKz0gU0VRUkVUX0RFQ09ERVJbKHNiICYgMHhmMCkgPj4gNF1cbiAgICAgIGlmIChzZXEubGVuZ3RoIDwgdGhpcy5nZXQoJ3NlcV9sZW5ndGgnKSkgc2VxICs9IFNFUVJFVF9ERUNPREVSW3NiICYgMHgwZl1cbiAgICB9XG4gICAgcmV0dXJuIHNlcVxuICB9XG5cbiAgLy8gYWRhcHRlZCBmcm9tIGlndi5qc1xuICBnZXRQYWlyT3JpZW50YXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLmlzU2VnbWVudFVubWFwcGVkKCkgJiYgIXRoaXMuaXNNYXRlVW5tYXBwZWQoKSAmJiB0aGlzLl9yZWZJRCA9PT0gdGhpcy5fbmV4dF9yZWZpZCgpKSB7XG4gICAgICBjb25zdCBzMSA9IHRoaXMuaXNSZXZlcnNlQ29tcGxlbWVudGVkKCkgPyAnUicgOiAnRidcbiAgICAgIGNvbnN0IHMyID0gdGhpcy5pc01hdGVSZXZlcnNlQ29tcGxlbWVudGVkKCkgPyAnUicgOiAnRidcbiAgICAgIGxldCBvMSA9ICcgJ1xuICAgICAgbGV0IG8yID0gJyAnXG4gICAgICBpZiAodGhpcy5pc1JlYWQxKCkpIHtcbiAgICAgICAgbzEgPSAnMSdcbiAgICAgICAgbzIgPSAnMidcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1JlYWQyKCkpIHtcbiAgICAgICAgbzEgPSAnMidcbiAgICAgICAgbzIgPSAnMSdcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG1wID0gW11cbiAgICAgIGNvbnN0IGlzaXplID0gdGhpcy50ZW1wbGF0ZV9sZW5ndGgoKVxuICAgICAgaWYgKGlzaXplID4gMCkge1xuICAgICAgICB0bXBbMF0gPSBzMVxuICAgICAgICB0bXBbMV0gPSBvMVxuICAgICAgICB0bXBbMl0gPSBzMlxuICAgICAgICB0bXBbM10gPSBvMlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG1wWzJdID0gczFcbiAgICAgICAgdG1wWzNdID0gbzFcbiAgICAgICAgdG1wWzBdID0gczJcbiAgICAgICAgdG1wWzFdID0gbzJcbiAgICAgIH1cbiAgICAgIHJldHVybiB0bXAuam9pbignJylcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIF9iaW5fbXFfbmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnl0ZXMuYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHRoaXMuYnl0ZXMuc3RhcnQgKyAxMilcbiAgfVxuXG4gIF9mbGFnX25jKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMTYpXG4gIH1cblxuICBzZXFfbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMjApXG4gIH1cblxuICBfbmV4dF9yZWZpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ieXRlcy5ieXRlQXJyYXkucmVhZEludDMyTEUodGhpcy5ieXRlcy5zdGFydCArIDI0KVxuICB9XG5cbiAgX25leHRfcG9zKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMjgpXG4gIH1cblxuICB0ZW1wbGF0ZV9sZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnl0ZXMuYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHRoaXMuYnl0ZXMuc3RhcnQgKyAzMilcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgICBPYmplY3Qua2V5cyh0aGlzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgaWYgKGsuY2hhckF0KDApID09PSAnXycgfHwgayA9PT0gJ2J5dGVzJykgcmV0dXJuXG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGRhdGFba10gPSB0aGlzW2tdXG4gICAgfSlcblxuICAgIHJldHVybiBkYXRhXG4gIH1cbn1cbiJdfQ==

@@ -1,13 +0,44 @@

"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports, "__esModule", { value: true });exports.parseHeaderText = parseHeaderText;var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));function parseHeaderText(text) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.parseHeaderText = parseHeaderText;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
var _toArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toArray"));
function parseHeaderText(text) {
var lines = text.split(/\r?\n/);
var data = [];
lines.forEach(function (line) {var _line$split =
line.split(/\t/),_line$split2 = (0, _toArray2.default)(_line$split),tag = _line$split2[0],fields = _line$split2.slice(1);
var parsedFields = fields.map(function (f) {var _f$split =
f.split(':', 2),_f$split2 = (0, _slicedToArray2.default)(_f$split, 2),fieldTag = _f$split2[0],value = _f$split2[1];
return { tag: fieldTag, value: value };
lines.forEach(function (line) {
var _line$split = line.split(/\t/),
_line$split2 = (0, _toArray2.default)(_line$split),
tag = _line$split2[0],
fields = _line$split2.slice(1);
var parsedFields = fields.map(function (f) {
var _f$split = f.split(':', 2),
_f$split2 = (0, _slicedToArray2.default)(_f$split, 2),
fieldTag = _f$split2[0],
value = _f$split2[1];
return {
tag: fieldTag,
value: value
};
});
if (tag) data.push({ tag: tag.substr(1), data: parsedFields });
if (tag) data.push({
tag: tag.substr(1),
data: parsedFields
});
});
return data;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zYW0udHMiXSwibmFtZXMiOlsicGFyc2VIZWFkZXJUZXh0IiwidGV4dCIsImxpbmVzIiwic3BsaXQiLCJkYXRhIiwiZm9yRWFjaCIsImxpbmUiLCJ0YWciLCJmaWVsZHMiLCJwYXJzZWRGaWVsZHMiLCJtYXAiLCJmIiwiZmllbGRUYWciLCJ2YWx1ZSIsInB1c2giLCJzdWJzdHIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTQSxlQUFULENBQXlCQyxJQUF6QixFQUF1QztBQUM1QyxNQUFNQyxLQUFLLEdBQUdELElBQUksQ0FBQ0UsS0FBTCxDQUFXLE9BQVgsQ0FBZDtBQUNBLE1BQU1DLElBQStELEdBQUcsRUFBeEU7QUFDQUYsRUFBQUEsS0FBSyxDQUFDRyxPQUFOLENBQWMsVUFBQUMsSUFBSSxFQUFJO0FBQUEsc0JBQ0tBLElBQUksQ0FBQ0gsS0FBTCxDQUFXLElBQVgsQ0FETDtBQUFBO0FBQUEsUUFDYkksR0FEYTtBQUFBLFFBQ0xDLE1BREs7O0FBRXBCLFFBQU1DLFlBQVksR0FBR0QsTUFBTSxDQUFDRSxHQUFQLENBQVcsVUFBQUMsQ0FBQyxFQUFJO0FBQUEscUJBQ1RBLENBQUMsQ0FBQ1IsS0FBRixDQUFRLEdBQVIsRUFBYSxDQUFiLENBRFM7QUFBQTtBQUFBLFVBQzVCUyxRQUQ0QjtBQUFBLFVBQ2xCQyxLQURrQjs7QUFFbkMsYUFBTztBQUFFTixRQUFBQSxHQUFHLEVBQUVLLFFBQVA7QUFBaUJDLFFBQUFBLEtBQUssRUFBTEE7QUFBakIsT0FBUDtBQUNELEtBSG9CLENBQXJCO0FBSUEsUUFBSU4sR0FBSixFQUFTSCxJQUFJLENBQUNVLElBQUwsQ0FBVTtBQUFFUCxNQUFBQSxHQUFHLEVBQUVBLEdBQUcsQ0FBQ1EsTUFBSixDQUFXLENBQVgsQ0FBUDtBQUFzQlgsTUFBQUEsSUFBSSxFQUFFSztBQUE1QixLQUFWO0FBQ1YsR0FQRDtBQVFBLFNBQU9MLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBwYXJzZUhlYWRlclRleHQodGV4dDogc3RyaW5nKSB7XG4gIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgvXFxyP1xcbi8pXG4gIGNvbnN0IGRhdGE6IHsgdGFnOiBzdHJpbmc7IGRhdGE6IHsgdGFnOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdIH1bXSA9IFtdXG4gIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgY29uc3QgW3RhZywgLi4uZmllbGRzXSA9IGxpbmUuc3BsaXQoL1xcdC8pXG4gICAgY29uc3QgcGFyc2VkRmllbGRzID0gZmllbGRzLm1hcChmID0+IHtcbiAgICAgIGNvbnN0IFtmaWVsZFRhZywgdmFsdWVdID0gZi5zcGxpdCgnOicsIDIpXG4gICAgICByZXR1cm4geyB0YWc6IGZpZWxkVGFnLCB2YWx1ZSB9XG4gICAgfSlcbiAgICBpZiAodGFnKSBkYXRhLnB1c2goeyB0YWc6IHRhZy5zdWJzdHIoMSksIGRhdGE6IHBhcnNlZEZpZWxkcyB9KVxuICB9KVxuICByZXR1cm4gZGF0YVxufVxuIl19

@@ -1,4 +0,17 @@

"use strict";var _require = require('pako'),Inflate = _require.Inflate,Z_SYNC_FLUSH = _require.Z_SYNC_FLUSH;
"use strict";
function pakoUnzip(inputData) {
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.unzip = unzip;
exports.unzipChunk = unzipChunk;
var _pako = require("pako");
/* eslint-disable @typescript-eslint/ban-ts-ignore */
//@ts-ignore
function unzip(inputData) {
var strm;

@@ -9,10 +22,14 @@ var pos = 0;

var inflator;
do {
var remainingInput = inputData.slice(pos);
inflator = new Inflate();var _inflator =
inflator;strm = _inflator.strm;
inflator.push(remainingInput, Z_SYNC_FLUSH);
inflator = new _pako.Inflate() //@ts-ignore
;
var _inflator = inflator;
strm = _inflator.strm;
//@ts-ignore
inflator.push(remainingInput, _pako.Z_SYNC_FLUSH);
if (inflator.err) throw new Error(inflator.msg);
pos += strm.next_in; //@ts-ignore
pos += strm.next_in;
chunks[i] = Buffer.from(inflator.result);

@@ -23,9 +40,8 @@ i += 1;

var result = Buffer.concat(chunks);
return result;
}
// similar to pakounzip, except it does extra counting and
} // similar to pakounzip, except it does extra counting and
// trimming to make sure to return only exactly the data
// range specified in the chunk
function unzipChunk(inputData, chunk) {

@@ -37,8 +53,12 @@ var strm;

var fileStartingOffset = chunk.minv.blockPosition;
do {
var remainingInput = inputData.slice(pos);
inflator = new Inflate();var _inflator2 =
inflator;strm = _inflator2.strm;
inflator.push(remainingInput, Z_SYNC_FLUSH);
if (inflator.err) throw new Error(inflator.msg);
inflator = new _pako.Inflate() //@ts-ignore
;
var _inflator2 = inflator;
strm = _inflator2.strm;
//@ts-ignore
inflator.push(remainingInput, _pako.Z_SYNC_FLUSH);
if (inflator.err) throw new Error(inflator.msg); //@ts-ignore

@@ -49,6 +69,5 @@ decompressedBlocks.push(Buffer.from(inflator.result));

// this is the first chunk, trim it
decompressedBlocks[0] = decompressedBlocks[0].slice(
chunk.minv.dataPosition);
decompressedBlocks[0] = decompressedBlocks[0].slice(chunk.minv.dataPosition);
}
}
if (fileStartingOffset + pos >= chunk.maxv.blockPosition) {

@@ -58,13 +77,6 @@ // this is the last chunk, trim it and stop decompressing

// trimmed part of the slice length
decompressedBlocks[decompressedBlocks.length - 1] = decompressedBlocks[
decompressedBlocks.length - 1].
slice(
0,
chunk.maxv.blockPosition === chunk.minv.blockPosition ?
chunk.maxv.dataPosition - chunk.minv.dataPosition + 1 :
chunk.maxv.dataPosition + 1);
decompressedBlocks[decompressedBlocks.length - 1] = decompressedBlocks[decompressedBlocks.length - 1].slice(0, chunk.maxv.blockPosition === chunk.minv.blockPosition ? chunk.maxv.dataPosition - chunk.minv.dataPosition + 1 : chunk.maxv.dataPosition + 1);
break;
}
pos += strm.next_in;

@@ -76,5 +88,2 @@ } while (strm.avail_in);

}
module.exports = {
unzip: pakoUnzip,
unzipChunk: unzipChunk };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91bnppcC50cyJdLCJuYW1lcyI6WyJ1bnppcCIsImlucHV0RGF0YSIsInN0cm0iLCJwb3MiLCJpIiwiY2h1bmtzIiwiaW5mbGF0b3IiLCJyZW1haW5pbmdJbnB1dCIsInNsaWNlIiwiSW5mbGF0ZSIsInB1c2giLCJaX1NZTkNfRkxVU0giLCJlcnIiLCJFcnJvciIsIm1zZyIsIm5leHRfaW4iLCJCdWZmZXIiLCJmcm9tIiwicmVzdWx0IiwiYXZhaWxfaW4iLCJjb25jYXQiLCJ1bnppcENodW5rIiwiY2h1bmsiLCJkZWNvbXByZXNzZWRCbG9ja3MiLCJmaWxlU3RhcnRpbmdPZmZzZXQiLCJtaW52IiwiYmxvY2tQb3NpdGlvbiIsImxlbmd0aCIsImRhdGFQb3NpdGlvbiIsIm1heHYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBRkE7QUFDQTtBQUlPLFNBQVNBLEtBQVQsQ0FBZUMsU0FBZixFQUFrQztBQUN2QyxNQUFJQyxJQUFKO0FBQ0EsTUFBSUMsR0FBRyxHQUFHLENBQVY7QUFDQSxNQUFJQyxDQUFDLEdBQUcsQ0FBUjtBQUNBLE1BQU1DLE1BQU0sR0FBRyxFQUFmO0FBQ0EsTUFBSUMsUUFBSjs7QUFDQSxLQUFHO0FBQ0QsUUFBTUMsY0FBYyxHQUFHTixTQUFTLENBQUNPLEtBQVYsQ0FBZ0JMLEdBQWhCLENBQXZCO0FBQ0FHLElBQUFBLFFBQVEsR0FBRyxJQUFJRyxhQUFKLEVBQVgsQ0FDQTtBQURBO0FBRkMsb0JBSVlILFFBSlo7QUFJR0osSUFBQUEsSUFKSCxhQUlHQSxJQUpIO0FBS0Q7QUFDQUksSUFBQUEsUUFBUSxDQUFDSSxJQUFULENBQWNILGNBQWQsRUFBOEJJLGtCQUE5QjtBQUNBLFFBQUlMLFFBQVEsQ0FBQ00sR0FBYixFQUFrQixNQUFNLElBQUlDLEtBQUosQ0FBVVAsUUFBUSxDQUFDUSxHQUFuQixDQUFOO0FBRWxCWCxJQUFBQSxHQUFHLElBQUlELElBQUksQ0FBQ2EsT0FBWixDQVRDLENBVUQ7O0FBQ0FWLElBQUFBLE1BQU0sQ0FBQ0QsQ0FBRCxDQUFOLEdBQVlZLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZWCxRQUFRLENBQUNZLE1BQXJCLENBQVo7QUFDQWQsSUFBQUEsQ0FBQyxJQUFJLENBQUw7QUFDRCxHQWJELFFBYVNGLElBQUksQ0FBQ2lCLFFBYmQ7O0FBZUEsTUFBTUQsTUFBTSxHQUFHRixNQUFNLENBQUNJLE1BQVAsQ0FBY2YsTUFBZCxDQUFmO0FBRUEsU0FBT2EsTUFBUDtBQUNELEMsQ0FFRDtBQUNBO0FBQ0E7OztBQUNPLFNBQVNHLFVBQVQsQ0FBb0JwQixTQUFwQixFQUF1Q3FCLEtBQXZDLEVBQXFEO0FBQzFELE1BQUlwQixJQUFKO0FBQ0EsTUFBSUMsR0FBRyxHQUFHLENBQVY7QUFDQSxNQUFNb0Isa0JBQWtCLEdBQUcsRUFBM0I7QUFDQSxNQUFJakIsUUFBSjtBQUNBLE1BQU1rQixrQkFBa0IsR0FBR0YsS0FBSyxDQUFDRyxJQUFOLENBQVdDLGFBQXRDOztBQUNBLEtBQUc7QUFDRCxRQUFNbkIsY0FBYyxHQUFHTixTQUFTLENBQUNPLEtBQVYsQ0FBZ0JMLEdBQWhCLENBQXZCO0FBQ0FHLElBQUFBLFFBQVEsR0FBRyxJQUFJRyxhQUFKLEVBQVgsQ0FDQTtBQURBO0FBRkMscUJBSVlILFFBSlo7QUFJR0osSUFBQUEsSUFKSCxjQUlHQSxJQUpIO0FBS0Q7QUFDQUksSUFBQUEsUUFBUSxDQUFDSSxJQUFULENBQWNILGNBQWQsRUFBOEJJLGtCQUE5QjtBQUNBLFFBQUlMLFFBQVEsQ0FBQ00sR0FBYixFQUFrQixNQUFNLElBQUlDLEtBQUosQ0FBVVAsUUFBUSxDQUFDUSxHQUFuQixDQUFOLENBUGpCLENBU0Q7O0FBQ0FTLElBQUFBLGtCQUFrQixDQUFDYixJQUFuQixDQUF3Qk0sTUFBTSxDQUFDQyxJQUFQLENBQVlYLFFBQVEsQ0FBQ1ksTUFBckIsQ0FBeEI7O0FBRUEsUUFBSUssa0JBQWtCLENBQUNJLE1BQW5CLEtBQThCLENBQTlCLElBQW1DTCxLQUFLLENBQUNHLElBQU4sQ0FBV0csWUFBbEQsRUFBZ0U7QUFDOUQ7QUFDQUwsTUFBQUEsa0JBQWtCLENBQUMsQ0FBRCxDQUFsQixHQUF3QkEsa0JBQWtCLENBQUMsQ0FBRCxDQUFsQixDQUFzQmYsS0FBdEIsQ0FBNEJjLEtBQUssQ0FBQ0csSUFBTixDQUFXRyxZQUF2QyxDQUF4QjtBQUNEOztBQUNELFFBQUlKLGtCQUFrQixHQUFHckIsR0FBckIsSUFBNEJtQixLQUFLLENBQUNPLElBQU4sQ0FBV0gsYUFBM0MsRUFBMEQ7QUFDeEQ7QUFDQTtBQUNBO0FBRUFILE1BQUFBLGtCQUFrQixDQUFDQSxrQkFBa0IsQ0FBQ0ksTUFBbkIsR0FBNEIsQ0FBN0IsQ0FBbEIsR0FBb0RKLGtCQUFrQixDQUFDQSxrQkFBa0IsQ0FBQ0ksTUFBbkIsR0FBNEIsQ0FBN0IsQ0FBbEIsQ0FBa0RuQixLQUFsRCxDQUNsRCxDQURrRCxFQUVsRGMsS0FBSyxDQUFDTyxJQUFOLENBQVdILGFBQVgsS0FBNkJKLEtBQUssQ0FBQ0csSUFBTixDQUFXQyxhQUF4QyxHQUNJSixLQUFLLENBQUNPLElBQU4sQ0FBV0QsWUFBWCxHQUEwQk4sS0FBSyxDQUFDRyxJQUFOLENBQVdHLFlBQXJDLEdBQW9ELENBRHhELEdBRUlOLEtBQUssQ0FBQ08sSUFBTixDQUFXRCxZQUFYLEdBQTBCLENBSm9CLENBQXBEO0FBTUE7QUFDRDs7QUFDRHpCLElBQUFBLEdBQUcsSUFBSUQsSUFBSSxDQUFDYSxPQUFaO0FBQ0QsR0E5QkQsUUE4QlNiLElBQUksQ0FBQ2lCLFFBOUJkOztBQWdDQSxNQUFNRCxNQUFNLEdBQUdGLE1BQU0sQ0FBQ0ksTUFBUCxDQUFjRyxrQkFBZCxDQUFmO0FBQ0EsU0FBT0wsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1pZ25vcmUgKi9cbi8vQHRzLWlnbm9yZVxuaW1wb3J0IHsgSW5mbGF0ZSwgWl9TWU5DX0ZMVVNIIH0gZnJvbSAncGFrbydcbmltcG9ydCBDaHVuayBmcm9tICcuL2NodW5rJ1xuXG5leHBvcnQgZnVuY3Rpb24gdW56aXAoaW5wdXREYXRhOiBCdWZmZXIpIHtcbiAgbGV0IHN0cm1cbiAgbGV0IHBvcyA9IDBcbiAgbGV0IGkgPSAwXG4gIGNvbnN0IGNodW5rcyA9IFtdXG4gIGxldCBpbmZsYXRvclxuICBkbyB7XG4gICAgY29uc3QgcmVtYWluaW5nSW5wdXQgPSBpbnB1dERhdGEuc2xpY2UocG9zKVxuICAgIGluZmxhdG9yID0gbmV3IEluZmxhdGUoKVxuICAgIC8vQHRzLWlnbm9yZVxuICAgIDsoeyBzdHJtIH0gPSBpbmZsYXRvcilcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpbmZsYXRvci5wdXNoKHJlbWFpbmluZ0lucHV0LCBaX1NZTkNfRkxVU0gpXG4gICAgaWYgKGluZmxhdG9yLmVycikgdGhyb3cgbmV3IEVycm9yKGluZmxhdG9yLm1zZylcblxuICAgIHBvcyArPSBzdHJtLm5leHRfaW5cbiAgICAvL0B0cy1pZ25vcmVcbiAgICBjaHVua3NbaV0gPSBCdWZmZXIuZnJvbShpbmZsYXRvci5yZXN1bHQpXG4gICAgaSArPSAxXG4gIH0gd2hpbGUgKHN0cm0uYXZhaWxfaW4pXG5cbiAgY29uc3QgcmVzdWx0ID0gQnVmZmVyLmNvbmNhdChjaHVua3MpXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBzaW1pbGFyIHRvIHBha291bnppcCwgZXhjZXB0IGl0IGRvZXMgZXh0cmEgY291bnRpbmcgYW5kXG4vLyB0cmltbWluZyB0byBtYWtlIHN1cmUgdG8gcmV0dXJuIG9ubHkgZXhhY3RseSB0aGUgZGF0YVxuLy8gcmFuZ2Ugc3BlY2lmaWVkIGluIHRoZSBjaHVua1xuZXhwb3J0IGZ1bmN0aW9uIHVuemlwQ2h1bmsoaW5wdXREYXRhOiBCdWZmZXIsIGNodW5rOiBDaHVuaykge1xuICBsZXQgc3RybVxuICBsZXQgcG9zID0gMFxuICBjb25zdCBkZWNvbXByZXNzZWRCbG9ja3MgPSBbXVxuICBsZXQgaW5mbGF0b3JcbiAgY29uc3QgZmlsZVN0YXJ0aW5nT2Zmc2V0ID0gY2h1bmsubWludi5ibG9ja1Bvc2l0aW9uXG4gIGRvIHtcbiAgICBjb25zdCByZW1haW5pbmdJbnB1dCA9IGlucHV0RGF0YS5zbGljZShwb3MpXG4gICAgaW5mbGF0b3IgPSBuZXcgSW5mbGF0ZSgpXG4gICAgLy9AdHMtaWdub3JlXG4gICAgOyh7IHN0cm0gfSA9IGluZmxhdG9yKVxuICAgIC8vQHRzLWlnbm9yZVxuICAgIGluZmxhdG9yLnB1c2gocmVtYWluaW5nSW5wdXQsIFpfU1lOQ19GTFVTSClcbiAgICBpZiAoaW5mbGF0b3IuZXJyKSB0aHJvdyBuZXcgRXJyb3IoaW5mbGF0b3IubXNnKVxuXG4gICAgLy9AdHMtaWdub3JlXG4gICAgZGVjb21wcmVzc2VkQmxvY2tzLnB1c2goQnVmZmVyLmZyb20oaW5mbGF0b3IucmVzdWx0KSlcblxuICAgIGlmIChkZWNvbXByZXNzZWRCbG9ja3MubGVuZ3RoID09PSAxICYmIGNodW5rLm1pbnYuZGF0YVBvc2l0aW9uKSB7XG4gICAgICAvLyB0aGlzIGlzIHRoZSBmaXJzdCBjaHVuaywgdHJpbSBpdFxuICAgICAgZGVjb21wcmVzc2VkQmxvY2tzWzBdID0gZGVjb21wcmVzc2VkQmxvY2tzWzBdLnNsaWNlKGNodW5rLm1pbnYuZGF0YVBvc2l0aW9uKVxuICAgIH1cbiAgICBpZiAoZmlsZVN0YXJ0aW5nT2Zmc2V0ICsgcG9zID49IGNodW5rLm1heHYuYmxvY2tQb3NpdGlvbikge1xuICAgICAgLy8gdGhpcyBpcyB0aGUgbGFzdCBjaHVuaywgdHJpbSBpdCBhbmQgc3RvcCBkZWNvbXByZXNzaW5nXG4gICAgICAvLyBub3RlIGlmIGl0IGlzIHRoZSBzYW1lIGJsb2NrIGlzIG1pbnYgaXQgc3VidHJhY3RzIHRoYXQgYWxyZWFkeVxuICAgICAgLy8gdHJpbW1lZCBwYXJ0IG9mIHRoZSBzbGljZSBsZW5ndGhcblxuICAgICAgZGVjb21wcmVzc2VkQmxvY2tzW2RlY29tcHJlc3NlZEJsb2Nrcy5sZW5ndGggLSAxXSA9IGRlY29tcHJlc3NlZEJsb2Nrc1tkZWNvbXByZXNzZWRCbG9ja3MubGVuZ3RoIC0gMV0uc2xpY2UoXG4gICAgICAgIDAsXG4gICAgICAgIGNodW5rLm1heHYuYmxvY2tQb3NpdGlvbiA9PT0gY2h1bmsubWludi5ibG9ja1Bvc2l0aW9uXG4gICAgICAgICAgPyBjaHVuay5tYXh2LmRhdGFQb3NpdGlvbiAtIGNodW5rLm1pbnYuZGF0YVBvc2l0aW9uICsgMVxuICAgICAgICAgIDogY2h1bmsubWF4di5kYXRhUG9zaXRpb24gKyAxLFxuICAgICAgKVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgcG9zICs9IHN0cm0ubmV4dF9pblxuICB9IHdoaWxlIChzdHJtLmF2YWlsX2luKVxuXG4gIGNvbnN0IHJlc3VsdCA9IEJ1ZmZlci5jb25jYXQoZGVjb21wcmVzc2VkQmxvY2tzKVxuICByZXR1cm4gcmVzdWx0XG59XG4iXX0=

@@ -1,22 +0,46 @@

"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));function longToNumber(long) {
if (
long.greaterThan(Number.MAX_SAFE_INTEGER) ||
long.lessThan(Number.MIN_SAFE_INTEGER))
{
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.longToNumber = longToNumber;
exports.checkAbortSignal = checkAbortSignal;
exports.abortBreakPoint = abortBreakPoint;
exports.canMergeBlocks = canMergeBlocks;
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
var _minSafeInteger = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/min-safe-integer"));
var _maxSafeInteger = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/max-safe-integer"));
function longToNumber(long) {
if (long.greaterThan(_maxSafeInteger.default) || long.lessThan(_minSafeInteger.default)) {
throw new Error('integer overflow');
}
return long.toNumber();
}
/**
* Properly check if the given AbortSignal is aborted.
* Per the standard, if the signal reads as aborted,
* this function throws either a DOMException AbortError, or a regular error
* with a `code` attribute set to `ERR_ABORTED`.
*
* For convenience, passing `undefined` is a no-op
*
* @param {AbortSignal} [signal] an AbortSignal, or anything with an `aborted` attribute
* @returns nothing
*/
/**
* Properly check if the given AbortSignal is aborted.
* Per the standard, if the signal reads as aborted,
* this function throws either a DOMException AbortError, or a regular error
* with a `code` attribute set to `ERR_ABORTED`.
*
* For convenience, passing `undefined` is a no-op
*
* @param {AbortSignal} [signal] an AbortSignal, or anything with an `aborted` attribute
* @returns nothing
*/
function checkAbortSignal(signal) {

@@ -27,7 +51,7 @@ if (!signal) return;

// console.log('bam aborted!')
if (typeof DOMException !== 'undefined')
// eslint-disable-next-line no-undef
throw new DOMException('aborted', 'AbortError');else
{
var e = new Error('aborted');
if (typeof DOMException !== 'undefined') // eslint-disable-next-line no-undef
throw new DOMException('aborted', 'AbortError');else {
var e = new Error('aborted'); // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
//@ts-ignore
e.code = 'ERR_ABORTED';

@@ -38,26 +62,41 @@ throw e;

}
/**
* Skips to the next tick, then runs `checkAbortSignal`.
* Await this to inside an otherwise synchronous loop to
* provide a place to break when an abort signal is received.
* @param {AbortSignal} signal
*/function
abortBreakPoint(_x) {return _abortBreakPoint.apply(this, arguments);}function _abortBreakPoint() {_abortBreakPoint = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(signal) {return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return (
Promise.resolve());case 2:
checkAbortSignal(signal);case 3:case "end":return _context.stop();}}}, _callee);}));return _abortBreakPoint.apply(this, arguments);}
* Skips to the next tick, then runs `checkAbortSignal`.
* Await this to inside an otherwise synchronous loop to
* provide a place to break when an abort signal is received.
* @param {AbortSignal} signal
*/
function canMergeBlocks(block1, block2) {
return (
block1.minv.blockPosition === block1.maxv.blockPosition &&
block1.maxv.blockPosition === block2.minv.blockPosition &&
block2.minv.blockPosition === block2.maxv.blockPosition);
function abortBreakPoint(_x) {
return _abortBreakPoint.apply(this, arguments);
}
function _abortBreakPoint() {
_abortBreakPoint = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(signal) {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _promise.default.resolve();
case 2:
checkAbortSignal(signal);
case 3:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _abortBreakPoint.apply(this, arguments);
}
module.exports = {
longToNumber: longToNumber,
checkAbortSignal: checkAbortSignal,
abortBreakPoint: abortBreakPoint,
canMergeBlocks: canMergeBlocks };
function canMergeBlocks(block1, block2) {
return block1.minv.blockPosition === block1.maxv.blockPosition && block1.maxv.blockPosition === block2.minv.blockPosition && block2.minv.blockPosition === block2.maxv.blockPosition;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbImxvbmdUb051bWJlciIsImxvbmciLCJncmVhdGVyVGhhbiIsImxlc3NUaGFuIiwiRXJyb3IiLCJ0b051bWJlciIsImNoZWNrQWJvcnRTaWduYWwiLCJzaWduYWwiLCJhYm9ydGVkIiwiRE9NRXhjZXB0aW9uIiwiZSIsImNvZGUiLCJhYm9ydEJyZWFrUG9pbnQiLCJyZXNvbHZlIiwiY2FuTWVyZ2VCbG9ja3MiLCJibG9jazEiLCJibG9jazIiLCJtaW52IiwiYmxvY2tQb3NpdGlvbiIsIm1heHYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTyxTQUFTQSxZQUFULENBQXNCQyxJQUF0QixFQUFrQztBQUN2QyxNQUFJQSxJQUFJLENBQUNDLFdBQUwsNkJBQTZDRCxJQUFJLENBQUNFLFFBQUwseUJBQWpELEVBQXlGO0FBQ3ZGLFVBQU0sSUFBSUMsS0FBSixDQUFVLGtCQUFWLENBQU47QUFDRDs7QUFDRCxTQUFPSCxJQUFJLENBQUNJLFFBQUwsRUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7QUFXTyxTQUFTQyxnQkFBVCxDQUEwQkMsTUFBMUIsRUFBZ0Q7QUFDckQsTUFBSSxDQUFDQSxNQUFMLEVBQWE7O0FBRWIsTUFBSUEsTUFBTSxDQUFDQyxPQUFYLEVBQW9CO0FBQ2xCO0FBQ0EsUUFBSSxPQUFPQyxZQUFQLEtBQXdCLFdBQTVCLEVBQ0U7QUFDQSxZQUFNLElBQUlBLFlBQUosQ0FBaUIsU0FBakIsRUFBNEIsWUFBNUIsQ0FBTixDQUZGLEtBR0s7QUFDSCxVQUFNQyxDQUFDLEdBQUcsSUFBSU4sS0FBSixDQUFVLFNBQVYsQ0FBVixDQURHLENBRUg7QUFDQTs7QUFDQU0sTUFBQUEsQ0FBQyxDQUFDQyxJQUFGLEdBQVMsYUFBVDtBQUNBLFlBQU1ELENBQU47QUFDRDtBQUNGO0FBQ0Y7QUFFRDs7Ozs7Ozs7U0FNc0JFLGU7Ozs7Ozs7NEJBQWYsaUJBQStCTCxNQUEvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFDQyxpQkFBUU0sT0FBUixFQUREOztBQUFBO0FBRUxQLFlBQUFBLGdCQUFnQixDQUFDQyxNQUFELENBQWhCOztBQUZLO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEc7Ozs7QUFLQSxTQUFTTyxjQUFULENBQXdCQyxNQUF4QixFQUF1Q0MsTUFBdkMsRUFBc0Q7QUFDM0QsU0FDRUQsTUFBTSxDQUFDRSxJQUFQLENBQVlDLGFBQVosS0FBOEJILE1BQU0sQ0FBQ0ksSUFBUCxDQUFZRCxhQUExQyxJQUNBSCxNQUFNLENBQUNJLElBQVAsQ0FBWUQsYUFBWixLQUE4QkYsTUFBTSxDQUFDQyxJQUFQLENBQVlDLGFBRDFDLElBRUFGLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZQyxhQUFaLEtBQThCRixNQUFNLENBQUNHLElBQVAsQ0FBWUQsYUFINUM7QUFLRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDaHVuayBmcm9tICcuL2NodW5rJ1xuZXhwb3J0IGZ1bmN0aW9uIGxvbmdUb051bWJlcihsb25nOiBMb25nKSB7XG4gIGlmIChsb25nLmdyZWF0ZXJUaGFuKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB8fCBsb25nLmxlc3NUaGFuKE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW50ZWdlciBvdmVyZmxvdycpXG4gIH1cbiAgcmV0dXJuIGxvbmcudG9OdW1iZXIoKVxufVxuXG4vKipcbiAqIFByb3Blcmx5IGNoZWNrIGlmIHRoZSBnaXZlbiBBYm9ydFNpZ25hbCBpcyBhYm9ydGVkLlxuICogUGVyIHRoZSBzdGFuZGFyZCwgaWYgdGhlIHNpZ25hbCByZWFkcyBhcyBhYm9ydGVkLFxuICogdGhpcyBmdW5jdGlvbiB0aHJvd3MgZWl0aGVyIGEgRE9NRXhjZXB0aW9uIEFib3J0RXJyb3IsIG9yIGEgcmVndWxhciBlcnJvclxuICogd2l0aCBhIGBjb2RlYCBhdHRyaWJ1dGUgc2V0IHRvIGBFUlJfQUJPUlRFRGAuXG4gKlxuICogRm9yIGNvbnZlbmllbmNlLCBwYXNzaW5nIGB1bmRlZmluZWRgIGlzIGEgbm8tb3BcbiAqXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbc2lnbmFsXSBhbiBBYm9ydFNpZ25hbCwgb3IgYW55dGhpbmcgd2l0aCBhbiBgYWJvcnRlZGAgYXR0cmlidXRlXG4gKiBAcmV0dXJucyBub3RoaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0Fib3J0U2lnbmFsKHNpZ25hbD86IEFib3J0U2lnbmFsKSB7XG4gIGlmICghc2lnbmFsKSByZXR1cm5cblxuICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnYmFtIGFib3J0ZWQhJylcbiAgICBpZiAodHlwZW9mIERPTUV4Y2VwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIG5vLXVuZGVmXG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdhYm9ydGVkJywgJ0Fib3J0RXJyb3InKVxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgZSA9IG5ldyBFcnJvcignYWJvcnRlZCcpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtaWdub3JlXG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGUuY29kZSA9ICdFUlJfQUJPUlRFRCdcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTa2lwcyB0byB0aGUgbmV4dCB0aWNrLCB0aGVuIHJ1bnMgYGNoZWNrQWJvcnRTaWduYWxgLlxuICogQXdhaXQgdGhpcyB0byBpbnNpZGUgYW4gb3RoZXJ3aXNlIHN5bmNocm9ub3VzIGxvb3AgdG9cbiAqIHByb3ZpZGUgYSBwbGFjZSB0byBicmVhayB3aGVuIGFuIGFib3J0IHNpZ25hbCBpcyByZWNlaXZlZC5cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IHNpZ25hbFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWJvcnRCcmVha1BvaW50KHNpZ25hbD86IEFib3J0U2lnbmFsKSB7XG4gIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpXG4gIGNoZWNrQWJvcnRTaWduYWwoc2lnbmFsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuTWVyZ2VCbG9ja3MoYmxvY2sxOiBDaHVuaywgYmxvY2syOiBDaHVuaykge1xuICByZXR1cm4gKFxuICAgIGJsb2NrMS5taW52LmJsb2NrUG9zaXRpb24gPT09IGJsb2NrMS5tYXh2LmJsb2NrUG9zaXRpb24gJiZcbiAgICBibG9jazEubWF4di5ibG9ja1Bvc2l0aW9uID09PSBibG9jazIubWludi5ibG9ja1Bvc2l0aW9uICYmXG4gICAgYmxvY2syLm1pbnYuYmxvY2tQb3NpdGlvbiA9PT0gYmxvY2syLm1heHYuYmxvY2tQb3NpdGlvblxuICApXG59XG4iXX0=

@@ -1,40 +0,70 @@

"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports, "__esModule", { value: true });exports.fromBytes = fromBytes;exports.VirtualOffset = void 0;var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));var VirtualOffset = /*#__PURE__*/function () {
function VirtualOffset(blockPosition, dataPosition) {(0, _classCallCheck2.default)(this, VirtualOffset);
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.fromBytes = fromBytes;
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
var VirtualOffset =
/*#__PURE__*/
function () {
function VirtualOffset(blockPosition, dataPosition) {
(0, _classCallCheck2.default)(this, VirtualOffset);
(0, _defineProperty2.default)(this, "blockPosition", void 0);
(0, _defineProperty2.default)(this, "dataPosition", void 0);
this.blockPosition = blockPosition; // < offset of the compressed data block
this.dataPosition = dataPosition; // < offset into the uncompressed data
}(0, _createClass2.default)(VirtualOffset, [{ key: "toString", value: function toString()
}
{
(0, _createClass2.default)(VirtualOffset, [{
key: "toString",
value: function toString() {
return "".concat(this.blockPosition, ":").concat(this.dataPosition);
} }, { key: "compareTo", value: function compareTo(
}
}, {
key: "compareTo",
value: function compareTo(b) {
return this.blockPosition - b.blockPosition || this.dataPosition - b.dataPosition;
}
}], [{
key: "min",
value: function min() {
var min;
var i = 0;
b) {
return (
this.blockPosition - b.blockPosition || this.dataPosition - b.dataPosition);
for (; !min; i += 1) {
min = i < 0 || arguments.length <= i ? undefined : arguments[i];
}
} }], [{ key: "min", value: function min()
{
var min;
var i = 0;
for (; !min; i += 1) {min = i < 0 || arguments.length <= i ? undefined : arguments[i];}
for (; i < arguments.length; i += 1) {
if (min.compareTo(i < 0 || arguments.length <= i ? undefined : arguments[i]) > 0) min = i < 0 || arguments.length <= i ? undefined : arguments[i];
}
return min;
} }]);return VirtualOffset;}();exports.VirtualOffset = VirtualOffset;
}
}]);
return VirtualOffset;
}();
function fromBytes(bytes) {var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;var bigendian = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (bigendian)
throw new Error('big-endian virtual file offsets not implemented');
exports.default = VirtualOffset;
return new VirtualOffset(
bytes[offset + 7] * 0x10000000000 +
bytes[offset + 6] * 0x100000000 +
bytes[offset + 5] * 0x1000000 +
bytes[offset + 4] * 0x10000 +
bytes[offset + 3] * 0x100 +
bytes[offset + 2],
bytes[offset + 1] << 8 | bytes[offset]);
}
function fromBytes(bytes) {
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var bigendian = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (bigendian) throw new Error('big-endian virtual file offsets not implemented');
return new VirtualOffset(bytes[offset + 7] * 0x10000000000 + bytes[offset + 6] * 0x100000000 + bytes[offset + 5] * 0x1000000 + bytes[offset + 4] * 0x10000 + bytes[offset + 3] * 0x100 + bytes[offset + 2], bytes[offset + 1] << 8 | bytes[offset]);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92aXJ0dWFsT2Zmc2V0LnRzIl0sIm5hbWVzIjpbIlZpcnR1YWxPZmZzZXQiLCJibG9ja1Bvc2l0aW9uIiwiZGF0YVBvc2l0aW9uIiwiYiIsIm1pbiIsImkiLCJsZW5ndGgiLCJjb21wYXJlVG8iLCJmcm9tQnl0ZXMiLCJieXRlcyIsIm9mZnNldCIsImJpZ2VuZGlhbiIsIkVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQXFCQSxhOzs7QUFHbkIseUJBQVlDLGFBQVosRUFBbUNDLFlBQW5DLEVBQXlEO0FBQUE7QUFBQTtBQUFBO0FBQ3ZELFNBQUtELGFBQUwsR0FBcUJBLGFBQXJCLENBRHVELENBQ3BCOztBQUNuQyxTQUFLQyxZQUFMLEdBQW9CQSxZQUFwQixDQUZ1RCxDQUV0QjtBQUNsQzs7OzsrQkFFVTtBQUNULHVCQUFVLEtBQUtELGFBQWYsY0FBZ0MsS0FBS0MsWUFBckM7QUFDRDs7OzhCQUVTQyxDLEVBQWtCO0FBQzFCLGFBQU8sS0FBS0YsYUFBTCxHQUFxQkUsQ0FBQyxDQUFDRixhQUF2QixJQUF3QyxLQUFLQyxZQUFMLEdBQW9CQyxDQUFDLENBQUNELFlBQXJFO0FBQ0Q7OzswQkFFb0M7QUFDbkMsVUFBSUUsR0FBSjtBQUNBLFVBQUlDLENBQUMsR0FBRyxDQUFSOztBQUNBLGFBQU8sQ0FBQ0QsR0FBUixFQUFhQyxDQUFDLElBQUksQ0FBbEI7QUFBcUJELFFBQUFBLEdBQUcsR0FBUUMsQ0FBUiw0QkFBUUEsQ0FBUix5QkFBUUEsQ0FBUixDQUFIO0FBQXJCOztBQUNBLGFBQU9BLENBQUMsR0FBRyxVQUFLQyxNQUFoQixFQUF3QkQsQ0FBQyxJQUFJLENBQTdCLEVBQWdDO0FBQzlCLFlBQUlELEdBQUcsQ0FBQ0csU0FBSixDQUFtQkYsQ0FBbkIsNEJBQW1CQSxDQUFuQix5QkFBbUJBLENBQW5CLEtBQXlCLENBQTdCLEVBQWdDRCxHQUFHLEdBQVFDLENBQVIsNEJBQVFBLENBQVIseUJBQVFBLENBQVIsQ0FBSDtBQUNqQzs7QUFDRCxhQUFPRCxHQUFQO0FBQ0Q7Ozs7Ozs7QUFFSSxTQUFTSSxTQUFULENBQW1CQyxLQUFuQixFQUFpRTtBQUFBLE1BQS9CQyxNQUErQix1RUFBdEIsQ0FBc0I7QUFBQSxNQUFuQkMsU0FBbUIsdUVBQVAsS0FBTztBQUN0RSxNQUFJQSxTQUFKLEVBQWUsTUFBTSxJQUFJQyxLQUFKLENBQVUsaURBQVYsQ0FBTjtBQUVmLFNBQU8sSUFBSVosYUFBSixDQUNMUyxLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFWLENBQUwsR0FBb0IsYUFBcEIsR0FDRUQsS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBVixDQUFMLEdBQW9CLFdBRHRCLEdBRUVELEtBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQVYsQ0FBTCxHQUFvQixTQUZ0QixHQUdFRCxLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFWLENBQUwsR0FBb0IsT0FIdEIsR0FJRUQsS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBVixDQUFMLEdBQW9CLEtBSnRCLEdBS0VELEtBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQVYsQ0FORixFQU9KRCxLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFWLENBQUwsSUFBcUIsQ0FBdEIsR0FBMkJELEtBQUssQ0FBQ0MsTUFBRCxDQVAzQixDQUFQO0FBU0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBWaXJ0dWFsT2Zmc2V0IHtcbiAgcHVibGljIGJsb2NrUG9zaXRpb246IG51bWJlclxuICBwdWJsaWMgZGF0YVBvc2l0aW9uOiBudW1iZXJcbiAgY29uc3RydWN0b3IoYmxvY2tQb3NpdGlvbjogbnVtYmVyLCBkYXRhUG9zaXRpb246IG51bWJlcikge1xuICAgIHRoaXMuYmxvY2tQb3NpdGlvbiA9IGJsb2NrUG9zaXRpb24gLy8gPCBvZmZzZXQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBibG9ja1xuICAgIHRoaXMuZGF0YVBvc2l0aW9uID0gZGF0YVBvc2l0aW9uIC8vIDwgb2Zmc2V0IGludG8gdGhlIHVuY29tcHJlc3NlZCBkYXRhXG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ibG9ja1Bvc2l0aW9ufToke3RoaXMuZGF0YVBvc2l0aW9ufWBcbiAgfVxuXG4gIGNvbXBhcmVUbyhiOiBWaXJ0dWFsT2Zmc2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tQb3NpdGlvbiAtIGIuYmxvY2tQb3NpdGlvbiB8fCB0aGlzLmRhdGFQb3NpdGlvbiAtIGIuZGF0YVBvc2l0aW9uXG4gIH1cblxuICBzdGF0aWMgbWluKC4uLmFyZ3M6IFZpcnR1YWxPZmZzZXRbXSkge1xuICAgIGxldCBtaW5cbiAgICBsZXQgaSA9IDBcbiAgICBmb3IgKDsgIW1pbjsgaSArPSAxKSBtaW4gPSBhcmdzW2ldXG4gICAgZm9yICg7IGkgPCBhcmdzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAobWluLmNvbXBhcmVUbyhhcmdzW2ldKSA+IDApIG1pbiA9IGFyZ3NbaV1cbiAgICB9XG4gICAgcmV0dXJuIG1pblxuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZnJvbUJ5dGVzKGJ5dGVzOiBCdWZmZXIsIG9mZnNldCA9IDAsIGJpZ2VuZGlhbiA9IGZhbHNlKSB7XG4gIGlmIChiaWdlbmRpYW4pIHRocm93IG5ldyBFcnJvcignYmlnLWVuZGlhbiB2aXJ0dWFsIGZpbGUgb2Zmc2V0cyBub3QgaW1wbGVtZW50ZWQnKVxuXG4gIHJldHVybiBuZXcgVmlydHVhbE9mZnNldChcbiAgICBieXRlc1tvZmZzZXQgKyA3XSAqIDB4MTAwMDAwMDAwMDAgK1xuICAgICAgYnl0ZXNbb2Zmc2V0ICsgNl0gKiAweDEwMDAwMDAwMCArXG4gICAgICBieXRlc1tvZmZzZXQgKyA1XSAqIDB4MTAwMDAwMCArXG4gICAgICBieXRlc1tvZmZzZXQgKyA0XSAqIDB4MTAwMDAgK1xuICAgICAgYnl0ZXNbb2Zmc2V0ICsgM10gKiAweDEwMCArXG4gICAgICBieXRlc1tvZmZzZXQgKyAyXSxcbiAgICAoYnl0ZXNbb2Zmc2V0ICsgMV0gPDwgOCkgfCBieXRlc1tvZmZzZXRdLFxuICApXG59XG4iXX0=
{
"name": "@gmod/bam",
"version": "1.0.22",
"version": "1.0.24",
"description": "Parser for BAM and BAM index (bai) files",

@@ -22,6 +22,8 @@ "license": "MIT",

"coverage": "npm test -- --coverage",
"lint": "eslint src test",
"lint": "eslint --ext .js,.ts src test",
"clean": "rimraf dist",
"prebuild": "npm run clean && npm run lint",
"build": "babel src -d dist",
"build:types": "tsc --emitDeclarationOnly",
"build:js": "babel src --out-dir dist --extensions \".ts,.tsx\" --source-maps inline",
"build": "npm run build:types && npm run build:js",
"preversion": "npm run lint && npm test && npm run build",

@@ -41,3 +43,6 @@ "version": "standard-changelog && git add CHANGELOG.md",

"dependencies": {
"@babel/runtime": "^7.4.3",
"@babel/runtime-corejs2": "^7.5.5",
"@types/long": "^4.0.0",
"@types/node": "^12.7.8",
"@types/pako": "^1.0.1",
"abortable-promise-cache": "^1.0.1",

@@ -50,3 +55,3 @@ "cross-fetch": "^3.0.2",

"pako": "^1.0.10",
"quick-lru": "^2.0.0"
"quick-lru": "2"
},

@@ -56,4 +61,8 @@ "devDependencies": {

"@babel/core": "^7.3.3",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/plugin-transform-runtime": "^7.2.0",
"@babel/preset-env": "^7.3.1",
"@babel/preset-typescript": "^7.6.0",
"@typescript-eslint/eslint-plugin": "^2.3.1",
"@typescript-eslint/parser": "^2.3.1",
"babel-jest": "^24.1.0",

@@ -64,2 +73,3 @@ "eslint": "^5.12.0",

"eslint-plugin-import": "^2.10.0",
"eslint-plugin-jest": "^22.17.0",
"eslint-plugin-prettier": "^3.0.1",

@@ -69,3 +79,4 @@ "jest": "^24.3.1",

"rimraf": "^2.6.2",
"standard-changelog": "^1.0.0"
"standard-changelog": "^1.0.0",
"typescript": "^3.6.3"
},

@@ -72,0 +83,0 @@ "publishConfig": {

@@ -56,7 +56,17 @@ [![Generated with nod](https://img.shields.io/badge/generator-nod-2196F3.svg?style=flat-square)](https://github.com/diegohaz/nod)

### async *streamRecordsForRange(refName, start, end, opts)
This is a async generator function that takes the same signature as getRecordsForRange but results can be processed using
for await(const chunk of file.streamRecordsForRange(refName, start, end, opts)) {
}
The getRecordsForRange simply wraps this process by concatenating chunks into an array
### async indexCov(refName, start, end)
* refName - a string for the chrom to fetch from
* start - a 0 based half open start coordinate (optional, will fetch whole chromosome without)
* end - a 0 based half open end coordinate (optional, will fetch whole chromosome without even if start is specified)
* start - a 0 based half open start coordinate (optional)
* end - a 0 based half open end coordinate (optional)

@@ -63,0 +73,0 @@ Returns features of the form {start, end, score} containing estimated feature density across 16kb windows in the genome

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc