@bitgo/abstract-utxo 11.0.0 → 11.2.0

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.
Files changed (47) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  2. package/dist/cjs/src/abstractUtxoCoin.js +9 -4
  3. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -1
  4. package/dist/cjs/src/address/fixedScript.js +4 -1
  5. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +3 -3
  6. package/dist/cjs/src/transaction/decode.d.ts +13 -1
  7. package/dist/cjs/src/transaction/decode.d.ts.map +1 -1
  8. package/dist/cjs/src/transaction/decode.js +19 -1
  9. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -1
  10. package/dist/cjs/src/transaction/descriptor/parse.js +3 -9
  11. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  12. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +3 -4
  13. package/dist/cjs/src/transaction/explainTransaction.d.ts +2 -2
  14. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -1
  15. package/dist/cjs/src/transaction/explainTransaction.js +12 -10
  16. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -1
  17. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +6 -2
  18. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -1
  19. package/dist/cjs/src/transaction/signTransaction.js +8 -11
  20. package/dist/cjs/test/unit/address.js +27 -1
  21. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.d.ts +2 -0
  22. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.d.ts.map +1 -0
  23. package/dist/cjs/test/unit/transaction/descriptor/signTransactionE2E.js +100 -0
  24. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.d.ts +2 -0
  25. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.d.ts.map +1 -0
  26. package/dist/cjs/test/unit/transaction/descriptor/signTransactionGuard.js +84 -0
  27. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  28. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  29. package/dist/esm/abstractUtxoCoin.js +10 -5
  30. package/dist/esm/address/fixedScript.d.ts.map +1 -1
  31. package/dist/esm/address/fixedScript.js +4 -1
  32. package/dist/esm/impl/btc/inscriptionBuilder.js +3 -3
  33. package/dist/esm/transaction/decode.d.ts +13 -1
  34. package/dist/esm/transaction/decode.d.ts.map +1 -1
  35. package/dist/esm/transaction/decode.js +19 -2
  36. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -1
  37. package/dist/esm/transaction/descriptor/parse.js +3 -9
  38. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  39. package/dist/esm/transaction/descriptor/verifyTransaction.js +3 -4
  40. package/dist/esm/transaction/explainTransaction.d.ts +2 -2
  41. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -1
  42. package/dist/esm/transaction/explainTransaction.js +13 -11
  43. package/dist/esm/transaction/fixedScript/verifyTransaction.d.ts.map +1 -1
  44. package/dist/esm/transaction/fixedScript/verifyTransaction.js +6 -2
  45. package/dist/esm/transaction/signTransaction.d.ts.map +1 -1
  46. package/dist/esm/transaction/signTransaction.js +10 -13
  47. package/package.json +8 -8
