@bitgo/sdk-core 1.1.0-rc.2 → 1.1.0-rc.22

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 (345) hide show
  1. package/CHANGELOG.md +222 -0
  2. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +2 -2
  3. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +1 -1
  5. package/dist/src/account-lib/baseCoin/enum.d.ts +9 -4
  6. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  7. package/dist/src/account-lib/baseCoin/enum.js +15 -6
  8. package/dist/src/account-lib/baseCoin/errors.d.ts +0 -6
  9. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
  10. package/dist/src/account-lib/baseCoin/errors.js +2 -11
  11. package/dist/src/account-lib/baseCoin/iface.d.ts +2 -9
  12. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  13. package/dist/src/account-lib/baseCoin/iface.js +1 -1
  14. package/dist/src/account-lib/baseCoin/index.d.ts +1 -1
  15. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
  16. package/dist/src/account-lib/baseCoin/index.js +3 -2
  17. package/dist/src/account-lib/index.d.ts +1 -0
  18. package/dist/src/account-lib/index.d.ts.map +1 -1
  19. package/dist/src/account-lib/index.js +2 -1
  20. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts +19 -0
  21. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts.map +1 -0
  22. package/dist/src/account-lib/mpc/curves/baseCurve.js +6 -0
  23. package/dist/src/account-lib/mpc/curves/ed25519.d.ts +17 -0
  24. package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -0
  25. package/dist/src/account-lib/mpc/curves/ed25519.js +57 -0
  26. package/dist/src/account-lib/mpc/curves/index.d.ts +6 -0
  27. package/dist/src/account-lib/mpc/curves/index.d.ts.map +1 -0
  28. package/dist/src/account-lib/mpc/curves/index.js +8 -0
  29. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts +17 -0
  30. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -0
  31. package/dist/src/account-lib/mpc/curves/secp256k1.js +70 -0
  32. package/dist/src/account-lib/mpc/hdTree.d.ts +24 -0
  33. package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -0
  34. package/dist/src/account-lib/mpc/hdTree.js +94 -0
  35. package/dist/src/account-lib/mpc/index.d.ts +8 -0
  36. package/dist/src/account-lib/mpc/index.d.ts.map +1 -0
  37. package/dist/src/account-lib/mpc/index.js +23 -0
  38. package/dist/src/account-lib/mpc/shamir.d.ts +26 -0
  39. package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -0
  40. package/dist/src/account-lib/mpc/shamir.js +86 -0
  41. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +71 -0
  42. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
  43. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +329 -0
  44. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts +4 -0
  45. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts.map +1 -0
  46. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +29 -0
  47. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +150 -0
  48. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -0
  49. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +3 -0
  50. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +29 -0
  51. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
  52. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +276 -0
  53. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts +4 -0
  54. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts.map +1 -0
  55. package/dist/src/account-lib/mpc/tss/eddsa/index.js +30 -0
  56. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +70 -0
  57. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -0
  58. package/dist/src/account-lib/mpc/tss/eddsa/types.js +3 -0
  59. package/dist/src/account-lib/mpc/tss/index.d.ts +6 -0
  60. package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -0
  61. package/dist/src/account-lib/mpc/tss/index.js +35 -0
  62. package/dist/src/account-lib/mpc/util.d.ts +15 -0
  63. package/dist/src/account-lib/mpc/util.d.ts.map +1 -0
  64. package/dist/src/account-lib/mpc/util.js +52 -0
  65. package/dist/src/api/bip32path.d.ts +24 -0
  66. package/dist/src/api/bip32path.d.ts.map +1 -0
  67. package/dist/src/api/bip32path.js +45 -0
  68. package/dist/src/api/index.d.ts +3 -0
  69. package/dist/src/api/index.d.ts.map +1 -0
  70. package/dist/src/{v2 → api}/index.js +2 -2
  71. package/dist/src/api/types.d.ts +20 -0
  72. package/dist/src/api/types.d.ts.map +1 -0
  73. package/dist/src/api/types.js +3 -0
  74. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +235 -0
  75. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -0
  76. package/dist/src/bitgo/baseCoin/baseCoin.js +300 -0
  77. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +259 -0
  78. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -0
  79. package/dist/src/bitgo/baseCoin/iBaseCoin.js +3 -0
  80. package/dist/src/bitgo/baseCoin/index.d.ts +3 -0
  81. package/dist/src/bitgo/baseCoin/index.d.ts.map +1 -0
  82. package/dist/src/bitgo/baseCoin/index.js +15 -0
  83. package/dist/src/bitgo/bip32util.d.ts +17 -0
  84. package/dist/src/bitgo/bip32util.d.ts.map +1 -0
  85. package/dist/src/bitgo/bip32util.js +59 -0
  86. package/dist/src/bitgo/bitcoin.d.ts +16 -0
  87. package/dist/src/bitgo/bitcoin.d.ts.map +1 -0
  88. package/dist/src/bitgo/bitcoin.js +52 -0
  89. package/dist/src/bitgo/bitgoBase.d.ts +22 -0
  90. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -0
  91. package/dist/src/bitgo/bitgoBase.js +3 -0
  92. package/dist/src/bitgo/coinFactory.d.ts +35 -0
  93. package/dist/src/bitgo/coinFactory.d.ts.map +1 -0
  94. package/dist/src/bitgo/coinFactory.js +59 -0
  95. package/dist/src/bitgo/config.d.ts +93 -0
  96. package/dist/src/bitgo/config.d.ts.map +1 -0
  97. package/dist/src/bitgo/config.js +72 -0
  98. package/dist/src/bitgo/ecdh.d.ts +24 -0
  99. package/dist/src/bitgo/ecdh.d.ts.map +1 -0
  100. package/dist/src/bitgo/ecdh.js +80 -0
  101. package/dist/src/bitgo/enterprise/enterprise.d.ts +64 -0
  102. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -0
  103. package/dist/src/bitgo/enterprise/enterprise.js +120 -0
  104. package/dist/src/bitgo/enterprise/enterprises.d.ts +25 -0
  105. package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -0
  106. package/dist/src/bitgo/enterprise/enterprises.js +70 -0
  107. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +15 -0
  108. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -0
  109. package/dist/src/bitgo/enterprise/iEnterprise.js +3 -0
  110. package/dist/src/bitgo/enterprise/iEnterprises.d.ts +10 -0
  111. package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -0
  112. package/dist/src/bitgo/enterprise/iEnterprises.js +3 -0
  113. package/dist/src/bitgo/enterprise/index.d.ts +5 -0
  114. package/dist/src/bitgo/enterprise/index.d.ts.map +1 -0
  115. package/dist/src/bitgo/enterprise/index.js +17 -0
  116. package/dist/src/{v2 → bitgo}/environments.d.ts +0 -0
  117. package/dist/src/bitgo/environments.d.ts.map +1 -0
  118. package/dist/src/bitgo/environments.js +142 -0
  119. package/dist/src/bitgo/errors.d.ts +83 -0
  120. package/dist/src/bitgo/errors.d.ts.map +1 -0
  121. package/dist/src/bitgo/errors.js +163 -0
  122. package/dist/src/bitgo/index.d.ts +27 -0
  123. package/dist/src/bitgo/index.d.ts.map +1 -0
  124. package/dist/src/bitgo/index.js +52 -0
  125. package/dist/src/bitgo/internal/index.d.ts +3 -0
  126. package/dist/src/bitgo/internal/index.d.ts.map +1 -0
  127. package/dist/src/bitgo/internal/index.js +15 -0
  128. package/dist/src/bitgo/internal/internal.d.ts +19 -0
  129. package/dist/src/bitgo/internal/internal.d.ts.map +1 -0
  130. package/dist/src/bitgo/internal/internal.js +33 -0
  131. package/dist/src/bitgo/internal/keycard.d.ts +33 -0
  132. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -0
  133. package/dist/src/bitgo/internal/keycard.js +304 -0
  134. package/dist/src/bitgo/keychain/iKeychains.d.ts +118 -0
  135. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -0
  136. package/dist/src/bitgo/keychain/iKeychains.js +10 -0
  137. package/dist/src/bitgo/keychain/index.d.ts +3 -0
  138. package/dist/src/bitgo/keychain/index.d.ts.map +1 -0
  139. package/dist/src/bitgo/keychain/index.js +15 -0
  140. package/dist/src/bitgo/keychain/keychains.d.ts +90 -0
  141. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -0
  142. package/dist/src/bitgo/keychain/keychains.js +280 -0
  143. package/dist/src/bitgo/market/iMarkets.d.ts +12 -0
  144. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -0
  145. package/dist/src/bitgo/market/iMarkets.js +3 -0
  146. package/dist/src/bitgo/market/index.d.ts +3 -0
  147. package/dist/src/bitgo/market/index.d.ts.map +1 -0
  148. package/dist/src/bitgo/market/index.js +15 -0
  149. package/dist/src/bitgo/market/markets.d.ts +29 -0
  150. package/dist/src/bitgo/market/markets.d.ts.map +1 -0
  151. package/dist/src/bitgo/market/markets.js +70 -0
  152. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +73 -0
  153. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -0
  154. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +28 -0
  155. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts +16 -0
  156. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts.map +1 -0
  157. package/dist/src/bitgo/pendingApproval/iPendingApprovals.js +3 -0
  158. package/dist/src/bitgo/pendingApproval/index.d.ts +5 -0
  159. package/dist/src/bitgo/pendingApproval/index.d.ts.map +1 -0
  160. package/dist/src/bitgo/pendingApproval/index.js +17 -0
  161. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +99 -0
  162. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -0
  163. package/dist/src/bitgo/pendingApproval/pendingApproval.js +319 -0
  164. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts +19 -0
  165. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts.map +1 -0
  166. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +76 -0
  167. package/dist/src/bitgo/recovery/index.d.ts +2 -0
  168. package/dist/src/bitgo/recovery/index.d.ts.map +1 -0
  169. package/dist/src/bitgo/recovery/index.js +14 -0
  170. package/dist/src/bitgo/recovery/initiate.d.ts +49 -0
  171. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -0
  172. package/dist/src/bitgo/recovery/initiate.js +119 -0
  173. package/dist/src/bitgo/staking/iStakingWallet.d.ts +69 -0
  174. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -0
  175. package/dist/src/bitgo/staking/iStakingWallet.js +3 -0
  176. package/dist/src/bitgo/staking/index.d.ts +3 -0
  177. package/dist/src/bitgo/staking/index.d.ts.map +1 -0
  178. package/dist/src/bitgo/staking/index.js +15 -0
  179. package/dist/src/bitgo/staking/stakingWallet.d.ts +67 -0
  180. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -0
  181. package/dist/src/bitgo/staking/stakingWallet.js +153 -0
  182. package/dist/src/bitgo/trading/affirmation.d.ts +35 -0
  183. package/dist/src/bitgo/trading/affirmation.d.ts.map +1 -0
  184. package/dist/src/bitgo/trading/affirmation.js +53 -0
  185. package/dist/src/bitgo/trading/affirmations.d.ts +23 -0
  186. package/dist/src/bitgo/trading/affirmations.d.ts.map +1 -0
  187. package/dist/src/bitgo/trading/affirmations.js +45 -0
  188. package/dist/src/bitgo/trading/iAffirmation.d.ts +15 -0
  189. package/dist/src/bitgo/trading/iAffirmation.d.ts.map +1 -0
  190. package/dist/src/bitgo/trading/iAffirmation.js +13 -0
  191. package/dist/src/bitgo/trading/iAffirmations.d.ts +10 -0
  192. package/dist/src/bitgo/trading/iAffirmations.d.ts.map +1 -0
  193. package/dist/src/bitgo/trading/iAffirmations.js +3 -0
  194. package/dist/src/bitgo/trading/iSettlement.d.ts +25 -0
  195. package/dist/src/bitgo/trading/iSettlement.d.ts.map +1 -0
  196. package/dist/src/bitgo/trading/iSettlement.js +17 -0
  197. package/dist/src/bitgo/trading/iSettlements.d.ts +19 -0
  198. package/dist/src/bitgo/trading/iSettlements.d.ts.map +1 -0
  199. package/dist/src/bitgo/trading/iSettlements.js +3 -0
  200. package/dist/src/bitgo/trading/iTradingAccount.d.ts +41 -0
  201. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -0
  202. package/dist/src/bitgo/trading/iTradingAccount.js +3 -0
  203. package/dist/src/bitgo/trading/iTradingPartner.d.ts +14 -0
  204. package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +1 -0
  205. package/dist/src/bitgo/trading/iTradingPartner.js +17 -0
  206. package/dist/src/bitgo/trading/iTradingPartners.d.ts +15 -0
  207. package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +1 -0
  208. package/dist/src/bitgo/trading/iTradingPartners.js +9 -0
  209. package/dist/src/bitgo/trading/index.d.ts +18 -0
  210. package/dist/src/bitgo/trading/index.d.ts.map +1 -0
  211. package/dist/src/bitgo/trading/index.js +30 -0
  212. package/dist/src/bitgo/trading/lock.d.ts +16 -0
  213. package/dist/src/bitgo/trading/lock.d.ts.map +1 -0
  214. package/dist/src/bitgo/trading/lock.js +12 -0
  215. package/dist/src/bitgo/trading/payload.d.ts +22 -0
  216. package/dist/src/bitgo/trading/payload.d.ts.map +1 -0
  217. package/dist/src/bitgo/trading/payload.js +3 -0
  218. package/dist/src/bitgo/trading/settlement.d.ts +16 -0
  219. package/dist/src/bitgo/trading/settlement.d.ts.map +1 -0
  220. package/dist/src/bitgo/trading/settlement.js +21 -0
  221. package/dist/src/bitgo/trading/settlements.d.ts +32 -0
  222. package/dist/src/bitgo/trading/settlements.d.ts.map +1 -0
  223. package/dist/src/bitgo/trading/settlements.js +61 -0
  224. package/dist/src/bitgo/trading/trade.d.ts +29 -0
  225. package/dist/src/bitgo/trading/trade.d.ts.map +1 -0
  226. package/dist/src/bitgo/trading/trade.js +11 -0
  227. package/dist/src/bitgo/trading/tradingAccount.d.ts +53 -0
  228. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -0
  229. package/dist/src/bitgo/trading/tradingAccount.js +127 -0
  230. package/dist/src/bitgo/trading/tradingPartner.d.ts +26 -0
  231. package/dist/src/bitgo/trading/tradingPartner.d.ts.map +1 -0
  232. package/dist/src/bitgo/trading/tradingPartner.js +31 -0
  233. package/dist/src/bitgo/trading/tradingPartners.d.ts +24 -0
  234. package/dist/src/bitgo/trading/tradingPartners.d.ts.map +1 -0
  235. package/dist/src/bitgo/trading/tradingPartners.js +32 -0
  236. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +35 -0
  237. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -0
  238. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +95 -0
  239. package/dist/src/bitgo/tss/ecdsa/index.d.ts +4 -0
  240. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -0
  241. package/dist/src/bitgo/tss/ecdsa/index.js +26 -0
  242. package/dist/src/bitgo/tss/ecdsa/types.d.ts +30 -0
  243. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -0
  244. package/dist/src/bitgo/tss/ecdsa/types.js +3 -0
  245. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +102 -0
  246. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -0
  247. package/dist/src/bitgo/tss/eddsa/eddsa.js +256 -0
  248. package/dist/src/bitgo/tss/eddsa/index.d.ts +6 -0
  249. package/dist/src/bitgo/tss/eddsa/index.d.ts.map +1 -0
  250. package/dist/src/bitgo/tss/eddsa/index.js +37 -0
  251. package/dist/src/bitgo/tss/eddsa/types.d.ts +23 -0
  252. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -0
  253. package/dist/src/bitgo/tss/eddsa/types.js +3 -0
  254. package/dist/src/bitgo/tss/index.d.ts +6 -0
  255. package/dist/src/bitgo/tss/index.d.ts.map +1 -0
  256. package/dist/src/bitgo/tss/index.js +42 -0
  257. package/dist/src/bitgo/tss/types.d.ts +6 -0
  258. package/dist/src/bitgo/tss/types.d.ts.map +1 -0
  259. package/dist/src/bitgo/tss/types.js +10 -0
  260. package/dist/src/bitgo/types.d.ts +4 -0
  261. package/dist/src/bitgo/types.d.ts.map +1 -0
  262. package/dist/src/bitgo/types.js +3 -0
  263. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +6 -0
  264. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
  265. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +30 -0
  266. package/dist/src/bitgo/utils/blsUtils.d.ts +51 -0
  267. package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -0
  268. package/dist/src/bitgo/utils/blsUtils.js +166 -0
  269. package/dist/src/bitgo/utils/iBlsUtils.d.ts +14 -0
  270. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +1 -0
  271. package/dist/src/bitgo/utils/iBlsUtils.js +3 -0
  272. package/dist/src/bitgo/utils/index.d.ts +12 -0
  273. package/dist/src/bitgo/utils/index.d.ts.map +1 -0
  274. package/dist/src/bitgo/utils/index.js +37 -0
  275. package/dist/src/bitgo/utils/mpcUtils.d.ts +31 -0
  276. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -0
  277. package/dist/src/bitgo/utils/mpcUtils.js +55 -0
  278. package/dist/src/bitgo/utils/opengpgUtils.d.ts +51 -0
  279. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -0
  280. package/dist/src/bitgo/utils/opengpgUtils.js +136 -0
  281. package/dist/src/bitgo/utils/promise-utils.d.ts +5 -0
  282. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -0
  283. package/dist/src/bitgo/utils/promise-utils.js +12 -0
  284. package/dist/src/bitgo/utils/triple.d.ts +3 -0
  285. package/dist/src/bitgo/utils/triple.d.ts.map +1 -0
  286. package/dist/src/bitgo/utils/triple.js +8 -0
  287. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +118 -0
  288. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -0
  289. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +352 -0
  290. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  291. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -0
  292. package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -0
  293. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +73 -0
  294. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -0
  295. package/dist/src/bitgo/utils/tss/eddsa/types.js +10 -0
  296. package/dist/src/bitgo/utils/tss/index.d.ts +4 -0
  297. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -0
  298. package/dist/src/bitgo/utils/tss/index.js +29 -0
  299. package/dist/src/bitgo/utils/util.d.ts +77 -0
  300. package/dist/src/bitgo/utils/util.d.ts.map +1 -0
  301. package/dist/src/bitgo/utils/util.js +198 -0
  302. package/dist/src/bitgo/wallet/iWallet.d.ts +518 -0
  303. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -0
  304. package/dist/src/bitgo/wallet/iWallet.js +3 -0
  305. package/dist/src/bitgo/wallet/iWallets.d.ts +105 -0
  306. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -0
  307. package/dist/src/bitgo/wallet/iWallets.js +3 -0
  308. package/dist/src/bitgo/wallet/index.d.ts +5 -0
  309. package/dist/src/bitgo/wallet/index.d.ts.map +1 -0
  310. package/dist/src/bitgo/wallet/index.js +17 -0
  311. package/dist/src/bitgo/wallet/wallet.d.ts +656 -0
  312. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -0
  313. package/dist/src/bitgo/wallet/wallet.js +2056 -0
  314. package/dist/src/bitgo/wallet/wallets.d.ts +134 -0
  315. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -0
  316. package/dist/src/bitgo/wallet/wallets.js +605 -0
  317. package/dist/src/bitgo/webhook/iWebhooks.d.ts +26 -0
  318. package/dist/src/bitgo/webhook/iWebhooks.d.ts.map +1 -0
  319. package/dist/src/bitgo/webhook/iWebhooks.js +3 -0
  320. package/dist/src/bitgo/webhook/index.d.ts +3 -0
  321. package/dist/src/bitgo/webhook/index.d.ts.map +1 -0
  322. package/dist/src/bitgo/webhook/index.js +15 -0
  323. package/dist/src/bitgo/webhook/webhooks.d.ts +43 -0
  324. package/dist/src/bitgo/webhook/webhooks.d.ts.map +1 -0
  325. package/dist/src/bitgo/webhook/webhooks.js +102 -0
  326. package/dist/src/{bigojsError.d.ts → bitgojsError.d.ts} +1 -1
  327. package/dist/src/bitgojsError.d.ts.map +1 -0
  328. package/dist/src/bitgojsError.js +11 -0
  329. package/dist/src/common.d.ts +1 -1
  330. package/dist/src/common.d.ts.map +1 -1
  331. package/dist/src/common.js +3 -3
  332. package/dist/src/index.d.ts +3 -2
  333. package/dist/src/index.d.ts.map +1 -1
  334. package/dist/src/index.js +5 -5
  335. package/dist/tsconfig.tsbuildinfo +2817 -1848
  336. package/package.json +15 -6
  337. package/dist/src/bigojsError.d.ts.map +0 -1
  338. package/dist/src/bigojsError.js +0 -11
  339. package/dist/src/v2/environments.d.ts.map +0 -1
  340. package/dist/src/v2/environments.js +0 -142
  341. package/dist/src/v2/index.d.ts +0 -3
  342. package/dist/src/v2/index.d.ts.map +0 -1
  343. package/dist/src/v2/types.d.ts +0 -2
  344. package/dist/src/v2/types.d.ts.map +0 -1
  345. package/dist/src/v2/types.js +0 -3
