@bitgo-beta/utxo-bin 2.8.3-beta.5 → 2.8.3-beta.500
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -86
- package/dist/bin/index.js +11 -2
- package/dist/src/AddressParser.d.ts +1 -0
- package/dist/src/AddressParser.d.ts.map +1 -1
- package/dist/src/AddressParser.js +7 -1
- package/dist/src/InputParser.d.ts +44 -0
- package/dist/src/InputParser.d.ts.map +1 -0
- package/dist/src/InputParser.js +254 -0
- package/dist/src/OutputParser.d.ts +25 -0
- package/dist/src/OutputParser.d.ts.map +1 -0
- package/dist/src/OutputParser.js +65 -0
- package/dist/src/Parser.d.ts +8 -2
- package/dist/src/Parser.d.ts.map +1 -1
- package/dist/src/Parser.js +29 -2
- package/dist/src/ParserTx.d.ts +28 -0
- package/dist/src/ParserTx.d.ts.map +1 -0
- package/dist/src/ParserTx.js +94 -0
- package/dist/src/ScriptParser.d.ts +21 -0
- package/dist/src/ScriptParser.d.ts.map +1 -0
- package/dist/src/ScriptParser.js +77 -0
- package/dist/src/TxParser.d.ts +12 -8
- package/dist/src/TxParser.d.ts.map +1 -1
- package/dist/src/TxParser.js +25 -25
- package/dist/src/args/format.d.ts +8 -0
- package/dist/src/args/format.d.ts.map +1 -0
- package/dist/src/args/format.js +15 -0
- package/dist/src/args/index.d.ts +5 -0
- package/dist/src/args/index.d.ts.map +1 -0
- package/dist/src/args/index.js +21 -0
- package/dist/src/args/parseNetwork.d.ts +22 -0
- package/dist/src/args/parseNetwork.d.ts.map +1 -0
- package/dist/src/args/parseNetwork.js +34 -0
- package/dist/src/args/parseString.d.ts +41 -0
- package/dist/src/args/parseString.d.ts.map +1 -0
- package/dist/src/args/parseString.js +120 -0
- package/dist/src/args/walletKeys.d.ts +38 -0
- package/dist/src/args/walletKeys.d.ts.map +1 -0
- package/dist/src/args/walletKeys.js +29 -0
- package/dist/src/bip32.d.ts +5 -0
- package/dist/src/bip32.d.ts.map +1 -0
- package/dist/src/bip32.js +25 -0
- package/dist/src/commands/cmdBip32.d.ts +16 -0
- package/dist/src/commands/cmdBip32.d.ts.map +1 -0
- package/dist/src/commands/cmdBip32.js +45 -0
- package/dist/src/commands/cmdGenerateAddress.d.ts +17 -0
- package/dist/src/commands/cmdGenerateAddress.d.ts.map +1 -0
- package/dist/src/commands/cmdGenerateAddress.js +55 -0
- package/dist/src/commands/cmdParseAddress.d.ts +20 -0
- package/dist/src/commands/cmdParseAddress.d.ts.map +1 -0
- package/dist/src/commands/cmdParseAddress.js +28 -0
- package/dist/src/commands/cmdParseScript.d.ts +18 -0
- package/dist/src/commands/cmdParseScript.d.ts.map +1 -0
- package/dist/src/commands/cmdParseScript.js +27 -0
- package/dist/src/commands/cmdParseTx.d.ts +30 -0
- package/dist/src/commands/cmdParseTx.d.ts.map +1 -0
- package/dist/src/commands/cmdParseTx.js +120 -0
- package/dist/src/commands/formatString.d.ts +9 -0
- package/dist/src/commands/formatString.d.ts.map +1 -0
- package/dist/src/commands/formatString.js +15 -0
- package/dist/src/commands/index.d.ts +6 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/index.js +22 -0
- package/dist/src/fetch.d.ts +12 -4
- package/dist/src/fetch.d.ts.map +1 -1
- package/dist/src/fetch.js +51 -6
- package/dist/src/format.d.ts +1 -1
- package/dist/src/format.d.ts.map +1 -1
- package/dist/src/format.js +17 -7
- package/dist/src/generateAddress.d.ts +30 -0
- package/dist/src/generateAddress.d.ts.map +1 -0
- package/dist/src/generateAddress.js +103 -0
- package/dist/src/hollowSegwitSpend.d.ts +1 -1
- package/dist/src/hollowSegwitSpend.d.ts.map +1 -1
- package/dist/src/parseUnknown.d.ts +5 -0
- package/dist/src/parseUnknown.d.ts.map +1 -0
- package/dist/src/parseUnknown.js +50 -0
- package/dist/test/args/stringToBuffer.d.ts +2 -0
- package/dist/test/args/stringToBuffer.d.ts.map +1 -0
- package/dist/test/args/stringToBuffer.js +16 -0
- package/dist/test/bip32.d.ts +2 -0
- package/dist/test/bip32.d.ts.map +1 -0
- package/dist/test/bip32.js +22 -0
- package/dist/test/bip32.util.d.ts +6 -0
- package/dist/test/bip32.util.d.ts.map +1 -0
- package/dist/test/bip32.util.js +14 -0
- package/dist/test/fixtures.d.ts +24 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +95 -0
- package/dist/test/generateAddress.d.ts +2 -0
- package/dist/test/generateAddress.d.ts.map +1 -0
- package/dist/test/generateAddress.js +29 -0
- package/dist/test/parseAddress.d.ts +6 -0
- package/dist/test/parseAddress.d.ts.map +1 -0
- package/dist/test/parseAddress.js +81 -0
- package/dist/test/parseScript.d.ts +2 -0
- package/dist/test/parseScript.d.ts.map +1 -0
- package/dist/test/parseScript.js +38 -0
- package/dist/test/parseTransaction.d.ts +2 -0
- package/dist/test/parseTransaction.d.ts.map +1 -0
- package/dist/test/parseTransaction.js +66 -0
- package/dist/tsconfig.tsbuildinfo +1 -4635
- package/package.json +8 -6
- package/dist/src/InputOutputParser.d.ts +0 -35
- package/dist/src/InputOutputParser.d.ts.map +0 -1
- package/dist/src/InputOutputParser.js +0 -196
- package/dist/src/commands.d.ts +0 -43
- package/dist/src/commands.d.ts.map +0 -1
- package/dist/src/commands.js +0 -152
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const yargs = require("yargs");
|
|
5
|
+
const utxolib = require("@bitgo-beta/utxo-lib");
|
|
6
|
+
const commands_1 = require("../src/commands");
|
|
7
|
+
const fixtures_1 = require("./fixtures");
|
|
8
|
+
function getArgs({ showAll }) {
|
|
9
|
+
return showAll ? ['--all'] : [];
|
|
10
|
+
}
|
|
11
|
+
function getParams() {
|
|
12
|
+
return ['psbtUnsigned', 'psbtHalfSigned', 'psbtFullSigned', 'networkFullSigned'].flatMap((fixtureType) => {
|
|
13
|
+
return [false, true].flatMap((showAll) => {
|
|
14
|
+
return utxolib.bitgo.outputScripts.scriptTypes2Of3.flatMap((scriptType) => {
|
|
15
|
+
if (scriptType === 'p2trMusig2') {
|
|
16
|
+
return [
|
|
17
|
+
{ scriptType, spendType: 'keyPath', showAll, fixtureType },
|
|
18
|
+
{ scriptType, spendType: 'scriptPath', showAll, fixtureType },
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
return [{ scriptType, spendType: undefined, showAll, fixtureType }];
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
getParams().forEach(({ scriptType, spendType, fixtureType, showAll }) => {
|
|
27
|
+
describe(`parse ${fixtureType} ${scriptType} ${spendType ? spendType : 'default'} spend [args=${getArgs({
|
|
28
|
+
showAll,
|
|
29
|
+
})}`, function () {
|
|
30
|
+
function parse(tx, prevOutputs) {
|
|
31
|
+
return (0, commands_1.getTxParser)(yargs.command(commands_1.cmdParseTx).parse([...getArgs({ showAll }), '--parseError=throw'])).parse(tx, {
|
|
32
|
+
prevOutputs,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
let fixture;
|
|
36
|
+
before(async function () {
|
|
37
|
+
fixture = await (0, fixtures_1.getTransactionWithSpendType)(utxolib.networks.testnet, {
|
|
38
|
+
scriptType,
|
|
39
|
+
spendType,
|
|
40
|
+
fixtureType,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
it(`parses`, function () {
|
|
44
|
+
parse(fixture.transaction);
|
|
45
|
+
if (fixture.prevOutputs) {
|
|
46
|
+
parse(fixture.transaction, fixture.prevOutputs);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
[false, true].forEach((usePrevOuts) => {
|
|
50
|
+
it(`formats [usePrevOuts=${usePrevOuts}]`, async function () {
|
|
51
|
+
if (usePrevOuts && !fixture.prevOutputs) {
|
|
52
|
+
this.skip();
|
|
53
|
+
}
|
|
54
|
+
const formatted = (0, fixtures_1.formatTreeNoColor)(parse(fixture.transaction, usePrevOuts ? fixture.prevOutputs : undefined), {
|
|
55
|
+
showAll,
|
|
56
|
+
});
|
|
57
|
+
const fixtureName = spendType ? `${scriptType}_${spendType}` : scriptType;
|
|
58
|
+
const filename = [fixtureName, fixtureType, showAll ? 'all' : '', usePrevOuts ? 'prevOuts' : '']
|
|
59
|
+
.filter((v) => v !== '')
|
|
60
|
+
.join('_');
|
|
61
|
+
assert.strictEqual(formatted, await (0, fixtures_1.getFixtureString)(`test/fixtures/formatTransaction/${filename}.txt`, formatted));
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvcGFyc2VUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFpQztBQUVqQywrQkFBK0I7QUFFL0IsZ0RBQWdEO0FBSWhELDhDQUEwRDtBQUUxRCx5Q0FBNkc7QUFTN0csU0FBUyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQXdCO0lBQ2hELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsU0FBUztJQUNoQixPQUFRLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixDQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDbEgsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQWdCLEVBQUU7Z0JBQ3RGLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRTtvQkFDL0IsT0FBTzt3QkFDTCxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7d0JBQzFELEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtxQkFDOUQsQ0FBQztpQkFDSDtnQkFDRCxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0lBQ3RFLFFBQVEsQ0FBQyxTQUFTLFdBQVcsSUFBSSxVQUFVLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLE9BQU8sQ0FBQztRQUN0RyxPQUFPO0tBQ1IsQ0FBQyxFQUFFLEVBQUU7UUFDSixTQUFTLEtBQUssQ0FBQyxFQUFZLEVBQUUsV0FBd0M7WUFDbkUsT0FBTyxJQUFBLHNCQUFXLEVBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQVEsQ0FBQyxDQUFDLEtBQUssQ0FDL0csRUFBRSxFQUNGO2dCQUNFLFdBQVc7YUFDWixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxPQUFzQixDQUFDO1FBQzNCLE1BQU0sQ0FBQyxLQUFLO1lBQ1YsT0FBTyxHQUFHLE1BQU0sSUFBQSxzQ0FBMkIsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDcEUsVUFBVTtnQkFDVixTQUFTO2dCQUNULFdBQVc7YUFDWixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDWCxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2pEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNwQyxFQUFFLENBQUMsd0JBQXdCLFdBQVcsR0FBRyxFQUFFLEtBQUs7Z0JBQzlDLElBQUksV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNiO2dCQUNELE1BQU0sU0FBUyxHQUFHLElBQUEsNEJBQWlCLEVBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDN0csT0FBTztpQkFDUixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUMxRSxNQUFNLFFBQVEsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3FCQUM3RixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7cUJBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDYixNQUFNLENBQUMsV0FBVyxDQUNoQixTQUFTLEVBQ1QsTUFBTSxJQUFBLDJCQUFnQixFQUFDLG1DQUFtQyxRQUFRLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FDckYsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCAqIGFzIG1vY2hhIGZyb20gJ21vY2hhJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBQYXJzZXJOb2RlIH0gZnJvbSAnLi4vc3JjL1BhcnNlcic7XG5pbXBvcnQgeyBQYXJzZXJUeCB9IGZyb20gJy4uL3NyYy9QYXJzZXJUeCc7XG5pbXBvcnQgeyBjbWRQYXJzZVR4LCBnZXRUeFBhcnNlciB9IGZyb20gJy4uL3NyYy9jb21tYW5kcyc7XG5cbmltcG9ydCB7IGZvcm1hdFRyZWVOb0NvbG9yLCBnZXRGaXh0dXJlU3RyaW5nLCBnZXRUcmFuc2FjdGlvbldpdGhTcGVuZFR5cGUsIFBhcnNlZEZpeHR1cmUgfSBmcm9tICcuL2ZpeHR1cmVzJztcblxudHlwZSBUZXN0UGFyYW1zID0ge1xuICBzY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG4gIHNwZW5kVHlwZTogJ2tleVBhdGgnIHwgJ3NjcmlwdFBhdGgnIHwgdW5kZWZpbmVkO1xuICBmaXh0dXJlVHlwZTogJ3BzYnRVbnNpZ25lZCcgfCAncHNidEhhbGZTaWduZWQnIHwgJ3BzYnRGdWxsU2lnbmVkJyB8ICduZXR3b3JrRnVsbFNpZ25lZCc7XG4gIHNob3dBbGw6IGJvb2xlYW47XG59O1xuXG5mdW5jdGlvbiBnZXRBcmdzKHsgc2hvd0FsbCB9OiB7IHNob3dBbGw6IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHNob3dBbGwgPyBbJy0tYWxsJ10gOiBbXTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1zKCk6IFRlc3RQYXJhbXNbXSB7XG4gIHJldHVybiAoWydwc2J0VW5zaWduZWQnLCAncHNidEhhbGZTaWduZWQnLCAncHNidEZ1bGxTaWduZWQnLCAnbmV0d29ya0Z1bGxTaWduZWQnXSBhcyBjb25zdCkuZmxhdE1hcCgoZml4dHVyZVR5cGUpID0+IHtcbiAgICByZXR1cm4gW2ZhbHNlLCB0cnVlXS5mbGF0TWFwKChzaG93QWxsKSA9PiB7XG4gICAgICByZXR1cm4gdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLnNjcmlwdFR5cGVzMk9mMy5mbGF0TWFwKChzY3JpcHRUeXBlKTogVGVzdFBhcmFtc1tdID0+IHtcbiAgICAgICAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IHNjcmlwdFR5cGUsIHNwZW5kVHlwZTogJ2tleVBhdGgnLCBzaG93QWxsLCBmaXh0dXJlVHlwZSB9LFxuICAgICAgICAgICAgeyBzY3JpcHRUeXBlLCBzcGVuZFR5cGU6ICdzY3JpcHRQYXRoJywgc2hvd0FsbCwgZml4dHVyZVR5cGUgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeyBzY3JpcHRUeXBlLCBzcGVuZFR5cGU6IHVuZGVmaW5lZCwgc2hvd0FsbCwgZml4dHVyZVR5cGUgfV07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmdldFBhcmFtcygpLmZvckVhY2goKHsgc2NyaXB0VHlwZSwgc3BlbmRUeXBlLCBmaXh0dXJlVHlwZSwgc2hvd0FsbCB9KSA9PiB7XG4gIGRlc2NyaWJlKGBwYXJzZSAke2ZpeHR1cmVUeXBlfSAke3NjcmlwdFR5cGV9ICR7c3BlbmRUeXBlID8gc3BlbmRUeXBlIDogJ2RlZmF1bHQnfSBzcGVuZCBbYXJncz0ke2dldEFyZ3Moe1xuICAgIHNob3dBbGwsXG4gIH0pfWAsIGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBwYXJzZSh0eDogUGFyc2VyVHgsIHByZXZPdXRwdXRzPzogdXR4b2xpYi5UeE91dHB1dDxiaWdpbnQ+W10pOiBQYXJzZXJOb2RlIHtcbiAgICAgIHJldHVybiBnZXRUeFBhcnNlcih5YXJncy5jb21tYW5kKGNtZFBhcnNlVHgpLnBhcnNlKFsuLi5nZXRBcmdzKHsgc2hvd0FsbCB9KSwgJy0tcGFyc2VFcnJvcj10aHJvdyddKSBhcyBhbnkpLnBhcnNlKFxuICAgICAgICB0eCxcbiAgICAgICAge1xuICAgICAgICAgIHByZXZPdXRwdXRzLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBmaXh0dXJlOiBQYXJzZWRGaXh0dXJlO1xuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBmaXh0dXJlID0gYXdhaXQgZ2V0VHJhbnNhY3Rpb25XaXRoU3BlbmRUeXBlKHV0eG9saWIubmV0d29ya3MudGVzdG5ldCwge1xuICAgICAgICBzY3JpcHRUeXBlLFxuICAgICAgICBzcGVuZFR5cGUsXG4gICAgICAgIGZpeHR1cmVUeXBlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChgcGFyc2VzYCwgZnVuY3Rpb24gKCkge1xuICAgICAgcGFyc2UoZml4dHVyZS50cmFuc2FjdGlvbik7XG4gICAgICBpZiAoZml4dHVyZS5wcmV2T3V0cHV0cykge1xuICAgICAgICBwYXJzZShmaXh0dXJlLnRyYW5zYWN0aW9uLCBmaXh0dXJlLnByZXZPdXRwdXRzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIFtmYWxzZSwgdHJ1ZV0uZm9yRWFjaCgodXNlUHJldk91dHMpID0+IHtcbiAgICAgIGl0KGBmb3JtYXRzIFt1c2VQcmV2T3V0cz0ke3VzZVByZXZPdXRzfV1gLCBhc3luYyBmdW5jdGlvbiAodGhpczogbW9jaGEuQ29udGV4dCkge1xuICAgICAgICBpZiAodXNlUHJldk91dHMgJiYgIWZpeHR1cmUucHJldk91dHB1dHMpIHtcbiAgICAgICAgICB0aGlzLnNraXAoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRUcmVlTm9Db2xvcihwYXJzZShmaXh0dXJlLnRyYW5zYWN0aW9uLCB1c2VQcmV2T3V0cyA/IGZpeHR1cmUucHJldk91dHB1dHMgOiB1bmRlZmluZWQpLCB7XG4gICAgICAgICAgc2hvd0FsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZpeHR1cmVOYW1lID0gc3BlbmRUeXBlID8gYCR7c2NyaXB0VHlwZX1fJHtzcGVuZFR5cGV9YCA6IHNjcmlwdFR5cGU7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lID0gW2ZpeHR1cmVOYW1lLCBmaXh0dXJlVHlwZSwgc2hvd0FsbCA/ICdhbGwnIDogJycsIHVzZVByZXZPdXRzID8gJ3ByZXZPdXRzJyA6ICcnXVxuICAgICAgICAgIC5maWx0ZXIoKHYpID0+IHYgIT09ICcnKVxuICAgICAgICAgIC5qb2luKCdfJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgICBmb3JtYXR0ZWQsXG4gICAgICAgICAgYXdhaXQgZ2V0Rml4dHVyZVN0cmluZyhgdGVzdC9maXh0dXJlcy9mb3JtYXRUcmFuc2FjdGlvbi8ke2ZpbGVuYW1lfS50eHRgLCBmb3JtYXR0ZWQpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|