@bitgo-beta/utxo-lib 8.0.3-beta.587 → 8.0.3-beta.589

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 (177) hide show
  1. package/dist/src/address.d.ts +0 -2
  2. package/dist/src/address.d.ts.map +1 -1
  3. package/dist/src/address.js +6 -6
  4. package/dist/src/addressFormat.d.ts +0 -2
  5. package/dist/src/addressFormat.d.ts.map +1 -1
  6. package/dist/src/addressFormat.js +8 -8
  7. package/dist/src/bitgo/Musig2.d.ts +0 -2
  8. package/dist/src/bitgo/Musig2.d.ts.map +1 -1
  9. package/dist/src/bitgo/Musig2.js +24 -24
  10. package/dist/src/bitgo/PsbtUtil.d.ts +0 -2
  11. package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -1
  12. package/dist/src/bitgo/PsbtUtil.js +9 -9
  13. package/dist/src/bitgo/Unspent.d.ts +0 -2
  14. package/dist/src/bitgo/Unspent.d.ts.map +1 -1
  15. package/dist/src/bitgo/Unspent.js +12 -13
  16. package/dist/src/bitgo/UtxoPsbt.d.ts +0 -2
  17. package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
  18. package/dist/src/bitgo/UtxoPsbt.js +1 -1
  19. package/dist/src/bitgo/UtxoTransaction.d.ts +0 -2
  20. package/dist/src/bitgo/UtxoTransaction.d.ts.map +1 -1
  21. package/dist/src/bitgo/UtxoTransaction.js +3 -3
  22. package/dist/src/bitgo/UtxoTransactionBuilder.d.ts +0 -2
  23. package/dist/src/bitgo/UtxoTransactionBuilder.d.ts.map +1 -1
  24. package/dist/src/bitgo/UtxoTransactionBuilder.js +1 -1
  25. package/dist/src/bitgo/bitcoincash/address.d.ts +0 -2
  26. package/dist/src/bitgo/bitcoincash/address.d.ts.map +1 -1
  27. package/dist/src/bitgo/bitcoincash/address.js +6 -7
  28. package/dist/src/bitgo/dash/DashPsbt.d.ts +0 -2
  29. package/dist/src/bitgo/dash/DashPsbt.d.ts.map +1 -1
  30. package/dist/src/bitgo/dash/DashTransaction.d.ts +0 -2
  31. package/dist/src/bitgo/dash/DashTransaction.d.ts.map +1 -1
  32. package/dist/src/bitgo/dash/DashTransaction.js +1 -1
  33. package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts +0 -2
  34. package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts.map +1 -1
  35. package/dist/src/bitgo/dash/DashTransactionBuilder.js +1 -1
  36. package/dist/src/bitgo/keyutil.d.ts +0 -2
  37. package/dist/src/bitgo/keyutil.d.ts.map +1 -1
  38. package/dist/src/bitgo/keyutil.js +4 -5
  39. package/dist/src/bitgo/legacysafe/index.d.ts +0 -2
  40. package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -1
  41. package/dist/src/bitgo/legacysafe/index.js +4 -5
  42. package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts +0 -2
  43. package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -1
  44. package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts +0 -2
  45. package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts.map +1 -1
  46. package/dist/src/bitgo/litecoin/LitecoinTransaction.js +1 -1
  47. package/dist/src/bitgo/nonStandardHalfSigned.js +2 -3
  48. package/dist/src/bitgo/outputScripts.d.ts +0 -2
  49. package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
  50. package/dist/src/bitgo/outputScripts.js +20 -20
  51. package/dist/src/bitgo/parseInput.d.ts +0 -2
  52. package/dist/src/bitgo/parseInput.d.ts.map +1 -1
  53. package/dist/src/bitgo/parseInput.js +10 -11
  54. package/dist/src/bitgo/psbt/fromHalfSigned.d.ts +0 -2
  55. package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +1 -1
  56. package/dist/src/bitgo/psbt/fromHalfSigned.js +3 -4
  57. package/dist/src/bitgo/psbt/scriptTypes.d.ts +0 -2
  58. package/dist/src/bitgo/psbt/scriptTypes.d.ts.map +1 -1
  59. package/dist/src/bitgo/psbt/scriptTypes.js +5 -6
  60. package/dist/src/bitgo/signature.d.ts +0 -2
  61. package/dist/src/bitgo/signature.d.ts.map +1 -1
  62. package/dist/src/bitgo/signature.js +9 -10
  63. package/dist/src/bitgo/tnumber.js +2 -3
  64. package/dist/src/bitgo/transaction.d.ts +0 -2
  65. package/dist/src/bitgo/transaction.d.ts.map +1 -1
  66. package/dist/src/bitgo/transaction.js +13 -14
  67. package/dist/src/bitgo/transactionAmounts.js +2 -3
  68. package/dist/src/bitgo/types.d.ts +0 -2
  69. package/dist/src/bitgo/types.d.ts.map +1 -1
  70. package/dist/src/bitgo/types.js +4 -5
  71. package/dist/src/bitgo/wallet/Psbt.d.ts +0 -2
  72. package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
  73. package/dist/src/bitgo/wallet/Psbt.js +19 -18
  74. package/dist/src/bitgo/wallet/Unspent.d.ts +0 -2
  75. package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
  76. package/dist/src/bitgo/wallet/Unspent.js +10 -10
  77. package/dist/src/bitgo/wallet/WalletKeys.d.ts +0 -2
  78. package/dist/src/bitgo/wallet/WalletKeys.d.ts.map +1 -1
  79. package/dist/src/bitgo/wallet/WalletKeys.js +3 -3
  80. package/dist/src/bitgo/wallet/WalletOutput.js +3 -4
  81. package/dist/src/bitgo/wallet/WalletScripts.js +3 -4
  82. package/dist/src/bitgo/wallet/WalletUnspentSigner.js +1 -1
  83. package/dist/src/bitgo/wallet/chains.js +10 -10
  84. package/dist/src/bitgo/wallet/psbt/PsbtOutputs.js +7 -8
  85. package/dist/src/bitgo/wallet/psbt/RootNodes.js +5 -5
  86. package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts +1 -3
  87. package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts.map +1 -1
  88. package/dist/src/bitgo/zcash/ZcashBufferutils.js +15 -15
  89. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +0 -2
  90. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
  91. package/dist/src/bitgo/zcash/ZcashPsbt.js +1 -1
  92. package/dist/src/bitgo/zcash/ZcashTransaction.d.ts +0 -2
  93. package/dist/src/bitgo/zcash/ZcashTransaction.d.ts.map +1 -1
  94. package/dist/src/bitgo/zcash/ZcashTransaction.js +4 -4
  95. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts +0 -2
  96. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts.map +1 -1
  97. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.js +1 -1
  98. package/dist/src/bitgo/zcash/address.d.ts +0 -2
  99. package/dist/src/bitgo/zcash/address.d.ts.map +1 -1
  100. package/dist/src/bitgo/zcash/address.js +5 -6
  101. package/dist/src/bitgo/zcash/hashZip0244.d.ts +0 -2
  102. package/dist/src/bitgo/zcash/hashZip0244.d.ts.map +1 -1
  103. package/dist/src/bitgo/zcash/hashZip0244.js +7 -8
  104. package/dist/src/classify.d.ts +0 -2
  105. package/dist/src/classify.d.ts.map +1 -1
  106. package/dist/src/classify.js +5 -5
  107. package/dist/src/networks.js +21 -21
  108. package/dist/src/noble_ecc.js +1 -1
  109. package/dist/src/payments/p2tr.js +3 -4
  110. package/dist/src/payments/p2tr_ns.js +2 -3
  111. package/dist/src/taproot.d.ts +1 -3
  112. package/dist/src/taproot.d.ts.map +1 -1
  113. package/dist/src/taproot.js +19 -19
  114. package/dist/src/templates/multisig/input.d.ts +0 -2
  115. package/dist/src/templates/multisig/input.d.ts.map +1 -1
  116. package/dist/src/templates/multisig/input.js +2 -3
  117. package/dist/src/templates/multisig/output.d.ts +0 -2
  118. package/dist/src/templates/multisig/output.d.ts.map +1 -1
  119. package/dist/src/templates/multisig/output.js +2 -3
  120. package/dist/src/templates/nulldata.d.ts +0 -2
  121. package/dist/src/templates/nulldata.d.ts.map +1 -1
  122. package/dist/src/templates/nulldata.js +3 -3
  123. package/dist/src/templates/pubkey/input.d.ts +0 -2
  124. package/dist/src/templates/pubkey/input.d.ts.map +1 -1
  125. package/dist/src/templates/pubkey/input.js +2 -3
  126. package/dist/src/templates/pubkey/output.d.ts +0 -2
  127. package/dist/src/templates/pubkey/output.d.ts.map +1 -1
  128. package/dist/src/templates/pubkey/output.js +2 -3
  129. package/dist/src/templates/pubkeyhash/input.d.ts +0 -2
  130. package/dist/src/templates/pubkeyhash/input.d.ts.map +1 -1
  131. package/dist/src/templates/pubkeyhash/input.js +2 -3
  132. package/dist/src/templates/pubkeyhash/output.d.ts +0 -2
  133. package/dist/src/templates/pubkeyhash/output.d.ts.map +1 -1
  134. package/dist/src/templates/pubkeyhash/output.js +2 -3
  135. package/dist/src/templates/scripthash/input.d.ts +0 -2
  136. package/dist/src/templates/scripthash/input.d.ts.map +1 -1
  137. package/dist/src/templates/scripthash/input.js +2 -3
  138. package/dist/src/templates/scripthash/output.d.ts +0 -2
  139. package/dist/src/templates/scripthash/output.d.ts.map +1 -1
  140. package/dist/src/templates/scripthash/output.js +2 -3
  141. package/dist/src/templates/taproot/input.d.ts +0 -2
  142. package/dist/src/templates/taproot/input.d.ts.map +1 -1
  143. package/dist/src/templates/taproot/input.js +2 -3
  144. package/dist/src/templates/taproot/output.d.ts +0 -2
  145. package/dist/src/templates/taproot/output.d.ts.map +1 -1
  146. package/dist/src/templates/taproot/output.js +2 -3
  147. package/dist/src/templates/taprootnofn/input.d.ts +0 -2
  148. package/dist/src/templates/taprootnofn/input.d.ts.map +1 -1
  149. package/dist/src/templates/taprootnofn/input.js +2 -3
  150. package/dist/src/templates/taprootnofn/output.d.ts +0 -2
  151. package/dist/src/templates/taprootnofn/output.d.ts.map +1 -1
  152. package/dist/src/templates/taprootnofn/output.js +2 -3
  153. package/dist/src/templates/witnesscommitment/output.d.ts +0 -2
  154. package/dist/src/templates/witnesscommitment/output.d.ts.map +1 -1
  155. package/dist/src/templates/witnesscommitment/output.js +4 -5
  156. package/dist/src/templates/witnesspubkeyhash/input.d.ts +0 -2
  157. package/dist/src/templates/witnesspubkeyhash/input.d.ts.map +1 -1
  158. package/dist/src/templates/witnesspubkeyhash/input.js +2 -3
  159. package/dist/src/templates/witnesspubkeyhash/output.d.ts +0 -2
  160. package/dist/src/templates/witnesspubkeyhash/output.d.ts.map +1 -1
  161. package/dist/src/templates/witnesspubkeyhash/output.js +2 -3
  162. package/dist/src/templates/witnessscripthash/input.d.ts +0 -2
  163. package/dist/src/templates/witnessscripthash/input.d.ts.map +1 -1
  164. package/dist/src/templates/witnessscripthash/input.js +2 -3
  165. package/dist/src/templates/witnessscripthash/output.d.ts +0 -2
  166. package/dist/src/templates/witnessscripthash/output.d.ts.map +1 -1
  167. package/dist/src/templates/witnessscripthash/output.js +2 -3
  168. package/dist/src/testutil/keys.js +7 -8
  169. package/dist/src/testutil/mock.d.ts +0 -2
  170. package/dist/src/testutil/mock.d.ts.map +1 -1
  171. package/dist/src/testutil/mock.js +7 -7
  172. package/dist/src/testutil/psbt.js +8 -8
  173. package/dist/src/testutil/transaction.js +7 -7
  174. package/dist/src/transaction_builder.d.ts +0 -2
  175. package/dist/src/transaction_builder.d.ts.map +1 -1
  176. package/dist/src/transaction_builder.js +1 -1
  177. package/package.json +3 -3
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZcashTransaction = exports.getDefaultConsensusBranchIdForVersion = exports.getDefaultVersionGroupIdForVersion = exports.UnsupportedTransactionError = void 0;
3
+ exports.ZcashTransaction = exports.UnsupportedTransactionError = void 0;
4
+ exports.getDefaultVersionGroupIdForVersion = getDefaultVersionGroupIdForVersion;
5
+ exports.getDefaultConsensusBranchIdForVersion = getDefaultConsensusBranchIdForVersion;
4
6
  const bitcoinjs_lib_1 = require("bitcoinjs-lib");
5
7
  const types = require("bitcoinjs-lib/src/types");
6
8
  const bufferutils_1 = require("bitcoinjs-lib/src/bufferutils");
@@ -37,7 +39,6 @@ function getDefaultVersionGroupIdForVersion(version) {
37
39
  }
38
40
  throw new Error(`no value for version ${version}`);
39
41
  }