@@ -0,0 +1,352 @@
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.TssUtils = void 0;
26
+ /**
27
+ * @prettier
28
+ */
29
+ const bs58 = __importStar(require("bs58"));
30
+ const crypto = __importStar(require("crypto"));
31
+ const _ = __importStar(require("lodash"));
32
+ const openpgp = __importStar(require("openpgp"));
33
+ const hdTree_1 = require("../../../../account-lib/mpc/hdTree");
34
+ const tss_1 = __importDefault(require("../../../../account-lib/mpc/tss"));
35
+ const mpcUtils_1 = require("../../mpcUtils");
36
+ const opengpgUtils_1 = require("../../opengpgUtils");
37
+ const tss_2 = require("../../../tss");
38
+ /**
39
+ * Utility functions for TSS work flows.
40
+ */
41
+ class TssUtils extends mpcUtils_1.MpcUtils {
42
+ constructor(bitgo, baseCoin, wallet) {
43
+ super(bitgo, baseCoin);
44
+ this._wallet = wallet;
45
+ }
46
+ get wallet() {
47
+ if (_.isNil(this._wallet)) {
48
+ throw new Error('Wallet not defined');
49
+ }
50
+ return this._wallet;
51
+ }
52
+ /**
53
+ * Creates a Keychain containing the User's TSS signing materials.
54
+ *
55
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
56
+ * @param userKeyShare - user's TSS key share
57
+ * @param backupKeyShare - backup's TSS key share
58
+ * @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
59
+ * @param passphrase - wallet passphrase used to encrypt user's signing materials
60
+ * @param [originalPasscodeEncryptionCode] - optional encryption code needed for wallet password reset for hot wallets
61
+ */
62
+ async createUserKeychain(userGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, passphrase, originalPasscodeEncryptionCode) {
63
+ const MPC = await tss_1.default.initialize();
64
+ const bitgoKeyShares = bitgoKeychain.keyShares;
65
+ if (!bitgoKeyShares) {
66
+ throw new Error('Missing BitGo key shares');
67
+ }
68
+ const bitGoToUserShare = bitgoKeyShares.find((keyShare) => keyShare.from === 'bitgo' && keyShare.to === 'user');
69
+ if (!bitGoToUserShare) {
70
+ throw new Error('Missing BitGo to User key share');
71
+ }
72
+ const bitGoToUserPrivateShare = await this.decryptPrivateShare(bitGoToUserShare.privateShare, userGpgKey);
73
+ const bitgoToUser = {
74
+ i: 1,
75
+ j: 3,
76
+ y: bitGoToUserShare.publicShare.slice(0, 64),
77
+ u: bitGoToUserPrivateShare.slice(0, 64),
78
+ chaincode: bitGoToUserPrivateShare.slice(64),
79
+ };
80
+ // TODO(BG-47170): use tss.createCombinedKey helper when signatures are supported
81
+ const userCombined = MPC.keyCombine(userKeyShare.uShare, [backupKeyShare.yShares[1], bitgoToUser]);
82
+ const commonKeychain = userCombined.pShare.y + userCombined.pShare.chaincode;
83
+ if (commonKeychain !== bitgoKeychain.commonKeychain) {
84
+ throw new Error('Failed to create user keychain - commonKeychains do not match.');
85
+ }
86
+ const userSigningMaterial = {
87
+ uShare: userKeyShare.uShare,
88
+ bitgoYShare: bitgoToUser,
89
+ backupYShare: backupKeyShare.yShares[1],
90
+ };
91
+ const userKeychainParams = {
92
+ source: 'user',
93
+ keyType: 'tss',
94
+ commonKeychain: bitgoKeychain.commonKeychain,
95
+ encryptedPrv: this.bitgo.encrypt({ input: JSON.stringify(userSigningMaterial), password: passphrase }),
96
+ originalPasscodeEncryptionCode,
97
+ };
98
+ return await this.baseCoin.keychains().add(userKeychainParams);
99
+ }
100
+ /**
101
+ * Creates a Keychain containing the Backup party's TSS signing materials.
102
+ *
103
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
104
+ * @param userKeyShare - User's TSS Keyshare
105
+ * @param backupKeyShare - Backup's TSS Keyshare
106
+ * @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
107
+ * @param passphrase - wallet passphrase used to encrypt user's signing materials
108
+ */
109
+ async createBackupKeychain(userGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, passphrase) {
110
+ const MPC = await tss_1.default.initialize();
111
+ const bitgoKeyShares = bitgoKeychain.keyShares;
112
+ if (!bitgoKeyShares) {
113
+ throw new Error('Invalid bitgo keyshares');
114
+ }
115
+ const bitGoToBackupShare = bitgoKeyShares.find((keyShare) => keyShare.from === 'bitgo' && keyShare.to === 'backup');
116
+ if (!bitGoToBackupShare) {
117
+ throw new Error('Missing BitGo to User key share');
118
+ }
119
+ const bitGoToBackupPrivateShare = await this.decryptPrivateShare(bitGoToBackupShare.privateShare, userGpgKey);
120
+ const bitgoToBackup = {
121
+ i: 2,
122
+ j: 3,
123
+ y: bitGoToBackupShare.publicShare.slice(0, 64),
124
+ u: bitGoToBackupPrivateShare.slice(0, 64),
125
+ chaincode: bitGoToBackupPrivateShare.slice(64),
126
+ };
127
+ // TODO(BG-47170): use tss.createCombinedKey helper when signatures are supported
128
+ const backupCombined = MPC.keyCombine(backupKeyShare.uShare, [userKeyShare.yShares[2], bitgoToBackup]);
129
+ const commonKeychain = backupCombined.pShare.y + backupCombined.pShare.chaincode;
130
+ if (commonKeychain !== bitgoKeychain.commonKeychain) {
131
+ throw new Error('Failed to create backup keychain - commonKeychains do not match.');
132
+ }
133
+ const backupSigningMaterial = {
134
+ uShare: backupKeyShare.uShare,
135
+ bitgoYShare: bitgoToBackup,
136
+ userYShare: userKeyShare.yShares[2],
137
+ };
138
+ const prv = JSON.stringify(backupSigningMaterial);
139
+ return await this.baseCoin.keychains().createBackup({
140
+ source: 'backup',
141
+ keyType: 'tss',
142
+ commonKeychain: bitgoKeychain.commonKeychain,
143
+ prv: prv,
144
+ encryptedPrv: this.bitgo.encrypt({ input: prv, password: passphrase }),
145
+ });
146
+ }
147
+ /**
148
+ * Creates a Keychain containing BitGo's TSS signing materials.
149
+ *
150
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
151
+ * @param userKeyShare - user's TSS key share
152
+ * @param backupKeyShare - backup's TSS key share
153
+ */
154
+ async createBitgoKeychain(userGpgKey, userKeyShare, backupKeyShare, enterprise) {
155
+ // TODO(BG-47170): use tss.encryptYShare helper when signatures are supported
156
+ const userToBitgoPublicShare = Buffer.concat([
157
+ Buffer.from(userKeyShare.uShare.y, 'hex'),
158
+ Buffer.from(userKeyShare.uShare.chaincode, 'hex'),
159
+ ]).toString('hex');
160
+ const userToBitgoPrivateShare = Buffer.concat([
161
+ Buffer.from(userKeyShare.yShares[3].u, 'hex'),
162
+ Buffer.from(userKeyShare.yShares[3].chaincode, 'hex'),
163
+ ]).toString('hex');
164
+ const userToBitgoKeyShare = {
165
+ publicShare: userToBitgoPublicShare,
166
+ privateShare: userToBitgoPrivateShare,
167
+ };
168
+ const backupToBitgoPublicShare = Buffer.concat([
169
+ Buffer.from(backupKeyShare.uShare.y, 'hex'),
170
+ Buffer.from(backupKeyShare.uShare.chaincode, 'hex'),
171
+ ]).toString('hex');
172
+ const backupToBitgoPrivateShare = Buffer.concat([
173
+ Buffer.from(backupKeyShare.yShares[3].u, 'hex'),
174
+ Buffer.from(backupKeyShare.yShares[3].chaincode, 'hex'),
175
+ ]).toString('hex');
176
+ const backupToBitgoKeyShare = {
177
+ publicShare: backupToBitgoPublicShare,
178
+ privateShare: backupToBitgoPrivateShare,
179
+ };
180
+ return await this.createBitgoKeychainInWP(userGpgKey, userToBitgoKeyShare, backupToBitgoKeyShare, 'tss', enterprise);
181
+ }
182
+ /**
183
+ * Creates User, Backup, and BitGo TSS Keychains.
184
+ *
185
+ * @param params.passphrase - passphrase used to encrypt signing materials created for User and Backup
186
+ */
187
+ async createKeychains(params) {
188
+ const MPC = await tss_1.default.initialize();
189
+ const m = 2;
190
+ const n = 3;
191
+ const userKeyShare = MPC.keyShare(1, m, n);
192
+ const backupKeyShare = MPC.keyShare(2, m, n);
193
+ const randomHexString = crypto.randomBytes(12).toString('hex');
194
+ // Allow generating secp256k1 key pairs
195
+ openpgp.config.rejectCurves = new Set();
196
+ const userGpgKey = await openpgp.generateKey({
197
+ userIDs: [
198
+ {
199
+ name: randomHexString,
200
+ email: `user-${randomHexString}@${randomHexString}.com`,
201
+ },
202
+ ],
203
+ curve: 'secp256k1',
204
+ });
205
+ const bitgoKeychain = await this.createBitgoKeychain(userGpgKey, userKeyShare, backupKeyShare, params.enterprise);
206
+ const userKeychainPromise = this.createUserKeychain(userGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, params.passphrase, params.originalPasscodeEncryptionCode);
207
+ const backupKeychainPromise = this.createBackupKeychain(userGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, params.passphrase);
208
+ const [userKeychain, backupKeychain] = await Promise.all([userKeychainPromise, backupKeychainPromise]);
209
+ // create wallet
210
+ const keychains = {
211
+ userKeychain,
212
+ backupKeychain,
213
+ bitgoKeychain,
214
+ };
215
+ return keychains;
216
+ }
217
+ /**
218
+ * Signs the transaction associated to the transaction request.
219
+ *
220
+ * @param txRequest - transaction request object or id
221
+ * @param prv - decrypted private key
222
+ * @param reqId - request id
223
+ * @returns {Promise<TxRequest>} fully signed TxRequest object
224
+ */
225
+ async signTxRequest(params) {
226
+ let txRequestResolved;
227
+ let txRequestId;
228
+ const { txRequest, prv } = params;
229
+ if (typeof txRequest === 'string') {
230
+ txRequestResolved = await tss_2.getTxRequest(this.bitgo, this.wallet.id(), txRequest);
231
+ txRequestId = txRequestResolved.txRequestId;
232
+ }
233
+ else {
234
+ txRequestResolved = txRequest;
235
+ txRequestId = txRequest.txRequestId;
236
+ }
237
+ const hdTree = await hdTree_1.Ed25519BIP32.initialize();
238
+ const MPC = await tss_1.default.initialize(hdTree);
239
+ const userSigningMaterial = JSON.parse(prv);
240
+ if (!userSigningMaterial.backupYShare) {
241
+ throw new Error('Invalid user key - missing backupYShare');
242
+ }
243
+ const signingKey = MPC.keyDerive(userSigningMaterial.uShare, [userSigningMaterial.bitgoYShare, userSigningMaterial.backupYShare], txRequestResolved.unsignedTxs[0].derivationPath);
244
+ const signablePayload = Buffer.from(txRequestResolved.unsignedTxs[0].signableHex, 'hex');
245
+ const userSignShare = await tss_2.createUserSignShare(signablePayload, signingKey.pShare);
246
+ const signerShare = signingKey.yShares[3].u + signingKey.yShares[3].chaincode;
247
+ const bitgoGpgKey = await opengpgUtils_1.getBitgoGpgPubKey(this.bitgo);
248
+ const encryptedSignerShare = await opengpgUtils_1.encryptText(signerShare, bitgoGpgKey);
249
+ await tss_2.offerUserToBitgoRShare(this.bitgo, this.wallet.id(), txRequestId, userSignShare, encryptedSignerShare);
250
+ const bitgoToUserRShare = await tss_2.getBitgoToUserRShare(this.bitgo, this.wallet.id(), txRequestId);
251
+ const userToBitGoGShare = await tss_2.createUserToBitGoGShare(userSignShare, bitgoToUserRShare, userSigningMaterial.backupYShare, userSigningMaterial.bitgoYShare, signablePayload);
252
+ await tss_2.sendUserToBitgoGShare(this.bitgo, this.wallet.id(), txRequestId, userToBitGoGShare);
253
+ return await tss_2.getTxRequest(this.bitgo, this.wallet.id(), txRequestId);
254
+ }
255
+ /**
256
+ * Builds a tx request from params and verify it
257
+ *
258
+ * @param {PrebuildTransactionWithIntentOptions} params - parameters to build the tx
259
+ * @param apiVersion lite or full
260
+ * @param preview boolean indicating if this is to preview a tx request, which will not initiate policy checks or pending approvals
261
+ * @returns {Promise<TxRequest>} - a built tx request
262
+ */
263
+ async prebuildTxWithIntent(params, apiVersion = 'lite', preview) {
264
+ var _a;
265
+ const chain = this.baseCoin.getChain();
266
+ const intentRecipients = params.recipients.map((recipient) => ({
267
+ address: { address: recipient.address },
268
+ amount: { value: `${recipient.amount}`, symbol: recipient.tokenName ? recipient.tokenName : chain },
269
+ }));
270
+ const whitelistedParams = {
271
+ intent: {
272
+ intentType: params.intentType,
273
+ sequenceId: params.sequenceId,
274
+ comment: params.comment,
275
+ recipients: intentRecipients,
276
+ memo: (_a = params.memo) === null || _a === void 0 ? void 0 : _a.value,
277
+ nonce: params.nonce,
278
+ },
279
+ apiVersion: apiVersion,
280
+ preview,
281
+ };
282
+ const unsignedTx = (await this.bitgo
283
+ .post(this.bitgo.url('/wallet/' + this.wallet.id() + '/txrequests', 2))
284
+ .send(whitelistedParams)
285
+ .result());
286
+ return unsignedTx;
287
+ }
288
+ /**
289
+ * Call delete signature shares for a txRequest, the endpoint delete the signatures and return them
290
+ *
291
+ * @param {string} txRequestId tx id reference to delete signature shares
292
+ * @returns {SignatureShareRecord[]}
293
+ */
294
+ async deleteSignatureShares(txRequestId) {
295
+ return this.bitgo
296
+ .del(this.bitgo.url(`/wallet/${this.wallet.id()}/txrequests/${txRequestId}/signatureshares`, 2))
297
+ .send()
298
+ .result();
299
+ }
300
+ /**
301
+ * Initialize the send procedure once Bitgo has the User To Bitgo GShare
302
+ *
303
+ * @param {String} txRequestId - the txRequest Id
304
+ * @returns {Promise<any>}
305
+ */
306
+ async sendTxRequest(txRequestId) {
307
+ return this.bitgo
308
+ .post(this.baseCoin.url('/wallet/' + this.wallet.id() + '/tx/send'))
309
+ .send({ txRequestId })
310
+ .result();
311
+ }
312
+ /**
313
+ * Delete signature shares, get the tx request without them from the db and sign it to finally send it.
314
+ *
315
+ * Note : This can be performed in order to reach latest network conditions required on pending approval flow.
316
+ *
317
+ * @param {String} txRequestId - the txRequest Id to make the requests.
318
+ * @param {String} decryptedPrv - decrypted prv to sign the tx request.
319
+ * @param {RequestTracer} reqId id tracer.
320
+ * @returns {Promise<any>}
321
+ */
322
+ async recreateTxRequest(txRequestId, decryptedPrv, reqId) {
323
+ await this.deleteSignatureShares(txRequestId);
324
+ // after delete signatures shares get the tx without them
325
+ const txRequest = await tss_2.getTxRequest(this.bitgo, this.wallet.id(), txRequestId);
326
+ return await this.signTxRequest({ txRequest, prv: decryptedPrv, reqId });
327
+ }
328
+ /**
329
+ * Gets the latest Tx Request by id
330
+ *
331
+ * @param {String} txRequestId - the txRequest Id
332
+ * @returns {Promise<TxRequest>}
333
+ */
334
+ async getTxRequest(txRequestId) {
335
+ return tss_2.getTxRequest(this.bitgo, this.wallet.id(), txRequestId);
336
+ }
337
+ /**
338
+ * Get the commonPub portion of the commonKeychain.
339
+ *
340
+ * @param {String} commonKeychain
341
+ * @returns {string}
342
+ */
343
+ static getPublicKeyFromCommonKeychain(commonKeychain) {
344
+ if (commonKeychain.length !== 128) {
345
+ throw new Error(`Invalid commonKeychain length, expected 128, got ${commonKeychain.length}`);
346
+ }
347
+ const commonPubHexStr = commonKeychain.slice(0, 64);
348
+ return bs58.encode(Buffer.from(commonPubHexStr, 'hex'));
349
+ }
350
+ }
351
+ exports.TssUtils = TssUtils;
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VkZHNhL2VkZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILDJDQUE2QjtBQUM3QiwrQ0FBaUM7QUFDakMsMENBQTRCO0FBQzVCLGlEQUFtQztBQUNuQywrREFBa0U7QUFDbEUsMEVBQTBFO0FBTzFFLDZDQUEwQztBQUMxQyxxREFBb0U7QUFDcEUsc0NBUXNCO0FBRXRCOztHQUVHO0FBRUgsTUFBYSxRQUFTLFNBQVEsbUJBQVE7SUFHcEMsWUFBWSxLQUFnQixFQUFFLFFBQW1CLEVBQUUsTUFBZ0I7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBWSxNQUFNO1FBQ2hCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQ3RCLFVBQTZDLEVBQzdDLFlBQXNCLEVBQ3RCLGNBQXdCLEVBQ3hCLGFBQXVCLEVBQ3ZCLFVBQWtCLEVBQ2xCLDhCQUF1QztRQUV2QyxNQUFNLEdBQUcsR0FBRyxNQUFNLGFBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyQyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzdDO1FBRUQs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O1FBQ3BDLE9BQU8sa0JBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLDhCQUE4QixDQUFDLGNBQXNCO1FBQzFELElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDOUY7UUFDRCxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUFqYUQsNEJBaWFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgb3BlbnBncCBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IEVkMjU1MTlCSVAzMiB9IGZyb20gJy4uLy4uLy4uLy4uL2FjY291bnQtbGliL21wYy9oZFRyZWUnO1xuaW1wb3J0IEVkZHNhLCB7IEtleVNoYXJlLCBZU2hhcmUgfSBmcm9tICcuLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7IElSZXF1ZXN0VHJhY2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpJztcbmltcG9ydCB7IElCYXNlQ29pbiwgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uLy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uLy4uLy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBBZGRLZXljaGFpbk9wdGlvbnMsIEtleWNoYWluLCBLZXlUeXBlIH0gZnJvbSAnLi4vLi4vLi4va2V5Y2hhaW4nO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uLy4uLy4uL3dhbGxldCc7XG5pbXBvcnQgeyBJVHNzVXRpbHMsIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucywgU2lnbmF0dXJlU2hhcmVSZWNvcmQsIFR4UmVxdWVzdCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTXBjVXRpbHMgfSBmcm9tICcuLi8uLi9tcGNVdGlscyc7XG5pbXBvcnQgeyBlbmNyeXB0VGV4dCwgZ2V0Qml0Z29HcGdQdWJLZXkgfSBmcm9tICcuLi8uLi9vcGVuZ3BnVXRpbHMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlVXNlclNpZ25TaGFyZSxcbiAgY3JlYXRlVXNlclRvQml0R29HU2hhcmUsXG4gIGdldEJpdGdvVG9Vc2VyUlNoYXJlLFxuICBnZXRUeFJlcXVlc3QsXG4gIG9mZmVyVXNlclRvQml0Z29SU2hhcmUsXG4gIHNlbmRVc2VyVG9CaXRnb0dTaGFyZSxcbiAgU2lnbmluZ01hdGVyaWFsLFxufSBmcm9tICcuLi8uLi8uLi90c3MnO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBUU1Mgd29yayBmbG93cy5cbiAqL1xuXG5leHBvcnQgY2xhc3MgVHNzVXRpbHMgZXh0ZW5kcyBNcGNVdGlscyBpbXBsZW1lbnRzIElUc3NVdGlscyB7XG4gIHByaXZhdGUgX3dhbGxldD86IElXYWxsZXQ7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbiwgd2FsbGV0PzogSVdhbGxldCkge1xuICAgIHN1cGVyKGJpdGdvLCBiYXNlQ29pbik7XG4gICAgdGhpcy5fd2FsbGV0ID0gd2FsbGV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgd2FsbGV0KCk6IElXYWxsZXQge1xuICAgIGlmIChfLmlzTmlsKHRoaXMuX3dhbGxldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2FsbGV0IG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl93YWxsZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIEtleWNoYWluIGNvbnRhaW5pbmcgdGhlIFVzZXIncyBUU1Mgc2lnbmluZyBtYXRlcmlhbHMuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyR3BnS2V5IC0gZXBoZW1lcmFsIEdQRyBrZXkgdG8gZW5jcnlwdCAvIGRlY3J5cHQgc2Vuc2l0dmUgZGF0YSBleGNoYW5nZWQgYmV0d2VlbiB1c2VyIGFuZCBzZXJ2ZXJcbiAgICogQHBhcmFtIHVzZXJLZXlTaGFyZSAtIHVzZXIncyBUU1Mga2V5IHNoYXJlXG4gICAqIEBwYXJhbSBiYWNrdXBLZXlTaGFyZSAtIGJhY2t1cCdzIFRTUyBrZXkgc2hhcmVcbiAgICogQHBhcmFtIGJpdGdvS2V5Y2hhaW4gLSBwcmV2aW91c2x5IGNyZWF0ZWQgQml0R28ga2V5Y2hhaW47IG11c3QgYmUgY29tcGF0aWJsZSB3aXRoIHVzZXIgYW5kIGJhY2t1cCBrZXkgc2hhcmVzXG4gICAqIEBwYXJhbSBwYXNzcGhyYXNlIC0gd2FsbGV0IHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHVzZXIncyBzaWduaW5nIG1hdGVyaWFsc1xuICAgKiBAcGFyYW0gW29yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZV0gLSBvcHRpb25hbCBlbmNyeXB0aW9uIGNvZGUgbmVlZGVkIGZvciB3YWxsZXQgcGFzc3dvcmQgcmVzZXQgZm9yIGhvdCB3YWxsZXRzXG4gICAqL1xuICBhc3luYyBjcmVhdGVVc2VyS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogb3BlbnBncC5TZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluLFxuICAgIHBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcbiAgICBjb25zdCBiaXRnb0tleVNoYXJlcyA9IGJpdGdvS2V5Y2hhaW4ua2V5U2hhcmVzO1xuICAgIGlmICghYml0Z29LZXlTaGFyZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBCaXRHbyBrZXkgc2hhcmVzJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0R29Ub1VzZXJTaGFyZSA9IGJpdGdvS2V5U2hhcmVzLmZpbmQoKGtleVNoYXJlKSA9PiBrZXlTaGFyZS5mcm9tID09PSAnYml0Z28nICYmIGtleVNoYXJlLnRvID09PSAndXNlcicpO1xuICAgIGlmICghYml0R29Ub1VzZXJTaGFyZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIHRvIFVzZXIga2V5IHNoYXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0R29Ub1VzZXJQcml2YXRlU2hhcmUgPSBhd2FpdCB0aGlzLmRlY3J5cHRQcml2YXRlU2hhcmUoYml0R29Ub1VzZXJTaGFyZS5wcml2YXRlU2hhcmUsIHVzZXJHcGdLZXkpO1xuXG4gICAgY29uc3QgYml0Z29Ub1VzZXI6IFlTaGFyZSA9IHtcbiAgICAgIGk6IDEsXG4gICAgICBqOiAzLFxuICAgICAgeTogYml0R29Ub1VzZXJTaGFyZS5wdWJsaWNTaGFyZS5zbGljZSgwLCA2NCksXG4gICAgICB1OiBiaXRHb1RvVXNlclByaXZhdGVTaGFyZS5zbGljZSgwLCA2NCksXG4gICAgICBjaGFpbmNvZGU6IGJpdEdvVG9Vc2VyUHJpdmF0ZVNoYXJlLnNsaWNlKDY0KSxcbiAgICB9O1xuXG4gICAgLy8gVE9ETyhCRy00NzE3MCk6IHVzZSB0c3MuY3JlYXRlQ29tYmluZWRLZXkgaGVscGVyIHdoZW4gc2lnbmF0dXJlcyBhcmUgc3VwcG9ydGVkXG4gICAgY29uc3QgdXNlckNvbWJpbmVkID0gTVBDLmtleUNvbWJpbmUodXNlcktleVNoYXJlLnVTaGFyZSwgW2JhY2t1cEtleVNoYXJlLnlTaGFyZXNbMV0sIGJpdGdvVG9Vc2VyXSk7XG4gICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPSB1c2VyQ29tYmluZWQucFNoYXJlLnkgKyB1c2VyQ29tYmluZWQucFNoYXJlLmNoYWluY29kZTtcbiAgICBpZiAoY29tbW9uS2V5Y2hhaW4gIT09IGJpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNyZWF0ZSB1c2VyIGtleWNoYWluIC0gY29tbW9uS2V5Y2hhaW5zIGRvIG5vdCBtYXRjaC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyU2lnbmluZ01hdGVyaWFsOiBTaWduaW5nTWF0ZXJpYWwgPSB7XG4gICAgICB1U2hhcmU6IHVzZXJLZXlTaGFyZS51U2hhcmUsXG4gICAgICBiaXRnb1lTaGFyZTogYml0Z29Ub1VzZXIsXG4gICAgICBiYWNrdXBZU2hhcmU6IGJhY2t1cEtleVNoYXJlLnlTaGFyZXNbMV0sXG4gICAgfTtcblxuICAgIGNvbnN0IHVzZXJLZXljaGFpblBhcmFtczogQWRkS2V5Y2hhaW5PcHRpb25zID0ge1xuICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICBrZXlUeXBlOiAndHNzJyBhcyBLZXlUeXBlLFxuICAgICAgY29tbW9uS2V5Y2hhaW46IGJpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW4sXG4gICAgICBlbmNyeXB0ZWRQcnY6IHRoaXMuYml0Z28uZW5jcnlwdCh7IGlucHV0OiBKU09OLnN0cmluZ2lmeSh1c2VyU2lnbmluZ01hdGVyaWFsKSwgcGFzc3dvcmQ6IHBhc3NwaHJhc2UgfSksXG4gICAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpLmFkZCh1c2VyS2V5Y2hhaW5QYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBLZXljaGFpbiBjb250YWluaW5nIHRoZSBCYWNrdXAgcGFydHkncyBUU1Mgc2lnbmluZyBtYXRlcmlhbHMuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyR3BnS2V5IC0gZXBoZW1lcmFsIEdQRyBrZXkgdG8gZW5jcnlwdCAvIGRlY3J5cHQgc2Vuc2l0dmUgZGF0YSBleGNoYW5nZWQgYmV0d2VlbiB1c2VyIGFuZCBzZXJ2ZXJcbiAgICogQHBhcmFtIHVzZXJLZXlTaGFyZSAtIFVzZXIncyBUU1MgS2V5c2hhcmVcbiAgICogQHBhcmFtIGJhY2t1cEtleVNoYXJlIC0gQmFja3VwJ3MgVFNTIEtleXNoYXJlXG4gICAqIEBwYXJhbSBiaXRnb0tleWNoYWluIC0gcHJldmlvdXNseSBjcmVhdGVkIEJpdEdvIGtleWNoYWluOyBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCB1c2VyIGFuZCBiYWNrdXAga2V5IHNoYXJlc1xuICAgKiBAcGFyYW0gcGFzc3BocmFzZSAtIHdhbGxldCBwYXNzcGhyYXNlIHVzZWQgdG8gZW5jcnlwdCB1c2VyJ3Mgc2lnbmluZyBtYXRlcmlhbHNcbiAgICovXG4gIGFzeW5jIGNyZWF0ZUJhY2t1cEtleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IG9wZW5wZ3AuU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcbiAgICBjb25zdCBiaXRnb0tleVNoYXJlcyA9IGJpdGdvS2V5Y2hhaW4ua2V5U2hhcmVzO1xuICAgIGlmICghYml0Z29LZXlTaGFyZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBiaXRnbyBrZXlzaGFyZXMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRHb1RvQmFja3VwU2hhcmUgPSBiaXRnb0tleVNoYXJlcy5maW5kKChrZXlTaGFyZSkgPT4ga2V5U2hhcmUuZnJvbSA9PT0gJ2JpdGdvJyAmJiBrZXlTaGFyZS50byA9PT0gJ2JhY2t1cCcpO1xuICAgIGlmICghYml0R29Ub0JhY2t1cFNoYXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28gdG8gVXNlciBrZXkgc2hhcmUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRHb1RvQmFja3VwUHJpdmF0ZVNoYXJlID0gYXdhaXQgdGhpcy5kZWNyeXB0UHJpdmF0ZVNoYXJlKGJpdEdvVG9CYWNrdXBTaGFyZS5wcml2YXRlU2hhcmUsIHVzZXJHcGdLZXkpO1xuXG4gICAgY29uc3QgYml0Z29Ub0JhY2t1cDogWVNoYXJlID0ge1xuICAgICAgaTogMixcbiAgICAgIGo6IDMsXG4gICAgICB5OiBiaXRHb1RvQmFja3VwU2hhcmUucHVibGljU2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgICAgdTogYml0R29Ub0JhY2t1cFByaXZhdGVTaGFyZS5zbGljZSgwLCA2NCksXG4gICAgICBjaGFpbmNvZGU6IGJpdEdvVG9CYWNrdXBQcml2YXRlU2hhcmUuc2xpY2UoNjQpLFxuICAgIH07XG5cbiAgICAvLyBUT0RPKEJHLTQ3MTcwKTogdXNlIHRzcy5jcmVhdGVDb21iaW5lZEtleSBoZWxwZXIgd2hlbiBzaWduYXR1cmVzIGFyZSBzdXBwb3J0ZWRcbiAgICBjb25zdCBiYWNrdXBDb21iaW5lZCA9IE1QQy5rZXlDb21iaW5lKGJhY2t1cEtleVNoYXJlLnVTaGFyZSwgW3VzZXJLZXlTaGFyZS55U2hhcmVzWzJdLCBiaXRnb1RvQmFja3VwXSk7XG4gICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPSBiYWNrdXBDb21iaW5lZC5wU2hhcmUueSArIGJhY2t1cENvbWJpbmVkLnBTaGFyZS5jaGFpbmNvZGU7XG4gICAgaWYgKGNvbW1vbktleWNoYWluICE9PSBiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgYmFja3VwIGtleWNoYWluIC0gY29tbW9uS2V5Y2hhaW5zIGRvIG5vdCBtYXRjaC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBiYWNrdXBTaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgICAgIHVTaGFyZTogYmFja3VwS2V5U2hhcmUudVNoYXJlLFxuICAgICAgYml0Z29ZU2hhcmU6IGJpdGdvVG9CYWNrdXAsXG4gICAgICB1c2VyWVNoYXJlOiB1c2VyS2V5U2hhcmUueVNoYXJlc1syXSxcbiAgICB9O1xuICAgIGNvbnN0IHBydiA9IEpTT04uc3RyaW5naWZ5KGJhY2t1cFNpZ25pbmdNYXRlcmlhbCk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKS5jcmVhdGVCYWNrdXAoe1xuICAgICAgc291cmNlOiAnYmFja3VwJyxcbiAgICAgIGtleVR5cGU6ICd0c3MnLFxuICAgICAgY29tbW9uS2V5Y2hhaW46IGJpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW4sXG4gICAgICBwcnY6IHBydixcbiAgICAgIGVuY3J5cHRlZFBydjogdGhpcy5iaXRnby5lbmNyeXB0KHsgaW5wdXQ6IHBydiwgcGFzc3dvcmQ6IHBhc3NwaHJhc2UgfSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIEtleWNoYWluIGNvbnRhaW5pbmcgQml0R28ncyBUU1Mgc2lnbmluZyBtYXRlcmlhbHMuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyR3BnS2V5IC0gZXBoZW1lcmFsIEdQRyBrZXkgdG8gZW5jcnlwdCAvIGRlY3J5cHQgc2Vuc2l0dmUgZGF0YSBleGNoYW5nZWQgYmV0d2VlbiB1c2VyIGFuZCBzZXJ2ZXJcbiAgICogQHBhcmFtIHVzZXJLZXlTaGFyZSAtIHVzZXIncyBUU1Mga2V5IHNoYXJlXG4gICAqIEBwYXJhbSBiYWNrdXBLZXlTaGFyZSAtIGJhY2t1cCdzIFRTUyBrZXkgc2hhcmVcbiAgICovXG4gIGFzeW5jIGNyZWF0ZUJpdGdvS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogb3BlbnBncC5TZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGVudGVycHJpc2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIC8vIFRPRE8oQkctNDcxNzApOiB1c2UgdHNzLmVuY3J5cHRZU2hhcmUgaGVscGVyIHdoZW4gc2lnbmF0dXJlcyBhcmUgc3VwcG9ydGVkXG4gICAgY29uc3QgdXNlclRvQml0Z29QdWJsaWNTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgICAgQnVmZmVyLmZyb20odXNlcktleVNoYXJlLnVTaGFyZS55LCAnaGV4JyksXG4gICAgICBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUudVNoYXJlLmNoYWluY29kZSwgJ2hleCcpLFxuICAgIF0pLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCB1c2VyVG9CaXRnb1ByaXZhdGVTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgICAgQnVmZmVyLmZyb20odXNlcktleVNoYXJlLnlTaGFyZXNbM10udSwgJ2hleCcpLFxuICAgICAgQnVmZmVyLmZyb20odXNlcktleVNoYXJlLnlTaGFyZXNbM10uY2hhaW5jb2RlLCAnaGV4JyksXG4gICAgXSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHVzZXJUb0JpdGdvS2V5U2hhcmUgPSB7XG4gICAgICBwdWJsaWNTaGFyZTogdXNlclRvQml0Z29QdWJsaWNTaGFyZSxcbiAgICAgIHByaXZhdGVTaGFyZTogdXNlclRvQml0Z29Qcml2YXRlU2hhcmUsXG4gICAgfTtcblxuICAgIGNvbnN0IGJhY2t1cFRvQml0Z29QdWJsaWNTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgICAgQnVmZmVyLmZyb20oYmFja3VwS2V5U2hhcmUudVNoYXJlLnksICdoZXgnKSxcbiAgICAgIEJ1ZmZlci5mcm9tKGJhY2t1cEtleVNoYXJlLnVTaGFyZS5jaGFpbmNvZGUsICdoZXgnKSxcbiAgICBdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgYmFja3VwVG9CaXRnb1ByaXZhdGVTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgICAgQnVmZmVyLmZyb20oYmFja3VwS2V5U2hhcmUueVNoYXJlc1szXS51LCAnaGV4JyksXG4gICAgICBCdWZmZXIuZnJvbShiYWNrdXBLZXlTaGFyZS55U2hhcmVzWzNdLmNoYWluY29kZSwgJ2hleCcpLFxuICAgIF0pLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBiYWNrdXBUb0JpdGdvS2V5U2hhcmUgPSB7XG4gICAgICBwdWJsaWNTaGFyZTogYmFja3VwVG9CaXRnb1B1YmxpY1NoYXJlLFxuICAgICAgcHJpdmF0ZVNoYXJlOiBiYWNrdXBUb0JpdGdvUHJpdmF0ZVNoYXJlLFxuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVCaXRnb0tleWNoYWluSW5XUChcbiAgICAgIHVzZXJHcGdLZXksXG4gICAgICB1c2VyVG9CaXRnb0tleVNoYXJlLFxuICAgICAgYmFja3VwVG9CaXRnb0tleVNoYXJlLFxuICAgICAgJ3RzcycsXG4gICAgICBlbnRlcnByaXNlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIFVzZXIsIEJhY2t1cCwgYW5kIEJpdEdvIFRTUyBLZXljaGFpbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMucGFzc3BocmFzZSAtIHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHNpZ25pbmcgbWF0ZXJpYWxzIGNyZWF0ZWQgZm9yIFVzZXIgYW5kIEJhY2t1cFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlS2V5Y2hhaW5zKHBhcmFtczoge1xuICAgIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nO1xuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD4ge1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcbiAgICBjb25zdCBtID0gMjtcbiAgICBjb25zdCBuID0gMztcblxuICAgIGNvbnN0IHVzZXJLZXlTaGFyZSA9IE1QQy5rZXlTaGFyZSgxLCBtLCBuKTtcbiAgICBjb25zdCBiYWNrdXBLZXlTaGFyZSA9IE1QQy5rZXlTaGFyZSgyLCBtLCBuKTtcblxuICAgIGNvbnN0IHJhbmRvbUhleFN0cmluZyA9IGNyeXB0by5yYW5kb21CeXRlcygxMikudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgLy8gQWxsb3cgZ2VuZXJhdGluZyBzZWNwMjU2azEga2V5IHBhaXJzXG4gICAgb3BlbnBncC5jb25maWcucmVqZWN0Q3VydmVzID0gbmV3IFNldCgpO1xuICAgIGNvbnN0IHVzZXJHcGdLZXkgPSBhd2FpdCBvcGVucGdwLmdlbmVyYXRlS2V5KHtcbiAgICAgIHVzZXJJRHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IHJhbmRvbUhleFN0cmluZyxcbiAgICAgICAgICBlbWFpbDogYHVzZXItJHtyYW5kb21IZXhTdHJpbmd9QCR7cmFuZG9tSGV4U3RyaW5nfS5jb21gLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGN1cnZlOiAnc2VjcDI1NmsxJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJpdGdvS2V5Y2hhaW4gPSBhd2FpdCB0aGlzLmNyZWF0ZUJpdGdvS2V5Y2hhaW4odXNlckdwZ0tleSwgdXNlcktleVNoYXJlLCBiYWNrdXBLZXlTaGFyZSwgcGFyYW1zLmVudGVycHJpc2UpO1xuICAgIGNvbnN0IHVzZXJLZXljaGFpblByb21pc2UgPSB0aGlzLmNyZWF0ZVVzZXJLZXljaGFpbihcbiAgICAgIHVzZXJHcGdLZXksXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgICBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGVcbiAgICApO1xuICAgIGNvbnN0IGJhY2t1cEtleWNoYWluUHJvbWlzZSA9IHRoaXMuY3JlYXRlQmFja3VwS2V5Y2hhaW4oXG4gICAgICB1c2VyR3BnS2V5LFxuICAgICAgdXNlcktleVNoYXJlLFxuICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgICAgcGFyYW1zLnBhc3NwaHJhc2VcbiAgICApO1xuICAgIGNvbnN0IFt1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluXSA9IGF3YWl0IFByb21pc2UuYWxsKFt1c2VyS2V5Y2hhaW5Qcm9taXNlLCBiYWNrdXBLZXljaGFpblByb21pc2VdKTtcblxuICAgIC8vIGNyZWF0ZSB3YWxsZXRcbiAgICBjb25zdCBrZXljaGFpbnMgPSB7XG4gICAgICB1c2VyS2V5Y2hhaW4sXG4gICAgICBiYWNrdXBLZXljaGFpbixcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgfTtcblxuICAgIHJldHVybiBrZXljaGFpbnM7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdGhlIHRyYW5zYWN0aW9uIGFzc29jaWF0ZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QuXG4gICAqXG4gICAqIEBwYXJhbSB0eFJlcXVlc3QgLSB0cmFuc2FjdGlvbiByZXF1ZXN0IG9iamVjdCBvciBpZFxuICAgKiBAcGFyYW0gcHJ2IC0gZGVjcnlwdGVkIHByaXZhdGUga2V5XG4gICAqIEBwYXJhbSByZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gZnVsbHkgc2lnbmVkIFR4UmVxdWVzdCBvYmplY3RcbiAgICovXG4gIGFzeW5jIHNpZ25UeFJlcXVlc3QocGFyYW1zOiB7XG4gICAgdHhSZXF1ZXN0OiBzdHJpbmcgfCBUeFJlcXVlc3Q7XG4gICAgcHJ2OiBzdHJpbmc7XG4gICAgcmVxSWQ6IElSZXF1ZXN0VHJhY2VyO1xuICB9KTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBsZXQgdHhSZXF1ZXN0UmVzb2x2ZWQ6IFR4UmVxdWVzdDtcbiAgICBsZXQgdHhSZXF1ZXN0SWQ6IHN0cmluZztcblxuICAgIGNvbnN0IHsgdHhSZXF1ZXN0LCBwcnYgfSA9IHBhcmFtcztcblxuICAgIGlmICh0eXBlb2YgdHhSZXF1ZXN0ID09PSAnc3RyaW5nJykge1xuICAgICAgdHhSZXF1ZXN0UmVzb2x2ZWQgPSBhd2FpdCBnZXRUeFJlcXVlc3QodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0KTtcbiAgICAgIHR4UmVxdWVzdElkID0gdHhSZXF1ZXN0UmVzb2x2ZWQudHhSZXF1ZXN0SWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4UmVxdWVzdFJlc29sdmVkID0gdHhSZXF1ZXN0O1xuICAgICAgdHhSZXF1ZXN0SWQgPSB0eFJlcXVlc3QudHhSZXF1ZXN0SWQ7XG4gICAgfVxuXG4gICAgY29uc3QgaGRUcmVlID0gYXdhaXQgRWQyNTUxOUJJUDMyLmluaXRpYWxpemUoKTtcbiAgICBjb25zdCBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKGhkVHJlZSk7XG5cbiAgICBjb25zdCB1c2VyU2lnbmluZ01hdGVyaWFsOiBTaWduaW5nTWF0ZXJpYWwgPSBKU09OLnBhcnNlKHBydik7XG4gICAgaWYgKCF1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cFlTaGFyZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVzZXIga2V5IC0gbWlzc2luZyBiYWNrdXBZU2hhcmUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduaW5nS2V5ID0gTVBDLmtleURlcml2ZShcbiAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwudVNoYXJlLFxuICAgICAgW3VzZXJTaWduaW5nTWF0ZXJpYWwuYml0Z29ZU2hhcmUsIHVzZXJTaWduaW5nTWF0ZXJpYWwuYmFja3VwWVNoYXJlXSxcbiAgICAgIHR4UmVxdWVzdFJlc29sdmVkLnVuc2lnbmVkVHhzWzBdLmRlcml2YXRpb25QYXRoXG4gICAgKTtcblxuICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHR4UmVxdWVzdFJlc29sdmVkLnVuc2lnbmVkVHhzWzBdLnNpZ25hYmxlSGV4LCAnaGV4Jyk7XG5cbiAgICBjb25zdCB1c2VyU2lnblNoYXJlID0gYXdhaXQgY3JlYXRlVXNlclNpZ25TaGFyZShzaWduYWJsZVBheWxvYWQsIHNpZ25pbmdLZXkucFNoYXJlKTtcblxuICAgIGNvbnN0IHNpZ25lclNoYXJlID0gc2lnbmluZ0tleS55U2hhcmVzWzNdLnUgKyBzaWduaW5nS2V5LnlTaGFyZXNbM10uY2hhaW5jb2RlO1xuICAgIGNvbnN0IGJpdGdvR3BnS2V5ID0gYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbyk7XG4gICAgY29uc3QgZW5jcnlwdGVkU2lnbmVyU2hhcmUgPSBhd2FpdCBlbmNyeXB0VGV4dChzaWduZXJTaGFyZSwgYml0Z29HcGdLZXkpO1xuXG4gICAgYXdhaXQgb2ZmZXJVc2VyVG9CaXRnb1JTaGFyZSh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCwgdXNlclNpZ25TaGFyZSwgZW5jcnlwdGVkU2lnbmVyU2hhcmUpO1xuXG4gICAgY29uc3QgYml0Z29Ub1VzZXJSU2hhcmUgPSBhd2FpdCBnZXRCaXRnb1RvVXNlclJTaGFyZSh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCk7XG5cbiAgICBjb25zdCB1c2VyVG9CaXRHb0dTaGFyZSA9IGF3YWl0IGNyZWF0ZVVzZXJUb0JpdEdvR1NoYXJlKFxuICAgICAgdXNlclNpZ25TaGFyZSxcbiAgICAgIGJpdGdvVG9Vc2VyUlNoYXJlLFxuICAgICAgdXNlclNpZ25pbmdNYXRlcmlhbC5iYWNrdXBZU2hhcmUsXG4gICAgICB1c2VyU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLFxuICAgICAgc2lnbmFibGVQYXlsb2FkXG4gICAgKTtcblxuICAgIGF3YWl0IHNlbmRVc2VyVG9CaXRnb0dTaGFyZSh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCwgdXNlclRvQml0R29HU2hhcmUpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGdldFR4UmVxdWVzdCh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgdHggcmVxdWVzdCBmcm9tIHBhcmFtcyBhbmQgdmVyaWZ5IGl0XG4gICAqXG4gICAqIEBwYXJhbSB7UHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zfSBwYXJhbXMgLSBwYXJhbWV0ZXJzIHRvIGJ1aWxkIHRoZSB0eFxuICAgKiBAcGFyYW0gYXBpVmVyc2lvbiBsaXRlIG9yIGZ1bGxcbiAgICogQHBhcmFtIHByZXZpZXcgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoaXMgaXMgdG8gcHJldmlldyBhIHR4IHJlcXVlc3QsIHdoaWNoIHdpbGwgbm90IGluaXRpYXRlIHBvbGljeSBjaGVja3Mgb3IgcGVuZGluZyBhcHByb3ZhbHNcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gLSBhIGJ1aWx0IHR4IHJlcXVlc3RcbiAgICovXG4gIGFzeW5jIHByZWJ1aWxkVHhXaXRoSW50ZW50KFxuICAgIHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICAgIGFwaVZlcnNpb24gPSAnbGl0ZScsXG4gICAgcHJldmlldz86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBjb25zdCBjaGFpbiA9IHRoaXMuYmFzZUNvaW4uZ2V0Q2hhaW4oKTtcbiAgICBjb25zdCBpbnRlbnRSZWNpcGllbnRzID0gcGFyYW1zLnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+ICh7XG4gICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzIH0sXG4gICAgICBhbW91bnQ6IHsgdmFsdWU6IGAke3JlY2lwaWVudC5hbW91bnR9YCwgc3ltYm9sOiByZWNpcGllbnQudG9rZW5OYW1lID8gcmVjaXBpZW50LnRva2VuTmFtZSA6IGNoYWluIH0sXG4gICAgfSkpO1xuXG4gICAgY29uc3Qgd2hpdGVsaXN0ZWRQYXJhbXMgPSB7XG4gICAgICBpbnRlbnQ6IHtcbiAgICAgICAgaW50ZW50VHlwZTogcGFyYW1zLmludGVudFR5cGUsXG4gICAgICAgIHNlcXVlbmNlSWQ6IHBhcmFtcy5zZXF1ZW5jZUlkLFxuICAgICAgICBjb21tZW50OiBwYXJhbXMuY29tbWVudCxcbiAgICAgICAgcmVjaXBpZW50czogaW50ZW50UmVjaXBpZW50cyxcbiAgICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgfSxcbiAgICAgIGFwaVZlcnNpb246IGFwaVZlcnNpb24sXG4gICAgICBwcmV2aWV3LFxuICAgIH07XG5cbiAgICBjb25zdCB1bnNpZ25lZFR4ID0gKGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0LycgKyB0aGlzLndhbGxldC5pZCgpICsgJy90eHJlcXVlc3RzJywgMikpXG4gICAgICAuc2VuZCh3aGl0ZWxpc3RlZFBhcmFtcylcbiAgICAgIC5yZXN1bHQoKSkgYXMgVHhSZXF1ZXN0O1xuXG4gICAgcmV0dXJuIHVuc2lnbmVkVHg7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBkZWxldGUgc2lnbmF0dXJlIHNoYXJlcyBmb3IgYSB0eFJlcXVlc3QsIHRoZSBlbmRwb2ludCBkZWxldGUgdGhlIHNpZ25hdHVyZXMgYW5kIHJldHVybiB0aGVtXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eFJlcXVlc3RJZCB0eCBpZCByZWZlcmVuY2UgdG8gZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXNcbiAgICogQHJldHVybnMge1NpZ25hdHVyZVNoYXJlUmVjb3JkW119XG4gICAqL1xuICBhc3luYyBkZWxldGVTaWduYXR1cmVTaGFyZXModHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmRbXT4ge1xuICAgIHJldHVybiB0aGlzLmJpdGdvXG4gICAgICAuZGVsKHRoaXMuYml0Z28udXJsKGAvd2FsbGV0LyR7dGhpcy53YWxsZXQuaWQoKX0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdElkfS9zaWduYXR1cmVzaGFyZXNgLCAyKSlcbiAgICAgIC5zZW5kKClcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBzZW5kIHByb2NlZHVyZSBvbmNlIEJpdGdvIGhhcyB0aGUgVXNlciBUbyBCaXRnbyBHU2hhcmVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgYXN5bmMgc2VuZFR4UmVxdWVzdCh0eFJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iYXNlQ29pbi51cmwoJy93YWxsZXQvJyArIHRoaXMud2FsbGV0LmlkKCkgKyAnL3R4L3NlbmQnKSlcbiAgICAgIC5zZW5kKHsgdHhSZXF1ZXN0SWQgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgc2lnbmF0dXJlIHNoYXJlcywgZ2V0IHRoZSB0eCByZXF1ZXN0IHdpdGhvdXQgdGhlbSBmcm9tIHRoZSBkYiBhbmQgc2lnbiBpdCB0byBmaW5hbGx5IHNlbmQgaXQuXG4gICAqXG4gICAqIE5vdGUgOiBUaGlzIGNhbiBiZSBwZXJmb3JtZWQgaW4gb3JkZXIgdG8gcmVhY2ggbGF0ZXN0IG5ldHdvcmsgY29uZGl0aW9ucyByZXF1aXJlZCBvbiBwZW5kaW5nIGFwcHJvdmFsIGZsb3cuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWQgdG8gbWFrZSB0aGUgcmVxdWVzdHMuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkZWNyeXB0ZWRQcnYgLSBkZWNyeXB0ZWQgcHJ2IHRvIHNpZ24gdGhlIHR4IHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7UmVxdWVzdFRyYWNlcn0gcmVxSWQgaWQgdHJhY2VyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgYXN5bmMgcmVjcmVhdGVUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZywgZGVjcnlwdGVkUHJ2OiBzdHJpbmcsIHJlcUlkOiBJUmVxdWVzdFRyYWNlcik6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVTaWduYXR1cmVTaGFyZXModHhSZXF1ZXN0SWQpO1xuICAgIC8vIGFmdGVyIGRlbGV0ZSBzaWduYXR1cmVzIHNoYXJlcyBnZXQgdGhlIHR4IHdpdGhvdXQgdGhlbVxuICAgIGNvbnN0IHR4UmVxdWVzdCA9IGF3YWl0IGdldFR4UmVxdWVzdCh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2lnblR4UmVxdWVzdCh7IHR4UmVxdWVzdCwgcHJ2OiBkZWNyeXB0ZWRQcnYsIHJlcUlkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxhdGVzdCBUeCBSZXF1ZXN0IGJ5IGlkXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn1cbiAgICovXG4gIGFzeW5jIGdldFR4UmVxdWVzdCh0eFJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICByZXR1cm4gZ2V0VHhSZXF1ZXN0KHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmlkKCksIHR4UmVxdWVzdElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNvbW1vblB1YiBwb3J0aW9uIG9mIHRoZSBjb21tb25LZXljaGFpbi5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGNvbW1vbktleWNoYWluXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgZ2V0UHVibGljS2V5RnJvbUNvbW1vbktleWNoYWluKGNvbW1vbktleWNoYWluOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChjb21tb25LZXljaGFpbi5sZW5ndGggIT09IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbW1vbktleWNoYWluIGxlbmd0aCwgZXhwZWN0ZWQgMTI4LCBnb3QgJHtjb21tb25LZXljaGFpbi5sZW5ndGh9YCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1vblB1YkhleFN0ciA9IGNvbW1vbktleWNoYWluLnNsaWNlKDAsIDY0KTtcbiAgICByZXR1cm4gYnM1OC5lbmNvZGUoQnVmZmVyLmZyb20oY29tbW9uUHViSGV4U3RyLCAnaGV4JykpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import { TssUtils } from './eddsa';
2
+ export * as TssUtilsTypes from './types';
3
+ export default TssUtils;
4
+ export { ITssUtils, PrebuildTransactionWithIntentOptions, SignatureShareRecord, SignatureShareType, TxRequest, UnsignedTransaction, } from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,aAAa,MAAM,SAAS,CAAC;AAEzC,eAAe,QAAQ,CAAC;AAGxB,OAAO,EACL,SAAS,EACT,oCAAoC,EACpC,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,29 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.SignatureShareType = exports.TssUtilsTypes = void 0;
23
+ const eddsa_1 = require("./eddsa");
24
+ exports.TssUtilsTypes = __importStar(require("./types"));
25
+ exports.default = eddsa_1.TssUtils;
26
+ // exporting this types for backward compatibility.
27
+ var types_1 = require("./types");
28
+ Object.defineProperty(exports, "SignatureShareType", { enumerable: true, get: function () { return types_1.SignatureShareType; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VkZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMseURBQXlDO0FBRXpDLGtCQUFlLGdCQUFRLENBQUM7QUFFeEIsbURBQW1EO0FBQ25ELGlDQU9pQjtBQUhmLDJHQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHNzVXRpbHMgfSBmcm9tICcuL2VkZHNhJztcbmV4cG9ydCAqIGFzIFRzc1V0aWxzVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IFRzc1V0aWxzO1xuXG4vLyBleHBvcnRpbmcgdGhpcyB0eXBlcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbmV4cG9ydCB7XG4gIElUc3NVdGlscyxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBTaWduYXR1cmVTaGFyZVJlY29yZCxcbiAgU2lnbmF0dXJlU2hhcmVUeXBlLFxuICBUeFJlcXVlc3QsXG4gIFVuc2lnbmVkVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuIl19
@@ -0,0 +1,73 @@
1
+ import type { SerializedKeyPair } from 'openpgp';
2
+ import { KeyShare } from '../../../../account-lib/mpc/tss';
3
+ import { IRequestTracer } from '../../../../api';
4
+ import { KeychainsTriplet } from '../../../baseCoin';
5
+ import { Keychain } from '../../../keychain';
6
+ import { Memo } from '../../../wallet';
7
+ export interface PrebuildTransactionWithIntentOptions {
8
+ reqId: IRequestTracer;
9
+ intentType: string;
10
+ sequenceId?: string;
11
+ recipients: {
12
+ address: string;
13
+ amount: string | number;
14
+ tokenName?: string;
15
+ }[];
16
+ comment?: string;
17
+ memo?: Memo;
18
+ tokenName?: string;
19
+ nonce?: string;
20
+ }
21
+ export declare type TxRequestVersion = 'full' | 'lite';
22
+ export declare type UnsignedTransaction = {
23
+ serializedTxHex: string;
24
+ signableHex: string;
25
+ feeInfo?: {
26
+ fee: number;
27
+ feeString: string;
28
+ };
29
+ derivationPath: string;
30
+ };
31
+ export interface TxRequest {
32
+ txRequestId: string;
33
+ unsignedTxs: UnsignedTransaction[];
34
+ signatureShares?: SignatureShareRecord[];
35
+ transactions: {
36
+ state: string;
37
+ unsignedTx: UnsignedTransaction;
38
+ privateSignatureShares: SignatureShareRecord[];
39
+ signatureShares: SignatureShareRecord[];
40
+ }[];
41
+ apiVersion?: TxRequestVersion;
42
+ }
43
+ export declare enum SignatureShareType {
44
+ USER = "user",
45
+ BACKUP = "backup",
46
+ BITGO = "bitgo"
47
+ }
48
+ export interface SignatureShareRecord {
49
+ from: SignatureShareType;
50
+ to: SignatureShareType;
51
+ share: string;
52
+ }
53
+ export interface ITssUtils {
54
+ createUserKeychain(userGpgKey: SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase: string, originalPasscodeEncryptionCode: string): Promise<Keychain>;
55
+ createBackupKeychain(userGpgKey: SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase: string): Promise<Keychain>;
56
+ createBitgoKeychain(userGpgKey: SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, enterprise: string): Promise<Keychain>;
57
+ createKeychains(params: {
58
+ passphrase: string;
59
+ enterprise?: string;
60
+ originalPasscodeEncryptionCode?: string;
61
+ }): Promise<KeychainsTriplet>;
62
+ signTxRequest(params: {
63
+ txRequest: string | TxRequest;
64
+ prv: string;
65
+ reqId: IRequestTracer;
66
+ }): Promise<TxRequest>;
67
+ prebuildTxWithIntent(params: PrebuildTransactionWithIntentOptions, apiVersion?: TxRequestVersion, preview?: boolean): Promise<TxRequest>;
68
+ deleteSignatureShares(txRequestId: string): Promise<SignatureShareRecord[]>;
69
+ sendTxRequest(txRequestId: string): Promise<any>;
70
+ recreateTxRequest(txRequestId: string, decryptedPrv: string, reqId: IRequestTracer): Promise<TxRequest>;
71
+ getTxRequest(txRequestId: string): Promise<TxRequest>;
72
+ }
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SignatureShareType = void 0;
4
+ var SignatureShareType;
5
+ (function (SignatureShareType) {
6
+ SignatureShareType["USER"] = "user";
7
+ SignatureShareType["BACKUP"] = "backup";
8
+ SignatureShareType["BITGO"] = "bitgo";
9
+ })(SignatureShareType = exports.SignatureShareType || (exports.SignatureShareType = {}));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VkZHNhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtEQSxJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDNUIsbUNBQWEsQ0FBQTtJQUNiLHVDQUFpQixDQUFBO0lBQ2pCLHFDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUpXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBSTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTZXJpYWxpemVkS2V5UGFpciB9IGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgS2V5U2hhcmUgfSBmcm9tICcuLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7IElSZXF1ZXN0VHJhY2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpJztcbmltcG9ydCB7IEtleWNoYWluc1RyaXBsZXQgfSBmcm9tICcuLi8uLi8uLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJy4uLy4uLy4uL2tleWNoYWluJztcbmltcG9ydCB7IE1lbW8gfSBmcm9tICcuLi8uLi8uLi93YWxsZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyB7XG4gIHJlcUlkOiBJUmVxdWVzdFRyYWNlcjtcbiAgaW50ZW50VHlwZTogc3RyaW5nO1xuICBzZXF1ZW5jZUlkPzogc3RyaW5nO1xuICByZWNpcGllbnRzOiB7XG4gICAgYWRkcmVzczogc3RyaW5nO1xuICAgIGFtb3VudDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHRva2VuTmFtZT86IHN0cmluZztcbiAgfVtdO1xuICBjb21tZW50Pzogc3RyaW5nO1xuICBtZW1vPzogTWVtbztcbiAgdG9rZW5OYW1lPzogc3RyaW5nO1xuICBub25jZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVHhSZXF1ZXN0VmVyc2lvbiA9ICdmdWxsJyB8ICdsaXRlJztcblxuZXhwb3J0IHR5cGUgVW5zaWduZWRUcmFuc2FjdGlvbiA9IHtcbiAgc2VyaWFsaXplZFR4SGV4OiBzdHJpbmc7XG4gIHNpZ25hYmxlSGV4OiBzdHJpbmc7XG4gIGZlZUluZm8/OiB7XG4gICAgZmVlOiBudW1iZXI7XG4gICAgZmVlU3RyaW5nOiBzdHJpbmc7XG4gIH07XG4gIGRlcml2YXRpb25QYXRoOiBzdHJpbmc7XG59O1xuXG4vLyBjb21wbGV0ZSB3aXRoIG1vcmUgcHJvcHMgaWYgbmVjY2VzYXJ5XG5leHBvcnQgaW50ZXJmYWNlIFR4UmVxdWVzdCB7XG4gIHR4UmVxdWVzdElkOiBzdHJpbmc7XG4gIC8vIE9ubHkgYXZhaWxhYmxlIGluICdsaXRlJyB2ZXJzaW9uXG4gIHVuc2lnbmVkVHhzOiBVbnNpZ25lZFRyYW5zYWN0aW9uW107XG4gIHNpZ25hdHVyZVNoYXJlcz86IFNpZ25hdHVyZVNoYXJlUmVjb3JkW107XG4gIC8vIE9ubHkgYXZhaWxhYmxlIGluICdmdWxsJyB2ZXJzaW9uXG4gIHRyYW5zYWN0aW9uczoge1xuICAgIHN0YXRlOiBzdHJpbmc7XG4gICAgdW5zaWduZWRUeDogVW5zaWduZWRUcmFuc2FjdGlvbjtcbiAgICBwcml2YXRlU2lnbmF0dXJlU2hhcmVzOiBTaWduYXR1cmVTaGFyZVJlY29yZFtdO1xuICAgIHNpZ25hdHVyZVNoYXJlczogU2lnbmF0dXJlU2hhcmVSZWNvcmRbXTtcbiAgfVtdO1xuICBhcGlWZXJzaW9uPzogVHhSZXF1ZXN0VmVyc2lvbjtcbn1cblxuZXhwb3J0IGVudW0gU2lnbmF0dXJlU2hhcmVUeXBlIHtcbiAgVVNFUiA9ICd1c2VyJyxcbiAgQkFDS1VQID0gJ2JhY2t1cCcsXG4gIEJJVEdPID0gJ2JpdGdvJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIGZyb206IFNpZ25hdHVyZVNoYXJlVHlwZTtcbiAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZTtcbiAgc2hhcmU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVHNzVXRpbHMge1xuICBjcmVhdGVVc2VyS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj47XG4gIGNyZWF0ZUJhY2t1cEtleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+O1xuICBjcmVhdGVCaXRnb0tleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgZW50ZXJwcmlzZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+O1xuICBjcmVhdGVLZXljaGFpbnMocGFyYW1zOiB7XG4gICAgcGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGVudGVycHJpc2U/OiBzdHJpbmc7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PjtcbiAgc2lnblR4UmVxdWVzdChwYXJhbXM6IHsgdHhSZXF1ZXN0OiBzdHJpbmcgfCBUeFJlcXVlc3Q7IHBydjogc3RyaW5nOyByZXFJZDogSVJlcXVlc3RUcmFjZXIgfSk6IFByb21pc2U8VHhSZXF1ZXN0PjtcbiAgcHJlYnVpbGRUeFdpdGhJbnRlbnQoXG4gICAgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMsXG4gICAgYXBpVmVyc2lvbj86IFR4UmVxdWVzdFZlcnNpb24sXG4gICAgcHJldmlldz86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxUeFJlcXVlc3Q+O1xuICBkZWxldGVTaWduYXR1cmVTaGFyZXModHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmRbXT47XG4gIHNlbmRUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgcmVjcmVhdGVUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZywgZGVjcnlwdGVkUHJ2OiBzdHJpbmcsIHJlcUlkOiBJUmVxdWVzdFRyYWNlcik6IFByb21pc2U8VHhSZXF1ZXN0PjtcbiAgZ2V0VHhSZXF1ZXN0KHR4UmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFR4UmVxdWVzdD47XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import TssUtils, { TssUtilsTypes } from './eddsa';
2
+ export { TssUtils, TssUtilsTypes };
3
+ export { ITssUtils, PrebuildTransactionWithIntentOptions, SignatureShareRecord, SignatureShareType, TxRequest, UnsignedTransaction, } from './eddsa';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AAGnC,OAAO,EACL,SAAS,EACT,oCAAoC,EACpC,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,29 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.SignatureShareType = exports.TssUtilsTypes = exports.TssUtils = void 0;
23
+ const eddsa_1 = __importStar(require("./eddsa"));
24
+ exports.TssUtils = eddsa_1.default;
25
+ Object.defineProperty(exports, "TssUtilsTypes", { enumerable: true, get: function () { return eddsa_1.TssUtilsTypes; } });
26
+ // exporting this types for backward compatibility.
27
+ var eddsa_2 = require("./eddsa");
28
+ Object.defineProperty(exports, "SignatureShareType", { enumerable: true, get: function () { return eddsa_2.SignatureShareType; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBa0Q7QUFDekMsbUJBREYsZUFBUSxDQUNFO0FBQUUsOEZBREEscUJBQWEsT0FDQTtBQUVoQyxtREFBbUQ7QUFDbkQsaUNBT2lCO0FBSGYsMkdBQUEsa0JBQWtCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVHNzVXRpbHMsIHsgVHNzVXRpbHNUeXBlcyB9IGZyb20gJy4vZWRkc2EnO1xuZXhwb3J0IHsgVHNzVXRpbHMsIFRzc1V0aWxzVHlwZXMgfTtcblxuLy8gZXhwb3J0aW5nIHRoaXMgdHlwZXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG5leHBvcnQge1xuICBJVHNzVXRpbHMsXG4gIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyxcbiAgU2lnbmF0dXJlU2hhcmVSZWNvcmQsXG4gIFNpZ25hdHVyZVNoYXJlVHlwZSxcbiAgVHhSZXF1ZXN0LFxuICBVbnNpZ25lZFRyYW5zYWN0aW9uLFxufSBmcm9tICcuL2VkZHNhJztcbiJdfQ==