@bitgo/abstract-utxo 10.18.0 → 10.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts +2 -1
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/cjs/src/abstractUtxoCoin.js +7 -19
  4. package/dist/cjs/src/descriptor/createWallet/createDescriptorWallet.js +4 -4
  5. package/dist/cjs/src/impl/btc/inscriptionBuilder.d.ts.map +1 -1
  6. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +3 -3
  7. package/dist/cjs/src/keychains.d.ts +3 -4
  8. package/dist/cjs/src/keychains.d.ts.map +1 -1
  9. package/dist/cjs/src/keychains.js +3 -4
  10. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +2 -2
  11. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -1
  12. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +6 -7
  13. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts +2 -2
  14. package/dist/cjs/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -1
  15. package/dist/cjs/src/offlineVault/OfflineVaultSignable.js +3 -3
  16. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +2 -3
  17. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -1
  18. package/dist/cjs/src/offlineVault/descriptor/transaction.js +1 -1
  19. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -1
  20. package/dist/cjs/src/recovery/crossChainRecovery.js +2 -3
  21. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -1
  22. package/dist/cjs/src/transaction/bip322.js +2 -3
  23. package/dist/cjs/src/transaction/explainTransaction.d.ts +2 -1
  24. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -1
  25. package/dist/cjs/src/transaction/explainTransaction.js +3 -2
  26. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +3 -5
  27. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -1
  28. package/dist/cjs/src/transaction/fixedScript/SigningError.js +3 -5
  29. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +2 -2
  30. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -1
  31. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +2 -2
  32. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  33. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +10 -6
  34. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
  35. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +24 -37
  36. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +2 -1
  37. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -1
  38. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +3 -5
  39. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +2 -2
  40. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
  41. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +6 -5
  42. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts +2 -3
  43. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -1
  44. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.js +1 -1
  45. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +3 -4
  46. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
  47. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +3 -3
  48. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +5 -6
  49. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  50. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +4 -40
  51. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -1
  52. package/dist/cjs/src/transaction/recipient.js +6 -41
  53. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -1
  54. package/dist/cjs/src/transaction/signTransaction.js +3 -4
  55. package/dist/cjs/src/unspent.d.ts +2 -2
  56. package/dist/cjs/src/unspent.d.ts.map +1 -1
  57. package/dist/cjs/src/unspent.js +1 -1
  58. package/dist/cjs/src/verifyKey.d.ts +0 -8
  59. package/dist/cjs/src/verifyKey.d.ts.map +1 -1
  60. package/dist/cjs/src/verifyKey.js +6 -62
  61. package/dist/cjs/src/wasmUtil.d.ts +7 -2
  62. package/dist/cjs/src/wasmUtil.d.ts.map +1 -1
  63. package/dist/cjs/src/wasmUtil.js +9 -1
  64. package/dist/cjs/test/unit/coins.js +2 -2
  65. package/dist/cjs/test/unit/customChangeWallet.js +172 -111
  66. package/dist/cjs/test/unit/customChangeWalletFixtures.d.ts +2 -0
  67. package/dist/cjs/test/unit/customChangeWalletFixtures.d.ts.map +1 -0
  68. package/dist/cjs/test/unit/customChangeWalletFixtures.js +53 -0
  69. package/dist/cjs/test/unit/postProcessPrebuild.js +2 -2
  70. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +7 -3
  71. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +2 -2
  72. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +2 -2
  73. package/dist/cjs/test/unit/txFormat.js +4 -32
  74. package/dist/cjs/test/unit/util/address.d.ts +1 -1
  75. package/dist/cjs/test/unit/util/transaction.d.ts +1 -1
  76. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -1
  77. package/dist/cjs/test/unit/util/transaction.js +9 -5
  78. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -1
  79. package/dist/cjs/test/unit/util/unspents.js +3 -2
  80. package/dist/cjs/test/unit/util/utxoCoins.d.ts +9 -0
  81. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -1
  82. package/dist/cjs/test/unit/util/utxoCoins.js +52 -3
  83. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  84. package/dist/esm/abstractUtxoCoin.d.ts +2 -1
  85. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  86. package/dist/esm/abstractUtxoCoin.js +8 -20
  87. package/dist/esm/descriptor/createWallet/createDescriptorWallet.js +4 -4
  88. package/dist/esm/impl/btc/inscriptionBuilder.d.ts.map +1 -1
  89. package/dist/esm/impl/btc/inscriptionBuilder.js +4 -4
  90. package/dist/esm/keychains.d.ts +3 -4
  91. package/dist/esm/keychains.d.ts.map +1 -1
  92. package/dist/esm/keychains.js +4 -5
  93. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +2 -2
  94. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -1
  95. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +6 -7
  96. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts +2 -2
  97. package/dist/esm/offlineVault/OfflineVaultSignable.d.ts.map +1 -1
  98. package/dist/esm/offlineVault/OfflineVaultSignable.js +3 -3
  99. package/dist/esm/offlineVault/descriptor/transaction.d.ts +2 -3
  100. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -1
  101. package/dist/esm/offlineVault/descriptor/transaction.js +1 -1
  102. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -1
  103. package/dist/esm/recovery/crossChainRecovery.js +3 -4
  104. package/dist/esm/transaction/bip322.d.ts.map +1 -1
  105. package/dist/esm/transaction/bip322.js +3 -4
  106. package/dist/esm/transaction/explainTransaction.d.ts +2 -1
  107. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -1
  108. package/dist/esm/transaction/explainTransaction.js +3 -2
  109. package/dist/esm/transaction/fixedScript/SigningError.d.ts +3 -5
  110. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -1
  111. package/dist/esm/transaction/fixedScript/SigningError.js +3 -5
  112. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +2 -2
  113. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -1
  114. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +2 -2
  115. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  116. package/dist/esm/transaction/fixedScript/explainTransaction.js +10 -6
  117. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
  118. package/dist/esm/transaction/fixedScript/parseTransaction.js +25 -5
  119. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +2 -1
  120. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -1
  121. package/dist/esm/transaction/fixedScript/replayProtection.js +4 -6
  122. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +2 -2
  123. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
  124. package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +6 -5
  125. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts +2 -3
  126. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -1
  127. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.js +1 -1
  128. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +3 -4
  129. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
  130. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +3 -3
  131. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +5 -6
  132. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  133. package/dist/esm/transaction/fixedScript/signTransaction.js +5 -8
  134. package/dist/esm/transaction/recipient.d.ts.map +1 -1
  135. package/dist/esm/transaction/recipient.js +6 -8
  136. package/dist/esm/transaction/signTransaction.d.ts.map +1 -1
  137. package/dist/esm/transaction/signTransaction.js +3 -4
  138. package/dist/esm/unspent.d.ts +2 -2
  139. package/dist/esm/unspent.d.ts.map +1 -1
  140. package/dist/esm/unspent.js +1 -1
  141. package/dist/esm/verifyKey.d.ts +0 -8
  142. package/dist/esm/verifyKey.d.ts.map +1 -1
  143. package/dist/esm/verifyKey.js +6 -29
  144. package/dist/esm/wasmUtil.d.ts +7 -2
  145. package/dist/esm/wasmUtil.d.ts.map +1 -1
  146. package/dist/esm/wasmUtil.js +8 -1
  147. package/package.json +9 -11
