@bitgo-beta/utxo-lib 8.0.3-beta.19 → 8.0.3-beta.1900
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 +19 -16
- package/dist/src/address.d.ts +0 -1
- package/dist/src/address.d.ts.map +1 -1
- package/dist/src/address.js +10 -10
- package/dist/src/addressFormat.d.ts +1 -2
- package/dist/src/addressFormat.d.ts.map +1 -1
- package/dist/src/addressFormat.js +21 -26
- package/dist/src/bitgo/Musig2.d.ts +1 -2
- package/dist/src/bitgo/Musig2.d.ts.map +1 -1
- package/dist/src/bitgo/Musig2.js +54 -54
- package/dist/src/bitgo/ProprietaryKeyValUtils.d.ts +27 -0
- package/dist/src/bitgo/ProprietaryKeyValUtils.d.ts.map +1 -0
- package/dist/src/bitgo/ProprietaryKeyValUtils.js +74 -0
- package/dist/src/bitgo/PsbtUtil.d.ts +26 -30
- package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -1
- package/dist/src/bitgo/PsbtUtil.js +74 -22
- package/dist/src/bitgo/Unspent.d.ts +2 -3
- package/dist/src/bitgo/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/Unspent.js +14 -15
- package/dist/src/bitgo/UtxoPsbt.d.ts +39 -12
- package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoPsbt.js +215 -154
- package/dist/src/bitgo/UtxoTransaction.d.ts +0 -1
- package/dist/src/bitgo/UtxoTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoTransaction.js +14 -14
- package/dist/src/bitgo/UtxoTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/UtxoTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoTransactionBuilder.js +1 -1
- package/dist/src/bitgo/bitcoincash/address.d.ts +0 -1
- package/dist/src/bitgo/bitcoincash/address.d.ts.map +1 -1
- package/dist/src/bitgo/bitcoincash/address.js +11 -12
- package/dist/src/bitgo/bitcoincash/index.js +6 -2
- package/dist/src/bitgo/dash/DashPsbt.d.ts +1 -1
- package/dist/src/bitgo/dash/DashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashPsbt.js +4 -1
- package/dist/src/bitgo/dash/DashTransaction.d.ts +0 -1
- package/dist/src/bitgo/dash/DashTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashTransaction.js +3 -3
- package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashTransactionBuilder.js +1 -1
- package/dist/src/bitgo/dash/index.js +6 -2
- package/dist/src/bitgo/index.d.ts +10 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +10 -3
- package/dist/src/bitgo/keyutil.d.ts +10 -2
- package/dist/src/bitgo/keyutil.d.ts.map +1 -1
- package/dist/src/bitgo/keyutil.js +27 -6
- package/dist/src/bitgo/legacysafe/index.d.ts +14 -0
- package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -0
- package/dist/src/bitgo/legacysafe/index.js +60 -0
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts +1 -1
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/litecoin/LitecoinPsbt.js +4 -1
- package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts +1 -2
- package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/litecoin/LitecoinTransaction.js +2 -2
- package/dist/src/bitgo/litecoin/index.js +6 -2
- package/dist/src/bitgo/nonStandardHalfSigned.js +4 -5
- package/dist/src/bitgo/outputScripts.d.ts +12 -8
- package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
- package/dist/src/bitgo/outputScripts.js +68 -50
- package/dist/src/bitgo/parseInput.d.ts +7 -8
- package/dist/src/bitgo/parseInput.d.ts.map +1 -1
- package/dist/src/bitgo/parseInput.js +15 -16
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts +0 -1
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +1 -1
- package/dist/src/bitgo/psbt/fromHalfSigned.js +7 -8
- package/dist/src/bitgo/psbt/scriptTypes.d.ts +0 -1
- package/dist/src/bitgo/psbt/scriptTypes.d.ts.map +1 -1
- package/dist/src/bitgo/psbt/scriptTypes.js +7 -8
- package/dist/src/bitgo/signature.d.ts +5 -6
- package/dist/src/bitgo/signature.d.ts.map +1 -1
- package/dist/src/bitgo/signature.js +37 -23
- package/dist/src/bitgo/tnumber.js +2 -3
- package/dist/src/bitgo/transaction.d.ts +31 -4
- package/dist/src/bitgo/transaction.d.ts.map +1 -1
- package/dist/src/bitgo/transaction.js +59 -27
- package/dist/src/bitgo/transactionAmounts.d.ts +9 -0
- package/dist/src/bitgo/transactionAmounts.d.ts.map +1 -0
- package/dist/src/bitgo/transactionAmounts.js +32 -0
- package/dist/src/bitgo/types.d.ts +8 -2
- package/dist/src/bitgo/types.d.ts.map +1 -1
- package/dist/src/bitgo/types.js +12 -4
- package/dist/src/bitgo/wallet/Psbt.d.ts +57 -28
- package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Psbt.js +145 -47
- package/dist/src/bitgo/wallet/ScriptId.d.ts +14 -0
- package/dist/src/bitgo/wallet/ScriptId.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/ScriptId.js +28 -0
- package/dist/src/bitgo/wallet/Unspent.d.ts +43 -10
- package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Unspent.js +174 -84
- package/dist/src/bitgo/wallet/WalletKeys.d.ts +2 -3
- package/dist/src/bitgo/wallet/WalletKeys.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletKeys.js +3 -3
- package/dist/src/bitgo/wallet/WalletOutput.d.ts +73 -3
- package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletOutput.js +182 -44
- package/dist/src/bitgo/wallet/WalletScripts.js +4 -5
- package/dist/src/bitgo/wallet/WalletUnspentSigner.d.ts +1 -1
- package/dist/src/bitgo/wallet/WalletUnspentSigner.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletUnspentSigner.js +7 -7
- package/dist/src/bitgo/wallet/chains.d.ts +3 -3
- package/dist/src/bitgo/wallet/chains.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/chains.js +10 -10
- package/dist/src/bitgo/wallet/index.d.ts +3 -0
- package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/index.js +9 -2
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts +50 -0
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.js +85 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts +32 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.js +122 -0
- package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts +1 -2
- package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashBufferutils.js +15 -15
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +4 -6
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.js +24 -24
- package/dist/src/bitgo/zcash/ZcashTransaction.d.ts +7 -2
- package/dist/src/bitgo/zcash/ZcashTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashTransaction.js +58 -21
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.js +10 -4
- package/dist/src/bitgo/zcash/address.d.ts +0 -1
- package/dist/src/bitgo/zcash/address.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/address.js +7 -8
- package/dist/src/bitgo/zcash/hashZip0244.d.ts +1 -2
- package/dist/src/bitgo/zcash/hashZip0244.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/hashZip0244.js +9 -10
- package/dist/src/bitgo/zcash/index.js +6 -2
- package/dist/src/classify.d.ts +0 -1
- package/dist/src/classify.d.ts.map +1 -1
- package/dist/src/classify.js +5 -5
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -4
- package/dist/src/networks.d.ts +2 -2
- package/dist/src/networks.d.ts.map +1 -1
- package/dist/src/networks.js +67 -21
- package/dist/src/payments/p2tr.d.ts.map +1 -1
- package/dist/src/payments/p2tr.js +16 -28
- package/dist/src/payments/p2tr_ns.js +3 -5
- package/dist/src/taproot.d.ts +80 -6
- package/dist/src/taproot.d.ts.map +1 -1
- package/dist/src/taproot.js +132 -48
- package/dist/src/templates/multisig/input.d.ts +0 -1
- package/dist/src/templates/multisig/input.d.ts.map +1 -1
- package/dist/src/templates/multisig/input.js +2 -3
- package/dist/src/templates/multisig/output.d.ts +0 -1
- package/dist/src/templates/multisig/output.d.ts.map +1 -1
- package/dist/src/templates/multisig/output.js +2 -3
- package/dist/src/templates/nulldata.d.ts +0 -1
- package/dist/src/templates/nulldata.d.ts.map +1 -1
- package/dist/src/templates/nulldata.js +3 -3
- package/dist/src/templates/pubkey/input.d.ts +0 -1
- package/dist/src/templates/pubkey/input.d.ts.map +1 -1
- package/dist/src/templates/pubkey/input.js +2 -3
- package/dist/src/templates/pubkey/output.d.ts +0 -1
- package/dist/src/templates/pubkey/output.d.ts.map +1 -1
- package/dist/src/templates/pubkey/output.js +2 -3
- package/dist/src/templates/pubkeyhash/input.d.ts +0 -1
- package/dist/src/templates/pubkeyhash/input.d.ts.map +1 -1
- package/dist/src/templates/pubkeyhash/input.js +2 -3
- package/dist/src/templates/pubkeyhash/output.d.ts +0 -1
- package/dist/src/templates/pubkeyhash/output.d.ts.map +1 -1
- package/dist/src/templates/pubkeyhash/output.js +2 -3
- package/dist/src/templates/scripthash/input.d.ts +0 -1
- package/dist/src/templates/scripthash/input.d.ts.map +1 -1
- package/dist/src/templates/scripthash/input.js +2 -3
- package/dist/src/templates/scripthash/output.d.ts +0 -1
- package/dist/src/templates/scripthash/output.d.ts.map +1 -1
- package/dist/src/templates/scripthash/output.js +2 -3
- package/dist/src/templates/taproot/input.d.ts +0 -1
- package/dist/src/templates/taproot/input.d.ts.map +1 -1
- package/dist/src/templates/taproot/input.js +2 -3
- package/dist/src/templates/taproot/output.d.ts +0 -1
- package/dist/src/templates/taproot/output.d.ts.map +1 -1
- package/dist/src/templates/taproot/output.js +2 -3
- package/dist/src/templates/taprootnofn/input.d.ts +0 -1
- package/dist/src/templates/taprootnofn/input.d.ts.map +1 -1
- package/dist/src/templates/taprootnofn/input.js +2 -3
- package/dist/src/templates/taprootnofn/output.d.ts +0 -1
- package/dist/src/templates/taprootnofn/output.d.ts.map +1 -1
- package/dist/src/templates/taprootnofn/output.js +4 -5
- package/dist/src/templates/witnesscommitment/output.d.ts +0 -1
- package/dist/src/templates/witnesscommitment/output.d.ts.map +1 -1
- package/dist/src/templates/witnesscommitment/output.js +4 -5
- package/dist/src/templates/witnesspubkeyhash/input.d.ts +0 -1
- package/dist/src/templates/witnesspubkeyhash/input.d.ts.map +1 -1
- package/dist/src/templates/witnesspubkeyhash/input.js +2 -3
- package/dist/src/templates/witnesspubkeyhash/output.d.ts +0 -1
- package/dist/src/templates/witnesspubkeyhash/output.d.ts.map +1 -1
- package/dist/src/templates/witnesspubkeyhash/output.js +2 -3
- package/dist/src/templates/witnessscripthash/input.d.ts +0 -1
- package/dist/src/templates/witnessscripthash/input.d.ts.map +1 -1
- package/dist/src/templates/witnessscripthash/input.js +2 -3
- package/dist/src/templates/witnessscripthash/output.d.ts +0 -1
- package/dist/src/templates/witnessscripthash/output.d.ts.map +1 -1
- package/dist/src/templates/witnessscripthash/output.js +2 -3
- package/dist/src/testutil/index.js +6 -2
- package/dist/src/testutil/keys.d.ts +7 -4
- package/dist/src/testutil/keys.d.ts.map +1 -1
- package/dist/src/testutil/keys.js +29 -12
- package/dist/src/testutil/mock.d.ts +4 -5
- package/dist/src/testutil/mock.d.ts.map +1 -1
- package/dist/src/testutil/mock.js +40 -30
- package/dist/src/testutil/psbt.d.ts +95 -20
- package/dist/src/testutil/psbt.d.ts.map +1 -1
- package/dist/src/testutil/psbt.js +147 -45
- package/dist/src/testutil/transaction.d.ts +15 -6
- package/dist/src/testutil/transaction.d.ts.map +1 -1
- package/dist/src/testutil/transaction.js +30 -29
- package/dist/src/transaction_builder.d.ts +0 -1
- package/dist/src/transaction_builder.d.ts.map +1 -1
- package/dist/src/transaction_builder.js +27 -32
- package/package.json +10 -17
- package/dist/src/noble_ecc.d.ts +0 -28
- package/dist/src/noble_ecc.d.ts.map +0 -1
- package/dist/src/noble_ecc.js +0 -172
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletKeys.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletKeys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WalletKeys.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElD,wBAAgB,WAAW,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,OAAO,CAEzE;AAED;;;GAGG;AACH,qBAAa,UAAU;aAMO,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAL1D,SAAgB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3C;;OAEG;gBACyB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAY1D,IAAI,IAAI,IAAI,cAAc,CAEzB;IAED,IAAI,MAAM,IAAI,cAAc,CAE3B;IAED,IAAI,KAAK,IAAI,cAAc,CAE1B;CACF;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAK5B,MAAM,EAAE,cAAc;IAAS,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;IAJvE;;;OAGG;gBACgB,MAAM,EAAE,cAAc,EAAS,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;CAGxE;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;aAU1B,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC;IATpD,MAAM,CAAC,QAAQ,CAAC,aAAa,SAAS;IAEtC;;;;OAIG;gBAED,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,EACd,kBAAkB,GAAE,MAAM,CAAC,MAAM,CAIhD;IAWH;;;;;OAKG;IACH,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAW5E;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB;CAMxE"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RootWalletKeys = exports.DerivedWalletKeys = exports.WalletKeys =
|
|
3
|
+
exports.RootWalletKeys = exports.DerivedWalletKeys = exports.WalletKeys = void 0;
|
|
4
|
+
exports.eqPublicKey = eqPublicKey;
|
|
4
5
|
function eqPublicKey(a, b) {
|
|
5
6
|
return a.publicKey.equals(b.publicKey);
|
|
6
7
|
}
|
|
7
|
-
exports.eqPublicKey = eqPublicKey;
|
|
8
8
|
/**
|
|
9
9
|
* Base class for RootWalletKeys and DerivedWalletKeys.
|
|
10
10
|
* Keys can be either public keys or private keys.
|
|
@@ -101,4 +101,4 @@ class RootWalletKeys extends WalletKeys {
|
|
|
101
101
|
}
|
|
102
102
|
exports.RootWalletKeys = RootWalletKeys;
|
|
103
103
|
RootWalletKeys.defaultPrefix = '0/0';
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0S2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0S2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpQkEsa0NBRUM7QUFGRCxTQUFnQixXQUFXLENBQUMsQ0FBaUIsRUFBRSxDQUFpQjtJQUM5RCxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxVQUFVO0lBR3JCOztPQUVHO0lBQ0gsWUFBNEIsTUFBOEI7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFDeEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QixJQUFJLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBbUIsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUE3QkQsZ0NBNkJDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsVUFBVTtJQUMvQzs7O09BR0c7SUFDSCxZQUFtQixNQUFzQixFQUFTLEtBQXFCO1FBQ3JFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUMsQ0FBQztRQURwRSxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBRXZFLENBQUM7Q0FDRjtBQVJELDhDQVFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxVQUFVO0lBRzVDOzs7O09BSUc7SUFDSCxZQUNFLE1BQThCLEVBQ2QscUJBQXFDO1FBQ25ELGNBQWMsQ0FBQyxhQUFhO1FBQzVCLGNBQWMsQ0FBQyxhQUFhO1FBQzVCLGNBQWMsQ0FBQyxhQUFhO0tBQzdCO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBTkUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUlqQztRQUlELGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztZQUMxRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxHQUFtQixFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUNqRCxPQUFPLElBQUksaUJBQWlCLENBQzFCLElBQUksRUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQW1CLENBQ2xGLENBQUM7SUFDSixDQUFDOztBQXBESCx3Q0FxREM7QUFwRGlCLDRCQUFhLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDbGFzc2VzIGZvciBkZXJpdmluZyBrZXkgdHJpcGxlcyBmb3Igd2FsbGV0IGFkZHJlc3Nlcy5cbiAqXG4gKiBCeSBkZWZhdWx0LCBCaXRHbyB3YWxsZXRzIGNvbnNpc3Qgb2YgYSB0cmlwbGUgb2YgYmlwMzIgZXh0ZW5kIGtleXBhaXJzLlxuICogRXZlcnkgd2FsbGV0IGFkZHJlc3MgY2FuIGJlIGlkZW50aWZpZWQgYnkgXyhjaGFpbjogbnVtYmVyLCBpbmRleDogbnVtYmVyKV8uXG4gKiBUaGUga2V5IHNldCBmb3IgYSBwYXJ0aWN1bGFyIGFkZHJlc3MgY2FuIGJlIG9idGFpbmVkIGJ5IGRlcml2aW5nIHdpdGggdGhlIHBhdGhcbiAqIGAwLzAvJHtjaGFpbn0vJHtpbmRleH1gLiAoSW4gcmFyZSBjYXNlcyB0aGUgcHJlZml4IDAvMCBjYW4gYmUgZGlmZmVyZW50KVxuICpcbiAqIFNpbmNlIHdlIG5ldmVyIHVzZSBvdGhlciBkZXJpdmF0aW9ucyBmb3IgdXR4byBhZGRyZXNzIHNjcmlwdHMsIHRoZSBjbGFzc2VzIGRlZmluZWQgaGVyZSBvbmx5XG4gKiBhbGxvdyBleGFjdGx5IG9uZSBsZXZlbCBvZiBkZXJpdmF0aW9uLlxuICovXG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5cbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgS2V5TmFtZSA9ICd1c2VyJyB8ICdiYWNrdXAnIHwgJ2JpdGdvJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVxUHVibGljS2V5KGE6IEJJUDMySW50ZXJmYWNlLCBiOiBCSVAzMkludGVyZmFjZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gYS5wdWJsaWNLZXkuZXF1YWxzKGIucHVibGljS2V5KTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBSb290V2FsbGV0S2V5cyBhbmQgRGVyaXZlZFdhbGxldEtleXMuXG4gKiBLZXlzIGNhbiBiZSBlaXRoZXIgcHVibGljIGtleXMgb3IgcHJpdmF0ZSBrZXlzLlxuICovXG5leHBvcnQgY2xhc3MgV2FsbGV0S2V5cyB7XG4gIHB1YmxpYyByZWFkb25seSBwdWJsaWNLZXlzOiBUcmlwbGU8QnVmZmVyPjtcblxuICAvKipcbiAgICogQHBhcmFtIHRyaXBsZSAtIGJpcDMyIGtleSB0cmlwbGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0cmlwbGU6IFRyaXBsZTxCSVAzMkludGVyZmFjZT4pIHtcbiAgICB0cmlwbGUuZm9yRWFjaCgoYSwgaSkgPT4ge1xuICAgICAgdHJpcGxlLmZvckVhY2goKGIsIGopID0+IHtcbiAgICAgICAgaWYgKGVxUHVibGljS2V5KGEsIGIpICYmIGkgIT09IGopIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdhbGxldCBrZXlzIG11c3QgYmUgZGlzdGluY3RgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnB1YmxpY0tleXMgPSB0aGlzLnRyaXBsZS5tYXAoKGspID0+IGsucHVibGljS2V5KSBhcyBUcmlwbGU8QnVmZmVyPjtcbiAgfVxuXG4gIGdldCB1c2VyKCk6IEJJUDMySW50ZXJmYWNlIHtcbiAgICByZXR1cm4gdGhpcy50cmlwbGVbMF07XG4gIH1cblxuICBnZXQgYmFja3VwKCk6IEJJUDMySW50ZXJmYWNlIHtcbiAgICByZXR1cm4gdGhpcy50cmlwbGVbMV07XG4gIH1cblxuICBnZXQgYml0Z28oKTogQklQMzJJbnRlcmZhY2Uge1xuICAgIHJldHVybiB0aGlzLnRyaXBsZVsyXTtcbiAgfVxufVxuXG4vKipcbiAqIFNldCBvZiBXYWxsZXRLZXlzIGRlcml2ZWQgZnJvbSBSb290V2FsbGV0S2V5cy4gU3VpdGFibGUgZm9yIHNpZ25pbmcgdHJhbnNhY3Rpb24gaW5wdXRzLlxuICogQ29udGFpbnMgcmVmZXJlbmNlIHRvIHRoZSBSb290V2FsbGV0S2V5cyB0aGlzIHdhcyBkZXJpdmVkIGZyb20gYXMgd2VsbCBhcyB0aGUgcGF0aHMgdXNlZFxuICogZm9yIGRlcml2YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXJpdmVkV2FsbGV0S2V5cyBleHRlbmRzIFdhbGxldEtleXMge1xuICAvKipcbiAgICogQHBhcmFtIHBhcmVudCAtIHdhbGxldCBrZXlzIHRvIGRlcml2ZSBmcm9tXG4gICAqIEBwYXJhbSBwYXRocyAtIHBhdGhzIHRvIGRlcml2ZSB3aXRoXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBSb290V2FsbGV0S2V5cywgcHVibGljIHBhdGhzOiBUcmlwbGU8c3RyaW5nPikge1xuICAgIHN1cGVyKHBhcmVudC50cmlwbGUubWFwKChrLCBpKSA9PiBrLmRlcml2ZVBhdGgocGF0aHNbaV0pKSBhcyBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTtcbiAgfVxufVxuXG4vKipcbiAqIFNldCBvZiByb290IHdhbGxldCBrZXlzLCB0eXBpY2FsbHkgaW5zdGFudGlhdGVkIHVzaW5nIHRoZSB3YWxsZXQgeHB1YiB0cmlwbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBSb290V2FsbGV0S2V5cyBleHRlbmRzIFdhbGxldEtleXMge1xuICBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdFByZWZpeCA9ICcwLzAnO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gdHJpcGxlIC0gYmlwMzIga2V5IHRyaXBsZVxuICAgKiBAcGFyYW0gZGVyaXZhdGlvblByZWZpeGVzIC0gQ2VydGFpbiB2MSB3YWxsZXRzIG9yIHRoZWlyIG1pZ3JhdGVkIHYyIGNvdW50ZXJwYXJ0c1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGhhdmUgYSBub25zdGFuZGFyZCBwcmVmaXguXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICB0cmlwbGU6IFRyaXBsZTxCSVAzMkludGVyZmFjZT4sXG4gICAgcHVibGljIHJlYWRvbmx5IGRlcml2YXRpb25QcmVmaXhlczogVHJpcGxlPHN0cmluZz4gPSBbXG4gICAgICBSb290V2FsbGV0S2V5cy5kZWZhdWx0UHJlZml4LFxuICAgICAgUm9vdFdhbGxldEtleXMuZGVmYXVsdFByZWZpeCxcbiAgICAgIFJvb3RXYWxsZXRLZXlzLmRlZmF1bHRQcmVmaXgsXG4gICAgXVxuICApIHtcbiAgICBzdXBlcih0cmlwbGUpO1xuXG4gICAgZGVyaXZhdGlvblByZWZpeGVzLmZvckVhY2goKHApID0+IHtcbiAgICAgIGlmIChwLnN0YXJ0c1dpdGgoJy8nKSB8fCBwLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBkZXJpdmF0aW9uIHByZWZpeCBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCBhIHNsYXNoYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcGFyYW0gY2hhaW5cbiAgICogQHBhcmFtIGluZGV4XG4gICAqIEByZXR1cm4gZnVsbCBkZXJpdmF0aW9uIHBhdGggZm9yIGtleSwgaW5jbHVkaW5nIGtleS1zcGVjaWZpYyBwcmVmaXhcbiAgICovXG4gIGdldERlcml2YXRpb25QYXRoKGtleTogQklQMzJJbnRlcmZhY2UsIGNoYWluOiBudW1iZXIsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5kZXJpdmF0aW9uUHJlZml4ZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gZGVyaXZhdGlvbiBwcmVmaXhlc2ApO1xuICAgIH1cbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmRlcml2YXRpb25QcmVmaXhlcy5maW5kKChwcmVmaXgsIGkpID0+IGVxUHVibGljS2V5KGtleSwgdGhpcy50cmlwbGVbaV0pKTtcbiAgICBpZiAocHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihga2V5IG5vdCBpbiB3YWxsZXRLZXlzYCk7XG4gICAgfVxuICAgIHJldHVybiBgJHtwcmVmaXh9LyR7Y2hhaW59LyR7aW5kZXh9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gY2hhaW5cbiAgICogQHBhcmFtIGluZGV4XG4gICAqIEByZXR1cm4gd2FsbGV0S2V5cyBmb3IgYSBwYXJ0aWN1bGFyIGFkZHJlc3MgaWRlbnRpZmllZCBieSAoY2hhaW4sIGluZGV4KVxuICAgKi9cbiAgZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbjogbnVtYmVyLCBpbmRleDogbnVtYmVyKTogRGVyaXZlZFdhbGxldEtleXMge1xuICAgIHJldHVybiBuZXcgRGVyaXZlZFdhbGxldEtleXMoXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy50cmlwbGUubWFwKChrKSA9PiB0aGlzLmdldERlcml2YXRpb25QYXRoKGssIGNoYWluLCBpbmRleCkpIGFzIFRyaXBsZTxzdHJpbmc+XG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,10 +1,62 @@
|
|
|
1
|
+
import { Payment } from 'bitcoinjs-lib';
|
|
2
|
+
import { PsbtOutput, PsbtOutputUpdate } from 'bip174/src/lib/interfaces';
|
|
1
3
|
import { UtxoPsbt } from '../UtxoPsbt';
|
|
2
|
-
import { RootWalletKeys } from './WalletKeys';
|
|
4
|
+
import { RootWalletKeys, DerivedWalletKeys } from './WalletKeys';
|
|
3
5
|
import { ChainCode } from './chains';
|
|
6
|
+
import { ScriptId } from './ScriptId';
|
|
7
|
+
/**
|
|
8
|
+
* Get the BIP32 derivation data for a PSBT output.
|
|
9
|
+
*
|
|
10
|
+
* @param rootWalletKeys root wallet keys used for master fingerprints
|
|
11
|
+
* @param walletKeys derived wallet keys for the specific chain and index
|
|
12
|
+
* @param scriptType the script type to determine whether to use regular or taproot derivation
|
|
13
|
+
* @param payment optional payment object for taproot scripts to calculate leaf hashes
|
|
14
|
+
* @returns Object containing BIP32 derivation data
|
|
15
|
+
*/
|
|
16
|
+
export declare function getPsbtBip32DerivationOutputUpdate(rootWalletKeys: RootWalletKeys, walletKeys: DerivedWalletKeys, scriptType: string, payment?: Payment): PsbtOutputUpdate;
|
|
17
|
+
/**
|
|
18
|
+
* Get the PSBT output update object from a PSBT output and output script.
|
|
19
|
+
*
|
|
20
|
+
* @param output the PSBT output to get update for
|
|
21
|
+
* @param outputScript the output script
|
|
22
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
23
|
+
* @param chain chain code to use for deriving scripts (and to determine script type)
|
|
24
|
+
* @param index derivation index for the change address
|
|
25
|
+
* @returns PsbtOutputUpdate object with the required information
|
|
26
|
+
*/
|
|
27
|
+
export declare function getPsbtOutputUpdateFromPsbtOutput(output: PsbtOutput, outputScript: Buffer, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number): PsbtOutputUpdate;
|
|
28
|
+
/**
|
|
29
|
+
* Get the PSBT output update object with the required information.
|
|
30
|
+
*
|
|
31
|
+
* @param psbt the PSBT to get output update for
|
|
32
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
33
|
+
* @param outputIndex output index where to update the output
|
|
34
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
35
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
36
|
+
* any valid ChainCode
|
|
37
|
+
* @param index derivation index for the change address
|
|
38
|
+
* @returns PsbtOutputUpdate object with the required information
|
|
39
|
+
*/
|
|
40
|
+
export declare function getPsbtOutputUpdate(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, outputIndex: number, chain: ChainCode, index: number): PsbtOutputUpdate;
|
|
41
|
+
/**
|
|
42
|
+
* Update the wallet output with the required information when necessary. If the
|
|
43
|
+
* information is there already, it will skip over it.
|
|
44
|
+
*
|
|
45
|
+
* This function assumes that the output script and value have already been set.
|
|
46
|
+
*
|
|
47
|
+
* @param psbt the PSBT to update change output at
|
|
48
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
49
|
+
* @param outputIndex output index where to update the output
|
|
50
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
51
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
52
|
+
* any valid ChainCode
|
|
53
|
+
* @param index derivation index for the change address
|
|
54
|
+
*/
|
|
55
|
+
export declare function updateWalletOutputForPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, outputIndex: number, chain: ChainCode, index: number): void;
|
|
4
56
|
/**
|
|
5
57
|
* Add a verifiable wallet output to the PSBT. The output and all data
|
|
6
58
|
* needed to verify it from public keys only are added to the PSBT.
|
|
7
|
-
* Typically these are change outputs
|
|
59
|
+
* Typically these are change outputs.
|
|
8
60
|
*
|
|
9
61
|
* @param psbt the PSBT to add change output to
|
|
10
62
|
* @param rootWalletKeys keys that will be able to spend the output
|
|
@@ -14,5 +66,23 @@ import { ChainCode } from './chains';
|
|
|
14
66
|
* @param index derivation index for the change address
|
|
15
67
|
* @param value value of the change output
|
|
16
68
|
*/
|
|
17
|
-
export declare function addWalletOutputToPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number, value: bigint
|
|
69
|
+
export declare function addWalletOutputToPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number, value: bigint, { addDerivationInfo }?: {
|
|
70
|
+
addDerivationInfo?: boolean;
|
|
71
|
+
}): void;
|
|
72
|
+
/**
|
|
73
|
+
* Get the script id from the output.
|
|
74
|
+
* The output can have either bip32Derivation or tapBip32Derivation, but not both.
|
|
75
|
+
* @param output
|
|
76
|
+
* @throws Error if neither or both bip32Derivation and tapBip32Derivation are present
|
|
77
|
+
* @throws Error if the output is empty
|
|
78
|
+
* @throws Error if we cannot fold the script ids into a single script id
|
|
79
|
+
*/
|
|
80
|
+
export declare function getScriptIdFromOutput(output: {
|
|
81
|
+
bip32Derivation?: {
|
|
82
|
+
path: string;
|
|
83
|
+
}[];
|
|
84
|
+
tapBip32Derivation?: {
|
|
85
|
+
path: string;
|
|
86
|
+
}[];
|
|
87
|
+
}): ScriptId;
|
|
18
88
|
//# sourceMappingURL=WalletOutput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletOutput.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletOutput.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WalletOutput.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAuB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,gBAAgB,CAqClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CA2ClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAWlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAEN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,EAAE,iBAAwB,EAAE,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GACjE,IAAI,CAcN;AAqBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzC,GAAG,QAAQ,CAWX"}
|
|
@@ -1,13 +1,147 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getPsbtBip32DerivationOutputUpdate = getPsbtBip32DerivationOutputUpdate;
|
|
4
|
+
exports.getPsbtOutputUpdateFromPsbtOutput = getPsbtOutputUpdateFromPsbtOutput;
|
|
5
|
+
exports.getPsbtOutputUpdate = getPsbtOutputUpdate;
|
|
6
|
+
exports.updateWalletOutputForPsbt = updateWalletOutputForPsbt;
|
|
7
|
+
exports.addWalletOutputToPsbt = addWalletOutputToPsbt;
|
|
8
|
+
exports.getScriptIdFromOutput = getScriptIdFromOutput;
|
|
9
|
+
const assert_1 = require("assert");
|
|
4
10
|
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
5
11
|
const chains_1 = require("./chains");
|
|
12
|
+
const ScriptId_1 = require("./ScriptId");
|
|
6
13
|
const outputScripts_1 = require("../outputScripts");
|
|
14
|
+
/**
|
|
15
|
+
* Get the BIP32 derivation data for a PSBT output.
|
|
16
|
+
*
|
|
17
|
+
* @param rootWalletKeys root wallet keys used for master fingerprints
|
|
18
|
+
* @param walletKeys derived wallet keys for the specific chain and index
|
|
19
|
+
* @param scriptType the script type to determine whether to use regular or taproot derivation
|
|
20
|
+
* @param payment optional payment object for taproot scripts to calculate leaf hashes
|
|
21
|
+
* @returns Object containing BIP32 derivation data
|
|
22
|
+
*/
|
|
23
|
+
function getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType, payment) {
|
|
24
|
+
const update = {};
|
|
25
|
+
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
26
|
+
if (!payment || !payment.redeems) {
|
|
27
|
+
throw new Error('Payment object with redeems is required for taproot derivation');
|
|
28
|
+
}
|
|
29
|
+
const allLeafHashes = payment.redeems.map((r) => bitcoinjs_lib_1.taproot.hashTapLeaf(r.output));
|
|
30
|
+
update.tapBip32Derivation = [0, 1, 2].map((idx) => {
|
|
31
|
+
const pubkey = (0, outputScripts_1.toXOnlyPublicKey)(walletKeys.triple[idx].publicKey);
|
|
32
|
+
const leafHashes = [];
|
|
33
|
+
(0, assert_1.ok)(payment.redeems);
|
|
34
|
+
payment.redeems.forEach((r, redeemIdx) => {
|
|
35
|
+
if (r.pubkeys.find((pk) => pk.equals(pubkey))) {
|
|
36
|
+
leafHashes.push(allLeafHashes[redeemIdx]);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
leafHashes,
|
|
41
|
+
pubkey,
|
|
42
|
+
path: walletKeys.paths[idx],
|
|
43
|
+
masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
update.bip32Derivation = [0, 1, 2].map((idx) => ({
|
|
49
|
+
pubkey: walletKeys.triple[idx].publicKey,
|
|
50
|
+
path: walletKeys.paths[idx],
|
|
51
|
+
masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
return update;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get the PSBT output update object from a PSBT output and output script.
|
|
58
|
+
*
|
|
59
|
+
* @param output the PSBT output to get update for
|
|
60
|
+
* @param outputScript the output script
|
|
61
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
62
|
+
* @param chain chain code to use for deriving scripts (and to determine script type)
|
|
63
|
+
* @param index derivation index for the change address
|
|
64
|
+
* @returns PsbtOutputUpdate object with the required information
|
|
65
|
+
*/
|
|
66
|
+
function getPsbtOutputUpdateFromPsbtOutput(output, outputScript, rootWalletKeys, chain, index) {
|
|
67
|
+
const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
|
|
68
|
+
const scriptType = (0, chains_1.scriptTypeForChain)(chain);
|
|
69
|
+
const update = {};
|
|
70
|
+
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
71
|
+
const payment = scriptType === 'p2tr' ? (0, outputScripts_1.createPaymentP2tr)(walletKeys.publicKeys) : (0, outputScripts_1.createPaymentP2trMusig2)(walletKeys.publicKeys);
|
|
72
|
+
if (!payment.output || !payment.output.equals(outputScript)) {
|
|
73
|
+
throw new Error(`cannot update a p2tr output where the scripts do not match - Failing.`);
|
|
74
|
+
}
|
|
75
|
+
if (!output.tapTree) {
|
|
76
|
+
update.tapTree = payment.tapTree;
|
|
77
|
+
}
|
|
78
|
+
if (!output.tapInternalKey) {
|
|
79
|
+
update.tapInternalKey = payment.internalPubkey;
|
|
80
|
+
}
|
|
81
|
+
if (!output.tapBip32Derivation) {
|
|
82
|
+
const derivationUpdate = getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType, payment);
|
|
83
|
+
update.tapBip32Derivation = derivationUpdate.tapBip32Derivation;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const { scriptPubKey, witnessScript, redeemScript } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
|
|
88
|
+
if (!scriptPubKey.equals(outputScript)) {
|
|
89
|
+
throw new Error(`cannot update an output where the scripts do not match - Failing.`);
|
|
90
|
+
}
|
|
91
|
+
if (!output.bip32Derivation) {
|
|
92
|
+
const derivationUpdate = getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType);
|
|
93
|
+
update.bip32Derivation = derivationUpdate.bip32Derivation;
|
|
94
|
+
}
|
|
95
|
+
if (!output.witnessScript && witnessScript) {
|
|
96
|
+
update.witnessScript = witnessScript;
|
|
97
|
+
}
|
|
98
|
+
if (!output.redeemScript && redeemScript) {
|
|
99
|
+
update.redeemScript = redeemScript;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return update;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the PSBT output update object with the required information.
|
|
106
|
+
*
|
|
107
|
+
* @param psbt the PSBT to get output update for
|
|
108
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
109
|
+
* @param outputIndex output index where to update the output
|
|
110
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
111
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
112
|
+
* any valid ChainCode
|
|
113
|
+
* @param index derivation index for the change address
|
|
114
|
+
* @returns PsbtOutputUpdate object with the required information
|
|
115
|
+
*/
|
|
116
|
+
function getPsbtOutputUpdate(psbt, rootWalletKeys, outputIndex, chain, index) {
|
|
117
|
+
if (psbt.data.outputs.length <= outputIndex) {
|
|
118
|
+
throw new Error(`outputIndex (${outputIndex}) is too large for the number of outputs (${psbt.data.outputs.length})`);
|
|
119
|
+
}
|
|
120
|
+
const outputScript = psbt.getOutputScript(outputIndex);
|
|
121
|
+
const output = psbt.data.outputs[outputIndex];
|
|
122
|
+
return getPsbtOutputUpdateFromPsbtOutput(output, outputScript, rootWalletKeys, chain, index);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Update the wallet output with the required information when necessary. If the
|
|
126
|
+
* information is there already, it will skip over it.
|
|
127
|
+
*
|
|
128
|
+
* This function assumes that the output script and value have already been set.
|
|
129
|
+
*
|
|
130
|
+
* @param psbt the PSBT to update change output at
|
|
131
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
132
|
+
* @param outputIndex output index where to update the output
|
|
133
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
134
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
135
|
+
* any valid ChainCode
|
|
136
|
+
* @param index derivation index for the change address
|
|
137
|
+
*/
|
|
138
|
+
function updateWalletOutputForPsbt(psbt, rootWalletKeys, outputIndex, chain, index) {
|
|
139
|
+
psbt.updateOutput(outputIndex, getPsbtOutputUpdate(psbt, rootWalletKeys, outputIndex, chain, index));
|
|
140
|
+
}
|
|
7
141
|
/**
|
|
8
142
|
* Add a verifiable wallet output to the PSBT. The output and all data
|
|
9
143
|
* needed to verify it from public keys only are added to the PSBT.
|
|
10
|
-
* Typically these are change outputs
|
|
144
|
+
* Typically these are change outputs.
|
|
11
145
|
*
|
|
12
146
|
* @param psbt the PSBT to add change output to
|
|
13
147
|
* @param rootWalletKeys keys that will be able to spend the output
|
|
@@ -17,53 +151,57 @@ const outputScripts_1 = require("../outputScripts");
|
|
|
17
151
|
* @param index derivation index for the change address
|
|
18
152
|
* @param value value of the change output
|
|
19
153
|
*/
|
|
20
|
-
function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value) {
|
|
154
|
+
function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value, { addDerivationInfo = true } = {}) {
|
|
21
155
|
const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
|
|
22
|
-
const scriptType = chains_1.scriptTypeForChain(chain);
|
|
156
|
+
const scriptType = (0, chains_1.scriptTypeForChain)(chain);
|
|
23
157
|
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
24
|
-
const payment = scriptType === 'p2tr' ? outputScripts_1.createPaymentP2tr(walletKeys.publicKeys) : outputScripts_1.createPaymentP2trMusig2(walletKeys.publicKeys);
|
|
25
|
-
|
|
26
|
-
psbt.addOutput({
|
|
27
|
-
script: payment.output,
|
|
28
|
-
value,
|
|
29
|
-
tapTree: payment.tapTree,
|
|
30
|
-
tapInternalKey: payment.internalPubkey,
|
|
31
|
-
tapBip32Derivation: [0, 1, 2].map((idx) => {
|
|
32
|
-
const pubkey = outputScripts_1.toXOnlyPublicKey(walletKeys.triple[idx].publicKey);
|
|
33
|
-
const leafHashes = [];
|
|
34
|
-
payment.redeems.forEach((r, idx) => {
|
|
35
|
-
if (r.pubkeys.find((pk) => pk.equals(pubkey))) {
|
|
36
|
-
leafHashes.push(allLeafHashes[idx]);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
return {
|
|
40
|
-
leafHashes,
|
|
41
|
-
pubkey,
|
|
42
|
-
path: walletKeys.paths[idx],
|
|
43
|
-
masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
|
|
44
|
-
};
|
|
45
|
-
}),
|
|
46
|
-
});
|
|
158
|
+
const payment = scriptType === 'p2tr' ? (0, outputScripts_1.createPaymentP2tr)(walletKeys.publicKeys) : (0, outputScripts_1.createPaymentP2trMusig2)(walletKeys.publicKeys);
|
|
159
|
+
psbt.addOutput({ script: payment.output, value });
|
|
47
160
|
}
|
|
48
161
|
else {
|
|
49
|
-
const { scriptPubKey
|
|
50
|
-
psbt.addOutput({
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
162
|
+
const { scriptPubKey: script } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
|
|
163
|
+
psbt.addOutput({ script, value });
|
|
164
|
+
}
|
|
165
|
+
if (addDerivationInfo) {
|
|
166
|
+
updateWalletOutputForPsbt(psbt, rootWalletKeys, psbt.data.outputs.length - 1, chain, index);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Fold the script ids into a single script id, if they are all the same.
|
|
171
|
+
* @param scriptIds
|
|
172
|
+
*/
|
|
173
|
+
function foldScriptIds(scriptIds) {
|
|
174
|
+
if (scriptIds.length === 0) {
|
|
175
|
+
throw new Error('cannot fold empty script ids');
|
|
176
|
+
}
|
|
177
|
+
scriptIds.forEach((scriptId, i) => {
|
|
178
|
+
if (scriptId.chain !== scriptIds[0].chain) {
|
|
179
|
+
throw new Error(`chain mismatch: ${scriptId.chain} != ${scriptIds[0].chain}`);
|
|
62
180
|
}
|
|
63
|
-
if (
|
|
64
|
-
|
|
181
|
+
if (scriptId.index !== scriptIds[0].index) {
|
|
182
|
+
throw new Error(`index mismatch: ${scriptId.index} != ${scriptIds[0].index}`);
|
|
65
183
|
}
|
|
184
|
+
});
|
|
185
|
+
return scriptIds[0];
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get the script id from the output.
|
|
189
|
+
* The output can have either bip32Derivation or tapBip32Derivation, but not both.
|
|
190
|
+
* @param output
|
|
191
|
+
* @throws Error if neither or both bip32Derivation and tapBip32Derivation are present
|
|
192
|
+
* @throws Error if the output is empty
|
|
193
|
+
* @throws Error if we cannot fold the script ids into a single script id
|
|
194
|
+
*/
|
|
195
|
+
function getScriptIdFromOutput(output) {
|
|
196
|
+
if (output.bip32Derivation && output.tapBip32Derivation) {
|
|
197
|
+
throw new Error('cannot get script id from output with both bip32Derivation and tapBip32Derivation');
|
|
198
|
+
}
|
|
199
|
+
if (output.bip32Derivation) {
|
|
200
|
+
return foldScriptIds(output.bip32Derivation.map((d) => (0, ScriptId_1.getScriptIdFromPath)(d.path)));
|
|
66
201
|
}
|
|
202
|
+
if (output.tapBip32Derivation) {
|
|
203
|
+
return foldScriptIds(output.tapBip32Derivation.map((d) => (0, ScriptId_1.getScriptIdFromPath)(d.path)));
|
|
204
|
+
}
|
|
205
|
+
throw new Error('cannot get script id from output without bip32Derivation or tapBip32Derivation');
|
|
67
206
|
}
|
|
68
|
-
exports.addWalletOutputToPsbt = addWalletOutputToPsbt;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXdDO0FBR3hDLHFDQUF5RDtBQUN6RCxvREFBd0g7QUFFeEg7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQ25DLElBQWMsRUFDZCxjQUE4QixFQUM5QixLQUFnQixFQUNoQixLQUFhLEVBQ2IsS0FBYTtJQUViLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsTUFBTSxVQUFVLEdBQUcsMkJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsSUFBSSxVQUFVLEtBQUssTUFBTSxJQUFJLFVBQVUsS0FBSyxZQUFZLEVBQUU7UUFDeEQsTUFBTSxPQUFPLEdBQ1gsVUFBVSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUNBQWlCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEgsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWxGLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU87WUFDdkIsS0FBSztZQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN4QyxNQUFNLE1BQU0sR0FBRyxnQ0FBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxPQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNsQyxJQUFJLENBQUMsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7d0JBQzlDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ3JDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU87b0JBQ0wsVUFBVTtvQkFDVixNQUFNO29CQUNOLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDM0IsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXO2lCQUMxRCxDQUFDO1lBQ0osQ0FBQyxDQUFDO1NBQ0gsQ0FBQyxDQUFDO0tBQ0o7U0FBTTtRQUNMLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLHNDQUFzQixDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLEtBQUs7WUFDTCxlQUFlLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUztnQkFDeEMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUMzQixpQkFBaUIsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVc7YUFDMUQsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksYUFBYSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztTQUNsRDtLQUNGO0FBQ0gsQ0FBQztBQXRERCxzREFzREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0YXByb290IH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBVdHhvUHNidCB9IGZyb20gJy4uL1V0eG9Qc2J0JztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IENoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gZnJvbSAnLi9jaGFpbnMnO1xuaW1wb3J0IHsgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMywgY3JlYXRlUGF5bWVudFAydHIsIGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyLCB0b1hPbmx5UHVibGljS2V5IH0gZnJvbSAnLi4vb3V0cHV0U2NyaXB0cyc7XG5cbi8qKlxuICogQWRkIGEgdmVyaWZpYWJsZSB3YWxsZXQgb3V0cHV0IHRvIHRoZSBQU0JULiBUaGUgb3V0cHV0IGFuZCBhbGwgZGF0YVxuICogbmVlZGVkIHRvIHZlcmlmeSBpdCBmcm9tIHB1YmxpYyBrZXlzIG9ubHkgYXJlIGFkZGVkIHRvIHRoZSBQU0JULlxuICogVHlwaWNhbGx5IHRoZXNlIGFyZSBjaGFuZ2Ugb3V0cHV0c1xuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIGFkZCBjaGFuZ2Ugb3V0cHV0IHRvXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXYWxsZXRPdXRwdXRUb1BzYnQoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIHZhbHVlOiBiaWdpbnRcbik6IHZvaWQge1xuICBjb25zdCB3YWxsZXRLZXlzID0gcm9vdFdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpO1xuICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICBjb25zdCBwYXltZW50ID1cbiAgICAgIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IGNyZWF0ZVBheW1lbnRQMnRyKHdhbGxldEtleXMucHVibGljS2V5cykgOiBjcmVhdGVQYXltZW50UDJ0ck11c2lnMih3YWxsZXRLZXlzLnB1YmxpY0tleXMpO1xuICAgIGNvbnN0IGFsbExlYWZIYXNoZXMgPSBwYXltZW50LnJlZGVlbXMhLm1hcCgocikgPT4gdGFwcm9vdC5oYXNoVGFwTGVhZihyLm91dHB1dCEpKTtcblxuICAgIHBzYnQuYWRkT3V0cHV0KHtcbiAgICAgIHNjcmlwdDogcGF5bWVudC5vdXRwdXQhLFxuICAgICAgdmFsdWUsXG4gICAgICB0YXBUcmVlOiBwYXltZW50LnRhcFRyZWUsXG4gICAgICB0YXBJbnRlcm5hbEtleTogcGF5bWVudC5pbnRlcm5hbFB1YmtleSxcbiAgICAgIHRhcEJpcDMyRGVyaXZhdGlvbjogWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiB7XG4gICAgICAgIGNvbnN0IHB1YmtleSA9IHRvWE9ubHlQdWJsaWNLZXkod2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXkpO1xuICAgICAgICBjb25zdCBsZWFmSGFzaGVzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICBwYXltZW50LnJlZGVlbXMhLmZvckVhY2goKHIsIGlkeCkgPT4ge1xuICAgICAgICAgIGlmIChyLnB1YmtleXMhLmZpbmQoKHBrKSA9PiBway5lcXVhbHMocHVia2V5KSkpIHtcbiAgICAgICAgICAgIGxlYWZIYXNoZXMucHVzaChhbGxMZWFmSGFzaGVzW2lkeF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVhZkhhc2hlcyxcbiAgICAgICAgICBwdWJrZXksXG4gICAgICAgICAgcGF0aDogd2FsbGV0S2V5cy5wYXRoc1tpZHhdLFxuICAgICAgICAgIG1hc3RlckZpbmdlcnByaW50OiByb290V2FsbGV0S2V5cy50cmlwbGVbaWR4XS5maW5nZXJwcmludCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgc2NyaXB0UHViS2V5LCB3aXRuZXNzU2NyaXB0LCByZWRlZW1TY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICBwc2J0LmFkZE91dHB1dCh7XG4gICAgICBzY3JpcHQ6IHNjcmlwdFB1YktleSxcbiAgICAgIHZhbHVlLFxuICAgICAgYmlwMzJEZXJpdmF0aW9uOiBbMCwgMSwgMl0ubWFwKChpZHgpID0+ICh7XG4gICAgICAgIHB1YmtleTogd2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfSkpLFxuICAgIH0pO1xuICAgIGNvbnN0IG91dHB1dEluZGV4ID0gcHNidC50eE91dHB1dHMubGVuZ3RoIC0gMTtcbiAgICBpZiAod2l0bmVzc1NjcmlwdCkge1xuICAgICAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIHsgd2l0bmVzc1NjcmlwdCB9KTtcbiAgICB9XG4gICAgaWYgKHJlZGVlbVNjcmlwdCkge1xuICAgICAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIHsgcmVkZWVtU2NyaXB0IH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQkEsZ0ZBMENDO0FBWUQsOEVBaURDO0FBY0Qsa0RBaUJDO0FBZ0JELDhEQVFDO0FBZUQsc0RBcUJDO0FBNkJELHNEQWNDO0FBaFFELG1DQUFzQztBQUV0QyxpREFBaUQ7QUFJakQscUNBQXlEO0FBQ3pELHlDQUEyRDtBQUMzRCxvREFBd0g7QUFFeEg7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixrQ0FBa0MsQ0FDaEQsY0FBOEIsRUFDOUIsVUFBNkIsRUFDN0IsVUFBa0IsRUFDbEIsT0FBaUI7SUFFakIsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztJQUVwQyxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsdUJBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFnQixFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFD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LE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEYsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxNQUdyQztJQUNDLElBQUksTUFBTSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLG1GQUFtRixDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDhCQUFtQixFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUIsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSw4QkFBbUIsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdGQUFnRixDQUFDLENBQUM7QUFDcEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9rIGFzIGFzc2VydCB9IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IFBheW1lbnQsIHRhcHJvb3QgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IFBzYnRPdXRwdXQsIFBzYnRPdXRwdXRVcGRhdGUgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFV0eG9Qc2J0IH0gZnJvbSAnLi4vVXR4b1BzYnQnO1xuaW1wb3J0IHsgUm9vdFdhbGxldEtleXMsIERlcml2ZWRXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IENoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gZnJvbSAnLi9jaGFpbnMnO1xuaW1wb3J0IHsgZ2V0U2NyaXB0SWRGcm9tUGF0aCwgU2NyaXB0SWQgfSBmcm9tICcuL1NjcmlwdElkJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIGNyZWF0ZVBheW1lbnRQMnRyLCBjcmVhdGVQYXltZW50UDJ0ck11c2lnMiwgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQklQMzIgZGVyaXZhdGlvbiBkYXRhIGZvciBhIFBTQlQgb3V0cHV0LlxuICpcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyByb290IHdhbGxldCBrZXlzIHVzZWQgZm9yIG1hc3RlciBmaW5nZXJwcmludHNcbiAqIEBwYXJhbSB3YWxsZXRLZXlzIGRlcml2ZWQgd2FsbGV0IGtleXMgZm9yIHRoZSBzcGVjaWZpYyBjaGFpbiBhbmQgaW5kZXhcbiAqIEBwYXJhbSBzY3JpcHRUeXBlIHRoZSBzY3JpcHQgdHlwZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byB1c2UgcmVndWxhciBvciB0YXByb290IGRlcml2YXRpb25cbiAqIEBwYXJhbSBwYXltZW50IG9wdGlvbmFsIHBheW1lbnQgb2JqZWN0IGZvciB0YXByb290IHNjcmlwdHMgdG8gY2FsY3VsYXRlIGxlYWYgaGFzaGVzXG4gKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBCSVAzMiBkZXJpdmF0aW9uIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBzYnRCaXAzMkRlcml2YXRpb25PdXRwdXRVcGRhdGUoXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgd2FsbGV0S2V5czogRGVyaXZlZFdhbGxldEtleXMsXG4gIHNjcmlwdFR5cGU6IHN0cmluZyxcbiAgcGF5bWVudD86IFBheW1lbnRcbik6IFBzYnRPdXRwdXRVcGRhdGUge1xuICBjb25zdCB1cGRhdGU6IFBzYnRPdXRwdXRVcGRhdGUgPSB7fTtcblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGlmICghcGF5bWVudCB8fCAhcGF5bWVudC5yZWRlZW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheW1lbnQgb2JqZWN0IHdpdGggcmVkZWVtcyBpcyByZXF1aXJlZCBmb3IgdGFwcm9vdCBkZXJpdmF0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsTGVhZkhhc2hlcyA9IHBheW1lbnQucmVkZWVtcy5tYXAoKHIpID0+IHRhcHJvb3QuaGFzaFRhcExlYWYoci5vdXRwdXQhKSk7XG5cbiAgICB1cGRhdGUudGFwQmlwMzJEZXJpdmF0aW9uID0gWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiB7XG4gICAgICBjb25zdCBwdWJrZXkgPSB0b1hPbmx5UHVibGljS2V5KHdhbGxldEtleXMudHJpcGxlW2lkeF0ucHVibGljS2V5KTtcbiAgICAgIGNvbnN0IGxlYWZIYXNoZXM6IEJ1ZmZlcltdID0gW107XG5cbiAgICAgIGFzc2VydChwYXltZW50LnJlZGVlbXMpO1xuICAgICAgcGF5bWVudC5yZWRlZW1zLmZvckVhY2goKHI6IGFueSwgcmVkZWVtSWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHIucHVia2V5cyEuZmluZCgocGs6IEJ1ZmZlcikgPT4gcGsuZXF1YWxzKHB1YmtleSkpKSB7XG4gICAgICAgICAgbGVhZkhhc2hlcy5wdXNoKGFsbExlYWZIYXNoZXNbcmVkZWVtSWR4XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWFmSGFzaGVzLFxuICAgICAgICBwdWJrZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGUuYmlwMzJEZXJpdmF0aW9uID0gWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiAoe1xuICAgICAgcHVia2V5OiB3YWxsZXRLZXlzLnRyaXBsZVtpZHhdLnB1YmxpY0tleSxcbiAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgIG1hc3RlckZpbmdlcnByaW50OiByb290V2FsbGV0S2V5cy50cmlwbGVbaWR4XS5maW5nZXJwcmludCxcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgUFNCVCBvdXRwdXQgdXBkYXRlIG9iamVjdCBmcm9tIGEgUFNCVCBvdXRwdXQgYW5kIG91dHB1dCBzY3JpcHQuXG4gKlxuICogQHBhcmFtIG91dHB1dCB0aGUgUFNCVCBvdXRwdXQgdG8gZ2V0IHVwZGF0ZSBmb3JcbiAqIEBwYXJhbSBvdXRwdXRTY3JpcHQgdGhlIG91dHB1dCBzY3JpcHRcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHQgdHlwZSlcbiAqIEBwYXJhbSBpbmRleCBkZXJpdmF0aW9uIGluZGV4IGZvciB0aGUgY2hhbmdlIGFkZHJlc3NcbiAqIEByZXR1cm5zIFBzYnRPdXRwdXRVcGRhdGUgb2JqZWN0IHdpdGggdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQc2J0T3V0cHV0VXBkYXRlRnJvbVBzYnRPdXRwdXQoXG4gIG91dHB1dDogUHNidE91dHB1dCxcbiAgb3V0cHV0U2NyaXB0OiBCdWZmZXIsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidE91dHB1dFVwZGF0ZSB7XG4gIGNvbnN0IHdhbGxldEtleXMgPSByb290V2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBjb25zdCB1cGRhdGU6IFBzYnRPdXRwdXRVcGRhdGUgPSB7fTtcblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGNvbnN0IHBheW1lbnQgPVxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gY3JlYXRlUGF5bWVudFAydHIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKSA6IGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyKHdhbGxldEtleXMucHVibGljS2V5cyk7XG4gICAgaWYgKCFwYXltZW50Lm91dHB1dCB8fCAhcGF5bWVudC5vdXRwdXQuZXF1YWxzKG91dHB1dFNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHVwZGF0ZSBhIHAydHIgb3V0cHV0IHdoZXJlIHRoZSBzY3JpcHRzIGRvIG5vdCBtYXRjaCAtIEZhaWxpbmcuYCk7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXQudGFwVHJlZSkge1xuICAgICAgdXBkYXRlLnRhcFRyZWUgPSBwYXltZW50LnRhcFRyZWU7XG4gICAgfVxuICAgIGlmICghb3V0cHV0LnRhcEludGVybmFsS2V5KSB7XG4gICAgICB1cGRhdGUudGFwSW50ZXJuYWxLZXkgPSBwYXltZW50LmludGVybmFsUHVia2V5O1xuICAgIH1cblxuICAgIGlmICghb3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbikge1xuICAgICAgY29uc3QgZGVyaXZhdGlvblVwZGF0ZSA9IGdldFBzYnRCaXAzMkRlcml2YXRpb25PdXRwdXRVcGRhdGUocm9vdFdhbGxldEtleXMsIHdhbGxldEtleXMsIHNjcmlwdFR5cGUsIHBheW1lbnQpO1xuICAgICAgdXBkYXRlLnRhcEJpcDMyRGVyaXZhdGlvbiA9IGRlcml2YXRpb25VcGRhdGUudGFwQmlwMzJEZXJpdmF0aW9uO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IHNjcmlwdFB1YktleSwgd2l0bmVzc1NjcmlwdCwgcmVkZWVtU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHdhbGxldEtleXMucHVibGljS2V5cywgc2NyaXB0VHlwZSk7XG4gICAgaWYgKCFzY3JpcHRQdWJLZXkuZXF1YWxzKG91dHB1dFNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHVwZGF0ZSBhbiBvdXRwdXQgd2hlcmUgdGhlIHNjcmlwdHMgZG8gbm90IG1hdGNoIC0gRmFpbGluZy5gKTtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIGNvbnN0IGRlcml2YXRpb25VcGRhdGUgPSBnZXRQc2J0QmlwMzJEZXJpdmF0aW9uT3V0cHV0VXBkYXRlKHJvb3RXYWxsZXRLZXlzLCB3YWxsZXRLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICAgIHVwZGF0ZS5iaXAzMkRlcml2YXRpb24gPSBkZXJpdmF0aW9uVXBkYXRlLmJpcDMyRGVyaXZhdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC53aXRuZXNzU2NyaXB0ICYmIHdpdG5lc3NTY3JpcHQpIHtcbiAgICAgIHVwZGF0ZS53aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1NjcmlwdDtcbiAgICB9XG4gICAgaWYgKCFvdXRwdXQucmVkZWVtU2NyaXB0ICYmIHJlZGVlbVNjcmlwdCkge1xuICAgICAgdXBkYXRlLnJlZGVlbVNjcmlwdCA9IHJlZGVlbVNjcmlwdDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgUFNCVCBvdXRwdXQgdXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHNidCB0aGUgUFNCVCB0byBnZXQgb3V0cHV0IHVwZGF0ZSBmb3JcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBvdXRwdXRJbmRleCBvdXRwdXQgaW5kZXggd2hlcmUgdG8gdXBkYXRlIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKiBAcmV0dXJucyBQc2J0T3V0cHV0VXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHNidE91dHB1dFVwZGF0ZShcbiAgcHNidDogVXR4b1BzYnQsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgb3V0cHV0SW5kZXg6IG51bWJlcixcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidE91dHB1dFVwZGF0ZSB7XG4gIGlmIChwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGggPD0gb3V0cHV0SW5kZXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgb3V0cHV0SW5kZXggKCR7b3V0cHV0SW5kZXh9KSBpcyB0b28gbGFyZ2UgZm9yIHRoZSBudW1iZXIgb2Ygb3V0cHV0cyAoJHtwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGh9KWBcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgb3V0cHV0U2NyaXB0ID0gcHNidC5nZXRPdXRwdXRTY3JpcHQob3V0cHV0SW5kZXgpO1xuICBjb25zdCBvdXRwdXQgPSBwc2J0LmRhdGEub3V0cHV0c1tvdXRwdXRJbmRleF07XG5cbiAgcmV0dXJuIGdldFBzYnRPdXRwdXRVcGRhdGVGcm9tUHNidE91dHB1dChvdXRwdXQsIG91dHB1dFNjcmlwdCwgcm9vdFdhbGxldEtleXMsIGNoYWluLCBpbmRleCk7XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSB3YWxsZXQgb3V0cHV0IHdpdGggdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIHdoZW4gbmVjZXNzYXJ5LiBJZiB0aGVcbiAqIGluZm9ybWF0aW9uIGlzIHRoZXJlIGFscmVhZHksIGl0IHdpbGwgc2tpcCBvdmVyIGl0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSBvdXRwdXQgc2NyaXB0IGFuZCB2YWx1ZSBoYXZlIGFscmVhZHkgYmVlbiBzZXQuXG4gKlxuICogQHBhcmFtIHBzYnQgdGhlIFBTQlQgdG8gdXBkYXRlIGNoYW5nZSBvdXRwdXQgYXRcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBvdXRwdXRJbmRleCBvdXRwdXQgaW5kZXggd2hlcmUgdG8gdXBkYXRlIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBjaGFpbjogQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIGdldFBzYnRPdXRwdXRVcGRhdGUocHNidCwgcm9vdFdhbGxldEtleXMsIG91dHB1dEluZGV4LCBjaGFpbiwgaW5kZXgpKTtcbn1cblxuLyoqXG4gKiBBZGQgYSB2ZXJpZmlhYmxlIHdhbGxldCBvdXRwdXQgdG8gdGhlIFBTQlQuIFRoZSBvdXRwdXQgYW5kIGFsbCBkYXRhXG4gKiBuZWVkZWQgdG8gdmVyaWZ5IGl0IGZyb20gcHVibGljIGtleXMgb25seSBhcmUgYWRkZWQgdG8gdGhlIFBTQlQuXG4gKiBUeXBpY2FsbHkgdGhlc2UgYXJlIGNoYW5nZSBvdXRwdXRzLlxuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIGFkZCBjaGFuZ2Ugb3V0cHV0IHRvXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXYWxsZXRPdXRwdXRUb1BzYnQoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIHZhbHVlOiBiaWdpbnQsXG4gIHsgYWRkRGVyaXZhdGlvbkluZm8gPSB0cnVlIH06IHsgYWRkRGVyaXZhdGlvbkluZm8/OiBib29sZWFuIH0gPSB7fVxuKTogdm9pZCB7XG4gIGNvbnN0IHdhbGxldEtleXMgPSByb290V2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGNvbnN0IHBheW1lbnQgPVxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gY3JlYXRlUGF5bWVudFAydHIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKSA6IGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyKHdhbGxldEtleXMucHVibGljS2V5cyk7XG4gICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHBheW1lbnQub3V0cHV0ISwgdmFsdWUgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBzY3JpcHRQdWJLZXk6IHNjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyh3YWxsZXRLZXlzLnB1YmxpY0tleXMsIHNjcmlwdFR5cGUpO1xuICAgIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0LCB2YWx1ZSB9KTtcbiAgfVxuICBpZiAoYWRkRGVyaXZhdGlvbkluZm8pIHtcbiAgICB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzLCBwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGggLSAxLCBjaGFpbiwgaW5kZXgpO1xuICB9XG59XG5cbi8qKlxuICogRm9sZCB0aGUgc2NyaXB0IGlkcyBpbnRvIGEgc2luZ2xlIHNjcmlwdCBpZCwgaWYgdGhleSBhcmUgYWxsIHRoZSBzYW1lLlxuICogQHBhcmFtIHNjcmlwdElkc1xuICovXG5mdW5jdGlvbiBmb2xkU2NyaXB0SWRzKHNjcmlwdElkczogU2NyaXB0SWRbXSk6IFNjcmlwdElkIHtcbiAgaWYgKHNjcmlwdElkcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmb2xkIGVtcHR5IHNjcmlwdCBpZHMnKTtcbiAgfVxuICBzY3JpcHRJZHMuZm9yRWFjaCgoc2NyaXB0SWQsIGkpID0+IHtcbiAgICBpZiAoc2NyaXB0SWQuY2hhaW4gIT09IHNjcmlwdElkc1swXS5jaGFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjaGFpbiBtaXNtYXRjaDogJHtzY3JpcHRJZC5jaGFpbn0gIT0gJHtzY3JpcHRJZHNbMF0uY2hhaW59YCk7XG4gICAgfVxuICAgIGlmIChzY3JpcHRJZC5pbmRleCAhPT0gc2NyaXB0SWRzWzBdLmluZGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluZGV4IG1pc21hdGNoOiAke3NjcmlwdElkLmluZGV4fSAhPSAke3NjcmlwdElkc1swXS5pbmRleH1gKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc2NyaXB0SWRzWzBdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgc2NyaXB0IGlkIGZyb20gdGhlIG91dHB1dC5cbiAqIFRoZSBvdXRwdXQgY2FuIGhhdmUgZWl0aGVyIGJpcDMyRGVyaXZhdGlvbiBvciB0YXBCaXAzMkRlcml2YXRpb24sIGJ1dCBub3QgYm90aC5cbiAqIEBwYXJhbSBvdXRwdXRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgbmVpdGhlciBvciBib3RoIGJpcDMyRGVyaXZhdGlvbiBhbmQgdGFwQmlwMzJEZXJpdmF0aW9uIGFyZSBwcmVzZW50XG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBvdXRwdXQgaXMgZW1wdHlcbiAqIEB0aHJvd3MgRXJyb3IgaWYgd2UgY2Fubm90IGZvbGQgdGhlIHNjcmlwdCBpZHMgaW50byBhIHNpbmdsZSBzY3JpcHQgaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdElkRnJvbU91dHB1dChvdXRwdXQ6IHtcbiAgYmlwMzJEZXJpdmF0aW9uPzogeyBwYXRoOiBzdHJpbmcgfVtdO1xuICB0YXBCaXAzMkRlcml2YXRpb24/OiB7IHBhdGg6IHN0cmluZyB9W107XG59KTogU2NyaXB0SWQge1xuICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbiAmJiBvdXRwdXQudGFwQmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZ2V0IHNjcmlwdCBpZCBmcm9tIG91dHB1dCB3aXRoIGJvdGggYmlwMzJEZXJpdmF0aW9uIGFuZCB0YXBCaXAzMkRlcml2YXRpb24nKTtcbiAgfVxuICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbikge1xuICAgIHJldHVybiBmb2xkU2NyaXB0SWRzKG91dHB1dC5iaXAzMkRlcml2YXRpb24ubWFwKChkKSA9PiBnZXRTY3JpcHRJZEZyb21QYXRoKGQucGF0aCkpKTtcbiAgfVxuICBpZiAob3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbikge1xuICAgIHJldHVybiBmb2xkU2NyaXB0SWRzKG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24ubWFwKChkKSA9PiBnZXRTY3JpcHRJZEZyb21QYXRoKGQucGF0aCkpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBnZXQgc2NyaXB0IGlkIGZyb20gb3V0cHV0IHdpdGhvdXQgYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xufVxuIl19
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getWalletOutputScripts = getWalletOutputScripts;
|
|
4
|
+
exports.getWalletAddress = getWalletAddress;
|
|
4
5
|
const __1 = require("../..");
|
|
5
6
|
const __2 = require("..");
|
|
6
7
|
const outputScripts_1 = require("../outputScripts");
|
|
7
8
|
function getWalletOutputScripts(keys, chain, index) {
|
|
8
|
-
return __2.outputScripts.createOutputScript2of3(keys.deriveForChainAndIndex(chain, index).publicKeys, outputScripts_1.scriptTypeForChain(chain));
|
|
9
|
+
return __2.outputScripts.createOutputScript2of3(keys.deriveForChainAndIndex(chain, index).publicKeys, (0, outputScripts_1.scriptTypeForChain)(chain));
|
|
9
10
|
}
|
|
10
|
-
exports.getWalletOutputScripts = getWalletOutputScripts;
|
|
11
11
|
function getWalletAddress(keys, chain, index, network) {
|
|
12
12
|
return __1.address.fromOutputScript(getWalletOutputScripts(keys, chain, index).scriptPubKey, network);
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0U2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBeUM7QUFDekMsMEJBQThDO0FBRTlDLG9EQUF1RTtBQUV2RSxTQUFnQixzQkFBc0IsQ0FBQyxJQUFvQixFQUFFLEtBQWdCLEVBQUUsS0FBYTtJQUMxRixPQUFPLGlCQUFhLENBQUMsc0JBQXNCLENBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUNwRCxrQ0FBa0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFMRCx3REFLQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLElBQW9CLEVBQUUsS0FBZ0IsRUFBRSxLQUFhLEVBQUUsT0FBZ0I7SUFDdEcsT0FBTyxXQUFPLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEcsQ0FBQztBQUZELDRDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV0d29yaywgYWRkcmVzcyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IENoYWluQ29kZSwgb3V0cHV0U2NyaXB0cyB9IGZyb20gJy4uJztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IHNjcmlwdFR5cGVGb3JDaGFpbiwgU3BlbmRhYmxlU2NyaXB0IH0gZnJvbSAnLi4vb3V0cHV0U2NyaXB0cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXYWxsZXRPdXRwdXRTY3JpcHRzKGtleXM6IFJvb3RXYWxsZXRLZXlzLCBjaGFpbjogQ2hhaW5Db2RlLCBpbmRleDogbnVtYmVyKTogU3BlbmRhYmxlU2NyaXB0IHtcbiAgcmV0dXJuIG91dHB1dFNjcmlwdHMuY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhcbiAgICBrZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KS5wdWJsaWNLZXlzLFxuICAgIHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbilcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdhbGxldEFkZHJlc3Moa2V5czogUm9vdFdhbGxldEtleXMsIGNoYWluOiBDaGFpbkNvZGUsIGluZGV4OiBudW1iZXIsIG5ldHdvcms6IE5ldHdvcmspOiBzdHJpbmcge1xuICByZXR1cm4gYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KGdldFdhbGxldE91dHB1dFNjcmlwdHMoa2V5cywgY2hhaW4sIGluZGV4KS5zY3JpcHRQdWJLZXksIG5ldHdvcmspO1xufVxuIl19
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0U2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLHdEQUtDO0FBRUQsNENBRUM7QUFkRCw2QkFBeUM7QUFDekMsMEJBQThDO0FBRTlDLG9EQUF1RTtBQUV2RSxTQUFnQixzQkFBc0IsQ0FBQyxJQUFvQixFQUFFLEtBQWdCLEVBQUUsS0FBYTtJQUMxRixPQUFPLGlCQUFhLENBQUMsc0JBQXNCLENBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUNwRCxJQUFBLGtDQUFrQixFQUFDLEtBQUssQ0FBQyxDQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLElBQW9CLEVBQUUsS0FBZ0IsRUFBRSxLQUFhLEVBQUUsT0FBZ0I7SUFDdEcsT0FBTyxXQUFPLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmssIGFkZHJlc3MgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBDaGFpbkNvZGUsIG91dHB1dFNjcmlwdHMgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBSb290V2FsbGV0S2V5cyB9IGZyb20gJy4vV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBzY3JpcHRUeXBlRm9yQ2hhaW4sIFNwZW5kYWJsZVNjcmlwdCB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2FsbGV0T3V0cHV0U2NyaXB0cyhrZXlzOiBSb290V2FsbGV0S2V5cywgY2hhaW46IENoYWluQ29kZSwgaW5kZXg6IG51bWJlcik6IFNwZW5kYWJsZVNjcmlwdCB7XG4gIHJldHVybiBvdXRwdXRTY3JpcHRzLmNyZWF0ZU91dHB1dFNjcmlwdDJvZjMoXG4gICAga2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCkucHVibGljS2V5cyxcbiAgICBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXYWxsZXRBZGRyZXNzKGtleXM6IFJvb3RXYWxsZXRLZXlzLCBjaGFpbjogQ2hhaW5Db2RlLCBpbmRleDogbnVtYmVyLCBuZXR3b3JrOiBOZXR3b3JrKTogc3RyaW5nIHtcbiAgcmV0dXJuIGFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChnZXRXYWxsZXRPdXRwdXRTY3JpcHRzKGtleXMsIGNoYWluLCBpbmRleCkuc2NyaXB0UHViS2V5LCBuZXR3b3JrKTtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BIP32Interface } from '
|
|
1
|
+
import { BIP32Interface } from '@bitgo-beta/secp256k1';
|
|
2
2
|
import { DerivedWalletKeys, RootWalletKeys, WalletKeys } from './WalletKeys';
|
|
3
3
|
import { Triple } from '../types';
|
|
4
4
|
export declare class WalletUnspentSigner<T extends WalletKeys> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletUnspentSigner.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletUnspentSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"WalletUnspentSigner.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletUnspentSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAe,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,mBAAmB,CAAC,CAAC,SAAS,UAAU;IAgB1C,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,cAAc;IAhBjC,SAAgB,UAAU,EAAE,CAAC,CAAC;IAE9B,MAAM,CAAC,IAAI,CACT,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,GACvB,mBAAmB,CAAC,cAAc,CAAC;IAItC,QAAQ,CAAC,WAAW,MAAC;IACrB,QAAQ,CAAC,aAAa,MAAC;gBAGrB,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,EACxC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc;IAwBjC;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;CAe7F"}
|
|
@@ -3,31 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WalletUnspentSigner = void 0;
|
|
4
4
|
const WalletKeys_1 = require("./WalletKeys");
|
|
5
5
|
class WalletUnspentSigner {
|
|
6
|
+
static from(walletKeys, signer, cosigner) {
|
|
7
|
+
return new WalletUnspentSigner(walletKeys, signer, cosigner);
|
|
8
|
+
}
|
|
6
9
|
constructor(walletKeys, signer, cosigner) {
|
|
7
10
|
this.signer = signer;
|
|
8
11
|
this.cosigner = cosigner;
|
|
9
12
|
if (Array.isArray(walletKeys)) {
|
|
10
13
|
walletKeys = new WalletKeys_1.RootWalletKeys(walletKeys);
|
|
11
14
|
}
|
|
12
|
-
this.signerIndex = walletKeys.triple.findIndex((k) => WalletKeys_1.eqPublicKey(k, signer));
|
|
15
|
+
this.signerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, signer));
|
|
13
16
|
if (this.signerIndex === undefined) {
|
|
14
17
|
throw new Error(`signer not part of walletKeys`);
|
|
15
18
|
}
|
|
16
|
-
this.cosignerIndex = walletKeys.triple.findIndex((k) => WalletKeys_1.eqPublicKey(k, cosigner));
|
|
19
|
+
this.cosignerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, cosigner));
|
|
17
20
|
if (this.cosignerIndex === undefined) {
|
|
18
21
|
throw new Error(`cosigner not part of walletKeys`);
|
|
19
22
|
}
|
|
20
23
|
this.walletKeys = walletKeys;
|
|
21
|
-
if (WalletKeys_1.eqPublicKey(signer, cosigner)) {
|
|
24
|
+
if ((0, WalletKeys_1.eqPublicKey)(signer, cosigner)) {
|
|
22
25
|
throw new Error(`signer must not equal cosigner`);
|
|
23
26
|
}
|
|
24
27
|
if (signer.isNeutered()) {
|
|
25
28
|
throw new Error(`signer must have private key`);
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
|
-
static from(walletKeys, signer, cosigner) {
|
|
29
|
-
return new WalletUnspentSigner(walletKeys, signer, cosigner);
|
|
30
|
-
}
|
|
31
31
|
/**
|
|
32
32
|
* @param chain
|
|
33
33
|
* @param index
|
|
@@ -44,4 +44,4 @@ class WalletUnspentSigner {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
exports.WalletUnspentSigner = WalletUnspentSigner;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0VW5zcGVudFNpZ25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0VW5zcGVudFNpZ25lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw2Q0FBMEY7QUFHMUYsTUFBYSxtQkFBbUI7SUFHOUIsTUFBTSxDQUFDLElBQUksQ0FDVCxVQUEwQixFQUMxQixNQUFzQixFQUN0QixRQUF3QjtRQUV4QixPQUFPLElBQUksbUJBQW1CLENBQWlCLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUtELFlBQ0UsVUFBK0MsRUFDeEMsTUFBc0IsRUFDdEIsUUFBd0I7UUFEeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFFL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsVUFBVSxHQUFHLElBQUksMkJBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBVyxFQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQVcsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQWUsQ0FBQztRQUVsQyxJQUFJLElBQUEsd0JBQVcsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pELElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSw4QkFBaUIsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxZQUFZLDJCQUFjLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksbUJBQW1CLENBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ3BGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDekYsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQTdERCxrREE2REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5cbmltcG9ydCB7IERlcml2ZWRXYWxsZXRLZXlzLCBlcVB1YmxpY0tleSwgUm9vdFdhbGxldEtleXMsIFdhbGxldEtleXMgfSBmcm9tICcuL1dhbGxldEtleXMnO1xuaW1wb3J0IHsgVHJpcGxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0VW5zcGVudFNpZ25lcjxUIGV4dGVuZHMgV2FsbGV0S2V5cz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgd2FsbGV0S2V5czogVDtcblxuICBzdGF0aWMgZnJvbShcbiAgICB3YWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgICBzaWduZXI6IEJJUDMySW50ZXJmYWNlLFxuICAgIGNvc2lnbmVyOiBCSVAzMkludGVyZmFjZVxuICApOiBXYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPiB7XG4gICAgcmV0dXJuIG5ldyBXYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPih3YWxsZXRLZXlzLCBzaWduZXIsIGNvc2lnbmVyKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHNpZ25lckluZGV4O1xuICByZWFkb25seSBjb3NpZ25lckluZGV4O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHdhbGxldEtleXM6IFdhbGxldEtleXMgfCBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LFxuICAgIHB1YmxpYyBzaWduZXI6IEJJUDMySW50ZXJmYWNlLFxuICAgIHB1YmxpYyBjb3NpZ25lcjogQklQMzJJbnRlcmZhY2VcbiAgKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkod2FsbGV0S2V5cykpIHtcbiAgICAgIHdhbGxldEtleXMgPSBuZXcgUm9vdFdhbGxldEtleXMod2FsbGV0S2V5cyk7XG4gICAgfVxuICAgIHRoaXMuc2lnbmVySW5kZXggPSB3YWxsZXRLZXlzLnRyaXBsZS5maW5kSW5kZXgoKGspID0+IGVxUHVibGljS2V5KGssIHNpZ25lcikpO1xuICAgIGlmICh0aGlzLnNpZ25lckluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmVyIG5vdCBwYXJ0IG9mIHdhbGxldEtleXNgKTtcbiAgICB9XG4gICAgdGhpcy5jb3NpZ25lckluZGV4ID0gd2FsbGV0S2V5cy50cmlwbGUuZmluZEluZGV4KChrKSA9PiBlcVB1YmxpY0tleShrLCBjb3NpZ25lcikpO1xuICAgIGlmICh0aGlzLmNvc2lnbmVySW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb3NpZ25lciBub3QgcGFydCBvZiB3YWxsZXRLZXlzYCk7XG4gICAgfVxuXG4gICAgdGhpcy53YWxsZXRLZXlzID0gd2FsbGV0S2V5cyBhcyBUO1xuXG4gICAgaWYgKGVxUHVibGljS2V5KHNpZ25lciwgY29zaWduZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNpZ25lciBtdXN0IG5vdCBlcXVhbCBjb3NpZ25lcmApO1xuICAgIH1cbiAgICBpZiAoc2lnbmVyLmlzTmV1dGVyZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzaWduZXIgbXVzdCBoYXZlIHByaXZhdGUga2V5YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICogQHJldHVybiBXYWxsZXRVbnNwZW50U2lnbmVyIHRoYXQgY29udGFpbnMga2V5cyBmb3IgZ2VuZXJhdGluZyBvdXRwdXQgc2NyaXB0cyBhbmQgc2lnbmF0dXJlcy5cbiAgICovXG4gIGRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW46IG51bWJlciwgaW5kZXg6IG51bWJlcik6IFdhbGxldFVuc3BlbnRTaWduZXI8RGVyaXZlZFdhbGxldEtleXM+IHtcbiAgICBpZiAodGhpcy53YWxsZXRLZXlzIGluc3RhbmNlb2YgRGVyaXZlZFdhbGxldEtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IGRlcml2ZSBhZ2FpbiBmcm9tIERlcml2ZWRXYWxsZXRLZXlzYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2FsbGV0S2V5cyBpbnN0YW5jZW9mIFJvb3RXYWxsZXRLZXlzKSB7XG4gICAgICByZXR1cm4gbmV3IFdhbGxldFVuc3BlbnRTaWduZXIoXG4gICAgICAgIHRoaXMud2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCksXG4gICAgICAgIHRoaXMuc2lnbmVyLmRlcml2ZVBhdGgodGhpcy53YWxsZXRLZXlzLmdldERlcml2YXRpb25QYXRoKHRoaXMuc2lnbmVyLCBjaGFpbiwgaW5kZXgpKSxcbiAgICAgICAgdGhpcy5jb3NpZ25lci5kZXJpdmVQYXRoKHRoaXMud2FsbGV0S2V5cy5nZXREZXJpdmF0aW9uUGF0aCh0aGlzLmNvc2lnbmVyLCBjaGFpbiwgaW5kZXgpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc3RhdGVgKTtcbiAgfVxufVxuIl19
|
|
@@ -18,14 +18,14 @@ export declare const chainCodesP2shP2wsh: readonly [10, 11];
|
|
|
18
18
|
export declare const chainCodesP2wsh: readonly [20, 21];
|
|
19
19
|
export declare const chainCodesP2tr: readonly [30, 31];
|
|
20
20
|
export declare const chainCodesP2trMusig2: readonly [40, 41];
|
|
21
|
-
export declare const chainCodes: (0 | 1 | 31 |
|
|
22
|
-
export
|
|
21
|
+
export declare const chainCodes: (0 | 1 | 31 | 10 | 11 | 20 | 21 | 30 | 40 | 41)[];
|
|
22
|
+
export type ChainCode = (typeof chainCodes)[number];
|
|
23
23
|
export declare function isChainCode(n: unknown): n is ChainCode;
|
|
24
24
|
/**
|
|
25
25
|
* A script type maps to two ChainCodes:
|
|
26
26
|
* External addresses are intended for deposits, internal addresses are intended for change outputs.
|
|
27
27
|
*/
|
|
28
|
-
export
|
|
28
|
+
export type ChainCodePair = Readonly<[external: ChainCode, internal: ChainCode]>;
|
|
29
29
|
/**
|
|
30
30
|
* @return ChainCodePair for input
|
|
31
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,cAAc,iBAAkB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAoB,CAAC;AACrD,eAAO,MAAM,eAAe,mBAAoB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAoB,CAAC;AAChD,eAAO,MAAM,oBAAoB,mBAAoB,CAAC;AACtD,eAAO,MAAM,UAAU,mDAMtB,CAAC;AACF,
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,cAAc,iBAAkB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAoB,CAAC;AACrD,eAAO,MAAM,eAAe,mBAAoB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAoB,CAAC;AAChD,eAAO,MAAM,oBAAoB,mBAAoB,CAAC;AACtD,eAAO,MAAM,UAAU,mDAMtB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACpD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAEtD;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAcjF;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,cAAc,GAAG,aAAa,CAiBxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CAOnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAQ9C"}
|