@bitgo/account-lib 2.17.2-rc.1 → 2.17.2-rc.2

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 (78) hide show
  1. package/dist/browser/bitgo-account-lib.min.js +1 -1
  2. package/dist/package.json +7 -3
  3. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  4. package/dist/src/coin/baseCoin/baseTransactionBuilder.js +1 -1
  5. package/dist/src/coin/cspr/utils.js +2 -2
  6. package/dist/src/coin/dot/errors.d.ts +3 -0
  7. package/dist/src/coin/dot/errors.d.ts.map +1 -1
  8. package/dist/src/coin/dot/errors.js +12 -2
  9. package/dist/src/coin/dot/iface.d.ts +1 -1
  10. package/dist/src/coin/dot/iface.d.ts.map +1 -1
  11. package/dist/src/coin/dot/iface.js +1 -1
  12. package/dist/src/coin/dot/index.d.ts +5 -0
  13. package/dist/src/coin/dot/index.d.ts.map +1 -1
  14. package/dist/src/coin/dot/index.js +12 -2
  15. package/dist/src/coin/dot/keyPair.d.ts +15 -2
  16. package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
  17. package/dist/src/coin/dot/keyPair.js +41 -6
  18. package/dist/src/coin/dot/transaction.d.ts +31 -3
  19. package/dist/src/coin/dot/transaction.d.ts.map +1 -1
  20. package/dist/src/coin/dot/transaction.js +269 -7
  21. package/dist/src/coin/dot/transactionBuilder.d.ts +102 -9
  22. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
  23. package/dist/src/coin/dot/transactionBuilder.js +309 -15
  24. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +13 -16
  25. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
  26. package/dist/src/coin/dot/transactionBuilderFactory.js +60 -25
  27. package/dist/src/coin/dot/transferBuilder.d.ts +62 -4
  28. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
  29. package/dist/src/coin/dot/transferBuilder.js +161 -44
  30. package/dist/src/coin/dot/utils.d.ts +69 -0
  31. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  32. package/dist/src/coin/dot/utils.js +144 -4
  33. package/dist/src/coin/dot/walletInitializationBuilder.d.ts +51 -5
  34. package/dist/src/coin/dot/walletInitializationBuilder.d.ts.map +1 -1
  35. package/dist/src/coin/dot/walletInitializationBuilder.js +112 -44
  36. package/dist/src/coin/sol/constants.d.ts +24 -0
  37. package/dist/src/coin/sol/constants.d.ts.map +1 -0
  38. package/dist/src/coin/sol/constants.js +35 -0
  39. package/dist/src/coin/sol/iface.d.ts +46 -0
  40. package/dist/src/coin/sol/iface.d.ts.map +1 -1
  41. package/dist/src/coin/sol/iface.js +3 -1
  42. package/dist/src/coin/sol/instructionParamsFactory.d.ts +12 -0
  43. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -0
  44. package/dist/src/coin/sol/instructionParamsFactory.js +99 -0
  45. package/dist/src/coin/sol/keyPair.d.ts +32 -6
  46. package/dist/src/coin/sol/keyPair.d.ts.map +1 -1
  47. package/dist/src/coin/sol/keyPair.js +107 -29
  48. package/dist/src/coin/sol/solInstructionFactory.d.ts +10 -0
  49. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -0
  50. package/dist/src/coin/sol/solInstructionFactory.js +102 -0
  51. package/dist/src/coin/sol/transaction.d.ts +29 -17
  52. package/dist/src/coin/sol/transaction.d.ts.map +1 -1
  53. package/dist/src/coin/sol/transaction.js +202 -20
  54. package/dist/src/coin/sol/transactionBuilder.d.ts +61 -3
  55. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
  56. package/dist/src/coin/sol/transactionBuilder.js +210 -10
  57. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +13 -3
  58. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
  59. package/dist/src/coin/sol/transactionBuilderFactory.js +36 -6
  60. package/dist/src/coin/sol/transferBuilder.d.ts +15 -8
  61. package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -1
  62. package/dist/src/coin/sol/transferBuilder.js +62 -15
  63. package/dist/src/coin/sol/utils.d.ts +84 -2
  64. package/dist/src/coin/sol/utils.d.ts.map +1 -1
  65. package/dist/src/coin/sol/utils.js +162 -6
  66. package/dist/src/coin/sol/walletInitializationBuilder.d.ts +15 -8
  67. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -1
  68. package/dist/src/coin/sol/walletInitializationBuilder.js +61 -13
  69. package/dist/src/index.d.ts +2 -0
  70. package/dist/src/index.d.ts.map +1 -1
  71. package/dist/src/index.js +6 -2
  72. package/dist/src/utils/crypto.d.ts +8 -0
  73. package/dist/src/utils/crypto.d.ts.map +1 -1
  74. package/dist/src/utils/crypto.js +13 -2
  75. package/package.json +7 -3
  76. package/resources/dot/index.ts +2 -0
  77. package/resources/dot/mainnet.ts +2 -0
  78. package/resources/dot/westend.ts +2 -0
@@ -1,14 +1,72 @@
1
1
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
- import { BaseKey } from '../baseCoin/iface';
3
2
  import { TransactionBuilder } from './transactionBuilder';
4
3
  import { Transaction } from './transaction';
4
+ import { UnsignedTransaction } from '@substrate/txwrapper-core';
5
+ import { TransactionType } from '../baseCoin';
6
+ import { proxyType } from './iface';
7
+ import { BaseAddress } from '../baseCoin/iface';
5
8
  export declare class TransferBuilder extends TransactionBuilder {
9
+ protected _amount: string;
10
+ protected _to: string;
11
+ protected _owner: string;
12
+ protected _forceProxyType: proxyType;
6
13
  constructor(_coinConfig: Readonly<CoinConfig>);
14
+ /**
15
+ *
16
+ * Dispatch the given call from an account that the sender is authorised for through add_proxy.
17
+ *
18
+ * @returns {UnsignedTransaction} an unsigned Dot transaction
19
+ *
20
+ * @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
21
+ */
22
+ protected buildTransaction(): UnsignedTransaction;
23
+ protected get transactionType(): TransactionType;
24
+ /**
25
+ *
26
+ * The amount for transfer transaction.
27
+ *
28
+ * @param {string} amount
29
+ * @returns {TransferBuilder} This transfer builder.
30
+ *
31
+ * @see https://wiki.polkadot.network/docs/build-protocol-info
32
+ */
33
+ amount(amount: string): this;
34
+ /**
35
+ *
36
+ * The destination address for transfer transaction.
37
+ *
38
+ * @param {string} dest
39
+ * @returns {TransferBuilder} This transfer builder.
40
+ *
41
+ * @see https://wiki.polkadot.network/docs/build-protocol-info
42
+ */
43
+ to({ address }: BaseAddress): this;
44
+ /**
45
+ *
46
+ * The real address of the original tx
47
+ *
48
+ * @param {BaseAddress} real
49
+ * @returns {TransferBuilder} This builder.
50
+ *
51
+ * @see https://wiki.polkadot.network/docs/learn-proxies#why-use-a-proxy
52
+ */
53
+ owner(owner: BaseAddress): this;
54
+ /**
55
+ *
56
+ * The proxy type to execute
57
+ *
58
+ * @param {proxyType} forceProxyType
59
+ * @returns {TransferBuilder} This builder.
60
+ *
61
+ * @see https://wiki.polkadot.network/docs/learn-proxies#proxy-types
62
+ */
63
+ forceProxyType(forceProxyType: proxyType): this;
7
64
  /** @inheritdoc */
8
- protected buildImplementation(): Promise<Transaction>;
65
+ validateRawTransaction(rawTransaction: string): void;
9
66
  /** @inheritdoc */
10
- protected fromImplementation(rawTransaction: any): Transaction;
67
+ protected fromImplementation(rawTransaction: string): Transaction;
11
68
  /** @inheritdoc */
12
- protected signImplementation(key: BaseKey): Transaction;
69
+ validateTransaction(_: Transaction): void;
70
+ private validateFields;
13
71
  }