@@ -1,7 +1,16 @@
1
1
  import * as utxolib from '@bitgo/utxo-lib';
2
2
  import { BitGoAPI } from '@bitgo/sdk-api';
3
3
  import { AbstractUtxoCoin } from '../../../src';
4
+ import type { UtxoCoinName } from '../../../src/names';
4
5
  export declare const defaultBitGo: import("@bitgo/sdk-test").TestableBG & BitGoAPI;
6
+ /**
7
+ * Get utxolib Network for a coin name. For test infrastructure only.
8
+ */
9
+ export declare function getNetworkForCoinName(coinName: string): utxolib.Network;
10
+ /**
11
+ * Get coin name for a utxolib Network. For test infrastructure only.
12
+ */
13
+ export declare function getCoinNameForNetwork(network: utxolib.Network): UtxoCoinName;
5
14
  export declare const utxoCoins: AbstractUtxoCoin[];
6
15
  /**
7
16
  * Minimal subset of coins for comprehensive test coverage.
@@ -1 +1 @@
1
- {"version":3,"file":"utxoCoins.d.ts","sourceRoot":"","sources":["../../../../../test/unit/util/utxoCoins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EACL,gBAAgB,EAsBjB,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,YAAY,iDAAgD,CAAC;AAqC1E,eAAO,MAAM,SAAS,oBAAiB,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,gCAAiC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,EAAE,CAEpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAO1D;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAO1E;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzC,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,CAiB7G"}
1
+ {"version":3,"file":"utxoCoins.d.ts","sourceRoot":"","sources":["../../../../../test/unit/util/utxoCoins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EACL,gBAAgB,EAsBjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,eAAO,MAAM,YAAY,iDAAgD,CAAC;AA0B1E;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAMvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,YAAY,CAO5E;AAwCD,eAAO,MAAM,SAAS,oBAAiB,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,gCAAiC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,EAAE,CAEpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAO1D;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAO1E;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzC,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,CAiB7G"}
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.minUtxoCoinNames = exports.utxoCoins = exports.defaultBitGo = void 0;
37
+ exports.getNetworkForCoinName = getNetworkForCoinName;
38
+ exports.getCoinNameForNetwork = getCoinNameForNetwork;
37
39
  exports.getMinUtxoCoins = getMinUtxoCoins;
38
40
  exports.getUtxoCoin = getUtxoCoin;
39
41
  exports.getUtxoCoinForNetwork = getUtxoCoinForNetwork;
@@ -43,6 +45,50 @@ const sdk_api_1 = require("@bitgo/sdk-api");
43
45
  const sdk_test_1 = require("@bitgo/sdk-test");
44
46
  const src_1 = require("../../../src");
45
47
  exports.defaultBitGo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
48
+ /** Map coin names to utxolib network objects for test infrastructure */
49
+ const coinNameToNetwork = {
50
+ btc: utxolib.networks.bitcoin,
51
+ tbtc: utxolib.networks.testnet,
52
+ tbtcsig: utxolib.networks.bitcoinPublicSignet,
53
+ tbtc4: utxolib.networks.bitcoinTestnet4,
54
+ tbtcbgsig: utxolib.networks.bitcoinBitGoSignet,
55
+ bch: utxolib.networks.bitcoincash,
56
+ tbch: utxolib.networks.bitcoincashTestnet,
57
+ bcha: utxolib.networks.ecash,
58
+ tbcha: utxolib.networks.ecashTest,
59
+ bsv: utxolib.networks.bitcoinsv,
60
+ tbsv: utxolib.networks.bitcoinsvTestnet,
61
+ btg: utxolib.networks.bitcoingold,
62
+ dash: utxolib.networks.dash,
63
+ tdash: utxolib.networks.dashTest,
64
+ doge: utxolib.networks.dogecoin,
65
+ tdoge: utxolib.networks.dogecoinTest,
66
+ ltc: utxolib.networks.litecoin,
67
+ tltc: utxolib.networks.litecoinTest,
68
+ zec: utxolib.networks.zcash,
69
+ tzec: utxolib.networks.zcashTest,
70
+ };
71
+ /**
72
+ * Get utxolib Network for a coin name. For test infrastructure only.
73
+ */
74
+ function getNetworkForCoinName(coinName) {
75
+ const network = coinNameToNetwork[coinName];
76
+ if (!network) {
77
+ throw new Error(`Unknown coin name: ${coinName}`);
78
+ }
79
+ return network;
80
+ }
81
+ /**
82
+ * Get coin name for a utxolib Network. For test infrastructure only.
83
+ */
84
+ function getCoinNameForNetwork(network) {
85
+ for (const [name, n] of Object.entries(coinNameToNetwork)) {
86
+ if (n === network) {
87
+ return name;
88
+ }
89
+ }
90
+ throw new Error(`Unknown network: ${utxolib.getNetworkName(network)}`);
91
+ }
46
92
  const utxoCoinClasses = [
47
93
  src_1.Btc,
48
94
  src_1.Tbtc,
@@ -75,7 +121,10 @@ function getUtxoCoins(bitgo = exports.defaultBitGo) {
75
121
  throw new Error(`error creating ${cls.name}: ${e}`);
76
122
  }
77
123
  })
