@bitgo/account-lib 2.20.0-rc.32 → 2.20.0-rc.35

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 (276) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/resources/README.md +0 -22
  3. package/dist/src/coin/polygon/transactionBuilder.d.ts +2 -2
  4. package/dist/src/coin/polygon/transactionBuilder.d.ts.map +1 -1
  5. package/dist/src/coin/polygon/transactionBuilder.js +3 -3
  6. package/dist/src/index.d.ts +7 -7
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +8 -8
  9. package/dist/tsconfig.tsbuildinfo +12836 -26738
  10. package/package.json +21 -30
  11. package/resources/README.md +0 -22
  12. package/dist/resources/trx/protobuf/Contract.proto +0 -256
  13. package/dist/resources/trx/protobuf/Discover.proto +0 -44
  14. package/dist/resources/trx/protobuf/tron.d.ts +0 -11024
  15. package/dist/resources/trx/protobuf/tron.js +0 -31510
  16. package/dist/resources/trx/protobuf/tron.proto +0 -677
  17. package/dist/src/coin/dot/addressInitializationBuilder.d.ts +0 -79
  18. package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +0 -1
  19. package/dist/src/coin/dot/addressInitializationBuilder.js +0 -182
  20. package/dist/src/coin/dot/batchTransactionBuilder.d.ts +0 -47
  21. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +0 -1
  22. package/dist/src/coin/dot/batchTransactionBuilder.js +0 -122
  23. package/dist/src/coin/dot/claimBuilder.d.ts +0 -58
  24. package/dist/src/coin/dot/claimBuilder.d.ts.map +0 -1
  25. package/dist/src/coin/dot/claimBuilder.js +0 -119
  26. package/dist/src/coin/dot/errors.d.ts +0 -8
  27. package/dist/src/coin/dot/errors.d.ts.map +0 -1
  28. package/dist/src/coin/dot/errors.js +0 -19
  29. package/dist/src/coin/dot/iface.d.ts +0 -194
  30. package/dist/src/coin/dot/iface.d.ts.map +0 -1
  31. package/dist/src/coin/dot/iface.js +0 -39
  32. package/dist/src/coin/dot/index.d.ts +0 -17
  33. package/dist/src/coin/dot/index.d.ts.map +0 -1
  34. package/dist/src/coin/dot/index.js +0 -53
  35. package/dist/src/coin/dot/keyPair.d.ts +0 -31
  36. package/dist/src/coin/dot/keyPair.d.ts.map +0 -1
  37. package/dist/src/coin/dot/keyPair.js +0 -70
  38. package/dist/src/coin/dot/singletonRegistry.d.ts +0 -7
  39. package/dist/src/coin/dot/singletonRegistry.d.ts.map +0 -1
  40. package/dist/src/coin/dot/singletonRegistry.js +0 -20
  41. package/dist/src/coin/dot/stakingBuilder.d.ts +0 -58
  42. package/dist/src/coin/dot/stakingBuilder.d.ts.map +0 -1
  43. package/dist/src/coin/dot/stakingBuilder.js +0 -139
  44. package/dist/src/coin/dot/transaction.d.ts +0 -65
  45. package/dist/src/coin/dot/transaction.d.ts.map +0 -1
  46. package/dist/src/coin/dot/transaction.js +0 -396
  47. package/dist/src/coin/dot/transactionBuilder.d.ts +0 -131
  48. package/dist/src/coin/dot/transactionBuilder.d.ts.map +0 -1
  49. package/dist/src/coin/dot/transactionBuilder.js +0 -332
  50. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +0 -26
  51. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +0 -1
  52. package/dist/src/coin/dot/transactionBuilderFactory.js +0 -93
  53. package/dist/src/coin/dot/transferBuilder.d.ts +0 -71
  54. package/dist/src/coin/dot/transferBuilder.d.ts.map +0 -1
  55. package/dist/src/coin/dot/transferBuilder.js +0 -177
  56. package/dist/src/coin/dot/txnSchema.d.ts +0 -14
  57. package/dist/src/coin/dot/txnSchema.d.ts.map +0 -1
  58. package/dist/src/coin/dot/txnSchema.js +0 -104
  59. package/dist/src/coin/dot/unnominateBuilder.d.ts +0 -24
  60. package/dist/src/coin/dot/unnominateBuilder.d.ts.map +0 -1
  61. package/dist/src/coin/dot/unnominateBuilder.js +0 -50
  62. package/dist/src/coin/dot/unstakeBuilder.d.ts +0 -38
  63. package/dist/src/coin/dot/unstakeBuilder.d.ts.map +0 -1
  64. package/dist/src/coin/dot/unstakeBuilder.js +0 -89
  65. package/dist/src/coin/dot/utils.d.ts +0 -145
  66. package/dist/src/coin/dot/utils.d.ts.map +0 -1
  67. package/dist/src/coin/dot/utils.js +0 -283
  68. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +0 -38
  69. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +0 -1
  70. package/dist/src/coin/dot/withdrawUnstakedBuilder.js +0 -90
  71. package/dist/src/coin/etc/index.d.ts +0 -6
  72. package/dist/src/coin/etc/index.d.ts.map +0 -1
  73. package/dist/src/coin/etc/index.js +0 -33
  74. package/dist/src/coin/etc/resources.d.ts +0 -10
  75. package/dist/src/coin/etc/resources.d.ts.map +0 -1
  76. package/dist/src/coin/etc/resources.js +0 -26
  77. package/dist/src/coin/etc/transactionBuilder.d.ts +0 -17
  78. package/dist/src/coin/etc/transactionBuilder.d.ts.map +0 -1
  79. package/dist/src/coin/etc/transactionBuilder.js +0 -45
  80. package/dist/src/coin/etc/transferBuilder.d.ts +0 -19
  81. package/dist/src/coin/etc/transferBuilder.d.ts.map +0 -1
  82. package/dist/src/coin/etc/transferBuilder.js +0 -27
  83. package/dist/src/coin/etc/utils.d.ts +0 -17
  84. package/dist/src/coin/etc/utils.d.ts.map +0 -1
  85. package/dist/src/coin/etc/utils.js +0 -42
  86. package/dist/src/coin/hbar/coinTransferBuilder.d.ts +0 -46
  87. package/dist/src/coin/hbar/coinTransferBuilder.d.ts.map +0 -1
  88. package/dist/src/coin/hbar/coinTransferBuilder.js +0 -143
  89. package/dist/src/coin/hbar/constants.d.ts +0 -8
  90. package/dist/src/coin/hbar/constants.d.ts.map +0 -1
  91. package/dist/src/coin/hbar/constants.js +0 -12
  92. package/dist/src/coin/hbar/iface.d.ts +0 -49
  93. package/dist/src/coin/hbar/iface.d.ts.map +0 -1
  94. package/dist/src/coin/hbar/iface.js +0 -3
  95. package/dist/src/coin/hbar/index.d.ts +0 -9
  96. package/dist/src/coin/hbar/index.d.ts.map +0 -1
  97. package/dist/src/coin/hbar/index.js +0 -37
  98. package/dist/src/coin/hbar/keyPair.d.ts +0 -23
  99. package/dist/src/coin/hbar/keyPair.d.ts.map +0 -1
  100. package/dist/src/coin/hbar/keyPair.js +0 -70
  101. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +0 -38
  102. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +0 -1
  103. package/dist/src/coin/hbar/tokenAssociateBuilder.js +0 -126
  104. package/dist/src/coin/hbar/tokenTransferBuilder.d.ts +0 -25
  105. package/dist/src/coin/hbar/tokenTransferBuilder.d.ts.map +0 -1
  106. package/dist/src/coin/hbar/tokenTransferBuilder.js +0 -115
  107. package/dist/src/coin/hbar/transaction.d.ts +0 -106
  108. package/dist/src/coin/hbar/transaction.d.ts.map +0 -1
  109. package/dist/src/coin/hbar/transaction.js +0 -318
  110. package/dist/src/coin/hbar/transactionBuilder.d.ts +0 -111
  111. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +0 -1
  112. package/dist/src/coin/hbar/transactionBuilder.js +0 -270
  113. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +0 -47
  114. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +0 -1
  115. package/dist/src/coin/hbar/transactionBuilderFactory.js +0 -88
  116. package/dist/src/coin/hbar/transferBuilder.d.ts +0 -24
  117. package/dist/src/coin/hbar/transferBuilder.d.ts.map +0 -1
  118. package/dist/src/coin/hbar/transferBuilder.js +0 -74
  119. package/dist/src/coin/hbar/utils.d.ts +0 -193
  120. package/dist/src/coin/hbar/utils.d.ts.map +0 -1
  121. package/dist/src/coin/hbar/utils.js +0 -410
  122. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +0 -28
  123. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +0 -1
  124. package/dist/src/coin/hbar/walletInitializationBuilder.js +0 -110
  125. package/dist/src/coin/near/constants.d.ts +0 -12
  126. package/dist/src/coin/near/constants.d.ts.map +0 -1
  127. package/dist/src/coin/near/constants.js +0 -15
  128. package/dist/src/coin/near/contractCallWrapper.d.ts +0 -33
  129. package/dist/src/coin/near/contractCallWrapper.d.ts.map +0 -1
  130. package/dist/src/coin/near/contractCallWrapper.js +0 -68
  131. package/dist/src/coin/near/errors.d.ts +0 -5
  132. package/dist/src/coin/near/errors.d.ts.map +0 -1
  133. package/dist/src/coin/near/errors.js +0 -12
  134. package/dist/src/coin/near/iface.d.ts +0 -40
  135. package/dist/src/coin/near/iface.d.ts.map +0 -1
  136. package/dist/src/coin/near/iface.js +0 -8
  137. package/dist/src/coin/near/index.d.ts +0 -11
  138. package/dist/src/coin/near/index.d.ts.map +0 -1
  139. package/dist/src/coin/near/index.js +0 -41
  140. package/dist/src/coin/near/keyPair.d.ts +0 -25
  141. package/dist/src/coin/near/keyPair.d.ts.map +0 -1
  142. package/dist/src/coin/near/keyPair.js +0 -73
  143. package/dist/src/coin/near/stakingActivateBuilder.d.ts +0 -32
  144. package/dist/src/coin/near/stakingActivateBuilder.d.ts.map +0 -1
  145. package/dist/src/coin/near/stakingActivateBuilder.js +0 -90
  146. package/dist/src/coin/near/stakingDeactivateBuilder.d.ts +0 -32
  147. package/dist/src/coin/near/stakingDeactivateBuilder.d.ts.map +0 -1
  148. package/dist/src/coin/near/stakingDeactivateBuilder.js +0 -89
  149. package/dist/src/coin/near/stakingWithdrawBuilder.d.ts +0 -32
  150. package/dist/src/coin/near/stakingWithdrawBuilder.d.ts.map +0 -1
  151. package/dist/src/coin/near/stakingWithdrawBuilder.js +0 -89
  152. package/dist/src/coin/near/transaction.d.ts +0 -90
  153. package/dist/src/coin/near/transaction.d.ts.map +0 -1
  154. package/dist/src/coin/near/transaction.js +0 -368
  155. package/dist/src/coin/near/transactionBuilder.d.ts +0 -89
  156. package/dist/src/coin/near/transactionBuilder.d.ts.map +0 -1
  157. package/dist/src/coin/near/transactionBuilder.js +0 -216
  158. package/dist/src/coin/near/transactionBuilderFactory.d.ts +0 -30
  159. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +0 -1
  160. package/dist/src/coin/near/transactionBuilderFactory.js +0 -71
  161. package/dist/src/coin/near/transferBuilder.d.ts +0 -26
  162. package/dist/src/coin/near/transferBuilder.d.ts.map +0 -1
  163. package/dist/src/coin/near/transferBuilder.js +0 -72
  164. package/dist/src/coin/near/utils.d.ts +0 -42
  165. package/dist/src/coin/near/utils.d.ts.map +0 -1
  166. package/dist/src/coin/near/utils.js +0 -85
  167. package/dist/src/coin/near/walletInitializationBuilder.d.ts +0 -12
  168. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +0 -1
  169. package/dist/src/coin/near/walletInitializationBuilder.js +0 -20
  170. package/dist/src/coin/rbtc/index.d.ts +0 -6
  171. package/dist/src/coin/rbtc/index.d.ts.map +0 -1
  172. package/dist/src/coin/rbtc/index.js +0 -33
  173. package/dist/src/coin/rbtc/resources.d.ts +0 -10
  174. package/dist/src/coin/rbtc/resources.d.ts.map +0 -1
  175. package/dist/src/coin/rbtc/resources.js +0 -25
  176. package/dist/src/coin/rbtc/transactionBuilder.d.ts +0 -17
  177. package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +0 -1
  178. package/dist/src/coin/rbtc/transactionBuilder.js +0 -44
  179. package/dist/src/coin/rbtc/transferBuilder.d.ts +0 -19
  180. package/dist/src/coin/rbtc/transferBuilder.d.ts.map +0 -1
  181. package/dist/src/coin/rbtc/transferBuilder.js +0 -27
  182. package/dist/src/coin/rbtc/utils.d.ts +0 -17
  183. package/dist/src/coin/rbtc/utils.d.ts.map +0 -1
  184. package/dist/src/coin/rbtc/utils.js +0 -42
  185. package/dist/src/coin/sol/ataInitializationBuilder.d.ts +0 -42
  186. package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +0 -1
  187. package/dist/src/coin/sol/ataInitializationBuilder.js +0 -112
  188. package/dist/src/coin/sol/ataInitializationTransaction.d.ts +0 -14
  189. package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +0 -1
  190. package/dist/src/coin/sol/ataInitializationTransaction.js +0 -81
  191. package/dist/src/coin/sol/constants.d.ts +0 -58
  192. package/dist/src/coin/sol/constants.d.ts.map +0 -1
  193. package/dist/src/coin/sol/constants.js +0 -76
  194. package/dist/src/coin/sol/iface.d.ts +0 -100
  195. package/dist/src/coin/sol/iface.d.ts.map +0 -1
  196. package/dist/src/coin/sol/iface.js +0 -3
  197. package/dist/src/coin/sol/index.d.ts +0 -11
  198. package/dist/src/coin/sol/index.d.ts.map +0 -1
  199. package/dist/src/coin/sol/index.js +0 -41
  200. package/dist/src/coin/sol/instructionParamsFactory.d.ts +0 -12
  201. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +0 -1
  202. package/dist/src/coin/sol/instructionParamsFactory.js +0 -267
  203. package/dist/src/coin/sol/keyPair.d.ts +0 -26
  204. package/dist/src/coin/sol/keyPair.d.ts.map +0 -1
  205. package/dist/src/coin/sol/keyPair.js +0 -63
  206. package/dist/src/coin/sol/solInstructionFactory.d.ts +0 -10
  207. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +0 -1
  208. package/dist/src/coin/sol/solInstructionFactory.js +0 -213
  209. package/dist/src/coin/sol/stakingActivateBuilder.d.ts +0 -41
  210. package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +0 -1
  211. package/dist/src/coin/sol/stakingActivateBuilder.js +0 -94
  212. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +0 -23
  213. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +0 -1
  214. package/dist/src/coin/sol/stakingDeactivateBuilder.js +0 -62
  215. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +0 -31
  216. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +0 -1
  217. package/dist/src/coin/sol/stakingWithdrawBuilder.js +0 -78
  218. package/dist/src/coin/sol/tokenEncodeDecode.d.ts +0 -85
  219. package/dist/src/coin/sol/tokenEncodeDecode.d.ts.map +0 -1
  220. package/dist/src/coin/sol/tokenEncodeDecode.js +0 -133
  221. package/dist/src/coin/sol/tokenTransferBuilder.d.ts +0 -27
  222. package/dist/src/coin/sol/tokenTransferBuilder.d.ts.map +0 -1
  223. package/dist/src/coin/sol/tokenTransferBuilder.js +0 -73
  224. package/dist/src/coin/sol/transaction.d.ts +0 -61
  225. package/dist/src/coin/sol/transaction.d.ts.map +0 -1
  226. package/dist/src/coin/sol/transaction.js +0 -369
  227. package/dist/src/coin/sol/transactionBuilder.d.ts +0 -101
  228. package/dist/src/coin/sol/transactionBuilder.d.ts.map +0 -1
  229. package/dist/src/coin/sol/transactionBuilder.js +0 -261
  230. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +0 -76
  231. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +0 -1
  232. package/dist/src/coin/sol/transactionBuilderFactory.js +0 -136
  233. package/dist/src/coin/sol/transferBuilder.d.ts +0 -26
  234. package/dist/src/coin/sol/transferBuilder.d.ts.map +0 -1
  235. package/dist/src/coin/sol/transferBuilder.js +0 -67
  236. package/dist/src/coin/sol/utils.d.ts +0 -146
  237. package/dist/src/coin/sol/utils.d.ts.map +0 -1
  238. package/dist/src/coin/sol/utils.js +0 -361
  239. package/dist/src/coin/sol/walletInitializationBuilder.d.ts +0 -26
  240. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +0 -1
  241. package/dist/src/coin/sol/walletInitializationBuilder.js +0 -71
  242. package/dist/src/coin/trx/address.d.ts +0 -11
  243. package/dist/src/coin/trx/address.d.ts.map +0 -1
  244. package/dist/src/coin/trx/address.js +0 -13
  245. package/dist/src/coin/trx/contractCallBuilder.d.ts +0 -96
  246. package/dist/src/coin/trx/contractCallBuilder.d.ts.map +0 -1
  247. package/dist/src/coin/trx/contractCallBuilder.js +0 -281
  248. package/dist/src/coin/trx/enum.d.ts +0 -23
  249. package/dist/src/coin/trx/enum.d.ts.map +0 -1
  250. package/dist/src/coin/trx/enum.js +0 -28
  251. package/dist/src/coin/trx/iface.d.ts +0 -92
  252. package/dist/src/coin/trx/iface.d.ts.map +0 -1
  253. package/dist/src/coin/trx/iface.js +0 -3
  254. package/dist/src/coin/trx/index.d.ts +0 -10
  255. package/dist/src/coin/trx/index.d.ts.map +0 -1
  256. package/dist/src/coin/trx/index.js +0 -39
  257. package/dist/src/coin/trx/keyPair.d.ts +0 -44
  258. package/dist/src/coin/trx/keyPair.d.ts.map +0 -1
  259. package/dist/src/coin/trx/keyPair.js +0 -121
  260. package/dist/src/coin/trx/transaction.d.ts +0 -74
  261. package/dist/src/coin/trx/transaction.d.ts.map +0 -1
  262. package/dist/src/coin/trx/transaction.js +0 -205
  263. package/dist/src/coin/trx/transactionBuilder.d.ts +0 -65
  264. package/dist/src/coin/trx/transactionBuilder.d.ts.map +0 -1
  265. package/dist/src/coin/trx/transactionBuilder.js +0 -215
  266. package/dist/src/coin/trx/utils.d.ts +0 -127
  267. package/dist/src/coin/trx/utils.d.ts.map +0 -1
  268. package/dist/src/coin/trx/utils.js +0 -369
  269. package/dist/src/coin/trx/wrappedBuilder.d.ts +0 -52
  270. package/dist/src/coin/trx/wrappedBuilder.d.ts.map +0 -1
  271. package/dist/src/coin/trx/wrappedBuilder.js +0 -104
  272. package/resources/trx/protobuf/Contract.proto +0 -256
  273. package/resources/trx/protobuf/Discover.proto +0 -44
  274. package/resources/trx/protobuf/tron.d.ts +0 -11024
  275. package/resources/trx/protobuf/tron.js +0 -31510
  276. package/resources/trx/protobuf/tron.proto +0 -677