14
72
  //# sourceMappingURL=transferBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAI3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,GAAG,GAAG,WAAW;IAI9D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;CAGxD"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAA0B,SAAS,EAAgB,MAAM,SAAS,CAAC;AAG1E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAwBjD,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;;;;;OAQG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM/B;;;;;;;;OAQG;IACH,cAAc,CAAC,cAAc,EAAE,SAAS,GAAG,IAAI;IAK/C,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IA+BpD,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IA6BjE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzC,OAAO,CAAC,cAAc;CAWvB"}
@@ -14,68 +14,185 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (_) try {
33
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
52
19
  };
53
20
  Object.defineProperty(exports, "__esModule", { value: true });
54
21
  exports.TransferBuilder = void 0;
22
+ var txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
23
+ var bignumber_js_1 = __importDefault(require("bignumber.js"));
55
24
  var errors_1 = require("../baseCoin/errors");
56
25
  var transactionBuilder_1 = require("./transactionBuilder");
26
+ var baseCoin_1 = require("../baseCoin");
27
+ var iface_1 = require("./iface");
28
+ var txnSchema_1 = require("./txnSchema");
29
+ var utils_1 = __importDefault(require("./utils"));
57
30
  var TransferBuilder = /** @class */ (function (_super) {
58
31
  __extends(TransferBuilder, _super);
59
32
  function TransferBuilder(_coinConfig) {
60
33
  return _super.call(this, _coinConfig) || this;
61
34
  }
35
+ /**
36
+ *
37
+ * Dispatch the given call from an account that the sender is authorised for through add_proxy.
38
+ *
39
+ * @returns {UnsignedTransaction} an unsigned Dot transaction
40
+ *
41
+ * @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
42
+ */
43
+ TransferBuilder.prototype.buildTransaction = function () {
44
+ var baseTxInfo = this.createBaseTxInfo();
45
+ var transferTx = txwrapper_polkadot_1.methods.balances.transferKeepAlive({
46
+ value: this._amount,
47
+ dest: this._to,
48
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
49
+ if (!this._owner) {
50
+ return transferTx;
51
+ }
52
+ return txwrapper_polkadot_1.methods.proxy.proxy({
53
+ real: this._owner,
54
+ forceProxyType: this._forceProxyType,
55
+ call: transferTx.method,
56
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
57
+ };
58
+ Object.defineProperty(TransferBuilder.prototype, "transactionType", {
59
+ get: function () {
60
+ return baseCoin_1.TransactionType.Send;
61
+ },
62
+ enumerable: false,
63
+ configurable: true
64
+ });
65
+ /**
66
+ *
67
+ * The amount for transfer transaction.
68
+ *
69
+ * @param {string} amount
70
+ * @returns {TransferBuilder} This transfer builder.
71
+ *
72
+ * @see https://wiki.polkadot.network/docs/build-protocol-info
73
+ */
74
+ TransferBuilder.prototype.amount = function (amount) {
75
+ this.validateValue(new bignumber_js_1.default(amount));
76
+ this._amount = amount;
77
+ return this;
78
+ };
79
+ /**
80
+ *
81
+ * The destination address for transfer transaction.
82
+ *
83
+ * @param {string} dest
84
+ * @returns {TransferBuilder} This transfer builder.
85
+ *
86
+ * @see https://wiki.polkadot.network/docs/build-protocol-info
87
+ */
88
+ TransferBuilder.prototype.to = function (_a) {
89
+ var address = _a.address;
90
+ this.validateAddress({ address: address });
91
+ this._to = address;
92
+ return this;
93
+ };
94
+ /**
95
+ *
96
+ * The real address of the original tx
97
+ *
98
+ * @param {BaseAddress} real
99
+ * @returns {TransferBuilder} This builder.
100
+ *
101
+ * @see https://wiki.polkadot.network/docs/learn-proxies#why-use-a-proxy
102
+ */
103
+ TransferBuilder.prototype.owner = function (owner) {
104
+ this.validateAddress({ address: owner.address });
105
+ this._owner = owner.address;
106
+ return this;
107
+ };
108
+ /**
109
+ *
110
+ * The proxy type to execute
111
+ *
112
+ * @param {proxyType} forceProxyType
113
+ * @returns {TransferBuilder} This builder.
114
+ *
115
+ * @see https://wiki.polkadot.network/docs/learn-proxies#proxy-types
116
+ */
117
+ TransferBuilder.prototype.forceProxyType = function (forceProxyType) {
118
+ this._forceProxyType = forceProxyType;
119
+ return this;
120
+ };
62
121
  /** @inheritdoc */
63
- TransferBuilder.prototype.buildImplementation = function () {
64
- return __awaiter(this, void 0, void 0, function () {
65
- return __generator(this, function (_a) {
66
- throw new errors_1.NotImplementedError('method not implemented');
67
- });
122
+ TransferBuilder.prototype.validateRawTransaction = function (rawTransaction) {
123
+ var _a, _b;
124
+ _super.prototype.validateRawTransaction.call(this, rawTransaction);
125
+ var decodedTxn = txwrapper_polkadot_1.decode(rawTransaction, {
126
+ metadataRpc: this._metadataRpc,
127
+ registry: this._registry,
68
128
  });
129
+ if (((_a = decodedTxn.method) === null || _a === void 0 ? void 0 : _a.name) === iface_1.MethodNames.TransferKeepAlive) {
130
+ var txMethod = decodedTxn.method.args;
131
+ var amount = "" + txMethod.value;
132
+ var to = txMethod.dest.id;
133
+ var validationResult = txnSchema_1.TransferTransactionSchema.validate({ amount: amount, to: to });
134
+ if (validationResult.error) {
135
+ throw new errors_1.InvalidTransactionError("Transfer Transaction validation failed: " + validationResult.error.message);
136
+ }
137
+ }
138
+ else if (((_b = decodedTxn.method) === null || _b === void 0 ? void 0 : _b.name) === iface_1.MethodNames.Proxy) {
139
+ var txMethod = decodedTxn.method.args;
140
+ var real = txMethod.real;
141
+ var forceProxyType = txMethod.forceProxyType;
142
+ var decodedCall = utils_1.default.decodeCallMethod(rawTransaction, {
143
+ registry: this._registry,
144
+ metadataRpc: this._metadataRpc,
145
+ });
146
+ var amount = "" + decodedCall.value;
147
+ var to = decodedCall.dest.id;
148
+ var validationResult = txnSchema_1.ProxyTransactionSchema.validate({ real: real, forceProxyType: forceProxyType, amount: amount, to: to });
149
+ if (validationResult.error) {
150
+ throw new errors_1.InvalidTransactionError("Proxy Transaction validation failed: " + validationResult.error.message);
151
+ }
152
+ }
69
153
  };
70
154
  /** @inheritdoc */
71
155
  TransferBuilder.prototype.fromImplementation = function (rawTransaction) {
72
- throw new errors_1.NotImplementedError('method not implemented');
156
+ var _a, _b, _c, _d;
157
+ var tx = _super.prototype.fromImplementation.call(this, rawTransaction);
158
+ if (((_a = this._method) === null || _a === void 0 ? void 0 : _a.name) === iface_1.MethodNames.TransferKeepAlive) {
159
+ var txMethod = this._method.args;
160
+ this.amount(txMethod.value);
161
+ this.to({ address: utils_1.default.decodeDotAddress(txMethod.dest.id) });
162
+ }
163
+ else if (((_b = this._method) === null || _b === void 0 ? void 0 : _b.name) === iface_1.MethodNames.Proxy) {
164
+ var txMethod = this._method.args;
165
+ this.owner({ address: utils_1.default.decodeDotAddress(txMethod.real) });
166
+ this.forceProxyType(txMethod.forceProxyType);
167
+ var decodedCall = utils_1.default.decodeCallMethod(rawTransaction, {
168
+ registry: this._registry,
169
+ metadataRpc: this._metadataRpc,
170
+ });
171
+ if (!decodedCall.value || !decodedCall.dest) {
172
+ throw new errors_1.InvalidTransactionError("Invalid Proxy Transaction Method: " + ((_c = this._method) === null || _c === void 0 ? void 0 : _c.name) + ". Expected transferKeepAlive");
173
+ }
174
+ this.amount("" + decodedCall.value);
175
+ this.to({ address: utils_1.default.decodeDotAddress(decodedCall.dest.id) });
176
+ }
177
+ else {
178
+ throw new errors_1.InvalidTransactionError("Invalid Transaction Type: " + ((_d = this._method) === null || _d === void 0 ? void 0 : _d.name) + ". Expected a transferKeepAlive or a proxy transferKeepAlive transaction");
179
+ }
180
+ return tx;
73
181
  };
74
182
  /** @inheritdoc */
75
- TransferBuilder.prototype.signImplementation = function (key) {
76
- throw new errors_1.NotImplementedError('method not implemented');
183
+ TransferBuilder.prototype.validateTransaction = function (_) {
184
+ _super.prototype.validateTransaction.call(this, _);
185
+ this.validateFields(this._to, this._amount, this._owner, this._forceProxyType);
186
+ };
187
+ TransferBuilder.prototype.validateFields = function (to, amount, real, forceProxyType) {
188
+ var validationResult = forceProxyType
189
+ ? txnSchema_1.ProxyTransactionSchema.validate({ to: to, amount: amount, real: real, forceProxyType: forceProxyType })
190
+ : txnSchema_1.TransferTransactionSchema.validate({ amount: amount, to: to });
191
+ if (validationResult.error) {
192
+ throw new errors_1.InvalidTransactionError("Proxy/TransferKeepAlive Transaction validation failed: " + validationResult.error.message);
193
+ }
77
194
  };
78
195
  return TransferBuilder;
79
196
  }(transactionBuilder_1.TransactionBuilder));
80
197
  exports.TransferBuilder = TransferBuilder;
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZG90L3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSw2Q0FBeUQ7QUFDekQsMkRBQTBEO0FBRzFEO0lBQXFDLG1DQUFrQjtJQUNyRCx5QkFBWSxXQUFpQztlQUMzQyxrQkFBTSxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQjtJQUNGLDZDQUFtQixHQUFuQzs7O2dCQUNFLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzs7S0FDekQ7SUFFRCxrQkFBa0I7SUFDUiw0Q0FBa0IsR0FBNUIsVUFBNkIsY0FBbUI7UUFDOUMsTUFBTSxJQUFJLDRCQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNSLDRDQUFrQixHQUE1QixVQUE2QixHQUFZO1FBQ3ZDLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFuQkQsQ0FBcUMsdUNBQWtCLEdBbUJ0RDtBQW5CWSwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlS2V5IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IGFueSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cbiJdfQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZG90L3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvRUFBZ0U7QUFDaEUsOERBQXFDO0FBQ3JDLDZDQUE2RDtBQUM3RCwyREFBMEQ7QUFHMUQsd0NBQThDO0FBQzlDLGlDQUEwRTtBQUMxRSx5Q0FBZ0Y7QUFDaEYsa0RBQTRCO0FBRzVCO0lBQXFDLG1DQUFrQjtJQU1yRCx5QkFBWSxXQUFpQztlQUMzQyxrQkFBTSxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTywwQ0FBZ0IsR0FBMUI7UUFDRSxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQyxJQUFNLFVBQVUsR0FBRyw0QkFBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDbkQ7WUFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ2YsRUFDRCxVQUFVLENBQUMsVUFBVSxFQUNyQixVQUFVLENBQUMsT0FBTyxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxVQUFVLENBQUM7U0FDbkI7UUFDRCxPQUFPLDRCQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FDeEI7WUFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDakIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3BDLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTTtTQUN4QixFQUNELFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxPQUFPLENBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsc0JBQWMsNENBQWU7YUFBN0I7WUFDRSxPQUFPLDBCQUFlLENBQUMsSUFBSSxD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SSxNQUFBLEVBQUUsY0FBYyxnQkFBQSxFQUFFLENBQUM7WUFDdkUsQ0FBQyxDQUFDLHFDQUF5QixDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sUUFBQSxFQUFFLEVBQUUsSUFBQSxFQUFFLENBQUMsQ0FBQztRQUV2RCxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRTtZQUMxQixNQUFNLElBQUksZ0NBQXVCLENBQy9CLDREQUEwRCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBUyxDQUMzRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBeExELENBQXFDLHVDQUFrQixHQXdMdEQ7QUF4TFksMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgZGVjb2RlLCBtZXRob2RzIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IE1ldGhvZE5hbWVzLCBQcm94eUFyZ3MsIHByb3h5VHlwZSwgVHJhbnNmZXJBcmdzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBQcm94eVRyYW5zYWN0aW9uU2NoZW1hLCBUcmFuc2ZlclRyYW5zYWN0aW9uU2NoZW1hIH0gZnJvbSAnLi90eG5TY2hlbWEnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQmFzZUFkZHJlc3MgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX2Ftb3VudDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3RvOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfb3duZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9mb3JjZVByb3h5VHlwZTogcHJveHlUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBEaXNwYXRjaCB0aGUgZ2l2ZW4gY2FsbCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2ggYWRkX3Byb3h5LlxuICAgKlxuICAgKiBAcmV0dXJucyB7VW5zaWduZWRUcmFuc2FjdGlvbn0gYW4gdW5zaWduZWQgRG90IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wb2xrYWRvdC5qcy5vcmcvZG9jcy9zdWJzdHJhdGUvZXh0cmluc2ljcy8jcHJveHlcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFRyYW5zYWN0aW9uKCk6IFVuc2lnbmVkVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IGJhc2VUeEluZm8gPSB0aGlzLmNyZWF0ZUJhc2VUeEluZm8oKTtcbiAgICBjb25zdCB0cmFuc2ZlclR4ID0gbWV0aG9kcy5iYWxhbmNlcy50cmFuc2ZlcktlZXBBbGl2ZShcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuX2Ftb3VudCxcbiAgICAgICAgZGVzdDogdGhpcy5fdG8sXG4gICAgICB9LFxuICAgICAgYmFzZVR4SW5mby5iYXNlVHhJbmZvLFxuICAgICAgYmFzZVR4SW5mby5vcHRpb25zLFxuICAgICk7XG4gICAgaWYgKCF0aGlzLl9vd25lcikge1xuICAgICAgcmV0dXJuIHRyYW5zZmVyVHg7XG4gICAgfVxuICAgIHJldHVybiBtZXRob2RzLnByb3h5LnByb3h5KFxuICAgICAge1xuICAgICAgICByZWFsOiB0aGlzLl9vd25lcixcbiAgICAgICAgZm9yY2VQcm94eVR5cGU6IHRoaXMuX2ZvcmNlUHJveHlUeXBlLFxuICAgICAgICBjYWxsOiB0cmFuc2ZlclR4Lm1ldGhvZCxcbiAgICAgIH0sXG4gICAgICBiYXNlVHhJbmZvLmJhc2VUeEluZm8sXG4gICAgICBiYXNlVHhJbmZvLm9wdGlvbnMsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFRoZSBhbW91bnQgZm9yIHRyYW5zZmVyIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50XG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IFRoaXMgdHJhbnNmZXIgYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXByb3RvY29sLWluZm9cbiAgICovXG4gIGFtb3VudChhbW91bnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGFtb3VudCkpO1xuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0XG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IFRoaXMgdHJhbnNmZXIgYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXByb3RvY29sLWluZm9cbiAgICovXG4gIHRvKHsgYWRkcmVzcyB9OiBCYXNlQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLl90byA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVGhlIHJlYWwgYWRkcmVzcyBvZiB0aGUgb3JpZ2luYWwgdHhcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlQWRkcmVzc30gcmVhbFxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9sZWFybi1wcm94aWVzI3doeS11c2UtYS1wcm94eVxuICAgKi9cbiAgb3duZXIob3duZXI6IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiBvd25lci5hZGRyZXNzIH0pO1xuICAgIHRoaXMuX293bmVyID0gb3duZXIuYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBUaGUgcHJveHkgdHlwZSB0byBleGVjdXRlXG4gICAqXG4gICAqIEBwYXJhbSB7cHJveHlUeXBlfSBmb3JjZVByb3h5VHlwZVxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9sZWFybi1wcm94aWVzI3Byb3h5LXR5cGVzXG4gICAqL1xuICBmb3JjZVByb3h5VHlwZShmb3JjZVByb3h5VHlwZTogcHJveHlUeXBlKTogdGhpcyB7XG4gICAgdGhpcy5fZm9yY2VQcm94eVR5cGUgPSBmb3JjZVByb3h5VHlwZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBkZWNvZGVkVHhuID0gZGVjb2RlKHJhd1RyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSk7XG4gICAgaWYgKGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5UcmFuc2ZlcktlZXBBbGl2ZSkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgVHJhbnNmZXJBcmdzO1xuICAgICAgY29uc3QgYW1vdW50ID0gYCR7dHhNZXRob2QudmFsdWV9YDtcbiAgICAgIGNvbnN0IHRvID0gdHhNZXRob2QuZGVzdC5pZDtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBUcmFuc2ZlclRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHsgYW1vdW50LCB0byB9KTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNmZXIgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVjb2RlZFR4bi5tZXRob2Q/Lm5hbWUgPT09IE1ldGhvZE5hbWVzLlByb3h5KSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgdW5rbm93biBhcyBQcm94eUFyZ3M7XG4gICAgICBjb25zdCByZWFsID0gdHhNZXRob2QucmVhbDtcbiAgICAgIGNvbnN0IGZvcmNlUHJveHlUeXBlID0gdHhNZXRob2QuZm9yY2VQcm94eVR5cGU7XG4gICAgICBjb25zdCBkZWNvZGVkQ2FsbCA9IHV0aWxzLmRlY29kZUNhbGxNZXRob2QocmF3VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWV0YWRhdGFScGMsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGFtb3VudCA9IGAke2RlY29kZWRDYWxsLnZhbHVlfWA7XG4gICAgICBjb25zdCB0byA9IGRlY29kZWRDYWxsLmRlc3QuaWQ7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gUHJveHlUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7IHJlYWwsIGZvcmNlUHJveHlUeXBlLCBhbW91bnQsIHRvIH0pO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBQcm94eSBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IHN1cGVyLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgaWYgKHRoaXMuX21ldGhvZD8ubmFtZSA9PT0gTWV0aG9kTmFtZXMuVHJhbnNmZXJLZWVwQWxpdmUpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gdGhpcy5fbWV0aG9kLmFyZ3MgYXMgVHJhbnNmZXJBcmdzO1xuICAgICAgdGhpcy5hbW91bnQodHhNZXRob2QudmFsdWUpO1xuICAgICAgdGhpcy50byh7IGFkZHJlc3M6IHV0aWxzLmRlY29kZURvdEFkZHJlc3ModHhNZXRob2QuZGVzdC5pZCkgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9tZXRob2Q/Lm5hbWUgPT09IE1ldGhvZE5hbWVzLlByb3h5KSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IHRoaXMuX21ldGhvZC5hcmdzIGFzIFByb3h5QXJncztcbiAgICAgIHRoaXMub3duZXIoeyBhZGRyZXNzOiB1dGlscy5kZWNvZGVEb3RBZGRyZXNzKHR4TWV0aG9kLnJlYWwpIH0pO1xuICAgICAgdGhpcy5mb3JjZVByb3h5VHlwZSh0eE1ldGhvZC5mb3JjZVByb3h5VHlwZSk7XG4gICAgICBjb25zdCBkZWNvZGVkQ2FsbCA9IHV0aWxzLmRlY29kZUNhbGxNZXRob2QocmF3VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWV0YWRhdGFScGMsXG4gICAgICB9KTtcbiAgICAgIGlmICghZGVjb2RlZENhbGwudmFsdWUgfHwgIWRlY29kZWRDYWxsLmRlc3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIFByb3h5IFRyYW5zYWN0aW9uIE1ldGhvZDogJHt0aGlzLl9tZXRob2Q/Lm5hbWV9LiBFeHBlY3RlZCB0cmFuc2ZlcktlZXBBbGl2ZWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmFtb3VudChgJHtkZWNvZGVkQ2FsbC52YWx1ZX1gKTtcbiAgICAgIHRoaXMudG8oeyBhZGRyZXNzOiB1dGlscy5kZWNvZGVEb3RBZGRyZXNzKGRlY29kZWRDYWxsLmRlc3QuaWQpIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIFRyYW5zYWN0aW9uIFR5cGU6ICR7dGhpcy5fbWV0aG9kPy5uYW1lfS4gRXhwZWN0ZWQgYSB0cmFuc2ZlcktlZXBBbGl2ZSBvciBhIHByb3h5IHRyYW5zZmVyS2VlcEFsaXZlIHRyYW5zYWN0aW9uYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKF86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbihfKTtcbiAgICB0aGlzLnZhbGlkYXRlRmllbGRzKHRoaXMuX3RvLCB0aGlzLl9hbW91bnQsIHRoaXMuX293bmVyLCB0aGlzLl9mb3JjZVByb3h5VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRmllbGRzKHRvOiBzdHJpbmcsIGFtb3VudDogc3RyaW5nLCByZWFsPzogc3RyaW5nLCBmb3JjZVByb3h5VHlwZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBmb3JjZVByb3h5VHlwZVxuICAgICAgPyBQcm94eVRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHsgdG8sIGFtb3VudCwgcmVhbCwgZm9yY2VQcm94eVR5cGUgfSlcbiAgICAgIDogVHJhbnNmZXJUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7IGFtb3VudCwgdG8gfSk7XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgUHJveHkvVHJhbnNmZXJLZWVwQWxpdmUgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,4 +1,10 @@
1
+ import { KeyringPair } from '@polkadot/keyring/types';
2
+ import { UnsignedTransaction } from '@substrate/txwrapper-core';
3
+ import { TypeRegistry } from '@substrate/txwrapper-core/lib/types';
4
+ import { KeyPair } from '.';
1
5
  import { BaseUtils } from '../baseCoin';
6
+ import { Seed } from '../baseCoin/iface';
7
+ import { TransferArgs } from './iface';
2
8
  export declare class Utils implements BaseUtils {
3
9
  /** @inheritdoc */
4
10
  isValidAddress(address: string): boolean;
@@ -10,7 +16,70 @@ export declare class Utils implements BaseUtils {
10
16
  isValidPublicKey(key: string): boolean;
11
17
  /** @inheritdoc */
12
18
  isValidSignature(signature: string): boolean;
19
+ /**
20
+ * Verifies the signature on a given message
21
+ *
22
+ * @param {string} signedMessage the signed message for the signature
23
+ * @param {string} signature the signature to verify
24
+ * @param {string} address the address of the signer
25
+ * @returns {boolean} whether the signature is valid or not
26
+ */
27
+ verifySignature(signedMessage: string, signature: string, address: string): boolean;
13
28
  /** @inheritdoc */
14
29
  isValidTransactionId(txId: string): boolean;
30
+ /**
31
+ * decodeSeed decodes a dot seed
32
+ *
33
+ * @param {string} seed - the seed to be validated.
34
+ * @returns {Seed} - the object Seed
35
+ */
36
+ decodeSeed(seed: string): Seed;
37
+ /**
38
+ * Helper function to capitalize the first letter of a string
39
+ *
40
+ * @param {string} val
41
+ * @returns {string}
42
+ */
43
+ capitalizeFirstLetter(val: string): string;
44
+ /**
45
+ * Helper function to decode the internal method hex incase of a proxy transaction
46
+ *
47
+ * @param {string | UnsignedTransaction} tx
48
+ * @param { metadataRpc: string; registry: TypeRegistry } options
49
+ * @returns {TransferArgs}
50
+ */
51
+ decodeCallMethod(tx: string | UnsignedTransaction, options: {
52
+ metadataRpc: string;
53
+ registry: TypeRegistry;
54
+ }): TransferArgs;
55
+ /**
56
+ * keyPairFromSeed generates an object with secretKey and publicKey using the polkadot sdk
57
+ * @param seed 32 bytes long seed
58
+ * @returns KeyPair
59
+ */
60
+ keyPairFromSeed(seed: Uint8Array): KeyPair;
61
+ /**
62
+ * Signing function. Implement this on the OFFLINE signing device.
63
+ *
64
+ * @param {KeyringPair} pair - The signing pair.
65
+ * @param {string} signingPayload - Payload to sign.
66
+ */
67
+ createSignedTx(pair: KeyringPair, signingPayload: string, transaction: UnsignedTransaction, options: any): string;
68
+ /**
69
+ * Decodes the dot address from the given format
70
+ *
71
+ * @param address Decodes
72
+ * @returns {string}
73
+ */
74
+ decodeDotAddress(address: string, ss58Format?: number): string;
75
+ /**
76
+ * Decodes the dot address from the given format
77
+ *
78
+ * @param address Decodes
79
+ * @returns {string}
80
+ */
81
+ encodeDotAddress(address: string, ss58Format?: number): string;
15
82
  }
83
+ declare const utils: Utils;
84
+ export default utils;
16
85
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG5C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAiB,YAAY,EAAE,MAAM,SAAS,CAAC;AAKtD,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IASxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;;;;OAOG;IACH,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnF,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO9B;;;;;OAKG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;;;OAMG;IACH,gBAAgB,CACd,EAAE,EAAE,MAAM,GAAG,mBAAmB,EAChC,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,GACvD,YAAY;IAqBf;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAQ1C;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,KAAA,GAAG,MAAM;IAmB5G;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAK9D;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;CAG/D;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
@@ -1,13 +1,34 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Utils = void 0;
7
+ var keyring_1 = require("@polkadot/keyring");
8
+ var decode_1 = require("@polkadot/keyring/pair/decode");
9
+ var Extrinsic_1 = require("@polkadot/types/extrinsic/v4/Extrinsic");
10
+ var util_1 = require("@polkadot/util");
11
+ var util_crypto_1 = require("@polkadot/util-crypto");
12
+ var crypto_1 = require("../../utils/crypto");
13
+ var txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
14
+ var hi_base32_1 = __importDefault(require("hi-base32"));
15
+ var _1 = require(".");
4
16
  var errors_1 = require("../baseCoin/errors");
17
+ var polkaUtils = require('@polkadot/util');
18
+ var createTypeUnsafe = require('@polkadot/types').createTypeUnsafe;
19
+ var PROXY_METHOD_ARG = 2;
5
20
  var Utils = /** @class */ (function () {
6
21
  function Utils() {
7
22
  }
8
23
  /** @inheritdoc */
9
24
  Utils.prototype.isValidAddress = function (address) {
10
- throw new errors_1.NotImplementedError('method not implemented');
25
+ try {
26
+ keyring_1.encodeAddress(util_1.isHex(address) ? util_1.hexToU8a(address) : keyring_1.decodeAddress(address));
27
+ return true;
28
+ }
29
+ catch (error) {
30
+ return false;
31
+ }
11
32
  };
12
33
  /** @inheritdoc */
13
34
  Utils.prototype.isValidBlockId = function (hash) {
@@ -15,21 +36,140 @@ var Utils = /** @class */ (function () {
15
36
  };
16
37
  /** @inheritdoc */
17
38
  Utils.prototype.isValidPrivateKey = function (key) {
18
- throw new errors_1.NotImplementedError('method not implemented');
39
+ return crypto_1.isValidEd25519SecretKey(key);
19
40
  };
20
41
  /** @inheritdoc */
21
42
  Utils.prototype.isValidPublicKey = function (key) {
22
- throw new errors_1.NotImplementedError('method not implemented');
43
+ return crypto_1.isValidEd25519PublicKey(key);
23
44
  };
24
45
  /** @inheritdoc */
25
46
  Utils.prototype.isValidSignature = function (signature) {
26
47
  throw new errors_1.NotImplementedError('method not implemented');
27
48
  };
49
+ /**
50
+ * Verifies the signature on a given message
51
+ *
52
+ * @param {string} signedMessage the signed message for the signature
53
+ * @param {string} signature the signature to verify
54
+ * @param {string} address the address of the signer
55
+ * @returns {boolean} whether the signature is valid or not
56
+ */
57
+ Utils.prototype.verifySignature = function (signedMessage, signature, address) {
58
+ var publicKey = keyring_1.decodeAddress(address);
59
+ var hexPublicKey = util_1.u8aToHex(publicKey);
60
+ return util_crypto_1.signatureVerify(signedMessage, signature, hexPublicKey).isValid;
61
+ };
28
62
  /** @inheritdoc */
29
63
  Utils.prototype.isValidTransactionId = function (txId) {
30
64
  throw new errors_1.NotImplementedError('method not implemented');
31
65
  };
66
+ /**
67
+ * decodeSeed decodes a dot seed
68
+ *
69
+ * @param {string} seed - the seed to be validated.
70
+ * @returns {Seed} - the object Seed
71
+ */
72
+ Utils.prototype.decodeSeed = function (seed) {
73
+ var decoded = hi_base32_1.default.decode.asBytes(seed);
74
+ return {
75
+ seed: Buffer.from(decoded),
76
+ };
77
+ };
78
+ /**
79
+ * Helper function to capitalize the first letter of a string
80
+ *
81
+ * @param {string} val
82
+ * @returns {string}
83
+ */
84
+ Utils.prototype.capitalizeFirstLetter = function (val) {
85
+ return val.charAt(0).toUpperCase() + val.slice(1);
86
+ };
87
+ /**
88
+ * Helper function to decode the internal method hex incase of a proxy transaction
89
+ *
90
+ * @param {string | UnsignedTransaction} tx
91
+ * @param { metadataRpc: string; registry: TypeRegistry } options
92
+ * @returns {TransferArgs}
93
+ */
94
+ Utils.prototype.decodeCallMethod = function (tx, options) {
95
+ var metadataRpc = options.metadataRpc, registry = options.registry;
96
+ registry.setMetadata(txwrapper_polkadot_1.createMetadata(registry, metadataRpc));
97
+ var methodCall;
98
+ if (typeof tx === 'string') {
99
+ try {
100
+ var payload = createTypeUnsafe(registry, 'ExtrinsicPayload', [tx, { version: Extrinsic_1.EXTRINSIC_VERSION }]);
101
+ methodCall = createTypeUnsafe(registry, 'Call', [payload.method]);
102
+ }
103
+ catch (e) {
104
+ methodCall = registry.createType('Extrinsic', polkaUtils.hexToU8a(tx), {
105
+ isSigned: true,
106
+ }).method;
107
+ }
108
+ }
109
+ else {
110
+ methodCall = registry.createType('Call', tx.method);
111
+ }
112
+ var method = methodCall.args[PROXY_METHOD_ARG];
113
+ var decodedArgs = method.toJSON();
114
+ return decodedArgs.args;
115
+ };
116
+ /**
117
+ * keyPairFromSeed generates an object with secretKey and publicKey using the polkadot sdk
118
+ * @param seed 32 bytes long seed
119
+ * @returns KeyPair
120
+ */
121
+ Utils.prototype.keyPairFromSeed = function (seed) {
122
+ var keyring = new keyring_1.Keyring({ type: 'ed25519' });
123
+ var keyringPair = keyring.addFromSeed(seed);
124
+ var pairJson = keyringPair.toJson();
125
+ var decodedKeyPair = decode_1.decodePair('', util_crypto_1.base64Decode(pairJson.encoded), pairJson.encoding.type);
126
+ return new _1.KeyPair({ prv: Buffer.from(decodedKeyPair.secretKey).toString('hex') });
127
+ };
128
+ /**
129
+ * Signing function. Implement this on the OFFLINE signing device.
130
+ *
131
+ * @param {KeyringPair} pair - The signing pair.
132
+ * @param {string} signingPayload - Payload to sign.
133
+ */
134
+ Utils.prototype.createSignedTx = function (pair, signingPayload, transaction, options) {
135
+ var registry = options.registry, metadataRpc = options.metadataRpc;
136
+ // Important! The registry needs to be updated with latest metadata, so make
137
+ // sure to run `registry.setMetadata(metadata)` before signing.
138
+ registry.setMetadata(txwrapper_polkadot_1.createMetadata(registry, metadataRpc));
139
+ var signature = registry
140
+ .createType('ExtrinsicPayload', signingPayload, {
141
+ version: Extrinsic_1.EXTRINSIC_VERSION,
142
+ })
143
+ .sign(pair).signature;
144
+ // Serialize a signed transaction.
145
+ var txHex = txwrapper_polkadot_1.construct.signedTx(transaction, signature, {
146
+ metadataRpc: metadataRpc,
147
+ registry: registry,
148
+ });
149
+ return txHex;
150
+ };
151
+ /**
152
+ * Decodes the dot address from the given format
153
+ *
154
+ * @param address Decodes
155
+ * @returns {string}
156
+ */
157
+ Utils.prototype.decodeDotAddress = function (address, ss58Format) {
158
+ var keypair = new _1.KeyPair({ pub: Buffer.from(keyring_1.decodeAddress(address, undefined, ss58Format)).toString('hex') });
159
+ return keypair.getAddress();
160
+ };
161
+ /**
162
+ * Decodes the dot address from the given format
163
+ *
164
+ * @param address Decodes
165
+ * @returns {string}
166
+ */
167
+ Utils.prototype.encodeDotAddress = function (address, ss58Format) {
168
+ return keyring_1.encodeAddress(address, ss58Format);
169
+ };
32
170
  return Utils;
33
171
  }());
34
172
  exports.Utils = Utils;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3QvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQXlEO0FBRXpEO0lBQUE7SUE4QkEsQ0FBQztJQTdCQyxrQkFBa0I7SUFDbEIsOEJBQWMsR0FBZCxVQUFlLE9BQWU7UUFDNUIsTUFBTSxJQUFJLDRCQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBYyxHQUFkLFVBQWUsSUFBWTtRQUN6QixNQUFNLElBQUksNEJBQW1CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlDQUFpQixHQUFqQixVQUFrQixHQUFXO1FBQzNCLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0NBQWdCLEdBQWhCLFVBQWlCLEdBQVc7UUFDMUIsTUFBTSxJQUFJLDRCQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQ0FBZ0IsR0FBaEIsVUFBaUIsU0FBaUI7UUFDaEMsTUFBTSxJQUFJLDRCQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQ0FBb0IsR0FBcEIsVUFBcUIsSUFBWTtRQUMvQixNQUFNLElBQUksNEJBQW1CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0gsWUFBQztBQUFELENBQUMsQUE5QkQsSUE4QkM7QUE5Qlksc0JBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVXRpbHMgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuIl19
173
+ var utils = new Utils();
174
+ exports.default = utils;
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3QvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBQTBFO0FBQzFFLHdEQUEyRDtBQUUzRCxvRUFBMkU7QUFDM0UsdUNBQTJEO0FBQzNELHFEQUFzRTtBQUN0RSw2Q0FBc0Y7QUFHdEYsb0VBQTBFO0FBQzFFLHdEQUErQjtBQUMvQixzQkFBNEI7QUFFNUIsNkNBQXlEO0FBR3pELElBQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3JDLElBQUEsZ0JBQWdCLEdBQUssT0FBTyxDQUFDLGlCQUFpQixDQUFDLGlCQUEvQixDQUFnQztBQUV4RCxJQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMzQjtJQUFBO0lBbUtBLENBQUM7SUFsS0Msa0JBQWtCO0lBQ2xCLDhCQUFjLEdBQWQsVUFBZSxPQUFlO1FBQzVCLElBQUk7WUFDRix1QkFBYSxDQUFDLFlBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDM0UsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQWMsR0FBZCxVQUFlLElBQVk7UUFDekIsTUFBTSxJQUFJLDRCQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQ0FBaUIsR0FBakIsVUFBa0IsR0FBVztRQUMzQixPQUFPLGdDQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0NBQWdCLEdBQWhCLFVBQWlCLEdBQVc7UUFDMUIsT0FB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VUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqSCxPQUFPLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQ0FBZ0IsR0FBaEIsVUFBaUIsT0FBZSxFQUFFLFVBQW1CO1FBQ25ELE9BQU8sdUJBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNILFlBQUM7QUFBRCxDQUFDLEFBbktELElBbUtDO0FBbktZLHNCQUFLO0FBcUtsQixJQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY29kZUFkZHJlc3MsIGVuY29kZUFkZHJlc3MsIEtleXJpbmcgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZyc7XG5pbXBvcnQgeyBkZWNvZGVQYWlyIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcvcGFpci9kZWNvZGUnO1xuaW1wb3J0IHsgS2V5cmluZ1BhaXIgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZy90eXBlcyc7XG5pbXBvcnQgeyBFWFRSSU5TSUNfVkVSU0lPTiB9IGZyb20gJ0Bwb2xrYWRvdC90eXBlcy9leHRyaW5zaWMvdjQvRXh0cmluc2ljJztcbmltcG9ydCB7IGhleFRvVThhLCBpc0hleCwgdThhVG9IZXggfSBmcm9tICdAcG9sa2Fkb3QvdXRpbCc7XG5pbXBvcnQgeyBiYXNlNjREZWNvZGUsIHNpZ25hdHVyZVZlcmlmeSB9IGZyb20gJ0Bwb2xrYWRvdC91dGlsLWNyeXB0byc7XG5pbXBvcnQgeyBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleSwgaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkgfSBmcm9tICcuLi8uLi91dGlscy9jcnlwdG8nO1xuaW1wb3J0IHsgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZS9saWIvdHlwZXMnO1xuaW1wb3J0IHsgY29uc3RydWN0LCBjcmVhdGVNZXRhZGF0YSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCBiYXNlMzIgZnJvbSAnaGktYmFzZTMyJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IEJhc2VVdGlscyB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgU2VlZCB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IFByb3h5Q2FsbEFyZ3MsIFRyYW5zZmVyQXJncyB9IGZyb20gJy4vaWZhY2UnO1xuY29uc3QgcG9sa2FVdGlscyA9IHJlcXVpcmUoJ0Bwb2xrYWRvdC91dGlsJyk7XG5jb25zdCB7IGNyZWF0ZVR5cGVVbnNhZmUgfSA9IHJlcXVpcmUoJ0Bwb2xrYWRvdC90eXBlcycpO1xuXG5jb25zdCBQUk9YWV9NRVRIT0RfQVJHID0gMjtcbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgZW5jb2RlQWRkcmVzcyhpc0hleChhZGRyZXNzKSA/IGhleFRvVThhKGFkZHJlc3MpIDogZGVjb2RlQWRkcmVzcyhhZGRyZXNzKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoZSBzaWduYXR1cmUgb24gYSBnaXZlbiBtZXNzYWdlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduZWRNZXNzYWdlIHRoZSBzaWduZWQgbWVzc2FnZSBmb3IgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBhZGRyZXNzIG9mIHRoZSBzaWduZXJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHdoZXRoZXIgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCBvciBub3RcbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShzaWduZWRNZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBkZWNvZGVBZGRyZXNzKGFkZHJlc3MpO1xuICAgIGNvbnN0IGhleFB1YmxpY0tleSA9IHU4YVRvSGV4KHB1YmxpY0tleSk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlVmVyaWZ5KHNpZ25lZE1lc3NhZ2UsIHNpZ25hdHVyZSwgaGV4UHVibGljS2V5KS5pc1ZhbGlkO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlU2VlZCBkZWNvZGVzIGEgZG90IHNlZWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWQuXG4gICAqIEByZXR1cm5zIHtTZWVkfSAtIHRoZSBvYmplY3QgU2VlZFxuICAgKi9cbiAgZGVjb2RlU2VlZChzZWVkOiBzdHJpbmcpOiBTZWVkIHtcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTMyLmRlY29kZS5hc0J5dGVzKHNlZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzZWVkOiBCdWZmZXIuZnJvbShkZWNvZGVkKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2YgYSBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsLnNsaWNlKDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBkZWNvZGUgdGhlIGludGVybmFsIG1ldGhvZCBoZXggaW5jYXNlIG9mIGEgcHJveHkgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBVbnNpZ25lZFRyYW5zYWN0aW9ufSB0eFxuICAgKiBAcGFyYW0geyBtZXRhZGF0YVJwYzogc3RyaW5nOyByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5IH0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJBcmdzfVxuICAgKi9cbiAgZGVjb2RlQ2FsbE1ldGhvZChcbiAgICB0eDogc3RyaW5nIHwgVW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICBvcHRpb25zOiB7IG1ldGFkYXRhUnBjOiBzdHJpbmc7IHJlZ2lzdHJ5OiBUeXBlUmVnaXN0cnkgfSxcbiAgKTogVHJhbnNmZXJBcmdzIHtcbiAgICBjb25zdCB7IG1ldGFkYXRhUnBjLCByZWdpc3RyeSB9ID0gb3B0aW9ucztcbiAgICByZWdpc3RyeS5zZXRNZXRhZGF0YShjcmVhdGVNZXRhZGF0YShyZWdpc3RyeSwgbWV0YWRhdGFScGMpKTtcbiAgICBsZXQgbWV0aG9kQ2FsbDogYW55O1xuICAgIGlmICh0eXBlb2YgdHggPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gY3JlYXRlVHlwZVVuc2FmZShyZWdpc3RyeSwgJ0V4dHJpbnNpY1BheWxvYWQnLCBbdHgsIHsgdmVyc2lvbjogRVhUUklOU0lDX1ZFUlNJT04gfV0pO1xuICAgICAgICBtZXRob2RDYWxsID0gY3JlYXRlVHlwZVVuc2FmZShyZWdpc3RyeSwgJ0NhbGwnLCBbcGF5bG9hZC5tZXRob2RdKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbWV0aG9kQ2FsbCA9IHJlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0V4dHJpbnNpYycsIHBvbGthVXRpbHMuaGV4VG9VOGEodHgpLCB7XG4gICAgICAgICAgaXNTaWduZWQ6IHRydWUsXG4gICAgICAgIH0pLm1ldGhvZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWV0aG9kQ2FsbCA9IHJlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0NhbGwnLCB0eC5tZXRob2QpO1xuICAgIH1cbiAgICBjb25zdCBtZXRob2QgPSBtZXRob2RDYWxsLmFyZ3NbUFJPWFlfTUVUSE9EX0FSR107XG4gICAgY29uc3QgZGVjb2RlZEFyZ3MgPSBtZXRob2QudG9KU09OKCkgYXMgdW5rbm93biBhcyBQcm94eUNhbGxBcmdzO1xuICAgIHJldHVybiBkZWNvZGVkQXJncy5hcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIGtleVBhaXJGcm9tU2VlZCBnZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggc2VjcmV0S2V5IGFuZCBwdWJsaWNLZXkgdXNpbmcgdGhlIHBvbGthZG90IHNka1xuICAgKiBAcGFyYW0gc2VlZCAzMiBieXRlcyBsb25nIHNlZWRcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAga2V5UGFpckZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlyaW5nID0gbmV3IEtleXJpbmcoeyB0eXBlOiAnZWQyNTUxOScgfSk7XG4gICAgY29uc3Qga2V5cmluZ1BhaXIgPSBrZXlyaW5nLmFkZEZyb21TZWVkKHNlZWQpO1xuICAgIGNvbnN0IHBhaXJKc29uID0ga2V5cmluZ1BhaXIudG9Kc29uKCk7XG4gICAgY29uc3QgZGVjb2RlZEtleVBhaXIgPSBkZWNvZGVQYWlyKCcnLCBiYXNlNjREZWNvZGUocGFpckpzb24uZW5jb2RlZCksIHBhaXJKc29uLmVuY29kaW5nLnR5cGUpO1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHBydjogQnVmZmVyLmZyb20oZGVjb2RlZEtleVBhaXIuc2VjcmV0S2V5KS50b1N0cmluZygnaGV4JykgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbmluZyBmdW5jdGlvbi4gSW1wbGVtZW50IHRoaXMgb24gdGhlIE9GRkxJTkUgc2lnbmluZyBkZXZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5cmluZ1BhaXJ9IHBhaXIgLSBUaGUgc2lnbmluZyBwYWlyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmluZ1BheWxvYWQgLSBQYXlsb2FkIHRvIHNpZ24uXG4gICAqL1xuICBjcmVhdGVTaWduZWRUeChwYWlyOiBLZXlyaW5nUGFpciwgc2lnbmluZ1BheWxvYWQ6IHN0cmluZywgdHJhbnNhY3Rpb246IFVuc2lnbmVkVHJhbnNhY3Rpb24sIG9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgcmVnaXN0cnksIG1ldGFkYXRhUnBjIH0gPSBvcHRpb25zO1xuICAgIC8vIEltcG9ydGFudCEgVGhlIHJlZ2lzdHJ5IG5lZWRzIHRvIGJlIHVwZGF0ZWQgd2l0aCBsYXRlc3QgbWV0YWRhdGEsIHNvIG1ha2VcbiAgICAvLyBzdXJlIHRvIHJ1biBgcmVnaXN0cnkuc2V0TWV0YWRhdGEobWV0YWRhdGEpYCBiZWZvcmUgc2lnbmluZy5cbiAgICByZWdpc3RyeS5zZXRNZXRhZGF0YShjcmVhdGVNZXRhZGF0YShyZWdpc3RyeSwgbWV0YWRhdGFScGMpKTtcbiAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gcmVnaXN0cnlcbiAgICAgIC5jcmVhdGVUeXBlKCdFeHRyaW5zaWNQYXlsb2FkJywgc2lnbmluZ1BheWxvYWQsIHtcbiAgICAgICAgdmVyc2lvbjogRVhUUklOU0lDX1ZFUlNJT04sXG4gICAgICB9KVxuICAgICAgLnNpZ24ocGFpcik7XG5cbiAgICAvLyBTZXJpYWxpemUgYSBzaWduZWQgdHJhbnNhY3Rpb24uXG4gICAgY29uc3QgdHhIZXggPSBjb25zdHJ1Y3Quc2lnbmVkVHgodHJhbnNhY3Rpb24sIHNpZ25hdHVyZSwge1xuICAgICAgbWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeSxcbiAgICB9KTtcbiAgICByZXR1cm4gdHhIZXg7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUgZG90IGFkZHJlc3MgZnJvbSB0aGUgZ2l2ZW4gZm9ybWF0XG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIERlY29kZXNcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGRlY29kZURvdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBzczU4Rm9ybWF0PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXlwYWlyID0gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3MoYWRkcmVzcywgdW5kZWZpbmVkLCBzczU4Rm9ybWF0KSkudG9TdHJpbmcoJ2hleCcpIH0pO1xuICAgIHJldHVybiBrZXlwYWlyLmdldEFkZHJlc3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRoZSBkb3QgYWRkcmVzcyBmcm9tIHRoZSBnaXZlbiBmb3JtYXRcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgRGVjb2Rlc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZW5jb2RlRG90QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIHNzNThGb3JtYXQ/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbmNvZGVBZGRyZXNzKGFkZHJlc3MsIHNzNThGb3JtYXQpO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19