@@ -103,7 +103,11 @@ async function verifyTransaction(coin, bitgo, params) {
103
103
  let userPublicKeyVerified = false;
104
104
  try {
105
105
  // verify the user public key matches the private key - this will throw if there is no match
106
- userPublicKeyVerified = (0, verifyKey_1.verifyUserPublicKey)(bitgo, { userKeychain: keychains.user, disableNetworking, txParams });
106
+ userPublicKeyVerified = (0, verifyKey_1.verifyUserPublicKey)(bitgo, {
107
+ userKeychain: keychains.user,
108
+ disableNetworking,
109
+ txParams,
110
+ });
107
111
  }
108
112
  catch (e) {
109
113
  debug('failed to verify user public key!', e);
@@ -196,4 +200,4 @@ async function verifyTransaction(coin, bitgo, params) {
196
200
  }
197
201
  return true;
198
202
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5VHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvdmVyaWZ5VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2Q0EsOENBdUpDO0FBcE1ELGtEQUErQjtBQUMvQixvREFBdUI7QUFDdkIsZ0VBQXFDO0FBQ3JDLDhDQUE4RTtBQUM5RSx5REFBMkM7QUFJM0MsK0NBQTJHO0FBQzNHLGdEQUE4RDtBQUU5RCxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVUsRUFBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxnQkFBMEI7SUFDL0MsaUdBQWlHO0lBQ2pHLHFEQUFxRDtJQUNyRCxJQUFJLENBQUMsZ0JBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0Qsa0ZBQWtGO0lBQ2xGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0ksS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUFzQixFQUN0QixLQUFnQixFQUNoQixNQUF5QztJQUV6QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFMUUsTUFBTSxhQUFhLEdBQUcsTUFBTSxnQ0FBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUE0QixFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWhILGdFQUFnRTtJQUNoRSxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQWUsRUFBUyxFQUFFO1FBQ2pELE1BQU0sSUFBSSxnQ0FBcUIs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QUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUN4RixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ1YsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxNQUFNLEdBQUcsR0FBRyxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBRXZDLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYix1QkFBdUIsWUFBWSw4Q0FBOEMsV0FBVyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FDcEgsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQml0R29CYXNlLCBUeEludGVudE1pc21hdGNoRXJyb3IsIElCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbmltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4sIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgT3V0cHV0LCBQYXJzZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHZlcmlmeUN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMsIHZlcmlmeUtleVNpZ25hdHVyZSwgdmVyaWZ5VXNlclB1YmxpY0tleSB9IGZyb20gJy4uLy4uL3ZlcmlmeUtleSc7XG5pbXBvcnQgeyBnZXRQc2J0VHhJbnB1dHMsIGdldFR4SW5wdXRzIH0gZnJvbSAnLi4vZmV0Y2hJbnB1dHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ2JpdGdvOmFic3RyYWN0LXV0eG86dmVyaWZ5VHJhbnNhY3Rpb24nKTtcblxuLyoqXG4gKiBHZXQgdGhlIG1heGltdW0gcGVyY2VudGFnZSBsaW1pdCBmb3IgcGF5LWFzLXlvdS1nbyBvdXRwdXRzXG4gKlxuICogQHByb3RlY3RlZFxuICovXG5mdW5jdGlvbiBnZXRQYXlHb0xpbWl0KGFsbG93UGF5Z29PdXRwdXQ/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgLy8gYWxsb3dpbmcgcGF5Z28gb3V0cHV0cyBuZWVkcyB0byBiZSB0aGUgZGVmYXVsdCBiZWhhdmlvciwgc28gb25seSBkaXNhbGxvdyBwYXlnbyBvdXRwdXRzIGlmIHRoZVxuICAvLyByZWxldmFudCB2ZXJpZmljYXRpb24gb3B0aW9uIGlzIGJvdGggc2V0IGFuZCBmYWxzZVxuICBpZiAoIV8uaXNOaWwoYWxsb3dQYXlnb091dHB1dCkgJiYgIWFsbG93UGF5Z29PdXRwdXQpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICAvLyAxNTAgYmFzaXMgcG9pbnRzIGlzIHRoZSBhYnNvbHV0ZSBwZXJtaXR0ZWQgbWF4aW11bSBpZiBwYXlnbyBvdXRwdXRzIGFyZSBhbGxvd2VkXG4gIHJldHVybiAwLjAxNTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgdGhhdCBhIHRyYW5zYWN0aW9uIHByZWJ1aWxkIGNvbXBsaWVzIHdpdGggdGhlIG9yaWdpbmFsIGludGVudGlvbiBmb3IgZml4ZWQtc2NyaXB0IHdhbGxldHNcbiAqXG4gKiBUaGlzIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZvciB0cmFkaXRpb25hbCBVVFhPIGNvaW5zIHVzaW5nIGZpeGVkIHNjcmlwdHNcbiAqIChub24tZGVzY3JpcHRvciB3YWxsZXRzKS4gSXQgdmFsaWRhdGVzIGtleWNoYWlucywgc2lnbmF0dXJlcywgb3V0cHV0cywgYW5kIGFtb3VudHMuXG4gKlxuICogQHBhcmFtIGNvaW4gLSBUaGUgVVRYTyBjb2luIGluc3RhbmNlXG4gKiBAcGFyYW0gYml0Z28gLSBCaXRHbyBBUEkgaW5zdGFuY2UgZm9yIG5ldHdvcmsgY2FsbHNcbiAqIEBwYXJhbSBwYXJhbXMgLSBWZXJpZmljYXRpb24gcGFyYW1ldGVyc1xuICogQHBhcmFtIHBhcmFtcy50eFBhcmFtcyAtIFRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHNlbmRcbiAqIEBwYXJhbSBwYXJhbXMudHhQcmVidWlsZCAtIFByZWJ1aWxkIG9iamVjdCByZXR1cm5lZCBieSBzZXJ2ZXJcbiAqIEBwYXJhbSBwYXJhbXMud2FsbGV0IC0gV2FsbGV0IG9iamVjdCB0byBvYnRhaW4ga2V5cyB0byB2ZXJpZnkgYWdhaW5zdFxuICogQHBhcmFtIHBhcmFtcy52ZXJpZmljYXRpb24gLSBWZXJpZmljYXRpb24gb3B0aW9ucyAoZGlzYWJsZU5ldHdvcmtpbmcsIGtleWNoYWlucywgYWRkcmVzc2VzKVxuICogQHBhcmFtIHBhcmFtcy5yZXFJZCAtIE9wdGlvbmFsIHJlcXVlc3QgSUQgZm9yIGxvZ2dpbmdcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZlcmlmaWNhdGlvbiBwYXNzZXNcbiAqIEB0aHJvd3Mge1R4SW50ZW50TWlzbWF0Y2hFcnJvcn0gaWYgdHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5VHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIGJpZ2ludCB8IG51bWJlcj4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zPFROdW1iZXI+XG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0LCB2ZXJpZmljYXRpb24gPSB7fSwgcmVxSWQgfSA9IHBhcmFtcztcblxuICBjb25zdCB0eEV4cGxhbmF0aW9uID0gYXdhaXQgVHhJbnRlbnRNaXNtYXRjaEVycm9yLnRyeUdldFR4RXhwbGFuYXRpb24oY29pbiBhcyB1bmtub3duIGFzIElCYXNlQ29pbiwgdHhQcmVidWlsZCk7XG5cbiAgLy8gSGVscGVyIHRvIHRocm93IFR4SW50ZW50TWlzbWF0Y2hFcnJvciB3aXRoIGNvbnNpc3RlbnQgY29udGV4dFxuICBjb25zdCB0aHJvd1R4TWlzbWF0Y2ggPSAobWVzc2FnZTogc3RyaW5nKTogbmV2ZXIgPT4ge1xuICAgIHRocm93IG5ldyBUeEludGVudE1pc21hdGNoRXJyb3IobWVzc2FnZSwgcmVxSWQsIFt0eFBhcmFtc10sIHR4UHJlYnVpbGQudHhIZXgsIHR4RXhwbGFuYXRpb24pO1xuICB9O1xuXG4gIGlmICghXy5pc1VuZGVmaW5lZCh2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpICYmICFfLmlzQm9vbGVhbih2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nIG11c3QgYmUgYSBib29sZWFuJyk7XG4gIH1cbiAgY29uc3QgaXNQc2J0ID0gdHhQcmVidWlsZC50eEhleCAmJiB1dHhvbGliLmJpdGdvLmlzUHNidCh0eFByZWJ1aWxkLnR4SGV4KTtcbiAgaWYgKGlzUHNidCAmJiB0eFByZWJ1aWxkLnR4SW5mbz8udW5zcGVudHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBub3QgaGF2ZSB1bnNwZW50cyBpbiB0eEluZm8gZm9yIHBzYnQnKTtcbiAgfVxuICBjb25zdCBkaXNhYmxlTmV0d29ya2luZyA9ICEhdmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nO1xuICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbjogUGFyc2VkVHJhbnNhY3Rpb248VE51bWJlcj4gPSBhd2FpdCBjb2luLnBhcnNlVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4UGFyYW1zLFxuICAgIHR4UHJlYnVpbGQsXG4gICAgd2FsbGV0LFxuICAgIHZlcmlmaWNhdGlvbixcbiAgICByZXFJZCxcbiAgfSk7XG5cbiAgY29uc3Qga2V5Y2hhaW5zID0gcGFyc2VkVHJhbnNhY3Rpb24ua2V5Y2hhaW5zO1xuXG4gIC8vIHZlcmlmeSB0aGF0IHRoZSBjbGFpbWVkIHVzZXIgcHVibGljIGtleSBjb3JyZXNwb25kcyB0byB0aGUgd2FsbGV0J3MgdXNlciBwcml2YXRlIGtleVxuICBsZXQgdXNlclB1YmxpY0tleVZlcmlmaWVkID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgLy8gdmVyaWZ5IHRoZSB1c2VyIHB1YmxpYyBrZXkgbWF0Y2hlcyB0aGUgcHJpdmF0ZSBrZXkgLSB0aGlzIHdpbGwgdGhyb3cgaWYgdGhlcmUgaXMgbm8gbWF0Y2hcbiAgICB1c2VyUHVibGljS2V5VmVyaWZpZWQgPSB2ZXJpZnlVc2VyUHVibGljS2V5KGJpdGdvLCB7IHVzZXJLZXljaGFpbjoga2V5Y2hhaW5zLnVzZXIsIGRpc2FibGVOZXR3b3JraW5nLCB0eFBhcmFtcyB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGRlYnVnKCdmYWlsZWQgdG8gdmVyaWZ5IHVzZXIgcHVibGljIGtleSEnLCBlKTtcbiAgfVxuXG4gIC8vIGxldCdzIHZlcmlmeSB0aGVzZSBrZXljaGFpbnNcbiAgY29uc3Qga2V5U2lnbmF0dXJlcyA9IHBhcnNlZFRyYW5zYWN0aW9uLmtleVNpZ25hdHVyZXM7XG4gIGlmICghXy5pc0VtcHR5KGtleVNpZ25hdHVyZXMpKSB7XG4gICAgY29uc3QgdmVyaWZ5ID0gKGtleSwgcHViKSA9PiB7XG4gICAgICBpZiAoIWtleWNoYWlucy51c2VyIHx8ICFrZXljaGFpbnMudXNlci5wdWIpIHtcbiAgICAgICAgdGhyb3dUeE1pc21hdGNoKCdtaXNzaW5nIHVzZXIga2V5Y2hhaW4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXJpZnlLZXlTaWduYXR1cmUoe1xuICAgICAgICB1c2VyS2V5Y2hhaW46IGtleWNoYWlucy51c2VyIGFzIHsgcHViOiBzdHJpbmcgfSxcbiAgICAgICAga2V5Y2hhaW5Ub1ZlcmlmeToga2V5LFxuICAgICAgICBrZXlTaWduYXR1cmU6IHB1YixcbiAgICAgIH0pO1xuICAgIH07XG4gICAgY29uc3QgaXNCYWNrdXBLZXlTaWduYXR1cmVWYWxpZCA9IHZlcmlmeShrZXljaGFpbnMuYmFja3VwLCBrZXlTaWduYXR1cmVzLmJhY2t1cFB1Yik7XG4gICAgY29uc3QgaXNCaXRnb0tleVNpZ25hdHVyZVZhbGlkID0gdmVyaWZ5KGtleWNoYWlucy5iaXRnbywga2V5U2lnbmF0dXJlcy5iaXRnb1B1Yik7XG4gICAgaWYgKCFpc0JhY2t1cEtleVNpZ25hdHVyZVZhbGlkIHx8ICFpc0JpdGdvS2V5U2lnbmF0dXJlVmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2Vjb25kYXJ5IHB1YmxpYyBrZXkgc2lnbmF0dXJlcyBpbnZhbGlkJyk7XG4gICAgfVxuICAgIGRlYnVnKCdzdWNjZXNzZnVsbHkgdmVyaWZpZWQgYmFja3VwIGFuZCBiaXRnbyBrZXkgc2lnbmF0dXJlcycpO1xuICB9IGVsc2UgaWYgKCFkaXNhYmxlTmV0d29ya2luZykge1xuICAgIC8vIHRoZXNlIGtleXMgd2VyZSBvYnRhaW5lZCBvbmxpbmUgYW5kIHRoZWlyIHNpZ25hdHVyZXMgd2VyZSBub3QgdmVyaWZpZWRcbiAgICAvLyB0aGlzIGNvdWxkIGJlIGRhbmdlcm91c1xuICAgIGNvbnNvbGUubG9nKCd1bnNpZ25lZCBrZXlzIG9idGFpbmVkIG9ubGluZSBhcmUgYmVpbmcgdXNlZCBmb3IgYWRkcmVzcyB2ZXJpZmljYXRpb24nKTtcbiAgfVxuXG4gIGlmIChwYXJzZWRUcmFuc2FjdGlvbi5uZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbikge1xuICAgIGlmICgha2V5Y2hhaW5zLnVzZXIgfHwgIXVzZXJQdWJsaWNLZXlWZXJpZmllZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiByZXF1aXJlcyB2ZXJpZmljYXRpb24gb2YgdXNlciBwdWJsaWMga2V5LCBidXQgaXQgd2FzIHVuYWJsZSB0byBiZSB2ZXJpZmllZCcpO1xuICAgIH1cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzVmVyaWZpZWQgPSB2ZXJpZnlDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzKHBhcnNlZFRyYW5zYWN0aW9uLCBrZXljaGFpbnMudXNlcik7XG4gICAgaWYgKCFjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzVmVyaWZpZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ3RyYW5zYWN0aW9uIHJlcXVpcmVzIHZlcmlmaWNhdGlvbiBvZiBjdXN0b20gY2hhbmdlIGtleSBzaWduYXR1cmVzLCBidXQgdGhleSB3ZXJlIHVuYWJsZSB0byBiZSB2ZXJpZmllZCdcbiAgICAgICk7XG4gICAgfVxuICAgIGRlYnVnKCdzdWNjZXNzZnVsbHkgdmVyaWZpZWQgdXNlciBwdWJsaWMga2V5IGFuZCBjdXN0b20gY2hhbmdlIGtleSBzaWduYXR1cmVzJyk7XG4gIH1cblxuICBjb25zdCBtaXNzaW5nT3V0cHV0cyA9IHBhcnNlZFRyYW5zYWN0aW9uLm1pc3NpbmdPdXRwdXRzO1xuICBpZiAobWlzc2luZ091dHB1dHMubGVuZ3RoICE9PSAwKSB7XG4gICAgLy8gdGhlcmUgYXJlIHNvbWUgb3V0cHV0cyBpbiB0aGUgcmVjaXBpZW50cyBsaXN0IHRoYXQgaGF2ZSBub3QgbWFkZSBpdCBpbnRvIHRoZSBhY3R1YWwgdHJhbnNhY3Rpb25cbiAgICB0aHJvd1R4TWlzbWF0Y2goJ2V4cGVjdGVkIG91dHB1dHMgbWlzc2luZyBpbiB0cmFuc2FjdGlvbiBwcmVidWlsZCcpO1xuICB9XG5cbiAgY29uc3QgaW50ZW5kZWRFeHRlcm5hbFNwZW5kID0gcGFyc2VkVHJhbnNhY3Rpb24uZXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50O1xuXG4gIC8vIHRoaXMgaXMgYSBsaW1pdCB3ZSBpbXBvc2UgZm9yIHRoZSB0b3RhbCB2YWx1ZSB0aGF0IGlzIGFtZW5kZWQgdG8gdGhlIHRyYW5zYWN0aW9uIGJleW9uZCB3aGF0IHdhcyBvcmlnaW5hbGx5IGludGVuZGVkXG4gIGNvbnN0IHBheUFzWW91R29MaW1pdCA9IG5ldyBCaWdOdW1iZXIoZ2V0UGF5R29MaW1pdCh2ZXJpZmljYXRpb24uYWxsb3dQYXlnb091dHB1dCkpLm11bHRpcGxpZWRCeShcbiAgICBpbnRlbmRlZEV4dGVybmFsU3BlbmQudG9TdHJpbmcoKVxuICApO1xuXG4gIC8qXG4gIFNvbWUgZXhwbGFuYXRpb24gZm9yIHdoeSB3ZSdyZSBkb2luZyB3aGF0IHdlJ3JlIGRvaW5nOlxuICBTb21lIGN1c3RvbWVycyB3aWxsIGhhdmUgYW4gb3V0cHV0IHRvIEJpdEdvJ3MgUEFZR28gd2FsbGV0IGFkZGVkIHRvIHRoZWlyIHRyYW5zYWN0aW9uLCBhbmQgd2UgbmVlZCB0byBhY2NvdW50IGZvclxuICBpdCBoZXJlLiBUbyBwcm90ZWN0IHNvbWVvbmUgdGFtcGVyaW5nIHdpdGggdGhlIG91dHB1dCB0byBtYWtlIGl0IHNlbmQgbW9yZSB0aGFuIGl0IHNob3VsZCB0byBCaXRHbywgd2UgZGVmaW5lIGFcbiAgdGhyZXNob2xkIGZvciB0aGUgb3V0cHV0J3MgdmFsdWUgYWJvdmUgd2hpY2ggd2UnbGwgdGhyb3cgYW4gZXJyb3IsIGJlY2F1c2UgdGhlIHBheWdvIG91dHB1dCBzaG91bGQgbmV2ZXIgYmUgdGhhdFxuICBoaWdoLlxuICAgKi9cblxuICAvLyBtYWtlIHN1cmUgdGhhdCBhbGwgdGhlIGV4dHJhIGFkZHJlc3NlcyBhcmUgY2hhbmdlIGFkZHJlc3Nlc1xuICAvLyBnZXQgYWxsIHRoZSBhZGRpdGlvbmFsIGV4dGVybmFsIG91dHB1dHMgdGhlIHNlcnZlciBhZGRlZCBhbmQgY2FsY3VsYXRlIHRoZWlyIHZhbHVlc1xuICBjb25zdCBub25DaGFuZ2VBbW91bnQgPSBuZXcgQmlnTnVtYmVyKHBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudC50b1N0cmluZygpKTtcblxuICBkZWJ1ZyhcbiAgICAnSW50ZW5kZWQgc3BlbmQgaXMgJXMsIE5vbi1jaGFuZ2UgYW1vdW50IGlzICVzLCBwYXlnbyBsaW1pdCBpcyAlcycsXG4gICAgaW50ZW5kZWRFeHRlcm5hbFNwZW5kLnRvU3RyaW5nKCksXG4gICAgbm9uQ2hhbmdlQW1vdW50LnRvU3RyaW5nKCksXG4gICAgcGF5QXNZb3VHb0xpbWl0LnRvU3RyaW5nKClcbiAgKTtcblxuICAvLyBUaGVyZSBhcmUgdHdvIGluc3RhbmNlcyB3aGVyZSB3ZSB3aWxsIGdldCBpbnRvIHRoaXMgcG9pbnQgaGVyZVxuICBpZiAobm9uQ2hhbmdlQW1vdW50Lmd0KHBheUFzWW91R29MaW1pdCkpIHtcbiAgICBpZiAoaXNQc2J0ICYmIHBhcnNlZFRyYW5zYWN0aW9uLmN1c3RvbUNoYW5nZSkge1xuICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB3ZSBoYXZlIGEgY3VzdG9tIGNoYW5nZSBhZGRyZXNzIG9uIGEgd2FsbGV0IGFuZCB3ZSBhcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uXG4gICAgICAvLyB3aXRoIGEgUFNCVCwgd2UgZG8gbm90IGhhdmUgdGhlIG1ldGFkYXRhIHRvIHZlcmlmeSB0aGUgYWRkcmVzcyBmcm9tIHRoZSBjdXN0b20gY2hhbmdlIHdhbGxldCwgbm9yXG4gICAgICAvLyBjYW4gd2UgZmV0Y2ggdGhhdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBvdGhlciB3YWxsZXQgYmVjYXVzZSB3ZSBtYXkgbm90IGhhdmUgdGhlIGNyZWRlbnRpYWxzLiBUaGVyZWZvcmUsXG4gICAgICAvLyB3ZSB3aWxsIG5vdCB0aHJvdyBhbiBlcnJvciBoZXJlLCBidXQgd2Ugd2lsbCBsb2cgYSB3YXJuaW5nLlxuICAgICAgZGVidWcoYGNhbm5vdCB2ZXJpZnkgc29tZSBvZiB0aGUgYWRkcmVzc2VzIGJlY2F1c2UgaXQgYmVsb25ncyB0byBhIHNlcGFyYXRlIHdhbGxldGApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGUgYWRkaXRpb25hbCBleHRlcm5hbCBvdXRwdXRzIGNhbiBvbmx5IGJlIEJpdEdvJ3MgcGF5LWFzLXlvdS1nbyBmZWUsIGJ1dCB3ZSBjYW5ub3QgdmVyaWZ5IHRoZSB3YWxsZXQgYWRkcmVzc1xuICAgICAgLy8gdGhlcmUgYXJlIHNvbWUgYWRkcmVzc2VzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHNjb3BlIG9mIGludGVuZGVkIHJlY2lwaWVudHMgdGhhdCBhcmUgbm90IGNoYW5nZSBhZGRyZXNzZXNcbiAgICAgIHRocm93VHhNaXNtYXRjaCgncHJlYnVpbGQgYXR0ZW1wdHMgdG8gc3BlbmQgdG8gdW5pbnRlbmRlZCBleHRlcm5hbCByZWNpcGllbnRzJyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYWxsT3V0cHV0cyA9IHBhcnNlZFRyYW5zYWN0aW9uLm91dHB1dHM7XG4gIGlmICghdHhQcmVidWlsZC50eEhleCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdHhQcmVidWlsZC50eEhleCBub3Qgc2V0YCk7XG4gIH1cbiAgY29uc3QgaW5wdXRzID0gaXNQc2J0XG4gICAgPyBnZXRQc2J0VHhJbnB1dHModHhQcmVidWlsZC50eEhleCwgY29pbi5uYW1lKS5tYXAoKHYpID0+ICh7XG4gICAgICAgIC4uLnYsXG4gICAgICAgIHZhbHVlOiB1dHhvbGliLmJpdGdvLnRvVE51bWJlcih2LnZhbHVlLCBjb2luLmFtb3VudFR5cGUpLFxuICAgICAgfSkpXG4gICAgOiBhd2FpdCBnZXRUeElucHV0cyh7IHR4UHJlYnVpbGQsIGJpdGdvLCBjb2luLCBkaXNhYmxlTmV0d29ya2luZywgcmVxSWQgfSk7XG4gIC8vIGNvaW5zIChkb2dlKSB0aGF0IGNhbiBleGNlZWQgbnVtYmVyIGxpbWl0cyAoYW5kIHRodXMgd2lsbCB1c2UgYmlnaW50KSB3aWxsIGhhdmUgdGhlIGB2YWx1ZVN0cmluZ2AgZmllbGRcbiAgY29uc3QgaW5wdXRBbW91bnQgPSBpbnB1dHMucmVkdWNlKFxuICAgIChzdW06IGJpZ2ludCwgaSkgPT4gc3VtICsgQmlnSW50KGNvaW4uYW1vdW50VHlwZSA9PT0gJ2JpZ2ludCcgPyBpLnZhbHVlU3RyaW5nIDogaS52YWx1ZSksXG4gICAgQmlnSW50KDApXG4gICk7XG4gIGNvbnN0IG91dHB1dEFtb3VudCA9IGFsbE91dHB1dHMucmVkdWNlKChzdW06IGJpZ2ludCwgbzogT3V0cHV0KSA9PiBzdW0gKyBCaWdJbnQoby5hbW91bnQpLCBCaWdJbnQoMCkpO1xuICBjb25zdCBmZWUgPSBpbnB1dEFtb3VudCAtIG91dHB1dEFtb3VudDtcblxuICBpZiAoZmVlIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBhdHRlbXB0aW5nIHRvIHNwZW5kICR7b3V0cHV0QW1vdW50fSBzYXRvc2hpcywgd2hpY2ggZXhjZWVkcyB0aGUgaW5wdXQgYW1vdW50ICgke2lucHV0QW1vdW50fSBzYXRvc2hpcykgYnkgJHstZmVlfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5VHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvdmVyaWZ5VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2Q0EsOENBMkpDO0FBeE1ELGtEQUErQjtBQUMvQixvREFBdUI7QUFDdkIsZ0VBQXFDO0FBQ3JDLDhDQUE4RTtBQUM5RSx5REFBMkM7QUFJM0MsK0NBQTJHO0FBQzNHLGdEQUE4RDtBQUU5RCxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVUsRUFBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxnQkFBMEI7SUFDL0MsaUdBQWlHO0lBQ2pHLHFEQUFxRDtJQUNyRCxJQUFJLENBQUMsZ0JBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0Qsa0ZBQWtGO0lBQ2xGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0ksS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUFzQixFQUN0QixLQUFnQixFQUNoQixNQUF5QztJQUV6QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFMUUsTUFBTSxhQUFhLEdBQUcsTUFBTSxnQ0FBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUE0QixFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWhILGdFQUFnRTtJQUNoRSxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQWUsRUFBUyxFQUFFO1FBQ2pELE1BQU0sSUFBSSxnQ0FBcUIs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Q0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQ3hGLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDVixDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLE1BQU0sR0FBRyxHQUFHLFdBQVcsR0FBRyxZQUFZLENBQUM7SUFFdkMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUNiLHVCQUF1QixZQUFZLDhDQUE4QyxXQUFXLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUNwSCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UsIFR4SW50ZW50TWlzbWF0Y2hFcnJvciwgSUJhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgdmVyaWZ5Q3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcywgdmVyaWZ5S2V5U2lnbmF0dXJlLCB2ZXJpZnlVc2VyUHVibGljS2V5IH0gZnJvbSAnLi4vLi4vdmVyaWZ5S2V5JztcbmltcG9ydCB7IGdldFBzYnRUeElucHV0cywgZ2V0VHhJbnB1dHMgfSBmcm9tICcuLi9mZXRjaElucHV0cyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygnYml0Z286YWJzdHJhY3QtdXR4bzp2ZXJpZnlUcmFuc2FjdGlvbicpO1xuXG4vKipcbiAqIEdldCB0aGUgbWF4aW11bSBwZXJjZW50YWdlIGxpbWl0IGZvciBwYXktYXMteW91LWdvIG91dHB1dHNcbiAqXG4gKiBAcHJvdGVjdGVkXG4gKi9cbmZ1bmN0aW9uIGdldFBheUdvTGltaXQoYWxsb3dQYXlnb091dHB1dD86IGJvb2xlYW4pOiBudW1iZXIge1xuICAvLyBhbGxvd2luZyBwYXlnbyBvdXRwdXRzIG5lZWRzIHRvIGJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBzbyBvbmx5IGRpc2FsbG93IHBheWdvIG91dHB1dHMgaWYgdGhlXG4gIC8vIHJlbGV2YW50IHZlcmlmaWNhdGlvbiBvcHRpb24gaXMgYm90aCBzZXQgYW5kIGZhbHNlXG4gIGlmICghXy5pc05pbChhbGxvd1BheWdvT3V0cHV0KSAmJiAhYWxsb3dQYXlnb091dHB1dCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIC8vIDE1MCBiYXNpcyBwb2ludHMgaXMgdGhlIGFic29sdXRlIHBlcm1pdHRlZCBtYXhpbXVtIGlmIHBheWdvIG91dHB1dHMgYXJlIGFsbG93ZWRcbiAgcmV0dXJuIDAuMDE1O1xufVxuXG4vKipcbiAqIFZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24gcHJlYnVpbGQgY29tcGxpZXMgd2l0aCB0aGUgb3JpZ2luYWwgaW50ZW50aW9uIGZvciBmaXhlZC1zY3JpcHQgd2FsbGV0c1xuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaGFuZGxlcyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZm9yIHRyYWRpdGlvbmFsIFVUWE8gY29pbnMgdXNpbmcgZml4ZWQgc2NyaXB0c1xuICogKG5vbi1kZXNjcmlwdG9yIHdhbGxldHMpLiBJdCB2YWxpZGF0ZXMga2V5Y2hhaW5zLCBzaWduYXR1cmVzLCBvdXRwdXRzLCBhbmQgYW1vdW50cy5cbiAqXG4gKiBAcGFyYW0gY29pbiAtIFRoZSBVVFhPIGNvaW4gaW5zdGFuY2VcbiAqIEBwYXJhbSBiaXRnbyAtIEJpdEdvIEFQSSBpbnN0YW5jZSBmb3IgbmV0d29yayBjYWxsc1xuICogQHBhcmFtIHBhcmFtcyAtIFZlcmlmaWNhdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gcGFyYW1zLnR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyBwYXNzZWQgdG8gc2VuZFxuICogQHBhcmFtIHBhcmFtcy50eFByZWJ1aWxkIC0gUHJlYnVpbGQgb2JqZWN0IHJldHVybmVkIGJ5IHNlcnZlclxuICogQHBhcmFtIHBhcmFtcy53YWxsZXQgLSBXYWxsZXQgb2JqZWN0IHRvIG9idGFpbiBrZXlzIHRvIHZlcmlmeSBhZ2FpbnN0XG4gKiBAcGFyYW0gcGFyYW1zLnZlcmlmaWNhdGlvbiAtIFZlcmlmaWNhdGlvbiBvcHRpb25zIChkaXNhYmxlTmV0d29ya2luZywga2V5Y2hhaW5zLCBhZGRyZXNzZXMpXG4gKiBAcGFyYW0gcGFyYW1zLnJlcUlkIC0gT3B0aW9uYWwgcmVxdWVzdCBJRCBmb3IgbG9nZ2luZ1xuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmVyaWZpY2F0aW9uIHBhc3Nlc1xuICogQHRocm93cyB7VHhJbnRlbnRNaXNtYXRjaEVycm9yfSBpZiB0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgcGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj5cbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9LCByZXFJZCB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHR4RXhwbGFuYXRpb24gPSBhd2FpdCBUeEludGVudE1pc21hdGNoRXJyb3IudHJ5R2V0VHhFeHBsYW5hdGlvbihjb2luIGFzIHVua25vd24gYXMgSUJhc2VDb2luLCB0eFByZWJ1aWxkKTtcblxuICAvLyBIZWxwZXIgdG8gdGhyb3cgVHhJbnRlbnRNaXNtYXRjaEVycm9yIHdpdGggY29uc2lzdGVudCBjb250ZXh0XG4gIGNvbnN0IHRocm93VHhNaXNtYXRjaCA9IChtZXNzYWdlOiBzdHJpbmcpOiBuZXZlciA9PiB7XG4gICAgdGhyb3cgbmV3IFR4SW50ZW50TWlzbWF0Y2hFcnJvcihtZXNzYWdlLCByZXFJZCwgW3R4UGFyYW1zXSwgdHhQcmVidWlsZC50eEhleCwgdHhFeHBsYW5hdGlvbik7XG4gIH07XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZykgJiYgIV8uaXNCb29sZWFuKHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBpc1BzYnQgPSB0eFByZWJ1aWxkLnR4SGV4ICYmIHV0eG9saWIuYml0Z28uaXNQc2J0KHR4UHJlYnVpbGQudHhIZXgpO1xuICBpZiAoaXNQc2J0ICYmIHR4UHJlYnVpbGQudHhJbmZvPy51bnNwZW50cykge1xuICAgIHRocm93IG5ldyBFcnJvcignc2hvdWxkIG5vdCBoYXZlIHVuc3BlbnRzIGluIHR4SW5mbyBmb3IgcHNidCcpO1xuICB9XG4gIGNvbnN0IGRpc2FibGVOZXR3b3JraW5nID0gISF2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmc7XG4gIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uOiBQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPiA9IGF3YWl0IGNvaW4ucGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyPih7XG4gICAgdHhQYXJhbXMsXG4gICAgdHhQcmVidWlsZCxcbiAgICB3YWxsZXQsXG4gICAgdmVyaWZpY2F0aW9uLFxuICAgIHJlcUlkLFxuICB9KTtcblxuICBjb25zdCBrZXljaGFpbnMgPSBwYXJzZWRUcmFuc2FjdGlvbi5rZXljaGFpbnM7XG5cbiAgLy8gdmVyaWZ5IHRoYXQgdGhlIGNsYWltZWQgdXNlciBwdWJsaWMga2V5IGNvcnJlc3BvbmRzIHRvIHRoZSB3YWxsZXQncyB1c2VyIHByaXZhdGUga2V5XG4gIGxldCB1c2VyUHVibGljS2V5VmVyaWZpZWQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICAvLyB2ZXJpZnkgdGhlIHVzZXIgcHVibGljIGtleSBtYXRjaGVzIHRoZSBwcml2YXRlIGtleSAtIHRoaXMgd2lsbCB0aHJvdyBpZiB0aGVyZSBpcyBubyBtYXRjaFxuICAgIHVzZXJQdWJsaWNLZXlWZXJpZmllZCA9IHZlcmlmeVVzZXJQdWJsaWNLZXkoYml0Z28sIHtcbiAgICAgIHVzZXJLZXljaGFpbjoga2V5Y2hhaW5zLnVzZXIsXG4gICAgICBkaXNhYmxlTmV0d29ya2luZyxcbiAgICAgIHR4UGFyYW1zLFxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byB2ZXJpZnkgdXNlciBwdWJsaWMga2V5IScsIGUpO1xuICB9XG5cbiAgLy8gbGV0J3MgdmVyaWZ5IHRoZXNlIGtleWNoYWluc1xuICBjb25zdCBrZXlTaWduYXR1cmVzID0gcGFyc2VkVHJhbnNhY3Rpb24ua2V5U2lnbmF0dXJlcztcbiAgaWYgKCFfLmlzRW1wdHkoa2V5U2lnbmF0dXJlcykpIHtcbiAgICBjb25zdCB2ZXJpZnkgPSAoa2V5LCBwdWIpID0+IHtcbiAgICAgIGlmICgha2V5Y2hhaW5zLnVzZXIgfHwgIWtleWNoYWlucy51c2VyLnB1Yikge1xuICAgICAgICB0aHJvd1R4TWlzbWF0Y2goJ21pc3NpbmcgdXNlciBrZXljaGFpbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcmlmeUtleVNpZ25hdHVyZSh7XG4gICAgICAgIHVzZXJLZXljaGFpbjoga2V5Y2hhaW5zLnVzZXIgYXMgeyBwdWI6IHN0cmluZyB9LFxuICAgICAgICBrZXljaGFpblRvVmVyaWZ5OiBrZXksXG4gICAgICAgIGtleVNpZ25hdHVyZTogcHViLFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBpc0JhY2t1cEtleVNpZ25hdHVyZVZhbGlkID0gdmVyaWZ5KGtleWNoYWlucy5iYWNrdXAsIGtleVNpZ25hdHVyZXMuYmFja3VwUHViKTtcbiAgICBjb25zdCBpc0JpdGdvS2V5U2lnbmF0dXJlVmFsaWQgPSB2ZXJpZnkoa2V5Y2hhaW5zLmJpdGdvLCBrZXlTaWduYXR1cmVzLmJpdGdvUHViKTtcbiAgICBpZiAoIWlzQmFja3VwS2V5U2lnbmF0dXJlVmFsaWQgfHwgIWlzQml0Z29LZXlTaWduYXR1cmVWYWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZWNvbmRhcnkgcHVibGljIGtleSBzaWduYXR1cmVzIGludmFsaWQnKTtcbiAgICB9XG4gICAgZGVidWcoJ3N1Y2Nlc3NmdWxseSB2ZXJpZmllZCBiYWNrdXAgYW5kIGJpdGdvIGtleSBzaWduYXR1cmVzJyk7XG4gIH0gZWxzZSBpZiAoIWRpc2FibGVOZXR3b3JraW5nKSB7XG4gICAgLy8gdGhlc2Uga2V5cyB3ZXJlIG9idGFpbmVkIG9ubGluZSBhbmQgdGhlaXIgc2lnbmF0dXJlcyB3ZXJlIG5vdCB2ZXJpZmllZFxuICAgIC8vIHRoaXMgY291bGQgYmUgZGFuZ2Vyb3VzXG4gICAgY29uc29sZS5sb2coJ3Vuc2lnbmVkIGtleXMgb2J0YWluZWQgb25saW5lIGFyZSBiZWluZyB1c2VkIGZvciBhZGRyZXNzIHZlcmlmaWNhdGlvbicpO1xuICB9XG5cbiAgaWYgKHBhcnNlZFRyYW5zYWN0aW9uLm5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uKSB7XG4gICAgaWYgKCFrZXljaGFpbnMudXNlciB8fCAhdXNlclB1YmxpY0tleVZlcmlmaWVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHJlcXVpcmVzIHZlcmlmaWNhdGlvbiBvZiB1c2VyIHB1YmxpYyBrZXksIGJ1dCBpdCB3YXMgdW5hYmxlIHRvIGJlIHZlcmlmaWVkJyk7XG4gICAgfVxuICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXNWZXJpZmllZCA9IHZlcmlmeUN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMocGFyc2VkVHJhbnNhY3Rpb24sIGtleWNoYWlucy51c2VyKTtcbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXNWZXJpZmllZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAndHJhbnNhY3Rpb24gcmVxdWlyZXMgdmVyaWZpY2F0aW9uIG9mIGN1c3RvbSBjaGFuZ2Uga2V5IHNpZ25hdHVyZXMsIGJ1dCB0aGV5IHdlcmUgdW5hYmxlIHRvIGJlIHZlcmlmaWVkJ1xuICAgICAgKTtcbiAgICB9XG4gICAgZGVidWcoJ3N1Y2Nlc3NmdWxseSB2ZXJpZmllZCB1c2VyIHB1YmxpYyBrZXkgYW5kIGN1c3RvbSBjaGFuZ2Uga2V5IHNpZ25hdHVyZXMnKTtcbiAgfVxuXG4gIGNvbnN0IG1pc3NpbmdPdXRwdXRzID0gcGFyc2VkVHJhbnNhY3Rpb24ubWlzc2luZ091dHB1dHM7XG4gIGlmIChtaXNzaW5nT3V0cHV0cy5sZW5ndGggIT09IDApIHtcbiAgICAvLyB0aGVyZSBhcmUgc29tZSBvdXRwdXRzIGluIHRoZSByZWNpcGllbnRzIGxpc3QgdGhhdCBoYXZlIG5vdCBtYWRlIGl0IGludG8gdGhlIGFjdHVhbCB0cmFuc2FjdGlvblxuICAgIHRocm93VHhNaXNtYXRjaCgnZXhwZWN0ZWQgb3V0cHV0cyBtaXNzaW5nIGluIHRyYW5zYWN0aW9uIHByZWJ1aWxkJyk7XG4gIH1cblxuICBjb25zdCBpbnRlbmRlZEV4dGVybmFsU3BlbmQgPSBwYXJzZWRUcmFuc2FjdGlvbi5leHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQ7XG5cbiAgLy8gdGhpcyBpcyBhIGxpbWl0IHdlIGltcG9zZSBmb3IgdGhlIHRvdGFsIHZhbHVlIHRoYXQgaXMgYW1lbmRlZCB0byB0aGUgdHJhbnNhY3Rpb24gYmV5b25kIHdoYXQgd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWRcbiAgY29uc3QgcGF5QXNZb3VHb0xpbWl0ID0gbmV3IEJpZ051bWJlcihnZXRQYXlHb0xpbWl0KHZlcmlmaWNhdGlvbi5hbGxvd1BheWdvT3V0cHV0KSkubXVsdGlwbGllZEJ5KFxuICAgIGludGVuZGVkRXh0ZXJuYWxTcGVuZC50b1N0cmluZygpXG4gICk7XG5cbiAgLypcbiAgU29tZSBleHBsYW5hdGlvbiBmb3Igd2h5IHdlJ3JlIGRvaW5nIHdoYXQgd2UncmUgZG9pbmc6XG4gIFNvbWUgY3VzdG9tZXJzIHdpbGwgaGF2ZSBhbiBvdXRwdXQgdG8gQml0R28ncyBQQVlHbyB3YWxsZXQgYWRkZWQgdG8gdGhlaXIgdHJhbnNhY3Rpb24sIGFuZCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yXG4gIGl0IGhlcmUuIFRvIHByb3RlY3Qgc29tZW9uZSB0YW1wZXJpbmcgd2l0aCB0aGUgb3V0cHV0IHRvIG1ha2UgaXQgc2VuZCBtb3JlIHRoYW4gaXQgc2hvdWxkIHRvIEJpdEdvLCB3ZSBkZWZpbmUgYVxuICB0aHJlc2hvbGQgZm9yIHRoZSBvdXRwdXQncyB2YWx1ZSBhYm92ZSB3aGljaCB3ZSdsbCB0aHJvdyBhbiBlcnJvciwgYmVjYXVzZSB0aGUgcGF5Z28gb3V0cHV0IHNob3VsZCBuZXZlciBiZSB0aGF0XG4gIGhpZ2guXG4gICAqL1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgZXh0cmEgYWRkcmVzc2VzIGFyZSBjaGFuZ2UgYWRkcmVzc2VzXG4gIC8vIGdldCBhbGwgdGhlIGFkZGl0aW9uYWwgZXh0ZXJuYWwgb3V0cHV0cyB0aGUgc2VydmVyIGFkZGVkIGFuZCBjYWxjdWxhdGUgdGhlaXIgdmFsdWVzXG4gIGNvbnN0IG5vbkNoYW5nZUFtb3VudCA9IG5ldyBCaWdOdW1iZXIocGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LnRvU3RyaW5nKCkpO1xuXG4gIGRlYnVnKFxuICAgICdJbnRlbmRlZCBzcGVuZCBpcyAlcywgTm9uLWNoYW5nZSBhbW91bnQgaXMgJXMsIHBheWdvIGxpbWl0IGlzICVzJyxcbiAgICBpbnRlbmRlZEV4dGVybmFsU3BlbmQudG9TdHJpbmcoKSxcbiAgICBub25DaGFuZ2VBbW91bnQudG9TdHJpbmcoKSxcbiAgICBwYXlBc1lvdUdvTGltaXQudG9TdHJpbmcoKVxuICApO1xuXG4gIC8vIFRoZXJlIGFyZSB0d28gaW5zdGFuY2VzIHdoZXJlIHdlIHdpbGwgZ2V0IGludG8gdGhpcyBwb2ludCBoZXJlXG4gIGlmIChub25DaGFuZ2VBbW91bnQuZ3QocGF5QXNZb3VHb0xpbWl0KSkge1xuICAgIGlmIChpc1BzYnQgJiYgcGFyc2VkVHJhbnNhY3Rpb24uY3VzdG9tQ2hhbmdlKSB7XG4gICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHdlIGhhdmUgYSBjdXN0b20gY2hhbmdlIGFkZHJlc3Mgb24gYSB3YWxsZXQgYW5kIHdlIGFyZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIHdpdGggYSBQU0JULCB3ZSBkbyBub3QgaGF2ZSB0aGUgbWV0YWRhdGEgdG8gdmVyaWZ5IHRoZSBhZGRyZXNzIGZyb20gdGhlIGN1c3RvbSBjaGFuZ2Ugd2FsbGV0LCBub3JcbiAgICAgIC8vIGNhbiB3ZSBmZXRjaCB0aGF0IGluZm9ybWF0aW9uIGZyb20gdGhlIG90aGVyIHdhbGxldCBiZWNhdXNlIHdlIG1heSBub3QgaGF2ZSB0aGUgY3JlZGVudGlhbHMuIFRoZXJlZm9yZSxcbiAgICAgIC8vIHdlIHdpbGwgbm90IHRocm93IGFuIGVycm9yIGhlcmUsIGJ1dCB3ZSB3aWxsIGxvZyBhIHdhcm5pbmcuXG4gICAgICBkZWJ1ZyhgY2Fubm90IHZlcmlmeSBzb21lIG9mIHRoZSBhZGRyZXNzZXMgYmVjYXVzZSBpdCBiZWxvbmdzIHRvIGEgc2VwYXJhdGUgd2FsbGV0YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZSBhZGRpdGlvbmFsIGV4dGVybmFsIG91dHB1dHMgY2FuIG9ubHkgYmUgQml0R28ncyBwYXktYXMteW91LWdvIGZlZSwgYnV0IHdlIGNhbm5vdCB2ZXJpZnkgdGhlIHdhbGxldCBhZGRyZXNzXG4gICAgICAvLyB0aGVyZSBhcmUgc29tZSBhZGRyZXNzZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgc2NvcGUgb2YgaW50ZW5kZWQgcmVjaXBpZW50cyB0aGF0IGFyZSBub3QgY2hhbmdlIGFkZHJlc3Nlc1xuICAgICAgdGhyb3dUeE1pc21hdGNoKCdwcmVidWlsZCBhdHRlbXB0cyB0byBzcGVuZCB0byB1bmludGVuZGVkIGV4dGVybmFsIHJlY2lwaWVudHMnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhbGxPdXRwdXRzID0gcGFyc2VkVHJhbnNhY3Rpb24ub3V0cHV0cztcbiAgaWYgKCF0eFByZWJ1aWxkLnR4SGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0eFByZWJ1aWxkLnR4SGV4IG5vdCBzZXRgKTtcbiAgfVxuICBjb25zdCBpbnB1dHMgPSBpc1BzYnRcbiAgICA/IGdldFBzYnRUeElucHV0cyh0eFByZWJ1aWxkLnR4SGV4LCBjb2luLm5hbWUpLm1hcCgodikgPT4gKHtcbiAgICAgICAgLi4udixcbiAgICAgICAgdmFsdWU6IHV0eG9saWIuYml0Z28udG9UTnVtYmVyKHYudmFsdWUsIGNvaW4uYW1vdW50VHlwZSksXG4gICAgICB9KSlcbiAgICA6IGF3YWl0IGdldFR4SW5wdXRzKHsgdHhQcmVidWlsZCwgYml0Z28sIGNvaW4sIGRpc2FibGVOZXR3b3JraW5nLCByZXFJZCB9KTtcbiAgLy8gY29pbnMgKGRvZ2UpIHRoYXQgY2FuIGV4Y2VlZCBudW1iZXIgbGltaXRzIChhbmQgdGh1cyB3aWxsIHVzZSBiaWdpbnQpIHdpbGwgaGF2ZSB0aGUgYHZhbHVlU3RyaW5nYCBmaWVsZFxuICBjb25zdCBpbnB1dEFtb3VudCA9IGlucHV0cy5yZWR1Y2UoXG4gICAgKHN1bTogYmlnaW50LCBpKSA9PiBzdW0gKyBCaWdJbnQoY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IGkudmFsdWVTdHJpbmcgOiBpLnZhbHVlKSxcbiAgICBCaWdJbnQoMClcbiAgKTtcbiAgY29uc3Qgb3V0cHV0QW1vdW50ID0gYWxsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvOiBPdXRwdXQpID0+IHN1bSArIEJpZ0ludChvLmFtb3VudCksIEJpZ0ludCgwKSk7XG4gIGNvbnN0IGZlZSA9IGlucHV0QW1vdW50IC0gb3V0cHV0QW1vdW50O1xuXG4gIGlmIChmZWUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGF0dGVtcHRpbmcgdG8gc3BlbmQgJHtvdXRwdXRBbW91bnR9IHNhdG9zaGlzLCB3aGljaCBleGNlZWRzIHRoZSBpbnB1dCBhbW91bnQgKCR7aW5wdXRBbW91bnR9IHNhdG9zaGlzKSBieSAkey1mZWV9YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"signTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/signTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AA0B/E,wBAAsB,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACnE,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,GACtC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAyD5B"}
1
+ {"version":3,"file":"signTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/signTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AA0B/E,wBAAsB,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACnE,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,GACtC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsD5B"}
@@ -69,30 +69,27 @@ async function signTransaction(coin, bitgo, params) {
69
69
  }
70
70
  throw new Error('missing txPrebuild parameter');
71
71
  }