78
- .sort((a, b) => utxolib.getNetworkList().indexOf(a.network) - utxolib.getNetworkList().indexOf(b.network));
124
+ .sort((a, b) => {
125
+ const networkList = utxolib.getNetworkList();
126
+ return networkList.indexOf(getNetworkForCoinName(a.name)) - networkList.indexOf(getNetworkForCoinName(b.name));
127
+ });
79
128
  }
80
129
  exports.utxoCoins = getUtxoCoins();
81
130
  /**
@@ -101,7 +150,7 @@ function getUtxoCoin(name) {
101
150
  }
102
151
  function getUtxoCoinForNetwork(n) {
103
152
  for (const c of exports.utxoCoins) {
104
- if (c.network === n) {
153
+ if (getNetworkForCoinName(c.name) === n) {
105
154
  return c;
106
155
  }
107
156
  }
@@ -123,4 +172,4 @@ function getScriptTypes(coin, txFormat) {
123
172
  return coin.supportsAddressType(t);
124
173
  });
125
174
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXR4b0NvaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3V0aWwvdXR4b0NvaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStFQSwwQ0FFQztBQUVELGtDQU9DO0FBRUQsc0RBT0M7QUFJRCx3Q0FpQkM7QUF4SEQseURBQTJDO0FBQzNDLDRDQUEwQztBQUMxQyw4Q0FBNEM7QUFFNUMsc0NBdUJzQjtBQUVULFFBQUEsWUFBWSxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUxRSxNQUFNLGVBQWUsR0FBRztJQUN0QixTQUFHO0lBQ0gsVUFBSTtJQUNKLFdBQUs7SUFDTCxhQUFPO0lBQ1AsZUFBUztJQUNULFNBQUc7SUFDSCxVQUFJO0lBQ0osVUFBSTtJQUNKLFdBQUs7SUFDTCxTQUFHO0lBQ0gsVUFBSTtJQUNKLFNBQUc7SUFDSCxTQUFHO0lBQ0gsVUFBSTtJQUNKLFVBQUk7SUFDSixXQUFLO0lBQ0wsVUFBSTtJQUNKLFdBQUs7SUFDTCxTQUFHO0lBQ0gsVUFBSTtDQUNMLENBQUM7QUFFRixTQUFTLFlBQVksQ0FBQyxRQUFrQixvQkFBWTtJQUNsRCxPQUFPLGVBQWU7U0FDbkIsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFvQixFQUFFO1FBQzdCLElBQUksQ0FBQztZQUNILE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMvRyxDQUFDO0FBRVksUUFBQSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7QUFFeEM7Ozs7O0dBS0c7QUFDVSxRQUFBLGdCQUFnQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQVUsQ0FBQztBQUUvRDs7R0FFRztBQUNILFNBQWdCLGVBQWU7SUFDN0IsT0FBTyx3QkFBZ0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxJQUFZO0lBQ3RDLEtBQUssTUFBTSxDQUFDLElBQUksaUJBQVMsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxDQUFrQjtJQUN0RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLGlCQUFTLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFJRCxTQUFnQixjQUFjLENBQUMsSUFBc0IsRUFBRSxRQUFrQjtJQUN2RSxPQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUscUJBQXFCLENBQVcsQ0FBQyxNQUFNLENBQzlHLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDSixJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUEsa0NBQTRCLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLEtBQUssWUFBWSxJQUFJLENBQUMsS0FBSyxxQkFBcUIsRUFBRSxDQUFDO2dCQUN0RSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBUZXN0Qml0R28gfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdFV0eG9Db2luLFxuICBCdGMsXG4gIFRidGMsXG4gIFRidGM0LFxuICBUYnRjc2lnLFxuICBUYnRjYmdzaWcsXG4gIEJjaCxcbiAgVGJjaCxcbiAgQmNoYSxcbiAgVGJjaGEsXG4gIEJzdixcbiAgVGJzdixcbiAgQnRnLFxuICBMdGMsXG4gIFRsdGMsXG4gIERhc2gsXG4gIFRkYXNoLFxuICBEb2dlLFxuICBUZG9nZSxcbiAgWmVjLFxuICBUemVjLFxuICBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzLFxufSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEJpdEdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ21vY2snIH0pO1xuXG5jb25zdCB1dHhvQ29pbkNsYXNzZXMgPSBbXG4gIEJ0YyxcbiAgVGJ0YyxcbiAgVGJ0YzQsXG4gIFRidGNzaWcsXG4gIFRidGNiZ3NpZyxcbiAgQmNoLFxuICBUYmNoLFxuICBCY2hhLFxuICBUYmNoYSxcbiAgQnN2LFxuICBUYnN2LFxuICBCdGcsXG4gIEx0YyxcbiAgVGx0YyxcbiAgRGFzaCxcbiAgVGRhc2gsXG4gIERvZ2UsXG4gIFRkb2dlLFxuICBaZWMsXG4gIFR6ZWMsXG5dO1xuXG5mdW5jdGlvbiBnZXRVdHhvQ29pbnMoYml0Z286IEJpdEdvQVBJID0gZGVmYXVsdEJpdEdvKTogQWJzdHJhY3RVdHhvQ29pbltdIHtcbiAgcmV0dXJuIHV0eG9Db2luQ2xhc3Nlc1xuICAgIC5tYXAoKGNscyk6IEFic3RyYWN0VXR4b0NvaW4gPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNscy5jcmVhdGVJbnN0YW5jZShiaXRnbyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IgY3JlYXRpbmcgJHtjbHMubmFtZX06ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5zb3J0KChhLCBiKSA9PiB1dHhvbGliLmdldE5ldHdvcmtMaXN0KCkuaW5kZXhPZihhLm5ldHdvcmspIC0gdXR4b2xpYi5nZXROZXR3b3JrTGlzdCgpLmluZGV4T2YoYi5uZXR3b3JrKSk7XG59XG5cbmV4cG9ydCBjb25zdCB1dHhvQ29pbnMgPSBnZXRVdHhvQ29pbnMoKTtcblxuLyoqXG4gKiBNaW5pbWFsIHN1YnNldCBvZiBjb2lucyBmb3IgY29tcHJlaGVuc2l2ZSB0ZXN0IGNvdmVyYWdlLlxuICogLSBidGM6IEZ1bGwgZmVhdHVyZSBzZXQgKHNlZ3dpdCwgdGFwcm9vdCwgbXVzaWcyKVxuICogLSBiY2g6IHJlcGxheSBwcm90ZWN0aW9uIGFkZHJlc3Nlc1xuICogLSB6ZWM6IHNwZWNpYWwgdHJhbnNhY3Rpb24gZm9ybWF0IChPdmVyd2ludGVyL1NhcGxpbmcpXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5VdHhvQ29pbk5hbWVzID0gWydidGMnLCAnYmNoJywgJ3plYyddIGFzIGNvbnN0O1xuXG4vKipcbiAqIEdldCBtaW5pbWFsIHNldCBvZiBjb2lucyBmb3IgdGVzdGluZy4gQ292ZXJzIH45OSUgb2YgZmVhdHVyZSBwYXRocy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1pblV0eG9Db2lucygpOiBBYnN0cmFjdFV0eG9Db2luW10ge1xuICByZXR1cm4gbWluVXR4b0NvaW5OYW1lcy5tYXAoZ2V0VXR4b0NvaW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXR4b0NvaW4obmFtZTogc3RyaW5nKTogQWJzdHJhY3RVdHhvQ29pbiB7XG4gIGZvciAoY29uc3QgYyBvZiB1dHhvQ29pbnMpIHtcbiAgICBpZiAoYy5nZXRDaGFpbigpID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gYztcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyBjb2luIHdpdGggbmFtZSAke25hbWV9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVdHhvQ29pbkZvck5ldHdvcmsobjogdXR4b2xpYi5OZXR3b3JrKTogQWJzdHJhY3RVdHhvQ29pbiB7XG4gIGZvciAoY29uc3QgYyBvZiB1dHhvQ29pbnMpIHtcbiAgICBpZiAoYy5uZXR3b3JrID09PSBuKSB7XG4gICAgICByZXR1cm4gYztcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyBjb2luIGZvciBuZXR3b3JrICR7dXR4b2xpYi5nZXROZXR3b3JrTmFtZShuKX1gKTtcbn1cblxuZXhwb3J0IHR5cGUgVHhGb3JtYXQgPSAnbGVnYWN5JyB8ICdwc2J0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdFR5cGVzKGNvaW46IEFic3RyYWN0VXR4b0NvaW4sIHR4Rm9ybWF0OiBUeEZvcm1hdCk6IHV0eG9saWIudGVzdHV0aWwuSW5wdXRTY3JpcHRUeXBlW10ge1xuICByZXR1cm4gKFsncDJzaFAycGsnLCAncDJzaCcsICdwMnNoUDJ3c2gnLCAncDJ3c2gnLCAncDJ0cicsICdwMnRyTXVzaWcyJywgJ3RhcHJvb3RLZXlQYXRoU3BlbmQnXSBhcyBjb25zdCkuZmlsdGVyKFxuICAgICh0KSA9PiB7XG4gICAgICBpZiAodCA9PT0gJ3Ayc2hQMnBrJykge1xuICAgICAgICByZXR1cm4gZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcyhjb2luLm5hbWUpLmxlbmd0aCA+IDA7XG4gICAgICB9XG4gICAgICBpZiAodHhGb3JtYXQgPT09ICdsZWdhY3knKSB7XG4gICAgICAgIGlmICh0ID09PSAncDJ0cicgfHwgdCA9PT0gJ3AydHJNdXNpZzInIHx8IHQgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHQgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJykge1xuICAgICAgICByZXR1cm4gY29pbi5zdXBwb3J0c0FkZHJlc3NUeXBlKCdwMnRyTXVzaWcyJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29pbi5zdXBwb3J0c0FkZHJlc3NUeXBlKHQpO1xuICAgIH1cbiAgKTtcbn1cbiJdfQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXR4b0NvaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3V0aWwvdXR4b0NvaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJEQSxzREFNQztBQUtELHNEQU9DO0FBcURELDBDQUVDO0FBRUQsa0NBT0M7QUFFRCxzREFPQztBQUlELHdDQWlCQztBQTNLRCx5REFBMkM7QUFDM0MsNENBQTBDO0FBQzFDLDhDQUE0QztBQUU1QyxzQ0F1QnNCO0FBR1QsUUFBQSxZQUFZLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFFLHdFQUF3RTtBQUN4RSxNQUFNLGlCQUFpQixHQUFvQztJQUN6RCxHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBQzdCLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU87SUFDOUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CO0lBQzdDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWU7SUFDdkMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCO0lBQzlDLEdBQUcsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFDakMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCO0lBQ3pDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFDNUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUNqQyxHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQy9CLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtJQUN2QyxHQUFHLEVBQUUsT0FBTyxDQUFDLFFB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LENBQUM7Z0JBQ3RFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5cbmltcG9ydCB7XG4gIEFic3RyYWN0VXR4b0NvaW4sXG4gIEJ0YyxcbiAgVGJ0YyxcbiAgVGJ0YzQsXG4gIFRidGNzaWcsXG4gIFRidGNiZ3NpZyxcbiAgQmNoLFxuICBUYmNoLFxuICBCY2hhLFxuICBUYmNoYSxcbiAgQnN2LFxuICBUYnN2LFxuICBCdGcsXG4gIEx0YyxcbiAgVGx0YyxcbiAgRGFzaCxcbiAgVGRhc2gsXG4gIERvZ2UsXG4gIFRkb2dlLFxuICBaZWMsXG4gIFR6ZWMsXG4gIGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMsXG59IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgdHlwZSB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uLy4uL3NyYy9uYW1lcyc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Qml0R28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG5cbi8qKiBNYXAgY29pbiBuYW1lcyB0byB1dHhvbGliIG5ldHdvcmsgb2JqZWN0cyBmb3IgdGVzdCBpbmZyYXN0cnVjdHVyZSAqL1xuY29uc3QgY29pbk5hbWVUb05ldHdvcms6IFJlY29yZDxzdHJpbmcsIHV0eG9saWIuTmV0d29yaz4gPSB7XG4gIGJ0YzogdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luLFxuICB0YnRjOiB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXQsXG4gIHRidGNzaWc6IHV0eG9saWIubmV0d29ya3MuYml0Y29pblB1YmxpY1NpZ25ldCxcbiAgdGJ0YzQ6IHV0eG9saWIubmV0d29ya3MuYml0Y29pblRlc3RuZXQ0LFxuICB0YnRjYmdzaWc6IHV0eG9saWIubmV0d29ya3MuYml0Y29pbkJpdEdvU2lnbmV0LFxuICBiY2g6IHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2gsXG4gIHRiY2g6IHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2hUZXN0bmV0LFxuICBiY2hhOiB1dHhvbGliLm5ldHdvcmtzLmVjYXNoLFxuICB0YmNoYTogdXR4b2xpYi5uZXR3b3Jrcy5lY2FzaFRlc3QsXG4gIGJzdjogdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3YsXG4gIHRic3Y6IHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2VGVzdG5ldCxcbiAgYnRnOiB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5nb2xkLFxuICBkYXNoOiB1dHhvbGliLm5ldHdvcmtzLmRhc2gsXG4gIHRkYXNoOiB1dHhvbGliLm5ldHdvcmtzLmRhc2hUZXN0LFxuICBkb2dlOiB1dHhvbGliLm5ldHdvcmtzLmRvZ2Vjb2luLFxuICB0ZG9nZTogdXR4b2xpYi5uZXR3b3Jrcy5kb2dlY29pblRlc3QsXG4gIGx0YzogdXR4b2xpYi5uZXR3b3Jrcy5saXRlY29pbixcbiAgdGx0YzogdXR4b2xpYi5uZXR3b3Jrcy5saXRlY29pblRlc3QsXG4gIHplYzogdXR4b2xpYi5uZXR3b3Jrcy56Y2FzaCxcbiAgdHplYzogdXR4b2xpYi5uZXR3b3Jrcy56Y2FzaFRlc3QsXG59O1xuXG4vKipcbiAqIEdldCB1dHhvbGliIE5ldHdvcmsgZm9yIGEgY29pbiBuYW1lLiBGb3IgdGVzdCBpbmZyYXN0cnVjdHVyZSBvbmx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV0d29ya0ZvckNvaW5OYW1lKGNvaW5OYW1lOiBzdHJpbmcpOiB1dHhvbGliLk5ldHdvcmsge1xuICBjb25zdCBuZXR3b3JrID0gY29pbk5hbWVUb05ldHdvcmtbY29pbk5hbWVdO1xuICBpZiAoIW5ldHdvcmspIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29pbiBuYW1lOiAke2NvaW5OYW1lfWApO1xuICB9XG4gIHJldHVybiBuZXR3b3JrO1xufVxuXG4vKipcbiAqIEdldCBjb2luIG5hbWUgZm9yIGEgdXR4b2xpYiBOZXR3b3JrLiBGb3IgdGVzdCBpbmZyYXN0cnVjdHVyZSBvbmx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29pbk5hbWVGb3JOZXR3b3JrKG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IFV0eG9Db2luTmFtZSB7XG4gIGZvciAoY29uc3QgW25hbWUsIG5dIG9mIE9iamVjdC5lbnRyaWVzKGNvaW5OYW1lVG9OZXR3b3JrKSkge1xuICAgIGlmIChuID09PSBuZXR3b3JrKSB7XG4gICAgICByZXR1cm4gbmFtZSBhcyBVdHhvQ29pbk5hbWU7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBuZXR3b3JrOiAke3V0eG9saWIuZ2V0TmV0d29ya05hbWUobmV0d29yayl9YCk7XG59XG5cbmNvbnN0IHV0eG9Db2luQ2xhc3NlcyA9IFtcbiAgQnRjLFxuICBUYnRjLFxuICBUYnRjNCxcbiAgVGJ0Y3NpZyxcbiAgVGJ0Y2Jnc2lnLFxuICBCY2gsXG4gIFRiY2gsXG4gIEJjaGEsXG4gIFRiY2hhLFxuICBCc3YsXG4gIFRic3YsXG4gIEJ0ZyxcbiAgTHRjLFxuICBUbHRjLFxuICBEYXNoLFxuICBUZGFzaCxcbiAgRG9nZSxcbiAgVGRvZ2UsXG4gIFplYyxcbiAgVHplYyxcbl07XG5cbmZ1bmN0aW9uIGdldFV0eG9Db2lucyhiaXRnbzogQml0R29BUEkgPSBkZWZhdWx0Qml0R28pOiBBYnN0cmFjdFV0eG9Db2luW10ge1xuICByZXR1cm4gdXR4b0NvaW5DbGFzc2VzXG4gICAgLm1hcCgoY2xzKTogQWJzdHJhY3RVdHhvQ29pbiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gY2xzLmNyZWF0ZUluc3RhbmNlKGJpdGdvKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBlcnJvciBjcmVhdGluZyAke2Nscy5uYW1lfTogJHtlfWApO1xuICAgICAgfVxuICAgIH0pXG4gICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IG5ldHdvcmtMaXN0ID0gdXR4b2xpYi5nZXROZXR3b3JrTGlzdCgpO1xuICAgICAgcmV0dXJuIG5ldHdvcmtMaXN0LmluZGV4T2YoZ2V0TmV0d29ya0ZvckNvaW5OYW1lKGEubmFtZSkpIC0gbmV0d29ya0xpc3QuaW5kZXhPZihnZXROZXR3b3JrRm9yQ29pbk5hbWUoYi5uYW1lKSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCB1dHhvQ29pbnMgPSBnZXRVdHhvQ29pbnMoKTtcblxuLyoqXG4gKiBNaW5pbWFsIHN1YnNldCBvZiBjb2lucyBmb3IgY29tcHJlaGVuc2l2ZSB0ZXN0IGNvdmVyYWdlLlxuICogLSBidGM6IEZ1bGwgZmVhdHVyZSBzZXQgKHNlZ3dpdCwgdGFwcm9vdCwgbXVzaWcyKVxuICogLSBiY2g6IHJlcGxheSBwcm90ZWN0aW9uIGFkZHJlc3Nlc1xuICogLSB6ZWM6IHNwZWNpYWwgdHJhbnNhY3Rpb24gZm9ybWF0IChPdmVyd2ludGVyL1NhcGxpbmcpXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5VdHhvQ29pbk5hbWVzID0gWydidGMnLCAnYmNoJywgJ3plYyddIGFzIGNvbnN0O1xuXG4vKipcbiAqIEdldCBtaW5pbWFsIHNldCBvZiBjb2lucyBmb3IgdGVzdGluZy4gQ292ZXJzIH45OSUgb2YgZmVhdHVyZSBwYXRocy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1pblV0eG9Db2lucygpOiBBYnN0cmFjdFV0eG9Db2luW10ge1xuICByZXR1cm4gbWluVXR4b0NvaW5OYW1lcy5tYXAoZ2V0VXR4b0NvaW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXR4b0NvaW4obmFtZTogc3RyaW5nKTogQWJzdHJhY3RVdHhvQ29pbiB7XG4gIGZvciAoY29uc3QgYyBvZiB1dHhvQ29pbnMpIHtcbiAgICBpZiAoYy5nZXRDaGFpbigpID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gYztcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyBjb2luIHdpdGggbmFtZSAke25hbWV9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVdHhvQ29pbkZvck5ldHdvcmsobjogdXR4b2xpYi5OZXR3b3JrKTogQWJzdHJhY3RVdHhvQ29pbiB7XG4gIGZvciAoY29uc3QgYyBvZiB1dHhvQ29pbnMpIHtcbiAgICBpZiAoZ2V0TmV0d29ya0ZvckNvaW5OYW1lKGMubmFtZSkgPT09IG4pIHtcbiAgICAgIHJldHVybiBjO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYG5vIGNvaW4gZm9yIG5ldHdvcmsgJHt1dHhvbGliLmdldE5ldHdvcmtOYW1lKG4pfWApO1xufVxuXG5leHBvcnQgdHlwZSBUeEZvcm1hdCA9ICdsZWdhY3knIHwgJ3BzYnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0VHlwZXMoY29pbjogQWJzdHJhY3RVdHhvQ29pbiwgdHhGb3JtYXQ6IFR4Rm9ybWF0KTogdXR4b2xpYi50ZXN0dXRpbC5JbnB1dFNjcmlwdFR5cGVbXSB7XG4gIHJldHVybiAoWydwMnNoUDJwaycsICdwMnNoJywgJ3Ayc2hQMndzaCcsICdwMndzaCcsICdwMnRyJywgJ3AydHJNdXNpZzInLCAndGFwcm9vdEtleVBhdGhTcGVuZCddIGFzIGNvbnN0KS5maWx0ZXIoXG4gICAgKHQpID0+IHtcbiAgICAgIGlmICh0ID09PSAncDJzaFAycGsnKSB7XG4gICAgICAgIHJldHVybiBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzKGNvaW4ubmFtZSkubGVuZ3RoID4gMDtcbiAgICAgIH1cbiAgICAgIGlmICh0eEZvcm1hdCA9PT0gJ2xlZ2FjeScpIHtcbiAgICAgICAgaWYgKHQgPT09ICdwMnRyJyB8fCB0ID09PSAncDJ0ck11c2lnMicgfHwgdCA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodCA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKSB7XG4gICAgICAgIHJldHVybiBjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUoJ3AydHJNdXNpZzInKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUodCk7XG4gICAgfVxuICApO1xufVxuIl19