@bitgo/account-lib 2.20.0-rc.23 → 2.20.0-rc.24

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 (94) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/src/coin/sol/ataInitializationBuilder.d.ts +8 -0
  3. package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -1
  4. package/dist/src/coin/sol/ataInitializationBuilder.js +21 -4
  5. package/dist/tsconfig.tsbuildinfo +1461 -3338
  6. package/package.json +6 -6
  7. package/dist/resources/hbar/protobuf/BasicTypes.proto +0 -424
  8. package/dist/resources/hbar/protobuf/CryptoCreate.proto +0 -47
  9. package/dist/resources/hbar/protobuf/CryptoTransfer.proto +0 -33
  10. package/dist/resources/hbar/protobuf/Duration.proto +0 -28
  11. package/dist/resources/hbar/protobuf/Timestamp.proto +0 -34
  12. package/dist/resources/hbar/protobuf/Transaction.proto +0 -35
  13. package/dist/resources/hbar/protobuf/TransactionBody.proto +0 -24
  14. package/dist/resources/hbar/protobuf/TransactionContents.proto +0 -33
  15. package/dist/resources/hbar/protobuf/hedera.d.ts +0 -4612
  16. package/dist/resources/hbar/protobuf/hedera.js +0 -12192
  17. package/dist/src/coin/algo/assetTransferBuilder.d.ts +0 -42
  18. package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +0 -1
  19. package/dist/src/coin/algo/assetTransferBuilder.js +0 -105
  20. package/dist/src/coin/algo/errors.d.ts +0 -11
  21. package/dist/src/coin/algo/errors.d.ts.map +0 -1
  22. package/dist/src/coin/algo/errors.js +0 -27
  23. package/dist/src/coin/algo/ifaces.d.ts +0 -46
  24. package/dist/src/coin/algo/ifaces.d.ts.map +0 -1
  25. package/dist/src/coin/algo/ifaces.js +0 -3
  26. package/dist/src/coin/algo/index.d.ts +0 -13
  27. package/dist/src/coin/algo/index.d.ts.map +0 -1
  28. package/dist/src/coin/algo/index.js +0 -47
  29. package/dist/src/coin/algo/keyPair.d.ts +0 -25
  30. package/dist/src/coin/algo/keyPair.d.ts.map +0 -1
  31. package/dist/src/coin/algo/keyPair.js +0 -77
  32. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +0 -104
  33. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +0 -1
  34. package/dist/src/coin/algo/keyRegistrationBuilder.js +0 -239
  35. package/dist/src/coin/algo/seedEncoding.d.ts +0 -25
  36. package/dist/src/coin/algo/seedEncoding.d.ts.map +0 -1
  37. package/dist/src/coin/algo/seedEncoding.js +0 -97
  38. package/dist/src/coin/algo/transaction.d.ts +0 -75
  39. package/dist/src/coin/algo/transaction.d.ts.map +0 -1
  40. package/dist/src/coin/algo/transaction.js +0 -251
  41. package/dist/src/coin/algo/transactionBuilder.d.ts +0 -204
  42. package/dist/src/coin/algo/transactionBuilder.d.ts.map +0 -1
  43. package/dist/src/coin/algo/transactionBuilder.js +0 -373
  44. package/dist/src/coin/algo/transactionBuilderFactory.d.ts +0 -16
  45. package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +0 -1
  46. package/dist/src/coin/algo/transactionBuilderFactory.js +0 -52
  47. package/dist/src/coin/algo/transferBuilder.d.ts +0 -40
  48. package/dist/src/coin/algo/transferBuilder.d.ts.map +0 -1
  49. package/dist/src/coin/algo/transferBuilder.js +0 -89
  50. package/dist/src/coin/algo/txnSchema.d.ts +0 -7
  51. package/dist/src/coin/algo/txnSchema.d.ts.map +0 -1
  52. package/dist/src/coin/algo/txnSchema.js +0 -68
  53. package/dist/src/coin/algo/utils.d.ts +0 -249
  54. package/dist/src/coin/algo/utils.d.ts.map +0 -1
  55. package/dist/src/coin/algo/utils.js +0 -539
  56. package/dist/src/coin/cspr/constants.d.ts +0 -19
  57. package/dist/src/coin/cspr/constants.d.ts.map +0 -1
  58. package/dist/src/coin/cspr/constants.js +0 -28
  59. package/dist/src/coin/cspr/delegateBuilder.d.ts +0 -49
  60. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +0 -1
  61. package/dist/src/coin/cspr/delegateBuilder.js +0 -111
  62. package/dist/src/coin/cspr/ifaces.d.ts +0 -69
  63. package/dist/src/coin/cspr/ifaces.d.ts.map +0 -1
  64. package/dist/src/coin/cspr/ifaces.js +0 -3
  65. package/dist/src/coin/cspr/index.d.ts +0 -6
  66. package/dist/src/coin/cspr/index.d.ts.map +0 -1
  67. package/dist/src/coin/cspr/index.js +0 -31
  68. package/dist/src/coin/cspr/keyPair.d.ts +0 -18
  69. package/dist/src/coin/cspr/keyPair.d.ts.map +0 -1
  70. package/dist/src/coin/cspr/keyPair.js +0 -75
  71. package/dist/src/coin/cspr/transaction.d.ts +0 -55
  72. package/dist/src/coin/cspr/transaction.d.ts.map +0 -1
  73. package/dist/src/coin/cspr/transaction.js +0 -227
  74. package/dist/src/coin/cspr/transactionBuilder.d.ts +0 -124
  75. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +0 -1
  76. package/dist/src/coin/cspr/transactionBuilder.js +0 -312
  77. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +0 -46
  78. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +0 -1
  79. package/dist/src/coin/cspr/transactionBuilderFactory.js +0 -98
  80. package/dist/src/coin/cspr/transferBuilder.d.ts +0 -39
  81. package/dist/src/coin/cspr/transferBuilder.d.ts.map +0 -1
  82. package/dist/src/coin/cspr/transferBuilder.js +0 -106
  83. package/dist/src/coin/cspr/undelegateBuilder.d.ts +0 -49
  84. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +0 -1
  85. package/dist/src/coin/cspr/undelegateBuilder.js +0 -111
  86. package/dist/src/coin/cspr/utils.d.ts +0 -188
  87. package/dist/src/coin/cspr/utils.d.ts.map +0 -1
  88. package/dist/src/coin/cspr/utils.js +0 -477
  89. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +0 -27
  90. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +0 -1
  91. package/dist/src/coin/cspr/walletInitializationBuilder.js +0 -95
  92. package/dist/src/coin/hbar/ifaces.d.ts +0 -26
  93. package/dist/src/coin/hbar/ifaces.d.ts.map +0 -1
  94. package/dist/src/coin/hbar/ifaces.js +0 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.20.0-rc.24](https://github.com/BitGo/BitGoJS/compare/@bitgo/account-lib@2.20.0-rc.23...@bitgo/account-lib@2.20.0-rc.24) (2022-06-29)
7
+
8
+
9
+ ### Features
10
+
11
+ * **account-lib:** add support for ecdsa sigining and verification tss ([8600501](https://github.com/BitGo/BitGoJS/commit/8600501320f09df21d63f9c01341844cb9a01fe1))
12
+ * **account-lib:** sol create ata for diff owner ([6b5e3a8](https://github.com/BitGo/BitGoJS/commit/6b5e3a8323fc9d8e242eebc0b3814042cb24cb7c))
13
+
14
+
15
+
16
+
17
+
6
18
  # [2.20.0-rc.23](https://github.com/BitGo/BitGoJS/compare/@bitgo/account-lib@2.20.0-rc.22...@bitgo/account-lib@2.20.0-rc.23) (2022-06-27)
7
19
 
8
20
  **Note:** Version bump only for package @bitgo/account-lib
@@ -5,6 +5,7 @@ import { Transaction } from './transaction';
5
5
  import { AtaInitializationTransaction } from './ataInitializationTransaction';
6
6
  export declare class AtaInitializationBuilder extends TransactionBuilder {
7
7
  private _mint;
8
+ private _owner;
8
9
  private _rentExemptAmount;
9
10
  protected _transaction: AtaInitializationTransaction;
10
11
  constructor(_coinConfig: Readonly<CoinConfig>);
@@ -18,6 +19,13 @@ export declare class AtaInitializationBuilder extends TransactionBuilder {
18
19
  */
19
20
  mint(mint: string): this;
20
21
  private validateMintOrThrow;
22
+ /**
23
+ * Sets the owner address of the associated token account
24
+ *
25
+ * @param owner owner address of associated token account
26
+ */
27
+ owner(owner: string): this;
28
+ private validateOwnerOrThrow;
21
29
  /**
22
30
  * Used to set the minimum rent exempt amount
23
31
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ataInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/ataInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAyB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,iBAAiB,CAAS;IAClC,SAAS,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBAEzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAclC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB,OAAO,CAAC,mBAAmB;IAM3B;;;;OAIG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAMhD,OAAO,CAAC,+BAA+B;IAOvC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAMpD,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAkB5D"}
1
+ {"version":3,"file":"ataInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/ataInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAyB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAS;IAClC,SAAS,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBAEzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAclC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB,OAAO,CAAC,mBAAmB;IAM3B;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM1B,OAAO,CAAC,oBAAoB;IAM5B;;;;OAIG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAMhD,OAAO,CAAC,+BAA+B;IAOvC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAMpD,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAoB5D"}
@@ -26,7 +26,7 @@ class AtaInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
26
26
  const ataInitInstruction = instruction;
27
27
  this._mint = ataInitInstruction.params.mintAddress;
28
28
  this.validateMintOrThrow();
29
- this.sender(ataInitInstruction.params.ownerAddress);
29
+ this.owner(ataInitInstruction.params.ownerAddress);
30
30
  }
31
31
  }
32
32
  }
@@ -48,6 +48,21 @@ class AtaInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
48
48
  throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid or missing mint, got: ' + this._mint);
49
49
  }
50
50
  }
51
+ /**
52
+ * Sets the owner address of the associated token account
53
+ *
54
+ * @param owner owner address of associated token account
55
+ */
56
+ owner(owner) {
57
+ this._owner = owner;
58
+ this.validateOwnerOrThrow();
59
+ return this;
60
+ }
61
+ validateOwnerOrThrow() {
62
+ if (!this._owner || !utils_1.isValidAddress(this._owner)) {
63
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid owner, got: ' + this._owner);
64
+ }
65
+ }
51
66
  /**
52
67
  * Used to set the minimum rent exempt amount
53
68
  *
@@ -74,13 +89,15 @@ class AtaInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
74
89
  async buildImplementation() {
75
90
  assert_1.default(this._sender, 'Sender must be set before building the transaction');
76
91
  assert_1.default(this._mint, 'Mint must be set before building the transaction');
77
- const ataPk = await utils_1.getAssociatedTokenAccountAddress(this._mint, this._sender);
92
+ this._owner = this._owner || this._sender;
93
+ assert_1.default(this._owner, 'Owner must be set before building the transaction');
94
+ const ataPk = await utils_1.getAssociatedTokenAccountAddress(this._mint, this._owner);
78
95
  const ataInitData = {
79
96
  type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
80
97
  params: {
81
98
  mintAddress: this._mint,
82
99
  ataAddress: ataPk,
83
- ownerAddress: this._sender,
100
+ ownerAddress: this._owner,
84
101
  payerAddress: this._sender,
85
102
  },
86
103
  };
@@ -90,4 +107,4 @@ class AtaInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
90
107
  }
91
108
  }
92
109
  exports.AtaInitializationBuilder = AtaInitializationBuilder;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL2F0YUluaXRpYWxpemF0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2REFBMEQ7QUFDMUQsOENBQXlFO0FBSXpFLDJDQUFzRDtBQUN0RCxtQ0FBc0g7QUFDdEgsb0RBQTRCO0FBQzVCLGlGQUE4RTtBQUU5RSxNQUFhLHdCQUF5QixTQUFRLHVDQUFrQjtJQUs5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksMkRBQTRCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsb0NBQW9DLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRCLEtBQUssTUFBTSxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ2hELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxtQ0FBdUIsQ0FBQyw0QkFBNEIsRUFBRTtnQkFDN0UsTUFBTSxrQkFBa0IsR0FBWSxXQUFXLENBQUM7Z0JBRWhELElBQUksQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3JEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxJQUFZO1FBQ2YsTUFBTSxLQUFLLEdBQUcsZ0NBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQywwQ0FBMEMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUNwRjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyx3QkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFEQUFxRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsZ0JBQXdCO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTywrQkFBK0I7UUFDckMsaUZBQWlGO1FBQ2pGLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMscUJBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNwRSxNQUFNLElBQUksZ0NBQXFCLENBQUMsc0RBQXNELEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDbEg7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLFdBQXlCO1FBQzNDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsb0RBQW9ELENBQUMsQ0FBQztRQUMzRSxnQkFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsa0RBQWtELENBQUMsQ0FBQztRQUV2RSxNQUFNLEtBQUssR0FBRyxNQUFNLHdDQUFnQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sV0FBVyxHQUFZO1lBQzNCLElBQUksRUFBRSxtQ0FBdUIsQ0FBQyw0QkFBNEI7WUFDMUQsTUFBTSxFQUFFO2dCQUNOLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDdkIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDMUIsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQzNCO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3hFLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUE3RkQsNERBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBBdGFJbml0IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzLCBnZXRTb2xUb2tlbkZyb21Ub2tlbk5hbWUsIGlzVmFsaWRBbW91bnQsIGlzVmFsaWRQdWJsaWNLZXkgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEF0YUluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24gfSBmcm9tICcuL2F0YUluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfbWludDogc3RyaW5nO1xuICBwcml2YXRlIF9yZW50RXhlbXB0QW1vdW50OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IEF0YUluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb247XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IEF0YUluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50KSB7XG4gICAgICAgIGNvbnN0IGF0YUluaXRJbnN0cnVjdGlvbjogQXRhSW5pdCA9IGluc3RydWN0aW9uO1xuXG4gICAgICAgIHRoaXMuX21pbnQgPSBhdGFJbml0SW5zdHJ1Y3Rpb24ucGFyYW1zLm1pbnRBZGRyZXNzO1xuICAgICAgICB0aGlzLnZhbGlkYXRlTWludE9yVGhyb3coKTtcbiAgICAgICAgdGhpcy5zZW5kZXIoYXRhSW5pdEluc3RydWN0aW9uLnBhcmFtcy5vd25lckFkZHJlc3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtaW50IGFkZHJlc3Mgb2YgdGhlIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudFxuICAgKlxuICAgKiBAcGFyYW0gbWludCBtaW50IG5hbWUgb2YgYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gICAqL1xuICBtaW50KG1pbnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHRva2VuID0gZ2V0U29sVG9rZW5Gcm9tVG9rZW5OYW1lKG1pbnQpO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgbWludCwgZ290OiAnICsgbWludCk7XG4gICAgfVxuICAgIHRoaXMuX21pbnQgPSB0b2tlbi50b2tlbkFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlTWludE9yVGhyb3coKSB7XG4gICAgaWYgKCF0aGlzLl9taW50IHx8ICFpc1ZhbGlkUHVibGljS2V5KHRoaXMuX21pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIG9yIG1pc3NpbmcgbWludCwgZ290OiAnICsgdGhpcy5fbWludCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2V0IHRoZSBtaW5pbXVtIHJlbnQgZXhlbXB0IGFtb3VudFxuICAgKlxuICAgKiBAcGFyYW0gcmVudEV4ZW1wdEFtb3VudCBtaW5pbXVtIHJlbnQgZXhlbXB0IGFtb3VudCBpbiBsYW1wb3J0c1xuICAgKi9cbiAgcmVudEV4ZW1wdEFtb3VudChyZW50RXhlbXB0QW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9yZW50RXhlbXB0QW1vdW50ID0gcmVudEV4ZW1wdEFtb3VudDtcbiAgICB0aGlzLnZhbGlkYXRlUmVudEV4ZW1wdEFtb3VudE9yVGhyb3coKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVSZW50RXhlbXB0QW1vdW50T3JUaHJvdygpIHtcbiAgICAvLyBfcmVudEV4ZW1wdEFtb3VudCBpcyBhbGxvd2VkIHRvIGJlIHVuZGVmaW5lZCBvciBhIHZhbGlkIGFtb3VudCBpZiBpdCdzIGRlZmluZWRcbiAgICBpZiAodGhpcy5fcmVudEV4ZW1wdEFtb3VudCAmJiAhaXNWYWxpZEFtb3VudCh0aGlzLl9yZW50RXhlbXB0QW1vdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCByZW50RXhlbXB0QW1vdW50LCBnb3Q6ICcgKyB0aGlzLl9yZW50RXhlbXB0QW1vdW50KTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgdGhpcy52YWxpZGF0ZU1pbnRPclRocm93KCk7XG4gICAgdGhpcy52YWxpZGF0ZVJlbnRFeGVtcHRBbW91bnRPclRocm93KCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsICdTZW5kZXIgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIGFzc2VydCh0aGlzLl9taW50LCAnTWludCBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG5cbiAgICBjb25zdCBhdGFQayA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKHRoaXMuX21pbnQsIHRoaXMuX3NlbmRlcik7XG4gICAgY29uc3QgYXRhSW5pdERhdGE6IEF0YUluaXQgPSB7XG4gICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIG1pbnRBZGRyZXNzOiB0aGlzLl9taW50LFxuICAgICAgICBhdGFBZGRyZXNzOiBhdGFQayxcbiAgICAgICAgb3duZXJBZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgIHBheWVyQWRkcmVzczogdGhpcy5fc2VuZGVyLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSBbYXRhSW5pdERhdGFdO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQgPSB0aGlzLl9yZW50RXhlbXB0QW1vdW50O1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL2F0YUluaXRpYWxpemF0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2REFBMEQ7QUFDMUQsOENBQXlFO0FBSXpFLDJDQUFzRDtBQUN0RCxtQ0FNaUI7QUFDakIsb0RBQTRCO0FBQzVCLGlGQUE4RTtBQUU5RSxNQUFhLHdCQUF5QixTQUFRLHVDQUFrQjtJQU05RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksMkRBQTRCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsb0NBQW9DLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRCLEtBQUssTUFBTSxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ2hELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxtQ0FBdUIsQ0FBQyw0QkFBNEIsRUFBRTtnQkFDN0UsTUFBTSxrQkFBa0IsR0FBWSxXQUFXLENBQUM7Z0JBRWhELElBQUksQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3BEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxJQUFZO1FBQ2YsTUFBTSxLQUFLLEdBQUcsZ0NBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQywwQ0FBMEMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUNwRjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyx3QkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFEQUFxRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEtBQWE7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsc0JBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDJDQUEyQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1RjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsZ0JBQXdCO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTywrQkFBK0I7UUFDckMsaUZBQWlGO1FBQ2pGLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMscUJBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNwRSxNQUFNLElBQUksZ0NBQXFCLENBQUMsc0RBQXNELEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDbEg7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLFdBQXlCO1FBQzNDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsb0RBQW9ELENBQUMsQ0FBQztRQUMzRSxnQkFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsa0RBQWtELENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMxQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsbURBQW1ELENBQUMsQ0FBQztRQUV6RSxNQUFNLEtBQUssR0FBRyxNQUFNLHdDQUFnQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLE1BQU0sV0FBVyxHQUFZO1lBQzNCLElBQUksRUFBRSxtQ0FBdUIsQ0FBQyw0QkFBNEI7WUFDMUQsTUFBTSxFQUFFO2dCQUNOLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDdkIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDekIsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQzNCO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3hFLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFqSEQsNERBaUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBBdGFJbml0IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzLFxuICBnZXRTb2xUb2tlbkZyb21Ub2tlbk5hbWUsXG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkQW1vdW50LFxuICBpc1ZhbGlkUHVibGljS2V5LFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEF0YUluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24gfSBmcm9tICcuL2F0YUluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfbWludDogc3RyaW5nO1xuICBwcml2YXRlIF9vd25lcjogc3RyaW5nO1xuICBwcml2YXRlIF9yZW50RXhlbXB0QW1vdW50OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IEF0YUluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb247XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IEF0YUluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50KSB7XG4gICAgICAgIGNvbnN0IGF0YUluaXRJbnN0cnVjdGlvbjogQXRhSW5pdCA9IGluc3RydWN0aW9uO1xuXG4gICAgICAgIHRoaXMuX21pbnQgPSBhdGFJbml0SW5zdHJ1Y3Rpb24ucGFyYW1zLm1pbnRBZGRyZXNzO1xuICAgICAgICB0aGlzLnZhbGlkYXRlTWludE9yVGhyb3coKTtcbiAgICAgICAgdGhpcy5vd25lcihhdGFJbml0SW5zdHJ1Y3Rpb24ucGFyYW1zLm93bmVyQWRkcmVzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1pbnQgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gICAqXG4gICAqIEBwYXJhbSBtaW50IG1pbnQgbmFtZSBvZiBhc3NvY2lhdGVkIHRva2VuIGFjY291bnRcbiAgICovXG4gIG1pbnQobWludDogc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgdG9rZW4gPSBnZXRTb2xUb2tlbkZyb21Ub2tlbk5hbWUobWludCk7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCBtaW50LCBnb3Q6ICcgKyBtaW50KTtcbiAgICB9XG4gICAgdGhpcy5fbWludCA9IHRva2VuLnRva2VuQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVNaW50T3JUaHJvdygpIHtcbiAgICBpZiAoIXRoaXMuX21pbnQgfHwgIWlzVmFsaWRQdWJsaWNLZXkodGhpcy5fbWludCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgb3IgbWlzc2luZyBtaW50LCBnb3Q6ICcgKyB0aGlzLl9taW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb3duZXIgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gICAqXG4gICAqIEBwYXJhbSBvd25lciBvd25lciBhZGRyZXNzIG9mIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudFxuICAgKi9cbiAgb3duZXIob3duZXI6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX293bmVyID0gb3duZXI7XG4gICAgdGhpcy52YWxpZGF0ZU93bmVyT3JUaHJvdygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU93bmVyT3JUaHJvdygpIHtcbiAgICBpZiAoIXRoaXMuX293bmVyIHx8ICFpc1ZhbGlkQWRkcmVzcyh0aGlzLl9vd25lcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgb3duZXIsIGdvdDogJyArIHRoaXMuX293bmVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBzZXQgdGhlIG1pbmltdW0gcmVudCBleGVtcHQgYW1vdW50XG4gICAqXG4gICAqIEBwYXJhbSByZW50RXhlbXB0QW1vdW50IG1pbmltdW0gcmVudCBleGVtcHQgYW1vdW50IGluIGxhbXBvcnRzXG4gICAqL1xuICByZW50RXhlbXB0QW1vdW50KHJlbnRFeGVtcHRBbW91bnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX3JlbnRFeGVtcHRBbW91bnQgPSByZW50RXhlbXB0QW1vdW50O1xuICAgIHRoaXMudmFsaWRhdGVSZW50RXhlbXB0QW1vdW50T3JUaHJvdygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlbnRFeGVtcHRBbW91bnRPclRocm93KCkge1xuICAgIC8vIF9yZW50RXhlbXB0QW1vdW50IGlzIGFsbG93ZWQgdG8gYmUgdW5kZWZpbmVkIG9yIGEgdmFsaWQgYW1vdW50IGlmIGl0J3MgZGVmaW5lZFxuICAgIGlmICh0aGlzLl9yZW50RXhlbXB0QW1vdW50ICYmICFpc1ZhbGlkQW1vdW50KHRoaXMuX3JlbnRFeGVtcHRBbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIHJlbnRFeGVtcHRBbW91bnQsIGdvdDogJyArIHRoaXMuX3JlbnRFeGVtcHRBbW91bnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnZhbGlkYXRlTWludE9yVGhyb3coKTtcbiAgICB0aGlzLnZhbGlkYXRlUmVudEV4ZW1wdEFtb3VudE9yVGhyb3coKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgYXNzZXJ0KHRoaXMuX3NlbmRlciwgJ1NlbmRlciBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgYXNzZXJ0KHRoaXMuX21pbnQsICdNaW50IG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICB0aGlzLl9vd25lciA9IHRoaXMuX293bmVyIHx8IHRoaXMuX3NlbmRlcjtcbiAgICBhc3NlcnQodGhpcy5fb3duZXIsICdPd25lciBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG5cbiAgICBjb25zdCBhdGFQayA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKHRoaXMuX21pbnQsIHRoaXMuX293bmVyKTtcbiAgICBjb25zdCBhdGFJbml0RGF0YTogQXRhSW5pdCA9IHtcbiAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQsXG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgbWludEFkZHJlc3M6IHRoaXMuX21pbnQsXG4gICAgICAgIGF0YUFkZHJlc3M6IGF0YVBrLFxuICAgICAgICBvd25lckFkZHJlc3M6IHRoaXMuX293bmVyLFxuICAgICAgICBwYXllckFkZHJlc3M6IHRoaXMuX3NlbmRlcixcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhID0gW2F0YUluaXREYXRhXTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi50b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50ID0gdGhpcy5fcmVudEV4ZW1wdEFtb3VudDtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG59XG4iXX0=