72
- let tx = coin.decodeTransactionFromPrebuild(params.txPrebuild);
73
- // When returnLegacyFormat is set, ensure we use wasm-utxo's BitGoPsbt so
74
- // getHalfSignedLegacyFormat() is available after signing.
75
- if (params.returnLegacyFormat && (0, wasmUtil_1.isUtxoLibPsbt)(tx)) {
76
- tx = (0, decode_1.decodePsbtWith)(tx.toBuffer(), coin.name, 'wasm-utxo');
77
- }
78
72
  const signerKeychain = getSignerKeychain(params.prv);
79
73
  const { wallet } = params;
80
74
  if (wallet && (0, descriptor_1.isDescriptorWallet)(wallet)) {
81
75
  if (!signerKeychain) {
82
76
  throw new Error('missing signer');
83
77
  }
84
- if (!(0, wasmUtil_1.isUtxoLibPsbt)(tx) && !(tx instanceof Uint8Array)) {
85
- throw new Error('descriptor wallets require PSBT format transactions');
86
- }
78
+ const psbt = (0, decode_1.decodeDescriptorPsbt)(params.txPrebuild);
87
79
  const walletKeys = (0, keychains_1.toBip32Triple)(await (0, keychains_1.fetchKeychains)(coin, wallet));
88
80
  const descriptorMap = (0, descriptor_1.getDescriptorMapFromWallet)(wallet, walletKeys, (0, descriptor_1.getPolicyForEnv)(bitgo.env));
89
- const psbt = (0, wasmUtil_1.toWasmPsbt)(tx);
90
81
  descriptor.signPsbt(psbt, descriptorMap, signerKeychain, {
91
82
  onUnknownInput: 'throw',
92
83
  });
93
84
  return { txHex: Buffer.from(psbt.serialize()).toString('hex') };
94
85
  }
