@bitgo/account-lib 2.18.0-rc.10 → 2.18.0-rc.14

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 (122) hide show
  1. package/LICENSE +191 -0
  2. package/dist/browser/bitgo-account-lib.js +1 -1
  3. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +40 -0
  4. package/dist/package.json +8 -5
  5. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts +1 -1
  6. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -1
  7. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.js +1 -1
  8. package/dist/src/coin/baseCoin/enum.d.ts +3 -1
  9. package/dist/src/coin/baseCoin/enum.d.ts.map +1 -1
  10. package/dist/src/coin/baseCoin/enum.js +5 -1
  11. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -1
  12. package/dist/src/coin/cspr/delegateBuilder.js +13 -13
  13. package/dist/src/coin/cspr/ifaces.d.ts +5 -5
  14. package/dist/src/coin/cspr/ifaces.d.ts.map +1 -1
  15. package/dist/src/coin/cspr/ifaces.js +1 -1
  16. package/dist/src/coin/cspr/keyPair.d.ts +2 -5
  17. package/dist/src/coin/cspr/keyPair.d.ts.map +1 -1
  18. package/dist/src/coin/cspr/keyPair.js +1 -1
  19. package/dist/src/coin/cspr/transaction.d.ts +1 -1
  20. package/dist/src/coin/cspr/transaction.d.ts.map +1 -1
  21. package/dist/src/coin/cspr/transaction.js +24 -19
  22. package/dist/src/coin/cspr/transactionBuilder.js +10 -10
  23. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -1
  24. package/dist/src/coin/cspr/transactionBuilderFactory.js +7 -6
  25. package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -1
  26. package/dist/src/coin/cspr/transferBuilder.js +5 -7
  27. package/dist/src/coin/cspr/undelegateBuilder.js +13 -13
  28. package/dist/src/coin/cspr/utils.d.ts +1 -1
  29. package/dist/src/coin/cspr/utils.d.ts.map +1 -1
  30. package/dist/src/coin/cspr/utils.js +54 -21
  31. package/dist/src/coin/cspr/walletInitializationBuilder.js +18 -18
  32. package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +1 -1
  33. package/dist/src/coin/dot/addressInitializationBuilder.js +1 -1
  34. package/dist/src/coin/dot/batchTransactionBuilder.d.ts +47 -0
  35. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -0
  36. package/dist/src/coin/dot/batchTransactionBuilder.js +145 -0
  37. package/dist/src/coin/dot/iface.d.ts +24 -2
  38. package/dist/src/coin/dot/iface.d.ts.map +1 -1
  39. package/dist/src/coin/dot/iface.js +3 -1
  40. package/dist/src/coin/dot/index.d.ts +2 -0
  41. package/dist/src/coin/dot/index.d.ts.map +1 -1
  42. package/dist/src/coin/dot/index.js +6 -2
  43. package/dist/src/coin/dot/transaction.d.ts.map +1 -1
  44. package/dist/src/coin/dot/transaction.js +16 -6
  45. package/dist/src/coin/dot/transactionBuilder.d.ts +12 -10
  46. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
  47. package/dist/src/coin/dot/transactionBuilder.js +39 -33
  48. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +5 -3
  49. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
  50. package/dist/src/coin/dot/transactionBuilderFactory.js +28 -21
  51. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
  52. package/dist/src/coin/dot/transferBuilder.js +3 -5
  53. package/dist/src/coin/dot/txnSchema.d.ts +1 -0
  54. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -1
  55. package/dist/src/coin/dot/txnSchema.js +7 -2
  56. package/dist/src/coin/dot/unnominateBuilder.d.ts +24 -0
  57. package/dist/src/coin/dot/unnominateBuilder.d.ts.map +1 -0
  58. package/dist/src/coin/dot/unnominateBuilder.js +72 -0
  59. package/dist/src/coin/dot/utils.d.ts +11 -3
  60. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  61. package/dist/src/coin/dot/utils.js +31 -7
  62. package/dist/src/coin/near/index.d.ts +5 -0
  63. package/dist/src/coin/near/index.d.ts.map +1 -0
  64. package/dist/src/coin/near/index.js +29 -0
  65. package/dist/src/coin/near/keyPair.d.ts +19 -0
  66. package/dist/src/coin/near/keyPair.d.ts.map +1 -0
  67. package/dist/src/coin/near/keyPair.js +76 -0
  68. package/dist/src/coin/near/transaction.d.ts +11 -0
  69. package/dist/src/coin/near/transaction.d.ts.map +1 -0
  70. package/dist/src/coin/near/transaction.js +41 -0
  71. package/dist/src/coin/near/transactionBuilder.d.ts +28 -0
  72. package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -0
  73. package/dist/src/coin/near/transactionBuilder.js +68 -0
  74. package/dist/src/coin/near/transactionBuilderFactory.d.ts +24 -0
  75. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -0
  76. package/dist/src/coin/near/transactionBuilderFactory.js +56 -0
  77. package/dist/src/coin/near/transferBuilder.d.ts +14 -0
  78. package/dist/src/coin/near/transferBuilder.d.ts.map +1 -0
  79. package/dist/src/coin/near/transferBuilder.js +81 -0
  80. package/dist/src/coin/near/utils.d.ts +18 -0
  81. package/dist/src/coin/near/utils.d.ts.map +1 -0
  82. package/dist/src/coin/near/utils.js +37 -0
  83. package/dist/src/coin/near/walletInitializationBuilder.d.ts +14 -0
  84. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -0
  85. package/dist/src/coin/near/walletInitializationBuilder.js +81 -0
  86. package/dist/src/coin/sol/constants.d.ts +30 -5
  87. package/dist/src/coin/sol/constants.d.ts.map +1 -1
  88. package/dist/src/coin/sol/constants.js +38 -8
  89. package/dist/src/coin/sol/iface.d.ts +27 -3
  90. package/dist/src/coin/sol/iface.d.ts.map +1 -1
  91. package/dist/src/coin/sol/iface.js +1 -1
  92. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -1
  93. package/dist/src/coin/sol/instructionParamsFactory.js +103 -4
  94. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -1
  95. package/dist/src/coin/sol/solInstructionFactory.js +73 -1
  96. package/dist/src/coin/sol/stakingActivateBuilder.d.ts +41 -0
  97. package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +1 -0
  98. package/dist/src/coin/sol/stakingActivateBuilder.js +162 -0
  99. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +23 -0
  100. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +1 -0
  101. package/dist/src/coin/sol/stakingDeactivateBuilder.js +130 -0
  102. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +31 -0
  103. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +1 -0
  104. package/dist/src/coin/sol/stakingWithdrawBuilder.js +146 -0
  105. package/dist/src/coin/sol/transaction.d.ts.map +1 -1
  106. package/dist/src/coin/sol/transaction.js +50 -1
  107. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
  108. package/dist/src/coin/sol/transactionBuilder.js +4 -10
  109. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +34 -0
  110. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
  111. package/dist/src/coin/sol/transactionBuilderFactory.js +47 -1
  112. package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -1
  113. package/dist/src/coin/sol/transferBuilder.js +2 -4
  114. package/dist/src/coin/sol/utils.d.ts +23 -1
  115. package/dist/src/coin/sol/utils.d.ts.map +1 -1
  116. package/dist/src/coin/sol/utils.js +63 -11
  117. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -1
  118. package/dist/src/coin/sol/walletInitializationBuilder.js +2 -4
  119. package/dist/src/index.d.ts +2 -0
  120. package/dist/src/index.d.ts.map +1 -1
  121. package/dist/src/index.js +5 -2
  122. package/package.json +8 -5
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAwB,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,MAAM,EAMN,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAGjB,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,eAAe,EAAE,mBAAmB,CAAC;IAC/C,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAEZ,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IASlC,kBAAkB;IACZ,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3C,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIlC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAa3B,eAAe,IAAI,MAAM;IAIzB,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA8FhB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;IAe3G,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;IAelH,uCAAuC,CACrC,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;IAUzB,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;IAYhH,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAgC5C;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAsD5B,cAAc,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAI7C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CAGxD"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAwB,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,MAAM,EAMN,sBAAsB,EAGvB,MAAM,SAAS,CAAC;AAGjB,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,eAAe,EAAE,mBAAmB,CAAC;IAC/C,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAEZ,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IASlC,kBAAkB;IACZ,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3C,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIlC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAa3B,eAAe,IAAI,MAAM;IAIzB,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAqGhB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;IAe3G,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;IAelH,uCAAuC,CACrC,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;IAUzB,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;IAYhH,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAgC5C;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAwD5B,cAAc,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAI7C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CAGxD"}
@@ -185,7 +185,7 @@ var Transaction = /** @class */ (function (_super) {
185
185
  };
186
186
  if (this.type === baseCoin_1.TransactionType.Send) {
187
187
  var txMethod = decodedTx.method.args;
188
- if (txMethod.real) {
188
+ if (utils_1.default.isProxyTransfer(txMethod)) {
189
189
  var keypairReal = new keyPair_1.KeyPair({
190
190
  pub: Buffer.from(keyring_1.decodeAddress(txMethod.real)).toString('hex'),
191
191
  });
@@ -201,13 +201,16 @@ var Transaction = /** @class */ (function (_super) {
201
201
  result.to = keypairDest.getAddress();
202
202
  result.amount = decodedCall.value;
203
203
  }
204
- else {
204
+ else if (utils_1.default.isTransfer(txMethod)) {
205
205
  var keypairDest = new keyPair_1.KeyPair({
206
206
  pub: Buffer.from(keyring_1.decodeAddress(txMethod.dest.id)).toString('hex'),
207
207
  });
208
208
  result.to = keypairDest.getAddress();
209
209
  result.amount = txMethod.value;
210
210
  }
211
+ else {
212
+ throw new errors_1.ParseTransactionError("Serializing unknown Transfer type parameters");
213
+ }
211
214
  }
212
215
  if (this.type === baseCoin_1.TransactionType.StakingActivate) {
213
216
  var txMethod = decodedTx.method.args;
@@ -248,6 +251,10 @@ var Transaction = /** @class */ (function (_super) {
248
251
  var txMethod = decodedTx.method.args;
249
252
  result.amount = txMethod.value;
250
253
  }
254
+ if (this.type === baseCoin_1.TransactionType.Batch) {
255
+ var txMethod = decodedTx.method.args;
256
+ result.batchCalls = txMethod.calls;
257
+ }
251
258
  return result;
252
259
  };
253
260
  Transaction.prototype.explainTransferTransaction = function (json, explanationResult) {
@@ -331,7 +338,7 @@ var Transaction = /** @class */ (function (_super) {
331
338
  var to = void 0;
332
339
  var value = void 0;
333
340
  var from = void 0;
334
- if (txMethod.real) {
341
+ if (utils_1.default.isProxyTransfer(txMethod)) {
335
342
  var decodedCall = utils_1.default.decodeCallMethod(this._dotTransaction, {
336
343
  metadataRpc: this._dotTransaction.metadataRpc,
337
344
  registry: this._registry,
@@ -344,9 +351,9 @@ var Transaction = /** @class */ (function (_super) {
344
351
  });
345
352
  to = keypairDest.getAddress();
346
353
  value = "" + decodedCall.value;
347
- from = keypairFrom.getAddress(txMethod.real);
354
+ from = keypairFrom.getAddress();
348
355
  }
349
- else {
356
+ else if (utils_1.default.isTransfer(txMethod)) {
350
357
  var keypairDest = new keyPair_1.KeyPair({
351
358
  pub: Buffer.from(keyring_1.decodeAddress(txMethod.dest.id)).toString('hex'),
352
359
  });
@@ -354,6 +361,9 @@ var Transaction = /** @class */ (function (_super) {
354
361
  value = txMethod.value;
355
362
  from = decodedTx.address;
356
363
  }
364
+ else {
365
+ throw new errors_1.ParseTransactionError("Loading inputs of unknown Transfer type parameters");
366
+ }
357
367
  this._outputs = [
358
368
  {
359
369
  address: to,
@@ -384,4 +394,4 @@ var Transaction = /** @class */ (function (_super) {
384
394
  return Transaction;
385
395
  }(baseCoin_1.BaseTransaction));
386
396
  exports.Transaction = Transaction;
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3QvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esd0NBQStEO0FBRS9ELDZDQUEyRTtBQUMzRSxvRUFBa0U7QUFHbEUsMkRBQTJEO0FBQzNELHFDQUFvQztBQVdwQyxrREFBNEI7QUFFNUI7SUFBaUMsK0JBQWU7SUFPOUMscUJBQVksVUFBZ0M7ZUFDMUMsa0JBQU0sVUFBVSxDQUFDO0lBQ25CLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsNkJBQU8sR0FBUCxVQUFRLEVBQWdCO1lBQWQsR0FBRyxTQUFBO1FBQ1gsSUFBTSxFQUFFLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckMsSUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGtCQUFrQjtJQUNaLDBCQUFJLEdBQVYsVUFBVyxPQUFnQjs7OztnQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ3pCLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2lCQUNsRTtnQkFDSyxLQUFlLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBOUIsR0FBRyxTQUFBLEVBQUUsR0FBRyxTQUFBLENBQXVCO2dCQUN2QyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLE1BQU0sSUFBSSxxQkFBWSxDQUFDLHFCQUFxQixDQUFDLENB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UUFBUSxDQUFDLEtBQUssQ0FBQztpQkFDbEUsQ0FBQyxDQUFDO2dCQUNILEVBQUUsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzlCLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUN2QixJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxRQUFRLEdBQUc7Z0JBQ2Q7b0JBQ0UsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsS0FBSyxPQUFBO29CQUNMLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ2I7b0JBQ0UsT0FBTyxFQUFFLElBQUk7b0JBQ2IsS0FBSyxPQUFBO29CQUNMLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELG9DQUFjLEdBQWQsVUFBZSxFQUF1QjtRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFDQUFlLEdBQWYsVUFBZ0IsZUFBZ0M7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQXhVRCxDQUFpQywwQkFBZSxHQXdVL0M7QUF4VVksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCYXNlS2V5LCBUcmFuc2FjdGlvblJlY2lwaWVudCB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBTaWduaW5nRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgY29uc3RydWN0LCBkZWNvZGUgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgeyBVbnNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZSc7XG5pbXBvcnQgeyBUeXBlUmVnaXN0cnkgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlL2xpYi90eXBlcyc7XG5pbXBvcnQgS2V5cmluZywgeyBkZWNvZGVBZGRyZXNzIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQge1xuICBUeERhdGEsXG4gIERlY29kZWRUeCxcbiAgU3Rha2VBcmdzLFxuICBTdGFrZUFyZ3NQYXllZVJhdyxcbiAgQWRkUHJveHlBcmdzLFxuICBVbnN0YWtlQXJncyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgQWRkQW5vbnltb3VzUHJveHlBcmdzLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9kb3RUcmFuc2FjdGlvbjogVW5zaWduZWRUcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfc2lnbmVkVHJhbnNhY3Rpb24/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3JlZ2lzdHJ5OiBUeXBlUmVnaXN0cnk7XG4gIHByaXZhdGUgX2NoYWluTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXI6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oeyBrZXkgfTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICBjb25zdCBhZGRyID0ga3AuZ2V0QWRkcmVzcygpO1xuICAgIGlmIChhZGRyID09PSB0aGlzLl9zZW5kZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgc2lnbihrZXlQYWlyOiBLZXlQYWlyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9kb3RUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdObyB0cmFuc2FjdGlvbiBkYXRhIHRvIHNpZ24nKTtcbiAgICB9XG4gICAgY29uc3QgeyBwcnYsIHB1YiB9ID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFwcnYpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmluZ1BheWxvYWQgPSBjb25zdHJ1Y3Quc2lnbmluZ1BheWxvYWQodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICB9KTtcbiAgICAvLyBTaWduIGEgcGF5bG9hZC4gVGhpcyBvcGVyYXRpb24gc2hvdWxkIGJlIHBlcmZvcm1lZCBvbiBhbiBvZmZsaW5lIGRldmljZS5cbiAgICBjb25zdCBrZXlyaW5nID0gbmV3IEtleXJpbmcoeyB0eXBlOiAnZWQyNTUxOScgfSk7XG4gICAgY29uc3Qgc2VjcmV0S2V5ID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JykpO1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgICBjb25zdCBzaWduaW5nS2V5UGFpciA9IGtleXJpbmcuYWRkRnJvbVBhaXIoeyBzZWNyZXRLZXksIHB1YmxpY0tleSB9KTtcbiAgICBjb25zdCB0eEhleCA9IHV0aWxzLmNyZWF0ZVNpZ25lZFR4KHNpZ25pbmdLZXlQYWlyLCBzaWduaW5nUGF5bG9hZCwgdGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICB9KTtcblxuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gdHhIZXg7XG4gIH1cblxuICByZWdpc3RyeShyZWdpc3RyeTogVHlwZVJlZ2lzdHJ5KTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgfVxuXG4gIGNoYWluTmFtZShjaGFpbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2NoYWluTmFtZSA9IGNoYWluTmFtZTtcbiAgfVxuXG4gIHNlbmRlcihzZW5kZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3NlbmRlciA9IHNlbmRlcjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uICYmIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdC5zaWduaW5nUGF5bG9hZCh0aGlzLl9kb3RUcmFuc2FjdGlvbiwge1xuICAgICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2FjdGlvblNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b0Jyb2FkY2FzdEZvcm1hdCgpLmxlbmd0aCAvIDI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9kb3RUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICB9KSBhcyB1bmtub3duIGFzIERlY29kZWRUeDtcblxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IGNvbnN0cnVjdC50eEhhc2godGhpcy50b0Jyb2FkY2FzdEZvcm1hdCgpKSxcbiAgICAgIHNlbmRlcjogZGVjb2RlZFR4LmFkZHJlc3MsXG4gICAgICByZWZlcmVuY2VCbG9jazogZGVjb2RlZFR4LmJsb2NrSGFzaCxcbiAgICAgIGJsb2NrTnVtYmVyOiBkZWNvZGVkVHguYmxvY2tOdW1iZXIsXG4gICAgICBnZW5lc2lzSGFzaDogZGVjb2RlZFR4LmdlbmVzaXNIYXNoLFxuICAgICAgbm9uY2U6IGRlY29kZWRUeC5ub25jZSxcbiAgICAgIHNwZWNWZXJzaW9uOiBkZWNvZGVkVHguc3BlY1ZlcnNpb24sXG4gICAgICB0cmFuc2FjdGlvblZlcnNpb246IGRlY29kZWRUeC50cmFuc2FjdGlvblZlcnNpb24sXG4gICAgICBlcmFQZXJpb2Q6IGRlY29kZWRUeC5lcmFQZXJpb2QsXG4gICAgICBjaGFpbk5hbWU6IHRoaXMuX2NoYWluTmFtZSxcbiAgICAgIHRpcDogZGVjb2RlZFR4LnRpcCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIGFueTtcbiAgICAgIGlmICh0eE1ldGhvZC5yZWFsKSB7XG4gICAgICAgIGNvbnN0IGtleXBhaXJSZWFsID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5yZWFsKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Lm93bmVyID0ga2V5cGFpclJlYWwuZ2V0QWRkcmVzcygpO1xuICAgICAgICByZXN1bHQuZm9yY2VQcm94eVR5cGUgPSB0eE1ldGhvZC5mb3JjZVByb3h5VHlwZTtcbiAgICAgICAgY29uc3QgZGVjb2RlZENhbGwgPSB1dGlscy5kZWNvZGVDYWxsTWV0aG9kKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICAgICAgbWV0YWRhdGFScGM6IHRoaXMuX2RvdFRyYW5zYWN0aW9uLm1ldGFkYXRhUnBjLFxuICAgICAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGtleXBhaXJEZXN0ID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyhkZWNvZGVkQ2FsbC5kZXN0LmlkKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnRvID0ga2V5cGFpckRlc3QuZ2V0QWRkcmVzcygpO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gZGVjb2RlZENhbGwudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBrZXlwYWlyRGVzdCA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3ModHhNZXRob2QuZGVzdC5pZCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC50byA9IGtleXBhaXJEZXN0LmdldEFkZHJlc3MoKTtcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IHR4TWV0aG9kLnZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIFN0YWtlQXJncztcbiAgICAgIGNvbnN0IGtleXBhaXIgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5jb250cm9sbGVyLmlkLCBmYWxzZSwgdGhpcy5fcmVnaXN0cnkuY2hhaW5TUzU4KSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5jb250cm9sbGVyID0ga2V5cGFpci5nZXRBZGRyZXNzKCk7XG4gICAgICByZXN1bHQuYW1vdW50ID0gdHhNZXRob2QudmFsdWU7XG5cbiAgICAgIGNvbnN0IHBheWVlID0gdHhNZXRob2QucGF5ZWUgYXMgU3Rha2VBcmdzUGF5ZWVSYXc7XG4gICAgICBpZiAocGF5ZWUuYWNjb3VudCkge1xuICAgICAgICBjb25zdCBrZXlwYWlyID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyhwYXllZS5hY2NvdW50LCBmYWxzZSwgdGhpcy5fcmVnaXN0cnkuY2hhaW5TUzU4KSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnBheWVlID0ga2V5cGFpci5nZXRBZGRyZXNzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXllZVR5cGUgPSB1dGlscy5jYXBpdGFsaXplRmlyc3RMZXR0ZXIoT2JqZWN0LmtleXMocGF5ZWUpWzBdKSBhcyBzdHJpbmc7XG4gICAgICAgIHJlc3VsdC5wYXllZSA9IHBheWVlVHlwZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKSB7XG4gICAgICBsZXQgdHhNZXRob2Q7XG4gICAgICBpZiAoKGRlY29kZWRUeC5tZXRob2Q/LmFyZ3MgYXMgQWRkUHJveHlBcmdzKS5kZWxlZ2F0ZSkge1xuICAgICAgICB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyBBZGRQcm94eUFyZ3M7XG4gICAgICAgIGNvbnN0IGtleXBhaXIgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKHR4TWV0aG9kLmRlbGVnYXRlLCBmYWxzZSwgdGhpcy5fcmVnaXN0cnkuY2hhaW5TUzU4KSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Lm93bmVyID0ga2V5cGFpci5nZXRBZGRyZXNzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyBBZGRBbm9ueW1vdXNQcm94eUFyZ3M7XG4gICAgICAgIHJlc3VsdC5pbmRleCA9IHR4TWV0aG9kLmluZGV4O1xuICAgICAgfVxuICAgICAgcmVzdWx0LnByb3h5VHlwZSA9IHR4TWV0aG9kLnByb3h5VHlwZTtcbiAgICAgIHJlc3VsdC5kZWxheSA9IHR4TWV0aG9kLmRlbGF5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyBVbnN0YWtlQXJncztcbiAgICAgIHJlc3VsdC5hbW91bnQgPSB0eE1ldGhvZC52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdvd25lcicsICdmb3JjZVByb3h5VHlwZScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGpzb24udG8/LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICAgICAgYW1vdW50OiBqc29uLmFtb3VudD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBvd25lcjoganNvbi5vd25lcixcbiAgICAgIGZvcmNlUHJveHlUeXBlOiBqc29uLmZvcmNlUHJveHlUeXBlLFxuICAgIH07XG4gIH1cblxuICBleHBsYWluU3Rha2luZ0FjdGl2YXRlVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdwYXllZScsICdmb3JjZVByb3h5VHlwZScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGpzb24uY29udHJvbGxlcj8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICBhbW91bnQ6IGpzb24uYW1vdW50IHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBheWVlOiBqc29uLnBheWVlLFxuICAgICAgZm9yY2VQcm94eVR5cGU6IGpzb24uZm9yY2VQcm94eVR5cGUsXG4gICAgfTtcbiAgfVxuXG4gIGV4cGxhaW5BZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbihcbiAgICBqc29uOiBUeERhdGEsXG4gICAgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gICk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdvd25lcicsICdwcm94eVR5cGUnLCAnZGVsYXknKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvd25lcjoganNvbi5vd25lcixcbiAgICAgIHByb3h5VHlwZToganNvbi5wcm94eVR5cGUsXG4gICAgICBkZWxheToganNvbi5kZWxheSxcbiAgICB9O1xuICB9XG5cbiAgZXhwbGFpblN0YWtpbmdVbmxvY2tUcmFuc2FjdGlvbihqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0czogW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczoganNvbi5zZW5kZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICBhbW91bnQ6IGpzb24uYW1vdW50IHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICAvLyB0eGhhc2ggdXNlZCB0byBpZGVudGlmeSB0aGUgdHJhbnNhY3Rpb25zXG4gICAgICBpZDogcmVzdWx0LmlkLFxuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgb3V0cHV0QW1vdW50OiByZXN1bHQuYW1vdW50Py50b1N0cmluZygpIHx8ICcwJyxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBvdXRwdXRzLFxuICAgICAgZmVlOiB7XG4gICAgICAgIGZlZTogcmVzdWx0LnRpcD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgdHlwZTogJ3RpcCcsXG4gICAgICB9LFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5UcmFuc2ZlclRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluU3Rha2luZ0FjdGl2YXRlVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb246XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5BZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5TdGFraW5nVW5sb2NrVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSkgYXMgdW5rbm93biBhcyBEZWNvZGVkVHg7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgYW55O1xuICAgICAgbGV0IHRvOiBzdHJpbmc7XG4gICAgICBsZXQgdmFsdWU6IHN0cmluZztcbiAgICAgIGxldCBmcm9tOiBzdHJpbmc7XG4gICAgICBpZiAodHhNZXRob2QucmVhbCkge1xuICAgICAgICBjb25zdCBkZWNvZGVkQ2FsbCA9IHV0aWxzLmRlY29kZUNhbGxNZXRob2QodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGRlY29kZWRDYWxsLmRlc3QuaWQpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBrZXlwYWlyRnJvbSA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3ModHhNZXRob2QucmVhbCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRvID0ga2V5cGFpckRlc3QuZ2V0QWRkcmVzcygpO1xuICAgICAgICB2YWx1ZSA9IGAke2RlY29kZWRDYWxsLnZhbHVlfWA7XG4gICAgICAgIGZyb20gPSBrZXlwYWlyRnJvbS5nZXRBZGRyZXNzKHR4TWV0aG9kLnJlYWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKHR4TWV0aG9kLmRlc3QuaWQpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0pO1xuICAgICAgICB0byA9IGtleXBhaXJEZXN0LmdldEFkZHJlc3MoKTtcbiAgICAgICAgdmFsdWUgPSB0eE1ldGhvZC52YWx1ZTtcbiAgICAgICAgZnJvbSA9IGRlY29kZWRUeC5hZGRyZXNzO1xuICAgICAgfVxuICAgICAgdGhpcy5fb3V0cHV0cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IHRvLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGZyb20sXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0eDogVW5zaWduZWRUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX2RvdFRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cbn1cbiJdfQ==
397
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3QvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esd0NBQStEO0FBRS9ELDZDQUFrRztBQUNsRyxvRUFBa0U7QUFHbEUsMkRBQTJEO0FBQzNELHFDQUFvQztBQVlwQyxrREFBNEI7QUFFNUI7SUFBaUMsK0JBQWU7SUFPOUMscUJBQVksVUFBZ0M7ZUFDMUMsa0JBQU0sVUFBVSxDQUFDO0lBQ25CLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsNkJBQU8sR0FBUCxVQUFRLEVBQWdCO1lBQWQsR0FBRyxTQUFBO1FBQ1gsSUFBTSxFQUFFLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckMsSUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGtCQUFrQjtJQUNaLDBCQUFJLEdBQVYsVUFBVyxPQUFnQjs7OztnQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ3pCLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2lCQUNsRTtnQkFDSyxLQUFlLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBOUIsR0FBRyxTQUFBLEVBQUUsR0FBRyxTQUFBLENBQXVCO2dCQUN2QyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLE1BQU0sSUFBSSxxQkFBWSxDQUFDLHFCQUFxQixDQUFDLENB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Z0M7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQWpWRCxDQUFpQywwQkFBZSxHQWlWL0M7QUFqVlksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCYXNlS2V5LCBUcmFuc2FjdGlvblJlY2lwaWVudCB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBTaWduaW5nRXJyb3IsIFBhcnNlVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBjb25zdHJ1Y3QsIGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IFR5cGVSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUvbGliL3R5cGVzJztcbmltcG9ydCBLZXlyaW5nLCB7IGRlY29kZUFkZHJlc3MgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7XG4gIFR4RGF0YSxcbiAgRGVjb2RlZFR4LFxuICBTdGFrZUFyZ3MsXG4gIFN0YWtlQXJnc1BheWVlUmF3LFxuICBBZGRQcm94eUFyZ3MsXG4gIFVuc3Rha2VBcmdzLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBBZGRBbm9ueW1vdXNQcm94eUFyZ3MsXG4gIEJhdGNoQXJncyxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfZG90VHJhbnNhY3Rpb246IFVuc2lnbmVkVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3NpZ25lZFRyYW5zYWN0aW9uPzogc3RyaW5nO1xuICBwcml2YXRlIF9yZWdpc3RyeTogVHlwZVJlZ2lzdHJ5O1xuICBwcml2YXRlIF9jaGFpbk5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKHsga2V5IH06IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgY29uc3QgYWRkciA9IGtwLmdldEFkZHJlc3MoKTtcbiAgICBpZiAoYWRkciA9PT0gdGhpcy5fc2VuZGVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTm8gdHJhbnNhY3Rpb24gZGF0YSB0byBzaWduJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgcHJ2LCBwdWIgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25pbmdQYXlsb2FkID0gY29uc3RydWN0LnNpZ25pbmdQYXlsb2FkKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSk7XG4gICAgLy8gU2lnbiBhIHBheWxvYWQuIFRoaXMgb3BlcmF0aW9uIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYW4gb2ZmbGluZSBkZXZpY2UuXG4gICAgY29uc3Qga2V5cmluZyA9IG5ldyBLZXlyaW5nKHsgdHlwZTogJ2VkMjU1MTknIH0pO1xuICAgIGNvbnN0IHNlY3JldEtleSA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpKTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgY29uc3Qgc2lnbmluZ0tleVBhaXIgPSBrZXlyaW5nLmFkZEZyb21QYWlyKHsgc2VjcmV0S2V5LCBwdWJsaWNLZXkgfSk7XG4gICAgY29uc3QgdHhIZXggPSB1dGlscy5jcmVhdGVTaWduZWRUeChzaWduaW5nS2V5UGFpciwgc2lnbmluZ1BheWxvYWQsIHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSk7XG5cbiAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IHR4SGV4O1xuICB9XG5cbiAgcmVnaXN0cnkocmVnaXN0cnk6IFR5cGVSZWdpc3RyeSk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gIH1cblxuICBjaGFpbk5hbWUoY2hhaW5OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFpbk5hbWUgPSBjaGFpbk5hbWU7XG4gIH1cblxuICBzZW5kZXIoc2VuZGVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zZW5kZXIgPSBzZW5kZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2RvdFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiAmJiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3Quc2lnbmluZ1BheWxvYWQodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNhY3Rpb25TaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9Ccm9hZGNhc3RGb3JtYXQoKS5sZW5ndGggLyAyO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSkgYXMgdW5rbm93biBhcyBEZWNvZGVkVHg7XG5cbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiBjb25zdHJ1Y3QudHhIYXNoKHRoaXMudG9Ccm9hZGNhc3RGb3JtYXQoKSksXG4gICAgICBzZW5kZXI6IGRlY29kZWRUeC5hZGRyZXNzLFxuICAgICAgcmVmZXJlbmNlQmxvY2s6IGRlY29kZWRUeC5ibG9ja0hhc2gsXG4gICAgICBibG9ja051bWJlcjogZGVjb2RlZFR4LmJsb2NrTnVtYmVyLFxuICAgICAgZ2VuZXNpc0hhc2g6IGRlY29kZWRUeC5nZW5lc2lzSGFzaCxcbiAgICAgIG5vbmNlOiBkZWNvZGVkVHgubm9uY2UsXG4gICAgICBzcGVjVmVyc2lvbjogZGVjb2RlZFR4LnNwZWNWZXJzaW9uLFxuICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uOiBkZWNvZGVkVHgudHJhbnNhY3Rpb25WZXJzaW9uLFxuICAgICAgZXJhUGVyaW9kOiBkZWNvZGVkVHguZXJhUGVyaW9kLFxuICAgICAgY2hhaW5OYW1lOiB0aGlzLl9jaGFpbk5hbWUsXG4gICAgICB0aXA6IGRlY29kZWRUeC50aXAsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncztcbiAgICAgIGlmICh1dGlscy5pc1Byb3h5VHJhbnNmZXIodHhNZXRob2QpKSB7XG4gICAgICAgIGNvbnN0IGtleXBhaXJSZWFsID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5yZWFsKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Lm93bmVyID0ga2V5cGFpclJlYWwuZ2V0QWRkcmVzcygpO1xuICAgICAgICByZXN1bHQuZm9yY2VQcm94eVR5cGUgPSB0eE1ldGhvZC5mb3JjZVByb3h5VHlwZTtcbiAgICAgICAgY29uc3QgZGVjb2RlZENhbGwgPSB1dGlscy5kZWNvZGVDYWxsTWV0aG9kKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICAgICAgbWV0YWRhdGFScGM6IHRoaXMuX2RvdFRyYW5zYWN0aW9uLm1ldGFkYXRhUnBjLFxuICAgICAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGtleXBhaXJEZXN0ID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyhkZWNvZGVkQ2FsbC5kZXN0LmlkKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnRvID0ga2V5cGFpckRlc3QuZ2V0QWRkcmVzcygpO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gZGVjb2RlZENhbGwudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzVHJhbnNmZXIodHhNZXRob2QpKSB7XG4gICAgICAgIGNvbnN0IGtleXBhaXJEZXN0ID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5kZXN0LmlkKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnRvID0ga2V5cGFpckRlc3QuZ2V0QWRkcmVzcygpO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gdHhNZXRob2QudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKGBTZXJpYWxpemluZyB1bmtub3duIFRyYW5zZmVyIHR5cGUgcGFyYW1ldGVyc2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIFN0YWtlQXJncztcbiAgICAgIGNvbnN0IGtleXBhaXIgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5jb250cm9sbGVyLmlkLCBmYWxzZSwgdGhpcy5fcmVnaXN0cnkuY2hhaW5TUzU4KSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5jb250cm9sbGVyID0ga2V5cGFpci5nZXRBZGRyZXNzKCk7XG4gICAgICByZXN1bHQuYW1vdW50ID0gdHhNZXRob2QudmFsdWU7XG5cbiAgICAgIGNvbnN0IHBheWVlID0gdHhNZXRob2QucGF5ZWUgYXMgU3Rha2VBcmdzUGF5ZWVSYXc7XG4gICAgICBpZiAocGF5ZWUuYWNjb3VudCkge1xuICAgICAgICBjb25zdCBrZXlwYWlyID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyhwYXllZS5hY2NvdW50LCBmYWxzZSwgdGhpcy5fcmVnaXN0cnkuY2hhaW5TUzU4KSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnBheWVlID0ga2V5cGFpci5nZXRBZGRyZXNzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXllZVR5cGUgPSB1dGlscy5jYXBpdGFsaXplRmlyc3RMZXR0ZXIoT2JqZWN0LmtleXMocGF5ZWUpWzBdKSBhcyBzdHJpbmc7XG4gICAgICAgIHJlc3VsdC5wYXllZSA9IHBheWVlVHlwZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKSB7XG4gICAgICBsZXQgdHhNZXRob2Q6IEFkZEFub255bW91c1Byb3h5QXJncyB8IEFkZFByb3h5QXJncztcbiAgICAgIGlmICgoZGVjb2RlZFR4Lm1ldGhvZD8uYXJncyBhcyBBZGRQcm94eUFyZ3MpLmRlbGVnYXRlKSB7XG4gICAgICAgIHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIEFkZFByb3h5QXJncztcbiAgICAgICAgY29uc3Qga2V5cGFpciA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3ModHhNZXRob2QuZGVsZWdhdGUsIGZhbHNlLCB0aGlzLl9yZWdpc3RyeS5jaGFpblNTNTgpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQub3duZXIgPSBrZXlwYWlyLmdldEFkZHJlc3MoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIEFkZEFub255bW91c1Byb3h5QXJncztcbiAgICAgICAgcmVzdWx0LmluZGV4ID0gdHhNZXRob2QuaW5kZXg7XG4gICAgICB9XG4gICAgICByZXN1bHQucHJveHlUeXBlID0gdHhNZXRob2QucHJveHlUeXBlO1xuICAgICAgcmVzdWx0LmRlbGF5ID0gdHhNZXRob2QuZGVsYXk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIFVuc3Rha2VBcmdzO1xuICAgICAgcmVzdWx0LmFtb3VudCA9IHR4TWV0aG9kLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5CYXRjaCkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgQmF0Y2hBcmdzO1xuICAgICAgcmVzdWx0LmJhdGNoQ2FsbHMgPSB0eE1ldGhvZC5jYWxscztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdvd25lcicsICdmb3JjZVByb3h5VHlwZScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGpzb24udG8/LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICAgICAgYW1vdW50OiBqc29uLmFtb3VudD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBvd25lcjoganNvbi5vd25lcixcbiAgICAgIGZvcmNlUHJveHlUeXBlOiBqc29uLmZvcmNlUHJveHlUeXBlLFxuICAgIH07XG4gIH1cblxuICBleHBsYWluU3Rha2luZ0FjdGl2YXRlVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdwYXllZScsICdmb3JjZVByb3h5VHlwZScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGpzb24uY29udHJvbGxlcj8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICBhbW91bnQ6IGpzb24uYW1vdW50IHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBheWVlOiBqc29uLnBheWVlLFxuICAgICAgZm9yY2VQcm94eVR5cGU6IGpzb24uZm9yY2VQcm94eVR5cGUsXG4gICAgfTtcbiAgfVxuXG4gIGV4cGxhaW5BZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbihcbiAgICBqc29uOiBUeERhdGEsXG4gICAgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gICk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdvd25lcicsICdwcm94eVR5cGUnLCAnZGVsYXknKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvd25lcjoganNvbi5vd25lcixcbiAgICAgIHByb3h5VHlwZToganNvbi5wcm94eVR5cGUsXG4gICAgICBkZWxheToganNvbi5kZWxheSxcbiAgICB9O1xuICB9XG5cbiAgZXhwbGFpblN0YWtpbmdVbmxvY2tUcmFuc2FjdGlvbihqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0czogW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczoganNvbi5zZW5kZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICBhbW91bnQ6IGpzb24uYW1vdW50IHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICAvLyB0eGhhc2ggdXNlZCB0byBpZGVudGlmeSB0aGUgdHJhbnNhY3Rpb25zXG4gICAgICBpZDogcmVzdWx0LmlkLFxuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgb3V0cHV0QW1vdW50OiByZXN1bHQuYW1vdW50Py50b1N0cmluZygpIHx8ICcwJyxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBvdXRwdXRzLFxuICAgICAgZmVlOiB7XG4gICAgICAgIGZlZTogcmVzdWx0LnRpcD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgdHlwZTogJ3RpcCcsXG4gICAgICB9LFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5UcmFuc2ZlclRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluU3Rha2luZ0FjdGl2YXRlVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb246XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5BZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5TdGFraW5nVW5sb2NrVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSkgYXMgdW5rbm93biBhcyBEZWNvZGVkVHg7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3M7XG4gICAgICBsZXQgdG86IHN0cmluZztcbiAgICAgIGxldCB2YWx1ZTogc3RyaW5nO1xuICAgICAgbGV0IGZyb206IHN0cmluZztcbiAgICAgIGlmICh1dGlscy5pc1Byb3h5VHJhbnNmZXIodHhNZXRob2QpKSB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRDYWxsID0gdXRpbHMuZGVjb2RlQ2FsbE1ldGhvZCh0aGlzLl9kb3RUcmFuc2FjdGlvbiwge1xuICAgICAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRhZGF0YVJwYyxcbiAgICAgICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBrZXlwYWlyRGVzdCA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3MoZGVjb2RlZENhbGwuZGVzdC5pZCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGtleXBhaXJGcm9tID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5yZWFsKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgdG8gPSBrZXlwYWlyRGVzdC5nZXRBZGRyZXNzKCk7XG4gICAgICAgIHZhbHVlID0gYCR7ZGVjb2RlZENhbGwudmFsdWV9YDtcbiAgICAgICAgZnJvbSA9IGtleXBhaXJGcm9tLmdldEFkZHJlc3MoKTtcbiAgICAgIH0gZWxzZSBpZiAodXRpbHMuaXNUcmFuc2Zlcih0eE1ldGhvZCkpIHtcbiAgICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKHR4TWV0aG9kLmRlc3QuaWQpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0pO1xuICAgICAgICB0byA9IGtleXBhaXJEZXN0LmdldEFkZHJlc3MoKTtcbiAgICAgICAgdmFsdWUgPSB0eE1ldGhvZC52YWx1ZTtcbiAgICAgICAgZnJvbSA9IGRlY29kZWRUeC5hZGRyZXNzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcihgTG9hZGluZyBpbnB1dHMgb2YgdW5rbm93biBUcmFuc2ZlciB0eXBlIHBhcmFtZXRlcnNgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB0byxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBmcm9tLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHg6IFVuc2lnbmVkVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9kb3RUcmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICB0cmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG59XG4iXX0=
@@ -1,10 +1,10 @@
1
- import { BaseCoin as CoinConfig, PolkadotSpecNameType } from '@bitgo/statics';
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
2
  import { UnsignedTransaction } from '@substrate/txwrapper-core';
3
3
  import { DecodedSignedTx, DecodedSigningPayload, TypeRegistry } from '@substrate/txwrapper-core/lib/types';
4
4
  import BigNumber from 'bignumber.js';
5
5
  import { BaseTransactionBuilder, TransactionType } from '../baseCoin';
6
6
  import { BaseAddress, BaseKey, FeeOptions, SequenceId, ValidityWindow } from '../baseCoin/iface';
7
- import { CreateBaseTxInfo, TxMethod } from './iface';
7
+ import { CreateBaseTxInfo, Material, TxMethod } from './iface';
8
8
  import { KeyPair } from './keyPair';
9
9
  import { Transaction } from './transaction';
10
10
  export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
@@ -13,16 +13,12 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
13
13
  protected _sender: string;
14
14
  protected _blockNumber: number;
15
15
  protected _referenceBlock: string;
16
- protected _genesisHash: string;
17
- protected _specVersion: number;
18
- protected _transactionVersion: number;
19
- protected _specName: PolkadotSpecNameType;
20
- protected _chainName: string;
21
16
  protected _nonce: number;
22
17
  protected _tip?: number;
23
18
  protected _eraPeriod?: number;
24
19
  protected _registry: TypeRegistry;
25
20
  protected _method?: TxMethod;
21
+ protected __material?: Material;
26
22
  constructor(_coinConfig: Readonly<CoinConfig>);
27
23
  /**
28
24
  * Sets the address of sending account.
@@ -78,18 +74,24 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
78
74
  * @returns {TransactionBuilder} This transaction builder.
79
75
  *
80
76
  * @see https://wiki.polkadot.network/docs/build-transaction-construction
77
+ * @deprecated This field was added in material data.
81
78
  */
82
79
  version(transactionVersion: number): this;
83
80
  private method;
84
81
  /**
85
- * Set the network based on the configuration in the statics module
82
+ * The material data for the block.
83
+ *
84
+ * @param {Material} material
85
+ * @returns {TransactionBuilder} This transaction builder.
86
+ *
87
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
86
88
  */
87
- protected staticsConfig(): void;
89
+ material(material: Material): this;
90
+ protected get _material(): Material;
88
91
  /** @inheritdoc */
89
92
  protected get transaction(): Transaction;
90
93
  /** @inheritdoc */
91
94
  protected set transaction(transaction: Transaction);
92
- protected isSigningPayload(payload: DecodedSigningPayload | DecodedSignedTx): payload is DecodedSigningPayload;
93
95
  /** @inheritdoc */
94
96
  protected fromImplementation(rawTransaction: string): Transaction;
95
97
  /** @inheritdoc */
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilder.ts"],"names":[],"mappings":"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"}
@@ -90,7 +90,6 @@ var TransactionBuilder = /** @class */ (function (_super) {
90
90
  function TransactionBuilder(_coinConfig) {
91
91
  var _this = _super.call(this, _coinConfig) || this;
92
92
  _this._transaction = new transaction_1.Transaction(_coinConfig);
93
- _this.staticsConfig();
94
93
  return _this;
95
94
  }
96
95
  /**
@@ -180,9 +179,10 @@ var TransactionBuilder = /** @class */ (function (_super) {
180
179
  * @returns {TransactionBuilder} This transaction builder.
181
180
  *
182
181
  * @see https://wiki.polkadot.network/docs/build-transaction-construction
182
+ * @deprecated This field was added in material data.
183
183
  */
184
184
  TransactionBuilder.prototype.version = function (transactionVersion) {
185
- this._transactionVersion = transactionVersion;
185
+ // this._transactionVersion = transactionVersion;
186
186
  return this;
187
187
  };
188
188
  TransactionBuilder.prototype.method = function (method) {
@@ -190,22 +190,35 @@ var TransactionBuilder = /** @class */ (function (_super) {
190
190
  return this;
191
191
  };
192
192
  /**
193
- * Set the network based on the configuration in the statics module
193
+ * The material data for the block.
194
+ *
195
+ * @param {Material} material
196
+ * @returns {TransactionBuilder} This transaction builder.
197
+ *
198
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
194
199
  */
195
- TransactionBuilder.prototype.staticsConfig = function () {
196
- var networkConfig = this._coinConfig.network;
197
- var specName = networkConfig.specName, genesisHash = networkConfig.genesisHash, specVersion = networkConfig.specVersion, chainName = networkConfig.chainName, metadataRpc = networkConfig.metadataRpc;
198
- this._genesisHash = genesisHash;
199
- this._specVersion = specVersion;
200
- this._chainName = chainName;
201
- this._specName = specName;
200
+ TransactionBuilder.prototype.material = function (material) {
201
+ this.__material = material;
202
202
  this._registry = txwrapper_polkadot_1.getRegistry({
203
- chainName: chainName,
204
- specName: specName,
205
- specVersion: specVersion,
206
- metadataRpc: metadataRpc,
203
+ chainName: material.chainName,
204
+ specName: material.specName,
205
+ specVersion: material.specVersion,
206
+ metadataRpc: material.metadata,
207
207
  });
208
+ return this;
208
209
  };
210
+ Object.defineProperty(TransactionBuilder.prototype, "_material", {
211
+ get: function () {
212
+ if (!this.__material) {
213
+ var m = utils_1.default.getMaterial(this._coinConfig);
214
+ this.material(m);
215
+ return m;
216
+ }
217
+ return this.__material;
218
+ },
219
+ enumerable: false,
220
+ configurable: true
221
+ });
209
222
  Object.defineProperty(TransactionBuilder.prototype, "transaction", {
210
223
  /** @inheritdoc */
211
224
  get: function () {
@@ -218,19 +231,14 @@ var TransactionBuilder = /** @class */ (function (_super) {
218
231
  enumerable: false,
219
232
  configurable: true
220
233
  });
221
- TransactionBuilder.prototype.isSigningPayload = function (payload) {
222
- return payload.blockHash !== undefined;
223
- };
224
234
  /** @inheritdoc */
225
235
  TransactionBuilder.prototype.fromImplementation = function (rawTransaction) {
226
- var metadataRpc = this._coinConfig.network.metadataRpc;
227
236
  var decodedTxn = txwrapper_polkadot_1.decode(rawTransaction, {
228
- metadataRpc: metadataRpc,
237
+ metadataRpc: this._material.metadata,
229
238
  registry: this._registry,
230
239
  });
231
- if (this.isSigningPayload(decodedTxn)) {
240
+ if (utils_1.default.isSigningPayload(decodedTxn)) {
232
241
  this.referenceBlock(decodedTxn.blockHash);
233
- this.version(decodedTxn.transactionVersion);
234
242
  }
235
243
  else {
236
244
  this.sender({ address: utils_1.default.decodeDotAddress(decodedTxn.address) });
@@ -254,7 +262,7 @@ var TransactionBuilder = /** @class */ (function (_super) {
254
262
  this.transaction.setTransaction(this.buildTransaction());
255
263
  this.transaction.transactionType(this.transactionType);
256
264
  this.transaction.registry(this._registry);
257
- this.transaction.chainName(this._chainName);
265
+ this.transaction.chainName(this._material.chainName);
258
266
  if (this._keyPair) {
259
267
  this.transaction.sign(this._keyPair);
260
268
  }
@@ -264,22 +272,21 @@ var TransactionBuilder = /** @class */ (function (_super) {
264
272
  });
265
273
  };
266
274
  TransactionBuilder.prototype.createBaseTxInfo = function () {
267
- var metadataRpc = this._coinConfig.network.metadataRpc;
268
275
  return {
269
276
  baseTxInfo: {
270
277
  address: this._sender,
271
278
  blockHash: this._referenceBlock,
272
279
  blockNumber: this._registry.createType('BlockNumber', this._blockNumber).toNumber(),
273
280
  eraPeriod: this._eraPeriod,
274
- genesisHash: this._genesisHash,
275
- metadataRpc: metadataRpc,
281
+ genesisHash: this._material.genesisHash,
282
+ metadataRpc: this._material.metadata,
283
+ specVersion: this._material.specVersion,
284
+ transactionVersion: this._material.txVersion,
276
285
  nonce: this._nonce,
277
- specVersion: this._specVersion,
278
286
  tip: this._tip,
279
- transactionVersion: this._transactionVersion,
280
287
  },
281
288
  options: {
282
- metadataRpc: metadataRpc,
289
+ metadataRpc: this._material.metadata,
283
290
  registry: this._registry,
284
291
  },
285
292
  };
@@ -310,15 +317,14 @@ var TransactionBuilder = /** @class */ (function (_super) {
310
317
  };
311
318
  /** @inheritdoc */
312
319
  TransactionBuilder.prototype.validateRawTransaction = function (rawTransaction) {
313
- var metadataRpc = this._coinConfig.network.metadataRpc;
314
320
  var decodedTxn = txwrapper_polkadot_1.decode(rawTransaction, {
315
- metadataRpc: metadataRpc,
321
+ metadataRpc: this._material.metadata,
316
322
  registry: this._registry,
317
323
  });
318
324
  var eraPeriod = decodedTxn.eraPeriod;
319
325
  var nonce = decodedTxn.nonce;
320
326
  var tip = decodedTxn.tip;
321
- if (this.isSigningPayload(decodedTxn)) {
327
+ if (utils_1.default.isSigningPayload(decodedTxn)) {
322
328
  var blockHash = decodedTxn.blockHash;
323
329
  var validationResult = txnSchema_1.SigningPayloadTransactionSchema.validate({
324
330
  eraPeriod: eraPeriod,
@@ -346,7 +352,7 @@ var TransactionBuilder = /** @class */ (function (_super) {
346
352
  };
347
353
  /** @inheritdoc */
348
354
  TransactionBuilder.prototype.validateTransaction = function (_) {
349
- this.validateBaseFields(this._sender, this._blockNumber, this._referenceBlock, this._genesisHash, this._chainName, this._nonce, this._specVersion, this._specName, this._transactionVersion, this._eraPeriod, this._tip);
355
+ this.validateBaseFields(this._sender, this._blockNumber, this._referenceBlock, this._material.genesisHash, this._material.chainName, this._nonce, this._material.specVersion, this._material.specName, this._material.txVersion, this._eraPeriod, this._tip);
350
356
  };
351
357
  TransactionBuilder.prototype.validateBaseFields = function (sender, blockNumber, blockHash, genesisHash, chainName, nonce, specVersion, specName, transactionVersion, eraPeriod, tip) {
352
358
  var validationResult = txnSchema_1.BaseTransactionSchema.validate({
@@ -382,4 +388,4 @@ var TransactionBuilder = /** @class */ (function (_super) {
382
388
  return TransactionBuilder;
383
389
  }(baseCoin_1.BaseTransactionBuilder));
384
390
  exports.TransactionBuilder = TransactionBuilder;
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZG90L3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0Esb0VBQW9FO0FBQ3BFLHdDQUE0QjtBQUM1Qiw4REFBcUM7QUFDckMsNkNBQXdEO0FBQ3hELHdDQUFzRTtBQUN0RSw2Q0FBb0Y7QUFFcEYsbUNBQW1FO0FBRW5FLHFDQUFvQztBQUNwQyw2Q0FBNEM7QUFDNUMseUNBQThHO0FBQzlHLGtEQUE2RDtBQUU3RDtJQUFpRCxzQ0FBc0I7SUFrQnJFLDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBR25CO1FBRkMsS0FBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDOztJQUN2QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG1DQUFNLEdBQU4sVUFBTyxFQUF3QjtZQUF0QixPQUFPLGFBQUE7UUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCx1Q0FBVSxHQUFWLFVBQVcsS0FBaUI7UUFDMUIsSUFBTSxLQUFLLEdBQUcsSUFBSSxzQkFBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUss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QUE7U0FDSixDQUFDLENBQUM7UUFFSCxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRTtZQUMxQixNQUFNLElBQUksZ0NBQXVCLENBQUMsb0NBQWtDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFTLENBQUMsQ0FBQztTQUN2RztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsMENBQWEsR0FBYixVQUFjLEtBQWdCO1FBQzVCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixNQUFNLElBQUksOEJBQXFCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7SUFFRCxZQUFZO0lBRVosa0JBQWtCO0lBQ1IsK0NBQWtCLEdBQTVCLFVBQTZCLEVBQWdCO1lBQWQsR0FBRyxTQUFBO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDSCx5QkFBQztBQUFELENBQUMsQUE1V0QsQ0FBaUQsaUNBQXNCLEdBNFd0RTtBQTVXcUIsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgRG90TmV0d29yaywgUG9sa2Fkb3RTcGVjTmFtZVR5cGUgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBVbnNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZSc7XG5pbXBvcnQgeyBEZWNvZGVkU2lnbmVkVHgsIERlY29kZWRTaWduaW5nUGF5bG9hZCwgVHlwZVJlZ2lzdHJ5IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZS9saWIvdHlwZXMnO1xuaW1wb3J0IHsgZGVjb2RlLCBnZXRSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IGlzVmFsaWRFZDI1NTE5U2VlZCB9IGZyb20gJy4uLy4uL3V0aWxzL2NyeXB0byc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzLCBCYXNlS2V5LCBGZWVPcHRpb25zLCBTZXF1ZW5jZUlkLCBWYWxpZGl0eVdpbmRvdyB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IEFkZHJlc3NWYWxpZGF0aW9uRXJyb3IsIEludmFsaWRGZWVFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IENyZWF0ZUJhc2VUeEluZm8sIFR4TWV0aG9kIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25TY2hlbWEsIFNpZ25lZFRyYW5zYWN0aW9uU2NoZW1hLCBTaWduaW5nUGF5bG9hZFRyYW5zYWN0aW9uU2NoZW1hIH0gZnJvbSAnLi90eG5TY2hlbWEnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBVdGlscywgZGVmYXVsdCBhcyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX2tleVBhaXI6IEtleVBhaXI7XG4gIHByb3RlY3RlZCBfc2VuZGVyOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIF9ibG9ja051bWJlcjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3JlZmVyZW5jZUJsb2NrOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZ2VuZXNpc0hhc2g6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zcGVjVmVyc2lvbjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uVmVyc2lvbjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3NwZWNOYW1lOiBQb2xrYWRvdFNwZWNOYW1lVHlwZTtcbiAgcHJvdGVjdGVkIF9jaGFpbk5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9ub25jZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RpcD86IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9lcmFQZXJpb2Q/OiBudW1iZXI7XG4gIHByb3RlY3RlZCBfcmVnaXN0cnk6IFR5cGVSZWdpc3RyeTtcbiAgcHJvdGVjdGVkIF9tZXRob2Q/OiBUeE1ldGhvZDtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICAgIHRoaXMuc3RhdGljc0NvbmZpZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFkZHJlc3Mgb2Ygc2VuZGluZyBhY2NvdW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VBZGRyZXNzfSBhZGRyZXNzIFRoZSBTUzU4LWVuY29kZWQgYWRkcmVzcy5cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvYnVpbGQtdHJhbnNhY3Rpb24tY29uc3RydWN0aW9uXG4gICAqL1xuICBzZW5kZXIoeyBhZGRyZXNzIH06IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzIH0pO1xuICAgIHRoaXMuX3NlbmRlciA9IGFkZHJlc3M7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc2VuZGVyKGFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBub25jZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG5vbmNlXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXRyYW5zYWN0aW9uLWNvbnN0cnVjdGlvblxuICAgKi9cbiAgc2VxdWVuY2VJZChub25jZTogU2VxdWVuY2VJZCk6IHRoaXMge1xuICAgIGNvbnN0IHZhbHVlID0gbmV3IEJpZ051bWJlcihub25jZS52YWx1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl9ub25jZSA9IHZhbHVlLnRvTnVtYmVyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRpcCB0byBpbmNyZWFzZSB0cmFuc2FjdGlvbiBwcmlvcml0eS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IFtmZWUudHlwZV0gb3B0aW9ucyBmb3IgYnVpbGRpbmcgZmVlIHR4XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXRyYW5zYWN0aW9uLWNvbnN0cnVjdGlvblxuICAgKi9cbiAgZmVlKGZlZTogRmVlT3B0aW9ucyk6IHRoaXMge1xuICAgIGlmIChmZWUudHlwZSAhPT0gJ3RpcCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRmVlRXJyb3IoZmVlLnR5cGUsICd0aXAnKTtcbiAgICB9XG4gICAgY29uc3QgdGlwQk4gPSBuZXcgQmlnTnVtYmVyKGZlZS5hbW91bnQpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh0aXBCTik7XG4gICAgdGhpcy5fdGlwID0gdGlwQk4udG9OdW1iZXIoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRoZSBjaGVja3BvaW50IGJsb2NrIGFmdGVyIHdoaWNoIHRoZSB0cmFuc2FjdGlvbiBpcyB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0ge1ZhbGlkaXR5V2luZG93fSBmaXJzdFZhbGlkIGJsb2NrIGNoZWNrcG9pbnQgd2hlcmUgdHJhbnNhY3Rpb24gaXMgZmlyc3QgdmFsaWRcbiAgICogQHBhcmFtIHtWYWxpZGl0eVdpbmRvd30gbWF4RHVyYXRpb24gbnVtYmVyIG9mIGJsb2NrcyBhZnRlciBjaGVja3BvaW50IGZvciB3aGljaCB0cmFuc2FjdGlvbiBpcyB2YWxpZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC10cmFuc2FjdGlvbi1jb25zdHJ1Y3Rpb25cbiAgICovXG4gIHZhbGlkaXR5KHsgZmlyc3RWYWxpZCwgbWF4RHVyYXRpb24gfTogVmFsaWRpdHlXaW5kb3cpOiB0aGlzIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZmlyc3RWYWxpZCkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGZpcnN0VmFsaWQpKTtcbiAgICAgIHRoaXMuX2Jsb2NrTnVtYmVyID0gZmlyc3RWYWxpZDtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG1heER1cmF0aW9uKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIobWF4RHVyYXRpb24pKTtcbiAgICAgIHRoaXMuX2VyYVBlcmlvZCA9IG1heER1cmF0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGFzaCBvZiB0aGUgY2hlY2twb2ludCBibG9jay5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlZmVyZW5jZUJsb2NrIGJsb2NrIGhhc2ggY2hlY2twb2ludCBmcm9tIHdoZXJlIHRoZSB0cmFuc2FjdGlvbiBpcyB2YWxpZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC10cmFuc2FjdGlvbi1jb25zdHJ1Y3Rpb25cbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXByb3RvY29sLWluZm8jdHJhbnNhY3Rpb24tbW9ydGFsaXR5XG4gICAqL1xuICByZWZlcmVuY2VCbG9jayhyZWZlcmVuY2VCbG9jazogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fcmVmZXJlbmNlQmxvY2sgPSByZWZlcmVuY2VCbG9jaztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB2ZXJzaW9uIGZvciB0cmFuc2FjdGlvbiBmb3JtYXQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0cmFuc2FjdGlvblZlcnNpb25cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvYnVpbGQtdHJhbnNhY3Rpb24tY29uc3RydWN0aW9uXG4gICAqL1xuICB2ZXJzaW9uKHRyYW5zYWN0aW9uVmVyc2lvbjogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb25WZXJzaW9uID0gdHJhbnNhY3Rpb25WZXJzaW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXRob2QobWV0aG9kOiBUeE1ldGhvZCk6IHRoaXMge1xuICAgIHRoaXMuX21ldGhvZCA9IG1ldGhvZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG5ldHdvcmsgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gaW4gdGhlIHN0YXRpY3MgbW9kdWxlXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljc0NvbmZpZygpOiB2b2lkIHtcbiAgICBjb25zdCBuZXR3b3JrQ29uZmlnID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIERvdE5ldHdvcms7XG4gICAgY29uc3QgeyBzcGVjTmFtZSwgZ2VuZXNpc0hhc2gsIHNwZWNWZXJzaW9uLCBjaGFpbk5hbWUsIG1ldGFkYXRhUnBjIH0gPSBuZXR3b3JrQ29uZmlnO1xuICAgIHRoaXMuX2dlbmVzaXNIYXNoID0gZ2VuZXNpc0hhc2g7XG4gICAgdGhpcy5fc3BlY1ZlcnNpb24gPSBzcGVjVmVyc2lvbjtcbiAgICB0aGlzLl9jaGFpbk5hbWUgPSBjaGFpbk5hbWU7XG4gICAgdGhpcy5fc3BlY05hbWUgPSBzcGVjTmFtZTtcbiAgICB0aGlzLl9yZWdpc3RyeSA9IGdldFJlZ2lzdHJ5KHtcbiAgICAgIGNoYWluTmFtZTogY2hhaW5OYW1lLFxuICAgICAgc3BlY05hbWU6IHNwZWNOYW1lLFxuICAgICAgc3BlY1ZlcnNpb246IHNwZWNWZXJzaW9uLFxuICAgICAgbWV0YWRhdGFScGM6IG1ldGFkYXRhUnBjLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNTaWduaW5nUGF5bG9hZChwYXlsb2FkOiBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfCBEZWNvZGVkU2lnbmVkVHgpOiBwYXlsb2FkIGlzIERlY29kZWRTaWduaW5nUGF5bG9hZCB7XG4gICAgcmV0dXJuIChwYXlsb2FkIGFzIERlY29kZWRTaWduaW5nUGF5bG9hZCkuYmxvY2tIYXNoICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHsgbWV0YWRhdGFScGMgfSA9IHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBEb3ROZXR3b3JrO1xuICAgIGNvbnN0IGRlY29kZWRUeG4gPSBkZWNvZGUocmF3VHJhbnNhY3Rpb24sIHtcbiAgICAgIG1ldGFkYXRhUnBjLFxuICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgIH0pIGFzIERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeDtcbiAgICBpZiAodGhpcy5pc1NpZ25pbmdQYXlsb2FkKGRlY29kZWRUeG4pKSB7XG4gICAgICB0aGlzLnJlZmVyZW5jZUJsb2NrKGRlY29kZWRUeG4uYmxvY2tIYXNoKTtcbiAgICAgIHRoaXMudmVyc2lvbihkZWNvZGVkVHhuLnRyYW5zYWN0aW9uVmVyc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VuZGVyKHsgYWRkcmVzczogdXRpbHMuZGVjb2RlRG90QWRkcmVzcyhkZWNvZGVkVHhuLmFkZHJlc3MpIH0pO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkaXR5KHsgbWF4RHVyYXRpb246IGRlY29kZWRUeG4uZXJhUGVyaW9kIH0pO1xuICAgIHRoaXMuc2VxdWVuY2VJZCh7XG4gICAgICBuYW1lOiAnTm9uY2UnLFxuICAgICAga2V5d29yZDogJ25vbmNlJyxcbiAgICAgIHZhbHVlOiBkZWNvZGVkVHhuLm5vbmNlLFxuICAgIH0pO1xuICAgIGlmIChkZWNvZGVkVHhuLnRpcCkge1xuICAgICAgdGhpcy5mZWUoeyBhbW91bnQ6IGAke2RlY29kZWRUeG4udGlwfWAsIHR5cGU6ICd0aXAnIH0pO1xuICAgIH1cbiAgICB0aGlzLm1ldGhvZChkZWNvZGVkVHhuLm1ldGhvZCBhcyB1bmtub3duIGFzIFR4TWV0aG9kKTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odGhpcy5idWlsZFRyYW5zYWN0aW9uKCkpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnJlZ2lzdHJ5KHRoaXMuX3JlZ2lzdHJ5KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmNoYWluTmFtZSh0aGlzLl9jaGFpbk5hbWUpO1xuICAgIGlmICh0aGlzLl9rZXlQYWlyKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ24odGhpcy5fa2V5UGFpcik7XG4gICAgfVxuICAgIHRoaXMuX3RyYW5zYWN0aW9uLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUJhc2VUeEluZm8oKTogQ3JlYXRlQmFzZVR4SW5mbyB7XG4gICAgY29uc3QgeyBtZXRhZGF0YVJwYyB9ID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIERvdE5ldHdvcms7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhc2VUeEluZm86IHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5fc2VuZGVyLFxuICAgICAgICBibG9ja0hhc2g6IHRoaXMuX3JlZmVyZW5jZUJsb2NrLFxuICAgICAgICBibG9ja051bWJlcjogdGhpcy5fcmVnaXN0cnkuY3JlYXRlVHlwZSgnQmxvY2tOdW1iZXInLCB0aGlzLl9ibG9ja051bWJlcikudG9OdW1iZXIoKSxcbiAgICAgICAgZXJhUGVyaW9kOiB0aGlzLl9lcmFQZXJpb2QsXG4gICAgICAgIGdlbmVzaXNIYXNoOiB0aGlzLl9nZW5lc2lzSGFzaCxcbiAgICAgICAgbWV0YWRhdGFScGMsXG4gICAgICAgIG5vbmNlOiB0aGlzLl9ub25jZSxcbiAgICAgICAgc3BlY1ZlcnNpb246IHRoaXMuX3NwZWNWZXJzaW9uLFxuICAgICAgICB0aXA6IHRoaXMuX3RpcCxcbiAgICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uOiB0aGlzLl90cmFuc2FjdGlvblZlcnNpb24sXG4gICAgICB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBtZXRhZGF0YVJwYyxcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgc3BlY2lmaWMgdHJhbnNhY3Rpb24gYnVpbGRlciBpbnRlcm5hbGx5XG4gICAqIHVzaW5nIHRoZSBAc3Vic3RyYXRlL3R4d3JhcHBlciBidWlsZGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJ1aWxkVHJhbnNhY3Rpb24oKTogVW5zaWduZWRUcmFuc2FjdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghVXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEFkZHJlc3NWYWxpZGF0aW9uRXJyb3IoYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoeyBrZXkgfTogQmFzZUtleSk6IHZvaWQge1xuICAgIGxldCBpc1ZhbGlkUHJpdmF0ZUtleUZyb21CeXRlcztcbiAgICBjb25zdCBpc1ZhbGlkUHJpdmF0ZUtleUZyb21IZXggPSBpc1ZhbGlkRWQyNTUxOVNlZWQoa2V5KTtcbiAgICBjb25zdCBpc1ZhbGlkUHJpdmF0ZUtleUZyb21CYXNlNjQgPSBpc1ZhbGlkRWQyNTUxOVNlZWQoQnVmZmVyLmZyb20oa2V5LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFNlZWQgPSBVdGlscy5kZWNvZGVTZWVkKGtleSk7XG4gICAgICBpc1ZhbGlkUHJpdmF0ZUtleUZyb21CeXRlcyA9IGlzVmFsaWRFZDI1NTE5U2VlZChCdWZmZXIuZnJvbShkZWNvZGVkU2VlZC5zZWVkKS50b1N0cmluZygnaGV4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaXNWYWxpZFByaXZhdGVLZXlGcm9tQnl0ZXMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVmFsaWRQcml2YXRlS2V5RnJvbUJ5dGVzICYmICFpc1ZhbGlkUHJpdmF0ZUtleUZyb21IZXggJiYgIWlzVmFsaWRQcml2YXRlS2V5RnJvbUJhc2U2NCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgS2V5IHZhbGlkYXRpb24gZmFpbGVkYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgc3BlY2lmaWMgdHJhbnNhY3Rpb24gYnVpbGRlciBpbnRlcm5hbGx5XG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oXG4gICAgZGVjb2RlZFR4bjogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4LFxuICAgIHJhd1RyYW5zYWN0aW9uPzogc3RyaW5nLFxuICApOiB2b2lkO1xuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB7IG1ldGFkYXRhUnBjIH0gPSB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgRG90TmV0d29yaztcbiAgICBjb25zdCBkZWNvZGVkVHhuID0gZGVjb2RlKHJhd1RyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICB9KSBhcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfCBEZWNvZGVkU2lnbmVkVHg7XG5cbiAgICBjb25zdCBlcmFQZXJpb2QgPSBkZWNvZGVkVHhuLmVyYVBlcmlvZDtcbiAgICBjb25zdCBub25jZSA9IGRlY29kZWRUeG4ubm9uY2U7XG4gICAgY29uc3QgdGlwID0gZGVjb2RlZFR4bi50aXA7XG5cbiAgICBpZiAodGhpcy5pc1NpZ25pbmdQYXlsb2FkKGRlY29kZWRUeG4pKSB7XG4gICAgICBjb25zdCBibG9ja0hhc2ggPSBkZWNvZGVkVHhuLmJsb2NrSGFzaDtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBTaWduaW5nUGF5bG9hZFRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHtcbiAgICAgICAgZXJhUGVyaW9kLFxuICAgICAgICBibG9ja0hhc2gsXG4gICAgICAgIG5vbmNlLFxuICAgICAgICB0aXAsXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZW5kZXIgPSBkZWNvZGVkVHhuLmFkZHJlc3M7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gU2lnbmVkVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgICBzZW5kZXIsXG4gICAgICAgIG5vbmNlLFxuICAgICAgICBlcmFQZXJpb2QsXG4gICAgICAgIHRpcCxcbiAgICAgIH0pO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHhuLCByYXdUcmFuc2FjdGlvbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbihfOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVCYXNlRmllbGRzKFxuICAgICAgdGhpcy5fc2VuZGVyLFxuICAgICAgdGhpcy5fYmxvY2tOdW1iZXIsXG4gICAgICB0aGlzLl9yZWZlcmVuY2VCbG9jayxcbiAgICAgIHRoaXMuX2dlbmVzaXNIYXNoLFxuICAgICAgdGhpcy5fY2hhaW5OYW1lLFxuICAgICAgdGhpcy5fbm9uY2UsXG4gICAgICB0aGlzLl9zcGVjVmVyc2lvbixcbiAgICAgIHRoaXMuX3NwZWNOYW1lLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25WZXJzaW9uLFxuICAgICAgdGhpcy5fZXJhUGVyaW9kLFxuICAgICAgdGhpcy5fdGlwLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQmFzZUZpZWxkcyhcbiAgICBzZW5kZXI6IHN0cmluZyxcbiAgICBibG9ja051bWJlcjogbnVtYmVyLFxuICAgIGJsb2NrSGFzaDogc3RyaW5nLFxuICAgIGdlbmVzaXNIYXNoOiBzdHJpbmcsXG4gICAgY2hhaW5OYW1lOiBzdHJpbmcsXG4gICAgbm9uY2U6IG51bWJlcixcbiAgICBzcGVjVmVyc2lvbjogbnVtYmVyLFxuICAgIHNwZWNOYW1lOiBQb2xrYWRvdFNwZWNOYW1lVHlwZSxcbiAgICB0cmFuc2FjdGlvblZlcnNpb246IG51bWJlcixcbiAgICBlcmFQZXJpb2Q6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICB0aXA6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IEJhc2VUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICBzZW5kZXIsXG4gICAgICBibG9ja051bWJlcixcbiAgICAgIGJsb2NrSGFzaCxcbiAgICAgIGdlbmVzaXNIYXNoLFxuICAgICAgY2hhaW5OYW1lLFxuICAgICAgbm9uY2UsXG4gICAgICBzcGVjVmVyc2lvbixcbiAgICAgIHNwZWNOYW1lLFxuICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uLFxuICAgICAgZXJhUGVyaW9kLFxuICAgICAgdGlwLFxuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oeyBrZXkgfTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLl9rZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZG90L3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0Esb0VBQW9FO0FBQ3BFLHdDQUE0QjtBQUM1Qiw4REFBcUM7QUFDckMsNkNBQXdEO0FBQ3hELHdDQUFzRTtBQUN0RSw2Q0FBb0Y7QUFFcEYsbUNBQW1FO0FBRW5FLHFDQUFvQztBQUNwQyw2Q0FBNEM7QUFDNUMseUNBQThHO0FBQzlHLGtEQUEyQztBQUUzQztJQUFpRCxzQ0FBc0I7SUFjckUsNEJBQVksV0FBaUM7UUFBN0MsWUFDRSxrQkFBTSxXQUFXLENBQUMsU0FFbkI7UUFEQyxLQUFJLENBQUMsWUFBWSxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQzs7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxtQ0FBTSxHQUFOLFVBQU8sRUFBd0I7WUFBdEIsT0FBTyxhQUFBO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sU0FBQSxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsdUNBQVUsR0FBVixVQUFXLEtBQWlCO1FBQzFCLElBQU0sS0FBSyxHQUFHLElBQUksc0JBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsZ0NBQUcsR0FBSCxVQUFJLEdBQWU7UUFDakIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUN0QixNQUFNLElBQUksd0JBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsSUFBTSxLQUFLLEdBQUcsSUFBSSxzQkFBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gscUNBQVEsR0FBUixVQUFTLEVBQTJDO1lBQXpDLFVBQVUsZ0JBQUEsRUFBRSxXQUFXLGlCQUFBO1FBQ2hDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxzQkFBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7U0FDaEM7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCwyQ0FBYyxHQUFkLFVBQWUsY0FBc0I7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxvQ0FBTyxHQUFQLFVBQVEsa0JBQTBCO1FBQ2hDLGlEQUFpRDtRQUNqRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxtQ0FBTSxHQUFkLFVBQWUsTUFBZ0I7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHFDQUFRLEdBQVIsVUFBUyxRQUFrQjtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLGdDQUFXLENBQUM7WUFDM0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1lBQzdCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7WUFDakMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxRQUFRO1NBQy9CLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHNCQUFjLHlDQUFTO2FBQXZCO1lBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLElBQU0sQ0FBQyxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsQ0FBQzthQUNWO1lBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLENBQUM7OztPQUFBO0lBR0Qsc0JBQWMsMkNBQVc7UUFEekIsa0JBQWtCO2FBQ2xCO1lBQ0UsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzNCLENBQUM7UUFFRCxrQkFBa0I7YUFDbEIsVUFBMEIsV0FBd0I7WUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDbEMsQ0FBQzs7O09BTEE7SUFPRCxrQkFBa0I7SUFDUiwrQ0FBa0IsR0FBNUIsVUFBNkIsY0FBc0I7UUFDakQsSUFBTSxVQUFVLEdBQUcsMkJBQU0sQ0FBQyxjQUFjLEVBQUU7WUFDeEMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtZQUNwQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDekIsQ0FBNEMsQ0FBQztRQUM5QyxJQUFJLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMzQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN0RTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLE9BQU87WUFDaEIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1NBQ3hCLENBQUMsQ0FBQztRQUNILElBQUksVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUcsVUFBVSxDQUFDLEdBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN4RDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQTZCLENBQUMsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtJQUNGLGdEQUFtQixHQUFuQzs7O2dCQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDdEM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUN6QyxzQkFBTyxJQUFJLENBQUMsWUFBWSxFQUFDOzs7S0FDMUI7SUFFUyw2Q0FBZ0IsR0FBMUI7UUFDRSxPQUFPO1lBQ0wsVUFBVSxFQUFFO2dCQUNWLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ25GLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDMUIsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVztnQkFDdkMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVztnQkFDdkMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTO2dCQUM1QyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ2xCLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSTthQUNmO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7Z0JBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUzthQUN6QjtTQUNGLENBQUM7SUFDSixDQUFDO0lBYUQsb0JBQW9CO0lBQ3BCLGtCQUFrQjtJQUNsQiw0Q0FBZSxHQUFmLFVBQWdCLE9BQW9CLEVBQUUsYUFBc0I7UUFDMUQsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFDLE1BQU0sSUFBSSwrQkFBc0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHdDQUFXLEdBQVgsVUFBWSxFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNmLElBQUksMEJBQTBCLENBQUM7UUFDL0IsSUFBTSx3QkFBd0IsR0FBRywyQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxJQUFNLDJCQUEyQixHQUFHLDJCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25HLElBQUk7WUFDRixJQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLDBCQUEwQixHQUFHLDJCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2hHO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWiwwQkFBMEIsR0FBRyxLQUFLLENBQUM7U0FDcEM7UUFFRCxJQUFJLENBQUMsMEJBQTBCLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzVGLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFEO0lBQ0gsQ0FBQztJQVVELGtCQUFrQjtJQUNsQixtREFBc0IsR0FBdEIsVUFBdUIsY0FBc0I7UUFDM0MsSUFBTSxVQUFVLEdBQUcsMkJBQU0sQ0FBQyxjQUFjLEVBQUU7WUFDeEMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtZQUNwQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDekIsQ0FBNEMsQ0FBQztRQUU5QyxJQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLElBQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUUzQixJQUFJLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QyxJQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQ3ZDLElBQU0sZ0JBQWdCLEdBQUcsMkNBQStCLENBQUMsUUFBUSxDQUFDO2dCQUNoRSxTQUFTLFdBQUE7Z0JBQ1QsU0FBUyxXQUFBO2dCQUNULEtBQUssT0FBQTtnQkFDTCxHQUFHLEtBQUE7YUFDSixDQUFDLENBQUM7WUFDSCxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRTtnQkFDMUIsTUFBTSxJQUFJLGdDQUF1QixDQUFDLG9DQUFrQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBUyxDQUFDLENBQUM7YUFDdkc7U0FDRjthQUFNO1lBQ0wsSUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUNsQyxJQUFNLGdCQUFnQixHQUFHLG1DQUF1QixDQUFDLFFBQVEsQ0FBQztnQkFDeEQsTUFBTSxRQUFBO2dCQUNOLEtBQUssT0FBQTtnQkFDTCxTQUFTLFdBQUE7Z0JBQ1QsR0FBRyxLQUFBO2FBQ0osQ0FBQyxDQUFDO1lBQ0gsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxvQ0FBa0MsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQVMsQ0FBQyxDQUFDO2FBQ3ZHO1NBQ0Y7UUFFRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0RBQW1CLEdBQW5CLFVBQW9CLENBQWM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUN4QixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxJQUFJLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFTywrQ0FBa0IsR0FBMUIsVUFDRSxNQUFjLEVBQ2QsV0FBbUIsRUFDbkIsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsU0FBaUIsRUFDakIsS0FBYSxFQUNiLFdBQW1CLEVBQ25CLFFBQThCLEVBQzlCLGtCQUEwQixFQUMxQixTQUE2QixFQUM3QixHQUF1QjtRQUV2QixJQUFNLGdCQUFnQixHQUFHLGlDQUFxQixDQUFDLFFBQVEsQ0FBQztZQUN0RCxNQUFNLFFBQUE7WUFDTixXQUFXLGFBQUE7WUFDWCxTQUFTLFdBQUE7WUFDVCxXQUFXLGFBQUE7WUFDWCxTQUFTLFdBQUE7WUFDVCxLQUFLLE9BQUE7WUFDTCxXQUFXLGFBQUE7WUFDWCxRQUFRLFVBQUE7WUFDUixrQkFBa0Isb0JBQUE7WUFDbEIsU0FBUyxXQUFBO1lBQ1QsR0FBRyxLQUFBO1NBQ0osQ0FBQyxDQUFDO1FBRUgsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDMUIsTUFBTSxJQUFJLGdDQUF1QixDQUFDLG9DQUFrQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBUyxDQUFDLENBQUM7U0FDdkc7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDBDQUFhLEdBQWIsVUFBYyxLQUFnQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLDhCQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRUQsWUFBWTtJQUVaLGtCQUFrQjtJQUNSLCtDQUFrQixHQUE1QixVQUE2QixFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBMVdELENBQWlELGlDQUFzQixHQTBXdEU7QUExV3FCLGdEQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIFBvbGthZG90U3BlY05hbWVUeXBlIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgRGVjb2RlZFNpZ25lZFR4LCBEZWNvZGVkU2lnbmluZ1BheWxvYWQsIFR5cGVSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUvbGliL3R5cGVzJztcbmltcG9ydCB7IGRlY29kZSwgZ2V0UmVnaXN0cnkgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBpc1ZhbGlkRWQyNTUxOVNlZWQgfSBmcm9tICcuLi8uLi91dGlscy9jcnlwdG8nO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBCYXNlQWRkcmVzcywgQmFzZUtleSwgRmVlT3B0aW9ucywgU2VxdWVuY2VJZCwgVmFsaWRpdHlXaW5kb3cgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvbkVycm9yLCBJbnZhbGlkRmVlRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBDcmVhdGVCYXNlVHhJbmZvLCBNYXRlcmlhbCwgVHhNZXRob2QgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvblNjaGVtYSwgU2lnbmVkVHJhbnNhY3Rpb25TY2hlbWEsIFNpZ25pbmdQYXlsb2FkVHJhbnNhY3Rpb25TY2hlbWEgfSBmcm9tICcuL3R4blNjaGVtYSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIHV0aWxzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfa2V5UGFpcjogS2V5UGFpcjtcbiAgcHJvdGVjdGVkIF9zZW5kZXI6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX2Jsb2NrTnVtYmVyOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfcmVmZXJlbmNlQmxvY2s6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9ub25jZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RpcD86IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9lcmFQZXJpb2Q/OiBudW1iZXI7XG4gIHByb3RlY3RlZCBfcmVnaXN0cnk6IFR5cGVSZWdpc3RyeTtcbiAgcHJvdGVjdGVkIF9tZXRob2Q/OiBUeE1ldGhvZDtcbiAgcHJvdGVjdGVkIF9fbWF0ZXJpYWw/OiBNYXRlcmlhbDtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFkZHJlc3Mgb2Ygc2VuZGluZyBhY2NvdW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VBZGRyZXNzfSBhZGRyZXNzIFRoZSBTUzU4LWVuY29kZWQgYWRkcmVzcy5cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvYnVpbGQtdHJhbnNhY3Rpb24tY29uc3RydWN0aW9uXG4gICAqL1xuICBzZW5kZXIoeyBhZGRyZXNzIH06IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzIH0pO1xuICAgIHRoaXMuX3NlbmRlciA9IGFkZHJlc3M7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc2VuZGVyKGFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBub25jZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG5vbmNlXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXRyYW5zYWN0aW9uLWNvbnN0cnVjdGlvblxuICAgKi9cbiAgc2VxdWVuY2VJZChub25jZTogU2VxdWVuY2VJZCk6IHRoaXMge1xuICAgIGNvbnN0IHZhbHVlID0gbmV3IEJpZ051bWJlcihub25jZS52YWx1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl9ub25jZSA9IHZhbHVlLnRvTnVtYmVyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRpcCB0byBpbmNyZWFzZSB0cmFuc2FjdGlvbiBwcmlvcml0eS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IFtmZWUudHlwZV0gb3B0aW9ucyBmb3IgYnVpbGRpbmcgZmVlIHR4XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXRyYW5zYWN0aW9uLWNvbnN0cnVjdGlvblxuICAgKi9cbiAgZmVlKGZlZTogRmVlT3B0aW9ucyk6IHRoaXMge1xuICAgIGlmIChmZWUudHlwZSAhPT0gJ3RpcCcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRmVlRXJyb3IoZmVlLnR5cGUsICd0aXAnKTtcbiAgICB9XG4gICAgY29uc3QgdGlwQk4gPSBuZXcgQmlnTnVtYmVyKGZlZS5hbW91bnQpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh0aXBCTik7XG4gICAgdGhpcy5fdGlwID0gdGlwQk4udG9OdW1iZXIoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRoZSBjaGVja3BvaW50IGJsb2NrIGFmdGVyIHdoaWNoIHRoZSB0cmFuc2FjdGlvbiBpcyB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0ge1ZhbGlkaXR5V2luZG93fSBmaXJzdFZhbGlkIGJsb2NrIGNoZWNrcG9pbnQgd2hlcmUgdHJhbnNhY3Rpb24gaXMgZmlyc3QgdmFsaWRcbiAgICogQHBhcmFtIHtWYWxpZGl0eVdpbmRvd30gbWF4RHVyYXRpb24gbnVtYmVyIG9mIGJsb2NrcyBhZnRlciBjaGVja3BvaW50IGZvciB3aGljaCB0cmFuc2FjdGlvbiBpcyB2YWxpZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC10cmFuc2FjdGlvbi1jb25zdHJ1Y3Rpb25cbiAgICovXG4gIHZhbGlkaXR5KHsgZmlyc3RWYWxpZCwgbWF4RHVyYXRpb24gfTogVmFsaWRpdHlXaW5kb3cpOiB0aGlzIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZmlyc3RWYWxpZCkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGZpcnN0VmFsaWQpKTtcbiAgICAgIHRoaXMuX2Jsb2NrTnVtYmVyID0gZmlyc3RWYWxpZDtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG1heER1cmF0aW9uKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIobWF4RHVyYXRpb24pKTtcbiAgICAgIHRoaXMuX2VyYVBlcmlvZCA9IG1heER1cmF0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGFzaCBvZiB0aGUgY2hlY2twb2ludCBibG9jay5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlZmVyZW5jZUJsb2NrIGJsb2NrIGhhc2ggY2hlY2twb2ludCBmcm9tIHdoZXJlIHRoZSB0cmFuc2FjdGlvbiBpcyB2YWxpZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC10cmFuc2FjdGlvbi1jb25zdHJ1Y3Rpb25cbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXByb3RvY29sLWluZm8jdHJhbnNhY3Rpb24tbW9ydGFsaXR5XG4gICAqL1xuICByZWZlcmVuY2VCbG9jayhyZWZlcmVuY2VCbG9jazogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fcmVmZXJlbmNlQmxvY2sgPSByZWZlcmVuY2VCbG9jaztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB2ZXJzaW9uIGZvciB0cmFuc2FjdGlvbiBmb3JtYXQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0cmFuc2FjdGlvblZlcnNpb25cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvYnVpbGQtdHJhbnNhY3Rpb24tY29uc3RydWN0aW9uXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgZmllbGQgd2FzIGFkZGVkIGluIG1hdGVyaWFsIGRhdGEuXG4gICAqL1xuICB2ZXJzaW9uKHRyYW5zYWN0aW9uVmVyc2lvbjogbnVtYmVyKTogdGhpcyB7XG4gICAgLy8gdGhpcy5fdHJhbnNhY3Rpb25WZXJzaW9uID0gdHJhbnNhY3Rpb25WZXJzaW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXRob2QobWV0aG9kOiBUeE1ldGhvZCk6IHRoaXMge1xuICAgIHRoaXMuX21ldGhvZCA9IG1ldGhvZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF0ZXJpYWwgZGF0YSBmb3IgdGhlIGJsb2NrLlxuICAgKlxuICAgKiBAcGFyYW0ge01hdGVyaWFsfSBtYXRlcmlhbFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC10cmFuc2FjdGlvbi1jb25zdHJ1Y3Rpb25cbiAgICovXG4gIG1hdGVyaWFsKG1hdGVyaWFsOiBNYXRlcmlhbCk6IHRoaXMge1xuICAgIHRoaXMuX19tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gZ2V0UmVnaXN0cnkoe1xuICAgICAgY2hhaW5OYW1lOiBtYXRlcmlhbC5jaGFpbk5hbWUsXG4gICAgICBzcGVjTmFtZTogbWF0ZXJpYWwuc3BlY05hbWUsXG4gICAgICBzcGVjVmVyc2lvbjogbWF0ZXJpYWwuc3BlY1ZlcnNpb24sXG4gICAgICBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IF9tYXRlcmlhbCgpOiBNYXRlcmlhbCB7XG4gICAgaWYgKCF0aGlzLl9fbWF0ZXJpYWwpIHtcbiAgICAgIGNvbnN0IG0gPSB1dGlscy5nZXRNYXRlcmlhbCh0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgIHRoaXMubWF0ZXJpYWwobSk7XG4gICAgICByZXR1cm4gbTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX19tYXRlcmlhbDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBkZWNvZGVkVHhuID0gZGVjb2RlKHJhd1RyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSkgYXMgRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4O1xuICAgIGlmICh1dGlscy5pc1NpZ25pbmdQYXlsb2FkKGRlY29kZWRUeG4pKSB7XG4gICAgICB0aGlzLnJlZmVyZW5jZUJsb2NrKGRlY29kZWRUeG4uYmxvY2tIYXNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZW5kZXIoeyBhZGRyZXNzOiB1dGlscy5kZWNvZGVEb3RBZGRyZXNzKGRlY29kZWRUeG4uYWRkcmVzcykgfSk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRpdHkoeyBtYXhEdXJhdGlvbjogZGVjb2RlZFR4bi5lcmFQZXJpb2QgfSk7XG4gICAgdGhpcy5zZXF1ZW5jZUlkKHtcbiAgICAgIG5hbWU6ICdOb25jZScsXG4gICAgICBrZXl3b3JkOiAnbm9uY2UnLFxuICAgICAgdmFsdWU6IGRlY29kZWRUeG4ubm9uY2UsXG4gICAgfSk7XG4gICAgaWYgKGRlY29kZWRUeG4udGlwKSB7XG4gICAgICB0aGlzLmZlZSh7IGFtb3VudDogYCR7ZGVjb2RlZFR4bi50aXB9YCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgfVxuICAgIHRoaXMubWV0aG9kKGRlY29kZWRUeG4ubWV0aG9kIGFzIHVua25vd24gYXMgVHhNZXRob2QpO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbih0aGlzLmJ1aWxkVHJhbnNhY3Rpb24oKSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucmVnaXN0cnkodGhpcy5fcmVnaXN0cnkpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uY2hhaW5OYW1lKHRoaXMuX21hdGVyaWFsLmNoYWluTmFtZSk7XG4gICAgaWYgKHRoaXMuX2tleVBhaXIpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbih0aGlzLl9rZXlQYWlyKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlQmFzZVR4SW5mbygpOiBDcmVhdGVCYXNlVHhJbmZvIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmFzZVR4SW5mbzoge1xuICAgICAgICBhZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgIGJsb2NrSGFzaDogdGhpcy5fcmVmZXJlbmNlQmxvY2ssXG4gICAgICAgIGJsb2NrTnVtYmVyOiB0aGlzLl9yZWdpc3RyeS5jcmVhdGVUeXBlKCdCbG9ja051bWJlcicsIHRoaXMuX2Jsb2NrTnVtYmVyKS50b051bWJlcigpLFxuICAgICAgICBlcmFQZXJpb2Q6IHRoaXMuX2VyYVBlcmlvZCxcbiAgICAgICAgZ2VuZXNpc0hhc2g6IHRoaXMuX21hdGVyaWFsLmdlbmVzaXNIYXNoLFxuICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHNwZWNWZXJzaW9uOiB0aGlzLl9tYXRlcmlhbC5zcGVjVmVyc2lvbixcbiAgICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uOiB0aGlzLl9tYXRlcmlhbC50eFZlcnNpb24sXG4gICAgICAgIG5vbmNlOiB0aGlzLl9ub25jZSxcbiAgICAgICAgdGlwOiB0aGlzLl90aXAsXG4gICAgICB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHNwZWNpZmljIHRyYW5zYWN0aW9uIGJ1aWxkZXIgaW50ZXJuYWxseVxuICAgKiB1c2luZyB0aGUgQHN1YnN0cmF0ZS90eHdyYXBwZXIgYnVpbGRlci5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZFRyYW5zYWN0aW9uKCk6IFVuc2lnbmVkVHJhbnNhY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBBZGRyZXNzVmFsaWRhdGlvbkVycm9yKGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KHsga2V5IH06IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBsZXQgaXNWYWxpZFByaXZhdGVLZXlGcm9tQnl0ZXM7XG4gICAgY29uc3QgaXNWYWxpZFByaXZhdGVLZXlGcm9tSGV4ID0gaXNWYWxpZEVkMjU1MTlTZWVkKGtleSk7XG4gICAgY29uc3QgaXNWYWxpZFByaXZhdGVLZXlGcm9tQmFzZTY0ID0gaXNWYWxpZEVkMjU1MTlTZWVkKEJ1ZmZlci5mcm9tKGtleSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRTZWVkID0gdXRpbHMuZGVjb2RlU2VlZChrZXkpO1xuICAgICAgaXNWYWxpZFByaXZhdGVLZXlGcm9tQnl0ZXMgPSBpc1ZhbGlkRWQyNTUxOVNlZWQoQnVmZmVyLmZyb20oZGVjb2RlZFNlZWQuc2VlZCkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlzVmFsaWRQcml2YXRlS2V5RnJvbUJ5dGVzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFpc1ZhbGlkUHJpdmF0ZUtleUZyb21CeXRlcyAmJiAhaXNWYWxpZFByaXZhdGVLZXlGcm9tSGV4ICYmICFpc1ZhbGlkUHJpdmF0ZUtleUZyb21CYXNlNjQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEtleSB2YWxpZGF0aW9uIGZhaWxlZGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHNwZWNpZmljIHRyYW5zYWN0aW9uIGJ1aWxkZXIgaW50ZXJuYWxseVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKFxuICAgIGRlY29kZWRUeG46IERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeCxcbiAgICByYXdUcmFuc2FjdGlvbj86IHN0cmluZyxcbiAgKTogdm9pZDtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZGVjb2RlZFR4biA9IGRlY29kZShyYXdUcmFuc2FjdGlvbiwge1xuICAgICAgbWV0YWRhdGFScGM6IHRoaXMuX21hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgIH0pIGFzIERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeDtcblxuICAgIGNvbnN0IGVyYVBlcmlvZCA9IGRlY29kZWRUeG4uZXJhUGVyaW9kO1xuICAgIGNvbnN0IG5vbmNlID0gZGVjb2RlZFR4bi5ub25jZTtcbiAgICBjb25zdCB0aXAgPSBkZWNvZGVkVHhuLnRpcDtcblxuICAgIGlmICh1dGlscy5pc1NpZ25pbmdQYXlsb2FkKGRlY29kZWRUeG4pKSB7XG4gICAgICBjb25zdCBibG9ja0hhc2ggPSBkZWNvZGVkVHhuLmJsb2NrSGFzaDtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBTaWduaW5nUGF5bG9hZFRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHtcbiAgICAgICAgZXJhUGVyaW9kLFxuICAgICAgICBibG9ja0hhc2gsXG4gICAgICAgIG5vbmNlLFxuICAgICAgICB0aXAsXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZW5kZXIgPSBkZWNvZGVkVHhuLmFkZHJlc3M7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gU2lnbmVkVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgICBzZW5kZXIsXG4gICAgICAgIG5vbmNlLFxuICAgICAgICBlcmFQZXJpb2QsXG4gICAgICAgIHRpcCxcbiAgICAgIH0pO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHhuLCByYXdUcmFuc2FjdGlvbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbihfOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVCYXNlRmllbGRzKFxuICAgICAgdGhpcy5fc2VuZGVyLFxuICAgICAgdGhpcy5fYmxvY2tOdW1iZXIsXG4gICAgICB0aGlzLl9yZWZlcmVuY2VCbG9jayxcbiAgICAgIHRoaXMuX21hdGVyaWFsLmdlbmVzaXNIYXNoLFxuICAgICAgdGhpcy5fbWF0ZXJpYWwuY2hhaW5OYW1lLFxuICAgICAgdGhpcy5fbm9uY2UsXG4gICAgICB0aGlzLl9tYXRlcmlhbC5zcGVjVmVyc2lvbixcbiAgICAgIHRoaXMuX21hdGVyaWFsLnNwZWNOYW1lLFxuICAgICAgdGhpcy5fbWF0ZXJpYWwudHhWZXJzaW9uLFxuICAgICAgdGhpcy5fZXJhUGVyaW9kLFxuICAgICAgdGhpcy5fdGlwLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQmFzZUZpZWxkcyhcbiAgICBzZW5kZXI6IHN0cmluZyxcbiAgICBibG9ja051bWJlcjogbnVtYmVyLFxuICAgIGJsb2NrSGFzaDogc3RyaW5nLFxuICAgIGdlbmVzaXNIYXNoOiBzdHJpbmcsXG4gICAgY2hhaW5OYW1lOiBzdHJpbmcsXG4gICAgbm9uY2U6IG51bWJlcixcbiAgICBzcGVjVmVyc2lvbjogbnVtYmVyLFxuICAgIHNwZWNOYW1lOiBQb2xrYWRvdFNwZWNOYW1lVHlwZSxcbiAgICB0cmFuc2FjdGlvblZlcnNpb246IG51bWJlcixcbiAgICBlcmFQZXJpb2Q6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICB0aXA6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IEJhc2VUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICBzZW5kZXIsXG4gICAgICBibG9ja051bWJlcixcbiAgICAgIGJsb2NrSGFzaCxcbiAgICAgIGdlbmVzaXNIYXNoLFxuICAgICAgY2hhaW5OYW1lLFxuICAgICAgbm9uY2UsXG4gICAgICBzcGVjVmVyc2lvbixcbiAgICAgIHNwZWNOYW1lLFxuICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uLFxuICAgICAgZXJhUGVyaW9kLFxuICAgICAgdGlwLFxuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oeyBrZXkgfTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLl9rZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
@@ -1,21 +1,23 @@
1
1
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
2
  import { BaseTransactionBuilderFactory } from '../baseCoin';
3
- import { TypeRegistry } from '@substrate/txwrapper-core/lib/types';
4
3
  import { TransactionBuilder } from './transactionBuilder';
5
4
  import { TransferBuilder } from './transferBuilder';
6
5
  import { AddressInitializationBuilder } from './addressInitializationBuilder';
7
6
  import { StakingBuilder } from './stakingBuilder';
7
+ import { Material } from './iface';
8
8
  import { UnstakeBuilder } from '.';
9
+ import { UnnominateBuilder } from './unnominateBuilder';
9
10
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
10
- protected _registry: TypeRegistry;
11
+ protected _material: Material;
11
12
  constructor(_coinConfig: Readonly<CoinConfig>);
12
13
  getTransferBuilder(): TransferBuilder;
13
14
  getStakingBuilder(): StakingBuilder;
14
15
  getAddressInitializationBuilder(): AddressInitializationBuilder;
15
16
  getWalletInitializationBuilder(): void;
16
17
  getUnstakeBuilder(): UnstakeBuilder;
18
+ getUnnominateBuilder(): UnnominateBuilder;
17
19
  from(rawTxn: string): TransactionBuilder;
18
- protected staticsConfig(): void;
20
+ material(material: Material): this;
19
21
  private getBuilder;
20
22
  }
21
23
  //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAc,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;AAEnC,qBAAa,yBAA0B,SAAQ,6BAA6B;IAC1E,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC;gBAEtB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,kBAAkB,IAAI,eAAe;IAIrC,iBAAiB,IAAI,cAAc;IAInC,+BAA+B,IAAI,4BAA4B;IAI/D,8BAA8B,IAAI,IAAI;IAItC,iBAAiB,IAAI,cAAc;IAInC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAMxC,SAAS,CAAC,aAAa,IAAI,IAAI;IAW/B,OAAO,CAAC,UAAU;CAsBnB"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAG5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,yBAA0B,SAAQ,6BAA6B;IAC1E,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,kBAAkB,IAAI,eAAe;IAIrC,iBAAiB,IAAI,cAAc;IAInC,+BAA+B,IAAI,4BAA4B;IAI/D,8BAA8B,IAAI,IAAI;IAItC,iBAAiB,IAAI,cAAc;IAInC,oBAAoB,IAAI,iBAAiB;IAIzC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAMxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAKlC,OAAO,CAAC,UAAU;CA4BnB"}