@@ -1,106 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
- import { BaseKey, BaseTransaction, TransactionType } from '@bitgo/sdk-core';
3
- import * as proto from '@hashgraph/proto';
4
- import { TxData } from './iface';
5
- import { KeyPair } from './';
6
- export declare class Transaction extends BaseTransaction {
7
- private _hederaTx;
8
- private _txBody;
9
- protected _type: TransactionType;
10
- constructor(_coinConfig: Readonly<CoinConfig>);
11
- /** @inheritdoc */
12
- canSign(key: BaseKey): boolean;
13
- sign(keyPair: KeyPair): Promise<void>;
14
- /**
15
- * Add a signature to this transaction
16
- *
17
- * @param {string} signature - The signature to add, in string hex format
18
- * @param {KeyPair} key - The key of the key that created the signature
19
- */
20
- addSignature(signature: string, key: KeyPair): void;
21
- /** @inheritdoc */
22
- toBroadcastFormat(): string;
23
- /**
24
- * Sets this transaction payload
25
- *
26
- * @param rawTransaction
27
- */
28
- fromRawTransaction(rawTransaction: Uint8Array | string): void;
29
- /** @inheritdoc */
30
- toJson(): TxData;
31
- /**
32
- * Get the recipient account and the amount
33
- * transferred on this transaction
34
- *
35
- * @returns { tokenName, Recipient[]} is object consisting of tokenName if it's a token transfer and recipients consisting
36
- * the recipient address, the transfer amount, and the token name for token transfer
37
- */
38
- private getTransferData;
39
- /**
40
- * Get the recipient account and the amount
41
- * transferred on this transaction
42
- *
43
- * @returns { accountId: string; tokenNames[]} is an object consisting of accountId for the token owner
44
- * and list of tokenNames that will be enabled
45
- */
46
- private getAccountAssociateData;
47
- get txBody(): proto.TransactionBody;
48
- get hederaTx(): proto.Transaction;
49
- /**
50
- * Sets this transaction body components
51
- *
52
- * @param {proto.Transaction} tx - Body Transaction
53
- */
54
- body(tx: proto.Transaction): void;
55
- /**
56
- * Set the transaction type
57
- *
58
- * @param {TransactionType} transactionType - The transaction type to be set
59
- */
60
- setTransactionType(transactionType: TransactionType): void;
61
- /**
62
- * Decode previous signatures from the inner hedera transaction
63
- * and save them into the base transaction signature list.
64
- */
65
- loadPreviousSignatures(): void;
66
- /**
67
- * Load the input and output data on this transaction using the transaction json
68
- * if there are outputs. For transactions without outputs (e.g. wallet initializations),
69
- * this function will not do anything
70
- */
71
- loadInputsAndOutputs(): void;
72
- /**
73
- * Sets this transaction body components
74
- *
75
- * @param {Uint8Array} bytes - Encoded body transaction
76
- */
77
- bodyBytes(bytes: Uint8Array): void;
78
- /**
79
- * Returns this hedera transaction id components in a readable format
80
- *
81
- * @returns {[string, string]} - Transaction id parts [<account id>, <startTime in seconds>]
82
- */
83
- getTxIdParts(): [string, string];
84
- /**
85
- * Returns this transaction hash
86
- *
87
- * @returns {string} - The transaction hash
88
- */
89
- getTxHash(): string;
90
- /**
91
- * Encode an object using the given encoder class
92
- *
93
- * @param {proto} obj - The object to be encoded, must be in proto namespace
94
- * @param encoder - Object encoder
95
- * @returns {Uint8Array} - Encoded object byte array
96
- */
97
- private encode;
98
- /**
99
- * Returns a sha-384 hash
100
- *
101
- * @param {Uint8Array} bytes - Bytes to be hashed
102
- * @returns {string} - The resulting hash string
103
- */
104
- sha(bytes: Uint8Array): string;
105
- }
106
- //# sourceMappingURL=transaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/hbar/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,eAAe,EAA4C,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMtH,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAa,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAG7B,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAwB;IACvC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIxB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI;IAWnD,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAK3B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAgB7D,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAmChB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IA+BvB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAS/B,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,CAElC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,WAAW,CAEhC;IAED;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI;IAMjC;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D;;;OAGG;IACH,sBAAsB,IAAI,IAAI;IAY9B;;;;OAIG;IACH,oBAAoB,IAAI,IAAI;IAwC5B;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMlC;;;;OAIG;IACH,YAAY,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAehC;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAYnB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IAOd;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;CAG/B"}
@@ -1,318 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.Transaction = void 0;
26
- const sdk_core_1 = require("@bitgo/sdk-core");
27
- const sha384_1 = require("@stablelib/sha384");
28
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
29
- const nacl = __importStar(require("tweetnacl"));
30
- const Long = __importStar(require("long"));
31
- const proto = __importStar(require("@hashgraph/proto"));
32
- const utils_1 = require("./utils");
33
- const constants_1 = require("./constants");
34
- class Transaction extends sdk_core_1.BaseTransaction {
35
- constructor(_coinConfig) {
36
- super(_coinConfig);
37
- }
38
- /** @inheritdoc */
39
- canSign(key) {
40
- return true;
41
- }
42
- async sign(keyPair) {
43
- const keys = keyPair.getKeys(true);
44
- if (!keys.prv) {
45
- throw new sdk_core_1.SigningError('Missing private key');
46
- }
47
- const secretKey = sdk_core_1.toUint8Array(keys.prv + keys.pub);
48
- const signature = nacl.sign.detached(this._hederaTx.bodyBytes, secretKey);
49
- this.addSignature(sdk_core_1.toHex(signature), keyPair);
50
- }
51
- /**
52
- * Add a signature to this transaction
53
- *
54
- * @param {string} signature - The signature to add, in string hex format
55
- * @param {KeyPair} key - The key of the key that created the signature
56
- */
57
- addSignature(signature, key) {
58
- const sigPair = new proto.SignaturePair();
59
- sigPair.pubKeyPrefix = sdk_core_1.toUint8Array(key.getKeys(true).pub);
60
- sigPair.ed25519 = sdk_core_1.toUint8Array(signature);
61
- const sigMap = this._hederaTx.sigMap || new proto.SignatureMap();
62
- sigMap.sigPair.push(sigPair);
63
- this._hederaTx.sigMap = sigMap;
64
- this._signatures.push(signature);
65
- }
66
- /** @inheritdoc */
67
- toBroadcastFormat() {
68
- const encoder = proto.Transaction;
69
- return sdk_core_1.toHex(this.encode(this._hederaTx, encoder));
70
- }
71
- /**
72
- * Sets this transaction payload
73
- *
74
- * @param rawTransaction
75
- */
76
- fromRawTransaction(rawTransaction) {
77
- const buffer = typeof rawTransaction === 'string' ? sdk_core_1.toUint8Array(rawTransaction) : rawTransaction;
78
- this.bodyBytes(buffer);
79
- switch (this.txBody.data) {
80
- case constants_1.HederaTransactionTypes.Transfer:
81
- this.setTransactionType(sdk_core_1.TransactionType.Send);
82
- break;
83
- case constants_1.HederaTransactionTypes.CreateAccount:
84
- this.setTransactionType(sdk_core_1.TransactionType.WalletInitialization);
85
- break;
86
- case constants_1.HederaTransactionTypes.TokenAssociateToAccount:
87
- this.setTransactionType(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization);
88
- break;
89
- }
90
- }
91
- /** @inheritdoc */
92
- toJson() {
93
- const [acc, time] = this.getTxIdParts();
94
- const result = {
95
- id: acc + '@' + time,
96
- hash: this.getTxHash(),
97
- data: sdk_core_1.toHex(this._hederaTx.bodyBytes),
98
- fee: new bignumber_js_1.default(this._txBody.transactionFee.toString()).toNumber(),
99
- from: acc,
100
- startTime: time,
101
- validDuration: this._txBody.transactionValidDuration.seconds.toString(),
102
- node: utils_1.stringifyAccountId(this._txBody.nodeAccountID),
103
- memo: this._txBody.memo,
104
- };
105
- switch (this._txBody.data) {
106
- case constants_1.HederaTransactionTypes.Transfer:
107
- const transferData = this.getTransferData();
108
- result.instructionsData = {
109
- type: constants_1.HederaTransactionTypes.Transfer,
110
- params: transferData,
111
- };
112
- result.to = result.instructionsData.params.recipients[0].address;
113
- result.amount = result.instructionsData.params.recipients[0].amount;
114
- break;
115
- case constants_1.HederaTransactionTypes.TokenAssociateToAccount:
116
- result.instructionsData = {
117
- type: constants_1.HederaTransactionTypes.TokenAssociateToAccount,
118
- params: this.getAccountAssociateData(),
119
- };
120
- break;
121
- }
122
- return result;
123
- }
124
- /**
125
- * Get the recipient account and the amount
126
- * transferred on this transaction
127
- *
128
- * @returns { tokenName, Recipient[]} is object consisting of tokenName if it's a token transfer and recipients consisting
129
- * the recipient address, the transfer amount, and the token name for token transfer
130
- */
131
- getTransferData() {
132
- var _a, _b, _c, _d, _e;
133
- const [acc] = this.getTxIdParts();
134
- const transferData = [];
135
- const tokenTransfers = ((_a = this._txBody.cryptoTransfer) === null || _a === void 0 ? void 0 : _a.tokenTransfers) || [];
136
- const transfers = ((_b = tokenTransfers[0]) === null || _b === void 0 ? void 0 : _b.transfers) || ((_d = (_c = this._txBody.cryptoTransfer) === null || _c === void 0 ? void 0 : _c.transfers) === null || _d === void 0 ? void 0 : _d.accountAmounts) || [];
137
- const tokenName = tokenTransfers.length
138
- ? (_e = utils_1.getHederaTokenNameFromId(utils_1.stringifyTokenId(tokenTransfers[0].token))) === null || _e === void 0 ? void 0 : _e.name
139
- : undefined;
140
- transfers.forEach((transfer) => {
141
- const amount = Long.fromValue(transfer.amount);
142
- if (amount.isPositive() && utils_1.stringifyAccountId(transfer.accountID) !== acc) {
143
- transferData.push({
144
- address: utils_1.stringifyAccountId(transfer.accountID),
145
- amount: amount.toString(),
146
- ...(tokenTransfers.length && {
147
- tokenName: tokenName,
148
- }),
149
- });
150
- }
151
- });
152
- return {
153
- ...(tokenTransfers.length && {
154
- tokenName: tokenName,
155
- }),
156
- recipients: transferData,
157
- };
158
- }
159
- /**
160
- * Get the recipient account and the amount
161
- * transferred on this transaction
162
- *
163
- * @returns { accountId: string; tokenNames[]} is an object consisting of accountId for the token owner
164
- * and list of tokenNames that will be enabled
165
- */
166
- getAccountAssociateData() {
167
- const tokens = this._txBody.tokenAssociate.tokens || [];
168
- return {
169
- accountId: utils_1.stringifyAccountId(this._txBody.tokenAssociate.account),
170
- tokenNames: tokens.map((token) => utils_1.getHederaTokenNameFromId(utils_1.stringifyTokenId(token)).name),
171
- };
172
- }
173
- // region getters & setters
174
- get txBody() {
175
- return this._txBody;
176
- }
177
- get hederaTx() {
178
- return this._hederaTx;
179
- }
180
- /**
181
- * Sets this transaction body components
182
- *
183
- * @param {proto.Transaction} tx - Body Transaction
184
- */
185
- body(tx) {
186
- this._txBody = proto.TransactionBody.decode(tx.bodyBytes);
187
- this._hederaTx = tx;
188
- this.loadInputsAndOutputs();
189
- }
190
- /**
191
- * Set the transaction type
192
- *
193
- * @param {TransactionType} transactionType - The transaction type to be set
194
- */
195
- setTransactionType(transactionType) {
196
- this._type = transactionType;
197
- }
198
- /**
199
- * Decode previous signatures from the inner hedera transaction
200
- * and save them into the base transaction signature list.
201
- */
202
- loadPreviousSignatures() {
203
- if (this._hederaTx.sigMap && this._hederaTx.sigMap.sigPair) {
204
- const sigPairs = this._hederaTx.sigMap.sigPair;
205
- sigPairs.forEach((sigPair) => {
206
- const signature = sigPair.ed25519;
207
- if (signature) {
208
- this._signatures.push(sdk_core_1.toHex(signature));
209
- }
210
- });
211
- }
212
- }
213
- /**
214
- * Load the input and output data on this transaction using the transaction json
215
- * if there are outputs. For transactions without outputs (e.g. wallet initializations),
216
- * this function will not do anything
217
- */
218
- loadInputsAndOutputs() {
219
- const txJson = this.toJson();
220
- const instruction = txJson.instructionsData;
221
- const outputs = [];
222
- const inputs = [];
223
- switch (instruction === null || instruction === void 0 ? void 0 : instruction.type) {
224
- case constants_1.HederaTransactionTypes.Transfer:
225
- let totalAmount = new bignumber_js_1.default(0);
226
- instruction.params.recipients.forEach((recipient) => {
227
- totalAmount = totalAmount.plus(recipient.amount);
228
- outputs.push({
229
- address: recipient.address,
230
- value: recipient.amount,
231
- coin: recipient.tokenName || this._coinConfig.name,
232
- });
233
- });
234
- inputs.push({
235
- address: txJson.from,
236
- value: totalAmount.toString(),
237
- coin: instruction.params.tokenName || this._coinConfig.name,
238
- });
239
- break;
240
- case constants_1.HederaTransactionTypes.TokenAssociateToAccount:
241
- instruction.params.tokenNames.forEach((tokenName) => {
242
- const tokenEntry = {
243
- address: instruction.params.accountId,
244
- value: '0',
245
- coin: tokenName,
246
- };
247
- inputs.push(tokenEntry);
248
- outputs.push(tokenEntry);
249
- });
250
- break;
251
- }
252
- this._inputs = inputs;
253
- this._outputs = outputs;
254
- }
255
- /**
256
- * Sets this transaction body components
257
- *
258
- * @param {Uint8Array} bytes - Encoded body transaction
259
- */
260
- bodyBytes(bytes) {
261
- this.body(proto.Transaction.decode(bytes));
262
- }
263
- // endregion
264
- // region helpers
265
- /**
266
- * Returns this hedera transaction id components in a readable format
267
- *
268
- * @returns {[string, string]} - Transaction id parts [<account id>, <startTime in seconds>]
269
- */
270
- getTxIdParts() {
271
- if (this._txBody &&
272
- this._txBody.transactionID &&
273
- this._txBody.transactionID.accountID &&
274
- this._txBody.transactionID.transactionValidStart) {
275
- return [
276
- utils_1.stringifyAccountId(this._txBody.transactionID.accountID),
277
- utils_1.stringifyTxTime(this._txBody.transactionID.transactionValidStart),
278
- ];
279
- }
280
- throw new Error('Missing transaction id information');
281
- }
282
- /**
283
- * Returns this transaction hash
284
- *
285
- * @returns {string} - The transaction hash
286
- */
287
- getTxHash() {
288
- if (!this._txBody.nodeAccountID) {
289
- throw new Error('Missing transaction node id');
290
- }
291
- const _signedTx = new proto.SignedTransaction();
292
- _signedTx.sigMap = this._hederaTx.sigMap;
293
- _signedTx.bodyBytes = this._hederaTx.bodyBytes;
294
- const encoder = proto.SignedTransaction;
295
- return this.sha(this.encode(_signedTx, encoder));
296
- }
297
- /**
298
- * Encode an object using the given encoder class
299
- *
300
- * @param {proto} obj - The object to be encoded, must be in proto namespace
301
- * @param encoder - Object encoder
302
- * @returns {Uint8Array} - Encoded object byte array
303
- */
304
- encode(obj, encoder) {
305
- return encoder.encode(obj).finish();
306
- }
307
- /**
308
- * Returns a sha-384 hash
309
- *
310
- * @param {Uint8Array} bytes - Bytes to be hashed
311
- * @returns {string} - The resulting hash string
312
- */
313
- sha(bytes) {
314
- return sdk_core_1.toHex(sha384_1.hash(bytes));
315
- }
316
- }
317
- exports.Transaction = Transaction;
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9oYmFyL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw4Q0FBc0g7QUFDdEgsOENBQXlDO0FBQ3pDLGdFQUFxQztBQUVyQyxnREFBa0M7QUFDbEMsMkNBQTZCO0FBQzdCLHdEQUEwQztBQUUxQyxtQ0FBMEc7QUFFMUcsMkNBQXFEO0FBRXJELE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSzlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFnQjtRQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxJQUFJLHVCQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUMvQztRQUNELE1BQU0sU0FBUyxHQUFHLHVCQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxTQUFpQixFQUFFLEdBQVk7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUMsT0FBTyxDQUFDLFlBQVksR0FBRyx1QkFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsT0FBTyxDQUFDLE9BQU8sR0FBRyx1QkFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDbEMsT0FBTyxnQkFBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsY0FBbUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxjQUFjLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyx1QkFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDbEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QixRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3hCLEtBQUssa0NBQXNCLENBQUMsUUFBUTtnQkFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlDLE1BQU07WUFDUixLQUFLLGtDQUFzQixDQUFDLGFBQWE7Z0JBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywwQkFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQzlELE1BQU07WUFDUixLQUFLLGtDQUFzQixDQUFDLHVCQUF1QjtnQkFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUFlLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDOUUsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixNQUFNO1FBQ0osTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQVc7WUFDckIsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSTtZQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0QixJQUFJLEVBQUUsZ0JBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztZQUNyQyxHQUFHLEVBQUUsSUFBSSxzQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3RFLElBQUksRUFBRSxHQUFHO1lBQ1QsU0FBUyxFQUFFLElBQUk7WUFDZixhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBeUIsQ0FBQyxPQUFRLENBQUMsUUFBUSxFQUFFO1lBQ3pFLElBQUksRUFBRSwwQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWMsQ0FBQztZQUNyRCxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1NBQ3hCLENBQUM7UUFFRixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3pCLEtBQUssa0NBQXNCLENBQUMsUUFBUTtnQkFDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLENBQUMsZ0JBQWdCLEdBQUc7b0JBQ3hCLElBQUksRUFBRSxrQ0FBc0IsQ0FBQyxRQUFRO29CQUNyQyxNQUFNLEVBQUUsWUFBWTtpQkFDckIsQ0FBQztnQkFDRixNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDakUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BFLE1BQU07WUFDUixLQUFLLGtDQUFzQixDQUFDLHVCQUF1QjtnQkFDakQsTUFBTSxDQUFDLGdCQUFnQixHQUFHO29CQUN4QixJQUFJLEVBQUUsa0NBQXNCLENBQUMsdUJBQXVCO29CQUNwRCxNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFO2lCQUN2QyxDQUFDO2dCQUNGLE1BQU07U0FDVDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxlQUFlOztRQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xDLE1BQU0sWUFBWSxHQUFnQixFQUFFLENBQUM7UUFDckMsTUFBTSxjQUFjLEdBQStCLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsMENBQUUsY0FBYyxLQUFJLEVBQUUsQ0FBQztRQUNyRyxNQUFNLFNBQVMsR0FDYixDQUFBLE1BQUEsY0FBYyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxTQUFTLE1BQUksTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYywwQ0FBRSxTQUFTLDBDQUFFLGNBQWMsQ0FBQSxJQUFJLEVBQUUsQ0FBQztRQUMvRixNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsTUFBTTtZQUNyQyxDQUFDLENBQUMsTUFBQSxnQ0FBd0IsQ0FBQyx3QkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUMsMENBQUUsSUFBSTtZQUM1RSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU8sQ0FBQyxDQUFDO1lBQ2hELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLDBCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFVLENBQUMsS0FBSyxHQUFHLEVBQUU7Z0JBQzFFLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLE9BQU8sRUFBRSwwQkFBa0IsQ0FBQyxRQUFRLENBQUMsU0FBVSxDQUFDO29CQUNoRCxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDekIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUk7d0JBQzNCLFNBQVMsRUFBRSxTQUFTO3FCQUNyQixDQUFDO2lCQUNILENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUk7Z0JBQzNCLFNBQVMsRUFBRSxTQUFTO2FBQ3JCLENBQUM7WUFDRixVQUFVLEVBQUUsWUFBWTtTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLHVCQUF1QjtRQUM3QixNQUFNLE1BQU0sR0FBcUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFlLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUMzRSxPQUFPO1lBQ0wsU0FBUyxFQUFFLDBCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBZSxDQUFDLE9BQVEsQ0FBQztZQUNwRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRSxDQUFDLGdDQUF3QixDQUFDLHdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFDO1NBQzNHLENBQUM7SUFDSixDQUFDO0lBRUQsMkJBQTJCO0lBQzNCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLEVBQXFCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsZUFBZ0M7UUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILHNCQUFzQjtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDL0MsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUNsQyxJQUFJLFNBQVMsRUFBRTtvQkFDYixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ3pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0JBQW9CO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQztRQUUzQixRQUFRLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxJQUFJLEVBQUU7WUFDekIsS0FBSyxrQ0FBc0IsQ0FBQyxRQUFRO2dCQUNsQyxJQUFJLFdBQVcsR0FBRyxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUNsRCxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ1gsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO3dCQUMxQixLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU07d0JBQ3ZCLElBQUksRUFBRSxTQUFTLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtxQkFDbkQsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUNwQixLQUFLLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRTtvQkFDN0IsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtpQkFDNUQsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFFUixLQUFLLGtDQUFzQixDQUFDLHVCQUF1QjtnQkFDakQsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ2xELE1BQU0sVUFBVSxHQUFVO3dCQUN4QixPQUFPLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTO3dCQUNyQyxLQUFLLEVBQUUsR0FBRzt3QkFDVixJQUFJLEVBQUUsU0FBUztxQkFDaEIsQ0FBQztvQkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzQixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1NBQ1Q7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxLQUFpQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELFlBQVk7SUFFWixpQkFBaUI7SUFDakI7Ozs7T0FJRztJQUNILFlBQVk7UUFDVixJQUNFLElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQ2hEO1lBQ0EsT0FBTztnQkFDTCwwQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3hELHVCQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUM7YUFDbEUsQ0FBQztTQUNIO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDaEQ7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2hELFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDekMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUUvQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FDWixHQUFNLEVBQ04sT0FBbUM7UUFFbkMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxLQUFpQjtRQUNuQixPQUFPLGdCQUFLLENBQUMsYUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBOVRELGtDQThUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlS2V5LCBCYXNlVHJhbnNhY3Rpb24sIEVudHJ5LCBTaWduaW5nRXJyb3IsIHRvSGV4LCB0b1VpbnQ4QXJyYXksIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnQHN0YWJsZWxpYi9zaGEzODQnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgV3JpdGVyIH0gZnJvbSAncHJvdG9idWZqcyc7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgKiBhcyBMb25nIGZyb20gJ2xvbmcnO1xuaW1wb3J0ICogYXMgcHJvdG8gZnJvbSAnQGhhc2hncmFwaC9wcm90byc7XG5pbXBvcnQgeyBUeERhdGEsIFJlY2lwaWVudCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgc3RyaW5naWZ5QWNjb3VudElkLCBzdHJpbmdpZnlUeFRpbWUsIHN0cmluZ2lmeVRva2VuSWQsIGdldEhlZGVyYVRva2VuTmFtZUZyb21JZCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4vJztcbmltcG9ydCB7IEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX2hlZGVyYVR4OiBwcm90by5UcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfdHhCb2R5OiBwcm90by5UcmFuc2FjdGlvbkJvZHk7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgc2lnbihrZXlQYWlyOiBLZXlQYWlyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cyh0cnVlKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IHNlY3JldEtleSA9IHRvVWludDhBcnJheShrZXlzLnBydiArIGtleXMucHViKTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBuYWNsLnNpZ24uZGV0YWNoZWQodGhpcy5faGVkZXJhVHguYm9keUJ5dGVzLCBzZWNyZXRLZXkpO1xuICAgIHRoaXMuYWRkU2lnbmF0dXJlKHRvSGV4KHNpZ25hdHVyZSksIGtleVBhaXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpZ25hdHVyZSB0byB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgLSBUaGUgc2lnbmF0dXJlIHRvIGFkZCwgaW4gc3RyaW5nIGhleCBmb3JtYXRcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBrZXkgdGhhdCBjcmVhdGVkIHRoZSBzaWduYXR1cmVcbiAgICovXG4gIGFkZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywga2V5OiBLZXlQYWlyKTogdm9pZCB7XG4gICAgY29uc3Qgc2lnUGFpciA9IG5ldyBwcm90by5TaWduYXR1cmVQYWlyKCk7XG4gICAgc2lnUGFpci5wdWJLZXlQcmVmaXggPSB0b1VpbnQ4QXJyYXkoa2V5LmdldEtleXModHJ1ZSkucHViKTtcbiAgICBzaWdQYWlyLmVkMjU1MTkgPSB0b1VpbnQ4QXJyYXkoc2lnbmF0dXJlKTtcblxuICAgIGNvbnN0IHNpZ01hcCA9IHRoaXMuX2hlZGVyYVR4LnNpZ01hcCB8fCBuZXcgcHJvdG8uU2lnbmF0dXJlTWFwKCk7XG4gICAgc2lnTWFwLnNpZ1BhaXIhLnB1c2goc2lnUGFpcik7XG4gICAgdGhpcy5faGVkZXJhVHguc2lnTWFwID0gc2lnTWFwO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5jb2RlciA9IHByb3RvLlRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB0b0hleCh0aGlzLmVuY29kZSh0aGlzLl9oZWRlcmFUeCwgZW5jb2RlcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBwYXlsb2FkXG4gICAqXG4gICAqIEBwYXJhbSByYXdUcmFuc2FjdGlvblxuICAgKi9cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYnVmZmVyID0gdHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJyA/IHRvVWludDhBcnJheShyYXdUcmFuc2FjdGlvbikgOiByYXdUcmFuc2FjdGlvbjtcbiAgICB0aGlzLmJvZHlCeXRlcyhidWZmZXIpO1xuICAgIHN3aXRjaCAodGhpcy50eEJvZHkuZGF0YSkge1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRyYW5zZmVyOlxuICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLkNyZWF0ZUFjY291bnQ6XG4gICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRva2VuQXNzb2NpYXRlVG9BY2NvdW50OlxuICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IFthY2MsIHRpbWVdID0gdGhpcy5nZXRUeElkUGFydHMoKTtcbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiBhY2MgKyAnQCcgKyB0aW1lLFxuICAgICAgaGFzaDogdGhpcy5nZXRUeEhhc2goKSwgLy8gVE9ETzogVXBkYXRlIG9uY2UgaGVkZXJhLXNkayByZWxlYXNlIHRoaXMgZnVuY3Rpb25hbGl0eSBCR0EtMjg0XG4gICAgICBkYXRhOiB0b0hleCh0aGlzLl9oZWRlcmFUeC5ib2R5Qnl0ZXMpLFxuICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbkZlZSEudG9TdHJpbmcoKSkudG9OdW1iZXIoKSxcbiAgICAgIGZyb206IGFjYyxcbiAgICAgIHN0YXJ0VGltZTogdGltZSxcbiAgICAgIHZhbGlkRHVyYXRpb246IHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvblZhbGlkRHVyYXRpb24hLnNlY29uZHMhLnRvU3RyaW5nKCksXG4gICAgICBub2RlOiBzdHJpbmdpZnlBY2NvdW50SWQodGhpcy5fdHhCb2R5Lm5vZGVBY2NvdW50SUQhKSxcbiAgICAgIG1lbW86IHRoaXMuX3R4Qm9keS5tZW1vLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3R4Qm9keS5kYXRhKSB7XG4gICAgICBjYXNlIEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVHJhbnNmZXI6XG4gICAgICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IHRoaXMuZ2V0VHJhbnNmZXJEYXRhKCk7XG4gICAgICAgIHJlc3VsdC5pbnN0cnVjdGlvbnNEYXRhID0ge1xuICAgICAgICAgIHR5cGU6IEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVHJhbnNmZXIsXG4gICAgICAgICAgcGFyYW1zOiB0cmFuc2ZlckRhdGEsXG4gICAgICAgIH07XG4gICAgICAgIHJlc3VsdC50byA9IHJlc3VsdC5pbnN0cnVjdGlvbnNEYXRhLnBhcmFtcy5yZWNpcGllbnRzWzBdLmFkZHJlc3M7XG4gICAgICAgIHJlc3VsdC5hbW91bnQgPSByZXN1bHQuaW5zdHJ1Y3Rpb25zRGF0YS5wYXJhbXMucmVjaXBpZW50c1swXS5hbW91bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRva2VuQXNzb2NpYXRlVG9BY2NvdW50OlxuICAgICAgICByZXN1bHQuaW5zdHJ1Y3Rpb25zRGF0YSA9IHtcbiAgICAgICAgICB0eXBlOiBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRva2VuQXNzb2NpYXRlVG9BY2NvdW50LFxuICAgICAgICAgIHBhcmFtczogdGhpcy5nZXRBY2NvdW50QXNzb2NpYXRlRGF0YSgpLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVjaXBpZW50IGFjY291bnQgYW5kIHRoZSBhbW91bnRcbiAgICogdHJhbnNmZXJyZWQgb24gdGhpcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcmV0dXJucyB7IHRva2VuTmFtZSwgUmVjaXBpZW50W119IGlzIG9iamVjdCBjb25zaXN0aW5nIG9mIHRva2VuTmFtZSBpZiBpdCdzIGEgdG9rZW4gdHJhbnNmZXIgYW5kIHJlY2lwaWVudHMgY29uc2lzdGluZ1xuICAgKiAgdGhlIHJlY2lwaWVudCBhZGRyZXNzLCB0aGUgdHJhbnNmZXIgYW1vdW50LCBhbmQgdGhlIHRva2VuIG5hbWUgZm9yIHRva2VuIHRyYW5zZmVyXG4gICAqL1xuICBwcml2YXRlIGdldFRyYW5zZmVyRGF0YSgpOiB7IHRva2VuTmFtZT86IHN0cmluZzsgcmVjaXBpZW50czogUmVjaXBpZW50W10gfSB7XG4gICAgY29uc3QgW2FjY10gPSB0aGlzLmdldFR4SWRQYXJ0cygpO1xuICAgIGNvbnN0IHRyYW5zZmVyRGF0YTogUmVjaXBpZW50W10gPSBbXTtcbiAgICBjb25zdCB0b2tlblRyYW5zZmVyczogcHJvdG8uSVRva2VuVHJhbnNmZXJMaXN0W10gPSB0aGlzLl90eEJvZHkuY3J5cHRvVHJhbnNmZXI/LnRva2VuVHJhbnNmZXJzIHx8IFtdO1xuICAgIGNvbnN0IHRyYW5zZmVyczogcHJvdG8uSUFjY291bnRBbW91bnRbXSA9XG4gICAgICB0b2tlblRyYW5zZmVyc1swXT8udHJhbnNmZXJzIHx8IHRoaXMuX3R4Qm9keS5jcnlwdG9UcmFuc2Zlcj8udHJhbnNmZXJzPy5hY2NvdW50QW1vdW50cyB8fCBbXTtcbiAgICBjb25zdCB0b2tlbk5hbWUgPSB0b2tlblRyYW5zZmVycy5sZW5ndGhcbiAgICAgID8gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHN0cmluZ2lmeVRva2VuSWQodG9rZW5UcmFuc2ZlcnNbMF0udG9rZW4hKSk/Lm5hbWVcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgdHJhbnNmZXJzLmZvckVhY2goKHRyYW5zZmVyKSA9PiB7XG4gICAgICBjb25zdCBhbW91bnQgPSBMb25nLmZyb21WYWx1ZSh0cmFuc2Zlci5hbW91bnQhKTtcbiAgICAgIGlmIChhbW91bnQuaXNQb3NpdGl2ZSgpICYmIHN0cmluZ2lmeUFjY291bnRJZCh0cmFuc2Zlci5hY2NvdW50SUQhKSAhPT0gYWNjKSB7XG4gICAgICAgIHRyYW5zZmVyRGF0YS5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiBzdHJpbmdpZnlBY2NvdW50SWQodHJhbnNmZXIuYWNjb3VudElEISksXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAuLi4odG9rZW5UcmFuc2ZlcnMubGVuZ3RoICYmIHtcbiAgICAgICAgICAgIHRva2VuTmFtZTogdG9rZW5OYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi4odG9rZW5UcmFuc2ZlcnMubGVuZ3RoICYmIHtcbiAgICAgICAgdG9rZW5OYW1lOiB0b2tlbk5hbWUsXG4gICAgICB9KSxcbiAgICAgIHJlY2lwaWVudHM6IHRyYW5zZmVyRGF0YSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVjaXBpZW50IGFjY291bnQgYW5kIHRoZSBhbW91bnRcbiAgICogdHJhbnNmZXJyZWQgb24gdGhpcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcmV0dXJucyB7IGFjY291bnRJZDogc3RyaW5nOyB0b2tlbk5hbWVzW119IGlzIGFuIG9iamVjdCBjb25zaXN0aW5nIG9mIGFjY291bnRJZCBmb3IgdGhlIHRva2VuIG93bmVyXG4gICAqICBhbmQgbGlzdCBvZiB0b2tlbk5hbWVzIHRoYXQgd2lsbCBiZSBlbmFibGVkXG4gICAqL1xuICBwcml2YXRlIGdldEFjY291bnRBc3NvY2lhdGVEYXRhKCk6IHsgYWNjb3VudElkOiBzdHJpbmc7IHRva2VuTmFtZXM6IHN0cmluZ1tdIH0ge1xuICAgIGNvbnN0IHRva2VuczogcHJvdG8uSVRva2VuSURbXSA9IHRoaXMuX3R4Qm9keS50b2tlbkFzc29jaWF0ZSEudG9rZW5zIHx8IFtdO1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50SWQ6IHN0cmluZ2lmeUFjY291bnRJZCh0aGlzLl90eEJvZHkudG9rZW5Bc3NvY2lhdGUhLmFjY291bnQhKSxcbiAgICAgIHRva2VuTmFtZXM6IHRva2Vucy5tYXAoKHRva2VuOiBwcm90by5JVG9rZW5JRCkgPT4gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHN0cmluZ2lmeVRva2VuSWQodG9rZW4pKSEubmFtZSksXG4gICAgfTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBnZXR0ZXJzICYgc2V0dGVyc1xuICBnZXQgdHhCb2R5KCk6IHByb3RvLlRyYW5zYWN0aW9uQm9keSB7XG4gICAgcmV0dXJuIHRoaXMuX3R4Qm9keTtcbiAgfVxuXG4gIGdldCBoZWRlcmFUeCgpOiBwcm90by5UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hlZGVyYVR4O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBib2R5IGNvbXBvbmVudHNcbiAgICpcbiAgICogQHBhcmFtIHtwcm90by5UcmFuc2FjdGlvbn0gdHggLSBCb2R5IFRyYW5zYWN0aW9uXG4gICAqL1xuICBib2R5KHR4OiBwcm90by5UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3R4Qm9keSA9IHByb3RvLlRyYW5zYWN0aW9uQm9keS5kZWNvZGUodHguYm9keUJ5dGVzKTtcbiAgICB0aGlzLl9oZWRlcmFUeCA9IHR4O1xuICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSAtIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldFxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGUgcHJldmlvdXMgc2lnbmF0dXJlcyBmcm9tIHRoZSBpbm5lciBoZWRlcmEgdHJhbnNhY3Rpb25cbiAgICogYW5kIHNhdmUgdGhlbSBpbnRvIHRoZSBiYXNlIHRyYW5zYWN0aW9uIHNpZ25hdHVyZSBsaXN0LlxuICAgKi9cbiAgbG9hZFByZXZpb3VzU2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faGVkZXJhVHguc2lnTWFwICYmIHRoaXMuX2hlZGVyYVR4LnNpZ01hcC5zaWdQYWlyKSB7XG4gICAgICBjb25zdCBzaWdQYWlycyA9IHRoaXMuX2hlZGVyYVR4LnNpZ01hcC5zaWdQYWlyO1xuICAgICAgc2lnUGFpcnMuZm9yRWFjaCgoc2lnUGFpcikgPT4ge1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBzaWdQYWlyLmVkMjU1MTk7XG4gICAgICAgIGlmIChzaWduYXR1cmUpIHtcbiAgICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godG9IZXgoc2lnbmF0dXJlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgdHJhbnNhY3Rpb24ganNvblxuICAgKiBpZiB0aGVyZSBhcmUgb3V0cHV0cy4gRm9yIHRyYW5zYWN0aW9ucyB3aXRob3V0IG91dHB1dHMgKGUuZy4gd2FsbGV0IGluaXRpYWxpemF0aW9ucyksXG4gICAqIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZG8gYW55dGhpbmdcbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHR4SnNvbiA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb24gPSB0eEpzb24uaW5zdHJ1Y3Rpb25zRGF0YTtcbiAgICBjb25zdCBvdXRwdXRzOiBFbnRyeVtdID0gW107XG4gICAgY29uc3QgaW5wdXRzOiBFbnRyeVtdID0gW107XG5cbiAgICBzd2l0Y2ggKGluc3RydWN0aW9uPy50eXBlKSB7XG4gICAgICBjYXNlIEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVHJhbnNmZXI6XG4gICAgICAgIGxldCB0b3RhbEFtb3VudCA9IG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgICAgIGluc3RydWN0aW9uLnBhcmFtcy5yZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICAgIHRvdGFsQW1vdW50ID0gdG90YWxBbW91bnQucGx1cyhyZWNpcGllbnQuYW1vdW50KTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogcmVjaXBpZW50LmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHJlY2lwaWVudC50b2tlbk5hbWUgfHwgdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IHR4SnNvbi5mcm9tLFxuICAgICAgICAgIHZhbHVlOiB0b3RhbEFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIGNvaW46IGluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWUgfHwgdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgSGVkZXJhVHJhbnNhY3Rpb25UeXBlcy5Ub2tlbkFzc29jaWF0ZVRvQWNjb3VudDpcbiAgICAgICAgaW5zdHJ1Y3Rpb24ucGFyYW1zLnRva2VuTmFtZXMuZm9yRWFjaCgodG9rZW5OYW1lKSA9PiB7XG4gICAgICAgICAgY29uc3QgdG9rZW5FbnRyeTogRW50cnkgPSB7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuYWNjb3VudElkLFxuICAgICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgICAgIGNvaW46IHRva2VuTmFtZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlucHV0cy5wdXNoKHRva2VuRW50cnkpO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh0b2tlbkVudHJ5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gICAgdGhpcy5fb3V0cHV0cyA9IG91dHB1dHM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIGJvZHkgY29tcG9uZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGVzIC0gRW5jb2RlZCBib2R5IHRyYW5zYWN0aW9uXG4gICAqL1xuICBib2R5Qnl0ZXMoYnl0ZXM6IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgICB0aGlzLmJvZHkocHJvdG8uVHJhbnNhY3Rpb24uZGVjb2RlKGJ5dGVzKSk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIGhlbHBlcnNcbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyBoZWRlcmEgdHJhbnNhY3Rpb24gaWQgY29tcG9uZW50cyBpbiBhIHJlYWRhYmxlIGZvcm1hdFxuICAgKlxuICAgKiBAcmV0dXJucyB7W3N0cmluZywgc3RyaW5nXX0gLSBUcmFuc2FjdGlvbiBpZCBwYXJ0cyBbPGFjY291bnQgaWQ+LCA8c3RhcnRUaW1lIGluIHNlY29uZHM+XVxuICAgKi9cbiAgZ2V0VHhJZFBhcnRzKCk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICAgIGlmIChcbiAgICAgIHRoaXMuX3R4Qm9keSAmJlxuICAgICAgdGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQgJiZcbiAgICAgIHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbklELmFjY291bnRJRCAmJlxuICAgICAgdGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQudHJhbnNhY3Rpb25WYWxpZFN0YXJ0XG4gICAgKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBzdHJpbmdpZnlBY2NvdW50SWQodGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQuYWNjb3VudElEKSxcbiAgICAgICAgc3RyaW5naWZ5VHhUaW1lKHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbklELnRyYW5zYWN0aW9uVmFsaWRTdGFydCksXG4gICAgICBdO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgdHJhbnNhY3Rpb24gaWQgaW5mb3JtYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoaXMgdHJhbnNhY3Rpb24gaGFzaFxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0cmFuc2FjdGlvbiBoYXNoXG4gICAqL1xuICBnZXRUeEhhc2goKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3R4Qm9keS5ub2RlQWNjb3VudElEKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgdHJhbnNhY3Rpb24gbm9kZSBpZCcpO1xuICAgIH1cbiAgICBjb25zdCBfc2lnbmVkVHggPSBuZXcgcHJvdG8uU2lnbmVkVHJhbnNhY3Rpb24oKTtcbiAgICBfc2lnbmVkVHguc2lnTWFwID0gdGhpcy5faGVkZXJhVHguc2lnTWFwO1xuICAgIF9zaWduZWRUeC5ib2R5Qnl0ZXMgPSB0aGlzLl9oZWRlcmFUeC5ib2R5Qnl0ZXM7XG5cbiAgICBjb25zdCBlbmNvZGVyID0gcHJvdG8uU2lnbmVkVHJhbnNhY3Rpb247XG4gICAgcmV0dXJuIHRoaXMuc2hhKHRoaXMuZW5jb2RlKF9zaWduZWRUeCwgZW5jb2RlcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBhbiBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIGVuY29kZXIgY2xhc3NcbiAgICpcbiAgICogQHBhcmFtIHtwcm90b30gb2JqIC0gVGhlIG9iamVjdCB0byBiZSBlbmNvZGVkLCBtdXN0IGJlIGluIHByb3RvIG5hbWVzcGFjZVxuICAgKiBAcGFyYW0gZW5jb2RlciAtIE9iamVjdCBlbmNvZGVyXG4gICAqIEByZXR1cm5zIHtVaW50OEFycmF5fSAtIEVuY29kZWQgb2JqZWN0IGJ5dGUgYXJyYXlcbiAgICovXG4gIHByaXZhdGUgZW5jb2RlPEN0b3JGbiBleHRlbmRzIHsgbmV3ICgpOiBUIH0sIFQgZXh0ZW5kcyB7IGNvbnN0cnVjdG9yOiBDdG9yRm4gfT4oXG4gICAgb2JqOiBULFxuICAgIGVuY29kZXI6IHsgZW5jb2RlKGFyZzogVCk6IFdyaXRlciB9LFxuICApOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gZW5jb2Rlci5lbmNvZGUob2JqKS5maW5pc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc2hhLTM4NCBoYXNoXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZXMgLSBCeXRlcyB0byBiZSBoYXNoZWRcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcmVzdWx0aW5nIGhhc2ggc3RyaW5nXG4gICAqL1xuICBzaGEoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b0hleChoYXNoKGJ5dGVzKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,111 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
- import BigNumber from 'bignumber.js';
3
- import * as proto from '@hashgraph/proto';
4
- import { BaseAddress, BaseFee, BaseKey, BaseTransactionBuilder } from '@bitgo/sdk-core';
5
- import { Transaction } from './transaction';
6
- import { KeyPair } from './keyPair';
7
- import { HederaNode, SignatureData } from './iface';
8
- export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
9
- protected _fee: BaseFee;
10
- private _transaction;
11
- protected _source: BaseAddress;
12
- protected _startTime: proto.ITimestamp;
13
- protected _memo: string;
14
- protected _txBody: proto.TransactionBody;
15
- protected _node: HederaNode;
16
- protected _duration: proto.Duration;
17
- protected _multiSignerKeyPairs: KeyPair[];
18
- protected _signatures: SignatureData[];
19
- protected constructor(_coinConfig: Readonly<CoinConfig>);
20
- /** @inheritdoc */
21
- protected buildImplementation(): Promise<Transaction>;
22
- /** @inheritdoc */
23
- protected fromImplementation(rawTransaction: Uint8Array | string): Transaction;
24
- /** @inheritdoc */
25
- protected signImplementation(key: BaseKey): Transaction;
26
- /**
27
- * Initialize the transaction builder fields using the decoded transaction data
28
- *
29
- * @param {Transaction} tx - the transaction data
30
- */
31
- initBuilder(tx: Transaction): void;
32
- /**
33
- * Creates a Hedera TransactionID
34
- *
35
- * @returns {proto.TransactionID} - Created TransactionID
36
- */
37
- protected buildTxId(): proto.TransactionID;
38
- /**
39
- * Set the memo
40
- *
41
- * @param {string} memo - A hedera memo, can be a maximum of 100 bytes
42
- * @returns {TransactionBuilder} - This transaction builder
43
- */
44
- memo(memo: string): this;
45
- /**
46
- * Set the node, it may take the format `'<shard>.<realm>.<account>'` or `'<account>'`
47
- *
48
- * @param {HederaNode} node - A hedera node address
49
- * @returns {TransactionBuilder} - This transaction builder
50
- */
51
- node(node: HederaNode): this;
52
- /**
53
- * Set the transaction valid duration
54
- *
55
- * @param {number} validDuration - The transaction valid duration in seconds
56
- * @returns {TransactionBuilder} - This transaction builder
57
- */
58
- validDuration(validDuration: number): this;
59
- /**
60
- * Set the transaction fees
61
- *
62
- * @param {BaseFee} fee - The maximum gas to pay
63
- * @returns {TransactionBuilder} - This transaction builder
64
- */
65
- fee(fee: BaseFee): this;
66
- /**
67
- * Set the transaction source
68
- *
69
- * @param {BaseAddress} address - The source account
70
- * @returns {TransactionBuilder} - This transaction builder
71
- */
72
- source(address: BaseAddress): this;
73
- /**
74
- * Set an external transaction signature
75
- *
76
- * @param {string} signature - Hex encoded signature string
77
- * @param {KeyPair} keyPair - The public key keypair that was used to create the signature
78
- * @returns {TransactionBuilder} - Transaction builder
79
- */
80
- signature(signature: string, keyPair: KeyPair): this;
81
- /**
82
- * Set the start time
83
- *
84
- * @param {string} time - String value of the time to set with format <seconds>.<nanos>
85
- * @returns {TransactionBuilder} - this
86
- */
87
- startTime(time: string): this;
88
- private get validStart();
89
- /** @inheritdoc */
90
- protected get transaction(): Transaction;
91
- /** @inheritdoc */
92
- protected set transaction(transaction: Transaction);
93
- /** @inheritdoc */
94
- validateAddress(address: BaseAddress, addressFormat?: string): void;
95
- /** @inheritdoc */
96
- validateKey(key: BaseKey): void;
97
- /** @inheritdoc */
98
- validateRawTransaction(rawTransaction: any): void;
99
- /** @inheritdoc */
100
- validateTransaction(transaction?: Transaction): void;
101
- /** @inheritdoc */
102
- validateValue(value: BigNumber): void;
103
- validateMandatoryFields(): void;
104
- /**
105
- * Validates that the given key is not already in this._multiSignerKeyPairs
106
- *
107
- * @param {BaseKey} key - The key to check
108
- */
109
- private checkDuplicatedKeys;
110
- }
111
- //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/hbar/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,sBAAsB,EAKvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEpD,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,YAAY,CAAc;IAClC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;IAC/B,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;IACvC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC;IACzC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAuB;IAClD,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAyD;IAC5F,SAAS,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAC1C,SAAS,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;IAEvC,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAUvD,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAiB3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW;IAQ9E,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAUvD;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAclC;;;;OAIG;IACH,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,aAAa;IAS1C;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAM1C;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAMvB;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMlC;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAcpD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW7B,OAAO,KAAK,UAAU,GAKrB;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAID,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAM/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAMjD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAIpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,uBAAuB,IAAI,IAAI;IAS/B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}