95
86
  else {
87
+ let tx = coin.decodeTransactionFromPrebuild(params.txPrebuild);
88
+ // When returnLegacyFormat is set, ensure we use wasm-utxo's BitGoPsbt so
89
+ // getHalfSignedLegacyFormat() is available after signing.
90
+ if (params.returnLegacyFormat && (0, wasmUtil_1.isUtxoLibPsbt)(tx)) {
91
+ tx = (0, decode_1.decodePsbtWith)(tx.toBuffer(), coin.name, 'wasm-utxo');
92
+ }
96
93
  const signedTx = await fixedScript.signTransaction(coin, tx, getSignerKeychain(params.prv), coin.name, {
97
94
  walletId: params.txPrebuild.walletId,
98
95
  txInfo: params.txPrebuild.txInfo,
@@ -112,4 +109,4 @@ async function signTransaction(coin, bitgo, params) {
112
109
  return { txHex: buffer.toString('hex') };
113
110
  }
114
111
  }
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3NpZ25UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCQSwwQ0E2REM7QUE1RkQsb0RBQXVCO0FBRXZCLGdEQUE0RDtBQUM1RCxrREFBK0I7QUFHL0IsOENBQWdHO0FBQ2hHLDRDQUE2RDtBQUM3RCwwQ0FBd0Q7QUFFeEQsMkRBQTZDO0FBQzdDLHlEQUEyQztBQUMzQyxxQ0FBNkQ7QUFFN0QsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFVLEVBQUMsaURBQWlELENBQUMsQ0FBQztBQUU1RSxTQUFTLGlCQUFpQixDQUFDLE9BQWdCO0lBQ3pDLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsTUFBTSxjQUFjLEdBQUcsaUJBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELEtBQUssQ0FBQyx3REFBd0QsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RyxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRU0sS0FBSyxVQUFVLGVBQWUsQ0FDbkMsSUFBc0IsRUFDdEIsS0FBZ0IsRUFDaEIsTUFBdUM7SUFFdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUs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QUFDLFdBQVc7WUFDL0Isa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtZQUM3QyxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsb0dBQW9HO1FBQ3BHLElBQUksTUFBTSxDQUFDLGtCQUFrQixJQUFJLFFBQVEsWUFBWSw2QkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0RixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFBLDBCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzNDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCSVAzMiwgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgZ2V0RGVzY3JpcHRvck1hcEZyb21XYWxsZXQsIGdldFBvbGljeUZvckVudiwgaXNEZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnLi4vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBmZXRjaEtleWNoYWlucywgdG9CaXAzMlRyaXBsZSB9IGZyb20gJy4uL2tleWNoYWlucyc7XG5pbXBvcnQgeyBpc1V0eG9MaWJQc2J0LCB0b1dhc21Qc2J0IH0gZnJvbSAnLi4vd2FzbVV0aWwnO1xuXG5pbXBvcnQgKiBhcyBmaXhlZFNjcmlwdCBmcm9tICcuL2ZpeGVkU2NyaXB0JztcbmltcG9ydCAqIGFzIGRlc2NyaXB0b3IgZnJvbSAnLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IGRlY29kZVBzYnRXaXRoLCBlbmNvZGVUcmFuc2FjdGlvbiB9IGZyb20gJy4vZGVjb2RlJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCdiaXRnbzphYnN0cmFjdC11dHhvOnRyYW5zYWN0aW9uOnNpZ25UcmFuc2FjdGlvbicpO1xuXG5mdW5jdGlvbiBnZXRTaWduZXJLZXljaGFpbih1c2VyUHJ2OiB1bmtub3duKTogQklQMzIgfCB1bmRlZmluZWQge1xuICBpZiAodXNlclBydiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAodHlwZW9mIHVzZXJQcnYgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCB1c2VyIHByaXZhdGUga2V5IHRvIGJlIGEgc3RyaW5nJyk7XG4gIH1cbiAgY29uc3Qgc2lnbmVyS2V5Y2hhaW4gPSBCSVAzMi5mcm9tQmFzZTU4KHVzZXJQcnYpO1xuICBpZiAoc2lnbmVyS2V5Y2hhaW4uaXNOZXV0ZXJlZCgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCB1c2VyIHByaXZhdGUga2V5IGJ1dCByZWNlaXZlZCBwdWJsaWMga2V5Jyk7XG4gIH1cbiAgZGVidWcoYEhlcmUgaXMgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIHhwcnYgeW91IHVzZWQgdG8gc2lnbjogJHtzaWduZXJLZXljaGFpbi5uZXV0ZXJlZCgpLnRvQmFzZTU4KCl9YCk7XG4gIHJldHVybiBzaWduZXJLZXljaGFpbjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ25UcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgcGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zPFROdW1iZXI+XG4pOiBQcm9taXNlPHsgdHhIZXg6IHN0cmluZyB9PiB7XG4gIGNvbnN0IHR4UHJlYnVpbGQgPSBwYXJhbXMudHhQcmVidWlsZDtcblxuICBpZiAoXy5pc1VuZGVmaW5lZCh0eFByZWJ1aWxkKSB8fCAhXy5pc09iamVjdCh0eFByZWJ1aWxkKSkge1xuICAgIGlmICghXy5pc1VuZGVmaW5lZCh0eFByZWJ1aWxkKSAmJiAhXy5pc09iamVjdCh0eFByZWJ1aWxkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eFByZWJ1aWxkIG11c3QgYmUgYW4gb2JqZWN0LCBnb3QgdHlwZSAke3R5cGVvZiB0eFByZWJ1aWxkfWApO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdHhQcmVidWlsZCBwYXJhbWV0ZXInKTtcbiAgfVxuXG4gIGxldCB0eCA9IGNvaW4uZGVjb2RlVHJhbnNhY3Rpb25Gcm9tUHJlYnVpbGQocGFyYW1zLnR4UHJlYnVpbGQpO1xuXG4gIC8vIFdoZW4gcmV0dXJuTGVnYWN5Rm9ybWF0IGlzIHNldCwgZW5zdXJlIHdlIHVzZSB3YXNtLXV0eG8ncyBCaXRHb1BzYnQgc29cbiAgLy8gZ2V0SGFsZlNpZ25lZExlZ2FjeUZvcm1hdCgpIGlzIGF2YWlsYWJsZSBhZnRlciBzaWduaW5nLlxuICBpZiAocGFyYW1zLnJldHVybkxlZ2FjeUZvcm1hdCAmJiBpc1V0eG9MaWJQc2J0KHR4KSkge1xuICAgIHR4ID0gZGVjb2RlUHNidFdpdGgodHgudG9CdWZmZXIoKSwgY29pbi5uYW1lLCAnd2FzbS11dHhvJyk7XG4gIH1cblxuICBjb25zdCBzaWduZXJLZXljaGFpbiA9IGdldFNpZ25lcktleWNoYWluKHBhcmFtcy5wcnYpO1xuXG4gIGNvbnN0IHsgd2FsbGV0IH0gPSBwYXJhbXM7XG5cbiAgaWYgKHdhbGxldCAmJiBpc0Rlc2NyaXB0b3JXYWxsZXQod2FsbGV0KSkge1xuICAgIGlmICghc2lnbmVyS2V5Y2hhaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBzaWduZXInKTtcbiAgICB9XG4gICAgaWYgKCFpc1V0eG9MaWJQc2J0KHR4KSAmJiAhKHR4IGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGVzY3JpcHRvciB3YWxsZXRzIHJlcXVpcmUgUFNCVCBmb3JtYXQgdHJhbnNhY3Rpb25zJyk7XG4gICAgfVxuICAgIGNvbnN0IHdhbGxldEtleXMgPSB0b0JpcDMyVHJpcGxlKGF3YWl0IGZldGNoS2V5Y2hhaW5zKGNvaW4sIHdhbGxldCkpO1xuICAgIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yTWFwRnJvbVdhbGxldCh3YWxsZXQsIHdhbGxldEtleXMsIGdldFBvbGljeUZvckVudihiaXRnby5lbnYpKTtcbiAgICBjb25zdCBwc2J0ID0gdG9XYXNtUHNidCh0eCk7XG4gICAgZGVzY3JpcHRvci5zaWduUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwLCBzaWduZXJLZXljaGFpbiwge1xuICAgICAgb25Vbmtub3duSW5wdXQ6ICd0aHJvdycsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgdHhIZXg6IEJ1ZmZlci5mcm9tKHBzYnQuc2VyaWFsaXplKCkpLnRvU3RyaW5nKCdoZXgnKSB9O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgZml4ZWRTY3JpcHQuc2lnblRyYW5zYWN0aW9uKGNvaW4sIHR4LCBnZXRTaWduZXJLZXljaGFpbihwYXJhbXMucHJ2KSwgY29pbi5uYW1lLCB7XG4gICAgICB3YWxsZXRJZDogcGFyYW1zLnR4UHJlYnVpbGQud2FsbGV0SWQsXG4gICAgICB0eEluZm86IHBhcmFtcy50eFByZWJ1aWxkLnR4SW5mbyxcbiAgICAgIGlzTGFzdFNpZ25hdHVyZTogcGFyYW1zLmlzTGFzdFNpZ25hdHVyZSA/PyBmYWxzZSxcbiAgICAgIHNpZ25pbmdTdGVwOiBwYXJhbXMuc2lnbmluZ1N0ZXAsXG4gICAgICBhbGxvd05vblNlZ3dpdFNpZ25pbmdXaXRob3V0UHJldlR4OiBwYXJhbXMuYWxsb3dOb25TZWd3aXRTaWduaW5nV2l0aG91dFByZXZUeCA/PyBmYWxzZSxcbiAgICAgIHB1YnM6IHBhcmFtcy5wdWJzLFxuICAgICAgY29zaWduZXJQdWI6IHBhcmFtcy5jb3NpZ25lclB1YixcbiAgICAgIGV4dHJhY3RUcmFuc2FjdGlvbjogcGFyYW1zLmV4dHJhY3RUcmFuc2FjdGlvbixcbiAgICAgIHdyaXRlU2lnbmVkV2l0aDogcGFyYW1zLndyaXRlU2lnbmVkV2l0aCxcbiAgICB9KTtcblxuICAgIC8vIENvbnZlcnQgaGFsZi1zaWduZWQgUFNCVCB0byBsZWdhY3kgZm9ybWF0IHdoZW4gdGhlIGNhbGxlciBleHBsaWNpdGx5IHJlcXVlc3RlZCB0eEZvcm1hdDogJ2xlZ2FjeSdcbiAgICBpZiAocGFyYW1zLnJldHVybkxlZ2FjeUZvcm1hdCAmJiBzaWduZWRUeCBpbnN0YW5jZW9mIGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCkge1xuICAgICAgcmV0dXJuIHsgdHhIZXg6IEJ1ZmZlci5mcm9tKHNpZ25lZFR4LmdldEhhbGZTaWduZWRMZWdhY3lGb3JtYXQoKSkudG9TdHJpbmcoJ2hleCcpIH07XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmlzQnVmZmVyKHNpZ25lZFR4KSA/IHNpZ25lZFR4IDogZW5jb2RlVHJhbnNhY3Rpb24oc2lnbmVkVHgpO1xuICAgIHJldHVybiB7IHR4SGV4OiBidWZmZXIudG9TdHJpbmcoJ2hleCcpIH07XG4gIH1cbn1cbiJdfQ==
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3NpZ25UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCQSwwQ0EwREM7QUF6RkQsb0RBQXVCO0FBRXZCLGdEQUE0RDtBQUM1RCxrREFBK0I7QUFHL0IsOENBQWdHO0FBQ2hHLDRDQUE2RDtBQUM3RCwwQ0FBNEM7QUFFNUMsMkRBQTZDO0FBQzdDLHlEQUEyQztBQUMzQyxxQ0FBbUY7QUFFbkYsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFVLEVBQUMsaURBQWlELENBQUMsQ0FBQztBQUU1RSxTQUFTLGlCQUFpQixDQUFDLE9BQWdCO0lBQ3pDLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsTUFBTSxjQUFjLEdBQUcsaUJBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELEtBQUssQ0FBQyx3REFBd0QsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RyxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRU0sS0FBSyxVQUFVLGVBQWUsQ0FDbkMsSUFBc0IsRUFDdEIsS0FBZ0IsRUFDaEIsTUFBdUM7SUFFdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUs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QixJQUFJLFFBQVEsWUFBWSw2QkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0RixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFBLDBCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzNDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCSVAzMiwgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgZ2V0RGVzY3JpcHRvck1hcEZyb21XYWxsZXQsIGdldFBvbGljeUZvckVudiwgaXNEZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnLi4vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBmZXRjaEtleWNoYWlucywgdG9CaXAzMlRyaXBsZSB9IGZyb20gJy4uL2tleWNoYWlucyc7XG5pbXBvcnQgeyBpc1V0eG9MaWJQc2J0IH0gZnJvbSAnLi4vd2FzbVV0aWwnO1xuXG5pbXBvcnQgKiBhcyBmaXhlZFNjcmlwdCBmcm9tICcuL2ZpeGVkU2NyaXB0JztcbmltcG9ydCAqIGFzIGRlc2NyaXB0b3IgZnJvbSAnLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IGRlY29kZURlc2NyaXB0b3JQc2J0LCBkZWNvZGVQc2J0V2l0aCwgZW5jb2RlVHJhbnNhY3Rpb24gfSBmcm9tICcuL2RlY29kZSc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygnYml0Z286YWJzdHJhY3QtdXR4bzp0cmFuc2FjdGlvbjpzaWduVHJhbnNhY3Rpb24nKTtcblxuZnVuY3Rpb24gZ2V0U2lnbmVyS2V5Y2hhaW4odXNlclBydjogdW5rbm93bik6IEJJUDMyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHVzZXJQcnYgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHR5cGVvZiB1c2VyUHJ2ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgdXNlciBwcml2YXRlIGtleSB0byBiZSBhIHN0cmluZycpO1xuICB9XG4gIGNvbnN0IHNpZ25lcktleWNoYWluID0gQklQMzIuZnJvbUJhc2U1OCh1c2VyUHJ2KTtcbiAgaWYgKHNpZ25lcktleWNoYWluLmlzTmV1dGVyZWQoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgdXNlciBwcml2YXRlIGtleSBidXQgcmVjZWl2ZWQgcHVibGljIGtleScpO1xuICB9XG4gIGRlYnVnKGBIZXJlIGlzIHRoZSBwdWJsaWMga2V5IG9mIHRoZSB4cHJ2IHlvdSB1c2VkIHRvIHNpZ246ICR7c2lnbmVyS2V5Y2hhaW4ubmV1dGVyZWQoKS50b0Jhc2U1OCgpfWApO1xuICByZXR1cm4gc2lnbmVyS2V5Y2hhaW47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaWduVHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTx7IHR4SGV4OiBzdHJpbmcgfT4ge1xuICBjb25zdCB0eFByZWJ1aWxkID0gcGFyYW1zLnR4UHJlYnVpbGQ7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQodHhQcmVidWlsZCkgfHwgIV8uaXNPYmplY3QodHhQcmVidWlsZCkpIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodHhQcmVidWlsZCkgJiYgIV8uaXNPYmplY3QodHhQcmVidWlsZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdHhQcmVidWlsZCBtdXN0IGJlIGFuIG9iamVjdCwgZ290IHR5cGUgJHt0eXBlb2YgdHhQcmVidWlsZH1gKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHR4UHJlYnVpbGQgcGFyYW1ldGVyJyk7XG4gIH1cblxuICBjb25zdCBzaWduZXJLZXljaGFpbiA9IGdldFNpZ25lcktleWNoYWluKHBhcmFtcy5wcnYpO1xuXG4gIGNvbnN0IHsgd2FsbGV0IH0gPSBwYXJhbXM7XG5cbiAgaWYgKHdhbGxldCAmJiBpc0Rlc2NyaXB0b3JXYWxsZXQod2FsbGV0KSkge1xuICAgIGlmICghc2lnbmVyS2V5Y2hhaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBzaWduZXInKTtcbiAgICB9XG4gICAgY29uc3QgcHNidCA9IGRlY29kZURlc2NyaXB0b3JQc2J0KHBhcmFtcy50eFByZWJ1aWxkKTtcbiAgICBjb25zdCB3YWxsZXRLZXlzID0gdG9CaXAzMlRyaXBsZShhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCB3YWxsZXQpKTtcbiAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvck1hcEZyb21XYWxsZXQod2FsbGV0LCB3YWxsZXRLZXlzLCBnZXRQb2xpY3lGb3JFbnYoYml0Z28uZW52KSk7XG4gICAgZGVzY3JpcHRvci5zaWduUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwLCBzaWduZXJLZXljaGFpbiwge1xuICAgICAgb25Vbmtub3duSW5wdXQ6ICd0aHJvdycsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgdHhIZXg6IEJ1ZmZlci5mcm9tKHBzYnQuc2VyaWFsaXplKCkpLnRvU3RyaW5nKCdoZXgnKSB9O1xuICB9IGVsc2Uge1xuICAgIGxldCB0eCA9IGNvaW4uZGVjb2RlVHJhbnNhY3Rpb25Gcm9tUHJlYnVpbGQocGFyYW1zLnR4UHJlYnVpbGQpO1xuXG4gICAgLy8gV2hlbiByZXR1cm5MZWdhY3lGb3JtYXQgaXMgc2V0LCBlbnN1cmUgd2UgdXNlIHdhc20tdXR4bydzIEJpdEdvUHNidCBzb1xuICAgIC8vIGdldEhhbGZTaWduZWRMZWdhY3lGb3JtYXQoKSBpcyBhdmFpbGFibGUgYWZ0ZXIgc2lnbmluZy5cbiAgICBpZiAocGFyYW1zLnJldHVybkxlZ2FjeUZvcm1hdCAmJiBpc1V0eG9MaWJQc2J0KHR4KSkge1xuICAgICAgdHggPSBkZWNvZGVQc2J0V2l0aCh0eC50b0J1ZmZlcigpLCBjb2luLm5hbWUsICd3YXNtLXV0eG8nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWRUeCA9IGF3YWl0IGZpeGVkU2NyaXB0LnNpZ25UcmFuc2FjdGlvbihjb2luLCB0eCwgZ2V0U2lnbmVyS2V5Y2hhaW4ocGFyYW1zLnBydiksIGNvaW4ubmFtZSwge1xuICAgICAgd2FsbGV0SWQ6IHBhcmFtcy50eFByZWJ1aWxkLndhbGxldElkLFxuICAgICAgdHhJbmZvOiBwYXJhbXMudHhQcmVidWlsZC50eEluZm8sXG4gICAgICBpc0xhc3RTaWduYXR1cmU6IHBhcmFtcy5pc0xhc3RTaWduYXR1cmUgPz8gZmFsc2UsXG4gICAgICBzaWduaW5nU3RlcDogcGFyYW1zLnNpZ25pbmdTdGVwLFxuICAgICAgYWxsb3dOb25TZWd3aXRTaWduaW5nV2l0aG91dFByZXZUeDogcGFyYW1zLmFsbG93Tm9uU2Vnd2l0U2lnbmluZ1dpdGhvdXRQcmV2VHggPz8gZmFsc2UsXG4gICAgICBwdWJzOiBwYXJhbXMucHVicyxcbiAgICAgIGNvc2lnbmVyUHViOiBwYXJhbXMuY29zaWduZXJQdWIsXG4gICAgICBleHRyYWN0VHJhbnNhY3Rpb246IHBhcmFtcy5leHRyYWN0VHJhbnNhY3Rpb24sXG4gICAgICB3cml0ZVNpZ25lZFdpdGg6IHBhcmFtcy53cml0ZVNpZ25lZFdpdGgsXG4gICAgfSk7XG5cbiAgICAvLyBDb252ZXJ0IGhhbGYtc2lnbmVkIFBTQlQgdG8gbGVnYWN5IGZvcm1hdCB3aGVuIHRoZSBjYWxsZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgdHhGb3JtYXQ6ICdsZWdhY3knXG4gICAgaWYgKHBhcmFtcy5yZXR1cm5MZWdhY3lGb3JtYXQgJiYgc2lnbmVkVHggaW5zdGFuY2VvZiBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQpIHtcbiAgICAgIHJldHVybiB7IHR4SGV4OiBCdWZmZXIuZnJvbShzaWduZWRUeC5nZXRIYWxmU2lnbmVkTGVnYWN5Rm9ybWF0KCkpLnRvU3RyaW5nKCdoZXgnKSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcihzaWduZWRUeCkgPyBzaWduZWRUeCA6IGVuY29kZVRyYW5zYWN0aW9uKHNpZ25lZFR4KTtcbiAgICByZXR1cm4geyB0eEhleDogYnVmZmVyLnRvU3RyaW5nKCdoZXgnKSB9O1xuICB9XG59XG4iXX0=
@@ -35,9 +35,13 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const assert = __importStar(require("assert"));
37
37
  const sdk_core_1 = require("@bitgo/sdk-core");
38
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
38
39
  const src_1 = require("../../src");
39
40
  const util_1 = require("./util");
40
41
  const keychains = util_1.keychainsBase58.map((k) => ({ pub: k.pub }));
42
+ // A chain code that no released SDK version has ever defined — simulates a future
43
+ // server-side address type unknown to an older client.
44
+ const unknownChainCode = 99;
41
45
  describe('assertFixedScriptWalletAddress', function () {
42
46
  describe('input validation', function () {
43
47
  it('throws InvalidAddressDerivationPropertyError when both chain and index are undefined', function () {
@@ -117,6 +121,28 @@ describe('assertFixedScriptWalletAddress', function () {
117
121
  address,
118
122
  }));
119
123
  });
124
+ // Regression guard for T1-3386 / T1-3385: an unknown chain code must throw
125
+ // immediately with a clear message rather than silently falling back to P2SH
126
+ // and producing a confusing "expected <P2SH> but got <P2TR>" error.
127
+ it('throws InvalidAddressDerivationPropertyError for an unknown chain code', function () {
128
+ assert.ok(!wasm_utxo_1.fixedScriptWallet.ChainCode.is(unknownChainCode), 'test prerequisite: chain must be unknown');
129
+ const serverAddress = (0, src_1.generateAddress)('btc', { keychains, chain: 40 });
130
+ assert.throws(() => (0, src_1.assertFixedScriptWalletAddress)('btc', {
131
+ chain: unknownChainCode,
132
+ index: 0,
133
+ keychains,
134
+ format: 'base58',
135
+ address: serverAddress,
136
+ }), (err) => {
137
+ assert.ok(err instanceof sdk_core_1.InvalidAddressDerivationPropertyError);
138
+ assert.ok(err.message.includes(String(unknownChainCode)), `expected error to name the unrecognised chain code, got: ${err.message}`);
139
+ return true;
140
+ });
141
+ });
142
+ it('generateAddress throws InvalidAddressDerivationPropertyError for an unknown chain code', function () {
143
+ assert.ok(!wasm_utxo_1.fixedScriptWallet.ChainCode.is(unknownChainCode), 'test prerequisite: chain must be unknown');
144
+ assert.throws(() => (0, src_1.generateAddress)('btc', { keychains, chain: unknownChainCode }), sdk_core_1.InvalidAddressDerivationPropertyError);
145
+ });
120
146
  it('succeeds for bch cashaddr (chain 0)', function () {
121
147
  const address = (0, src_1.generateAddress)('bch', { keychains, chain: 0, format: 'cashaddr' });
122
148
  assert.doesNotThrow(() => (0, src_1.assertFixedScriptWalletAddress)('bch', {
@@ -149,4 +175,4 @@ describe('assertFixedScriptWalletAddress', function () {
149
175
  });
150
176
  });
151
177
  });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBRWpDLDhDQUFnRztBQUVoRyxtQ0FBNEU7QUFFNUUsaUNBQXlDO0FBRXpDLE1BQU0sU0FBUyxHQUFHLHNCQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFL0QsUUFBUSxDQUFDLGdDQUFnQyxFQUFFO0lBQ3pDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtRQUMzQixFQUFFLENBQUMsc0ZBQXNGLEVBQUU7WUFDekYsTUFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FDSCxJQUFBLG9DQUE4QixFQUFDLEtBQUssRUFBRTtnQkFDcEMsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxTQUE4QjtnQkFDckMsU0FBUztnQkFDVCxNQUFNLEVBQUUsUUFBUTtnQkFDaEIsT0FBTyxFQUFFLFVBQVU7YUFDcEIsQ0FBQyxFQUNKLGdEQUFxQyxDQUN0QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUVBQXVFLEVBQUU7WUFDMUUsTUFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FDSCxJQUFBLG9DQUE4QixFQUFDLEtBQUssRUFBRTtnQkFDcEMsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsU0FBUztnQkFDVCxNQUFNLEVBQUUsUUFBUTtnQkFDaEIsT0FBTyxFQUFFLFVBQVU7YUFDcEIsQ0FBQyxFQUNKLGdEQUFxQyxDQUN0QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUVBQXVF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Q0osaUNBQXNCLENBQ3ZCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciwgVW5leHBlY3RlZEFkZHJlc3NFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB7IGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcywgZ2VuZXJhdGVBZGRyZXNzIH0gZnJvbSAnLi4vLi4vc3JjJztcblxuaW1wb3J0IHsga2V5Y2hhaW5zQmFzZTU4IH0gZnJvbSAnLi91dGlsJztcblxuY29uc3Qga2V5Y2hhaW5zID0ga2V5Y2hhaW5zQmFzZTU4Lm1hcCgoaykgPT4gKHsgcHViOiBrLnB1YiB9KSk7XG5cbmRlc2NyaWJlKCdhc3NlcnRGaXhlZFNjcmlwdFdhbGxldEFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdpbnB1dCB2YWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCd0aHJvd3MgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciB3aGVuIGJvdGggY2hhaW4gYW5kIGluZGV4IGFyZSB1bmRlZmluZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgICAgY2hhaW46IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGluZGV4OiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBudW1iZXIsXG4gICAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgICAgYWRkcmVzczogJ2FueXRoaW5nJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvclxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3MgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciB3aGVuIGNoYWluIGlzIG5vbi1maW5pdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgICAgY2hhaW46IEluZmluaXR5LFxuICAgICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgICAgYWRkcmVzczogJ2FueXRoaW5nJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvclxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3MgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciB3aGVuIGluZGV4IGlzIG5vbi1maW5pdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgICAgY2hhaW46IDAsXG4gICAgICAgICAgICBpbmRleDogTmFOLFxuICAgICAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICAgICAgZm9ybWF0OiAnYmFzZTU4JyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICdhbnl0aGluZycsXG4gICAgICAgICAgfSksXG4gICAgICAgIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3JcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4ga2V5Y2hhaW5zIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgICAgY2hhaW46IDAsXG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIGtleWNoYWluczogdW5kZWZpbmVkIGFzIHVua25vd24gYXMgeyBwdWI6IHN0cmluZyB9W10sXG4gICAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgICAgYWRkcmVzczogJ2FueXRoaW5nJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgL21pc3NpbmcgcmVxdWlyZWQgcGFyYW0ga2V5Y2hhaW5zL1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2FkZHJlc3MgbWF0Y2hpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Rocm93cyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yIHdoZW4gYWRkcmVzcyBkb2VzIG5vdCBtYXRjaCBkZXJpdmVkIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgICAgY2hhaW46IDAsXG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICAgIGZvcm1hdDogJ2Jhc2U1OCcsXG4gICAgICAgICAgICBhZGRyZXNzOiAnM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEnLFxuICAgICAgICAgIH0pLFxuICAgICAgICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3N1Y2NlZWRzIGZvciBidGMgcDJzaCAoY2hhaW4gMCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKCdidGMnLCB7IGtleWNoYWlucywgY2hhaW46IDAgfSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+XG4gICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgIGNoYWluOiAwLFxuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3N1Y2NlZWRzIGZvciBidGMgcDJ3c2ggKGNoYWluIDIwKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBnZW5lcmF0ZUFkZHJlc3MoJ2J0YycsIHsga2V5Y2hhaW5zLCBjaGFpbjogMjAgfSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+XG4gICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgIGNoYWluOiAyMCxcbiAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgZm9ybWF0OiAnYmFzZTU4JyxcbiAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzdWNjZWVkcyBmb3IgYnRjIHAydHIgKGNoYWluIDQwKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBnZW5lcmF0ZUFkZHJlc3MoJ2J0YycsIHsga2V5Y2hhaW5zLCBjaGFpbjogNDAgfSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+XG4gICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgIGNoYWluOiA0MCxcbiAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgZm9ybWF0OiAnYmFzZTU4JyxcbiAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzdWNjZWVkcyBmb3IgYmNoIGNhc2hhZGRyIChjaGFpbiAwKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBnZW5lcmF0ZUFkZHJlc3MoJ2JjaCcsIHsga2V5Y2hhaW5zLCBjaGFpbjogMCwgZm9ybWF0OiAnY2FzaGFkZHInIH0pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PlxuICAgICAgICBhc3NlcnRGaXhlZFNjcmlwdFdhbGxldEFkZHJlc3MoJ2JjaCcsIHtcbiAgICAgICAgICBjaGFpbjogMCxcbiAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgZm9ybWF0OiAnY2FzaGFkZHInLFxuICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3N1Y2NlZWRzIGZvciBhIG5vbi16ZXJvIGluZGV4JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzcygnYnRjJywgeyBrZXljaGFpbnMsIGNoYWluOiAwLCBpbmRleDogNSB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT5cbiAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgY2hhaW46IDAsXG4gICAgICAgICAgaW5kZXg6IDUsXG4gICAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICAgIGZvcm1hdDogJ2Jhc2U1OCcsXG4gICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3Igd2hlbiBpbmRleCBkb2VzIG5vdCBtYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBnZW5lcmF0ZUFkZHJlc3MoJ2J0YycsIHsga2V5Y2hhaW5zLCBjaGFpbjogMCwgaW5kZXg6IDAgfSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgICAgY2hhaW46IDAsXG4gICAgICAgICAgICBpbmRleDogMSxcbiAgICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICAgIGZvcm1hdDogJ2Jhc2U1OCcsXG4gICAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICAgIH0pLFxuICAgICAgICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBRWpDLDhDQUFnRztBQUNoRyxnREFBcUQ7QUFFckQsbUNBQTRFO0FBRTVFLGlDQUF5QztBQUV6QyxNQUFNLFNBQVMsR0FBRyxzQkFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRS9ELGtGQUFrRjtBQUNsRix1REFBdUQ7QUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFFNUIsUUFBUSxDQUFDLGdDQUFnQyxFQUFFO0lBQ3pDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtRQUMzQixFQUFFLENBQUMsc0ZBQXNGLEVBQUU7WUFDekYsTUFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FDSCxJQUFBLG9DQUE4QixFQUFDLEtBQUssRUFBRTtnQkFDcEMsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxTQUE4QjtnQkFDckMsU0FBUztnQkFDVCxNQUFNLEVBQUUsUUFBUTtnQkFDaEIsT0FBTyxFQUFFLFVBQVU7YUFDcEIsQ0FBQyxFQUNKLGdEQUFxQyxDQUN0QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUVBQXVFLEVBQUU7WUFDMUUsTUFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FDSCxJQUFBLG9DQUE4QixFQUFDLEtBQUssRUFBRTtnQkFDcEMsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsU0FBUztnQkFDVCxNQUFNLEVBQUUsUUFBUTtnQkFDaEIsT0FBTyxFQUFFLFVBQVU7YUFD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QUFNLENBQ1gsR0FBRyxFQUFFLENBQ0gsSUFBQSxvQ0FBOEIsRUFBQyxLQUFLLEVBQUU7Z0JBQ3BDLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxDQUFDO2dCQUNSLFNBQVM7Z0JBQ1QsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLE9BQU87YUFDUixDQUFDLEVBQ0osaUNBQXNCLENBQ3ZCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciwgVW5leHBlY3RlZEFkZHJlc3NFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBhc3NlcnRGaXhlZFNjcmlwdFdhbGxldEFkZHJlc3MsIGdlbmVyYXRlQWRkcmVzcyB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmltcG9ydCB7IGtleWNoYWluc0Jhc2U1OCB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IGtleWNoYWlucyA9IGtleWNoYWluc0Jhc2U1OC5tYXAoKGspID0+ICh7IHB1Yjogay5wdWIgfSkpO1xuXG4vLyBBIGNoYWluIGNvZGUgdGhhdCBubyByZWxlYXNlZCBTREsgdmVyc2lvbiBoYXMgZXZlciBkZWZpbmVkIOKAlCBzaW11bGF0ZXMgYSBmdXR1cmVcbi8vIHNlcnZlci1zaWRlIGFkZHJlc3MgdHlwZSB1bmtub3duIHRvIGFuIG9sZGVyIGNsaWVudC5cbmNvbnN0IHVua25vd25DaGFpbkNvZGUgPSA5OTtcblxuZGVzY3JpYmUoJ2Fzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ2lucHV0IHZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Rocm93cyBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yIHdoZW4gYm90aCBjaGFpbiBhbmQgaW5kZXggYXJlIHVuZGVmaW5lZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgICBjaGFpbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaW5kZXg6IHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIG51bWJlcixcbiAgICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICAgIGZvcm1hdDogJ2Jhc2U1OCcsXG4gICAgICAgICAgICBhZGRyZXNzOiAnYW55dGhpbmcnLFxuICAgICAgICAgIH0pLFxuICAgICAgICBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yIHdoZW4gY2hhaW4gaXMgbm9uLWZpbml0ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgICBjaGFpbjogSW5maW5pdHksXG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICAgIGZvcm1hdDogJ2Jhc2U1OCcsXG4gICAgICAgICAgICBhZGRyZXNzOiAnYW55dGhpbmcnLFxuICAgICAgICAgIH0pLFxuICAgICAgICBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yIHdoZW4gaW5kZXggaXMgbm9uLWZpbml0ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgICBjaGFpbjogMCxcbiAgICAgICAgICAgIGluZGV4OiBOYU4sXG4gICAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgICAgYWRkcmVzczogJ2FueXRoaW5nJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvclxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3Mgd2hlbiBrZXljaGFpbnMgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgICBjaGFpbjogMCxcbiAgICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgICAga2V5Y2hhaW5zOiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyB7IHB1Yjogc3RyaW5nIH1bXSxcbiAgICAgICAgICAgIGZvcm1hdDogJ2Jhc2U1OCcsXG4gICAgICAgICAgICBhZGRyZXNzOiAnYW55dGhpbmcnLFxuICAgICAgICAgIH0pLFxuICAgICAgICAvbWlzc2luZyByZXF1aXJlZCBwYXJhbSBrZXljaGFpbnMvXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkcmVzcyBtYXRjaGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgndGhyb3dzIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3Igd2hlbiBhZGRyZXNzIGRvZXMgbm90IG1hdGNoIGRlcml2ZWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgICBjaGFpbjogMCxcbiAgICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICAgICAgZm9ybWF0OiAnYmFzZTU4JyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICczQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQScsXG4gICAgICAgICAgfSksXG4gICAgICAgIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3JcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3VjY2VlZHMgZm9yIGJ0YyBwMnNoIChjaGFpbiAwKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBnZW5lcmF0ZUFkZHJlc3MoJ2J0YycsIHsga2V5Y2hhaW5zLCBjaGFpbjogMCB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT5cbiAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgY2hhaW46IDAsXG4gICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICAgIGZvcm1hdDogJ2Jhc2U1OCcsXG4gICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3VjY2VlZHMgZm9yIGJ0YyBwMndzaCAoY2hhaW4gMjApJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzcygnYnRjJywgeyBrZXljaGFpbnMsIGNoYWluOiAyMCB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT5cbiAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgY2hhaW46IDIwLFxuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3N1Y2NlZWRzIGZvciBidGMgcDJ0ciAoY2hhaW4gNDApJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzcygnYnRjJywgeyBrZXljaGFpbnMsIGNoYWluOiA0MCB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT5cbiAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdidGMnLCB7XG4gICAgICAgICAgY2hhaW46IDQwLFxuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gUmVncmVzc2lvbiBndWFyZCBmb3IgVDEtMzM4NiAvIFQxLTMzODU6IGFuIHVua25vd24gY2hhaW4gY29kZSBtdXN0IHRocm93XG4gICAgLy8gaW1tZWRpYXRlbHkgd2l0aCBhIGNsZWFyIG1lc3NhZ2UgcmF0aGVyIHRoYW4gc2lsZW50bHkgZmFsbGluZyBiYWNrIHRvIFAyU0hcbiAgICAvLyBhbmQgcHJvZHVjaW5nIGEgY29uZnVzaW5nIFwiZXhwZWN0ZWQgPFAyU0g+IGJ1dCBnb3QgPFAyVFI+XCIgZXJyb3IuXG4gICAgaXQoJ3Rocm93cyBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yIGZvciBhbiB1bmtub3duIGNoYWluIGNvZGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQub2soIWZpeGVkU2NyaXB0V2FsbGV0LkNoYWluQ29kZS5pcyh1bmtub3duQ2hhaW5Db2RlKSwgJ3Rlc3QgcHJlcmVxdWlzaXRlOiBjaGFpbiBtdXN0IGJlIHVua25vd24nKTtcbiAgICAgIGNvbnN0IHNlcnZlckFkZHJlc3MgPSBnZW5lcmF0ZUFkZHJlc3MoJ2J0YycsIHsga2V5Y2hhaW5zLCBjaGFpbjogNDAgfSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgICAgY2hhaW46IHVua25vd25DaGFpbkNvZGUsXG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICAgIGZvcm1hdDogJ2Jhc2U1OCcsXG4gICAgICAgICAgICBhZGRyZXNzOiBzZXJ2ZXJBZGRyZXNzLFxuICAgICAgICAgIH0pLFxuICAgICAgICAoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgYXNzZXJ0Lm9rKGVyciBpbnN0YW5jZW9mIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3IpO1xuICAgICAgICAgIGFzc2VydC5vayhcbiAgICAgICAgICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKFN0cmluZyh1bmtub3duQ2hhaW5Db2RlKSksXG4gICAgICAgICAgICBgZXhwZWN0ZWQgZXJyb3IgdG8gbmFtZSB0aGUgdW5yZWNvZ25pc2VkIGNoYWluIGNvZGUsIGdvdDogJHtlcnIubWVzc2FnZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdnZW5lcmF0ZUFkZHJlc3MgdGhyb3dzIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3IgZm9yIGFuIHVua25vd24gY2hhaW4gY29kZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5vayghZml4ZWRTY3JpcHRXYWxsZXQuQ2hhaW5Db2RlLmlzKHVua25vd25DaGFpbkNvZGUpLCAndGVzdCBwcmVyZXF1aXNpdGU6IGNoYWluIG11c3QgYmUgdW5rbm93bicpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gZ2VuZXJhdGVBZGRyZXNzKCdidGMnLCB7IGtleWNoYWlucywgY2hhaW46IHVua25vd25DaGFpbkNvZGUgfSksXG4gICAgICAgIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3JcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3VjY2VlZHMgZm9yIGJjaCBjYXNoYWRkciAoY2hhaW4gMCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKCdiY2gnLCB7IGtleWNoYWlucywgY2hhaW46IDAsIGZvcm1hdDogJ2Nhc2hhZGRyJyB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT5cbiAgICAgICAgYXNzZXJ0Rml4ZWRTY3JpcHRXYWxsZXRBZGRyZXNzKCdiY2gnLCB7XG4gICAgICAgICAgY2hhaW46IDAsXG4gICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICAgIGZvcm1hdDogJ2Nhc2hhZGRyJyxcbiAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzdWNjZWVkcyBmb3IgYSBub24temVybyBpbmRleCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBnZW5lcmF0ZUFkZHJlc3MoJ2J0YycsIHsga2V5Y2hhaW5zLCBjaGFpbjogMCwgaW5kZXg6IDUgfSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+XG4gICAgICAgIGFzc2VydEZpeGVkU2NyaXB0V2FsbGV0QWRkcmVzcygnYnRjJywge1xuICAgICAgICAgIGNoYWluOiAwLFxuICAgICAgICAgIGluZGV4OiA1LFxuICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yIHdoZW4gaW5kZXggZG9lcyBub3QgbWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKCdidGMnLCB7IGtleWNoYWlucywgY2hhaW46IDAsIGluZGV4OiAwIH0pO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBhc3NlcnRGaXhlZFNjcmlwdFdhbGxldEFkZHJlc3MoJ2J0YycsIHtcbiAgICAgICAgICAgIGNoYWluOiAwLFxuICAgICAgICAgICAgaW5kZXg6IDEsXG4gICAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgICBmb3JtYXQ6ICdiYXNlNTgnLFxuICAgICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgVW5leHBlY3RlZEFkZHJlc3NFcnJvclxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import 'mocha';
2
+ //# sourceMappingURL=signTransactionE2E.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signTransactionE2E.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/descriptor/signTransactionE2E.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ require("mocha");
40
+ const assert_1 = __importDefault(require("assert"));
41
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
42
+ const testutils = __importStar(require("@bitgo/wasm-utxo/testutils"));
43
+ const utxoCoins_1 = require("../../util/utxoCoins");
44
+ const nockBitGo_1 = require("../../util/nockBitGo");
45
+ const { getDescriptorMap, mockPsbtDefaultWithDescriptorTemplate } = testutils.descriptor;
46
+ const { getKeyTriple } = testutils;
47
+ // End-to-end coverage for descriptor wallet signing through the
48
+ // top-level coin.signTransaction entry point (T1-3401). Locks in the
49
+ // wasm-utxo decode path that T1-3400 broke.
50
+ describe('signTransaction E2E: descriptor wallet (wasm-utxo backend)', function () {
51
+ it('produces a signed PSBT with valid user signatures on every input', async function () {
52
+ const coin = (0, utxoCoins_1.getUtxoCoin)('btc');
53
+ // mockPsbtDefaultWithDescriptorTemplate uses getDefaultXPubs('a') —
54
+ // i.e. getKeyTriple('a') — so we sign with the same triple.
55
+ const keychain = getKeyTriple('a');
56
+ const userKey = keychain[0];
57
+ const descriptorMap = getDescriptorMap('Wsh2Of3', keychain);
58
+ const unsignedPsbt = mockPsbtDefaultWithDescriptorTemplate('Wsh2Of3');
59
+ const psbtHex = Buffer.from(unsignedPsbt.serialize()).toString('hex');
60
+ const keyIds = ['kU', 'kB', 'kG'];
61
+ const wallet = {
62
+ coinSpecific: () => ({
63
+ descriptors: [...descriptorMap.entries()].map(([name, descriptor]) => ({
64
+ name,
65
+ value: descriptor.toString(),
66
+ })),
67
+ }),
68
+ keyIds: () => keyIds,
69
+ };
70
+ // Mock the keychain fetch — fetchKeychains pulls each key by id.
71
+ keyIds.forEach((id, i) => {
72
+ (0, nockBitGo_1.nockBitGo)().get(`/api/v2/${coin.getChain()}/key/${id}`).reply(200, { pub: keychain[i].neutered().toBase58() });
73
+ });
74
+ // decodeWith: 'wasm-utxo' is explicit to lock in the BitGoPsbt
75
+ // decode path that T1-3400 broke; this is also the production
76
+ // default after 1702a08009.
77
+ const result = await coin.signTransaction({
78
+ txPrebuild: { txHex: psbtHex, decodeWith: 'wasm-utxo' },
79
+ prv: userKey.toBase58(),
80
+ wallet,
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ });
83
+ assert_1.default.ok('txHex' in result, 'expected signTransaction to return { txHex }');
84
+ const signedPsbt = wasm_utxo_1.Psbt.deserialize(Buffer.from(result.txHex, 'hex'));
85
+ const inputs = signedPsbt.getInputs();
86
+ assert_1.default.ok(inputs.length > 0, 'expected at least one input');
87
+ inputs.forEach((_input, vin) => {
88
+ assert_1.default.ok(signedPsbt.hasPartialSignatures(vin), `input ${vin} has no partial signatures`);
89
+ const sigs = signedPsbt.getPartialSignatures(vin);
90
+ assert_1.default.ok(sigs.length > 0, `input ${vin} returned empty partial signatures`);
91
+ // Pubkeys in partial sigs are the descriptor-derived child keys, not
92
+ // the user master pubkey; assert that each sig validates at its claimed
93
+ // pubkey, which is the strongest "signing actually worked" check.
94
+ for (const sig of sigs) {
95
+ assert_1.default.ok(signedPsbt.validateSignatureAtInput(vin, sig.pubkey), `input ${vin} has an invalid signature for pubkey ${Buffer.from(sig.pubkey).toString('hex')}`);
96
+ }
97
+ });
98
+ });
99
+ });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uRTJFLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3Ivc2lnblRyYW5zYWN0aW9uRTJFLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUJBQWU7QUFDZixvREFBNEI7QUFFNUIsZ0RBQXdDO0FBQ3hDLHNFQUF3RDtBQUd4RCxvREFBbUQ7QUFDbkQsb0RBQWlEO0FBRWpELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxxQ0FBcUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7QUFDekYsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFNBQVMsQ0FBQztBQUVuQyxnRUFBZ0U7QUFDaEUscUVBQXFFO0FBQ3JFLDRDQUE0QztBQUM1QyxRQUFRLENBQUMsNERBQTRELEVBQUU7SUFDckUsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEtBQUs7UUFDMUUsTUFBTSxJQUFJLEdBQUcsSUFBQSx1QkFBVyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLG9FQUFvRTtRQUNwRSw0REFBNEQ7UUFDNUQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFNUQsTUFBTSxZQUFZLEdBQUcscUNBQXFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sTUFBTSxHQUFHO1lBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ25CLFdBQVcsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3JFLElBQUk7b0JBQ0osS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUU7aUJBQzdCLENBQUMsQ0FBQzthQUNKLENBQUM7WUFDRixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtTQUNJLENBQUM7UUFFM0IsaUVBQWlFO1FBQ2pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsSUFBQSxxQkFBUyxHQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pILENBQUMsQ0FBQyxDQUFDO1FBRUgsK0RBQStEO1FBQy9ELDhEQUE4RDtRQUM5RCw0QkFBNEI7UUFDNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3hDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTtZQUN2RCxHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN2QixNQUFNO1lBQ04sOERBQThEO1NBQ3hELENBQUMsQ0FBQztRQUVWLGdCQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxNQUFNLEVBQUUsOENBQThDLENBQUMsQ0FBQztRQUM3RSxNQUFNLFVBQVUsR0FBRyxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV0RSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzdCLGdCQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztZQUMxRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEQsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLG9DQUFvQyxDQUFDLENBQUM7WUFDN0UscUVBQXFFO1lBQ3JFLHdFQUF3RTtZQUN4RSxrRUFBa0U7WUFDbEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsZ0JBQU0sQ0FBQyxFQUFFLENBQ1AsVUFBVSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQ3BELFNBQVMsR0FBRyx3Q0FBd0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQzlGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdtb2NoYSc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IFBzYnQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCAqIGFzIHRlc3R1dGlscyBmcm9tICdAYml0Z28vd2FzbS11dHhvL3Rlc3R1dGlscyc7XG5cbmltcG9ydCB0eXBlIHsgVXR4b1dhbGxldCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy93YWxsZXQnO1xuaW1wb3J0IHsgZ2V0VXR4b0NvaW4gfSBmcm9tICcuLi8uLi91dGlsL3V0eG9Db2lucyc7XG5pbXBvcnQgeyBub2NrQml0R28gfSBmcm9tICcuLi8uLi91dGlsL25vY2tCaXRHbyc7XG5cbmNvbnN0IHsgZ2V0RGVzY3JpcHRvck1hcCwgbW9ja1BzYnREZWZhdWx0V2l0aERlc2NyaXB0b3JUZW1wbGF0ZSB9ID0gdGVzdHV0aWxzLmRlc2NyaXB0b3I7XG5jb25zdCB7IGdldEtleVRyaXBsZSB9ID0gdGVzdHV0aWxzO1xuXG4vLyBFbmQtdG8tZW5kIGNvdmVyYWdlIGZvciBkZXNjcmlwdG9yIHdhbGxldCBzaWduaW5nIHRocm91Z2ggdGhlXG4vLyB0b3AtbGV2ZWwgY29pbi5zaWduVHJhbnNhY3Rpb24gZW50cnkgcG9pbnQgKFQxLTM0MDEpLiBMb2NrcyBpbiB0aGVcbi8vIHdhc20tdXR4byBkZWNvZGUgcGF0aCB0aGF0IFQxLTM0MDAgYnJva2UuXG5kZXNjcmliZSgnc2lnblRyYW5zYWN0aW9uIEUyRTogZGVzY3JpcHRvciB3YWxsZXQgKHdhc20tdXR4byBiYWNrZW5kKScsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Byb2R1Y2VzIGEgc2lnbmVkIFBTQlQgd2l0aCB2YWxpZCB1c2VyIHNpZ25hdHVyZXMgb24gZXZlcnkgaW5wdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgY29pbiA9IGdldFV0eG9Db2luKCdidGMnKTtcbiAgICAvLyBtb2NrUHNidERlZmF1bHRXaXRoRGVzY3JpcHRvclRlbXBsYXRlIHVzZXMgZ2V0RGVmYXVsdFhQdWJzKCdhJykg4oCUXG4gICAgLy8gaS5lLiBnZXRLZXlUcmlwbGUoJ2EnKSDigJQgc28gd2Ugc2lnbiB3aXRoIHRoZSBzYW1lIHRyaXBsZS5cbiAgICBjb25zdCBrZXljaGFpbiA9IGdldEtleVRyaXBsZSgnYScpO1xuICAgIGNvbnN0IHVzZXJLZXkgPSBrZXljaGFpblswXTtcbiAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvck1hcCgnV3NoMk9mMycsIGtleWNoYWluKTtcblxuICAgIGNvbnN0IHVuc2lnbmVkUHNidCA9IG1vY2tQc2J0RGVmYXVsdFdpdGhEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjMnKTtcbiAgICBjb25zdCBwc2J0SGV4ID0gQnVmZmVyLmZyb20odW5zaWduZWRQc2J0LnNlcmlhbGl6ZSgpKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICBjb25zdCBrZXlJZHMgPSBbJ2tVJywgJ2tCJywgJ2tHJ107XG4gICAgY29uc3Qgd2FsbGV0ID0ge1xuICAgICAgY29pblNwZWNpZmljOiAoKSA9PiAoe1xuICAgICAgICBkZXNjcmlwdG9yczogWy4uLmRlc2NyaXB0b3JNYXAuZW50cmllcygpXS5tYXAoKFtuYW1lLCBkZXNjcmlwdG9yXSkgPT4gKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHZhbHVlOiBkZXNjcmlwdG9yLnRvU3RyaW5nKCksXG4gICAgICAgIH0pKSxcbiAgICAgIH0pLFxuICAgICAga2V5SWRzOiAoKSA9PiBrZXlJZHMsXG4gICAgfSBhcyB1bmtub3duIGFzIFV0eG9XYWxsZXQ7XG5cbiAgICAvLyBNb2NrIHRoZSBrZXljaGFpbiBmZXRjaCDigJQgZmV0Y2hLZXljaGFpbnMgcHVsbHMgZWFjaCBrZXkgYnkgaWQuXG4gICAga2V5SWRzLmZvckVhY2goKGlkLCBpKSA9PiB7XG4gICAgICBub2NrQml0R28oKS5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L2tleS8ke2lkfWApLnJlcGx5KDIwMCwgeyBwdWI6IGtleWNoYWluW2ldLm5ldXRlcmVkKCkudG9CYXNlNTgoKSB9KTtcbiAgICB9KTtcblxuICAgIC8vIGRlY29kZVdpdGg6ICd3YXNtLXV0eG8nIGlzIGV4cGxpY2l0IHRvIGxvY2sgaW4gdGhlIEJpdEdvUHNidFxuICAgIC8vIGRlY29kZSBwYXRoIHRoYXQgVDEtMzQwMCBicm9rZTsgdGhpcyBpcyBhbHNvIHRoZSBwcm9kdWN0aW9uXG4gICAgLy8gZGVmYXVsdCBhZnRlciAxNzAyYTA4MDA5LlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvaW4uc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IHBzYnRIZXgsIGRlY29kZVdpdGg6ICd3YXNtLXV0eG8nIH0sXG4gICAgICBwcnY6IHVzZXJLZXkudG9CYXNlNTgoKSxcbiAgICAgIHdhbGxldCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgfSBhcyBhbnkpO1xuXG4gICAgYXNzZXJ0Lm9rKCd0eEhleCcgaW4gcmVzdWx0LCAnZXhwZWN0ZWQgc2lnblRyYW5zYWN0aW9uIHRvIHJldHVybiB7IHR4SGV4IH0nKTtcbiAgICBjb25zdCBzaWduZWRQc2J0ID0gUHNidC5kZXNlcmlhbGl6ZShCdWZmZXIuZnJvbShyZXN1bHQudHhIZXgsICdoZXgnKSk7XG5cbiAgICBjb25zdCBpbnB1dHMgPSBzaWduZWRQc2J0LmdldElucHV0cygpO1xuICAgIGFzc2VydC5vayhpbnB1dHMubGVuZ3RoID4gMCwgJ2V4cGVjdGVkIGF0IGxlYXN0IG9uZSBpbnB1dCcpO1xuICAgIGlucHV0cy5mb3JFYWNoKChfaW5wdXQsIHZpbikgPT4ge1xuICAgICAgYXNzZXJ0Lm9rKHNpZ25lZFBzYnQuaGFzUGFydGlhbFNpZ25hdHVyZXModmluKSwgYGlucHV0ICR7dmlufSBoYXMgbm8gcGFydGlhbCBzaWduYXR1cmVzYCk7XG4gICAgICBjb25zdCBzaWdzID0gc2lnbmVkUHNidC5nZXRQYXJ0aWFsU2lnbmF0dXJlcyh2aW4pO1xuICAgICAgYXNzZXJ0Lm9rKHNpZ3MubGVuZ3RoID4gMCwgYGlucHV0ICR7dmlufSByZXR1cm5lZCBlbXB0eSBwYXJ0aWFsIHNpZ25hdHVyZXNgKTtcbiAgICAgIC8vIFB1YmtleXMgaW4gcGFydGlhbCBzaWdzIGFyZSB0aGUgZGVzY3JpcHRvci1kZXJpdmVkIGNoaWxkIGtleXMsIG5vdFxuICAgICAgLy8gdGhlIHVzZXIgbWFzdGVyIHB1YmtleTsgYXNzZXJ0IHRoYXQgZWFjaCBzaWcgdmFsaWRhdGVzIGF0IGl0cyBjbGFpbWVkXG4gICAgICAvLyBwdWJrZXksIHdoaWNoIGlzIHRoZSBzdHJvbmdlc3QgXCJzaWduaW5nIGFjdHVhbGx5IHdvcmtlZFwiIGNoZWNrLlxuICAgICAgZm9yIChjb25zdCBzaWcgb2Ygc2lncykge1xuICAgICAgICBhc3NlcnQub2soXG4gICAgICAgICAgc2lnbmVkUHNidC52YWxpZGF0ZVNpZ25hdHVyZUF0SW5wdXQodmluLCBzaWcucHVia2V5KSxcbiAgICAgICAgICBgaW5wdXQgJHt2aW59IGhhcyBhbiBpbnZhbGlkIHNpZ25hdHVyZSBmb3IgcHVia2V5ICR7QnVmZmVyLmZyb20oc2lnLnB1YmtleSkudG9TdHJpbmcoJ2hleCcpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import 'mocha';
2
+ //# sourceMappingURL=signTransactionGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signTransactionGuard.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/descriptor/signTransactionGuard.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ require("mocha");
40
+ const assert_1 = __importDefault(require("assert"));
41
+ const testutils = __importStar(require("@bitgo/wasm-utxo/testutils"));
42
+ const signTransaction_1 = require("../../../../src/transaction/signTransaction");
43
+ const utxoCoins_1 = require("../../util/utxoCoins");
44
+ const keychains_1 = require("../../util/keychains");
45
+ const { getDescriptorMap, mockPsbtDefaultWithDescriptorTemplate } = testutils.descriptor;
46
+ // Regression test for T1-3400. The descriptor sign guard previously
47
+ // only accepted utxo-lib PSBTs (UtxoLibPsbt) and Uint8Array, throwing
48
+ // `descriptor wallets require PSBT format transactions` when the
49
+ // decoded prebuild was a wasm-utxo BitGoPsbt — the default after
50
+ // defaultSdkBackend flipped to 'wasm-utxo' for all coins.
51
+ describe('signTransaction: descriptor wallet with BitGoPsbt prebuild (T1-3400)', function () {
52
+ it('does not reject BitGoPsbt with the descriptor PSBT guard', async function () {
53
+ const coin = (0, utxoCoins_1.getUtxoCoin)('btc');
54
+ const descriptorMap = getDescriptorMap('Wsh2Of3');
55
+ const psbt = mockPsbtDefaultWithDescriptorTemplate('Wsh2Of3');
56
+ const psbtHex = Buffer.from(psbt.serialize()).toString('hex');
57
+ const wallet = {
58
+ coinSpecific: () => ({
59
+ descriptors: [...descriptorMap.entries()].map(([name, descriptor]) => ({
60
+ name,
61
+ value: descriptor.toString(),
62
+ })),
63
+ }),
64
+ keyIds: () => ['k0', 'k1', 'k2'],
65
+ };
66
+ const userPrv = (0, keychains_1.getDefaultWalletKeys)().user.toBase58();
67
+ let caught;
68
+ try {
69
+ // decodeWith: 'wasm-utxo' forces decodeTransactionFromPrebuild to
70
+ // return fixedScriptWallet.BitGoPsbt (the path that used to trip
71
+ // the guard).
72
+ await (0, signTransaction_1.signTransaction)(coin, utxoCoins_1.defaultBitGo, {
73
+ txPrebuild: { txHex: psbtHex, decodeWith: 'wasm-utxo' },
74
+ prv: userPrv,
75
+ wallet,
76
+ });
77
+ }
78
+ catch (e) {
79
+ caught = e;
80
+ }
81
+ assert_1.default.ok(!caught || !/descriptor wallets require PSBT format transactions/.test(caught.message), `descriptor sign guard incorrectly rejected BitGoPsbt: ${caught?.message}`);
82
+ });
83
+ });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uR3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9zaWduVHJhbnNhY3Rpb25HdWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlCQUFlO0FBQ2Ysb0RBQTRCO0FBRTVCLHNFQUF3RDtBQUV4RCxpRkFBOEU7QUFFOUUsb0RBQWlFO0FBQ2pFLG9EQUE0RDtBQUU1RCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUscUNBQXFDLEVBQUUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO0FBRXpGLG9FQUFvRTtBQUNwRSxzRUFBc0U7QUFDdEUsaUVBQWlFO0FBQ2pFLGlFQUFpRTtBQUNqRSwwREFBMEQ7QUFDMUQsUUFBUSxDQUFDLHNFQUFzRSxFQUFFO0lBQy9FLEVBQUUsQ0FBQywwREFBMEQsRUFBRSxLQUFLO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLElBQUEsdUJBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxNQUFNLElBQUksR0FBRyxxQ0FBcUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5RCxNQUFNLE1BQU0sR0FBRztZQUNiLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixXQUFXLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxJQUFJO29CQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFO2lCQUM3QixDQUFDLENBQUM7YUFDSixDQUFDO1lBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7U0FDUixDQUFDO1FBRTNCLE1BQU0sT0FBTyxHQUFHLElBQUEsZ0NBQW9CLEdBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFdkQsSUFBSSxNQUF5QixDQUFDO1FBQzlCLElBQUksQ0FBQztZQUNILGtFQUFrRTtZQUNsRSxpRUFBaUU7WUFDakUsY0FBYztZQUNkLE1BQU0sSUFBQSxpQ0FBZSxFQUFDLElBQUksRUFBRSx3QkFBWSxFQUFFO2dCQUN4QyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7Z0JBQ3ZELEdBQUcsRUFBRSxPQUFPO2dCQUNaLE1BQU07YUFDQSxDQUFDLENBQUM7UUFDWixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sR0FBRyxDQUFVLENBQUM7UUFDdEIsQ0FBQztRQUVELGdCQUFNLENBQUMsRUFBRSxDQUNQLENBQUMsTUFBTSxJQUFJLENBQUMscURBQXFELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDdEYseURBQXlELE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FDM0UsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ21vY2hhJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdGVzdHV0aWxzIGZyb20gJ0BiaXRnby93YXNtLXV0eG8vdGVzdHV0aWxzJztcblxuaW1wb3J0IHsgc2lnblRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3NpZ25UcmFuc2FjdGlvbic7XG5pbXBvcnQgdHlwZSB7IFV0eG9XYWxsZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvd2FsbGV0JztcbmltcG9ydCB7IGRlZmF1bHRCaXRHbywgZ2V0VXR4b0NvaW4gfSBmcm9tICcuLi8uLi91dGlsL3V0eG9Db2lucyc7XG5pbXBvcnQgeyBnZXREZWZhdWx0V2FsbGV0S2V5cyB9IGZyb20gJy4uLy4uL3V0aWwva2V5Y2hhaW5zJztcblxuY29uc3QgeyBnZXREZXNjcmlwdG9yTWFwLCBtb2NrUHNidERlZmF1bHRXaXRoRGVzY3JpcHRvclRlbXBsYXRlIH0gPSB0ZXN0dXRpbHMuZGVzY3JpcHRvcjtcblxuLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBUMS0zNDAwLiBUaGUgZGVzY3JpcHRvciBzaWduIGd1YXJkIHByZXZpb3VzbHlcbi8vIG9ubHkgYWNjZXB0ZWQgdXR4by1saWIgUFNCVHMgKFV0eG9MaWJQc2J0KSBhbmQgVWludDhBcnJheSwgdGhyb3dpbmdcbi8vIGBkZXNjcmlwdG9yIHdhbGxldHMgcmVxdWlyZSBQU0JUIGZvcm1hdCB0cmFuc2FjdGlvbnNgIHdoZW4gdGhlXG4vLyBkZWNvZGVkIHByZWJ1aWxkIHdhcyBhIHdhc20tdXR4byBCaXRHb1BzYnQg4oCUIHRoZSBkZWZhdWx0IGFmdGVyXG4vLyBkZWZhdWx0U2RrQmFja2VuZCBmbGlwcGVkIHRvICd3YXNtLXV0eG8nIGZvciBhbGwgY29pbnMuXG5kZXNjcmliZSgnc2lnblRyYW5zYWN0aW9uOiBkZXNjcmlwdG9yIHdhbGxldCB3aXRoIEJpdEdvUHNidCBwcmVidWlsZCAoVDEtMzQwMCknLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdkb2VzIG5vdCByZWplY3QgQml0R29Qc2J0IHdpdGggdGhlIGRlc2NyaXB0b3IgUFNCVCBndWFyZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBjb2luID0gZ2V0VXR4b0NvaW4oJ2J0YycpO1xuICAgIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yTWFwKCdXc2gyT2YzJyk7XG4gICAgY29uc3QgcHNidCA9IG1vY2tQc2J0RGVmYXVsdFdpdGhEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjMnKTtcbiAgICBjb25zdCBwc2J0SGV4ID0gQnVmZmVyLmZyb20ocHNidC5zZXJpYWxpemUoKSkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgY29uc3Qgd2FsbGV0ID0ge1xuICAgICAgY29pblNwZWNpZmljOiAoKSA9PiAoe1xuICAgICAgICBkZXNjcmlwdG9yczogWy4uLmRlc2NyaXB0b3JNYXAuZW50cmllcygpXS5tYXAoKFtuYW1lLCBkZXNjcmlwdG9yXSkgPT4gKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHZhbHVlOiBkZXNjcmlwdG9yLnRvU3RyaW5nKCksXG4gICAgICAgIH0pKSxcbiAgICAgIH0pLFxuICAgICAga2V5SWRzOiAoKSA9PiBbJ2swJywgJ2sxJywgJ2syJ10sXG4gICAgfSBhcyB1bmtub3duIGFzIFV0eG9XYWxsZXQ7XG5cbiAgICBjb25zdCB1c2VyUHJ2ID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKS51c2VyLnRvQmFzZTU4KCk7XG5cbiAgICBsZXQgY2F1Z2h0OiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgLy8gZGVjb2RlV2l0aDogJ3dhc20tdXR4bycgZm9yY2VzIGRlY29kZVRyYW5zYWN0aW9uRnJvbVByZWJ1aWxkIHRvXG4gICAgICAvLyByZXR1cm4gZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0ICh0aGUgcGF0aCB0aGF0IHVzZWQgdG8gdHJpcFxuICAgICAgLy8gdGhlIGd1YXJkKS5cbiAgICAgIGF3YWl0IHNpZ25UcmFuc2FjdGlvbihjb2luLCBkZWZhdWx0Qml0R28sIHtcbiAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogcHNidEhleCwgZGVjb2RlV2l0aDogJ3dhc20tdXR4bycgfSxcbiAgICAgICAgcHJ2OiB1c2VyUHJ2LFxuICAgICAgICB3YWxsZXQsXG4gICAgICB9IGFzIGFueSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY2F1Z2h0ID0gZSBhcyBFcnJvcjtcbiAgICB9XG5cbiAgICBhc3NlcnQub2soXG4gICAgICAhY2F1Z2h0IHx8ICEvZGVzY3JpcHRvciB3YWxsZXRzIHJlcXVpcmUgUFNCVCBmb3JtYXQgdHJhbnNhY3Rpb25zLy50ZXN0KGNhdWdodC5tZXNzYWdlKSxcbiAgICAgIGBkZXNjcmlwdG9yIHNpZ24gZ3VhcmQgaW5jb3JyZWN0bHkgcmVqZWN0ZWQgQml0R29Qc2J0OiAke2NhdWdodD8ubWVzc2FnZX1gXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==