40
- exports.getDefaultVersionGroupIdForVersion = getDefaultVersionGroupIdForVersion;
41
42
  function getDefaultConsensusBranchIdForVersion(network, version) {
42
43
  switch (version) {
43
44
  case 1:
@@ -62,7 +63,6 @@ function getDefaultConsensusBranchIdForVersion(network, version) {
62
63
  }
63
64
  throw new Error(`no value for version ${version}`);
64
65
  }
65
- exports.getDefaultConsensusBranchIdForVersion = getDefaultConsensusBranchIdForVersion;
66
66
  class ZcashTransaction extends UtxoTransaction_1.UtxoTransaction {
67
67
  constructor(network, tx, amountType) {
68
68
  super(network, tx, amountType);
@@ -348,4 +348,4 @@ ZcashTransaction.VERSION4_BRANCH_NU5 = 450;
348
348
  ZcashTransaction.VERSION4_BRANCH_NU6 = 455;
349
349
  ZcashTransaction.VERSION5_BRANCH_NU5 = 500;
350
350
  ZcashTransaction.VERSION5_BRANCH_NU6 = 550;
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFvRDtBQUNwRCxpREFBaUQ7QUFDakQsK0RBQTJFO0FBRTNFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUd2Qyx3REFBbUU7QUFDbkUseURBQTBHO0FBQzFHLCtDQUFrRjtBQUVsRixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBSXBHLDhFQUE4RTtBQUM5RSxNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztBQUM1Qyw4RUFBOEU7QUFDOUUsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUM7QUFFM0MsNEVBQTRFO0FBQzVFLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUNqQyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFFakMsTUFBYSwyQkFBNEIsU0FBUSxLQUFLO0lBQ3BELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsa0VBSUM7QUFFRCxTQUFnQixrQ0FBa0MsQ0FBQyxPQUFlO0lBQ2hFLFFBQVEsT0FBTyxFQUFFO1FBQ2YsS0FBSyxHQUFHLENBQUM7UUFDVCxLQUFLLEdBQUcsQ0FBQztRQUNULEtBQUssR0FBRztZQUNOLE9BQU8sd0JBQXdCLENBQUM7UUFDbEMsS0FBSyxHQUFHLENBQUM7UUFDVCxLQUFLLEdBQUc7WUFDTixPQUFPLHVCQUF1QixDQUFDO0tBQ2xDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBWEQsZ0ZBV0M7QUFFRCxTQUFnQixxQ0FBcUMsQ0FBQyxPQUFxQixFQUFFLE9BQWU7SUFDMUYsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssQ0FBQztZQUNKLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsS0FBSyxDQUFDO1lBQ0osT0FBTyxvQkFBb0IsQ0FBQztRQUM5QixLQUFLLGdCQUFnQixDQUFDLHNCQUFzQjtZQUMxQywrQkFBK0I7WUFDL0IsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixLQUFLLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO1FBQzFDLEtBQUssZ0JBQWdCLENBQUMsbUJBQW1CO1lBQ3ZDLCtCQUErQjtZQUMvQixnREFBZ0Q7WUFDaEQsT0FBTyxhQUFhLENBQUM7UUFDdkIsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssZ0JBQWdCLENBQUMsbUJBQW1CLENBQUM7UUFDMUMsS0FBSyxnQkFBZ0IsQ0FBQyxtQkFBbUI7WUFDdkMsK0JBQStCO1lBQy9CLE9BQU8sYUFBYSxDQUFDO0tBQ3hCO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBdkJELHNGQXVCQztBQUVELE1BQWEsZ0JBQTJELFNBQVEsaUNBQXdCO0lBbUJ0RyxZQUFtQixPQUFxQixFQUFFLEVBQXNDLEVBQUUsVUFBZ0M7UUFDaEgsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFEZCxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBUnhDLCtEQUErRDtRQUMvRCxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQiwrRUFBK0U7UUFDL0UsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsaUZBQWlGO1FBQ2pGLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBTWYsSUFBSSxpQkFBaUIsQ0FBQztRQUN0QixJQUFJLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO1lBRXBDLElBQUksRUFBRSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtnQkFDdEMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLGFBQWpCLGlCQUFpQixjQUFqQixpQkFBaUIsR0FBSSxxQ0FBcUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUNmLE1BQWMsRUFDZCxVQUFtQixFQUNuQixhQUFrQyxRQUFRLEVBQzFDLE9BQXNCO1FBRXRCLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sRUFBRSxHQUFHLElBQUksZ0JBQWdCLENBQVUsT0FBTyxDQUFDLENBQUM7UUFDbEQsRUFBRSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdEMsbURBQW1EO1FBQ25ELCtFQUErRTtRQUMvRSxFQUFFLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsaUNBQWlDO1FBQ3RFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxtQkFBbUI7UUFDMUQsRUFBRSxDQUFDLGlCQUFpQixHQUFHLHFDQUFxQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbEYsSUFBSSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsRUFBRTtZQUMvQixFQUFFLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUMvQztRQUVELElBQUksRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUU7WUFDcEIsSUFBQSwrQkFBWSxFQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNMLElBQUEsK0JBQVksRUFBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxVQUFVO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDekMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDM0U7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQzFCLEdBQVcsRUFDWCxPQUFxQixFQUNyQixPQUFnQixFQUNoQixhQUFrQyxRQUFRO1FBRTFDLE1BQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRixJQUFJLE9BQU8sRUFBRTtZQUNYLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxxQ0FBcUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDaEY7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDakMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtTQUNwQztRQUNELElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDakMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtTQUNsQztRQUNELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLCtFQUErRTtZQUMvRSxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1lBQ3JDLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLHVCQUF1QjtZQUN4RCxVQUFVLElBQUksaUJBQWlCLENBQUMsQ0FBQyx3QkFBd0I7WUFDekQsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtTQUMxQzthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtnQkFDOUIsK0VBQStFO2dCQUMvRSxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCO2dCQUN6QyxVQUFVLElBQUksaUJBQWlCLENBQUMsQ0FBQyxTQUFTO2dCQUMxQyxVQUFVLElBQUksaUJBQWlCLENBQUMsQ0FBQyxVQUFVO2FBQzVDO1lBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtnQkFDN0IsRUFBRTtnQkFDRixVQUFVLElBQUksaUJBQWlCLENBQUMsQ0FBQyxhQUFhO2FBQy9DO1NBQ0Y7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7SUFDakYsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7SUFDcEYsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7SUFDNUYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsUUFBZ0I7UUFDN0IsSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFHLDJCQUFXLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLDBCQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRWhGLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSTtnQkFDN0IsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25DLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFBLDRCQUFjLEVBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxRQUFnQjtRQUM5QixJQUNFLENBQUMsQ0FBQyxRQUFRLEdBQUcsMkJBQVcsQ0FBQyxvQkFBb0IsQ0FBQztZQUM5QyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSywyQkFBVyxDQUFDLGNBQWM7WUFDaEQsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssMkJBQVcsQ0FBQyxZQUFZLEVBQzlDO1lBQ0EsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUUvRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUk7Z0JBQzdCLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFBLDRCQUFjLEVBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsUUFBZ0IsRUFBRSxPQUFlO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssMkJBQVcsQ0FBQyxjQUFjLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssMkJBQVcsQ0FBQyxZQUFZLEVBQUU7WUFDdEcsa0RBQWtEO1lBQ2xELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLE1BQU07Z0JBQ3ZELE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFBLDhCQUFZLEVBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9DLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVOLE1BQU0sWUFBWSxHQUFHLElBQUksMEJBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFFdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHO2dCQUM3QixZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUEsNEJBQWMsRUFBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDaEU7YUFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLDJCQUFXLENBQUMsY0FBYyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6Riw2Q0FBNkM7WUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsQyxNQUFNLFlBQVksR0FBRyxJQUFJLDBCQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBQSw4QkFBWSxFQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0YsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFMUMsT0FBTyxJQUFBLDRCQUFjLEVBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHlCQUF5QixDQUN2QixPQUEyQixFQUMzQixhQUFxQixFQUNyQixLQUFrQyxFQUNsQyxRQUFnQjtRQUVoQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsOEVBQThFO1FBQzlFLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxJQUFBLGdDQUFrQixFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMxRTtRQUVELDBEQUEwRDtRQUMxRCxLQUFLLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMxRCxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWxHLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDcEM7UUFFRCwwQkFBMEI7UUFDMUIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUN4RDtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDaEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFFakMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLGNBQWMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsOERBQThEO1FBQ3ZGLGNBQWMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0VBQXNFO1FBQ2hHLGNBQWMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsOEJBQThCO1FBQ3ZELGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRO1FBQzdCLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQyxhQUFhO1FBQ25DLGNBQWMsSUFBSSxJQUFBLDhCQUFZLEVBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7UUFDL0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUM5QixjQUFjLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLDZDQUE2QztZQUN2RSxjQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZTtTQUNyQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFFM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNwRSxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLFlBQVksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0QyxZQUFZLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLFlBQVksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUM5QixZQUFZLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUM5QixZQUFZLENBQUMsVUFBVSxDQUFDLG1DQUFnQixDQUFDLENBQUM7U0FDM0M7UUFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxDLDRFQUE0RTtRQUM1RSx5RUFBeUU7UUFDekUsNENBQTRDO1FBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDO1FBQzlCLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJFLE9BQU8sSUFBQSw0QkFBYyxFQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFlLEVBQUUsYUFBYSxHQUFHLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUU1RCxNQUFNLFlBQVksR0FBRyxJQUFJLDBCQUFZLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTdELElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7WUFDM0UsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDL0M7YUFBTTtZQUNMLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRTtZQUN0QixJQUFBLDZCQUFVLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDTCxJQUFBLDZCQUFVLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQy9CLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxVQUFvQjtRQUMxQixJQUFJLFVBQVUsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxJQUFBLDJCQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7UUFDRCxPQUFPLHNCQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQXdDLFVBQWdDO1FBQzNFLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBTSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDOztBQXJWSCw0Q0FzVkM7QUFyVlEsMkNBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLG1DQUFrQixHQUFHLENBQUMsQ0FBQztBQUN2QixnQ0FBZSxHQUFHLENBQUMsQ0FBQztBQUVwQix1Q0FBc0IsR0FBRyxHQUFHLENBQUM7QUFDN0Isb0NBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQzFCLG9DQUFtQixHQUFHLEdBQUcsQ0FBQztBQUMxQixvQ0FBbUIsR0FBRyxHQUFHLENBQUM7QUFDMUIsb0NBQW1CLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24sIGNyeXB0byB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuaW1wb3J0IHsgQnVmZmVyUmVhZGVyLCBCdWZmZXJXcml0ZXIgfSBmcm9tICdiaXRjb2luanMtbGliL3NyYy9idWZmZXJ1dGlscyc7XG5cbmNvbnN0IHZhcnVpbnQgPSByZXF1aXJlKCd2YXJ1aW50LWJpdGNvaW4nKTtcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5pbXBvcnQgeyBuZXR3b3JrcyB9IGZyb20gJy4uLy4uL25ldHdvcmtzJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiwgdmFyU2xpY2VTaXplIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGZyb21CdWZmZXJWNCwgZnJvbUJ1ZmZlclY1LCB0b0J1ZmZlclY0LCB0b0J1ZmZlclY1LCBWQUxVRV9JTlQ2NF9aRVJPIH0gZnJvbSAnLi9aY2FzaEJ1ZmZlcnV0aWxzJztcbmltcG9ydCB7IGdldEJsYWtlMmJIYXNoLCBnZXRTaWduYXR1cmVEaWdlc3QsIGdldFR4aWREaWdlc3QgfSBmcm9tICcuL2hhc2haaXAwMjQ0JztcblxuY29uc3QgWkVSTyA9IEJ1ZmZlci5mcm9tKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ2hleCcpO1xuXG5leHBvcnQgdHlwZSBaY2FzaE5ldHdvcmsgPSB0eXBlb2YgbmV0d29ya3MuemNhc2ggfCB0eXBlb2YgbmV0d29ya3MuemNhc2hUZXN0O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC43LjAvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMNDBcbmNvbnN0IFNBUExJTkdfVkVSU0lPTl9HUk9VUF9JRCA9IDB4ODkyZjIwODU7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC43LjAvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMNTJcbmNvbnN0IFpJUDIyNV9WRVJTSU9OX0dST1VQX0lEID0gMHgyNmE3MjcwYTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNy4wL3NyYy9jb25zZW5zdXMvdXBncmFkZXMuY3BwI0wxMVxuY29uc3QgT1ZFUldJTlRFUl9CUkFOQ0hfSUQgPSAweDViYTgxYjE5O1xuY29uc3QgQ0FOT1BZX0JSQU5DSF9JRCA9IDB4ZTlmZjc1YTY7XG5jb25zdCBOVTVfQlJBTkNIX0lEID0gMHhjMmQ2ZDBiNDtcbmNvbnN0IE5VNl9CUkFOQ0hfSUQgPSAweGM4ZTcxMDU1O1xuXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRUcmFuc2FjdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFZlcnNpb25Hcm91cElkRm9yVmVyc2lvbih2ZXJzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICBjYXNlIDQwMDpcbiAgICBjYXNlIDQ1MDpcbiAgICBjYXNlIDQ1NTpcbiAgICAgIHJldHVybiBTQVBMSU5HX1ZFUlNJT05fR1JPVVBfSUQ7XG4gICAgY2FzZSA1MDA6XG4gICAgY2FzZSA1NTA6XG4gICAgICByZXR1cm4gWklQMjI1X1ZFUlNJT05fR1JPVVBfSUQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyB2YWx1ZSBmb3IgdmVyc2lvbiAke3ZlcnNpb259YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcms6IFpjYXNoTmV0d29yaywgdmVyc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgc3dpdGNoICh2ZXJzaW9uKSB7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiAwO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBPVkVSV0lOVEVSX0JSQU5DSF9JRDtcbiAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjRfQlJBTkNIX0NBTk9QWTpcbiAgICAgIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNTFcbiAgICAgIHJldHVybiBDQU5PUFlfQlJBTkNIX0lEO1xuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfTlU1OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU1OlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MlxuICAgICAgLy8gTlU1IGlzIGRlcHJlY2F0ZWQgb24gbWFpbm5ldCBvbiBibG9jayAyNzI2NDAwXG4gICAgICByZXR1cm4gTlU1X0JSQU5DSF9JRDtcbiAgICBjYXNlIDQ6XG4gICAgY2FzZSA1OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfTlU2OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU2OlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1M1xuICAgICAgcmV0dXJuIE5VNl9CUkFOQ0hfSUQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyB2YWx1ZSBmb3IgdmVyc2lvbiAke3ZlcnNpb259YCk7XG59XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+IGV4dGVuZHMgVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgc3RhdGljIFZFUlNJT05fSk9JTlNQTElUU19TVVBQT1JUID0gMjtcbiAgc3RhdGljIFZFUlNJT05fT1ZFUldJTlRFUiA9IDM7XG4gIHN0YXRpYyBWRVJTSU9OX1NBUExJTkcgPSA0O1xuXG4gIHN0YXRpYyBWRVJTSU9ONF9CUkFOQ0hfQ0FOT1BZID0gNDAwO1xuICBzdGF0aWMgVkVSU0lPTjRfQlJBTkNIX05VNSA9IDQ1MDtcbiAgc3RhdGljIFZFUlNJT040X0JSQU5DSF9OVTYgPSA0NTU7XG4gIHN0YXRpYyBWRVJTSU9ONV9CUkFOQ0hfTlU1ID0gNTAwO1xuICBzdGF0aWMgVkVSU0lPTjVfQlJBTkNIX05VNiA9IDU1MDtcblxuICAvLyAxIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBwb3N0IG92ZXJ3aW50ZXIgdXBncmFkZSwgMCBvdGhlcndpc2VcbiAgb3ZlcndpbnRlcmVkID0gMDtcbiAgLy8gMHgwM0M0ODI3MCAoNjMyMTAwOTYpIGZvciBvdmVyd2ludGVyIGFuZCAweDg5MkYyMDg1ICgyMzAxNTY3MTA5KSBmb3Igc2FwbGluZ1xuICB2ZXJzaW9uR3JvdXBJZCA9IDA7XG4gIC8vIEJsb2NrIGhlaWdodCBhZnRlciB3aGljaCB0aGlzIHRyYW5zYWN0aW9ucyB3aWxsIGV4cGlyZSwgb3IgMCB0byBkaXNhYmxlIGV4cGlyeVxuICBleHBpcnlIZWlnaHQgPSAwO1xuICBjb25zZW5zdXNCcmFuY2hJZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuZXR3b3JrOiBaY2FzaE5ldHdvcmssIHR4PzogWmNhc2hUcmFuc2FjdGlvbjxiaWdpbnQgfCBudW1iZXI+LCBhbW91bnRUeXBlPzogJ2JpZ2ludCcgfCAnbnVtYmVyJykge1xuICAgIHN1cGVyKG5ldHdvcmssIHR4LCBhbW91bnRUeXBlKTtcblxuICAgIGxldCBjb25zZW5zdXNCcmFuY2hJZDtcbiAgICBpZiAodHgpIHtcbiAgICAgIHRoaXMub3ZlcndpbnRlcmVkID0gdHgub3ZlcndpbnRlcmVkO1xuICAgICAgdGhpcy52ZXJzaW9uR3JvdXBJZCA9IHR4LnZlcnNpb25Hcm91cElkO1xuICAgICAgdGhpcy5leHBpcnlIZWlnaHQgPSB0eC5leHBpcnlIZWlnaHQ7XG5cbiAgICAgIGlmICh0eC5jb25zZW5zdXNCcmFuY2hJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNlbnN1c0JyYW5jaElkID0gdHguY29uc2Vuc3VzQnJhbmNoSWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uc2Vuc3VzQnJhbmNoSWQgPSBjb25zZW5zdXNCcmFuY2hJZCA/PyBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHRoaXMudmVyc2lvbik7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJ1ZmZlcjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgICBidWZmZXI6IEJ1ZmZlcixcbiAgICBfX25vU3RyaWN0OiBib29sZWFuLFxuICAgIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJyxcbiAgICBuZXR3b3JrPzogWmNhc2hOZXR3b3JrXG4gICk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBuZXR3b3JrYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyUmVhZGVyID0gbmV3IEJ1ZmZlclJlYWRlcihidWZmZXIpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4obmV0d29yayk7XG4gICAgdHgudmVyc2lvbiA9IGJ1ZmZlclJlYWRlci5yZWFkSW50MzIoKTtcblxuICAgIC8vIFNwbGl0IHRoZSBoZWFkZXIgaW50byBmT3ZlcndpbnRlcmVkIGFuZCBuVmVyc2lvblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w3NzJcbiAgICB0eC5vdmVyd2ludGVyZWQgPSB0eC52ZXJzaW9uID4+PiAzMTsgLy8gTXVzdCBiZSAxIGZvciB2ZXJzaW9uIDMgYW5kIHVwXG4gICAgdHgudmVyc2lvbiA9IHR4LnZlcnNpb24gJiAweDA3ZmZmZmZmZjsgLy8gMyBmb3Igb3ZlcndpbnRlclxuICAgIHR4LmNvbnNlbnN1c0JyYW5jaElkID0gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrLCB0eC52ZXJzaW9uKTtcblxuICAgIGlmICh0eC5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIHR4LnZlcnNpb25Hcm91cElkID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKTtcbiAgICB9XG5cbiAgICBpZiAodHgudmVyc2lvbiA9PT0gNSkge1xuICAgICAgZnJvbUJ1ZmZlclY1KGJ1ZmZlclJlYWRlciwgdHgsIGFtb3VudFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmcm9tQnVmZmVyVjQoYnVmZmVyUmVhZGVyLCB0eCwgYW1vdW50VHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKF9fbm9TdHJpY3QpIHJldHVybiB0eDtcbiAgICBpZiAoYnVmZmVyUmVhZGVyLm9mZnNldCAhPT0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgY29uc3QgdHJhaWxpbmcgPSBidWZmZXIuc2xpY2UoYnVmZmVyUmVhZGVyLm9mZnNldCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdHJhaWxpbmcgYnl0ZXM6ICR7dHJhaWxpbmcudG9TdHJpbmcoJ2hleCcpfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQnVmZmVyV2l0aFZlcnNpb248VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gICAgYnVmOiBCdWZmZXIsXG4gICAgbmV0d29yazogWmNhc2hOZXR3b3JrLFxuICAgIHZlcnNpb24/OiBudW1iZXIsXG4gICAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4gICk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIGNvbnN0IHR4ID0gWmNhc2hUcmFuc2FjdGlvbi5mcm9tQnVmZmVyPFROdW1iZXI+KGJ1ZiwgZmFsc2UsIGFtb3VudFR5cGUsIG5ldHdvcmspO1xuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICB0eC5jb25zZW5zdXNCcmFuY2hJZCA9IGdldERlZmF1bHRDb25zZW5zdXNCcmFuY2hJZEZvclZlcnNpb24obmV0d29yaywgdmVyc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIGJ5dGVMZW5ndGgoKTogbnVtYmVyIHtcbiAgICBsZXQgYnl0ZUxlbmd0aCA9IHN1cGVyLmJ5dGVMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJ5dGVMZW5ndGggKz0gNDsgLy8gblZlcnNpb25Hcm91cElkXG4gICAgfVxuICAgIGlmICh0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgYnl0ZUxlbmd0aCArPSA0OyAvLyBuRXhwaXJ5SGVpZ2h0XG4gICAgfVxuICAgIGNvbnN0IGVtcHR5VmVjdG9yTGVuZ3RoID0gdmFydWludC5lbmNvZGluZ0xlbmd0aCgwKTtcbiAgICBpZiAodGhpcy52ZXJzaW9uID09PSA1KSB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODIyXG4gICAgICBieXRlTGVuZ3RoICs9IDQ7IC8vIGNvbnNlbnN1c0JyYW5jaElkXG4gICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBzYXBsaW5nQnVuZGxlIGlucHV0c1xuICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gc2FwbGluZ0J1bmRsZSBvdXRwdXRzXG4gICAgICBieXRlTGVuZ3RoICs9IDE7IC8vIG9yY2hhcmRCdW5kbGUgKGVtcHR5KVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDg2MlxuICAgICAgICBieXRlTGVuZ3RoICs9IDg7IC8vIHZhbHVlQmFsYW5jZSAodWludDY0KVxuICAgICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBpbnB1dHNcbiAgICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gb3V0cHV0c1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc3VwcG9ydHNKb2luU3BsaXRzKCkpIHtcbiAgICAgICAgLy9cbiAgICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gam9pbnNwbGl0c1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIGlzU2FwbGluZ0NvbXBhdGlibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vdmVyd2ludGVyZWQgJiYgdGhpcy52ZXJzaW9uID49IFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTl9TQVBMSU5HO1xuICB9XG5cbiAgaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm92ZXJ3aW50ZXJlZCAmJiB0aGlzLnZlcnNpb24gPj0gWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9OX09WRVJXSU5URVI7XG4gIH1cblxuICBzdXBwb3J0c0pvaW5TcGxpdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vdmVyd2ludGVyZWQgJiYgdGhpcy52ZXJzaW9uID49IFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTl9KT0lOU1BMSVRTX1NVUFBPUlQ7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBoYXNoIGZvciBhbGwgb3Igbm9uZSBvZiB0aGUgdHJhbnNhY3Rpb24gaW5wdXRzIGRlcGVuZGluZyBvbiB0aGUgaGFzaHR5cGVcbiAgICogQHBhcmFtIGhhc2hUeXBlXG4gICAqIEByZXR1cm5zIEJ1ZmZlciAtIEJMQUtFMmIgaGFzaCBvciAyNTYtYml0IHplcm8gaWYgZG9lc24ndCBhcHBseVxuICAgKi9cbiAgZ2V0UHJldm91dEhhc2goaGFzaFR5cGU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgaWYgKCEoaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSkpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDM2ICogdGhpcy5pbnMubGVuZ3RoKSk7XG5cbiAgICAgIHRoaXMuaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UodHhJbi5oYXNoKTtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uaW5kZXgpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCAnWmNhc2hQcmV2b3V0SGFzaCcpO1xuICAgIH1cbiAgICByZXR1cm4gWkVSTztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGhhc2ggZm9yIGFsbCBvciBub25lIG9mIHRoZSB0cmFuc2FjdGlvbnMgaW5wdXRzIHNlcXVlbmNlIG51bWJlcnMgZGVwZW5kaW5nIG9uIHRoZSBoYXNodHlwZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHJldHVybnMgQnVmZmVyIEJMQUtFMmIgaGFzaCBvciAyNTYtYml0IHplcm8gaWYgZG9lc24ndCBhcHBseVxuICAgKi9cbiAgZ2V0U2VxdWVuY2VIYXNoKGhhc2hUeXBlOiBudW1iZXIpOiBCdWZmZXIge1xuICAgIGlmIChcbiAgICAgICEoaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSkgJiZcbiAgICAgIChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJlxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORVxuICAgICkge1xuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUoNCAqIHRoaXMuaW5zLmxlbmd0aCkpO1xuXG4gICAgICB0aGlzLmlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0eEluLnNlcXVlbmNlKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgJ1pjYXNoU2VxdWVuY0hhc2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIFpFUk87XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBoYXNoIGZvciBvbmUsIGFsbCBvciBub25lIG9mIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRzIGRlcGVuZGluZyBvbiB0aGUgaGFzaHR5cGVcbiAgICogQHBhcmFtIGhhc2hUeXBlXG4gICAqIEBwYXJhbSBpbkluZGV4XG4gICAqIEByZXR1cm5zIEJ1ZmZlciBCTEFLRTJiIGhhc2ggb3IgMjU2LWJpdCB6ZXJvIGlmIGRvZXNuJ3QgYXBwbHlcbiAgICovXG4gIGdldE91dHB1dHNIYXNoKGhhc2hUeXBlOiBudW1iZXIsIGluSW5kZXg6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgaWYgKChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJiAoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FKSB7XG4gICAgICAvLyBGaW5kIG91dCB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0cyBhbmQgd3JpdGUgdGhlbVxuICAgICAgY29uc3QgdHhPdXRzU2l6ZSA9IHRoaXMub3V0cy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgb3V0cHV0KSB7XG4gICAgICAgIHJldHVybiBzdW0gKyA4ICsgdmFyU2xpY2VTaXplKG91dHB1dC5zY3JpcHQpO1xuICAgICAgfSwgMCk7XG5cbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKHR4T3V0c1NpemUpKTtcblxuICAgICAgdGhpcy5vdXRzLmZvckVhY2goZnVuY3Rpb24gKG91dCkge1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50NjQob3V0LnZhbHVlKTtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2Uob3V0LnNjcmlwdCk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsICdaY2FzaE91dHB1dHNIYXNoJyk7XG4gICAgfSBlbHNlIGlmICgoaGFzaFR5cGUgJiAweDFmKSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUgJiYgaW5JbmRleCA8IHRoaXMub3V0cy5sZW5ndGgpIHtcbiAgICAgIC8vIFdyaXRlIG9ubHkgdGhlIG91dHB1dCBzcGVjaWZpZWQgaW4gaW5JbmRleFxuICAgICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5vdXRzW2luSW5kZXhdO1xuXG4gICAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSg4ICsgdmFyU2xpY2VTaXplKG91dHB1dC5zY3JpcHQpKSk7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50NjQob3V0cHV0LnZhbHVlKTtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKG91dHB1dC5zY3JpcHQpO1xuXG4gICAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgJ1pjYXNoT3V0cHV0c0hhc2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIFpFUk87XG4gIH1cblxuICAvKipcbiAgICogSGFzaCB0cmFuc2FjdGlvbiBmb3Igc2lnbmluZyBhIHRyYW5zcGFyZW50IHRyYW5zYWN0aW9uIGluIFpjYXNoLiBQcm90ZWN0ZWQgdHJhbnNhY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkLlxuICAgKiBAcGFyYW0gaW5JbmRleFxuICAgKiBAcGFyYW0gcHJldk91dFNjcmlwdFxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIGhhc2hUeXBlXG4gICAqIEByZXR1cm5zIEJ1ZmZlciBCTEFLRTJiIGhhc2hcbiAgICovXG4gIGhhc2hGb3JTaWduYXR1cmVCeU5ldHdvcmsoXG4gICAgaW5JbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlcixcbiAgICB2YWx1ZTogYmlnaW50IHwgbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGhhc2hUeXBlOiBudW1iZXJcbiAgKTogQnVmZmVyIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgdmFsdWVgKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3NjcmlwdC9pbnRlcnByZXRlci5jcHAjTDExNzVcbiAgICBpZiAodGhpcy52ZXJzaW9uID09PSA1KSB7XG4gICAgICByZXR1cm4gZ2V0U2lnbmF0dXJlRGlnZXN0KHRoaXMsIGluSW5kZXgsIHByZXZPdXRTY3JpcHQsIHZhbHVlLCBoYXNoVHlwZSk7XG4gICAgfVxuXG4gICAgLy8gWkNhc2ggYW1vdW50cyBhcmUgYWx3YXlzIHdpdGhpbiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuICAgIHZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyA/IE51bWJlcih2YWx1ZSkgOiB2YWx1ZTtcbiAgICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuVUludDMyLCB0eXBlcy5CdWZmZXIsIHR5cGVzLk51bWJlciksIFtpbkluZGV4LCBwcmV2T3V0U2NyaXB0LCB2YWx1ZV0pO1xuXG4gICAgaWYgKGluSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGluSW5kZXhgKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChpbkluZGV4ID49IHRoaXMuaW5zLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBpbmRleCBpcyBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgdmVyc2lvbiAke3RoaXMudmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNoUHJldm91dHMgPSB0aGlzLmdldFByZXZvdXRIYXNoKGhhc2hUeXBlKTtcbiAgICBjb25zdCBoYXNoU2VxdWVuY2UgPSB0aGlzLmdldFNlcXVlbmNlSGFzaChoYXNoVHlwZSk7XG4gICAgY29uc3QgaGFzaE91dHB1dHMgPSB0aGlzLmdldE91dHB1dHNIYXNoKGhhc2hUeXBlLCBpbkluZGV4KTtcbiAgICBjb25zdCBoYXNoSm9pblNwbGl0cyA9IFpFUk87XG4gICAgY29uc3QgaGFzaFNoaWVsZGVkU3BlbmRzID0gWkVSTztcbiAgICBjb25zdCBoYXNoU2hpZWxkZWRPdXRwdXRzID0gWkVSTztcblxuICAgIGxldCBiYXNlQnVmZmVyU2l6ZSA9IDA7XG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gNCAqIDU7IC8vIGhlYWRlciwgblZlcnNpb25Hcm91cElkLCBsb2NrX3RpbWUsIG5FeHBpcnlIZWlnaHQsIGhhc2hUeXBlXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gMzIgKiA0OyAvLyAyNTYgaGFzaGVzOiBoYXNoUHJldm91dHMsIGhhc2hTZXF1ZW5jZSwgaGFzaE91dHB1dHMsIGhhc2hKb2luU3BsaXRzXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gNCAqIDI7IC8vIGlucHV0LmluZGV4LCBpbnB1dC5zZXF1ZW5jZVxuICAgIGJhc2VCdWZmZXJTaXplICs9IDg7IC8vIHZhbHVlXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gMzI7IC8vIGlucHV0Lmhhc2hcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSB2YXJTbGljZVNpemUocHJldk91dFNjcmlwdCk7IC8vIHByZXZPdXRTY3JpcHRcbiAgICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJhc2VCdWZmZXJTaXplICs9IDMyICogMjsgLy8gaGFzaFNoaWVsZGVkU3BlbmRzIGFuZCBoYXNoU2hpZWxkZWRPdXRwdXRzXG4gICAgICBiYXNlQnVmZmVyU2l6ZSArPSA4OyAvLyB2YWx1ZUJhbGFuY2VcbiAgICB9XG5cbiAgICBjb25zdCBtYXNrID0gdGhpcy5vdmVyd2ludGVyZWQgPyAxIDogMDtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLnZlcnNpb24gfCAobWFzayA8PCAzMSk7XG5cbiAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvYyhiYXNlQnVmZmVyU2l6ZSkpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKGhlYWRlcik7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHRoaXMudmVyc2lvbkdyb3VwSWQpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hQcmV2b3V0cyk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFNlcXVlbmNlKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoT3V0cHV0cyk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaEpvaW5TcGxpdHMpO1xuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFNoaWVsZGVkU3BlbmRzKTtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hTaGllbGRlZE91dHB1dHMpO1xuICAgIH1cbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy5sb2NrdGltZSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHRoaXMuZXhwaXJ5SGVpZ2h0KTtcbiAgICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKFZBTFVFX0lOVDY0X1pFUk8pO1xuICAgIH1cbiAgICBidWZmZXJXcml0ZXIud3JpdGVJbnQzMihoYXNoVHlwZSk7XG5cbiAgICAvLyBUaGUgaW5wdXQgYmVpbmcgc2lnbmVkIChyZXBsYWNpbmcgdGhlIHNjcmlwdFNpZyB3aXRoIHNjcmlwdENvZGUgKyBhbW91bnQpXG4gICAgLy8gVGhlIHByZXZvdXQgbWF5IGFscmVhZHkgYmUgY29udGFpbmVkIGluIGhhc2hQcmV2b3V0LCBhbmQgdGhlIG5TZXF1ZW5jZVxuICAgIC8vIG1heSBhbHJlYWR5IGJlIGNvbnRhaW5lZCBpbiBoYXNoU2VxdWVuY2UuXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmluc1tpbkluZGV4XTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShpbnB1dC5oYXNoKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIoaW5wdXQuaW5kZXgpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKHByZXZPdXRTY3JpcHQpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQ2NCh2YWx1ZSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKGlucHV0LnNlcXVlbmNlKTtcblxuICAgIGNvbnN0IHBlcnNvbmFsaXphdGlvbiA9IEJ1ZmZlci5hbGxvYygxNik7XG4gICAgY29uc3QgcHJlZml4ID0gJ1pjYXNoU2lnSGFzaCc7XG4gICAgcGVyc29uYWxpemF0aW9uLndyaXRlKHByZWZpeCk7XG4gICAgcGVyc29uYWxpemF0aW9uLndyaXRlVUludDMyTEUodGhpcy5jb25zZW5zdXNCcmFuY2hJZCwgcHJlZml4Lmxlbmd0aCk7XG5cbiAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgcGVyc29uYWxpemF0aW9uKTtcbiAgfVxuXG4gIHRvQnVmZmVyKGJ1ZmZlcj86IEJ1ZmZlciwgaW5pdGlhbE9mZnNldCA9IDApOiBCdWZmZXIge1xuICAgIGlmICghYnVmZmVyKSBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUodGhpcy5ieXRlTGVuZ3RoKCkpO1xuXG4gICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihidWZmZXIsIGluaXRpYWxPZmZzZXQpO1xuXG4gICAgaWYgKHRoaXMuaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICBjb25zdCBtYXNrID0gdGhpcy5vdmVyd2ludGVyZWQgPyAxIDogMDtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKHRoaXMudmVyc2lvbiB8IChtYXNrIDw8IDMxKSk7IC8vIFNldCBvdmVyd2ludGVyIGJpdFxuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHRoaXMudmVyc2lvbkdyb3VwSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVJbnQzMih0aGlzLnZlcnNpb24pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIHRvQnVmZmVyVjUoYnVmZmVyV3JpdGVyLCB0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9CdWZmZXJWNChidWZmZXJXcml0ZXIsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChpbml0aWFsT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBidWZmZXIuc2xpY2UoaW5pdGlhbE9mZnNldCwgYnVmZmVyV3JpdGVyLm9mZnNldCk7XG4gICAgfVxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBnZXRIYXNoKGZvcldpdG5lc3M/OiBib29sZWFuKTogQnVmZmVyIHtcbiAgICBpZiAoZm9yV2l0bmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFyZ3VtZW50YCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIHJldHVybiBnZXRUeGlkRGlnZXN0KHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4gY3J5cHRvLmhhc2gyNTYodGhpcy50b0J1ZmZlcigpKTtcbiAgfVxuXG4gIGNsb25lPFROMiBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IFROdW1iZXI+KGFtb3VudFR5cGU/OiAnYmlnaW50JyB8ICdudW1iZXInKTogWmNhc2hUcmFuc2FjdGlvbjxUTjI+IHtcbiAgICByZXR1cm4gbmV3IFpjYXNoVHJhbnNhY3Rpb248VE4yPih0aGlzLm5ldHdvcmssIHRoaXMsIGFtb3VudFR5cGUpO1xuICB9XG59XG4iXX0=
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlDQSxnRkFXQztBQUVELHNGQXVCQztBQXJFRCxpREFBb0Q7QUFDcEQsaURBQWlEO0FBQ2pELCtEQUEyRTtBQUUzRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMzQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFHdkMsd0RBQW1FO0FBQ25FLHlEQUEwRztBQUMxRywrQ0FBa0Y7QUFFbEYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUlwRyw4RUFBOEU7QUFDOUUsTUFBTSx3QkFBd0IsR0FBRyxVQUFVLENBQUM7QUFDNUMsOEVBQThFO0FBQzlFLE1BQU0sdUJBQXVCLEdBQUcsVUFBVSxDQUFDO0FBRTNDLDRFQUE0RTtBQUM1RSxNQUFNLG9CQUFvQixHQUFHLFVBQVUsQ0FBQztBQUN4QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUNwQyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFDakMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDO0FBRWpDLE1BQWEsMkJBQTRCLFNBQVEsS0FBSztJQUNwRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELGtFQUlDO0FBRUQsU0FBZ0Isa0NBQWtDLENBQUMsT0FBZTtJQUNoRSxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssR0FBRyxDQUFDO1FBQ1QsS0FBSyxHQUFHLENBQUM7UUFDVCxLQUFLLEdBQUc7WUFDTixPQUFPLHdCQUF3QixDQUFDO1FBQ2xDLEtBQUssR0FBRyxDQUFDO1FB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cy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuaW1wb3J0IHsgQnVmZmVyUmVhZGVyLCBCdWZmZXJXcml0ZXIgfSBmcm9tICdiaXRjb2luanMtbGliL3NyYy9idWZmZXJ1dGlscyc7XG5cbmNvbnN0IHZhcnVpbnQgPSByZXF1aXJlKCd2YXJ1aW50LWJpdGNvaW4nKTtcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5pbXBvcnQgeyBuZXR3b3JrcyB9IGZyb20gJy4uLy4uL25ldHdvcmtzJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiwgdmFyU2xpY2VTaXplIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGZyb21CdWZmZXJWNCwgZnJvbUJ1ZmZlclY1LCB0b0J1ZmZlclY0LCB0b0J1ZmZlclY1LCBWQUxVRV9JTlQ2NF9aRVJPIH0gZnJvbSAnLi9aY2FzaEJ1ZmZlcnV0aWxzJztcbmltcG9ydCB7IGdldEJsYWtlMmJIYXNoLCBnZXRTaWduYXR1cmVEaWdlc3QsIGdldFR4aWREaWdlc3QgfSBmcm9tICcuL2hhc2haaXAwMjQ0JztcblxuY29uc3QgWkVSTyA9IEJ1ZmZlci5mcm9tKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ2hleCcpO1xuXG5leHBvcnQgdHlwZSBaY2FzaE5ldHdvcmsgPSB0eXBlb2YgbmV0d29ya3MuemNhc2ggfCB0eXBlb2YgbmV0d29ya3MuemNhc2hUZXN0O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC43LjAvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMNDBcbmNvbnN0IFNBUExJTkdfVkVSU0lPTl9HUk9VUF9JRCA9IDB4ODkyZjIwODU7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC43LjAvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMNTJcbmNvbnN0IFpJUDIyNV9WRVJTSU9OX0dST1VQX0lEID0gMHgyNmE3MjcwYTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNy4wL3NyYy9jb25zZW5zdXMvdXBncmFkZXMuY3BwI0wxMVxuY29uc3QgT1ZFUldJTlRFUl9CUkFOQ0hfSUQgPSAweDViYTgxYjE5O1xuY29uc3QgQ0FOT1BZX0JSQU5DSF9JRCA9IDB4ZTlmZjc1YTY7XG5jb25zdCBOVTVfQlJBTkNIX0lEID0gMHhjMmQ2ZDBiNDtcbmNvbnN0IE5VNl9CUkFOQ0hfSUQgPSAweGM4ZTcxMDU1O1xuXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRUcmFuc2FjdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFZlcnNpb25Hcm91cElkRm9yVmVyc2lvbih2ZXJzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICBjYXNlIDQwMDpcbiAgICBjYXNlIDQ1MDpcbiAgICBjYXNlIDQ1NTpcbiAgICAgIHJldHVybiBTQVBMSU5HX1ZFUlNJT05fR1JPVVBfSUQ7XG4gICAgY2FzZSA1MDA6XG4gICAgY2FzZSA1NTA6XG4gICAgICByZXR1cm4gWklQMjI1X1ZFUlNJT05fR1JPVVBfSUQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyB2YWx1ZSBmb3IgdmVyc2lvbiAke3ZlcnNpb259YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcms6IFpjYXNoTmV0d29yaywgdmVyc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgc3dpdGNoICh2ZXJzaW9uKSB7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiAwO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBPVkVSV0lOVEVSX0JSQU5DSF9JRDtcbiAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjRfQlJBTkNIX0NBTk9QWTpcbiAgICAgIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNTFcbiAgICAgIHJldHVybiBDQU5PUFlfQlJBTkNIX0lEO1xuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfTlU1OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU1OlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MlxuICAgICAgLy8gTlU1IGlzIGRlcHJlY2F0ZWQgb24gbWFpbm5ldCBvbiBibG9jayAyNzI2NDAwXG4gICAgICByZXR1cm4gTlU1X0JSQU5DSF9JRDtcbiAgICBjYXNlIDQ6XG4gICAgY2FzZSA1OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfTlU2OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU2OlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1M1xuICAgICAgcmV0dXJuIE5VNl9CUkFOQ0hfSUQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyB2YWx1ZSBmb3IgdmVyc2lvbiAke3ZlcnNpb259YCk7XG59XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+IGV4dGVuZHMgVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgc3RhdGljIFZFUlNJT05fSk9JTlNQTElUU19TVVBQT1JUID0gMjtcbiAgc3RhdGljIFZFUlNJT05fT1ZFUldJTlRFUiA9IDM7XG4gIHN0YXRpYyBWRVJTSU9OX1NBUExJTkcgPSA0O1xuXG4gIHN0YXRpYyBWRVJTSU9ONF9CUkFOQ0hfQ0FOT1BZID0gNDAwO1xuICBzdGF0aWMgVkVSU0lPTjRfQlJBTkNIX05VNSA9IDQ1MDtcbiAgc3RhdGljIFZFUlNJT040X0JSQU5DSF9OVTYgPSA0NTU7XG4gIHN0YXRpYyBWRVJTSU9ONV9CUkFOQ0hfTlU1ID0gNTAwO1xuICBzdGF0aWMgVkVSU0lPTjVfQlJBTkNIX05VNiA9IDU1MDtcblxuICAvLyAxIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBwb3N0IG92ZXJ3aW50ZXIgdXBncmFkZSwgMCBvdGhlcndpc2VcbiAgb3ZlcndpbnRlcmVkID0gMDtcbiAgLy8gMHgwM0M0ODI3MCAoNjMyMTAwOTYpIGZvciBvdmVyd2ludGVyIGFuZCAweDg5MkYyMDg1ICgyMzAxNTY3MTA5KSBmb3Igc2FwbGluZ1xuICB2ZXJzaW9uR3JvdXBJZCA9IDA7XG4gIC8vIEJsb2NrIGhlaWdodCBhZnRlciB3aGljaCB0aGlzIHRyYW5zYWN0aW9ucyB3aWxsIGV4cGlyZSwgb3IgMCB0byBkaXNhYmxlIGV4cGlyeVxuICBleHBpcnlIZWlnaHQgPSAwO1xuICBjb25zZW5zdXNCcmFuY2hJZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuZXR3b3JrOiBaY2FzaE5ldHdvcmssIHR4PzogWmNhc2hUcmFuc2FjdGlvbjxiaWdpbnQgfCBudW1iZXI+LCBhbW91bnRUeXBlPzogJ2JpZ2ludCcgfCAnbnVtYmVyJykge1xuICAgIHN1cGVyKG5ldHdvcmssIHR4LCBhbW91bnRUeXBlKTtcblxuICAgIGxldCBjb25zZW5zdXNCcmFuY2hJZDtcbiAgICBpZiAodHgpIHtcbiAgICAgIHRoaXMub3ZlcndpbnRlcmVkID0gdHgub3ZlcndpbnRlcmVkO1xuICAgICAgdGhpcy52ZXJzaW9uR3JvdXBJZCA9IHR4LnZlcnNpb25Hcm91cElkO1xuICAgICAgdGhpcy5leHBpcnlIZWlnaHQgPSB0eC5leHBpcnlIZWlnaHQ7XG5cbiAgICAgIGlmICh0eC5jb25zZW5zdXNCcmFuY2hJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNlbnN1c0JyYW5jaElkID0gdHguY29uc2Vuc3VzQnJhbmNoSWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uc2Vuc3VzQnJhbmNoSWQgPSBjb25zZW5zdXNCcmFuY2hJZCA/PyBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHRoaXMudmVyc2lvbik7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJ1ZmZlcjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgICBidWZmZXI6IEJ1ZmZlcixcbiAgICBfX25vU3RyaWN0OiBib29sZWFuLFxuICAgIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJyxcbiAgICBuZXR3b3JrPzogWmNhc2hOZXR3b3JrXG4gICk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBuZXR3b3JrYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyUmVhZGVyID0gbmV3IEJ1ZmZlclJlYWRlcihidWZmZXIpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4obmV0d29yayk7XG4gICAgdHgudmVyc2lvbiA9IGJ1ZmZlclJlYWRlci5yZWFkSW50MzIoKTtcblxuICAgIC8vIFNwbGl0IHRoZSBoZWFkZXIgaW50byBmT3ZlcndpbnRlcmVkIGFuZCBuVmVyc2lvblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w3NzJcbiAgICB0eC5vdmVyd2ludGVyZWQgPSB0eC52ZXJzaW9uID4+PiAzMTsgLy8gTXVzdCBiZSAxIGZvciB2ZXJzaW9uIDMgYW5kIHVwXG4gICAgdHgudmVyc2lvbiA9IHR4LnZlcnNpb24gJiAweDA3ZmZmZmZmZjsgLy8gMyBmb3Igb3ZlcndpbnRlclxuICAgIHR4LmNvbnNlbnN1c0JyYW5jaElkID0gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrLCB0eC52ZXJzaW9uKTtcblxuICAgIGlmICh0eC5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIHR4LnZlcnNpb25Hcm91cElkID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKTtcbiAgICB9XG5cbiAgICBpZiAodHgudmVyc2lvbiA9PT0gNSkge1xuICAgICAgZnJvbUJ1ZmZlclY1KGJ1ZmZlclJlYWRlciwgdHgsIGFtb3VudFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmcm9tQnVmZmVyVjQoYnVmZmVyUmVhZGVyLCB0eCwgYW1vdW50VHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKF9fbm9TdHJpY3QpIHJldHVybiB0eDtcbiAgICBpZiAoYnVmZmVyUmVhZGVyLm9mZnNldCAhPT0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgY29uc3QgdHJhaWxpbmcgPSBidWZmZXIuc2xpY2UoYnVmZmVyUmVhZGVyLm9mZnNldCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdHJhaWxpbmcgYnl0ZXM6ICR7dHJhaWxpbmcudG9TdHJpbmcoJ2hleCcpfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQnVmZmVyV2l0aFZlcnNpb248VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gICAgYnVmOiBCdWZmZXIsXG4gICAgbmV0d29yazogWmNhc2hOZXR3b3JrLFxuICAgIHZlcnNpb24/OiBudW1iZXIsXG4gICAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4gICk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIGNvbnN0IHR4ID0gWmNhc2hUcmFuc2FjdGlvbi5mcm9tQnVmZmVyPFROdW1iZXI+KGJ1ZiwgZmFsc2UsIGFtb3VudFR5cGUsIG5ldHdvcmspO1xuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICB0eC5jb25zZW5zdXNCcmFuY2hJZCA9IGdldERlZmF1bHRDb25zZW5zdXNCcmFuY2hJZEZvclZlcnNpb24obmV0d29yaywgdmVyc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIGJ5dGVMZW5ndGgoKTogbnVtYmVyIHtcbiAgICBsZXQgYnl0ZUxlbmd0aCA9IHN1cGVyLmJ5dGVMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJ5dGVMZW5ndGggKz0gNDsgLy8gblZlcnNpb25Hcm91cElkXG4gICAgfVxuICAgIGlmICh0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgYnl0ZUxlbmd0aCArPSA0OyAvLyBuRXhwaXJ5SGVpZ2h0XG4gICAgfVxuICAgIGNvbnN0IGVtcHR5VmVjdG9yTGVuZ3RoID0gdmFydWludC5lbmNvZGluZ0xlbmd0aCgwKTtcbiAgICBpZiAodGhpcy52ZXJzaW9uID09PSA1KSB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODIyXG4gICAgICBieXRlTGVuZ3RoICs9IDQ7IC8vIGNvbnNlbnN1c0JyYW5jaElkXG4gICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBzYXBsaW5nQnVuZGxlIGlucHV0c1xuICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gc2FwbGluZ0J1bmRsZSBvdXRwdXRzXG4gICAgICBieXRlTGVuZ3RoICs9IDE7IC8vIG9yY2hhcmRCdW5kbGUgKGVtcHR5KVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDg2MlxuICAgICAgICBieXRlTGVuZ3RoICs9IDg7IC8vIHZhbHVlQmFsYW5jZSAodWludDY0KVxuICAgICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBpbnB1dHNcbiAgICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gb3V0cHV0c1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc3VwcG9ydHNKb2luU3BsaXRzKCkpIHtcbiAgICAgICAgLy9cbiAgICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gam9pbnNwbGl0c1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIGlzU2FwbGluZ0NvbXBhdGlibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vdmVyd2ludGVyZWQgJiYgdGhpcy52ZXJzaW9uID49IFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTl9TQVBMSU5HO1xuICB9XG5cbiAgaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm92ZXJ3aW50ZXJlZCAmJiB0aGlzLnZlcnNpb24gPj0gWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9OX09WRVJXSU5URVI7XG4gIH1cblxuICBzdXBwb3J0c0pvaW5TcGxpdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vdmVyd2ludGVyZWQgJiYgdGhpcy52ZXJzaW9uID49IFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTl9KT0lOU1BMSVRTX1NVUFBPUlQ7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBoYXNoIGZvciBhbGwgb3Igbm9uZSBvZiB0aGUgdHJhbnNhY3Rpb24gaW5wdXRzIGRlcGVuZGluZyBvbiB0aGUgaGFzaHR5cGVcbiAgICogQHBhcmFtIGhhc2hUeXBlXG4gICAqIEByZXR1cm5zIEJ1ZmZlciAtIEJMQUtFMmIgaGFzaCBvciAyNTYtYml0IHplcm8gaWYgZG9lc24ndCBhcHBseVxuICAgKi9cbiAgZ2V0UHJldm91dEhhc2goaGFzaFR5cGU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgaWYgKCEoaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSkpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDM2ICogdGhpcy5pbnMubGVuZ3RoKSk7XG5cbiAgICAgIHRoaXMuaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UodHhJbi5oYXNoKTtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uaW5kZXgpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCAnWmNhc2hQcmV2b3V0SGFzaCcpO1xuICAgIH1cbiAgICByZXR1cm4gWkVSTztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGhhc2ggZm9yIGFsbCBvciBub25lIG9mIHRoZSB0cmFuc2FjdGlvbnMgaW5wdXRzIHNlcXVlbmNlIG51bWJlcnMgZGVwZW5kaW5nIG9uIHRoZSBoYXNodHlwZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHJldHVybnMgQnVmZmVyIEJMQUtFMmIgaGFzaCBvciAyNTYtYml0IHplcm8gaWYgZG9lc24ndCBhcHBseVxuICAgKi9cbiAgZ2V0U2VxdWVuY2VIYXNoKGhhc2hUeXBlOiBudW1iZXIpOiBCdWZmZXIge1xuICAgIGlmIChcbiAgICAgICEoaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSkgJiZcbiAgICAgIChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJlxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORVxuICAgICkge1xuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUoNCAqIHRoaXMuaW5zLmxlbmd0aCkpO1xuXG4gICAgICB0aGlzLmlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0eEluLnNlcXVlbmNlKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgJ1pjYXNoU2VxdWVuY0hhc2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIFpFUk87XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBoYXNoIGZvciBvbmUsIGFsbCBvciBub25lIG9mIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRzIGRlcGVuZGluZyBvbiB0aGUgaGFzaHR5cGVcbiAgICogQHBhcmFtIGhhc2hUeXBlXG4gICAqIEBwYXJhbSBpbkluZGV4XG4gICAqIEByZXR1cm5zIEJ1ZmZlciBCTEFLRTJiIGhhc2ggb3IgMjU2LWJpdCB6ZXJvIGlmIGRvZXNuJ3QgYXBwbHlcbiAgICovXG4gIGdldE91dHB1dHNIYXNoKGhhc2hUeXBlOiBudW1iZXIsIGluSW5kZXg6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgaWYgKChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJiAoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FKSB7XG4gICAgICAvLyBGaW5kIG91dCB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0cyBhbmQgd3JpdGUgdGhlbVxuICAgICAgY29uc3QgdHhPdXRzU2l6ZSA9IHRoaXMub3V0cy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgb3V0cHV0KSB7XG4gICAgICAgIHJldHVybiBzdW0gKyA4ICsgdmFyU2xpY2VTaXplKG91dHB1dC5zY3JpcHQpO1xuICAgICAgfSwgMCk7XG5cbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKHR4T3V0c1NpemUpKTtcblxuICAgICAgdGhpcy5vdXRzLmZvckVhY2goZnVuY3Rpb24gKG91dCkge1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50NjQob3V0LnZhbHVlKTtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2Uob3V0LnNjcmlwdCk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsICdaY2FzaE91dHB1dHNIYXNoJyk7XG4gICAgfSBlbHNlIGlmICgoaGFzaFR5cGUgJiAweDFmKSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUgJiYgaW5JbmRleCA8IHRoaXMub3V0cy5sZW5ndGgpIHtcbiAgICAgIC8vIFdyaXRlIG9ubHkgdGhlIG91dHB1dCBzcGVjaWZpZWQgaW4gaW5JbmRleFxuICAgICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5vdXRzW2luSW5kZXhdO1xuXG4gICAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSg4ICsgdmFyU2xpY2VTaXplKG91dHB1dC5zY3JpcHQpKSk7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50NjQob3V0cHV0LnZhbHVlKTtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKG91dHB1dC5zY3JpcHQpO1xuXG4gICAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgJ1pjYXNoT3V0cHV0c0hhc2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIFpFUk87XG4gIH1cblxuICAvKipcbiAgICogSGFzaCB0cmFuc2FjdGlvbiBmb3Igc2lnbmluZyBhIHRyYW5zcGFyZW50IHRyYW5zYWN0aW9uIGluIFpjYXNoLiBQcm90ZWN0ZWQgdHJhbnNhY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkLlxuICAgKiBAcGFyYW0gaW5JbmRleFxuICAgKiBAcGFyYW0gcHJldk91dFNjcmlwdFxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIGhhc2hUeXBlXG4gICAqIEByZXR1cm5zIEJ1ZmZlciBCTEFLRTJiIGhhc2hcbiAgICovXG4gIGhhc2hGb3JTaWduYXR1cmVCeU5ldHdvcmsoXG4gICAgaW5JbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlcixcbiAgICB2YWx1ZTogYmlnaW50IHwgbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGhhc2hUeXBlOiBudW1iZXJcbiAgKTogQnVmZmVyIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgdmFsdWVgKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3NjcmlwdC9pbnRlcnByZXRlci5jcHAjTDExNzVcbiAgICBpZiAodGhpcy52ZXJzaW9uID09PSA1KSB7XG4gICAgICByZXR1cm4gZ2V0U2lnbmF0dXJlRGlnZXN0KHRoaXMsIGluSW5kZXgsIHByZXZPdXRTY3JpcHQsIHZhbHVlLCBoYXNoVHlwZSk7XG4gICAgfVxuXG4gICAgLy8gWkNhc2ggYW1vdW50cyBhcmUgYWx3YXlzIHdpdGhpbiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuICAgIHZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyA/IE51bWJlcih2YWx1ZSkgOiB2YWx1ZTtcbiAgICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuVUludDMyLCB0eXBlcy5CdWZmZXIsIHR5cGVzLk51bWJlciksIFtpbkluZGV4LCBwcmV2T3V0U2NyaXB0LCB2YWx1ZV0pO1xuXG4gICAgaWYgKGluSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGluSW5kZXhgKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChpbkluZGV4ID49IHRoaXMuaW5zLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBpbmRleCBpcyBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgdmVyc2lvbiAke3RoaXMudmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNoUHJldm91dHMgPSB0aGlzLmdldFByZXZvdXRIYXNoKGhhc2hUeXBlKTtcbiAgICBjb25zdCBoYXNoU2VxdWVuY2UgPSB0aGlzLmdldFNlcXVlbmNlSGFzaChoYXNoVHlwZSk7XG4gICAgY29uc3QgaGFzaE91dHB1dHMgPSB0aGlzLmdldE91dHB1dHNIYXNoKGhhc2hUeXBlLCBpbkluZGV4KTtcbiAgICBjb25zdCBoYXNoSm9pblNwbGl0cyA9IFpFUk87XG4gICAgY29uc3QgaGFzaFNoaWVsZGVkU3BlbmRzID0gWkVSTztcbiAgICBjb25zdCBoYXNoU2hpZWxkZWRPdXRwdXRzID0gWkVSTztcblxuICAgIGxldCBiYXNlQnVmZmVyU2l6ZSA9IDA7XG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gNCAqIDU7IC8vIGhlYWRlciwgblZlcnNpb25Hcm91cElkLCBsb2NrX3RpbWUsIG5FeHBpcnlIZWlnaHQsIGhhc2hUeXBlXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gMzIgKiA0OyAvLyAyNTYgaGFzaGVzOiBoYXNoUHJldm91dHMsIGhhc2hTZXF1ZW5jZSwgaGFzaE91dHB1dHMsIGhhc2hKb2luU3BsaXRzXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gNCAqIDI7IC8vIGlucHV0LmluZGV4LCBpbnB1dC5zZXF1ZW5jZVxuICAgIGJhc2VCdWZmZXJTaXplICs9IDg7IC8vIHZhbHVlXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gMzI7IC8vIGlucHV0Lmhhc2hcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSB2YXJTbGljZVNpemUocHJldk91dFNjcmlwdCk7IC8vIHByZXZPdXRTY3JpcHRcbiAgICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJhc2VCdWZmZXJTaXplICs9IDMyICogMjsgLy8gaGFzaFNoaWVsZGVkU3BlbmRzIGFuZCBoYXNoU2hpZWxkZWRPdXRwdXRzXG4gICAgICBiYXNlQnVmZmVyU2l6ZSArPSA4OyAvLyB2YWx1ZUJhbGFuY2VcbiAgICB9XG5cbiAgICBjb25zdCBtYXNrID0gdGhpcy5vdmVyd2ludGVyZWQgPyAxIDogMDtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLnZlcnNpb24gfCAobWFzayA8PCAzMSk7XG5cbiAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvYyhiYXNlQnVmZmVyU2l6ZSkpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKGhlYWRlcik7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHRoaXMudmVyc2lvbkdyb3VwSWQpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hQcmV2b3V0cyk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFNlcXVlbmNlKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoT3V0cHV0cyk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaEpvaW5TcGxpdHMpO1xuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFNoaWVsZGVkU3BlbmRzKTtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hTaGllbGRlZE91dHB1dHMpO1xuICAgIH1cbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy5sb2NrdGltZSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHRoaXMuZXhwaXJ5SGVpZ2h0KTtcbiAgICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKFZBTFVFX0lOVDY0X1pFUk8pO1xuICAgIH1cbiAgICBidWZmZXJXcml0ZXIud3JpdGVJbnQzMihoYXNoVHlwZSk7XG5cbiAgICAvLyBUaGUgaW5wdXQgYmVpbmcgc2lnbmVkIChyZXBsYWNpbmcgdGhlIHNjcmlwdFNpZyB3aXRoIHNjcmlwdENvZGUgKyBhbW91bnQpXG4gICAgLy8gVGhlIHByZXZvdXQgbWF5IGFscmVhZHkgYmUgY29udGFpbmVkIGluIGhhc2hQcmV2b3V0LCBhbmQgdGhlIG5TZXF1ZW5jZVxuICAgIC8vIG1heSBhbHJlYWR5IGJlIGNvbnRhaW5lZCBpbiBoYXNoU2VxdWVuY2UuXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmluc1tpbkluZGV4XTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShpbnB1dC5oYXNoKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIoaW5wdXQuaW5kZXgpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKHByZXZPdXRTY3JpcHQpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQ2NCh2YWx1ZSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKGlucHV0LnNlcXVlbmNlKTtcblxuICAgIGNvbnN0IHBlcnNvbmFsaXphdGlvbiA9IEJ1ZmZlci5hbGxvYygxNik7XG4gICAgY29uc3QgcHJlZml4ID0gJ1pjYXNoU2lnSGFzaCc7XG4gICAgcGVyc29uYWxpemF0aW9uLndyaXRlKHByZWZpeCk7XG4gICAgcGVyc29uYWxpemF0aW9uLndyaXRlVUludDMyTEUodGhpcy5jb25zZW5zdXNCcmFuY2hJZCwgcHJlZml4Lmxlbmd0aCk7XG5cbiAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgcGVyc29uYWxpemF0aW9uKTtcbiAgfVxuXG4gIHRvQnVmZmVyKGJ1ZmZlcj86IEJ1ZmZlciwgaW5pdGlhbE9mZnNldCA9IDApOiBCdWZmZXIge1xuICAgIGlmICghYnVmZmVyKSBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUodGhpcy5ieXRlTGVuZ3RoKCkpO1xuXG4gICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihidWZmZXIsIGluaXRpYWxPZmZzZXQpO1xuXG4gICAgaWYgKHRoaXMuaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICBjb25zdCBtYXNrID0gdGhpcy5vdmVyd2ludGVyZWQgPyAxIDogMDtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKHRoaXMudmVyc2lvbiB8IChtYXNrIDw8IDMxKSk7IC8vIFNldCBvdmVyd2ludGVyIGJpdFxuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHRoaXMudmVyc2lvbkdyb3VwSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVJbnQzMih0aGlzLnZlcnNpb24pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIHRvQnVmZmVyVjUoYnVmZmVyV3JpdGVyLCB0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9CdWZmZXJWNChidWZmZXJXcml0ZXIsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChpbml0aWFsT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBidWZmZXIuc2xpY2UoaW5pdGlhbE9mZnNldCwgYnVmZmVyV3JpdGVyLm9mZnNldCk7XG4gICAgfVxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBnZXRIYXNoKGZvcldpdG5lc3M/OiBib29sZWFuKTogQnVmZmVyIHtcbiAgICBpZiAoZm9yV2l0bmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFyZ3VtZW50YCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIHJldHVybiBnZXRUeGlkRGlnZXN0KHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4gY3J5cHRvLmhhc2gyNTYodGhpcy50b0J1ZmZlcigpKTtcbiAgfVxuXG4gIGNsb25lPFROMiBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IFROdW1iZXI+KGFtb3VudFR5cGU/OiAnYmlnaW50JyB8ICdudW1iZXInKTogWmNhc2hUcmFuc2FjdGlvbjxUTjI+IHtcbiAgICByZXR1cm4gbmV3IFpjYXNoVHJhbnNhY3Rpb248VE4yPih0aGlzLm5ldHdvcmssIHRoaXMsIGFtb3VudFR5cGUpO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import * as bitcoinjs from 'bitcoinjs-lib';
4
2
  import { Network } from '../..';
5
3
  import { ZcashNetwork, ZcashTransaction } from './ZcashTransaction';
@@ -1 +1 @@
1
- {"version":3,"file":"ZcashTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashTransactionBuilder.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,SAAS,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAGL,YAAY,EACZ,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,qBAAa,uBAAuB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,CAAE,SAAQ,sBAAsB,CAC3G,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B;gBACa,OAAO,EAAE,YAAY;IAIjC,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAI/E,MAAM,CAAC,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAC7D,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACtC,OAAO,CAAC,EAAE,OAAO,EACjB,UAAU,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,GACzC,uBAAuB,CAAC,OAAO,CAAC;IAiCnC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,IAAI;IAMpD,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAqB9D,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,0BAA0B;IAUlC,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAKrD,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAK/C,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAK3C,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAIlC,eAAe,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAI5C,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM;CAQjE"}
1
+ {"version":3,"file":"ZcashTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAGL,YAAY,EACZ,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,qBAAa,uBAAuB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,CAAE,SAAQ,sBAAsB,CAC3G,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B;gBACa,OAAO,EAAE,YAAY;IAIjC,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAI/E,MAAM,CAAC,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAC7D,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACtC,OAAO,CAAC,EAAE,OAAO,EACjB,UAAU,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,GACzC,uBAAuB,CAAC,OAAO,CAAC;IAiCnC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,IAAI;IAMpD,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAqB9D,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,0BAA0B;IAUlC,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAKrD,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAK/C,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAK3C,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAIlC,eAAe,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAI5C,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM;CAQjE"}
@@ -104,4 +104,4 @@ class ZcashTransactionBuilder extends UtxoTransactionBuilder_1.UtxoTransactionBu
104
104
  }
105
105
  }
106
106
  exports.ZcashTransactionBuilder = ZcashTransactionBuilder;
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlEO0FBQ2pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUd2Qyx5REFLNEI7QUFDNUIsc0VBQW1FO0FBQ25FLHVDQUEyQztBQUUzQyxNQUFhLHVCQUFrRSxTQUFRLCtDQUd0RjtJQUNDLFlBQVksT0FBcUI7UUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxPQUFnQjtRQUNqRCxPQUFPLElBQUksbUNBQWdCLENBQVUsT0FBdUIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUNwQixXQUFzQyxFQUN0QyxPQUFpQixFQUNqQixVQUEwQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLHVCQUF1QixDQUFVLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0RSwwQkFBMEI7UUFDMUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMscUZBQXFGO1FBQ3JGLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFO1lBQ25DLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEQsR0FBRyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDL0M7UUFFRCxHQUFHLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLGlCQUFp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QyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUFzQjtRQUN0QyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFvQjtRQUNsQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUErQixDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxLQUFLLENBQUMsZUFBZSxFQUErQixDQUFDO0lBQzlELENBQUM7SUFFRCxTQUFTLENBQUMsWUFBNkIsRUFBRSxLQUFjO1FBQ3JELG9FQUFvRTtRQUNwRSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsRUFBRTtZQUNwQyxZQUFZLEdBQUcsSUFBQSx3QkFBYyxFQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBa0IsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUEzSEQsMERBMkhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pbmpzIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuY29uc3QgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJyk7XG5cbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQge1xuICBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uLFxuICBnZXREZWZhdWx0VmVyc2lvbkdyb3VwSWRGb3JWZXJzaW9uLFxuICBaY2FzaE5ldHdvcmssXG4gIFpjYXNoVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vWmNhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyB0b091dHB1dFNjcmlwdCB9IGZyb20gJy4vYWRkcmVzcyc7XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8XG4gIFROdW1iZXIsXG4gIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj5cbj4ge1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrOiBaY2FzaE5ldHdvcmspIHtcbiAgICBzdXBlcihuZXR3b3JrKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVJbml0aWFsVHJhbnNhY3Rpb24obmV0d29yazogTmV0d29yayk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIHJldHVybiBuZXcgWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPihuZXR3b3JrIGFzIFpjYXNoTmV0d29yayk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+KFxuICAgIHRyYW5zYWN0aW9uOiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+LFxuICAgIG5ldHdvcms/OiBOZXR3b3JrLFxuICAgIHByZXZPdXRwdXQ/OiBiaXRjb2luanMuVHhPdXRwdXQ8VE51bWJlcj5bXVxuICApOiBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPiB7XG4gICAgY29uc3QgdHhiID0gbmV3IFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+KHRyYW5zYWN0aW9uLm5ldHdvcmspO1xuXG4gICAgLy8gQ29weSB0cmFuc2FjdGlvbiBmaWVsZHNcbiAgICB0eGIuc2V0VmVyc2lvbih0cmFuc2FjdGlvbi52ZXJzaW9uLCAhIXRyYW5zYWN0aW9uLm92ZXJ3aW50ZXJlZCk7XG4gICAgdHhiLnNldExvY2tUaW1lKHRyYW5zYWN0aW9uLmxvY2t0aW1lKTtcblxuICAgIC8vIENvcHkgWmNhc2ggb3ZlcndpbnRlciBmaWVsZHMuIE9taXR0ZWQgaWYgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgaXMgbm90IGZvciBaY2FzaC5cbiAgICBpZiAodHhiLnR4LmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgdHhiLnNldFZlcnNpb25Hcm91cElkKHRyYW5zYWN0aW9uLnZlcnNpb25Hcm91cElkKTtcbiAgICAgIHR4Yi5zZXRFeHBpcnlIZWlnaHQodHJhbnNhY3Rpb24uZXhwaXJ5SGVpZ2h0KTtcbiAgICB9XG5cbiAgICB0eGIuc2V0Q29uc2Vuc3VzQnJhbmNoSWQodHJhbnNhY3Rpb24uY29uc2Vuc3VzQnJhbmNoSWQpO1xuXG4gICAgLy8gQ29weSBvdXRwdXRzIChkb25lIGZpcnN0IHRvIGF2b2lkIHNpZ25hdHVyZSBpbnZhbGlkYXRpb24pXG4gICAgdHJhbnNhY3Rpb24ub3V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0eE91dCkge1xuICAgICAgdHhiLmFkZE91dHB1dCh0eE91dC5zY3JpcHQsIHR4T3V0LnZhbHVlKTtcbiAgICB9KTtcblxuICAgIC8vIENvcHkgaW5wdXRzXG4gICAgdHJhbnNhY3Rpb24uaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgICh0eGIgYXMgYW55KS5fX2FkZElucHV0VW5zYWZlKHR4SW4uaGFzaCwgdHhJbi5pbmRleCwge1xuICAgICAgICBzZXF1ZW5jZTogdHhJbi5zZXF1ZW5jZSxcbiAgICAgICAgc2NyaXB0OiB0eEluLnNjcmlwdCxcbiAgICAgICAgd2l0bmVzczogdHhJbi53aXRuZXNzLFxuICAgICAgICB2YWx1ZTogKHR4SW4gYXMgYW55KS52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR4YjtcbiAgfVxuXG4gIHNldFZlcnNpb24odmVyc2lvbjogbnVtYmVyLCBvdmVyd2ludGVyID0gdHJ1ZSk6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIHZlcnNpb24pO1xuICAgIHRoaXMudHgub3ZlcndpbnRlcmVkID0gb3ZlcndpbnRlciA/IDEgOiAwO1xuICAgIHRoaXMudHgudmVyc2lvbiA9IHZlcnNpb247XG4gIH1cblxuICBzZXREZWZhdWx0c0ZvclZlcnNpb24obmV0d29yazogTmV0d29yaywgdmVyc2lvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgc3dpdGNoICh2ZXJzaW9uKSB7XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjRfQlJBTkNIX0NBTk9QWTpcbiAgICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfTlU1OlxuICAgICAgY2FzZSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9OVTY6XG4gICAgICAgIHRoaXMuc2V0VmVyc2lvbig0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjVfQlJBTkNIX05VNTpcbiAgICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU2OlxuICAgICAgICB0aGlzLnNldFZlcnNpb24oNSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHZlcnNpb24gJHt2ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIHRoaXMudHgudmVyc2lvbkdyb3VwSWQgPSBnZXREZWZhdWx0VmVyc2lvbkdyb3VwSWRGb3JWZXJzaW9uKHZlcnNpb24pO1xuICAgIHRoaXMudHguY29uc2Vuc3VzQnJhbmNoSWQgPSBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHZlcnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNTaWduYXR1cmVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9fSU5QVVRTLnNvbWUoZnVuY3Rpb24gKGlucHV0OiB7IHNpZ25hdHVyZXM6IHVua25vd24gfSkge1xuICAgICAgcmV0dXJuIGlucHV0LnNpZ25hdHVyZXMgIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UHJvcGVydHlDaGVja1NpZ25hdHVyZXMocHJvcE5hbWU6IGtleW9mIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sIHZhbHVlOiB1bmtub3duKSB7XG4gICAgaWYgKHRoaXMudHhbcHJvcE5hbWVdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNTaWduYXR1cmVzKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hhbmdpbmcgcHJvcGVydHkgJHtwcm9wTmFtZX0gZm9yIGEgcGFydGlhbGx5IHNpZ25lZCB0cmFuc2FjdGlvbiB3b3VsZCBpbnZhbGlkYXRlIHNpZ25hdHVyZXNgKTtcbiAgICB9XG4gICAgdGhpcy50eFtwcm9wTmFtZV0gPSB2YWx1ZSBhcyBhbnk7XG4gIH1cblxuICBzZXRDb25zZW5zdXNCcmFuY2hJZChjb25zZW5zdXNCcmFuY2hJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgdHlwZWZvcmNlKHR5cGVzLlVJbnQzMiwgY29uc2Vuc3VzQnJhbmNoSWQpO1xuICAgIHRoaXMuc2V0UHJvcGVydHlDaGVja1NpZ25hdHVyZXMoJ2NvbnNlbnN1c0JyYW5jaElkJywgY29uc2Vuc3VzQnJhbmNoSWQpO1xuICB9XG5cbiAgc2V0VmVyc2lvbkdyb3VwSWQodmVyc2lvbkdyb3VwSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIHZlcnNpb25Hcm91cElkKTtcbiAgICB0aGlzLnNldFByb3BlcnR5Q2hlY2tTaWduYXR1cmVzKCd2ZXJzaW9uR3JvdXBJZCcsIHZlcnNpb25Hcm91cElkKTtcbiAgfVxuXG4gIHNldEV4cGlyeUhlaWdodChleHBpcnlIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIGV4cGlyeUhlaWdodCk7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eUNoZWNrU2lnbmF0dXJlcygnZXhwaXJ5SGVpZ2h0JywgZXhwaXJ5SGVpZ2h0KTtcbiAgfVxuXG4gIGJ1aWxkKCk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIHJldHVybiBzdXBlci5idWlsZCgpIGFzIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj47XG4gIH1cblxuICBidWlsZEluY29tcGxldGUoKTogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gICAgcmV0dXJuIHN1cGVyLmJ1aWxkSW5jb21wbGV0ZSgpIGFzIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj47XG4gIH1cblxuICBhZGRPdXRwdXQoc2NyaXB0UHViS2V5OiBzdHJpbmcgfCBCdWZmZXIsIHZhbHVlOiBUTnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBBdHRlbXB0IHRvIGdldCBhIHNjcmlwdCBpZiBpdCdzIGEgYmFzZTU4IG9yIGJlY2gzMiBhZGRyZXNzIHN0cmluZ1xuICAgIGlmICh0eXBlb2Ygc2NyaXB0UHViS2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgc2NyaXB0UHViS2V5ID0gdG9PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCB0aGlzLm5ldHdvcmsgYXMgTmV0d29yayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmFkZE91dHB1dChzY3JpcHRQdWJLZXksIHZhbHVlKTtcbiAgfVxufVxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlEO0FBQ2pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUd2Qyx5REFLNEI7QUFDNUIsc0VBQW1FO0FBQ25FLHVDQUEyQztBQUUzQyxNQUFhLHVCQUFrRSxTQUFRLCtDQUd0RjtJQUNDLFlBQVksT0FBcUI7UUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxPQUFnQjtRQUNqRCxPQUFPLElBQUksbUNBQWdCLENBQVUsT0FBdUIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUNwQixXQUFzQyxFQUN0QyxPQUFpQixFQUNqQixVQUEwQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLHVCQUF1QixDQUFVLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0RSwwQkFBMEI7UUFDMUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMscUZBQXFGO1FBQ3JGLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUM7WUFDcEMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsR0FBRyxDQUFDLG9CQUFvQixDQUFDLFdBQVcs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QUFpQixDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLDBCQUEwQixDQUFDLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQXNCO1FBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQW9CO1FBQ2xDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQStCLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLEtBQUssQ0FBQyxlQUFlLEVBQStCLENBQUM7SUFDOUQsQ0FBQztJQUVELFNBQVMsQ0FBQyxZQUE2QixFQUFFLEtBQWM7UUFDckQsb0VBQW9FO1FBQ3BFLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckMsWUFBWSxHQUFHLElBQUEsd0JBQWMsRUFBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQWtCLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUEzSEQsMERBMkhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pbmpzIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuY29uc3QgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJyk7XG5cbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQge1xuICBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uLFxuICBnZXREZWZhdWx0VmVyc2lvbkdyb3VwSWRGb3JWZXJzaW9uLFxuICBaY2FzaE5ldHdvcmssXG4gIFpjYXNoVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vWmNhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyB0b091dHB1dFNjcmlwdCB9IGZyb20gJy4vYWRkcmVzcyc7XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8XG4gIFROdW1iZXIsXG4gIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj5cbj4ge1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrOiBaY2FzaE5ldHdvcmspIHtcbiAgICBzdXBlcihuZXR3b3JrKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVJbml0aWFsVHJhbnNhY3Rpb24obmV0d29yazogTmV0d29yayk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIHJldHVybiBuZXcgWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPihuZXR3b3JrIGFzIFpjYXNoTmV0d29yayk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+KFxuICAgIHRyYW5zYWN0aW9uOiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+LFxuICAgIG5ldHdvcms/OiBOZXR3b3JrLFxuICAgIHByZXZPdXRwdXQ/OiBiaXRjb2luanMuVHhPdXRwdXQ8VE51bWJlcj5bXVxuICApOiBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPiB7XG4gICAgY29uc3QgdHhiID0gbmV3IFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+KHRyYW5zYWN0aW9uLm5ldHdvcmspO1xuXG4gICAgLy8gQ29weSB0cmFuc2FjdGlvbiBmaWVsZHNcbiAgICB0eGIuc2V0VmVyc2lvbih0cmFuc2FjdGlvbi52ZXJzaW9uLCAhIXRyYW5zYWN0aW9uLm92ZXJ3aW50ZXJlZCk7XG4gICAgdHhiLnNldExvY2tUaW1lKHRyYW5zYWN0aW9uLmxvY2t0aW1lKTtcblxuICAgIC8vIENvcHkgWmNhc2ggb3ZlcndpbnRlciBmaWVsZHMuIE9taXR0ZWQgaWYgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgaXMgbm90IGZvciBaY2FzaC5cbiAgICBpZiAodHhiLnR4LmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgdHhiLnNldFZlcnNpb25Hcm91cElkKHRyYW5zYWN0aW9uLnZlcnNpb25Hcm91cElkKTtcbiAgICAgIHR4Yi5zZXRFeHBpcnlIZWlnaHQodHJhbnNhY3Rpb24uZXhwaXJ5SGVpZ2h0KTtcbiAgICB9XG5cbiAgICB0eGIuc2V0Q29uc2Vuc3VzQnJhbmNoSWQodHJhbnNhY3Rpb24uY29uc2Vuc3VzQnJhbmNoSWQpO1xuXG4gICAgLy8gQ29weSBvdXRwdXRzIChkb25lIGZpcnN0IHRvIGF2b2lkIHNpZ25hdHVyZSBpbnZhbGlkYXRpb24pXG4gICAgdHJhbnNhY3Rpb24ub3V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0eE91dCkge1xuICAgICAgdHhiLmFkZE91dHB1dCh0eE91dC5zY3JpcHQsIHR4T3V0LnZhbHVlKTtcbiAgICB9KTtcblxuICAgIC8vIENvcHkgaW5wdXRzXG4gICAgdHJhbnNhY3Rpb24uaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgICh0eGIgYXMgYW55KS5fX2FkZElucHV0VW5zYWZlKHR4SW4uaGFzaCwgdHhJbi5pbmRleCwge1xuICAgICAgICBzZXF1ZW5jZTogdHhJbi5zZXF1ZW5jZSxcbiAgICAgICAgc2NyaXB0OiB0eEluLnNjcmlwdCxcbiAgICAgICAgd2l0bmVzczogdHhJbi53aXRuZXNzLFxuICAgICAgICB2YWx1ZTogKHR4SW4gYXMgYW55KS52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR4YjtcbiAgfVxuXG4gIHNldFZlcnNpb24odmVyc2lvbjogbnVtYmVyLCBvdmVyd2ludGVyID0gdHJ1ZSk6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIHZlcnNpb24pO1xuICAgIHRoaXMudHgub3ZlcndpbnRlcmVkID0gb3ZlcndpbnRlciA/IDEgOiAwO1xuICAgIHRoaXMudHgudmVyc2lvbiA9IHZlcnNpb247XG4gIH1cblxuICBzZXREZWZhdWx0c0ZvclZlcnNpb24obmV0d29yazogTmV0d29yaywgdmVyc2lvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgc3dpdGNoICh2ZXJzaW9uKSB7XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjRfQlJBTkNIX0NBTk9QWTpcbiAgICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfTlU1OlxuICAgICAgY2FzZSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9OVTY6XG4gICAgICAgIHRoaXMuc2V0VmVyc2lvbig0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjVfQlJBTkNIX05VNTpcbiAgICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU2OlxuICAgICAgICB0aGlzLnNldFZlcnNpb24oNSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHZlcnNpb24gJHt2ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIHRoaXMudHgudmVyc2lvbkdyb3VwSWQgPSBnZXREZWZhdWx0VmVyc2lvbkdyb3VwSWRGb3JWZXJzaW9uKHZlcnNpb24pO1xuICAgIHRoaXMudHguY29uc2Vuc3VzQnJhbmNoSWQgPSBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHZlcnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNTaWduYXR1cmVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9fSU5QVVRTLnNvbWUoZnVuY3Rpb24gKGlucHV0OiB7IHNpZ25hdHVyZXM6IHVua25vd24gfSkge1xuICAgICAgcmV0dXJuIGlucHV0LnNpZ25hdHVyZXMgIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UHJvcGVydHlDaGVja1NpZ25hdHVyZXMocHJvcE5hbWU6IGtleW9mIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sIHZhbHVlOiB1bmtub3duKSB7XG4gICAgaWYgKHRoaXMudHhbcHJvcE5hbWVdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNTaWduYXR1cmVzKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hhbmdpbmcgcHJvcGVydHkgJHtwcm9wTmFtZX0gZm9yIGEgcGFydGlhbGx5IHNpZ25lZCB0cmFuc2FjdGlvbiB3b3VsZCBpbnZhbGlkYXRlIHNpZ25hdHVyZXNgKTtcbiAgICB9XG4gICAgdGhpcy50eFtwcm9wTmFtZV0gPSB2YWx1ZSBhcyBhbnk7XG4gIH1cblxuICBzZXRDb25zZW5zdXNCcmFuY2hJZChjb25zZW5zdXNCcmFuY2hJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgdHlwZWZvcmNlKHR5cGVzLlVJbnQzMiwgY29uc2Vuc3VzQnJhbmNoSWQpO1xuICAgIHRoaXMuc2V0UHJvcGVydHlDaGVja1NpZ25hdHVyZXMoJ2NvbnNlbnN1c0JyYW5jaElkJywgY29uc2Vuc3VzQnJhbmNoSWQpO1xuICB9XG5cbiAgc2V0VmVyc2lvbkdyb3VwSWQodmVyc2lvbkdyb3VwSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIHZlcnNpb25Hcm91cElkKTtcbiAgICB0aGlzLnNldFByb3BlcnR5Q2hlY2tTaWduYXR1cmVzKCd2ZXJzaW9uR3JvdXBJZCcsIHZlcnNpb25Hcm91cElkKTtcbiAgfVxuXG4gIHNldEV4cGlyeUhlaWdodChleHBpcnlIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIGV4cGlyeUhlaWdodCk7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eUNoZWNrU2lnbmF0dXJlcygnZXhwaXJ5SGVpZ2h0JywgZXhwaXJ5SGVpZ2h0KTtcbiAgfVxuXG4gIGJ1aWxkKCk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIHJldHVybiBzdXBlci5idWlsZCgpIGFzIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj47XG4gIH1cblxuICBidWlsZEluY29tcGxldGUoKTogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gICAgcmV0dXJuIHN1cGVyLmJ1aWxkSW5jb21wbGV0ZSgpIGFzIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj47XG4gIH1cblxuICBhZGRPdXRwdXQoc2NyaXB0UHViS2V5OiBzdHJpbmcgfCBCdWZmZXIsIHZhbHVlOiBUTnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBBdHRlbXB0IHRvIGdldCBhIHNjcmlwdCBpZiBpdCdzIGEgYmFzZTU4IG9yIGJlY2gzMiBhZGRyZXNzIHN0cmluZ1xuICAgIGlmICh0eXBlb2Ygc2NyaXB0UHViS2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgc2NyaXB0UHViS2V5ID0gdG9PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCB0aGlzLm5ldHdvcmsgYXMgTmV0d29yayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmFkZE91dHB1dChzY3JpcHRQdWJLZXksIHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import { Base58CheckResult } from 'bitcoinjs-lib/src/address';
4
2
  import { Network } from '../../networks';
5
3
  export declare function fromBase58Check(address: string): Base58CheckResult;
@@ -1 +1 @@
1
- {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/address.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAW,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAIlD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAKlE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOnE;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAgB/E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAUxE"}
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/address.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAW,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAIlD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAKlE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOnE;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAgB/E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAUxE"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toOutputScript = exports.fromOutputScript = exports.toBase58Check = exports.fromBase58Check = void 0;
3
+ exports.fromBase58Check = fromBase58Check;
4
+ exports.toBase58Check = toBase58Check;
5
+ exports.fromOutputScript = fromOutputScript;
6
+ exports.toOutputScript = toOutputScript;
4
7
  const assert = require("assert");
5
8
  const bitcoinjs_lib_1 = require("bitcoinjs-lib");
6
9
  const types = require("bitcoinjs-lib/src/types");
@@ -13,7 +16,6 @@ function fromBase58Check(address) {
13
16
  const hash = payload.slice(2);
14
17
  return { version, hash };
15
18
  }
16
- exports.fromBase58Check = fromBase58Check;
17
19
  function toBase58Check(hash, version) {
18
20
  typeforce(types.tuple(types.Hash160bit, types.Number), arguments);
19
21
  const payload = Buffer.allocUnsafe(22);
@@ -21,7 +23,6 @@ function toBase58Check(hash, version) {
21
23
  hash.copy(payload, 2);
22
24
  return bs58check.encode(payload);
23
25
  }
24
- exports.toBase58Check = toBase58Check;
25
26
  function fromOutputScript(outputScript, network) {
26
27
  assert((0, networks_1.isZcash)(network));
27
28
  let o;
@@ -41,7 +42,6 @@ function fromOutputScript(outputScript, network) {
41
42
  }
42
43
  return toBase58Check(o.hash, prefix);
43
44
  }
44
- exports.fromOutputScript = fromOutputScript;
45
45
  function toOutputScript(address, network) {
46
46
  assert((0, networks_1.isZcash)(network));
47
47
  const { version, hash } = fromBase58Check(address);
@@ -53,5 +53,4 @@ function toOutputScript(address, network) {
53
53
  }
54
54
  throw new Error(address + ' has no matching Script');
55
55
  }
56
- exports.toOutputScript = toOutputScript;
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFpQztBQUNqQyxpREFBeUM7QUFDekMsaURBQWlEO0FBRWpELDZDQUFrRDtBQUNsRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXZDLFNBQWdCLGVBQWUsQ0FBQyxPQUFlO0lBQzdDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUxELDBDQUtDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLElBQVksRUFBRSxPQUFlO0lBQ3pELFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEIsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFQRCxzQ0FPQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLFlBQW9CLEVBQUUsT0FBZ0I7SUFDckUsTUFBTSxDQUFDLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLElBQUksQ0FBQyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUM7SUFDWCxJQUFJO1FBQ0YsQ0FBQyxHQUFHLHdCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDN0MsTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7S0FDN0I7SUFBQyxPQUFPLENBQUMsRUFBRSxHQUFFO0lBQ2QsSUFBSTtRQUNGLENBQUMsR0FBRyx3QkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0tBQzdCO0lBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRTtJQUNkLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7UUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzdDO0lBQ0QsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBaEJELDRDQWdCQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxPQUFlLEVBQUUsT0FBZ0I7SUFDOUQsTUFBTSxDQUFDLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDbEMsT0FBTyx3QkFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBZ0IsQ0FBQztLQUNsRDtJQUNELElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDbEMsT0FBTyx3QkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBZ0IsQ0FBQztLQUNqRDtJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxHQUFHLHlCQUF5QixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQVZELHdDQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBwYXltZW50cyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuaW1wb3J0IHsgQmFzZTU4Q2hlY2tSZXN1bHQgfSBmcm9tICdiaXRjb2luanMtbGliL3NyYy9hZGRyZXNzJztcbmltcG9ydCB7IGlzWmNhc2gsIE5ldHdvcmsgfSBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5jb25zdCBiczU4Y2hlY2sgPSByZXF1aXJlKCdiczU4Y2hlY2snKTtcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUJhc2U1OENoZWNrKGFkZHJlc3M6IHN0cmluZyk6IEJhc2U1OENoZWNrUmVzdWx0IHtcbiAgY29uc3QgcGF5bG9hZCA9IGJzNThjaGVjay5kZWNvZGUoYWRkcmVzcyk7XG4gIGNvbnN0IHZlcnNpb24gPSBwYXlsb2FkLnJlYWRVSW50MTZCRSgwKTtcbiAgY29uc3QgaGFzaCA9IHBheWxvYWQuc2xpY2UoMik7XG4gIHJldHVybiB7IHZlcnNpb24sIGhhc2ggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQmFzZTU4Q2hlY2soaGFzaDogQnVmZmVyLCB2ZXJzaW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuSGFzaDE2MGJpdCwgdHlwZXMuTnVtYmVyKSwgYXJndW1lbnRzKTtcblxuICBjb25zdCBwYXlsb2FkID0gQnVmZmVyLmFsbG9jVW5zYWZlKDIyKTtcbiAgcGF5bG9hZC53cml0ZVVJbnQxNkJFKHZlcnNpb24sIDApO1xuICBoYXNoLmNvcHkocGF5bG9hZCwgMik7XG4gIHJldHVybiBiczU4Y2hlY2suZW5jb2RlKHBheWxvYWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbU91dHB1dFNjcmlwdChvdXRwdXRTY3JpcHQ6IEJ1ZmZlciwgbmV0d29yazogTmV0d29yayk6IHN0cmluZyB7XG4gIGFzc2VydChpc1pjYXNoKG5ldHdvcmspKTtcbiAgbGV0IG87XG4gIGxldCBwcmVmaXg7XG4gIHRyeSB7XG4gICAgbyA9IHBheW1lbnRzLnAycGtoKHsgb3V0cHV0OiBvdXRwdXRTY3JpcHQgfSk7XG4gICAgcHJlZml4ID0gbmV0d29yay5wdWJLZXlIYXNoO1xuICB9IGNhdGNoIChlKSB7fVxuICB0cnkge1xuICAgIG8gPSBwYXltZW50cy5wMnNoKHsgb3V0cHV0OiBvdXRwdXRTY3JpcHQgfSk7XG4gICAgcHJlZml4ID0gbmV0d29yay5zY3JpcHRIYXNoO1xuICB9IGNhdGNoIChlKSB7fVxuICBpZiAoIW8gfHwgIW8uaGFzaCB8fCBwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgb3V0cHV0U2NyaXB0YCk7XG4gIH1cbiAgcmV0dXJuIHRvQmFzZTU4Q2hlY2soby5oYXNoLCBwcmVmaXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9PdXRwdXRTY3JpcHQoYWRkcmVzczogc3RyaW5nLCBuZXR3b3JrOiBOZXR3b3JrKTogQnVmZmVyIHtcbiAgYXNzZXJ0KGlzWmNhc2gobmV0d29yaykpO1xuICBjb25zdCB7IHZlcnNpb24sIGhhc2ggfSA9IGZyb21CYXNlNThDaGVjayhhZGRyZXNzKTtcbiAgaWYgKHZlcnNpb24gPT09IG5ldHdvcmsucHViS2V5SGFzaCkge1xuICAgIHJldHVybiBwYXltZW50cy5wMnBraCh7IGhhc2ggfSkub3V0cHV0IGFzIEJ1ZmZlcjtcbiAgfVxuICBpZiAodmVyc2lvbiA9PT0gbmV0d29yay5zY3JpcHRIYXNoKSB7XG4gICAgcmV0dXJuIHBheW1lbnRzLnAyc2goeyBoYXNoIH0pLm91dHB1dCBhcyBCdWZmZXI7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGFkZHJlc3MgKyAnIGhhcyBubyBtYXRjaGluZyBTY3JpcHQnKTtcbn1cbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsMENBS0M7QUFFRCxzQ0FPQztBQUVELDRDQWdCQztBQUVELHdDQVVDO0FBcERELGlDQUFpQztBQUNqQyxpREFBeUM7QUFDekMsaURBQWlEO0FBRWpELDZDQUFrRDtBQUNsRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXZDLFNBQWdCLGVBQWUsQ0FBQyxPQUFlO0lBQzdDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUN6RCxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVsRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsWUFBb0IsRUFBRSxPQUFnQjtJQUNyRSxNQUFNLENBQUMsSUFBQSxrQkFBTyxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxDQUFDLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksQ0FBQztRQUNILENBQUMsR0FBRyx3QkFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQzlCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztJQUNkLElBQUksQ0FBQztRQUNILENBQUMsR0FBRyx3QkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQzlCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztJQUNkLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxPQUFlLEVBQUUsT0FBZ0I7SUFDOUQsTUFBTSxDQUFDLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQyxPQUFPLHdCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFnQixDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkMsT0FBTyx3QkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBZ0IsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcseUJBQXlCLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBwYXltZW50cyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuaW1wb3J0IHsgQmFzZTU4Q2hlY2tSZXN1bHQgfSBmcm9tICdiaXRjb2luanMtbGliL3NyYy9hZGRyZXNzJztcbmltcG9ydCB7IGlzWmNhc2gsIE5ldHdvcmsgfSBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5jb25zdCBiczU4Y2hlY2sgPSByZXF1aXJlKCdiczU4Y2hlY2snKTtcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUJhc2U1OENoZWNrKGFkZHJlc3M6IHN0cmluZyk6IEJhc2U1OENoZWNrUmVzdWx0IHtcbiAgY29uc3QgcGF5bG9hZCA9IGJzNThjaGVjay5kZWNvZGUoYWRkcmVzcyk7XG4gIGNvbnN0IHZlcnNpb24gPSBwYXlsb2FkLnJlYWRVSW50MTZCRSgwKTtcbiAgY29uc3QgaGFzaCA9IHBheWxvYWQuc2xpY2UoMik7XG4gIHJldHVybiB7IHZlcnNpb24sIGhhc2ggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQmFzZTU4Q2hlY2soaGFzaDogQnVmZmVyLCB2ZXJzaW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuSGFzaDE2MGJpdCwgdHlwZXMuTnVtYmVyKSwgYXJndW1lbnRzKTtcblxuICBjb25zdCBwYXlsb2FkID0gQnVmZmVyLmFsbG9jVW5zYWZlKDIyKTtcbiAgcGF5bG9hZC53cml0ZVVJbnQxNkJFKHZlcnNpb24sIDApO1xuICBoYXNoLmNvcHkocGF5bG9hZCwgMik7XG4gIHJldHVybiBiczU4Y2hlY2suZW5jb2RlKHBheWxvYWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbU91dHB1dFNjcmlwdChvdXRwdXRTY3JpcHQ6IEJ1ZmZlciwgbmV0d29yazogTmV0d29yayk6IHN0cmluZyB7XG4gIGFzc2VydChpc1pjYXNoKG5ldHdvcmspKTtcbiAgbGV0IG87XG4gIGxldCBwcmVmaXg7XG4gIHRyeSB7XG4gICAgbyA9IHBheW1lbnRzLnAycGtoKHsgb3V0cHV0OiBvdXRwdXRTY3JpcHQgfSk7XG4gICAgcHJlZml4ID0gbmV0d29yay5wdWJLZXlIYXNoO1xuICB9IGNhdGNoIChlKSB7fVxuICB0cnkge1xuICAgIG8gPSBwYXltZW50cy5wMnNoKHsgb3V0cHV0OiBvdXRwdXRTY3JpcHQgfSk7XG4gICAgcHJlZml4ID0gbmV0d29yay5zY3JpcHRIYXNoO1xuICB9IGNhdGNoIChlKSB7fVxuICBpZiAoIW8gfHwgIW8uaGFzaCB8fCBwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgb3V0cHV0U2NyaXB0YCk7XG4gIH1cbiAgcmV0dXJuIHRvQmFzZTU4Q2hlY2soby5oYXNoLCBwcmVmaXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9PdXRwdXRTY3JpcHQoYWRkcmVzczogc3RyaW5nLCBuZXR3b3JrOiBOZXR3b3JrKTogQnVmZmVyIHtcbiAgYXNzZXJ0KGlzWmNhc2gobmV0d29yaykpO1xuICBjb25zdCB7IHZlcnNpb24sIGhhc2ggfSA9IGZyb21CYXNlNThDaGVjayhhZGRyZXNzKTtcbiAgaWYgKHZlcnNpb24gPT09IG5ldHdvcmsucHViS2V5SGFzaCkge1xuICAgIHJldHVybiBwYXltZW50cy5wMnBraCh7IGhhc2ggfSkub3V0cHV0IGFzIEJ1ZmZlcjtcbiAgfVxuICBpZiAodmVyc2lvbiA9PT0gbmV0d29yay5zY3JpcHRIYXNoKSB7XG4gICAgcmV0dXJuIHBheW1lbnRzLnAyc2goeyBoYXNoIH0pLm91dHB1dCBhcyBCdWZmZXI7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGFkZHJlc3MgKyAnIGhhcyBubyBtYXRjaGluZyBTY3JpcHQnKTtcbn1cbiJdfQ==
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  /**
4
2
  * Implements hashing methods described in https://zips.z.cash/zip-0244.
5
3
  * Only supports full transparent transactions without shielded inputs or outputs.
@@ -1 +1 @@
1
- {"version":3,"file":"hashZip0244.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/hashZip0244.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,OAAO,EAAe,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,KAAK,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAIvF;AAcD,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/D,GAAG,EAAE,OAAO,EAAE,EACd,GAAG,SAAqB,EACxB,SAAS,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GACnC,MAAM,CAaR;AAED,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/D,GAAG,EAAE,OAAO,EAAE,EACd,GAAG,SAAqB,EACxB,SAAS,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GACnC,MAAM,CAsBR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC9D,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,EACzB,GAAG,SAAqB,EACxB,SAAS,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GACnC,MAAM,CAsCR;AAoFD,wBAAgB,aAAa,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,MAAM,CAGpG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAChE,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAQR"}
1
+ {"version":3,"file":"hashZip0244.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/hashZip0244.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAe,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,KAAK,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAIvF;AAcD,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/D,GAAG,EAAE,OAAO,EAAE,EACd,GAAG,SAAqB,EACxB,SAAS,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GACnC,MAAM,CAaR;AAED,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/D,GAAG,EAAE,OAAO,EAAE,EACd,GAAG,SAAqB,EACxB,SAAS,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GACnC,MAAM,CAsBR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC9D,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,EACzB,GAAG,SAAqB,EACxB,SAAS,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GACnC,MAAM,CAsCR;AAoFD,wBAAgB,aAAa,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,MAAM,CAGpG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAChE,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAQR"}
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSignatureDigest = exports.getTxidDigest = exports.getOutputsDigest = exports.getSequenceDigest = exports.getPrevoutsDigest = exports.getBlake2bHash = void 0;
3
+ exports.getBlake2bHash = getBlake2bHash;
4
+ exports.getPrevoutsDigest = getPrevoutsDigest;
5
+ exports.getSequenceDigest = getSequenceDigest;
6
+ exports.getOutputsDigest = getOutputsDigest;
7
+ exports.getTxidDigest = getTxidDigest;
8
+ exports.getSignatureDigest = getSignatureDigest;
4
9
  /**
5
10
  * Implements hashing methods described in https://zips.z.cash/zip-0244.
6
11
  * Only supports full transparent transactions without shielded inputs or outputs.
@@ -20,7 +25,6 @@ function getBlake2bHash(buffer, personalization) {
20
25
  personalization = Buffer.from(personalization);
21
26
  return blake2b(out.length, null, null, personalization).update(buffer).digest(out);
22
27
  }
23
- exports.getBlake2bHash = getBlake2bHash;
24
28
  function getHeaderDigest(tx) {
25
29
  // https://zips.z.cash/zip-0244#t-1-header-digest
26
30
  const mask = tx.overwintered ? 1 : 0;
@@ -45,7 +49,6 @@ function getPrevoutsDigest(ins, tag = 'ZTxIdPrevoutHash', sigParams) {
45
49
  });
46
50
  return getBlake2bHash(bufferWriter.end(), tag);
47
51
  }
48
- exports.getPrevoutsDigest = getPrevoutsDigest;
49
52
  function getSequenceDigest(ins, tag = 'ZTxIdSequencHash', sigParams) {
50
53
  // txid: https://zips.z.cash/zip-0244#t-2b-sequence-digest
51
54
  // sig: https://zips.z.cash/zip-0244#s-2b-sequence-sig-digest
@@ -64,7 +67,6 @@ function getSequenceDigest(ins, tag = 'ZTxIdSequencHash', sigParams) {
64
67
  });
65
68
  return getBlake2bHash(bufferWriter.end(), tag);
66
69
  }
67
- exports.getSequenceDigest = getSequenceDigest;
68
70
  function getOutputsDigest(outs, tag = 'ZTxIdOutputsHash', sigParams) {
69
71
  // txid: https://zips.z.cash/zip-0244#t-2c-outputs-digest
70
72
  // sig: https://zips.z.cash/zip-0244#s-2c-outputs-sig-digest
@@ -97,7 +99,6 @@ function getOutputsDigest(outs, tag = 'ZTxIdOutputsHash', sigParams) {
97
99
  });
98
100
  return getBlake2bHash(bufferWriter.end(), tag);
99
101
  }
100
- exports.getOutputsDigest = getOutputsDigest;
101
102
  function getTxinDigest(input, sigParams) {
102
103
  // https://zips.z.cash/zip-0244#s-2d-txin-sig-digest
103
104
  // https://github.com/zcash-hackworks/zcash-test-vectors/blob/dd8fdb/zip_0244.py#L291
@@ -170,7 +171,6 @@ function getTxidDigest(tx) {
170
171
  // https://zips.z.cash/zip-0244#id4
171
172
  return getDigest(tx);
172
173
  }
173
- exports.getTxidDigest = getTxidDigest;
174
174
  function getSignatureDigest(tx, inIndex, prevOutScript, value, hashType) {
175
175
  // https://zips.z.cash/zip-0244#id13
176
176
  return getDigest(tx, {
@@ -180,5 +180,4 @@ function getSignatureDigest(tx, inIndex, prevOutScript, value, hashType) {
180
180
  hashType,
181
181
  });
182
182
  }
183
- exports.getSignatureDigest = getSignatureDigest;
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaFppcDAyNDQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvaGFzaFppcDAyNDQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7OztHQUdHO0FBQ0gsaURBQStEO0FBQy9ELCtEQUE2RDtBQUU3RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUcvQyx3REFBa0Q7QUFTbEQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsTUFBYyxFQUFFLGVBQWdDO0lBQzdFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckYsQ0FBQztBQUpELHdDQUlDO0FBRUQsU0FBUyxlQUFlLENBQWtDLEVBQTZCO0lBQ3JGLGlEQUFpRDtJQUNqRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLE1BQU0sR0FBRywwQkFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7SUFDbkUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxF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LENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV4QyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUM7SUFDM0IsTUFBTSxlQUFlLEdBQUcsMEJBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0UsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBa0MsRUFBNkI7SUFDMUYsbUNBQW1DO0lBQ25DLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFIRCxzQ0FHQztBQUVELFNBQWdCLGtCQUFrQixDQUNoQyxFQUE2QixFQUM3QixPQUEyQixFQUMzQixhQUFxQixFQUNyQixLQUFjLEVBQ2QsUUFBZ0I7SUFFaEIsb0NBQW9DO0lBQ3BDLE9BQU8sU0FBUyxDQUFDLEVBQUUsRUFBRTtRQUNuQixPQUFPO1FBQ1AsYUFBYTtRQUNiLEtBQUs7UUFDTCxRQUFRO0tBQ1QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWRELGdEQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbXBsZW1lbnRzIGhhc2hpbmcgbWV0aG9kcyBkZXNjcmliZWQgaW4gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NC5cbiAqIE9ubHkgc3VwcG9ydHMgZnVsbCB0cmFuc3BhcmVudCB0cmFuc2FjdGlvbnMgd2l0aG91dCBzaGllbGRlZCBpbnB1dHMgb3Igb3V0cHV0cy5cbiAqL1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFR4SW5wdXQsIFR4T3V0cHV0IH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBCdWZmZXJXcml0ZXIgfSBmcm9tICdiaXRjb2luanMtbGliL3NyYy9idWZmZXJ1dGlscyc7XG5cbmNvbnN0IGJsYWtlMmIgPSByZXF1aXJlKCdAYml0Z28tYmV0YS9ibGFrZTJiJyk7XG5cbmltcG9ydCB7IFpjYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL1pjYXNoVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgdmFyU2xpY2VTaXplIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uJztcblxudHlwZSBTaWduYXR1cmVQYXJhbXM8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB7XG4gIGluSW5kZXg/OiBudW1iZXI7XG4gIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlcjtcbiAgdmFsdWU6IFROdW1iZXI7XG4gIGhhc2hUeXBlOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIEJsYWtlMmIgaGFzaGluZyBhbGdvcml0aG0gZm9yIFpjYXNoXG4gKiBAcGFyYW0gYnVmZmVyXG4gKiBAcGFyYW0gcGVyc29uYWxpemF0aW9uXG4gKiBAcmV0dXJucyAyNTYtYml0IEJMQUtFMmIgaGFzaFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qmxha2UyYkhhc2goYnVmZmVyOiBCdWZmZXIsIHBlcnNvbmFsaXphdGlvbjogc3RyaW5nIHwgQnVmZmVyKTogQnVmZmVyIHtcbiAgY29uc3Qgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKDMyKTtcbiAgcGVyc29uYWxpemF0aW9uID0gQnVmZmVyLmZyb20ocGVyc29uYWxpemF0aW9uKTtcbiAgcmV0dXJuIGJsYWtlMmIob3V0Lmxlbmd0aCwgbnVsbCwgbnVsbCwgcGVyc29uYWxpemF0aW9uKS51cGRhdGUoYnVmZmVyKS5kaWdlc3Qob3V0KTtcbn1cblxuZnVuY3Rpb24gZ2V0SGVhZGVyRGlnZXN0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KHR4OiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+KTogQnVmZmVyIHtcbiAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCN0LTEtaGVhZGVyLWRpZ2VzdFxuICBjb25zdCBtYXNrID0gdHgub3ZlcndpbnRlcmVkID8gMSA6IDA7XG4gIGNvbnN0IHdyaXRlciA9IEJ1ZmZlcldyaXRlci53aXRoQ2FwYWNpdHkoNCAqIDUpO1xuICB3cml0ZXIud3JpdGVJbnQzMih0eC52ZXJzaW9uIHwgKG1hc2sgPDwgMzEpKTsgLy8gU2V0IG92ZXJ3aW50ZXIgYml0XG4gIHdyaXRlci53cml0ZVVJbnQzMih0eC52ZXJzaW9uR3JvdXBJZCk7XG4gIHdyaXRlci53cml0ZVVJbnQzMih0eC5jb25zZW5zdXNCcmFuY2hJZCk7XG4gIHdyaXRlci53cml0ZVVJbnQzMih0eC5sb2NrdGltZSk7XG4gIHdyaXRlci53cml0ZVVJbnQzMih0eC5leHBpcnlIZWlnaHQpO1xuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2god3JpdGVyLmVuZCgpLCAnWlR4SWRIZWFkZXJzSGFzaCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJldm91dHNEaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGluczogVHhJbnB1dFtdLFxuICB0YWcgPSAnWlR4SWRQcmV2b3V0SGFzaCcsXG4gIHNpZ1BhcmFtcz86IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPlxuKTogQnVmZmVyIHtcbiAgaWYgKHNpZ1BhcmFtcykge1xuICAgIGlmIChzaWdQYXJhbXMuaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSkge1xuICAgICAgcmV0dXJuIGdldFByZXZvdXRzRGlnZXN0KFtdKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSgzNiAqIGlucy5sZW5ndGgpKTtcbiAgaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZSh0eEluLmhhc2gpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0eEluLmluZGV4KTtcbiAgfSk7XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuZW5kKCksIHRhZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXF1ZW5jZURpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgaW5zOiBUeElucHV0W10sXG4gIHRhZyA9ICdaVHhJZFNlcXVlbmNIYXNoJyxcbiAgc2lnUGFyYW1zPzogU2lnbmF0dXJlUGFyYW1zPFROdW1iZXI+XG4pOiBCdWZmZXIge1xuICAvLyB0eGlkOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtMmItc2VxdWVuY2UtZGlnZXN0XG4gIC8vIHNpZzogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNzLTJiLXNlcXVlbmNlLXNpZy1kaWdlc3RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoLWhhY2t3b3Jrcy96Y2FzaC10ZXN0LXZlY3RvcnMvYmxvYi9kZDhmZGIvemlwXzAyNDQucHkjTDI2M1xuICBpZiAoc2lnUGFyYW1zKSB7XG4gICAgY29uc3QgeyBoYXNoVHlwZSB9ID0gc2lnUGFyYW1zO1xuICAgIGlmIChcbiAgICAgIGhhc2hUeXBlICYgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTllPTkVDQU5QQVkgfHxcbiAgICAgIChoYXNoVHlwZSAmIDB4MWYpID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSB8fFxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORVxuICAgICkge1xuICAgICAgcmV0dXJuIGdldFNlcXVlbmNlRGlnZXN0KFtdKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSg0ICogaW5zLmxlbmd0aCkpO1xuXG4gIGlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uc2VxdWVuY2UpO1xuICB9KTtcblxuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmVuZCgpLCB0YWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0cHV0c0RpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgb3V0czogVHhPdXRwdXQ8VE51bWJlcj5bXSxcbiAgdGFnID0gJ1pUeElkT3V0cHV0c0hhc2gnLFxuICBzaWdQYXJhbXM/OiBTaWduYXR1cmVQYXJhbXM8VE51bWJlcj5cbik6IEJ1ZmZlciB7XG4gIC8vIHR4aWQ6IGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjdC0yYy1vdXRwdXRzLWRpZ2VzdFxuICAvLyBzaWc6IGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjcy0yYy1vdXRwdXRzLXNpZy1kaWdlc3RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoLWhhY2t3b3Jrcy96Y2FzaC10ZXN0LXZlY3RvcnMvYmxvYi9kZDhmZGIvemlwXzAyNDQucHkjTDI3NVxuICBpZiAoc2lnUGFyYW1zKSB7XG4gICAgbGV0IHsgaGFzaFR5cGUgfSA9IHNpZ1BhcmFtcztcbiAgICBoYXNoVHlwZSA9IGhhc2hUeXBlICYgMHgxZjtcblxuICAgIGlmIChoYXNoVHlwZSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUpIHtcbiAgICAgIGlmIChzaWdQYXJhbXMuaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgfVxuICAgICAgaWYgKG91dHNbc2lnUGFyYW1zLmluSW5kZXhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldE91dHB1dHNEaWdlc3Qob3V0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0c0RpZ2VzdChbb3V0c1tzaWdQYXJhbXMuaW5JbmRleF1dKTtcbiAgICB9XG5cbiAgICBpZiAoaGFzaFR5cGUgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORSkge1xuICAgICAgcmV0dXJuIGdldE91dHB1dHNEaWdlc3QoW10pO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRPdXRwdXRzRGlnZXN0KG91dHMsIHRhZyk7XG4gIH1cblxuICAvLyBGaW5kIG91dCB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0cyBhbmQgd3JpdGUgdGhlbVxuICBjb25zdCB0eE91dHNTaXplID0gb3V0cy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgb3V0cHV0KSB7XG4gICAgcmV0dXJuIHN1bSArIDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCk7XG4gIH0sIDApO1xuXG4gIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKHR4T3V0c1NpemUpKTtcblxuICBvdXRzLmZvckVhY2goZnVuY3Rpb24gKG91dCkge1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQ2NChvdXQudmFsdWUpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKG91dC5zY3JpcHQpO1xuICB9KTtcblxuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmVuZCgpLCB0YWcpO1xufVxuXG5mdW5jdGlvbiBnZXRUeGluRGlnZXN0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KGlucHV0OiBUeElucHV0LCBzaWdQYXJhbXM6IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPikge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3MtMmQtdHhpbi1zaWctZGlnZXN0XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC1oYWNrd29ya3MvemNhc2gtdGVzdC12ZWN0b3JzL2Jsb2IvZGQ4ZmRiL3ppcF8wMjQ0LnB5I0wyOTFcbiAgY29uc3Qgd3JpdGVyID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eShcbiAgICAzMiAvKiBwcmV2b3V0IGhhc2ggKi8gK1xuICAgICAgNCAvKiBwcmV2b3V0IHZpbiAqLyArXG4gICAgICB2YXJTbGljZVNpemUoc2lnUGFyYW1zLnByZXZPdXRTY3JpcHQpICtcbiAgICAgIDggLyogdmFsdWUgKi8gK1xuICAgICAgNCAvKiBzZXF1ZW5jZSAqL1xuICApO1xuICB3cml0ZXIud3JpdGVTbGljZShpbnB1dC5oYXNoKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKGlucHV0LmluZGV4KTtcbiAgd3JpdGVyLndyaXRlVmFyU2xpY2Uoc2lnUGFyYW1zLnByZXZPdXRTY3JpcHQpO1xuICB3cml0ZXIud3JpdGVVSW50NjQoc2lnUGFyYW1zLnZhbHVlKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKGlucHV0LnNlcXVlbmNlKTtcbiAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKHdyaXRlci5lbmQoKSwgJ1pjYXNoX19fVHhJbkhhc2gnKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNwYXJlbnREaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiB7IGluczogVHhJbnB1dFtdOyBvdXRzOiBUeE91dHB1dDxUTnVtYmVyPltdIH0sXG4gIHNpZ1BhcmFtcz86IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPlxuKTogQnVmZmVyIHtcbiAgLy8gdHhpZDogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCN0LTItdHJhbnNwYXJlbnQtZGlnZXN0XG4gIC8vIHNpZzogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNzLTJhLXByZXZvdXRzLXNpZy1kaWdlc3RcbiAgaWYgKHNpZ1BhcmFtcykge1xuICAgIGlmIChzaWdQYXJhbXMuaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZ2V0VHJhbnNwYXJlbnREaWdlc3QodHgpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBidWZmZXI7XG4gIGlmICh0eC5pbnMubGVuZ3RoIHx8IHR4Lm91dHMubGVuZ3RoKSB7XG4gICAgY29uc3Qgd3JpdGVyID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eSgzMiAqIChzaWdQYXJhbXMgPyA0IDogMykpO1xuICAgIHdyaXRlci53cml0ZVNsaWNlKGdldFByZXZvdXRzRGlnZXN0KHR4LmlucywgdW5kZWZpbmVkLCBzaWdQYXJhbXMpKTtcbiAgICB3cml0ZXIud3JpdGVTbGljZShnZXRTZXF1ZW5jZURpZ2VzdCh0eC5pbnMsIHVuZGVmaW5lZCwgc2lnUGFyYW1zKSk7XG4gICAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0T3V0cHV0c0RpZ2VzdCh0eC5vdXRzLCB1bmRlZmluZWQsIHNpZ1BhcmFtcykpO1xuICAgIGlmIChzaWdQYXJhbXMpIHtcbiAgICAgIGlmIChzaWdQYXJhbXMuaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgfVxuICAgICAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0VHhpbkRpZ2VzdCh0eC5pbnNbc2lnUGFyYW1zLmluSW5kZXhdLCBzaWdQYXJhbXMpKTtcbiAgICB9XG4gICAgYnVmZmVyID0gd3JpdGVyLmVuZCgpO1xuICB9IGVsc2Uge1xuICAgIGJ1ZmZlciA9IEJ1ZmZlci5vZigpO1xuICB9XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXIsICdaVHhJZFRyYW5zcGFIYXNoJyk7XG59XG5cbmZ1bmN0aW9uIGdldFNhcGxpbmdEaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4odHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtMy1zYXBsaW5nLWRpZ2VzdFxuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goQnVmZmVyLm9mKCksICdaVHhJZFNhcGxpbmdIYXNoJyk7XG59XG5cbmZ1bmN0aW9uIGdldE9yY2hhcmREaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4odHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtNC1vcmNoYXJkLWRpZ2VzdFxuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goQnVmZmVyLm9mKCksICdaVHhJZE9yY2hhcmRIYXNoJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHR4XG4gKiBAcGFyYW0gc2lnbmF0dXJlUGFyYW1zIC0gY2FsY3VsYXRlcyB0eGlkIHdoZW4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIGdldERpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIHNpZ25hdHVyZVBhcmFtcz86IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPlxuKTogQnVmZmVyIHtcbiAgLy8gdHhpZDogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNpZDRcbiAgLy8gc2lnOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I2lkMTNcbiAgY29uc3Qgd3JpdGVyID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eSgzMiAqIDQpO1xuICB3cml0ZXIud3JpdGVTbGljZShnZXRIZWFkZXJEaWdlc3QodHgpKTtcbiAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0VHJhbnNwYXJlbnREaWdlc3QodHgsIHNpZ25hdHVyZVBhcmFtcykpO1xuICB3cml0ZXIud3JpdGVTbGljZShnZXRTYXBsaW5nRGlnZXN0KHR4KSk7XG4gIHdyaXRlci53cml0ZVNsaWNlKGdldE9yY2hhcmREaWdlc3QodHgpKTtcblxuICBjb25zdCB0YWcgPSAnWmNhc2hUeEhhc2hfJztcbiAgY29uc3QgcGVyc29uYWxpemF0aW9uID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eSh0YWcubGVuZ3RoICsgNCAvKiBVSW50MzIgKi8pO1xuICBwZXJzb25hbGl6YXRpb24ud3JpdGVTbGljZShCdWZmZXIuZnJvbSh0YWcpKTtcbiAgcGVyc29uYWxpemF0aW9uLndyaXRlVUludDMyKHR4LmNvbnNlbnN1c0JyYW5jaElkKTtcbiAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKHdyaXRlci5lbmQoKSwgcGVyc29uYWxpemF0aW9uLmVuZCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR4aWREaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4odHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I2lkNFxuICByZXR1cm4gZ2V0RGlnZXN0KHR4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZ25hdHVyZURpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIGluSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgcHJldk91dFNjcmlwdDogQnVmZmVyLFxuICB2YWx1ZTogVE51bWJlcixcbiAgaGFzaFR5cGU6IG51bWJlclxuKTogQnVmZmVyIHtcbiAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNpZDEzXG4gIHJldHVybiBnZXREaWdlc3QodHgsIHtcbiAgICBpbkluZGV4LFxuICAgIHByZXZPdXRTY3JpcHQsXG4gICAgdmFsdWUsXG4gICAgaGFzaFR5cGUsXG4gIH0pO1xufVxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaFppcDAyNDQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvaGFzaFppcDAyNDQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5QkEsd0NBSUM7QUFjRCw4Q0FpQkM7QUFFRCw4Q0EwQkM7QUFFRCw0Q0EwQ0M7QUFvRkQsc0NBR0M7QUFFRCxnREFjQztBQTNPRDs7O0dBR0c7QUFDSCxpREFBK0Q7QUFDL0QsK0RBQTZEO0FBRTdELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRy9DLHdEQUFrRDtBQVNsRDs7Ozs7R0FLRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUFjLEVBQUUsZUFBZ0M7SUFDN0UsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQWtDLEVBQTZCO0lBQ3JGLGlEQUFpRDtJQUNqRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLE1BQU0sR0FBRywwQkFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7SUFDbkUsTUFBTSxDQUFDLFdB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QUU7UUFDbkIsT0FBTztRQUNQLGFBQWE7UUFDYixLQUFLO1FBQ0wsUUFBUTtLQUNULENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEltcGxlbWVudHMgaGFzaGluZyBtZXRob2RzIGRlc2NyaWJlZCBpbiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0LlxuICogT25seSBzdXBwb3J0cyBmdWxsIHRyYW5zcGFyZW50IHRyYW5zYWN0aW9ucyB3aXRob3V0IHNoaWVsZGVkIGlucHV0cyBvciBvdXRwdXRzLlxuICovXG5pbXBvcnQgeyBUcmFuc2FjdGlvbiwgVHhJbnB1dCwgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IEJ1ZmZlcldyaXRlciB9IGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL2J1ZmZlcnV0aWxzJztcblxuY29uc3QgYmxha2UyYiA9IHJlcXVpcmUoJ0BiaXRnby1iZXRhL2JsYWtlMmInKTtcblxuaW1wb3J0IHsgWmNhc2hUcmFuc2FjdGlvbiB9IGZyb20gJy4vWmNhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyB2YXJTbGljZVNpemUgfSBmcm9tICcuLi9VdHhvVHJhbnNhY3Rpb24nO1xuXG50eXBlIFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiA9IHtcbiAgaW5JbmRleD86IG51bWJlcjtcbiAgcHJldk91dFNjcmlwdDogQnVmZmVyO1xuICB2YWx1ZTogVE51bWJlcjtcbiAgaGFzaFR5cGU6IG51bWJlcjtcbn07XG5cbi8qKlxuICogQmxha2UyYiBoYXNoaW5nIGFsZ29yaXRobSBmb3IgWmNhc2hcbiAqIEBwYXJhbSBidWZmZXJcbiAqIEBwYXJhbSBwZXJzb25hbGl6YXRpb25cbiAqIEByZXR1cm5zIDI1Ni1iaXQgQkxBS0UyYiBoYXNoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCbGFrZTJiSGFzaChidWZmZXI6IEJ1ZmZlciwgcGVyc29uYWxpemF0aW9uOiBzdHJpbmcgfCBCdWZmZXIpOiBCdWZmZXIge1xuICBjb25zdCBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMzIpO1xuICBwZXJzb25hbGl6YXRpb24gPSBCdWZmZXIuZnJvbShwZXJzb25hbGl6YXRpb24pO1xuICByZXR1cm4gYmxha2UyYihvdXQubGVuZ3RoLCBudWxsLCBudWxsLCBwZXJzb25hbGl6YXRpb24pLnVwZGF0ZShidWZmZXIpLmRpZ2VzdChvdXQpO1xufVxuXG5mdW5jdGlvbiBnZXRIZWFkZXJEaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4odHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtMS1oZWFkZXItZGlnZXN0XG4gIGNvbnN0IG1hc2sgPSB0eC5vdmVyd2ludGVyZWQgPyAxIDogMDtcbiAgY29uc3Qgd3JpdGVyID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eSg0ICogNSk7XG4gIHdyaXRlci53cml0ZUludDMyKHR4LnZlcnNpb24gfCAobWFzayA8PCAzMSkpOyAvLyBTZXQgb3ZlcndpbnRlciBiaXRcbiAgd3JpdGVyLndyaXRlVUludDMyKHR4LnZlcnNpb25Hcm91cElkKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKHR4LmNvbnNlbnN1c0JyYW5jaElkKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKHR4LmxvY2t0aW1lKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKHR4LmV4cGlyeUhlaWdodCk7XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaCh3cml0ZXIuZW5kKCksICdaVHhJZEhlYWRlcnNIYXNoJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmV2b3V0c0RpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgaW5zOiBUeElucHV0W10sXG4gIHRhZyA9ICdaVHhJZFByZXZvdXRIYXNoJyxcbiAgc2lnUGFyYW1zPzogU2lnbmF0dXJlUGFyYW1zPFROdW1iZXI+XG4pOiBCdWZmZXIge1xuICBpZiAoc2lnUGFyYW1zKSB7XG4gICAgaWYgKHNpZ1BhcmFtcy5oYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSB7XG4gICAgICByZXR1cm4gZ2V0UHJldm91dHNEaWdlc3QoW10pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDM2ICogaW5zLmxlbmd0aCkpO1xuICBpbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKHR4SW4uaGFzaCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uaW5kZXgpO1xuICB9KTtcbiAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5lbmQoKSwgdGFnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcXVlbmNlRGlnZXN0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBpbnM6IFR4SW5wdXRbXSxcbiAgdGFnID0gJ1pUeElkU2VxdWVuY0hhc2gnLFxuICBzaWdQYXJhbXM/OiBTaWduYXR1cmVQYXJhbXM8VE51bWJlcj5cbik6IEJ1ZmZlciB7XG4gIC8vIHR4aWQ6IGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjdC0yYi1zZXF1ZW5jZS1kaWdlc3RcbiAgLy8gc2lnOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3MtMmItc2VxdWVuY2Utc2lnLWRpZ2VzdFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gtaGFja3dvcmtzL3pjYXNoLXRlc3QtdmVjdG9ycy9ibG9iL2RkOGZkYi96aXBfMDI0NC5weSNMMjYzXG4gIGlmIChzaWdQYXJhbXMpIHtcbiAgICBjb25zdCB7IGhhc2hUeXBlIH0gPSBzaWdQYXJhbXM7XG4gICAgaWYgKFxuICAgICAgaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSB8fFxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFIHx8XG4gICAgICAoaGFzaFR5cGUgJiAweDFmKSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2V0U2VxdWVuY2VEaWdlc3QoW10pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDQgKiBpbnMubGVuZ3RoKSk7XG5cbiAgaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5zZXF1ZW5jZSk7XG4gIH0pO1xuXG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuZW5kKCksIHRhZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRwdXRzRGlnZXN0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBvdXRzOiBUeE91dHB1dDxUTnVtYmVyPltdLFxuICB0YWcgPSAnWlR4SWRPdXRwdXRzSGFzaCcsXG4gIHNpZ1BhcmFtcz86IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPlxuKTogQnVmZmVyIHtcbiAgLy8gdHhpZDogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCN0LTJjLW91dHB1dHMtZGlnZXN0XG4gIC8vIHNpZzogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNzLTJjLW91dHB1dHMtc2lnLWRpZ2VzdFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gtaGFja3dvcmtzL3pjYXNoLXRlc3QtdmVjdG9ycy9ibG9iL2RkOGZkYi96aXBfMDI0NC5weSNMMjc1XG4gIGlmIChzaWdQYXJhbXMpIHtcbiAgICBsZXQgeyBoYXNoVHlwZSB9ID0gc2lnUGFyYW1zO1xuICAgIGhhc2hUeXBlID0gaGFzaFR5cGUgJiAweDFmO1xuXG4gICAgaWYgKGhhc2hUeXBlID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSkge1xuICAgICAgaWYgKHNpZ1BhcmFtcy5pbkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICB9XG4gICAgICBpZiAob3V0c1tzaWdQYXJhbXMuaW5JbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZ2V0T3V0cHV0c0RpZ2VzdChvdXRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRPdXRwdXRzRGlnZXN0KFtvdXRzW3NpZ1BhcmFtcy5pbkluZGV4XV0pO1xuICAgIH1cblxuICAgIGlmIChoYXNoVHlwZSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FKSB7XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0c0RpZ2VzdChbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE91dHB1dHNEaWdlc3Qob3V0cywgdGFnKTtcbiAgfVxuXG4gIC8vIEZpbmQgb3V0IHRoZSBzaXplIG9mIHRoZSBvdXRwdXRzIGFuZCB3cml0ZSB0aGVtXG4gIGNvbnN0IHR4T3V0c1NpemUgPSBvdXRzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBvdXRwdXQpIHtcbiAgICByZXR1cm4gc3VtICsgOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KTtcbiAgfSwgMCk7XG5cbiAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUodHhPdXRzU2l6ZSkpO1xuXG4gIG91dHMuZm9yRWFjaChmdW5jdGlvbiAob3V0KSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KG91dC52YWx1ZSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2Uob3V0LnNjcmlwdCk7XG4gIH0pO1xuXG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuZW5kKCksIHRhZyk7XG59XG5cbmZ1bmN0aW9uIGdldFR4aW5EaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oaW5wdXQ6IFR4SW5wdXQsIHNpZ1BhcmFtczogU2lnbmF0dXJlUGFyYW1zPFROdW1iZXI+KSB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjcy0yZC10eGluLXNpZy1kaWdlc3RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoLWhhY2t3b3Jrcy96Y2FzaC10ZXN0LXZlY3RvcnMvYmxvYi9kZDhmZGIvemlwXzAyNDQucHkjTDI5MVxuICBjb25zdCB3cml0ZXIgPSBCdWZmZXJXcml0ZXIud2l0aENhcGFjaXR5KFxuICAgIDMyIC8qIHByZXZvdXQgaGFzaCAqLyArXG4gICAgICA0IC8qIHByZXZvdXQgdmluICovICtcbiAgICAgIHZhclNsaWNlU2l6ZShzaWdQYXJhbXMucHJldk91dFNjcmlwdCkgK1xuICAgICAgOCAvKiB2YWx1ZSAqLyArXG4gICAgICA0IC8qIHNlcXVlbmNlICovXG4gICk7XG4gIHdyaXRlci53cml0ZVNsaWNlKGlucHV0Lmhhc2gpO1xuICB3cml0ZXIud3JpdGVVSW50MzIoaW5wdXQuaW5kZXgpO1xuICB3cml0ZXIud3JpdGVWYXJTbGljZShzaWdQYXJhbXMucHJldk91dFNjcmlwdCk7XG4gIHdyaXRlci53cml0ZVVJbnQ2NChzaWdQYXJhbXMudmFsdWUpO1xuICB3cml0ZXIud3JpdGVVSW50MzIoaW5wdXQuc2VxdWVuY2UpO1xuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2god3JpdGVyLmVuZCgpLCAnWmNhc2hfX19UeEluSGFzaCcpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc3BhcmVudERpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IHsgaW5zOiBUeElucHV0W107IG91dHM6IFR4T3V0cHV0PFROdW1iZXI+W10gfSxcbiAgc2lnUGFyYW1zPzogU2lnbmF0dXJlUGFyYW1zPFROdW1iZXI+XG4pOiBCdWZmZXIge1xuICAvLyB0eGlkOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtMi10cmFuc3BhcmVudC1kaWdlc3RcbiAgLy8gc2lnOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3MtMmEtcHJldm91dHMtc2lnLWRpZ2VzdFxuICBpZiAoc2lnUGFyYW1zKSB7XG4gICAgaWYgKHNpZ1BhcmFtcy5pbkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBnZXRUcmFuc3BhcmVudERpZ2VzdCh0eCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGJ1ZmZlcjtcbiAgaWYgKHR4Lmlucy5sZW5ndGggfHwgdHgub3V0cy5sZW5ndGgpIHtcbiAgICBjb25zdCB3cml0ZXIgPSBCdWZmZXJXcml0ZXIud2l0aENhcGFjaXR5KDMyICogKHNpZ1BhcmFtcyA/IDQgOiAzKSk7XG4gICAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0UHJldm91dHNEaWdlc3QodHguaW5zLCB1bmRlZmluZWQsIHNpZ1BhcmFtcykpO1xuICAgIHdyaXRlci53cml0ZVNsaWNlKGdldFNlcXVlbmNlRGlnZXN0KHR4LmlucywgdW5kZWZpbmVkLCBzaWdQYXJhbXMpKTtcbiAgICB3cml0ZXIud3JpdGVTbGljZShnZXRPdXRwdXRzRGlnZXN0KHR4Lm91dHMsIHVuZGVmaW5lZCwgc2lnUGFyYW1zKSk7XG4gICAgaWYgKHNpZ1BhcmFtcykge1xuICAgICAgaWYgKHNpZ1BhcmFtcy5pbkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICB9XG4gICAgICB3cml0ZXIud3JpdGVTbGljZShnZXRUeGluRGlnZXN0KHR4Lmluc1tzaWdQYXJhbXMuaW5JbmRleF0sIHNpZ1BhcmFtcykpO1xuICAgIH1cbiAgICBidWZmZXIgPSB3cml0ZXIuZW5kKCk7XG4gIH0gZWxzZSB7XG4gICAgYnVmZmVyID0gQnVmZmVyLm9mKCk7XG4gIH1cbiAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlciwgJ1pUeElkVHJhbnNwYUhhc2gnKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2FwbGluZ0RpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50Pih0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPik6IEJ1ZmZlciB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjdC0zLXNhcGxpbmctZGlnZXN0XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChCdWZmZXIub2YoKSwgJ1pUeElkU2FwbGluZ0hhc2gnKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3JjaGFyZERpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50Pih0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPik6IEJ1ZmZlciB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjdC00LW9yY2hhcmQtZGlnZXN0XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChCdWZmZXIub2YoKSwgJ1pUeElkT3JjaGFyZEhhc2gnKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHhcbiAqIEBwYXJhbSBzaWduYXR1cmVQYXJhbXMgLSBjYWxjdWxhdGVzIHR4aWQgd2hlbiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZ2V0RGlnZXN0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgc2lnbmF0dXJlUGFyYW1zPzogU2lnbmF0dXJlUGFyYW1zPFROdW1iZXI+XG4pOiBCdWZmZXIge1xuICAvLyB0eGlkOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I2lkNFxuICAvLyBzaWc6IGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjaWQxM1xuICBjb25zdCB3cml0ZXIgPSBCdWZmZXJXcml0ZXIud2l0aENhcGFjaXR5KDMyICogNCk7XG4gIHdyaXRlci53cml0ZVNsaWNlKGdldEhlYWRlckRpZ2VzdCh0eCkpO1xuICB3cml0ZXIud3JpdGVTbGljZShnZXRUcmFuc3BhcmVudERpZ2VzdCh0eCwgc2lnbmF0dXJlUGFyYW1zKSk7XG4gIHdyaXRlci53cml0ZVNsaWNlKGdldFNhcGxpbmdEaWdlc3QodHgpKTtcbiAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0T3JjaGFyZERpZ2VzdCh0eCkpO1xuXG4gIGNvbnN0IHRhZyA9ICdaY2FzaFR4SGFzaF8nO1xuICBjb25zdCBwZXJzb25hbGl6YXRpb24gPSBCdWZmZXJXcml0ZXIud2l0aENhcGFjaXR5KHRhZy5sZW5ndGggKyA0IC8qIFVJbnQzMiAqLyk7XG4gIHBlcnNvbmFsaXphdGlvbi53cml0ZVNsaWNlKEJ1ZmZlci5mcm9tKHRhZykpO1xuICBwZXJzb25hbGl6YXRpb24ud3JpdGVVSW50MzIodHguY29uc2Vuc3VzQnJhbmNoSWQpO1xuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2god3JpdGVyLmVuZCgpLCBwZXJzb25hbGl6YXRpb24uZW5kKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHhpZERpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50Pih0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPik6IEJ1ZmZlciB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjaWQ0XG4gIHJldHVybiBnZXREaWdlc3QodHgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlRGlnZXN0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgaW5JbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBwcmV2T3V0U2NyaXB0OiBCdWZmZXIsXG4gIHZhbHVlOiBUTnVtYmVyLFxuICBoYXNoVHlwZTogbnVtYmVyXG4pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I2lkMTNcbiAgcmV0dXJuIGdldERpZ2VzdCh0eCwge1xuICAgIGluSW5kZXgsXG4gICAgcHJldk91dFNjcmlwdCxcbiAgICB2YWx1ZSxcbiAgICBoYXNoVHlwZSxcbiAgfSk7XG59XG4iXX0=
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  declare const types: {
4
2
  P2MS: string;
5
3
  NONSTANDARD: string;
@@ -1 +1 @@
1
- {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/classify.ts"],"names":[],"mappings":";;AAYA,QAAA,MAAM,KAAK;;;;;;;;;;;;CAYV,CAAC;AAEF,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkB9C;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAYxE;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAU5E;AAED,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,cAAc,IAAI,MAAM,EAAE,eAAe,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/classify.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,KAAK;UACW,MAAM;iBACI,MAAM;cACZ,MAAM;UACZ,MAAM;WACD,MAAM;UACP,MAAM;YACG,MAAM;WACP,MAAM;UACjB,MAAM;aACC,MAAM;wBACW,MAAM;CAClD,CAAC;AAEF,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkB9C;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAYxE;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAU5E;AAED,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,cAAc,IAAI,MAAM,EAAE,eAAe,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.types = exports.witness = exports.output = exports.input = void 0;
3
+ exports.types = void 0;
4
+ exports.input = classifyInput;
5
+ exports.output = classifyOutput;
6
+ exports.witness = classifyWitness;
4
7
  const _1 = require("./");
5
8
  const multisig = require("./templates/multisig");
6
9
  const nullData = require("./templates/nulldata");
@@ -53,7 +56,6 @@ function classifyOutput(script) {
53
56
  return types.NULLDATA;
54
57
  return types.NONSTANDARD;
55
58
  }
56
- exports.output = classifyOutput;
57
59
  function classifyInput(script, allowIncomplete) {
58
60
  // XXX: optimization, below functions bscript.decompile before use
59
61
  const chunks = _1.script.decompile(script);
@@ -71,7 +73,6 @@ function classifyInput(script, allowIncomplete) {
71
73
  return types.P2PK;
72
74
  return types.NONSTANDARD;
73
75
  }
74
- exports.input = classifyInput;
75
76
  function classifyWitness(script, allowIncomplete) {
76
77
  // XXX: optimization, below functions bscript.decompile before use
77
78
  const chunks = _1.script.decompile(script);
@@ -85,5 +86,4 @@ function classifyWitness(script, allowIncomplete) {
85
86
  return types.P2TR;
86
87
  return types.NONSTANDARD;
87
88
  }
88
- exports.witness = classifyWitness;
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NpZnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xhc3NpZnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXVDO0FBQ3ZDLGlEQUFpRDtBQUNqRCxpREFBaUQ7QUFDakQsNkNBQTZDO0FBQzdDLHFEQUFxRDtBQUNyRCxxREFBcUQ7QUFDckQsK0NBQStDO0FBQy9DLHVEQUF1RDtBQUN2RCxtRUFBbUU7QUFDbkUsbUVBQW1FO0FBQ25FLG1FQUFtRTtBQUVuRSxNQUFNLEtBQUssR0FBRztJQUNaLElBQUksRUFBRSxVQUFvQjtJQUMxQixXQUFXLEVBQUUsYUFBdUI7SUFDcEMsUUFBUSxFQUFFLFVBQW9CO0lBQzlCLElBQUksRUFBRSxRQUFrQjtJQUN4QixLQUFLLEVBQUUsWUFBc0I7SUFDN0IsSUFBSSxFQUFFLFlBQXNCO0lBQzVCLE1BQU0sRUFBRSxtQkFBNkI7SUFDckMsS0FBSyxFQUFFLG1CQUE2QjtJQUNwQyxJQUFJLEVBQUUsU0FBbUI7SUFDekIsT0FBTyxFQUFFLGFBQXVCO0lBQ2hDLGtCQUFrQixFQUFFLG1CQUE2QjtDQUNsRCxDQUFDO0FBZ0RxRixzQkFBSztBQTlDNUYsU0FBUyxjQUFjLENBQUMsTUFBYztJQUNwQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ2hFLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDL0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDcEQsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7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QixDQUFDO0FBRTZFLGtDQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2NyaXB0IGFzIGJzY3JpcHQgfSBmcm9tICcuLyc7XG5pbXBvcnQgKiBhcyBtdWx0aXNpZyBmcm9tICcuL3RlbXBsYXRlcy9tdWx0aXNpZyc7XG5pbXBvcnQgKiBhcyBudWxsRGF0YSBmcm9tICcuL3RlbXBsYXRlcy9udWxsZGF0YSc7XG5pbXBvcnQgKiBhcyBwdWJLZXkgZnJvbSAnLi90ZW1wbGF0ZXMvcHVia2V5JztcbmltcG9ydCAqIGFzIHB1YktleUhhc2ggZnJvbSAnLi90ZW1wbGF0ZXMvcHVia2V5aGFzaCc7XG5pbXBvcnQgKiBhcyBzY3JpcHRIYXNoIGZyb20gJy4vdGVtcGxhdGVzL3NjcmlwdGhhc2gnO1xuaW1wb3J0ICogYXMgdGFwcm9vdCBmcm9tICcuL3RlbXBsYXRlcy90YXByb290JztcbmltcG9ydCAqIGFzIHRhcHJvb3Rub2ZuIGZyb20gJy4vdGVtcGxhdGVzL3RhcHJvb3Rub2ZuJztcbmltcG9ydCAqIGFzIHdpdG5lc3NDb21taXRtZW50IGZyb20gJy4vdGVtcGxhdGVzL3dpdG5lc3Njb21taXRtZW50JztcbmltcG9ydCAqIGFzIHdpdG5lc3NQdWJLZXlIYXNoIGZyb20gJy4vdGVtcGxhdGVzL3dpdG5lc3NwdWJrZXloYXNoJztcbmltcG9ydCAqIGFzIHdpdG5lc3NTY3JpcHRIYXNoIGZyb20gJy4vdGVtcGxhdGVzL3dpdG5lc3NzY3JpcHRoYXNoJztcblxuY29uc3QgdHlwZXMgPSB7XG4gIFAyTVM6ICdtdWx0aXNpZycgYXMgc3RyaW5nLFxuICBOT05TVEFOREFSRDogJ25vbnN0YW5kYXJkJyBhcyBzdHJpbmcsXG4gIE5VTExEQVRBOiAnbnVsbGRhdGEnIGFzIHN0cmluZyxcbiAgUDJQSzogJ3B1YmtleScgYXMgc3RyaW5nLFxuICBQMlBLSDogJ3B1YmtleWhhc2gnIGFzIHN0cmluZyxcbiAgUDJTSDogJ3NjcmlwdGhhc2gnIGFzIHN0cmluZyxcbiAgUDJXUEtIOiAnd2l0bmVzc3B1YmtleWhhc2gnIGFzIHN0cmluZyxcbiAgUDJXU0g6ICd3aXRuZXNzc2NyaXB0aGFzaCcgYXMgc3RyaW5nLFxuICBQMlRSOiAndGFwcm9vdCcgYXMgc3RyaW5nLFxuICBQMlRSX05TOiAndGFwcm9vdG5vZm4nIGFzIHN0cmluZyxcbiAgV0lUTkVTU19DT01NSVRNRU5UOiAnd2l0bmVzc2NvbW1pdG1lbnQnIGFzIHN0cmluZyxcbn07XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5T3V0cHV0KHNjcmlwdDogQnVmZmVyKTogc3RyaW5nIHtcbiAgaWYgKHdpdG5lc3NQdWJLZXlIYXNoLm91dHB1dC5jaGVjayhzY3JpcHQpKSByZXR1cm4gdHlwZXMuUDJXUEtIO1xuICBpZiAod2l0bmVzc1NjcmlwdEhhc2gub3V0cHV0LmNoZWNrKHNjcmlwdCkpIHJldHVybiB0eXBlcy5QMldTSDtcbiAgaWYgKHRhcHJvb3Qub3V0cHV0LmNoZWNrKHNjcmlwdCkpIHJldHVybiB0eXBlcy5QMlRSO1xuICBpZiAocHViS2V5SGFzaC5vdXRwdXQuY2hlY2soc2NyaXB0KSkgcmV0dXJuIHR5cGVzLlAyUEtIO1xuICBpZiAoc2NyaXB0SGFzaC5vdXRwdXQuY2hlY2soc2NyaXB0KSkgcmV0dXJuIHR5cGVzLlAyU0g7XG5cbiAgLy8gWFhYOiBvcHRpbWl6YXRpb24sIGJlbG93IGZ1bmN0aW9ucyBic2NyaXB0LmRlY29tcGlsZSBiZWZvcmUgdXNlXG4gIGNvbnN0IGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHNjcmlwdCk7XG4gIGlmICghY2h1bmtzKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHNjcmlwdCcpO1xuXG4gIGlmICh0YXByb290bm9mbi5vdXRwdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLlAyVFJfTlM7XG4gIGlmIChtdWx0aXNpZy5vdXRwdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLlAyTVM7XG4gIGlmIChwdWJLZXkub3V0cHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5QMlBLO1xuICBpZiAod2l0bmVzc0NvbW1pdG1lbnQub3V0cHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5XSVRORVNTX0NPTU1JVE1FTlQ7XG4gIGlmIChudWxsRGF0YS5vdXRwdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLk5VTExEQVRBO1xuXG4gIHJldHVybiB0eXBlcy5OT05TVEFOREFSRDtcbn1cblxuZnVuY3Rpb24gY2xhc3NpZnlJbnB1dChzY3JpcHQ6IEJ1ZmZlciwgYWxsb3dJbmNvbXBsZXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIC8vIFhYWDogb3B0aW1pemF0aW9uLCBiZWxvdyBmdW5jdGlvbnMgYnNjcmlwdC5kZWNvbXBpbGUgYmVmb3JlIHVzZVxuICBjb25zdCBjaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZShzY3JpcHQpO1xuICBpZiAoIWNodW5rcykgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzY3JpcHQnKTtcblxuICBpZiAocHViS2V5SGFzaC5pbnB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJQS0g7XG4gIGlmIChzY3JpcHRIYXNoLmlucHV0LmNoZWNrKGNodW5rcywgYWxsb3dJbmNvbXBsZXRlKSkgcmV0dXJuIHR5cGVzLlAyU0g7XG4gIGlmICh0YXByb290bm9mbi5pbnB1dC5jaGVjayhjaHVua3MsIGFsbG93SW5jb21wbGV0ZSkpIHJldHVybiB0eXBlcy5QMlRSX05TO1xuICBpZiAobXVsdGlzaWcuaW5wdXQuY2hlY2soY2h1bmtzLCBhbGxvd0luY29tcGxldGUpKSByZXR1cm4gdHlwZXMuUDJNUztcbiAgaWYgKHB1YktleS5pbnB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJQSztcblxuICByZXR1cm4gdHlwZXMuTk9OU1RBTkRBUkQ7XG59XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5V2l0bmVzcyhzY3JpcHQ6IEJ1ZmZlcltdLCBhbGxvd0luY29tcGxldGU/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgLy8gWFhYOiBvcHRpbWl6YXRpb24sIGJlbG93IGZ1bmN0aW9ucyBic2NyaXB0LmRlY29tcGlsZSBiZWZvcmUgdXNlXG4gIGNvbnN0IGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHNjcmlwdCk7XG4gIGlmICghY2h1bmtzKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHNjcmlwdCcpO1xuXG4gIGlmICh3aXRuZXNzUHViS2V5SGFzaC5pbnB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJXUEtIO1xuICBpZiAod2l0bmVzc1NjcmlwdEhhc2guaW5wdXQuY2hlY2soY2h1bmtzIGFzIEJ1ZmZlcltdLCBhbGxvd0luY29tcGxldGUpKSByZXR1cm4gdHlwZXMuUDJXU0g7XG4gIGlmICh0YXByb290LmlucHV0LmNoZWNrKGNodW5rcyBhcyBCdWZmZXJbXSkpIHJldHVybiB0eXBlcy5QMlRSO1xuXG4gIHJldHVybiB0eXBlcy5OT05TVEFOREFSRDtcbn1cblxuZXhwb3J0IHsgY2xhc3NpZnlJbnB1dCBhcyBpbnB1dCwgY2xhc3NpZnlPdXRwdXQgYXMgb3V0cHV0LCBjbGFzc2lmeVdpdG5lc3MgYXMgd2l0bmVzcywgdHlwZXMgfTtcbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NpZnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xhc3NpZnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd0UwQiw4QkFBSztBQUFvQixnQ0FBTTtBQUFxQixrQ0FBTztBQXhFckYseUJBQXVDO0FBQ3ZDLGlEQUFpRDtBQUNqRCxpREFBaUQ7QUFDakQsNkNBQTZDO0FBQzdDLHFEQUFxRDtBQUNyRCxxREFBcUQ7QUFDckQsK0NBQStDO0FBQy9DLHVEQUF1RDtBQUN2RCxtRUFBbUU7QUFDbkUsbUVBQW1FO0FBQ25FLG1FQUFtRTtBQUVuRSxNQUFNLEtBQUssR0FBRztJQUNaLElBQUksRUFBRSxVQUFvQjtJQUMxQixXQUFXLEVBQUUsYUFBdUI7SUFDcEMsUUFBUSxFQUFFLFVBQW9CO0lBQzlCLElBQUksRUFBRSxRQUFrQjtJQUN4QixLQUFLLEVBQUUsWUFBc0I7SUFDN0IsSUFBSSxFQUFFLFlBQXNCO0lBQzVCLE1BQU0sRUFBRSxtQkFBNkI7SUFDckMsS0FBSyxFQUFFLG1CQUE2QjtJQUNwQyxJQUFJLEVBQUUsU0FBbUI7SUFDekIsT0FBTyxFQUFFLGFBQXVCO0lBQ2hDLGtCQUFrQixFQUFFLG1CQUE2QjtDQUNsRCxDQUFDO0FBZ0RxRixzQkFBSztBQTlDNUYsU0FBUyxjQUFjLENBQUMsTUFBYztJQUNwQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ2hFLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDL0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDcEQsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxN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VyxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzY3JpcHQgYXMgYnNjcmlwdCB9IGZyb20gJy4vJztcbmltcG9ydCAqIGFzIG11bHRpc2lnIGZyb20gJy4vdGVtcGxhdGVzL211bHRpc2lnJztcbmltcG9ydCAqIGFzIG51bGxEYXRhIGZyb20gJy4vdGVtcGxhdGVzL251bGxkYXRhJztcbmltcG9ydCAqIGFzIHB1YktleSBmcm9tICcuL3RlbXBsYXRlcy9wdWJrZXknO1xuaW1wb3J0ICogYXMgcHViS2V5SGFzaCBmcm9tICcuL3RlbXBsYXRlcy9wdWJrZXloYXNoJztcbmltcG9ydCAqIGFzIHNjcmlwdEhhc2ggZnJvbSAnLi90ZW1wbGF0ZXMvc2NyaXB0aGFzaCc7XG5pbXBvcnQgKiBhcyB0YXByb290IGZyb20gJy4vdGVtcGxhdGVzL3RhcHJvb3QnO1xuaW1wb3J0ICogYXMgdGFwcm9vdG5vZm4gZnJvbSAnLi90ZW1wbGF0ZXMvdGFwcm9vdG5vZm4nO1xuaW1wb3J0ICogYXMgd2l0bmVzc0NvbW1pdG1lbnQgZnJvbSAnLi90ZW1wbGF0ZXMvd2l0bmVzc2NvbW1pdG1lbnQnO1xuaW1wb3J0ICogYXMgd2l0bmVzc1B1YktleUhhc2ggZnJvbSAnLi90ZW1wbGF0ZXMvd2l0bmVzc3B1YmtleWhhc2gnO1xuaW1wb3J0ICogYXMgd2l0bmVzc1NjcmlwdEhhc2ggZnJvbSAnLi90ZW1wbGF0ZXMvd2l0bmVzc3NjcmlwdGhhc2gnO1xuXG5jb25zdCB0eXBlcyA9IHtcbiAgUDJNUzogJ211bHRpc2lnJyBhcyBzdHJpbmcsXG4gIE5PTlNUQU5EQVJEOiAnbm9uc3RhbmRhcmQnIGFzIHN0cmluZyxcbiAgTlVMTERBVEE6ICdudWxsZGF0YScgYXMgc3RyaW5nLFxuICBQMlBLOiAncHVia2V5JyBhcyBzdHJpbmcsXG4gIFAyUEtIOiAncHVia2V5aGFzaCcgYXMgc3RyaW5nLFxuICBQMlNIOiAnc2NyaXB0aGFzaCcgYXMgc3RyaW5nLFxuICBQMldQS0g6ICd3aXRuZXNzcHVia2V5aGFzaCcgYXMgc3RyaW5nLFxuICBQMldTSDogJ3dpdG5lc3NzY3JpcHRoYXNoJyBhcyBzdHJpbmcsXG4gIFAyVFI6ICd0YXByb290JyBhcyBzdHJpbmcsXG4gIFAyVFJfTlM6ICd0YXByb290bm9mbicgYXMgc3RyaW5nLFxuICBXSVRORVNTX0NPTU1JVE1FTlQ6ICd3aXRuZXNzY29tbWl0bWVudCcgYXMgc3RyaW5nLFxufTtcblxuZnVuY3Rpb24gY2xhc3NpZnlPdXRwdXQoc2NyaXB0OiBCdWZmZXIpOiBzdHJpbmcge1xuICBpZiAod2l0bmVzc1B1YktleUhhc2gub3V0cHV0LmNoZWNrKHNjcmlwdCkpIHJldHVybiB0eXBlcy5QMldQS0g7XG4gIGlmICh3aXRuZXNzU2NyaXB0SGFzaC5vdXRwdXQuY2hlY2soc2NyaXB0KSkgcmV0dXJuIHR5cGVzLlAyV1NIO1xuICBpZiAodGFwcm9vdC5vdXRwdXQuY2hlY2soc2NyaXB0KSkgcmV0dXJuIHR5cGVzLlAyVFI7XG4gIGlmIChwdWJLZXlIYXNoLm91dHB1dC5jaGVjayhzY3JpcHQpKSByZXR1cm4gdHlwZXMuUDJQS0g7XG4gIGlmIChzY3JpcHRIYXNoLm91dHB1dC5jaGVjayhzY3JpcHQpKSByZXR1cm4gdHlwZXMuUDJTSDtcblxuICAvLyBYWFg6IG9wdGltaXphdGlvbiwgYmVsb3cgZnVuY3Rpb25zIGJzY3JpcHQuZGVjb21waWxlIGJlZm9yZSB1c2VcbiAgY29uc3QgY2h1bmtzID0gYnNjcmlwdC5kZWNvbXBpbGUoc2NyaXB0KTtcbiAgaWYgKCFjaHVua3MpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc2NyaXB0Jyk7XG5cbiAgaWYgKHRhcHJvb3Rub2ZuLm91dHB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJUUl9OUztcbiAgaWYgKG11bHRpc2lnLm91dHB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJNUztcbiAgaWYgKHB1YktleS5vdXRwdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLlAyUEs7XG4gIGlmICh3aXRuZXNzQ29tbWl0bWVudC5vdXRwdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLldJVE5FU1NfQ09NTUlUTUVOVDtcbiAgaWYgKG51bGxEYXRhLm91dHB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuTlVMTERBVEE7XG5cbiAgcmV0dXJuIHR5cGVzLk5PTlNUQU5EQVJEO1xufVxuXG5mdW5jdGlvbiBjbGFzc2lmeUlucHV0KHNjcmlwdDogQnVmZmVyLCBhbGxvd0luY29tcGxldGU/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgLy8gWFhYOiBvcHRpbWl6YXRpb24sIGJlbG93IGZ1bmN0aW9ucyBic2NyaXB0LmRlY29tcGlsZSBiZWZvcmUgdXNlXG4gIGNvbnN0IGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHNjcmlwdCk7XG4gIGlmICghY2h1bmtzKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHNjcmlwdCcpO1xuXG4gIGlmIChwdWJLZXlIYXNoLmlucHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5QMlBLSDtcbiAgaWYgKHNjcmlwdEhhc2guaW5wdXQuY2hlY2soY2h1bmtzLCBhbGxvd0luY29tcGxldGUpKSByZXR1cm4gdHlwZXMuUDJTSDtcbiAgaWYgKHRhcHJvb3Rub2ZuLmlucHV0LmNoZWNrKGNodW5rcywgYWxsb3dJbmNvbXBsZXRlKSkgcmV0dXJuIHR5cGVzLlAyVFJfTlM7XG4gIGlmIChtdWx0aXNpZy5pbnB1dC5jaGVjayhjaHVua3MsIGFsbG93SW5jb21wbGV0ZSkpIHJldHVybiB0eXBlcy5QMk1TO1xuICBpZiAocHViS2V5LmlucHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5QMlBLO1xuXG4gIHJldHVybiB0eXBlcy5OT05TVEFOREFSRDtcbn1cblxuZnVuY3Rpb24gY2xhc3NpZnlXaXRuZXNzKHNjcmlwdDogQnVmZmVyW10sIGFsbG93SW5jb21wbGV0ZT86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAvLyBYWFg6IG9wdGltaXphdGlvbiwgYmVsb3cgZnVuY3Rpb25zIGJzY3JpcHQuZGVjb21waWxlIGJlZm9yZSB1c2VcbiAgY29uc3QgY2h1bmtzID0gYnNjcmlwdC5kZWNvbXBpbGUoc2NyaXB0KTtcbiAgaWYgKCFjaHVua3MpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc2NyaXB0Jyk7XG5cbiAgaWYgKHdpdG5lc3NQdWJLZXlIYXNoLmlucHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5QMldQS0g7XG4gIGlmICh3aXRuZXNzU2NyaXB0SGFzaC5pbnB1dC5jaGVjayhjaHVua3MgYXMgQnVmZmVyW10sIGFsbG93SW5jb21wbGV0ZSkpIHJldHVybiB0eXBlcy5QMldTSDtcbiAgaWYgKHRhcHJvb3QuaW5wdXQuY2hlY2soY2h1bmtzIGFzIEJ1ZmZlcltdKSkgcmV0dXJuIHR5cGVzLlAyVFI7XG5cbiAgcmV0dXJuIHR5cGVzLk5PTlNUQU5EQVJEO1xufVxuXG5leHBvcnQgeyBjbGFzc2lmeUlucHV0IGFzIGlucHV0LCBjbGFzc2lmeU91dHB1dCBhcyBvdXRwdXQsIGNsYXNzaWZ5V2l0bmVzcyBhcyB3aXRuZXNzLCB0eXBlcyB9O1xuIl19